//Если параметры не проходят валидацию то редирект на основную по умолчанию if (!$tserviceOrderModel->attributes(array('status' => $tu_order_status))) { 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 = '';
/** * Создание арбитража * * @todo: здесь нужно полностью обезличить резерв * он не должен напрямую связан с заказом * * @param array $form * @return \xajaxResponse */ function reservesArbitrageNew($form) { $objResponse = new xajaxResponse(); $uid = get_uid(false); $order_id = intval($form['oid']); // Анонимусам нельзя или Заказ не указан if ($uid <= 0 || !$order_id) { return $objResponse; } $is_emp = is_emp(); $orderModel = TServiceOrderModel::model(); $order = $orderModel->getCard($order_id, $uid); //Заказ не найден if (!$order) { return $objResponse; } //Проверяем возможен ли арбитраж if ($orderModel->isAllowArbitrageNew()) { $data = array('reserve_id' => $order['reserve_data']['id'], 'frl_id' => $order['frl_id'], 'emp_id' => $order['emp_id'], 'is_emp' => $is_emp, 'message' => $form['message']); $reservesArbitrage = new ReservesArbitrage(); $arbitrage = $reservesArbitrage->createArbitrage($data); if ($arbitrage) { //заполняем данными арбитража $orderModel->getReserve()->setReserveDataByKey('arbitrage_id', $arbitrage['id']); $orderModel->getReserve()->setReserveDataByKey('arbitrage_is_emp', $arbitrage['is_emp']); $orderModel->getReserve()->setReserveDataByKey('arbitrage_message', $arbitrage['message']); $order['reserve_data'] = $orderModel->getReserve()->getReserveData(); //Уведомления $reservesSmail = new ReservesSmail(); $reservesSmail->onNewArbitrage($order, $is_emp); //Фиксируем для истории $tservicesOrderHistory = new tservices_order_history($order_id); $tservicesOrderHistory->reserveArbitrageNew($is_emp); } } //Новый статус отображаем без перезагрузки //@todo: нужно вынести в специфическую модель резерва для заказа $tserviceOrderStatusWidget = new TServiceOrderStatus(); $tserviceOrderStatusWidget->setIsEmp($is_emp); $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); $objResponse->script('window.order_arbitrage[' . $order_id . '].close_popup();'); 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; }