Advertisement
abramovanton

Untitled

Feb 28th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.55 KB | None | 0 0
  1. <?php
  2. error_reporting(E_ALL);
  3. ini_set('display_errors', 1);
  4.  
  5. $now = date('d.n.Y H:i:s');
  6.  
  7. $startWork = 9;
  8. $endWork = 18;
  9.  
  10. $weekend = [6,7];
  11.  
  12. $holidays = [date('01.01.2017'), date('23.02.2017')];
  13.  
  14. $countTasks = 2;
  15.  
  16. $hoursForTasks = [9, 1];
  17.  
  18. $priority = [10, 20];
  19.  
  20. $deadLines = [];
  21.  
  22.  
  23. class TaskManager{
  24.     private static $tasks = [];
  25.  
  26.     public static $datetime;
  27.     public static $holidays = [];
  28.     public static $startWork = 0;
  29.     public static $endWork = 0;
  30.  
  31.     public $hours = 0;
  32.     public $priority = 0;
  33.     public $deadline;
  34.  
  35.     public static function init($params){
  36.         self::$datetime = new DateTime(date('23.12.2016 12:15:00'));
  37.  
  38.         if(isset($params['start']) && !empty($params['start']))
  39.             self::$startWork = $params['start'];
  40.  
  41.         if(isset($params['end']) && !empty($params['end']))
  42.             self::$endWork = $params['end'];
  43.  
  44.     }
  45.  
  46.     function __construct($params){
  47.         if(isset($params['hours']) && !empty($params['hours']))
  48.             $this->hours = $params['hours'];
  49.  
  50.         if(isset($params['priority']) && !empty($params['priority']))
  51.             $this->priority = $params['priority'];
  52.  
  53.         $this->deadline = self::$datetime;
  54.         self::$tasks[] = $this;
  55.     }
  56.  
  57.     /**
  58.      * Сортировка по приоритету
  59.      */
  60.     public static function sort(&$tasksArr){
  61.         function cmp($a, $b)
  62.         {
  63.             if ($a == $b) {
  64.                 return 0;
  65.             }
  66.             return ($a->priority > $b->priority) ? -1 : 1;
  67.         }
  68.  
  69.         usort($tasksArr, "cmp");
  70.     }
  71.  
  72.     public static function calcDeadLines($tasks){
  73.  
  74.     }
  75.  
  76.     public static function isWork($time){
  77.         if($time >= self::$startWork && $time < self::$endWork)
  78.             return true;
  79.         else
  80.             return false;
  81.     }
  82.  
  83.     public static function isHoliday($date){
  84.         return (boolean)in_array($date, self::$holidays);
  85.     }
  86.  
  87.     public static function showDeadLines(){
  88.         echo '<pre>';
  89.         print_r(self::$tasks);
  90.         echo '</pre>';
  91.     }
  92.  
  93.     public static function count(){
  94.         return count(self::$tasks);
  95.     }
  96. }
  97.  
  98.  
  99. TaskManager::init([
  100.     'start' => 9,
  101.     'end'   => 18
  102. ]);
  103.  
  104. $tasks[] = new TaskManager([
  105.     'hours'     => 9,
  106.     'priority'  => 10
  107. ]);
  108.  
  109. $tasks[] = new TaskManager([
  110.     'hours'     => 1,
  111.     'priority'  => 20
  112. ]);
  113.  
  114. echo '<pre>';
  115. print_r($tasks);
  116. echo '</pre>';
  117.  
  118. TaskManager::sort($tasks); // Сортировка по приоритету
  119. echo '<pre>';
  120. print_r($tasks);
  121. echo '</pre>';
  122. $count = count($tasks);
  123. for($i = 0; $i < $count; $i++){
  124.     echo '<pre>';
  125.     print_r('task');
  126.     echo '</pre>';
  127.     $task = &$tasks[$i];
  128.     $task->deadline = TaskManager::$datetime;
  129.  
  130.     for($j = 0; $j < $task->hours; $j++){
  131.         $time = TaskManager::$datetime->format('H');
  132.         $date = TaskManager::$datetime->format('d.m.Y');
  133.         echo 'time';
  134.         echo '<pre>';
  135.         print_r($time);
  136.         echo '</pre>';
  137.  
  138.         if(TaskManager::isWork($time)){
  139.             if(TaskManager::isHoliday($date))
  140.                 TaskManager::$datetime = new DateTime($date . '+ 1day');
  141.             else
  142.                 TaskManager::$datetime->add(new DateInterval('PT1H'));
  143.  
  144.             echo '<pre>';
  145.             print_r(TaskManager::$datetime);
  146.             echo '</pre>';
  147.         }else{
  148.             TaskManager::$datetime = new DateTime($date . '+ 1day');
  149.             TaskManager::$datetime->setTime(TaskManager::$startWork, 0,0);
  150.         }
  151.         echo '-------------------';
  152.         echo '<pre>';
  153.         print_r($tasks);
  154.         echo '</pre>';
  155.         echo '-------------------';
  156.     }
  157.     echo '<pre>';
  158.     print_r('set deadline');
  159.     echo '</pre>';
  160.     echo '<pre>';
  161.     print_r(TaskManager::$datetime);
  162.     echo '</pre>';
  163.     $task->deadline = TaskManager::$datetime;
  164.     echo '<pre>';
  165.     print_r($task);
  166.     echo '</pre>';
  167.     //$tasks[$i] = $task;
  168. }
  169.  
  170. echo '<pre>';
  171. print_r('tasks');
  172. echo '</pre>';
  173. echo '<pre>';
  174. print_r($tasks);
  175. echo '</pre>';
  176.  
  177. //TaskManager::showDeadLines();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement