|
- <?php
-
- namespace App\Http\Controllers\Web\Custom\HelloTechno;
-
- use App\Codes\UserRole;
- use App\Exceptions\AppCommonException;
- use App\Features\LoginUser;
- use App\Http\Controllers\Web\IParam;
- use App\Http\Controllers\Web\WebController;
- use App\Logic\ReceiptIssuingOrder\Custom\HelloTechno\PDFDownLoadManagerHelloTechno;
- use App\Logic\ReceiptIssuingOrder\UpdateManager;
- use App\Models\ColumnName;
- use App\Models\ReceiptIssuingOrder;
- use App\Repositories\Custom\HelloTechno\ReceiptIssuingOrderRepository;
- use App\Util\DateUtil;
- use Illuminate\Database\Eloquent\Collection;
- use Illuminate\Http\Request;
- use Illuminate\Http\Response;
- use Illuminate\Support\Arr;
-
- class DownloadLettersController extends HelloTechnoController
- {
-
- use LoginUser;
-
- public function name(): string
- {
- return "領収証PDFダウンロード(複数)";
- }
-
- public function description(): string
- {
- return "領収証PDFダウンロードする(複数)";
- }
-
- public function __construct(
- protected DownloadLettersParam $param,
- private ReceiptIssuingOrderRepository $repository,
- private PDFDownLoadManagerHelloTechno $manager
- ) {
- parent::__construct();
- $this->roleAllow(UserRole::NORMAL_ADMIN);
- }
-
- protected function getParam(): IParam
- {
- return $this->param;
- }
-
- protected function run(Request $request): Response
- {
- $param = $this->param;
-
- $a = $param->toArray();
- try {
- $this->transaction->beginTransaction();
-
- $targets = $this->repository->get(
- [
- ...$param->toArray(),
- ReceiptIssuingOrderRepository::CONDITION_CONTRACT_ID => $this->loginUser()->getCurrentContractId(),
- ReceiptIssuingOrderRepository::CONDITION_IS_CONFIRMED => true,
- ReceiptIssuingOrderRepository::CONDITION_HAS_MAILORDER => true,
- ]
- );
- $models = ReceiptIssuingOrder::findMany(Arr::pluck($targets, ReceiptIssuingOrder::COL_NAME_ID));
-
- $documents = $this->manager->initForDownloadLetters()->downlaodLetters($models);
-
- $this->updatePostDate($models);
-
- $this->transaction->commit();
- } catch (Exception $e) {
- $this->transaction->rollBack();
- throw $e;
- }
-
-
- return $documents;
- }
-
- private function updatePostDate(Collection $models)
- {
-
- foreach ($models as $order) {
-
- $manager = UpdateManager::instance();
-
- $messages = $manager->initById($order->id)
- ->mailPosted(DateUtil::now())
- ->update();
-
- if (count($messages) !== 0) {
- throw new AppCommonException(Arr::first($messages));
- }
- }
- }
- }
|