KOKINIO - MANAGER
Edit File: ProductoController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Facturapi\Facturapi; use App\Producto; use Uuid; use Auth; use Validator; class ProductoController extends Controller { protected $facturapi; public function __construct(Facturapi $facturapi ) { $this->facturapi = $facturapi; } // public function index(){ $productos = Producto::where('status_id',1)->get(); return view('Catalogos.Producto')->with(compact('productos')); } public function guardar(Request $request){ $data = $request->all(); // Busca si existe la categorÃa previamente en la BD $product = Producto::where('descripcion','=',$data['descripcion'])->where('status_id',0)->first(); if(isset($product)){ $data['id'] = $product->id; } if($data['id']=="0"){ $validacion = Validator::make($data, array( 'descripcion' => 'required|unique:producto', 'clave_sat' => 'required', ), array( 'descripcion.required' => 'La descripcion es obligatorio', 'descripcion.unique' => 'El producto ya existe', 'clave_sat.required' => 'La clave SAT es obligatorio', ) ); }else{ $validacion = Validator::make($data, array( 'descripcion' => 'required', 'clave_sat' => 'required', ), array( 'descripcion.required' => 'La descripcion es obligatorio', 'clave_sat.required' => 'La clave SAT es obligatorio', ) ); } if($validacion->fails()){ return response()->json(['status'=>false,'message'=>$validacion->messages()]); } if($data['id']=="0"){ $producto = new Producto(); $producto->id = Uuid::generate()->string; $mesage = "El producto ha sido creado exitosamente"; foreach (['eu','mx','gua'] as $key => $value) { $product = $this->facturapi->Products->create([ "description" => $data['descripcion']."_".$value, "product_key" => $data['clave_sat'], "price" => $data['costo_'.$value], "sku" => $producto->id ]); $factura_api_id = "factura_api_id_".$value; $producto->$factura_api_id = $product->id; if (!$product->id) return response()->json(['status'=>false,'message'=>'Error al insertar los datos SAT']); } }else{ $producto = Producto::find($data['id']); $mesage = "El producto ha sido actualizada correctamente"; $factura_id = "factura_api_id_"; foreach (['eu','mx','gua'] as $key => $value) { if ($producto->status_id == 0) { $product = $this->facturapi->Products->create([ "description" => $data['descripcion']."_".$value, "product_key" => $data['clave_sat'], "price" => $data['costo_'.$value], "sku" => Auth::user()->id ]); } else { $product = $this->facturapi->Products->update($producto[$factura_id.$value], [ "description" => $data['descripcion']."_".$value, "product_key" => $data['clave_sat'], "price" => $data['costo_'.$value], "sku" => Auth::user()->id ]); } $factura_api_id = "factura_api_id_".$value; $producto->$factura_api_id = $product->id; if (!$product->id) return response()->json(['status'=>false,'message'=>'Error al actualizar los datos SAT']); } $producto->status_id = 1; } $producto->descripcion = $data['descripcion']; $producto->clave_sat = $data['clave_sat']; $producto->costo_mx = $data['costo_mx']; $producto->costo_eu = $data['costo_eu']; $producto->costo_gua = $data['costo_gua']; $producto->comisiona = $data['comisiona']; $producto->orden_activo = $data['order']; $producto->cliente_id = Auth::user()->id; if($product->id && $producto->save()){ // Guardar en base de datos return response()->json(['status'=>true,'message'=>$mesage,'data'=>$data]); }else{ return response()->json(['status'=>false,'message'=>'Error al insertar los datos']); } } public function update(Request $request){ $id = $request->input('id'); return Producto::find($id); } public function delete(Request $request){ $producto = Producto::Find($request->input('id')); $producto->status_id = 0; $factura_id = "factura_api_id_"; foreach (['eu','mx','gua'] as $key => $value) { $product = $this->facturapi->Products->delete($producto[$factura_id.$value]); if (!$product->id) return response()->json(['status'=>false,'message'=>'Error al eleiminar los datos SAT']); } if ($producto->save()){ return response()->json(['status'=>true,'message'=>'Registro eliminado correctamente']); }else{ return response()->json(['status'=>false,'message'=>'Error al eliminar registro']); } } }