PDA

View Full Version : سوال: راهنمایی در خصوص ثبت رکورد مرخصی بدون در نظر گرفتن روزهای تعطیل



mhmoein
دوشنبه 27 شهریور 1402, 14:24 عصر
سلام و عرض ادب خدمت دوستان محترم
بنده یک برنامه مرخصی می خواهم بنویسم ولی به مشکلی برخوردم

فرض کنید کاربر ما میخواهد یک مرخصی از تاریخ 1402/02/16 لغایت 1402/02/31 ثبت نماید.
روزهای 22 و 29 این ماه جمعه است و روز 26 ام نیز تعطیل رسمی.
سپس بعد از این که کاربر مرخصی را ثبت نمود چهار رکورد مرخصی بدین صورت ثبت شود.
1 - یک رکورد مرخصی از تاریخ 1402/02/16 تا 1402/02/21 به مدت 6 روز.
2- یک رکورد مرخصی از تاریخ 1402/02/23 تا 1402/02/25 به مدت 3 روز.
3- یک رکورد مرخصی از تاریخ 1402/02/27 تا 1402/02/28 به مدت 2 روز.
4- رکورد مرخصی از تاریخ 1402/02/30 تا 1402/02/31 به مدت 2 روز.

یعنی میخواهم کاربر یکبار در فرم ثبت مرخصی انجام دهد ولی در دیتابیس این 4 رکورد ثبت شود.
در ضمن جدول روزهای هفته و ایام تعطیل را هم داریم.
ممنون میشوم راهنمایی بفرمایید.

mazoolagh
چهارشنبه 29 شهریور 1402, 09:12 صبح
سلام و روز خوش
یک چیزی شبیه این میشه (باید تست کنین البته) :
class leave {
datetime date_from
datetime date_to
}

datetime leave_from = ... ;
datetime leave_to = ... ;
datetime[] except_days =
select holiday from holidays_table where holiday>leave_from and holiday<leave_to order by holiday
union
select friday from fridays_table where friday>leave_from and friday<leave_to order by friday
int n = except_days.length ;
if (except_days.length)=0
{
leaves.add(leave_from , leave_to) ;
}
else
{
leaves.add(leave_from , except_days[0]-1) ;
for (i=1 to n-2) {
leaves.add(except_days[i]+1 , except_days[i+1]-1) ;
}
leaves.add(except_days[n-1]+1 , leave_to) ;
}

mhmoein
چهارشنبه 29 شهریور 1402, 13:17 عصر
سپاس دوست عزیز