mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange-2.0.git
synced 2026-08-19 04:23:55 +00:00
EXCHANGE-149 - Backend for process merge
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\General\Eloquent;
|
||||
|
||||
use App\Classes\Exceptions\MalformedRequestException;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
abstract class AbstractDeleteMultipleRecord
|
||||
{
|
||||
|
||||
/**
|
||||
* @param Builder $query
|
||||
* @param array $ids
|
||||
* @return mixed
|
||||
* @throws MalformedRequestException
|
||||
*/
|
||||
public function handler(Builder $query, array $ids){
|
||||
try{
|
||||
|
||||
$record_deleted = $query->whereIn('id',$ids)->delete();
|
||||
DB::commit();
|
||||
|
||||
return ($record_deleted == count($ids)) ? true : false;
|
||||
|
||||
} catch (QueryException|\Exception $exception){
|
||||
throw new MalformedRequestException('Unable to update the record due to unexpected error');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\General\Eloquent;
|
||||
|
||||
use App\Classes\Exceptions\MalformedRequestException;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
abstract class AbstractUpdateMultipleRecord
|
||||
{
|
||||
|
||||
/**
|
||||
* @param Builder $query
|
||||
* @param array $ids
|
||||
* @param array $values
|
||||
* @return mixed
|
||||
* @throws MalformedRequestException
|
||||
*/
|
||||
public function handler(Builder $query, array $ids, array $values){
|
||||
try{
|
||||
|
||||
$record_updated = $query->whereIn('id',$ids)->update($values);
|
||||
DB::commit();
|
||||
|
||||
return ($record_updated == count($ids)) ? true : false;
|
||||
|
||||
} catch (QueryException|\Exception $exception){
|
||||
throw new MalformedRequestException('Unable to update the record due to unexpected error');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -5,6 +5,7 @@ namespace App\Classes\Modules\Bookings\ControllersLogic;
|
||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||
|
||||
use App\Classes\Modules\Bookings\DataTransferObjects\BookingMergeObject;
|
||||
use App\Classes\Modules\Bookings\Services\DeleteMultipleBooking;
|
||||
use App\Classes\Modules\Bookings\Services\DeletesBooking;
|
||||
use App\Classes\Modules\Bookings\Services\FetchesBooking;
|
||||
use App\Classes\Modules\Bookings\Services\GetBookings;
|
||||
@@ -17,6 +18,7 @@ use App\Classes\Modules\Bookings\Services\GeneratesBookingMarking;
|
||||
|
||||
use App\Classes\Modules\Bookings\Services\UpdatesBookingTransaction;
|
||||
|
||||
use App\Models\Bank;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
@@ -54,6 +56,9 @@ class MergeBookingLogic extends AbstractControllerLogic
|
||||
/** @var DeletesBooking */
|
||||
private $deletesBooking;
|
||||
|
||||
/** @var DeleteMultipleBooking */
|
||||
private $deletesMultipleBooking;
|
||||
|
||||
/**
|
||||
* CreateBookingLogic constructor.
|
||||
* @param CanMergeBooking $canMergeBooking
|
||||
@@ -61,7 +66,7 @@ class MergeBookingLogic extends AbstractControllerLogic
|
||||
* @param GeneratesBookingMarking $generatesBookingMarking
|
||||
* @param FetchesCompany $fetchesCompany
|
||||
*/
|
||||
public function __construct(CanMergeBooking $canMergeBooking, CreatesBooking $createsBooking, GeneratesBookingMarking $generatesBookingMarking, FetchesCompany $fetchesCompany, GetBookings $getBookings, UpdatesBookingTransaction $updatesBookingTransaction, DeletesBooking $deletesBooking)
|
||||
public function __construct(CanMergeBooking $canMergeBooking, CreatesBooking $createsBooking, GeneratesBookingMarking $generatesBookingMarking, FetchesCompany $fetchesCompany, GetBookings $getBookings, UpdatesBookingTransaction $updatesBookingTransaction, DeleteMultipleBooking $deletesMultipleBooking)
|
||||
{
|
||||
$this->canMergeBooking = $canMergeBooking;
|
||||
$this->createsBooking = $createsBooking;
|
||||
@@ -69,7 +74,7 @@ class MergeBookingLogic extends AbstractControllerLogic
|
||||
$this->fetchesCompany = $fetchesCompany;
|
||||
$this->getBookings = $getBookings;
|
||||
$this->updatesBookingTransaction = $updatesBookingTransaction;
|
||||
$this->deletesBooking = $deletesBooking;
|
||||
$this->deletesMultipleBooking = $deletesMultipleBooking;
|
||||
}
|
||||
|
||||
|
||||
@@ -92,6 +97,11 @@ class MergeBookingLogic extends AbstractControllerLogic
|
||||
|
||||
$booking_amount = $booking_main->fix_amount;
|
||||
$transaction_amount = 0;
|
||||
$booking_update_values = [];
|
||||
$transaction_update_values = [];
|
||||
|
||||
$booking_ids_to_merge = [];
|
||||
$transaction_ids_to_merge = [];
|
||||
|
||||
$booking_main_transactions = $booking_main->transactions()->get();
|
||||
|
||||
@@ -100,6 +110,9 @@ class MergeBookingLogic extends AbstractControllerLogic
|
||||
$transaction_amount += $transaction->amount;
|
||||
}
|
||||
|
||||
$booking_update_values['status']=1;
|
||||
$booking_update_values['fix_amount']=$transaction_amount;
|
||||
|
||||
foreach($bookings_to_merge as $booking)
|
||||
{
|
||||
$booking_amount += $booking->fix_amount;
|
||||
@@ -108,16 +121,19 @@ class MergeBookingLogic extends AbstractControllerLogic
|
||||
foreach($bookings_to_merge_transactions as $transaction)
|
||||
{
|
||||
$transaction_amount += $transaction->amount;
|
||||
$transaction_update_values['status']=0;
|
||||
$transaction_update_values['booking_id']=$booking_main->id;
|
||||
$transaction_ids_to_merge[]=$transaction->id;
|
||||
|
||||
}
|
||||
//Soft-delete selected bookings
|
||||
//$this->deletesBooking->execute($booking);
|
||||
|
||||
$booking_ids_to_merge[]=$booking->id;
|
||||
}
|
||||
|
||||
$booking_object->setBookingAmount($booking_amount);
|
||||
$booking_object->setTransactionAmount($transaction_amount);
|
||||
$this->updatesBookingTransaction->execute($booking_main->id,$booking_update_values, $transaction_ids_to_merge, $transaction_update_values);
|
||||
|
||||
$this->deletesMultipleBooking->execute($booking_ids_to_merge);
|
||||
|
||||
$this->updatesBookingTransaction->execute($booking_main,$bookings_to_merge, $booking_object);
|
||||
dd('??');
|
||||
|
||||
return $this->response();
|
||||
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Bookings\Services;
|
||||
|
||||
use App\Classes\General\Eloquent\AbstractDeleteMultipleRecord;
|
||||
use App\Models\Booking;
|
||||
|
||||
class DeleteMultipleBooking extends AbstractDeleteMultipleRecord
|
||||
{
|
||||
/**
|
||||
* @param array $ids
|
||||
* @return mixed
|
||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||
*/
|
||||
public function execute(array $ids) {
|
||||
return $this->handler(Booking::query(), $ids);
|
||||
}
|
||||
}
|
||||
@@ -2,33 +2,27 @@
|
||||
|
||||
namespace App\Classes\Modules\Bookings\Services;
|
||||
|
||||
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
||||
use App\Classes\Modules\Bookings\DataTransferObjects\BookingMergeObject;
|
||||
use App\Classes\General\Eloquent\AbstractUpdateMultipleRecord;
|
||||
use App\Models\Booking;
|
||||
use App\Models\Transaction;
|
||||
|
||||
class UpdatesBookingTransaction extends AbstractUpdateRecord
|
||||
class UpdatesBookingTransaction extends AbstractUpdateMultipleRecord
|
||||
{
|
||||
/**
|
||||
* @param Booking $booking_main
|
||||
* @param mixed $bookings_to_merge
|
||||
* @param BookingMergeObject $object
|
||||
* @return \Illuminate\Database\Eloquent\Model
|
||||
* @param int $booking_id
|
||||
* @param array $booking_values
|
||||
* @param array $transaction_ids
|
||||
* @param array $transaction_values
|
||||
* @return mixed
|
||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||
*/
|
||||
public function execute(Booking $booking_main, $bookings_to_merge, BookingMergeObject $object) {
|
||||
public function execute(int $booking_id, array $booking_values, array $transaction_ids, array $transaction_values) {
|
||||
|
||||
foreach($bookings_to_merge as $booking) {
|
||||
$bookings_to_merge_transactions = $booking->transactions()->get();
|
||||
|
||||
foreach ($bookings_to_merge_transactions as $transaction) {
|
||||
var_dump( $transaction->booking_id);
|
||||
$transaction->booking_id = $object->getId();
|
||||
$this->handler($transaction);
|
||||
}
|
||||
$booking_update_success = $this->handler(Booking::query(),[$booking_id],$booking_values);
|
||||
if($booking_update_success) {
|
||||
$booking_update_success = $this->handler(Transaction::query(), $transaction_ids, $transaction_values);
|
||||
}
|
||||
|
||||
$booking_main->fix_amount=$object->getBookingAmount();
|
||||
|
||||
return $this->handler($booking_main);
|
||||
return $booking_update_success;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user