diff --git a/app/Classes/Modules/Bookings/ControllersLogic/UpdateBookingOwnerLogic.php b/app/Classes/Modules/Bookings/ControllersLogic/UpdateBookingOwnerLogic.php new file mode 100644 index 00000000..90b3fb98 --- /dev/null +++ b/app/Classes/Modules/Bookings/ControllersLogic/UpdateBookingOwnerLogic.php @@ -0,0 +1,87 @@ + 'Update Booking Owner', + 'message' => "You have successfully updated booking's owner" + ]; + } + + /** @var CanUpdateBooking */ + private $canUpdateBooking; + + /** @var UpdatesBookingOwner */ + private $updatesBookingOwner; + + /** @var FetchesBooking */ + private $fetchesBooking; + + /** @var CanFetchBooking */ + private $canFetchBooking; + + /** @var FetchesCompany */ + private $fetchesCompany; + + /** + * UpdateBookingLogic constructor. + * @param CanUpdateBooking $canUpdateBooking + * @param UpdatesBookingOwner $updatesBookingOwner + * @param CanFetchBooking $canFetchBooking + * @param FetchesBooking $fetchesBooking + * @param FetchesCompany $fetchesCompany + */ + public function __construct( + CanUpdateBooking $canUpdateBooking, + UpdatesBookingOwner $updatesBookingOwner, + CanFetchBooking $canFetchBooking, + FetchesBooking $fetchesBooking, + FetchesCompany $fetchesCompany + ) { + $this->canUpdateBooking = $canUpdateBooking; + $this->updatesBookingOwner = $updatesBookingOwner; + $this->canFetchBooking = $canFetchBooking; + $this->fetchesBooking = $fetchesBooking; + $this->fetchesCompany = $fetchesCompany; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request): JsonResponse + { + $this->canFetchBooking->passes(); + + $booking = $this->fetchesBooking->execute([ + 'id' => $request->route('id'), + ]); + + $newCompanyId = Company::where('reference', $request->input('newMarking'))->first()->id; + + $this->updatesBookingOwner->execute($booking, $newCompanyId); + + return $this->resourceResponse(new BookingResource($booking)); + } +} diff --git a/app/Classes/Modules/Bookings/Services/UpdatesBookingOwner.php b/app/Classes/Modules/Bookings/Services/UpdatesBookingOwner.php new file mode 100644 index 00000000..1fd094e4 --- /dev/null +++ b/app/Classes/Modules/Bookings/Services/UpdatesBookingOwner.php @@ -0,0 +1,22 @@ +company_id = $id; + return $this->handler($model); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Bookings/UpdateBookingOwnerController.php b/app/Http/Controllers/Bookings/UpdateBookingOwnerController.php new file mode 100644 index 00000000..1ced189c --- /dev/null +++ b/app/Http/Controllers/Bookings/UpdateBookingOwnerController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} \ No newline at end of file diff --git a/resources/assets/vue/components/bookings/forms/ChangeBookingOwnerFormComponent.vue b/resources/assets/vue/components/bookings/forms/ChangeBookingOwnerFormComponent.vue new file mode 100644 index 00000000..8034fcdc --- /dev/null +++ b/resources/assets/vue/components/bookings/forms/ChangeBookingOwnerFormComponent.vue @@ -0,0 +1,62 @@ + + diff --git a/resources/assets/vue/components/bookings/sections/BookingDetailsSectionComponent.vue b/resources/assets/vue/components/bookings/sections/BookingDetailsSectionComponent.vue index 198ca26d..fe2826e4 100644 --- a/resources/assets/vue/components/bookings/sections/BookingDetailsSectionComponent.vue +++ b/resources/assets/vue/components/bookings/sections/BookingDetailsSectionComponent.vue @@ -426,6 +426,14 @@ +
+
+
Change Booking Owner
+ + + +
+
diff --git a/routes/booking.php b/routes/booking.php index 0cbeca76..b645345c 100644 --- a/routes/booking.php +++ b/routes/booking.php @@ -12,6 +12,8 @@ Route::group(['prefix' => 'booking', 'as' => 'booking.', 'namespace' => 'Booking Route::delete('/delete/{id}', 'DeleteBookingController@delete')->name('delete'); Route::post('/regenerate/invoice/{id}', 'RegenerateInvoiceBookingController@regenerate')->name('regenerate.invoice'); + Route::put('/owner/update/{id}', 'UpdateBookingOwnerController@update')->name('owner.update'); + Route::group(['prefix' => '{id}/payment', 'as' => 'payment.'], function () { Route::post('quotation', 'FetchBookingPaymentQuotationController@fetch')->name('quotation'); Route::post('create', 'CreateBookingPaymentController@create')->name('create');