roleAllow(UserRole::NORMAL_ADMIN); } protected function getParam(): IParam { return $this->param; } protected function run(Request $request): BinaryFileResponse { $param = $this->param; // データ取得 $condition = [ UseSummaryRepository::CONDITION_CONTRACT_ID => $this->loginUser()->getCurrentContractId(), UseSummaryRepository::CONDITION_SORT_TARGET => 'customer_code', ReceiptIssuingOrderRepository::CONDITION_ORDER_DATE_FROM => $param->dateFrom, ReceiptIssuingOrderRepository::CONDITION_ORDER_DATE_TO => $param->dateTo, UseSummaryRepository::CONDITION_ORDER_DATE_FROM => $param->dateFrom, UseSummaryRepository::CONDITION_ORDER_DATE_TO => $param->dateTo, UseSummaryRepository::CONDITION_CUSTOMER_CODE => $param->customerCode, ]; $receiptIssuingOrderList = $this->receiptIssuingOrderRepository->get([ ...$condition, UseSummaryRepository::CONDITION_SORT_TARGET => ReceiptIssuingOrder::COL_NAME_ORDER_DATETIME, UseSummaryRepository::CONDITION_SORT_ORDER => UseSummaryRepository::ORDER_ASC, ]); $summaryList = $this->useSummaryRepository->get($condition); // CSVファイル作成 // 領収証発行依頼データ $csv = new CsvFile($this->getReceiptIssuingOrdersLabel(), CsvFile::ENCODE_SJIS); $sortDef = array_keys($this->getReceiptIssuingOrdersLabel()); foreach ($receiptIssuingOrderList as $row) { $csv->addLine($row->toArray(), $sortDef); } // 集計データ $csv->addLine([]); $csv->addLine($this->getSummaryHeaderLabels()); $sortDef = array_keys($this->getSummaryHeaderLabels()); foreach ($summaryList as $row) { $csv->addLine($row->toArray(), $sortDef); } return $csv->download($this->getDownloadFileName()); } private function getReceiptIssuingOrdersLabel(): array { return [ RDATA::COL_NAME_ORDER_DATETIME => '受付時刻', RDATA::COL_NAME_STATUS_NAME => 'ステータス', RDATA::COL_NAME_PARKING_NAME => '駐車場名', RDATA::COL_NAME_RECEIPT_USE_DATE => '利用日', RDATA::COL_NAME_ADJUST_SEQ_NO => '精算連番', RDATA::COL_NAME_RECEIPT_AMOUNT => '金額', RDATA::COL_NAME_RECEIPT_NAME => '宛名', RDATA::COL_NAME_STATUS_DONE => '完了', RDATA::COL_NAME_RECEIPT_NO => '領収証番号', // アクション日付 RDATA::COL_NAME_SMS_PHONE_NUMBER => 'SMS送信先', RDATA::COL_NAME_STATUS_SMS_SEND_DATETIME => 'SMS送信日時', RDATA::COL_NAME_STATUS_FIRST_ACCESS_DATETIME => '初回アクセス日時', RDATA::COL_NAME_STATUS_RECEIPT_CONFIRM_DATETIME => '領収証確定日時', RDATA::COL_NAME_STATUS_ORDER_MAIL_DATETIME => '郵送依頼日時', RDATA::COL_NAME_STATUS_MAIL_POST_DATE => '投函日', RDATA::COL_NAME_STATUS_RECEIPT_DOWNLOAD_DATETIME => '領収証ダウンロード日時', RDATA::COL_NAME_STATUS_RECEIPT_EMAIL_SEND_ORDER_DATETIME => 'EMAIL送信依頼日時', RDATA::COL_NAME_STATUS_RECEIPT_EMAIL_SEND_DATETIME => 'EMAIL送信日時', // 郵送先 RDATA::COL_NAME_MAIL_ZIP_CODE => '郵便番号', RDATA::COL_NAME_MAIL_ADDRESS1 => '住所1', RDATA::COL_NAME_MAIL_ADDRESS2 => '住所2', RDATA::COL_NAME_MAIL_ADDRESS3 => '住所3', RDATA::COL_NAME_MAIL_NAME => '郵送宛名', ]; } private function getSummaryHeaderLabels(): array { return [ 'date_from' => '開始年月日', 'date_to' => '終了年月日', 'customer_name' => '顧客名', 'receipt_order_count' => '領収証発行依頼件数', 'mail_order_count' => '郵送依頼件数', 'sms_send_count' => 'SMS送信件数', ]; } private function getDownloadFileName() { $param = $this->param; return sprintf( "利用実績_%s_%s_%s_%s.csv", $param->customerCode, $param->dateFrom->format('Ymd'), $param->dateTo->format('Ymd'), DateUtil::now()->format('YmdHis') ); } }