У меня есть три типа пользователей Линия Сотрудник, менеджер, супер админ.Менеджер назначает очки линейному сотруднику, который находится под ним.Это два типа баллов: один - ежедневно, а другой - ежемесячно.Ежедневно будет отключено в течение 48 рабочих часов, а ежемесячно будет 8 числа следующего месяца.Проблема с ежедневными баллами.
Ниже приведен пример использования: 1.) Если ежедневной точкой является пятница, она будет включена до вторника в среду, она будет отключена.2.) Но если Менеджер отсутствует в понедельник и вторник, он должен быть включен в среду.3.) Если Менеджер отсутствует целую неделю, то он должен быть включен на следующей неделе до вторника и т. Д.
Я как-то сделал для субботы, воскресенья и праздников, но если Менеджер отсутствует, я не могу получить праварезультат.
1.) Я взял один массив, который будет иметь все субботы, воскресенья и праздничные дни в течение месяца. Я проверяю заданную дату + 1 и текущая дата-1 подпадает под этот массив, а затем разрешить его, еслине отключайте его.
$givenDate = $year."-".$month."-".$day;
$givenDateStr= strtotime($year."-".$month."-".$day);
$givenDate = date('Y-m-d',strtotime($givenDate));
$curDate = strtotime(date('Y-m-d'));
//day difference
$date1 = date_create($givenDate);
$date2 = date_create(date('Y-m-d'));
$date_diff_str = date_diff($date1,$date2);
$day_diff = $date_diff_str->format("%a");
if($userID != $loggedInUser->id){
$is_man_absent = EmployeeKPI::where('user_id',$loggedInUser->id)- >where('status','A')->whereMonth('curr_date',$month)->selectRaw('Day(curr_date) as absent_day')->get()->pluck('absent_day')->toArray();
}
//Absent Date Array
$is_man_absent = isset($is_man_absent) ? $is_man_absent : [];
$excludeDate = $this->getHolidayDates($year,$month);
if($day_diff < 9 && in_array(($day+1), $excludeDate) && in_array((date('d')-1), $excludeDate))
$day_diff = 0;
if(in_array(($day+1), $is_man_absent) && in_array(($day), $is_man_absent) || in_array(($day+1), $excludeDate) &&
in_array((date('d')-1), $excludeDate))
$day_diff = 0;
Учитывая этот февраль-2019, если Мангер отсутствует с 11 по 15, 8 февраля можно будет давать очки, но если он присутствует 12-го, он может редактировать 8-е и 11-е 12-го или, еслион присутствует 13-го и отсутствует до 12-го, поэтому с 8-го по 12-й будет доступен для редактирования и так далее.Все эти опции будут доступны с учетом действия только на текущую дату.