diff --git a/app/Classes/General/Eloquent/AbstractDeleteMultipleRecord.php b/app/Classes/General/Eloquent/AbstractDeleteMultipleRecord.php new file mode 100644 index 00000000..be16b20a --- /dev/null +++ b/app/Classes/General/Eloquent/AbstractDeleteMultipleRecord.php @@ -0,0 +1,34 @@ +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'); + } + } + + + +} \ No newline at end of file diff --git a/app/Classes/General/Eloquent/AbstractUpdateMultipleRecord.php b/app/Classes/General/Eloquent/AbstractUpdateMultipleRecord.php new file mode 100644 index 00000000..c3628c65 --- /dev/null +++ b/app/Classes/General/Eloquent/AbstractUpdateMultipleRecord.php @@ -0,0 +1,35 @@ +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'); + } + } + + + +} \ No newline at end of file diff --git a/app/Classes/Modules/Bookings/ControllersLogic/MergeBookingLogic.php b/app/Classes/Modules/Bookings/ControllersLogic/MergeBookingLogic.php index fbbbf28d..f844cd5a 100644 --- a/app/Classes/Modules/Bookings/ControllersLogic/MergeBookingLogic.php +++ b/app/Classes/Modules/Bookings/ControllersLogic/MergeBookingLogic.php @@ -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(); diff --git a/app/Classes/Modules/Bookings/Services/DeleteMultipleBooking.php b/app/Classes/Modules/Bookings/Services/DeleteMultipleBooking.php new file mode 100644 index 00000000..f35c14db --- /dev/null +++ b/app/Classes/Modules/Bookings/Services/DeleteMultipleBooking.php @@ -0,0 +1,18 @@ +handler(Booking::query(), $ids); + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Bookings/Services/UpdatesBookingTransaction.php b/app/Classes/Modules/Bookings/Services/UpdatesBookingTransaction.php index b4afbeb9..88b04868 100644 --- a/app/Classes/Modules/Bookings/Services/UpdatesBookingTransaction.php +++ b/app/Classes/Modules/Bookings/Services/UpdatesBookingTransaction.php @@ -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; } } \ No newline at end of file