領収証発行サービス
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
2.7KB

  1. <?php
  2. namespace App\Http\Controllers\Web\Custom\HelloTechno;
  3. use App\Codes\UserRole;
  4. use App\Http\Controllers\Web\IParam;
  5. use App\Http\Controllers\Web\WebController;
  6. use App\Logic\ReceiptIssuingOrder\Custom\HelloTechno\CreateManager;
  7. use App\Models\ReceiptIssuingOrder as Order;
  8. use App\Models\ReceiptIssuingHTParkingCustomOrder as HT;
  9. use App\Util\Custom\HelloTechno\API;
  10. use Illuminate\Http\JsonResponse;
  11. use Illuminate\Http\Request;
  12. use Illuminate\Support\Facades\Auth;
  13. class CreateReceiptIssuingOrderController extends HelloTechnoController
  14. {
  15. public function name(): string
  16. {
  17. return "[HelloTechno専用]領収証発行依頼作成";
  18. }
  19. public function description(): string
  20. {
  21. return "[HelloTechno専用]領収証発行依頼を作成する";
  22. }
  23. public function __construct(
  24. protected CreateReceiptIssuingOrderParam $param,
  25. private CreateManager $manager
  26. ) {
  27. parent::__construct();
  28. $this->roleAllow(UserRole::NORMAL_ADMIN);
  29. }
  30. protected function getParam(): IParam
  31. {
  32. return $this->param;
  33. }
  34. protected function run(Request $request): JsonResponse
  35. {
  36. $param = $this->param;
  37. // 顧客情報取得
  38. $customer = collect(API::getCustomers($param->customerCode))
  39. ->where('customer_code', $param->customerCode)
  40. ->firstOrFail();
  41. // 駐車場情報取得
  42. $parking = collect(API::getParkings($param->customerCode, $param->parkingManagementCode))
  43. ->where('parking_management_code', $param->parkingManagementCode)
  44. ->firstOrFail();
  45. $orderData = [
  46. ...$param->toArray(),
  47. HT::COL_NAME_CUSTOMER_NAME => $customer['name'],
  48. HT::COL_NAME_PARKING_NAME => $parking['name'],
  49. Order::COL_NAME_HANDLER_ID => Auth::id(),
  50. Order::COL_NAME_SUMMARY_KEY1 => $param->customerCode,
  51. Order::COL_NAME_SUMMARY_KEY2 => $param->parkingManagementCode,
  52. Order::COL_NAME_RECEIPT_PURPOSE => "駐車領収証",
  53. Order::COL_NAME_RECEIPT_INVOICE_NO => "##TODO インボイス登録番号##",
  54. Order::COL_NAME_RECEIPT_PURPOSE => "駐車料金",
  55. Order::COL_NAME_RECEIPT_ISSUER => $customer['name'],
  56. Order::COL_NAME_RECEIPT_SHOP_NAME => $parking['name'],
  57. Order::COL_NAME_RECEIPT_PURPOSE => "駐車料金",
  58. Order::COL_NAME_MEMO => "駐車料金",
  59. ];
  60. logger($orderData);
  61. $messages = $this->manager->init()
  62. ->fill($orderData)
  63. ->create();
  64. if (count($messages) !== 0) {
  65. return $this->failedResponse([], $messages);
  66. }
  67. return $this->successResponse();
  68. }
  69. }