mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/shipping-portal.git
synced 2026-08-20 04:54:12 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0b30357568 | |||
| 034e9da69e |
@@ -57,7 +57,3 @@ MIX_EXCHANGE_URL="${EXCHANGE_URL}"
|
|||||||
YD_API_CODE=''
|
YD_API_CODE=''
|
||||||
|
|
||||||
JWT_SECRET=Btj63iMEleEaww6Bb2IBECkxWn7YHPhhPFluAkg9DfcQik0qDRy6QW75ABGmPT2h
|
JWT_SECRET=Btj63iMEleEaww6Bb2IBECkxWn7YHPhhPFluAkg9DfcQik0qDRy6QW75ABGmPT2h
|
||||||
|
|
||||||
PERFEXCRM_BASE_URL=""
|
|
||||||
PERFEXCRM_API_KEY=""
|
|
||||||
PERFEXCRM_IS_ENABLED="false"
|
|
||||||
|
|||||||
@@ -27,6 +27,3 @@ package-lock.json
|
|||||||
public/*
|
public/*
|
||||||
/public/*
|
/public/*
|
||||||
storage/framework/laravel-excel/*
|
storage/framework/laravel-excel/*
|
||||||
.vapor/
|
|
||||||
.env.production
|
|
||||||
.env.staging
|
|
||||||
|
|||||||
+140
-39
@@ -1,48 +1,149 @@
|
|||||||
image: php:7.4
|
image: php:7.4
|
||||||
stages:
|
stages:
|
||||||
- deploy
|
- service_build
|
||||||
|
- node
|
||||||
|
- building_assets
|
||||||
|
- database
|
||||||
|
- unit_test
|
||||||
|
- acceptance_test
|
||||||
|
- code_quality
|
||||||
|
|
||||||
|
# Variables
|
||||||
|
variables:
|
||||||
|
MYSQL_ROOT_PASSWORD: root
|
||||||
|
MYSQL_USER: mysql_password
|
||||||
|
MYSQL_PASSWORD: mysql_password
|
||||||
|
MYSQL_DATABASE: shpping_portal
|
||||||
|
DB_HOST: mysql
|
||||||
|
|
||||||
|
|
||||||
|
before_script:
|
||||||
|
- apt-get update -yqq
|
||||||
|
- apt-get install -yqq
|
||||||
|
- apt-get install -y libonig-dev
|
||||||
|
- apt-get install -y libxml2-dev
|
||||||
|
- apt-get install -y libzip-dev
|
||||||
|
- apt-get install -y libgd-dev
|
||||||
|
- apt-get install -y libgd-dev
|
||||||
|
|
||||||
|
# Install PDO MySQL extension
|
||||||
|
- docker-php-ext-install pdo_mysql
|
||||||
|
|
||||||
|
#install php dependencies
|
||||||
|
- docker-php-ext-install mbstring xml zip gd
|
||||||
|
|
||||||
|
# Install composer package manager
|
||||||
|
- curl --location --output /usr/local/bin/composer https://getcomposer.org/download/latest-stable/composer.phar
|
||||||
|
- chmod +x /usr/local/bin/composer
|
||||||
|
|
||||||
|
# Install MySQL client
|
||||||
|
- apt-get install -y default-mysql-client
|
||||||
|
|
||||||
|
#install node js
|
||||||
|
- apt-get update && apt-get install -y nodejs npm
|
||||||
|
|
||||||
|
#install gulp Js
|
||||||
|
- npm install -g gulp-cli
|
||||||
|
|
||||||
|
|
||||||
#jobs
|
#jobs
|
||||||
#deploy
|
|
||||||
deploy:
|
|
||||||
stage: deploy
|
|
||||||
before_script:
|
|
||||||
- apt-get update -yqq
|
|
||||||
- apt-get install -yqq
|
|
||||||
- apt-get install -y libonig-dev
|
|
||||||
- apt-get install -y libxml2-dev
|
|
||||||
- apt-get install -y libzip-dev
|
|
||||||
- apt-get install -y libgd-dev
|
|
||||||
- apt-get install -y libgd-dev
|
|
||||||
|
|
||||||
# Install PDO MySQL extension
|
#buld the backend
|
||||||
- docker-php-ext-install pdo_mysql
|
composer_php:
|
||||||
|
stage: service_build
|
||||||
# Install php dependencies
|
|
||||||
- docker-php-ext-install mbstring xml zip gd
|
|
||||||
|
|
||||||
# Install composer package manager
|
|
||||||
- curl --location --output /usr/local/bin/composer https://getcomposer.org/download/latest-stable/composer.phar
|
|
||||||
- chmod +x /usr/local/bin/composer
|
|
||||||
|
|
||||||
# Install node js
|
|
||||||
- apt-get update && apt-get install -y nodejs npm
|
|
||||||
|
|
||||||
# Install docker
|
|
||||||
- apt-get update
|
|
||||||
- apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release software-properties-common
|
|
||||||
- curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
|
|
||||||
- add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
|
|
||||||
- apt-get update
|
|
||||||
- apt-get install -y docker-ce docker-ce-cli containerd.io
|
|
||||||
- service docker start
|
|
||||||
|
|
||||||
# Install gulp Js
|
|
||||||
- npm install -g gulp-cli
|
|
||||||
script:
|
script:
|
||||||
- composer install
|
- composer install
|
||||||
- vendor/bin/vapor deploy production --message="$CI_COMMIT_MESSAGE"
|
- cp .env.example .env
|
||||||
only:
|
- php artisan key:generate
|
||||||
- test
|
rules:
|
||||||
|
- if: '$CI_COMMIT_BRANCH =~ /.*/'
|
||||||
|
|
||||||
|
#build the UI
|
||||||
|
#node installation
|
||||||
|
npm:
|
||||||
|
stage: node
|
||||||
|
script:
|
||||||
|
- npm install # Install npm dependencies
|
||||||
|
rules:
|
||||||
|
- if: '$CI_COMMIT_BRANCH =~ /.*/'
|
||||||
|
|
||||||
|
#building assets
|
||||||
|
building_assets:
|
||||||
|
stage: building_assets
|
||||||
|
# dependencies:
|
||||||
|
# - npm
|
||||||
|
script:
|
||||||
|
- npm install # Install npm dependencies
|
||||||
|
- gulp build # Build assets
|
||||||
|
rules:
|
||||||
|
- if: '$CI_COMMIT_BRANCH =~ /.*/'
|
||||||
|
|
||||||
|
#mysql
|
||||||
|
database:
|
||||||
|
stage: database
|
||||||
|
services:
|
||||||
|
- name: mysql:8.0
|
||||||
|
command: [ "--default-authentication-plugin=mysql_native_password" ]
|
||||||
|
#dependencies:
|
||||||
|
# - composer_php
|
||||||
|
script:
|
||||||
|
- composer install
|
||||||
|
- cp .env.example .env
|
||||||
|
- php artisan key:generate
|
||||||
|
- php artisan migrate:fresh
|
||||||
|
- php artisan db:seed
|
||||||
|
rules:
|
||||||
|
- if: '$CI_COMMIT_BRANCH =~ /.*/'
|
||||||
|
|
||||||
|
#unit test
|
||||||
|
unit_test:
|
||||||
|
stage: unit_test
|
||||||
|
services:
|
||||||
|
- name: mysql:8.0
|
||||||
|
command: [ "--default-authentication-plugin=mysql_native_password" ]
|
||||||
|
#dependencies:
|
||||||
|
# - database
|
||||||
|
script:
|
||||||
|
- npm install # Install npm dependencies
|
||||||
|
- gulp build # Build assets
|
||||||
|
- composer install
|
||||||
|
- cp .env.example .env
|
||||||
|
- php artisan key:generate
|
||||||
|
- php artisan migrate:fresh
|
||||||
|
- php artisan db:seed
|
||||||
|
- php artisan test
|
||||||
|
rules:
|
||||||
|
- if: '$CI_COMMIT_BRANCH =~ /.*/'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#acceptance tests
|
||||||
|
acceptance_test:
|
||||||
|
stage: acceptance_test
|
||||||
|
services:
|
||||||
|
- name: mysql:8.0
|
||||||
|
command: [ "--default-authentication-plugin=mysql_native_password" ]
|
||||||
|
- selenium/standalone-chrome:latest
|
||||||
|
#dependencies:
|
||||||
|
# - database
|
||||||
|
script:
|
||||||
|
- npm install # Install npm dependencies
|
||||||
|
- gulp build # Build assets
|
||||||
|
- composer install
|
||||||
|
- cp .env.example .env
|
||||||
|
- php artisan key:generate
|
||||||
|
- php artisan migrate:fresh
|
||||||
|
- php artisan db:seed
|
||||||
|
- php artisan serve &
|
||||||
|
- vendor/bin/codecept run
|
||||||
|
artifacts:
|
||||||
|
when: always
|
||||||
|
paths:
|
||||||
|
- tests/_output
|
||||||
|
rules:
|
||||||
|
- if: '$CI_COMMIT_BRANCH =~ /.*/'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class AmountExceed implements Filter
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->where('amount', '>', $value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class AmountShort implements Filter
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->where('amount', '<', $value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Carbon\Carbon;
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class CreatedBefore implements Filter
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->where('created_at', '<', Carbon::parse($value));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class DoesNotHaveGroups implements Filter
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->whereDoesntHave('groups');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use App\Classes\ValueObjects\Constants\TransactionType;
|
|
||||||
use Carbon\Carbon;
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class DoesNotHavePaymentStatusIn implements Filter
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->whereDoesntHave('transactions', function (Builder $query) use($value) {
|
|
||||||
$query->where('type', TransactionType::PAYMENT)->whereIn('status', $value);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -15,7 +15,7 @@ class DoesNotHaveTransactionType implements Filter
|
|||||||
public static function apply(Builder $builder, $value)
|
public static function apply(Builder $builder, $value)
|
||||||
{
|
{
|
||||||
return $builder->whereDoesntHave('transactions', function (Builder $query) use($value) {
|
return $builder->whereDoesntHave('transactions', function (Builder $query) use($value) {
|
||||||
$query->where('type', $value)->whereIn('status', [0,1,2,3]);
|
$query->where('type', $value);
|
||||||
})->whereHas('containers', function ($query){
|
})->whereHas('containers', function ($query){
|
||||||
return $query->whereDate('loading_date', '>=', Carbon::parse('20-09-2022'));
|
return $query->whereDate('loading_date', '>=', Carbon::parse('20-09-2022'));
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class EmailLike implements Filter
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return Builder|mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->where('email', 'LIKE', '%'.$value.'%');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use App\Classes\ValueObjects\Constants\TransactionType;
|
|
||||||
use Carbon\Carbon;
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class HavePaymentStatusNotIn implements Filter
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->whereHas('transactions', function (Builder $query) use($value) {
|
|
||||||
$query->where('type', TransactionType::PAYMENT)->whereNotIn('status', $value);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class IdNext implements Filter
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return Builder|mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->where('id', '>', $value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class NextMainQuestion implements Filter
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return Builder|mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->where('next_main_question', $value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class PaymentMethod implements Filter
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return Builder|mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->where('payment_method', $value);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class QuestionId implements Filter
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return Builder|mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->where('question_id', $value);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class QuestionNumber implements Filter
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return Builder|mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->where('question_number', $value);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class QuestionnaireSetId implements Filter
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return Builder|mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->where('questionnaire_set_id', $value);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class UserId implements Filter
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return Builder|mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->where('user_id', $value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
namespace App\Classes\General;
|
namespace App\Classes\General;
|
||||||
|
|
||||||
|
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
class Helper
|
class Helper
|
||||||
{
|
{
|
||||||
@@ -24,21 +24,4 @@ class Helper
|
|||||||
return array_slice(get_class_methods($className), 1);
|
return array_slice(get_class_methods($className), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
}
|
||||||
* @param $log
|
|
||||||
* @return none
|
|
||||||
*/
|
|
||||||
static function debugLoggerForPerfexCRM($log){
|
|
||||||
if($log){
|
|
||||||
$message = $log['message'];
|
|
||||||
$substring = 'No data were found';
|
|
||||||
if (isset($message)) {
|
|
||||||
if (strpos($message, $substring) !== false) {
|
|
||||||
// Log::info('Message exist');
|
|
||||||
} else {
|
|
||||||
Log::info($log['message']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -3,8 +3,6 @@
|
|||||||
namespace App\Classes\Jobs;
|
namespace App\Classes\Jobs;
|
||||||
|
|
||||||
use App\Classes\Modules\PerfexCRM\Processors\CreatePerfexCRMLeadProcessor;
|
use App\Classes\Modules\PerfexCRM\Processors\CreatePerfexCRMLeadProcessor;
|
||||||
use App\Classes\Modules\PerfexCRM\Services\FetchesPerfexCRMLead;
|
|
||||||
use App\Classes\Modules\PerfexCRM\Services\UpdatesPerfexCRMLead;
|
|
||||||
use Illuminate\Bus\Queueable;
|
use Illuminate\Bus\Queueable;
|
||||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
use Illuminate\Foundation\Bus\Dispatchable;
|
use Illuminate\Foundation\Bus\Dispatchable;
|
||||||
@@ -30,12 +28,6 @@ class CreatePerfexCRMCustomer implements ShouldQueue
|
|||||||
|
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
$lead = (App()->make(FetchesPerfexCRMLead::class))->execute($this->createLeadPerfexCRMObject->getEmail());
|
(App()->make(CreatePerfexCRMLeadProcessor::class))->execute($this->createLeadPerfexCRMObject);
|
||||||
if(!is_null($lead)){
|
|
||||||
(App()->make(UpdatesPerfexCRMLead::class))->execute($lead, $this->createLeadPerfexCRMObject->getCompanyReference());
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
(App()->make(CreatePerfexCRMLeadProcessor::class))->execute($this->createLeadPerfexCRMObject);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Jobs;
|
|
||||||
|
|
||||||
use App\Classes\Modules\PerfexCRM\Processors\CreatePerfexCRMInvoiceProcessor;
|
|
||||||
use Illuminate\Bus\Queueable;
|
|
||||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
||||||
use Illuminate\Foundation\Bus\Dispatchable;
|
|
||||||
use Illuminate\Queue\InteractsWithQueue;
|
|
||||||
use Illuminate\Queue\SerializesModels;
|
|
||||||
use App\Models\Transaction;
|
|
||||||
|
|
||||||
class CreatePerfexCRMInvoice implements ShouldQueue
|
|
||||||
{
|
|
||||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
|
||||||
|
|
||||||
/** @var Transaction $transaction*/
|
|
||||||
private $transaction;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* CreatePerfexCRMInvoice constructor.
|
|
||||||
* @param Transaction $transaction
|
|
||||||
*/
|
|
||||||
public function __construct(Transaction $transaction)
|
|
||||||
{
|
|
||||||
$this->transaction = $transaction;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function handle()
|
|
||||||
{
|
|
||||||
(App()->make(CreatePerfexCRMInvoiceProcessor::class))->execute($this->transaction);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -4,12 +4,12 @@ namespace App\Classes\Jobs;
|
|||||||
|
|
||||||
use App\Classes\Modules\PerfexCRM\Processors\CreatePerfexCRMTaskProcessor;
|
use App\Classes\Modules\PerfexCRM\Processors\CreatePerfexCRMTaskProcessor;
|
||||||
use App\Classes\Modules\PerfexCRM\Services\FetchesPerfexCRMLead;
|
use App\Classes\Modules\PerfexCRM\Services\FetchesPerfexCRMLead;
|
||||||
use App\Classes\Modules\PerfexCRM\DataTransferObjects\CreateTaskPerfexCRMObject;
|
|
||||||
use Illuminate\Bus\Queueable;
|
use Illuminate\Bus\Queueable;
|
||||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
use Illuminate\Foundation\Bus\Dispatchable;
|
use Illuminate\Foundation\Bus\Dispatchable;
|
||||||
use Illuminate\Queue\InteractsWithQueue;
|
use Illuminate\Queue\InteractsWithQueue;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\CreateTaskPerfexCRMObject;
|
||||||
|
|
||||||
class CreatePerfexCRMSingleTask implements ShouldQueue
|
class CreatePerfexCRMSingleTask implements ShouldQueue
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Jobs;
|
||||||
|
|
||||||
|
use App\Classes\Modules\PerfexCRM\Processors\InitializePerfexCRMProcessor;
|
||||||
|
use Illuminate\Bus\Queueable;
|
||||||
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
|
use Illuminate\Foundation\Bus\Dispatchable;
|
||||||
|
use Illuminate\Queue\InteractsWithQueue;
|
||||||
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\InitialPerfexCRMObject;
|
||||||
|
|
||||||
|
class InitializePerfexCRM implements ShouldQueue
|
||||||
|
{
|
||||||
|
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||||
|
|
||||||
|
/** @var InitialPerfexCRMObject */
|
||||||
|
private $initialPerfexCRMObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* InitializePerfexCRM constructor.
|
||||||
|
* @param InitialPerfexCRMObject $initialPerfexCRMObject
|
||||||
|
*/
|
||||||
|
public function __construct(InitialPerfexCRMObject $initialPerfexCRMObject)
|
||||||
|
{
|
||||||
|
$this->initialPerfexCRMObject = $initialPerfexCRMObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
(App()->make(InitializePerfexCRMProcessor::class))->execute($this->initialPerfexCRMObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -9,7 +9,6 @@ use Illuminate\Foundation\Bus\Dispatchable;
|
|||||||
use Illuminate\Queue\InteractsWithQueue;
|
use Illuminate\Queue\InteractsWithQueue;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMObject;
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMObject;
|
||||||
use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMInvoiceObject;
|
|
||||||
|
|
||||||
class UpdatePerfexCRM implements ShouldQueue
|
class UpdatePerfexCRM implements ShouldQueue
|
||||||
{
|
{
|
||||||
@@ -18,37 +17,17 @@ class UpdatePerfexCRM implements ShouldQueue
|
|||||||
/** @var UpdatePerfexCRMObject */
|
/** @var UpdatePerfexCRMObject */
|
||||||
private $updatePerfexCRMObject;
|
private $updatePerfexCRMObject;
|
||||||
|
|
||||||
/** @var UpdatePerfexCRMInvoice */
|
|
||||||
private $nextJob;
|
|
||||||
|
|
||||||
/** @var */
|
|
||||||
private $transaction;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* UpdatePerfexCRM constructor.
|
* UpdatePerfexCRM constructor.
|
||||||
* @param UpdatePerfexCRMObject $updatePerfexCRMObject
|
* @param UpdatePerfexCRMObject $updatePerfexCRMObject
|
||||||
* @param UpdatePerfexCRMInvoice $nextJob
|
|
||||||
* @param $transaction
|
|
||||||
*/
|
*/
|
||||||
public function __construct(UpdatePerfexCRMObject $updatePerfexCRMObject, $transaction, $nextJob)
|
public function __construct(UpdatePerfexCRMObject $updatePerfexCRMObject)
|
||||||
{
|
{
|
||||||
$this->updatePerfexCRMObject = $updatePerfexCRMObject;
|
$this->updatePerfexCRMObject = $updatePerfexCRMObject;
|
||||||
$this->nextJob = $nextJob;
|
|
||||||
$this->transaction = $transaction;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
$result = (App()->make(UpdatePerfexCRMProcessor::class))->execute($this->updatePerfexCRMObject);
|
(App()->make(UpdatePerfexCRMProcessor::class))->execute($this->updatePerfexCRMObject);
|
||||||
if($this->nextJob != null && $this->transaction != null){
|
|
||||||
$updatePerfexCRMInvoiceOject = new UpdatePerfexCRMInvoiceObject(
|
|
||||||
$this->updatePerfexCRMObject->getContactEmail(),
|
|
||||||
$result->projectId,
|
|
||||||
$this->transaction,
|
|
||||||
true
|
|
||||||
);
|
|
||||||
/** @var UpdatePerfexCRMInvoice $nextJob */
|
|
||||||
$this->nextJob::dispatch($updatePerfexCRMInvoiceOject);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,98 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Jobs;
|
|
||||||
|
|
||||||
use App\Classes\Modules\PerfexCRM\Processors\CreatePerfexCRMInvoiceProcessor;
|
|
||||||
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMInvoicePayment;
|
|
||||||
use App\Classes\Modules\PerfexCRM\Services\FetchesPerfexCRMCustomer;
|
|
||||||
use App\Classes\Modules\PerfexCRM\Services\FetchesPerfexCRMInvoice;
|
|
||||||
use App\Classes\Modules\PerfexCRM\Services\FetchesPerfexCRMProject;
|
|
||||||
use App\Classes\Modules\PerfexCRM\Services\UpdatesPerfexCRMInvoice;
|
|
||||||
use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMInvoiceObject;
|
|
||||||
use App\Classes\Modules\PerfexCRM\DataTransferObjects\InvoicePaymentPerfexCRMObject;
|
|
||||||
use App\Classes\ValueObjects\Constants\PerfexCRMInvoiceStatus;
|
|
||||||
use App\Models\PackingList;
|
|
||||||
use App\Models\Transaction;
|
|
||||||
use Illuminate\Bus\Queueable;
|
|
||||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
||||||
use Illuminate\Foundation\Bus\Dispatchable;
|
|
||||||
use Illuminate\Queue\InteractsWithQueue;
|
|
||||||
use Illuminate\Queue\SerializesModels;
|
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
use Carbon\Carbon;
|
|
||||||
|
|
||||||
use App\Classes\General\Helper;
|
|
||||||
|
|
||||||
class UpdatePerfexCRMInvoice implements ShouldQueue
|
|
||||||
{
|
|
||||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
|
||||||
|
|
||||||
/** @var UpdatePerfexCRMInvoiceObject */
|
|
||||||
private $updatePerfexCRMInvoiceObject;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* CreatePerfexCRMSingleTask constructor.
|
|
||||||
* @param UpdatePerfexCRMInvoiceObject $createTaskPerfexCRMObject
|
|
||||||
*/
|
|
||||||
public function __construct(UpdatePerfexCRMInvoiceObject $updatePerfexCRMInvoiceObject)
|
|
||||||
{
|
|
||||||
$this->updatePerfexCRMInvoiceObject = $updatePerfexCRMInvoiceObject;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function handle()
|
|
||||||
{
|
|
||||||
//get the client id
|
|
||||||
$customer = (App()->make(FetchesPerfexCRMCustomer::class))->execute($this->updatePerfexCRMInvoiceObject->getEmail());
|
|
||||||
$transaction = $this->updatePerfexCRMInvoiceObject->getTransaction();
|
|
||||||
|
|
||||||
//get the invoice id
|
|
||||||
$invoiceId = 0;
|
|
||||||
$invoiceStatus = 0;
|
|
||||||
$invoice = (App()->make(FetchesPerfexCRMInvoice::class))->execute($customer->userid,"INV-", $transaction->owner->bill_no);
|
|
||||||
Log::error(json_encode('UpdatePerfexCRMInvoice debug $transaction->owner->bill_no: '.$transaction->owner->bill_no));
|
|
||||||
|
|
||||||
if(is_null($invoice)){
|
|
||||||
$result = (App()->make(CreatePerfexCRMInvoiceProcessor::class))->execute($transaction->owner, $this->updatePerfexCRMInvoiceObject->getIsPaid());
|
|
||||||
if ($result) {
|
|
||||||
$invoiceId = $result->payload['id'];
|
|
||||||
} else {
|
|
||||||
// Log::error(json_encode('UpdatePerfexCRMInvoice CreatePerfexCRMInvoiceProcessor failed'));
|
|
||||||
Helper::debugLoggerForPerfexCRM('UpdatePerfexCRMInvoice CreatePerfexCRMInvoiceProcessor failed');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$invoiceId = $invoice->id;
|
|
||||||
$invoiceStatus = $invoice->status;
|
|
||||||
|
|
||||||
//This only run when invoice already exist and the invoice does not have a PAID status
|
|
||||||
if($invoiceStatus != PerfexCRMInvoiceStatus::PAID){
|
|
||||||
Log::error(json_encode('UpdatePerfexCRMInvoice debug $this->updatePerfexCRMInvoiceObject->getProjectId(): '.$this->updatePerfexCRMInvoiceObject->getProjectId()));
|
|
||||||
//update invoice
|
|
||||||
(App()->make(UpdatesPerfexCRMInvoice::class))->execute($invoice, $this->updatePerfexCRMInvoiceObject->getProjectId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//create invoice payment
|
|
||||||
if($invoiceId != 0 && $invoiceStatus != PerfexCRMInvoiceStatus::PAID){
|
|
||||||
|
|
||||||
$date = Carbon::parse($transaction->created_at)->format('Y-m-d');
|
|
||||||
|
|
||||||
$invoicePaymentPerfexCRMObject = new InvoicePaymentPerfexCRMObject(
|
|
||||||
$invoiceId,
|
|
||||||
"$transaction->amount",
|
|
||||||
$date,
|
|
||||||
1,
|
|
||||||
"",
|
|
||||||
""
|
|
||||||
);
|
|
||||||
(App()->make(CreatesPerfexCRMInvoicePayment::class))->execute($invoicePaymentPerfexCRMObject);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function delay($delay)
|
|
||||||
{
|
|
||||||
// Add delay in seconds to the job
|
|
||||||
$this->delay = $delay;
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,96 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Jobs;
|
|
||||||
|
|
||||||
use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMObject;
|
|
||||||
use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMInvoiceObject;
|
|
||||||
use App\Models\PackingList;
|
|
||||||
use App\Models\Transaction;
|
|
||||||
use Illuminate\Bus\Queueable;
|
|
||||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
||||||
use Illuminate\Foundation\Bus\Dispatchable;
|
|
||||||
use Illuminate\Queue\InteractsWithQueue;
|
|
||||||
use Illuminate\Queue\SerializesModels;
|
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
|
|
||||||
class UpdatePerfexCRMPrelude implements ShouldQueue
|
|
||||||
{
|
|
||||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
|
||||||
|
|
||||||
/** @var */
|
|
||||||
private $packingList;
|
|
||||||
|
|
||||||
/** @var */
|
|
||||||
private $transaction;
|
|
||||||
|
|
||||||
/** @var UpdatePerfexCRMObject */
|
|
||||||
private $updatePerfexCRMObject;
|
|
||||||
|
|
||||||
/** @var UpdatePerfexCRM */
|
|
||||||
private $nextJob1;
|
|
||||||
|
|
||||||
/** @var UpdatePerfexCRMInvoice */
|
|
||||||
private $nextJob2;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* UpdatePerfexCRMPrelude constructor.
|
|
||||||
* @param $packingList
|
|
||||||
* @param $transaction
|
|
||||||
* @param UpdatePerfexCRMObject $updatePerfexCRMObject
|
|
||||||
* @param UpdatePerfexCRM $nextJob1
|
|
||||||
* @param UpdatePerfexCRMInvoice $nextJob2
|
|
||||||
*/
|
|
||||||
public function __construct($packingList, $transaction, UpdatePerfexCRMObject $updatePerfexCRMObject, $nextJob1, $nextJob2)
|
|
||||||
{
|
|
||||||
$this->packingList = $packingList;
|
|
||||||
$this->transaction = $transaction;
|
|
||||||
$this->updatePerfexCRMObject = $updatePerfexCRMObject;
|
|
||||||
$this->nextJob1 = $nextJob1;
|
|
||||||
$this->nextJob2 = $nextJob2;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function handle()
|
|
||||||
{
|
|
||||||
if(is_null($this->packingList)){
|
|
||||||
$this->packingList = $this->transaction->owner->owner;
|
|
||||||
}
|
|
||||||
$amount = 0.00;
|
|
||||||
if(!is_null($this->transaction)){
|
|
||||||
$amount = $this->transaction->amount;
|
|
||||||
}
|
|
||||||
$data = [
|
|
||||||
'amount' => number_format($amount, 2, '.', ''),
|
|
||||||
'link_order' => config('app.url').'/order/show/'.$this->packingList->owner->reference,
|
|
||||||
'link_autocount_or' => 'https://docs.google.com/spreadsheets/d/1Q3rJBGQ9Bo04HZp5WR9zbLp7pIW2kfDYsabxG7JON-4/edit#gid=2013983170',
|
|
||||||
'link_perfex' => 'https://perfex.cief-malaysia.com/admin/projects/view/89',
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
$result = $this->replacePlaceholders($this->updatePerfexCRMObject->getTasks(), $data);
|
|
||||||
$this->updatePerfexCRMObject->setTasks($result);
|
|
||||||
/** @var UpdatePerfexCRM $nextJob1 */
|
|
||||||
/** @var UpdatePerfexCRMInvoice $nextJob2 */
|
|
||||||
$this->nextJob1::dispatch($this->updatePerfexCRMObject, $this->transaction, $this->nextJob2);
|
|
||||||
}
|
|
||||||
|
|
||||||
function replacePlaceholders($template, $data, $prefix = '')
|
|
||||||
{
|
|
||||||
foreach ($template as $key => $value) {
|
|
||||||
foreach ($data as $dataKey => $dataValue) {
|
|
||||||
if (is_array($dataValue)) {
|
|
||||||
$template[$key] = $this->replacePlaceholders($template[$key], $dataValue, $dataKey);
|
|
||||||
} else {
|
|
||||||
if ($prefix != '') {
|
|
||||||
$template[$key] = str_replace('{' .$prefix. "." .$dataKey . '}', $dataValue, $template[$key]);
|
|
||||||
} else {
|
|
||||||
$template[$key] = str_replace('{' . $dataKey . '}', $dataValue, $template[$key]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $template;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -161,8 +161,7 @@ class CreateCustomerLogic extends AbstractControllerLogic
|
|||||||
$request->input('name'),
|
$request->input('name'),
|
||||||
$request->input('email'),
|
$request->input('email'),
|
||||||
$request->input('phone'),
|
$request->input('phone'),
|
||||||
$request->input('type') === CompanyType::COMPANY_BUSINESS ? $request->input('company_name') : $request->input('name'),
|
$request->input('type') === CompanyType::COMPANY_BUSINESS ? $request->input('company_name') : $request->input('name')
|
||||||
$connection->invitee_reference
|
|
||||||
);
|
);
|
||||||
CreatePerfexCRMCustomer::dispatch($createLeadPerfexCRMObject);
|
CreatePerfexCRMCustomer::dispatch($createLeadPerfexCRMObject);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ namespace App\Classes\Modules\Accounts\ControllersLogic;
|
|||||||
|
|
||||||
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||||
use App\Classes\Modules\Accounts\Services\UpdatesUserFullName;
|
use App\Classes\Modules\Accounts\Services\UpdatesUser;
|
||||||
use App\Classes\Modules\Accounts\Services\FetchesUser;
|
use App\Classes\Modules\Accounts\Services\FetchesUser;
|
||||||
use App\Classes\Modules\Accounts\Standards\Rules\CanUpdateUser;
|
use App\Classes\Modules\Accounts\Standards\Rules\CanUpdateUser;
|
||||||
use App\Classes\Modules\Accounts\DataTransferObjects\FullNameObject;
|
use App\Classes\Modules\Accounts\DataTransferObjects\FullNameObject;
|
||||||
@@ -29,8 +29,8 @@ class UpdateUserLogic extends AbstractControllerLogic
|
|||||||
/** @var CanUpdateUser */
|
/** @var CanUpdateUser */
|
||||||
private $canUpdateUser;
|
private $canUpdateUser;
|
||||||
|
|
||||||
/** @var UpdatesUserFullName */
|
/** @var UpdatesUser */
|
||||||
private $updatesUserFullName;
|
private $updatesUser;
|
||||||
|
|
||||||
/** @var FetchesUser */
|
/** @var FetchesUser */
|
||||||
private $fetchesUser;
|
private $fetchesUser;
|
||||||
@@ -38,13 +38,13 @@ class UpdateUserLogic extends AbstractControllerLogic
|
|||||||
/**
|
/**
|
||||||
* UpdateAddressLogic constructor.
|
* UpdateAddressLogic constructor.
|
||||||
* @param CanUpdateUser $canUpdateUser
|
* @param CanUpdateUser $canUpdateUser
|
||||||
* @param UpdatesUserFullName $updatesUserFullName
|
* @param UpdatesUser $updatesUser
|
||||||
* @param FetchesUser $fetchesUSer
|
* @param FetchesUser $fetchesUSer
|
||||||
*/
|
*/
|
||||||
public function __construct(CanUpdateUser $canUpdateUser, UpdatesUserFullName $updatesUserFullName, FetchesUser $fetchesUser)
|
public function __construct(CanUpdateUser $canUpdateUser, UpdatesUser $updatesUser, FetchesUser $fetchesUser)
|
||||||
{
|
{
|
||||||
$this->canUpdateUser = $canUpdateUser;
|
$this->canUpdateUser = $canUpdateUser;
|
||||||
$this->updatesUserFullName = $updatesUserFullName;
|
$this->updatesUser = $updatesUser;
|
||||||
$this->fetchesUser = $fetchesUser;
|
$this->fetchesUser = $fetchesUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ class UpdateUserLogic extends AbstractControllerLogic
|
|||||||
|
|
||||||
$query = $this->fetchesUser->execute(['id' => $request->route('id')]);
|
$query = $this->fetchesUser->execute(['id' => $request->route('id')]);
|
||||||
|
|
||||||
$query = $this->updatesUserFullName->execute($query, $object);
|
$query = $this->updatesUser->execute($query, $object);
|
||||||
|
|
||||||
return $this->resourceResponse(new UserResource($query));
|
return $this->resourceResponse(new UserResource($query));
|
||||||
|
|
||||||
|
|||||||
@@ -1,71 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Accounts\ControllersLogic;
|
|
||||||
|
|
||||||
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
||||||
use App\Classes\Modules\Accounts\Services\UpdatesUser;
|
|
||||||
use App\Classes\Modules\Accounts\Services\FetchesUser;
|
|
||||||
use App\Classes\Modules\Accounts\Standards\Rules\CanUpdateUser;
|
|
||||||
use App\Classes\Modules\Accounts\DataTransferObjects\FullNameObject;
|
|
||||||
use App\Classes\Modules\Accounts\DataTransferObjects\UserObject;
|
|
||||||
use App\Http\Resources\UserResource;
|
|
||||||
use ErrorException;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
|
|
||||||
class UpdateUserRoleLogic extends AbstractControllerLogic
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function notification():array {
|
|
||||||
return [
|
|
||||||
'title' => 'Updated Admin Role',
|
|
||||||
'message' => 'You have successfully updated the Admin Role'
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @var CanUpdateUser */
|
|
||||||
private $canUpdateUser;
|
|
||||||
|
|
||||||
/** @var UpdatesUser */
|
|
||||||
private $updatesUser;
|
|
||||||
|
|
||||||
/** @var FetchesUser */
|
|
||||||
private $fetchesUser;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* UpdateAddressLogic constructor.
|
|
||||||
* @param CanUpdateUser $canUpdateUser
|
|
||||||
* @param UpdatesUser $updatesUser
|
|
||||||
* @param FetchesUser $fetchesUSer
|
|
||||||
*/
|
|
||||||
public function __construct(CanUpdateUser $canUpdateUser, UpdatesUser $updatesUser, FetchesUser $fetchesUser)
|
|
||||||
{
|
|
||||||
$this->canUpdateUser = $canUpdateUser;
|
|
||||||
$this->updatesUser = $updatesUser;
|
|
||||||
$this->fetchesUser = $fetchesUser;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @return JsonResponse
|
|
||||||
* @throws ErrorException
|
|
||||||
*/
|
|
||||||
public function logic(Request $request) : JsonResponse
|
|
||||||
{
|
|
||||||
$query = $this->fetchesUser->execute(['id' => $request->route('id')]);
|
|
||||||
|
|
||||||
$object = new UserObject($query->name, $request->input('type'));
|
|
||||||
|
|
||||||
$this->canUpdateUser->passes($object);
|
|
||||||
|
|
||||||
$query = $this->updatesUser->execute($query, $object);
|
|
||||||
|
|
||||||
return $this->resourceResponse(new UserResource($query));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Accounts\DataTransferObjects;
|
|
||||||
|
|
||||||
use App\Classes\General\Interfaces\DataTransferObject;
|
|
||||||
|
|
||||||
class UserObject implements DataTransferObject
|
|
||||||
{
|
|
||||||
/** @var string */
|
|
||||||
private $name;
|
|
||||||
|
|
||||||
/** @var int */
|
|
||||||
private $type;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* FullNameObject constructor.
|
|
||||||
* @param string $name
|
|
||||||
*/
|
|
||||||
public function __construct(string $name, int $type)
|
|
||||||
{
|
|
||||||
$this->name = $name;
|
|
||||||
$this->type = $type;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getName(): string
|
|
||||||
{
|
|
||||||
return $this->name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
public function getType(): int
|
|
||||||
{
|
|
||||||
return $this->type;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
namespace App\Classes\Modules\Accounts\Services;
|
namespace App\Classes\Modules\Accounts\Services;
|
||||||
|
|
||||||
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
||||||
use App\Classes\Modules\Accounts\DataTransferObjects\UserObject;
|
use App\Classes\Modules\Accounts\DataTransferObjects\FullNameObject;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
|
|
||||||
class UpdatesUser extends AbstractUpdateRecord
|
class UpdatesUser extends AbstractUpdateRecord
|
||||||
@@ -11,14 +11,13 @@ class UpdatesUser extends AbstractUpdateRecord
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param User $model
|
* @param User $model
|
||||||
* @param UserObject $object
|
* @param FullNameObject $object
|
||||||
* @return \Illuminate\Database\Eloquent\Model
|
* @return \Illuminate\Database\Eloquent\Model
|
||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
*/
|
*/
|
||||||
public function execute(User $model, UserObject $object) {
|
public function execute(User $model, FullNameObject $object) {
|
||||||
|
|
||||||
$model->name = $object->getName();
|
$model->name = $object->getName();
|
||||||
$model->type = $object->getType();
|
|
||||||
return $this->handler($model);
|
return $this->handler($model);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Accounts\Services;
|
|
||||||
|
|
||||||
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
|
||||||
use App\Classes\Modules\Accounts\DataTransferObjects\FullNameObject;
|
|
||||||
use App\Models\User;
|
|
||||||
|
|
||||||
class UpdatesUserFullName extends AbstractUpdateRecord
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param User $model
|
|
||||||
* @param FullNameObject $object
|
|
||||||
* @return \Illuminate\Database\Eloquent\Model
|
|
||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
|
||||||
*/
|
|
||||||
public function execute(User $model, FullNameObject $object) {
|
|
||||||
|
|
||||||
$model->name = $object->getName();
|
|
||||||
return $this->handler($model);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -10,7 +10,7 @@ use App\Classes\Modules\Announcements\Services\FetchesAnnouncement;
|
|||||||
use App\Classes\Modules\Announcements\Services\UpdatesAnnouncement;
|
use App\Classes\Modules\Announcements\Services\UpdatesAnnouncement;
|
||||||
|
|
||||||
use App\Http\Resources\AnnouncementResource;
|
use App\Http\Resources\AnnouncementResource;
|
||||||
use Carbon\Carbon;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
@@ -66,8 +66,8 @@ class UpdateAnnouncementLogic extends AbstractControllerLogic
|
|||||||
$annoucement_object = new AnnouncementObject(
|
$annoucement_object = new AnnouncementObject(
|
||||||
$request->input('title'),
|
$request->input('title'),
|
||||||
$request->input('description'),
|
$request->input('description'),
|
||||||
Carbon::createFromFormat('d-m-Y', $request->input('starting_on'))->format('Y-m-d H:i:s'),
|
$request->input('starting_on'),
|
||||||
Carbon::createFromFormat('d-m-Y', $request->input('ending_on'))->format('Y-m-d H:i:s')
|
$request->input('ending_on')
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->canUpdateAnnouncement->passes($annoucement_object);
|
$this->canUpdateAnnouncement->passes($annoucement_object);
|
||||||
|
|||||||
@@ -4,24 +4,28 @@ namespace App\Classes\Modules\Billplzs\ControllersLogic;
|
|||||||
|
|
||||||
use App\Classes\Modules\Orders\Processors\UpdateDoFromVTPortalProcessor;
|
use App\Classes\Modules\Orders\Processors\UpdateDoFromVTPortalProcessor;
|
||||||
use App\Classes\Modules\Orders\Processors\UpdateDoFromYDPortalProcessor;
|
use App\Classes\Modules\Orders\Processors\UpdateDoFromYDPortalProcessor;
|
||||||
|
use App\Classes\Modules\Wallets\DataTransferObjects\WalletObject;
|
||||||
|
use App\Classes\Modules\Wallets\Services\UpdatesWallet;
|
||||||
|
|
||||||
use App\Classes\Exceptions\ResourceNotFoundException;
|
use App\Classes\Exceptions\ResourceNotFoundException;
|
||||||
use App\Classes\Modules\Wallets\Services\UpdatesWalletBalance;
|
use App\Classes\Modules\Wallets\Services\UpdatesWalletBalance;
|
||||||
|
use App\Http\Resources\TransactionResource;
|
||||||
|
use App\Models\Booking;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use App\Models\Wallet;
|
use App\Models\Wallet;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
|
||||||
use App\Classes\Exceptions\MalformedRequestException;
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||||
use App\Classes\Modules\Billplzs\Services\GetBillplzBill;
|
use App\Classes\Modules\Billplzs\Services\GetBillplzBill;
|
||||||
use App\Classes\Modules\Billplzs\DataTransferObjects\BillplzXSignatureObject;
|
use App\Classes\Modules\Billplzs\DataTransferObjects\BillplzXSignatureObject;
|
||||||
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||||
use App\Classes\Modules\Transactions\Services\FetchesTransaction;
|
use App\Classes\Modules\Transactions\Services\FetchesTransaction;
|
||||||
use App\Classes\Modules\Transactions\Processors\CreatePaymentTransactionProcessor;
|
|
||||||
use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus;
|
use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus;
|
||||||
use App\Classes\ValueObjects\Constants\PaymentMethodType;
|
|
||||||
use App\Classes\ValueObjects\Constants\TransactionType;
|
|
||||||
use App\Models\Group;
|
|
||||||
use Illuminate\Support\Facades\App;
|
use Illuminate\Support\Facades\App;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
class CallbackBillplzLogic
|
class CallbackBillplzLogic
|
||||||
{
|
{
|
||||||
@@ -40,12 +44,6 @@ class CallbackBillplzLogic
|
|||||||
/** @var UpdateDoFromYDPortalProcessor */
|
/** @var UpdateDoFromYDPortalProcessor */
|
||||||
private $updateDoFromYDPortalProcessor ;
|
private $updateDoFromYDPortalProcessor ;
|
||||||
|
|
||||||
/** @var UpdatesWalletBalance */
|
|
||||||
private $updatesWalletBalance;
|
|
||||||
|
|
||||||
/** @var CreatePaymentTransactionProcessor */
|
|
||||||
private $createPaymentTransactionProcessor;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CallbackBillplzLogic constructor.
|
* CallbackBillplzLogic constructor.
|
||||||
* @param GetBillplzBill $getBillplzBill
|
* @param GetBillplzBill $getBillplzBill
|
||||||
@@ -53,17 +51,14 @@ class CallbackBillplzLogic
|
|||||||
* @param UpdatesTransactionStatus $updatesTransactionStatus
|
* @param UpdatesTransactionStatus $updatesTransactionStatus
|
||||||
* @param UpdateDoFromVTPortalProcessor $updateDoFromVTPortalProcessor
|
* @param UpdateDoFromVTPortalProcessor $updateDoFromVTPortalProcessor
|
||||||
* @param UpdateDoFromYDPortalProcessor $updateDoFromYDPortalProcessor
|
* @param UpdateDoFromYDPortalProcessor $updateDoFromYDPortalProcessor
|
||||||
* @param CreatePaymentTransactionProcessor $createPaymentTransactionProcessor
|
|
||||||
*/
|
*/
|
||||||
public function __construct(GetBillplzBill $getBillplzBill, FetchesTransaction $fetchesTransaction, UpdatesTransactionStatus $updatesTransactionStatus, UpdateDoFromVTPortalProcessor $updateDoFromVTPortalProcessor, UpdateDoFromYDPortalProcessor $updateDoFromYDPortalProcessor, UpdatesWalletBalance $updatesWalletBalance, CreatePaymentTransactionProcessor $createPaymentTransactionProcessor)
|
public function __construct(GetBillplzBill $getBillplzBill, FetchesTransaction $fetchesTransaction, UpdatesTransactionStatus $updatesTransactionStatus, UpdateDoFromVTPortalProcessor $updateDoFromVTPortalProcessor, UpdateDoFromYDPortalProcessor $updateDoFromYDPortalProcessor)
|
||||||
{
|
{
|
||||||
$this->getBillplzBill = $getBillplzBill;
|
$this->getBillplzBill = $getBillplzBill;
|
||||||
$this->fetchesTransaction = $fetchesTransaction;
|
$this->fetchesTransaction = $fetchesTransaction;
|
||||||
$this->updatesTransactionStatus = $updatesTransactionStatus;
|
$this->updatesTransactionStatus = $updatesTransactionStatus;
|
||||||
$this->updateDoFromVTPortalProcessor = $updateDoFromVTPortalProcessor;
|
$this->updateDoFromVTPortalProcessor = $updateDoFromVTPortalProcessor;
|
||||||
$this->updateDoFromYDPortalProcessor = $updateDoFromYDPortalProcessor;
|
$this->updateDoFromYDPortalProcessor = $updateDoFromYDPortalProcessor;
|
||||||
$this->updatesWalletBalance = $updatesWalletBalance;
|
|
||||||
$this->createPaymentTransactionProcessor = $createPaymentTransactionProcessor;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -106,51 +101,23 @@ class CallbackBillplzLogic
|
|||||||
$token = Auth::fromUser(User::find(1));
|
$token = Auth::fromUser(User::find(1));
|
||||||
$request->headers->set('Authorization', 'Bearer '.$token);
|
$request->headers->set('Authorization', 'Bearer '.$token);
|
||||||
|
|
||||||
// check if is wallet top up
|
$this->updatesTransactionStatus->execute($transaction, ApprovalStatus::APPROVED);
|
||||||
if($transaction->owner instanceof Wallet && $status === ApprovalStatus::APPROVED &&!in_array($transaction->status, [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])) {
|
|
||||||
$this->updatesWalletBalance->execute($transaction->owner, $transaction->amount);
|
|
||||||
}
|
|
||||||
|
|
||||||
// group payment
|
if(($invoice->amount - $transaction->amount) < 0.01) {
|
||||||
if ($transaction->type == TransactionType::GROUP_PAYMENT && $status === ApprovalStatus::APPROVED &&!in_array($transaction->status, [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])) {
|
$this->updatesTransactionStatus->execute($invoice, ApprovalStatus::COMPLETED);
|
||||||
$group = Group::where('reference', $billplzXSignatureObject->getBillPlzId())->first();
|
|
||||||
|
|
||||||
foreach($group->groupTransactions as $groupTransaction) {
|
$packingList->status = ApprovalStatus::APPROVED;
|
||||||
$invoice = $groupTransaction->transaction;
|
$packingList->save();
|
||||||
$this->createPaymentTransactionProcessor->execute($invoice, PaymentMethodType::WALLET, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
$group->status = $status;
|
if(app()->environment('production')){
|
||||||
$group->save();
|
$this->updateDoFromVTPortalProcessor->execute($packingList);
|
||||||
}
|
$this->updateDoFromYDPortalProcessor->execute($packingList);
|
||||||
|
|
||||||
$this->updatesTransactionStatus->execute($transaction, $status);
|
|
||||||
|
|
||||||
if (!$transaction->owner instanceof Wallet) {
|
|
||||||
$totalPaidAmount = $invoice->transactions->where('type', TransactionType::PAYMENT)->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])->sum('amount');
|
|
||||||
|
|
||||||
if(($invoice->amount - $totalPaidAmount) < 0.01) {
|
|
||||||
$this->updatesTransactionStatus->execute($invoice, ApprovalStatus::COMPLETED);
|
|
||||||
|
|
||||||
$packingList->status = ApprovalStatus::APPROVED;
|
|
||||||
$packingList->save();
|
|
||||||
|
|
||||||
if(app()->environment('production')){
|
|
||||||
$this->updateDoFromVTPortalProcessor->execute($packingList);
|
|
||||||
$this->updateDoFromYDPortalProcessor->execute($packingList);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$company_module_marking = $transaction->owner->owner->connections? $transaction->owner->owner->connections->first()->invitee_reference: null;
|
|
||||||
|
|
||||||
if ($transaction->owner instanceof Wallet) {
|
|
||||||
$company_module_marking = $transaction->owner->owner->connections? $transaction->owner->owner->connections->first()->invitee_reference: null;
|
|
||||||
} else {
|
|
||||||
|
|
||||||
$company_module_marking = $order->companyModule->connections? $order->companyModule->connections->first()->invitee_reference: null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $request->method() === 'POST' ? true : view('pages.payments_redirect', ['marking' => $order->reference ?? null, 'company_module_marking' => $company_module_marking ?? null, 'transaction' => $transaction, 'status' => $status]);
|
return $request->method() === 'POST' ? true : view('pages.payments_redirect', ['marking' => $order->reference, 'transaction' => $transaction, 'status' => $status]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,69 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Companies\ControllersLogic;
|
|
||||||
|
|
||||||
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
||||||
use App\Classes\Modules\Companies\Services\UpdatesCompany;
|
|
||||||
use App\Classes\Modules\Companies\Services\FetchesCompany;
|
|
||||||
use App\Classes\Modules\Companies\Standards\Rules\CanUpdateCompany;
|
|
||||||
use App\Classes\Modules\Companies\DataTransferObjects\CompanyObject;
|
|
||||||
use App\Http\Resources\CompanyResource;
|
|
||||||
use ErrorException;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
|
|
||||||
class UpdateCompanyTypeLogic extends AbstractControllerLogic
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function notification():array {
|
|
||||||
return [
|
|
||||||
'title' => 'Updated Company Type',
|
|
||||||
'message' => 'You have successfully updated the Company Tyoe'
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @var CanUpdateCompany */
|
|
||||||
private $canUpdateCompany;
|
|
||||||
|
|
||||||
/** @var UpdatesCompany */
|
|
||||||
private $updatesCompany;
|
|
||||||
|
|
||||||
/** @var FetchesCompany */
|
|
||||||
private $fetchesCompany;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* UpdateCompanyControllersLogic constructor.
|
|
||||||
* @param CanUpdateCompany $canUpdateCompany
|
|
||||||
* @param UpdatesCompany $updatesCompany
|
|
||||||
* @param FetchesCompany $fetchesCompany
|
|
||||||
*/
|
|
||||||
public function __construct(CanUpdateCompany $canUpdateCompany, UpdatesCompany $updatesCompany, FetchesCompany $fetchesCompany)
|
|
||||||
{
|
|
||||||
$this->canUpdateCompany = $canUpdateCompany;
|
|
||||||
$this->updatesCompany = $updatesCompany;
|
|
||||||
$this->fetchesCompany = $fetchesCompany;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @return JsonResponse
|
|
||||||
* @throws ErrorException
|
|
||||||
*/
|
|
||||||
public function logic(Request $request) : JsonResponse
|
|
||||||
{
|
|
||||||
$query = $this->fetchesCompany->execute(['id' => $request->route('id')]);
|
|
||||||
|
|
||||||
$object = new CompanyObject($query->name, $query->reference, $request->input('type'));
|
|
||||||
|
|
||||||
$this->canUpdateCompany->passes($object);
|
|
||||||
|
|
||||||
$query = $this->updatesCompany->execute($query, $object);
|
|
||||||
|
|
||||||
return $this->resourceResponse(new CompanyResource($query));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Contacts\ControllersLogic;
|
|
||||||
|
|
||||||
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
||||||
use App\Classes\Modules\Contacts\Services\UpdatesContact;
|
|
||||||
use App\Classes\Modules\Contacts\DataTransferObjects\ContactObject;
|
|
||||||
use App\Classes\Modules\Contacts\Services\FetchesContact;
|
|
||||||
use App\Http\Resources\ContactResource;
|
|
||||||
use ErrorException;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
|
|
||||||
class UpdateContactLogic extends AbstractControllerLogic
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function notification():array {
|
|
||||||
return [
|
|
||||||
'title' => 'Updated Contact',
|
|
||||||
'message' => 'You have successfully updated the Contact'
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @var UpdatesContact */
|
|
||||||
private $updatesContact;
|
|
||||||
|
|
||||||
/** @var FetchesContact */
|
|
||||||
private $fetchesContact;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* UpdateContactLogic constructor.
|
|
||||||
* @param UpdatesContact $updatesContact
|
|
||||||
* @param FetchesContact $fetchesContact
|
|
||||||
*/
|
|
||||||
public function __construct(UpdatesContact $updatesContact, FetchesContact $fetchesContact)
|
|
||||||
{
|
|
||||||
$this->updatesContact = $updatesContact;
|
|
||||||
$this->fetchesContact = $fetchesContact;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @return JsonResponse
|
|
||||||
* @throws ErrorException
|
|
||||||
*/
|
|
||||||
public function logic(Request $request) : JsonResponse
|
|
||||||
{
|
|
||||||
$object = new ContactObject(
|
|
||||||
$request->input('reference'),
|
|
||||||
$request->input('phone'),
|
|
||||||
$request->input('email'),
|
|
||||||
$request->input('wechat_id')
|
|
||||||
);
|
|
||||||
|
|
||||||
// $this->canUpdateContact->passes($object);
|
|
||||||
|
|
||||||
$query = $this->fetchesContact->execute(['id' => $request->route('id')]);
|
|
||||||
|
|
||||||
$query = $this->updatesContact->execute($query, $object);
|
|
||||||
|
|
||||||
return $this->resourceResponse(new ContactResource($query));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Contacts\Services;
|
|
||||||
|
|
||||||
|
|
||||||
use App\Classes\General\Eloquent\AbstractFetchRecord;
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
use App\Models\Contact;
|
|
||||||
|
|
||||||
class FetchesContact extends AbstractFetchRecord
|
|
||||||
{
|
|
||||||
|
|
||||||
/** @var Contact */
|
|
||||||
private $repository;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* FetchesContact constructor.
|
|
||||||
* @param Contact $repository
|
|
||||||
*/
|
|
||||||
public function __construct(Contact $repository)
|
|
||||||
{
|
|
||||||
$this->repository = $repository;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return Builder
|
|
||||||
*/
|
|
||||||
public function getRepository(): Builder
|
|
||||||
{
|
|
||||||
return $this->repository->newQuery();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Contacts\Services;
|
|
||||||
|
|
||||||
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
|
||||||
use App\Classes\Modules\Contacts\DataTransferObjects\ContactObject;
|
|
||||||
use App\Models\Contact;
|
|
||||||
|
|
||||||
class UpdatesContact extends AbstractUpdateRecord
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Contact $model
|
|
||||||
* @return \Illuminate\Database\Eloquent\Model
|
|
||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
|
||||||
*/
|
|
||||||
public function execute(Contact $model, ContactObject $object)
|
|
||||||
{
|
|
||||||
$model->reference = $object->getReference();
|
|
||||||
$model->phone = $object->getPhone();
|
|
||||||
$model->email = $object->getEmail();
|
|
||||||
$model->wechat_id = $object->getWechatId();
|
|
||||||
|
|
||||||
return $this->handler($model);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -7,13 +7,9 @@ use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|||||||
use App\Classes\Modules\Documents\Services\ListsDocuments;
|
use App\Classes\Modules\Documents\Services\ListsDocuments;
|
||||||
use App\Classes\Modules\Documents\Standards\Rules\CanListDocuments;
|
use App\Classes\Modules\Documents\Standards\Rules\CanListDocuments;
|
||||||
use App\Http\Resources\DocumentResource;
|
use App\Http\Resources\DocumentResource;
|
||||||
use App\Models\Document;
|
|
||||||
use App\Transformers\DocumentTransformer;
|
|
||||||
use ErrorException;
|
use ErrorException;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use League\Fractal;
|
|
||||||
|
|
||||||
|
|
||||||
class ListDocumentLogic extends AbstractControllerLogic
|
class ListDocumentLogic extends AbstractControllerLogic
|
||||||
{
|
{
|
||||||
@@ -62,11 +58,6 @@ class ListDocumentLogic extends AbstractControllerLogic
|
|||||||
|
|
||||||
return $this->collectionResponse(DocumentResource::collection($query));
|
return $this->collectionResponse(DocumentResource::collection($query));
|
||||||
|
|
||||||
|
|
||||||
/* return fractal()
|
|
||||||
->collection($query, new DocumentTransformer)
|
|
||||||
->respond(200, [], JSON_PRETTY_PRINT);*/
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Documents\Processors;
|
|
||||||
|
|
||||||
use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject;
|
|
||||||
use App\Classes\Modules\Documents\Services\CreatesDocument;
|
|
||||||
use App\Classes\Modules\Documents\Services\CreatesFiles;
|
|
||||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
|
||||||
use App\Models\Document;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Models\QAUserAnswerSelected;
|
|
||||||
|
|
||||||
class UploadDocumentForHelpMenuProcessor
|
|
||||||
{
|
|
||||||
|
|
||||||
/** @var CreatesDocument */
|
|
||||||
private $createsDocument;
|
|
||||||
|
|
||||||
/** @var CreatesFiles */
|
|
||||||
private $createsFiles;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* UploadDocumentForHelpMenuProcessor constructor.
|
|
||||||
* @param CreatesDocument $createsDocument
|
|
||||||
* @param CreatesFiles $createsFiles
|
|
||||||
*/
|
|
||||||
public function __construct(CreatesDocument $createsDocument, CreatesFiles $createsFiles)
|
|
||||||
{
|
|
||||||
$this->createsDocument = $createsDocument;
|
|
||||||
$this->createsFiles = $createsFiles;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @param QAUserAnswerSelected qaUserAnswerSelected
|
|
||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
|
||||||
*/
|
|
||||||
public function execute(Request $request, QAUserAnswerSelected $qaUserAnswerSelected) {
|
|
||||||
$object = new DocumentObject("HELP_MENU", $request->input('files'),
|
|
||||||
'123456', ApprovalStatus::PENDING_VERIFICATION, 'help_menu'); //cief todo: 123456 cannot be hardcoded
|
|
||||||
|
|
||||||
/** @var Document $document */
|
|
||||||
$document = $this->createsDocument->execute($qaUserAnswerSelected, $object);
|
|
||||||
|
|
||||||
$result = $this->createsFiles->execute($document, $object);
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -39,12 +39,7 @@ class ExportsPaymentTransactions implements FromQuery, WithHeadings, WithHeading
|
|||||||
'ProjNo',
|
'ProjNo',
|
||||||
'DeptNo',
|
'DeptNo',
|
||||||
'Qty',
|
'Qty',
|
||||||
'UnitPrice',
|
'UnitPrice'
|
||||||
// 'marking',
|
|
||||||
// 'contact person',
|
|
||||||
// 'contact number',
|
|
||||||
// 'link',
|
|
||||||
// 'amount'
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -102,10 +97,6 @@ class ExportsPaymentTransactions implements FromQuery, WithHeadings, WithHeading
|
|||||||
$order = $transaction->owner->owner;
|
$order = $transaction->owner->owner;
|
||||||
$company = $order->companyModule->company;
|
$company = $order->companyModule->company;
|
||||||
$shippingTransactionDetails = $transaction->transactionDetails()->where('reference', 'SHIPPING_FEE')->first();
|
$shippingTransactionDetails = $transaction->transactionDetails()->where('reference', 'SHIPPING_FEE')->first();
|
||||||
$marking = $order->companyModule->inviters()->withPivot('invitee_reference')->first()->pivot->invitee_reference;
|
|
||||||
$contact = $order->companyModule->company->contacts->first();
|
|
||||||
$userName = $order->companyModule->employees()->first();
|
|
||||||
$link = route('customer.payment-and-billing', $marking);
|
|
||||||
|
|
||||||
$furtherDescription = '';
|
$furtherDescription = '';
|
||||||
|
|
||||||
@@ -132,12 +123,7 @@ class ExportsPaymentTransactions implements FromQuery, WithHeadings, WithHeading
|
|||||||
$container->reference,
|
$container->reference,
|
||||||
'CIEF',
|
'CIEF',
|
||||||
$shippingTransactionDetails->quantity,
|
$shippingTransactionDetails->quantity,
|
||||||
$shippingTransactionDetails->price,
|
$shippingTransactionDetails->price
|
||||||
// $marking,
|
|
||||||
// $contact ? $contact->phone : '',
|
|
||||||
// $userName->name,
|
|
||||||
// $link,
|
|
||||||
// $transaction->amount
|
|
||||||
];
|
];
|
||||||
return [
|
return [
|
||||||
'<<New>>',
|
'<<New>>',
|
||||||
|
|||||||
@@ -1,187 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Groups\DataTransferObjects;
|
|
||||||
|
|
||||||
use App\Classes\General\Interfaces\DataTransferObject;
|
|
||||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
|
||||||
use Carbon\Carbon;
|
|
||||||
|
|
||||||
class GroupObject implements DataTransferObject
|
|
||||||
{
|
|
||||||
|
|
||||||
/** @var int */
|
|
||||||
private $issuer;
|
|
||||||
|
|
||||||
/** @var int */
|
|
||||||
private $receiver;
|
|
||||||
|
|
||||||
/** @var float */
|
|
||||||
private $amount;
|
|
||||||
|
|
||||||
/** @var float */
|
|
||||||
private $originalAmount;
|
|
||||||
|
|
||||||
/** @var int */
|
|
||||||
private $currencyId;
|
|
||||||
|
|
||||||
/** @var int */
|
|
||||||
private $originalCurrencyId;
|
|
||||||
|
|
||||||
/** @var float */
|
|
||||||
private $currencyRate;
|
|
||||||
|
|
||||||
/** @var float */
|
|
||||||
private $tax;
|
|
||||||
|
|
||||||
/** @var float */
|
|
||||||
private $serviceCharge;
|
|
||||||
|
|
||||||
/** @var int|null */
|
|
||||||
private $status;
|
|
||||||
|
|
||||||
/** @var string */
|
|
||||||
private $reference;
|
|
||||||
|
|
||||||
/** @var int */
|
|
||||||
private $paymentMethod;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* GroupObject constructor.
|
|
||||||
* @param int $issuer
|
|
||||||
* @param int $receiver
|
|
||||||
* @param float $amount
|
|
||||||
* @param float $originalAmount
|
|
||||||
* @param int $currencyId
|
|
||||||
* @param int $originalCurrencyId
|
|
||||||
* @param float $currencyRate
|
|
||||||
* @param float $tax
|
|
||||||
* @param float $serviceCharge
|
|
||||||
* @param string $reference
|
|
||||||
* @param int|null $status
|
|
||||||
* @param int $paymentMethod
|
|
||||||
*/
|
|
||||||
public function __construct(
|
|
||||||
int $issuer,
|
|
||||||
int $receiver,
|
|
||||||
float $amount,
|
|
||||||
float $originalAmount,
|
|
||||||
int $currencyId,
|
|
||||||
int $originalCurrencyId,
|
|
||||||
float $currencyRate,
|
|
||||||
float $tax,
|
|
||||||
float $serviceCharge,
|
|
||||||
int $paymentMethod,
|
|
||||||
?string $reference,
|
|
||||||
?int $status = ApprovalStatus::PENDING_SUBMISSION
|
|
||||||
)
|
|
||||||
{
|
|
||||||
$this->issuer = $issuer;
|
|
||||||
$this->receiver = $receiver;
|
|
||||||
$this->amount = $amount;
|
|
||||||
$this->originalAmount = $originalAmount;
|
|
||||||
$this->currencyId = $currencyId;
|
|
||||||
$this->originalCurrencyId = $originalCurrencyId;
|
|
||||||
$this->currencyRate = $currencyRate;
|
|
||||||
$this->tax = $tax;
|
|
||||||
$this->serviceCharge = $serviceCharge;
|
|
||||||
$this->paymentMethod = $paymentMethod;
|
|
||||||
$this->reference = $reference;
|
|
||||||
$this->status = $status;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
public function getIssuer(): int
|
|
||||||
{
|
|
||||||
return $this->issuer;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
public function getReceiver(): int
|
|
||||||
{
|
|
||||||
return $this->receiver;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return float
|
|
||||||
*/
|
|
||||||
public function getAmount(): float
|
|
||||||
{
|
|
||||||
return $this->amount;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return float
|
|
||||||
*/
|
|
||||||
public function getOriginalAmount(): float
|
|
||||||
{
|
|
||||||
return $this->originalAmount;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
public function getCurrencyId(): int
|
|
||||||
{
|
|
||||||
return $this->currencyId;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
public function getOriginalCurrencyId(): int
|
|
||||||
{
|
|
||||||
return $this->originalCurrencyId;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return float
|
|
||||||
*/
|
|
||||||
public function getCurrencyRate(): float
|
|
||||||
{
|
|
||||||
return $this->currencyRate;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return float
|
|
||||||
*/
|
|
||||||
public function getTax(): float
|
|
||||||
{
|
|
||||||
return $this->tax;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return float
|
|
||||||
*/
|
|
||||||
public function getServiceCharge(): float
|
|
||||||
{
|
|
||||||
return $this->serviceCharge;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
public function getStatus(): ?int
|
|
||||||
{
|
|
||||||
return $this->status;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string|null
|
|
||||||
*/
|
|
||||||
public function getReference(): ?string
|
|
||||||
{
|
|
||||||
return $this->reference;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
public function getPaymentMethod(): int
|
|
||||||
{
|
|
||||||
return $this->paymentMethod;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Groups\Services;
|
|
||||||
|
|
||||||
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
|
||||||
use App\Classes\Modules\Groups\DataTransferObjects\GroupObject;
|
|
||||||
use App\Models\Group;
|
|
||||||
|
|
||||||
class CreatesGroup extends AbstractUpdateRecord
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param GroupObject $object
|
|
||||||
* @return \Illuminate\Database\Eloquent\Model
|
|
||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
|
||||||
*/
|
|
||||||
public function execute(GroupObject $object) {
|
|
||||||
$model = new Group();
|
|
||||||
$model->issuer = $object->getIssuer();
|
|
||||||
$model->receiver = $object->getReceiver();
|
|
||||||
$model->amount = $object->getAmount();
|
|
||||||
$model->original_amount = $object->getOriginalAmount();
|
|
||||||
$model->currency_id = $object->getCurrencyId();
|
|
||||||
$model->original_currency_id = $object->getOriginalCurrencyId();
|
|
||||||
$model->currency_rate = $object->getCurrencyRate();
|
|
||||||
$model->tax = $object->getTax();
|
|
||||||
$model->service_charge = $object->getServiceCharge();
|
|
||||||
$model->status = $object->getStatus();
|
|
||||||
$model->reference = $object->getReference();
|
|
||||||
$model->payment_method = $object->getPaymentMethod();
|
|
||||||
|
|
||||||
return $this->handler($model);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\HelpMenu\ControllersLogic;
|
|
||||||
|
|
||||||
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
||||||
use App\Classes\Modules\HelpMenu\Standards\Rules\CanFetchHelpMenuQuestionList;
|
|
||||||
use App\Classes\Modules\HelpMenu\Processors\FetchFirstHelpMenuQuestionProcessor;
|
|
||||||
use App\Http\Resources\HelpMenuQuestionResource;
|
|
||||||
use ErrorException;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Illuminate\Support\Facades\Auth;
|
|
||||||
|
|
||||||
class FetchHelpMenuQuestionLogic extends AbstractControllerLogic
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function notification():array {
|
|
||||||
return [
|
|
||||||
'title' => 'Retrieved Help Menu First Question',
|
|
||||||
'message' => 'You have successfully retrieved a Help Menu First Question'
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @var CanFetchHelpMenuQuestionList */
|
|
||||||
private $canFetchHelpMenuQuestionList;
|
|
||||||
|
|
||||||
/** @var FetchFirstHelpMenuQuestionProcessor */
|
|
||||||
private $fetchFirstHelpMenuQuestionProcessor;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* FetchHelpMenuQuestionLogic constructor.
|
|
||||||
* @param CanFetchHelpMenuQuestionList $canFetchHelpMenuQuestionList
|
|
||||||
* @param FetchFirstHelpMenuQuestionProcessor $fetchFirstHelpMenuQuestionProcessor
|
|
||||||
*/
|
|
||||||
public function __construct(CanFetchHelpMenuQuestionList $canFetchHelpMenuQuestionList, FetchFirstHelpMenuQuestionProcessor $fetchFirstHelpMenuQuestionProcessor)
|
|
||||||
{
|
|
||||||
$this->canFetchHelpMenuQuestionList = $canFetchHelpMenuQuestionList;
|
|
||||||
$this->fetchFirstHelpMenuQuestionProcessor = $fetchFirstHelpMenuQuestionProcessor;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @return JsonResponse
|
|
||||||
* @throws ErrorException
|
|
||||||
*/
|
|
||||||
public function logic(Request $request) : JsonResponse
|
|
||||||
{
|
|
||||||
$this->canFetchHelpMenuQuestionList->passes();
|
|
||||||
|
|
||||||
$userId = Auth::user()->id;
|
|
||||||
|
|
||||||
$query = $this->fetchFirstHelpMenuQuestionProcessor->execute($request);
|
|
||||||
|
|
||||||
return $this->resourceResponse(new HelpMenuQuestionResource($query, $userId));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,124 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\HelpMenu\ControllersLogic;
|
|
||||||
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
||||||
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMSupportTicket;
|
|
||||||
use App\Classes\Modules\PerfexCRM\Services\FetchesPerfexCRMCustomer;
|
|
||||||
use App\Classes\Modules\HelpMenu\Standards\Rules\CanFetchHelpMenuQuestionList;
|
|
||||||
use App\Classes\Modules\HelpMenu\Processors\SaveHelpMenuAnswerProcessor;
|
|
||||||
use App\Classes\Modules\HelpMenu\Processors\DeleteHelpMenuAnswerProcessor;
|
|
||||||
use App\Classes\Modules\HelpMenu\Processors\FetchNextHelpMenuQuestionProcessor;
|
|
||||||
use App\Classes\Modules\HelpMenu\Processors\FetchFirstHelpMenuQuestionProcessor;
|
|
||||||
use App\Http\Resources\HelpMenuQuestionResource;
|
|
||||||
use ErrorException;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
use Illuminate\Support\Facades\Auth;
|
|
||||||
use App\Classes\ValueObjects\Constants\QAType;
|
|
||||||
|
|
||||||
class UpdateHelpMenuNextQuestionLogic extends AbstractControllerLogic
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function notification():array {
|
|
||||||
return [
|
|
||||||
'title' => 'Retrieved Help Menu Next Question',
|
|
||||||
'message' => 'You have successfully retrieved a Help Menu Next Question'
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @var CanFetchHelpMenuQuestionList */
|
|
||||||
private $canFetchHelpMenuQuestionList;
|
|
||||||
|
|
||||||
/** @var SaveHelpMenuAnswerProcessor */
|
|
||||||
private $saveHelpMenuAnswerProcessor;
|
|
||||||
|
|
||||||
/** @var DeleteHelpMenuAnswerProcessor */
|
|
||||||
private $deleteHelpMenuAnswerProcessor;
|
|
||||||
|
|
||||||
/** @var FetchNextHelpMenuQuestionProcessor */
|
|
||||||
private $fetchNextHelpMenuQuestionProcessor;
|
|
||||||
|
|
||||||
/** @var FetchFirstHelpMenuQuestionProcessor */
|
|
||||||
private $fetchFirstHelpMenuQuestionProcessor;
|
|
||||||
|
|
||||||
/** @var CreatesPerfexCRMSupportTicket */
|
|
||||||
private $createsPerfexCRMSupportTicket;
|
|
||||||
|
|
||||||
/** @var FetchesPerfexCRMCustomer */
|
|
||||||
private $fetchesPerfexCRMCustomer;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* UpdateHelpMenuNextQuestionLogic constructor.
|
|
||||||
* @param CanFetchHelpMenuQuestionList $canFetchHelpMenuQuestionList
|
|
||||||
* @param SaveHelpMenuAnswerProcessor $saveHelpMenuAnswerProcessor
|
|
||||||
* @param FetchNextHelpMenuQuestionProcessor $fetchNextHelpMenuQuestionProcessor
|
|
||||||
* @param FetchFirstHelpMenuQuestionProcessor $fetchFirstHelpMenuQuestionProcessor
|
|
||||||
* @param DeleteHelpMenuAnswerProcessor $deleteHelpMenuAnswerProcessor
|
|
||||||
*/
|
|
||||||
public function __construct(CanFetchHelpMenuQuestionList $canFetchHelpMenuQuestionList, SaveHelpMenuAnswerProcessor $saveHelpMenuAnswerProcessor, FetchNextHelpMenuQuestionProcessor $fetchNextHelpMenuQuestionProcessor, FetchFirstHelpMenuQuestionProcessor $fetchFirstHelpMenuQuestionProcessor, CreatesPerfexCRMSupportTicket $createsPerfexCRMSupportTicket, FetchesPerfexCRMCustomer $fetchesPerfexCRMCustomer, DeleteHelpMenuAnswerProcessor $deleteHelpMenuAnswerProcessor)
|
|
||||||
{
|
|
||||||
$this->canFetchHelpMenuQuestionList = $canFetchHelpMenuQuestionList;
|
|
||||||
$this->saveHelpMenuAnswerProcessor = $saveHelpMenuAnswerProcessor;
|
|
||||||
$this->fetchNextHelpMenuQuestionProcessor = $fetchNextHelpMenuQuestionProcessor;
|
|
||||||
$this->fetchFirstHelpMenuQuestionProcessor = $fetchFirstHelpMenuQuestionProcessor;
|
|
||||||
$this->createsPerfexCRMSupportTicket = $createsPerfexCRMSupportTicket;
|
|
||||||
$this->fetchesPerfexCRMCustomer = $fetchesPerfexCRMCustomer;
|
|
||||||
$this->deleteHelpMenuAnswerProcessor = $deleteHelpMenuAnswerProcessor;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @return JsonResponse
|
|
||||||
* @throws ErrorException
|
|
||||||
*/
|
|
||||||
public function logic(Request $request) : JsonResponse
|
|
||||||
{
|
|
||||||
$questionId = 0;
|
|
||||||
$userId = Auth::user()->id;
|
|
||||||
$currentQuestion = $request->question;
|
|
||||||
$questionId = $currentQuestion['id'];
|
|
||||||
$questionType = $currentQuestion['question_type'];
|
|
||||||
|
|
||||||
$this->canFetchHelpMenuQuestionList->passes();
|
|
||||||
|
|
||||||
//Delete answer
|
|
||||||
$this->deleteHelpMenuAnswerProcessor->execute($userId, $questionId, $request);
|
|
||||||
|
|
||||||
//Save answer given by user
|
|
||||||
if (!$request->has('isPrevious')) {
|
|
||||||
$this->saveHelpMenuAnswerProcessor->execute($userId, $questionId, $request);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Create ticket at crm
|
|
||||||
if (!$request->has('isPrevious')) {
|
|
||||||
if($questionType == QAType::TICKET_CRM){
|
|
||||||
$email = Auth::user()->email;
|
|
||||||
$customer = $this->fetchesPerfexCRMCustomer->execute($email);
|
|
||||||
$subject = "test subject 3";
|
|
||||||
$department = 1;
|
|
||||||
$contactid = 0;
|
|
||||||
$userid = 0;
|
|
||||||
if($customer){
|
|
||||||
$contactid = $customer->id;
|
|
||||||
$userid = $customer->userid;
|
|
||||||
}
|
|
||||||
$this->createsPerfexCRMSupportTicket->execute($subject, $department, $contactid, $userid);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Get returned question (previous or next)
|
|
||||||
$returnQuestion = $this->fetchNextHelpMenuQuestionProcessor->execute($request);
|
|
||||||
//When a questionnaire ended, return back the first question
|
|
||||||
if(is_null($returnQuestion)){
|
|
||||||
$returnQuestion = $this->fetchFirstHelpMenuQuestionProcessor->execute($request);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->resourceResponse(new HelpMenuQuestionResource($returnQuestion, $userId));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\HelpMenu\Processors;
|
|
||||||
|
|
||||||
use App\Models\QAUserAnswerSelected;
|
|
||||||
use App\Classes\Modules\HelpMenu\Services\FetchesHelpMenuUserAnswerSelected;
|
|
||||||
use App\Classes\Modules\HelpMenu\Services\FetchesHelpMenuUserAnswerSelectedList;
|
|
||||||
|
|
||||||
class DeleteHelpMenuAnswerProcessor
|
|
||||||
{
|
|
||||||
/** @var FetchesHelpMenuUserAnswerSelected */
|
|
||||||
private $fetchesHelpMenuUserAnswerSelected;
|
|
||||||
|
|
||||||
/** @var FetchesHelpMenuUserAnswerSelectedList */
|
|
||||||
private $fetchesHelpMenuUserAnswerSelectedList;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* DeleteHelpMenuAnswerProcessor constructor.
|
|
||||||
* @param FetchesHelpMenuUserAnswerSelected $fetchesHelpMenuUserAnswerSelected
|
|
||||||
* @param FetchesHelpMenuUserAnswerSelectedList $fetchesHelpMenuUserAnswerSelectedList
|
|
||||||
*/
|
|
||||||
public function __construct(FetchesHelpMenuUserAnswerSelected $fetchesHelpMenuUserAnswerSelected, FetchesHelpMenuUserAnswerSelectedList $fetchesHelpMenuUserAnswerSelectedList)
|
|
||||||
{
|
|
||||||
$this->fetchesHelpMenuUserAnswerSelected = $fetchesHelpMenuUserAnswerSelected;
|
|
||||||
$this->fetchesHelpMenuUserAnswerSelectedList = $fetchesHelpMenuUserAnswerSelectedList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function execute($userId, $questionId, $request){
|
|
||||||
if ($request->has('isPrevious')) {
|
|
||||||
//Get current and previous question's answer
|
|
||||||
try{
|
|
||||||
$selectedAnswer = $this->fetchesHelpMenuUserAnswerSelectedList->execute(['user_id' => $userId, 'question_id' => $questionId, 'order_by' => (object)['column' => 'id','DESC' => true]])[0];
|
|
||||||
} catch (\Exception $exception){
|
|
||||||
$selectedAnswer = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if($selectedAnswer)
|
|
||||||
{
|
|
||||||
$this->fetchesHelpMenuUserAnswerSelected->execute(['id' => $selectedAnswer['id']])->delete();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
//Delete all answer's belongs to the user
|
|
||||||
$currentQuestion = $request->question;
|
|
||||||
$isStart = $currentQuestion['is_start'];
|
|
||||||
if($isStart){
|
|
||||||
QAUserAnswerSelected::where('user_id', $userId)->delete();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\HelpMenu\Processors;
|
|
||||||
|
|
||||||
use App\Classes\Modules\HelpMenu\Services\FetchesHelpMenuQuestion;
|
|
||||||
use ErrorException;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
|
|
||||||
|
|
||||||
class FetchFirstHelpMenuQuestionProcessor
|
|
||||||
{
|
|
||||||
/** @var FetchesHelpMenuQuestion */
|
|
||||||
private $fetchesHelpMenuQuestion;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* FetchFirstHelpMenuQuestionProcessor constructor.
|
|
||||||
* @param FetchesHelpMenuQuestion $fetchesHelpMenuQuestion
|
|
||||||
*/
|
|
||||||
public function __construct(FetchesHelpMenuQuestion $fetchesHelpMenuQuestion)
|
|
||||||
{
|
|
||||||
$this->fetchesHelpMenuQuestion = $fetchesHelpMenuQuestion;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function execute(Request $request){
|
|
||||||
try {
|
|
||||||
$query = $this->fetchesHelpMenuQuestion->execute(['questionnaire_set_id' => 1]);
|
|
||||||
return $query;
|
|
||||||
} catch (\Exception $exception){
|
|
||||||
throw new ErrorException($exception->getMessage(), $exception->getCode());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\HelpMenu\Processors;
|
|
||||||
|
|
||||||
use App\Classes\Modules\HelpMenu\Services\FetchesHelpMenuQuestion;
|
|
||||||
use App\Classes\Modules\HelpMenu\Services\FetchesHelpMenuUserAnswerSelected;
|
|
||||||
use App\Classes\Modules\HelpMenu\Services\FetchesHelpMenuUserAnswerSelectedList;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Illuminate\Support\Facades\Auth;
|
|
||||||
use App\Classes\ValueObjects\Constants\QAType;
|
|
||||||
|
|
||||||
class FetchNextHelpMenuQuestionProcessor
|
|
||||||
{
|
|
||||||
/** @var FetchesHelpMenuQuestion */
|
|
||||||
private $fetchesHelpMenuQuestion;
|
|
||||||
|
|
||||||
/** @var FetchesHelpMenuUserAnswerSelected */
|
|
||||||
private $fetchesHelpMenuUserAnswerSelected;
|
|
||||||
|
|
||||||
/** @var FetchesHelpMenuUserAnswerSelectedList */
|
|
||||||
private $fetchesHelpMenuUserAnswerSelectedList;
|
|
||||||
/**
|
|
||||||
* FetchNextHelpMenuQuestionProcessor constructor.
|
|
||||||
* @param FetchesHelpMenuQuestion $fetchesHelpMenuQuestion
|
|
||||||
* @param FetchesHelpMenuUserAnswerSelected $fetchesHelpMenuUserAnswerSelected
|
|
||||||
* @param FetchesHelpMenuUserAnswerSelectedList $fetchesHelpMenuUserAnswerSelectedList
|
|
||||||
*/
|
|
||||||
public function __construct(FetchesHelpMenuQuestion $fetchesHelpMenuQuestion, FetchesHelpMenuUserAnswerSelected $fetchesHelpMenuUserAnswerSelected, FetchesHelpMenuUserAnswerSelectedList $fetchesHelpMenuUserAnswerSelectedList)
|
|
||||||
{
|
|
||||||
$this->fetchesHelpMenuQuestion = $fetchesHelpMenuQuestion;
|
|
||||||
$this->fetchesHelpMenuUserAnswerSelected = $fetchesHelpMenuUserAnswerSelected;
|
|
||||||
$this->fetchesHelpMenuUserAnswerSelectedList = $fetchesHelpMenuUserAnswerSelectedList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function execute(Request $request){
|
|
||||||
$isEnd = 0;
|
|
||||||
$questionId = 0;
|
|
||||||
$nextQuestionNumber = 0;
|
|
||||||
$nextNestedQuestion = 0;
|
|
||||||
$nextMainQuestion= 0;
|
|
||||||
$currentQuestion = $request->question;
|
|
||||||
$questionType = QAType::DEFAULT;
|
|
||||||
$returnQuestion = null;
|
|
||||||
|
|
||||||
if ($currentQuestion && array_key_exists('id', $currentQuestion)) {
|
|
||||||
$questionId = $currentQuestion['id'];
|
|
||||||
$isEnd = $currentQuestion['is_end'];
|
|
||||||
$questionType = $currentQuestion['question_type'];
|
|
||||||
$nextNestedQuestion = $currentQuestion['next_nested_question'];
|
|
||||||
$nextMainQuestion = $currentQuestion['next_main_question'];
|
|
||||||
}
|
|
||||||
if ($request->has('answerObj')) {
|
|
||||||
$nextQuestionNumber = $request->answerObj['next_question_number'];
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($request->has('isPrevious')) {
|
|
||||||
$userId = Auth::user()->id;
|
|
||||||
$previousAnswer = $this->fetchesHelpMenuUserAnswerSelectedList->execute(['user_id' => $userId, 'order_by' => (object)['column' => 'id','DESC' => true]])[0];
|
|
||||||
|
|
||||||
//Get previous question
|
|
||||||
$previousQuestion = $this->fetchesHelpMenuQuestion->execute(['questionnaire_set_id' => 1, 'id' => $previousAnswer['question_id']]);
|
|
||||||
$returnQuestion = $previousQuestion;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
//Get next question
|
|
||||||
$nextQuestion = null;
|
|
||||||
$question_number = 0;
|
|
||||||
if($nextQuestionNumber != 0){
|
|
||||||
$question_number = $nextQuestionNumber;
|
|
||||||
}
|
|
||||||
else if($nextNestedQuestion != 0){
|
|
||||||
$question_number = $nextNestedQuestion;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$question_number = $nextMainQuestion;
|
|
||||||
}
|
|
||||||
|
|
||||||
if($isEnd){
|
|
||||||
$returnQuestion = null;
|
|
||||||
}
|
|
||||||
else if($question_number != 0){
|
|
||||||
$nextQuestion = $this->fetchesHelpMenuQuestion->execute(['questionnaire_set_id' => 1, 'question_number' => $question_number]);
|
|
||||||
$returnQuestion = $nextQuestion;
|
|
||||||
}
|
|
||||||
else if (array_key_exists('id', $request->input('question'))) {
|
|
||||||
$nextQuestion = $this->fetchesHelpMenuQuestion->execute(['questionnaire_set_id' => 1, 'id_next' => $questionId, 'next_main_question' => null]);
|
|
||||||
$returnQuestion = $nextQuestion;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $returnQuestion;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\HelpMenu\Processors;
|
|
||||||
|
|
||||||
use App\Models\QAUserAnswerSelected;
|
|
||||||
use App\Classes\Modules\HelpMenu\Services\FetchesHelpMenuUserAnswerSelected;
|
|
||||||
use App\Classes\Modules\Documents\Processors\UploadDocumentForHelpMenuProcessor;
|
|
||||||
|
|
||||||
|
|
||||||
class SaveHelpMenuAnswerProcessor
|
|
||||||
{
|
|
||||||
/** @var FetchesHelpMenuUserAnswerSelected */
|
|
||||||
private $fetchesHelpMenuUserAnswerSelected;
|
|
||||||
|
|
||||||
/** @var UploadDocumentForHelpMenuProcessor */
|
|
||||||
private $uploadDocumentForHelpMenuProcessor;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* SaveHelpMenuAnswerProcessor constructor.
|
|
||||||
* @param FetchesHelpMenuUserAnswerSelected $fetchesHelpMenuUserAnswerSelected
|
|
||||||
* @param UploadDocumentForHelpMenuProcessor $uploadDocumentForHelpMenuProcessor
|
|
||||||
*/
|
|
||||||
public function __construct(FetchesHelpMenuUserAnswerSelected $fetchesHelpMenuUserAnswerSelected, UploadDocumentForHelpMenuProcessor $uploadDocumentForHelpMenuProcessor)
|
|
||||||
{
|
|
||||||
$this->fetchesHelpMenuUserAnswerSelected = $fetchesHelpMenuUserAnswerSelected;
|
|
||||||
$this->uploadDocumentForHelpMenuProcessor = $uploadDocumentForHelpMenuProcessor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function execute($userId, $questionId, $request){
|
|
||||||
$filesUpload = $request->input('files');
|
|
||||||
$answer = null;
|
|
||||||
try{
|
|
||||||
// $answer = $this->fetchesHelpMenuUserAnswerSelected->execute(['user_id' => $userId, 'question_id' => $questionId, 'order_by' => ['column' => 'id','DESC' => 1]]);
|
|
||||||
$answer = $this->fetchesHelpMenuUserAnswerSelected->execute(['user_id' => $userId, 'question_id' => $questionId]);
|
|
||||||
} catch (\Exception $exception){
|
|
||||||
$answer = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(is_null($answer))
|
|
||||||
{
|
|
||||||
$answer = new QAUserAnswerSelected;
|
|
||||||
}
|
|
||||||
$answer->user_id = $userId;
|
|
||||||
$answer->question_id = $questionId;
|
|
||||||
if ($request->has('answerObj')) {
|
|
||||||
$answer->answer_option_id = intval($request->answerObj['id']);
|
|
||||||
}
|
|
||||||
$answer->free_text_answer = $request->answer;
|
|
||||||
$answer->save();
|
|
||||||
|
|
||||||
if($filesUpload){
|
|
||||||
$result = $this->uploadDocumentForHelpMenuProcessor->execute($request, $answer);
|
|
||||||
$newData = array_map(function ($item) {
|
|
||||||
return [
|
|
||||||
'document_id' => $item->document_id,
|
|
||||||
'file_id' => $item->id,
|
|
||||||
];
|
|
||||||
}, $result);
|
|
||||||
$answer->free_text_answer = json_encode($newData);
|
|
||||||
$answer->save();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\HelpMenu\Services;
|
|
||||||
|
|
||||||
|
|
||||||
use App\Classes\General\Eloquent\AbstractFetchRecord;
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
use App\Models\QAQuestions;
|
|
||||||
|
|
||||||
class FetchesHelpMenuQuestion extends AbstractFetchRecord
|
|
||||||
{
|
|
||||||
|
|
||||||
/** @var QAQuestions */
|
|
||||||
private $repository;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* FetchesHelpMenuQuestion constructor.
|
|
||||||
* @param QAQuestions $repository
|
|
||||||
*/
|
|
||||||
public function __construct(QAQuestions $repository)
|
|
||||||
{
|
|
||||||
$this->repository = $repository;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return Builder
|
|
||||||
*/
|
|
||||||
public function getRepository(): Builder
|
|
||||||
{
|
|
||||||
return $this->repository->newQuery();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\HelpMenu\Services;
|
|
||||||
|
|
||||||
use App\Classes\General\Eloquent\AbstractFetchRecord;
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
use App\Models\QAUserAnswerSelected;
|
|
||||||
|
|
||||||
class FetchesHelpMenuUserAnswerSelected extends AbstractFetchRecord
|
|
||||||
{
|
|
||||||
|
|
||||||
/** @var QAUserAnswerSelected */
|
|
||||||
private $repository;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* FetchesHelpMenuUserAnswerSelected constructor.
|
|
||||||
* @param QAUserAnswerSelected $repository
|
|
||||||
*/
|
|
||||||
public function __construct(QAUserAnswerSelected $repository)
|
|
||||||
{
|
|
||||||
$this->repository = $repository;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return Builder
|
|
||||||
*/
|
|
||||||
public function getRepository(): Builder
|
|
||||||
{
|
|
||||||
return $this->repository->newQuery();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\HelpMenu\Services;
|
|
||||||
|
|
||||||
use App\Classes\General\Eloquent\AbstractListRecord;
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
use App\Models\QAUserAnswerSelected;
|
|
||||||
|
|
||||||
class FetchesHelpMenuUserAnswerSelectedList extends AbstractListRecord
|
|
||||||
{
|
|
||||||
|
|
||||||
/** @var QAUserAnswerSelected */
|
|
||||||
private $repository;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* FetchesHelpMenuUserAnswerSelectedList constructor.
|
|
||||||
* @param QAUserAnswerSelected $repository
|
|
||||||
*/
|
|
||||||
public function __construct(QAUserAnswerSelected $repository)
|
|
||||||
{
|
|
||||||
$this->repository = $repository;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return Builder
|
|
||||||
*/
|
|
||||||
public function getRepository(): Builder
|
|
||||||
{
|
|
||||||
return $this->repository->newQuery();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\HelpMenu\Standards\Rules;
|
|
||||||
|
|
||||||
|
|
||||||
use App\Classes\General\Abstracts\AbstractRule;
|
|
||||||
|
|
||||||
class CanFetchHelpMenuQuestionList extends AbstractRule
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
protected function authorized(): bool
|
|
||||||
{
|
|
||||||
// TODO Set Authorization rules
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param $object
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
protected function validators($object): bool
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param $object
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
protected function criteria($object): bool
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -9,7 +9,6 @@ use App\Classes\Modules\Addresses\Services\CreatesAddress;
|
|||||||
use App\Classes\Modules\Addresses\Services\FetchesAddress;
|
use App\Classes\Modules\Addresses\Services\FetchesAddress;
|
||||||
use App\Classes\Modules\Companies\Services\FetchesCompany;
|
use App\Classes\Modules\Companies\Services\FetchesCompany;
|
||||||
use App\Classes\Modules\Companies\Services\FetchesCompanyModule;
|
use App\Classes\Modules\Companies\Services\FetchesCompanyModule;
|
||||||
use App\Classes\Modules\PerfexCRM\Processors\NewLeadTaskToPerfexCRMProcessor;
|
|
||||||
use App\Classes\Modules\Orders\Processors\CreateOrderProcessor;
|
use App\Classes\Modules\Orders\Processors\CreateOrderProcessor;
|
||||||
use App\Classes\Modules\Orders\Services\GeneratesOrderNumber;
|
use App\Classes\Modules\Orders\Services\GeneratesOrderNumber;
|
||||||
use App\Classes\ValueObjects\Constants\AddressType;
|
use App\Classes\ValueObjects\Constants\AddressType;
|
||||||
@@ -24,8 +23,7 @@ use Illuminate\Http\JsonResponse;
|
|||||||
class CreateOrderLogic extends AbstractControllerLogic
|
class CreateOrderLogic extends AbstractControllerLogic
|
||||||
{
|
{
|
||||||
|
|
||||||
protected function notification(): array
|
protected function notification():array {
|
||||||
{
|
|
||||||
return [
|
return [
|
||||||
'title' => 'Created Order',
|
'title' => 'Created Order',
|
||||||
'message' => 'You have successfully created a new Order'
|
'message' => 'You have successfully created a new Order'
|
||||||
@@ -53,8 +51,6 @@ class CreateOrderLogic extends AbstractControllerLogic
|
|||||||
/** @var CanCreateAddress */
|
/** @var CanCreateAddress */
|
||||||
private $canCreateAddress;
|
private $canCreateAddress;
|
||||||
|
|
||||||
/** @var NewLeadTaskToPerfexCRMProcessor */
|
|
||||||
private $newLeadTaskToPerfexCRMProcessor;
|
|
||||||
/**
|
/**
|
||||||
* CreateOrderLogic constructor.
|
* CreateOrderLogic constructor.
|
||||||
* @param FetchesCompany $fetchesCompany
|
* @param FetchesCompany $fetchesCompany
|
||||||
@@ -62,11 +58,10 @@ class CreateOrderLogic extends AbstractControllerLogic
|
|||||||
* @param CreateOrderProcessor $createOrderProcessor
|
* @param CreateOrderProcessor $createOrderProcessor
|
||||||
* @param FetchesCompanyModule $fetchesCompanyModule
|
* @param FetchesCompanyModule $fetchesCompanyModule
|
||||||
* @param GeneratesOrderNumber $generatesOrderNumber
|
* @param GeneratesOrderNumber $generatesOrderNumber
|
||||||
* @param NewLeadTaskToPerfexCRMProcessor $newLeadTaskToPerfexCRMProcessor
|
|
||||||
* @param CreatesAddress $createsAddress
|
* @param CreatesAddress $createsAddress
|
||||||
* @param CanCreateAddress $canCreateAddress
|
* @param CanCreateAddress $canCreateAddress
|
||||||
*/
|
*/
|
||||||
public function __construct(FetchesCompany $fetchesCompany, FetchesAddress $fetchesAddress, CreateOrderProcessor $createOrderProcessor, FetchesCompanyModule $fetchesCompanyModule, GeneratesOrderNumber $generatesOrderNumber, CreatesAddress $createsAddress, CanCreateAddress $canCreateAddress, NewLeadTaskToPerfexCRMProcessor $newLeadTaskToPerfexCRMProcessor)
|
public function __construct(FetchesCompany $fetchesCompany, FetchesAddress $fetchesAddress, CreateOrderProcessor $createOrderProcessor, FetchesCompanyModule $fetchesCompanyModule, GeneratesOrderNumber $generatesOrderNumber, CreatesAddress $createsAddress, CanCreateAddress $canCreateAddress)
|
||||||
{
|
{
|
||||||
$this->fetchesCompany = $fetchesCompany;
|
$this->fetchesCompany = $fetchesCompany;
|
||||||
$this->fetchesAddress = $fetchesAddress;
|
$this->fetchesAddress = $fetchesAddress;
|
||||||
@@ -75,45 +70,43 @@ class CreateOrderLogic extends AbstractControllerLogic
|
|||||||
$this->generatesOrderNumber = $generatesOrderNumber;
|
$this->generatesOrderNumber = $generatesOrderNumber;
|
||||||
$this->createsAddress = $createsAddress;
|
$this->createsAddress = $createsAddress;
|
||||||
$this->canCreateAddress = $canCreateAddress;
|
$this->canCreateAddress = $canCreateAddress;
|
||||||
$this->newLeadTaskToPerfexCRMProcessor = $newLeadTaskToPerfexCRMProcessor;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function logic(Request $request): JsonResponse
|
public function logic(Request $request) : JsonResponse {
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$company = $this->fetchesCompany->execute(['id' => $request->input('company_id')]);
|
$company = $this->fetchesCompany->execute(['id' => $request->input('company_id')]);
|
||||||
|
|
||||||
$address = $this->fetchesAddress->execute(['id' => $request->input('address_id')]);
|
$address = $this->fetchesAddress->execute(['id' => $request->input('address_id')]);
|
||||||
|
|
||||||
// todo-new: fix this
|
$originWarehouse = $this->fetchesCompanyModule->execute(['id' => $request->input('warehouse_id')]);
|
||||||
// if select warehouse foshan
|
|
||||||
if ($request->input('warehouse_id') === 'foshan') {
|
|
||||||
// 13 - sabah, 14 - sarawak
|
|
||||||
if (in_array($address->state->id, [13, 14])) {
|
|
||||||
$originWarehouse = $this->fetchesCompanyModule->execute(['reference' => WarehouseReferences::YD_FS_WEST_MALAYSIA]);
|
|
||||||
} else {
|
|
||||||
$originWarehouse = $this->fetchesCompanyModule->execute(['reference' => WarehouseReferences::YD_FS_WEST_MALAYSIA]);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$originWarehouse = $this->fetchesCompanyModule->execute(['id' => $request->input('warehouse_id')]);
|
|
||||||
|
|
||||||
if (!in_array($company->companyModules()->importers()->first()->id, WarehouseReferences::YD_EXEMPT_LIST)) {
|
if ($request->input('billing_address_id')) {
|
||||||
$originWarehouse = $this->fetchesCompanyModule->execute(['reference' => $originWarehouse->reference === WarehouseReferences::VT_GUANG_ZHOU ? WarehouseReferences::YD_GUANG_ZHOU : WarehouseReferences::YD_YIWU]);
|
$companyModule = $company->companyModules->first();
|
||||||
|
$billingAddressInputed = $this->fetchesAddress->execute(['id' => $request->input('billing_address_id')]);
|
||||||
|
|
||||||
|
if ($billingAddressInputed->type !== AddressType::BILLING || $billingAddressInputed->id !== $companyModule->addresses->where('type', AddressType::BILLING)->first()->id) {
|
||||||
|
// delete all current billing address
|
||||||
|
Address::where('owner_type', CompanyModule::class)->where('owner_id', $request->input('company_module_id'))->where('type', AddressType::BILLING)->delete();
|
||||||
|
|
||||||
|
// create new billing addrress
|
||||||
|
$billingAddress = new AddressObject($billingAddressInputed->street_one, $billingAddressInputed->street_two, $billingAddressInputed->country_id, $billingAddressInputed->state_id, $billingAddressInputed->district_id, $billingAddressInputed->postcode, AddressType::BILLING, ApprovalStatus::APPROVED, $billingAddressInputed->reference);
|
||||||
|
$this->canCreateAddress->passes($billingAddress);
|
||||||
|
$this->createsAddress->execute($companyModule, $billingAddress);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!in_array($company->companyModules()->importers()->first()->id, WarehouseReferences::YD_EXEMPT_LIST)){
|
||||||
|
$originWarehouse = $this->fetchesCompanyModule->execute(['reference' => $originWarehouse->reference === WarehouseReferences::VT_GUANG_ZHOU ? WarehouseReferences::YD_GUANG_ZHOU : WarehouseReferences::YD_YIWU]);
|
||||||
|
}
|
||||||
|
|
||||||
if($originWarehouse->reference === WarehouseReferences::YD_YIWU && in_array($address->state_id, [5, 13, 14])) {
|
if($originWarehouse->reference === WarehouseReferences::YD_YIWU && in_array($address->state_id, [5, 13, 14])) {
|
||||||
throw new RequestValidationException('Our Yiwu warehouse is unable to ship goods to Sabah & Sarawak at the moment. you can select our Guangzhou warehouse as an alternative.');
|
throw new RequestValidationException('Our Yiwu warehouse is unable to ship goods to Sabah & Sarawak at the moment. you can select our Guangzhou warehouse as an alternative.');
|
||||||
}
|
}
|
||||||
|
|
||||||
$order = $this->createOrderProcessor->execute($company, $originWarehouse, $address, $this->generatesOrderNumber->execute());
|
$order = $this->createOrderProcessor->execute($company, $originWarehouse, $address, $this->generatesOrderNumber->execute());
|
||||||
|
|
||||||
if(config('perfexcrm.is_enabled') == 'true'){
|
|
||||||
$this->newLeadTaskToPerfexCRMProcessor->execute($company);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->resourceResponse(new OrderResource($order));
|
return $this->resourceResponse(new OrderResource($order));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,60 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Orders\ControllersLogic;
|
|
||||||
|
|
||||||
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
||||||
use App\Classes\Modules\Orders\Services\FetchesOrder;
|
|
||||||
use App\Classes\Modules\Orders\Standards\Rules\CanFetchOrder;
|
|
||||||
use App\Http\Resources\OrderV2Resource;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
|
|
||||||
class FetchOrderV2Logic extends AbstractControllerLogic
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function notification():array {
|
|
||||||
return [
|
|
||||||
'title' => 'Retrieved Order',
|
|
||||||
'message' => 'You have successfully retrieved an order'
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @var CanFetchOrder */
|
|
||||||
private $canFetchOrder;
|
|
||||||
|
|
||||||
/** @var FetchesOrder */
|
|
||||||
private $fetchesOrder;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* FetchOrderLogic constructor.
|
|
||||||
* @param CanFetchOrder $canFetchOrder
|
|
||||||
* @param FetchesOrder $fetchesOrder
|
|
||||||
*/
|
|
||||||
public function __construct(CanFetchOrder $canFetchOrder, FetchesOrder $fetchesOrder)
|
|
||||||
{
|
|
||||||
$this->canFetchOrder = $canFetchOrder;
|
|
||||||
$this->fetchesOrder = $fetchesOrder;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @return JsonResponse
|
|
||||||
* @throws \App\Classes\Exceptions\AccessForbiddenException
|
|
||||||
* @throws \App\Classes\Exceptions\RequestValidationException
|
|
||||||
*/
|
|
||||||
public function logic(Request $request) : JsonResponse
|
|
||||||
{
|
|
||||||
|
|
||||||
$this->canFetchOrder->passes();
|
|
||||||
|
|
||||||
$query = $this->fetchesOrder->execute(['reference' => $request->route('id'), 'with_packing_lists' => true]);
|
|
||||||
|
|
||||||
return $this->resourceResponse(new OrderV2Resource($query));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Orders\ControllersLogic;
|
|
||||||
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
||||||
use App\Classes\Modules\Orders\Services\ListsOrders;
|
|
||||||
use App\Classes\Modules\Orders\Standards\Rules\CanListOrders;
|
|
||||||
use App\Classes\ValueObjects\Constants\OrderType;
|
|
||||||
use App\Http\Resources\OrderV2Resource;
|
|
||||||
use ErrorException;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
|
|
||||||
class ListOrdersV2Logic extends AbstractControllerLogic
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function notification():array {
|
|
||||||
return [
|
|
||||||
'title' => 'Retrieved Orders',
|
|
||||||
'message' => 'You have successfully retrieved a list of Orders'
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @var CanListOrders */
|
|
||||||
private $canListOrders;
|
|
||||||
|
|
||||||
/** @var ListsOrders */
|
|
||||||
private $listsOrders;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ListOrdersLogic constructor.
|
|
||||||
* @param CanListOrders $canListOrders
|
|
||||||
* @param ListsOrders $listsOrders
|
|
||||||
*/
|
|
||||||
public function __construct(CanListOrders $canListOrders, ListsOrders $listsOrders)
|
|
||||||
{
|
|
||||||
$this->canListOrders = $canListOrders;
|
|
||||||
$this->listsOrders = $listsOrders;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function logic(Request $request) : JsonResponse
|
|
||||||
{
|
|
||||||
$this->canListOrders->passes();
|
|
||||||
|
|
||||||
$query = $this->listsOrders->execute(array_merge($this->listsOrders->deserializeFilters($request->input('filters')), ['with_parcels' => true, 'type_in' => [OrderType::SHARED_CONTAINER, OrderType::DEDICATED_CONTAINER]]));
|
|
||||||
|
|
||||||
return $this->collectionResponse(OrderV2Resource::collection($query));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
-81
@@ -1,81 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\PackingLists\ControllersLogic;
|
|
||||||
|
|
||||||
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
||||||
use App\Classes\Modules\PackingLists\Services\DeletesPackingList;
|
|
||||||
use App\Classes\Modules\PackingLists\Services\FetchesPackingList;
|
|
||||||
use App\Classes\Modules\PackingLists\Services\Packages\FetchesPackage;
|
|
||||||
use App\Classes\Modules\PackingLists\Standards\Rules\CanDeletePackingList;
|
|
||||||
use App\Classes\ValueObjects\Constants\PackingListType;
|
|
||||||
use App\Models\PackingList;
|
|
||||||
use ErrorException;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
|
|
||||||
class DeletePackingListByPackageIdLogic extends AbstractControllerLogic
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function notification():array {
|
|
||||||
return [
|
|
||||||
'title' => 'Deleted PackingList',
|
|
||||||
'message' => 'You have successfully deleted a PackingList'
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** @var CanDeletePackingList */
|
|
||||||
private $canDeletePackingList;
|
|
||||||
|
|
||||||
/** @var DeletesPackingList */
|
|
||||||
private $deletesPackingList;
|
|
||||||
|
|
||||||
/** @var FetchesPackingList */
|
|
||||||
private $fetchesPackingList;
|
|
||||||
|
|
||||||
/** @var FetchesPackage */
|
|
||||||
private $fetchesPackage;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* DeletePackingListByPackageIdLogic constructor.
|
|
||||||
* @param CanDeletePackingList $canDeletePackingList
|
|
||||||
* @param DeletesPackingList $deletesPackingList
|
|
||||||
* @param FetchesPackingList $fetchesPackingList
|
|
||||||
* @param FetchesPackage $fetchesPackage
|
|
||||||
*/
|
|
||||||
public function __construct(CanDeletePackingList $canDeletePackingList, DeletesPackingList $deletesPackingList, FetchesPackingList $fetchesPackingList, FetchesPackage $fetchesPackage)
|
|
||||||
{
|
|
||||||
$this->canDeletePackingList = $canDeletePackingList;
|
|
||||||
$this->deletesPackingList = $deletesPackingList;
|
|
||||||
$this->fetchesPackingList = $fetchesPackingList;
|
|
||||||
$this->fetchesPackage = $fetchesPackage;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @return JsonResponse
|
|
||||||
* @throws ErrorException
|
|
||||||
*/
|
|
||||||
public function logic(Request $request) : JsonResponse
|
|
||||||
{
|
|
||||||
$this->canDeletePackingList->passes();
|
|
||||||
|
|
||||||
$package = $this->fetchesPackage->execute(['id' => $request->route('id')]);
|
|
||||||
|
|
||||||
$packingList = $package->packingList;
|
|
||||||
|
|
||||||
$packingList = PackingList::where('reference', $packingList->reference)->get();
|
|
||||||
|
|
||||||
$childPackingList = PackingList::where('owner_type', PackingList::class)->whereIn('owner_id', $packingList->pluck('id'))->get();
|
|
||||||
|
|
||||||
$packingList->each->delete();
|
|
||||||
|
|
||||||
$childPackingList->each->delete();
|
|
||||||
|
|
||||||
return $this->response([]);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -4,7 +4,6 @@ namespace App\Classes\Modules\PackingLists\Processors;
|
|||||||
|
|
||||||
|
|
||||||
use App\Classes\General\Interfaces\Packable;
|
use App\Classes\General\Interfaces\Packable;
|
||||||
use App\Classes\Modules\PerfexCRM\Processors\PackingListToPerfexCRMProcessor;
|
|
||||||
use App\Classes\Modules\PackingLists\DataTransferObjects\PackingListObject;
|
use App\Classes\Modules\PackingLists\DataTransferObjects\PackingListObject;
|
||||||
use App\Classes\Modules\PackingLists\Services\CreatesPackingList;
|
use App\Classes\Modules\PackingLists\Services\CreatesPackingList;
|
||||||
use App\Classes\Modules\PackingLists\Standards\Rules\CanCreatePackingList;
|
use App\Classes\Modules\PackingLists\Standards\Rules\CanCreatePackingList;
|
||||||
@@ -26,20 +25,16 @@ class CreatePackingListProcessor
|
|||||||
/** @var CreatesPackingList */
|
/** @var CreatesPackingList */
|
||||||
private $createsPackingList;
|
private $createsPackingList;
|
||||||
|
|
||||||
/** @var PackingListToPerfexCRMProcessor */
|
|
||||||
private $packingListToPerfexCRMProcessor;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CreatePackingListProcessor constructor.
|
* CreatePackingListProcessor constructor.
|
||||||
* @param CanCreatePackingList $canCreatePackingList
|
* @param CanCreatePackingList $canCreatePackingList
|
||||||
* @param CreatesPackingList $createsPackingList
|
* @param CreatesPackingList $createsPackingList
|
||||||
* @param PackingListToPerfexCRMProcessor $packingListToPerfexCRMProcessor
|
|
||||||
*/
|
*/
|
||||||
public function __construct(CanCreatePackingList $canCreatePackingList, CreatesPackingList $createsPackingList, PackingListToPerfexCRMProcessor $packingListToPerfexCRMProcessor)
|
public function __construct(CanCreatePackingList $canCreatePackingList, CreatesPackingList $createsPackingList)
|
||||||
{
|
{
|
||||||
$this->canCreatePackingList = $canCreatePackingList;
|
$this->canCreatePackingList = $canCreatePackingList;
|
||||||
$this->createsPackingList = $createsPackingList;
|
$this->createsPackingList = $createsPackingList;
|
||||||
$this->packingListToPerfexCRMProcessor = $packingListToPerfexCRMProcessor;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -64,10 +59,6 @@ class CreatePackingListProcessor
|
|||||||
$object = new PackingListObject($object->getReference().'_01', $appointee_id, $type, ApprovalStatus::PENDING_SUBMISSION);
|
$object = new PackingListObject($object->getReference().'_01', $appointee_id, $type, ApprovalStatus::PENDING_SUBMISSION);
|
||||||
$this->createsPackingList->execute($object, $packingList);
|
$this->createsPackingList->execute($object, $packingList);
|
||||||
|
|
||||||
if(config('perfexcrm.is_enabled') == 'true'){
|
|
||||||
$this->packingListToPerfexCRMProcessor->execute($packingList);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $packingList;
|
return $packingList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,17 +19,13 @@ class CreateLeadPerfexCRMObject implements DataTransferObject
|
|||||||
/** @var string */
|
/** @var string */
|
||||||
private $companyName;
|
private $companyName;
|
||||||
|
|
||||||
/** @var string */
|
public function __construct(string $name, string $email, string $phone, string $companyName)
|
||||||
private $companyReference;
|
|
||||||
|
|
||||||
public function __construct(string $name, string $email, string $phone, string $companyName, string $companyReference)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
$this->name = $name;
|
$this->name = $name;
|
||||||
$this->email = $email;
|
$this->email = $email;
|
||||||
$this->phone = $phone;
|
$this->phone = $phone;
|
||||||
$this->companyName = $companyName;
|
$this->companyName = $companyName;
|
||||||
$this->companyReference = $companyReference;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -64,11 +60,4 @@ class CreateLeadPerfexCRMObject implements DataTransferObject
|
|||||||
return $this->companyName;
|
return $this->companyName;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getCompanyReference(): string
|
|
||||||
{
|
|
||||||
return $this->companyReference;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,16 +33,8 @@ class CreateTaskPerfexCRMObject implements DataTransferObject
|
|||||||
/** @var string */
|
/** @var string */
|
||||||
private $status;
|
private $status;
|
||||||
|
|
||||||
/** @var string */
|
|
||||||
private $department;
|
|
||||||
|
|
||||||
/** @var string */
|
public function __construct(string $email, string $name, string $description, string $leadId, string $projectId, string $milestoneId, string $reference, string $onTaskCompletion, string $status)
|
||||||
private $priority;
|
|
||||||
|
|
||||||
/** @var string */
|
|
||||||
private $duedate;
|
|
||||||
|
|
||||||
public function __construct(string $email, string $name, string $description, string $leadId, string $projectId, string $milestoneId, string $reference, string $onTaskCompletion, string $status, string $department, string $priority, string $duedate)
|
|
||||||
{
|
{
|
||||||
$this->email = $email;
|
$this->email = $email;
|
||||||
$this->name = $name;
|
$this->name = $name;
|
||||||
@@ -53,9 +45,6 @@ class CreateTaskPerfexCRMObject implements DataTransferObject
|
|||||||
$this->reference = $reference;
|
$this->reference = $reference;
|
||||||
$this->onTaskCompletion = $onTaskCompletion;
|
$this->onTaskCompletion = $onTaskCompletion;
|
||||||
$this->status = $status;
|
$this->status = $status;
|
||||||
$this->department = $department;
|
|
||||||
$this->priority = $priority;
|
|
||||||
$this->duedate = $duedate;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -135,27 +124,4 @@ class CreateTaskPerfexCRMObject implements DataTransferObject
|
|||||||
return $this->status;
|
return $this->status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getDepartment(): string
|
|
||||||
{
|
|
||||||
return $this->department;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getPriority(): string
|
|
||||||
{
|
|
||||||
return $this->priority;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getDuedate(): string
|
|
||||||
{
|
|
||||||
return $this->duedate;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,9 +25,6 @@ class InitialPerfexCRMObject implements DataTransferObject
|
|||||||
/** @var string */
|
/** @var string */
|
||||||
private $projectName;
|
private $projectName;
|
||||||
|
|
||||||
/** @var int */
|
|
||||||
private $projectStatus;
|
|
||||||
|
|
||||||
/** @var array */
|
/** @var array */
|
||||||
private $milestoneNames;
|
private $milestoneNames;
|
||||||
|
|
||||||
@@ -35,7 +32,7 @@ class InitialPerfexCRMObject implements DataTransferObject
|
|||||||
private $taskNames;
|
private $taskNames;
|
||||||
|
|
||||||
|
|
||||||
public function __construct(string $companyName, string $companyReference, string $contactName, string $contactEmail, string $bookingMarking, string $projectName, int $projectStatus, array $milestoneNames, array $taskNames)
|
public function __construct(string $companyName, string $companyReference, string $contactName, string $contactEmail, string $bookingMarking, string $projectName, array $milestoneNames, array $taskNames)
|
||||||
{
|
{
|
||||||
|
|
||||||
$this->companyName = $companyName;
|
$this->companyName = $companyName;
|
||||||
@@ -44,7 +41,6 @@ class InitialPerfexCRMObject implements DataTransferObject
|
|||||||
$this->contactEmail = $contactEmail;
|
$this->contactEmail = $contactEmail;
|
||||||
$this->bookingMarking = $bookingMarking;
|
$this->bookingMarking = $bookingMarking;
|
||||||
$this->projectName = $projectName;
|
$this->projectName = $projectName;
|
||||||
$this->projectStatus = $projectStatus;
|
|
||||||
$this->milestoneNames = $milestoneNames;
|
$this->milestoneNames = $milestoneNames;
|
||||||
$this->taskNames = $taskNames;
|
$this->taskNames = $taskNames;
|
||||||
}
|
}
|
||||||
@@ -97,14 +93,6 @@ class InitialPerfexCRMObject implements DataTransferObject
|
|||||||
return $this->projectName;
|
return $this->projectName;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getProjectStatus(): int
|
|
||||||
{
|
|
||||||
return $this->projectStatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ use App\Classes\General\Interfaces\DataTransferObject;
|
|||||||
|
|
||||||
class InvoicePerfexCRMObject implements DataTransferObject
|
class InvoicePerfexCRMObject implements DataTransferObject
|
||||||
{
|
{
|
||||||
/** @var string */
|
/** @var int */
|
||||||
private $clientId;
|
private $clientId;
|
||||||
|
|
||||||
/** @var string */
|
/** @var string */
|
||||||
@@ -56,9 +56,9 @@ class InvoicePerfexCRMObject implements DataTransferObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string
|
* @return int
|
||||||
*/
|
*/
|
||||||
public function getClientId(): string
|
public function getClientId(): int
|
||||||
{
|
{
|
||||||
return $this->clientId;
|
return $this->clientId;
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -14,7 +14,7 @@ class InvoiceSingleItemPerfexCRMObject implements DataTransferObject
|
|||||||
/** @var string */
|
/** @var string */
|
||||||
public $longDescription;
|
public $longDescription;
|
||||||
|
|
||||||
/** @var float */
|
/** @var int */
|
||||||
public $qty;
|
public $qty;
|
||||||
|
|
||||||
/** @var float */
|
/** @var float */
|
||||||
@@ -26,7 +26,7 @@ class InvoiceSingleItemPerfexCRMObject implements DataTransferObject
|
|||||||
/** @var string */
|
/** @var string */
|
||||||
public $unit;
|
public $unit;
|
||||||
|
|
||||||
public function __construct(string $description, string $longDescription, float $qty, float $rate, int $order, string $unit)
|
public function __construct(string $description, string $longDescription, int $qty, float $rate, int $order, string $unit)
|
||||||
{
|
{
|
||||||
$this->description = $description;
|
$this->description = $description;
|
||||||
$this->longDescription = $longDescription;
|
$this->longDescription = $longDescription;
|
||||||
@@ -53,9 +53,9 @@ class InvoiceSingleItemPerfexCRMObject implements DataTransferObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return float
|
* @return int
|
||||||
*/
|
*/
|
||||||
public function getQty(): float
|
public function getQty(): int
|
||||||
{
|
{
|
||||||
return $this->qty;
|
return $this->qty;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,62 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\PerfexCRM\DataTransferObjects;
|
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Classes\General\Interfaces\DataTransferObject;
|
|
||||||
use App\Models\Transaction;
|
|
||||||
|
|
||||||
class UpdatePerfexCRMInvoiceObject implements DataTransferObject
|
|
||||||
{
|
|
||||||
/** @var string */
|
|
||||||
private $email;
|
|
||||||
|
|
||||||
/** @var Transaction */
|
|
||||||
private $transaction;
|
|
||||||
|
|
||||||
/** @var bool */
|
|
||||||
private $isPaid;
|
|
||||||
|
|
||||||
/** @var string */
|
|
||||||
private $projectId;
|
|
||||||
|
|
||||||
public function __construct(string $email, string $projectId, Transaction $transaction, bool $isPaid)
|
|
||||||
{
|
|
||||||
$this->email = $email;
|
|
||||||
$this->transaction = $transaction;
|
|
||||||
$this->isPaid = $isPaid;
|
|
||||||
$this->projectId = $projectId;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getEmail(): string
|
|
||||||
{
|
|
||||||
return $this->email;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getProjectId(): string
|
|
||||||
{
|
|
||||||
return $this->projectId;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return Transaction
|
|
||||||
*/
|
|
||||||
public function getTransaction(): Transaction
|
|
||||||
{
|
|
||||||
return $this->transaction;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function getIsPaid(): bool
|
|
||||||
{
|
|
||||||
return $this->isPaid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -13,9 +13,6 @@ class UpdatePerfexCRMObject implements DataTransferObject
|
|||||||
/** @var string */
|
/** @var string */
|
||||||
private $companyReference;
|
private $companyReference;
|
||||||
|
|
||||||
/** @var string */
|
|
||||||
private $contactName;
|
|
||||||
|
|
||||||
/** @var string */
|
/** @var string */
|
||||||
private $contactEmail;
|
private $contactEmail;
|
||||||
|
|
||||||
@@ -25,28 +22,23 @@ class UpdatePerfexCRMObject implements DataTransferObject
|
|||||||
/** @var string */
|
/** @var string */
|
||||||
private $projectName;
|
private $projectName;
|
||||||
|
|
||||||
/** @var int */
|
/** @var string */
|
||||||
private $projectStatus;
|
private $milestoneName;
|
||||||
|
|
||||||
/** @var array */
|
/** @var string */
|
||||||
private $milestoneNames;
|
private $taskName;
|
||||||
|
|
||||||
/** @var array */
|
|
||||||
private $tasks;
|
|
||||||
|
|
||||||
|
|
||||||
public function __construct(string $companyName, string $companyReference, string $contactName, string $contactEmail, string $bookingMarking, string $projectName, int $projectStatus, array $milestoneNames, array $tasks)
|
public function __construct(string $companyName, string $companyReference, string $contactEmail, string $bookingMarking, string $projectName, string $milestoneName, string $taskName)
|
||||||
{
|
{
|
||||||
|
|
||||||
$this->companyName = $companyName;
|
$this->companyName = $companyName;
|
||||||
$this->companyReference = $companyReference;
|
$this->companyReference = $companyReference;
|
||||||
$this->contactName = $contactName;
|
|
||||||
$this->contactEmail = $contactEmail;
|
$this->contactEmail = $contactEmail;
|
||||||
$this->bookingMarking = $bookingMarking;
|
$this->bookingMarking = $bookingMarking;
|
||||||
$this->projectName = $projectName;
|
$this->projectName = $projectName;
|
||||||
$this->projectStatus = $projectStatus;
|
$this->milestoneName = $milestoneName;
|
||||||
$this->milestoneNames = $milestoneNames;
|
$this->taskName = $taskName;
|
||||||
$this->tasks = $tasks;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -65,14 +57,6 @@ class UpdatePerfexCRMObject implements DataTransferObject
|
|||||||
return $this->companyReference;
|
return $this->companyReference;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getContactName(): string
|
|
||||||
{
|
|
||||||
return $this->contactName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
@@ -98,31 +82,19 @@ class UpdatePerfexCRMObject implements DataTransferObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return int
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function getProjectStatus(): int
|
public function getMilestoneName(): string
|
||||||
{
|
{
|
||||||
return $this->projectStatus;
|
return $this->milestoneName;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return array
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function getMilestoneNames(): array
|
public function getTaskName(): string
|
||||||
{
|
{
|
||||||
return $this->milestoneNames;
|
return $this->taskName;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public function getTasks(): array
|
|
||||||
{
|
|
||||||
return $this->tasks;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setTasks($tasks)
|
|
||||||
{
|
|
||||||
$this->tasks = $tasks;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,19 +2,14 @@
|
|||||||
|
|
||||||
namespace App\Classes\Modules\PerfexCRM\Processors;
|
namespace App\Classes\Modules\PerfexCRM\Processors;
|
||||||
|
|
||||||
use App\Models\Transaction;
|
// use App\Classes\Modules\PerfexCRM\DataTransferObjects\ContactObject;
|
||||||
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMInvoice;
|
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMInvoice;
|
||||||
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMInvoicePayment;
|
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMInvoicePayment;
|
||||||
use App\Classes\Modules\PerfexCRM\Services\ConvertsPerfexCRMLeadToCustomer;
|
use App\Classes\Modules\PerfexCRM\Services\ConvertsPerfexCRMLeadToCustomer;
|
||||||
use App\Classes\Modules\PerfexCRM\Services\FetchesPerfexCRMProject;
|
|
||||||
use App\Classes\Modules\PerfexCRM\DataTransferObjects\InvoicePerfexCRMObject;
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\InvoicePerfexCRMObject;
|
||||||
use App\Classes\Modules\PerfexCRM\DataTransferObjects\InvoicePaymentPerfexCRMObject;
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\InvoicePaymentPerfexCRMObject;
|
||||||
use App\Classes\Modules\PerfexCRM\DataTransferObjects\InvoiceSingleItemPerfexCRMObject;
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\InvoiceSingleItemPerfexCRMObject;
|
||||||
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMCustomerProject;
|
|
||||||
use App\Classes\ValueObjects\Constants\PerfexCRMProjectStatus;
|
|
||||||
use App\Models\PackingList;
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
class CreatePerfexCRMInvoiceProcessor
|
class CreatePerfexCRMInvoiceProcessor
|
||||||
{
|
{
|
||||||
@@ -28,116 +23,84 @@ class CreatePerfexCRMInvoiceProcessor
|
|||||||
/** @var ConvertsPerfexCRMLeadToCustomer */
|
/** @var ConvertsPerfexCRMLeadToCustomer */
|
||||||
private $convertsPerfexCRMLeadToCustomer;
|
private $convertsPerfexCRMLeadToCustomer;
|
||||||
|
|
||||||
/** @var FetchesPerfexCRMProject */
|
|
||||||
private $fetchesPerfexCRMProject;
|
|
||||||
|
|
||||||
/** @var CreatesPerfexCRMCustomerProject */
|
|
||||||
private $createsPerfexCRMCustomerProject;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CreatePerfexCRMInvoiceProcessor constructor.
|
* CreatePerfexCRMInvoiceProcessor constructor.
|
||||||
* @param CreatesPerfexCRMInvoice $createsPerfexCRMInvoice
|
* @param CreatesPerfexCRMInvoice $createsPerfexCRMInvoice
|
||||||
*/
|
*/
|
||||||
public function __construct(CreatesPerfexCRMInvoice $createsPerfexCRMInvoice,
|
public function __construct(CreatesPerfexCRMInvoice $createsPerfexCRMInvoice,
|
||||||
CreatesPerfexCRMInvoicePayment $createsPerfexCRMInvoicePayment,
|
CreatesPerfexCRMInvoicePayment $createsPerfexCRMInvoicePayment,
|
||||||
ConvertsPerfexCRMLeadToCustomer $convertsPerfexCRMLeadToCustomer,
|
ConvertsPerfexCRMLeadToCustomer $convertsPerfexCRMLeadToCustomer)
|
||||||
FetchesPerfexCRMProject $fetchesPerfexCRMProject,
|
|
||||||
CreatesPerfexCRMCustomerProject $createsPerfexCRMCustomerProject)
|
|
||||||
{
|
{
|
||||||
$this->createsPerfexCRMInvoice = $createsPerfexCRMInvoice;
|
$this->createsPerfexCRMInvoice = $createsPerfexCRMInvoice;
|
||||||
$this->createsPerfexCRMInvoicePayment = $createsPerfexCRMInvoicePayment;
|
$this->createsPerfexCRMInvoicePayment = $createsPerfexCRMInvoicePayment;
|
||||||
$this->convertsPerfexCRMLeadToCustomer = $convertsPerfexCRMLeadToCustomer;
|
$this->convertsPerfexCRMLeadToCustomer = $convertsPerfexCRMLeadToCustomer;
|
||||||
$this->fetchesPerfexCRMProject = $fetchesPerfexCRMProject;
|
|
||||||
$this->createsPerfexCRMCustomerProject = $createsPerfexCRMCustomerProject;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Transaction $transaction
|
* @param $transaction
|
||||||
* @param bool $isPaid, default: false
|
* @param $purchaseOrder
|
||||||
|
* @param $supplier
|
||||||
* @return null|object
|
* @return null|object
|
||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
*/
|
*/
|
||||||
public function execute(Transaction $transaction, bool $isPaid = false) {
|
public function execute($transaction, $purchaseOrder, $supplier) {
|
||||||
$clientId = "";
|
$clientId = "";
|
||||||
$number = $transaction->bill_no;
|
$number = $transaction->bill_no;
|
||||||
$prefix = "INV-";
|
$prefix = "INV-";
|
||||||
|
|
||||||
//This will remove the prefix if prefix already exist in the string
|
|
||||||
if (substr($number, 0, strlen($prefix)) == $prefix) {
|
if (substr($number, 0, strlen($prefix)) == $prefix) {
|
||||||
$number = substr($number, strlen($prefix));
|
$number = substr($number, strlen($prefix));
|
||||||
}
|
}
|
||||||
|
|
||||||
$date = Carbon::parse($transaction->created_at)->format('Y-m-d');
|
$date = Carbon::parse($transaction->booking->created_at)->format('Y-m-d');
|
||||||
$dueDate = Carbon::parse($transaction->created_at)->addDays(6)->startOfDay()->format('Y-m-d');
|
$dueDate = Carbon::parse($transaction->booking->created_at)->format('Y-m-d');
|
||||||
$currency = 1;
|
$currency = 1; //cief TODO: To look into Malaysia and Chinese currency
|
||||||
$subTotal = 0.00;
|
$subTotal = 0.00;
|
||||||
$total = 0.00;
|
$total = 0.00;
|
||||||
|
|
||||||
$companyModule = $transaction->owner->owner->companyModule;
|
|
||||||
$billingStreet = "";
|
$billingStreet = "";
|
||||||
$addresses = $companyModule
|
$addresses = $supplier->addresses()->where('billing', '=', true)->first();
|
||||||
->addresses()
|
|
||||||
->where('status', '=', \App\Classes\ValueObjects\Constants\ApprovalStatus::APPROVED)
|
|
||||||
->where('type', '=', \App\Classes\ValueObjects\Constants\AddressType::BILLING)->first();
|
|
||||||
|
|
||||||
if ($addresses !== null) {
|
$billingStreet = $billingStreet.$addresses->street_one;
|
||||||
$billingStreet = $billingStreet.$addresses->street_one;
|
$billingStreet = $billingStreet.$addresses->street_two.',';
|
||||||
$billingStreet = $billingStreet.$addresses->street_two.',';
|
$billingStreet = $billingStreet.$addresses->district()->first()->name.',';
|
||||||
$billingStreet = $billingStreet.$addresses->district()->first()->name.',';
|
$billingStreet = $billingStreet.$addresses->postcode;
|
||||||
$billingStreet = $billingStreet.$addresses->postcode;
|
$billingStreet = $billingStreet.$addresses->state()->first()->name.',';
|
||||||
$billingStreet = $billingStreet.$addresses->state()->first()->name.',';
|
$billingStreet = $billingStreet.$addresses->country()->first()->name;
|
||||||
$billingStreet = $billingStreet.$addresses->country()->first()->name;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$billingStreet = "[Pending Billing Details by user]";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
$projectId = "";
|
||||||
$allowedPaymentModes = [];
|
$allowedPaymentModes = [];
|
||||||
$invoiceItems = [];
|
$invoiceItems = [];
|
||||||
|
|
||||||
$employee = $companyModule->employees()->first();
|
$email = $supplier->employees()->first()->email;
|
||||||
$email = $employee->email;
|
$email = 'dillon37@yahoo.com'; //cief TODO: To be updated to user actual email address
|
||||||
|
|
||||||
$result = $this->convertsPerfexCRMLeadToCustomer->execute($email);
|
$result = $this->convertsPerfexCRMLeadToCustomer->execute($email);
|
||||||
if(isset($result->payload)){
|
if(isset($result->payload)){
|
||||||
$clientId = $result->payload['client_id'];
|
$clientId = $result->payload['client_id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
//get project
|
|
||||||
$projectId = ""; //Project only exist in CRM if the customer already made payment
|
|
||||||
$projectName = "";
|
|
||||||
if($isPaid){
|
|
||||||
if($transaction->owner instanceof PackingList){
|
|
||||||
$orderReference = $transaction->owner->owner->reference;
|
|
||||||
$packingListReference = $transaction->owner->reference;
|
|
||||||
$projectName = 'IZYIM | X1 Shipping | '.$orderReference.' | '.$packingListReference;
|
|
||||||
$result = $this->fetchesPerfexCRMProject->execute($projectName, $clientId);
|
|
||||||
if(isset($result->payload)){
|
|
||||||
$project = $result->payload[0];
|
|
||||||
$projectId = $project['id'];
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$result = $this->createsPerfexCRMCustomerProject->execute($projectName, PerfexCRMProjectStatus::NOT_STARTED, $clientId);
|
|
||||||
if(isset($result->payload)){ //Here means project creation successful
|
|
||||||
$projectId = $result->payload['project_id'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if($projectId == ""){
|
|
||||||
Log::error(json_encode('CreatePerfexCRMInvoiceProcessor debug: '.$projectName));
|
|
||||||
Log::error(json_encode($transaction->owner));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//newitems
|
//newitems
|
||||||
foreach ($transaction->transactionDetails as $key => $transaction_detail){
|
foreach ($purchaseOrder->transactionDetails as $key => $transaction_detail){
|
||||||
$order = $key + 1;
|
$order = $key + 1;
|
||||||
$description = $transaction_detail->name;
|
$stockCode = $transaction_detail->product_code;
|
||||||
|
$description = $transaction_detail->product_name;
|
||||||
$quantity = $transaction_detail->quantity;
|
$quantity = $transaction_detail->quantity;
|
||||||
$unitPrice = $transaction_detail->price;
|
$unitPrice = 0.00;
|
||||||
|
if($transaction->booking()->first()->fix_currency_id !== 1)
|
||||||
|
$unitPrice = (1/$transaction->currency_rate) * $transaction_detail->price;
|
||||||
|
else
|
||||||
|
$unitPrice = $transaction_detail->price;
|
||||||
|
|
||||||
$subTotal = $subTotal + $transaction_detail->amount;
|
//$totalAmount = 0.00;
|
||||||
|
if($transaction->booking()->first()->fix_currency_id !== 1){
|
||||||
|
|
||||||
|
//$totalAmount = (float)number_format( (1/$transaction->currency_rate) * $transaction_detail->price, 2,'.','')*$transaction_detail->quantity;
|
||||||
|
$subTotal += (1/$transaction->currency_rate) * $transaction_detail->price * $transaction_detail->quantity;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//$totalAmount = (float)number_format($transaction_detail->price, 2,'.','')*$transaction_detail->quantity;
|
||||||
|
$subTotal += $transaction_detail->price * $transaction_detail->quantity;
|
||||||
|
}
|
||||||
|
|
||||||
//string $description, string $longDescription, int $qty, int $rate, int $order, string $unit
|
//string $description, string $longDescription, int $qty, int $rate, int $order, string $unit
|
||||||
$invoiceSingleItem = new InvoiceSingleItemPerfexCRMObject(
|
$invoiceSingleItem = new InvoiceSingleItemPerfexCRMObject(
|
||||||
@@ -151,11 +114,16 @@ class CreatePerfexCRMInvoiceProcessor
|
|||||||
array_push($invoiceItems, $invoiceSingleItem);
|
array_push($invoiceItems, $invoiceSingleItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
$total = $transaction->amount;
|
if($transaction->booking()->first()->fix_currency_id !== 1){
|
||||||
|
$total = ((1/$transaction->currency_rate) * $transaction->amount) + $transaction->service_charge + $transaction->tax;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$total = $transaction->amount + $transaction->service_charge + $transaction->tax;
|
||||||
|
}
|
||||||
|
|
||||||
//This setting is similar to Setup > Leads > Sources, Setup > Leads > Statuses
|
//cief TODO: To be updated, temporarily hardcoded allow payment modes
|
||||||
//Can be found at Finance > Payment Modes
|
|
||||||
array_push($allowedPaymentModes, 1, 2);
|
array_push($allowedPaymentModes, 1, 2);
|
||||||
|
|
||||||
$invoicePerfexCRMObject = new InvoicePerfexCRMObject(
|
$invoicePerfexCRMObject = new InvoicePerfexCRMObject(
|
||||||
$clientId,
|
$clientId,
|
||||||
$number,
|
$number,
|
||||||
@@ -172,7 +140,20 @@ class CreatePerfexCRMInvoiceProcessor
|
|||||||
|
|
||||||
$result = $this->createsPerfexCRMInvoice->execute($invoicePerfexCRMObject);
|
$result = $this->createsPerfexCRMInvoice->execute($invoicePerfexCRMObject);
|
||||||
|
|
||||||
return $result;
|
//If there is a checking whether an payment to an invoice need to be generated, do it here
|
||||||
|
if(true && $result->payload['id']){
|
||||||
|
$invoicePaymentPerfexCRMObject = new InvoicePaymentPerfexCRMObject(
|
||||||
|
$result->payload['id'],
|
||||||
|
$total,
|
||||||
|
$date,
|
||||||
|
1,
|
||||||
|
"",
|
||||||
|
""
|
||||||
|
);
|
||||||
|
$this->createsPerfexCRMInvoicePayment->execute($invoicePaymentPerfexCRMObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,10 +33,7 @@ class CreatePerfexCRMTaskProcessor
|
|||||||
$createTaskPerfexCRMObject->getProjectId(),
|
$createTaskPerfexCRMObject->getProjectId(),
|
||||||
$createTaskPerfexCRMObject->getReference(),
|
$createTaskPerfexCRMObject->getReference(),
|
||||||
$createTaskPerfexCRMObject->getOnTaskCompletion(),
|
$createTaskPerfexCRMObject->getOnTaskCompletion(),
|
||||||
$createTaskPerfexCRMObject->getDepartment(),
|
|
||||||
$createTaskPerfexCRMObject->getStatus(),
|
$createTaskPerfexCRMObject->getStatus(),
|
||||||
$createTaskPerfexCRMObject->getPriority(),
|
|
||||||
$createTaskPerfexCRMObject->getDuedate()
|
|
||||||
);
|
);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,192 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\Processors;
|
||||||
|
|
||||||
|
use App\Classes\Modules\PerfexCRM\Services\ConvertsPerfexCRMLeadToCustomer;
|
||||||
|
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMCustomerProject;
|
||||||
|
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMMilestone;
|
||||||
|
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMTask;
|
||||||
|
use App\Classes\Modules\PerfexCRM\Services\FetchesPerfexCRMProject;
|
||||||
|
use App\Classes\Modules\PerfexCRM\Services\FetchesPerfexCRMMilestone;
|
||||||
|
use App\Classes\Modules\PerfexCRM\Services\FetchesPerfexCRMTask;
|
||||||
|
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMCustomer;
|
||||||
|
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMCustomerContact;
|
||||||
|
use App\Classes\Modules\PerfexCRM\Services\UpdatesPerfexCRMCustomer;
|
||||||
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\CustomerContactObject;
|
||||||
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\InitialPerfexCRMObject;
|
||||||
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMObject;
|
||||||
|
use App\Classes\ValueObjects\Constants\PerfexCRMMilestones;
|
||||||
|
use App\Classes\ValueObjects\Constants\PerfexCRMTasks;
|
||||||
|
use App\Classes\ValueObjects\Constants\PerfexCRMStatus;
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class InitializePerfexCRMProcessor
|
||||||
|
{
|
||||||
|
/** @var ConvertsPerfexCRMLeadToCustomer */
|
||||||
|
private $convertsPerfexCRMLeadToCustomer;
|
||||||
|
|
||||||
|
/** @var CreatesPerfexCRMCustomerProject */
|
||||||
|
private $createsPerfexCRMCustomerProject;
|
||||||
|
|
||||||
|
/** @var CreatesPerfexCRMMilestone */
|
||||||
|
private $createsPerfexCRMMilestone;
|
||||||
|
|
||||||
|
/** @var CreatesPerfexCRMTask */
|
||||||
|
private $createsPerfexCRMTask;
|
||||||
|
|
||||||
|
/** @var FetchesPerfexCRMProject */
|
||||||
|
private $fetchesPerfexCRMProject;
|
||||||
|
|
||||||
|
/** @var FetchesPerfexCRMMilestone */
|
||||||
|
private $fetchesPerfexCRMMilestone;
|
||||||
|
|
||||||
|
/** @var FetchesPerfexCRMTask */
|
||||||
|
private $fetchesPerfexCRMTask;
|
||||||
|
|
||||||
|
/** @var CreatesPerfexCRMCustomer */
|
||||||
|
private $createsPerfexCRMCustomer;
|
||||||
|
|
||||||
|
/** @var CreatesPerfexCRMCustomerContact */
|
||||||
|
private $createsPerfexCRMCustomerContact;
|
||||||
|
|
||||||
|
/** @var UpdatesPerfexCRM */
|
||||||
|
private $updatePerfexCRM;
|
||||||
|
|
||||||
|
/** @var UpdatesPerfexCRMCustomer */
|
||||||
|
private $updatesPerfexCRMCustomer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ConvertsPerfexCRMLeadToCustomer $convertsPerfexCRMLeadToCustomer
|
||||||
|
* @param CreatesPerfexCRMCustomerProject $createsPerfexCRMCustomerProject
|
||||||
|
* @param CreatesPerfexCRMMilestone $createsPerfexCRMMilestone
|
||||||
|
* @param CreatesPerfexCRMTask $createsPerfexCRMTask
|
||||||
|
* @param FetchesPerfexCRMProject $fetchesPerfexCRMProject
|
||||||
|
* @param FetchesPerfexCRMMilestone $fetchesPerfexCRMMilestone
|
||||||
|
* @param FetchesPerfexCRMTask $fetchesPerfexCRMTask
|
||||||
|
* @param CreatesPerfexCRMCustomer $createsPerfexCRMCustomer
|
||||||
|
* @param CreatesPerfexCRMCustomerContact $createsPerfexCRMCustomerContact
|
||||||
|
* @param UpdatesPerfexCRMCustomer $updatesPerfexCRMCustomer
|
||||||
|
*/
|
||||||
|
public function __construct(ConvertsPerfexCRMLeadToCustomer $convertsPerfexCRMLeadToCustomer,
|
||||||
|
CreatesPerfexCRMCustomerProject $createsPerfexCRMCustomerProject,
|
||||||
|
CreatesPerfexCRMMilestone $createsPerfexCRMMilestone,
|
||||||
|
CreatesPerfexCRMTask $createsPerfexCRMTask,
|
||||||
|
FetchesPerfexCRMProject $fetchesPerfexCRMProject,
|
||||||
|
FetchesPerfexCRMMilestone $fetchesPerfexCRMMilestone,
|
||||||
|
FetchesPerfexCRMTask $fetchesPerfexCRMTask,
|
||||||
|
CreatesPerfexCRMCustomer $createsPerfexCRMCustomer,
|
||||||
|
CreatesPerfexCRMCustomerContact $createsPerfexCRMCustomerContact,
|
||||||
|
UpdatesPerfexCRMCustomer $updatesPerfexCRMCustomer)
|
||||||
|
{
|
||||||
|
$this->convertsPerfexCRMLeadToCustomer = $convertsPerfexCRMLeadToCustomer;
|
||||||
|
$this->createsPerfexCRMCustomerProject = $createsPerfexCRMCustomerProject;
|
||||||
|
$this->createsPerfexCRMMilestone = $createsPerfexCRMMilestone;
|
||||||
|
$this->createsPerfexCRMTask = $createsPerfexCRMTask;
|
||||||
|
$this->fetchesPerfexCRMProject = $fetchesPerfexCRMProject;
|
||||||
|
$this->fetchesPerfexCRMMilestone = $fetchesPerfexCRMMilestone;
|
||||||
|
$this->fetchesPerfexCRMTask = $fetchesPerfexCRMTask;
|
||||||
|
$this->createsPerfexCRMCustomer = $createsPerfexCRMCustomer;
|
||||||
|
$this->createsPerfexCRMCustomerContact = $createsPerfexCRMCustomerContact;
|
||||||
|
$this->updatesPerfexCRMCustomer = $updatesPerfexCRMCustomer;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param InitialPerfexCRMObject $initialPerfexCRMObject
|
||||||
|
* @return null|object
|
||||||
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(InitialPerfexCRMObject $initialPerfexCRMObject) {
|
||||||
|
|
||||||
|
// Customer has to exist first before Project can appear under it
|
||||||
|
// Check with Perfex CRM, if this user (email) was previously a lead, should automatically now become a customer
|
||||||
|
$crmCompany = $initialPerfexCRMObject->getCompanyName();
|
||||||
|
$result = $this->convertsPerfexCRMLeadToCustomer->execute($initialPerfexCRMObject->getContactEmail());
|
||||||
|
if(isset($result->payload)){
|
||||||
|
$crmClientId = $result->payload['client_id'];
|
||||||
|
if (isset($result->payload['company'])) {
|
||||||
|
$crmCompany = $result->payload['company'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
//if reach this point, this means this user is not a official customer nor is a lead in crm
|
||||||
|
//Create Customer has 2 parts: Create Company (client), Create Contact
|
||||||
|
$result = $this->createsPerfexCRMCustomer->execute($crmCompany);
|
||||||
|
if(is_null($result)){
|
||||||
|
$crmCompany = $crmCompany." 2";
|
||||||
|
$result = $this->createsPerfexCRMCustomer->execute($crmCompany);
|
||||||
|
}
|
||||||
|
|
||||||
|
$crmClientId = $result->payload['clientId'];
|
||||||
|
|
||||||
|
$customerContactObject = new CustomerContactObject(
|
||||||
|
$crmClientId,
|
||||||
|
$initialPerfexCRMObject->getContactName(),
|
||||||
|
$initialPerfexCRMObject->getContactName(),
|
||||||
|
$initialPerfexCRMObject->getContactEmail(),
|
||||||
|
"pU^T@sC#9Q",
|
||||||
|
"on",
|
||||||
|
"on"
|
||||||
|
);
|
||||||
|
$result = $this->createsPerfexCRMCustomerContact->execute($customerContactObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Update custom fields to identify company reference from exchange or shipping portal
|
||||||
|
$value_exists = false;
|
||||||
|
if (isset($result->payload['customfields'])) {
|
||||||
|
foreach ($result->payload['customfields'] as $element) {
|
||||||
|
if ($element['value'] === $initialPerfexCRMObject->getCompanyReference()) {
|
||||||
|
$value_exists = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!$value_exists);
|
||||||
|
{
|
||||||
|
$result = $this->updatesPerfexCRMCustomer->execute($crmClientId, $crmCompany, $initialPerfexCRMObject->getCompanyReference());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get existing or create project, project has to exist first before milestone can appear under it
|
||||||
|
$result = $this->createsPerfexCRMCustomerProject->execute($initialPerfexCRMObject->getProjectName(), $crmClientId);
|
||||||
|
if(isset($result->payload)){ //Here means project creation successful
|
||||||
|
$projectId = $result->payload['project_id'];
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$projectId = $this->fetchesPerfexCRMProject->execute($initialPerfexCRMObject->getProjectName(), $crmClientId)->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!is_null($result)){
|
||||||
|
$tasks = $initialPerfexCRMObject->getTaskNames();
|
||||||
|
|
||||||
|
//Create tasks with milestone
|
||||||
|
for($count=0; $count < count($tasks); $count++) {
|
||||||
|
$milestoneId = 0; //By default milestoneId is 0, having this set at individual task is optional
|
||||||
|
if($tasks[$count]['milestone'] != "") //Create milestone only if it is defined
|
||||||
|
{
|
||||||
|
// Get existing or create milestone, milestone has to exist first before task can appear under it
|
||||||
|
$result = $this->createsPerfexCRMMilestone->execute($tasks[$count]['milestone'], $projectId, $count);
|
||||||
|
if(isset($result->payload)){
|
||||||
|
$milestoneId = $result->payload['milestone_id'];
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$milestone = $this->fetchesPerfexCRMMilestone->execute($tasks[$count]['milestone'], $projectId);
|
||||||
|
$array = json_decode(json_encode($milestone), true);
|
||||||
|
$milestoneId = $array[0]['id'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$taskStatus = PerfexCRMStatus::NOT_STARTED;
|
||||||
|
if($tasks[$count]['status'] != ''){
|
||||||
|
$taskStatus = $tasks[$count]['status'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get existing or create task
|
||||||
|
$result = $this->createsPerfexCRMTask->execute($tasks[$count]['name'], $tasks[$count]['description'], '', $milestoneId, $projectId, $tasks[$count]['reference'], $tasks[$count]['on_task_completion'], $taskStatus);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -3,37 +3,28 @@
|
|||||||
namespace App\Classes\Modules\PerfexCRM\Processors;
|
namespace App\Classes\Modules\PerfexCRM\Processors;
|
||||||
|
|
||||||
use App\Classes\Modules\PerfexCRM\DataTransferObjects\CreateTaskPerfexCRMObject;
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\CreateTaskPerfexCRMObject;
|
||||||
|
use App\Classes\ValueObjects\Constants\PerfexCRMStatus;
|
||||||
use App\Classes\Jobs\CreatePerfexCRMSingleTask;
|
use App\Classes\Jobs\CreatePerfexCRMSingleTask;
|
||||||
use App\Classes\ValueObjects\Constants\PerfexCRMTaskPriority;
|
|
||||||
use App\Classes\ValueObjects\Constants\PerfexCRMTasks;
|
|
||||||
use App\Models\Company;
|
|
||||||
|
|
||||||
class NewLeadTaskToPerfexCRMProcessor
|
class NewLeadTaskToPerfexCRMProcessor
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @param Company $company
|
* @param None
|
||||||
* @return true
|
* @return true
|
||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
*/
|
*/
|
||||||
public function execute(Company $company)
|
public function execute()
|
||||||
{
|
{
|
||||||
$companyModule = $company->companyModules()->first();
|
|
||||||
$employee = $companyModule->employees()->first();
|
|
||||||
$contactEmail = $employee->email;
|
|
||||||
|
|
||||||
$createTaskPerfexCRMObject = new CreateTaskPerfexCRMObject(
|
$createTaskPerfexCRMObject = new CreateTaskPerfexCRMObject(
|
||||||
$contactEmail,
|
"dillontest1@gmail.com",
|
||||||
PerfexCRMTasks::TASK_IDENTIFICATION_1['name'],
|
"test is the name of the task",
|
||||||
PerfexCRMTasks::TASK_IDENTIFICATION_1['description'],
|
"this is the description of the task",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
PerfexCRMTasks::TASK_IDENTIFICATION_1['status'],
|
PerfexCRMStatus::NOT_STARTED
|
||||||
PerfexCRMTasks::TASK_IDENTIFICATION_1['department'],
|
|
||||||
PerfexCRMTaskPriority::DEFAULT,
|
|
||||||
"0"
|
|
||||||
);
|
);
|
||||||
|
|
||||||
CreatePerfexCRMSingleTask::dispatch($createTaskPerfexCRMObject);
|
CreatePerfexCRMSingleTask::dispatch($createTaskPerfexCRMObject);
|
||||||
|
|||||||
@@ -1,60 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\PerfexCRM\Processors;
|
|
||||||
|
|
||||||
use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMObject;
|
|
||||||
use App\Classes\ValueObjects\Constants\PerfexCRMTasks;
|
|
||||||
use App\Classes\Jobs\UpdatePerfexCRM;
|
|
||||||
use App\Classes\Jobs\UpdatePerfexCRMPrelude;
|
|
||||||
use App\Models\PackingList;
|
|
||||||
use App\Classes\ValueObjects\Constants\PerfexCRMProjectStatus;
|
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
class PackingListToPerfexCRMProcessor
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param PackingList $packingList
|
|
||||||
* @return \Illuminate\Database\Eloquent\Model
|
|
||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
|
||||||
*/
|
|
||||||
public function execute(PackingList $packingList)
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
if($packingList->owner instanceof \App\Models\Order) {
|
|
||||||
$order = $packingList->owner;
|
|
||||||
$companyModule = $order->companyModule()->first();
|
|
||||||
$connection = $companyModule->inviters()->withPivot('invitee_reference')->first();
|
|
||||||
$companyName = $companyModule->name;
|
|
||||||
$companyReference = $connection ? $connection->pivot->invitee_reference:'';
|
|
||||||
$employee = $companyModule->employees()->first();
|
|
||||||
$contactEmail = $employee->email;
|
|
||||||
$contactName = $employee->name;
|
|
||||||
|
|
||||||
$orderReference = $packingList->owner->reference;
|
|
||||||
$packingListReference = $packingList->reference;
|
|
||||||
$projectName = 'IZYIM | X1 Shipping | '.$orderReference.' | '.$packingListReference;
|
|
||||||
|
|
||||||
$updatePerfexCRMObject = new UpdatePerfexCRMObject(
|
|
||||||
$companyName,
|
|
||||||
$companyReference,
|
|
||||||
$contactName,
|
|
||||||
$contactEmail,
|
|
||||||
"",
|
|
||||||
$projectName,
|
|
||||||
PerfexCRMProjectStatus::NOT_STARTED,
|
|
||||||
[],
|
|
||||||
[
|
|
||||||
PerfexCRMTasks::TASK_LOADED_CONTAINER_1,
|
|
||||||
PerfexCRMTasks::TASK_LOADED_CONTAINER_2,
|
|
||||||
]
|
|
||||||
);
|
|
||||||
UpdatePerfexCRMPrelude::dispatch($packingList, null, $updatePerfexCRMObject, UpdatePerfexCRM::class, null);
|
|
||||||
}
|
|
||||||
} catch (\Exception $exception){
|
|
||||||
Log::error(json_encode('PackingListToPerfexCRMProcessor debug:'));
|
|
||||||
Log::error(json_encode($packingList));
|
|
||||||
Log::error($exception);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -2,19 +2,45 @@
|
|||||||
|
|
||||||
namespace App\Classes\Modules\PerfexCRM\Processors;
|
namespace App\Classes\Modules\PerfexCRM\Processors;
|
||||||
|
|
||||||
|
use App\Classes\Modules\PerfexCRM\Processors\UpdatePerfexCRMProcessor;
|
||||||
|
use App\Classes\Modules\PerfexCRM\Processors\InitializePerfexCRMProcessor;
|
||||||
|
use App\Classes\Modules\PerfexCRM\Services\Init;
|
||||||
|
use App\Classes\Modules\Companies\Services\FetchesCompany;
|
||||||
use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMObject;
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMObject;
|
||||||
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\InitialPerfexCRMObject;
|
||||||
|
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
||||||
|
use App\Classes\ValueObjects\Constants\PerfexCRMMilestones;
|
||||||
use App\Classes\ValueObjects\Constants\PerfexCRMTasks;
|
use App\Classes\ValueObjects\Constants\PerfexCRMTasks;
|
||||||
use App\Classes\ValueObjects\Constants\PerfexCRMProjectStatus;
|
|
||||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
|
||||||
use App\Classes\Jobs\UpdatePerfexCRMInvoice;
|
|
||||||
use App\Classes\Jobs\UpdatePerfexCRM;
|
|
||||||
use App\Classes\Jobs\UpdatePerfexCRMPrelude;
|
|
||||||
use App\Classes\Jobs\CreatePerfexCRMInvoice;
|
|
||||||
use App\Models\Transaction;
|
use App\Models\Transaction;
|
||||||
use Illuminate\Support\Facades\Log;
|
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||||
|
use App\Classes\Jobs\InitializePerfexCRM;
|
||||||
|
use App\Classes\Jobs\UpdatePerfexCRM;
|
||||||
|
|
||||||
class TransactionToPerfexCRMProcessor
|
class TransactionToPerfexCRMProcessor
|
||||||
{
|
{
|
||||||
|
/** @var FetchesCompany */
|
||||||
|
private $fetchesCompany;
|
||||||
|
|
||||||
|
/** @var UpdatePerfexCRMProcessor */
|
||||||
|
private $updatePerfexCRMProcessor;
|
||||||
|
|
||||||
|
/** @var InitializePerfexCRMProcessor */
|
||||||
|
private $initializePerfexCRMProcessor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TransactionToPerfexCRMProcessor constructor.
|
||||||
|
* @param UpdatePerfexCRMProcessor $updatePerfexCRMProcessor
|
||||||
|
* @param InitializePerfexCRMProcessor $initializePerfexCRMProcessor
|
||||||
|
* @param FetchesCompany $fetchesCompany
|
||||||
|
*/
|
||||||
|
public function __construct(UpdatePerfexCRMProcessor $updatePerfexCRMProcessor, InitializePerfexCRMProcessor $initializePerfexCRMProcessor, FetchesCompany $fetchesCompany)
|
||||||
|
{
|
||||||
|
$this->updatePerfexCRMProcessor = $updatePerfexCRMProcessor;
|
||||||
|
$this->initializePerfexCRMProcessor = $initializePerfexCRMProcessor;
|
||||||
|
$this->fetchesCompany = $fetchesCompany;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Transaction $model
|
* @param Transaction $model
|
||||||
* @param int $status
|
* @param int $status
|
||||||
@@ -23,52 +49,40 @@ class TransactionToPerfexCRMProcessor
|
|||||||
*/
|
*/
|
||||||
public function execute(Transaction $model, int $status)
|
public function execute(Transaction $model, int $status)
|
||||||
{
|
{
|
||||||
try
|
if($model->owner instanceof \App\Models\Transaction && $status == ApprovalStatus::APPROVED){
|
||||||
{
|
//dd(json_encode($packingList->owner()->first()->companyModule()->first()->inviters()->withPivot('invitee_reference')->first()->pivot->invitee_reference));
|
||||||
if($model->owner instanceof \App\Models\Transaction && $status == ApprovalStatus::APPROVED)
|
//dd(json_encode($model->owner->owner->owner()->first()->companyModule()->first()->inviters()->withPivot('invitee_reference')->first()->pivot->invitee_reference));
|
||||||
{
|
$companyModule = $model->owner->owner->owner()->first()->companyModule()->first();
|
||||||
$packingList = $model->owner->owner;
|
$companyName = $companyModule->name;
|
||||||
$order = $packingList->owner()->first();
|
$companyReference = $companyModule->inviters()->withPivot('invitee_reference')->first()->pivot->invitee_reference;
|
||||||
$companyModule = $order->companyModule()->first();
|
$employee = $companyModule->employees()->first();
|
||||||
$companyName = $companyModule->name;
|
$contactEmail = $employee->email;
|
||||||
$companyReference = $companyModule->inviters()->withPivot('invitee_reference')->first()->pivot->invitee_reference;
|
$contactName = $employee->name;
|
||||||
$employee = $companyModule->employees()->first();
|
|
||||||
$contactEmail = $employee->email;
|
|
||||||
$contactName = $employee->name;
|
|
||||||
|
|
||||||
$orderReference = $order->reference;
|
$orderReference = $model->owner->owner->owner()->first()->reference;
|
||||||
$packingListReference = $packingList->reference;
|
$packingListReference = $model->owner->owner->reference;
|
||||||
$projectName = 'IZYIM | X1 Shipping | '.$orderReference.' | '.$packingListReference;
|
$projectName = 'IZYIM | X1 Shipping | '.$orderReference.' | '.$packingListReference;
|
||||||
|
|
||||||
$bookingMarking = $packingList->id."-".$packingList->owner->id;
|
$bookingMarking = $model->owner->owner->id."-".$model->owner->owner->owner->id;
|
||||||
$updatePerfexCRMObject = new UpdatePerfexCRMObject(
|
$initialPerfexCRMObject = new InitialPerfexCRMObject(
|
||||||
$companyName,
|
$companyName,
|
||||||
$companyReference,
|
$companyReference,
|
||||||
$contactName,
|
$contactName,
|
||||||
$contactEmail,
|
$contactEmail,
|
||||||
$bookingMarking,
|
$bookingMarking,
|
||||||
$projectName,
|
$projectName,
|
||||||
PerfexCRMProjectStatus::IN_PROGRESS,
|
[],
|
||||||
[],
|
[
|
||||||
[
|
PerfexCRMTasks::TASK_1,
|
||||||
PerfexCRMTasks::TASK_1,
|
PerfexCRMTasks::TASK_POST_PAYMENT_1,
|
||||||
PerfexCRMTasks::TASK_POST_PAYMENT_1,
|
PerfexCRMTasks::TASK_POST_PAYMENT_2,
|
||||||
PerfexCRMTasks::TASK_POST_PAYMENT_2,
|
PerfexCRMTasks::TASK_POST_PAYMENT_3,
|
||||||
PerfexCRMTasks::TASK_POST_PAYMENT_3,
|
PerfexCRMTasks::TASK_POST_PAYMENT_4,
|
||||||
PerfexCRMTasks::TASK_POST_PAYMENT_4,
|
]
|
||||||
]
|
);
|
||||||
);
|
|
||||||
|
|
||||||
UpdatePerfexCRMPrelude::dispatch(null, $model, $updatePerfexCRMObject, UpdatePerfexCRM::class, UpdatePerfexCRMInvoice::class);
|
//$this->initializePerfexCRMProcessor->execute($initialPerfexCRMObject);
|
||||||
}
|
InitializePerfexCRM::dispatch($initialPerfexCRMObject);
|
||||||
else if($model->owner instanceof \App\Models\PackingList && $model->status == ApprovalStatus::PENDING_SUBMISSION && $status == ApprovalStatus::APPROVED)
|
|
||||||
{
|
|
||||||
CreatePerfexCRMInvoice::dispatch($model);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (\Exception $exception) {
|
|
||||||
Log::error('TransactionToPerfexCRMProcessor debug:');
|
|
||||||
Log::error($exception);
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,13 +12,10 @@ use App\Classes\Modules\PerfexCRM\Services\FetchesPerfexCRMTask;
|
|||||||
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMCustomer;
|
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMCustomer;
|
||||||
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMCustomerContact;
|
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMCustomerContact;
|
||||||
use App\Classes\Modules\PerfexCRM\Services\UpdatesPerfexCRMTask;
|
use App\Classes\Modules\PerfexCRM\Services\UpdatesPerfexCRMTask;
|
||||||
use App\Classes\Modules\PerfexCRM\Services\UpdatesPerfexCRMCustomer;
|
|
||||||
use App\Classes\Modules\PerfexCRM\Services\UpdatesPerfexCRMProject;
|
|
||||||
use App\Classes\Modules\PerfexCRM\DataTransferObjects\CustomerContactObject;
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\CustomerContactObject;
|
||||||
use App\Classes\Exceptions\MalformedRequestException;
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMObject;
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMObject;
|
||||||
use App\Classes\ValueObjects\Constants\PerfexCRMTaskStatus;
|
use App\Classes\ValueObjects\Constants\PerfexCRMStatus;
|
||||||
use App\Classes\ValueObjects\Constants\PerfexCRMProjectStatus;
|
|
||||||
use Illuminate\Support\Facades\Http;
|
use Illuminate\Support\Facades\Http;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
@@ -55,13 +52,8 @@ class UpdatePerfexCRMProcessor
|
|||||||
/** @var UpdatesPerfexCRMTask */
|
/** @var UpdatesPerfexCRMTask */
|
||||||
private $updatesPerfexCRMTask;
|
private $updatesPerfexCRMTask;
|
||||||
|
|
||||||
/** @var UpdatesPerfexCRMCustomer */
|
|
||||||
private $updatesPerfexCRMCustomer;
|
|
||||||
|
|
||||||
/** @var UpdatesPerfexCRMProject */
|
/**
|
||||||
private $updatesPerfexCRMProject;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param ConvertsPerfexCRMLeadToCustomer $convertsPerfexCRMLeadToCustomer
|
* @param ConvertsPerfexCRMLeadToCustomer $convertsPerfexCRMLeadToCustomer
|
||||||
* @param CreatesPerfexCRMCustomerProject $createsPerfexCRMCustomerProject
|
* @param CreatesPerfexCRMCustomerProject $createsPerfexCRMCustomerProject
|
||||||
* @param CreatesPerfexCRMMilestone $createsPerfexCRMMilestone
|
* @param CreatesPerfexCRMMilestone $createsPerfexCRMMilestone
|
||||||
@@ -72,21 +64,17 @@ class UpdatePerfexCRMProcessor
|
|||||||
* @param CreatesPerfexCRMCustomer $createsPerfexCRMCustomer
|
* @param CreatesPerfexCRMCustomer $createsPerfexCRMCustomer
|
||||||
* @param CreatesPerfexCRMCustomerContact $createsPerfexCRMCustomerContact
|
* @param CreatesPerfexCRMCustomerContact $createsPerfexCRMCustomerContact
|
||||||
* @param UpdatesPerfexCRMTask $updatesPerfexCRMTask
|
* @param UpdatesPerfexCRMTask $updatesPerfexCRMTask
|
||||||
* @param UpdatesPerfexCRMCustomer $updatesPerfexCRMCustomer
|
|
||||||
* @param UpdatesPerfexCRMProject $updatesPerfexCRMProject
|
|
||||||
*/
|
*/
|
||||||
public function __construct(ConvertsPerfexCRMLeadToCustomer $convertsPerfexCRMLeadToCustomer,
|
public function __construct(ConvertsPerfexCRMLeadToCustomer $convertsPerfexCRMLeadToCustomer,
|
||||||
CreatesPerfexCRMCustomerProject $createsPerfexCRMCustomerProject,
|
CreatesPerfexCRMCustomerProject $createsPerfexCRMCustomerProject,
|
||||||
CreatesPerfexCRMMilestone $createsPerfexCRMMilestone,
|
CreatesPerfexCRMMilestone $createsPerfexCRMMilestone,
|
||||||
CreatesPerfexCRMTask $createsPerfexCRMTask,
|
CreatesPerfexCRMTask $createsPerfexCRMTask,
|
||||||
FetchesPerfexCRMProject $fetchesPerfexCRMProject,
|
FetchesPerfexCRMProject $fetchesPerfexCRMProject,
|
||||||
FetchesPerfexCRMMilestone $fetchesPerfexCRMMilestone,
|
FetchesPerfexCRMMilestone $fetchesPerfexCRMMilestone,
|
||||||
FetchesPerfexCRMTask $fetchesPerfexCRMTask,
|
FetchesPerfexCRMTask $fetchesPerfexCRMTask,
|
||||||
CreatesPerfexCRMCustomer $createsPerfexCRMCustomer,
|
CreatesPerfexCRMCustomer $createsPerfexCRMCustomer,
|
||||||
CreatesPerfexCRMCustomerContact $createsPerfexCRMCustomerContact,
|
CreatesPerfexCRMCustomerContact $createsPerfexCRMCustomerContact,
|
||||||
UpdatesPerfexCRMTask $updatesPerfexCRMTask,
|
UpdatesPerfexCRMTask $updatesPerfexCRMTask)
|
||||||
UpdatesPerfexCRMCustomer $updatesPerfexCRMCustomer,
|
|
||||||
UpdatesPerfexCRMProject $updatesPerfexCRMProject)
|
|
||||||
{
|
{
|
||||||
$this->convertsPerfexCRMLeadToCustomer = $convertsPerfexCRMLeadToCustomer;
|
$this->convertsPerfexCRMLeadToCustomer = $convertsPerfexCRMLeadToCustomer;
|
||||||
$this->createsPerfexCRMCustomerProject = $createsPerfexCRMCustomerProject;
|
$this->createsPerfexCRMCustomerProject = $createsPerfexCRMCustomerProject;
|
||||||
@@ -98,134 +86,54 @@ class UpdatePerfexCRMProcessor
|
|||||||
$this->createsPerfexCRMCustomer = $createsPerfexCRMCustomer;
|
$this->createsPerfexCRMCustomer = $createsPerfexCRMCustomer;
|
||||||
$this->createsPerfexCRMCustomerContact = $createsPerfexCRMCustomerContact;
|
$this->createsPerfexCRMCustomerContact = $createsPerfexCRMCustomerContact;
|
||||||
$this->updatesPerfexCRMTask = $updatesPerfexCRMTask;
|
$this->updatesPerfexCRMTask = $updatesPerfexCRMTask;
|
||||||
$this->updatesPerfexCRMCustomer = $updatesPerfexCRMCustomer;
|
}
|
||||||
$this->updatesPerfexCRMProject = $updatesPerfexCRMProject;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param UpdatePerfexCRMObject $updatePerfexCRMObject
|
* @param PerfexCRMObject $perfexCRMObject
|
||||||
* @return null|object
|
* @return null|object
|
||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
*/
|
*/
|
||||||
public function execute(UpdatePerfexCRMObject $updatePerfexCRMObject) {
|
public function execute(UpdatePerfexCRMObject $updatePerfexCRMObject) {
|
||||||
$projectId = "";
|
|
||||||
|
|
||||||
// Customer has to exist first before Project can appear under it
|
|
||||||
// Check with Perfex CRM, if this user (email) was previously a lead, should automatically now become a customer
|
|
||||||
$crmCompany = $updatePerfexCRMObject->getCompanyName();
|
|
||||||
$result = $this->convertsPerfexCRMLeadToCustomer->execute($updatePerfexCRMObject->getContactEmail());
|
|
||||||
if(isset($result->payload)){
|
|
||||||
$crmClientId = $result->payload['client_id'];
|
|
||||||
if (isset($result->payload['company'])) {
|
|
||||||
$crmCompany = $result->payload['company'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
//if reach this point, this means this user is not a official customer nor is a lead in crm
|
|
||||||
//Create Customer has 2 parts: Create Company (client), Create Contact
|
|
||||||
$result = $this->createsPerfexCRMCustomer->execute($crmCompany);
|
|
||||||
if(is_null($result)){
|
|
||||||
$crmCompany = $crmCompany." 2";
|
|
||||||
$result = $this->createsPerfexCRMCustomer->execute($crmCompany);
|
|
||||||
}
|
|
||||||
|
|
||||||
$crmClientId = $result->payload['clientId'];
|
|
||||||
|
|
||||||
$customerContactObject = new CustomerContactObject(
|
|
||||||
$crmClientId,
|
|
||||||
$updatePerfexCRMObject->getContactName(),
|
|
||||||
$updatePerfexCRMObject->getContactName(),
|
|
||||||
$updatePerfexCRMObject->getContactEmail(),
|
|
||||||
"pU^T@sC#9Q",
|
|
||||||
"on",
|
|
||||||
"on"
|
|
||||||
);
|
|
||||||
$result = $this->createsPerfexCRMCustomerContact->execute($customerContactObject);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Update custom fields to identify company reference from exchange or shipping portal
|
|
||||||
$value_exists = false;
|
|
||||||
if (isset($result->payload['customfields'])) {
|
|
||||||
foreach ($result->payload['customfields'] as $element) {
|
|
||||||
if ($element['value'] === $updatePerfexCRMObject->getCompanyReference()) {
|
|
||||||
$value_exists = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!$value_exists);
|
|
||||||
{
|
|
||||||
$result = $this->updatesPerfexCRMCustomer->execute($crmClientId, $crmCompany, $updatePerfexCRMObject->getCompanyReference());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get existing or create project, project has to exist first before milestone can appear under it
|
|
||||||
$result = $this->fetchesPerfexCRMProject->execute($updatePerfexCRMObject->getProjectName(), $crmClientId);
|
|
||||||
|
|
||||||
|
// Customer has to exist first before Project can appear under it
|
||||||
|
// Check with Perfex CRM, if this user (email) was previously a lead, should automatically now become a customer
|
||||||
|
$result = $this->convertsPerfexCRMLeadToCustomer->execute($updatePerfexCRMObject->getContactEmail());
|
||||||
if(isset($result->payload)){
|
if(isset($result->payload)){
|
||||||
$project = $result->payload[0];
|
$crmClientId = $result->payload['client_id'];
|
||||||
$projectId = $project['id'];
|
|
||||||
|
|
||||||
//if the project status is anything but PerfexCRMProjectStatus::NOT_STARTED, update the project
|
|
||||||
if($updatePerfexCRMObject->getProjectStatus() != PerfexCRMProjectStatus::NOT_STARTED && $project['status'] == PerfexCRMProjectStatus::NOT_STARTED)
|
|
||||||
{
|
|
||||||
$this->updatesPerfexCRMProject->execute($project, $updatePerfexCRMObject->getProjectStatus());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$result = $this->createsPerfexCRMCustomerProject->execute($updatePerfexCRMObject->getProjectName(), $updatePerfexCRMObject->getProjectStatus(), $crmClientId);
|
|
||||||
if(isset($result->payload)){ //Here means project creation successful
|
|
||||||
$projectId = $result->payload['project_id'];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get existing or create project, project has to exist first before milestone can appear under it
|
||||||
|
$result = $this->createsPerfexCRMCustomerProject->execute($updatePerfexCRMObject->getProjectName(), $crmClientId);
|
||||||
|
if(isset($result->payload)){
|
||||||
|
$projectId = $result->payload['project_id'];
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$projectId = $this->fetchesPerfexCRMProject->execute($updatePerfexCRMObject->getProjectName(), $crmClientId)->id;
|
||||||
|
}
|
||||||
|
|
||||||
$tasks = $updatePerfexCRMObject->getTasks();
|
// Get existing or create milestone, milestone has to exist first before task can appear under it
|
||||||
if(count($tasks) > 0){
|
$result = $this->createsPerfexCRMMilestone->execute($updatePerfexCRMObject->getMilestoneName(), $projectId);
|
||||||
|
if(isset($result->payload)){
|
||||||
|
$milestoneId = $result->payload['milestone_id'];
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$milestone = $this->fetchesPerfexCRMMilestone->execute($updatePerfexCRMObject->getMilestoneName(), $projectId);
|
||||||
|
$array = json_decode(json_encode($milestone), true);
|
||||||
|
$milestoneId = $array[0]['id'];
|
||||||
|
}
|
||||||
|
|
||||||
//Create tasks with milestone
|
// Get existing or create task
|
||||||
for($count=0; $count < count($tasks); $count++) {
|
$result = $this->createsPerfexCRMTask->execute($updatePerfexCRMObject->getTaskName(), $milestoneId, $projectId);
|
||||||
$milestoneId = 0; //By default milestoneId is 0, having this set at individual task is optional
|
if(isset($result->payload)){
|
||||||
if($tasks[$count]['milestone'] != "") //Create milestone only if it is defined
|
$taskId = $result->payload['task_id'];
|
||||||
{
|
}
|
||||||
// Get existing or create milestone, milestone has to exist first before task can appear under it
|
else{
|
||||||
$result = $this->fetchesPerfexCRMMilestone->execute($tasks[$count]['milestone'], $projectId);
|
$taskId = $this->fetchesPerfexCRMTask->execute($updatePerfexCRMObject->getTaskName(), $milestoneId)->id;
|
||||||
if(isset($result->payload)){
|
}
|
||||||
$array = json_decode(json_encode($result->payload[0]), true);
|
|
||||||
$milestoneId = $array['id'];
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$result = $this->createsPerfexCRMMilestone->execute($tasks[$count]['milestone'], $projectId, $count);
|
|
||||||
if(isset($result->payload)){
|
|
||||||
$milestoneId = $result->payload['milestone_id'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$taskStatus = PerfexCRMTaskStatus::NOT_STARTED;
|
$this->updatesPerfexCRMTask->execute($taskId, $updatePerfexCRMObject->getTaskName(), $milestoneId, $projectId, PerfexCRMStatus::COMPLETED);
|
||||||
if($tasks[$count]['status'] != ''){
|
|
||||||
$taskStatus = $tasks[$count]['status'];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get existing or create task
|
return null;
|
||||||
$result = $this->fetchesPerfexCRMTask->execute($tasks[$count]['name'], $milestoneId, 'project', $projectId);
|
}
|
||||||
if(isset($result->payload)){
|
|
||||||
break; //Breaking the rest of the tasks in array assuming that they are all created as a batch previously
|
|
||||||
//The following are code not needed at Shipping Portal, Exchange need certain task's status to be updated dynamically
|
|
||||||
// if($taskStatus != PerfexCRMTaskStatus::NOT_STARTED && $result->payload[0]['status'] == PerfexCRMTaskStatus::NOT_STARTED)
|
|
||||||
// {
|
|
||||||
// $task = $result->payload[0];
|
|
||||||
// $result = $this->updatesPerfexCRMTask->execute($task['id'], $task['name'], $task['milestone'], $task['rel_id'], $taskStatus, $task['startdate'], is_null($task['duedate']) ? '': $task['duedate']);
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$result = $this->createsPerfexCRMTask->execute($tasks[$count]['name'], $tasks[$count]['description'], '', $milestoneId, $projectId, $tasks[$count]['reference'], $tasks[$count]['on_task_completion'], $tasks[$count]['department'], $taskStatus, $tasks[$count]['priority'], $tasks[$count]['duedate']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$payload = [];
|
|
||||||
$payload['projectId'] = $projectId;
|
|
||||||
return (object) $payload;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class CreatesPerfexCRMCustomerProject
|
|||||||
* @return null|object
|
* @return null|object
|
||||||
* @throws MalformedRequestException
|
* @throws MalformedRequestException
|
||||||
*/
|
*/
|
||||||
public function execute(string $projectName, int $status, string $clientId) {
|
public function execute(string $projectName, string $clientId) {
|
||||||
try{
|
try{
|
||||||
$data = [
|
$data = [
|
||||||
'name' => $projectName,
|
'name' => $projectName,
|
||||||
@@ -22,7 +22,7 @@ class CreatesPerfexCRMCustomerProject
|
|||||||
'billing_type' => 1,
|
'billing_type' => 1,
|
||||||
'clientid' => $clientId,
|
'clientid' => $clientId,
|
||||||
'start_date' => date('Y-m-d'),
|
'start_date' => date('Y-m-d'),
|
||||||
'status' => $status
|
'status' => 1
|
||||||
];
|
];
|
||||||
|
|
||||||
$response = Http::asForm()->withHeaders([
|
$response = Http::asForm()->withHeaders([
|
||||||
|
|||||||
@@ -16,17 +16,14 @@ class CreatesPerfexCRMInvoice
|
|||||||
*/
|
*/
|
||||||
public function execute(InvoicePerfexCRMObject $invoicePerfexCRMObject) {
|
public function execute(InvoicePerfexCRMObject $invoicePerfexCRMObject) {
|
||||||
try{
|
try{
|
||||||
$subtotal = floor($invoicePerfexCRMObject->getSubTotal() * 100) / 100;
|
|
||||||
$total = floor($invoicePerfexCRMObject->getTotal() * 100) / 100;
|
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'clientid' => $invoicePerfexCRMObject->getClientId(),
|
'clientid' => $invoicePerfexCRMObject->getClientId(),
|
||||||
'number' => $invoicePerfexCRMObject->getNumber(),
|
'number' => $invoicePerfexCRMObject->getNumber(),
|
||||||
'date' => $invoicePerfexCRMObject->getDate(),
|
'date' => $invoicePerfexCRMObject->getDate(),
|
||||||
'duedate' => $invoicePerfexCRMObject->getDueDate(),
|
'duedate' => $invoicePerfexCRMObject->getDueDate(),
|
||||||
'currency' => $invoicePerfexCRMObject->getCurrency(),
|
'currency' => $invoicePerfexCRMObject->getCurrency(),
|
||||||
'subtotal' => number_format($subtotal, 2, '.', ''),
|
'subtotal' => $invoicePerfexCRMObject->getSubTotal(),
|
||||||
'total' => number_format($total, 2, '.', ''),
|
'total' => $invoicePerfexCRMObject->getTotal(),
|
||||||
'billing_street' => $invoicePerfexCRMObject->getBillingStreet(),
|
'billing_street' => $invoicePerfexCRMObject->getBillingStreet(),
|
||||||
'project_id' => $invoicePerfexCRMObject->getProjectId(),
|
'project_id' => $invoicePerfexCRMObject->getProjectId(),
|
||||||
'allowed_payment_modes[0]' => 1,
|
'allowed_payment_modes[0]' => 1,
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class CreatesPerfexCRMInvoicePayment
|
|||||||
try{
|
try{
|
||||||
$data = [
|
$data = [
|
||||||
'invoiceid' => $invoicePaymentPerfexCRMObject->getInvoiceId(),
|
'invoiceid' => $invoicePaymentPerfexCRMObject->getInvoiceId(),
|
||||||
'amount' => number_format($invoicePaymentPerfexCRMObject->getAmount(), 2, '.', ''),
|
'amount' => $invoicePaymentPerfexCRMObject->getAmount(),
|
||||||
'date' => $invoicePaymentPerfexCRMObject->getDate(),
|
'date' => $invoicePaymentPerfexCRMObject->getDate(),
|
||||||
'paymentmode' => $invoicePaymentPerfexCRMObject->getPaymentMode(),
|
'paymentmode' => $invoicePaymentPerfexCRMObject->getPaymentMode(),
|
||||||
'transactionid' => $invoicePaymentPerfexCRMObject->getTransactionId(),
|
'transactionid' => $invoicePaymentPerfexCRMObject->getTransactionId(),
|
||||||
|
|||||||
@@ -16,20 +16,13 @@ class CreatesPerfexCRMLead
|
|||||||
*/
|
*/
|
||||||
public function execute(CreateLeadPerfexCRMObject $createLeadPerfexCRMObject) {
|
public function execute(CreateLeadPerfexCRMObject $createLeadPerfexCRMObject) {
|
||||||
try{
|
try{
|
||||||
$custom_fields = [
|
|
||||||
"leads" => [
|
|
||||||
4 => $createLeadPerfexCRMObject->getCompanyReference()
|
|
||||||
]
|
|
||||||
];
|
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'name' => $createLeadPerfexCRMObject->getName(),
|
'name' => $createLeadPerfexCRMObject->getName(),
|
||||||
'email' => $createLeadPerfexCRMObject->getEmail(),
|
'email' => $createLeadPerfexCRMObject->getEmail(),
|
||||||
'phonenumber' => $createLeadPerfexCRMObject->getPhone(),
|
'phonenumber' => $createLeadPerfexCRMObject->getPhone(),
|
||||||
'company' => $createLeadPerfexCRMObject->getCompanyName(),
|
'company' => $createLeadPerfexCRMObject->getCompanyName(),
|
||||||
'source' => 2, //1: Exchange, 2: Shipping Portal
|
'source' => 2, //1: Exchange, 2: Shipping Portal
|
||||||
'status' => 2, //2: Lead, 1: Customer
|
'status' => 2 //2: Lead, 1: Customer
|
||||||
'custom_fields' => $custom_fields
|
|
||||||
];
|
];
|
||||||
|
|
||||||
$response = Http::asForm()->withHeaders([
|
$response = Http::asForm()->withHeaders([
|
||||||
|
|||||||
@@ -1,43 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\PerfexCRM\Services;
|
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Http;
|
|
||||||
use App\Classes\Exceptions\MalformedRequestException;
|
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
class CreatesPerfexCRMSupportTicket
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param string $subject
|
|
||||||
* @param string $department
|
|
||||||
* @param int $contactid
|
|
||||||
* @param int $userid
|
|
||||||
* @return null|object
|
|
||||||
* @throws MalformedRequestException
|
|
||||||
*/
|
|
||||||
public function execute(string $subject, string $department, int $contactid, int $userid) {
|
|
||||||
try{
|
|
||||||
$data = [
|
|
||||||
'subject' => $subject,
|
|
||||||
'department' => $department,
|
|
||||||
'contactid' => $contactid,
|
|
||||||
'userid' => $userid,
|
|
||||||
];
|
|
||||||
|
|
||||||
$response = Http::asForm()->withHeaders([
|
|
||||||
'authtoken' => config('perfexcrm.api_key')])
|
|
||||||
->post(config('perfexcrm.base_url').'/api/tickets',$data);
|
|
||||||
|
|
||||||
if($response->successful()){
|
|
||||||
$data = $response->json();
|
|
||||||
return (object) $data;
|
|
||||||
}else{
|
|
||||||
Log::error($response);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}catch(\Exception $exception){
|
|
||||||
throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -5,7 +5,6 @@ namespace App\Classes\Modules\PerfexCRM\Services;
|
|||||||
use Illuminate\Support\Facades\Http;
|
use Illuminate\Support\Facades\Http;
|
||||||
use App\Classes\Exceptions\MalformedRequestException;
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
use App\Classes\ValueObjects\Constants\PerfexCRMCustomFields;
|
|
||||||
|
|
||||||
class CreatesPerfexCRMTask
|
class CreatesPerfexCRMTask
|
||||||
{
|
{
|
||||||
@@ -15,26 +14,14 @@ class CreatesPerfexCRMTask
|
|||||||
* @param string $leadId
|
* @param string $leadId
|
||||||
* @param string $milestoneId
|
* @param string $milestoneId
|
||||||
* @param string $projectId
|
* @param string $projectId
|
||||||
* @param string $reference
|
* @param string $reference, default: ''
|
||||||
* @param string $on_task_completion
|
* @param string $on_task_completion, default: ''
|
||||||
* @param string $department
|
* @param string $status, default: 1
|
||||||
* @param string $status
|
|
||||||
* @param string $priority
|
|
||||||
* @param string $duedate
|
|
||||||
* @return null|object
|
* @return null|object
|
||||||
* @throws MalformedRequestException
|
* @throws MalformedRequestException
|
||||||
*/
|
*/
|
||||||
public function execute(string $taskName, string $taskDescription, string $leadId, string $milestoneId, string $projectId, string $reference, string $on_task_completion, string $department, string $status, string $priority, string $duedate) {
|
public function execute(string $taskName, string $taskDescription, string $leadId, string $milestoneId, string $projectId, string $reference = '', string $on_task_completion = '', string $status = "1") {
|
||||||
try{
|
try{
|
||||||
$custom_fields = [];
|
|
||||||
if($department != ""){
|
|
||||||
$custom_fields = [
|
|
||||||
"tasks" => [
|
|
||||||
PerfexCRMCustomFields::TASKS_DEPARTMENT => $department
|
|
||||||
]
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'name' => $taskName,
|
'name' => $taskName,
|
||||||
'description' => $taskDescription,
|
'description' => $taskDescription,
|
||||||
@@ -45,10 +32,7 @@ class CreatesPerfexCRMTask
|
|||||||
'status' => $status,
|
'status' => $status,
|
||||||
'is_system_created' => 1,
|
'is_system_created' => 1,
|
||||||
'reference' => $reference,
|
'reference' => $reference,
|
||||||
'on_task_completion' => $on_task_completion,
|
'on_task_completion' => $on_task_completion
|
||||||
'custom_fields' => $custom_fields,
|
|
||||||
'priority' => $priority,
|
|
||||||
'duedate' => date('Y-m-d', strtotime('+' . $duedate . ' days')),
|
|
||||||
];
|
];
|
||||||
|
|
||||||
if($leadId != '') {
|
if($leadId != '') {
|
||||||
@@ -62,10 +46,7 @@ class CreatesPerfexCRMTask
|
|||||||
'status' => $status,
|
'status' => $status,
|
||||||
'is_system_created' => 1,
|
'is_system_created' => 1,
|
||||||
'reference' => $reference,
|
'reference' => $reference,
|
||||||
'on_task_completion' => $on_task_completion,
|
'on_task_completion' => $on_task_completion
|
||||||
'custom_fields' => $custom_fields,
|
|
||||||
'priority' => $priority,
|
|
||||||
'duedate' => date('Y-m-d', strtotime('+' . $duedate . ' days')),
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\PerfexCRM\Services;
|
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Http;
|
|
||||||
use App\Classes\Exceptions\MalformedRequestException;
|
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
class FetchesPerfexCRMCustomer
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param string $email
|
|
||||||
* @return null|object
|
|
||||||
* @throws MalformedRequestException
|
|
||||||
*/
|
|
||||||
public function execute(string $email) {
|
|
||||||
try{
|
|
||||||
$response = Http::withHeaders([
|
|
||||||
'authtoken' => config('perfexcrm.api_key'),])
|
|
||||||
->get(config('perfexcrm.base_url').'/api/customers/byemail/'.$email);
|
|
||||||
|
|
||||||
if($response->successful()){
|
|
||||||
$data = $response->json();
|
|
||||||
|
|
||||||
return (object) $data;
|
|
||||||
}else{
|
|
||||||
Log::error($response);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}catch(\Exception $exception){
|
|
||||||
throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\PerfexCRM\Services;
|
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Http;
|
|
||||||
use App\Classes\Exceptions\MalformedRequestException;
|
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
class FetchesPerfexCRMInvoice
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param string $clientId
|
|
||||||
* @param string $invoicePrefix
|
|
||||||
* @param string $invoiceNumber
|
|
||||||
* @return null|object
|
|
||||||
* @throws MalformedRequestException
|
|
||||||
*/
|
|
||||||
public function execute(string $clientId, string $invoicePrefix, string $invoiceNumber) {
|
|
||||||
try{
|
|
||||||
$response = Http::withHeaders([
|
|
||||||
'authtoken' => config('perfexcrm.api_key'),])
|
|
||||||
->get(config('perfexcrm.base_url').'/api/invoices/customsearch/'.$clientId.'/'.$invoicePrefix.'/'.$invoiceNumber);
|
|
||||||
|
|
||||||
if($response->successful()){
|
|
||||||
$data = $response->json();
|
|
||||||
|
|
||||||
return (object) $data;
|
|
||||||
}else{
|
|
||||||
Log::error($response);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}catch(\Exception $exception){
|
|
||||||
throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -16,14 +16,9 @@ class FetchesPerfexCRMMilestone
|
|||||||
*/
|
*/
|
||||||
public function execute(string $milestoneName, string $projectId) {
|
public function execute(string $milestoneName, string $projectId) {
|
||||||
try{
|
try{
|
||||||
$data = [
|
$response = Http::withHeaders([
|
||||||
'name' => $milestoneName,
|
'authtoken' => config('perfexcrm.api_key'),])
|
||||||
'project_id' => $projectId,
|
->get(config('perfexcrm.base_url').'/api/milestones/bynameandprojectid/'.rawurlencode($milestoneName).'/'.$projectId);
|
||||||
];
|
|
||||||
|
|
||||||
$response = Http::asForm()->withHeaders([
|
|
||||||
'authtoken' => config('perfexcrm.api_key')])
|
|
||||||
->post(config('perfexcrm.base_url').'/api/milestones/bynameandprojectid', $data);
|
|
||||||
|
|
||||||
if($response->successful()){
|
if($response->successful()){
|
||||||
$data = $response->json();
|
$data = $response->json();
|
||||||
|
|||||||
@@ -5,41 +5,27 @@ namespace App\Classes\Modules\PerfexCRM\Services;
|
|||||||
use Illuminate\Support\Facades\Http;
|
use Illuminate\Support\Facades\Http;
|
||||||
use App\Classes\Exceptions\MalformedRequestException;
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
use App\Classes\General\Helper;
|
|
||||||
|
|
||||||
class FetchesPerfexCRMTask
|
class FetchesPerfexCRMTask
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @param string $taskName
|
* @param string $taskName
|
||||||
* @param string $milestoneId
|
* @param string $milestoneId
|
||||||
* @param string $relType
|
|
||||||
* @param string $relId
|
|
||||||
* @return null|object
|
* @return null|object
|
||||||
* @throws MalformedRequestException
|
* @throws MalformedRequestException
|
||||||
*/
|
*/
|
||||||
public function execute(string $taskName, string $milestoneId, string $relType, string $relId) {
|
public function execute(string $taskName, string $milestoneId) {
|
||||||
try{
|
try{
|
||||||
$data = [
|
$response = Http::withHeaders([
|
||||||
'name' => $taskName,
|
'authtoken' => config('perfexcrm.api_key'),])
|
||||||
'rel_type' => $relType,
|
->get(config('perfexcrm.base_url').'/api/tasks/bynameandmilestoneid/'.rawurlencode($taskName).'/'.$milestoneId);
|
||||||
'rel_id' => $relId,
|
|
||||||
];
|
|
||||||
|
|
||||||
if($milestoneId != '') {
|
|
||||||
$newItem = ['milestone' => $milestoneId ];
|
|
||||||
$data = array_merge($data, $newItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
$response = Http::asForm()->withHeaders([
|
|
||||||
'authtoken' => config('perfexcrm.api_key')])
|
|
||||||
->post(config('perfexcrm.base_url').'/api/tasks/customsearch', $data);
|
|
||||||
|
|
||||||
if($response->successful()){
|
if($response->successful()){
|
||||||
$data = $response->json();
|
$data = $response->json();
|
||||||
|
|
||||||
return (object) $data;
|
return (object) $data;
|
||||||
}else{
|
}else{
|
||||||
Helper::debugLoggerForPerfexCRM($response);
|
Log::error($response);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}catch(\Exception $exception){
|
}catch(\Exception $exception){
|
||||||
|
|||||||
@@ -5,8 +5,6 @@ namespace App\Classes\Modules\PerfexCRM\Services;
|
|||||||
use Illuminate\Support\Facades\Http;
|
use Illuminate\Support\Facades\Http;
|
||||||
use App\Classes\Exceptions\MalformedRequestException;
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
use App\Classes\ValueObjects\Constants\PerfexCRMCustomFields;
|
|
||||||
use App\Classes\General\Helper;
|
|
||||||
|
|
||||||
class UpdatesPerfexCRMCustomer
|
class UpdatesPerfexCRMCustomer
|
||||||
{
|
{
|
||||||
@@ -21,7 +19,7 @@ class UpdatesPerfexCRMCustomer
|
|||||||
try{
|
try{
|
||||||
$custom_fields = [
|
$custom_fields = [
|
||||||
"customers" => [
|
"customers" => [
|
||||||
PerfexCRMCustomFields::CUSTOMERS_SHIPPING_PORTAL_REFERENCE => $companyReference
|
2 => $companyReference
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -38,7 +36,7 @@ class UpdatesPerfexCRMCustomer
|
|||||||
$data = $response->json();
|
$data = $response->json();
|
||||||
return (object) $data;
|
return (object) $data;
|
||||||
}else{
|
}else{
|
||||||
Helper::debugLoggerForPerfexCRM($response);
|
Log::error($response);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}catch(\Exception $exception){
|
}catch(\Exception $exception){
|
||||||
|
|||||||
@@ -1,70 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\PerfexCRM\Services;
|
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Http;
|
|
||||||
use App\Classes\Exceptions\MalformedRequestException;
|
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
class UpdatesPerfexCRMInvoice
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param $invoice
|
|
||||||
* @param string $projectId
|
|
||||||
* @return null|object
|
|
||||||
* @throws MalformedRequestException
|
|
||||||
*/
|
|
||||||
public function execute($invoice, string $projectId) {
|
|
||||||
try{
|
|
||||||
// <p>The Invoice number field is required.<\/p>
|
|
||||||
// <p>The Invoice date field is required.<\/p>
|
|
||||||
// <p>The Currency field is required.<\/p>
|
|
||||||
// <p>The Items field is required.<\/p>
|
|
||||||
// <p>The Allow Payment Mode field is required.<\/p>
|
|
||||||
// <p>The Billing Street field is required.<\/p>
|
|
||||||
// <p>The Sub Total field is required.<\/p>
|
|
||||||
// <p>The Total field is required.<\/p>
|
|
||||||
|
|
||||||
$newInvoiceItems = [];
|
|
||||||
foreach ($invoice->items as $item) {
|
|
||||||
$item['itemid'] = $item['id'];
|
|
||||||
unset($item['id']);
|
|
||||||
$item['order'] = $item['item_order'];
|
|
||||||
unset($item['item_order']);
|
|
||||||
array_push($newInvoiceItems,$item);
|
|
||||||
}
|
|
||||||
|
|
||||||
$allowedPaymentModes = [];
|
|
||||||
array_push($allowedPaymentModes, 1, 2);
|
|
||||||
|
|
||||||
$data = [
|
|
||||||
'number' => $invoice->number,
|
|
||||||
'date' => $invoice->date,
|
|
||||||
'duedate' => $invoice->duedate,
|
|
||||||
'currency' => $invoice->currency,
|
|
||||||
'subtotal' => $invoice->subtotal,
|
|
||||||
'total' => $invoice->total,
|
|
||||||
'billing_street' => $invoice->billing_street,
|
|
||||||
'shipping_street' => $invoice->billing_street,
|
|
||||||
'project_id' => $projectId,
|
|
||||||
'items' => $newInvoiceItems,
|
|
||||||
'allowed_payment_modes' => $allowedPaymentModes,
|
|
||||||
];
|
|
||||||
|
|
||||||
$response = Http::asJson()->withHeaders([
|
|
||||||
'authtoken' => config('perfexcrm.api_key')])
|
|
||||||
->put(config('perfexcrm.base_url').'/api/invoices/'.$invoice->id, $data);
|
|
||||||
|
|
||||||
if($response->successful()){
|
|
||||||
$data = $response->json();
|
|
||||||
return (object) $data;
|
|
||||||
}else{
|
|
||||||
Log::error($response);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}catch(\Exception $exception){
|
|
||||||
throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\PerfexCRM\Services;
|
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Http;
|
|
||||||
use App\Classes\Exceptions\MalformedRequestException;
|
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
use App\Classes\ValueObjects\Constants\PerfexCRMCustomFields;
|
|
||||||
|
|
||||||
class UpdatesPerfexCRMLead
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param $lead
|
|
||||||
* @param string $companyReference
|
|
||||||
* @return null|object
|
|
||||||
* @throws MalformedRequestException
|
|
||||||
*/
|
|
||||||
public function execute($lead, string $companyReference) {
|
|
||||||
try{
|
|
||||||
$custom_fields = [
|
|
||||||
"leads" => [
|
|
||||||
PerfexCRMCustomFields::LEADS_SHIPPING_PORTAL_REFERENCE => $companyReference
|
|
||||||
]
|
|
||||||
];
|
|
||||||
|
|
||||||
$data = [
|
|
||||||
'name' => $lead->name,
|
|
||||||
'email' => $lead->email,
|
|
||||||
'phonenumber' => $lead->phonenumber,
|
|
||||||
'company' => $lead->company,
|
|
||||||
'custom_fields' => $custom_fields,
|
|
||||||
'source' => $lead->source,
|
|
||||||
'status' => $lead->status,
|
|
||||||
];
|
|
||||||
|
|
||||||
$response = Http::asJson()->withHeaders([
|
|
||||||
'authtoken' => config('perfexcrm.api_key')])
|
|
||||||
->put(config('perfexcrm.base_url').'/api/leads/'.$lead->id, $data);
|
|
||||||
|
|
||||||
if($response->successful()){
|
|
||||||
$data = $response->json();
|
|
||||||
return (object) $data;
|
|
||||||
}else{
|
|
||||||
Log::error($response);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}catch(\Exception $exception){
|
|
||||||
throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\PerfexCRM\Services;
|
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Http;
|
|
||||||
use App\Classes\Exceptions\MalformedRequestException;
|
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
class UpdatesPerfexCRMProject
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param $project
|
|
||||||
* @param int $status
|
|
||||||
* @return null|object
|
|
||||||
* @throws MalformedRequestException
|
|
||||||
*/
|
|
||||||
public function execute($project, int $status) {
|
|
||||||
try{
|
|
||||||
$data = [
|
|
||||||
'name' => $project['name'],
|
|
||||||
'clientid' => $project['clientid'],
|
|
||||||
// 'rel_type' => 'customer',
|
|
||||||
'billing_type' => 1,
|
|
||||||
'start_date' => $project['start_date'],
|
|
||||||
'status' => $status
|
|
||||||
];
|
|
||||||
|
|
||||||
$response = Http::asJson()->withHeaders([
|
|
||||||
'authtoken' => config('perfexcrm.api_key')])
|
|
||||||
->put(config('perfexcrm.base_url').'/api/projects/'.$project['id'], $data);
|
|
||||||
|
|
||||||
if($response->successful()){
|
|
||||||
$data = $response->json();
|
|
||||||
return (object) $data;
|
|
||||||
}else{
|
|
||||||
Log::error($response);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}catch(\Exception $exception){
|
|
||||||
throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -5,8 +5,17 @@ namespace App\Classes\Modules\Segments\ControllersLogic;
|
|||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use App\Http\Resources\ConstantResource;
|
use App\Http\Resources\ConstantResource;
|
||||||
|
use App\Classes\ValueObjects\Constants\SegmentConstants;
|
||||||
|
use App\Classes\Modules\Segments\Services\FetchesSegment;
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||||
use App\Classes\Modules\Segments\Processors\UpdatePostcodeSegmentProcessor;
|
use App\Classes\Modules\Segments\Services\FetchesConstant;
|
||||||
|
use App\Classes\Modules\Segments\Services\UpdatesConstant;
|
||||||
|
use App\Classes\Modules\Segments\Standards\Rules\CanUpdateConstant;
|
||||||
|
use App\Classes\Modules\Segments\DataTransferObjects\ConstantObject;
|
||||||
|
use App\Classes\Modules\Segments\Services\AddItemToConstantValueArray;
|
||||||
|
use App\Classes\Modules\Segments\Services\RemoveItemFromConstantValueArray;
|
||||||
|
use App\Classes\Exceptions\ResourceNotFoundException;
|
||||||
|
use App\Classes\Modules\Segments\Services\CreatesConstant;
|
||||||
|
|
||||||
class UpdateConstantPostcodeLogic extends AbstractControllerLogic
|
class UpdateConstantPostcodeLogic extends AbstractControllerLogic
|
||||||
{
|
{
|
||||||
@@ -21,18 +30,54 @@ class UpdateConstantPostcodeLogic extends AbstractControllerLogic
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @var UpdatePostcodeSegmentProcessor */
|
/** @var CanUpdateConstant */
|
||||||
private $updatePostcodeSegmentProcessor;
|
private $canUpdateConstant;
|
||||||
|
|
||||||
|
/** @var UpdatesConstant */
|
||||||
|
private $updatesConstant;
|
||||||
|
|
||||||
|
/** @var FetchesSegment */
|
||||||
|
private $fetchesSegment;
|
||||||
|
|
||||||
|
/** @var FetchesConstant */
|
||||||
|
private $fetchesConstant;
|
||||||
|
|
||||||
|
/** @var AddItemToConstantValueArray */
|
||||||
|
private $addItemToConstantValueArray;
|
||||||
|
|
||||||
|
/** @var RemoveItemFromConstantValueArray */
|
||||||
|
private $removeItemFromConstantValueArray;
|
||||||
|
|
||||||
|
/** @var CreatesConstant */
|
||||||
|
private $createsConstant;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* UpdateConstantLogic constructor.
|
* UpdateConstantLogic constructor.
|
||||||
* @param UpdatePostcodeSegmentProcessor $updatePostcodeSegmentProcessor
|
* @param CanUpdateConstant $canUpdateConstant
|
||||||
|
* @param UpdatesConstant $updatesConstant
|
||||||
|
* @param FetchesSegment $fetchesSegment
|
||||||
|
* @param FetchesConstant $fetchesConstant
|
||||||
|
* @param AddItemToConstantValueArray $addItemToConstantValueArray
|
||||||
|
* @param CreatesConstant $createsConstant
|
||||||
|
* @param RemoveItemFromConstantValueArray $removeItemFromConstantValueArray
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
UpdatePostcodeSegmentProcessor $updatePostcodeSegmentProcessor
|
CanUpdateConstant $canUpdateConstant,
|
||||||
|
UpdatesConstant $updatesConstant,
|
||||||
|
FetchesSegment $fetchesSegment,
|
||||||
|
FetchesConstant $fetchesConstant,
|
||||||
|
AddItemToConstantValueArray $addItemToConstantValueArray,
|
||||||
|
RemoveItemFromConstantValueArray $removeItemFromConstantValueArray,
|
||||||
|
CreatesConstant $createsConstant
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
$this->updatePostcodeSegmentProcessor = $updatePostcodeSegmentProcessor;
|
$this->canUpdateConstant = $canUpdateConstant;
|
||||||
|
$this->updatesConstant = $updatesConstant;
|
||||||
|
$this->fetchesSegment = $fetchesSegment;
|
||||||
|
$this->fetchesConstant = $fetchesConstant;
|
||||||
|
$this->addItemToConstantValueArray = $addItemToConstantValueArray;
|
||||||
|
$this->removeItemFromConstantValueArray = $removeItemFromConstantValueArray;
|
||||||
|
$this->createsConstant = $createsConstant;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
@@ -43,9 +88,44 @@ class UpdateConstantPostcodeLogic extends AbstractControllerLogic
|
|||||||
*/
|
*/
|
||||||
public function logic(Request $request) : JsonResponse
|
public function logic(Request $request) : JsonResponse
|
||||||
{
|
{
|
||||||
$constant = $this->updatePostcodeSegmentProcessor->execute($request->route('id'), $request->input('reference'), $request->input('postcode'));
|
$segment = $this->fetchesSegment->execute(['id' => $request->route('id')]);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$constant = $this->fetchesConstant->execute(['segment_id' => $segment->id, 'reference' => $request->input('reference')]);
|
||||||
|
|
||||||
|
$constantValue = $this->addItemToConstantValueArray->execute($constant->value, $request->input('postcode'));
|
||||||
|
|
||||||
|
$object = new ConstantObject($request->input('reference'), $constantValue);
|
||||||
|
|
||||||
|
} catch (ResourceNotFoundException $exception){
|
||||||
|
|
||||||
|
$constantObject = [$request->input('postcode')];
|
||||||
|
|
||||||
|
$object = new ConstantObject(
|
||||||
|
$request->input('reference'),
|
||||||
|
$constantObject
|
||||||
|
);
|
||||||
|
|
||||||
|
$constant = $this->createsConstant->execute($segment, $object);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// check if postcode exist in the opposite constant, and delete it
|
||||||
|
$oppositeConstant = $this->fetchesConstant->execute(['segment_id' => $segment->id, 'reference' => $request->input('reference') == SegmentConstants::CENTER_POSTCODE ? SegmentConstants::OUTSTATION_POSTCODE : SegmentConstants::CENTER_POSTCODE]);
|
||||||
|
|
||||||
|
$oppositeConstantValue = $this->removeItemFromConstantValueArray->execute($oppositeConstant->value, $request->input('postcode'));
|
||||||
|
|
||||||
|
$oppositeObject = new ConstantObject($request->input('reference') == SegmentConstants::CENTER_POSTCODE ? SegmentConstants::OUTSTATION_POSTCODE : SegmentConstants::CENTER_POSTCODE, $oppositeConstantValue);
|
||||||
|
|
||||||
|
$this->updatesConstant->execute($oppositeConstant, $oppositeObject);
|
||||||
|
|
||||||
|
} catch (ResourceNotFoundException $exception){
|
||||||
|
// if opposite constant does not exist, do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
$constant = $this->updatesConstant->execute($constant, $object);
|
||||||
|
|
||||||
return $this->resourceResponse(new ConstantResource($constant));
|
return $this->resourceResponse(new ConstantResource($constant));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,122 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Segments\Processors;
|
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use App\Http\Resources\ConstantResource;
|
|
||||||
use App\Classes\ValueObjects\Constants\SegmentConstants;
|
|
||||||
use App\Classes\Modules\Segments\Services\FetchesSegment;
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
||||||
use App\Classes\Modules\Segments\Services\FetchesConstant;
|
|
||||||
use App\Classes\Modules\Segments\Services\UpdatesConstant;
|
|
||||||
use App\Classes\Modules\Segments\Standards\Rules\CanUpdateConstant;
|
|
||||||
use App\Classes\Modules\Segments\DataTransferObjects\ConstantObject;
|
|
||||||
use App\Classes\Modules\Segments\Services\AddItemToConstantValueArray;
|
|
||||||
use App\Classes\Modules\Segments\Services\RemoveItemFromConstantValueArray;
|
|
||||||
use App\Classes\Exceptions\ResourceNotFoundException;
|
|
||||||
use App\Classes\Modules\Segments\Services\CreatesConstant;
|
|
||||||
|
|
||||||
class UpdatePostcodeSegmentProcessor
|
|
||||||
{
|
|
||||||
/** @var CanUpdateConstant */
|
|
||||||
private $canUpdateConstant;
|
|
||||||
|
|
||||||
/** @var UpdatesConstant */
|
|
||||||
private $updatesConstant;
|
|
||||||
|
|
||||||
/** @var FetchesSegment */
|
|
||||||
private $fetchesSegment;
|
|
||||||
|
|
||||||
/** @var FetchesConstant */
|
|
||||||
private $fetchesConstant;
|
|
||||||
|
|
||||||
/** @var AddItemToConstantValueArray */
|
|
||||||
private $addItemToConstantValueArray;
|
|
||||||
|
|
||||||
/** @var RemoveItemFromConstantValueArray */
|
|
||||||
private $removeItemFromConstantValueArray;
|
|
||||||
|
|
||||||
/** @var CreatesConstant */
|
|
||||||
private $createsConstant;
|
|
||||||
/**
|
|
||||||
* UpdatePostcodeSegmentProcessor constructor.
|
|
||||||
* @param CanUpdateConstant $canUpdateConstant
|
|
||||||
* @param UpdatesConstant $updatesConstant
|
|
||||||
* @param FetchesSegment $fetchesSegment
|
|
||||||
* @param FetchesConstant $fetchesConstant
|
|
||||||
* @param AddItemToConstantValueArray $addItemToConstantValueArray
|
|
||||||
* @param CreatesConstant $createsConstant
|
|
||||||
* @param RemoveItemFromConstantValueArray $removeItemFromConstantValueArray
|
|
||||||
*/
|
|
||||||
public function __construct(
|
|
||||||
CanUpdateConstant $canUpdateConstant,
|
|
||||||
UpdatesConstant $updatesConstant,
|
|
||||||
FetchesSegment $fetchesSegment,
|
|
||||||
FetchesConstant $fetchesConstant,
|
|
||||||
AddItemToConstantValueArray $addItemToConstantValueArray,
|
|
||||||
RemoveItemFromConstantValueArray $removeItemFromConstantValueArray,
|
|
||||||
CreatesConstant $createsConstant
|
|
||||||
)
|
|
||||||
{
|
|
||||||
$this->canUpdateConstant = $canUpdateConstant;
|
|
||||||
$this->updatesConstant = $updatesConstant;
|
|
||||||
$this->fetchesSegment = $fetchesSegment;
|
|
||||||
$this->fetchesConstant = $fetchesConstant;
|
|
||||||
$this->addItemToConstantValueArray = $addItemToConstantValueArray;
|
|
||||||
$this->removeItemFromConstantValueArray = $removeItemFromConstantValueArray;
|
|
||||||
$this->createsConstant = $createsConstant;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param string $name
|
|
||||||
* @param int $companyModuleId
|
|
||||||
* @throws \App\Classes\Exceptions\AccessForbiddenException
|
|
||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
|
||||||
* @throws \App\Classes\Exceptions\RequestValidationException
|
|
||||||
*/
|
|
||||||
public function execute($segment_id, $reference, $postcode){
|
|
||||||
|
|
||||||
$segment = $this->fetchesSegment->execute(['id' => $segment_id]);
|
|
||||||
|
|
||||||
try {
|
|
||||||
$constant = $this->fetchesConstant->execute(['segment_id' => $segment->id, 'reference' => $reference]);
|
|
||||||
|
|
||||||
$constantValue = $this->addItemToConstantValueArray->execute($constant->value, $postcode);
|
|
||||||
|
|
||||||
$object = new ConstantObject($reference, $constantValue);
|
|
||||||
|
|
||||||
} catch (ResourceNotFoundException $exception){
|
|
||||||
|
|
||||||
$constantObject = [$postcode];
|
|
||||||
|
|
||||||
$object = new ConstantObject(
|
|
||||||
$reference,
|
|
||||||
$constantObject
|
|
||||||
);
|
|
||||||
|
|
||||||
$constant = $this->createsConstant->execute($segment, $object);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
// check if postcode exist in the opposite constant, and delete it
|
|
||||||
$oppositeConstant = $this->fetchesConstant->execute(['segment_id' => $segment->id, 'reference' => $reference == SegmentConstants::CENTER_POSTCODE ? SegmentConstants::OUTSTATION_POSTCODE : SegmentConstants::CENTER_POSTCODE]);
|
|
||||||
|
|
||||||
$oppositeConstantValue = $this->removeItemFromConstantValueArray->execute($oppositeConstant->value, $postcode);
|
|
||||||
|
|
||||||
$oppositeObject = new ConstantObject($reference == SegmentConstants::CENTER_POSTCODE ? SegmentConstants::OUTSTATION_POSTCODE : SegmentConstants::CENTER_POSTCODE, $oppositeConstantValue);
|
|
||||||
|
|
||||||
$this->updatesConstant->execute($oppositeConstant, $oppositeObject);
|
|
||||||
|
|
||||||
} catch (ResourceNotFoundException $exception){
|
|
||||||
// if opposite constant does not exist, do nothing
|
|
||||||
}
|
|
||||||
|
|
||||||
$constant = $this->updatesConstant->execute($constant, $object);
|
|
||||||
|
|
||||||
return $constant;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,179 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Transactions\ControllersLogic;
|
|
||||||
|
|
||||||
use App\Classes\Exceptions\MalformedRequestException;
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
||||||
use App\Classes\Modules\Transactions\Services\FetchesTransaction;
|
|
||||||
use App\Classes\Modules\Transactions\Services\GeneratesTransactionBillNumber;
|
|
||||||
use App\Classes\Modules\Companies\Services\FetchesCompanyModule;
|
|
||||||
use App\Classes\Modules\Groups\DataTransferObjects\GroupObject;
|
|
||||||
use App\Classes\ValueObjects\Constants\PaymentMethodType;
|
|
||||||
use App\Classes\Modules\Transactions\Processors\CreatePaymentTransactionProcessor;
|
|
||||||
use App\Models\Group;
|
|
||||||
use App\Classes\Modules\Groups\Services\CreatesGroup;
|
|
||||||
use App\Models\Transaction;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Classes\Modules\Wallets\Processors\CreateWalletTopUpTransactionProcessor;
|
|
||||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
|
||||||
use App\Models\GroupTransaction;
|
|
||||||
use App\Http\Resources\WalletTransactionResource;
|
|
||||||
use App\Models\Wallet;
|
|
||||||
|
|
||||||
class CreateGroupsLogic extends AbstractControllerLogic
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function notification():array {
|
|
||||||
return [
|
|
||||||
'title' => 'Create Group Transaction',
|
|
||||||
'message' => 'You have successfully created a group transaction'
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @var FetchesTransaction */
|
|
||||||
private $fetchesTransaction;
|
|
||||||
|
|
||||||
/** @var GeneratesTransactionBillNumber */
|
|
||||||
private $generatesTransactionBillNumber;
|
|
||||||
|
|
||||||
|
|
||||||
/** @var FetchesCompanyModule */
|
|
||||||
private $fetchesCompanyModule;
|
|
||||||
|
|
||||||
/** @var CreateWalletTopUpTransactionProcessor */
|
|
||||||
private $createWalletTopUpTransactionProcessor;
|
|
||||||
|
|
||||||
/** @var CreatePaymentTransactionProcessor */
|
|
||||||
private $createPaymentTransactionProcessor;
|
|
||||||
|
|
||||||
/** @var CreatesGroup */
|
|
||||||
private $createsGroup;
|
|
||||||
|
|
||||||
public function __construct(
|
|
||||||
FetchesTransaction $fetchesTransaction,
|
|
||||||
GeneratesTransactionBillNumber $generatesTransactionBillNumber,
|
|
||||||
FetchesCompanyModule $fetchesCompanyModule,
|
|
||||||
CreateWalletTopUpTransactionProcessor $createWalletTopUpTransactionProcessor,
|
|
||||||
CreatePaymentTransactionProcessor $createPaymentTransactionProcessor,
|
|
||||||
CreatesGroup $createsGroup
|
|
||||||
)
|
|
||||||
{
|
|
||||||
$this->fetchesTransaction = $fetchesTransaction;
|
|
||||||
$this->generatesTransactionBillNumber = $generatesTransactionBillNumber;
|
|
||||||
$this->fetchesCompanyModule = $fetchesCompanyModule;
|
|
||||||
$this->createWalletTopUpTransactionProcessor = $createWalletTopUpTransactionProcessor;
|
|
||||||
$this->createPaymentTransactionProcessor = $createPaymentTransactionProcessor;
|
|
||||||
$this->createsGroup = $createsGroup;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function logic(Request $request) : JsonResponse
|
|
||||||
{
|
|
||||||
$payment_method = PaymentMethodType::PAYMENT_METHODS[$request->input('payment_method')];
|
|
||||||
$groupPyamentStatus = ApprovalStatus::PENDING_VERIFICATION;
|
|
||||||
|
|
||||||
$invoice_ids = json_decode($request->route('transaction_ids'));
|
|
||||||
$billNumber = $this->generatesTransactionBillNumber->execute('PYMT-');
|
|
||||||
|
|
||||||
// todo-new: check why is this not working
|
|
||||||
// $invoices = $this->fetchesTransaction->execute(['id_in' => $invoice_ids]);
|
|
||||||
$invoices = Transaction::whereIn('id', $invoice_ids)->get();
|
|
||||||
|
|
||||||
if ($payment_method == PaymentMethodType::WALLET) {
|
|
||||||
|
|
||||||
$companyModuleId = $invoices->first()->receiver;
|
|
||||||
|
|
||||||
$wallet = Wallet::where('owner_id', $companyModuleId)->first();
|
|
||||||
|
|
||||||
// todo-new: verify currently checking wallet amount based on 'amount' value passed by frontend
|
|
||||||
if((float) number_format(($wallet->amount - $request->input('amount')),2) < 0){
|
|
||||||
throw new MalformedRequestException('Insufficient wallet balance. Please Top up your wallet.');
|
|
||||||
}
|
|
||||||
|
|
||||||
$groupPyamentStatus = ApprovalStatus::APPROVED;
|
|
||||||
}
|
|
||||||
|
|
||||||
$issuer = 0;
|
|
||||||
$receiver = 0;
|
|
||||||
$amount = 0;
|
|
||||||
$original_amount = 0;
|
|
||||||
$currency_id = 0;
|
|
||||||
$original_currency_id = 0;
|
|
||||||
$currency_rate = 0;
|
|
||||||
$tax = 0;
|
|
||||||
$service_charge = 0;
|
|
||||||
|
|
||||||
$group = new GroupObject(
|
|
||||||
$issuer,
|
|
||||||
$receiver,
|
|
||||||
$amount,
|
|
||||||
$original_amount,
|
|
||||||
$currency_id,
|
|
||||||
$original_currency_id,
|
|
||||||
$currency_rate,
|
|
||||||
$tax,
|
|
||||||
$service_charge,
|
|
||||||
$payment_method,
|
|
||||||
'-',
|
|
||||||
$groupPyamentStatus,
|
|
||||||
);
|
|
||||||
|
|
||||||
$group = $this->createsGroup->execute($group);
|
|
||||||
|
|
||||||
foreach ($invoices as $invoice) {
|
|
||||||
if ($payment_method == PaymentMethodType::WALLET) {
|
|
||||||
$this->createPaymentTransactionProcessor->execute($invoice, PaymentMethodType::WALLET, $request->input('bank_code'));
|
|
||||||
}
|
|
||||||
|
|
||||||
$issuer = $invoice->issuer;
|
|
||||||
$receiver = $invoice->receiver;
|
|
||||||
$amount += $invoice->amount;
|
|
||||||
$original_amount += $invoice->original_amount;
|
|
||||||
$currency_id = $invoice->currency_id;
|
|
||||||
$original_currency_id = $invoice->original_currency_id;
|
|
||||||
$currency_rate = $invoice->currency_rate;
|
|
||||||
$tax += $invoice->tax;
|
|
||||||
$service_charge += $invoice->service_charge;
|
|
||||||
|
|
||||||
// creates group transaction
|
|
||||||
$groupTransaction = new GroupTransaction();
|
|
||||||
$groupTransaction->group_id = $group->id;
|
|
||||||
$groupTransaction->transaction_id = $invoice->id;
|
|
||||||
$groupTransaction->save();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (in_array($payment_method, [PaymentMethodType::PAYMENT_GATEWAY, PaymentMethodType::CASH])) {
|
|
||||||
// create only one billplz payment for wallet top up
|
|
||||||
$amount = floatval(str_replace(',', '', $request->input('amount')));
|
|
||||||
$companyModuleId = $invoice->receiver;
|
|
||||||
$companyModule = $this->fetchesCompanyModule->execute(['id' => $companyModuleId]);
|
|
||||||
|
|
||||||
$topUpTransaction = $this->createWalletTopUpTransactionProcessor->execute($companyModule, $amount, $request->input('bank_code'), true, $payment_method);
|
|
||||||
}
|
|
||||||
|
|
||||||
$group->issuer = $issuer;
|
|
||||||
$group->receiver = $receiver;
|
|
||||||
$group->reference = $payment_method === PaymentMethodType::PAYMENT_GATEWAY ? $topUpTransaction->payment_reference : $billNumber;
|
|
||||||
$group->amount = $amount;
|
|
||||||
$group->original_amount = $original_amount;
|
|
||||||
$group->currency_id = $currency_id;
|
|
||||||
$group->original_currency_id = $original_currency_id;
|
|
||||||
$group->currency_rate = $currency_rate;
|
|
||||||
$group->tax = $tax;
|
|
||||||
$group->service_charge = $service_charge;
|
|
||||||
$group->status = $groupPyamentStatus;
|
|
||||||
$group->save();
|
|
||||||
|
|
||||||
if ($payment_method === PaymentMethodType::PAYMENT_GATEWAY) {
|
|
||||||
return $this->resourceResponse(new WalletTransactionResource($topUpTransaction));
|
|
||||||
|
|
||||||
} else {
|
|
||||||
return $this->response([]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+81
-8
@@ -5,15 +5,30 @@ namespace App\Classes\Modules\Transactions\ControllersLogic;
|
|||||||
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||||
use App\Classes\Modules\Transactions\Services\FetchesTransaction;
|
use App\Classes\Modules\Transactions\Services\FetchesTransaction;
|
||||||
|
use App\Classes\Modules\Transactions\Services\GeneratesTransactionBillNumber;
|
||||||
|
use App\Classes\Modules\Transactions\Services\CreatesPaymentTransaction;
|
||||||
|
use App\Classes\Modules\Transactions\Services\CreatesTransactionDetail;
|
||||||
|
use App\Classes\Modules\Billplzs\Services\CreatesBillplzBill;
|
||||||
|
|
||||||
|
use App\Classes\Modules\Transactions\DataTransferObjects\TransactionObject;
|
||||||
|
use App\Classes\Modules\Transactions\DataTransferObjects\TransactionDetailObject;
|
||||||
|
|
||||||
|
use App\Classes\ValueObjects\Constants\OrderRoleTypes;
|
||||||
|
use App\Classes\ValueObjects\Constants\TransactionType;
|
||||||
use App\Classes\ValueObjects\Constants\PaymentMethodType;
|
use App\Classes\ValueObjects\Constants\PaymentMethodType;
|
||||||
|
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||||
|
|
||||||
use App\Http\Resources\TransactionResource;
|
use App\Http\Resources\TransactionResource;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Classes\Modules\Transactions\Processors\CreatePaymentTransactionProcessor;
|
use Illuminate\Support\Facades\Storage;
|
||||||
|
use Illuminate\Support\Str;
|
||||||
|
use Mccarlosen\LaravelMpdf\Facades\LaravelMpdf;
|
||||||
|
|
||||||
class CreatePaymentTransactionLogic extends AbstractControllerLogic
|
class CreatePaymentTransactionLogic extends AbstractControllerLogic
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
@@ -27,25 +42,83 @@ class CreatePaymentTransactionLogic extends AbstractControllerLogic
|
|||||||
/** @var FetchesTransaction */
|
/** @var FetchesTransaction */
|
||||||
private $fetchesTransaction;
|
private $fetchesTransaction;
|
||||||
|
|
||||||
/** @var CreatePaymentTransactionProcessor */
|
/** @var FetchesSegmentConstant */
|
||||||
private $createPaymentTransactionProcessor;
|
private $fetchesSegmentConstant;
|
||||||
|
|
||||||
|
/** @var GeneratesTransactionBillNumber */
|
||||||
|
private $generatesTransactionBillNumber;
|
||||||
|
|
||||||
|
/** @var CreatesPaymentTransaction */
|
||||||
|
private $createsPaymentTransaction;
|
||||||
|
|
||||||
|
/** @var CreatesBillplzBill */
|
||||||
|
private $createsBillplzBill;
|
||||||
|
|
||||||
|
/** @var CreatesTransactionDetail */
|
||||||
|
private $createsTransactionDetail;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
FetchesTransaction $fetchesTransaction,
|
FetchesTransaction $fetchesTransaction,
|
||||||
CreatePaymentTransactionProcessor $createPaymentTransactionProcessor
|
GeneratesTransactionBillNumber $generatesTransactionBillNumber,
|
||||||
|
CreatesPaymentTransaction $createsPaymentTransaction,
|
||||||
|
CreatesTransactionDetail $createsTransactionDetail,
|
||||||
|
CreatesBillplzBill $createsBillplzBill
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
$this->fetchesTransaction = $fetchesTransaction;
|
$this->fetchesTransaction = $fetchesTransaction;
|
||||||
$this->createPaymentTransactionProcessor = $createPaymentTransactionProcessor;
|
$this->generatesTransactionBillNumber = $generatesTransactionBillNumber;
|
||||||
|
$this->createsPaymentTransaction = $createsPaymentTransaction;
|
||||||
|
$this->createsTransactionDetail = $createsTransactionDetail;
|
||||||
|
$this->createsBillplzBill = $createsBillplzBill;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function logic(Request $request) : JsonResponse
|
public function logic(Request $request) : JsonResponse
|
||||||
{
|
{
|
||||||
$payment_method = PaymentMethodType::PAYMENT_METHODS[$request->input('payment_method')];
|
|
||||||
|
|
||||||
$invoice_transaction = $this->fetchesTransaction->execute(['id' => $request->input('transaction_id')]);
|
$invoice_transaction = $this->fetchesTransaction->execute(['id' => $request->input('transaction_id')]);
|
||||||
|
$amount = $request->input('amount');
|
||||||
|
$company_module = $invoice_transaction->owner()->first()->owner()->first()->companyModule()->first();
|
||||||
|
|
||||||
$payment_transaction = $this->createPaymentTransactionProcessor->execute($invoice_transaction, $payment_method , $request->input('bank_code'));
|
$billNumber = $this->generatesTransactionBillNumber->execute('PYMT-');
|
||||||
|
$payment_reference = null;
|
||||||
|
if ($request->input('payment_method') == 5) {
|
||||||
|
$payment_method = PaymentMethodType::PAYMENT_GATEWAY;
|
||||||
|
$billPlzBill = $this->createsBillplzBill->execute(
|
||||||
|
$company_module->name,
|
||||||
|
(app()->environment(['production'])) ? $company_module->employees()->first()->email : 'uldvstar@gmail.com',
|
||||||
|
'This payment is for the invoice number . ' . $invoice_transaction->bill_no,
|
||||||
|
$amount,
|
||||||
|
$billNumber,
|
||||||
|
$request->input('bank_code'),
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
$payment_reference = $billPlzBill->id;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$payment_method = PaymentMethodType::CASH;
|
||||||
|
}
|
||||||
|
|
||||||
|
$object = new TransactionObject(
|
||||||
|
$billNumber,
|
||||||
|
TransactionType::PAYMENT,
|
||||||
|
$company_module->id,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
$payment_method,
|
||||||
|
$request->input('amount'),
|
||||||
|
$request->input('amount'),
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
null,
|
||||||
|
ApprovalStatus::PENDING_SUBMISSION,
|
||||||
|
null,
|
||||||
|
$payment_reference
|
||||||
|
);
|
||||||
|
|
||||||
|
$payment_transaction = $this->createsPaymentTransaction->execute($invoice_transaction, $object);
|
||||||
|
|
||||||
return $this->resourceResponse(new TransactionResource($payment_transaction));
|
return $this->resourceResponse(new TransactionResource($payment_transaction));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,73 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Transactions\ControllersLogic;
|
|
||||||
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
||||||
use App\Classes\Modules\Transactions\Services\FetchesGroup;
|
|
||||||
use App\Classes\Modules\Transactions\Services\DeletesTransaction;
|
|
||||||
use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus;
|
|
||||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
|
||||||
use App\Http\Resources\GroupResource;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
|
|
||||||
class DeleteGroupLogic extends AbstractControllerLogic
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function notification():array {
|
|
||||||
return [
|
|
||||||
'title' => 'Delete Group Transaction',
|
|
||||||
'message' => 'You have successfully deleted this Group Transaction'
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @var UpdatesTransactionStatus */
|
|
||||||
private $updatesTransactionStatus;
|
|
||||||
|
|
||||||
/** @var FetchesGroup */
|
|
||||||
private $fetchesGroup;
|
|
||||||
|
|
||||||
/** @var DeletesTransaction */
|
|
||||||
private $deletesTransaction;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* DeleteGroupLogic constructor.
|
|
||||||
* @param updatesTransactionStatus $updatesTransactionStatus
|
|
||||||
* @param FetchesGroup $fetchesGroup
|
|
||||||
* @param DeletesTransaction $deletesTransaction
|
|
||||||
*/
|
|
||||||
public function __construct(updatesTransactionStatus $updatesTransactionStatus, FetchesGroup $fetchesGroup, DeletesTransaction $deletesTransaction)
|
|
||||||
{
|
|
||||||
$this->updatesTransactionStatus = $updatesTransactionStatus;
|
|
||||||
$this->fetchesGroup = $fetchesGroup;
|
|
||||||
$this->deletesTransaction = $deletesTransaction;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @return JsonResponse
|
|
||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
|
||||||
*/
|
|
||||||
public function logic(Request $request) : JsonResponse
|
|
||||||
{
|
|
||||||
$group = $this->fetchesGroup->execute(['id' => $request->route('id')]);
|
|
||||||
|
|
||||||
$items = $group->transactions()->get();
|
|
||||||
|
|
||||||
foreach($items as $item) {
|
|
||||||
$bill = $item;
|
|
||||||
$payment = $bill->owner;
|
|
||||||
$group->transactions()->detach($bill->id);
|
|
||||||
$this->updatesTransactionStatus->execute($payment, ApprovalStatus::APPROVED);
|
|
||||||
$this->deletesTransaction->execute($bill);
|
|
||||||
}
|
|
||||||
|
|
||||||
$group->delete();
|
|
||||||
|
|
||||||
return $this->resourceResponse(new GroupResource($group));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Transactions\ControllersLogic;
|
|
||||||
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
||||||
use App\Classes\Modules\Transactions\Services\FetchesTransaction;
|
|
||||||
use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
|
|
||||||
class DeleteTransactionLogic extends AbstractControllerLogic
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function notification():array {
|
|
||||||
return [
|
|
||||||
'title' => 'Delete Transaction',
|
|
||||||
'message' => 'You have successfully deleted the transaction'
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @var FetchesTransaction */
|
|
||||||
private $fetchesTransaction;
|
|
||||||
|
|
||||||
/** @var UpdatesTransactionStatus */
|
|
||||||
private $updatesTransactionStatus;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* SuspendTransactionLogic constructor.
|
|
||||||
* @param FetchesTransaction $fetchesTransaction
|
|
||||||
* @param UpdatesTransactionStatus $updatesTransactionStatus
|
|
||||||
*/
|
|
||||||
public function __construct(FetchesTransaction $fetchesTransaction, UpdatesTransactionStatus $updatesTransactionStatus)
|
|
||||||
{
|
|
||||||
$this->fetchesTransaction = $fetchesTransaction;
|
|
||||||
$this->updatesTransactionStatus = $updatesTransactionStatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public function logic(Request $request) : JsonResponse
|
|
||||||
{
|
|
||||||
$transaction = $this->fetchesTransaction->execute(['id' => $request->route('id')]);
|
|
||||||
|
|
||||||
$transaction->delete();
|
|
||||||
|
|
||||||
return $this->response([]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Transactions\ControllersLogic;
|
|
||||||
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
||||||
use App\Classes\Modules\Transactions\Services\ListsGroups;
|
|
||||||
use App\Http\Resources\GroupResource;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
|
|
||||||
class ListGroupsLogic extends AbstractControllerLogic
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* ListTransactionsLogic constructor.
|
|
||||||
* @param ListsGroups $listsGroups
|
|
||||||
*/
|
|
||||||
public function __construct(ListsGroups $listsGroups)
|
|
||||||
{
|
|
||||||
$this->listsGroups = $listsGroups;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function notification():array {
|
|
||||||
return [
|
|
||||||
'title' => 'Retrieved Groups',
|
|
||||||
'message' => 'You have successfully retrieved a list of groups'
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @var ListsGroups */
|
|
||||||
private $listsGroups;
|
|
||||||
|
|
||||||
public function logic(Request $request) : JsonResponse
|
|
||||||
{
|
|
||||||
$query = $this->listsGroups->execute($this->listsGroups->deserializeFilters($request->input('filters')));
|
|
||||||
|
|
||||||
return $this->collectionResponse(GroupResource::collection($query));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
-78
@@ -1,78 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Transactions\ControllersLogic;
|
|
||||||
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
||||||
use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject;
|
|
||||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
|
||||||
use App\Classes\ValueObjects\Constants\DocumentType;
|
|
||||||
use App\Classes\ValueObjects\Constants\TransactionType;
|
|
||||||
use App\Models\Order;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Mccarlosen\LaravelMpdf\Facades\LaravelMpdf;
|
|
||||||
use App\Classes\Modules\Documents\Services\CreatesDocument;
|
|
||||||
use App\Classes\Modules\Documents\Services\CreatesFiles;
|
|
||||||
use App\Models\Document;
|
|
||||||
|
|
||||||
class RegenerateShippingInvoiceTransactionLogic extends AbstractControllerLogic
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function notification():array {
|
|
||||||
return [
|
|
||||||
'title' => 'Regenerate Shipping Invoice',
|
|
||||||
'message' => 'You have successfully regenerated shipping invoice'
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @var CreatesDocument */
|
|
||||||
private $createsDocument;
|
|
||||||
|
|
||||||
/** @var CreatesFiles */
|
|
||||||
private $createsFiles;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param CreatesDocument $createsDocument
|
|
||||||
*/
|
|
||||||
public function __construct(CreatesDocument $createsDocument, CreatesFiles $createsFiles)
|
|
||||||
{
|
|
||||||
$this->createsDocument = $createsDocument;
|
|
||||||
$this->createsFiles = $createsFiles;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function logic(Request $request) : JsonResponse
|
|
||||||
{
|
|
||||||
|
|
||||||
$orders = Order::where('company_module_id', $request->route('company_module_id'))->get();
|
|
||||||
|
|
||||||
foreach ($orders as $order){
|
|
||||||
$invoices = $order->transactions()->where('transactions.type', TransactionType::SHIPPING_INVOICE)->get();
|
|
||||||
foreach ($invoices as $invoice){
|
|
||||||
|
|
||||||
$invoice->documents()->delete();
|
|
||||||
|
|
||||||
$transaction_invoice_pdf = LaravelMpdf::loadView('pages.pdfs.shipping_invoice', ['invoice_transaction' => $invoice]);
|
|
||||||
|
|
||||||
$document_object = new DocumentObject(
|
|
||||||
DocumentType::SHIPPING_INVOICE,
|
|
||||||
[chunk_split('data:application/pdf;base64,'.base64_encode($transaction_invoice_pdf->output()))],
|
|
||||||
'',
|
|
||||||
ApprovalStatus::COMPLETED,
|
|
||||||
'shipping_invoice'
|
|
||||||
);
|
|
||||||
|
|
||||||
$document =$this->createsDocument->execute($invoice, $document_object);
|
|
||||||
|
|
||||||
$this->createsFiles->execute($document, $document_object);
|
|
||||||
|
|
||||||
// dump($document);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->response([]);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,185 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Transactions\ControllersLogic;
|
|
||||||
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
||||||
use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject;
|
|
||||||
use App\Classes\Modules\Documents\Services\CreatesDocument;
|
|
||||||
use App\Classes\Modules\Documents\Services\CreatesFiles;
|
|
||||||
use App\Classes\ValueObjects\Constants\DocumentType;
|
|
||||||
use App\Http\Resources\GroupResource;
|
|
||||||
use App\Models\Document;
|
|
||||||
use App\Models\SegmentConstant;
|
|
||||||
use App\Classes\Modules\Companies\Services\FetchesCompany;
|
|
||||||
use App\Classes\Modules\Transactions\Services\CalculatesTransactionServiceCharge;
|
|
||||||
use App\Classes\Modules\Transactions\DataTransferObjects\TransactionObject;
|
|
||||||
use App\Classes\Modules\Transactions\Services\FetchesGroup;
|
|
||||||
use App\Classes\Modules\Transactions\Services\UpdatesTransaction;
|
|
||||||
use App\Classes\Modules\Transactions\Services\CalculatesTransactionTransferFee;
|
|
||||||
use App\Classes\ValueObjects\Constants\TransactionType;
|
|
||||||
use App\Classes\ValueObjects\Constants\PaymentMethodType;
|
|
||||||
use App\Classes\ValueObjects\Constants\SegmentConstants;
|
|
||||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use ErrorException;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
|
||||||
use Mccarlosen\LaravelMpdf\Facades\LaravelMpdf;
|
|
||||||
|
|
||||||
class UpdateGroupLogic extends AbstractControllerLogic
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function notification():array {
|
|
||||||
return [
|
|
||||||
'title' => 'Update Group Transaction',
|
|
||||||
'message' => 'You have successfully updated this Group Transaction'
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @var FetchesGroup */
|
|
||||||
private $fetchesGroup;
|
|
||||||
|
|
||||||
/** @var FetchesCompany */
|
|
||||||
private $fetchesCompany;
|
|
||||||
|
|
||||||
/** @var CalculatesTransactionServiceCharge */
|
|
||||||
private $calculatesTransactionServiceCharge;
|
|
||||||
|
|
||||||
/** @var UpdatesTransaction */
|
|
||||||
private $updatesTransaction;
|
|
||||||
|
|
||||||
/** @var CalculatesTransactionTransferFee */
|
|
||||||
private $calculatesTransactionTransferFee;
|
|
||||||
|
|
||||||
/** @var CreatesDocument */
|
|
||||||
private $createsDocument;
|
|
||||||
|
|
||||||
/** @var CreatesFiles */
|
|
||||||
private $createsFile;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* UpdateGroupLogic constructor.
|
|
||||||
* @param FetchesGroup $fetchesGroup
|
|
||||||
* @param FetchesCompany $fetchesCompany
|
|
||||||
* @param CalculatesTransactionServiceCharge $calculatesTransactionServiceCharge
|
|
||||||
* @param UpdatesTransaction $updatesTransaction
|
|
||||||
* @param CalculatesTransactionTransferFee $calculatesTransactionTransferFee
|
|
||||||
* @param CreatesDocument $createsDocument
|
|
||||||
* @param CreatesFiles $createsFile
|
|
||||||
*/
|
|
||||||
public function __construct(FetchesGroup $fetchesGroup, FetchesCompany $fetchesCompany, CalculatesTransactionServiceCharge $calculatesTransactionServiceCharge, UpdatesTransaction $updatesTransaction, CalculatesTransactionTransferFee $calculatesTransactionTransferFee, CreatesDocument $createsDocument, CreatesFiles $createsFile)
|
|
||||||
{
|
|
||||||
$this->fetchesGroup = $fetchesGroup;
|
|
||||||
$this->fetchesCompany = $fetchesCompany;
|
|
||||||
$this->calculatesTransactionServiceCharge = $calculatesTransactionServiceCharge;
|
|
||||||
$this->updatesTransaction = $updatesTransaction;
|
|
||||||
$this->calculatesTransactionTransferFee = $calculatesTransactionTransferFee;
|
|
||||||
$this->createsDocument = $createsDocument;
|
|
||||||
$this->createsFile = $createsFile;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @return JsonResponse
|
|
||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
|
||||||
*/
|
|
||||||
public function logic(Request $request) : JsonResponse
|
|
||||||
{
|
|
||||||
$group = $this->fetchesGroup->execute(['id' => $request->route('id')]);
|
|
||||||
|
|
||||||
$transactions = $group->transactions()->get();
|
|
||||||
|
|
||||||
$rate = $request->input('rate');
|
|
||||||
|
|
||||||
$supplier = $this->fetchesCompany->execute(['id' => $request->input('supplier_id')]);
|
|
||||||
|
|
||||||
// $group->transactions()->update(['issuer' => $supplier->id, 'currency_rate' => $rate]);
|
|
||||||
// $group->transactions()->update(['amount' => DB::raw('(original_amount * (1 / currency_rate)) + service_charge + tax')]);
|
|
||||||
|
|
||||||
|
|
||||||
foreach($transactions as $transaction) {
|
|
||||||
|
|
||||||
$constant = SegmentConstant::where('reference', SegmentConstants::SERVICE_CHARGE)->where('detail->id', $supplier->id)->first();
|
|
||||||
$serviceCharge = $this->calculatesTransactionServiceCharge->execute($transaction->original_amount, $rate, $constant);
|
|
||||||
|
|
||||||
$object = new TransactionObject(
|
|
||||||
$transaction->bill_no,
|
|
||||||
TransactionType::BILL,
|
|
||||||
$supplier->id,
|
|
||||||
1,
|
|
||||||
$supplier->banks()->where('default', true)->first()->id,
|
|
||||||
PaymentMethodType::CASH,
|
|
||||||
$transaction->original_amount * (1 / $rate),
|
|
||||||
$transaction->original_amount,
|
|
||||||
1,
|
|
||||||
$transaction->original_currency_id,
|
|
||||||
$rate,
|
|
||||||
0,
|
|
||||||
$serviceCharge,
|
|
||||||
null,
|
|
||||||
ApprovalStatus::PENDING_VERIFICATION
|
|
||||||
);
|
|
||||||
|
|
||||||
$billTransaction = $this->updatesTransaction->execute($transaction, $object);
|
|
||||||
|
|
||||||
$transferTransaction = $transaction->transactions()->where('type', TransactionType::TRANSFER_FEE)->first();
|
|
||||||
|
|
||||||
$transferFee = $this->calculatesTransactionTransferFee->execute($billTransaction->original_amount, $constant);
|
|
||||||
|
|
||||||
$object = new TransactionObject(
|
|
||||||
$transferTransaction->bill_no,
|
|
||||||
TransactionType::TRANSFER_FEE,
|
|
||||||
$supplier->id,
|
|
||||||
1,
|
|
||||||
$supplier->banks()->where('default', true)->first()->id,
|
|
||||||
PaymentMethodType::CASH,
|
|
||||||
$transaction->original_amount,
|
|
||||||
$transaction->original_amount,
|
|
||||||
$transaction->original_currency_id,
|
|
||||||
$transaction->original_currency_id,
|
|
||||||
1,
|
|
||||||
0,
|
|
||||||
$transferFee,
|
|
||||||
null,
|
|
||||||
ApprovalStatus::PENDING_VERIFICATION
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->updatesTransaction->execute($transferTransaction, $object);
|
|
||||||
}
|
|
||||||
|
|
||||||
$group->issuer = $supplier->id;
|
|
||||||
$group->amount = $group->transactions()->sum('amount');
|
|
||||||
$group->currency_rate = $rate;
|
|
||||||
$group->tax = $group->transactions()->sum('tax');
|
|
||||||
$group->service_charge = $group->transactions()->sum('service_charge');
|
|
||||||
|
|
||||||
$group->save();
|
|
||||||
|
|
||||||
$group->documents()->delete();
|
|
||||||
|
|
||||||
$transferFeeTransactions = $group->transactions()->with([
|
|
||||||
'transactions' => function ($transaction) {
|
|
||||||
return $transaction->where('type', TransactionType::TRANSFER_FEE);
|
|
||||||
}])->get()->pluck('transactions')->flatten();
|
|
||||||
|
|
||||||
$pdf = LaravelMpdf::loadView('pages.pdfs.currency_vendor_order', ['transactions' => $group->transactions, 'transferFeeTransactions' => $transferFeeTransactions, 'supplier' => $supplier]);
|
|
||||||
|
|
||||||
$object = new DocumentObject(
|
|
||||||
DocumentType::CURRENCY_VENDOR_ORDER,
|
|
||||||
[chunk_split('data:application/pdf;base64,'.base64_encode($pdf->output()))],
|
|
||||||
'',
|
|
||||||
ApprovalStatus::COMPLETED,
|
|
||||||
'currency_vendor_order'
|
|
||||||
);
|
|
||||||
|
|
||||||
/** @var Document $document */
|
|
||||||
$document = $this->createsDocument->execute($group, $object);
|
|
||||||
$this->createsFile->execute($document, $object);
|
|
||||||
|
|
||||||
return $this->resourceResponse(new GroupResource($group));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
-3
@@ -16,7 +16,6 @@ use App\Classes\Modules\Documents\Services\CreatesFiles;
|
|||||||
use App\Classes\Modules\Documents\Services\CreatesDocument;
|
use App\Classes\Modules\Documents\Services\CreatesDocument;
|
||||||
use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject;
|
use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject;
|
||||||
use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus;
|
use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus;
|
||||||
use App\Classes\Jobs\CreatePerfexCRMInvoice;
|
|
||||||
|
|
||||||
class ApproveShippingInvoiceTransactionProcessor
|
class ApproveShippingInvoiceTransactionProcessor
|
||||||
{
|
{
|
||||||
@@ -30,7 +29,6 @@ class ApproveShippingInvoiceTransactionProcessor
|
|||||||
/** @var CreatesFiles */
|
/** @var CreatesFiles */
|
||||||
private $createsFiles;
|
private $createsFiles;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param UpdatesTransactionStatus $updatesTransactionStatus
|
* @param UpdatesTransactionStatus $updatesTransactionStatus
|
||||||
* @param CreatesDocument $createsDocument
|
* @param CreatesDocument $createsDocument
|
||||||
@@ -74,7 +72,6 @@ class ApproveShippingInvoiceTransactionProcessor
|
|||||||
if(app()->environment(['production'])) {
|
if(app()->environment(['production'])) {
|
||||||
$user->notify(new InvoiceIssuedEmail($user, $packingList));
|
$user->notify(new InvoiceIssuedEmail($user, $packingList));
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,173 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Transactions\Processors;
|
|
||||||
|
|
||||||
use App\Classes\Exceptions\MalformedRequestException;
|
|
||||||
use App\Classes\Modules\Transactions\Services\FetchesTransaction;
|
|
||||||
use App\Classes\Modules\Transactions\Services\GeneratesTransactionBillNumber;
|
|
||||||
use App\Classes\Modules\Transactions\Services\CreatesPaymentTransaction;
|
|
||||||
use App\Classes\Modules\Transactions\Services\CreatesTransactionDetail;
|
|
||||||
use App\Classes\Modules\Billplzs\Services\CreatesBillplzBill;
|
|
||||||
use App\Classes\Modules\Transactions\Services\CreatesTransactionableTransaction;
|
|
||||||
use App\Classes\Modules\Transactions\DataTransferObjects\TransactionObject;
|
|
||||||
use App\Classes\ValueObjects\Constants\TransactionType;
|
|
||||||
use App\Classes\ValueObjects\Constants\PaymentMethodType;
|
|
||||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
|
||||||
use App\Classes\Modules\Wallets\Services\UpdatesWalletBalance;
|
|
||||||
use App\Models\Transaction;
|
|
||||||
use App\Models\Wallet;
|
|
||||||
use App\Classes\Modules\Orders\Processors\UpdateDoFromVTPortalProcessor;
|
|
||||||
use App\Classes\Modules\Orders\Processors\UpdateDoFromYDPortalProcessor;
|
|
||||||
use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus;
|
|
||||||
|
|
||||||
class CreatePaymentTransactionProcessor
|
|
||||||
{
|
|
||||||
|
|
||||||
/** @var GeneratesTransactionBillNumber */
|
|
||||||
private $generatesTransactionBillNumber;
|
|
||||||
|
|
||||||
/** @var CreatesPaymentTransaction */
|
|
||||||
private $createsPaymentTransaction;
|
|
||||||
|
|
||||||
/** @var CreatesBillplzBill */
|
|
||||||
private $createsBillplzBill;
|
|
||||||
|
|
||||||
/** @var CreatesTransactionableTransaction */
|
|
||||||
private $createsTransactionableTransaction;
|
|
||||||
|
|
||||||
/** @var UpdatesWalletBalance */
|
|
||||||
private $updatesWalletBalance;
|
|
||||||
|
|
||||||
/** @var UpdateDoFromVTPortalProcessor */
|
|
||||||
private $updateDoFromVTPortalProcessor;
|
|
||||||
|
|
||||||
/** @var UpdateDoFromYDPortalProcessor */
|
|
||||||
private $updateDoFromYDPortalProcessor ;
|
|
||||||
|
|
||||||
/** @var UpdatesTransactionStatus */
|
|
||||||
private $updatesTransactionStatus ;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param FetchesTransaction $fetchesTransaction,
|
|
||||||
* @param GeneratesTransactionBillNumber $generatesTransactionBillNumber,
|
|
||||||
* @param CreatesPaymentTransaction $createsPaymentTransaction
|
|
||||||
* @param CreatesTransactionDetail $createsTransactionDetail
|
|
||||||
* @param CreatesBillplzBill $createsBillplzBil
|
|
||||||
* @param CreatesTransactionableTransaction $createsTransactionableTransaction
|
|
||||||
* @param UpdatesWalletBalance $updatesWalletBalance
|
|
||||||
* @param UpdateDoFromVTPortalProcessor $updateDoFromVTPortalProcessor
|
|
||||||
* @param UpdateDoFromYDPortalProcessor $updateDoFromYDPortalProcessor
|
|
||||||
* @param UpdatesTransactionStatus $updatesTransactionStatus
|
|
||||||
*/
|
|
||||||
public function __construct(
|
|
||||||
GeneratesTransactionBillNumber $generatesTransactionBillNumber,
|
|
||||||
CreatesPaymentTransaction $createsPaymentTransaction,
|
|
||||||
CreatesBillplzBill $createsBillplzBill,
|
|
||||||
CreatesTransactionableTransaction $createsTransactionableTransaction,
|
|
||||||
UpdatesWalletBalance $updatesWalletBalance,
|
|
||||||
UpdateDoFromVTPortalProcessor $updateDoFromVTPortalProcessor,
|
|
||||||
UpdateDoFromYDPortalProcessor $updateDoFromYDPortalProcessor,
|
|
||||||
UpdatesTransactionStatus $updatesTransactionStatus
|
|
||||||
)
|
|
||||||
{
|
|
||||||
$this->generatesTransactionBillNumber = $generatesTransactionBillNumber;
|
|
||||||
$this->createsPaymentTransaction = $createsPaymentTransaction;
|
|
||||||
$this->createsBillplzBill = $createsBillplzBill;
|
|
||||||
$this->createsTransactionableTransaction = $createsTransactionableTransaction;
|
|
||||||
$this->updatesWalletBalance = $updatesWalletBalance;
|
|
||||||
$this->updateDoFromVTPortalProcessor = $updateDoFromVTPortalProcessor;
|
|
||||||
$this->updateDoFromYDPortalProcessor = $updateDoFromYDPortalProcessor;
|
|
||||||
$this->updatesTransactionStatus = $updatesTransactionStatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @throws MalformedRequestException
|
|
||||||
*/
|
|
||||||
public function execute(Transaction $invoice, $payment_method, $bank_code)
|
|
||||||
{
|
|
||||||
$amount = $invoice->amount;
|
|
||||||
$company_module = $invoice->owner()->first()->owner()->first()->companyModule()->first();
|
|
||||||
$approvalStatus = ApprovalStatus::PENDING_SUBMISSION;
|
|
||||||
$billNumber = $this->generatesTransactionBillNumber->execute('PYMT-');
|
|
||||||
$payment_reference = null;
|
|
||||||
|
|
||||||
if ($payment_method == PaymentMethodType::PAYMENT_GATEWAY) {
|
|
||||||
|
|
||||||
// create billplz transaction
|
|
||||||
$payment_method = PaymentMethodType::PAYMENT_GATEWAY;
|
|
||||||
$billPlzBill = $this->createsBillplzBill->execute(
|
|
||||||
$company_module->name,
|
|
||||||
(app()->environment(['production'])) ? $company_module->employees()->first()->email : 'uldvstar@gmail.com',
|
|
||||||
'This payment is for the invoice number . ' . $billNumber,
|
|
||||||
$amount,
|
|
||||||
$billNumber,
|
|
||||||
$bank_code,
|
|
||||||
true
|
|
||||||
);
|
|
||||||
|
|
||||||
$payment_reference = $billPlzBill->id;
|
|
||||||
}
|
|
||||||
else if ($payment_method === PaymentMethodType::WALLET) {
|
|
||||||
/** @var Wallet $wallet */
|
|
||||||
$wallet = $company_module->wallets()->first();
|
|
||||||
|
|
||||||
if((float) number_format(($wallet->amount - $amount),2) < 0){
|
|
||||||
throw new MalformedRequestException('Insufficient wallet balance. Please Top up your wallet.');
|
|
||||||
}
|
|
||||||
|
|
||||||
$walletPaymentBillNumber = $this->generatesTransactionBillNumber->execute('PYMT-');
|
|
||||||
|
|
||||||
$transaction_object = new TransactionObject($walletPaymentBillNumber, TransactionType::PAYMENT, 1, $company_module->id, 1, PaymentMethodType::WALLET, $amount, $amount, 1, 1, 1, 0, 0, null, ApprovalStatus::APPROVED, [], '');
|
|
||||||
$transaction = $this->createsTransactionableTransaction->execute($wallet, $transaction_object);
|
|
||||||
|
|
||||||
$payment_reference = $walletPaymentBillNumber;
|
|
||||||
|
|
||||||
$this->updatesWalletBalance->execute($wallet, ($amount * -1));
|
|
||||||
|
|
||||||
$packingList = $invoice->owner;
|
|
||||||
$order = $packingList->owner;
|
|
||||||
$packingList->status = ApprovalStatus::APPROVED;
|
|
||||||
$packingList->save();
|
|
||||||
|
|
||||||
if(app()->environment('production')){
|
|
||||||
$this->updateDoFromVTPortalProcessor->execute($packingList);
|
|
||||||
$this->updateDoFromYDPortalProcessor->execute($packingList);
|
|
||||||
}
|
|
||||||
|
|
||||||
// later use this variabke to create a approved payment transaction
|
|
||||||
$approvalStatus = ApprovalStatus::APPROVED;
|
|
||||||
|
|
||||||
// update invoice to completed
|
|
||||||
$this->updatesTransactionStatus->execute($invoice, ApprovalStatus::COMPLETED);
|
|
||||||
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$payment_method = PaymentMethodType::CASH;
|
|
||||||
}
|
|
||||||
|
|
||||||
$object = new TransactionObject(
|
|
||||||
$billNumber,
|
|
||||||
TransactionType::PAYMENT,
|
|
||||||
$company_module->id,
|
|
||||||
1,
|
|
||||||
1,
|
|
||||||
$payment_method,
|
|
||||||
$amount,
|
|
||||||
$amount,
|
|
||||||
1,
|
|
||||||
1,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
null,
|
|
||||||
$approvalStatus,
|
|
||||||
null,
|
|
||||||
$payment_reference
|
|
||||||
);
|
|
||||||
|
|
||||||
$payment_transaction = $this->createsPaymentTransaction->execute($invoice, $object);
|
|
||||||
|
|
||||||
return $payment_transaction;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Transactions\Processors;
|
|
||||||
|
|
||||||
use App\Classes\Modules\Wallets\DataTransferObjects\WalletObject;
|
|
||||||
use App\Classes\Modules\Transactions\Services\FetchesTransaction;
|
|
||||||
use App\Classes\Modules\Wallets\Services\FetchesWallet;
|
|
||||||
use App\Classes\Modules\Wallets\Services\UpdatesWallet;
|
|
||||||
use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus;
|
|
||||||
use App\Classes\Modules\Transactions\DataTransferObjects\TransactionObject;
|
|
||||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
|
||||||
use App\Classes\ValueObjects\Constants\TransactionType;
|
|
||||||
use App\Classes\ValueObjects\Constants\PaymentMethodType;
|
|
||||||
use App\Models\Wallet;
|
|
||||||
|
|
||||||
class UpdateWalletTransactionProcessor
|
|
||||||
{
|
|
||||||
/** @var CreatesWalletTransaction */
|
|
||||||
private $createsWalletTransaction;
|
|
||||||
|
|
||||||
/** @var FetchesTransaction */
|
|
||||||
private $fetchesTransaction;
|
|
||||||
|
|
||||||
/** @var ListWallet */
|
|
||||||
private $fetchesWallet;
|
|
||||||
|
|
||||||
/** @var UpdatesTransactionStatus */
|
|
||||||
private $updatesTransactionStatus;
|
|
||||||
|
|
||||||
/** @var UpdatesWallet */
|
|
||||||
private $updatesWallet;
|
|
||||||
|
|
||||||
public function __construct(FetchesTransaction $fetchesTransaction, UpdatesTransactionStatus $updatesTransactionStatus, UpdatesWallet $updatesWallet)
|
|
||||||
{
|
|
||||||
$this->fetchesTransaction = $fetchesTransaction;
|
|
||||||
$this->updatesTransactionStatus = $updatesTransactionStatus;
|
|
||||||
$this->updatesWallet = $updatesWallet;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Booking $booking
|
|
||||||
* @return void
|
|
||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
|
||||||
*/
|
|
||||||
public function execute(int $transactionId, int $transactionStatus)
|
|
||||||
{
|
|
||||||
|
|
||||||
$transaction = $this->fetchesTransaction->execute(['id' => $transactionId]);
|
|
||||||
$wallet = $transaction->wallet;
|
|
||||||
|
|
||||||
switch($transaction->type){
|
|
||||||
case TransactionType::TOP_UP:
|
|
||||||
$updateWalletAmount = $transaction->amount + $wallet->amount;
|
|
||||||
break;
|
|
||||||
case TransactionType::WITHDRAW:
|
|
||||||
$updateWalletAmount = $wallet->amount - $transaction->amount;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
$walletOject = new WalletObject( $wallet->company->id, $wallet->currency_id, $wallet->code, $updateWalletAmount);
|
|
||||||
|
|
||||||
$this->updatesTransactionStatus->execute($transaction, $transactionStatus);
|
|
||||||
|
|
||||||
$this->updatesWallet->execute($wallet, $walletOject);
|
|
||||||
|
|
||||||
return $wallet;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Transactions\Services;
|
|
||||||
|
|
||||||
use App\Classes\General\Eloquent\AbstractUpdateRelationshipRecord;
|
|
||||||
use App\Classes\General\Interfaces\Transactionable;
|
|
||||||
use App\Classes\Modules\Transactions\DataTransferObjects\TransactionObject;
|
|
||||||
use App\Models\Transaction;
|
|
||||||
|
|
||||||
class CreatesTransactionableTransaction extends AbstractUpdateRelationshipRecord
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param Transactionable $transactionable
|
|
||||||
* @param TransactionObject $object
|
|
||||||
* @return \Illuminate\Database\Eloquent\Model
|
|
||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
|
||||||
*/
|
|
||||||
public function execute(Transactionable $transactionable, TransactionObject $object) {
|
|
||||||
$model = new Transaction();
|
|
||||||
$model->bill_no = $object->getBillNo();
|
|
||||||
$model->type = $object->getTransactionType();
|
|
||||||
$model->issuer = $object->getIssuer();
|
|
||||||
$model->receiver = $object->getReceiver();
|
|
||||||
$model->recipient_bank_account_id = $object->getRecipientBankAccountId();
|
|
||||||
$model->payment_method = $object->getPaymentMethod();
|
|
||||||
$model->amount = $object->getAmount();
|
|
||||||
$model->original_amount = $object->getOriginalAmount();
|
|
||||||
$model->currency_id = $object->getCurrencyId();
|
|
||||||
$model->original_currency_id = $object->getOriginalCurrencyId();
|
|
||||||
$model->currency_rate = $object->getCurrencyRate();
|
|
||||||
$model->tax = $object->getTax();
|
|
||||||
$model->service_charge = $object->getServiceCharge();
|
|
||||||
$model->expires_on = $object->getExpiresOn();
|
|
||||||
$model->status = $object->getStatus();
|
|
||||||
$model->payment_reference = $object->getPaymentReference();
|
|
||||||
|
|
||||||
return $this->handler($transactionable->transactions(), $model);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Transactions\Services;
|
|
||||||
|
|
||||||
use App\Models\Group;
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
use App\Classes\General\Eloquent\AbstractListRecord;
|
|
||||||
|
|
||||||
class ListsGroups extends AbstractListRecord
|
|
||||||
{
|
|
||||||
/** @var Group */
|
|
||||||
private $repository;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ListsBookings constructor.
|
|
||||||
* @param Group $repository
|
|
||||||
*/
|
|
||||||
public function __construct(Group $repository)
|
|
||||||
{
|
|
||||||
$this->repository = $repository;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return Builder
|
|
||||||
*/
|
|
||||||
public function getRepository(): Builder
|
|
||||||
{
|
|
||||||
return $this->repository->newQuery();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user