fix: update week calculation to use Saturday as the start of the week
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 2m12s

This commit is contained in:
masoodafar-web
2025-12-12 04:37:34 +03:30
parent af3a29ed27
commit aba534e07c
2 changed files with 11 additions and 6 deletions

View File

@@ -279,10 +279,13 @@ public class CalculateWeeklyBalancesCommandHandler : IRequestHandler<CalculateWe
var year = int.Parse(parts[0]); var year = int.Parse(parts[0]);
var week = int.Parse(parts[1].Replace("W", "")); var week = int.Parse(parts[1].Replace("W", ""));
// محاسبه اولین روز هفته (شنبه) // محاسبه اولین شنبه سال
var jan1 = new DateTime(year, 1, 1); var jan1 = new DateTime(year, 1, 1);
var daysOffset = DayOfWeek.Saturday - jan1.DayOfWeek; var jan1DayOfWeek = (int)jan1.DayOfWeek;
var firstSaturday = jan1.AddDays(daysOffset); // اگر 1 ژانویه شنبه باشد: offset=0، اگر یکشنبه: offset=6، دوشنبه: offset=5، ...
var daysToFirstSaturday = jan1DayOfWeek == 6 ? 0 : (6 - jan1DayOfWeek + 7) % 7;
var firstSaturday = jan1.AddDays(daysToFirstSaturday);
var weekStart = firstSaturday.AddDays((week - 1) * 7); var weekStart = firstSaturday.AddDays((week - 1) * 7);
var weekEnd = weekStart.AddDays(6).AddHours(23).AddMinutes(59).AddSeconds(59); var weekEnd = weekStart.AddDays(6).AddHours(23).AddMinutes(59).AddSeconds(59);

View File

@@ -122,10 +122,12 @@ public class GetAvailableWeeksQueryHandler : IRequestHandler<GetAvailableWeeksQu
private static (DateTime startDate, DateTime endDate) GetWeekRange(DateTime date) private static (DateTime startDate, DateTime endDate) GetWeekRange(DateTime date)
{ {
var dayOfWeek = (int)date.DayOfWeek; var dayOfWeek = (int)date.DayOfWeek;
var daysToMonday = dayOfWeek == 0 ? 6 : dayOfWeek - 1; // اگر یکشنبه باشد، 6 روز عقب برو // محاسبه تعداد روزهایی که باید عقب برویم تا به شنبه برسیم
// شنبه = 6, یکشنبه = 0, دوشنبه = 1, ..., جمعه = 5
var daysToSaturday = dayOfWeek == 6 ? 0 : (dayOfWeek + 1) % 7;
var startDate = date.Date.AddDays(-daysToMonday); var startDate = date.Date.AddDays(-daysToSaturday);
var endDate = startDate.AddDays(6); var endDate = startDate.AddDays(6).AddHours(23).AddMinutes(59).AddSeconds(59);
return (startDate, endDate); return (startDate, endDate);
} }