Edit task creation start time

This commit is contained in:
2026-07-25 11:34:23 +03:30
parent 49c9a45e82
commit 2c811c0d8c
3 changed files with 39 additions and 24 deletions
+12 -16
View File
@@ -153,17 +153,17 @@ class TaskController extends Controller
? "وضعیت: " . ($stateFa[$s1] ?? ($before['state'] ?? '-')) . " ← " . ($stateFa[$s2] ?? ($after['state'] ?? '-'))
: "وضعیت: " . ($stateFa[$s2] ?? ($after['state'] ?? '-'));
$d1 = $before['start_date'] ?? null;
$d2 = $after['start_date'] ?? null;
$d1 = \App\Support\JalaliHelper::format($before['start_date'] ?? null, 'Y/m/d', '-');
$d2 = \App\Support\JalaliHelper::format($after['start_date'] ?? null, 'Y/m/d', '-');
$lines[] = ($d1 !== $d2)
? "شروع: " . ($d1 ?: '-') . " ← " . ($d2 ?: '-')
: "شروع: " . ($d2 ?: '-');
? "شروع: {$d1} ← {$d2}"
: "شروع: {$d2}";
$t1 = $before['target_date'] ?? null;
$t2 = $after['target_date'] ?? null;
$t1 = \App\Support\JalaliHelper::format($before['target_date'] ?? null, 'Y/m/d', '-');
$t2 = \App\Support\JalaliHelper::format($after['target_date'] ?? null, 'Y/m/d', '-');
$lines[] = ($t1 !== $t2)
? "ددلاین: " . ($t1 ?: '-') . " ← " . ($t2 ?: '-')
: "ددلاین: " . ($t2 ?: '-');
? "ددلاین: {$t1} ← {$t2}"
: "ددلاین: {$t2}";
$desc1 = trim((string)($before['description'] ?? ''));
$desc2 = trim((string)($after['description'] ?? ''));
@@ -693,13 +693,8 @@ class TaskController extends Controller
}
$user = User::where('user_name', $_COOKIE['user_identity'])->first();
$startDate = $this->normalizeTaskDate($request->input('start_date'));
if (!$startDate) {
return back()->withInput()->with('message', [
'color' => 'red',
'text' => 'تاریخ شروع الزامی است. لطفاً از تقویم انتخاب کنید.',
]);
}
$startDate = $this->normalizeTaskDate($request->input('start_date'))
?: now()->format('Y-m-d');
$data = [
'title' => $request->input('title'),
@@ -718,11 +713,12 @@ class TaskController extends Controller
$message = "تسک جدیدی با عنوان {$data['title']} برای شما ایجاد شد.";
$deadline = \App\Support\JalaliHelper::format($data['target_date'] ?? null, 'Y/m/d', '');
$deadline = $deadline !== '' ? $deadline : null;
$startDateJalali = \App\Support\JalaliHelper::format($data['start_date'] ?? null, 'Y/m/d', '');
$app = App::find($data['app']);
$message_admin = "ایجاد تسک: «{$data['title']}»";
$message_admin .= !empty($app) ? "\nاپ {$app->name_fa}" : null;
$message_admin .= !empty($deadline) ? "\nددلاین {$deadline}" : null;
$message_admin .= !empty($data['start_date']) ? "\nتاریخ شروع {$data['start_date']}" : null;
$message_admin .= $startDateJalali !== '' ? "\nتاریخ شروع {$startDateJalali}" : null;
$message_admin .= !empty($request->input('state_fa')) ? "\nوضعیت: {$request->input('state_fa')}" : null;
$message_admin .= !empty($data['description']) ? "\nبا توضیحات:\n" . $data['description'] : null;
$message_admin .= !empty($data['assignees']) ? "\nتوسط " . $user->name . " ساخته شد و به" : null;
+4 -3
View File
@@ -28,8 +28,9 @@ class LatePenaltyService
];
}
$entered = Carbon::parse($enteredAt);
$threshold = $entered->copy()->setTimeFromTimeString(self::WORK_START);
// فقط تا دقیقه؛ ثانیه نادیده گرفته می‌شود
$entered = Carbon::parse($enteredAt)->startOfMinute();
$threshold = $entered->copy()->setTimeFromTimeString(self::WORK_START)->startOfMinute();
if ($entered->lte($threshold)) {
return [
@@ -40,7 +41,7 @@ class LatePenaltyService
];
}
$lateMinutes = (int) ceil($threshold->diffInSeconds($entered) / 60);
$lateMinutes = (int) $threshold->diffInMinutes($entered);
// تأخیر داخل بازه ارفاق روزانه (۸:۳۰ تا ۸:۴۵) — مبنای جریمه هفتگی
$graceLateMinutes = min($lateMinutes, self::DAILY_GRACE_MINUTES);
$dailyFineMinutes = max(0, $lateMinutes - self::DAILY_GRACE_MINUTES);
+23 -5
View File
@@ -52,10 +52,19 @@ if (isset($task)) {
<div class="ui-form-field">
<label for="start_date">تاریخ شروع <span class="text-red-500">*</span></label>
@php
$defaultStartGregorian = !empty($task?->start_date)
? \App\Support\JalaliHelper::toGregorianDate($task->start_date)
: now()->format('Y-m-d');
$defaultStartJalali = !empty($task?->start_date)
? \App\Support\JalaliHelper::format($task->start_date, 'Y/m/d', '')
: \App\Support\JalaliHelper::format(now(), 'Y/m/d', '');
@endphp
<input type="text" id="start_date" name="start_date_display" class="ui-input"
value="{{$task->start_date ?? null}}"
value="{{ old('start_date_display', $defaultStartJalali) }}"
placeholder="تاریخ شروع" autocomplete="off" readonly required>
<input type="hidden" name="start_date" id="start_date_gregorian">
<input type="hidden" name="start_date" id="start_date_gregorian"
value="{{ old('start_date', $defaultStartGregorian) }}">
</div>
<div class="ui-form-field">
@@ -248,6 +257,13 @@ if (isset($task)) {
@if(!empty($task?->start_date))
$('#start_date_gregorian').val(@json(\App\Support\JalaliHelper::toGregorianDate($task->start_date)));
$('#start_date').val(@json(\App\Support\JalaliHelper::format($task->start_date, 'Y/m/d', '')));
@elseif(!$('#start_date_gregorian').val())
// پیش‌فرض: امروز
const todayUnix = new persianDate().valueOf();
const todayJalali = new persianDate(todayUnix).format('YYYY/MM/DD');
const todayGregorian = new persianDate(todayUnix).toCalendar('gregorian').toLocale('en').format('YYYY-MM-DD');
$('#start_date').val(todayJalali);
$('#start_date_gregorian').val(todayGregorian);
@endif
@if(!empty($task?->target_date))
$('#target_date_gregorian').val(@json(\App\Support\JalaliHelper::toGregorianDate($task->target_date)));
@@ -258,9 +274,11 @@ if (isset($task)) {
syncGregorianFromDisplay('#start_date', '#start_date_gregorian');
syncGregorianFromDisplay('#target_date', '#target_date_gregorian');
if (!$('#start_date_gregorian').val()) {
e.preventDefault();
alert('لطفاً تاریخ شروع را از تقویم انتخاب کنید.');
return false;
const todayUnix = new persianDate().valueOf();
$('#start_date').val(new persianDate(todayUnix).format('YYYY/MM/DD'));
$('#start_date_gregorian').val(
new persianDate(todayUnix).toCalendar('gregorian').toLocale('en').format('YYYY-MM-DD')
);
}
});