سلام و روز خوش
یک چیزی شبیه این میشه (باید تست کنین البته) :
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) ;
}