瀏覽代碼

契約月の条件を対応

master
sosuke.iwabuchi 2 年之前
父節點
當前提交
31ca58aeb7
共有 2 個文件被更改,包括 85 次插入14 次删除
  1. +9
    -8
      app/Http/Controllers/Web/SeasonTicketContract/TerminationOrderOptionsController.php
  2. +76
    -6
      app/Kintone/Models/Parking.php

+ 9
- 8
app/Http/Controllers/Web/SeasonTicketContract/TerminationOrderOptionsController.php 查看文件

@@ -3,6 +3,7 @@
namespace App\Http\Controllers\Web\SeasonTicketContract;

use App\Http\Controllers\Web\WebController;
use App\Kintone\Models\Parking;
use App\Kintone\Models\SeasonTicketContract;
use App\Util\DateUtil;
use Illuminate\Http\JsonResponse;
@@ -34,18 +35,18 @@ class TerminationOrderOptionsController extends WebController

$monthes = [];

// $seasonTicketContract = SeasonTicketContract::find($param->seasonTicketContractRecordNo);
$seasonTicketContract = SeasonTicketContract::find($param->seasonTicketContractRecordNo);

// $parking = $seasonTicketContract->getParking();
$parking = $seasonTicketContract->getParking();

// $today = DateUtil::now();
$now = DateUtil::now();
$from = $now->clone();
$to = $now->clone()->addMonths(3)->endOfMonth();

// $canEndOfMonth = $parking->
$list = $parking->getCanTerminateDateList($from, $to, $now);


foreach (range(0, 3) as $m) {
$target = DateUtil::now()->addMonth($m)->endOfMonth();
$monthes[] = $target->format('Y/m/d');
foreach ($list as $date) {
$monthes[] = $date->format('Y/m/d');
}

return $this->successResponse(['monthes' => $monthes]);


+ 76
- 6
app/Kintone/Models/Parking.php 查看文件

@@ -4,12 +4,14 @@ namespace App\Kintone\Models;

use App\Util\DateUtil;
use Illuminate\Support\Carbon;
use Illuminate\Support\Collection;

/**
* アプリ名 定期駐車場マスタ
* @property string parkingName
* @property array canTerminateDate
* @property array canTerminateRule
* @property string canTerminateCurrentMonth
* @property string untilCanTerminateCurrentMonth
*/
class Parking extends KintoneModel
{
@@ -17,20 +19,24 @@ class Parking extends KintoneModel

const FIELD_PARKING_NAME = "駐車場名";
const FIELD_CAN_TERMINATE_DATE = "解約可能日";
const FIELD_CAN_TERMINATE_RULE = "解約ルール";
const FIELD_CAN_TERMINATE_CURRENT_MONTH = "当月解約申請";
const FIELD_UNTIL_CAN_TERMINATE_CURRENT_MONTH = "当月解約いつまで可能";

const ELEMENT_CAN_TERMINATE_DATE_END_OF_MONTH = "末日";
const ELEMENT_CAN_TERMINATE_DATE_15 = "15日";

const ELEMENT_CAN_TERMINATE_RULE_UNTIL_10 = "10日まで申込は当月可";
const ELEMENT_CAN_TERMINATE_RULE_TODAY = "当日解約可";
const ELEMENT_CAN_TERMINATE_CURRENT_MONTH_OK = "可";
const ELEMENT_CAN_TERMINATE_CURRENT_MONTH_NG = "不可";

const ELEMENT_UNTIL_CAN_TERMINATE_CURRENT_MONTH_10 = "10日まで";
const ELEMENT_UNTIL_CAN_TERMINATE_CURRENT_MONTH_TODAY = "当日";

protected const FIELDS = [
...parent::FIELDS,
self::FIELD_PARKING_NAME => FieldType::SINGLE_LINE_TEXT,
self::FIELD_CAN_TERMINATE_DATE => FieldType::CHECK_BOX,
self::FIELD_CAN_TERMINATE_RULE => FieldType::CHECK_BOX,
self::FIELD_CAN_TERMINATE_CURRENT_MONTH => FieldType::RADIO_BUTTON,
self::FIELD_UNTIL_CAN_TERMINATE_CURRENT_MONTH => FieldType::RADIO_BUTTON,
];

protected const FIELD_NAMES = [
@@ -51,4 +57,68 @@ class Parking extends KintoneModel
{
return in_array(self::ELEMENT_CAN_TERMINATE_DATE_15, $this->canTerminateDate);
}

public function canTerminateCurrentMonth(): bool
{
return $this->canTerminateCurrentMonth == self::ELEMENT_CAN_TERMINATE_CURRENT_MONTH_OK;
}

public function isTerminateDay(Carbon $target, ?Carbon $now = null)
{
if ($now === null) {
$now = DateUtil::now();
}

$currentMonthJadge = false;
if ($now->format('Ym') === $target->format('Ym')) {
if (!$this->canTerminateCurrentMonth()) {
return false;
}
if ($this->untilCanTerminateCurrentMonth === self::ELEMENT_UNTIL_CAN_TERMINATE_CURRENT_MONTH_10) {
if ($target->day <= 10) {
$currentMonthJadge = true;
}
}
if ($this->untilCanTerminateCurrentMonth === self::ELEMENT_UNTIL_CAN_TERMINATE_CURRENT_MONTH_TODAY) {
// 当月ならいつでもOK
$currentMonthJadge = true;
}
} else {
$currentMonthJadge = true;
}

if ($currentMonthJadge === false) {
return false;
}

if ($target->day === 15 && $this->canTerminateDate15()) {
return true;
}
if ($target->isLastOfMonth() && $this->canTerminateDateEndOfMonth()) {
return true;
}
return false;
}

/**
* @param Carbon $from
* @param Carbon $to
* @param Carbon $now
* @return Collection<int, Carbon>
*/
public function getCanTerminateDateList(Carbon $from, Carbon $to, Carbon $now): Collection
{
$ret = collect();
$target = $from->clone();

while ($target->lessThanOrEqualTo($to)) {

if ($this->isTerminateDay($target, $now)) {
$ret->push($target->clone());
}

$target->addDay();
}
return $ret;
}
}

Loading…
取消
儲存