<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Mpdf\Mpdf;
use League\Csv\CannotInsertRecord;
use League\Csv\Writer;
use App\Producto;
use DB;

class GrupoDeCompra extends Model
{
  public $timestamps = false;
  protected $fillable = [ "nombre","region","telefono","correo","referente_finanzas","cantidad_de_nucleos","fila"];
  protected $table = 'grupos_de_compra';
  protected $hidden = ['password'];

  public function subpedidos() {
  	return $this->hasMany('App\Subpedido');
  }

  public function exportarPlanillasAPdf() {
      $subpedidos = $this->subpedidos;
      //generar pdf
      $mpdf = new Mpdf();;
      foreach ($subpedidos as $subpedido) {
          $tabla = $subpedido->generarHTML();
          // agregar la tabla al pdf en una nueva página
          $mpdf->WriteHTML($tabla);
          $mpdf->AddPage();
      }
      // imprimir el pdf
      $mpdf->Output();
  }

  public function exportarPedidoEnCSV(){
    $productos = Producto::pluck('id','fila')->all();
    $ultima_fila = end(array_keys($productos));
    $productos_en_pedido = DB::table('pedidos_aprobados')->where('grupo_de_compra_id',$this->id)->get()->keyBy('producto_id');

    $records = [];
    for ($i=1; $i <= $ultima_fila; $i++) {
      if ($productos[$i]) {
        if ($productos_en_pedido[$productos[$i]]){
          $producto_en_pedido = $productos_en_pedido[$productos[$i]];
          $records[] = [$producto_en_pedido->producto_nombre,$producto_en_pedido->cantidad_pedida];
        } else {
          $records[] = ['producto no pedido',0];
        }
      } else {
        $records[] = ['',''];
      }
    }

    try {
      $writer = Writer::createFromPath(resource_path('csv/exports/'.$this->nombre.'.csv'), 'w');
      $writer->insertAll($records);
    } catch (CannotInsertRecord $e) {
      var_export($e->getRecords());
    }
  }

  public static function exportarTodosLosPedidosEnCSV(){
    $gdcs=GrupoDeCompra::all();
    foreach ($gdcs as $gdc){ $gdc->exportarPedidoEnCSV(); }
  }

}