diff --git a/app/Http/Controllers/Admin/EventCalendarController.php b/app/Http/Controllers/Admin/EventCalendarController.php index 96460f7..6a1fb64 100644 --- a/app/Http/Controllers/Admin/EventCalendarController.php +++ b/app/Http/Controllers/Admin/EventCalendarController.php @@ -54,7 +54,7 @@ class EventCalendarController extends BaseController if ($request->has('status')) { $status = $request->input('status'); - if ($status) { + if (is_numeric($status)) { $query->where('status', $status); } } @@ -224,6 +224,14 @@ class EventCalendarController extends BaseController if ($validator->fails()) { throw new ValidationException($validator); } + + if (isset($data['start_time']) && isset($data['end_time'])) { + $start_times = strtotime($data['start_time']); + $end_times = strtotime($data['end_time']); + if ($start_times > $end_times) { + throw new CustomException(__('validation.event_calendar.start_end')); + } + } } diff --git a/app/Models/ParkingPattern.php b/app/Models/ParkingPattern.php index 1e5c231..b8825d8 100644 --- a/app/Models/ParkingPattern.php +++ b/app/Models/ParkingPattern.php @@ -36,9 +36,10 @@ class ParkingPattern extends Model public static function getData() { - return self::query()->orderBy('created_at', 'desc')->select( - ['id', 'name as model_name'] - )->get()->toArray(); + return self::query()->where('status', 1)->orderBy('created_at', 'desc') + ->select( + ['id', 'name as model_name'] + )->get()->toArray(); } public static function getId($name) diff --git a/app/Services/EventCalendarService.php b/app/Services/EventCalendarService.php index 85966b1..06461db 100644 --- a/app/Services/EventCalendarService.php +++ b/app/Services/EventCalendarService.php @@ -54,10 +54,19 @@ class EventCalendarService extends BaseService try { DB::beginTransaction(); - if (EventCalendar::query()->whereIn('status', [0, 1])->where( - 'pattern_id', - $data['pattern_id'] - ) + $start_time = get_datetime( + 'datetime', + strtotime($data['start_time']) + ); + $end_time = get_datetime('datetime', strtotime($data['end_time'])); + + // 活动开始时间不能在已有活动时间内 + $where = [ + ['pattern_id', '=', $data['pattern_id']], + ['start_time', '>=', $start_time], + ['end_time', '<=', $start_time] + ]; + if (EventCalendar::query()->whereIn('status', [0, 1])->where($where) ->exists() ) { throw new Exception( @@ -65,12 +74,6 @@ class EventCalendarService extends BaseService ); } - $start_time = get_datetime( - 'datetime', - strtotime($data['start_time']) - ); - $end_time = get_datetime('datetime', strtotime($data['end_time'])); - $model = EventCalendar::query()->create([ 'pattern_id' => $data['pattern_id'], 'start_time' => $start_time, @@ -209,6 +212,10 @@ class EventCalendarService extends BaseService try { DB::beginTransaction(); $pattern_id = $data['pattern_id']; + $exists = ParkingPatternSpace::getParkingSpaceIds($pattern_id); + if (!$exists) { + throw new Exception('service.event_calendar.not_space'); + } $end_time = $data['end_time']; // 将其他模式未结束,在运行中的全部结束 diff --git a/resources/lang/en/service.php b/resources/lang/en/service.php index 4c9b2b2..5af0b0c 100644 --- a/resources/lang/en/service.php +++ b/resources/lang/en/service.php @@ -79,7 +79,8 @@ return [ 'disabled' => 'disabled', 'pattern_exists' => 'The current activity mode already exists', 'error_status' => 'The current activity status cannot be deleted', - 'error_end' => 'The current activity status cannot be ended' + 'error_end' => 'The current activity status cannot be ended', + 'not_space' => 'The parking space configuration is incomplete in this mode' ], 'notice' => [ 'hint' => 'Prompt message', diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php index 135a369..fa97910 100644 --- a/resources/lang/en/validation.php +++ b/resources/lang/en/validation.php @@ -110,7 +110,8 @@ return [ 'event_calendar' => [ 'p_empty' => 'Activity mode cannot be empty', 's_empty' => 'The start time cannot be empty', - 'e_empty' => 'The end time cannot be empty' + 'e_empty' => 'The end time cannot be empty', + 'start_end' => 'The start time cannot be greater than the end time' ], 'notice' => [ 'c_empty' => 'Update data cannot be empty', diff --git a/resources/lang/zh-CN/service.php b/resources/lang/zh-CN/service.php index 11cf320..5b93976 100644 --- a/resources/lang/zh-CN/service.php +++ b/resources/lang/zh-CN/service.php @@ -79,7 +79,8 @@ return [ 'disabled' => '已停用', 'pattern_exists' => '当前活动模式已存在', 'error_status' => '当前活动状态不可删除', - 'error_end' => '当前活动状态不可结束' + 'error_end' => '当前活动状态不可结束', + 'not_space' => '此模式下车位配置不完整' ], 'notice' => [ 'hint' => '提示信息', diff --git a/resources/lang/zh-CN/validation.php b/resources/lang/zh-CN/validation.php index e591551..82b9976 100644 --- a/resources/lang/zh-CN/validation.php +++ b/resources/lang/zh-CN/validation.php @@ -110,7 +110,8 @@ return [ 'event_calendar' => [ 'p_empty' => '活动模式不能为空', 's_empty' => '开始时间不能为空', - 'e_empty' => '结束时间不能为空' + 'e_empty' => '结束时间不能为空', + 'start_end' => '开始时间不能大于结束时间' ], 'notice' => [ 'c_empty' => '更新数据不能为空', diff --git a/resources/lang/zh-TW/service.php b/resources/lang/zh-TW/service.php index b90adac..0e796bc 100644 --- a/resources/lang/zh-TW/service.php +++ b/resources/lang/zh-TW/service.php @@ -79,7 +79,8 @@ return [ 'disabled' => '已停用', 'pattern_exists' => '當前活動模式已存在', 'error_status' => '當前活動狀態不可删除', - 'error_end' => '當前活動狀態不可結束' + 'error_end' => '當前活動狀態不可結束', + 'not_space' => '此模式下車位配寘不完整' ], 'notice' => [ 'hint' => '提示資訊', diff --git a/resources/lang/zh-TW/validation.php b/resources/lang/zh-TW/validation.php index ef6c0a8..6060541 100644 --- a/resources/lang/zh-TW/validation.php +++ b/resources/lang/zh-TW/validation.php @@ -110,7 +110,8 @@ return [ 'event_calendar' => [ 'p_empty' => '活動模式不能為空', 's_empty' => '開始時間不能為空', - 'e_empty' => '結束時間不能為空' + 'e_empty' => '結束時間不能為空', + 'start_end' => '開始時間不能大於結束時間' ], 'notice' => [ 'c_empty' => '更新數據不能為空',