<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
use App\Filtros\FiltroDeProducto;
use Illuminate\Support\Str;

class Producto extends Model
{
  public $timestamps = false;
  protected $fillable = [ "nombre", "precio", "presentacion", "stock", "categoria" ];
  static $paginarPorDefecto = 10;

  public function subpedidos()
  {
    return $this->belongsToMany('App\Subpedido','productos_subpedidos')->withPivot(["cantidad"]);
  }

  public function proveedor()
  {
    return $this->belongsTo('App\Proveedor');
  }

  public function pagaTransporte()  {
      return !($this->bono || Str::contains($this->categoria, 'SUBSIDIADO'));
  }

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

  public static function getPaginar(Request $request)
  {
      return $request->has('paginar') && intval($request->input('paginar')) ? intval($request->input('paginar')) : self::$paginarPorDefecto;
  }

  public static function productosFilaID() {
    return Producto::pluck('id', 'fila',)->all();
  }

  public static function productosIDFila() {
      return Producto::pluck('fila', 'id',)->all();
  }

  public static function productosIDNombre() {
    return Producto::pluck('nombre', 'id',)->all();
  }

}