Example #1
0
 public function create(array $data)
 {
     DB::beginTransaction();
     try {
         $data['status'] = 0;
         if (isset($data['cupom_code'])) {
             $cupom = $this->cupomRepository->findByField('code', $data['cupom_code'])->first();
             $data['cupom'] = $cupom->id;
             $cupom->used = 1;
             $cupom->save();
             unset($data['cupom_code']);
         }
         $items = $data['items'];
         unset($data['items']);
         $order = $this->orderRepository->create($data);
         $total = 0;
         foreach ($items as $item) {
             $item['price'] = $this->productRepository->find($item['product_id'])->price;
             $order->items()->create($item);
             $total += $item['price'] * $item['qtd'];
         }
         $order->total = $total;
         if (isset($cupom)) {
             $order->total = $total - $cupom->value;
         }
         $order->save();
         \DB::commit();
     } catch (\Exception $e) {
         \DB::rollback();
         throw $e;
     }
 }
 public function destroy($id)
 {
     try {
         $this->repository->delete($id);
         return 'Has been deleted!';
     } catch (ModelNotFoundException $e) {
         return ['error' => true, 'message' => 'Not deleted!'];
     } catch (\Exception $e) {
         return ["error" => true, "message" => $e->getMessage()];
     }
 }
 public function create(array $data)
 {
     //inicia todas as transções
     //isso é para não utilizar a conexão com o banco a todo o momento
     //porém dessa maneira cria um acoplamento, mas pode ser utilizado no construct
     //passando a instacia do BD
     \DB::beginTransaction();
     try {
         //forçamos o pedido para sempre ter o status 0 quando criado
         $data['status'] = 0;
         //checagem para verificar se existe cupom de desconto
         if (isset($data['cupom_code'])) {
             // ??
             $cupom = $this->cupomRepository->findByField('code', $data['cupom_code'])->first();
             //determinamos que o cupom_id é igual ao o id do cupom
             $data['cupom_id'] = $cupom->id;
             $cupom->used = 1;
             //para salvar no banco de dados
             $cupom->save();
             //para não tentar persistir os dados quando colocar o data no array
             unset($data['cupom_code']);
         }
         //prepara os dados do item para isenrir no banco
         $items = $data['items'];
         //
         unset($data['items']);
         $order = $this->orderRepository->create($data);
         $total = 0;
         foreach ($items as $item) {
             //buscamos o product_id do formulario e consulta no banco o preço
             $item['price'] = $this->productRepository->find($item['product_id'])->price;
             //adiciona o item na ordem de serviço
             $order->items()->create($item);
             //gravamos o valor final
             $total += $item['price'] * $item['qtd'];
         }
         $order->total = $total;
         //se utilizar um cupom de desconto
         if (isset($cupom)) {
             //pegamos o total e subrtraiomos o valor de desconto do cupom
             $order->total = $total - $cupom->value;
         }
         //salva os dados
         $order->save();
         //comita para gravar
         \DB::commit();
         //caso não deu certo
     } catch (\Exception $e) {
         //não grava os dados
         \DB::rollback();
         throw $e;
     }
 }
 public function show($productId)
 {
     return $this->productRepository->skipPresenter(false)->find($productId);
 }
 public function create()
 {
     $products = $this->productRepository->lists();
     return view('customer.order.create', compact('products'));
 }
 public function index()
 {
     return $this->repository->skipPresenter(false)->all();
 }
 public function index()
 {
     $products = $this->repository->skipPresenter(false)->all();
     return $products;
 }
 public function destroy($id)
 {
     $this->repository->delete($id);
     return redirect()->route('admin.products.index');
 }
 public function index()
 {
     $products = $this->productRepository->skipPresenter(false)->paginate();
     return $products;
 }
 public function index(ProductRepository $repository)
 {
     $products = $repository->paginate();
     return view('admin.products.index', compact('products'));
 }