users->getCurrentUserDetails(); $runningJobs = $this->costUnits->getCostUnitsForNewInvoice(CostUnitType::COST_UNIT_TYPE_RUNNING_JOB); $currentEvents = $this->costUnits->getCostUnitsForNewInvoice(CostUnitType::COST_UNIT_TYPE_EVENT); $inertiaProvider = new InertiaProvider('Invoice/NewInvoice', [ 'userName' => $userData['userName'], 'userEmail' => $userData['userEmail'], 'userTelephone' => $userData['userTelephone'], 'userAccountOwner' => $userData['userAccountOwner'], 'userAccountIban' => $userData['userAccountIban'], 'runningJobs' => $runningJobs, 'currentEvents' => $currentEvents, ]); return $inertiaProvider->render(); } public function saveInvoice(Request $request, int $costUnitId, string $invoiceType) : JsonResponse { $costUnit = $this->costUnits->getById($costUnitId, true); if (null === $costUnit) { return response()->json([ 'status' => 'error', 'message' => 'Beim Speichern ist ein Fehler aufgetreten. Bitte starte den Vorgang erneut.' ]); } $uploadedFile = null; if (null !== $request->file('receipt')) { $validation = sprintf('%1$s|%2$s|max:%3$s', 'required', 'mimes:pdf', env('MAX_INVOICE_FILE_SIZE', 16)*10 ); $request->validate([ 'receipt' => $validation ]); $uploadFileProvider = new UploadFileProvider($request->file('receipt'), $costUnit); $uploadedFile = $uploadFileProvider->saveUploadedFile(); } switch ($invoiceType) { case InvoiceType::INVOICE_TYPE_TRAVELLING: if ($uploadedFile !== null) { $amount = Amount::fromString($request->get('amount'))->getAmount(); $distance = null; } else { $distance = Amount::fromString($request->get('amount'))->getRoundedAmount(); $amount = $distance * $costUnit->distance_allowance; } $createInvoiceRequest = new CreateInvoiceRequest( $costUnit, $request->get('name'), InvoiceType::INVOICE_TYPE_TRAVELLING, $amount, $uploadedFile, 'donation' === $request->get('decision') ? true : false, $this->users->getCurrentUserDetails()['userId'], $request->get('contactEmail'), $request->get('telephone'), $request->get('accountOwner'), $request->get('accountIban'), null, $request->get('otherText'), $distance, $request->get('havePassengers'), $request->get('materialTransportation'), ); break; default: $createInvoiceRequest = new CreateInvoiceRequest( $costUnit, $request->get('name'), $invoiceType, Amount::fromString($request->get('amount'))->getAmount(), $uploadedFile, 'donation' === $request->get('decision') ? true : false, $this->users->getCurrentUserDetails()['userId'], $request->get('contactEmail'), $request->get('telephone'), $request->get('accountOwner'), $request->get('accountIban'), $request->get('otherText'), null, null, $request->get('havePassengers'), $request->get('materialTransportation'), ); break; } $command = new CreateInvoiceCommand($createInvoiceRequest); $response = $command->execute(); if ($response->success) { new FlashMessageProvider( 'Die Abrechnung wurde erfolgreich angelegt.' . PHP_EOL . PHP_EOL . 'Sollten wir Rückfragen haben, melden wir uns bei dir', 'success' ); return response()->json([ 'status' => 'success', 'message' => 'Alright' ]); } dd($request->all()); } }