mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/shipping-portal.git
synced 2026-08-19 04:24:12 +00:00
GroupTransformer
This commit is contained in:
@@ -8,6 +8,7 @@ use App\Classes\Modules\Transactions\Services\DeletesTransaction;
|
||||
use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus;
|
||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||
use App\Http\Resources\GroupResource;
|
||||
use App\Transformers\GroupTransformer;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
@@ -66,6 +67,11 @@ class DeleteGroupLogic extends AbstractControllerLogic
|
||||
}
|
||||
|
||||
$group->delete();
|
||||
|
||||
//no relationship needed
|
||||
/* return fractal()
|
||||
->item($group, new GroupTransformer())
|
||||
->respond(200, [], JSON_PRETTY_PRINT);*/
|
||||
|
||||
return $this->resourceResponse(new GroupResource($group));
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
+21
-1
@@ -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,12 +13,29 @@ use Illuminate\Database\Eloquent\Relations\MorphMany;
|
||||
use Staudenmeir\EloquentHasManyDeep\HasManyDeep;
|
||||
use Staudenmeir\EloquentHasManyDeep\HasRelationships;
|
||||
use App\Classes\General\Interfaces\Transactionable;
|
||||
use Staudenmeir\EloquentHasManyDeep\HasTableAlias;
|
||||
|
||||
|
||||
/**
|
||||
* 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 \Staudenmeir\EloquentHasManyDeep\HasTableAlias;
|
||||
use HasTableAlias;
|
||||
|
||||
|
||||
// /**
|
||||
|
||||
@@ -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())
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user