generated from liutk/owl-admin-base
main
parent
655c2fa1d8
commit
13f12b9dae
|
|
@ -64,25 +64,24 @@ class OvertimeApplyService extends BaseService
|
|||
if (! isset($data['store_id']) && isset($data['employee_id'])) {
|
||||
$data['store_id'] = Employee::where('id', $data['employee_id'])->value('store_id');
|
||||
}
|
||||
if (isset($data['datetime_range'])) {
|
||||
$time = explode(',', $data['datetime_range']);
|
||||
$start = Carbon::createFromTimestamp(data_get($time, 0))->startOfMinute();
|
||||
$end = Carbon::createFromTimestamp(data_get($time, 1))->startOfMinute();
|
||||
$data['start_at'] = $start;
|
||||
$data['end_at'] = $end;
|
||||
$data['date'] = $start->format('Y-m-d');
|
||||
|
||||
if (isset($data['start_at']) && isset($data['duration'])) {
|
||||
$data['end_at'] = Carbon::createFromFormat('Y-m-d H:i', $data['start_at'])
|
||||
->addMinutes($data['duration'] * 60)
|
||||
->rawFormat('Y-m-d H:i');
|
||||
} elseif (isset($data['datetime_range'])) {
|
||||
$timestamps = explode(',', $data['datetime_range']);
|
||||
$start = Carbon::createFromTimestamp($timestamps[0]);
|
||||
$end = Carbon::createFromTimestamp($timestamps[1]);
|
||||
$data['start_at'] = $start->toDateTimeString();
|
||||
$data['end_at'] = $end->toDateTimeString();
|
||||
}
|
||||
|
||||
if (isset($data['start_at']) && isset($data['end_at'])) {
|
||||
$start = $data['start_at'];
|
||||
if (! $start instanceof Carbon) {
|
||||
$start = Carbon::parse($start)->startOfMinute();
|
||||
}
|
||||
|
||||
$end = $data['end_at'];
|
||||
if (! $end instanceof Carbon) {
|
||||
$end = Carbon::parse($end)->startOfMinute();
|
||||
}
|
||||
$start = Carbon::createFromFormat('Y-m-d H:i', $data['start_at']);
|
||||
$end = Carbon::createFromFormat('Y-m-d H:i', $data['end_at']);
|
||||
|
||||
$data['date'] = $start->toDateString();
|
||||
$data['hours'] = $start->diffInHours($end);
|
||||
}
|
||||
|
||||
|
|
@ -91,12 +90,11 @@ class OvertimeApplyService extends BaseService
|
|||
|
||||
public function validate($data, $model = null)
|
||||
{
|
||||
// todo 验证申请时间是否重复
|
||||
$createRules = [
|
||||
'employee_id' => ['required'],
|
||||
'date' => ['required', 'date'],
|
||||
'start_at' => ['required', 'date'],
|
||||
'end_at' => ['required', 'date'],
|
||||
'date' => ['required', 'date_format:Y-m-d'],
|
||||
'start_at' => ['required', 'date_format:Y-m-d H:i'],
|
||||
'end_at' => ['required', 'date_format:Y-m-d H:i'],
|
||||
];
|
||||
$updateRules = [];
|
||||
$validator = Validator::make($data, $model ? $updateRules : $createRules, []);
|
||||
|
|
|
|||
|
|
@ -36,6 +36,21 @@ class OvertimeController extends Controller
|
|||
|
||||
public function store(Request $request, OvertimeApplyService $service)
|
||||
{
|
||||
$request->validate(
|
||||
rules: [
|
||||
// 'date' => ['bail', 'required', 'date_format:Y-m-d'],
|
||||
'start_at' => ['bail', 'required', 'date_format:Y-m-d H:i'],
|
||||
'duration' => ['bail', 'required', 'int', 'min:1'],
|
||||
'reason' => ['bail', 'nullable', 'string', 'max:255'],
|
||||
],
|
||||
attributes: [
|
||||
'date' => '日期',
|
||||
'start_at' => '开始时间',
|
||||
'duration' => '加班时长',
|
||||
'reason' => '加班事由',
|
||||
],
|
||||
);
|
||||
|
||||
$user = $this->guard()->user();
|
||||
$data = $request->all();
|
||||
$data['employee_id'] = $user->id;
|
||||
|
|
@ -43,7 +58,7 @@ class OvertimeController extends Controller
|
|||
try {
|
||||
DB::beginTransaction();
|
||||
if (!$service->store($data)) {
|
||||
throw new RuntimeException($result);
|
||||
throw new RuntimeException($service->getError());
|
||||
}
|
||||
$model = $service->getCurrentModel();
|
||||
$workflow = WorkFlowService::make();
|
||||
|
|
@ -55,12 +70,27 @@ class OvertimeController extends Controller
|
|||
return response()->noContent();
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
throw new RuntimeException($e->getMessage());
|
||||
throw tap($e, fn ($e) => report($e));
|
||||
}
|
||||
}
|
||||
|
||||
public function update($id, Request $request, OvertimeApplyService $service)
|
||||
{
|
||||
$request->validate(
|
||||
rules: [
|
||||
// 'date' => ['bail', 'required', 'date_format:Y-m-d'],
|
||||
'start_at' => ['bail', 'required', 'date_format:Y-m-d H:i'],
|
||||
'duration' => ['bail', 'required', 'int', 'min:1'],
|
||||
'reason' => ['bail', 'nullable', 'string', 'max:255'],
|
||||
],
|
||||
attributes: [
|
||||
'date' => '日期',
|
||||
'start_at' => '开始时间',
|
||||
'duration' => '加班时长',
|
||||
'reason' => '加班事由',
|
||||
],
|
||||
);
|
||||
|
||||
$user = $this->guard()->user();
|
||||
$model = OvertimeApply::where('employee_id', $user->id)->findOrFail($id);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue