public function post()
 {
     $post = Input::all();
     if ($post['products'] == '[]') {
         $post['products'] = '';
     }
     $validator = SupplierOrder::validate($post);
     if ($validator->fails()) {
         return Redirect::to('pedidos/' . $post['id'])->withErrors($validator)->withInput();
     } else {
         try {
             DB::transaction(function () use($post) {
                 $supplierOrder = self::__checkExistence($post['id']);
                 if (!$supplierOrder) {
                     //new order
                     $supplierOrder = new SupplierOrder();
                     $supplierOrder->suppliers_id = $post['suppliers_id'];
                     $supplierOrder->users_id = Auth::user()->id;
                     $supplierOrder->code = $post['code'];
                     $supplierOrder->save();
                     $products = json_decode($post['products']);
                     $toSync = array();
                     foreach ($products as $current) {
                         $product = Product::find($current->id);
                         if (!is_null($product)) {
                             $toSync[$current->id]['cost'] = $product->cost;
                             $toSync[$current->id]['amount'] = $current->amount;
                         }
                     }
                     $supplierOrder->products()->sync($toSync);
                     Globals::triggerAlerts(5, array('supplierOrderId' => $supplierOrder->id));
                 } else {
                     if (isset($post['received']) and $post['received'] == 1) {
                         //received
                         $supplierOrder->status = 'received';
                         $supplierOrder->save();
                         foreach ($supplierOrder->products as $pivotProduct) {
                             $array = $pivotProduct->toArray();
                             $product = Product::find($array['id']);
                             if (!is_null($product)) {
                                 $product->stock = $product->stock + $array['pivot']['amount'];
                                 $product->save();
                             }
                         }
                         Globals::triggerAlerts(6, array('supplierOrderId' => $supplierOrder->id));
                     } elseif (isset($post['received']) and $post['received'] == 2) {
                         //canceled
                         $supplierOrder->status = 'canceled';
                         $supplierOrder->save();
                     } else {
                         Session::flash('error', 'Error en la recepciĆ³n de su pedido, por favor vuelva a intentarlo.');
                     }
                 }
             });
             Session::flash('success', 'Pedido procesado exitosamente.');
         } catch (Exception $e) {
             Session::flash('error', 'OcurriĆ³ un error inesperado, por favor vuelva a intentarlo.');
         }
         return Redirect::to('pedidos');
     }
 }