| @@ -0,0 +1,53 @@ | |||||
| <?php | |||||
| namespace App\Http\Controllers\Web\ReceiptIssuingOrder; | |||||
| use App\Codes\UserRole; | |||||
| use App\Http\Controllers\Web\IParam; | |||||
| use App\Http\Controllers\Web\WebController; | |||||
| use App\Logic\ReceiptIssuingOrder\UpdateManager; | |||||
| use App\Models\User; | |||||
| use Illuminate\Http\JsonResponse; | |||||
| use Illuminate\Http\Request; | |||||
| class ChangeHandlerController extends WebController | |||||
| { | |||||
| public function name(): string | |||||
| { | |||||
| return "領収証発行依頼担当者変更"; | |||||
| } | |||||
| public function description(): string | |||||
| { | |||||
| return "領収証発行依頼の担当者を変更する"; | |||||
| } | |||||
| public function __construct( | |||||
| protected ChangeHandlerParam $param, | |||||
| private UpdateManager $manager | |||||
| ) { | |||||
| parent::__construct(); | |||||
| $this->middleware('auth:sanctum'); | |||||
| $this->roleAllow(UserRole::NORMAL_ADMIN); | |||||
| } | |||||
| protected function getParam(): IParam | |||||
| { | |||||
| return $this->param; | |||||
| } | |||||
| protected function run(Request $request): JsonResponse | |||||
| { | |||||
| $param = $this->param; | |||||
| // 変更先ユーザーの取得 | |||||
| $newHandler = User::findOrFail($param->handlerId); | |||||
| $this->manager->initById($param->id) | |||||
| ->checkTimestamp($param->timestamp) | |||||
| ->changeHandler($newHandler) | |||||
| ->update(); | |||||
| return $this->successResponse(); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,26 @@ | |||||
| <?php | |||||
| namespace App\Http\Controllers\Web\ReceiptIssuingOrder; | |||||
| use App\Http\Controllers\Web\BaseParam; | |||||
| use App\Http\Controllers\Web\TimestampParam; | |||||
| use App\Models\ReceiptIssuingOrder; | |||||
| /** | |||||
| * @property string $id | |||||
| * @property string $handlerId | |||||
| */ | |||||
| class ChangeHandlerParam extends BaseParam implements TimestampParam | |||||
| { | |||||
| public function rules(): array | |||||
| { | |||||
| return array_merge( | |||||
| [ | |||||
| ReceiptIssuingOrder::COL_NAME_ID => $this->str(), | |||||
| ReceiptIssuingOrder::COL_NAME_HANDLER_ID => $this->str(), | |||||
| ], | |||||
| $this->timestamp(), | |||||
| ); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,59 @@ | |||||
| <?php | |||||
| namespace App\Http\Controllers\Web\ReceiptIssuingOrder; | |||||
| use App\Codes\UserRole; | |||||
| use App\Features\LoginUser; | |||||
| use App\Http\Controllers\Web\IParam; | |||||
| use App\Http\Controllers\Web\WebController; | |||||
| use App\Models\User; | |||||
| use Illuminate\Http\JsonResponse; | |||||
| use Illuminate\Http\Request; | |||||
| class HandlersController extends WebController | |||||
| { | |||||
| use LoginUser; | |||||
| public function name(): string | |||||
| { | |||||
| return "担当者一覧取得"; | |||||
| } | |||||
| public function description(): string | |||||
| { | |||||
| return "担当者一覧を取得する"; | |||||
| } | |||||
| public function __construct( | |||||
| protected HandlersParam $param, | |||||
| ) { | |||||
| parent::__construct(); | |||||
| $this->middleware('auth:sanctum'); | |||||
| $this->roleAllow(UserRole::NORMAL_ADMIN); | |||||
| } | |||||
| protected function getParam(): IParam | |||||
| { | |||||
| return $this->param; | |||||
| } | |||||
| protected function run(Request $request): JsonResponse | |||||
| { | |||||
| $contractId = $this->loginUser()->getCurrentContractId(); | |||||
| if ($contractId === null) { | |||||
| return $this->failedResponse(); | |||||
| } | |||||
| $list = User::whereContractId($contractId) | |||||
| ->orderBy(User::COL_NAME_ID) | |||||
| ->get([ | |||||
| User::COL_NAME_ID, | |||||
| User::COL_NAME_NAME, | |||||
| ]); | |||||
| return $this->successResponse(['records' => $list]); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,17 @@ | |||||
| <?php | |||||
| namespace App\Http\Controllers\Web\ReceiptIssuingOrder; | |||||
| use App\Http\Controllers\Web\BaseParam; | |||||
| use App\Models\ReceiptIssuingOrder; | |||||
| /** | |||||
| */ | |||||
| class HandlersParam extends BaseParam | |||||
| { | |||||
| public function rules(): array | |||||
| { | |||||
| return []; | |||||
| } | |||||
| } | |||||
| @@ -7,6 +7,7 @@ use App\Exceptions\ExclusiveException; | |||||
| use App\Features\InstanceAble; | use App\Features\InstanceAble; | ||||
| use App\Features\LoginUser; | use App\Features\LoginUser; | ||||
| use App\Models\ReceiptIssuingOrder; | use App\Models\ReceiptIssuingOrder; | ||||
| use App\Models\User; | |||||
| use App\Util\DateUtil; | use App\Util\DateUtil; | ||||
| use Illuminate\Support\Carbon; | use Illuminate\Support\Carbon; | ||||
| use Illuminate\Support\Str; | use Illuminate\Support\Str; | ||||
| @@ -42,6 +43,18 @@ abstract class ReceiptIssuingOrderManager | |||||
| return $this; | return $this; | ||||
| } | } | ||||
| public function changeHandler(User $newHandler) | |||||
| { | |||||
| if (!$this->initialized) { | |||||
| throw new LogicException("初期化ミス"); | |||||
| } | |||||
| if ($this->order->contract_id !== $newHandler->contract_id) { | |||||
| throw new AppCommonException('契約不正'); | |||||
| } | |||||
| $this->order->handler_id = $newHandler->id; | |||||
| return $this; | |||||
| } | |||||
| public function getOrder(): array | public function getOrder(): array | ||||
| { | { | ||||
| if (!$this->initialized) { | if (!$this->initialized) { | ||||
| @@ -241,6 +254,8 @@ abstract class ReceiptIssuingOrderManager | |||||
| } | } | ||||
| } | } | ||||
| return $this; | return $this; | ||||
| } | } | ||||
| } | } | ||||
| @@ -22,6 +22,8 @@ RouteHelper::get('/app-token-check', App\Http\Controllers\Web\ReceiptIssuingOrde | |||||
| RouteHelper::post('/receipt-issuing-order/confirm', App\Http\Controllers\Web\ReceiptIssuingOrder\ConfirmController::class); | RouteHelper::post('/receipt-issuing-order/confirm', App\Http\Controllers\Web\ReceiptIssuingOrder\ConfirmController::class); | ||||
| RouteHelper::post('/receipt-issuing-order/mail-order', App\Http\Controllers\Web\ReceiptIssuingOrder\MailOrderController::class); | RouteHelper::post('/receipt-issuing-order/mail-order', App\Http\Controllers\Web\ReceiptIssuingOrder\MailOrderController::class); | ||||
| RouteHelper::post('/receipt-issuing-order/mail-complete', App\Http\Controllers\Web\ReceiptIssuingOrder\MailPostCompleteController::class); | RouteHelper::post('/receipt-issuing-order/mail-complete', App\Http\Controllers\Web\ReceiptIssuingOrder\MailPostCompleteController::class); | ||||
| RouteHelper::post('/receipt-issuing-order/change-handler', App\Http\Controllers\Web\ReceiptIssuingOrder\ChangeHandlerController::class); | |||||
| RouteHelper::get('/receipt-issuing-order/handlers', App\Http\Controllers\Web\ReceiptIssuingOrder\HandlersController::class); | |||||
| RouteHelper::get('/use-summary/yyyymm', App\Http\Controllers\Web\UseSummary\UseSummaryYYYYMMsController::class); | RouteHelper::get('/use-summary/yyyymm', App\Http\Controllers\Web\UseSummary\UseSummaryYYYYMMsController::class); | ||||