Compare commits

...

80 Commits

Author SHA1 Message Date
edmondlang c70596e6bb Merge branch 'master' of https://gitlab.com/CIEFWorldwideSdnBhd/shipping-portal into dev 2023-06-29 14:47:25 +08:00
edmondlang ebc3e588ca update support 2023-06-29 14:35:12 +08:00
edmondlang 80471acc5b update support page 2023-06-28 01:08:31 +08:00
Omair Saleh ea08774111 Merge remote-tracking branch 'origin/master' 2023-06-23 14:43:04 +08:00
Omair Saleh 4a1f05e62a include ref column to payment export for autocount 2023-06-23 14:42:46 +08:00
edmondlang 840fb86192 show bill_no for all payments 2023-06-22 13:41:48 +08:00
Omair Saleh 7a171685f6 create a public api for mappable transactions 2023-06-21 16:34:50 +08:00
Omair Saleh 096e039ffb create a public api for mappable transactions 2023-06-21 16:31:52 +08:00
Omair Saleh 2319393758 create a public api for mappable transactions 2023-06-21 16:30:30 +08:00
Omair Saleh 85ba9d66d5 create a public api for mappable transactions 2023-06-21 16:21:08 +08:00
Omair Saleh 626dff6137 create a public api for mappable transactions 2023-06-21 15:19:45 +08:00
Omair Saleh 99efce22db add owner type column to transaction resource to help with bank mapping function in exchange 2023-06-21 13:25:56 +08:00
Omair Saleh 4a9e89c752 disable accounting task in crm 2023-06-15 06:30:48 +08:00
Omair Saleh 39e3398f8e debug yd api 2023-06-09 17:46:27 +08:00
Omair Saleh 7db77d619b debug yd api 2023-06-09 17:40:59 +08:00
Omair Saleh 8f390311af debug yd api 2023-06-09 15:32:39 +08:00
Omair Saleh 6502957021 debug yd api 2023-06-09 15:21:16 +08:00
Omair Saleh d6ddf6d607 fix invoice email 2023-06-07 10:04:54 +08:00
Omair Saleh b368b1c0d1 debug invoice email 2023-06-07 09:59:21 +08:00
Omair Saleh a2ef3ed1b1 debug invoice email 2023-06-07 09:57:47 +08:00
Omair Saleh e1b712ad10 debug invoice email 2023-06-07 09:54:52 +08:00
Omair Saleh ddbfc5fdfd debug invoice email 2023-06-07 09:51:06 +08:00
Martin Kiragu 924d94796d Updated the orderv2 endpoints 2023-05-26 20:47:23 +03:00
Martin Kiragu 92a38a96a0 updates on the customers endpoint 2023-05-26 19:02:46 +03:00
Martin Kiragu c8cdc5ff78 update unclaumed list query and response 2023-05-26 16:56:21 +03:00
Omair Saleh 1cdd511f67 fix bug with invoice showing that doesn't belong to the order 2023-05-25 15:35:56 +08:00
Omair Saleh f7d0fe117e fix bug with invoice showing that doesn't belong to the order 2023-05-25 15:35:11 +08:00
Omair Saleh 4dede50156 fix bug with invoice showing that doesn't belong to the order 2023-05-25 15:34:19 +08:00
Omair Saleh 0d555eedc9 fix bug with invoice showing that doesn't belong to the order 2023-05-25 15:32:19 +08:00
Omair Saleh 7f73ec14a5 fix bug with fetching company module from invoice modal in create payment transaction processor 2023-05-25 15:08:24 +08:00
Omair Saleh 408397e20e Merge remote-tracking branch 'origin/master' 2023-05-25 15:06:36 +08:00
Omair Saleh ef37f1ebbe fix bug with fetching company module from invoice modal in create payment transaction processor 2023-05-25 15:06:17 +08:00
Martin Kiragu 33d922bb23 only load medium and original files 2023-05-24 22:24:37 +03:00
Martin Kiragu 1b0f864921 update list updates 2023-05-24 21:45:51 +03:00
Martin Kiragu dfacae1a5d services column, reduce queries and format numbers 2023-05-23 08:22:29 +03:00
Martin Kiragu caaab55e88 remove the negative packages values 2023-05-23 07:55:57 +03:00
Martin Kiragu 07d353d4bb fix count error 2023-05-23 07:07:14 +03:00
Martin Kiragu 823958504c fix error 2023-05-21 18:19:43 +03:00
Martin Kiragu 4cb30ad7ab switch to Eager Loading and Reduce Database Queries by getting count query directly 2023-05-21 18:05:55 +03:00
edmondlang 914e9a6f0f add BillNo Filter 2023-05-21 19:20:26 +08:00
edmondlang 7b8eadd5d1 Merge branch 'master' of https://gitlab.com/CIEFWorldwideSdnBhd/shipping-portal into development
# Conflicts:
#	app/Classes/Modules/Transactions/ControllersLogic/DeleteGroupLogic.php
2023-05-19 21:28:05 +08:00
edmondlang 525e7a5dd1 deletes group payment 2023-05-19 21:27:26 +08:00
edmondlang a3cad7816c deletes group payment 2023-05-19 21:22:16 +08:00
edmondlang 2100c4a14a update fix_failed_callback_from_billplz log 2023-05-19 20:45:03 +08:00
Martin Maina Kiragu 9d130e1531 Merge branch 'dev' into 'development'
Dev

See merge request CIEFWorldwideSdnBhd/shipping-portal!165
2023-05-16 15:14:45 +00:00
Martin Kiragu 893d10c7f6 fix conflict issue 2023-05-16 17:47:05 +03:00
Omair Saleh 0d090b4eaf update public api for querying transactions and groups 2023-05-16 11:42:57 +08:00
edmondlang 68257952ab Merge branch 'master' of https://gitlab.com/CIEFWorldwideSdnBhd/shipping-portal into development 2023-05-15 20:48:43 +08:00
edmondlang 73801a5acd enable generate combine invoice function for unpaid invoice 2023-05-15 20:47:22 +08:00
edmondlang 07a7901844 Merge branch 'master' of https://gitlab.com/CIEFWorldwideSdnBhd/shipping-portal into development 2023-05-10 23:01:50 +08:00
edmondlang 2c0eeab84e fix duplicated invoice 2023-05-10 23:01:07 +08:00
edmondlang 40c4a39927 revert order resource for debug 2023-05-10 13:47:29 +08:00
edmondlang 91fcb76863 Merge branch 'master' of https://gitlab.com/CIEFWorldwideSdnBhd/shipping-portal into development 2023-05-10 13:39:27 +08:00
edmondlang 866df52e52 fix sending billplz email to customer on development environment 2023-05-10 13:37:50 +08:00
edmondlang b34d909a09 fix order resource returning incorrect invoice 2023-05-10 13:24:10 +08:00
edmondlang 26b3e968e9 fix order resource returning incorrect invoice 2023-05-10 13:22:44 +08:00
edmondlang 7b127b2cba fix order resource returning incorrect invoice 2023-05-10 13:15:57 +08:00
edmondlang cac02b8ebe Merge branch 'master' of https://gitlab.com/CIEFWorldwideSdnBhd/shipping-portal into development 2023-05-10 13:13:32 +08:00
edmondlang 7488313a0e fix order resource returning incorrect invoice 2023-05-10 13:12:56 +08:00
edmondlang 4370ba2f9c Merge branch 'master' of https://gitlab.com/CIEFWorldwideSdnBhd/shipping-portal into development 2023-05-08 13:14:45 +08:00
edmondlang 7589b5c553 customer payment and billing menu 2023-05-08 13:14:25 +08:00
edmondlang d8391fe479 fix invoice appearing in PENDING PAYMENT and also GROUP PAYMENT IN PROGRESS 2023-05-08 12:53:52 +08:00
edmondlang c01e8d6eb2 fix retry payment button coverage 2023-05-08 00:28:13 +08:00
edmondlang 5aad5f1729 merge master 2023-05-06 18:51:58 +08:00
edmondlang 485a6e2e82 merge master 2023-05-06 18:45:00 +08:00
Martin Maina Kiragu 14a4c37fee Merge branch 'feature/reddis' into 'dev'
reddis-predis config and remove the unit test action

See merge request CIEFWorldwideSdnBhd/shipping-portal!164
2023-05-02 05:19:17 +00:00
Martin Kiragu f27e0aa8c6 reddis-predis config and remove the unit test action 2023-05-02 08:17:06 +03:00
Martin Maina Kiragu 5c109d625c Merge branch 'system/transformers' into 'dev'
System/transformers

