<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\DistribucionFichero;
use App\DistribucionFicheroInfo;
use App\Socio;
use App\Gira;
use App\Linea;
use App\Apm;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use App\PlanTrabajo;

class DistribucionFicheroController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $distribucionFichero=DistribucionFicheroInfo::all();
        return view('distribucion_fichero.lista',compact('distribucionFichero'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create(Request $request)
    {
        //
        
        $apm=Apm::where('id',$request->id_apm)->first();
        $girasApm=PlanTrabajo::where('id_apm',$request->id_apm)->get();
        $ano=date("Y");
        $mes=date("m");
        foreach($girasApm as $gira){
            $datas=DB::table('crm_socio')
                            ->where('crm_socio.id_gira',$gira->id_gira)
                            ->join('crm_linea_socio', 'crm_socio.id', 'crm_linea_socio.id_socio')
                            ->where('crm_linea_socio.id_linea', $apm->id_linea)
                            ->join('crm_linea', 'crm_linea_socio.id_linea', 'crm_linea.id')
                            ->join('crm_gira', 'crm_socio.id_gira', 'crm_gira.id')
                            ->join('crm_tipo_socio', 'crm_socio.id_tipo_socio', 'crm_tipo_socio.id')
                            ->join('crm_clasificacion', 'crm_socio.id_clasificacion', 'crm_clasificacion.id')
                            ->join('crm_especialidad', 'crm_socio.id_especialidad', 'crm_especialidad.id')
                            ->select('crm_socio.id','crm_clasificacion.descripcion_clasificacion','crm_tipo_socio.descripcion_tipo_socio','crm_especialidad.descripcion_especialidad','crm_gira.descripcion_gira','crm_socio.id_gira','crm_socio.primer_nombre_socio','crm_socio.segundo_nombre_socio',
                            'crm_socio.primer_apellido_socio','crm_socio.segundo_apellido_socio')
                            ->get();

            if(@$datas[0]->id){
                foreach($datas as $data){
                    $socios[]=$data;
                }
                
            }
        }
        //dd( $socios);
        return view('distribucion_fichero.nuevo',compact('socios','apm','ano','mes'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $fechaInicio = date("Y-m-d", strtotime($request->fecha_inicio));
        $fechaFinal = date("Y-m-d", strtotime($request->fecha_final));
        $fechaHoy=date("Y-m-d");

        if($fechaInicio>$fechaFinal){
            $arrResponse = [
                'message' => 'Error en la fecha'
            ];
            return redirect()->route('fichero.index')->with($arrResponse);
            dd();
        }
        $buscarFichero=DistribucionFicheroInfo::where('fecha_final','>',$fechaInicio)
                                                ->where('id_user',$request->id_user)
                                                ->first();
        if($buscarFichero){
            $arrResponse = [
                'message' => 'La fecha ya esta asignada'
            ];
            return redirect()->route('fichero.index')->with($arrResponse);
        }else{
            //Nuevo fichero
            $ficheroInfo=new DistribucionFicheroInfo();
            $ficheroInfo->nombre_fichero = $request->nombre_fichero;
            $ficheroInfo->id_user = $request->id_user;
            $ficheroInfo->fecha_inicio = $fechaInicio;
            $ficheroInfo->fecha_final = $fechaFinal;
            $ficheroInfo->save();

            foreach($request->idSocios as $i=>$idSocio){
            if( @$request->socioSi[$i]){
                    $asignacionFichero = new DistribucionFichero();
                    $asignacionFichero->id_fichero = $ficheroInfo->id;
                    $asignacionFichero->id_socio = $idSocio;
                    $asignacionFichero->id_apm_user = $request->id_user;
                    $asignacionFichero->save();
                }
            }
            $arrResponse = [
                'message' => 'Asignacion de fichero guardado correctamente'
            ];
            return redirect()->route('fichero.index')->with($arrResponse);
        }
        
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit(DistribucionFicheroInfo $fichero)
    {
        //
        //dd('Entro');
        $apm=Apm::where('id_user',$fichero->id_user)->first();
        $ficheros=DistribucionFichero::where('id_fichero',$fichero->id)->get();
        $ficherosJson=json_encode($ficheros);
        $girasApm=PlanTrabajo::where('id_apm',$apm->id)->get();
        foreach($girasApm as $gira){
            $datas=DB::table('crm_socio')
                            ->where('crm_socio.id_gira',$gira->id_gira)
                            ->join('crm_linea_socio', 'crm_socio.id', 'crm_linea_socio.id_socio')
                            ->where('crm_linea_socio.id_linea', $apm->id_linea)
                            ->join('crm_linea', 'crm_linea_socio.id_linea', 'crm_linea.id')
                            ->join('crm_gira', 'crm_socio.id_gira', 'crm_gira.id')
                            ->join('crm_tipo_socio', 'crm_socio.id_tipo_socio', 'crm_tipo_socio.id')
                            ->join('crm_clasificacion', 'crm_socio.id_clasificacion', 'crm_clasificacion.id')
                            ->join('crm_especialidad', 'crm_socio.id_especialidad', 'crm_especialidad.id')
                            ->select('crm_socio.id','crm_clasificacion.descripcion_clasificacion','crm_tipo_socio.descripcion_tipo_socio','crm_especialidad.descripcion_especialidad','crm_gira.descripcion_gira','crm_socio.id_gira','crm_socio.primer_nombre_socio','crm_socio.segundo_nombre_socio',
                            'crm_socio.primer_apellido_socio','crm_socio.segundo_apellido_socio')
                            ->get();

            if(@$datas[0]->id){
                foreach($datas as $data){
                    $socios[]=$data;
                }
                
            }
        }
        //dd($socios);
        return view('distribucion_fichero.editar',compact('socios','apm','fichero','ficheros','girasApm','ficherosJson'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, DistribucionFicheroInfo $ficheroInfo)
    {
        //
        $fechaInicio = date("Y-m-d", strtotime($request->fecha_inicio));
        $fechaFinal = date("Y-m-d", strtotime($request->fecha_final));

        //Nuevo fichero
        $ficheroInfo->id_user = $request->id_user;
        $ficheroInfo->fecha_inicio = $fechaInicio;
        $ficheroInfo->fecha_final = $fechaFinal;
        $ficheroInfo->update();
        DistribucionFichero::where('id_fichero',$ficheroInfo->id)->delete();
        foreach($request->socioSi as $idSocio){
            $asignacionFichero = new DistribucionFichero();
            $asignacionFichero->id_fichero = $ficheroInfo->id;
            $asignacionFichero->id_socio = $idSocio;
            $asignacionFichero->id_apm_user = $request->id_user;
            $asignacionFichero->save();
        }
        $arrResponse = [
            'message' => 'Asignacion de fichero actualizado correctamente'
        ];
        return redirect()->route('fichero.index')->with($arrResponse);
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
        DistribucionFicheroInfo::destroy($id);
        DistribucionFichero::where('id_fichero',$id)->delete();
        $arrResponse = [
            'message' => 'Fichero eliminado correctamente'
        ];
        return redirect()->route('fichero.index')->with($arrResponse);
    }
    public function buscar(){
        $idGL=Auth::id();
        $glInfo=Apm::where('id_user',$idGL)->first();
        $lineaGL=$glInfo->id_linea;

        $apms=Apm::where('id_linea',$lineaGL)
                    ->where('id_user','!=',$idGL)
                    ->get();
        return view('distribucion_fichero.buscar',compact('apms'));
    }
}
