header("Location: /users/{$user->login}/tu-orders/", TRUE, 301); exit; } $orders_list = $tserviceOrderModel->setPage($on_page, $page)->getListForEmp($user->uid); $tu_orders_cnts = $tserviceOrderModel->getCounts($user->uid); //Если вообще ничего нет то 404 if (!$tu_orders_cnts['total']) { include ABS_PATH . "/404.php"; exit; } //Виджет для рендера статуса $tserviceOrderStatusWidget = new TServiceOrderStatus(); $tserviceOrderStatusWidget->setIsOwner($is_owner); $tserviceOrderStatusWidget->setIsEmp(TRUE); $tserviceOrderStatusWidget->is_list = true; $tserviceOrderStatusWidget->init(); $modelMessage = new TServiceMsgModel(); //Виджет формы отзывов только для инициализации и поключения скрипты. //Основное использование с виджете статуса но там подключать скрипт уже позно. //При использование виджетов в системе MVC (/tu/) этот хак не нужен. А знаешь почему? $tserviceOrderFeedbackWidget = new TServiceOrderFeedback(); $tserviceOrderFeedbackWidget->init(); $reservesArbitragePopup = new ReservesArbitragePopup(); $reservesArbitragePopup->init(); $inner = "tu-orders_inner.php"; $activ_tab = 12; //SEO $page_title = 'Заказы типовых услуг на FL.ru'; //$page_descr = ''; //$page_keyw = ''; break;
/** * Отклонение арбитража * @param int $order_id * @return \xajaxResponse */ function reservesArbitrageCancel($order_id) { $objResponse = new xajaxResponse(); //Получаем заказ и проверяем его if (!$order_id) { return $objResponse; } $orderModel = TServiceOrderModel::model(); $orderModel->attributes(array('is_adm' => hasPermissions('tservices'))); $order = $orderModel->getCard((int) $order_id, get_uid(false)); if (!$order || !isset($order['reserve_data']['arbitrage_id'])) { return $objResponse; } //Удаляем арбитраж $reservesArbitrage = new ReservesArbitrage(); $ok = $reservesArbitrage->removeArbitrage($order['reserve_data']['id']); if ($ok) { //Отправляем уведомления $reservesSmail = new ReservesSmail(); $reservesSmail->onRemoveArbitrage($order); $history = new tservices_order_history($order_id); $history->reserveArbitrageCancel(); //Новый статус отображаем без перезагрузки unset($order['reserve_data']['arbitrage_id']); $tserviceOrderStatusWidget = new TServiceOrderStatus(); $tserviceOrderStatusWidget->setIsOwner(false); $tserviceOrderStatusWidget->setOrder($order); $tserviceOrderStatusWidget->init(); ob_start(); $tserviceOrderStatusWidget->run(); $sHtml = ob_get_contents(); ob_end_clean(); $objResponse->assign('tservices_order_status_' . $order_id, 'innerHTML', $sHtml); } return $objResponse; }
/** * Редактирование стоимости и сроков заказа ТУ * * @param type $order_id * @param type $price * @param type $days * * @return \xajaxResponse */ function tservicesOrdersSetPrice($order_id, $price, $days, $paytype) { $objResponse =& new xajaxResponse(); $uid = get_uid(false); $price = intval($price); $days = intval($days); $paytype = intval($paytype); //Валидация входных параметров $validator = new validation(); $valid = $validator->is_natural_no_zero($price) && $validator->greater_than_equal_to($price, 300); $valid = $valid && $validator->is_natural_no_zero($days) && $validator->numeric_interval($days, 1, 730); $valid = $valid && in_array($valid, array(TServiceOrderModel::PAYTYPE_DEFAULT, TServiceOrderModel::PAYTYPE_RESERVE)); if (!$valid) { return $objResponse; } //Получение заказа $orderModel = TServiceOrderModel::model(); $order_id = intval($order_id); $old_order = $orderModel->getCard($order_id, $uid); if (!$old_order) { return $objResponse; } //Валидация возможности изменений $is_new_status = $old_order['status'] == TServiceOrderModel::STATUS_NEW; $is_owner = $old_order['emp_id'] == $uid; $is_reserve_accepted = isset($old_order['reserve_data']); if (!($is_new_status && $is_owner && !$is_reserve_accepted)) { return $objResponse; } //Проверка возможности смены типа оплаты $is_reserve = tservices_helper::isOrderReserve($paytype); if ($is_reserve && !tservices_helper::isAllowOrderReserve($old_order['category_id'])) { return $objResponse; } if (!$is_reserve) { $paytype = TServiceOrderModel::PAYTYPE_DEFAULT; } $data = array('order_price' => $price, 'order_days' => $days, 'pay_type' => $paytype); //Меняем if ($orderModel->edit($order_id, $data, $old_order['tax'])) { $order = $old_order; $order['order_price'] = $price; $order['order_days'] = $days; $order['pay_type'] = $paytype; //Сохранить действие в историю $history = new tservices_order_history($order_id); $history->save($order, $old_order); //Уведомление на почту $tservices_smail = new tservices_smail(); $tservices_smail->changeOrder2($order, $old_order); //Обновляем интерфейс цен и сроков $objResponse->script("\$('tu-container-price').set('html', '" . tservices_helper::cost_format($price) . "');"); $objResponse->script("\$('tu-container-days').set('html', '" . tservices_helper::days_format($days) . "');"); $objResponse->script("\$('tu_edit_budjet_price').set('value', '" . $price . "');"); $objResponse->script("\$('tu_edit_budjet_days').set('value', '" . $days . "');"); //Обновляем сообщение статуса, т.к. вторая сторона тоже могла его изменить $tserviceOrderStatusWidget = new TServiceOrderStatus(); $tserviceOrderStatusWidget->setIsEmp(true); $tserviceOrderStatusWidget->setOrder($order); $tserviceOrderStatusWidget->init(); ob_start(); $tserviceOrderStatusWidget->run(); $statusHtml = ob_get_contents(); ob_end_clean(); $objResponse->assign('tservices_order_status_' . $order_id, 'innerHTML', $statusHtml); $objResponse->script("\n \$('tu-container-price').getParent()\n .removeClass('b-layout__link_bordbot_dot_" . ($is_reserve ? '000' : 'ee1d16') . "')\n .addClass('b-layout__link_bordbot_dot_" . ($is_reserve ? 'ee1d16' : '000') . "');\n \$('tu-container-price').getPrevious('span').set('html','" . ($is_reserve ? 'Бюджет:' : 'Стоимость:') . "'); \n "); } return $objResponse; }