Beispiel #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 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 create(array $data)
 {
     \DB::beginTransaction();
     try {
         $data['status'] = 0;
         if (isset($data['cupom_id'])) {
             unset($data['cupom_id']);
         }
         if (isset($data['cupom_code'])) {
             $cupom = $this->cupomRepository->findByField('code', $data['cupom_code'])->first();
             $data['cupom_id'] = $cupom->id;
             $cupom->usado = 1;
             $cupom->save();
             unset($data['cupom_code']);
         }
         $items = $data['items'];
         unset($data['items']);
         $pedido = $this->pedidoRepository->create($data);
         $total = 0;
         foreach ($items as $item) {
             $item['price'] = $this->produtoRepository->find($item['produto_id'])->valor;
             // corrigir erro de nome price para preco..
             $itemSalve = $item;
             unset($itemSalve['price']);
             $itemSalve['preco'] = $item['price'];
             $pedido->itens()->create($itemSalve);
             $total += $item['price'] * $item['qtd'];
         }
         $pedido->total = $total;
         if (isset($cupom)) {
             $pedido->total = $pedido->total - $cupom->value;
         }
         $pedido->save();
         \DB::commit();
         return $pedido;
     } catch (\Exception $e) {
         \DB::rollback();
         throw $e;
     }
 }
 public function update(AdminCupomRequest $request, $id)
 {
     $data = $request->all();
     $this->repository->update($data, $id);
     return redirect()->route('admin.cupoms.index');
 }
 public function show($code)
 {
     return $this->cupomRepository->skipPresenter(false)->findByCode($code);
 }
 public function index(CupomRepository $repository)
 {
     $cupoms = $repository->paginate();
     return view('admin.cupoms.index', compact('cupoms'));
 }
 public function destroy($id)
 {
     $this->repository->delete($id);
     return redirect()->route('admin.cupoms.index');
 }