|
- <?php
-
- namespace App\Http\Controllers\Web\Custom\HelloTechno;
-
- use App\Codes\UserRole;
- use App\Files\CsvFile;
- use App\Http\Controllers\Web\IParam;
- use App\Repositories\Custom\HelloTechno\UseSummaryRepository as Repository;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Auth;
- use Symfony\Component\HttpFoundation\BinaryFileResponse;
-
- class UseSummaryCSVController extends HelloTechnoController
- {
- public function name(): string
- {
- return "[HelloTechno専用]利用実績一覧CSV取得";
- }
-
- public function description(): string
- {
- return "[HelloTechno専用]利用実績の一覧CSVを取得する";
- }
-
- public function __construct(
- protected UseSummaryCSVParam $param,
- private Repository $repository
- ) {
- parent::__construct();
- $this->roleAllow(UserRole::NORMAL_ADMIN);
- }
-
- protected function getParam(): IParam
- {
- return $this->param;
- }
-
- protected function run(Request $request): BinaryFileResponse
- {
- $param = $this->param;
-
- $condition = [
- ...$param->toArray(),
- Repository::CONDITION_CONTRACT_ID => Auth::user()->contract_id,
- Repository::CONDITION_SORT_TARGET => 'customer_code',
- ];
-
- $list = $this->repository->forCsv()->get($condition);
-
- // $csv = new CsvFile($this->getHeaderLabel(), CsvFile::ENCODE_SJIS);
- $csv = new CsvFile($this->getHeaderLabel());
- foreach ($list as $row) {
- $csv->addLine($row->toArray());
- }
- return $csv->download($this->getDownloadFileName());
- }
-
- private function getHeaderLabel(): array
- {
- $headers = [
- '集計ID',
- '集計年月',
- '顧客コード',
- '顧客名',
- '駐車場管理コード',
- '領収証発行依頼回数',
- 'SMS送信件数',
- ];
-
- return $headers;
- }
-
- private function getDownloadFileName()
- {
-
- return sprintf("利用実績_%s.csv", $this->param->summaryYyyymm);
- }
- }
|