'; echo var_dump(Time::getPeriodWithDays('2020-12-31','2021-01-17')); echo var_dump(Time::getPeriodWithDays('2021-01-05','2021-01-17')); echo var_dump(Time::getPeriodWithDays('2021-01-05','2022-05-17')); echo ''; */ } public static function getSummary() { $res = []; if(Emp::$IS_AUTH) { $res = Time::getMySummary($_POST['emp']); } echo je($res); } public static function addFromCalendar() { $res =[]; if(Emp::$IS_AUTH){ $emp_id = intval($_POST['emp']) ?: Emp::$AUTH_ID; $time = cfloatval($_POST['time']); $date = $_POST['date']; $project_id = intval($_POST['project']); $x = ($time-intval($time))*100; if($x<=25) $x = 0; else if ($x>=75) $x=100; else $x=50; $time = intval($time)+$x/100; if($time<0) $time = 0; if($time>24) $time = 24; // Считаем сколько чел за этот день вообще от работал, и сколько рабочих часов в этом дне $total_work = 0; $total_over = 0; $r = Time::select([ \Query::SELECT => [ 'SUM('.Time::$DURATION.') as cc', Time::$IS_OVER, ], \Query::WHERE => \Where::_and([ \Where::_operator(Time::$EMP,'=',$emp_id), \Where::_operator(Time::$DATE,'=',$_POST['date']), ]), \Query::GROUP_BY => [Time::$IS_OVER], ]); while ($l = \DB::fetch($r)){ if(!$l[Time::$IS_OVER]) $total_work += floatval($l['cc']); if($l[Time::$IS_OVER]) $total_over += floatval($l['cc']); } $maxWorkHours = Day::getWorkHoursByDate($date); $maxOverHours = 24 - $maxWorkHours; //$info = Time::getEmpTime([\Where::_operator(Time::$DATE,'=',$date)],$emp_id,$project_id); $info = Time::getEmpTime($date,null,$emp_id,$project_id); $res['info'] = $info; $total_work -= $info['hours']; $total_over -= $info['over']; $newWorkHours = $total_work+$time; $newOverHours = $total_over + $time; $leftWorkHours = $maxWorkHours - $total_work; $leftOverHours = $maxOverHours - $total_over; $isOver = intval($_POST['over']); if($isOver){ if($newOverHours > $maxOverHours){ $time = $leftOverHours; } } else { if($newWorkHours > $maxWorkHours){ $time = $leftWorkHours; } } $d = [ Time::$PROJECT => intval($_POST['project']), Time::$EMP => $emp_id, Time::$DATE => $_POST['date'], Time::$IS_OVER => intval($_POST['over']), Time::$DURATION => $time, ]; $res['r'] = Time::insert($d); //$res = $d; $res['$newWorkHours'] = $newWorkHours; $res['$leftWorkHours'] = $leftWorkHours; $res['$maxWorkHours'] = $maxWorkHours; $res['$newOverHours'] = $newOverHours; $res['$leftOverHours'] = $leftOverHours; $res['$maxOverHours'] = $maxOverHours; } echo je($res); } public static function setAbsence() { $res =[]; if(Emp::$IS_AUTH){ $project = intval($_POST['project']); $emp_id = intval($_POST['emp']) ?: Emp::$AUTH_ID; $type = intval($_POST['type']); foreach ($_POST['dates'] as $date){ Absence::uadd([ Absence::$DATE => $date, Absence::$EMP => $emp_id, Absence::$ABSENCE => $type, ]); $res[] = Cache::removeRows($date,$emp_id); } } echo je($res); } public static function getTimeTable($post) { $res = []; //Emp::$AUTH_ID = 1; //Emp::$IS_AUTH = true; //$_POST['type']=2; if(Emp::$IS_AUTH){ $res = Time::getTimeTable( intval($_POST['project']), intval($_POST['emp'])?:Emp::$AUTH_ID, ); } echo je($res); } public static function getStat($post) { ini_set('memory_limit', '512M'); set_time_limit(0); $res = []; //Emp::$AUTH_ID = 3; //Emp::$IS_AUTH = true; //$_POST['type']=12; //$_POST['range'][0]='2025-05-19'; //$_POST['range'][1]='2025-06-30'; if(Emp::$IS_AUTH){ $res = Time::getStat($_POST); } $res['text'] = [ Merakomis::$_ANALYSIS_MY_1 => Merakomis::$ANALYSIS_MY_1, Merakomis::$_ANALYSIS_MY_2 => Merakomis::$ANALYSIS_MY_2, Merakomis::$_ANALYSIS_YEAR_1 => Merakomis::$ANALYSIS_YEAR_1, Merakomis::$_ANALYSIS_YEAR_2 => Merakomis::$ANALYSIS_YEAR_2, Merakomis::$_ANALYSIS_OFFICE_1 => Merakomis::$ANALYSIS_OFFICE_1, Merakomis::$_ANALYSIS_OFFICE_2 => Merakomis::$ANALYSIS_OFFICE_2, Merakomis::$_ANALYSIS_OFFICE_3 => Merakomis::$ANALYSIS_OFFICE_3, Merakomis::$_ANALYSIS_DEPARTMENT_1 => Merakomis::$ANALYSIS_DEPARTMENT_1, Merakomis::$_ANALYSIS_DEPARTMENT_2 => Merakomis::$ANALYSIS_DEPARTMENT_2, Merakomis::$_ANALYSIS_DEPARTMENT_3 => Merakomis::$ANALYSIS_DEPARTMENT_3, Merakomis::$_ANALYSIS_COMPANY_1 => Merakomis::$ANALYSIS_COMPANY_1, Merakomis::$_ANALYSIS_COMPANY_2 => Merakomis::$ANALYSIS_COMPANY_2, Merakomis::$_ANALYSIS_COMPANY_3 => Merakomis::$ANALYSIS_COMPANY_3, Merakomis::$_ANALYSIS_COMPANY_4 => Merakomis::$ANALYSIS_COMPANY_4, Merakomis::$_ANALYSIS_COMPANY_5 => Merakomis::$ANALYSIS_COMPANY_5, Merakomis::$_ANALYSIS_COMPANY_6 => Merakomis::$ANALYSIS_COMPANY_6, Merakomis::$_STAFF_SUBTITLE_1 => Merakomis::$STAFF_SUBTITLE_1, Merakomis::$_STAFF_SUBTITLE_2 => Merakomis::$STAFF_SUBTITLE_2, Merakomis::$_STAFF_SUBTITLE_3 => Merakomis::$STAFF_SUBTITLE_3, Merakomis::$_STAFF_SUBTITLE_4 => Merakomis::$STAFF_SUBTITLE_4, Merakomis::$_STAFF_SUBTITLE_5 => Merakomis::$STAFF_SUBTITLE_5, Merakomis::$_STAFF_TEXT_1 => Merakomis::$STAFF_TEXT_1, Merakomis::$_STAFF_TEXT_2 => Merakomis::$STAFF_TEXT_2, Merakomis::$_STAFF_TEXT_3 => Merakomis::$STAFF_TEXT_3, Merakomis::$_STAFF_TEXT_4 => Merakomis::$STAFF_TEXT_4, Merakomis::$_STAFF_TEXT_5 => Merakomis::$STAFF_TEXT_5, Merakomis::$_ANALYSIS_TEAM_1 => Merakomis::$ANALYSIS_TEAM_1, Merakomis::$_ANALYSIS_TEAM_2 => Merakomis::$ANALYSIS_TEAM_2, Merakomis::$_ANALYSIS_TEAM_3 => Merakomis::$ANALYSIS_TEAM_3, Merakomis::$_ANALYSIS_TEAM_4 => Merakomis::$ANALYSIS_TEAM_4, Merakomis::$_ANALYSIS_TEAM_5 => Merakomis::$ANALYSIS_TEAM_5, Merakomis::$_ANALYSIS_TEAM_6 => Merakomis::$ANALYSIS_TEAM_6, Merakomis::$_ANALYSIS_TEAM_7 => Merakomis::$ANALYSIS_TEAM_7, Merakomis::$_ANALYSIS_TEAM_8 => Merakomis::$ANALYSIS_TEAM_8, Merakomis::$_ANALYSIS_TEAM_9 => Merakomis::$ANALYSIS_TEAM_9, Merakomis::$_ANALYSIS_TEAM_10 => Merakomis::$ANALYSIS_TEAM_10, Merakomis::$_ANALYSIS_TEAM_11 => Merakomis::$ANALYSIS_TEAM_11, Merakomis::$_ANALYSIS_TEAM_12 => Merakomis::$ANALYSIS_TEAM_12, Merakomis::$_ANALYSIS_TEAM_1_SUBTITLE => Merakomis::$ANALYSIS_TEAM_1_SUBTITLE, Merakomis::$_ANALYSIS_TEAM_2_SUBTITLE => Merakomis::$ANALYSIS_TEAM_2_SUBTITLE, Merakomis::$_ANALYSIS_TEAM_3_SUBTITLE => Merakomis::$ANALYSIS_TEAM_3_SUBTITLE, Merakomis::$_ANALYSIS_TEAM_4_SUBTITLE => Merakomis::$ANALYSIS_TEAM_4_SUBTITLE, Merakomis::$_ANALYSIS_TEAM_5_SUBTITLE => Merakomis::$ANALYSIS_TEAM_5_SUBTITLE, Merakomis::$_ANALYSIS_TEAM_6_SUBTITLE => Merakomis::$ANALYSIS_TEAM_6_SUBTITLE, Merakomis::$_ANALYSIS_TEAM_7_SUBTITLE => Merakomis::$ANALYSIS_TEAM_7_SUBTITLE, Merakomis::$_ANALYSIS_TEAM_8_SUBTITLE => Merakomis::$ANALYSIS_TEAM_8_SUBTITLE, Merakomis::$_ANALYSIS_TEAM_9_SUBTITLE => Merakomis::$ANALYSIS_TEAM_9_SUBTITLE, Merakomis::$_ANALYSIS_TEAM_10_SUBTITLE => Merakomis::$ANALYSIS_TEAM_10_SUBTITLE, Merakomis::$_ANALYSIS_YEAR_1_SUBTITLE => Merakomis::$ANALYSIS_YEAR_1_SUBTITLE, Merakomis::$_ANALYSIS_YEAR_2_SUBTITLE => Merakomis::$ANALYSIS_YEAR_2_SUBTITLE, Merakomis::$_ANALYSIS_COMPANY_1_SUBTITLE => Merakomis::$ANALYSIS_COMPANY_1_SUBTITLE, Merakomis::$_ANALYSIS_COMPANY_2_SUBTITLE => Merakomis::$ANALYSIS_COMPANY_2_SUBTITLE, Merakomis::$_ANALYSIS_COMPANY_3_SUBTITLE => Merakomis::$ANALYSIS_COMPANY_3_SUBTITLE, Merakomis::$_ANALYSIS_COMPANY_4_SUBTITLE => Merakomis::$ANALYSIS_COMPANY_4_SUBTITLE, Merakomis::$_ANALYSIS_COMPANY_4_SUBTITLE_2 => Merakomis::$ANALYSIS_COMPANY_4_SUBTITLE_2, Merakomis::$_ANALYSIS_COMPANY_5_SUBTITLE => Merakomis::$ANALYSIS_COMPANY_5_SUBTITLE, Merakomis::$_ANALYSIS_COMPANY_6_SUBTITLE => Merakomis::$ANALYSIS_COMPANY_6_SUBTITLE, Merakomis::$_FOT_TITLE => Merakomis::$FOT_TITLE, Merakomis::$_FOT_TEXT => Merakomis::$FOT_TEXT, Merakomis::$_FOT_TITLE_2 => Merakomis::$FOT_TITLE_2, Merakomis::$_FOT_TEXT_2 => Merakomis::$FOT_TEXT_2, Merakomis::$_ALL_PROJECTS_TITLE => Merakomis::$ALL_PROJECTS_TITLE, Merakomis::$_ALL_PROJECTS_TEXT => Merakomis::$ALL_PROJECTS_TEXT, ]; echo je($res); } public static function getTableData($post = []) { $and = []; if($id = intval($post['data']['params']['id'])){ $and[] = \Where::_operator(Time::$PROJECT,'=',$id); } if($emp = intval($post['data']['params']['emp'])){ $and[] = \Where::_operator(Time::$EMP,'=',$emp); } else { $and[] = \Where::_operator(Time::$EMP,'=',Emp::$AUTH_ID); } if($and){ $post['options'][\Query::WHERE] = \Where::_and($and); } $post['options'][\Query::SORT] = [Time::$DATE=>'DESC']; $post['getData'] = true; $res = parent::getTableData($post); /* switch (intval($id)){ case merakomru::$PARTNERS->id_for_theme : $res['title'] = 'Партнёры'; break; } */ echo je($res); } static function getStatTest() { echo ini_get('memory_limit'); ini_set('memory_limit', '512M'); set_time_limit(0); $res = []; Emp::$AUTH_ID = 7; Emp::$IS_AUTH = true; $_POST['type']=1; $_POST['range'][0]='2024-10-01'; $_POST['range'][0]='2024-09-01'; $_POST['range'][1]='2025-09-30'; $res = Time::getStat($_POST); //echo je($res); echo "После: " . (memory_get_usage()/1024/1024) . " байт\n"; echo "Пик: " . (memory_get_peak_usage()/1024/1024) . " байт\n"; } }