<?php

namespace App\Http\Controllers;
date_default_timezone_set('America/Mexico_city');
use Illuminate\Http\Request;
use Illuminate\Session\SessionManager;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Storage;
use App\Mail\EnvioMails;//Archivo PHP que se creo para el envio de archivos
use App\Mail\ServicioSocial;
use App\Http\Requests;
use App\Http\Requests\CreateEventoRequest;
use App\Http\Requests\UpdateEventoRequest;
use App\Http\Controllers\Controller;
use Carbon\Carbon;
use App\Actividad;
use App\Alumno;
use App\Autorizacion;
use App\Calendario;
use App\Carrera;
use App\Carta;
use App\Dependencia;
use App\Evaluacion;
use App\EvaluacionAlumno;
use App\EventoCalendario;
use App\Membrete;
use App\Programa;
use App\RenglonEvaluacion;
use App\Reporte;
use App\ReporteEvaluacion;
use App\Respuesta;
use App\Solicitud;
use App\SubirArchivo;
use App\TipoArchivo;
use File;
use put;
use DB;
use PDF;
use Download;
use View;
use App;
use Mail;
use Session;
use csrf_token;
use QrCode;
use Validator;

class EventoCalendarioController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(CreateEventoRequest $request)
    {
        $semestre = $request['semestre'];
        $fi = $request['fechaI'];
        $ft = $request['fechaT'];

        DB::beginTransaction();

        $s = DB::table('gtv_calendario')->where('periodo_cal', '=', $semestre)->get();

        $p = new EventoCalendario();

        $act = $request['act'];        
        $status = 1;     

        $p->id_act = $act;
        $p->status_evecal = $status;
        $p->finicio_evecal = $fi;
        $p->ftermino_evecal = $ft;
        $p->id_cal = $s[0]->id_cal;

        $p->save();

        if ($p) {
            $color= DB::table('gtv_calendario')->select('color_cal')
        ->where('id_cal', '=', $p->id_cal)
        ->get();

        DB::commit();
        return response()->json(array('color'=>$color,'p'=>$p));
        }else{
            DB::rollBack();
            return response()->json(['error'=>'Ocurrió un error. Vuelve a intentarlo.']);
        }        
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $evento = DB::table('gtv_eventocalendario')
        ->join('gtv_calendario', 'gtv_eventocalendario.id_cal', '=', 'gtv_calendario.id_cal')
        ->join('gtv_actividad', 'gtv_eventocalendario.id_act', '=', 'gtv_actividad.id_act')
        ->where('id_evecal', '=', $id)
        //->where('status_cal', '!=', 2)
        ->get();

        if (count($evento)>0) {
            return response()->json($evento);
        }

        /*if (count($evento)>0) {
            return response()->json($evento);
        }else{
            return response()->json(['error' => 'El evento no se puede modificar ya que pertenece a un calendario firmado y aprobado.']);
        }*/


    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(UpdateEventoRequest $request, $id)
    {
        $fi = $request['fechai_fc'];
        $ft = $request['fechat_fc'];

        DB::beginTransaction();

        $evento = EventoCalendario::find($id);

        if ($evento) {
            $evento->finicio_evecal = $fi;
            $evento->ftermino_evecal = $ft;
            $evento->save();

            $event = DB::table('gtv_eventocalendario')
        ->join('gtv_calendario', 'gtv_eventocalendario.id_cal', '=', 'gtv_calendario.id_cal')
        ->join('gtv_actividad', 'gtv_eventocalendario.id_act', '=', 'gtv_actividad.id_act')
        ->where('id_evecal', '=', $id)
        ->get();

            DB::commit();

            return response()->json($event);            
        }else{
            DB::rollBack();
            return response()->json(['error' => 'Lo sentimos no se encontró el evento, vuelve a intentarlo más tarde.']);
        }

        
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}
