/** * Update Order * * @param type $id = Order ID */ public function action_update($id = false) { if (!is_numeric($id)) { \Response::redirect('admin/order/list'); } // Get order to edit if (!($order = \Order\Model_Order::find_one_by_id($id))) { \Response::redirect('admin/order/list'); } \View::set_global('title', 'Edit Order'); if (\Input::post('order_details', false) && \Input::post('customer_details', false)) { try { $fields = array('status', 'shipping_method', 'tracking_no'); $events = array(); foreach ($fields as $field) { $config = \Config::get('details.' . $field, array()); if (isset($config[\Input::post($field)]) && $order->{$field}) { $value = $config[\Input::post($field)]; } else { $value = \Inflector::humanize(\Input::post($field)); } if (isset($config[$order->{$field}])) { $old_value = $config[$order->{$field}]; } else { $old_value = \Inflector::humanize($order->{$field}); } if ($order->{$field} != \Input::post($field)) { $events[] = \Inflector::humanize($field) . ' changed. ' . $old_value . ' => ' . $value; } $data[$field] = \Input::post($field); } // Send to customer if (\Input::post('send_to_customer_payment')) { //echo 'send_to_customer_payment'; exit; } if (\Input::post('send_to_customer_shipping')) { //echo 'send_to_customer_shipping'; exit; } $order->set($data); if ($order->save() && !empty($events)) { foreach ($events as $event) { $order_history = Model_History::forge(array('order_id' => $order->id, 'event' => $event)); $order_history->save(); } } \Messages::success('Order successfully updated.'); if (\Input::post('status') == 'shipped_to_customer') { $this->sendNoticeShipped(\Order\Model_Order::find_one_by_id($id)); } // if(\Input::post('exit')) \Response::redirect(\Uri::create('admin/order/list')); // \Response::redirect(\Uri::admin('current')); } catch (\Database_Exception $e) { \Messages::error('<strong>' . 'There was an error while trying to update order.' . '</strong>'); } // } // if(\Input::post('customer_details', false)) // { $val = Model_Order::validate('update'); if ($val->run()) { try { $order->set(\Input::post()); if ($order->save()) { $order_history = Model_History::forge(array('order_id' => $order->id, 'event' => 'Customer details edited.')); $order_history->save(); // \Messages::success('Order successfully updated.'); if (\Input::post('exit')) { \Response::redirect(\Uri::create('admin/order/list')); } \Response::redirect(\Uri::admin('current')); } } catch (\Database_Exception $e) { \Messages::error('<strong>' . 'There was an error while trying to update order.' . '</strong>'); } } else { // Delete uploaded images if there is news saving error if (isset($this->_image_data)) { foreach ($this->_image_data as $image_data) { $this->delete_image($image_data['saved_as']); } } if ($val->error() != array()) { // show validation errors \Messages::error('<strong>There was an error while trying to update member</strong>'); foreach ($val->error() as $e) { \Messages::error($e->get_message()); } } } } if (\Input::post('upload_type', false) && \Input::post('upload', false)) { $this->uploads($id); } if (\Input::post('order_edit', false)) { $post = \Input::post(); \Messages::success('Order successfully updated.'); if (\Input::post('exit')) { \Response::redirect(\Uri::create('admin/order/list')); } \Response::redirect(\Uri::admin('current')); } $user = $this->get_user($order->user_id); $orders = \Order\Model_Order::find(array('order_by' => array('id' => 'asc'))); $this_class = $this; $get_user = function ($user_id) use($this_class) { return $this_class->get_user($user_id); }; $get_attributes = function ($attributes) use($this_class) { return $this_class->attributes_to_string($attributes); }; \Theme::instance()->set_partial('content', $this->view_dir . 'update')->set(compact('user', 'order', 'orders'), null, false)->set('get_user', $get_user, false)->set('get_attributes', $get_attributes, false); }