diff --git a/app/Filtro.php b/app/Filtros/Filtro.php similarity index 69% rename from app/Filtro.php rename to app/Filtros/Filtro.php index 0340559..87ba8b2 100644 --- a/app/Filtro.php +++ b/app/Filtros/Filtro.php @@ -1,6 +1,6 @@ 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) $metodo = str_replace('_', '', lcfirst(ucwords($filtro, '_'))); @@ -53,8 +60,15 @@ class Filtro extends Model 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); } } diff --git a/app/Filtros/FiltroDeProducto.php b/app/Filtros/FiltroDeProducto.php new file mode 100644 index 0000000..93672c2 --- /dev/null +++ b/app/Filtros/FiltroDeProducto.php @@ -0,0 +1,13 @@ +builder->where('categoria', $valor); + } + +} \ No newline at end of file diff --git a/app/Filtros/FiltroDeSubpedido.php b/app/Filtros/FiltroDeSubpedido.php new file mode 100644 index 0000000..6fa8198 --- /dev/null +++ b/app/Filtros/FiltroDeSubpedido.php @@ -0,0 +1,14 @@ +builder->where('grupo_de_compra_id', intval($valor)); + } +} diff --git a/app/GrupoDeCompra.php b/app/GrupoDeCompra.php index dec7ea0..f5d80eb 100644 --- a/app/GrupoDeCompra.php +++ b/app/GrupoDeCompra.php @@ -9,6 +9,6 @@ class GrupoDeCompra extends Model public $timestamps = false; protected $fillable = [ "nombre","region","telefono","correo","referente_finanzas","cantidad_de_nucleos"]; protected $table = 'grupos_de_compra'; - protected $hidden = ['contraseña']; + protected $hidden = ['password']; } diff --git a/app/Http/Controllers/Api/ProductoController.php b/app/Http/Controllers/Api/ProductoController.php index 147f90d..c7aeb2f 100644 --- a/app/Http/Controllers/Api/ProductoController.php +++ b/app/Http/Controllers/Api/ProductoController.php @@ -4,7 +4,7 @@ namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use Illuminate\Http\Request; -use App\Filtro; +use App\Filtros\FiltroDeProducto; use App\Producto; class ProductoController extends Controller @@ -12,11 +12,11 @@ class ProductoController extends Controller /** * Mostrar una lista de productos. * - * @param App\Filtro $filtros + * @param App\Filtros\FiltroDeProducto $filtros * @param \Illuminate\Http\Request $request * @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)); } diff --git a/app/Http/Controllers/Api/SubpedidoController.php b/app/Http/Controllers/Api/SubpedidoController.php new file mode 100644 index 0000000..d116e34 --- /dev/null +++ b/app/Http/Controllers/Api/SubpedidoController.php @@ -0,0 +1,23 @@ +get(); + } +} diff --git a/app/Producto.php b/app/Producto.php index 445b5e2..aa9059f 100644 --- a/app/Producto.php +++ b/app/Producto.php @@ -4,6 +4,7 @@ namespace App; use Illuminate\Database\Eloquent\Model; use Illuminate\Http\Request; +use App\Filtros\FiltroDeProducto; class Producto extends Model { @@ -21,7 +22,8 @@ class Producto extends Model 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); } diff --git a/app/Subpedido.php b/app/Subpedido.php index 61d92c8..291690b 100644 --- a/app/Subpedido.php +++ b/app/Subpedido.php @@ -6,6 +6,7 @@ use League\Csv\Reader; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\DB; use Log; +use App\Filtros\FiltroDeSubpedido; class Subpedido extends Model { @@ -22,4 +23,10 @@ class Subpedido extends Model 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); + } + } diff --git a/database/migrations/2020_09_23_165235_create_grupos_de_compra_table.php b/database/migrations/2020_09_23_165235_create_grupos_de_compra_table.php index 9062089..6e9b5c1 100644 --- a/database/migrations/2020_09_23_165235_create_grupos_de_compra_table.php +++ b/database/migrations/2020_09_23_165235_create_grupos_de_compra_table.php @@ -21,7 +21,7 @@ class CreateGruposDeCompraTable extends Migration $table->string('telefono')->nullable(); $table->string('correo')->nullable(); $table->string('referente_finanzas')->nullable(); - $table->string('contraseña')->nullable(); + $table->string('password')->nullable(); $table->timestamps(); }); } diff --git a/public/js/main.js b/public/js/main.js index b8f1bf8..29873cd 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -33,7 +33,7 @@ Vue.component('region-option', { Vue.component('barrio-select', { template: `
- +