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'); }