mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/shipping-portal.git
synced 2026-08-21 13:34:00 +00:00
Compare commits
20 Commits
development
..
test
| Author | SHA1 | Date | |
|---|---|---|---|
| 25cc1ffc42 | |||
| 358dcfa81a | |||
| 0570fef268 | |||
| 1d3042728c | |||
| bdc71c3ab6 | |||
| 902c72b225 | |||
| fafa3be998 | |||
| 96ff2f5e15 | |||
| bb1daa48a4 | |||
| 758624b29c | |||
| ffb5edc6e9 | |||
| 6902dc36c0 | |||
| c853b6dfea | |||
| df1cb83aa2 | |||
| d09a8a8b8d | |||
| 8347b2c1db | |||
| 37570193e7 | |||
| c0fdb44996 | |||
| a7429554f6 | |||
| dcfb73c952 |
@@ -61,11 +61,3 @@ JWT_SECRET=Btj63iMEleEaww6Bb2IBECkxWn7YHPhhPFluAkg9DfcQik0qDRy6QW75ABGmPT2h
|
|||||||
PERFEXCRM_BASE_URL=""
|
PERFEXCRM_BASE_URL=""
|
||||||
PERFEXCRM_API_KEY=""
|
PERFEXCRM_API_KEY=""
|
||||||
PERFEXCRM_IS_ENABLED="false"
|
PERFEXCRM_IS_ENABLED="false"
|
||||||
|
|
||||||
WEPOST_BASE_URL=https://wepost-uat.90warehouse.com/api/router
|
|
||||||
WEPOST_CLIENT_ID=1234
|
|
||||||
WEPOST_CLIENT_SECRET=cief-secret-temp
|
|
||||||
WEPOST_IS_ENABLED=false
|
|
||||||
|
|
||||||
STORAGE_FEE_LAUNCH_DATE="2023-12-11 00:00:00"
|
|
||||||
SST_START_DATE="2024-04-01 00:00:00"
|
|
||||||
|
|||||||
@@ -27,3 +27,6 @@ package-lock.json
|
|||||||
public/*
|
public/*
|
||||||
/public/*
|
/public/*
|
||||||
storage/framework/laravel-excel/*
|
storage/framework/laravel-excel/*
|
||||||
|
.vapor/
|
||||||
|
.env.production
|
||||||
|
.env.staging
|
||||||
|
|||||||
+39
-111
@@ -1,120 +1,48 @@
|
|||||||
image: php:7.4
|
image: php:7.4
|
||||||
stages:
|
stages:
|
||||||
- service_build
|
- deploy
|
||||||
- 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
|
||||||
|
|
||||||
#buld the backend
|
# Install PDO MySQL extension
|
||||||
composer_php:
|
- docker-php-ext-install pdo_mysql
|
||||||
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
|
||||||
- cp .env.example .env
|
- vendor/bin/vapor deploy production --message="$CI_COMMIT_MESSAGE"
|
||||||
- php artisan key:generate
|
only:
|
||||||
rules:
|
- test
|
||||||
- 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 =~ /.*/'
|
|
||||||
|
|
||||||
#mysql
|
|
||||||
#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 =~ /.*/'
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Exceptions;
|
|
||||||
|
|
||||||
use App\Classes\ValueObjects\Constants\HttpStatus;
|
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
final class ConnectionErrorException extends ServiceApiException {
|
|
||||||
public function __construct(?string $message = null, ?string $exceptionMessage = null, ?string $payload = null, ?string $exceptionTrace = null) {
|
|
||||||
Log::error($message. ": ". $exceptionMessage);
|
|
||||||
if($payload){
|
|
||||||
Log::error('Payload: '.$payload);
|
|
||||||
}
|
|
||||||
if($exceptionTrace){
|
|
||||||
Log::error($exceptionTrace);
|
|
||||||
}
|
|
||||||
parent::__construct($message ?? 'A connection error has occurred. Please check application logs for more information.',
|
|
||||||
HttpStatus::SERVER_ERROR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Exceptions;
|
|
||||||
|
|
||||||
use App\Classes\ValueObjects\Constants\HttpStatus;
|
|
||||||
|
|
||||||
final class JobResourceNotFoundException extends ServiceApiException {
|
|
||||||
public function __construct(?string $message = null) {
|
|
||||||
parent::__construct($message ?? 'Unable to find the requested resource', HttpStatus::RESOURCE_NOT_FOUND);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,97 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Abstracts;
|
|
||||||
|
|
||||||
|
|
||||||
use App\Classes\Exceptions\ErrorException;
|
|
||||||
use App\Classes\Exceptions\InternalServerErrorException;
|
|
||||||
use App\Classes\ValueObjects\Constants\Notifications;
|
|
||||||
use App\Classes\ValueObjects\Constants\HttpStatus;
|
|
||||||
use App\Classes\ValueObjects\Response\ApiResponseObject;
|
|
||||||
use ErrorException as GeneralExceptions;
|
|
||||||
use TypeError;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
|
||||||
use Illuminate\Http\Resources\Json\JsonResource;
|
|
||||||
use Illuminate\Http\Resources\Json\ResourceCollection;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
|
||||||
|
|
||||||
abstract class Abstract2ControllerLogic
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
abstract protected function notification(): array;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
private function getNotificationTitle():string {
|
|
||||||
return $this->notification()['title'] ? $this->notification()['title']: Notifications::UNDEFINED['title'];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
private function getNotificationMessage():string {
|
|
||||||
return $this->notification()['message'] ? $this->notification()['message']: Notifications::UNDEFINED['message'];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @return BinaryFileResponse
|
|
||||||
* @throws ErrorException
|
|
||||||
*/
|
|
||||||
abstract protected function logic(Request $request) : BinaryFileResponse;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @return BinaryFileResponse
|
|
||||||
*/
|
|
||||||
public function execute(Request $request) : BinaryFileResponse {
|
|
||||||
|
|
||||||
try {
|
|
||||||
|
|
||||||
DB::beginTransaction();
|
|
||||||
|
|
||||||
$response = $this->logic($request);
|
|
||||||
|
|
||||||
DB::commit();
|
|
||||||
|
|
||||||
return $response;
|
|
||||||
|
|
||||||
} catch (ErrorException|GeneralExceptions|TypeError $exception){
|
|
||||||
abort(404, $exception->getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param array|null $data
|
|
||||||
* @return JsonResponse
|
|
||||||
*/
|
|
||||||
public function response(?array $data = []) : JsonResponse {
|
|
||||||
|
|
||||||
return (new ApiResponseObject($this->getNotificationTitle().' Successful',
|
|
||||||
$this->getNotificationMessage(),
|
|
||||||
HttpStatus::OK_WITH_MESSAGE, $data))->handler();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param JsonResource $resource
|
|
||||||
* @return JsonResponse
|
|
||||||
*/
|
|
||||||
public function resourceResponse(JsonResource $resource){
|
|
||||||
return $this->response(['data' => $resource]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param ResourceCollection $collection
|
|
||||||
* @return JsonResponse
|
|
||||||
*/
|
|
||||||
public function collectionResponse(ResourceCollection $collection){
|
|
||||||
return $this->response(json_decode($collection->response()->getContent(), true));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -15,8 +15,6 @@ use Illuminate\Http\Request;
|
|||||||
use Illuminate\Http\Resources\Json\JsonResource;
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
use Illuminate\Http\Resources\Json\ResourceCollection;
|
use Illuminate\Http\Resources\Json\ResourceCollection;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use App\Classes\Exceptions\JobResourceNotFoundException;
|
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
abstract class AbstractControllerLogic
|
abstract class AbstractControllerLogic
|
||||||
{
|
{
|
||||||
@@ -64,28 +62,9 @@ abstract class AbstractControllerLogic
|
|||||||
return $response;
|
return $response;
|
||||||
|
|
||||||
} catch (ErrorException|GeneralExceptions|TypeError $exception){
|
} catch (ErrorException|GeneralExceptions|TypeError $exception){
|
||||||
if ($request->has('isApiPub')) {
|
return (new ApiResponseObject($this->getNotificationTitle().' failed', $exception->getMessage(),
|
||||||
Log::error($exception);
|
|
||||||
return (new ApiResponseObject($this->getNotificationTitle().' failed', "Server Error",
|
|
||||||
!in_array($exception->getCode(), [0, 42000]) ? $exception->getCode() : HttpStatus::SERVER_ERROR))->handler();
|
!in_array($exception->getCode(), [0, 42000]) ? $exception->getCode() : HttpStatus::SERVER_ERROR))->handler();
|
||||||
|
|
||||||
} else {
|
|
||||||
if ($exception instanceof JobResourceNotFoundException) {
|
|
||||||
Log::channel('vue_polling')->info(sprintf(
|
|
||||||
"Uncaught exception '%s' with message '%s' in %s:%d",
|
|
||||||
get_class($exception),
|
|
||||||
$exception->getMessage(),
|
|
||||||
$exception->getTrace()[0]['file'],
|
|
||||||
$exception->getTrace()[0]['line']
|
|
||||||
));
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
Log::error($exception);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (new ApiResponseObject($this->getNotificationTitle().' failed', $exception->getMessage(),
|
|
||||||
!in_array($exception->getCode(), [0, 42000]) ? $exception->getCode() : HttpStatus::SERVER_ERROR))->handler();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ use App\Classes\General\Interfaces\DataTransferObject;
|
|||||||
abstract class AbstractRule
|
abstract class AbstractRule
|
||||||
{
|
{
|
||||||
|
|
||||||
abstract protected function authorized($object): bool;
|
abstract protected function authorized(): bool;
|
||||||
|
|
||||||
abstract protected function validators($object): bool;
|
abstract protected function validators($object): bool;
|
||||||
|
|
||||||
@@ -26,8 +26,8 @@ abstract class AbstractRule
|
|||||||
*/
|
*/
|
||||||
public function passes(?DataTransferObject $object = null): bool {
|
public function passes(?DataTransferObject $object = null): bool {
|
||||||
try {
|
try {
|
||||||
if(!$this->authorized($object)){
|
if(!$this->authorized()){
|
||||||
throw new AccessForbiddenException('You don\'t have permission to perform this action');
|
throw new AccessForbiddenException('You don\'t have permission to preform this action');
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->validators($object);
|
$this->validators($object);
|
||||||
@@ -36,7 +36,7 @@ abstract class AbstractRule
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
} catch(AccessForbiddenException $exception){
|
} catch(AccessForbiddenException $exception){
|
||||||
throw new AccessForbiddenException('You don\'t have permission to perform this action');
|
throw new AccessForbiddenException('You don\'t have permission to preform this action');
|
||||||
} catch(\Exception $exception){
|
} catch(\Exception $exception){
|
||||||
throw new RequestValidationException($exception->getMessage());
|
throw new RequestValidationException($exception->getMessage());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,8 +6,6 @@ namespace App\Classes\General\Eloquent;
|
|||||||
use App\Classes\Exceptions\ResourceNotFoundException;
|
use App\Classes\Exceptions\ResourceNotFoundException;
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use App\Classes\Exceptions\JobResourceNotFoundException;
|
|
||||||
|
|
||||||
|
|
||||||
abstract class AbstractFetchRecord extends AbstractGetRecord
|
abstract class AbstractFetchRecord extends AbstractGetRecord
|
||||||
{
|
{
|
||||||
@@ -28,15 +26,9 @@ abstract class AbstractFetchRecord extends AbstractGetRecord
|
|||||||
* @return Model
|
* @return Model
|
||||||
* @throws ResourceNotFoundException
|
* @throws ResourceNotFoundException
|
||||||
*/
|
*/
|
||||||
public function getResults(Builder $query, array $param = []): Model {
|
public function getResults(Builder $query): Model {
|
||||||
if(!$query->exists()){
|
if(!$query->exists()){
|
||||||
$table = $query->getModel()->getTable();
|
throw new ResourceNotFoundException('Unable to find any record based on the criteria provided');
|
||||||
if($table ==='job_results'){
|
|
||||||
throw new JobResourceNotFoundException('Unable to find any job based on the criteria provided');
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
throw new ResourceNotFoundException('Unable to find any record based on the criteria provided');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $query->first();
|
return $query->first();
|
||||||
|
|||||||
@@ -50,9 +50,9 @@ abstract class AbstractGetRecord
|
|||||||
* @param array $filters
|
* @param array $filters
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public function handler(array $filters, array $params = []){
|
public function handler(array $filters){
|
||||||
$this->filters = collect($filters);
|
$this->filters = collect($filters);
|
||||||
return $this->getResults($this->applyFiltersToQuery(), $params);
|
return $this->getResults($this->applyFiltersToQuery());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -65,6 +65,6 @@ abstract class AbstractGetRecord
|
|||||||
* @param Builder $query
|
* @param Builder $query
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
abstract function getResults(Builder $query, array $params = []);
|
abstract function getResults(Builder $query);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -16,10 +16,11 @@ abstract class AbstractListRecord extends AbstractGetRecord
|
|||||||
* @return mixed
|
* @return mixed
|
||||||
* @throws MalformedRequestException
|
* @throws MalformedRequestException
|
||||||
*/
|
*/
|
||||||
public function execute(array $filters = [], array $param = []){
|
public function execute(array $filters = []){
|
||||||
|
|
||||||
try{
|
try{
|
||||||
return $this->handler($filters, $param);
|
|
||||||
|
return $this->handler($filters);
|
||||||
|
|
||||||
} catch (QueryException $exception){
|
} catch (QueryException $exception){
|
||||||
throw new MalformedRequestException('Unable to fetch the list of records due to unexpected error');
|
throw new MalformedRequestException('Unable to fetch the list of records due to unexpected error');
|
||||||
@@ -31,7 +32,7 @@ abstract class AbstractListRecord extends AbstractGetRecord
|
|||||||
* @param Builder $query
|
* @param Builder $query
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public function getResults(Builder $query, array $param = []) {
|
public function getResults(Builder $query) {
|
||||||
$filters = $this->getDecorationFilters();
|
$filters = $this->getDecorationFilters();
|
||||||
|
|
||||||
if($filters->has('order_by')){
|
if($filters->has('order_by')){
|
||||||
@@ -43,12 +44,8 @@ abstract class AbstractListRecord extends AbstractGetRecord
|
|||||||
}
|
}
|
||||||
|
|
||||||
//dd($query->toSql());
|
//dd($query->toSql());
|
||||||
if(!empty($param)){
|
return $filters->has('per_page') ? $query->paginate($filters->get('per_page')) : $query->get();
|
||||||
return $filters->has('per_page') ? $query->paginate($filters->get('per_page'), ['*'], 'page', $param['page']) : $query->get(); //page data from query parameters e.g ?page=1
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
return $filters->has('per_page') ? $query->paginate($filters->get('per_page')) : $query->get();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class BillNo implements Filter
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return Builder|mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->where('bill_no', $value);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class CompanySegmentsIn implements Filter
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->whereHas('companyModules', function ($module) use ($value) {
|
|
||||||
$module->whereHas('connections', function ($connection) use ($value) {
|
|
||||||
$connection->whereHas('connectionSegments', function ($segment) use ($value) {
|
|
||||||
$segment->whereIn('segment_id', $value);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
|
|
||||||
use Carbon\Carbon;
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class CreatedAfterOrEqual implements Filter
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
$table = $builder->getModel()->getTable();
|
|
||||||
$startDate = Carbon::createFromFormat('d-m-Y', $value)->startOfDay();
|
|
||||||
return $builder->where("{$table}.created_at", '>=', $startDate);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Carbon\Carbon;
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class CreatedBeforeOrEqual implements Filter
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
$table = $builder->getModel()->getTable();
|
|
||||||
$endDate = Carbon::createFromFormat('d-m-Y', $value)->endOfDay();
|
|
||||||
return $builder->where("{$table}.created_at", '<=', $endDate);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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,5]);
|
$query->where('type', $value)->whereIn('status', [0,1,2,3]);
|
||||||
})->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,22 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class HasQuestionnaireGroupIn implements Filter
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return Builder|mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->whereHas('question.questionnaire', function (Builder $query) use ($value) {
|
|
||||||
$query->whereIn('group', $value);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class JobId implements Filter
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return Builder|mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->where('job_id', $value);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class MarkingIn implements Filter
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return Builder|mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->whereHas('companyModules', function ($module) use ($value) {
|
|
||||||
$module->whereHas('connections', function ($connection) use ($value) {
|
|
||||||
$connection->whereIn('invitee_reference', $value);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class OrderByIdDesc implements Filter
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return Builder|mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->orderBy('id', 'desc');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class OrderByUpdatedAtDesc implements Filter
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return Builder|mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->orderBy('updated_at', 'desc');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -14,8 +14,7 @@ class OwnerId implements Filter
|
|||||||
*/
|
*/
|
||||||
public static function apply(Builder $builder, $value)
|
public static function apply(Builder $builder, $value)
|
||||||
{
|
{
|
||||||
$table = $builder->getModel()->getTable();
|
return $builder->where('owner_id', $value);
|
||||||
return $builder->where("{$table}.owner_id", $value);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -14,8 +14,7 @@ class OwnerType implements Filter
|
|||||||
*/
|
*/
|
||||||
public static function apply(Builder $builder, $value)
|
public static function apply(Builder $builder, $value)
|
||||||
{
|
{
|
||||||
$table = $builder->getModel()->getTable();
|
return $builder->where('owner_type', $value);
|
||||||
return $builder->where("{$table}.owner_type", $value);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
-32
@@ -1,32 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
|
||||||
use App\Classes\ValueObjects\Constants\SegmentConstants;
|
|
||||||
use App\Classes\ValueObjects\Constants\TransactionType;
|
|
||||||
use App\Models\PackingList;
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
|
||||||
|
|
||||||
class PackingListLimitOneByTypeOrderedByInvoiceDate implements Filter
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return Builder|mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->select('packing_lists.*')->join('transactions', function($join){
|
|
||||||
$join->on('transactions.owner_id', '=', 'packing_lists.id');
|
|
||||||
$join->where('transactions.owner_type', '=', PackingList::class);
|
|
||||||
$join->where('transactions.status', '=', ApprovalStatus::APPROVED);
|
|
||||||
$join->whereRaw('(transactions.type <> 16 OR transactions.id = (
|
|
||||||
SELECT id FROM transactions WHERE owner_id = packing_lists.id AND type = 16 LIMIT 1
|
|
||||||
))');
|
|
||||||
})->orderBy('transactions.updated_at', 'DESC');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class PaymentMethodNotIn implements Filter
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return Builder|mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->whereNotIn('payment_method', $value);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class PostcodeLike implements Filter
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return Builder|mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->where('postcode', 'LIKE', '%'.$value.'%');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class RequestSignature implements Filter
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return Builder|mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->where('request_signature', $value);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class ResultNotNull implements Filter
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return Builder|mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->whereNotNull('result');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class ShortUrl implements Filter
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return Builder|mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->where('short_url', $value);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -14,8 +14,7 @@ class StatusIn implements Filter
|
|||||||
*/
|
*/
|
||||||
public static function apply(Builder $builder, $value)
|
public static function apply(Builder $builder, $value)
|
||||||
{
|
{
|
||||||
$table = $builder->getModel()->getTable();
|
return $builder->whereIn('status', $value);
|
||||||
return $builder->whereIn("{$table}.status", $value);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
use Carbon\Carbon;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class WithAgingColumn implements Filter
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
$today = Carbon::now();
|
|
||||||
return $builder->select('packing_lists.*')
|
|
||||||
->addSelect(DB::raw("DATEDIFF('$today', transactions.updated_at) as days_over_duedate"))
|
|
||||||
->addSelect(DB::raw("CASE
|
|
||||||
WHEN DATEDIFF('$today', transactions.updated_at) <= 0 THEN 0
|
|
||||||
WHEN DATEDIFF('$today', transactions.updated_at) > 0 AND DATEDIFF('$today', transactions.updated_at) <= 30 THEN 1
|
|
||||||
WHEN DATEDIFF('$today', transactions.updated_at) > 30 AND DATEDIFF('$today', transactions.updated_at) <= 60 THEN 2
|
|
||||||
WHEN DATEDIFF('$today', transactions.updated_at) > 60 AND DATEDIFF('$today', transactions.updated_at) <= 90 THEN 3
|
|
||||||
ELSE 4
|
|
||||||
END AS due_date_number"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
class WithContainersPackages implements Filter
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
// Log::info('WithContainersPackages: '.$value);
|
|
||||||
// return $builder->with(['containers', 'packages']);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class WithOrderReferenceLike implements Filter
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->join('transactions as t2', 't2.payment_reference', '=', 'transactions.bill_no')
|
|
||||||
->join('transactions as t3', 't3.id', '=', 't2.owner_id')
|
|
||||||
->join('packing_lists', 'packing_lists.id', '=', 't3.owner_id')
|
|
||||||
->join('orders', function ($join) use ($value) {
|
|
||||||
$join->on('orders.id', '=', 'packing_lists.owner_id')
|
|
||||||
->where('orders.reference', 'LIKE', '%'.$value.'%');
|
|
||||||
})
|
|
||||||
->addSelect(['transactions.*', 't2.id as paymentTransactionId', 't3.id as invoiceTransactionId', 'packing_lists.id as packingListId', 'orders.reference as orderReference']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Eloquent\Filters;
|
|
||||||
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class WithTrashed implements Filter
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder $builder
|
|
||||||
* @param $value
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public static function apply(Builder $builder, $value)
|
|
||||||
{
|
|
||||||
return $builder->withTrashed();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
namespace App\Classes\General;
|
namespace App\Classes\General;
|
||||||
|
|
||||||
use Illuminate\Http\Resources\Json\ResourceCollection;
|
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
@@ -25,11 +24,12 @@ class Helper
|
|||||||
return array_slice(get_class_methods($className), 1);
|
return array_slice(get_class_methods($className), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param $log
|
* @param $log
|
||||||
|
* @return none
|
||||||
*/
|
*/
|
||||||
static function debugLogger($log){
|
static function debugLoggerForPerfexCRM($log){
|
||||||
if($log && isset($log['message'])){
|
if($log){
|
||||||
$message = $log['message'];
|
$message = $log['message'];
|
||||||
$substring = 'No data were found';
|
$substring = 'No data were found';
|
||||||
if (isset($message)) {
|
if (isset($message)) {
|
||||||
@@ -41,12 +41,4 @@ class Helper
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param ResourceCollection $collection
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
static function collectionResponse(ResourceCollection $collection){
|
|
||||||
return json_decode($collection->response()->getContent(), true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General\Interfaces;
|
|
||||||
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Relations\MorphMany;
|
|
||||||
|
|
||||||
interface KeyValueInterface
|
|
||||||
{
|
|
||||||
|
|
||||||
public function attributes(): morphMany;
|
|
||||||
}
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\General;
|
|
||||||
|
|
||||||
|
|
||||||
class WePostHelper
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param string $clientId
|
|
||||||
* @param string $clientSecrent
|
|
||||||
* @param string $type
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
static function generateSignature(string $clientId, string $clientSecrent, string $type){
|
|
||||||
// public parameters
|
|
||||||
$timestamp = 1234; //time();
|
|
||||||
|
|
||||||
$params = [
|
|
||||||
'client_id' => $clientId,
|
|
||||||
'type' => $type,
|
|
||||||
'timestamp' => $timestamp
|
|
||||||
];
|
|
||||||
|
|
||||||
// $businessParams = [
|
|
||||||
// 'test1' => '1',
|
|
||||||
// ];
|
|
||||||
|
|
||||||
ksort($params);
|
|
||||||
$str = '';
|
|
||||||
foreach ($params as $key => $value) {
|
|
||||||
if(is_array($value)) {
|
|
||||||
$str .= $key.json_encode($value, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
$str .= $key. $value;
|
|
||||||
}
|
|
||||||
$str = $clientSecrent.$str.$clientSecrent;
|
|
||||||
$signature = strtoupper(md5($str));
|
|
||||||
return $signature;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -13,7 +13,6 @@ 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 Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
class FetchOrdersFromYDPortalJob implements ShouldQueue
|
class FetchOrdersFromYDPortalJob implements ShouldQueue
|
||||||
{
|
{
|
||||||
@@ -30,17 +29,12 @@ class FetchOrdersFromYDPortalJob implements ShouldQueue
|
|||||||
*/
|
*/
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
Log::info('FetchOrdersFromYDPortalJob starts');
|
|
||||||
Log::info('FetchPackingListsFromYdPortalProcessor starts');
|
|
||||||
(App()->make(FetchPackingListsFromYdPortalProcessor::class))->execute();
|
(App()->make(FetchPackingListsFromYdPortalProcessor::class))->execute();
|
||||||
Log::info('FetchContainersFromYdPortalProcessor starts');
|
|
||||||
(App()->make(FetchContainersFromYdPortalProcessor::class))->execute();
|
(App()->make(FetchContainersFromYdPortalProcessor::class))->execute();
|
||||||
Log::info('FetchContainersUpdatesFromYdPortalProcessor starts');
|
|
||||||
(App()->make(FetchContainersUpdatesFromYdPortalProcessor::class))->execute();
|
(App()->make(FetchContainersUpdatesFromYdPortalProcessor::class))->execute();
|
||||||
Log::info('FetchDeliveryUpdatesFromYdPortalProcessor starts');
|
|
||||||
(App()->make(FetchDeliveryUpdatesFromYdPortalProcessor::class))->execute();
|
(App()->make(FetchDeliveryUpdatesFromYdPortalProcessor::class))->execute();
|
||||||
Log::info('FetchOrdersFromYDPortalJob ends');
|
|
||||||
// (App()->make(FetchOrderListsFromYdPortalProcessor::class))->execute();
|
// (App()->make(FetchOrderListsFromYdPortalProcessor::class))->execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Jobs;
|
|
||||||
|
|
||||||
use App\Classes\Modules\PackingLists\Processors\ListPackingListsJobProcessor;
|
|
||||||
use App\Classes\Modules\Jobs\DataTransferObjects\ListGenericJobObject;
|
|
||||||
use Illuminate\Bus\Queueable;
|
|
||||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
||||||
use Illuminate\Foundation\Bus\Dispatchable;
|
|
||||||
use Illuminate\Queue\InteractsWithQueue;
|
|
||||||
use Illuminate\Queue\SerializesModels;
|
|
||||||
|
|
||||||
|
|
||||||
class ListPackingListsJob implements ShouldQueue
|
|
||||||
{
|
|
||||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
|
||||||
|
|
||||||
public $timeout = 900;
|
|
||||||
|
|
||||||
/** @var ListGenericJobObject */
|
|
||||||
private $listGenericJobObject;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ListPackingListsJob constructor.
|
|
||||||
* @param ListGenericJobObject $listGenericJobObject
|
|
||||||
*/
|
|
||||||
public function __construct(ListGenericJobObject $listGenericJobObject)
|
|
||||||
{
|
|
||||||
$this->listGenericJobObject = $listGenericJobObject;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function handle()
|
|
||||||
{
|
|
||||||
$rawPayload = $this->job->payload();
|
|
||||||
if(isset($rawPayload['data']['commandName'])){
|
|
||||||
$this->listGenericJobObject->setJobCommandName($rawPayload['data']['commandName']);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(isset($rawPayload['data']['command'])){
|
|
||||||
$this->listGenericJobObject->setJobCommand($rawPayload['data']['command']);
|
|
||||||
}
|
|
||||||
|
|
||||||
$result = (App()->make(ListPackingListsJobProcessor::class))->execute($this->listGenericJobObject);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -3,8 +3,6 @@
|
|||||||
namespace App\Classes\Jobs;
|
namespace App\Classes\Jobs;
|
||||||
|
|
||||||
use App\Classes\Modules\PerfexCRM\Processors\UpdatePerfexCRMProcessor;
|
use App\Classes\Modules\PerfexCRM\Processors\UpdatePerfexCRMProcessor;
|
||||||
use App\Classes\Modules\PerfexCRM\Processors\FetchPerfexCRMInvoiceProcessor;
|
|
||||||
use App\Models\Transaction;
|
|
||||||
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;
|
||||||
@@ -12,8 +10,6 @@ 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;
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMInvoiceObject;
|
||||||
use App\Classes\Modules\PerfexCRM\DataTransferObjects\FetchPerfexCRMInvoiceObject;
|
|
||||||
|
|
||||||
|
|
||||||
class UpdatePerfexCRM implements ShouldQueue
|
class UpdatePerfexCRM implements ShouldQueue
|
||||||
{
|
{
|
||||||
@@ -22,51 +18,37 @@ class UpdatePerfexCRM implements ShouldQueue
|
|||||||
/** @var UpdatePerfexCRMObject */
|
/** @var UpdatePerfexCRMObject */
|
||||||
private $updatePerfexCRMObject;
|
private $updatePerfexCRMObject;
|
||||||
|
|
||||||
|
/** @var UpdatePerfexCRMInvoice */
|
||||||
|
private $nextJob;
|
||||||
|
|
||||||
/** @var */
|
/** @var */
|
||||||
private $transaction;
|
private $transaction;
|
||||||
|
|
||||||
/** @var bool|null */
|
|
||||||
private $shouldCreateInvoice;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* UpdatePerfexCRM constructor.
|
* UpdatePerfexCRM constructor.
|
||||||
* @param UpdatePerfexCRMObject $updatePerfexCRMObject
|
* @param UpdatePerfexCRMObject $updatePerfexCRMObject
|
||||||
* @param Transaction $transaction
|
* @param UpdatePerfexCRMInvoice $nextJob
|
||||||
* @param bool|null $shouldCreateInvoice
|
* @param $transaction
|
||||||
*/
|
*/
|
||||||
public function __construct(UpdatePerfexCRMObject $updatePerfexCRMObject, $transaction, ?bool $shouldCreateInvoice = false)
|
public function __construct(UpdatePerfexCRMObject $updatePerfexCRMObject, $transaction, $nextJob)
|
||||||
{
|
{
|
||||||
$this->updatePerfexCRMObject = $updatePerfexCRMObject;
|
$this->updatePerfexCRMObject = $updatePerfexCRMObject;
|
||||||
|
$this->nextJob = $nextJob;
|
||||||
$this->transaction = $transaction;
|
$this->transaction = $transaction;
|
||||||
$this->shouldCreateInvoice = $shouldCreateInvoice;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
//To use invoice as a reference to decide whether more tasks should be created
|
|
||||||
$this->updatePerfexCRMObject->setInvoiceId($this->getInvoiceIdOrCreateInvoice());
|
|
||||||
|
|
||||||
$result = (App()->make(UpdatePerfexCRMProcessor::class))->execute($this->updatePerfexCRMObject);
|
$result = (App()->make(UpdatePerfexCRMProcessor::class))->execute($this->updatePerfexCRMObject);
|
||||||
if($this->transaction != null && $this->shouldCreateInvoice){
|
if($this->nextJob != null && $this->transaction != null){
|
||||||
$updatePerfexCRMInvoiceOject = new UpdatePerfexCRMInvoiceObject(
|
$updatePerfexCRMInvoiceOject = new UpdatePerfexCRMInvoiceObject(
|
||||||
$this->updatePerfexCRMObject->getContactEmail(),
|
$this->updatePerfexCRMObject->getContactEmail(),
|
||||||
$result->projectId,
|
$result->projectId,
|
||||||
$this->transaction,
|
$this->transaction,
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
UpdatePerfexCRMInvoice::dispatch($updatePerfexCRMInvoiceOject);
|
/** @var UpdatePerfexCRMInvoice $nextJob */
|
||||||
|
$this->nextJob::dispatch($updatePerfexCRMInvoiceOject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getInvoiceIdOrCreateInvoice(){
|
|
||||||
if($this->transaction != null){
|
|
||||||
$fetchPerfexCRMInvoiceObject = new FetchPerfexCRMInvoiceObject(
|
|
||||||
$this->updatePerfexCRMObject->getContactEmail(),
|
|
||||||
$this->transaction
|
|
||||||
);
|
|
||||||
$invoiceId = (App()->make(FetchPerfexCRMInvoiceProcessor::class))->execute($fetchPerfexCRMInvoiceObject);
|
|
||||||
return $invoiceId;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ class UpdatePerfexCRMInvoice implements ShouldQueue
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* CreatePerfexCRMSingleTask constructor.
|
* CreatePerfexCRMSingleTask constructor.
|
||||||
* @param UpdatePerfexCRMInvoiceObject $updatePerfexCRMInvoiceObject
|
* @param UpdatePerfexCRMInvoiceObject $createTaskPerfexCRMObject
|
||||||
*/
|
*/
|
||||||
public function __construct(UpdatePerfexCRMInvoiceObject $updatePerfexCRMInvoiceObject)
|
public function __construct(UpdatePerfexCRMInvoiceObject $updatePerfexCRMInvoiceObject)
|
||||||
{
|
{
|
||||||
@@ -49,7 +49,7 @@ class UpdatePerfexCRMInvoice implements ShouldQueue
|
|||||||
$invoiceId = 0;
|
$invoiceId = 0;
|
||||||
$invoiceStatus = 0;
|
$invoiceStatus = 0;
|
||||||
$invoice = (App()->make(FetchesPerfexCRMInvoice::class))->execute($customer->userid,"INV-", $transaction->owner->bill_no);
|
$invoice = (App()->make(FetchesPerfexCRMInvoice::class))->execute($customer->userid,"INV-", $transaction->owner->bill_no);
|
||||||
Log::channel('perfex_crm')->info('UpdatePerfexCRMInvoice debug bill_no: ' . $transaction->owner->bill_no . ', Project Id: ' . $this->updatePerfexCRMInvoiceObject->getProjectId());
|
Log::error(json_encode('UpdatePerfexCRMInvoice debug $transaction->owner->bill_no: '.$transaction->owner->bill_no));
|
||||||
|
|
||||||
if(is_null($invoice)){
|
if(is_null($invoice)){
|
||||||
$result = (App()->make(CreatePerfexCRMInvoiceProcessor::class))->execute($transaction->owner, $this->updatePerfexCRMInvoiceObject->getIsPaid());
|
$result = (App()->make(CreatePerfexCRMInvoiceProcessor::class))->execute($transaction->owner, $this->updatePerfexCRMInvoiceObject->getIsPaid());
|
||||||
@@ -57,7 +57,7 @@ class UpdatePerfexCRMInvoice implements ShouldQueue
|
|||||||
$invoiceId = $result->payload['id'];
|
$invoiceId = $result->payload['id'];
|
||||||
} else {
|
} else {
|
||||||
// Log::error(json_encode('UpdatePerfexCRMInvoice CreatePerfexCRMInvoiceProcessor failed'));
|
// Log::error(json_encode('UpdatePerfexCRMInvoice CreatePerfexCRMInvoiceProcessor failed'));
|
||||||
Log::channel('perfex_crm')->info('UpdatePerfexCRMInvoice CreatePerfexCRMInvoiceProcessor failed');
|
Helper::debugLoggerForPerfexCRM('UpdatePerfexCRMInvoice CreatePerfexCRMInvoiceProcessor failed');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
@@ -66,6 +66,7 @@ class UpdatePerfexCRMInvoice implements ShouldQueue
|
|||||||
|
|
||||||
//This only run when invoice already exist and the invoice does not have a PAID status
|
//This only run when invoice already exist and the invoice does not have a PAID status
|
||||||
if($invoiceStatus != PerfexCRMInvoiceStatus::PAID){
|
if($invoiceStatus != PerfexCRMInvoiceStatus::PAID){
|
||||||
|
Log::error(json_encode('UpdatePerfexCRMInvoice debug $this->updatePerfexCRMInvoiceObject->getProjectId(): '.$this->updatePerfexCRMInvoiceObject->getProjectId()));
|
||||||
//update invoice
|
//update invoice
|
||||||
(App()->make(UpdatesPerfexCRMInvoice::class))->execute($invoice, $this->updatePerfexCRMInvoiceObject->getProjectId());
|
(App()->make(UpdatesPerfexCRMInvoice::class))->execute($invoice, $this->updatePerfexCRMInvoiceObject->getProjectId());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,22 +27,27 @@ class UpdatePerfexCRMPrelude implements ShouldQueue
|
|||||||
/** @var UpdatePerfexCRMObject */
|
/** @var UpdatePerfexCRMObject */
|
||||||
private $updatePerfexCRMObject;
|
private $updatePerfexCRMObject;
|
||||||
|
|
||||||
/** @var bool|null */
|
/** @var UpdatePerfexCRM */
|
||||||
private $shouldCreateInvoice;
|
private $nextJob1;
|
||||||
|
|
||||||
|
/** @var UpdatePerfexCRMInvoice */
|
||||||
|
private $nextJob2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* UpdatePerfexCRMPrelude constructor.
|
* UpdatePerfexCRMPrelude constructor.
|
||||||
* @param $packingList
|
* @param $packingList
|
||||||
* @param Transaction $transaction
|
* @param $transaction
|
||||||
* @param UpdatePerfexCRMObject $updatePerfexCRMObject
|
* @param UpdatePerfexCRMObject $updatePerfexCRMObject
|
||||||
* @param bool|null $shouldCreateInvoice
|
* @param UpdatePerfexCRM $nextJob1
|
||||||
|
* @param UpdatePerfexCRMInvoice $nextJob2
|
||||||
*/
|
*/
|
||||||
public function __construct($packingList, $transaction, UpdatePerfexCRMObject $updatePerfexCRMObject, ?bool $shouldCreateInvoice = false)
|
public function __construct($packingList, $transaction, UpdatePerfexCRMObject $updatePerfexCRMObject, $nextJob1, $nextJob2)
|
||||||
{
|
{
|
||||||
$this->packingList = $packingList;
|
$this->packingList = $packingList;
|
||||||
$this->transaction = $transaction;
|
$this->transaction = $transaction;
|
||||||
$this->updatePerfexCRMObject = $updatePerfexCRMObject;
|
$this->updatePerfexCRMObject = $updatePerfexCRMObject;
|
||||||
$this->shouldCreateInvoice = $shouldCreateInvoice;
|
$this->nextJob1 = $nextJob1;
|
||||||
|
$this->nextJob2 = $nextJob2;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function handle()
|
public function handle()
|
||||||
@@ -64,7 +69,9 @@ class UpdatePerfexCRMPrelude implements ShouldQueue
|
|||||||
|
|
||||||
$result = $this->replacePlaceholders($this->updatePerfexCRMObject->getTasks(), $data);
|
$result = $this->replacePlaceholders($this->updatePerfexCRMObject->getTasks(), $data);
|
||||||
$this->updatePerfexCRMObject->setTasks($result);
|
$this->updatePerfexCRMObject->setTasks($result);
|
||||||
UpdatePerfexCRM::dispatch($this->updatePerfexCRMObject, $this->transaction, $this->shouldCreateInvoice);
|
/** @var UpdatePerfexCRM $nextJob1 */
|
||||||
|
/** @var UpdatePerfexCRMInvoice $nextJob2 */
|
||||||
|
$this->nextJob1::dispatch($this->updatePerfexCRMObject, $this->transaction, $this->nextJob2);
|
||||||
}
|
}
|
||||||
|
|
||||||
function replacePlaceholders($template, $data, $prefix = '')
|
function replacePlaceholders($template, $data, $prefix = '')
|
||||||
|
|||||||
@@ -28,8 +28,7 @@ use App\Classes\ValueObjects\Constants\CompanyType;
|
|||||||
use App\Classes\ValueObjects\Constants\RoleTypes;
|
use App\Classes\ValueObjects\Constants\RoleTypes;
|
||||||
|
|
||||||
use App\Classes\Jobs\CreatePerfexCRMCustomer;
|
use App\Classes\Jobs\CreatePerfexCRMCustomer;
|
||||||
use App\Classes\Modules\Accounts\Processors\RegisterOnExchangeProcessor;
|
|
||||||
use App\Classes\Modules\Companies\Services\ConnectCompanyModuleToExchangeCompany;
|
|
||||||
use App\Models\Company;
|
use App\Models\Company;
|
||||||
use App\Models\CompanyModule;
|
use App\Models\CompanyModule;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
@@ -37,8 +36,6 @@ use App\Models\User;
|
|||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\App;
|
use Illuminate\Support\Facades\App;
|
||||||
use Illuminate\Support\Facades\Http;
|
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
class CreateCustomerLogic extends AbstractControllerLogic
|
class CreateCustomerLogic extends AbstractControllerLogic
|
||||||
{
|
{
|
||||||
@@ -90,12 +87,6 @@ class CreateCustomerLogic extends AbstractControllerLogic
|
|||||||
/** @var CreatePerfexCRMLeadProcessor */
|
/** @var CreatePerfexCRMLeadProcessor */
|
||||||
private $createPerfexCRMLeadProcessor;
|
private $createPerfexCRMLeadProcessor;
|
||||||
|
|
||||||
/** @var RegisterOnExchangeProcessor */
|
|
||||||
private $registerOnExchangeProcessor;
|
|
||||||
|
|
||||||
/** @var ConnectCompanyModuleToExchangeCompany */
|
|
||||||
private $connectCompanyModuleToExchangeCompany;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CreateCustomerLogic constructor.
|
* CreateCustomerLogic constructor.
|
||||||
* @param CreateUserProcessor $createUserProcessor
|
* @param CreateUserProcessor $createUserProcessor
|
||||||
@@ -110,10 +101,8 @@ class CreateCustomerLogic extends AbstractControllerLogic
|
|||||||
* @param GenerateEmailVerificationAttemptProcessor $generateEmailVerificationAttemptProcessor
|
* @param GenerateEmailVerificationAttemptProcessor $generateEmailVerificationAttemptProcessor
|
||||||
* @param FetchesCompanyModule $fetchesCompanyModule
|
* @param FetchesCompanyModule $fetchesCompanyModule
|
||||||
* @param CreatePerfexCRMLeadProcessor $createPerfexCRMLeadProcessor
|
* @param CreatePerfexCRMLeadProcessor $createPerfexCRMLeadProcessor
|
||||||
* @param RegisterOnExchangeProcessor $registerOnExchangeProcessor
|
|
||||||
* @param ConnectCompanyModuleToExchangeCompany $connectCompanyModuleToExchangeCompany
|
|
||||||
*/
|
*/
|
||||||
public function __construct(CreateUserProcessor $createUserProcessor, CreateCompanyProcessor $createCompanyProcessor, CreateCompanyModuleProcessor $createCompanyModuleProcessor, CreateContactProcessor $createContactProcessor, CreatesCompanyConnection $createsCompanyConnection, ApprovesCompanyConnection $approvesCompanyConnection, AssignEmployeeProcessor $assignEmployeeProcessor, UploadIdentityDocumentProcessor $uploadIdentityDocumentProcessor, AuthenticationProcessor $authenticationProcessor, GenerateEmailVerificationAttemptProcessor $generateEmailVerificationAttemptProcessor, FetchesCompanyModule $fetchesCompanyModule, CreatePerfexCRMLeadProcessor $createPerfexCRMLeadProcessor, RegisterOnExchangeProcessor $registerOnExchangeProcessor, ConnectCompanyModuleToExchangeCompany $connectCompanyModuleToExchangeCompany)
|
public function __construct(CreateUserProcessor $createUserProcessor, CreateCompanyProcessor $createCompanyProcessor, CreateCompanyModuleProcessor $createCompanyModuleProcessor, CreateContactProcessor $createContactProcessor, CreatesCompanyConnection $createsCompanyConnection, ApprovesCompanyConnection $approvesCompanyConnection, AssignEmployeeProcessor $assignEmployeeProcessor, UploadIdentityDocumentProcessor $uploadIdentityDocumentProcessor, AuthenticationProcessor $authenticationProcessor, GenerateEmailVerificationAttemptProcessor $generateEmailVerificationAttemptProcessor, FetchesCompanyModule $fetchesCompanyModule, CreatePerfexCRMLeadProcessor $createPerfexCRMLeadProcessor)
|
||||||
{
|
{
|
||||||
$this->createUserProcessor = $createUserProcessor;
|
$this->createUserProcessor = $createUserProcessor;
|
||||||
$this->createCompanyProcessor = $createCompanyProcessor;
|
$this->createCompanyProcessor = $createCompanyProcessor;
|
||||||
@@ -127,8 +116,6 @@ class CreateCustomerLogic extends AbstractControllerLogic
|
|||||||
$this->generateEmailVerificationAttemptProcessor = $generateEmailVerificationAttemptProcessor;
|
$this->generateEmailVerificationAttemptProcessor = $generateEmailVerificationAttemptProcessor;
|
||||||
$this->fetchesCompanyModule = $fetchesCompanyModule;
|
$this->fetchesCompanyModule = $fetchesCompanyModule;
|
||||||
$this->createPerfexCRMLeadProcessor = $createPerfexCRMLeadProcessor;
|
$this->createPerfexCRMLeadProcessor = $createPerfexCRMLeadProcessor;
|
||||||
$this->registerOnExchangeProcessor = $registerOnExchangeProcessor;
|
|
||||||
$this->connectCompanyModuleToExchangeCompany = $connectCompanyModuleToExchangeCompany;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -166,7 +153,7 @@ class CreateCustomerLogic extends AbstractControllerLogic
|
|||||||
|
|
||||||
$this->assignEmployeeProcessor->execute($Object);
|
$this->assignEmployeeProcessor->execute($Object);
|
||||||
|
|
||||||
// $this->uploadIdentityDocumentProcessor->execute($request, $company);
|
$this->uploadIdentityDocumentProcessor->execute($request, $company);
|
||||||
|
|
||||||
if(config('perfexcrm.is_enabled') == 'true'){
|
if(config('perfexcrm.is_enabled') == 'true'){
|
||||||
// $this->createPerfexCRMLeadProcessor->execute($request);
|
// $this->createPerfexCRMLeadProcessor->execute($request);
|
||||||
@@ -180,34 +167,8 @@ class CreateCustomerLogic extends AbstractControllerLogic
|
|||||||
CreatePerfexCRMCustomer::dispatch($createLeadPerfexCRMObject);
|
CreatePerfexCRMCustomer::dispatch($createLeadPerfexCRMObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(app()->environment(['production'])){
|
|
||||||
// call wac webhook
|
|
||||||
$url = config('wagWebhookUrl.account_registration_url');
|
|
||||||
$payload = [
|
|
||||||
'name' => $request->input('name'),
|
|
||||||
'email' => $request->input('email'),
|
|
||||||
'phone' => $request->input('phone'),
|
|
||||||
'portal' => 'izyim'
|
|
||||||
];
|
|
||||||
$response = Http::post($url, $payload);
|
|
||||||
Log::channel('wac_webhook')->info('Register Account: ' . json_encode($response));
|
|
||||||
}
|
|
||||||
|
|
||||||
// $this->generateEmailVerificationAttemptProcessor->execute($user);
|
// $this->generateEmailVerificationAttemptProcessor->execute($user);
|
||||||
|
|
||||||
$exchangeCompanyId = null;
|
|
||||||
if ($request->input('exchange_company_id')) {
|
|
||||||
$exchangeCompanyId = $request->input('exchange_company_id');
|
|
||||||
} else {
|
|
||||||
// register account on exchange portal if this registration not coming from exchange
|
|
||||||
$exchangeCompanyId = $this->registerOnExchangeProcessor->execute($request, $companyModule->id);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($exchangeCompanyId) {
|
|
||||||
// create exchange company connection
|
|
||||||
$this->connectCompanyModuleToExchangeCompany->execute($companyModule, $exchangeCompanyId);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->response($this->authenticationProcessor->execute($request));
|
return $this->response($this->authenticationProcessor->execute($request));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,83 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Accounts\ControllersLogic;
|
|
||||||
|
|
||||||
use App\Classes\Exceptions\AccessUnauthorisedException;
|
|
||||||
use App\Classes\Modules\Accounts\Processors\AuthenticationProcessor;
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
||||||
use App\Classes\Modules\Accounts\Services\GeneratesAuthenticationToken;
|
|
||||||
use App\Classes\Modules\Accounts\Services\GeneratesAuthenticationTokenWithExchangeBookingId;
|
|
||||||
use App\Models\ExchangeCompanyConnection;
|
|
||||||
use App\Models\Order;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
class LoginThroughExchangeLogic extends AbstractControllerLogic
|
|
||||||
{
|
|
||||||
|
|
||||||
protected function notification():array {
|
|
||||||
return [
|
|
||||||
'title' => 'Authentication',
|
|
||||||
'message' => 'You have successfully logged in to your account'
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @var AuthenticationProcessor */
|
|
||||||
private $authenticationProcessor;
|
|
||||||
|
|
||||||
/** @var GeneratesAuthenticationToken */
|
|
||||||
private $generatesAuthenticationToken;
|
|
||||||
|
|
||||||
/** @var GeneratesAuthenticationTokenWithExchangeBookingId */
|
|
||||||
private $generatesAuthenticationTokenWithExchangeBookingId;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* LoginThroughExchangeLogic constructor.
|
|
||||||
* @param AuthenticationProcessor $authenticationProcessor
|
|
||||||
* @param GeneratesAuthenticationToken $generatesAuthenticationToken
|
|
||||||
* @param GeneratesAuthenticationTokenWithExchangeBookingId $generatesAuthenticationTokenWithExchangeBookingId
|
|
||||||
*/
|
|
||||||
public function __construct(GeneratesAuthenticationToken $generatesAuthenticationToken, GeneratesAuthenticationTokenWithExchangeBookingId $generatesAuthenticationTokenWithExchangeBookingId)
|
|
||||||
{
|
|
||||||
$this->generatesAuthenticationToken = $generatesAuthenticationToken;
|
|
||||||
$this->generatesAuthenticationTokenWithExchangeBookingId = $generatesAuthenticationTokenWithExchangeBookingId;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @return JsonResponse
|
|
||||||
* @throws \App\Classes\Exceptions\AccessForbiddenException
|
|
||||||
* @throws \App\Classes\Exceptions\AccessUnauthorisedException
|
|
||||||
* @throws \App\Classes\Exceptions\RequestValidationException
|
|
||||||
*/
|
|
||||||
protected function logic(Request $request): JsonResponse {
|
|
||||||
|
|
||||||
$token = explode('.', $request->input("exchangeToken"))[1];
|
|
||||||
$decodedToken = base64_decode($token);
|
|
||||||
$exchangeUser = json_decode($decodedToken, true)['user'];
|
|
||||||
$exchangeCompanyId = $exchangeUser['company_id'];
|
|
||||||
$connection = ExchangeCompanyConnection::where("exchange_company_id", $exchangeCompanyId)->first();
|
|
||||||
if (!$connection) {
|
|
||||||
throw new AccessUnauthorisedException('These credentials do not match our records.');
|
|
||||||
}
|
|
||||||
$companyModule = $connection->companyModule;
|
|
||||||
$user = $companyModule->employees->last();
|
|
||||||
|
|
||||||
$exchangeBookingId = null;
|
|
||||||
if (isset($exchangeUser['booking_id']) && $exchangeUser['booking_id']) {
|
|
||||||
$exchangeBookingId = $exchangeUser['booking_id'];
|
|
||||||
$token = $this->generatesAuthenticationTokenWithExchangeBookingId->execute($user, $exchangeBookingId);
|
|
||||||
|
|
||||||
return $this->response(['access_token' => $token, 'redirect_url' => route('dashboard') . "?createOrder=true"]);
|
|
||||||
} else {
|
|
||||||
$token = $this->generatesAuthenticationToken->execute($user);
|
|
||||||
$order = Order::where('id', $request->input("orderId"))->first();
|
|
||||||
|
|
||||||
return $this->response(['access_token' => $token, 'redirect_url' => route('order.show' , $order->reference)]);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Accounts\DataTransferObjects;
|
|
||||||
|
|
||||||
|
|
||||||
use App\Classes\General\Interfaces\DataTransferObject;
|
|
||||||
|
|
||||||
class KeyValuePairObject implements DataTransferObject
|
|
||||||
{
|
|
||||||
/** @var string */
|
|
||||||
private $key;
|
|
||||||
|
|
||||||
/** @var string */
|
|
||||||
private $value;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* KeyValuePairObject constructor.
|
|
||||||
* @param string $key
|
|
||||||
* @param string $value
|
|
||||||
*/
|
|
||||||
public function __construct(string $key, string $value)
|
|
||||||
{
|
|
||||||
$this->key = $key;
|
|
||||||
$this->value = $value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getKey(): string
|
|
||||||
{
|
|
||||||
return $this->key;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getValue(): string
|
|
||||||
{
|
|
||||||
return $this->value;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Accounts\Processors;
|
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Illuminate\Support\Facades\App;
|
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
class RegisterOnExchangeProcessor
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @return string
|
|
||||||
* @throws \App\Classes\Exceptions\AccessForbiddenException
|
|
||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
|
||||||
* @throws \App\Classes\Exceptions\RequestValidationException
|
|
||||||
*/
|
|
||||||
public function execute(Request $request, $companyModuleId) {
|
|
||||||
if (App::environment(['production'])) {
|
|
||||||
dd("Delete this line before push to production");
|
|
||||||
$url = 'https://exchange.cief-malaysia.com/api/v1/account/registration/registration';
|
|
||||||
} else if (App::environment(['local'])) {
|
|
||||||
$url = 'http://127.0.0.1:8000/api/v1/account/registration/registration';
|
|
||||||
} else {
|
|
||||||
$url = 'https://dev.exchange.cief-malaysia.com/api/v1/account/registration/registration';
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
$client = new \GuzzleHttp\Client(['verify' => false]);
|
|
||||||
$formParams = $request->toArray();
|
|
||||||
$formParams['shipping_company_module_id'] = $companyModuleId;
|
|
||||||
$response = $client->request('POST', $url, ['form_params' => $formParams]);
|
|
||||||
$body = $response->getBody();
|
|
||||||
$contents = json_decode($body, true);
|
|
||||||
$payload = $contents['payload'];
|
|
||||||
$token = explode('.', $payload['access_token'])[1];
|
|
||||||
$decodedToken = base64_decode($token);
|
|
||||||
$exchangeUser = json_decode($decodedToken, true)['user'];
|
|
||||||
|
|
||||||
return $exchangeUser['company_id'];
|
|
||||||
} catch(\GuzzleHttp\Exception\RequestException $exception){
|
|
||||||
Log::error($exception->getResponse()->getBody()->getContents());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Accounts\Services;
|
|
||||||
|
|
||||||
|
|
||||||
use App\Classes\General\Eloquent\AbstractUpdateRelationshipRecord;
|
|
||||||
use App\Classes\General\Interfaces\KeyValueInterface;
|
|
||||||
use App\Classes\Modules\Accounts\DataTransferObjects\KeyValuePairObject;
|
|
||||||
use App\Models\KeyValuePair;
|
|
||||||
|
|
||||||
class CreatesKeyValuePair extends AbstractUpdateRelationshipRecord
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param KeyValueInterface $kv
|
|
||||||
* @param KeyValuePairObject $object
|
|
||||||
* @return \Illuminate\Database\Eloquent\Model
|
|
||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
|
||||||
*/
|
|
||||||
|
|
||||||
public function execute(KeyValueInterface $kv, KeyValuePairObject $object) {
|
|
||||||
$model = new KeyValuePair();
|
|
||||||
$model->key = $object->getKey();
|
|
||||||
$model->value = $object->getValue();
|
|
||||||
|
|
||||||
return $this->handler($kv->attributes(), $model);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-81
@@ -1,81 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Accounts\Services;
|
|
||||||
|
|
||||||
use App\Classes\Exceptions\InternalServerErrorException;
|
|
||||||
use App\Classes\ValueObjects\Constants\OrderRoleTypes;
|
|
||||||
use App\Classes\ValueObjects\Constants\RoleTypes;
|
|
||||||
use App\Models\Company;
|
|
||||||
use App\Models\Role;
|
|
||||||
use App\Models\User;
|
|
||||||
use Carbon\Carbon;
|
|
||||||
use Tymon\JWTAuth\JWT;
|
|
||||||
|
|
||||||
class GeneratesAuthenticationTokenWithExchangeBookingId {
|
|
||||||
|
|
||||||
/** @var JWT */
|
|
||||||
private $builder;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* GeneratesAuthenticationTokenWithExchangeBookingId constructor.
|
|
||||||
* @param JWT $builder
|
|
||||||
*/
|
|
||||||
public function __construct(JWT $builder) {
|
|
||||||
$this->builder = $builder;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param User $user
|
|
||||||
* @param bool $rememberUser
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function execute(User $user, $bookingId): string {
|
|
||||||
|
|
||||||
$this->builder->manager()->setBlacklistEnabled(false);
|
|
||||||
|
|
||||||
// generate token for the customer
|
|
||||||
$this->builder->factory()->setTTL(Carbon::now()->addDay()->timestamp);
|
|
||||||
|
|
||||||
// set the claim based on the object
|
|
||||||
$this->setTokenClaims($user, $bookingId);
|
|
||||||
|
|
||||||
return $this->builder->fromUser($user);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param User $user
|
|
||||||
*/
|
|
||||||
private function setTokenClaims(User $user, $bookingId): void {
|
|
||||||
|
|
||||||
$claims = [
|
|
||||||
'id' => $user->id,
|
|
||||||
'name' => $user->name,
|
|
||||||
'email' => $user->email,
|
|
||||||
'type' => $user->type,
|
|
||||||
'status' => $user->status
|
|
||||||
];
|
|
||||||
|
|
||||||
if($user->type === RoleTypes::USER) {
|
|
||||||
|
|
||||||
/** @var Company $companyModule */
|
|
||||||
$companyModule = $user->companyModule()->first();
|
|
||||||
|
|
||||||
$claims = array_merge($claims, [
|
|
||||||
'company_id' => $companyModule->company_id,
|
|
||||||
'company_module_id' => $companyModule->id,
|
|
||||||
'company_module_type' => $companyModule->type,
|
|
||||||
'company_name' => $companyModule->name,
|
|
||||||
'company_marking' => $companyModule->type !== 8 ? $companyModule->inviters()->withPivot('invitee_reference')->first()->pivot->invitee_reference : 'HWT',
|
|
||||||
'exchange_booking_id' => $bookingId
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->builder->factory()->customClaims(['user' => $claims]);
|
|
||||||
|
|
||||||
|
|
||||||
$this->builder->factory()->buildClaimsCollection();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -26,7 +26,7 @@ class CanAuthenticateUser extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class CanCreateUser extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
// TODO Set Authorization rules
|
// TODO Set Authorization rules
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class CanCrossAuthenticateUser extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ class CanDeleteUser extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
// TODO Set Authorization rules
|
// TODO Set Authorization rules
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class CanFetchUser extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ class CanGeneratePasswordReset extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ class CanListUsers extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ class CanRegisterUser extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
// TODO Set Authorization rules
|
// TODO Set Authorization rules
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ class CanResetPassword extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class CanUpdateUser extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
// TODO Set Authorization rules
|
// TODO Set Authorization rules
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -3,9 +3,6 @@
|
|||||||
namespace App\Classes\Modules\Addresses\ControllersLogic;
|
namespace App\Classes\Modules\Addresses\ControllersLogic;
|
||||||
|
|
||||||
|
|
||||||
use App\Classes\Exceptions\AccessForbiddenException;
|
|
||||||
use App\Classes\Exceptions\MalformedRequestException;
|
|
||||||
use App\Classes\Exceptions\RequestValidationException;
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||||
use App\Classes\General\Interfaces\Contactable;
|
use App\Classes\General\Interfaces\Contactable;
|
||||||
use App\Classes\Modules\Addresses\Services\CreatesAddress;
|
use App\Classes\Modules\Addresses\Services\CreatesAddress;
|
||||||
@@ -18,10 +15,8 @@ use App\Classes\Modules\Contacts\Processors\CreateContactProcessor;
|
|||||||
use App\Classes\Modules\Remarks\DataTransferObjects\RemarkObject;
|
use App\Classes\Modules\Remarks\DataTransferObjects\RemarkObject;
|
||||||
use App\Classes\Modules\Remarks\Processors\CreateRemarkProcessor;
|
use App\Classes\Modules\Remarks\Processors\CreateRemarkProcessor;
|
||||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||||
use App\Classes\ValueObjects\Constants\RemarkTypes;
|
|
||||||
use App\Http\Resources\AddressResource;
|
use App\Http\Resources\AddressResource;
|
||||||
use App\Models\Address;
|
use App\Models\Address;
|
||||||
use App\Transformers\AddressTransformer;
|
|
||||||
use ErrorException;
|
use ErrorException;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
@@ -32,8 +27,7 @@ class CreateAddressLogic extends AbstractControllerLogic
|
|||||||
/**
|
/**
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
protected function notification(): array
|
protected function notification():array {
|
||||||
{
|
|
||||||
return [
|
return [
|
||||||
'title' => 'Created Address',
|
'title' => 'Created Address',
|
||||||
'message' => 'You have successfully created a new Address'
|
'message' => 'You have successfully created a new Address'
|
||||||
@@ -80,11 +74,11 @@ class CreateAddressLogic extends AbstractControllerLogic
|
|||||||
/**
|
/**
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
* @return JsonResponse
|
* @return JsonResponse
|
||||||
* @throws AccessForbiddenException
|
* @throws \App\Classes\Exceptions\AccessForbiddenException
|
||||||
* @throws MalformedRequestException
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
* @throws RequestValidationException
|
* @throws \App\Classes\Exceptions\RequestValidationException
|
||||||
*/
|
*/
|
||||||
public function logic(Request $request): JsonResponse
|
public function logic(Request $request) : JsonResponse
|
||||||
{
|
{
|
||||||
|
|
||||||
$district = $this->fetchesDistrict->execute(['id' => $request->input('district_id')]);
|
$district = $this->fetchesDistrict->execute(['id' => $request->input('district_id')]);
|
||||||
@@ -96,31 +90,16 @@ class CreateAddressLogic extends AbstractControllerLogic
|
|||||||
/** @var Address $address */
|
/** @var Address $address */
|
||||||
$address = $this->createsAddress->execute($this->fetchesCompanyModule->execute(['id' => $request->input('company_module_id')]), $object);
|
$address = $this->createsAddress->execute($this->fetchesCompanyModule->execute(['id' => $request->input('company_module_id')]), $object);
|
||||||
|
|
||||||
if ($request->input('phone')) {
|
if($request->input('phone')){
|
||||||
$contactObject = new ContactObject($request->input('person_in_charge'), $request->input('phone'), '', '');
|
$contactObject = new ContactObject($request->input('person_in_charge'), $request->input('phone'), '', '');
|
||||||
$this->createContactProcessor->execute($contactObject, $address);
|
$this->createContactProcessor->execute($contactObject, $address);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($request->input('remark')) {
|
if($request->input('remark')){
|
||||||
$remarkObject = new RemarkObject($request->input('remark'), Auth()->user()->id);
|
$remarkObject = new RemarkObject($request->input('remark'), Auth()->user()->id);
|
||||||
$this->createRemarkProcessor->execute($address, $remarkObject);
|
$this->createRemarkProcessor->execute($address, $remarkObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* return fractal()
|
|
||||||
->item($address, new AddressTransformer())
|
|
||||||
->parseIncludes('remark')
|
|
||||||
->respond(200, [], JSON_PRETTY_PRINT);*/
|
|
||||||
|
|
||||||
$addressExtraFields = [
|
|
||||||
'property_type' => $request->input('property_type'),
|
|
||||||
'tools_required_unload' => $request->input('tools_required_unload'),
|
|
||||||
'pickup_time_from' => $request->input('pickup_time_from'),
|
|
||||||
'pickup_time_to' => $request->input('pickup_time_to'),
|
|
||||||
];
|
|
||||||
|
|
||||||
$addressExtraFieldsObject = new RemarkObject(json_encode($addressExtraFields), Auth()->user()->id, RemarkTypes::ADDRESS_EXTRA_COLUMNS);
|
|
||||||
$this->createRemarkProcessor->execute($address, $addressExtraFieldsObject);
|
|
||||||
|
|
||||||
return $this->resourceResponse(new AddressResource($address));
|
return $this->resourceResponse(new AddressResource($address));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,9 +3,6 @@
|
|||||||
namespace App\Classes\Modules\Addresses\ControllersLogic;
|
namespace App\Classes\Modules\Addresses\ControllersLogic;
|
||||||
|
|
||||||
|
|
||||||
use App\Classes\Exceptions\AccessForbiddenException;
|
|
||||||
use App\Classes\Exceptions\MalformedRequestException;
|
|
||||||
use App\Classes\Exceptions\RequestValidationException;
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||||
use App\Classes\Modules\Addresses\Services\CreatesAddress;
|
use App\Classes\Modules\Addresses\Services\CreatesAddress;
|
||||||
use App\Classes\Modules\Addresses\Standards\Rules\CanCreateAddress;
|
use App\Classes\Modules\Addresses\Standards\Rules\CanCreateAddress;
|
||||||
@@ -17,7 +14,6 @@ use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
|||||||
use App\Http\Resources\AddressResource;
|
use App\Http\Resources\AddressResource;
|
||||||
use App\Models\Address;
|
use App\Models\Address;
|
||||||
use App\Models\CompanyModule;
|
use App\Models\CompanyModule;
|
||||||
use App\Transformers\AddressTransformer;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
@@ -27,8 +23,7 @@ class CreateBillingAddressLogic extends AbstractControllerLogic
|
|||||||
/**
|
/**
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
protected function notification(): array
|
protected function notification():array {
|
||||||
{
|
|
||||||
return [
|
return [
|
||||||
'title' => 'Created Billing Address',
|
'title' => 'Created Billing Address',
|
||||||
'message' => 'You have successfully created a new Billing Address'
|
'message' => 'You have successfully created a new Billing Address'
|
||||||
@@ -65,11 +60,11 @@ class CreateBillingAddressLogic extends AbstractControllerLogic
|
|||||||
/**
|
/**
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
* @return JsonResponse
|
* @return JsonResponse
|
||||||
* @throws AccessForbiddenException
|
* @throws \App\Classes\Exceptions\AccessForbiddenException
|
||||||
* @throws MalformedRequestException
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
* @throws RequestValidationException
|
* @throws \App\Classes\Exceptions\RequestValidationException
|
||||||
*/
|
*/
|
||||||
public function logic(Request $request): JsonResponse
|
public function logic(Request $request) : JsonResponse
|
||||||
{
|
{
|
||||||
$companyModule = $this->fetchesCompanyModule->execute(['id' => $request->input('company_module_id')]);
|
$companyModule = $this->fetchesCompanyModule->execute(['id' => $request->input('company_module_id')]);
|
||||||
|
|
||||||
@@ -85,14 +80,6 @@ class CreateBillingAddressLogic extends AbstractControllerLogic
|
|||||||
$this->createsAddress->execute($companyModule, $billingAddress);
|
$this->createsAddress->execute($companyModule, $billingAddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
//load address with only owner address
|
|
||||||
|
|
||||||
/* return fractal()
|
|
||||||
->item($billingAddressInputed, new AddressTransformer())
|
|
||||||
->parseIncludes('Owner_address')
|
|
||||||
->respond(200, [], JSON_PRETTY_PRINT);*/
|
|
||||||
|
|
||||||
|
|
||||||
return $this->resourceResponse(new AddressResource($billingAddressInputed));
|
return $this->resourceResponse(new AddressResource($billingAddressInputed));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
namespace App\Classes\Modules\Addresses\ControllersLogic;
|
namespace App\Classes\Modules\Addresses\ControllersLogic;
|
||||||
|
|
||||||
|
|
||||||
use App\Classes\Exceptions\AccessForbiddenException;
|
|
||||||
use App\Classes\Exceptions\RequestValidationException;
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||||
use App\Classes\Modules\Addresses\Services\FetchesAddress;
|
use App\Classes\Modules\Addresses\Services\FetchesAddress;
|
||||||
use App\Classes\Modules\Addresses\Standards\Rules\CanFetchAddress;
|
use App\Classes\Modules\Addresses\Standards\Rules\CanFetchAddress;
|
||||||
@@ -19,8 +17,7 @@ class FetchAddressLogic extends AbstractControllerLogic
|
|||||||
/**
|
/**
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
protected function notification(): array
|
protected function notification():array {
|
||||||
{
|
|
||||||
return [
|
return [
|
||||||
'title' => 'Retrieved Address',
|
'title' => 'Retrieved Address',
|
||||||
'message' => 'You have successfully retrieved a Address'
|
'message' => 'You have successfully retrieved a Address'
|
||||||
@@ -48,22 +45,15 @@ class FetchAddressLogic extends AbstractControllerLogic
|
|||||||
/**
|
/**
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
* @return JsonResponse
|
* @return JsonResponse
|
||||||
* @throws AccessForbiddenException
|
* @throws \App\Classes\Exceptions\AccessForbiddenException
|
||||||
* @throws RequestValidationException
|
* @throws \App\Classes\Exceptions\RequestValidationException
|
||||||
*/
|
*/
|
||||||
public function logic(Request $request): JsonResponse
|
public function logic(Request $request) : JsonResponse
|
||||||
{
|
{
|
||||||
$this->canFetchAddress->passes();
|
$this->canFetchAddress->passes();
|
||||||
|
|
||||||
$query = $this->fetchesAddress->execute(['id' => $request->route('id')]);
|
$query = $this->fetchesAddress->execute(['id' => $request->route('id')]);
|
||||||
|
|
||||||
|
|
||||||
//load address with no relationships
|
|
||||||
/* return fractal()
|
|
||||||
->item($address, new AddressTransformer())
|
|
||||||
->respond(200, [], JSON_PRETTY_PRINT);*/
|
|
||||||
|
|
||||||
|
|
||||||
return $this->resourceResponse(new AddressResource($query));
|
return $this->resourceResponse(new AddressResource($query));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,14 +3,10 @@
|
|||||||
namespace App\Classes\Modules\Addresses\ControllersLogic;
|
namespace App\Classes\Modules\Addresses\ControllersLogic;
|
||||||
|
|
||||||
|
|
||||||
use App\Classes\Exceptions\AccessForbiddenException;
|
|
||||||
use App\Classes\Exceptions\MalformedRequestException;
|
|
||||||
use App\Classes\Exceptions\RequestValidationException;
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||||
use App\Classes\Modules\Addresses\Services\ListsAddresses;
|
use App\Classes\Modules\Addresses\Services\ListsAddresses;
|
||||||
use App\Classes\Modules\Addresses\Standards\Rules\CanListAddresses;
|
use App\Classes\Modules\Addresses\Standards\Rules\CanListAddresses;
|
||||||
use App\Http\Resources\AddressResource;
|
use App\Http\Resources\AddressResource;
|
||||||
use App\Transformers\AddressTransformer;
|
|
||||||
use ErrorException;
|
use ErrorException;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
@@ -21,8 +17,7 @@ class ListAddressesLogic extends AbstractControllerLogic
|
|||||||
/**
|
/**
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
protected function notification(): array
|
protected function notification():array {
|
||||||
{
|
|
||||||
return [
|
return [
|
||||||
'title' => 'Retrieved Addresses',
|
'title' => 'Retrieved Addresses',
|
||||||
'message' => 'You have successfully retrieved a list of Addresses'
|
'message' => 'You have successfully retrieved a list of Addresses'
|
||||||
@@ -50,25 +45,17 @@ class ListAddressesLogic extends AbstractControllerLogic
|
|||||||
/**
|
/**
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
* @return JsonResponse
|
* @return JsonResponse
|
||||||
* @throws AccessForbiddenException
|
* @throws \App\Classes\Exceptions\AccessForbiddenException
|
||||||
* @throws MalformedRequestException
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
* @throws RequestValidationException
|
* @throws \App\Classes\Exceptions\RequestValidationException
|
||||||
*/
|
*/
|
||||||
public function logic(Request $request): JsonResponse
|
public function logic(Request $request) : JsonResponse
|
||||||
{
|
{
|
||||||
|
|
||||||
$this->canListAddresses->passes();
|
$this->canListAddresses->passes();
|
||||||
|
|
||||||
$query = $this->listsAddresses->execute($this->listsAddresses->deserializeFilters($request->input('filters')));
|
$query = $this->listsAddresses->execute($this->listsAddresses->deserializeFilters($request->input('filters')));
|
||||||
|
|
||||||
//a collection of addresses with all incluides
|
|
||||||
/* return fractal()
|
|
||||||
->collection($query, new AddressTransformer)
|
|
||||||
->parseIncludes('Owner_address')
|
|
||||||
->parseIncludes('remark')
|
|
||||||
->parseIncludes('contact')
|
|
||||||
->respond(200, [], JSON_PRETTY_PRINT);*/
|
|
||||||
|
|
||||||
return $this->collectionResponse(AddressResource::collection($query));
|
return $this->collectionResponse(AddressResource::collection($query));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|||||||
use App\Classes\Modules\Addresses\Services\ListsAddresses;
|
use App\Classes\Modules\Addresses\Services\ListsAddresses;
|
||||||
use App\Classes\Modules\Addresses\Services\ListsDistricts;
|
use App\Classes\Modules\Addresses\Services\ListsDistricts;
|
||||||
use App\Classes\Modules\Addresses\Standards\Rules\CanListAddresses;
|
use App\Classes\Modules\Addresses\Standards\Rules\CanListAddresses;
|
||||||
|
use App\Http\Resources\AddressResource;
|
||||||
use App\Http\Resources\DistrictResource;
|
use App\Http\Resources\DistrictResource;
|
||||||
use ErrorException;
|
use ErrorException;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|||||||
use App\Classes\Modules\Addresses\Services\ListsAddresses;
|
use App\Classes\Modules\Addresses\Services\ListsAddresses;
|
||||||
use App\Classes\Modules\Addresses\Services\ListsStates;
|
use App\Classes\Modules\Addresses\Services\ListsStates;
|
||||||
use App\Classes\Modules\Addresses\Standards\Rules\CanListAddresses;
|
use App\Classes\Modules\Addresses\Standards\Rules\CanListAddresses;
|
||||||
|
use App\Http\Resources\AddressResource;
|
||||||
use App\Http\Resources\StateResource;
|
use App\Http\Resources\StateResource;
|
||||||
use ErrorException;
|
use ErrorException;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ use App\Classes\Modules\Addresses\Services\FetchesAddress;
|
|||||||
use App\Classes\Modules\Addresses\Services\ResetsAddressesDefault;
|
use App\Classes\Modules\Addresses\Services\ResetsAddressesDefault;
|
||||||
use App\Classes\Modules\Addresses\Services\SetsAddressToDefault;
|
use App\Classes\Modules\Addresses\Services\SetsAddressToDefault;
|
||||||
use App\Models\Address;
|
use App\Models\Address;
|
||||||
use App\Transformers\AddressTransformer;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
@@ -34,7 +33,7 @@ class SetAddressToDefaultLogic extends AbstractControllerLogic
|
|||||||
/** @var ResetsAddressesDefault */
|
/** @var ResetsAddressesDefault */
|
||||||
private $resetsAddressesDefault;
|
private $resetsAddressesDefault;
|
||||||
|
|
||||||
/** @var SetsAddressToDefault */
|
/** @var SetsAddressToDefault*/
|
||||||
private $setsAddressToDefault;
|
private $setsAddressToDefault;
|
||||||
|
|
||||||
|
|
||||||
@@ -65,15 +64,7 @@ class SetAddressToDefaultLogic extends AbstractControllerLogic
|
|||||||
|
|
||||||
$this->resetsAddressesDefault->execute($address->owner, $address->type);
|
$this->resetsAddressesDefault->execute($address->owner, $address->type);
|
||||||
|
|
||||||
|
return $this->resourceResponse(new AddressResource($this->setsAddressToDefault->execute($address)));
|
||||||
$setAddress = $this->setsAddressToDefault->execute($address);
|
|
||||||
//no relationships needed
|
|
||||||
/* return fractal()
|
|
||||||
->item($setAddress, new AddressTransformer())
|
|
||||||
->respond(200, [], JSON_PRETTY_PRINT);*/
|
|
||||||
|
|
||||||
|
|
||||||
return $this->resourceResponse(new AddressResource($address));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,13 +15,10 @@ use App\Classes\Modules\Remarks\DataTransferObjects\RemarkObject;
|
|||||||
use App\Classes\Modules\Remarks\Processors\CreateRemarkProcessor;
|
use App\Classes\Modules\Remarks\Processors\CreateRemarkProcessor;
|
||||||
use App\Classes\ValueObjects\Constants\AddressType;
|
use App\Classes\ValueObjects\Constants\AddressType;
|
||||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||||
use App\Classes\ValueObjects\Constants\RemarkTypes;
|
|
||||||
use App\Http\Resources\AddressResource;
|
use App\Http\Resources\AddressResource;
|
||||||
use App\Models\Address;
|
use App\Models\Address;
|
||||||
use App\Transformers\AddressTransformer;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Carbon\Carbon;
|
|
||||||
|
|
||||||
class UpdateAddressLogic extends AbstractControllerLogic
|
class UpdateAddressLogic extends AbstractControllerLogic
|
||||||
{
|
{
|
||||||
@@ -29,8 +26,7 @@ class UpdateAddressLogic extends AbstractControllerLogic
|
|||||||
/**
|
/**
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
protected function notification(): array
|
protected function notification():array {
|
||||||
{
|
|
||||||
return [
|
return [
|
||||||
'title' => 'Updated Address',
|
'title' => 'Updated Address',
|
||||||
'message' => 'You have successfully updated the Address'
|
'message' => 'You have successfully updated the Address'
|
||||||
@@ -81,7 +77,7 @@ class UpdateAddressLogic extends AbstractControllerLogic
|
|||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
* @throws \App\Classes\Exceptions\RequestValidationException
|
* @throws \App\Classes\Exceptions\RequestValidationException
|
||||||
*/
|
*/
|
||||||
public function logic(Request $request): JsonResponse
|
public function logic(Request $request) : JsonResponse
|
||||||
{
|
{
|
||||||
$district = $this->fetchesDistrict->execute(['id' => $request->input('district_id')]);
|
$district = $this->fetchesDistrict->execute(['id' => $request->input('district_id')]);
|
||||||
|
|
||||||
@@ -94,44 +90,18 @@ class UpdateAddressLogic extends AbstractControllerLogic
|
|||||||
/** @var Address $address */
|
/** @var Address $address */
|
||||||
$address = $this->updatesAddress->execute($address, $object);
|
$address = $this->updatesAddress->execute($address, $object);
|
||||||
|
|
||||||
$address->contacts()->delete();
|
$address->contacts()->delete(); $address->remarks()->delete();
|
||||||
$address->remarks()->delete();
|
|
||||||
|
|
||||||
if ($request->input('phone')) {
|
if($request->input('phone')){
|
||||||
$contactObject = new ContactObject($request->input('person_in_charge'), $request->input('phone'), '', '');
|
$contactObject = new ContactObject($request->input('person_in_charge'), $request->input('phone'), '', '');
|
||||||
$this->createContactProcessor->execute($contactObject, $address);
|
$this->createContactProcessor->execute($contactObject, $address);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($request->input('remark')) {
|
if($request->input('remark')){
|
||||||
$remarkObject = new RemarkObject($request->input('remark'), Auth()->user()->id);
|
$remarkObject = new RemarkObject($request->input('remark'), Auth()->user()->id);
|
||||||
$this->createRemarkProcessor->execute($address, $remarkObject);
|
$this->createRemarkProcessor->execute($address, $remarkObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
//only remark relationship needed
|
|
||||||
/* return fractal()
|
|
||||||
->item($address, new AddressTransformer())
|
|
||||||
->parseIncludes('remark')
|
|
||||||
->respond(200, [], JSON_PRETTY_PRINT);*/
|
|
||||||
|
|
||||||
if ($request->input('pickup_time_to') <= $request->input('pickup_time_from')) {
|
|
||||||
$pickupTimeFrom = Carbon::parse($request->input('pickup_time_from'));
|
|
||||||
$request->merge([
|
|
||||||
'pickup_time_to' => $pickupTimeFrom->addHour()->format('H:i') // Format to hh:mm
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
$addressExtraFields = [
|
|
||||||
'property_type' => $request->input('property_type'),
|
|
||||||
'additional_request' => $request->input('additional_request'),
|
|
||||||
'receive_goods_working_hours' => $request->input('receive_goods_working_hours'),
|
|
||||||
'receive_goods_after_hours' => $request->input('receive_goods_after_hours'),
|
|
||||||
'receive_goods_on_saturday' => $request->input('receive_goods_on_saturday'),
|
|
||||||
];
|
|
||||||
|
|
||||||
$address->addressExtraFields()->delete();
|
|
||||||
$addressExtraFieldsObject = new RemarkObject(json_encode($addressExtraFields), Auth()->user()->id, RemarkTypes::ADDRESS_EXTRA_COLUMNS);
|
|
||||||
$this->createRemarkProcessor->execute($address, $addressExtraFieldsObject);
|
|
||||||
|
|
||||||
return $this->resourceResponse(new AddressResource($address));
|
return $this->resourceResponse(new AddressResource($address));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class CanCreateAddress extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
// TODO Set Authorization rules
|
// TODO Set Authorization rules
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ class CanDeleteAddress extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
// TODO Set Authorization rules
|
// TODO Set Authorization rules
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ class CanFetchAddress extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
// TODO Set Authorization rules
|
// TODO Set Authorization rules
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ class CanListAddresses extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
// TODO Set Authorization rules
|
// TODO Set Authorization rules
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class CanUpdateAddress extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
// TODO Set Authorization rules
|
// TODO Set Authorization rules
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ class AssignsAnnouncementToSegment extends AbstractUpdateRecord
|
|||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
|
||||||
$announcement->segments()->attach($segment, ['created_at' => now(), 'updated_at' => now()]);
|
$announcement->segments()->attach($segment);
|
||||||
|
|
||||||
return $announcement;
|
return $announcement;
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ class CanAssignSegment extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
// TODO Set Authorization rules
|
// TODO Set Authorization rules
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ class CanCreateAnnouncement extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ class CanDeleteAnnouncement extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
// TODO Set Authorization rules
|
// TODO Set Authorization rules
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ class CanListAnnouncements extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class CanUpdateAnnouncement extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
// TODO Set Authorization rules
|
// TODO Set Authorization rules
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ class CanCreateBank extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ class CanDeleteBank extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
// TODO Set Authorization rules
|
// TODO Set Authorization rules
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class CanListBanks extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class CanUpdateBank extends AbstractRule
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function authorized($object): bool
|
protected function authorized(): bool
|
||||||
{
|
{
|
||||||
// TODO Set Authorization rules
|
// TODO Set Authorization rules
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -14,17 +14,14 @@ 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\Modules\Billplzs\Processors\CallbackBillplzProcessor;
|
|
||||||
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\Processors\CreatePaymentTransactionProcessor;
|
||||||
use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus;
|
use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus;
|
||||||
use App\Classes\Modules\Transactions\Processors\CheckStorageInvoiceTransactionProcessor;
|
|
||||||
use App\Classes\ValueObjects\Constants\PaymentMethodType;
|
use App\Classes\ValueObjects\Constants\PaymentMethodType;
|
||||||
use App\Classes\ValueObjects\Constants\TransactionType;
|
use App\Classes\ValueObjects\Constants\TransactionType;
|
||||||
use App\Models\Group;
|
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
|
||||||
{
|
{
|
||||||
@@ -49,12 +46,6 @@ class CallbackBillplzLogic
|
|||||||
/** @var CreatePaymentTransactionProcessor */
|
/** @var CreatePaymentTransactionProcessor */
|
||||||
private $createPaymentTransactionProcessor;
|
private $createPaymentTransactionProcessor;
|
||||||
|
|
||||||
/** @var CallbackBillplzProcessor */
|
|
||||||
private $callbackBillplzProcessor;
|
|
||||||
|
|
||||||
/** @var CheckStorageInvoiceTransactionProcessor */
|
|
||||||
private $storageInvoiceTransactionProcessor;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CallbackBillplzLogic constructor.
|
* CallbackBillplzLogic constructor.
|
||||||
* @param GetBillplzBill $getBillplzBill
|
* @param GetBillplzBill $getBillplzBill
|
||||||
@@ -63,10 +54,8 @@ class CallbackBillplzLogic
|
|||||||
* @param UpdateDoFromVTPortalProcessor $updateDoFromVTPortalProcessor
|
* @param UpdateDoFromVTPortalProcessor $updateDoFromVTPortalProcessor
|
||||||
* @param UpdateDoFromYDPortalProcessor $updateDoFromYDPortalProcessor
|
* @param UpdateDoFromYDPortalProcessor $updateDoFromYDPortalProcessor
|
||||||
* @param CreatePaymentTransactionProcessor $createPaymentTransactionProcessor
|
* @param CreatePaymentTransactionProcessor $createPaymentTransactionProcessor
|
||||||
* @param CallbackBillplzProcessor $callbackBillplzProcessor
|
|
||||||
* @param CheckStorageInvoiceTransactionProcessor $storageInvoiceTransactionProcessor
|
|
||||||
*/
|
*/
|
||||||
public function __construct(GetBillplzBill $getBillplzBill, FetchesTransaction $fetchesTransaction, UpdatesTransactionStatus $updatesTransactionStatus, UpdateDoFromVTPortalProcessor $updateDoFromVTPortalProcessor, UpdateDoFromYDPortalProcessor $updateDoFromYDPortalProcessor, UpdatesWalletBalance $updatesWalletBalance, CreatePaymentTransactionProcessor $createPaymentTransactionProcessor, CallbackBillplzProcessor $callbackBillplzProcessor, CheckStorageInvoiceTransactionProcessor $storageInvoiceTransactionProcessor)
|
public function __construct(GetBillplzBill $getBillplzBill, FetchesTransaction $fetchesTransaction, UpdatesTransactionStatus $updatesTransactionStatus, UpdateDoFromVTPortalProcessor $updateDoFromVTPortalProcessor, UpdateDoFromYDPortalProcessor $updateDoFromYDPortalProcessor, UpdatesWalletBalance $updatesWalletBalance, CreatePaymentTransactionProcessor $createPaymentTransactionProcessor)
|
||||||
{
|
{
|
||||||
$this->getBillplzBill = $getBillplzBill;
|
$this->getBillplzBill = $getBillplzBill;
|
||||||
$this->fetchesTransaction = $fetchesTransaction;
|
$this->fetchesTransaction = $fetchesTransaction;
|
||||||
@@ -75,8 +64,6 @@ class CallbackBillplzLogic
|
|||||||
$this->updateDoFromYDPortalProcessor = $updateDoFromYDPortalProcessor;
|
$this->updateDoFromYDPortalProcessor = $updateDoFromYDPortalProcessor;
|
||||||
$this->updatesWalletBalance = $updatesWalletBalance;
|
$this->updatesWalletBalance = $updatesWalletBalance;
|
||||||
$this->createPaymentTransactionProcessor = $createPaymentTransactionProcessor;
|
$this->createPaymentTransactionProcessor = $createPaymentTransactionProcessor;
|
||||||
$this->callbackBillplzProcessor = $callbackBillplzProcessor;
|
|
||||||
$this->storageInvoiceTransactionProcessor = $storageInvoiceTransactionProcessor;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -116,13 +103,44 @@ class CallbackBillplzLogic
|
|||||||
$status = $billplzXSignatureObject->getStatus() === 'failed' ? ApprovalStatus::REJECTED : ApprovalStatus::PENDING_VERIFICATION;
|
$status = $billplzXSignatureObject->getStatus() === 'failed' ? ApprovalStatus::REJECTED : ApprovalStatus::PENDING_VERIFICATION;
|
||||||
}
|
}
|
||||||
|
|
||||||
Log::info('Debug billPlz status: '.$status);
|
|
||||||
|
|
||||||
$token = Auth::fromUser(User::find(1));
|
$token = Auth::fromUser(User::find(1));
|
||||||
$request->headers->set('Authorization', 'Bearer '.$token);
|
$request->headers->set('Authorization', 'Bearer '.$token);
|
||||||
|
|
||||||
$this->storageInvoiceBackDoorPreventionCheck($transaction, $status);
|
// check if is wallet top up
|
||||||
$result = $this->callbackBillplzProcessor->execute($transaction, $status);
|
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 ($transaction->type == TransactionType::GROUP_PAYMENT && $status === ApprovalStatus::APPROVED &&!in_array($transaction->status, [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])) {
|
||||||
|
$group = Group::where('reference', $billplzXSignatureObject->getBillPlzId())->first();
|
||||||
|
|
||||||
|
foreach($group->groupTransactions as $groupTransaction) {
|
||||||
|
$invoice = $groupTransaction->transaction;
|
||||||
|
$this->createPaymentTransactionProcessor->execute($invoice, PaymentMethodType::WALLET, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
$group->status = $status;
|
||||||
|
$group->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
$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;
|
$company_module_marking = $transaction->owner->owner->connections? $transaction->owner->owner->connections->first()->invitee_reference: null;
|
||||||
|
|
||||||
@@ -133,22 +151,6 @@ class CallbackBillplzLogic
|
|||||||
$company_module_marking = $order->companyModule->connections? $order->companyModule->connections->first()->invitee_reference: null;
|
$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, 'result' => $result]);
|
return $request->method() === 'POST' ? true : view('pages.payments_redirect', ['marking' => $order->reference ?? null, 'company_module_marking' => $company_module_marking ?? null, 'transaction' => $transaction, 'status' => $status]);
|
||||||
}
|
|
||||||
|
|
||||||
private function storageInvoiceBackDoorPreventionCheck($transaction, $status){
|
|
||||||
if ($transaction->owner instanceof Wallet && $status === ApprovalStatus::APPROVED) {
|
|
||||||
$group = Group::where('reference', $transaction->payment_reference)->first();
|
|
||||||
if ($group) {
|
|
||||||
foreach ($group->groupTransactions as $groupTransaction) {
|
|
||||||
$invoice = $groupTransaction->transaction;
|
|
||||||
$pL = $invoice->owner;
|
|
||||||
$order = $pL->owner;
|
|
||||||
if($order){
|
|
||||||
$this->storageInvoiceTransactionProcessor->executeOrder($order);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,140 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Billplzs\Processors;
|
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Models\Wallet;
|
|
||||||
use App\Models\Group;
|
|
||||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
|
||||||
use App\Classes\ValueObjects\Constants\PaymentMethodType;
|
|
||||||
use App\Classes\Modules\Transactions\Processors\CreatePaymentTransactionProcessor;
|
|
||||||
use App\Classes\Modules\Transactions\Processors\ReleaseGoodsToCustomerProcessor;
|
|
||||||
use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus;
|
|
||||||
use App\Classes\Modules\Wallets\Services\UpdatesWalletBalance;
|
|
||||||
use App\Classes\Modules\Orders\Processors\UpdateDoFromVTPortalProcessor;
|
|
||||||
use App\Classes\Modules\Orders\Processors\UpdateDoFromYDPortalProcessor;
|
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
//Date: 20240817
|
|
||||||
//This Processor is used for one time data patching with OneTimeTransactionFixBillplzFailedCallback.php
|
|
||||||
class CallbackBillplzDataPatchProcessor
|
|
||||||
{
|
|
||||||
/** @var UpdatesTransactionStatus */
|
|
||||||
private $updatesTransactionStatus;
|
|
||||||
|
|
||||||
/** @var UpdateDoFromVTPortalProcessor */
|
|
||||||
private $updateDoFromVTPortalProcessor;
|
|
||||||
|
|
||||||
/** @var UpdateDoFromYDPortalProcessor */
|
|
||||||
private $updateDoFromYDPortalProcessor;
|
|
||||||
|
|
||||||
/** @var UpdatesWalletBalance */
|
|
||||||
private $updatesWalletBalance;
|
|
||||||
|
|
||||||
/** @var CreatePaymentTransactionProcessor */
|
|
||||||
private $createPaymentTransactionProcessor;
|
|
||||||
|
|
||||||
/** @var ReleaseGoodsToCustomerProcessor */
|
|
||||||
private $releaseGoodsToCustomerProcessor;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* CallbackBillplzDataPatchProcessor constructor.
|
|
||||||
* @param UpdatesTransactionStatus $updatesTransactionStatus
|
|
||||||
* @param UpdateDoFromVTPortalProcessor $updateDoFromVTPortalProcessor
|
|
||||||
* @param UpdateDoFromYDPortalProcessor $updateDoFromYDPortalProcessor
|
|
||||||
* @param UpdatesWalletBalance $updatesWalletBalance
|
|
||||||
* @param CreatePaymentTransactionProcessor $createPaymentTransactionProcessor
|
|
||||||
* @param ReleaseGoodsToCustomerProcessor $releaseGoodsToCustomerProcessor
|
|
||||||
*/
|
|
||||||
public function __construct(UpdatesTransactionStatus $updatesTransactionStatus, UpdateDoFromVTPortalProcessor $updateDoFromVTPortalProcessor, UpdateDoFromYDPortalProcessor $updateDoFromYDPortalProcessor, UpdatesWalletBalance $updatesWalletBalance, CreatePaymentTransactionProcessor $createPaymentTransactionProcessor, ReleaseGoodsToCustomerProcessor $releaseGoodsToCustomerProcessor)
|
|
||||||
{
|
|
||||||
$this->updatesTransactionStatus = $updatesTransactionStatus;
|
|
||||||
$this->updateDoFromVTPortalProcessor = $updateDoFromVTPortalProcessor;
|
|
||||||
$this->updateDoFromYDPortalProcessor = $updateDoFromYDPortalProcessor;
|
|
||||||
$this->updatesWalletBalance = $updatesWalletBalance;
|
|
||||||
$this->createPaymentTransactionProcessor = $createPaymentTransactionProcessor;
|
|
||||||
$this->releaseGoodsToCustomerProcessor = $releaseGoodsToCustomerProcessor;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
|
||||||
*/
|
|
||||||
public function execute($transaction, $status)
|
|
||||||
{
|
|
||||||
$invoice = $transaction->owner;
|
|
||||||
$packingList = $invoice->owner;
|
|
||||||
|
|
||||||
$proceed = $this->checkForGroupPayment($transaction);
|
|
||||||
if(!$proceed) return false;
|
|
||||||
|
|
||||||
$this->updatesTransactionStatus->execute($transaction, $status);
|
|
||||||
|
|
||||||
Log::info('CallbackBillplzDataPatchProcessor 1');
|
|
||||||
|
|
||||||
// check if is wallet top up
|
|
||||||
if ($transaction->owner instanceof Wallet && $status === ApprovalStatus::APPROVED) {
|
|
||||||
|
|
||||||
Log::info('CallbackBillplzDataPatchProcessor 2');
|
|
||||||
|
|
||||||
$this->updatesWalletBalance->execute($transaction->owner, $transaction->amount);
|
|
||||||
|
|
||||||
$group = Group::where('reference', $transaction->payment_reference)->first();
|
|
||||||
|
|
||||||
// check if is group payment
|
|
||||||
if ($group) {
|
|
||||||
foreach ($group->groupTransactions as $groupTransaction) {
|
|
||||||
$invoice = $groupTransaction->transaction;
|
|
||||||
Log::info('CallbackBillplzDataPatchProcessor 3: '.json_encode($invoice));
|
|
||||||
|
|
||||||
//if($invoice->status !== ApprovalStatus::COMPLETED){
|
|
||||||
// $paymentTransaction = $this->createPaymentTransactionProcessor->execute($invoice, PaymentMethodType::WALLET, null, false);
|
|
||||||
|
|
||||||
// if($paymentTransaction && $paymentTransaction->status == ApprovalStatus::APPROVED){
|
|
||||||
$pL = $invoice->owner;
|
|
||||||
$this->releaseGoodsToCustomerProcessor->execute($pL, $invoice, true);
|
|
||||||
//}
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
|
|
||||||
$group->status = $status;
|
|
||||||
$group->save();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$transaction->owner instanceof Wallet) {
|
|
||||||
Log::info('CallbackBillplzDataPatchProcessor 3');
|
|
||||||
$this->releaseGoodsToCustomerProcessor->execute($packingList, $invoice);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function checkForGroupPayment($transaction){
|
|
||||||
//This check is targetting group payment that expired and soft deleted
|
|
||||||
//command:check-storage-invoices must already run for this part of the code to work properly
|
|
||||||
$group = Group::withTrashed()->where('reference', $transaction->payment_reference)->first();
|
|
||||||
if ($group) {
|
|
||||||
$totalAmountToBePaid = 0;
|
|
||||||
$actualAmountPaid = $transaction->amount;
|
|
||||||
|
|
||||||
foreach ($group->groupTransactions as $groupTransaction) {
|
|
||||||
$invoice = $groupTransaction->transaction;
|
|
||||||
if($invoice->status !== ApprovalStatus::COMPLETED){
|
|
||||||
$totalAmountToBePaid += $invoice->amount;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(($totalAmountToBePaid - $actualAmountPaid) < 0.01){
|
|
||||||
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
Log::channel('storage_invoices')->info('Total amount from current transaction: '.$totalAmountToBePaid); //cief todo: to be removed
|
|
||||||
Log::channel('storage_invoices')->info('Total amount from paid transaction: '.$transaction->amount); //cief todo: to be removed
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,131 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Billplzs\Processors;
|
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Models\Wallet;
|
|
||||||
use App\Models\Group;
|
|
||||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
|
||||||
use App\Classes\ValueObjects\Constants\PaymentMethodType;
|
|
||||||
use App\Classes\Modules\Transactions\Processors\CreatePaymentTransactionProcessor;
|
|
||||||
use App\Classes\Modules\Transactions\Processors\ReleaseGoodsToCustomerProcessor;
|
|
||||||
use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus;
|
|
||||||
use App\Classes\Modules\Wallets\Services\UpdatesWalletBalance;
|
|
||||||
use App\Classes\Modules\Orders\Processors\UpdateDoFromVTPortalProcessor;
|
|
||||||
use App\Classes\Modules\Orders\Processors\UpdateDoFromYDPortalProcessor;
|
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
class CallbackBillplzProcessor
|
|
||||||
{
|
|
||||||
/** @var UpdatesTransactionStatus */
|
|
||||||
private $updatesTransactionStatus;
|
|
||||||
|
|
||||||
/** @var UpdateDoFromVTPortalProcessor */
|
|
||||||
private $updateDoFromVTPortalProcessor;
|
|
||||||
|
|
||||||
/** @var UpdateDoFromYDPortalProcessor */
|
|
||||||
private $updateDoFromYDPortalProcessor;
|
|
||||||
|
|
||||||
/** @var UpdatesWalletBalance */
|
|
||||||
private $updatesWalletBalance;
|
|
||||||
|
|
||||||
/** @var CreatePaymentTransactionProcessor */
|
|
||||||
private $createPaymentTransactionProcessor;
|
|
||||||
|
|
||||||
/** @var ReleaseGoodsToCustomerProcessor */
|
|
||||||
private $releaseGoodsToCustomerProcessor;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* CallbackBillplzProcessor constructor.
|
|
||||||
* @param UpdatesTransactionStatus $updatesTransactionStatus
|
|
||||||
* @param UpdateDoFromVTPortalProcessor $updateDoFromVTPortalProcessor
|
|
||||||
* @param UpdateDoFromYDPortalProcessor $updateDoFromYDPortalProcessor
|
|
||||||
* @param UpdatesWalletBalance $updatesWalletBalance
|
|
||||||
* @param CreatePaymentTransactionProcessor $createPaymentTransactionProcessor
|
|
||||||
* @param ReleaseGoodsToCustomerProcessor $releaseGoodsToCustomerProcessor
|
|
||||||
*/
|
|
||||||
public function __construct(UpdatesTransactionStatus $updatesTransactionStatus, UpdateDoFromVTPortalProcessor $updateDoFromVTPortalProcessor, UpdateDoFromYDPortalProcessor $updateDoFromYDPortalProcessor, UpdatesWalletBalance $updatesWalletBalance, CreatePaymentTransactionProcessor $createPaymentTransactionProcessor, ReleaseGoodsToCustomerProcessor $releaseGoodsToCustomerProcessor)
|
|
||||||
{
|
|
||||||
$this->updatesTransactionStatus = $updatesTransactionStatus;
|
|
||||||
$this->updateDoFromVTPortalProcessor = $updateDoFromVTPortalProcessor;
|
|
||||||
$this->updateDoFromYDPortalProcessor = $updateDoFromYDPortalProcessor;
|
|
||||||
$this->updatesWalletBalance = $updatesWalletBalance;
|
|
||||||
$this->createPaymentTransactionProcessor = $createPaymentTransactionProcessor;
|
|
||||||
$this->releaseGoodsToCustomerProcessor = $releaseGoodsToCustomerProcessor;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
|
||||||
*/
|
|
||||||
public function execute($transaction, $status)
|
|
||||||
{
|
|
||||||
$invoice = $transaction->owner;
|
|
||||||
$packingList = $invoice->owner;
|
|
||||||
|
|
||||||
$proceed = $this->checkForGroupPayment($transaction);
|
|
||||||
if(!$proceed) return false;
|
|
||||||
|
|
||||||
$this->updatesTransactionStatus->execute($transaction, $status);
|
|
||||||
|
|
||||||
// check if is wallet top up
|
|
||||||
if ($transaction->owner instanceof Wallet && $status === ApprovalStatus::APPROVED) {
|
|
||||||
|
|
||||||
$this->updatesWalletBalance->execute($transaction->owner, $transaction->amount);
|
|
||||||
|
|
||||||
$group = Group::where('reference', $transaction->payment_reference)->first();
|
|
||||||
|
|
||||||
// check if is group payment
|
|
||||||
if ($group) {
|
|
||||||
foreach ($group->groupTransactions as $groupTransaction) {
|
|
||||||
$invoice = $groupTransaction->transaction;
|
|
||||||
if($invoice->status !== ApprovalStatus::COMPLETED){
|
|
||||||
$paymentTransaction = $this->createPaymentTransactionProcessor->execute($invoice, PaymentMethodType::WALLET, null, false);
|
|
||||||
|
|
||||||
if($paymentTransaction && $paymentTransaction->status == ApprovalStatus::APPROVED){
|
|
||||||
$pL = $invoice->owner;
|
|
||||||
$this->releaseGoodsToCustomerProcessor->execute($pL, $invoice);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$group->status = $status;
|
|
||||||
$group->save();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$transaction->owner instanceof Wallet) {
|
|
||||||
$this->releaseGoodsToCustomerProcessor->execute($packingList, $invoice);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function checkForGroupPayment($transaction){
|
|
||||||
//This check is targetting group payment that expired and soft deleted
|
|
||||||
//command:check-storage-invoices must already run for this part of the code to work properly
|
|
||||||
$group = Group::withTrashed()->where('reference', $transaction->payment_reference)->first();
|
|
||||||
if ($group) {
|
|
||||||
$totalAmountToBePaid = 0;
|
|
||||||
$actualAmountPaid = $transaction->amount;
|
|
||||||
|
|
||||||
foreach ($group->groupTransactions as $groupTransaction) {
|
|
||||||
$invoice = $groupTransaction->transaction;
|
|
||||||
if($invoice->status !== ApprovalStatus::COMPLETED){
|
|
||||||
$totalAmountToBePaid += $invoice->amount;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(($totalAmountToBePaid - $actualAmountPaid) < 0.01){
|
|
||||||
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
Log::channel('storage_invoices')->info('Total amount from current transaction: '.$totalAmountToBePaid); //cief todo: to be removed
|
|
||||||
Log::channel('storage_invoices')->info('Total amount from paid transaction: '.$transaction->amount); //cief todo: to be removed
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -4,7 +4,6 @@ namespace App\Classes\Modules\Billplzs\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\App;
|
|
||||||
|
|
||||||
class CreatesBillplzBill
|
class CreatesBillplzBill
|
||||||
{
|
{
|
||||||
@@ -26,7 +25,7 @@ class CreatesBillplzBill
|
|||||||
$response = Http::withBasicAuth(config('billplz.api_key').':', '')->post(config('billplz.base_url').'/api/v3/bills', [
|
$response = Http::withBasicAuth(config('billplz.api_key').':', '')->post(config('billplz.base_url').'/api/v3/bills', [
|
||||||
'collection_id' => config('billplz.collection_id'),
|
'collection_id' => config('billplz.collection_id'),
|
||||||
'name' => $name,
|
'name' => $name,
|
||||||
'email' => App::environment('production') ? $email : 'development@cief-malaysia.com',
|
'email' => $email,
|
||||||
'description' => $description,
|
'description' => $description,
|
||||||
'amount' => $this->finalizeAmount($amount),
|
'amount' => $this->finalizeAmount($amount),
|
||||||
'redirect_url' => route('online_payment.redirect'),
|
'redirect_url' => route('online_payment.redirect'),
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Billplzs\Services;
|
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Http;
|
|
||||||
use App\Classes\Exceptions\MalformedRequestException;
|
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
class DeletesBillplzBill
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param string $billID
|
|
||||||
* @throws MalformedRequestException
|
|
||||||
*/
|
|
||||||
public function execute(string $billID) {
|
|
||||||
try{
|
|
||||||
$response = Http::withBasicAuth(config('billplz.api_key').':', '')->delete(config('billplz.base_url').'/api/v3/bills/'.$billID);
|
|
||||||
Log::channel('storage_invoices')->info('DeletesBillplzBill response: '.json_encode($response));
|
|
||||||
|
|
||||||
if($response->successful()){
|
|
||||||
$data = $response->json();
|
|
||||||
|
|
||||||
// $data['url'] = $data['url'].'?auto_submit=true';
|
|
||||||
|
|
||||||
return (object) $data;
|
|
||||||
}else{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}catch(\Exception $exception){
|
|
||||||
throw new MalformedRequestException('Unable to get correct response from billplz server: ' . $exception->getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+4
-23
@@ -10,18 +10,16 @@ use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
|||||||
use App\Http\Resources\DocumentResource;
|
use App\Http\Resources\DocumentResource;
|
||||||
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||||
use App\Classes\Modules\Companies\Processors\ApproveIdentificationDocumentOnExchangeProcessor;
|
|
||||||
use App\Classes\Modules\Documents\Services\FetchesDocument;
|
use App\Classes\Modules\Documents\Services\FetchesDocument;
|
||||||
|
|
||||||
use App\Classes\Modules\Documents\Services\ApprovesDocument;
|
use App\Classes\Modules\Documents\Services\ApprovesDocument;
|
||||||
use App\Classes\Modules\Notifications\DataTransferObjects\NotificationObject;
|
use App\Classes\Modules\Notifications\DataTransferObjects\NotificationObject;
|
||||||
Use App\Classes\Modules\Notifications\Processors\CreateNotificationProcessor;
|
Use App\Classes\Modules\Notifications\Processors\CreateNotificationProcessor;
|
||||||
use App\Classes\ValueObjects\Constants\DocumentType;
|
|
||||||
use App\Models\Document;
|
use App\Models\Document;
|
||||||
use App\Models\ExchangeCompanyConnection;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
class ApproveIdentificationDocumentLogic extends AbstractControllerLogic
|
class ApproveIdentificationDocumentLogic extends AbstractControllerLogic
|
||||||
{
|
{
|
||||||
@@ -57,9 +55,6 @@ class ApproveIdentificationDocumentLogic extends AbstractControllerLogic
|
|||||||
/** @var CreateNotificationProcessor */
|
/** @var CreateNotificationProcessor */
|
||||||
private $createNotificationProcessor;
|
private $createNotificationProcessor;
|
||||||
|
|
||||||
/** @var ApproveIdentificationDocumentOnExchangeProcessor */
|
|
||||||
private $approveIdentificationDocumentOnExchangeProcessor;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ApproveIdentificationDocumentLogic constructor.
|
* ApproveIdentificationDocumentLogic constructor.
|
||||||
* @param CanApproveDocument $canApproveDocument
|
* @param CanApproveDocument $canApproveDocument
|
||||||
@@ -69,9 +64,8 @@ class ApproveIdentificationDocumentLogic extends AbstractControllerLogic
|
|||||||
* @param UpdatesCompanyStatus $updatesCompanyStatus
|
* @param UpdatesCompanyStatus $updatesCompanyStatus
|
||||||
* @param UpdatesOrdersStatus $updatesOrdersStatus
|
* @param UpdatesOrdersStatus $updatesOrdersStatus
|
||||||
* @param CreateNotificationProcessor $createNotificationProcessor
|
* @param CreateNotificationProcessor $createNotificationProcessor
|
||||||
* @param ApproveIdentificationDocumentOnExchangeProcessor $approveIdentificationDocumentOnExchangeProcessor
|
|
||||||
*/
|
*/
|
||||||
public function __construct(CanApproveDocument $canApproveDocument, ApprovesDocument $approvesDocument, RejectsDocument $rejectsDocument, FetchesDocument $fetchesDocument, UpdatesCompanyStatus $updatesCompanyStatus, UpdatesOrdersStatus $updatesOrdersStatus, CreateNotificationProcessor $createNotificationProcessor, ApproveIdentificationDocumentOnExchangeProcessor $approveIdentificationDocumentOnExchangeProcessor)
|
public function __construct(CanApproveDocument $canApproveDocument, ApprovesDocument $approvesDocument, RejectsDocument $rejectsDocument, FetchesDocument $fetchesDocument, UpdatesCompanyStatus $updatesCompanyStatus, UpdatesOrdersStatus $updatesOrdersStatus, CreateNotificationProcessor $createNotificationProcessor)
|
||||||
{
|
{
|
||||||
$this->canApproveDocument = $canApproveDocument;
|
$this->canApproveDocument = $canApproveDocument;
|
||||||
$this->approvesDocument = $approvesDocument;
|
$this->approvesDocument = $approvesDocument;
|
||||||
@@ -80,7 +74,6 @@ class ApproveIdentificationDocumentLogic extends AbstractControllerLogic
|
|||||||
$this->updatesCompanyStatus = $updatesCompanyStatus;
|
$this->updatesCompanyStatus = $updatesCompanyStatus;
|
||||||
$this->updatesOrdersStatus = $updatesOrdersStatus;
|
$this->updatesOrdersStatus = $updatesOrdersStatus;
|
||||||
$this->createNotificationProcessor = $createNotificationProcessor;
|
$this->createNotificationProcessor = $createNotificationProcessor;
|
||||||
$this->approveIdentificationDocumentOnExchangeProcessor = $approveIdentificationDocumentOnExchangeProcessor;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -92,18 +85,11 @@ class ApproveIdentificationDocumentLogic extends AbstractControllerLogic
|
|||||||
*/
|
*/
|
||||||
public function logic(Request $request) : JsonResponse
|
public function logic(Request $request) : JsonResponse
|
||||||
{
|
{
|
||||||
$documentId = $request->route('document_id');
|
|
||||||
|
|
||||||
if ($request->route('exchange_company_id')) {
|
|
||||||
$companyModule = ExchangeCompanyConnection::where('exchange_company_id', $request->route('exchange_company_id'))->first()->companyModule;
|
|
||||||
$company = $companyModule->company;
|
|
||||||
$documentId = $company->documents()->whereIn('document_type', DocumentType::IDENTIFICATION_DOCUMENTS)->where('status', ApprovalStatus::PENDING_VERIFICATION)->first()->id;
|
|
||||||
}
|
|
||||||
|
|
||||||
$status = $request->route('status');
|
$status = $request->route('status');
|
||||||
|
|
||||||
/** @var Document $document */
|
/** @var Document $document */
|
||||||
$document = $this->fetchesDocument->execute(['id' => $documentId]);
|
$document = $this->fetchesDocument->execute(['id' => $request->route('document_id')]);
|
||||||
|
|
||||||
$this->canApproveDocument->passes();
|
$this->canApproveDocument->passes();
|
||||||
|
|
||||||
@@ -125,11 +111,6 @@ class ApproveIdentificationDocumentLogic extends AbstractControllerLogic
|
|||||||
$orders = $this->updatesOrdersStatus->execute($document->owner, ApprovalStatus::APPROVED);
|
$orders = $this->updatesOrdersStatus->execute($document->owner, ApprovalStatus::APPROVED);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if this request is not calling from exchange portal, then approve the document on exchange portal for this user
|
|
||||||
$companyModule = $document->owner->companyModules()->first();
|
|
||||||
if (!$request->route('exchange_company_id') && $companyModule->exchangeCompanyConnection()->first()) {
|
|
||||||
$this->approveIdentificationDocumentOnExchangeProcessor->execute($request, $companyModule->id, $status);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->resourceResponse(new DocumentResource($document));
|
return $this->resourceResponse(new DocumentResource($document));
|
||||||
|
|
||||||
|
|||||||
+1
-13
@@ -7,8 +7,6 @@ use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|||||||
use App\Classes\Modules\Companies\Processors\AssignConnectionSegmentProcessor;
|
use App\Classes\Modules\Companies\Processors\AssignConnectionSegmentProcessor;
|
||||||
use App\Classes\Modules\Companies\Services\FetchesCompany;
|
use App\Classes\Modules\Companies\Services\FetchesCompany;
|
||||||
use App\Classes\Modules\Companies\Services\FetchesCompanyConnection;
|
use App\Classes\Modules\Companies\Services\FetchesCompanyConnection;
|
||||||
use App\Classes\Modules\Contacts\DataTransferObjects\ContactObject;
|
|
||||||
use App\Classes\Modules\Contacts\Processors\CreateContactProcessor;
|
|
||||||
use App\Http\Resources\CompanyResource;
|
use App\Http\Resources\CompanyResource;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
@@ -35,22 +33,17 @@ class AssignCompanyConnectionToConnectionSegmentLogic extends AbstractController
|
|||||||
/** @var AssignConnectionSegmentProcessor */
|
/** @var AssignConnectionSegmentProcessor */
|
||||||
private $assignCompanyConnectionToConnectionSegmentProcessor;
|
private $assignCompanyConnectionToConnectionSegmentProcessor;
|
||||||
|
|
||||||
/** @var CreateContactProcessor */
|
|
||||||
private $createContactProcessor;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* AssignCompanyToSegmentLogic constructor.
|
* AssignCompanyToSegmentLogic constructor.
|
||||||
* @param FetchesCompany $fetchesCompany
|
* @param FetchesCompany $fetchesCompany
|
||||||
* @param FetchesCompanyConnection $fetchesCompanyConnection
|
* @param FetchesCompanyConnection $fetchesCompanyConnection
|
||||||
* @param AssignConnectionSegmentProcessor $assignCompanyConnectionToConnectionSegmentProcessor
|
* @param AssignConnectionSegmentProcessor $assignCompanyConnectionToConnectionSegmentProcessor
|
||||||
* @param CreateContactProcessor $createContactProcessor
|
|
||||||
*/
|
*/
|
||||||
public function __construct(FetchesCompany $fetchesCompany, FetchesCompanyConnection $fetchesCompanyConnection, AssignConnectionSegmentProcessor $assignCompanyConnectionToConnectionSegmentProcessor, CreateContactProcessor $createContactProcessor)
|
public function __construct(FetchesCompany $fetchesCompany, FetchesCompanyConnection $fetchesCompanyConnection, AssignConnectionSegmentProcessor $assignCompanyConnectionToConnectionSegmentProcessor)
|
||||||
{
|
{
|
||||||
$this->fetchesCompany = $fetchesCompany;
|
$this->fetchesCompany = $fetchesCompany;
|
||||||
$this->fetchesCompanyConnection = $fetchesCompanyConnection;
|
$this->fetchesCompanyConnection = $fetchesCompanyConnection;
|
||||||
$this->assignCompanyConnectionToConnectionSegmentProcessor = $assignCompanyConnectionToConnectionSegmentProcessor;
|
$this->assignCompanyConnectionToConnectionSegmentProcessor = $assignCompanyConnectionToConnectionSegmentProcessor;
|
||||||
$this->createContactProcessor = $createContactProcessor;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -69,11 +62,6 @@ class AssignCompanyConnectionToConnectionSegmentLogic extends AbstractController
|
|||||||
|
|
||||||
$this->assignCompanyConnectionToConnectionSegmentProcessor->execute($companyConnection, $request->input('segment_id'));
|
$this->assignCompanyConnectionToConnectionSegmentProcessor->execute($companyConnection, $request->input('segment_id'));
|
||||||
|
|
||||||
if ($request->input('segment_id') == 10 || $request->input('segment_id') == 11) {
|
|
||||||
$contactObject = new ContactObject('Whatsapp: ' . $request->input('name'), $request->input('phone'), null, null);
|
|
||||||
$this->createContactProcessor->execute($contactObject, $company);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->resourceResponse(new CompanyResource($company));
|
return $this->resourceResponse(new CompanyResource($company));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+2
-22
@@ -4,7 +4,6 @@ namespace App\Classes\Modules\Companies\ControllersLogic;
|
|||||||
|
|
||||||
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||||
use App\Classes\Modules\Companies\Processors\CreateIdentificationDocumentOnExchangeProcessor;
|
|
||||||
use App\Classes\Modules\Companies\Services\FetchesCompany;
|
use App\Classes\Modules\Companies\Services\FetchesCompany;
|
||||||
use App\Classes\Modules\Companies\Services\UpdatesCompanyStatus;
|
use App\Classes\Modules\Companies\Services\UpdatesCompanyStatus;
|
||||||
use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject;
|
use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject;
|
||||||
@@ -15,7 +14,6 @@ use App\Classes\ValueObjects\Constants\CompanyType;
|
|||||||
use App\Classes\ValueObjects\Constants\DocumentType;
|
use App\Classes\ValueObjects\Constants\DocumentType;
|
||||||
use App\Models\Company;
|
use App\Models\Company;
|
||||||
use App\Models\Document;
|
use App\Models\Document;
|
||||||
use App\Models\ExchangeCompanyConnection;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
@@ -44,9 +42,6 @@ class CreateIdentificationDocumentLogic extends AbstractControllerLogic
|
|||||||
/** @var UpdatesCompanyStatus */
|
/** @var UpdatesCompanyStatus */
|
||||||
private $updatesCompanyStatus;
|
private $updatesCompanyStatus;
|
||||||
|
|
||||||
/** @var CreateIdentificationDocumentOnExchangeProcessor */
|
|
||||||
private $createIdentificationDocumentOnExchangeProcessor;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CreateIdentificationDocumentLogic constructor.
|
* CreateIdentificationDocumentLogic constructor.
|
||||||
@@ -54,15 +49,13 @@ class CreateIdentificationDocumentLogic extends AbstractControllerLogic
|
|||||||
* @param CreatesDocument $createsDocument
|
* @param CreatesDocument $createsDocument
|
||||||
* @param CreatesFiles $createsFile
|
* @param CreatesFiles $createsFile
|
||||||
* @param UpdatesCompanyStatus $updatesCompanyStatus
|
* @param UpdatesCompanyStatus $updatesCompanyStatus
|
||||||
* @param CreateIdentificationDocumentOnExchangeProcessor $createIdentificationDocumentOnExchangeProcessor
|
|
||||||
*/
|
*/
|
||||||
public function __construct(FetchesCompany $fetchesCompany, CreatesDocument $createsDocument, CreatesFiles $createsFile, UpdatesCompanyStatus $updatesCompanyStatus, CreateIdentificationDocumentOnExchangeProcessor $createIdentificationDocumentOnExchangeProcessor)
|
public function __construct(FetchesCompany $fetchesCompany, CreatesDocument $createsDocument, CreatesFiles $createsFile, UpdatesCompanyStatus $updatesCompanyStatus)
|
||||||
{
|
{
|
||||||
$this->fetchesCompany = $fetchesCompany;
|
$this->fetchesCompany = $fetchesCompany;
|
||||||
$this->createsDocument = $createsDocument;
|
$this->createsDocument = $createsDocument;
|
||||||
$this->createsFile = $createsFile;
|
$this->createsFile = $createsFile;
|
||||||
$this->updatesCompanyStatus = $updatesCompanyStatus;
|
$this->updatesCompanyStatus = $updatesCompanyStatus;
|
||||||
$this->createIdentificationDocumentOnExchangeProcessor = $createIdentificationDocumentOnExchangeProcessor;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -73,15 +66,8 @@ class CreateIdentificationDocumentLogic extends AbstractControllerLogic
|
|||||||
public function logic(Request $request) : JsonResponse
|
public function logic(Request $request) : JsonResponse
|
||||||
{
|
{
|
||||||
|
|
||||||
if ($request->route('exchange_company_id')) {
|
|
||||||
$companyModule = ExchangeCompanyConnection::where('exchange_company_id', $request->route('exchange_company_id'))->first()->companyModule;
|
|
||||||
$companyId = $companyModule->company_id;
|
|
||||||
} else {
|
|
||||||
$companyId = $request->route('id');
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @var Company $company */
|
/** @var Company $company */
|
||||||
$company = $this->fetchesCompany->execute(['id' => $companyId]);
|
$company = $this->fetchesCompany->execute(['id' => $request->route('id')]);
|
||||||
$object = new DocumentObject($company->type === CompanyType::COMPANY_BUSINESS ?
|
$object = new DocumentObject($company->type === CompanyType::COMPANY_BUSINESS ?
|
||||||
DocumentType::SSM_REGISTRATION : DocumentType::IDENTITY_CARD, $request->input('files'),
|
DocumentType::SSM_REGISTRATION : DocumentType::IDENTITY_CARD, $request->input('files'),
|
||||||
$request->input('identification_no'), ApprovalStatus::PENDING_VERIFICATION, 'identifications');
|
$request->input('identification_no'), ApprovalStatus::PENDING_VERIFICATION, 'identifications');
|
||||||
@@ -92,12 +78,6 @@ class CreateIdentificationDocumentLogic extends AbstractControllerLogic
|
|||||||
|
|
||||||
$this->updatesCompanyStatus->execute($company, ApprovalStatus::PENDING_VERIFICATION);
|
$this->updatesCompanyStatus->execute($company, ApprovalStatus::PENDING_VERIFICATION);
|
||||||
|
|
||||||
// create identification on exchange if this request not coming from exchange
|
|
||||||
$companyModule = $company->companyModules()->first();
|
|
||||||
if (!$request->route('exchange_company_id') && $companyModule->exchangeCompanyConnection()->first()) {
|
|
||||||
$this->createIdentificationDocumentOnExchangeProcessor->execute($request, $companyModule->id);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->response([]);
|
return $this->response([]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Companies\ControllersLogic;
|
|
||||||
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
||||||
use App\Classes\Modules\Companies\Processors\LinkExchangeCompanyProcessor;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
|
|
||||||
class LinkExchangeCompanyLogic extends AbstractControllerLogic
|
|
||||||
{
|
|
||||||
|
|
||||||
protected function notification():array {
|
|
||||||
return [
|
|
||||||
'title' => 'Connect Exchange with Izyim Account',
|
|
||||||
'message' => 'You have successfully connect your exchange account to Izyim Account'
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @var LinkExchangeCompanyProcessor */
|
|
||||||
private $linkExchangeCompanyProcessor;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* LinkExchangeCompanyLogic constructor.
|
|
||||||
* @param LinkExchangeCompanyProcessor $linkExchangeCompanyProcessor
|
|
||||||
*/
|
|
||||||
public function __construct(LinkExchangeCompanyProcessor $linkExchangeCompanyProcessor)
|
|
||||||
{
|
|
||||||
$this->linkExchangeCompanyProcessor = $linkExchangeCompanyProcessor;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @return JsonResponse
|
|
||||||
* @throws \App\Classes\Exceptions\AccessForbiddenException
|
|
||||||
* @throws \App\Classes\Exceptions\AccessUnauthorisedException
|
|
||||||
* @throws \App\Classes\Exceptions\RequestValidationException
|
|
||||||
*/
|
|
||||||
protected function logic(Request $request): JsonResponse {
|
|
||||||
|
|
||||||
return $this->response($this->linkExchangeCompanyProcessor->execute($request));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -3,14 +3,10 @@
|
|||||||
namespace App\Classes\Modules\Companies\ControllersLogic;
|
namespace App\Classes\Modules\Companies\ControllersLogic;
|
||||||
|
|
||||||
|
|
||||||
use App\Classes\Exceptions\AccessForbiddenException;
|
|
||||||
use App\Classes\Exceptions\MalformedRequestException;
|
|
||||||
use App\Classes\Exceptions\RequestValidationException;
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||||
use App\Classes\Modules\Companies\Services\ListsCompanyModules;
|
use App\Classes\Modules\Companies\Services\ListsCompanyModules;
|
||||||
use App\Classes\Modules\Companies\Standards\Rules\CanListCompanies;
|
use App\Classes\Modules\Companies\Standards\Rules\CanListCompanies;
|
||||||
use App\Http\Resources\CompanyModuleResource;
|
use App\Http\Resources\CompanyModuleResource;
|
||||||
use App\Transformers\CompanyTransformer;
|
|
||||||
use ErrorException;
|
use ErrorException;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
@@ -21,8 +17,7 @@ class ListCompanyModulesLogic extends AbstractControllerLogic
|
|||||||
/**
|
/**
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
protected function notification(): array
|
protected function notification():array {
|
||||||
{
|
|
||||||
return [
|
return [
|
||||||
'title' => 'Retrieved Company Moduels',
|
'title' => 'Retrieved Company Moduels',
|
||||||
'message' => 'You have successfully retrieved a list of Companies'
|
'message' => 'You have successfully retrieved a list of Companies'
|
||||||
@@ -50,26 +45,15 @@ class ListCompanyModulesLogic extends AbstractControllerLogic
|
|||||||
/**
|
/**
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
* @return JsonResponse
|
* @return JsonResponse
|
||||||
* @throws AccessForbiddenException
|
* @throws \App\Classes\Exceptions\AccessForbiddenException
|
||||||
* @throws MalformedRequestException
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
* @throws RequestValidationException
|
* @throws \App\Classes\Exceptions\RequestValidationException
|
||||||
*/
|
*/
|
||||||
public function logic(Request $request): JsonResponse
|
public function logic(Request $request) : JsonResponse
|
||||||
{
|
{
|
||||||
$this->canListCompanies->passes();
|
$this->canListCompanies->passes();
|
||||||
|
|
||||||
$query = $this->listsCompanyModules->execute($this->listsCompanyModules->deserializeFilters($request->input('filters')));
|
$query = $this->listsCompanyModules->execute($this->listsCompanyModules->deserializeFilters($request->input('filters')));
|
||||||
|
|
||||||
/*include all relationships*/
|
|
||||||
/* return fractal()
|
|
||||||
->collection($query, new CompanyTransformer)
|
|
||||||
->parseIncludes('company')
|
|
||||||
->parseIncludes('contact')
|
|
||||||
->parseIncludes('remarks')
|
|
||||||
->parseIncludes('address')
|
|
||||||
->parseIncludes('billingAddress')
|
|
||||||
->respond(200, [], JSON_PRETTY_PRINT);*/
|
|
||||||
|
|
||||||
return $this->collectionResponse(CompanyModuleResource::collection($query));
|
return $this->collectionResponse(CompanyModuleResource::collection($query));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
-121
@@ -1,121 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Companies\ControllersLogic;
|
|
||||||
|
|
||||||
|
|
||||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
||||||
use App\Classes\Modules\Companies\Services\FetchesCompany;
|
|
||||||
use App\Classes\Modules\Companies\Services\UpdatesCompanyModuleIsCreditTerm;
|
|
||||||
use App\Classes\Modules\Companies\Standards\Rules\CanUpdateCompanyModule;
|
|
||||||
use App\Classes\Modules\Transactions\Services\ListsTransactions;
|
|
||||||
use App\Classes\Modules\Transactions\Services\UpdatesTransactionIsWaived;
|
|
||||||
use App\Classes\Modules\Transactions\Processors\CheckStorageInvoiceTransactionProcessor;
|
|
||||||
use App\Classes\ValueObjects\Constants\TransactionType;
|
|
||||||
use App\Models\Order;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Illuminate\Support\Facades\Auth;
|
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
class UpdateCompanyCreditTermStatusLogic extends AbstractControllerLogic
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function notification():array {
|
|
||||||
return [
|
|
||||||
'title' => 'Update Company Credit Term Status',
|
|
||||||
'message' => 'You have successfully updated Company Credit Term Status'
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @var FetchesCompany */
|
|
||||||
private $fetchesCompany;
|
|
||||||
|
|
||||||
/** @var UpdatesCompanyModuleIsCreditTerm */
|
|
||||||
private $updatesCompanyModuleIsCreditTerm;
|
|
||||||
|
|
||||||
/** @var CanUpdateCompanyModule */
|
|
||||||
private $canUpdateCompanyModule;
|
|
||||||
|
|
||||||
/** @var ListsTransactions */
|
|
||||||
private $listsTransactions;
|
|
||||||
|
|
||||||
/** @var UpdatesTransactionIsWaived */
|
|
||||||
private $updatesTransactionIsWaived;
|
|
||||||
|
|
||||||
/** @var CheckStorageInvoiceTransactionProcessor */
|
|
||||||
private $storageInvoiceTransactionProcessor;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* UpdateCompanyCreditTermStatusLogic constructor.
|
|
||||||
* @param FetchesCompany $fetchesCompany
|
|
||||||
* @param UpdatesCompanyModuleIsCreditTerm $updatesCompanyModuleIsCreditTerm
|
|
||||||
* @param CanUpdateCompanyModule $canUpdateCompanyModule
|
|
||||||
* @param UpdatesTransactionIsWaived $updatesTransactionIsWaived
|
|
||||||
* @param ListsTransactions $listsTransactions
|
|
||||||
* @param CheckStorageInvoiceTransactionProcessor $storageInvoiceTransactionProcessor
|
|
||||||
*/
|
|
||||||
public function __construct(FetchesCompany $fetchesCompany, UpdatesCompanyModuleIsCreditTerm $updatesCompanyModuleIsCreditTerm, CanUpdateCompanyModule $canUpdateCompanyModule, UpdatesTransactionIsWaived $updatesTransactionIsWaived, ListsTransactions $listsTransactions, CheckStorageInvoiceTransactionProcessor $storageInvoiceTransactionProcessor)
|
|
||||||
{
|
|
||||||
$this->fetchesCompany = $fetchesCompany;
|
|
||||||
$this->updatesCompanyModuleIsCreditTerm = $updatesCompanyModuleIsCreditTerm;
|
|
||||||
$this->canUpdateCompanyModule = $canUpdateCompanyModule;
|
|
||||||
$this->listsTransactions = $listsTransactions;
|
|
||||||
$this->updatesTransactionIsWaived = $updatesTransactionIsWaived;
|
|
||||||
$this->storageInvoiceTransactionProcessor = $storageInvoiceTransactionProcessor;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @return JsonResponse
|
|
||||||
* @throws \App\Classes\Exceptions\AccessForbiddenException
|
|
||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
|
||||||
* @throws \App\Classes\Exceptions\RequestValidationException
|
|
||||||
*/
|
|
||||||
public function logic(Request $request) : JsonResponse
|
|
||||||
{
|
|
||||||
$this->canUpdateCompanyModule->passes();
|
|
||||||
|
|
||||||
$company = $this->fetchesCompany->execute(['id' => $request->route('id')]);
|
|
||||||
$companyModule = $company->companyModules()->first();
|
|
||||||
$isCreditTerm = $companyModule->connections()->first()->is_credit_term;
|
|
||||||
|
|
||||||
if ($isCreditTerm == 1) {
|
|
||||||
$isCreditTerm = 0;
|
|
||||||
} else {
|
|
||||||
$isCreditTerm = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if($isCreditTerm === 1){
|
|
||||||
//{"per_page":10,"order_by":{"column":"id","DESC":true},"status_in":[2],"receiver":190,"type_in":[1],"does_not_have_payment_status_in":[0,1],"does_not_have_groups":1,"check_for_storage_invoice":1}
|
|
||||||
|
|
||||||
$filters = [
|
|
||||||
'status_in' => [2],
|
|
||||||
'receiver' => $companyModule->id,
|
|
||||||
'type_in' => [TransactionType::STORAGE_INVOICE]
|
|
||||||
];
|
|
||||||
|
|
||||||
$transactions = $this->listsTransactions->execute($filters);
|
|
||||||
foreach($transactions as $transaction){
|
|
||||||
$this->updatesTransactionIsWaived->execute($transaction);
|
|
||||||
$packingList = $transaction->owner()->first();
|
|
||||||
if($packingList){
|
|
||||||
$order = $packingList->owner()->first();
|
|
||||||
if($order instanceof Order){
|
|
||||||
$storages = $this->storageInvoiceTransactionProcessor->executeOrder($order);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->updatesCompanyModuleIsCreditTerm->execute($company->companyModules()->first()->connections()->first(), $isCreditTerm);
|
|
||||||
Log::info(Auth::user()->email." updated credit term status for customer with id: " .$request->route('id'). " to status " . $isCreditTerm);
|
|
||||||
|
|
||||||
$result = ['is_credit_term' => $isCreditTerm];
|
|
||||||
return $this->response(['data' => $result]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-48
@@ -1,48 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Companies\Processors;
|
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Illuminate\Support\Facades\App;
|
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
class ApproveIdentificationDocumentOnExchangeProcessor
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @return string
|
|
||||||
* @throws \App\Classes\Exceptions\AccessForbiddenException
|
|
||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
|
||||||
* @throws \App\Classes\Exceptions\RequestValidationException
|
|
||||||
*/
|
|
||||||
public function execute(Request $request, $companyModuleId, $status) {
|
|
||||||
if (App::environment(['production'])) {
|
|
||||||
dd("Delete this line before push to production");
|
|
||||||
$url = "https://exchange.cief-malaysia.com/api/v1/shipping/company/{$companyModuleId}/identification/approval/{$status}";
|
|
||||||
} else if (App::environment(['local'])) {
|
|
||||||
$url = "http://127.0.0.1:8000/api/v1/shipping/company/{$companyModuleId}/identification/approval/{$status}";
|
|
||||||
} else {
|
|
||||||
$url = "https://dev.exchange.cief-malaysia.com/api/v1/shipping/company/{$companyModuleId}/identification/approval/{$status}";
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
$client = new \GuzzleHttp\Client(['verify' => false]);
|
|
||||||
$token = $request->bearerToken();
|
|
||||||
$headers = [
|
|
||||||
'Authorization' => 'Bearer ' . $token,
|
|
||||||
'Accept' => 'application/json',
|
|
||||||
];
|
|
||||||
$formParams = $request->toArray();
|
|
||||||
$response = $client->request('PUT', $url, [
|
|
||||||
'headers' => $headers,
|
|
||||||
'form_params' => $formParams
|
|
||||||
]);
|
|
||||||
$body = $response->getBody();
|
|
||||||
$contents = json_decode($body, true);
|
|
||||||
|
|
||||||
return $contents;
|
|
||||||
} catch(\GuzzleHttp\Exception\RequestException $exception){
|
|
||||||
Log::error($exception->getResponse()->getBody()->getContents());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
-48
@@ -1,48 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Companies\Processors;
|
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Illuminate\Support\Facades\App;
|
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
class CreateIdentificationDocumentOnExchangeProcessor
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @return string
|
|
||||||
* @throws \App\Classes\Exceptions\AccessForbiddenException
|
|
||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
|
||||||
* @throws \App\Classes\Exceptions\RequestValidationException
|
|
||||||
*/
|
|
||||||
public function execute(Request $request, $companyModuleId) {
|
|
||||||
if (App::environment(['production'])) {
|
|
||||||
dd("Delete this line before push to production");
|
|
||||||
$url = "https://exchange.cief-malaysia.com/api/v1/shipping/company/{$companyModuleId}/identification/create";
|
|
||||||
} else if (App::environment(['local'])) {
|
|
||||||
$url = "http://127.0.0.1:8000/api/v1/shipping/company/{$companyModuleId}/identification/create";
|
|
||||||
} else {
|
|
||||||
$url = "https://dev.exchange.cief-malaysia.com/api/v1/shipping/company/{$companyModuleId}/identification/create";
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
$client = new \GuzzleHttp\Client(['verify' => false]);
|
|
||||||
$token = $request->bearerToken();
|
|
||||||
$headers = [
|
|
||||||
'Authorization' => 'Bearer ' . $token,
|
|
||||||
'Accept' => 'application/json',
|
|
||||||
];
|
|
||||||
$formParams = $request->toArray();
|
|
||||||
$response = $client->request('POST', $url, [
|
|
||||||
'headers' => $headers,
|
|
||||||
'form_params' => $formParams
|
|
||||||
]);
|
|
||||||
$body = $response->getBody();
|
|
||||||
$contents = json_decode($body, true);
|
|
||||||
|
|
||||||
return $contents;
|
|
||||||
} catch(\GuzzleHttp\Exception\RequestException $exception){
|
|
||||||
Log::error($exception->getResponse()->getBody()->getContents());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Companies\Processors;
|
|
||||||
|
|
||||||
use App\Classes\Modules\Accounts\DataTransferObjects\AuthenticationCredentialsObject;
|
|
||||||
use App\Classes\Modules\Accounts\Services\AuthenticatesUser;
|
|
||||||
use App\Classes\Modules\Accounts\Services\AuthenticationRedirect;
|
|
||||||
use App\Classes\Modules\Accounts\Services\FetchesUser;
|
|
||||||
use App\Classes\Modules\Accounts\Services\GeneratesAuthenticationToken;
|
|
||||||
use App\Classes\Modules\Accounts\Standards\Rules\CanAuthenticateUser;
|
|
||||||
use App\Classes\Modules\Companies\Services\ConnectCompanyModuleToExchangeCompany;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
|
|
||||||
class LinkExchangeCompanyProcessor
|
|
||||||
{
|
|
||||||
|
|
||||||
/** @var CanAuthenticateUser */
|
|
||||||
private $canAuthenticateUser;
|
|
||||||
|
|
||||||
/** @var AuthenticatesUser */
|
|
||||||
private $authenticatesUser;
|
|
||||||
|
|
||||||
/** @var GeneratesAuthenticationToken */
|
|
||||||
private $generatesAuthenticationToken;
|
|
||||||
|
|
||||||
/** @var FetchesUser */
|
|
||||||
private $fetchesUser;
|
|
||||||
|
|
||||||
/** @var AuthenticationRedirect */
|
|
||||||
private $authenticationRedirect;
|
|
||||||
|
|
||||||
/** @var ConnectCompanyModuleToExchangeCompany */
|
|
||||||
private $connectCompanyModuleToExchangeCompany;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* AuthenticationProcessor constructor.
|
|
||||||
* @param CanAuthenticateUser $canAuthenticateUser
|
|
||||||
* @param AuthenticatesUser $authenticatesUser
|
|
||||||
* @param GeneratesAuthenticationToken $generatesAuthenticationToken
|
|
||||||
* @param FetchesUser $fetchesUser
|
|
||||||
* @param AuthenticationRedirect $authenticationRedirect
|
|
||||||
* @param ConnectCompanyModuleToExchangeCompany $connectCompanyModuleToExchangeCompany
|
|
||||||
*/
|
|
||||||
public function __construct(CanAuthenticateUser $canAuthenticateUser, AuthenticatesUser $authenticatesUser, GeneratesAuthenticationToken $generatesAuthenticationToken, FetchesUser $fetchesUser, AuthenticationRedirect $authenticationRedirect, ConnectCompanyModuleToExchangeCompany $connectCompanyModuleToExchangeCompany)
|
|
||||||
{
|
|
||||||
$this->canAuthenticateUser = $canAuthenticateUser;
|
|
||||||
$this->authenticatesUser = $authenticatesUser;
|
|
||||||
$this->generatesAuthenticationToken = $generatesAuthenticationToken;
|
|
||||||
$this->fetchesUser = $fetchesUser;
|
|
||||||
$this->authenticationRedirect = $authenticationRedirect;
|
|
||||||
$this->connectCompanyModuleToExchangeCompany = $connectCompanyModuleToExchangeCompany;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @return array
|
|
||||||
* @throws \App\Classes\Exceptions\AccessForbiddenException
|
|
||||||
* @throws \App\Classes\Exceptions\AccessUnauthorisedException
|
|
||||||
* @throws \App\Classes\Exceptions\RequestValidationException
|
|
||||||
*/
|
|
||||||
public function execute(Request $request): array {
|
|
||||||
|
|
||||||
$object = new AuthenticationCredentialsObject($request->input('email'), $request->input('password'));
|
|
||||||
|
|
||||||
$this->canAuthenticateUser->passes($object);
|
|
||||||
|
|
||||||
$this->authenticatesUser->execute($object);
|
|
||||||
|
|
||||||
$user = $this->fetchesUser->execute(['email' => $object->getEmail()]);
|
|
||||||
|
|
||||||
$companyModule = $user->companyModule()->first();
|
|
||||||
|
|
||||||
$this->connectCompanyModuleToExchangeCompany->execute($companyModule, $request->route('exchange_company_id'));
|
|
||||||
|
|
||||||
return ['shipping_company_module_id' => $companyModule->id];
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
+1
-1
@@ -20,7 +20,7 @@ class AssignsCompanyConnectionToConnectionSegment extends AbstractUpdateRecord
|
|||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
|
||||||
$companyConnection->segments()->attach($segment, ['created_at' => now(), 'updated_at' => now()]);
|
$companyConnection->segments()->attach($segment);
|
||||||
|
|
||||||
return $companyConnection;
|
return $companyConnection;
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ class AssignsCompanyToSegment extends AbstractUpdateRecord
|
|||||||
try {
|
try {
|
||||||
$companyModule = $company->companyModules()->where('type', BusinessType::IMPORTER)->first();
|
$companyModule = $company->companyModules()->where('type', BusinessType::IMPORTER)->first();
|
||||||
$connection = $companyModule->connections()->where('inviter_reference', 'CIEF');
|
$connection = $companyModule->connections()->where('inviter_reference', 'CIEF');
|
||||||
$connection->segments()->attach($segment, ['created_at' => now(), 'updated_at' => now()]);
|
$connection->segments()->attach($segment);
|
||||||
|
|
||||||
return $company;
|
return $company;
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class AssignsEmployee extends AbstractUpdateRecord
|
|||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
|
||||||
$object->getCompanyModule()->employees()->attach($object->getUser(), ['status' => $object->getStatus(), 'role_id' => $object->getRoleId(), 'created_at' => now(), 'updated_at' => now()]);
|
$object->getCompanyModule()->employees()->attach($object->getUser(), ['status' => $object->getStatus(),'role_id' => $object->getRoleId()]);
|
||||||
|
|
||||||
return $object->getCompanyModule();
|
return $object->getCompanyModule();
|
||||||
|
|
||||||
|
|||||||
@@ -1,25 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Companies\Services;
|
|
||||||
|
|
||||||
use App\Classes\Exceptions\MalformedRequestException;
|
|
||||||
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
|
||||||
use App\Models\CompanyModule;
|
|
||||||
use App\Models\ExchangeCompanyConnection;
|
|
||||||
|
|
||||||
class ConnectCompanyModuleToExchangeCompany extends AbstractUpdateRecord
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param Company $company
|
|
||||||
* @return \Illuminate\Database\Eloquent\Model
|
|
||||||
* @throws MalformedRequestException
|
|
||||||
*/
|
|
||||||
public function execute(CompanyModule $companyModule, $exchangeCompanyId)
|
|
||||||
{
|
|
||||||
$model = new ExchangeCompanyConnection();
|
|
||||||
$model->company_module_id = $companyModule->id;
|
|
||||||
$model->exchange_company_id = $exchangeCompanyId;
|
|
||||||
|
|
||||||
return $this->handler($model);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Companies\Services;
|
|
||||||
|
|
||||||
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
|
||||||
use App\Models\CompanyConnection;
|
|
||||||
|
|
||||||
class UpdatesCompanyModuleIsCreditTerm extends AbstractUpdateRecord
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param CompanyConnection $model
|
|
||||||
* @param int $isCreditTerm
|
|
||||||
* @return \Illuminate\Database\Eloquent\Model
|
|
||||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
|
||||||
*/
|
|
||||||
public function execute(CompanyConnection $model, int $isCreditTerm)
|
|
||||||
{
|
|
||||||
$model->is_credit_term = $isCreditTerm;
|
|
||||||
|
|
||||||
return $this->handler($model);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user