Отключить пользовательский ввод между датами, имеющими следующие условия - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть три типа пользователей Линия Сотрудник, менеджер, супер админ.Менеджер назначает очки линейному сотруднику, который находится под ним.Это два типа баллов: один - ежедневно, а другой - ежемесячно.Ежедневно будет отключено в течение 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-й будет доступен для редактирования и так далее.Все эти опции будут доступны с учетом действия только на текущую дату.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...