Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php /* Base namespace: Application\Models */
- namespace Application\Models;
- use MvcBox;
- class Order extends \Model
- {
- /**
- *
- */
- private $streetsTable = 'streets';
- /**
- *
- */
- private $ordersTable = 'orders';
- /**
- *
- */
- private $usersTable = 'users';
- /**
- *
- */
- public function getStreets()
- {
- $result = $this->db->select()->from($this->streetsTable)->cache(60)->get('d', 'a');
- return is_array($result) ? $result : array();
- }
- /**
- *
- */
- public function selectedValues()
- {
- $selected = array();
- if (! empty($this->io->post)) {
- $selected = $this->io->post;
- setcookie(
- 'selected_values',
- serialize(
- array(
- 'fio' => $selected['fio'],
- 'email' => $selected['email'],
- 'phone' => $selected['phone'],
- 'street' => $selected['street'],
- 'house' => $selected['house'] = $this->getNumsAsHtml($selected['street'], $selected['house']),
- 'apartment' => $selected['apartment']
- )
- ),
- time() + 31536000,
- '/'
- );
- } elseif(isset($_COOKIE['selected_values'])) {
- $selected = unserialize($_COOKIE['selected_values']);
- }
- return $selected;
- }
- /**
- *
- */
- public function getHousesNums($streetId = 0)
- {
- $nums = $this->db
- ->select('house_nums')
- ->from($this->streetsTable)
- ->where(array('id' => (int)$streetId))
- ->limit(1)
- ->cache(60)
- ->get('d', 'a');
- if (is_array($nums)) {
- return explode(',', $nums[0]['house_nums']);
- }
- return array();
- }
- /**
- *
- */
- public function getNumsAsHtml($streetId = 0, $selectedHouse = 0)
- {
- return $this->load->view(
- 'ajax/house_nums',
- array(
- 'nums' => $this->getHousesNums($streetId),
- 'selected_house' => $selectedHouse
- ),
- false
- );
- }
- /**
- * 0 - Заказ успешно оформлен.
- * 1 - Поле ФИО пустое.
- * 2 - E-mail не введен или не соответствует формату.
- * 3 - Номер телефона не введен или не соответствует формату.
- * 4 - Выбрана некорректная улица.
- * 5 - Выбран некоректный номер дома.
- * 6 - Выбран некорректный номер квартиры.
- * 7 - Выбран некорректный период доставки. Проверьте введенные данные.
- * 8 - Поле с заказом не заполнено.
- * 9 - Ошибка при создании нового заказа.
- */
- public function newOrder($post = array())
- {
- $post['fio'] = trim($post['fio']);
- if (mb_strlen($post['fio']) == 0) {
- return 1;
- }
- $post['email'] = trim($post['email']);
- if (! $this->validate->email($post['email'])) {
- return 2;
- }
- $post['phone'] = trim($post['phone']);
- if (mb_strlen($post['phone']) == 0 || mb_strlen($post['phone']) > 10) {
- return 3;
- }
- $post['street'] = (int)$post['street'];
- $street = $this->db->select()->from($this->streetsTable)->where(array('id' => $post['street']))->limit(1)->cache(60)->get('d', 'a');
- if ($street === null) {
- return 4;
- } else {
- $street = $street[0];
- }
- if (! in_array($post['house'], explode(',', $street['house_nums']))) {
- return 5;
- }
- $post['apartment'] = (int)$post['apartment'];
- if ($post['apartment'] < 1) {
- return 6;
- }
- $timeStart = $this->date->get(false, $post['order_date'] . ' ' . $post['delivery_time_from']);
- $timeFinish = $this->date->get(false, $post['order_date'] . ' ' . $post['delivery_time_to']);
- if ($timeStart < $this->date->get(false) || $timeStart > $timeFinish) {
- return 7;
- }
- $post['order_content'] = $post['order_content'];
- if (mb_strlen($post['order_content']) == 0) {
- return 8;
- }
- $result = $this->db
- ->insert(
- array(
- 'order_status' => 1,
- 'user_id' => $this->getUserId($post['phone']),
- 'user_name' => $post['fio'],
- 'email' => $post['email'],
- 'phone' => $post['phone'],
- 'street_id' => $post['street'],
- 'street_name' => $this->getStreetName($post['street']),
- 'house' => $post['house'],
- 'apartment' => $post['apartment'],
- 'delivery_time_from' => $timeStart,
- 'delivery_time_to' => $timeFinish,
- 'order_content' => $post['order_content'],
- 'order_price' => 0,
- 'join_date' => $this->date->get(false)
- )
- )
- ->from($this->ordersTable)
- ->get();
- return $result ? 0 : 9;
- }
- /**
- *
- */
- private function getUserId($phone = '')
- {
- $auth = $this->load->model('auth');
- if ($auth->isLogin()) {
- $data = $auth->authData();
- return (int)$data['id'];
- } else {
- $userData = $this->db->select()->from($this->usersTable)->where(array('phone' => $phone))->limit(1)->cache(60)->get('d', 'a');
- return is_null($userData) ? 0 : (int)$userData[0]['id'];
- }
- }
- /**
- *
- */
- private function getStreetName($streetId = 0)
- {
- $street = $this->db->select()->from($this->streetsTable)->where(array('id' => (int)$streetId))->limit(1)->cache(60)->get('d', 'a');
- if ($street === null) {
- return 'Неизвестная улица';
- } else {
- return $street[0]['name'];
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement