diff --git a/app/Classes/General/Eloquent/Filters/CreatedAtBetween.php b/app/Classes/General/Eloquent/Filters/CreatedAtBetween.php new file mode 100644 index 00000000..4aeebb8c --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/CreatedAtBetween.php @@ -0,0 +1,20 @@ +whereBetween('created_at', $value); + } + +} \ No newline at end of file diff --git a/app/Classes/General/Eloquent/Filters/CurrencyRateIdIn.php b/app/Classes/General/Eloquent/Filters/CurrencyRateIdIn.php new file mode 100644 index 00000000..f80d0855 --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/CurrencyRateIdIn.php @@ -0,0 +1,20 @@ +whereIn('currency_rate_id', $value); + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Bookings/ControllersLogic/DeletePurchaseOrderPdfLogic.php b/app/Classes/Modules/Bookings/ControllersLogic/DeletePurchaseOrderPdfLogic.php new file mode 100644 index 00000000..5bc44d34 --- /dev/null +++ b/app/Classes/Modules/Bookings/ControllersLogic/DeletePurchaseOrderPdfLogic.php @@ -0,0 +1,69 @@ + 'Purchase Order PDF Deleted', + 'message' => 'You have successfully deleted the Purchase order PDF' + ]; + } + + /** @var FetchesBooking */ + private $fetchesBooking; + + /** @var DeletesDocument */ + private $deletesDocument; + + /** @var CanDeleteDocument */ + private $canDeleteDocument; + + + /** + * DeletePurchaseOrderPdfLogic constructor. + * @param FetchesBooking $fetchesBooking + * @param DeletesDocument $deletesDocument + * @param CanDeleteDocument $canDeleteDocument + */ + public function __construct(fetchesBooking $fetchesBooking, DeletesDocument $deletesDocument, CanDeleteDocument $canDeleteDocument) + { + $this->fetchesBooking = $fetchesBooking; + $this->deletesDocument = $deletesDocument; + $this->canDeleteDocument = $canDeleteDocument; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\MalformedRequestException + */ + public function logic(Request $request) : JsonResponse + { + $booking = $this->fetchesBooking->execute(['id' => $request->route('id')]); + + $document = $booking->documents()->where('document_type', DocumentType::ECOMMERCE_PURCHASE_ORDER)->first(); + + $this->canDeleteDocument->passes(); + + $this->deletesDocument->execute($document); + + return $this->response([]); + } + +} diff --git a/app/Classes/Modules/Companies/ControllersLogic/UpdateCompanyNameAndDebtorLogic.php b/app/Classes/Modules/Companies/ControllersLogic/UpdateCompanyNameAndDebtorLogic.php new file mode 100644 index 00000000..05fb0746 --- /dev/null +++ b/app/Classes/Modules/Companies/ControllersLogic/UpdateCompanyNameAndDebtorLogic.php @@ -0,0 +1,82 @@ + 'Update Company Account Status', + 'message' => 'You have successfully updated the Company Account Status' + ]; + } + /** @var CanUpdateCompany */ + private $canUpdateCompany; + + /** @var UpdatesCompany */ + private $updatesCompany; + + /** @var FetchesCompany */ + private $fetchesCompany; + + /** @var UpdatesCompanyDebtor */ + private $updatesCompanyDebtor; + + /** + * UpdateCompanyControllersLogic constructor. + * @param CanUpdateCompany $canUpdateCompany + * @param UpdatesCompany $updatesCompany + * @param FetchesCompany $fetchesCompany + * @param UpdatesCompanyDebtor $updatesCompanyDebtor + */ + public function __construct( + CanUpdateCompany $canUpdateCompany, + UpdatesCompany $updatesCompany, + FetchesCompany $fetchesCompany, + UpdatesCompanyDebtor $updatesCompanyDebtor + ) + { + $this->canUpdateCompany = $canUpdateCompany; + $this->updatesCompany = $updatesCompany; + $this->fetchesCompany = $fetchesCompany; + $this->updatesCompanyDebtor = $updatesCompanyDebtor; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $query = $this->fetchesCompany->execute(['id' => $request->route('id')]); + + $object = new CompanyObject($request->input('name'), $request->input('reference'), $query->business_type, $request->input('type')); + + $this->canUpdateCompany->passes($object); + + $query = $this->updatesCompany->execute($query, $object); + + if ($request->input('debtor') || $query->first()->debtor !== null) { + $this->updatesCompanyDebtor->execute($query, $request->input('debtor')); + } + + return $this->resourceResponse(new CompanyResource($query)); + } + +} + diff --git a/app/Classes/Modules/Companies/DataTransferObjects/CompanyObject.php b/app/Classes/Modules/Companies/DataTransferObjects/CompanyObject.php index 09b0e153..cbc5df53 100644 --- a/app/Classes/Modules/Companies/DataTransferObjects/CompanyObject.php +++ b/app/Classes/Modules/Companies/DataTransferObjects/CompanyObject.php @@ -83,4 +83,4 @@ class CompanyObject implements DataTransferObject -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Companies/Services/UpdatesCompany.php b/app/Classes/Modules/Companies/Services/UpdatesCompany.php index f89bbca8..1b92c2d8 100644 --- a/app/Classes/Modules/Companies/Services/UpdatesCompany.php +++ b/app/Classes/Modules/Companies/Services/UpdatesCompany.php @@ -15,7 +15,7 @@ class UpdatesCompany extends AbstractUpdateRecord * @return \Illuminate\Database\Eloquent\Model * @throws \App\Classes\Exceptions\MalformedRequestException */ - public function execute(Company $model, CompanyObject $object) + public function execute(Company $model, CompanyObject $object) { $model->name = $object->getName(); $model->reference = $object->getReference(); @@ -23,4 +23,4 @@ class UpdatesCompany extends AbstractUpdateRecord return $this->handler($model); } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Companies/Services/UpdatesCompanyDebtor.php b/app/Classes/Modules/Companies/Services/UpdatesCompanyDebtor.php index 4cb43a9f..14e0d6e2 100644 --- a/app/Classes/Modules/Companies/Services/UpdatesCompanyDebtor.php +++ b/app/Classes/Modules/Companies/Services/UpdatesCompanyDebtor.php @@ -11,6 +11,7 @@ class UpdatesCompanyDebtor extends AbstractUpdateRecord /** * @param Company $model + * @param CompanyObject $object * @param string $debtor * @return \Illuminate\Database\Eloquent\Model * @throws \App\Classes\Exceptions\MalformedRequestException @@ -18,6 +19,7 @@ class UpdatesCompanyDebtor extends AbstractUpdateRecord public function execute(Company $model, string $debtor) { $model->debtor = $debtor; + return $this->handler($model); } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Currencies/ControllersLogic/History/ListCurrencyRateHistoryLogic.php b/app/Classes/Modules/Currencies/ControllersLogic/History/ListCurrencyRateHistoryLogic.php new file mode 100644 index 00000000..aae7d3aa --- /dev/null +++ b/app/Classes/Modules/Currencies/ControllersLogic/History/ListCurrencyRateHistoryLogic.php @@ -0,0 +1,84 @@ + 'Retrieved Currency Rate History', + 'message' => 'You have successfully retrieved a list of Currency Rate History' + ]; + } + + /** @var CanListRates */ + private $canListRates; + + /** @var ListsRateLogs */ + private $listsRateLogs; + + /** @var ListsRate */ + private $listsRates; + + /** + * ListRatesLogic constructor. + * @param CanListRates $canListRates + * @param ListsRates $listsRates + */ + public function __construct(CanListRates $canListRates, ListsRateLogs $listsRateLogs, listsRates $listsRates) + { + $this->canListRates = $canListRates; + $this->listsRateLogs = $listsRateLogs; + $this->listsRates = $listsRates; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request): JsonResponse + { + //$this->canListRates->passes(); + + $filterArray = json_decode($request->input('filters')); + + $rate_filter['currency_id'] = $filterArray->currency_id; + $rate_filter['service_id'] = $filterArray->service_id; + + $currency_rate_ids = $this->listsRates->execute( + [ + 'currency_id' => $filterArray->currency_id, + 'service_id' => $filterArray->service_id, + ] + )->pluck('id')->toArray(); + + $query = $this->listsRateLogs->execute( + [ + 'currency_rate_id_in' => $currency_rate_ids, + 'date_start' => new Carbon($filterArray->date_from), + 'date_end' => new Carbon($filterArray->date_to), + ] + ); + + return $this->collectionResponse(CurrencyRateLogResource::collection($query)); + } +} diff --git a/app/Classes/Modules/Currencies/Services/Rates/ListsRateLogs.php b/app/Classes/Modules/Currencies/Services/Rates/ListsRateLogs.php new file mode 100644 index 00000000..d3cfa469 --- /dev/null +++ b/app/Classes/Modules/Currencies/Services/Rates/ListsRateLogs.php @@ -0,0 +1,33 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Bookings/DeletePurchaseOrderPdfController.php b/app/Http/Controllers/Bookings/DeletePurchaseOrderPdfController.php new file mode 100644 index 00000000..0113c0d5 --- /dev/null +++ b/app/Http/Controllers/Bookings/DeletePurchaseOrderPdfController.php @@ -0,0 +1,16 @@ +execute($request); + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Companies/UpdateCompanyNameAndDebtorController.php b/app/Http/Controllers/Companies/UpdateCompanyNameAndDebtorController.php new file mode 100644 index 00000000..18599e7f --- /dev/null +++ b/app/Http/Controllers/Companies/UpdateCompanyNameAndDebtorController.php @@ -0,0 +1,19 @@ +execute($request); + } +} diff --git a/app/Http/Controllers/Currencies/History/ListCurrencyRateHistory.php b/app/Http/Controllers/Currencies/History/ListCurrencyRateHistory.php new file mode 100644 index 00000000..7e7db955 --- /dev/null +++ b/app/Http/Controllers/Currencies/History/ListCurrencyRateHistory.php @@ -0,0 +1,20 @@ +execute($request); + } + +} \ No newline at end of file diff --git a/app/Http/Resources/CompanyResource.php b/app/Http/Resources/CompanyResource.php index cb357684..6d7cb2e4 100644 --- a/app/Http/Resources/CompanyResource.php +++ b/app/Http/Resources/CompanyResource.php @@ -37,6 +37,7 @@ class CompanyResource extends JsonResource 'id' => $this->id, 'name' => $this->name, 'reference' => $this->reference, + 'debtor' => $this->debtor, 'type' => (int) $this->type, 'business_type' => (int) $this->business_type, 'status' => (int) $this->status, diff --git a/app/Http/Resources/CurrencyRateLogResource.php b/app/Http/Resources/CurrencyRateLogResource.php new file mode 100644 index 00000000..f8560dd8 --- /dev/null +++ b/app/Http/Resources/CurrencyRateLogResource.php @@ -0,0 +1,26 @@ +currencyRate; + + return [ + 'currency_rate_id' => $this->currency_rate_id, + 'rate' => $this->selling, + 'created_at' => $this->created_at->format('d-m-Y'), + 'payment_method_type' => $currencyRate->payment_method_type, + ]; + } +} diff --git a/app/Models/CurrencyRateLog.php b/app/Models/CurrencyRateLog.php index 38130956..85b0eecf 100644 --- a/app/Models/CurrencyRateLog.php +++ b/app/Models/CurrencyRateLog.php @@ -1,10 +1,19 @@ BelongsTo(CurrencyRate::class, 'currency_rate_id', 'id'); + } } diff --git a/resources/assets/vue/components/bookings/forms/ChooseCurrencyComponent.vue b/resources/assets/vue/components/bookings/forms/ChooseCurrencyComponent.vue new file mode 100644 index 00000000..e670a450 --- /dev/null +++ b/resources/assets/vue/components/bookings/forms/ChooseCurrencyComponent.vue @@ -0,0 +1,118 @@ + + + diff --git a/resources/assets/vue/components/bookings/forms/ChooseServiceComponent.vue b/resources/assets/vue/components/bookings/forms/ChooseServiceComponent.vue new file mode 100644 index 00000000..43d8791e --- /dev/null +++ b/resources/assets/vue/components/bookings/forms/ChooseServiceComponent.vue @@ -0,0 +1,97 @@ + + + diff --git a/resources/assets/vue/components/bookings/forms/DeletePoFormComponent.vue b/resources/assets/vue/components/bookings/forms/DeletePoFormComponent.vue new file mode 100644 index 00000000..b8701f85 --- /dev/null +++ b/resources/assets/vue/components/bookings/forms/DeletePoFormComponent.vue @@ -0,0 +1,33 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/components/bookings/forms/RateHistoriesComponent.vue b/resources/assets/vue/components/bookings/forms/RateHistoriesComponent.vue new file mode 100644 index 00000000..290d18ba --- /dev/null +++ b/resources/assets/vue/components/bookings/forms/RateHistoriesComponent.vue @@ -0,0 +1,248 @@ + + + diff --git a/resources/assets/vue/components/bookings/sections/BookingDetailsSectionComponent.vue b/resources/assets/vue/components/bookings/sections/BookingDetailsSectionComponent.vue index fe2826e4..1bf92781 100644 --- a/resources/assets/vue/components/bookings/sections/BookingDetailsSectionComponent.vue +++ b/resources/assets/vue/components/bookings/sections/BookingDetailsSectionComponent.vue @@ -261,6 +261,14 @@ +
+
+
Delete PO
+
+ + + +
diff --git a/resources/assets/vue/components/companies/elements/CustomerProfileComponent.vue b/resources/assets/vue/components/companies/elements/CustomerProfileComponent.vue index fd36e8a2..8217fbbe 100644 --- a/resources/assets/vue/components/companies/elements/CustomerProfileComponent.vue +++ b/resources/assets/vue/components/companies/elements/CustomerProfileComponent.vue @@ -9,11 +9,19 @@
-
+
-
{{item.name}}
+ + + +
+ {{item.name}} +
+ +
+
@@ -93,4 +101,4 @@ export default { mixins: [componentHandler] } - \ No newline at end of file + diff --git a/resources/assets/vue/components/companies/forms/ChangeCustomerNameFormComponent.vue b/resources/assets/vue/components/companies/forms/ChangeCustomerNameFormComponent.vue new file mode 100644 index 00000000..92e85846 --- /dev/null +++ b/resources/assets/vue/components/companies/forms/ChangeCustomerNameFormComponent.vue @@ -0,0 +1,73 @@ + + diff --git a/resources/views/pages/rate_histories.blade.php b/resources/views/pages/rate_histories.blade.php new file mode 100644 index 00000000..4d19ef10 --- /dev/null +++ b/resources/views/pages/rate_histories.blade.php @@ -0,0 +1,8 @@ +@extends('layouts.base_portal') +@section('inner_content') +
+
+ +
+
+@endsection diff --git a/routes/booking.php b/routes/booking.php index b645345c..81db27b6 100644 --- a/routes/booking.php +++ b/routes/booking.php @@ -28,6 +28,7 @@ Route::group(['prefix' => 'booking', 'as' => 'booking.', 'namespace' => 'Booking Route::post('{id}/purchase_order/verification', 'ApprovePurchaseOrderController@approve')->name('po.approval'); Route::post('{id}/purchase_order/pdf', 'UploadPurchaseOrderController@upload')->name('po.pdf'); + Route::delete('{id}/purchase_order/pdf', 'DeletePurchaseOrderPdfController@delete')->name('po.pdf.delete'); Route::put('{id}/updateAmount', 'UpdateBookingAmountController@update')->name('booking_amount.update'); diff --git a/routes/company.php b/routes/company.php index cb1b059c..6571daa4 100644 --- a/routes/company.php +++ b/routes/company.php @@ -9,6 +9,7 @@ Route::group(['prefix' => 'company', 'as' => 'company.', 'namespace' => 'Compani Route::put('/update/{id}', 'UpdateCompanyController@update')->name('update'); Route::put('update/{id}/status', 'UpdateCompanyStatusController@update')->name('status.update'); Route::delete('/delete/{id}', 'DeleteCompanyController@destroy')->name('delete'); + Route::put('/name-and-debtor/update/{id}', 'UpdateCompanyNameAndDebtorController@update')->name('update.nameAndDebtor'); Route::put('/update/debtor/{id}', 'UpdateCompanyDebtorController@update')->name('delete'); diff --git a/routes/currency.php b/routes/currency.php index ba308402..b621aad6 100644 --- a/routes/currency.php +++ b/routes/currency.php @@ -7,4 +7,8 @@ Route::group(['namespace' => 'Currencies', 'as' => 'currency.', 'prefix' => 'cur Route::get('/list', 'ListCurrencyController@list')->name('list'); Route::post('/create', 'CreateCurrencyController@create')->name('create'); Route::delete('/delete/{id}', 'DeleteCurrencyController@delete')->name('delete'); -}); \ No newline at end of file + + Route::group(['prefix' => 'history', 'namespace' => 'History', 'as' => 'history.'], function () { + Route::get('/list', 'ListCurrencyRateHistory@list')->name('list'); + }); +}); diff --git a/routes/web.php b/routes/web.php index 702e98ac..053c500e 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,26 +1,27 @@ with('paymentMethods', $paymentMethods); +})->name('currency_rate.history');