Compare commits

...

1 Commits

Author SHA1 Message Date
nat 95ba0733ab WIP 2022-02-22 10:47:06 -03:00
3 changed files with 38 additions and 3 deletions

View File

@ -7,6 +7,7 @@ use Illuminate\Http\Request;
use App\Filtros\FiltroDeSubpedido; use App\Filtros\FiltroDeSubpedido;
use App\Subpedido; use App\Subpedido;
use App\GrupoDeCompra; use App\GrupoDeCompra;
use App\Producto;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Symfony\Component\HttpKernel\Exception\HttpException; use Symfony\Component\HttpKernel\Exception\HttpException;
@ -26,7 +27,7 @@ class SubpedidoController extends Controller
} }
/** /**
* Store a newly created resource in storage. * Guardar un nuevo registro en el almacenamiento.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
@ -44,6 +45,28 @@ class SubpedidoController extends Controller
return $s; return $s;
} }
/**
* Agregar un producto a un subpedido.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function updateProducto(Subpedido $subpedido, Producto $producto, Request $request)
{
$validado = $this->validateActualizacionDeProducto();
$cantidad = $validado['cantidad'];
if ($cantidad){
//si la cantidad es 1 o más se agrega el producto o actualiza la cantidad
$subpedido->productos()->syncWithoutDetaching([$producto->id => ['cantidad' => $cantidad]]);
} else {
//si la cantidad es 0, se elimina el producto del subpedido
$subpedido->productos()->detach($producto->id);
}
return response('Producto ' . $producto->nombre . ' actualizado en subpedido de ' . $subpedido->nombre . ' (cantidad ' . $cantidad . ')', 200);
}
protected function validateSubpedido(){ protected function validateSubpedido(){
return request()->validate([ return request()->validate([
'nombre' => 'required|max:255', 'nombre' => 'required|max:255',
@ -53,4 +76,10 @@ class SubpedidoController extends Controller
] ]
]); ]);
} }
protected function validateActualizacionDeProducto(){
return request()->validate([
'cantidad' => 'required|min:0'
]);
}
} }

View File

@ -15,7 +15,7 @@ class Subpedido extends Model
public function productos() public function productos()
{ {
return $this->belongsToMany('App\Producto','pedidos_productos')->withPivot(["cantidad"]); return $this->belongsToMany('App\Producto')->withPivot(["cantidad"]);
} }
public function grupoDeCompra() public function grupoDeCompra()

View File

@ -31,6 +31,10 @@ Route::middleware('api')->group(function () {
Route::prefix('subpedidos')->group(function () { Route::prefix('subpedidos')->group(function () {
Route::get('/','Api\SubpedidoController@index'); Route::get('/','Api\SubpedidoController@index');
Route::post('/','Api\SubpedidoController@store'); Route::post('/','Api\SubpedidoController@store');
//@TO DO -> esta ruta debe estar en middleware de auth y/o subpedido
Route::put('/{subpedido}/producto/{producto}','Api\SubpedidoController@updateProducto');
}); });
//@TO DO -> esta ruta debe estar en middleware de auth y/o subpedido //@TO DO -> esta ruta debe estar en middleware de auth y/o subpedido
@ -41,6 +45,8 @@ Route::middleware('api')->group(function () {
//@TO DO -> esta ruta debe estar en middleware de auth y/o subpedido //@TO DO -> esta ruta debe estar en middleware de auth y/o subpedido
Route::prefix('productos')->group(function () { Route::prefix('productos')->group(function () {
Route::get('/','Api\ProductoController@index'); Route::get('/','Api\ProductoController@index');
Route::get('{producto}','Api\ProductoController@show'); Route::get('{producto}','Api\ProductoController@show');
}); });
//@TO DO -> esta ruta debe estar en middleware de auth y/o subpedido
}); });