Example #1
0
 /**
  * Checkout
  */
 public function action_checkout()
 {
     $errors = [];
     $cart_contents = $this->cart->contents();
     if (empty($cart_contents)) {
         $this->redirect(Route::url('f_cart'));
     }
     /**
      * @var $obj_customer Model_Shop_Customer
      */
     $obj_customer = ORM::factory('Shop_Customer');
     /**
      * @var $obj_order Model_Shop_Order
      */
     $obj_order = ORM::factory('Shop_Order');
     $sel_deliveries = ORM::factory('Shop_Order_Delivery')->find_for_select('id', 'title');
     $delivery_id = Arr::get($_POST, 'delivery_id', 1);
     if (!in_array($delivery_id, Model_Shop_Order_Delivery::get_arr_valid_ids())) {
         $delivery_id = 1;
     }
     if ($this->request->is_post()) {
         $obj_customer->pre_post();
         $obj_customer->where('phone', '=', Arr::get($_POST, 'phone'))->find();
         if (!$obj_customer->loaded()) {
             $obj_customer = ORM::factory('Shop_Customer');
         }
         $obj_customer->values($_POST);
         try {
             $obj_customer->save();
         } catch (ORM_Validation_Exception $e) {
             Message::set('error', 'Ошибка при оформлении заказа!');
             $errors = $e->errors('validation');
         }
         if (empty($errors)) {
             // Сохраняем новый заказ
             $order_id = $obj_order->add_order($obj_customer->id, $delivery_id, $this->cart->total());
             /**
              * @var $obj_order_product Model_Shop_Order_Product
              */
             $obj_order_product = ORM::factory('Shop_Order_Product');
             // Сохраняем заказанные товары
             $obj_order_product->add_order_products($order_id, $cart_contents);
             // Отправляем mail
             if (Mail::order($obj_customer->email, $order_id)) {
                 //Message::set('success', 'Mail sent');
             } else {
                 //Message::set('error', 'Mail not send');
             }
             $this->cart->destroy();
             //Message::set('success', 'Ваш заказ успешно отправлен на обработку!');
             $this->redirect(Route::url('f_cart', ['action' => 'checked', 'rowid' => $order_id]));
         }
     }
     // Views
     $this->breadcrumbs = View::factory('frontend/v_breadcrumbs')->set('page_title', __('Оформление заказа'));
     $v_delivery_address = View::factory('shop/frontend/cart/v_delivery_addr_' . $delivery_id, ['obj_order' => $obj_order, 'errors' => $errors])->bind('v_addresses', $v_addresses);
     $this->content = View::factory('shop/frontend/cart/v_cart_checkout', ['v_delivery_address' => $v_delivery_address, 'sel_deliveries' => $sel_deliveries, 'obj_customer' => $obj_customer, 'obj_order' => $obj_order, 'cart' => $this->cart, 'errors' => $errors]);
 }
Example #2
0
 /**
  * @throws View_Exception
  */
 public function action_checkout()
 {
     $delivery_id = Arr::get($_POST, 'delivery_id');
     $obj_order = ORM::factory('Shop_Order');
     if (!in_array($delivery_id, Model_Shop_Order_Delivery::get_arr_valid_ids())) {
         $delivery_id = 1;
     }
     $v_delivery_address = View::factory('shop/frontend/cart/v_delivery_addr_' . $delivery_id, ['obj_order' => $obj_order])->bind('errors', $errors)->bind('v_addresses', $v_addresses)->render();
     $this->json['success'] = true;
     $this->json['content'] = $v_delivery_address;
 }