See merge request CIEFWorldwideSdnBhd/shipping-portal!163
2023-05-02 05:02:59 +00:00
Martin Kiragu a9910c5a12 GroupTransformer 2023-04-24 21:26:35 +03:00
Martin Kiragu 4bee415d2d DeliveryPackingListTransformer transformer updated 2023-04-24 21:08:29 +03:00
Martin Kiragu 02f7adb1e9 DeliveryOrderTransformer added 2023-04-24 21:02:39 +03:00
Martin Kiragu 039a6155ca addation of DeliverPackingListTransformer 2023-04-24 20:51:30 +03:00
Martin Kiragu c8d806a51d updated all resource transformers optionally required by the container transformer 2023-04-24 16:50:53 +03:00
Martin Kiragu 4dbaf6a5dc added ContainerTransformer and its optional relationships 2023-04-24 15:57:31 +03:00
Martin Kiragu fcc0135843 ContactResource with ContactTransformer 2023-04-24 14:35:22 +03:00
Martin Kiragu 4a922ac340 add company transformer with multiple optional relationship loader 2023-04-24 14:29:46 +03:00
Martin Kiragu c4d421db76 add a todo to delete the BookingResource not used anywhere 2023-04-24 14:01:36 +03:00
Martin Kiragu 2816e80bee Bank Account Transformer 2023-04-24 13:56:00 +03:00
Martin Kiragu 466e90a0af Build a AnnouncementTransformer for uniformity and future relationships updates 2023-04-24 13:50:20 +03:00
Martin Kiragu 5e6ae2a905 add backend conditional relationship loading on the AddressResource/AddressTransformer 2023-04-24 13:43:47 +03:00
121 changed files with 3808 additions and 398 deletions
+16 -16
View File
@@ -96,24 +96,24 @@ database:
- if: '$CI_COMMIT_BRANCH =~ /.*/'
#mysql
unit_test:
stage: unit_test
services:
- name: mysql:8.0
command: [ "--default-authentication-plugin=mysql_native_password" ]
#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 =~ /.*/'
# 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 =~ /.*/'
@@ -0,0 +1,20 @@
<?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);
}
}
@@ -15,7 +15,7 @@ class DoesNotHaveTransactionType implements Filter
public static function apply(Builder $builder, $value)
{
return $builder->whereDoesntHave('transactions', function (Builder $query) use($value) {
$query->where('type', $value)->whereIn('status', [0,1,2,3]);
$query->where('type', $value)->whereIn('status', [0,1,2,3,5]);
})->whereHas('containers', function ($query){
return $query->whereDate('loading_date', '>=', Carbon::parse('20-09-2022'));
});
@@ -3,6 +3,9 @@
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\Interfaces\Contactable;
use App\Classes\Modules\Addresses\Services\CreatesAddress;
@@ -17,6 +20,7 @@ use App\Classes\Modules\Remarks\Processors\CreateRemarkProcessor;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Http\Resources\AddressResource;
use App\Models\Address;
use App\Transformers\AddressTransformer;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -27,7 +31,8 @@ class CreateAddressLogic extends AbstractControllerLogic
/**
* @return array
*/
protected function notification():array {
protected function notification(): array
{
return [
'title' => 'Created Address',
'message' => 'You have successfully created a new Address'
@@ -74,11 +79,11 @@ class CreateAddressLogic extends AbstractControllerLogic
/**
* @param Request $request
* @return JsonResponse
* @throws \App\Classes\Exceptions\AccessForbiddenException
* @throws \App\Classes\Exceptions\MalformedRequestException
* @throws \App\Classes\Exceptions\RequestValidationException
* @throws AccessForbiddenException
* @throws MalformedRequestException
* @throws RequestValidationException
*/
public function logic(Request $request) : JsonResponse
public function logic(Request $request): JsonResponse
{
$district = $this->fetchesDistrict->execute(['id' => $request->input('district_id')]);
@@ -90,16 +95,22 @@ class CreateAddressLogic extends AbstractControllerLogic
/** @var Address $address */
$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'), '', '');
$this->createContactProcessor->execute($contactObject, $address);
}
if($request->input('remark')){
if ($request->input('remark')) {
$remarkObject = new RemarkObject($request->input('remark'), Auth()->user()->id);
$this->createRemarkProcessor->execute($address, $remarkObject);
}
/* return fractal()
->item($address, new AddressTransformer())
->parseIncludes('remark')
->respond(200, [], JSON_PRETTY_PRINT);*/
return $this->resourceResponse(new AddressResource($address));
}
@@ -3,6 +3,9 @@
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\Modules\Addresses\Services\CreatesAddress;
use App\Classes\Modules\Addresses\Standards\Rules\CanCreateAddress;
@@ -14,6 +17,7 @@ use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Http\Resources\AddressResource;
use App\Models\Address;
use App\Models\CompanyModule;
use App\Transformers\AddressTransformer;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -23,7 +27,8 @@ class CreateBillingAddressLogic extends AbstractControllerLogic
/**
* @return array
*/
protected function notification():array {
protected function notification(): array
{
return [
'title' => 'Created Billing Address',
'message' => 'You have successfully created a new Billing Address'
@@ -60,14 +65,14 @@ class CreateBillingAddressLogic extends AbstractControllerLogic
/**
* @param Request $request
* @return JsonResponse
* @throws \App\Classes\Exceptions\AccessForbiddenException
* @throws \App\Classes\Exceptions\MalformedRequestException
* @throws \App\Classes\Exceptions\RequestValidationException
* @throws AccessForbiddenException
* @throws MalformedRequestException
* @throws RequestValidationException
*/
public function logic(Request $request) : JsonResponse
public function logic(Request $request): JsonResponse
{
$companyModule = $this->fetchesCompanyModule->execute(['id' => $request->input('company_module_id')]);
$billingAddressInputed = $this->fetchesAddress->execute(['id' => $request->input('billing_address_id')]);
if ($billingAddressInputed->type !== AddressType::BILLING || $billingAddressInputed->id !== $companyModule->addresses->where('type', AddressType::BILLING)->first()->id) {
@@ -80,6 +85,14 @@ class CreateBillingAddressLogic extends AbstractControllerLogic
$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));
}
@@ -3,6 +3,8 @@
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\Modules\Addresses\Services\FetchesAddress;
use App\Classes\Modules\Addresses\Standards\Rules\CanFetchAddress;
@@ -17,7 +19,8 @@ class FetchAddressLogic extends AbstractControllerLogic
/**
* @return array
*/
protected function notification():array {
protected function notification(): array
{
return [
'title' => 'Retrieved Address',
'message' => 'You have successfully retrieved a Address'
@@ -45,15 +48,22 @@ class FetchAddressLogic extends AbstractControllerLogic
/**
* @param Request $request
* @return JsonResponse
* @throws \App\Classes\Exceptions\AccessForbiddenException
* @throws \App\Classes\Exceptions\RequestValidationException
* @throws AccessForbiddenException
* @throws RequestValidationException
*/
public function logic(Request $request) : JsonResponse
public function logic(Request $request): JsonResponse
{
$this->canFetchAddress->passes();
$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));
}
@@ -3,10 +3,14 @@
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\Modules\Addresses\Services\ListsAddresses;
use App\Classes\Modules\Addresses\Standards\Rules\CanListAddresses;
use App\Http\Resources\AddressResource;
use App\Transformers\AddressTransformer;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -17,7 +21,8 @@ class ListAddressesLogic extends AbstractControllerLogic
/**
* @return array
*/
protected function notification():array {
protected function notification(): array
{
return [
'title' => 'Retrieved Addresses',
'message' => 'You have successfully retrieved a list of Addresses'
@@ -45,17 +50,25 @@ class ListAddressesLogic extends AbstractControllerLogic
/**
* @param Request $request
* @return JsonResponse
* @throws \App\Classes\Exceptions\AccessForbiddenException
* @throws \App\Classes\Exceptions\MalformedRequestException
* @throws \App\Classes\Exceptions\RequestValidationException
* @throws AccessForbiddenException
* @throws MalformedRequestException
* @throws RequestValidationException
*/
public function logic(Request $request) : JsonResponse
public function logic(Request $request): JsonResponse
{
$this->canListAddresses->passes();
$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));
}
@@ -7,7 +7,6 @@ use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Addresses\Services\ListsAddresses;
use App\Classes\Modules\Addresses\Services\ListsDistricts;
use App\Classes\Modules\Addresses\Standards\Rules\CanListAddresses;
use App\Http\Resources\AddressResource;
use App\Http\Resources\DistrictResource;
use ErrorException;
use Illuminate\Http\JsonResponse;
@@ -7,7 +7,6 @@ use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Addresses\Services\ListsAddresses;
use App\Classes\Modules\Addresses\Services\ListsStates;
use App\Classes\Modules\Addresses\Standards\Rules\CanListAddresses;
use App\Http\Resources\AddressResource;
use App\Http\Resources\StateResource;
use ErrorException;
use Illuminate\Http\JsonResponse;
@@ -9,6 +9,7 @@ use App\Classes\Modules\Addresses\Services\FetchesAddress;
use App\Classes\Modules\Addresses\Services\ResetsAddressesDefault;
use App\Classes\Modules\Addresses\Services\SetsAddressToDefault;
use App\Models\Address;
use App\Transformers\AddressTransformer;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -33,7 +34,7 @@ class SetAddressToDefaultLogic extends AbstractControllerLogic
/** @var ResetsAddressesDefault */
private $resetsAddressesDefault;
/** @var SetsAddressToDefault*/
/** @var SetsAddressToDefault */
private $setsAddressToDefault;
@@ -64,7 +65,15 @@ class SetAddressToDefaultLogic extends AbstractControllerLogic
$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));
}
}
@@ -17,6 +17,7 @@ use App\Classes\ValueObjects\Constants\AddressType;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Http\Resources\AddressResource;
use App\Models\Address;
use App\Transformers\AddressTransformer;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -26,7 +27,8 @@ class UpdateAddressLogic extends AbstractControllerLogic
/**
* @return array
*/
protected function notification():array {
protected function notification(): array
{
return [
'title' => 'Updated Address',
'message' => 'You have successfully updated the Address'
@@ -77,7 +79,7 @@ class UpdateAddressLogic extends AbstractControllerLogic
* @throws \App\Classes\Exceptions\MalformedRequestException
* @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')]);
@@ -90,18 +92,25 @@ class UpdateAddressLogic extends AbstractControllerLogic
/** @var Address $address */
$address = $this->updatesAddress->execute($address, $object);
$address->contacts()->delete(); $address->remarks()->delete();
$address->contacts()->delete();
$address->remarks()->delete();
if($request->input('phone')){
if ($request->input('phone')) {
$contactObject = new ContactObject($request->input('person_in_charge'), $request->input('phone'), '', '');
$this->createContactProcessor->execute($contactObject, $address);
}
if($request->input('remark')){
if ($request->input('remark')) {
$remarkObject = new RemarkObject($request->input('remark'), Auth()->user()->id);
$this->createRemarkProcessor->execute($address, $remarkObject);
}
//only remark relationship needed
/* return fractal()
->item($address, new AddressTransformer())
->parseIncludes('remark')
->respond(200, [], JSON_PRETTY_PRINT);*/
return $this->resourceResponse(new AddressResource($address));
}
@@ -4,6 +4,7 @@ namespace App\Classes\Modules\Billplzs\Services;
use Illuminate\Support\Facades\Http;
use App\Classes\Exceptions\MalformedRequestException;
use Illuminate\Support\Facades\App;
class CreatesBillplzBill
{
@@ -25,7 +26,7 @@ class CreatesBillplzBill
$response = Http::withBasicAuth(config('billplz.api_key').':', '')->post(config('billplz.base_url').'/api/v3/bills', [
'collection_id' => config('billplz.collection_id'),
'name' => $name,
'email' => $email,
'email' => App::environment('production') ? $email : 'development@cief-malaysia.com',
'description' => $description,
'amount' => $this->finalizeAmount($amount),
'redirect_url' => route('online_payment.redirect'),
@@ -3,13 +3,16 @@
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\Modules\Companies\Services\ListsCompanies;
use App\Classes\Modules\Companies\Standards\Rules\CanListCompanies;
use App\Http\Resources\CompanyResource;
use ErrorException;
use App\Transformers\CompanyTransformer;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Spatie\Fractalistic\ArraySerializer;
class ListCompaniesLogic extends AbstractControllerLogic
{
@@ -45,16 +48,24 @@ class ListCompaniesLogic extends AbstractControllerLogic
/**
* @param Request $request
* @return JsonResponse
* @throws \App\Classes\Exceptions\AccessForbiddenException
* @throws \App\Classes\Exceptions\MalformedRequestException
* @throws \App\Classes\Exceptions\RequestValidationException
* @throws AccessForbiddenException
* @throws MalformedRequestException
* @throws RequestValidationException
*/
public function logic(Request $request) : JsonResponse
{
$this->canListCompanies->passes();
$query = $this->listsCompanies->execute($this->listsCompanies->deserializeFilters($request->input('filters')));
return $this->collectionResponse(CompanyResource::collection($query));
// return $this->collectionResponse(CompanyResource::collection($query));
return fractal()
->parseIncludes(['owner'])
->collection($query, new CompanyTransformer(), "data")
->serializeWith(new ArraySerializer())
->respond(200, [], JSON_PRETTY_PRINT);
}
@@ -3,10 +3,14 @@
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\Modules\Companies\Services\ListsCompanyModules;
use App\Classes\Modules\Companies\Standards\Rules\CanListCompanies;
use App\Http\Resources\CompanyModuleResource;
use App\Transformers\CompanyTransformer;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -17,7 +21,8 @@ class ListCompanyModulesLogic extends AbstractControllerLogic
/**
* @return array
*/
protected function notification():array {
protected function notification(): array
{
return [
'title' => 'Retrieved Company Moduels',
'message' => 'You have successfully retrieved a list of Companies'
@@ -45,15 +50,26 @@ class ListCompanyModulesLogic extends AbstractControllerLogic
/**
* @param Request $request
* @return JsonResponse
* @throws \App\Classes\Exceptions\AccessForbiddenException
* @throws \App\Classes\Exceptions\MalformedRequestException
* @throws \App\Classes\Exceptions\RequestValidationException
* @throws AccessForbiddenException
* @throws MalformedRequestException
* @throws RequestValidationException
*/
public function logic(Request $request) : JsonResponse
public function logic(Request $request): JsonResponse
{
$this->canListCompanies->passes();
$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));
}
@@ -8,6 +8,7 @@ use App\Classes\Modules\Contacts\Services\UpdatesContact;
use App\Classes\Modules\Contacts\DataTransferObjects\ContactObject;
use App\Classes\Modules\Contacts\Services\FetchesContact;
use App\Http\Resources\ContactResource;
use App\Transformers\ContactTransformer;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -63,6 +64,13 @@ class UpdateContactLogic extends AbstractControllerLogic
$query = $this->updatesContact->execute($query, $object);
/*uniformity*/
/* return fractal()
->item($query, new ContactTransformer())
->parseIncludes('remark')
->respond(200, [], JSON_PRETTY_PRINT);*/
return $this->resourceResponse(new ContactResource($query));
}
@@ -7,6 +7,7 @@ use App\Classes\Modules\Orders\Services\CancelsOrder;
use App\Classes\Modules\Orders\Services\FetchesOrder;
use App\Http\Resources\DeliveryOrderResource;
use App\Models\Order;
use App\Transformers\DeliveryOrderTransformer;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -52,6 +53,14 @@ class CancelDeliveryOrderLogic extends AbstractControllerLogic
/** @var Order $order */
$order = $this->fetchesOrder->execute(['id' => $request->route('id')]);
$order = $this->cancelsOrder->execute($order);
//no relationship needed
/* return fractal()
->item($order, new DeliveryOrderTransformer())
->respond(200, [], JSON_PRETTY_PRINT);*/
return $this->resourceResponse(new DeliveryOrderResource($this->cancelsOrder->execute($order)));
}
@@ -172,6 +172,12 @@ class CreateDeliveryOrderLogic extends AbstractControllerLogic
$packageObject = new PackageObject($request->input('packing_list.type'), $request->input('packing_list.description'), (float) 1, (float) 1, (float) 1, $request->input('packing_list.weight'), (float) $request->input('packing_list.quantity'), ApprovalStatus::APPROVED);
$this->createsPackage->execute($packageObject, $packingList);
//add relationship to order
/* return fractal()
->item($order, new DeliveryOrderTransformer())
->parseIncludes(['sender_address', 'delivery_address', 'sender_address.contacts', 'delivery_address.contacts', 'sender_address.remarks', 'delivery_address.remarks', 'packing_list', 'packing_list.packages'])
->respond(200, [], JSON_PRETTY_PRINT);*/
return $this->resourceResponse(new DeliveryOrderResource($order));
}
@@ -48,6 +48,12 @@ class ListOrdersLogic extends AbstractControllerLogic
$query = $this->listsOrders->execute(array_merge($this->listsOrders->deserializeFilters($request->input('filters')), ['with_parcels' => true, 'type_in' => [OrderType::LAST_MILE_DELIVERY]]));
//no relationship needed
/* return fractal()
->collection($query, new DeliveryOrderTransformer)
->respond(200, [], JSON_PRETTY_PRINT);*/
return $this->collectionResponse(DeliveryOrderResource::collection($query));
}
@@ -3,6 +3,9 @@
namespace App\Classes\Modules\Documents\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\Modules\Documents\Services\ListsDocuments;
use App\Classes\Modules\Documents\Standards\Rules\CanListDocuments;
@@ -12,6 +15,7 @@ use App\Transformers\DocumentTransformer;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use League\Fractal\Serializer\ArraySerializer;
use League\Fractal;
@@ -21,7 +25,8 @@ class ListDocumentLogic extends AbstractControllerLogic
/**
* @return array
*/
protected function notification():array {
protected function notification(): array
{
return [
'title' => 'Retrieved Document',
'message' => 'You have successfully retrieved a list of Document'
@@ -49,24 +54,29 @@ class ListDocumentLogic extends AbstractControllerLogic
/**
* @param Request $request
* @return JsonResponse
* @throws \App\Classes\Exceptions\AccessForbiddenException
* @throws \App\Classes\Exceptions\MalformedRequestException
* @throws \App\Classes\Exceptions\RequestValidationException
* @throws AccessForbiddenException
* @throws MalformedRequestException
* @throws RequestValidationException
*/
public function logic(Request $request) : JsonResponse
public function logic(Request $request): JsonResponse
{
$this->canListDocuments->passes();
$query = $this->listsDocuments->execute(array_merge($this->listsDocuments->deserializeFilters($request->input('filters')), ['with_owner' => true]));
return $this->collectionResponse(DocumentResource::collection($query));
$data = fractal()
->parseIncludes(['owner'])
->collection($query, new DocumentTransformer, "data")
->serializeWith(new ArraySerializer())
->respond(200, [], JSON_PRETTY_PRINT);
return $data;
/* return fractal()
->collection($query, new DocumentTransformer)
->respond(200, [], JSON_PRETTY_PRINT);*/
}
}
@@ -2,6 +2,7 @@
namespace App\Classes\Modules\Documents\DataTransferObjects;
use App\Classes\Exceptions\MalformedRequestException;
use App\Classes\General\Interfaces\DataTransferObject;
use App\Classes\Modules\Documents\Services\ConvertsBase64ToFile;
@@ -68,7 +69,7 @@ class DocumentObject implements DataTransferObject
/**
* @return array
* @throws \App\Classes\Exceptions\MalformedRequestException
* @throws MalformedRequestException
*/
public function getFiles(): array
{
@@ -97,7 +97,8 @@ class ConvertsBase64ToFile
* @return string
* @throws MalformedRequestException
*/
private function generateFile(FileObject $file, string $suffix = '') {
private function generateFile(FileObject $file, string $suffix = ''): string
{
$filePath = $this->path.'/'.$file->getFileName().$suffix.'.'.$file->getExtension();
@@ -32,6 +32,7 @@ class ExportsPaymentTransactions implements FromQuery, WithHeadings, WithHeading
'DocNo',
'DocDate',
'DebtorCode',
'DebtorCode',
'ShipInfo',
'AccNo',
'DetailDescription',
@@ -126,6 +127,7 @@ class ExportsPaymentTransactions implements FromQuery, WithHeadings, WithHeading
$transaction->created_at->format('m/d/Y H:m'),
$company->debtor,
$order->reference,
$order->reference,
'500-0000',
'X1 Freight Service Charge',
$furtherDescription,
@@ -6,6 +6,7 @@ use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Orders\Processors\ApproveChangeOrderAddressProcessor;
use App\Http\Resources\AddressResource;
use App\Http\Resources\OrderResource;
use App\Transformers\AddressTransformer;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
@@ -39,6 +40,12 @@ class ApproveChangeOrderAddressLogic extends AbstractControllerLogic
{
$address = $this->approveChangeOrderAddressProcessor->execute($request);
//load address with no relationships
/* return fractal()
->item($address, new AddressTransformer())
->respond(200, [], JSON_PRETTY_PRINT);*/
return $this->resourceResponse(new AddressResource($address));
}
}
@@ -8,16 +8,20 @@ use App\Classes\Modules\Orders\Services\ListsOrders;
use App\Classes\Modules\Orders\Standards\Rules\CanListOrders;
use App\Classes\ValueObjects\Constants\OrderType;
use App\Http\Resources\OrderV2Resource;
use App\Transformers\DocumentTransformer;
use App\Transformers\OrderTransformer;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use League\Fractal\Serializer\ArraySerializer;
class ListOrdersV2Logic extends AbstractControllerLogic
{
/**
* @return array
*/
protected function notification():array {
protected function notification(): array
{
return [
'title' => 'Retrieved Orders',
'message' => 'You have successfully retrieved a list of Orders'
@@ -41,16 +45,23 @@ class ListOrdersV2Logic extends AbstractControllerLogic
$this->listsOrders = $listsOrders;
}
public function logic(Request $request) : JsonResponse
public function logic(Request $request): JsonResponse
{
$this->canListOrders->passes();
$query = $this->listsOrders->execute(array_merge($this->listsOrders->deserializeFilters($request->input('filters')), ['with_parcels' => true, 'type_in' => [OrderType::SHARED_CONTAINER, OrderType::DEDICATED_CONTAINER]]));
return $this->collectionResponse(OrderV2Resource::collection($query));
// return $this->collectionResponse(OrderV2Resource::collection($query));
return fractal()
->parseIncludes(['remarks', 'warehouse', 'address'])
->collection($query, new OrderTransformer(), "data")
->serializeWith(new ArraySerializer())
->respond(200, [], JSON_PRETTY_PRINT);
}
}
@@ -6,6 +6,7 @@ use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\PackingLists\Services\Containers\FetchesContainer;
use App\Classes\Modules\PackingLists\Services\FetchesPackingList;
use App\Http\Resources\ContainerResource;
use App\Transformers\ContainerTransformer;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -56,6 +57,13 @@ class AssignPackingListContainerLogic extends AbstractControllerLogic
$container->packingLists()->attach($packing_list_item);
}
//only return with packing list relationship
/* return fractal()
->item($container, new ContainerTransformer())
->parseInclude(['packingLists'])
->respond(200, [], JSON_PRETTY_PRINT);*/
return $this->resourceResponse(new ContainerResource($container));
} catch (\Exception $exception){
@@ -8,6 +8,7 @@ use App\Classes\Modules\PackingLists\Services\Containers\FetchesContainer;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Http\Resources\ContainerResource;
use App\Transformers\ContainerTransformer;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -19,7 +20,8 @@ class CompleteContainerLogic extends AbstractControllerLogic
/**
* @return array
*/
protected function notification():array {
protected function notification(): array
{
return [
'title' => 'Updated Container',
'message' => 'You have successfully updated the Container'
@@ -51,10 +53,16 @@ class CompleteContainerLogic extends AbstractControllerLogic
* @return JsonResponse
* @throws ErrorException
*/
public function logic(Request $request) : JsonResponse
public function logic(Request $request): JsonResponse
{
$container = $this->fetchesContainer->execute(['id' => $request->route('id')]);
$query = $this->updatesContainerStatus->execute($container, ApprovalStatus::COMPLETED);
//no relationships needed
/* return fractal()
->item($container, new ContainerTransformer())
->respond(200, [], JSON_PRETTY_PRINT);*/
return $this->resourceResponse(new ContainerResource($container));
}
@@ -11,6 +11,7 @@ use App\Classes\Modules\PackingLists\DataTransferObjects\ContainerObject;
use App\Classes\Modules\PackingLists\Services\FetchesPackingList;
use App\Http\Resources\ContainerResource;
use App\Transformers\ContainerTransformer;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -70,6 +71,11 @@ class CreateContainerLogic extends AbstractControllerLogic
$query = $this->createsContainer->execute($object, $this->fetchesCompanyModule->execute(['id' => $request->input('company_module_id')]));
//no relationship needed
/* return fractal()
->item($query, new ContainerTransformer())
->respond(200, [], JSON_PRETTY_PRINT);*/
return $this->resourceResponse(new ContainerResource($query));
}
@@ -8,6 +8,7 @@ use App\Classes\Modules\PackingLists\Services\Containers\FetchesContainer;
use App\Classes\Modules\Remarks\DataTransferObjects\RemarkObject;
use App\Classes\Modules\Remarks\Processors\CreateRemarkProcessor;
use App\Http\Resources\ContainerResource;
use App\Transformers\ContainerTransformer;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -18,7 +19,8 @@ class CreateContainerRemarkLogic extends AbstractControllerLogic
/**
* @return array
*/
protected function notification():array {
protected function notification(): array
{
return [
'title' => 'Created Container Remark',
'message' => 'You have successfully created a new Container Remark'
@@ -50,7 +52,7 @@ class CreateContainerRemarkLogic extends AbstractControllerLogic
* @throws \App\Classes\Exceptions\MalformedRequestException
* @throws \App\Classes\Exceptions\RequestValidationException
*/
public function logic(Request $request) : JsonResponse
public function logic(Request $request): JsonResponse
{
$container = $this->fetchesContainer->execute(['id' => $request->route('id')]);
@@ -59,6 +61,12 @@ class CreateContainerRemarkLogic extends AbstractControllerLogic
$this->createRemarkProcessor->execute($container, $object);
//load with remarks only
/* return fractal()
->item($container, new ContainerTransformer())
->parseIncludes(['remarks'])
->respond(200, [], JSON_PRETTY_PRINT);*/
return $this->resourceResponse(new ContainerResource($container));
}
@@ -17,6 +17,7 @@ use App\Classes\ValueObjects\Constants\TransportType;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Http\Resources\ContainerResource;
use App\Transformers\ContainerTransformer;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -28,7 +29,8 @@ class CreateLoadContainerLogic extends AbstractControllerLogic
/**
* @return array
*/
protected function notification():array {
protected function notification(): array
{
return [
'title' => 'Created Container',
'message' => 'You have successfully created a new Container'
@@ -41,7 +43,7 @@ class CreateLoadContainerLogic extends AbstractControllerLogic
/** @var FetchesPackingList */
private $fetchesPackingList;
/** @var FetchesCompanyModule */
/** @var FetchesCompanyModule */
private $fetchesCompanyModule;
/** @var CreatesPackingList */
@@ -54,12 +56,12 @@ class CreateLoadContainerLogic extends AbstractControllerLogic
private $createsSchedule;
public function __construct(
CanCreateContainer $canCreateContainer,
FetchesPackingList $fetchesPackingList,
FetchesCompanyModule $fetchesCompanyModule,
CreatesContainer $createsContainer,
CreatesTransport $createsTransport,
CreatesSchedule $createsSchedule
CanCreateContainer $canCreateContainer,
FetchesPackingList $fetchesPackingList,
FetchesCompanyModule $fetchesCompanyModule,
CreatesContainer $createsContainer,
CreatesTransport $createsTransport,
CreatesSchedule $createsSchedule
)
{
$this->canCreateContainer = $canCreateContainer;
@@ -77,11 +79,11 @@ class CreateLoadContainerLogic extends AbstractControllerLogic
* @throws \App\Classes\Exceptions\MalformedRequestException
* @throws \App\Classes\Exceptions\RequestValidationException
*/
public function logic(Request $request) : JsonResponse
public function logic(Request $request): JsonResponse
{
$object = new ContainerObject(
$request->input('container_reference'),
$request->input('container_number'),
$request->input('container_reference'),
$request->input('container_number'),
$request->input('seal_reference'),
$request->input('container_type'),
ApprovalStatus::APPROVED
@@ -92,21 +94,27 @@ class CreateLoadContainerLogic extends AbstractControllerLogic
$container = $this->createsContainer->execute($object, $this->fetchesCompanyModule->execute(['id' => $request->input('company_module_id')]));
$transportObject = new TransportObject(
TransportType::LAND, null,
$request->input('tracking'),
Carbon::parse($request->input('etd')),
Carbon::parse($request->input('eta')),
TransportType::LAND, null,
$request->input('tracking'),
Carbon::parse($request->input('etd')),
Carbon::parse($request->input('eta')),
ApprovalStatus::APPROVED
);
$transport = $this->createsTransport->execute($transportObject, $container);
$scheduleObject = new ScheduleObject(
Carbon::parse($request->input('etd')),
Carbon::parse($request->input('etd')),
Carbon::parse($request->input('eta')),
ApprovalStatus::APPROVED
);
);
$schedule = $this->createsSchedule->execute($transport, $scheduleObject);
//include transport
/* return fractal()
->item($container, new ContainerTransformer())
->parseIncludes(['transport'])
->respond(200, [], JSON_PRETTY_PRINT);*/
return $this->resourceResponse(new ContainerResource($container));
}
@@ -7,6 +7,7 @@ use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\PackingLists\Services\Containers\FetchesContainer;
use App\Classes\Modules\PackingLists\Standards\Rules\Containers\CanFetchContainer;
use App\Http\Resources\ContainerResource;
use App\Transformers\ContainerTransformer;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -17,7 +18,8 @@ class FetchContainerLogic extends AbstractControllerLogic
/**
* @return array
*/
protected function notification():array {
protected function notification(): array
{
return [
'title' => 'Retrieved Container',
'message' => 'You have successfully retrieved a Container'
@@ -48,12 +50,18 @@ class FetchContainerLogic extends AbstractControllerLogic
* @throws \App\Classes\Exceptions\AccessForbiddenException
* @throws \App\Classes\Exceptions\RequestValidationException
*/
public function logic(Request $request) : JsonResponse
public function logic(Request $request): JsonResponse
{
$this->canFetchContainer->passes();
$query = $this->fetchesContainer->execute(['id' => $request->route('id'), 'with_packing_lists' => true]);
//load with packing lists
/* return fractal()
->item($query, new ContainerTransformer())
->parseIncludes(['packing_lists'])
->respond(200, [], JSON_PRETTY_PRINT);*/
return $this->resourceResponse(new ContainerResource($query));
}
@@ -9,6 +9,7 @@ use App\Classes\Modules\PackingLists\Standards\Rules\Containers\CanListContainer
use App\Classes\Modules\PackingLists\Processors\FetchInboundCustomClearedProcessor;
use App\Http\Resources\ContainerResource;
use App\Transformers\ContainerTransformer;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -19,7 +20,8 @@ class InboundCustomClearedLogic extends AbstractControllerLogic
/**
* @return array
*/
protected function notification():array {
protected function notification(): array
{
return [
'title' => 'Retrieved Containers',
'message' => 'You have successfully retrieved a list of Containers'
@@ -52,11 +54,16 @@ class InboundCustomClearedLogic extends AbstractControllerLogic
* @return JsonResponse
* @throws ErrorException
*/
public function logic(Request $request) : JsonResponse
public function logic(Request $request): JsonResponse
{
$query = $this->fetchInboundCustomCleared->execute();
//no relations required
/* return fractal()
->item($query, new ContainerTransformer())
->respond(200, [], JSON_PRETTY_PRINT);*/
return $this->collectionResponse(ContainerResource::collection($query));
}
@@ -3,10 +3,14 @@
namespace App\Classes\Modules\PackingLists\ControllersLogic\Containers;
use App\Classes\Exceptions\AccessForbiddenException;
use App\Classes\Exceptions\MalformedRequestException;
use App\Classes\Exceptions\RequestValidationException;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\PackingLists\Services\Containers\ListsContainers;
use App\Classes\Modules\PackingLists\Standards\Rules\Containers\CanListContainers;
use App\Http\Resources\ContainerResource;
use App\Transformers\ContainerTransformer;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -17,7 +21,8 @@ class ListContainersLogic extends AbstractControllerLogic
/**
* @return array
*/
protected function notification():array {
protected function notification(): array
{
return [
'title' => 'Retrieved Containers',
'message' => 'You have successfully retrieved a list of Containers'
@@ -45,16 +50,22 @@ class ListContainersLogic extends AbstractControllerLogic
/**
* @param Request $request
* @return JsonResponse
* @throws \App\Classes\Exceptions\AccessForbiddenException
* @throws \App\Classes\Exceptions\MalformedRequestException
* @throws \App\Classes\Exceptions\RequestValidationException
* @throws AccessForbiddenException
* @throws MalformedRequestException
* @throws RequestValidationException
*/
public function logic(Request $request) : JsonResponse
public function logic(Request $request): JsonResponse
{
$this->canListContainers->passes();
$query = $this->listsContainers->execute($this->listsContainers->deserializeFilters($request->input('filters')));
//load with no filters, a details page to be added to load one with all related data
/* return fractal()
->collection($query, new ContainerTransformer)
->respond(200, [], JSON_PRETTY_PRINT);*/
return $this->collectionResponse(ContainerResource::collection($query));
}
@@ -10,6 +10,7 @@ use App\Classes\Modules\Schedules\DataTransferObjects\ScheduleObject;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Http\Resources\ContainerResource;
use App\Transformers\ContainerTransformer;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -20,7 +21,8 @@ class RescheduleContainerLogic extends AbstractControllerLogic
/**
* @return array
*/
protected function notification():array {
protected function notification(): array
{
return [
'title' => 'Reschedule Container',
'message' => 'You have successfully Reschedule Container'
@@ -54,7 +56,7 @@ class RescheduleContainerLogic extends AbstractControllerLogic
* @return JsonResponse
* @throws ErrorException
*/
public function logic(Request $request) : JsonResponse
public function logic(Request $request): JsonResponse
{
try {
$container = $this->fetchesContainer->execute(['id' => $request->route('id')]);
@@ -65,15 +67,20 @@ class RescheduleContainerLogic extends AbstractControllerLogic
$this->updatesScheduleStatus->execute($old_sechedule, ApprovalStatus::REJECTED);
$scheduleObject = new ScheduleObject(
Carbon::parse($request->input('etd')),
Carbon::parse($request->input('eta')),
Carbon::parse($request->input('etd')),
Carbon::parse($request->input('eta')),
ApprovalStatus::APPROVED
);
);
$schedule = $this->createsSchedule->execute($transport, $scheduleObject);
//no relationship
/* return fractal()
->item($container, new ContainerTransformer())
->respond(200, [], JSON_PRETTY_PRINT);*/
return $this->resourceResponse(new ContainerResource($container));
} catch (\Exception $exception){
} catch (\Exception $exception) {
throw new ErrorException($exception->getMessage(), $exception->getCode());
}
@@ -3,12 +3,16 @@
namespace App\Classes\Modules\PackingLists\ControllersLogic\Containers;
use App\Classes\Exceptions\AccessForbiddenException;
use App\Classes\Exceptions\MalformedRequestException;
use App\Classes\Exceptions\RequestValidationException;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\PackingLists\Services\Containers\UpdatesContainer;
use App\Classes\Modules\PackingLists\Services\Containers\FetchesContainer;
use App\Classes\Modules\PackingLists\Standards\Rules\Containers\CanUpdateContainer;
use App\Classes\Modules\PackingLists\DataTransferObjects\ContainerObject;
use App\Http\Resources\ContainerResource;
use App\Transformers\ContainerTransformer;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -19,7 +23,8 @@ class UpdateContainerLogic extends AbstractControllerLogic
/**
* @return array
*/
protected function notification():array {
protected function notification(): array
{
return [
'title' => 'Updated Container',
'message' => 'You have successfully updated the Container'
@@ -52,19 +57,19 @@ class UpdateContainerLogic extends AbstractControllerLogic
/**
* @param Request $request
* @return JsonResponse
* @throws \App\Classes\Exceptions\AccessForbiddenException
* @throws \App\Classes\Exceptions\MalformedRequestException
* @throws \App\Classes\Exceptions\RequestValidationException
* @throws AccessForbiddenException
* @throws MalformedRequestException
* @throws RequestValidationException
*/
public function logic(Request $request) : JsonResponse
public function logic(Request $request): JsonResponse
{
$container = $this->fetchesContainer->execute(['id' => $request->route('id')]);
$object = new ContainerObject(
$request->input('container_reference'),
$container->container_number,
$request->input('container_type'),
$object = new ContainerObject(
$request->input('container_reference'),
$container->container_number,
$request->input('container_type'),
$request->input('seal_reference'),
$request->input('loading_date'),
$container->status,
@@ -74,6 +79,12 @@ class UpdateContainerLogic extends AbstractControllerLogic
$query = $this->updatesContainer->execute($container, $object);
//no relationships
/*
return fractal()
->item($query, new ContainerTransformer())
->respond(200, [], JSON_PRETTY_PRINT);*/
return $this->resourceResponse(new ContainerResource($query));
}
@@ -6,6 +6,7 @@ use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Transports\Services\UpdatesDispatchDateTransport;
use App\Classes\Modules\PackingLists\Services\Containers\FetchesContainer;
use App\Http\Resources\ContainerResource;
use App\Transformers\ContainerTransformer;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -17,7 +18,8 @@ class UpdateDispatchDateContainerLogic extends AbstractControllerLogic
/**
* @return array
*/
protected function notification():array {
protected function notification(): array
{
return [
'title' => 'Updated Dispatch Date Container',
'message' => 'You have successfully updated the Dispatch Date Container'
@@ -49,11 +51,18 @@ class UpdateDispatchDateContainerLogic extends AbstractControllerLogic
* @return JsonResponse
* @throws ErrorException
*/
public function logic(Request $request) : JsonResponse
public function logic(Request $request): JsonResponse
{
$container = $this->fetchesContainer->execute(['id' => $request->route('id')]);
$transport = $container->transports()->first();
$query = $this->updatesDispatchDateTransport->execute($transport, Carbon::parse($request->input('dispatch_date')));
//no relationships queried
/* return fractal()
->item($query, new ContainerTransformer())
->respond(200, [], JSON_PRETTY_PRINT);*/
return $this->resourceResponse(new ContainerResource($container));
}
@@ -6,6 +6,7 @@ use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Transports\Services\UpdatesDropDateTransport;
use App\Classes\Modules\PackingLists\Services\Containers\FetchesContainer;
use App\Http\Resources\ContainerResource;
use App\Transformers\ContainerTransformer;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -17,7 +18,8 @@ class UpdateDropDateContainerLogic extends AbstractControllerLogic
/**
* @return array
*/
protected function notification():array {
protected function notification(): array
{
return [
'title' => 'Updated Drop Date Container',
'message' => 'You have successfully updated the Drop Date Container'
@@ -49,11 +51,17 @@ class UpdateDropDateContainerLogic extends AbstractControllerLogic
* @return JsonResponse
* @throws ErrorException
*/
public function logic(Request $request) : JsonResponse
public function logic(Request $request): JsonResponse
{
$container = $this->fetchesContainer->execute(['id' => $request->route('id')]);
$transport = $container->transports()->first();
$query = $this->updatesDropDateTransport->execute($transport, Carbon::parse($request->input('drop_date')));
//no relationship needed
/* return fractal()
->item($query, new ContainerTransformer())
->respond(200, [], JSON_PRETTY_PRINT);*/
return $this->resourceResponse(new ContainerResource($container));
}
@@ -14,6 +14,7 @@ use App\Classes\ValueObjects\Constants\OrderRoleTypes;
use App\Classes\ValueObjects\Constants\PackingListType;
use App\Http\Resources\DeliverPackingListResource;
use App\Transformers\DeliverPackingListTransformer;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -24,7 +25,8 @@ class CreateDeliverPackingListLogic extends AbstractControllerLogic
/**
* @return array
*/
protected function notification():array {
protected function notification(): array
{
return [
'title' => 'Created Deliver PackingList',
'message' => 'You have successfully created a new Deliver PackingList'
@@ -60,7 +62,7 @@ class CreateDeliverPackingListLogic extends AbstractControllerLogic
* @param Request $request
* @return JsonResponse
*/
public function logic(Request $request) : JsonResponse
public function logic(Request $request): JsonResponse
{
$company_module = $this->fetchesCompanyModule->execute(['id' => $request->input('company_module_id')]);
$packing_list_id = $request->input('packing_list_id');
@@ -68,9 +70,9 @@ class CreateDeliverPackingListLogic extends AbstractControllerLogic
$reference_number = $this->generatesPackingListReferenceNumber->execute();
$packingListObject = new PackingListObject(
$reference_number,
null,
PackingListType::DELIVERY_PACKING_LIST,
$reference_number,
null,
PackingListType::DELIVERY_PACKING_LIST,
ApprovalStatus::PENDING_SUBMISSION
);
@@ -82,6 +84,12 @@ class CreateDeliverPackingListLogic extends AbstractControllerLogic
$deliverPackingList->packing_list_owner()->sync($packing_list_id);
//no relationships required
/* return fractal()
->item($deliverPackingList, new DeliverPackingListTransformer())
->respond(200, [], JSON_PRETTY_PRINT);*/
return $this->resourceResponse(new DeliverPackingListResource($deliverPackingList));
}
@@ -8,9 +8,11 @@ use App\Classes\Modules\PackingLists\Services\ListsPackingLists;
use App\Classes\Modules\PackingLists\Standards\Rules\CanListPackingLists;
use App\Http\Resources\PackingListNullOrderResource;
use App\Http\Resources\PackingListResource;
use App\Transformers\PackageListTransformer;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Spatie\Fractalistic\ArraySerializer;
class ListPackingListsLogic extends AbstractControllerLogic
{
@@ -18,7 +20,8 @@ class ListPackingListsLogic extends AbstractControllerLogic
/**
* @return array
*/
protected function notification():array {
protected function notification(): array
{
return [
'title' => 'Retrieved PackingLists',
'message' => 'You have successfully retrieved a list of PackingLists'
@@ -48,13 +51,22 @@ class ListPackingListsLogic extends AbstractControllerLogic
* @return JsonResponse
* @throws ErrorException
*/
public function logic(Request $request) : JsonResponse
public function logic(Request $request): JsonResponse
{
$this->canListPackingLists->passes();
$query = $this->listsPackingLists->execute($this->listsPackingLists->deserializeFilters($request->input('filters')));
return $this->collectionResponse(PackingListResource::collection($query));
return fractal()
->parseIncludes(['transport', 'packages'])
->collection($query, new PackageListTransformer(), "data")
->serializeWith(new ArraySerializer())
->respond(200, [], JSON_PRETTY_PRINT);
//return $this->collectionResponse(PackingListResource::collection($query));
}
}
@@ -51,7 +51,7 @@ class FetchContainersUpdatesFromYdPortalProcessor
foreach ($containers as $container) {
$time_start = microtime(true);
$packingList = $container->packingLists()->random();
$packingList = $container->packingLists()->first();
$trackingRequest = $this->fetchesDataFRomYDPortal->clientRequest('http://www.yd-wl.com/api/ApiTracking.ashx', 'GET', [
'trakingno' => $packingList->reference
@@ -108,6 +108,8 @@ class FetchContainersUpdatesFromYdPortalProcessor
}
}
dump($delayDate, $unstuffingDate);
if($delayDate){
$delayDate = $delayDate->addDays(2);
$transport = $container->transports()->first();
@@ -51,11 +51,11 @@ class TransactionToPerfexCRMProcessor
PerfexCRMProjectStatus::IN_PROGRESS,
[],
[
PerfexCRMTasks::TASK_1,
PerfexCRMTasks::TASK_POST_PAYMENT_1,
PerfexCRMTasks::TASK_POST_PAYMENT_2,
PerfexCRMTasks::TASK_POST_PAYMENT_3,
PerfexCRMTasks::TASK_POST_PAYMENT_4,
// PerfexCRMTasks::TASK_1,
// PerfexCRMTasks::TASK_POST_PAYMENT_1,
// PerfexCRMTasks::TASK_POST_PAYMENT_2,
// PerfexCRMTasks::TASK_POST_PAYMENT_3,
// PerfexCRMTasks::TASK_POST_PAYMENT_4,
]
);
@@ -5,9 +5,8 @@ namespace App\Classes\Modules\Transactions\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Transactions\Services\FetchesGroup;
use App\Classes\Modules\Transactions\Services\DeletesTransaction;
use App\Classes\Modules\Transactions\Services\DeletesGroup;
use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Http\Resources\GroupResource;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -24,14 +23,11 @@ class DeleteGroupLogic extends AbstractControllerLogic
];
}
/** @var UpdatesTransactionStatus */
private $updatesTransactionStatus;
/** @var FetchesGroup */
private $fetchesGroup;
/** @var DeletesTransaction */
private $deletesTransaction;
/** @var DeletesGroup */
private $deletesGroup;
/**
* DeleteGroupLogic constructor.
@@ -39,11 +35,10 @@ class DeleteGroupLogic extends AbstractControllerLogic
* @param FetchesGroup $fetchesGroup
* @param DeletesTransaction $deletesTransaction
*/
public function __construct(updatesTransactionStatus $updatesTransactionStatus, FetchesGroup $fetchesGroup, DeletesTransaction $deletesTransaction)
public function __construct(FetchesGroup $fetchesGroup, DeletesGroup $deletesGroup)
{
$this->updatesTransactionStatus = $updatesTransactionStatus;
$this->fetchesGroup = $fetchesGroup;
$this->deletesTransaction = $deletesTransaction;
$this->deletesGroup = $deletesGroup;
}
/**
@@ -55,19 +50,9 @@ class DeleteGroupLogic extends AbstractControllerLogic
{
$group = $this->fetchesGroup->execute(['id' => $request->route('id')]);
$items = $group->transactions()->get();
$this->deletesGroup->execute($group);
foreach($items as $item) {
$bill = $item;
$payment = $bill->owner;
$group->transactions()->detach($bill->id);
$this->updatesTransactionStatus->execute($payment, ApprovalStatus::APPROVED);
$this->deletesTransaction->execute($bill);
}
$group->delete();
return $this->resourceResponse(new GroupResource($group));
return $this->response([]);
}
}
@@ -5,6 +5,7 @@ namespace App\Classes\Modules\Transactions\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Transactions\Services\ListsGroups;
use App\Http\Resources\GroupResource;
use App\Transformers\GroupTransformer;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -22,7 +23,8 @@ class ListGroupsLogic extends AbstractControllerLogic
/**
* @return array
*/
protected function notification():array {
protected function notification(): array
{
return [
'title' => 'Retrieved Groups',
'message' => 'You have successfully retrieved a list of groups'
@@ -32,10 +34,15 @@ class ListGroupsLogic extends AbstractControllerLogic
/** @var ListsGroups */
private $listsGroups;
public function logic(Request $request) : JsonResponse
public function logic(Request $request): JsonResponse
{
$query = $this->listsGroups->execute($this->listsGroups->deserializeFilters($request->input('filters')));
//no relationship needed
/* return fractal()
->collection($query, new GroupTransformer())
->respond(200, [], JSON_PRETTY_PRINT);*/
return $this->collectionResponse(GroupResource::collection($query));
}
@@ -0,0 +1,53 @@
<?php
namespace App\Classes\Modules\Transactions\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Transactions\Services\ListsTransactions;
use App\Http\Resources\BookingResource;
use App\Http\Resources\MappableTransactionResource;
use App\Http\Resources\TransactionResource;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class ListMappableTransactionsLogic extends AbstractControllerLogic
{
/**
* @return array
*/
protected function notification():array {
return [
'title' => 'Retrieved Transactions',
'message' => 'You have successfully retrieved a list of transactions'
];
}
/** @var ListsTransactions */
private $listsTransactions;
/**
* ListTransactionsLogic constructor.
* @param ListsTransactions $listsTransactions
*/
public function __construct(ListsTransactions $listsTransactions)
{
$this->listsTransactions = $listsTransactions;
}
public function logic(Request $request) : JsonResponse
{
$query = $this->listsTransactions->execute($this->listsTransactions->deserializeFilters($request->input('filters')));
return $this->collectionResponse(MappableTransactionResource::collection($query));
}
}
@@ -32,7 +32,8 @@ class UpdateGroupLogic extends AbstractControllerLogic
/**
* @return array
*/
protected function notification():array {
protected function notification(): array
{
return [
'title' => 'Update Group Transaction',
'message' => 'You have successfully updated this Group Transaction'
@@ -86,7 +87,7 @@ class UpdateGroupLogic extends AbstractControllerLogic
* @return JsonResponse
* @throws \App\Classes\Exceptions\MalformedRequestException
*/
public function logic(Request $request) : JsonResponse
public function logic(Request $request): JsonResponse
{
$group = $this->fetchesGroup->execute(['id' => $request->route('id')]);
@@ -100,7 +101,7 @@ class UpdateGroupLogic extends AbstractControllerLogic
// $group->transactions()->update(['amount' => DB::raw('(original_amount * (1 / currency_rate)) + service_charge + tax')]);
foreach($transactions as $transaction) {
foreach ($transactions as $transaction) {
$constant = SegmentConstant::where('reference', SegmentConstants::SERVICE_CHARGE)->where('detail->id', $supplier->id)->first();
$serviceCharge = $this->calculatesTransactionServiceCharge->execute($transaction->original_amount, $rate, $constant);
@@ -169,7 +170,7 @@ class UpdateGroupLogic extends AbstractControllerLogic
$object = new DocumentObject(
DocumentType::CURRENCY_VENDOR_ORDER,
[chunk_split('data:application/pdf;base64,'.base64_encode($pdf->output()))],
[chunk_split('data:application/pdf;base64,' . base64_encode($pdf->output()))],
'',
ApprovalStatus::COMPLETED,
'currency_vendor_order'
@@ -179,6 +180,11 @@ class UpdateGroupLogic extends AbstractControllerLogic
$document = $this->createsDocument->execute($group, $object);
$this->createsFile->execute($document, $object);
//no relationship needed
/* return fractal()
->item($group, new GroupTransformer())
->respond(200, [], JSON_PRETTY_PRINT);*/
return $this->resourceResponse(new GroupResource($group));
}
@@ -20,6 +20,7 @@ use App\Models\Wallet;
use App\Classes\Modules\Orders\Processors\UpdateDoFromVTPortalProcessor;
use App\Classes\Modules\Orders\Processors\UpdateDoFromYDPortalProcessor;
use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus;
use Illuminate\Support\Facades\Log;
class CreatePaymentTransactionProcessor
{
@@ -38,7 +39,7 @@ class CreatePaymentTransactionProcessor
/** @var UpdatesWalletBalance */
private $updatesWalletBalance;
/** @var UpdateDoFromVTPortalProcessor */
private $updateDoFromVTPortalProcessor;
@@ -69,7 +70,7 @@ class CreatePaymentTransactionProcessor
UpdateDoFromVTPortalProcessor $updateDoFromVTPortalProcessor,
UpdateDoFromYDPortalProcessor $updateDoFromYDPortalProcessor,
UpdatesTransactionStatus $updatesTransactionStatus
)
)
{
$this->generatesTransactionBillNumber = $generatesTransactionBillNumber;
$this->createsPaymentTransaction = $createsPaymentTransaction;
@@ -87,7 +88,8 @@ class CreatePaymentTransactionProcessor
public function execute(Transaction $invoice, $payment_method, $bank_code)
{
$amount = $invoice->amount;
$company_module = $invoice->owner()->first()->owner()->first()->companyModule()->first();
Log::info($invoice->owner);
$company_module = $invoice->owner->owner->companyModule()->first();
$approvalStatus = ApprovalStatus::PENDING_SUBMISSION;
$billNumber = $this->generatesTransactionBillNumber->execute('PYMT-');
$payment_reference = null;
@@ -97,12 +99,12 @@ class CreatePaymentTransactionProcessor
// create billplz transaction
$payment_method = PaymentMethodType::PAYMENT_GATEWAY;
$billPlzBill = $this->createsBillplzBill->execute(
$company_module->name,
$company_module->name,
(app()->environment(['production'])) ? $company_module->employees()->first()->email : 'uldvstar@gmail.com',
'This payment is for the invoice number . ' . $billNumber,
$amount,
$billNumber,
$bank_code,
$billNumber,
$bank_code,
true
);
@@ -117,7 +119,7 @@ class CreatePaymentTransactionProcessor
}
$walletPaymentBillNumber = $this->generatesTransactionBillNumber->execute('PYMT-');
$transaction_object = new TransactionObject($walletPaymentBillNumber, TransactionType::PAYMENT, 1, $company_module->id, 1, PaymentMethodType::WALLET, $amount, $amount, 1, 1, 1, 0, 0, null, ApprovalStatus::APPROVED, [], '');
$transaction = $this->createsTransactionableTransaction->execute($wallet, $transaction_object);
@@ -0,0 +1,19 @@
<?php
namespace App\Classes\Modules\Transactions\Services;
use App\Classes\General\Eloquent\AbstractDeleteRecord;
use App\Models\Group;
class DeletesGroup extends AbstractDeleteRecord
{
/**
* @param Group $model
* @return mixed
* @throws \App\Classes\Exceptions\MalformedRequestException
*/
public function execute(Group $model) {
return $this->handler($model);
}
}
@@ -0,0 +1,33 @@
<?php
namespace App\Classes\Modules\Transactions\Services;
use App\Classes\General\Eloquent\AbstractFetchRecord;
use Illuminate\Database\Eloquent\Builder;
use App\Models\Group;
class FetchesGroup extends AbstractFetchRecord
{
/** @var Transaction */
private $repository;
/**
* FetchesTransaction constructor.
* @param Transaction $repository
*/
public function __construct(Group $repository)
{
$this->repository = $repository;
}
/**
* @return Builder
*/
public function getRepository(): Builder
{
return $this->repository->newQuery();
}
}
@@ -6,7 +6,6 @@ namespace App\Classes\Notifications;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\TransactionType;
use App\Models\PackingList;
use App\Models\PasswordReset;
use App\Models\User;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Support\Facades\Storage;
@@ -39,7 +38,7 @@ class InvoiceIssuedEmail extends AbstractEmail
return (new MailMessage)
->subject('Att: '.$this->user->name.' - Invoice for order no.'. $this->packingList->owner->reference)
->attach(Storage::disk('documents')->get($invoiceDocument->file->file_info->original->file), [
->attach(Storage::disk('documents')->get($invoiceDocument->first()->file->file_info->original->file), [
'as' => 'name.pdf',
'mime' => 'application/pdf',
])->view('emails.shipment.invoice', ['user' => $this->user, 'packingList' => $this->packingList]);
@@ -9,6 +9,7 @@ use App\Models\PackingList;
use App\Models\PasswordReset;
use App\Models\User;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Support\Facades\Storage;
class ShipmentDepartureEmail extends AbstractEmail
{
@@ -42,7 +43,7 @@ class ShipmentDepartureEmail extends AbstractEmail
return (new MailMessage)
->subject('Your packages are on the way to malaysia - Invoice pending payment for order no.'. $this->packingList->owner->reference)
->attach(Storage::disk('documents')->get($invoiceDocument->file->file_info->original->file), [
->attach(Storage::disk('documents')->get($invoiceDocument->first()->file->file_info->original->file), [
'as' => 'name.pdf',
'mime' => 'application/pdf',
])->bcc(['email_test@cief-malaysia.com'])->view('emails.shipment.ETD', ['user' => $this->user, 'packingList' => $this->packingList]);
@@ -77,7 +77,6 @@ class FixBillplzFailedCallbackPayment extends Command
{
ini_set('memory_limit', '-1');
$this->info(Carbon::now() . ' : Fix failled callback from billplz cron started.');
$this->outputArray = [];
$start = new Carbon();
@@ -85,6 +84,11 @@ class FixBillplzFailedCallbackPayment extends Command
$transactions = Transaction::where('type', TransactionType::PAYMENT)->where('payment_method', PaymentMethodType::PAYMENT_GATEWAY)->whereNotIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])->get();
$totalTransactions = count($transactions);
if ($totalTransactions) {
$this->info(Carbon::now() . ' : Fix failled callback from billplz cron started.');
}
$counter = 1;
$totalAmount = 0;
foreach ($transactions as $transaction){
@@ -180,6 +184,9 @@ class FixBillplzFailedCallbackPayment extends Command
$end = new Carbon();
$elapsedTime = $start->diff($end)->format('%H:%I:%S');
$this->info(Carbon::now() . ' : Done Billplz Failled Callback. ElapsedTime: ' . $elapsedTime . '. Total: ' . $totalAmount);
if ($totalTransactions) {
$this->info(Carbon::now() . ' : Done Billplz Failled Callback. ElapsedTime: ' . $elapsedTime . '. Total: ' . $totalAmount);
}
}
}
+1 -1
View File
@@ -56,7 +56,7 @@ class Kernel extends ConsoleKernel
$schedule->command('billplz-failed-callback:fix')
->dailyAt('00:00')
->withoutOverlapping()
->appendOutputTo (storage_path().'/logs/dix_failed_callback_from_billplz.log');
->appendOutputTo (storage_path().'/logs/fix_failed_callback_from_billplz.log');
}
/**
@@ -55,21 +55,31 @@ class MonthlyReportController
$from = $request->route('from') ? Carbon::parse($request->route('from')) : Carbon::now()->startOfMonth();
$to = $request->route('to') ? Carbon::parse($request->route('to')) : Carbon::now()->endOfMonth();
$receivedCbm = Package::warehouseReceiveList()->whereHas('deliveryTransports', function ($transport) use ($from, $to) {
return $transport->whereBetween('drop_date', [$from, $to]);
})->get()->sum(function($package){
return (( (float) $package->width / 100) * ( (float) $package->length / 100) * ( (float) $package->height / 100)) * $package->quantity;
});
/* $receivedCbm = Package::warehouseReceiveList()->whereHas('deliveryTransports', function ($transport) use ($from, $to) {
return $transport->whereBetween('drop_date', [$from, $to]);
})->get()->sum(function($package){
});*/
$receivedCbm = Package::with('deliveryTransports')
->warehouseReceiveList()
->whereHas('deliveryTransports', function ($transport) use ($from, $to) {
return $transport->whereBetween('drop_date', [$from, $to]);
})
->get()
->sum(function ($package) {
return (((float)$package->width / 100) * ((float)$package->length / 100) * ((float)$package->height / 100)) * $package->quantity;
});
$containers = Container::whereBetween('loading_date', [$from, $to])->orderBy('loading_date')->get();
$customers = $containers->flatMap(function ($container) {
return $container->companyModules;
})->unique();
})->unique()->count();
$orders = $containers->flatMap(function ($container) {
return $container->orders;
})->unique();
})->unique()->count();
$packages = $this->getPackages($from, $to);
@@ -84,12 +94,12 @@ class MonthlyReportController
return $packingList->packages;
});*/
$totalCbm = $packages->sum(function($package){
return (( (float) $package->width / 100) * ( (float) $package->length / 100) * ( (float) $package->height / 100)) * $package->quantity;
$totalCbm = $packages->sum(function ($package) {
return (((float)$package->width / 100) * ((float)$package->length / 100) * ((float)$package->height / 100)) * $package->quantity;
});
$newCustomers = CompanyModule::where('type', BusinessType::IMPORTER)->whereBetween('created_at', [$from, $to])->count();
$newConvertedCustomers = CompanyModule::where('type', BusinessType::IMPORTER)->whereBetween('created_at', [$from, $to])->whereHas('orders', function($order){
$newConvertedCustomers = CompanyModule::where('type', BusinessType::IMPORTER)->whereBetween('created_at', [$from, $to])->whereHas('orders', function ($order) {
return $order->whereHas('packingLists');
})->count();
@@ -104,8 +114,8 @@ class MonthlyReportController
'',
HttpStatus::OK_WITH_MESSAGE, ['data' => [
'containers' => count($containers),
'activated_orders' => count($orders),
'active_customers' => count($customers),
'activated_orders' => $orders,
'active_customers' => $customers,
'new_customers' => $newCustomers,
'new_converted_customers' => $newConvertedCustomers,
'total_customers' => CompanyModule::where('type', BusinessType::IMPORTER)->count(),
@@ -117,11 +127,12 @@ class MonthlyReportController
]]))->handler();
}
public function profitModelReport(Request $request): JsonResponse {
public function profitModelReport(Request $request): JsonResponse
{
$from = $request->route('from') ? Carbon::parse($request->route('from')) : Carbon::now()->startOfMonth();
$to = $request->route('to') ? Carbon::parse($request->route('to')) : Carbon::now()->endOfMonth();
$model = (int) $request->route('model');
$value = (float) $request->route('value');
$model = (int)$request->route('model');
$value = (float)$request->route('value');
$packages = $this->getPackages($from, $to);
@@ -136,26 +147,26 @@ class MonthlyReportController
return $packingList->packages;
});*/
$totalCbm = $packages->sum(function($package){
return (( (float) $package->width / 100) * ( (float) $package->length / 100) * ( (float) $package->height / 100)) * $package->quantity;
$totalCbm = $packages->sum(function ($package) {
return (((float)$package->width / 100) * ((float)$package->length / 100) * ((float)$package->height / 100)) * $package->quantity;
});
$projectedCbm = $packages->sum(function($package) use ($value, $model) {
$projectedCbm = $packages->sum(function ($package) use ($value, $model) {
if($model === 2){
return (( (float) ($package->width + ($package->width * ($value/100))) / 100) * ( (float) ($package->length + ($package->length * ($value/100))) / 100) * ( (float) ($package->height + ($package->height * ($value/100))) / 100)) * $package->quantity;
if ($model === 2) {
return (((float)($package->width + ($package->width * ($value / 100))) / 100) * ((float)($package->length + ($package->length * ($value / 100))) / 100) * ((float)($package->height + ($package->height * ($value / 100))) / 100)) * $package->quantity;
}
if($model === 3){
return ((( (float) $package->width / 100) * ( (float) $package->length / 100) * ( (float) $package->height / 100)) + $value) * $package->quantity;
if ($model === 3) {
return ((((float)$package->width / 100) * ((float)$package->length / 100) * ((float)$package->height / 100)) + $value) * $package->quantity;
}
if($model === 4){
$packageCbm = (( (float) $package->width / 100) * ( (float) $package->length / 100) * ( (float) $package->height / 100));
return ( $packageCbm + ($packageCbm * ($value/100))) * $package->quantity;
if ($model === 4) {
$packageCbm = (((float)$package->width / 100) * ((float)$package->length / 100) * ((float)$package->height / 100));
return ($packageCbm + ($packageCbm * ($value / 100))) * $package->quantity;
}
return (( (float) ($package->width + $value) / 100) * ( (float) ($package->length + $value) / 100) * ( (float) ($package->height + $value) / 100)) * $package->quantity;
return (((float)($package->width + $value) / 100) * ((float)($package->length + $value) / 100) * ((float)($package->height + $value) / 100)) * $package->quantity;
});
@@ -167,7 +178,8 @@ class MonthlyReportController
]]))->handler();
}
public function customerReport(Request $request): JsonResponse {
public function customerReport(Request $request): JsonResponse
{
$connection = CompanyConnection::where('invitee_reference', $request->route('marking'))->firstOrFail();
$id = $connection->invitee->id;
@@ -190,7 +202,7 @@ class MonthlyReportController
$packages = $this->getPackages($from, $to);
$packages = $packages->filter(function($package) use ($id) {
$packages = $packages->filter(function ($package) use ($id) {
return $package->companyModule->id === $id;
});
@@ -198,8 +210,8 @@ class MonthlyReportController
return $package->order;
});
$totalCbm = $packages->sum(function($package){
return (( (float) $package->width / 100) * ( (float) $package->length / 100) * ( (float) $package->height / 100)) * $package->quantity;
$totalCbm = $packages->sum(function ($package) {
return (((float)$package->width / 100) * ((float)$package->length / 100) * ((float)$package->height / 100)) * $package->quantity;
});
return (new ApiResponseObject('fetch monthly report Successful',
@@ -211,32 +223,72 @@ class MonthlyReportController
]]))->handler();
}
public function serviceReport(Request $request): JsonResponse {
public function serviceReport(Request $request): JsonResponse
{
return (new ApiResponseObject('fetch service report Successful',
'',
HttpStatus::OK_WITH_MESSAGE, ['data' => [
'received' => (float) Package::warehouseReceiveList()->sum('quantity'),
'pending_shipment' => (float) Package::shippingList()->whereDoesntHave('shippingSchedules', function($schedule){
return $schedule->dispatched()->whereIn('schedules.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]);
})->sum('quantity'),
'in_transit' => (float) Package::shippingList()->Shipping()->whereHas('shippingSchedules', function($schedule){
return $schedule->dispatched()->whereIn('schedules.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]);
})->whereDoesntHave('container', function($container){
return $container->where('containers.status', ApprovalStatus::COMPLETED);
})->sum('quantity'),
'pending_delivery' => (float) Package::shippingList()->whereHas('container', function($container){
return $container->where('containers.status', ApprovalStatus::COMPLETED);
})->whereDoesntHave('deliverySchedules', function($schedule){
return $schedule->dispatched()->whereIn('schedules.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]);
})->sum('quantity'),
'delivered' => (float) Package::shippingList()->whereHas('deliverySchedules', function($schedule){
return $schedule->dispatched()->whereIn('schedules.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]);
})->sum('quantity'),
'received' => (float)Package::warehouseReceiveList()->sum('quantity'),
/* 'pending_shipment' => (float)Package::shippingList()->whereDoesntHave('shippingSchedules', function ($schedule) {
return $schedule->dispatched()->whereIn('schedules.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]);
})->sum('quantity'),
'in_transit' => (float) Package::shippingList()->Shipping()->whereHas('shippingSchedules', function($schedule){
return $schedule->dispatched()->whereIn('schedules.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]);
})->whereDoesntHave('container', function($container){
return $container->where('containers.status', ApprovalStatus::COMPLETED);
})->sum('quantity'),
'pending_delivery' => (float) Package::shippingList()->whereHas('container', function($container){
return $container->where('containers.status', ApprovalStatus::COMPLETED);
})->whereDoesntHave('deliverySchedules', function($schedule){
return $schedule->dispatched()->whereIn('schedules.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]);
})->sum('quantity'),
'delivered' => (float) Package::shippingList()->whereHas('deliverySchedules', function($schedule){
return $schedule->dispatched()->whereIn('schedules.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]);
})->sum('quantity'),*/
'pending_shipment' => (float)Package::shippingList()
->whereDoesntHave('shippingSchedules', function ($schedule) {
$statuses = [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED];
$schedule->dispatched()->whereIn('schedules.status', $statuses);
})
->sum('quantity'),
'in_transit' => (float)Package::shippingList()
->whereHas('shippingSchedules', function ($schedule) {
$statuses = [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED];
$schedule->dispatched()->whereIn('schedules.status', $statuses);
})
->whereDoesntHave('container', function ($container) {
$container->where('containers.status', ApprovalStatus::COMPLETED);
})
->sum('quantity'),
'pending_delivery' => (float)Package::shippingList()
->whereHas('container', function ($container) {
$container->where('containers.status', ApprovalStatus::COMPLETED);
})
->whereDoesntHave('deliverySchedules', function ($schedule) {
$statuses = [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED];
$schedule->dispatched()->whereIn('schedules.status', $statuses);
})
->sum('quantity'),
'delivered' => (float)Package::shippingList()
->whereHas('deliverySchedules', function ($schedule) {
$statuses = [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED];
$schedule->dispatched()->whereIn('schedules.status', $statuses);
})
->sum('quantity')
]]))->handler();
}
public function customerActivityReport(Request $request): JsonResponse {
public function customerActivityReport(Request $request): JsonResponse
{
$active_start = $request->input('active_start');
$active_end = $request->input('active_end');
@@ -255,36 +307,87 @@ class MonthlyReportController
return $query->where('packing_lists.type', PackingListType::WAREHOUSE_RECEIVE_LIST)->whereHas('transports', function ($query) use ($active_start, $active_end) {
return $query->whereDate('drop_date', '>=', Carbon::parse($active_start))->whereDate('drop_date', '<=', Carbon::parse($active_end)->addDay());
});
})->whereNotIn('id', $activeCompanies)->get();*/
})->whereNotIn('id', $activeCompanies)->get();
$companies = getActiveCompanies($inactive_start, $inactive_end, $active_start, $active_end);
$customerActivityData = [];
$counter = 1;
foreach ($companies as $key => $company){
foreach ($companies as $key => $company) {
$connection = $company->inviters()->withPivot('invitee_reference')->first();
$marking = $connection ? $connection->pivot->invitee_reference:'';
$packingList = $company->orderPackingLists()->where('packing_lists.type', \App\Classes\ValueObjects\Constants\PackingListType::SHIPPING_PACKING_LIST)->get();
$marking = $connection ? $connection->pivot->invitee_reference : '';
$packingList = $company->orderPackingLists()->where('packing_lists.type', PackingListType::SHIPPING_PACKING_LIST)->get();
$totalCbm = $packingList->flatMap(function ($packingList) {
return $packingList->packages;
})->sum(function($package){
return (( (float) $package->width / 100) * ( (float) $package->length / 100) * ( (float) $package->height / 100)) * $package->quantity;
})->sum(function ($package) {
return (((float)$package->width / 100) * ((float)$package->length / 100) * ((float)$package->height / 100)) * $package->quantity;
});
if ($minCbm != 'null' && $totalCbm < $minCbm) { continue; }
if ($minCbm != 'null' && $totalCbm < $minCbm) {
continue;
}
if ($minOrders != 'null' && $packingList->count() < $minOrders) { continue; }
if ($minOrders != 'null' && $packingList->count() < $minOrders) {
continue;
}
array_push($customerActivityData, array(
'key' => $counter,
'marking' => $marking,
'packingListCount'=> $packingList->count(),
'totalCbm'=> $totalCbm,
'packingListCount' => $packingList->count(),
'totalCbm' => $totalCbm,
));
$counter ++;
$counter++;
}
*/
$companies = getActiveCompanies($inactive_start, $inactive_end, $active_start, $active_end);
$customerActivityData = [];
$packingListType = PackingListType::SHIPPING_PACKING_LIST;
$companies->load([
'inviters' => function ($query) {
$query->withPivot('invitee_reference')->first();
},
'orderPackingLists' => function ($query) use ($packingListType) {
$query->where('packing_lists.type', $packingListType)->with('packages');
},
]);
$counter = 1;
foreach ($companies as $company) {
$connection = $company->inviters->first();
$marking = $connection ? $connection->pivot->invitee_reference : '';
$packingList = $company->orderPackingLists;
$totalCbm = $packingList->flatMap->packages->sum(function ($package) {
return (((float)$package->width / 100) * ((float)$package->length / 100) * ((float)$package->height / 100)) * $package->quantity;
});
if ($minCbm !== null && $totalCbm < $minCbm) {
continue;
}
if ($minOrders !== null && $packingList->count() < $minOrders) {
continue;
}
$customerActivityData[] = [
'key' => $counter,
'marking' => $marking,
'packingListCount' => $packingList->count(),
'totalCbm' => $totalCbm,
];
$counter++;
}
return (new ApiResponseObject('fetch service report Successful',
'',
HttpStatus::OK_WITH_MESSAGE, ['data' => [
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Controllers\Transactions;
use App\Classes\Modules\Transactions\ControllersLogic\ListMappableTransactionsLogic;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class ListMappableTransactionsController
{
/**
* @param Request $request
* @return JsonResponse
*/
public function list(Request $request, ListMappableTransactionsLogic $logic) : JsonResponse {
return $logic->execute($request);
}
}
@@ -2,6 +2,7 @@
namespace App\Http\Resources;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class AirShipmentItemPriceResource extends JsonResource
@@ -9,10 +10,10 @@ class AirShipmentItemPriceResource extends JsonResource
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @param Request $request
* @return array
*/
public function toArray($request)
public function toArray($request): array
{
$object = $this->resource;
$detailsArray = (array)json_decode($object['details']);
+3 -2
View File
@@ -2,6 +2,7 @@
namespace App\Http\Resources;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
use Carbon\Carbon;
@@ -10,10 +11,10 @@ class AnnouncementResource extends JsonResource
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @param Request $request
* @return array
*/
public function toArray($request)
public function toArray($request): array
{
return [
'id' => $this->id,
+3 -2
View File
@@ -2,6 +2,7 @@
namespace App\Http\Resources;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class BankResource extends JsonResource
@@ -9,10 +10,10 @@ class BankResource extends JsonResource
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @param Request $request
* @return array
*/
public function toArray($request)
public function toArray($request): array
{
return [
'id' => $this->id,
+1
View File
@@ -11,6 +11,7 @@ use App\Classes\ValueObjects\Constants\DocumentType;
use Carbon\Carbon;
use Illuminate\Http\Resources\Json\JsonResource;
/*todo delete this*/
class BookingResource extends JsonResource
{
@@ -0,0 +1,41 @@
<?php
namespace App\Http\Resources;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\DocumentType;
use App\Classes\ValueObjects\Constants\TransactionType;
use App\Models\Order;
use App\Models\Transaction;
use App\Models\Wallet;
use Carbon\Carbon;
use Illuminate\Http\Resources\Json\JsonResource;
class MappableTransactionResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
$reference = null;
if($this->type === TransactionType::TOP_UP) {
$reference = $this->owner->owner->inviters()->withPivot('invitee_reference')->first()->pivot->invitee_reference;
}
if($this->type === TransactionType::PAYMENT && $this->owner !== Wallet::class){
$reference = $this->owner->owner->owner->reference;
}
return [
'system' => 'SHIPPING_PORTAL',
'type' => $this->type,
'owner_type' => $this->owner_type,
'owner_id'=> $this->id,
'owner_reference'=> $reference,
];
}
}
+6 -2
View File
@@ -5,7 +5,9 @@ namespace App\Http\Resources;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\OrderRoleTypes;
use App\Classes\ValueObjects\Constants\PackingListType;
use App\Classes\ValueObjects\Constants\TransactionType;
use App\Classes\ValueObjects\Constants\TransportType;
use App\Models\Transaction;
use Carbon\Carbon;
use Illuminate\Http\Resources\Json\JsonResource;
@@ -19,6 +21,8 @@ class OrderResource extends JsonResource
*/
public function toArray($request)
{
$orderId = $this->id;
return [
'id' => $this->id,
'reference' => $this->reference,
@@ -46,8 +50,8 @@ class OrderResource extends JsonResource
'received_packages' => PackingListResource::collection($this->packingLists()->where('type', PackingListType::WAREHOUSE_RECEIVE_LIST)->whereHas('packages')->get()),
];
}),
'invoices' => $this->whenLoaded('packingLists', function() {
return TransactionResource::collection($this->transactions()->whereNotIn('transactions.status', [0, 1])->get());
'invoices' => $this->whenLoaded('packingLists', function() use ($orderId) {
return TransactionResource::collection($this->transactions()->whereNotIn('transactions.status', [0, 1])->where('transactions.type', TransactionType::SHIPPING_INVOICE)->get());
}),
'remarks' => RemarkResource::collection($this->remarks),
'created_at' => $this->created_at->format('d-m-Y')
+2 -1
View File
@@ -5,6 +5,7 @@ namespace App\Http\Resources;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\OrderRoleTypes;
use App\Classes\ValueObjects\Constants\PackingListType;
use App\Classes\ValueObjects\Constants\TransactionType;
use App\Classes\ValueObjects\Constants\TransportType;
use Carbon\Carbon;
use Illuminate\Http\Resources\Json\JsonResource;
@@ -30,7 +31,7 @@ class OrderV2Resource extends JsonResource
'address' => new AddressResource($this->addresses()->where('status', '=', ApprovalStatus::APPROVED)->first()),
'address_change_request' => new AddressResource($this->addressesPendingVerification()->first()),
'invoices' => $this->whenLoaded('packingLists', function() {
return TransactionResource::collection($this->transactions()->whereNotIn('transactions.status', [0, 1])->get());
return TransactionResource::collection($this->transactions()->whereNotIn('transactions.status', [0, 1])->where('transactions.type', TransactionType::SHIPPING_INVOICE)->get());
}),
'remarks' => RemarkResource::collection($this->remarks),
'created_at' => $this->created_at->format('d-m-Y')
@@ -22,6 +22,7 @@ class TransactionResource extends JsonResource
{
return [
'id' => $this->id,
'owner_type' => $this->owner_type,
'order' => ($this->owner instanceof Transaction) ? new OrderResource($this->owner->owner->owner) : new OrderResource($this->owner->owner),
'documents' => DocumentResource::collection($this->documents),
'type' => (int) $this->type,
+35
View File
@@ -0,0 +1,35 @@
<?php
namespace App\Library;
use Spatie\Fractalistic\ArraySerializer;
class DefaultFractalSerializer extends ArraySerializer
{
/**
* @param $resourceKey
* @param array $data
* @return array
*/
public function collection($resourceKey, array $data):array
{
if ($resourceKey) {
return $resourceKey == 'include' ? $data : [$resourceKey => $data];
}
return $data;
}
/**
* @param $resourceKey
* @param array $data
* @return array
*/
public function item($resourceKey, array $data):array
{
if ($resourceKey) {
return $resourceKey == 'include' ? $data : [$resourceKey => $data];
}
return $data;
}
}
+35
View File
@@ -47,3 +47,38 @@ if (!function_exists('getPackingList')) {
}
}
/**
*
* Get Packing List
* TODO change all packing related query to this
* @param Company $company
* @return mixed
*/
if (!function_exists('format_number')) {
function format_number($number): string
{
if ($number == 0) {
return $number;
} elseif (is_float($number)) {
return number_format($number, 2);
} else {
return number_format($number);
}
}
}
/**
* check if a customer have confirmed orders
* @param Company $company
* @return bool
*/
if (!function_exists('checkIfHasConfirmedOrders'))
{
function checkIfHasConfirmedOrders(Company $company): bool
{
return $company->hasConfirmedOrder();
}
}
+55 -2
View File
@@ -4,16 +4,22 @@ namespace App\Models;
use App\Classes\General\Interfaces\Contactable;
use App\Classes\General\Interfaces\Remarkable;
use Barryvdh\LaravelIdeHelper\Eloquent;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Relations\MorphMany;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Relations\MorphTo;
use Illuminate\Support\Carbon;
use Spatie\Activitylog\Models\Activity;
/**
* Class Address
* @package App\Models
*
* @package App\Models
* @property int country_id
* @property int company_id
* @property int state_id
@@ -22,6 +28,53 @@ use Illuminate\Database\Eloquent\Relations\MorphTo;
* @property string street_one
* @property string street_two
* @property integer billing_type
* @property int $id
* @property string $owner_type
* @property int $owner_id
* @property string|null $reference
* @property int $type
* @property int $default
* @property int $status
* @property Carbon|null $deleted_at
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property-read Collection|Activity[] $activities
* @property-read int|null $activities_count
* @property-read Model|Eloquent $causer
* @property-read Collection|Contact[] $contacts
* @property-read int|null $contacts_count
* @property-read Country|null $country
* @property-read District|null $district
* @property-read Model|Eloquent $owner
* @property-read Collection|Remark[] $remarks
* @property-read int|null $remarks_count
* @property-read State|null $state
* @property-read Model|Eloquent $subject
* @property-read Model|Eloquent $target
* @method static Builder|Address defaultAddress()
* @method static Builder|Address newModelQuery()
* @method static Builder|Address newQuery()
* @method static \Illuminate\Database\Query\Builder|Address onlyTrashed()
* @method static Builder|Address query()
* @method static Builder|Address whereCountryId($value)
* @method static Builder|Address whereCreatedAt($value)
* @method static Builder|Address whereDefault($value)
* @method static Builder|Address whereDeletedAt($value)
* @method static Builder|Address whereDistrictId($value)
* @method static Builder|Address whereId($value)
* @method static Builder|Address whereOwnerId($value)
* @method static Builder|Address whereOwnerType($value)
* @method static Builder|Address wherePostcode($value)
* @method static Builder|Address whereReference($value)
* @method static Builder|Address whereStateId($value)
* @method static Builder|Address whereStatus($value)
* @method static Builder|Address whereStreetOne($value)
* @method static Builder|Address whereStreetTwo($value)
* @method static Builder|Address whereType($value)
* @method static Builder|Address whereUpdatedAt($value)
* @method static \Illuminate\Database\Query\Builder|Address withTrashed()
* @method static \Illuminate\Database\Query\Builder|Address withoutTrashed()
* @mixin Eloquent
*/
class Address extends AbstractModel implements Contactable, Remarkable
{
@@ -58,7 +111,7 @@ class Address extends AbstractModel implements Contactable, Remarkable
}
/**
* @return \Illuminate\Database\Eloquent\Relations\MorphTo
* @return MorphTo
*/
public function owner(): morphTo
{
+45 -2
View File
@@ -2,13 +2,56 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Carbon;
use Spatie\Activitylog\Models\Activity;
/**
* Class Announcement
* @package App\Models
*
* @package App\Models
* @property int $id
* @property string $title
* @property string $description
* @property string|null $starting_on
* @property string|null $ending_on
* @property int $is_all_day
* @property int $duration
* @property int $is_recurring
* @property string|null $recurrence_pattern
* @property Carbon|null $deleted_at
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property-read Collection|Activity[] $activities
* @property-read int|null $activities_count
* @property-read Model|\Eloquent $causer
* @property-read Collection|Segment[] $segments
* @property-read int|null $segments_count
* @property-read Model|\Eloquent $subject
* @property-read Model|\Eloquent $target
* @method static Builder|Announcement newModelQuery()
* @method static Builder|Announcement newQuery()
* @method static \Illuminate\Database\Query\Builder|Announcement onlyTrashed()
* @method static Builder|Announcement query()
* @method static Builder|Announcement whereCreatedAt($value)
* @method static Builder|Announcement whereDeletedAt($value)
* @method static Builder|Announcement whereDescription($value)
* @method static Builder|Announcement whereDuration($value)
* @method static Builder|Announcement whereEndingOn($value)
* @method static Builder|Announcement whereId($value)
* @method static Builder|Announcement whereIsAllDay($value)
* @method static Builder|Announcement whereIsRecurring($value)
* @method static Builder|Announcement whereRecurrencePattern($value)
* @method static Builder|Announcement whereStartingOn($value)
* @method static Builder|Announcement whereTitle($value)
* @method static Builder|Announcement whereUpdatedAt($value)
* @method static \Illuminate\Database\Query\Builder|Announcement withTrashed()
* @method static \Illuminate\Database\Query\Builder|Announcement withoutTrashed()
* @mixin \Eloquent
*/
class Announcement extends AbstractModel
{
@@ -17,7 +60,7 @@ class Announcement extends AbstractModel
protected $table = 'announcements';
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
* @return BelongsToMany
**/
public function segments(): BelongsToMany
{
+51
View File
@@ -3,13 +3,64 @@
namespace App\Models;
use App\Classes\General\Interfaces\DataTransferObject;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Relations\MorphTo;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Support\Carbon;
use Spatie\Activitylog\Models\Activity;
/**
* App\Models\BankAccount
*
* @property int $id
* @property string $owner_type
* @property int $owner_id
* @property int $country_id
* @property string $bank_name
* @property string|null $bank_branch
* @property string $account_name
* @property string $account_number
* @property int $type
* @property int $default
* @property int $status
* @property Carbon|null $deleted_at
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property-read Collection|Activity[] $activities
* @property-read int|null $activities_count
* @property-read Model|\Eloquent $causer
* @property-read Country|null $country
* @property-read Model|\Eloquent $owner
* @property-read Model|\Eloquent $subject
* @property-read Model|\Eloquent $target
* @method static Builder|BankAccount newModelQuery()
* @method static Builder|BankAccount newQuery()
* @method static \Illuminate\Database\Query\Builder|BankAccount onlyTrashed()
* @method static Builder|BankAccount query()
* @method static Builder|BankAccount whereAccountName($value)
* @method static Builder|BankAccount whereAccountNumber($value)
* @method static Builder|BankAccount whereBankBranch($value)
* @method static Builder|BankAccount whereBankName($value)
* @method static Builder|BankAccount whereCountryId($value)
* @method static Builder|BankAccount whereCreatedAt($value)
* @method static Builder|BankAccount whereDefault($value)
* @method static Builder|BankAccount whereDeletedAt($value)
* @method static Builder|BankAccount whereId($value)
* @method static Builder|BankAccount whereOwnerId($value)
* @method static Builder|BankAccount whereOwnerType($value)
* @method static Builder|BankAccount whereStatus($value)
* @method static Builder|BankAccount whereType($value)
* @method static Builder|BankAccount whereUpdatedAt($value)
* @method static \Illuminate\Database\Query\Builder|BankAccount withTrashed()
* @method static \Illuminate\Database\Query\Builder|BankAccount withoutTrashed()
* @mixin \Eloquent
*/
class BankAccount extends AbstractModel implements DataTransferObject
{
use SoftDeletes;
+22 -2
View File
@@ -111,12 +111,32 @@ class Company extends AbstractModel implements Documentable, Contactable
$orders = [];
$this->CompanyModules->each(function ($companyModule) {
$orders[] = $companyModule->orders->sortByDesc('id');
});
$orders[] = $companyModule->orders->sortByDesc('id');
});
return collect($orders);
}
/**
* Has Confirmed orders
* @return bool
*/
public function hasConfirmedOrder(): bool
{
$importerModule = $this->companyModules()->where('type', BusinessType::IMPORTER)->first();
if (!$importerModule) {
return false; // Return false if no relation found
}
$hasConfirmedOrder = $importerModule->orders()
->where('status', '!=', 0)
->exists();
return (bool)$hasConfirmedOrder;
}
/**
* @return MorphMany
+69 -2
View File
@@ -10,7 +10,9 @@ use App\Classes\General\Interfaces\Packable;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\BusinessType;
use Eloquent;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -20,18 +22,83 @@ use Illuminate\Database\Eloquent\Relations\MorphMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Carbon;
use PhpParser\Node\Expr\AssignOp\Mod;
use Spatie\Activitylog\Models\Activity;
use Staudenmeir\EloquentHasManyDeep\HasManyDeep;
use Staudenmeir\EloquentHasManyDeep\HasRelationships;
use App\Classes\General\Interfaces\Remarkable;
/**
* Class CompanyModule
* @package App\Models
*
* @property \App\Models\Company company_id
* @package App\Models
* @property Company company_id
* @property integer type
* @property integer status
* @property int $id
* @property string $name
* @property string $reference
* @property string $unity_hash_id
* @property string $unity_signature
* @property Carbon|null $deleted_at
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property-read Collection|Activity[] $activities
* @property-read int|null $activities_count
* @property-read Collection|Address[] $addresses
* @property-read int|null $addresses_count
* @property-read Collection|BankAccount[] $banks
* @property-read int|null $banks_count
* @property-read Model|Eloquent $causer
* @property-read Company $company
* @property-read Collection|CompanyConnection[] $connections
* @property-read int|null $connections_count
* @property-read Collection|Contact[] $contacts
* @property-read int|null $contacts_count
* @property-read Collection|Container[] $containers
* @property-read int|null $containers_count
* @property-read Collection|Document[] $documents
* @property-read int|null $documents_count
* @property-read Collection|User[] $employees
* @property-read int|null $employees_count
* @property-read Collection|CompanyModule[] $inviters
* @property-read int|null $inviters_count
* @property-read Collection|CompanyModule[] $invites
* @property-read int|null $invites_count
* @property-read Collection|Order[] $orders
* @property-read int|null $orders_count
* @property-read Collection|PackingList[] $packingLists
* @property-read int|null $packing_lists_count
* @property-read Collection|Remark[] $remarks
* @property-read int|null $remarks_count
* @property-read Collection|Segment[] $segments
* @property-read int|null $segments_count
* @property-read Model|Eloquent $subject
* @property-read Model|Eloquent $target
* @property-read Collection|Wallet[] $wallets
* @property-read int|null $wallets_count
* @method static Builder|CompanyModule freightForwarders()
* @method static Builder|CompanyModule importers()
* @method static Builder|CompanyModule newModelQuery()
* @method static Builder|CompanyModule newQuery()
* @method static \Illuminate\Database\Query\Builder|CompanyModule onlyTrashed()
* @method static Builder|CompanyModule query()
* @method static Builder|CompanyModule warehouses()
* @method static Builder|CompanyModule whereCompanyId($value)
* @method static Builder|CompanyModule whereCreatedAt($value)
* @method static Builder|CompanyModule whereDeletedAt($value)
* @method static Builder|CompanyModule whereId($value)
* @method static Builder|CompanyModule whereName($value)
* @method static Builder|CompanyModule whereReference($value)
* @method static Builder|CompanyModule whereStatus($value)
* @method static Builder|CompanyModule whereType($value)
* @method static Builder|CompanyModule whereUnityHashId($value)
* @method static Builder|CompanyModule whereUnitySignature($value)
* @method static Builder|CompanyModule whereUpdatedAt($value)
* @method static \Illuminate\Database\Query\Builder|CompanyModule withTrashed()
* @method static \Illuminate\Database\Query\Builder|CompanyModule withoutTrashed()
* @mixin Eloquent
*/
class CompanyModule extends AbstractModel implements Addressable, Documentable, Contactable, ContainerOwner, Packable, Remarkable
{
+51
View File
@@ -5,12 +5,63 @@ namespace App\Models;
use App\Classes\General\Interfaces\Remarkable;
use App\Classes\General\Interfaces\Transportable;
use App\Classes\General\Traits\LogData;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Relations\MorphMany;
use Illuminate\Support\Carbon;
use Spatie\Activitylog\Models\Activity;
use Staudenmeir\EloquentHasManyDeep\HasManyDeep;
use Staudenmeir\EloquentHasManyDeep\HasRelationships;
/**
* App\Models\Container
*
* @property int $id
* @property string $owner_type
* @property int $owner_id
* @property string $reference
* @property string|null $container_number
* @property int $container_type
* @property string|null $seal_reference
* @property Carbon|null $loading_date
* @property int $status
* @property Carbon|null $deleted_at
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property-read Collection|Activity[] $activities
* @property-read int|null $activities_count
* @property-read Model|\Eloquent $causer
* @property-read Collection|PackingList[] $packingLists
* @property-read int|null $packing_lists_count
* @property-read Collection|Remark[] $remarks
* @property-read int|null $remarks_count
* @property-read Model|\Eloquent $subject
* @property-read Model|\Eloquent $target
* @property-read Collection|\App\Models\Transport[] $transports
* @property-read int|null $transports_count
* @method static Builder|Container newModelQuery()
* @method static Builder|Container newQuery()
* @method static \Illuminate\Database\Query\Builder|Container onlyTrashed()
* @method static Builder|Container query()
* @method static Builder|Container whereContainerNumber($value)
* @method static Builder|Container whereContainerType($value)
* @method static Builder|Container whereCreatedAt($value)
* @method static Builder|Container whereDeletedAt($value)
* @method static Builder|Container whereId($value)
* @method static Builder|Container whereLoadingDate($value)
* @method static Builder|Container whereOwnerId($value)
* @method static Builder|Container whereOwnerType($value)
* @method static Builder|Container whereReference($value)
* @method static Builder|Container whereSealReference($value)
* @method static Builder|Container whereStatus($value)
* @method static Builder|Container whereUpdatedAt($value)
* @method static \Illuminate\Database\Query\Builder|Container withTrashed()
* @method static \Illuminate\Database\Query\Builder|Container withoutTrashed()
* @mixin \Eloquent
*/
class Container extends AbstractModel implements Transportable, Remarkable
{
use HasRelationships;
+34 -2
View File
@@ -2,20 +2,52 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Relations\hasMany;
use Illuminate\Support\Carbon;
use Spatie\Activitylog\Models\Activity;
/**
* Class Currency
* @package App\Models
*
* @property \App\Models\Country country_id
* @package App\Models
* @property Country country_id
* @property string name
* @property string short_code
* @property string symbol
* @property int $id
* @property Carbon|null $deleted_at
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property-read Collection|Activity[] $activities
* @property-read int|null $activities_count
* @property-read Model|\Eloquent $causer
* @property-read Country|null $country
* @property-read Collection|CurrencyRate[] $rates
* @property-read int|null $rates_count
* @property-read Model|\Eloquent $subject
* @property-read Model|\Eloquent $target
* @method static Builder|Currency newModelQuery()
* @method static Builder|Currency newQuery()
* @method static \Illuminate\Database\Query\Builder|Currency onlyTrashed()
* @method static Builder|Currency query()
* @method static Builder|Currency whereCountryId($value)
* @method static Builder|Currency whereCreatedAt($value)
* @method static Builder|Currency whereDeletedAt($value)
* @method static Builder|Currency whereId($value)
* @method static Builder|Currency whereName($value)
* @method static Builder|Currency whereShortCode($value)
* @method static Builder|Currency whereSymbol($value)
* @method static Builder|Currency whereUpdatedAt($value)
* @method static \Illuminate\Database\Query\Builder|Currency withTrashed()
* @method static \Illuminate\Database\Query\Builder|Currency withoutTrashed()
* @mixin \Eloquent
*/
class Currency extends AbstractModel
+2 -2
View File
@@ -23,7 +23,7 @@ use Spatie\Activitylog\Models\Activity;
* @property int document_type
* @property string reference
* @property int status
* @property \App\Models\User approver
* @property User approver
* @property timestamp issued_date
* @property timestamp expired_date
* @property timestamp approved_date
@@ -70,7 +70,7 @@ class Document extends AbstractModel
protected $dates = ['deleted_at'];
/**
* @return \Illuminate\Database\Eloquent\Relations\MorphTo
* @return MorphTo
*/
public function owner(): morphTo
{
+23 -1
View File
@@ -3,6 +3,9 @@
namespace App\Models;
use App\Classes\General\Traits\LogData;
use Eloquent;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
use App\Classes\General\Interfaces\Documentable;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -10,16 +13,35 @@ use Illuminate\Database\Eloquent\Relations\MorphMany;
use Staudenmeir\EloquentHasManyDeep\HasManyDeep;
use Staudenmeir\EloquentHasManyDeep\HasRelationships;
use App\Classes\General\Interfaces\Transactionable;
use Staudenmeir\EloquentHasManyDeep\HasTableAlias;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* App\Models\Group
*
* @property-read Currency|null $currency
* @property-read Collection|Document[] $documents
* @property-read int|null $documents_count
* @property-read CompanyModule|null $issuerCompany
* @property-read Currency|null $original_currency
* @property-read CompanyModule|null $receiverCompany
* @property-read Collection|Transaction[] $transactions
* @property-read int|null $transactions_count
* @method static Builder|Group newModelQuery()
* @method static Builder|Group newQuery()
* @method static Builder|Group query()
* @mixin Eloquent
*/
class Group extends Model implements Documentable, Transactionable
{
use HasRelationships;
use HasTableAlias;
use \Staudenmeir\EloquentHasManyDeep\HasTableAlias;
use SoftDeletes;
/**
* @return MorphMany
*/
+53
View File
@@ -11,16 +11,69 @@ use App\Classes\ValueObjects\Constants\PackingListType;
use App\Classes\ValueObjects\Constants\RoleTypes;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Scopes\CustomerOrdersScope;
use Eloquent;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasManyThrough;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\MorphMany;
use Illuminate\Database\Query\Builder;
use Illuminate\Support\Carbon;
use Spatie\Activitylog\Models\Activity;
use Staudenmeir\EloquentHasManyDeep\HasManyDeep;
use Staudenmeir\EloquentHasManyDeep\HasRelationships;
/**
* App\Models\Order
*
* @method static whereBetween(string $string, array $array)
* @property int $id
* @property int $company_module_id
* @property string $reference
* @property string|null $reference_contract
* @property int $type Order packages can be shipped in shared or dedicated container
* @property int $status Status of this order, e.g. processing, shipping etc.
* @property Carbon|null $deleted_at
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property-read Collection|OrderRole[] $OrderRoles
* @property-read int|null $order_roles_count
* @property-read Collection|Activity[] $activities
* @property-read int|null $activities_count
* @property-read Collection|Addon[] $addons
* @property-read int|null $addons_count
* @property-read Collection|Address[] $addresses
* @property-read int|null $addresses_count
* @property-read Model|Eloquent $causer
* @property-read CompanyModule|null $companyModule
* @property-read Collection|Step[] $orderSteps
* @property-read int|null $order_steps_count
* @property-read Collection|PackingList[] $packingLists
* @property-read int|null $packing_lists_count
* @property-read Collection|Package[] $parcels
* @property-read int|null $parcels_count
* @property-read Collection|Remark[] $remarks
* @property-read int|null $remarks_count
* @property-read Model|Eloquent $subject
* @property-read Model|Eloquent $target
* @method static \Illuminate\Database\Eloquent\Builder|Order newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Order newQuery()
* @method static Builder|Order onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Order query()
* @method static \Illuminate\Database\Eloquent\Builder|Order whereCompanyModuleId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Order whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Order whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Order whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Order whereReference($value)
* @method static \Illuminate\Database\Eloquent\Builder|Order whereReferenceContract($value)
* @method static \Illuminate\Database\Eloquent\Builder|Order whereStatus($value)
* @method static \Illuminate\Database\Eloquent\Builder|Order whereType($value)
* @method static \Illuminate\Database\Eloquent\Builder|Order whereUpdatedAt($value)
* @method static Builder|Order withTrashed()
* @method static Builder|Order withoutTrashed()
* @mixin Eloquent
*/
class Order extends AbstractModel implements Addressable, Packable, Remarkable, Notifiable
{
+56
View File
@@ -7,15 +7,71 @@ use App\Classes\ValueObjects\Constants\PackingListType;
use App\Classes\ValueObjects\Constants\RoleTypes;
use App\Scopes\CustomerOrdersScope;
use App\Scopes\CustomerPackagesScope;
use Barryvdh\LaravelIdeHelper\Eloquent;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasManyThrough;
use Illuminate\Database\Eloquent\Relations\HasOneThrough;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Query\Builder;
use Spatie\Activitylog\Models\Activity;
use Staudenmeir\EloquentHasManyDeep\HasManyDeep;
use Staudenmeir\EloquentHasManyDeep\HasOneDeep;
use Staudenmeir\EloquentHasManyDeep\HasRelationships;
/**
* App\Models\Package
*
* @property int $id
* @property int $packing_list_id
* @property int $type
* @property string|null $reference
* @property string|null $description
* @property string $width
* @property string $height
* @property string $length
* @property string $weight
* @property int $quantity
* @property int $status
* @property \Illuminate\Support\Carbon|null $deleted_at
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property-read Collection|Activity[] $activities
* @property-read int|null $activities_count
* @property-read Model|Eloquent $causer
* @property-read Collection|Transport[] $deliveryTransports
* @property-read int|null $delivery_transports_count
* @property-read PackingList|null $packingList
* @property-read Model|Eloquent $subject
* @property-read Model|Eloquent $target
* @method static \Illuminate\Database\Eloquent\Builder|Package newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Package newQuery()
* @method static Builder|Package onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Package query()
* @method static \Illuminate\Database\Eloquent\Builder|Package shipped()
* @method static \Illuminate\Database\Eloquent\Builder|Package shipping()
* @method static \Illuminate\Database\Eloquent\Builder|Package shippingList()
* @method static \Illuminate\Database\Eloquent\Builder|Package warehouseReceiveList()
* @method static \Illuminate\Database\Eloquent\Builder|Package whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Package whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Package whereDescription($value)
* @method static \Illuminate\Database\Eloquent\Builder|Package whereHeight($value)
* @method static \Illuminate\Database\Eloquent\Builder|Package whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Package whereLength($value)
* @method static \Illuminate\Database\Eloquent\Builder|Package wherePackingListId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Package whereQuantity($value)
* @method static \Illuminate\Database\Eloquent\Builder|Package whereReference($value)
* @method static \Illuminate\Database\Eloquent\Builder|Package whereStatus($value)
* @method static \Illuminate\Database\Eloquent\Builder|Package whereType($value)
* @method static \Illuminate\Database\Eloquent\Builder|Package whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Package whereWeight($value)
* @method static \Illuminate\Database\Eloquent\Builder|Package whereWidth($value)
* @method static Builder|Package withTrashed()
* @method static Builder|Package withoutTrashed()
* @mixin Eloquent
*/
class Package extends AbstractModel
{
use HasRelationships;
+64 -1
View File
@@ -10,15 +10,78 @@ use App\Classes\General\Interfaces\Transactionable;
use App\Classes\General\Traits\LogData;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use Carbon\Carbon;
use Eloquent;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\MorphMany;
use Illuminate\Database\Eloquent\Relations\MorphTo;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Query\Builder;
use Spatie\Activitylog\Models\Activity;
use Staudenmeir\EloquentHasManyDeep\HasManyDeep;
use Staudenmeir\EloquentHasManyDeep\HasRelationships;
use Staudenmeir\EloquentHasManyDeep\HasTableAlias;
/**
* App\Models\PackingList
*
* @property int $id
* @property string $owner_type
* @property int $owner_id
* @property int|null $claimant_id
* @property string|null $reference_contract
* @property string $reference
* @property int $type
* @property int $status
* @property \Illuminate\Support\Carbon|null $deleted_at
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property-read Collection|Activity[] $activities
* @property-read int|null $activities_count
* @property-read Collection|Addon[] $addons
* @property-read int|null $addons_count
* @property-read Model|Eloquent $causer
* @property-read Collection|Container[] $containers
* @property-read int|null $containers_count
* @property-read Model|Eloquent $owner
* @property-read Collection|Package[] $packages
* @property-read int|null $packages_count
* @property-read Collection|PackingList[] $packingLists
* @property-read int|null $packing_lists_count
* @property-read Collection|PackingList[] $packing_list_owner
* @property-read int|null $packing_list_owner_count
* @property-read Collection|Remark[] $remarks
* @property-read int|null $remarks_count
* @property-read Collection|Step[] $steps
* @property-read int|null $steps_count
* @property-read Model|Eloquent $subject
* @property-read Model|Eloquent $target
* @property-read Collection|Transaction[] $transactions
* @property-read int|null $transactions_count
* @property-read Collection|Transport[] $transports
* @property-read int|null $transports_count
* @method static \Illuminate\Database\Eloquent\Builder|PackingList newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|PackingList newQuery()
* @method static Builder|PackingList onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|PackingList query()
* @method static \Illuminate\Database\Eloquent\Builder|PackingList shipping()
* @method static \Illuminate\Database\Eloquent\Builder|PackingList whereClaimantId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PackingList whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|PackingList whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|PackingList whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PackingList whereOwnerId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PackingList whereOwnerType($value)
* @method static \Illuminate\Database\Eloquent\Builder|PackingList whereReference($value)
* @method static \Illuminate\Database\Eloquent\Builder|PackingList whereReferenceContract($value)
* @method static \Illuminate\Database\Eloquent\Builder|PackingList whereStatus($value)
* @method static \Illuminate\Database\Eloquent\Builder|PackingList whereType($value)
* @method static \Illuminate\Database\Eloquent\Builder|PackingList whereUpdatedAt($value)
* @method static Builder|PackingList withTrashed()
* @method static Builder|PackingList withoutTrashed()
* @mixin Eloquent
*/
class PackingList extends AbstractModel implements Transportable, Steppable, Packable, Transactionable
{
use HasTableAlias;
@@ -31,7 +94,7 @@ class PackingList extends AbstractModel implements Transportable, Steppable, Pac
protected $fillable = ['status'];
/**
* @return \Illuminate\Database\Eloquent\Relations\MorphTo
* @return MorphTo
*/
public function owner(): morphTo
{
+40
View File
@@ -2,10 +2,50 @@
namespace App\Models;
use Barryvdh\LaravelIdeHelper\Eloquent;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\MorphTo;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Query\Builder;
use Illuminate\Support\Carbon;
use Spatie\Activitylog\Models\Activity;
/**
* App\Models\Remark
*
* @property int $id
* @property string $owner_type
* @property int $owner_id
* @property int $commenter_id
* @property string $content
* @property Carbon|null $deleted_at
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property-read Collection|Activity[] $activities
* @property-read int|null $activities_count
* @property-read Model|Eloquent $causer
* @property-read User|null $commenter
* @property-read Model|Eloquent $owner
* @property-read Model|Eloquent $subject
* @property-read Model|Eloquent $target
* @method static \Illuminate\Database\Eloquent\Builder|Remark newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Remark newQuery()
* @method static Builder|Remark onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Remark query()
* @method static \Illuminate\Database\Eloquent\Builder|Remark whereCommenterId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Remark whereContent($value)
* @method static \Illuminate\Database\Eloquent\Builder|Remark whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Remark whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Remark whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Remark whereOwnerId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Remark whereOwnerType($value)
* @method static \Illuminate\Database\Eloquent\Builder|Remark whereUpdatedAt($value)
* @method static Builder|Remark withTrashed()
* @method static Builder|Remark withoutTrashed()
* @mixin Eloquent
*/
class Remark extends AbstractModel
{
use SoftDeletes;
+41
View File
@@ -4,10 +4,51 @@ namespace App\Models;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\MorphTo;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
/**
* App\Models\Schedule
*
* @property int $id
* @property string $owner_type
* @property int $owner_id
* @property \Illuminate\Support\Carbon|null $etd
* @property \Illuminate\Support\Carbon|null $eta
* @property int $status
* @property \Illuminate\Support\Carbon|null $deleted_at
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property-read Collection|\Spatie\Activitylog\Models\Activity[] $activities
* @property-read int|null $activities_count
* @property-read Model|\Eloquent $causer
* @property-read Model|\Eloquent $owner
* @property-read Model|\Eloquent $subject
* @property-read Model|\Eloquent $target
* @property-read Transport|null $transport
* @method static Builder|Schedule dispatched()
* @method static Builder|Schedule dropped()
* @method static Builder|Schedule newModelQuery()
* @method static Builder|Schedule newQuery()
* @method static \Illuminate\Database\Query\Builder|Schedule onlyTrashed()
* @method static Builder|Schedule query()
* @method static Builder|Schedule whereCreatedAt($value)
* @method static Builder|Schedule whereDeletedAt($value)
* @method static Builder|Schedule whereEta($value)
* @method static Builder|Schedule whereEtd($value)
* @method static Builder|Schedule whereId($value)
* @method static Builder|Schedule whereOwnerId($value)
* @method static Builder|Schedule whereOwnerType($value)
* @method static Builder|Schedule whereStatus($value)
* @method static Builder|Schedule whereUpdatedAt($value)
* @method static \Illuminate\Database\Query\Builder|Schedule withTrashed()
* @method static \Illuminate\Database\Query\Builder|Schedule withoutTrashed()
* @mixin \Eloquent
*/
class Schedule extends AbstractModel
{
use SoftDeletes;
+85
View File
@@ -9,19 +9,104 @@ use App\Classes\General\Traits\LogData;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\TransactionType;
use Carbon\Carbon;
use Eloquent;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\MorphMany;
use Illuminate\Database\Eloquent\Relations\MorphTo;
use Illuminate\Database\Eloquent\SoftDeletes;
use Spatie\Activitylog\Models\Activity;
/**
* App\Models\Transaction
*
* @property int $id
* @property string $owner_type
* @property int $owner_id
* @property string $type
* @property int $issuer
* @property int $receiver
* @property int $recipient_bank_account_id
* @property string|null $payment_method
* @property string|null $payment_reference
* @property string $bill_no
* @property string $amount
* @property string $original_amount
* @property int $currency_id
* @property int $original_currency_id
* @property string $currency_rate
* @property string $tax
* @property string $service_charge
* @property string|null $expires_on
* @property int $status
* @property \Illuminate\Support\Carbon|null $deleted_at
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property-read Collection|Activity[] $activities
* @property-read int|null $activities_count
* @property-read Model|Eloquent $causer
* @property-read Currency $currency
* @property-read Collection|Document[] $documents
* @property-read int|null $documents_count
* @property-read Collection|Order[] $order
* @property-read int|null $order_count
* @property-read Currency $original_currency
* @property-read Model|Eloquent $owner
* @property-read Collection|Remark[] $remarks
* @property-read int|null $remarks_count
* @property-read Model|Eloquent $subject
* @property-read Model|Eloquent $target
* @property-read Collection|TransactionDetail[] $transactionDetails
* @property-read int|null $transaction_details_count
* @property-read Collection|Transaction[] $transactions
* @property-read int|null $transactions_count
* @method static Builder|Transaction complete()
* @method static Builder|Transaction inComplete()
* @method static Builder|Transaction newModelQuery()
* @method static Builder|Transaction newQuery()
* @method static \Illuminate\Database\Query\Builder|Transaction onlyTrashed()
* @method static Builder|Transaction payments()
* @method static Builder|Transaction query()
* @method static Builder|Transaction transferred()
* @method static Builder|Transaction whereAmount($value)
* @method static Builder|Transaction whereBillNo($value)
* @method static Builder|Transaction whereCreatedAt($value)
* @method static Builder|Transaction whereCurrencyId($value)
* @method static Builder|Transaction whereCurrencyRate($value)
* @method static Builder|Transaction whereDeletedAt($value)
* @method static Builder|Transaction whereExpiresOn($value)
* @method static Builder|Transaction whereId($value)
* @method static Builder|Transaction whereIssuer($value)
* @method static Builder|Transaction whereOriginalAmount($value)
* @method static Builder|Transaction whereOriginalCurrencyId($value)
* @method static Builder|Transaction whereOwnerId($value)
* @method static Builder|Transaction whereOwnerType($value)
* @method static Builder|Transaction wherePaymentMethod($value)
* @method static Builder|Transaction wherePaymentReference($value)
* @method static Builder|Transaction whereReceiver($value)
* @method static Builder|Transaction whereRecipientBankAccountId($value)
* @method static Builder|Transaction whereServiceCharge($value)
* @method static Builder|Transaction whereStatus($value)
* @method static Builder|Transaction whereTax($value)
* @method static Builder|Transaction whereType($value)
* @method static Builder|Transaction whereUpdatedAt($value)
* @method static \Illuminate\Database\Query\Builder|Transaction withTrashed()
* @method static \Illuminate\Database\Query\Builder|Transaction withoutTrashed()
* @mixin Eloquent
*/
class Transaction extends AbstractModel implements Documentable, Transactionable, Remarkable
{
use SoftDeletes;
use LogData;
protected $casts = [
'type' => 'int'
];
protected $table = 'transactions';
public function owner(): morphTo
+40
View File
@@ -2,9 +2,49 @@
namespace App\Models;
use Eloquent;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Support\Carbon;
use Spatie\Activitylog\Models\Activity;
/**
* App\Models\TransactionDetail
*
* @property int $id
* @property int $transaction_id
* @property string $reference
* @property string $name
* @property string $quantity
* @property string $price
* @property string $amount
* @property string|null $deleted_at
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property-read Collection|Activity[] $activities
* @property-read int|null $activities_count
* @property-read Model|Eloquent $causer
* @property-read Model|Eloquent $subject
* @property-read Model|Eloquent $target
* @property-read Transaction $transaction
* @method static Builder|TransactionDetail newModelQuery()
* @method static Builder|TransactionDetail newQuery()
* @method static Builder|TransactionDetail query()
* @method static Builder|TransactionDetail whereAmount($value)
* @method static Builder|TransactionDetail whereCreatedAt($value)
* @method static Builder|TransactionDetail whereDeletedAt($value)
* @method static Builder|TransactionDetail whereId($value)
* @method static Builder|TransactionDetail whereName($value)
* @method static Builder|TransactionDetail wherePrice($value)
* @method static Builder|TransactionDetail whereQuantity($value)
* @method static Builder|TransactionDetail whereReference($value)
* @method static Builder|TransactionDetail whereTransactionId($value)
* @method static Builder|TransactionDetail whereUpdatedAt($value)
* @mixin Eloquent
*/
class TransactionDetail extends AbstractModel
{
protected $table = 'transaction_details';
+50 -1
View File
@@ -4,10 +4,59 @@ namespace App\Models;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\MorphTo;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Relations\MorphMany;
use Spatie\Activitylog\Models\Activity;
/**
* App\Models\Transport
*
* @property int $id
* @property string $owner_type
* @property int $owner_id
* @property int $type
* @property string|null $courier
* @property string|null $tracking_number
* @property \Illuminate\Support\Carbon|null $dispatch_date
* @property \Illuminate\Support\Carbon|null $drop_date
* @property int $status
* @property \Illuminate\Support\Carbon|null $deleted_at
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property-read Collection|Activity[] $activities
* @property-read int|null $activities_count
* @property-read Model|\Eloquent $causer
* @property-read Model|\Eloquent $owner
* @property-read Collection|Schedule[] $schedules
* @property-read int|null $schedules_count
* @property-read Model|\Eloquent $subject
* @property-read Model|\Eloquent $target
* @method static Builder|Transport dispatched()
* @method static Builder|Transport dropped()
* @method static Builder|Transport newModelQuery()
* @method static Builder|Transport newQuery()
* @method static \Illuminate\Database\Query\Builder|Transport onlyTrashed()
* @method static Builder|Transport query()
* @method static Builder|Transport whereCourier($value)
* @method static Builder|Transport whereCreatedAt($value)
* @method static Builder|Transport whereDeletedAt($value)
* @method static Builder|Transport whereDispatchDate($value)
* @method static Builder|Transport whereDropDate($value)
* @method static Builder|Transport whereId($value)
* @method static Builder|Transport whereOwnerId($value)
* @method static Builder|Transport whereOwnerType($value)
* @method static Builder|Transport whereStatus($value)
* @method static Builder|Transport whereTrackingNumber($value)
* @method static Builder|Transport whereType($value)
* @method static Builder|Transport whereUpdatedAt($value)
* @method static \Illuminate\Database\Query\Builder|Transport withTrashed()
* @method static \Illuminate\Database\Query\Builder|Transport withoutTrashed()
* @mixin \Eloquent
*/
class Transport extends AbstractModel
{
use SoftDeletes;
@@ -19,7 +68,7 @@ class Transport extends AbstractModel
protected $dates = ['dispatch_date', 'drop_date'];
/**
* @return \Illuminate\Database\Eloquent\Relations\MorphTo
* @return MorphTo
*/
public function owner(): morphTo
{
+122
View File
@@ -0,0 +1,122 @@
<?php
namespace App\Transformers;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\SegmentConstants;
use App\Models\Address;
use App\Models\Company;
use App\Models\Order;
use App\Models\SegmentConstant;
use League\Fractal\Resource\Item;
use League\Fractal\TransformerAbstract;
class AddressTransformer extends TransformerAbstract
{
/**
* List of resources to automatically include
*
* @var array
*/
protected array $defaultIncludes = [
];
/**
* List of resources possible to include
*
* @var array
*/
protected array $availableIncludes = [
'company_module',
'Owner_address',
'remark',
'contact',
];
/**
* A Fractal transformer.
*
* @param Address $address
* @return array
*/
public function transform(Address $address): array
{
return [
'id' => $address->id,
'reference' => $address->reference,
'street_one' => $address->street_one,
'street_two' => $address->street_two,
'district' => $address->district,
'state' => $address->state,
'postcode' => $address->postcode,
'post_code' => $address->postcode,
'post_code_area' => $this->getPostalCodeArea($address),
'country' => $address->country,
'default' => $address->default,
'status' => $address->status,
'type' => $address->type,
];
}
/**
* Get Postal code Area
* @param Address $address
* @return string|null
*/
private function getPostalCodeArea(Address $address): ?string
{
$centerPostcodeConstantObject = SegmentConstant::where('reference', SegmentConstants::CENTER_POSTCODE)->get();
$centerPostcodeConstant = $centerPostcodeConstantObject->isEmpty() ? [] : (array)$centerPostcodeConstantObject->first()->value;
return in_array($address->postcode, $centerPostcodeConstant) ? 'CENTER_POSTCODE' : null;
}
/**
* Include Contact
*
* @param Address $address
* @return Item
*/
public function includeContact(Address $address): Item
{
$contact = $address->contacts();
return $this->item($contact->first(), new ContactTransformer());
}
/**
* Include in Remark
* @param Address $address
* @return Item
*/
public function includeRemark(Address $address): Item
{
$remarks = $address->remarks();
return $this->item($remarks->first(), new RemarkTransformer());
}
/**
* ?Owner Address info
* @param Address $address
* @return array
*/
public function includeOwner_address(Address $address): array
{
return [
'owner' => $address->when($address->owner instanceof Order, [
'reference' => $address->owner->reference,
'company_module' => $this->item($address->owner->companyModule, new RemarkTransformer()),
'address' => $this->item($address->owner->addresses()->where('status', '=', ApprovalStatus::APPROVED)->first(), new AddressTransformer()),
])
];
}
}
@@ -0,0 +1,47 @@
<?php
namespace App\Transformers;
use App\Models\Announcement;
use Carbon\Carbon;
use League\Fractal\TransformerAbstract;
class AnnouncementTransformer extends TransformerAbstract
{
/**
* List of resources to automatically include
*
* @var array
*/
protected $defaultIncludes = [
//
];
/**
* List of resources possible to include
*
* @var array
*/
protected $availableIncludes = [
//
];
/**
* A Fractal transformer.
*
* @param Announcement $announcement
* @return array
*/
public function transform(Announcement $announcement): array
{
return [
'id' => $announcement->id,
'title' => $announcement->title,
'description' => $announcement->description,
'segments' => $announcement->segments,
'starting_on' => Carbon::parse($announcement->starting_on)->format('d-m-Y'),
'ending_on' => Carbon::parse($announcement->ending_on)->format('d-m-Y'),
'created_at' => Carbon::parse($announcement->created_at)->format('d-m-Y'),
];
}
}
@@ -0,0 +1,50 @@
<?php
namespace App\Transformers;
use App\Models\BankAccount;
use League\Fractal\TransformerAbstract;
class BankAccountTransformer extends TransformerAbstract
{
/**
* List of resources to automatically include
*
* @var array
*/
protected $defaultIncludes = [
//
];
/**
* List of resources possible to include
*
* @var array
*/
protected $availableIncludes = [
'company_business_type'
];
/**
* A Fractal transformer.
*
* @param BankAccount $account
* @return array
*/
public function transform(BankAccount $account): array
{
return [
'id' => $account->id,
'company_business_type' => $account->company->business_type,
'type' => $account->type,
'reference' => $account->reference,
'bank_name' => $account->bank_name,
'bank_branch' => $account->bank_branch,
'holder_name' => $account->holder_name,
'account_no' => $account->account_no,
'country_id' => $account->country_id,
'default' => $account->default,
'status' => $account->status,
];
}
}
@@ -0,0 +1,153 @@
<?php
namespace App\Transformers;
use App\Classes\ValueObjects\Constants\AddressType;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\SegmentConstants;
use App\Models\CompanyModule;
use App\Models\SegmentConstant;
use League\Fractal\Resource\Collection;
use League\Fractal\Resource\Item;
use League\Fractal\TransformerAbstract;
class CompanyModuleTransformer extends TransformerAbstract
{
/**
* List of resources to automatically include
*
* @var array
*/
protected array $defaultIncludes = [];
/**
* List of resources possible to include
*
* @var array
*/
protected array $availableIncludes = [
'company',
'remarks',
'contact',
'address',
'billingAddress',
'connections',
];
/**
* A Fractal transformer.
*
* @param CompanyModule $module
* @return array
*/
public function transform(CompanyModule $module): array
{
return [
'id' => $module->id,
'type' => $module->type,
'name' => $module->name,
'reference' => $module->reference,
'marking' => $this->getMarkings($module),
'warehouseCharges' => $this->calculateWarehouseCharges($module),
];
}
/**
* Load Default Address
* @param CompanyModule $module
* @return Item
*/
public function includeAddress(CompanyModule $module): \League\Fractal\Resource\Item
{
$defaultAddress = $module->addresses()->defaultAddress()->first();
$defaultAddress = $defaultAddress ? $defaultAddress : $this->addresses()->first();
return $this->item($defaultAddress, new AddressTransformer());
}
/**
* Load Billing Address
* @param CompanyModule $module
* @return Item
*/
public function includeBillingAddress(CompanyModule $module): Item
{
$billingAddress = $module->addresses()->where('type', AddressType::BILLING)->where('status', ApprovalStatus::APPROVED)->first();
return $this->item($billingAddress, new AddressTransformer());
}
/**
* include the company
* @param CompanyModule $module
* @return Item
*/
public function includeCompany(CompanyModule $module): Item
{
$company = $module->company()->first();
return $this->item($company, new CompanyTransformer());
}
/**
* Load Remarks
* @param CompanyModule $module
* @return Collection
*/
public function includeRemarks(CompanyModule $module): Collection
{
$remarks = $module->remarks();
return $this->collection($remarks, new RemarkTransformer);
}
/**
* Get Markings
* @param CompanyModule $module
* @return string
*/
public function getMarkings(CompanyModule $module): string
{
$connection = $module->inviters()->withPivot('invitee_reference')->first();
return $connection ? $connection->pivot->invitee_reference : '';
}
/**
* calculate warehouse charges
* @param CompanyModule $module
* @return mixed|null
*/
public function calculateWarehouseCharges(CompanyModule $module)
{
$segmentConstantObject = SegmentConstant::where('reference', SegmentConstants::WAREHOUSE_RATE)->get();
$segmentConstant = $segmentConstantObject->isEmpty() ? [] : (array)$segmentConstantObject->first()->value;
return array_key_exists($module->id, $segmentConstant) ? $segmentConstant[$module->id] : null;
}
/**
* include the contact
* @param CompanyModule $module
* @return Item
*/
public function includeContact(CompanyModule $module): Item
{
$contact = $module->contacts()->first();
return $this->item($contact, new ContactTransformer());
}
/**
* Include connections
* @param CompanyModule $module
* @return Item
*/
public function includeConnections(CompanyModule $module): Item
{
$connection = $module->connections;
return $this->item($connection, new ConnectionTransformer());
}
}
+34 -5
View File
@@ -3,6 +3,7 @@
namespace App\Transformers;
use App\Models\Company;
use App\Models\CompanyModule;
use Illuminate\Support\Facades\Crypt;
use League\Fractal\Resource\Item;
use League\Fractal\TransformerAbstract;
@@ -15,7 +16,7 @@ class CompanyTransformer extends TransformerAbstract
* List of all default includes
*/
protected array $defaultIncludes = [
'contact',
'company_module'
];
/**
@@ -25,15 +26,14 @@ class CompanyTransformer extends TransformerAbstract
protected array $availableIncludes = [
'segments',
'employee',
'company_module',
'last_order',
'order_count',
'identification',
];
public function transform(Company $company): array
{
$companyModule = $company->companyModules()->first();
$hasConfirmedOrders = checkIfHasConfirmedOrders($company);
return [
'id' => $company->id,
'hash_id' => Crypt::encryptString($company->id),
@@ -43,7 +43,9 @@ class CompanyTransformer extends TransformerAbstract
'type' => $company->type,
'business_type' => (int)$company->business_type,
'status' => $company->status,
'created_at' => $company->created_at->format('d-m-Y')
'created_at' => $company->created_at->format('d-m-Y'),
'order_count' => $companyModule->orders()->count(),
'has_confirmed_order' => $hasConfirmedOrders,
];
}
@@ -52,6 +54,7 @@ class CompanyTransformer extends TransformerAbstract
/**
* Include Contact
*
* @param Company $company
* @return Item
*/
public function includeContact(Company $company): Item
@@ -60,4 +63,30 @@ class CompanyTransformer extends TransformerAbstract
return $this->item($contact->first(), new ContactTransformer());
}
/**
* add Employee to owner
* @param Company $company
* @return Item
*/
public function includeEmployee(Company $company): Item
{
$companyModule = $company->companyModules()->first();
$employee = $companyModule->employees()->first();
return $this->item($employee, new UserTransformer());
}
/**
* Include a company Module to the Owner Object
* @param Company $company
* @return Item
*/
public function includeCompanyModule(Company $company): Item
{
$companyModule = $company->companyModules()->first();
return $this->item($companyModule, new CompanyModuleTransformer());
}
}
@@ -0,0 +1,38 @@
<?php
namespace App\Transformers;
use League\Fractal\TransformerAbstract;
class ConnectionTransformer extends TransformerAbstract
{
/**
* List of resources to automatically include
*
* @var array
*/
protected $defaultIncludes = [
//
];
/**
* List of resources possible to include
*
* @var array
*/
protected $availableIncludes = [
//
];
/**
* A Fractal transformer.
*
* @return array
*/
public function transform()
{
return [
//
];
}
}
+89
View File
@@ -0,0 +1,89 @@
<?php
namespace App\Transformers;
use App\Classes\ValueObjects\Constants\ContainerTypes;
use App\Models\Container;
use Illuminate\Support\Facades\DB;
use League\Fractal\Resource\Collection;
use League\Fractal\Resource\Item;
use League\Fractal\TransformerAbstract;
class ContainerTransformer extends TransformerAbstract
{
/**
* List of resources to automatically include
*
* @var array
*/
protected $defaultIncludes = [
'transport',
'remarks'
];
/**
* List of resources possible to include
*
* @var array
*/
protected $availableIncludes = [
'packing_lists'
];
/**
* A Fractal transformer.
*
* @param Container $container
* @return array
*/
public function transform(Container $container): array
{
return [
'id' => $container->id,
'container_reference' => $container->reference,
'container_specification' => ContainerTypes::CONTAINER_SPECIFICATION[$container->container_type],
'container_number' => $container->container_number,
'seal_reference' => $container->seal_reference,
'loading_date' => $container->loading_date ? $container->loading_date->format('d-m-Y') : $container->loading_date,
'packages_count' => $container->packages()->where('packages.type', '!=', 2)->sum('quantity'),
'total_cbm' => $container->packages()->sum(DB::raw('(width/100) * (height/100) * (length/100) * quantity')),
'status' => $container->status,
];
}
/**
* Include Transport
* @param Container $container
* @return Item
*/
public function includeTransport(Container $container): Item
{
$container = $container->transport()->first();
return $this->item($container, new TransportTransformer());
}
/**
* Include Remarks
* @param Container $container
* @return Collection
*/
public function includeRemarks(Container $container): Collection
{
$remarks = $container->remarks()->get();
return $this->collection($remarks, new RemarkTransformer());
}
/**
* include Packages Lists
* @param Container $container
* @return Collection
*/
public function includePackagesList(Container $container): Collection
{
$packages = $container->packingLists()->get()->sortBy(function ($packingList) {
return $packingList->owner->company_module_id;
});
return $this->collection($packages, new PackageListTransformer);
}
}
+43
View File
@@ -0,0 +1,43 @@
<?php
namespace App\Transformers;
use App\Models\Currency;
use League\Fractal\TransformerAbstract;
class CurrencyTransformer extends TransformerAbstract
{
/**
* List of resources to automatically include
*
* @var array
*/
protected $defaultIncludes = [
//
];
/**
* List of resources possible to include
*
* @var array
*/
protected $availableIncludes = [
//
];
/**
* A Fractal transformer.
*
* @param Currency $currency
* @return array
*/
public function transform(Currency $currency): array
{
return [
'id' => $currency->id,
'name' => $currency->name,
'short_code' => $currency->short_code,
'phone_code' => $currency->phone_code,
];
}
}
@@ -0,0 +1,78 @@
<?php
namespace App\Transformers;
use App\Models\PackingList;
use League\Fractal\Resource\Collection;
use League\Fractal\Resource\Item;
use League\Fractal\TransformerAbstract;
class DeliverPackingListTransformer extends TransformerAbstract
{
/**
* List of resources to automatically include
*
* @var array
*/
protected $defaultIncludes = [
'transport',
'packing_list',
'company'
];
/**
* List of resources possible to include
*
* @var array
*/
protected $availableIncludes = [
//
];
/**
* A Fractal transformer.
*
* @param PackingList $list
* @return array
*/
public function transform(PackingList $list): array
{
return [
'id' => $this->$list,
'claimant_id' => $list->claimant_id,
'reference' => $list->reference,
'status' => $list->status,
];
}
/**
* include transport
* @param PackingList $list
* @return Item
*/
public function includeTransport(PackingList $list): Item
{
return $this->item($list->transports()->first(), new TransportTransformer);
}
/**
* add packing list
* @param PackingList $list
* @return Collection
*/
public function includePackingList(PackingList $list): Collection
{
return $this->collection($list->packing_list_owner(), new PackageListTransformer);
}
/**
* add company
* @param PackingList $list
* @return Item
*/
public function includeCompany(PackingList $list): Item
{
return $this->item($list->owner(), new CompanyModuleTransformer);
}
}
@@ -0,0 +1,102 @@
<?php
namespace App\Transformers;
use App\Classes\ValueObjects\Constants\AddressType;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Models\Order;
use League\Fractal\Resource\Item;
use League\Fractal\TransformerAbstract;
class DeliveryOrderTransformer extends TransformerAbstract
{
/**
* List of resources to automatically include
*
* @var array
*/
protected $defaultIncludes = [
'company_module',
'sender_address',
'delivery_address',
'packingList',
'remarks'
];
/**
* List of resources possible to include
*
* @var array
*/
protected $availableIncludes = [
//
];
/**
* A Fractal transformer.
*
* @param Order $order
* @return array
*/
public function transform(Order $order): array
{
return [
'id' => $order->id,
'reference' => $order->reference,
'type' => $order->type,
'status' => $order->status,
'created_at' => $order->created_at->format('d-m-Y')
];
}
/**
* Include CompanyModule
* @param Order $order
* @return Item
*/
public function includeCompanyModule(Order $order): Item
{
return $this->item($order->companyModule, new CompanyModuleTransformer());
}
/**
* Include SenderAddress
* @param Order $order
* @return Item
*/
public function includeSenderAddress(Order $order): Item
{
return $this->item($order->addresses()->where('status', '=', ApprovalStatus::APPROVED)->where('type', AddressType::PICK_UP)->first(), new AddressTransformer());
}
/**
* Include DeliveryAddress
* @param Order $order
* @return Item
*/
public function includeDeliveryAddress(Order $order): Item
{
return $this->item($order->addresses()->where('status', '=', ApprovalStatus::APPROVED)->where('type', AddressType::DELIVERY)->first(), new AddressTransformer());
}
/**
* Include PackingList
* @param Order $order
* @return Item
*/
public function includePackingList(Order $order): Item
{
return $this->item($order->packingLists()->first(), new DeliveryPackingListTransformer());
}
/**
* Include Remarks
* @param Order $order
* @return Item
*/
public function includeRemarks(Order $order): Item
{
return $this->item($order->remarks, new RemarkTransformer());
}
}
@@ -0,0 +1,60 @@
<?php
namespace App\Transformers;
use App\Models\PackingList;
use League\Fractal\Resource\Item;
use League\Fractal\TransformerAbstract;
class DeliveryPackingListTransformer extends TransformerAbstract
{
/**
* List of resources to automatically include
*
* @var array
*/
protected $defaultIncludes = [
'transport'
];
/**
* List of resources possible to include
*
* @var array
*/
protected $availableIncludes = [
//
];
/**
* A Fractal transformer.
*
* @return array
*/
public function transform(PackingList $list): array
{
$package = $list->packages()->first();
return [
'id' => $list->id,
'claimant_id' => $list->claimant_id,
'reference' => $list->reference,
'status' => $list->status,
'type' => $package->type,
'description' => $package->description,
'weight' => (float)$package->weight,
'quantity' => (float)$package->quantity,
];
}
/**
* Include Transport
*
* @param PackingList $list
* @return Item
*/
public function includeTransport(PackingList $list): Item
{
return $this->item($list->transports()->first(), new TransportTransformer());
}
}
+13 -2
View File
@@ -4,8 +4,10 @@ namespace App\Transformers;
use App\Models\Document;
use Carbon\Carbon;
use League\Fractal\Manager;
use League\Fractal\Resource\Collection;
use League\Fractal\Resource\Item;
use League\Fractal\Serializer\ArraySerializer;
use League\Fractal\TransformerAbstract;
class DocumentTransformer extends TransformerAbstract
@@ -40,13 +42,22 @@ class DocumentTransformer extends TransformerAbstract
public function includeFiles(Document $document): Collection
{
$files = $document->files;
return $this->collection($files, new FileTransformer());
return $this->collection($files, new FileTransformer(true));
}
/**
* include owner data
* @param Document $document
* @return Item
*/
public function includeOwner(Document $document): Item
{
$owner = $document->owner;
return $this->item($owner, new CompanyTransformer());
$transformer = new CompanyTransformer();
$transformer->setDefaultIncludes([ 'contact', 'employee', 'company_module']);
return $this->item($owner, $transformer);
}
}
+25 -1
View File
@@ -8,6 +8,17 @@ use League\Fractal\TransformerAbstract;
class FileTransformer extends TransformerAbstract
{
/**
* @var bool|mixed|null
*/
private bool $loadMediumAndOriginal;
public function __construct($loadMediumAndOriginal = false)
{
$this->loadMediumAndOriginal = $loadMediumAndOriginal;
}
/**
* AA Array of possible includes for file model
* @var array
@@ -23,10 +34,23 @@ class FileTransformer extends TransformerAbstract
*/
public function transform(File $file): array
{
if ($this->loadMediumAndOriginal) {
$files = $file->file;
$newObject = $files->file_info = collect($files->file_info)
->filter(function ($file) {
return !isset($file->large) && !isset($file->small);
})
->values()
->all();
} else {
$newObject = $file->file;
}
return [
'id' => $file->id,
'file' => $file->file,
'file' => $newObject,
'type' => (int)$file->file_type,
];
+126
View File
@@ -0,0 +1,126 @@
<?php
namespace App\Transformers;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\DocumentType;
use App\Classes\ValueObjects\Constants\TransactionType;
use App\Models\Transaction;
use Illuminate\Support\Carbon;
use Illuminate\Support\Collection;
use League\Fractal\Resource\Item;
use League\Fractal\TransformerAbstract;
class GroupTransformer extends TransformerAbstract
{
/**
* List of resources to automatically include
*
* @var array
*/
protected $defaultIncludes = [
'original_currency',
'currency',
'documents'
];
/**
* List of resources possible to include
*
* @var array
*/
protected $availableIncludes = [
//
];
/**
* A Fractal transformer.
*
* @return array
*/
public function transform(Transaction $transaction): array
{
return [
'id' => $transaction->id,
'original_amount' => (float)$transaction->original_amount,
'issuer_name' => $transaction->issuerCompany->name,
'issuer_id' => $transaction->issuerCompany->id,
'amount' => (float)$transaction->amount,
'service_charge' => (float)$transaction->amount,
'created_at' => Carbon::parse($transaction->created_at)->format('d-m-Y h:i:s A'),
'currency_rate' => (float)$transaction->currency_rate,
'transactions' => $this->transactions($transaction),
'complete_transactions' => $this->complete_transactions($transaction),
'documents' => [
'currency_order' => new DocumentResource($this->documents()->where('document_type', DocumentType::CURRENCY_VENDOR_ORDER)->first()),
'purchase_order' => new DocumentResource($this->documents()->where('document_type', DocumentType::BULK_PURCHASE_ORDER)->first())
]
];
}
/**
* Include Original Currency
*
* @param Transaction $transaction
* @return Item
*/
public function includeOriginalCurrency(Transaction $transaction): Item
{
return $this->item($transaction->original_currency, new CurrencyTransformer());
}
/**
* Include Currency
*
* @param Transaction $transaction
* @return Item
*/
public function includeCurrency(Transaction $transaction): Item
{
return $this->item($transaction->currency, new CurrencyTransformer());
}
/**
* Get Transactions
* @param Transaction $transaction
* @return Collection
*/
protected function transactions(Transaction $transaction): Collection
{
return $transaction->transactions()->get()->pluck('owner.owner.marking');
}
/**
* complete Transactions
* @param Transaction $transaction
* @return Collection
*/
protected function complete_transactions(Transaction $transaction): Collection
{
return $transaction->transactions()->whereHasMorph('owner', [Transaction::class], function ($query) {
return $query->whereHas('booking', function ($query) {
return $query->whereHas('transactions', function ($query) {
return $query->where('type', TransactionType::PURCHASE_ORDER)->where('status', '=', ApprovalStatus::APPROVED);
});
});
})->get()->pluck('owner.owner.marking');
}
/**
* Include Documents
*
* @param Transaction $transaction
* @return array
*/
public function includeDocuments(Transaction $transaction): array
{
return [
'currency_order' => $this->item($transaction->documents()->where('document_type', DocumentType::CURRENCY_VENDOR_ORDER)->first(), new DocumentTransformer()),
'purchase_order' => $this->item($transaction->documents()->where('document_type', DocumentType::BULK_PURCHASE_ORDER)->first(), new DocumentTransformer())
];
}
}
+38
View File
@@ -0,0 +1,38 @@
<?php
namespace App\Transformers;
use League\Fractal\TransformerAbstract;
class InvoiceTransformer extends TransformerAbstract
{
/**
* List of resources to automatically include
*
* @var array
*/
protected $defaultIncludes = [
//
];
/**
* List of resources possible to include
*
* @var array
*/
protected $availableIncludes = [
//
];
/**
* A Fractal transformer.
*
* @return array
*/
public function transform()
{
return [
//
];
}
}
+135
View File
@@ -0,0 +1,135 @@
<?php
namespace App\Transformers;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\OrderRoleTypes;
use App\Classes\ValueObjects\Constants\PackingListType;
use App\Models\Order;
use League\Fractal\Resource\Collection;
use League\Fractal\Resource\Item;
use League\Fractal\TransformerAbstract;
class OrderTransformer extends TransformerAbstract
{
/**
* List of resources to automatically include
*
* @var array
*/
protected array $defaultIncludes = [
'company_module',
];
/**
* List of resources possible to include
*
* @var array
*/
protected array $availableIncludes = [
'parcels',
'invoices',
'warehouse',
'address',
'address_change_request',
'remarks'
];
/**
* A Fractal transformer.
*
* @param Order $order
* @return array
*/
public function transform(Order $order): array
{
return [
'id' => $order->id,
'reference' => $order->reference,
'reference_contract' => $order->type,
'type' => $order->type,
'status' => $order->status,
'created_at' => $order->created_at->format('d-m-Y')
];
}
/**
* Include company module
* @param Order $order
* @return Item
*/
public function includeCompanyModule(Order $order): Item
{
return $this->item($order->companyModule, new CompanyModuleTransformer());
}
/**
*
* Include warehouse
* @param Order $order
* @return Item
*/
public function includeWarehouse(Order $order): Item
{
return $this->item($order->orderRoles()->where('role_id', '=', OrderRoleTypes::ORIGIN_WAREHOUSE)->first()->appointee, new CompanyModuleTransformer());
}
/**
* include address
* @param Order $order
* @return Item
*/
public function includeAddress(Order $order): Item
{
return $this->item($order->addresses()->where('status', '=', ApprovalStatus::APPROVED)->first(), new AddressTransformer());
}
/**
* include address change request
* @param Order $order
* @return Item
*/
public function includeAddressChangeRequest(Order $order): Item
{
return $this->item($order->addressesPendingVerification()->first(), new AddressTransformer());
}
/**
* include parcels
* @param Order $order
* @return array
*/
public function includeParcels(Order $order): array
{
return [
'origin_warehouse_packages' => $this->collection($order->originWarehousePackages()->get(), new PackageListTransformer()),
'in_transit_packages' => $this->collection($order->inTransitPackages()->get(), new PackageListTransformer()),
'destination_warehouse_packages' => $this->collection($order->destinationWarehousePackages()->get(), new PackageListTransformer()),
'delivered_packages' => $this->collection($order->deliveredPackages()->get(), new PackageListTransformer()),
'received_packages' => $this->collection($order->packingLists()->where('type', PackingListType::WAREHOUSE_RECEIVE_LIST)->whereHas('packages')->get(), new PackageListTransformer()),
];
}
/**
*
* include invoices
* @param Order $order
* @return Collection
*/
public function includeInvoices(Order $order): Collection
{
$invoices = $order->transactions()->whereNotIn('transactions.status', [0, 1])->get();
return $this->collection($invoices, new TransactionTransformer());
}
public function includeRemarks(Order $order): Collection
{
return $this->collection($order->remarks()->get(), new RemarkTransformer);
}
}
+122
View File
@@ -0,0 +1,122 @@
<?php
namespace App\Transformers;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\RoleTypes;
use App\Classes\ValueObjects\Constants\TransactionType;
use App\Models\PackingList;
use League\Fractal\Resource\Collection;
use League\Fractal\Resource\Item;
use League\Fractal\TransformerAbstract;
class PackageListTransformer extends TransformerAbstract
{
/**
* List of resources to automatically include
*
* @var array
*/
protected array $defaultIncludes = [
'transport',
'packages',
];
/**
* List of resources possible to include
*
* @var array
*/
protected array $availableIncludes = [
'order',
'receive_packing_list',
'shipping_transaction',
'suspended_invoice'
];
/**
* A Fractal transformer.
*
* @param PackingList $packingList
* @return array
*/
public function transform(PackingList $packingList): array
{
return [
'id' => $packingList->id,
'claimant_id' => $packingList->claimant_id,
'reference' => $packingList->reference,
'status' => $packingList->status,
'type' => $packingList->type,
];
}
/**
* include Transport
* @param PackingList $packingList
* @return Item
*/
public function includeTransport(PackingList $packingList): Item
{
return $this->item($packingList->transport()->first(), new TransportTransformer);
}
/**
* Include Receive Packing List
* @param PackingList $packingList
* @return Item
*/
public function includeReceivePackageList(PackingList $packingList): Item
{
//$this->when($this->type === PackingListType::SHIPPING_PACKING_LIST, new PackingListResource(PackingList::where('reference', $this->reference)->where('type', PackingListType::WAREHOUSE_RECEIVE_LIST)->first())),
return $this->item($packingList->receivePackageList()->first(), new PackageListTransformer);
}
/**
* Include Packages
* @param PackingList $packingList
* @return Collection
*/
public function includePackages(PackingList $packingList): Collection
{
$exceptionUsers = in_array(Auth()->user()->type, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]);
$packages = !$packingList->packingLists()->exists() || $exceptionUsers ? $packingList->packages : $packingList->packingLists->first()->packages;
return $this->collection($packages, new PackageTransformer);
}
/**
* include Order
* @param PackingList $packingList
* @return Item
*/
public function includeOrder(PackingList $packingList): Item
{
return $this->item($packingList->owner, new OrderTransformer);
}
/**
* include Shipping Transaction
* @param PackingList $packingList
* @return Item
*/
public function includeShippingTransaction(PackingList $packingList): Item
{
return $this->item($packingList->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereNotIn('status', [ApprovalStatus::SUSPENDED, ApprovalStatus::EXPIRED])->first(), new TransactionTransformer());
}
/**
* include Suspended Invoice
* @param PackingList $packingList
* @return Item
*/
public function includeSuspendedInvoice(PackingList $packingList): Item
{
return $this->item($packingList->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereIn('status', [ApprovalStatus::SUSPENDED])->first(), new TransactionTransformer());
}
}
+82
View File
@@ -0,0 +1,82 @@
<?php
namespace App\Transformers;
use App\Models\Package;
use League\Fractal\Resource\Item;
use League\Fractal\TransformerAbstract;
class PackageTransformer extends TransformerAbstract
{
/**
* List of resources to automatically include
*
* @var array
*/
protected $defaultIncludes = [
'transport',
'container'
];
/**
* List of resources possible to include
*
* @var array
*/
protected $availableIncludes = [
'order'
];
/**
* A Fractal transformer.
*
* @param Package $package
* @return array
*/
public function transform(Package $package): array
{
return [
'id' => $package->id,
'type' => $package->type,
'description' => $package->description,
'width' => floatval($package->width),
'height' => floatval($package->height),
'length' => floatval($package->length),
'weight' => $package->weight,
'quantity' => $package->quantity,
'cbm' => (($package->width / 100) * ($package->height / 100) * ($package->length / 100)) * $package->quantity,
'reference' => $package->packingList->reference,
'status' => $package->status,
];
}
/**
* Include Transport
* @param Package $package
* @return Item
*/
public function includeTransport(Package $package): Item
{
return $this->item($package->packingList->transports()->first(), new TransportTransformer());
}
/**
* Include Container
* @param Package $package
* @return Item
*/
public function includeContainers(Package $package): Item
{
return $this->item($package->packingList->containers()->first(), new TransportTransformer());
}
/**
* Include Order
* @param Package $package
* @return Item
*/
public function includeOrder(Package $package): Item
{
return $this->item($package->packingList->owner, new OrderTransformer());
}
}
+58
View File
@@ -0,0 +1,58 @@
<?php
namespace App\Transformers;
use App\Http\Resources\UserResource;
use App\Models\Item;
use App\Models\Remark;
use League\Fractal\TransformerAbstract;
class RemarkTransformer extends TransformerAbstract
{
/**
* List of resources to automatically include
*
* @var array
*/
protected array $defaultIncludes = [
'commenter'
];
/**
* List of resources possible to include
*
* @var array
*/
protected array $availableIncludes = [
//
];
/**
* A Fractal transformer.
*
* @param Remark $remark
* @return array
*/
public function transform(Remark $remark): array
{
return [
'id' => $remark->id,
'owner_id' => $remark->owner_id,
'content' => $remark->content,
'created_at' => $remark->created_at->format('d-m-Y H:i'),
'long_ago' => $remark->created_at->diffForHumans()
];
}
/**
* load commenter
* @param Remark $remark
* @return \League\Fractal\Resource\Item
*/
public function includeCommenter(Remark $remark): \League\Fractal\Resource\Item
{
$user = $remark->commenter();
return $this->item($user, new UserTransformer());
}
}
+48
View File
@@ -0,0 +1,48 @@
<?php
namespace App\Transformers;
use App\Models\Schedule;
use Carbon\Carbon;
use League\Fractal\TransformerAbstract;
class ScheduleTransformer extends TransformerAbstract
{
/**
* List of resources to automatically include
*
* @var array
*/
protected $defaultIncludes = [
//
];
/**
* List of resources possible to include
*
* @var array
*/
protected $availableIncludes = [
//
];
/**
* A Fractal transformer.
*
* @param Schedule $schedule
* @return array
*/
public function transform(Schedule $schedule): array
{
return [
'id' => $schedule->id,
'etd' => $schedule->etd ? $schedule->etd->format('d-m-Y') : 'n/a',
'eta' => $schedule->eta ? $schedule->eta->format('d-m-Y') : 'n/a',
'billing_days_left' => [
'value' => (Carbon::parse($schedule->eta)->subDays(7)->gt(Carbon::now())) ? '+' : '-',
'duration' => Carbon::parse($schedule->eta)->subDays(7)->diffInDays(Carbon::now()),
],
'status' => $schedule->status,
];
}
}

Some files were not shown because too many files have changed in this diff Show More