forked from nathalie/pedi2
Endpoint devuelve subpedidos. Campo 'contraseña' cambia por 'password' en grupo de compra
This commit is contained in:
parent
425c2a3a65
commit
c8ecc2ad9e
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App;
|
namespace App\Filtros;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
@ -31,8 +31,15 @@ class Filtro extends Model
|
||||||
|
|
||||||
//Aplicar filtros que aparecen en los parámetros, si los hay
|
//Aplicar filtros que aparecen en los parámetros, si los hay
|
||||||
$filtros = $this->request->all();
|
$filtros = $this->request->all();
|
||||||
foreach($filtros as $filtro => $valor) {
|
|
||||||
|
|
||||||
|
//el filtro nombre debe tomar precedencia sobre otros como (alfabetico)
|
||||||
|
if ($filtros["nombre"]) {
|
||||||
|
$nombre = $filtros["nombre"];
|
||||||
|
unset($filtros["nombre"]);
|
||||||
|
$filtros = array_merge(["nombre" => $nombre],$filtros);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($filtros as $filtro => $valor) {
|
||||||
//Obtener nombre del método (snake_case a camelCase)
|
//Obtener nombre del método (snake_case a camelCase)
|
||||||
$metodo = str_replace('_', '', lcfirst(ucwords($filtro, '_')));
|
$metodo = str_replace('_', '', lcfirst(ucwords($filtro, '_')));
|
||||||
|
|
||||||
|
@ -53,8 +60,15 @@ class Filtro extends Model
|
||||||
return $this->builder;
|
return $this->builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function categoria(String $valor)
|
//Buscar un término en el nombre
|
||||||
|
public function nombre(String $valor)
|
||||||
{
|
{
|
||||||
$this->builder->where('categoria', $valor);
|
$this->builder->where('nombre', "LIKE", "%" . $valor . "%")->orderByRaw("IF(nombre = '{$valor}',2,IF(nombre LIKE '{$valor}%',1,0)) DESC");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function alfabetico(String $order = 'asc')
|
||||||
|
{
|
||||||
|
if(!in_array($order,['asc','desc'])) { throw new TypeError(); }
|
||||||
|
$this->builder->orderBy('nombre', $order);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Filtros;
|
||||||
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
|
|
||||||
|
class FiltroDeProducto extends Filtro {
|
||||||
|
|
||||||
|
public function categoria(String $valor)
|
||||||
|
{
|
||||||
|
$this->builder->where('categoria', $valor);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Filtros;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class FiltroDeSubpedido extends Filtro
|
||||||
|
{
|
||||||
|
public function grupoDeCompra(String $valor)
|
||||||
|
{
|
||||||
|
if (!is_numeric($valor)) { throw new TypeError();}
|
||||||
|
$this->builder->where('grupo_de_compra_id', intval($valor));
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,6 +9,6 @@ class GrupoDeCompra extends Model
|
||||||
public $timestamps = false;
|
public $timestamps = false;
|
||||||
protected $fillable = [ "nombre","region","telefono","correo","referente_finanzas","cantidad_de_nucleos"];
|
protected $fillable = [ "nombre","region","telefono","correo","referente_finanzas","cantidad_de_nucleos"];
|
||||||
protected $table = 'grupos_de_compra';
|
protected $table = 'grupos_de_compra';
|
||||||
protected $hidden = ['contraseña'];
|
protected $hidden = ['password'];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ namespace App\Http\Controllers\Api;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Filtro;
|
use App\Filtros\FiltroDeProducto;
|
||||||
use App\Producto;
|
use App\Producto;
|
||||||
|
|
||||||
class ProductoController extends Controller
|
class ProductoController extends Controller
|
||||||
|
@ -12,11 +12,11 @@ class ProductoController extends Controller
|
||||||
/**
|
/**
|
||||||
* Mostrar una lista de productos.
|
* Mostrar una lista de productos.
|
||||||
*
|
*
|
||||||
* @param App\Filtro $filtros
|
* @param App\Filtros\FiltroDeProducto $filtros
|
||||||
* @param \Illuminate\Http\Request $request
|
* @param \Illuminate\Http\Request $request
|
||||||
* @return \Illuminate\Http\Response
|
* @return \Illuminate\Http\Response
|
||||||
*/
|
*/
|
||||||
public function index(Filtro $filtros, Request $request)
|
public function index(FiltroDeProducto $filtros, Request $request)
|
||||||
{
|
{
|
||||||
return Producto::filtrar($filtros)->paginate(Producto::getPaginar($request));
|
return Producto::filtrar($filtros)->paginate(Producto::getPaginar($request));
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Api;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Filtros\FiltroDeSubpedido;
|
||||||
|
use App\Subpedido;
|
||||||
|
|
||||||
|
class SubpedidoController extends Controller
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Mostrar una lista de productos.
|
||||||
|
*
|
||||||
|
* @param App\Filtros\FiltroDeSubpedido $filtros
|
||||||
|
* @param \Illuminate\Http\Request $request
|
||||||
|
* @return \Illuminate\Http\Response
|
||||||
|
*/
|
||||||
|
public function index(FiltroDeSubpedido $filtros, Request $request)
|
||||||
|
{
|
||||||
|
return Subpedido::filtrar($filtros)->get();
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,6 +4,7 @@ namespace App;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use App\Filtros\FiltroDeProducto;
|
||||||
|
|
||||||
class Producto extends Model
|
class Producto extends Model
|
||||||
{
|
{
|
||||||
|
@ -21,7 +22,8 @@ class Producto extends Model
|
||||||
return $this->belongsTo('App\Proveedor');
|
return $this->belongsTo('App\Proveedor');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function scopeFiltrar($query, Filtro $filtros)
|
//Este método permite que se apliquen los filtros al hacer una request (por ejemplo, de búsqueda)
|
||||||
|
public function scopeFiltrar($query, FiltroDeProducto $filtros)
|
||||||
{
|
{
|
||||||
return $filtros->aplicar($query);
|
return $filtros->aplicar($query);
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ use League\Csv\Reader;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Log;
|
use Log;
|
||||||
|
use App\Filtros\FiltroDeSubpedido;
|
||||||
|
|
||||||
class Subpedido extends Model
|
class Subpedido extends Model
|
||||||
{
|
{
|
||||||
|
@ -22,4 +23,10 @@ class Subpedido extends Model
|
||||||
return $this->belongsTo('App\GrupoDeCompra');
|
return $this->belongsTo('App\GrupoDeCompra');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Este método permite que se apliquen los filtros al hacer una request (por ejemplo, de búsqueda)
|
||||||
|
public function scopeFiltrar($query, FiltroDeSubpedido $filtros)
|
||||||
|
{
|
||||||
|
return $filtros->aplicar($query);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ class CreateGruposDeCompraTable extends Migration
|
||||||
$table->string('telefono')->nullable();
|
$table->string('telefono')->nullable();
|
||||||
$table->string('correo')->nullable();
|
$table->string('correo')->nullable();
|
||||||
$table->string('referente_finanzas')->nullable();
|
$table->string('referente_finanzas')->nullable();
|
||||||
$table->string('contraseña')->nullable();
|
$table->string('password')->nullable();
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ Vue.component('region-option', {
|
||||||
Vue.component('barrio-select', {
|
Vue.component('barrio-select', {
|
||||||
template: `
|
template: `
|
||||||
<div v-show="visible" class="block">
|
<div v-show="visible" class="block">
|
||||||
<label class="label">Seleccioná tu grupo de compra</label>
|
<label class="label">Seleccioná tu barrio o grupo de compra</label>
|
||||||
<div class="select">
|
<div class="select">
|
||||||
<select>
|
<select>
|
||||||
<option>Seleccionar</option>
|
<option>Seleccionar</option>
|
||||||
|
|
|
@ -37,4 +37,9 @@ Route::middleware('api')->group(function () {
|
||||||
Route::prefix('productos')->group(function () {
|
Route::prefix('productos')->group(function () {
|
||||||
Route::get('/','Api\ProductoController@index');
|
Route::get('/','Api\ProductoController@index');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//@TO DO -> esta ruta debe estar en middleware de autenticacion
|
||||||
|
Route::prefix('subpedidos')->group(function () {
|
||||||
|
Route::get('/','Api\SubpedidoController@index');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue