| @@ -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\LoginUser; | |||
| use App\Models\ReceiptIssuingOrder; | |||
| use App\Models\User; | |||
| use App\Util\DateUtil; | |||
| use Illuminate\Support\Carbon; | |||
| use Illuminate\Support\Str; | |||
| @@ -42,6 +43,18 @@ abstract class ReceiptIssuingOrderManager | |||
| 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 | |||
| { | |||
| if (!$this->initialized) { | |||
| @@ -241,6 +254,8 @@ abstract class ReceiptIssuingOrderManager | |||
| } | |||
| } | |||
| 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/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/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); | |||