Преглед изворни кода

担当者変更機能 追加

develop
sosuke.iwabuchi пре 2 година
родитељ
комит
6e0144ea3c
6 измењених фајлова са 172 додато и 0 уклоњено
  1. +53
    -0
      app/Http/Controllers/Web/ReceiptIssuingOrder/ChangeHandlerController.php
  2. +26
    -0
      app/Http/Controllers/Web/ReceiptIssuingOrder/ChangeHandlerParam.php
  3. +59
    -0
      app/Http/Controllers/Web/ReceiptIssuingOrder/HandlersController.php
  4. +17
    -0
      app/Http/Controllers/Web/ReceiptIssuingOrder/HandlersParam.php
  5. +15
    -0
      app/Logic/ReceiptIssuingOrder/ReceiptIssuingOrderManager.php
  6. +2
    -0
      routes/api.php

+ 53
- 0
app/Http/Controllers/Web/ReceiptIssuingOrder/ChangeHandlerController.php Прегледај датотеку

@@ -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();
}
}

+ 26
- 0
app/Http/Controllers/Web/ReceiptIssuingOrder/ChangeHandlerParam.php Прегледај датотеку

@@ -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(),
);
}
}

+ 59
- 0
app/Http/Controllers/Web/ReceiptIssuingOrder/HandlersController.php Прегледај датотеку

@@ -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]);
}
}

+ 17
- 0
app/Http/Controllers/Web/ReceiptIssuingOrder/HandlersParam.php Прегледај датотеку

@@ -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 [];
}
}

+ 15
- 0
app/Logic/ReceiptIssuingOrder/ReceiptIssuingOrderManager.php Прегледај датотеку

@@ -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;
}
}

+ 2
- 0
routes/api.php Прегледај датотеку

@@ -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);



Loading…
Откажи
Сачувај