fix: update week calculation to start from Saturday
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 2m2s

This commit is contained in:
masoodafar-web
2025-12-12 07:07:28 +03:30
parent 3c7ac68eeb
commit 8ee3fe6f7b

View File

@@ -110,13 +110,34 @@ public class GetAvailableWeeksQueryHandler : IRequestHandler<GetAvailableWeeksQu
private static string GetWeekNumber(DateTime date)
{
var calendar = CultureInfo.InvariantCulture.Calendar;
var weekOfYear = calendar.GetWeekOfYear(
date,
CalendarWeekRule.FirstDay,
DayOfWeek.Saturday);
var year = date.Year;
return $"{date.Year}-W{weekOfYear:D2}";
// پیدا کردن اولین شنبه سال
var jan1 = new DateTime(year, 1, 1);
var jan1DayOfWeek = (int)jan1.DayOfWeek; // 0=Sunday, 1=Monday, ..., 6=Saturday
// محاسبه تعداد روزهایی که باید اضافه کنیم تا به اولین شنبه برسیم
var daysToFirstSaturday = jan1DayOfWeek == 6 ? 0 : (6 - jan1DayOfWeek + 7) % 7;
var firstSaturday = jan1.AddDays(daysToFirstSaturday);
// پیدا کردن شنبه شروع هفته جاری
var currentDayOfWeek = (int)date.DayOfWeek; // 0=Sun, 1=Mon, ..., 6=Sat
var daysToCurrentSaturday = currentDayOfWeek == 6 ? 0 : (currentDayOfWeek + 1) % 7;
var weekStartSaturday = date.Date.AddDays(-daysToCurrentSaturday);
// محاسبه شماره هفته
int weekNum;
if (weekStartSaturday < firstSaturday)
{
weekNum = 1; // هفته اول سال
}
else
{
var daysSinceFirstSaturday = (weekStartSaturday - firstSaturday).Days;
weekNum = (daysSinceFirstSaturday / 7) + 1;
}
return $"{year}-W{weekNum:D2}";
}
private static (DateTime startDate, DateTime endDate) GetWeekRange(DateTime date)