diff --git a/app/Classes/Modules/Companies/ControllersLogic/UpdateCompanyEInvoiceRequestChangeLogic.php b/app/Classes/Modules/Companies/ControllersLogic/UpdateCompanyEInvoiceRequestChangeLogic.php new file mode 100644 index 00000000..29d5d297 --- /dev/null +++ b/app/Classes/Modules/Companies/ControllersLogic/UpdateCompanyEInvoiceRequestChangeLogic.php @@ -0,0 +1,62 @@ + 'Updated EInvoice Request', + 'message' => 'You have successfully updated company E-Invoice request' + ]; + } + + /** @var FetchesCompany */ + private $fetchesCompany; + + /** @var UpdatesCompanyEInvoiceRequest */ + private $updatesCompanyEInvoiceRequest; + + + /** + * UpdateCompanyEInvoiceRequestChangeLogic constructor. + * @param FetchesCompany $fetchesCompany + * @param UpdatesCompanyEInvoiceRequest $updatesCompanyEInvoiceRequest + */ + public function __construct(FetchesCompany $fetchesCompany, UpdatesCompanyEInvoiceRequest $updatesCompanyEInvoiceRequest) + { + $this->fetchesCompany = $fetchesCompany; + $this->updatesCompanyEInvoiceRequest = $updatesCompanyEInvoiceRequest; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function logic(Request $request) : JsonResponse + { + $dto = new EInvoiceRequestDTO($request->all()); + $company = $this->fetchesCompany->execute(['id' => $dto->companyId]); + + if($company->e_invoice === 1){ + $this->updatesCompanyEInvoiceRequest->execute($company, $dto->eInvoiceRequest); + } + + return $this->response([]); + } +} diff --git a/app/Classes/Modules/Companies/Services/UpdatesCompanyEInvoiceRequest.php b/app/Classes/Modules/Companies/Services/UpdatesCompanyEInvoiceRequest.php index bdef7fc8..1257ca70 100644 --- a/app/Classes/Modules/Companies/Services/UpdatesCompanyEInvoiceRequest.php +++ b/app/Classes/Modules/Companies/Services/UpdatesCompanyEInvoiceRequest.php @@ -17,13 +17,18 @@ class UpdatesCompanyEInvoiceRequest extends AbstractUpdateRecord */ public function execute(Company $model, bool $eInvoice) { - if (is_null($model->e_invoice_requested_at)) { - if($eInvoice){ - $model->e_invoice_requested_at = now(); + if($eInvoice){ + if (is_null($model->e_invoice_requested_at)) { + if($eInvoice){ + $model->e_invoice_requested_at = now(); + } } + $model->e_invoice = 1; + } + else{ + $model->e_invoice_requested_at = null; + $model->e_invoice = 0; } - $model->e_invoice = $eInvoice; - return $this->handler($model); } } diff --git a/app/Http/Controllers/Companies/UpdateCompanyEInvoiceInfoController.php b/app/Http/Controllers/Companies/UpdateCompanyEInvoiceInfoController.php index 9157e9de..d6e29f95 100644 --- a/app/Http/Controllers/Companies/UpdateCompanyEInvoiceInfoController.php +++ b/app/Http/Controllers/Companies/UpdateCompanyEInvoiceInfoController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers\Companies; use App\Classes\Modules\Companies\ControllersLogic\UpdateCompanyEInvoiceInfoLogic; use App\Classes\Modules\Companies\ControllersLogic\UpdateCompanyEInvoiceRequestLogic; +use App\Classes\Modules\Companies\ControllersLogic\UpdateCompanyEInvoiceRequestChangeLogic; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -18,7 +19,7 @@ class UpdateCompanyEInvoiceInfoController return $logic->execute($request); } - /** + /** * @param Request $request * @param UpdateCompanyEInvoiceRequestLogic $logic * @return JsonResponse @@ -26,4 +27,13 @@ class UpdateCompanyEInvoiceInfoController public function updateRequest(Request $request, UpdateCompanyEInvoiceRequestLogic $logic): JsonResponse { return $logic->execute($request); } + + /** + * @param Request $request + * @param UpdateCompanyEInvoiceRequestChangeLogic $logic + * @return JsonResponse + */ + public function updateChangeOfMindRequest(Request $request, UpdateCompanyEInvoiceRequestChangeLogic $logic): JsonResponse { + return $logic->execute($request); + } } diff --git a/resources/assets/vue/components/address/forms/EInvoiceInfoFormComponent.vue b/resources/assets/vue/components/address/forms/EInvoiceInfoFormComponent.vue index d10f1818..1393865a 100644 --- a/resources/assets/vue/components/address/forms/EInvoiceInfoFormComponent.vue +++ b/resources/assets/vue/components/address/forms/EInvoiceInfoFormComponent.vue @@ -80,6 +80,18 @@ +