mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange-2.0.git
synced 2026-08-26 07:53:58 +00:00
Admin Workflow - API code refactor to fetch information to display on workflow + action when answer is saved
This commit is contained in:
@@ -4,15 +4,7 @@ namespace App\Classes\Modules\Bookings\ControllersLogic;
|
||||
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||
use App\Classes\Modules\Bookings\Services\FetchesBooking;
|
||||
use App\Classes\Modules\Documents\Services\ApprovesDocument;
|
||||
use App\Classes\Modules\Documents\Services\FetchesDocument;
|
||||
use App\Classes\Modules\Documents\Services\RejectsDocument;
|
||||
use App\Classes\Modules\Transactions\Processors\CreateInvoiceTransactionProcessor;
|
||||
use App\Classes\Modules\Transactions\Services\FetchesTransaction;
|
||||
use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus;
|
||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||
use App\Classes\ValueObjects\Constants\TransactionType;
|
||||
use App\Classes\Modules\Bookings\Processors\ApprovePurchaseOrderProcessor;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
@@ -29,26 +21,16 @@ class ApprovePurchaseOrderLogic extends AbstractControllerLogic
|
||||
];
|
||||
}
|
||||
|
||||
/** @var FetchesBooking */
|
||||
private $fetchesBooking;
|
||||
|
||||
/** @var UpdatesTransactionStatus */
|
||||
private $updatesTransactionStatus;
|
||||
|
||||
/** @var CreateInvoiceTransactionProcessor */
|
||||
private $createInvoiceTransactionProcessor;
|
||||
/** @var ApprovePurchaseOrderProcessor */
|
||||
private $approvePurchaseOrderProcessor;
|
||||
|
||||
/**
|
||||
* ApprovePurchaseOrderLogic constructor.
|
||||
* @param FetchesBooking $fetchesBooking
|
||||
* @param UpdatesTransactionStatus $updatesTransactionStatus
|
||||
* @param CreateInvoiceTransactionProcessor $createInvoiceTransactionProcessor
|
||||
* @param ApprovePurchaseOrderProcessor $approvePurchaseOrderProcessor
|
||||
*/
|
||||
public function __construct(FetchesBooking $fetchesBooking, UpdatesTransactionStatus $updatesTransactionStatus, CreateInvoiceTransactionProcessor $createInvoiceTransactionProcessor)
|
||||
public function __construct(ApprovePurchaseOrderProcessor $approvePurchaseOrderProcessor)
|
||||
{
|
||||
$this->fetchesBooking = $fetchesBooking;
|
||||
$this->updatesTransactionStatus = $updatesTransactionStatus;
|
||||
$this->createInvoiceTransactionProcessor = $createInvoiceTransactionProcessor;
|
||||
$this->approvePurchaseOrderProcessor = $approvePurchaseOrderProcessor;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -58,18 +40,7 @@ class ApprovePurchaseOrderLogic extends AbstractControllerLogic
|
||||
*/
|
||||
public function logic(Request $request) : JsonResponse
|
||||
{
|
||||
|
||||
$booking = $this->fetchesBooking->execute(['id' => $request->route('id')]);
|
||||
|
||||
$purchaseOrder = $booking->transactions()->where('type', TransactionType::PURCHASE_ORDER)->first();
|
||||
|
||||
$booking->transactions()->where('type', TransactionType::PURCHASE_ORDER)->where('id', '!=', $purchaseOrder->id)->delete();
|
||||
|
||||
$this->updatesTransactionStatus->execute($purchaseOrder, ApprovalStatus::APPROVED);
|
||||
|
||||
$this->createInvoiceTransactionProcessor->execute($booking);
|
||||
|
||||
$this->approvePurchaseOrderProcessor->execute($request->route('id'));
|
||||
return $this->response([]);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Bookings\Processors;
|
||||
|
||||
|
||||
use App\Classes\Modules\Bookings\Services\FetchesBooking;
|
||||
use App\Classes\Modules\Transactions\Processors\CreateInvoiceTransactionProcessor;
|
||||
use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus;
|
||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||
use App\Classes\ValueObjects\Constants\TransactionType;
|
||||
|
||||
class ApprovePurchaseOrderProcessor
|
||||
{
|
||||
|
||||
/** @var FetchesBooking */
|
||||
private $fetchesBooking;
|
||||
|
||||
/** @var UpdatesTransactionStatus */
|
||||
private $updatesTransactionStatus;
|
||||
|
||||
/** @var CreateInvoiceTransactionProcessor */
|
||||
private $createInvoiceTransactionProcessor;
|
||||
|
||||
/**
|
||||
* ApprovePurchaseOrderProcessor constructor.
|
||||
* @param FetchesBooking $fetchesBooking
|
||||
* @param UpdatesTransactionStatus $updatesTransactionStatus
|
||||
* @param CreateInvoiceTransactionProcessor $createInvoiceTransactionProcessor
|
||||
*/
|
||||
public function __construct(FetchesBooking $fetchesBooking, UpdatesTransactionStatus $updatesTransactionStatus, CreateInvoiceTransactionProcessor $createInvoiceTransactionProcessor)
|
||||
{
|
||||
$this->fetchesBooking = $fetchesBooking;
|
||||
$this->updatesTransactionStatus = $updatesTransactionStatus;
|
||||
$this->createInvoiceTransactionProcessor = $createInvoiceTransactionProcessor;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $bookingId
|
||||
* @return void
|
||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||
* @throws \App\Classes\Exceptions\JobResourceNotFoundException
|
||||
*/
|
||||
public function execute(int $bookingId) {
|
||||
|
||||
$booking = $this->fetchesBooking->execute(['id' => $bookingId]);
|
||||
|
||||
$purchaseOrder = $booking->transactions()->where('type', TransactionType::PURCHASE_ORDER)->first();
|
||||
|
||||
$booking->transactions()->where('type', TransactionType::PURCHASE_ORDER)->where('id', '!=', $purchaseOrder->id)->delete();
|
||||
|
||||
$this->updatesTransactionStatus->execute($purchaseOrder, ApprovalStatus::APPROVED);
|
||||
|
||||
$this->createInvoiceTransactionProcessor->execute($booking);
|
||||
}
|
||||
}
|
||||
+1
-4
@@ -79,10 +79,7 @@ class FetchAdminWFPendingApprovalPOLogic extends AbstractControllerLogic
|
||||
// ->whereHas('transactions', fn ($query) => $query->where('type', TransactionType::PURCHASE_ORDER)->where('status', '<', ApprovalStatus::APPROVED))
|
||||
// ->first();
|
||||
|
||||
// $booking1 = $this->fetchesBooking->execute(['purchase_order_approval' => true, 'status_in' => [2], 'order_by_id_desc' => true, 'with_transactions' => true]);
|
||||
// Log::info('booking1 '.json_encode($booking1));
|
||||
|
||||
$booking = $this->fetchesBooking->execute(['purchase_order_approval' => true, 'status_in' => [2], 'id_not_in' => $excludedBookingIds, 'order_by_id_desc' => true]);
|
||||
$booking = $this->fetchesBooking->execute(['purchase_order_approval' => true, 'status_in' => [2], 'id_not_in' => $excludedBookingIds, 'with_transactions' => true, 'order_by_id_desc' => true]);
|
||||
|
||||
if(!$booking){
|
||||
return responseJson(null, 'No booking found', 404);
|
||||
|
||||
+3
-3
@@ -8,7 +8,7 @@ use App\Classes\Modules\Questionnaires\Standards\Rules\CanFetchQuestion;
|
||||
use App\Classes\Modules\Bookings\Services\FetchesBooking;
|
||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||
use App\Classes\ValueObjects\Constants\TransactionType;
|
||||
use App\Http\Resources\BookingBaseResource;
|
||||
use App\Http\Resources\BookingResource;
|
||||
use App\Models\KeyValuePair;
|
||||
use Carbon\Carbon;
|
||||
use App\Models\Booking;
|
||||
@@ -76,7 +76,7 @@ class FetchAdminWFPendingFillPOLogic extends AbstractControllerLogic
|
||||
// ->whereDoesntHave('transactions', fn ($query) => $query->where('type', TransactionType::PURCHASE_ORDER))
|
||||
// ->first();
|
||||
|
||||
$booking = $this->fetchesBooking->execute(['pending_purchase_order' => true, 'has_payment_status_in' => [2, 3], 'id_not_in' => $excludedBookingIds, 'order_by_id_desc' => true]);
|
||||
$booking = $this->fetchesBooking->execute(['pending_purchase_order' => true, 'has_payment_status_in' => [2, 3], 'id_not_in' => $excludedBookingIds, 'with_transactions' => true, 'order_by_id_desc' => true]);
|
||||
|
||||
if(!$booking){
|
||||
return responseJson(null, 'No booking found', 404);
|
||||
@@ -90,7 +90,7 @@ class FetchAdminWFPendingFillPOLogic extends AbstractControllerLogic
|
||||
// ]);
|
||||
// return $booking ? responseJson(new BookingResource($booking)) : responseJson(null, 'No booking found', 404);
|
||||
|
||||
return $this->resourceResponse(new BookingBaseResource($booking));
|
||||
return $this->resourceResponse(new BookingResource($booking));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Questionnaires\Processors;
|
||||
|
||||
|
||||
use App\Classes\Modules\Bookings\Processors\ApprovePurchaseOrderProcessor;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class SaveAnswerActionV1AdminWFProcessor
|
||||
{
|
||||
/** @var ApprovePurchaseOrderProcessor */
|
||||
private $approvePurchaseOrderProcessor;
|
||||
|
||||
/**
|
||||
* SaveAnswerActionV1AdminWFProcessor constructor.
|
||||
* @param ApprovePurchaseOrderProcessor $approvePurchaseOrderProcessor
|
||||
*/
|
||||
public function __construct(ApprovePurchaseOrderProcessor $approvePurchaseOrderProcessor)
|
||||
{
|
||||
$this->approvePurchaseOrderProcessor = $approvePurchaseOrderProcessor;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return
|
||||
*/
|
||||
public function execute($questionMetadata, $answerInText){
|
||||
if($answerInText === "approve_po_approved"){
|
||||
$this->approvePurchaseOrderProcessor->execute($questionMetadata['id']);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,28 +4,27 @@ namespace App\Classes\Modules\Questionnaires\Processors;
|
||||
|
||||
|
||||
use App\Models\QAUserAnswerSelected;
|
||||
use App\Classes\Modules\Questionnaires\Services\FetchesUserAnswerSelected;
|
||||
use App\Classes\Modules\Questionnaires\Processors\SaveAnswerActionV1AdminWFProcessor;
|
||||
use App\Classes\Modules\Documents\Processors\UploadDocumentProcessor;
|
||||
use App\Classes\ValueObjects\Constants\QAType;
|
||||
|
||||
|
||||
class SaveAnswerV1AdminWFProcessor
|
||||
{
|
||||
/** @var FetchesUserAnswerSelected */
|
||||
private $fetchesUserAnswerSelected;
|
||||
|
||||
/** @var UploadDocumentProcessor */
|
||||
private $uploadDocumentForProcessor;
|
||||
|
||||
/** @var SaveAnswerActionV1AdminWFProcessor */
|
||||
private $saveAnswerActionProcessor;
|
||||
|
||||
/**
|
||||
* SaveAnswerV1AdminWFProcessor constructor.
|
||||
* @param FetchesUserAnswerSelected $fetchesUserAnswerSelected
|
||||
* @param UploadDocumentProcessor $uploadDocumentForProcessor
|
||||
* @param SaveAnswerActionV1AdminWFProcessor $saveAnswerActionProcessor
|
||||
*/
|
||||
public function __construct(FetchesUserAnswerSelected $fetchesUserAnswerSelected, UploadDocumentProcessor $uploadDocumentForProcessor)
|
||||
public function __construct(UploadDocumentProcessor $uploadDocumentForProcessor, SaveAnswerActionV1AdminWFProcessor $saveAnswerActionProcessor)
|
||||
{
|
||||
$this->fetchesUserAnswerSelected = $fetchesUserAnswerSelected;
|
||||
$this->uploadDocumentForProcessor = $uploadDocumentForProcessor;
|
||||
$this->saveAnswerActionProcessor = $saveAnswerActionProcessor;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -80,6 +79,8 @@ class SaveAnswerV1AdminWFProcessor
|
||||
}
|
||||
$answer->save();
|
||||
|
||||
$this->saveAnswerActionProcessor->execute($questionMetadata, $answerInText);
|
||||
|
||||
return $answer;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user