sibling = &$sibling; } } /** * render the main screen * @return mixed */ private function renderMain() { Context::getContext()->smarty->assign(array( 'module_config_url' => $this->module_config_url, )); return $this->sibling->display($this->sibling->module_file, 'views/templates/admin/config/deliverymanager/main.tpl'); } private function renderDayView() { $max = 20; $date_start = Tools::getValue('date_start'); $date_end = Tools::getValue('date_end'); if (empty($date_start)) { $date_start = date('Y-m-d'); } if (empty($date_end)) { error_log('empty'); $date_end = strtotime("+" . $max . " days", strtotime($date_start)); $date_end = date("Y-m-d", $date_end); } $dates = array(); $dates_array = array(); for ($i=0; $i <= 100; $i++) { $loop_date = date('Y-m-d', strtotime($date_start . "+$i days")); $dates_array[] = $loop_date; if ($loop_date >= $date_end) { break; } } foreach ($dates_array as $date) { $dates[] = array( 'date' => $date, 'day' => date('d', strtotime($date)), 'weekday' => DDWDateTimeHelper::getWeekdayTranslatedByIndex(date('w', strtotime($date)), true, $this->sibling), 'month' => DDWDateTimeHelper::getMonthNameTranslatedByIndex(date('m', strtotime($date)), true, $this->sibling) ); } Context::getContext()->smarty->assign(array( 'date_start' => $date_start, 'date_end' => $date_end, 'dates' => $dates )); return $this->sibling->display($this->sibling->module_file, 'views/templates/admin/config/deliverymanager/dayview.tpl'); } /** * render the delivery timeline for a date * @return string */ private function renderDeliveryTimeline() { $date = Tools::getValue('date'); $deliveries = DDWDeliveryManagerHelper::getDeliveryTimeline($date); Context::getContext()->smarty->assign(array( 'deliveries_timeline' => $deliveries['timeline'], 'deliveries_allday' => $deliveries['allday'] )); return $this->sibling->display($this->sibling->module_file, 'views/templates/admin/config/deliverymanager/timeline.tpl'); } /** * render week view */ private function renderWeekView() { $date = Tools::getValue('date'); if (Tools::getValue('type') == 'week') { $direction = Tools::getValue('direction'); $year = date('Y', strtotime($date)); $week = Tools::getValue('week'); $weeks_in_year = DDWDateTimeHelper::getNumberOfWeeksInYear($year); if ($direction == 'up' && $week < $weeks_in_year) { $week ++; } elseif ($direction == 'up' && $week == $weeks_in_year) { $week = 1; $year ++; } if ($direction == 'down' && $week > 1) { $week --; } elseif ($direction == 'down' && $week = 1) { $year--; $week = DDWDateTimeHelper::getNumberOfWeeksInYear($year); } $first_day_of_week = DDWDateTimeHelper::getStartDateByWeekNumber($week, $year); $date = $first_day_of_week; } else { $first_day_of_week = DDWDateTimeHelper::getFirstDayOfWeekDate($date); } $id_shop = (int)Context::getContext()->shop->id; $weekdays = array(); $i = 0; for ($i=0; $i<=6; $i++) { $loop_date = date('Y-m-d', strtotime($first_day_of_week . "+$i days")); $day_of_week = date('w', strtotime($loop_date)); $month = date('m', strtotime($loop_date)); $weekdays[$loop_date] = array( 'weekday' => DDWDateTimeHelper::getWeekdayTranslatedByIndex($day_of_week, false, $this->sibling), 'day' => date('d', strtotime($loop_date)), 'month' => DDWDateTimeHelper::getMonthNameTranslatedByIndex($month, false, $this->sibling), 'year' => date('Y', strtotime($loop_date)), 'date' => $loop_date, 'orders' => array() ); } if (empty($weekdays)) { return array(); } $date_start = reset($weekdays)['date']; $date_end = end($weekdays)['date']; $orders = DDWOrderHelper::getOrdersInDateRange($date_start, $date_end, true, $id_shop); foreach ($orders as $order) { $ddw_order_date = $order['ddw_order_date']; $ddw_order_date = date('Y-m-d', strtotime($ddw_order_date)); $order_state = new OrderState($order['current_state']); if (isset($weekdays[$ddw_order_date])) { $weekdays[$ddw_order_date]['orders'][] = array( 'id_order' => $order['id_order'], 'reference' => $order['reference'], 'shipped' => $order_state->shipped ); } } foreach ($weekdays as &$weekday) { if (count($weekday['orders']) > 0) { $all_shipped = true; foreach ($weekday['orders'] as $order) { if ($order['shipped'] == 0) { $all_shipped = false; } } if ($all_shipped) { $weekday['status_class'] = 'status-deliveries-completed'; } else { $weekday['status_class'] = 'status-deliveries-pending'; } } else { $weekday['status_class'] = 'status-deliveries-empty'; } } Context::getContext()->smarty->assign(array( 'date' => $date, 'week_number' => date("W", strtotime($date)), 'weekdays' => $weekdays )); return $this->sibling->display($this->sibling->module_file, 'views/templates/admin/config/deliverymanager/weekview.tpl'); } /** * render the order / delivery details */ private function renderOrder() { $id_order = (int)Tools::getValue('id_order'); $id_lang = Context::getContext()->language->id; $order_details = DDWDeliveryManagerHelper::getOrderDeliveryInformation($id_order, $id_lang); Context::getContext()->smarty->assign(array( 'order_details' => $order_details )); return $this->sibling->display($this->sibling->module_file, 'views/templates/admin/config/deliverymanager/order.tpl'); } public function route() { switch (Tools::getValue('action')) { case 'renderdayview': die($this->renderDayView()); case 'renderweekview': die($this->renderWeekView()); case 'renderdeliverytimeline': die($this->renderDeliveryTimeline()); case 'renderorder': die($this->renderOrder()); default: return $this->renderMain(); } } }