<?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\StoreRespuestaRequest;
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 RespuestaController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $correo = new Respuesta();
            
            $correo->msj_res= 'hola';
            $correo->id_alu = 1;
            $correo->save();
        //Se envia el correo
            Mail::to('lupiz95moreno@gmail.com')->send(new ServicioSocial($correo));
    }

    /**
     * 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(StoreRespuestaRequest $request,$id)
    {
        $res = $request['tipoRes'];
        $p = $request['periodoRes'];
        $oficio = $request['oficio'];
        $idAlu = $request['idCorreo'];
        $idSol = $request['id_mod'];
        $email = $request['email_mod'];
        $mnsj = $request['mnsj_mod'];

        DB::beginTransaction();

        if ($res=='aceptada') {
            $fech = DB::table('gtv_calendario')
            ->join('gtv_eventocalendario', 'gtv_calendario.id_cal', '=', 'gtv_eventocalendario.id_cal')
            ->where('periodo_cal', '=', $p)
            ->where('id_act', '=', 5)->get();

            $nombre = Session::get('nombre');
            $cargo = Session::get('cargo');
            $dpto = Session::get('departamento');

            $cadena = explode(' ', $nombre);

            $i=count($cadena);
            $j=0;

            while ($j<$i) {
                $c[$j] = str_limit($cadena[$j], 1, '');
                $j++;
            }

            $m=1;
            $iniciales = '';
            $n=count($c);
            while ($m<$n) {
                $iniciales = $iniciales.$c[$m];
                $m++;
            }

            $firma = $nombre.'_'.$cargo.'_'.$dpto;   

            $c = new \Carbon\Carbon();
            $f = $c->now();
            $año = $f->format('Y');

            $oficioo ='GTV/'.$iniciales.'/'.$oficio.'/'.$año;

            $existe = Carta::where('numoficio_car',$oficioo)->get();
            if (count($existe)>0) {
                DB::rollBack();
                return response()->json(['error'=>'El número de oficio ya existe registrado.']);
            }

            $correo = new Respuesta();

            $correo->msj_res= $mnsj;
            $correo->id_alu = $idAlu;
            
            $carta = new Carta();

            $carta->fecha_car= $fech[0]->finicio_evecal;
            $carta->numoficio_car = $oficioo;
            $carta->status_car = 1;
            $carta->id_alu = $idAlu;
            $carta->firmaDpto_car = $firma;


            $solicitud = Solicitud::find($idSol);

            $solicitud->status_sol=2;

            $correo->save();
            $carta->save();
            $solicitud->save();  

            if ($correo && $carta && $solicitud) {
                $alumno = Alumno::find($idAlu);
                $alumno->soli_alu = 1;
                $alumno->carta_alu = 1;
                $alumno->presentacion_alu = 1;
                $alumno->save();

                //Se envia el correo
                Mail::to($email)->send(new ServicioSocial($correo));
                DB::commit();
            }else{
                DB::rollBack();
            }

            return response()->json($solicitud);
        }

        
    }

    public function storeRechazada(Request $request,$id)
    {
        $res = $request['tipoRes'];
        $p = $request['periodoRes'];
        $oficio = $request['oficio'];
        $idAlu = $request['idCorreo'];
        $idSol = $request['id_mod'];
        $email = $request['email_mod'];
        $mnsj = $request['mnsj_mod'];

        DB::beginTransaction();

        if ($res=='rechazada') {
            $correo = new Respuesta();
            
            $correo->msj_res= $mnsj;
            $correo->id_alu = $idAlu;

            $solicitud = Solicitud::find($idSol);

            $solicitud->status_sol=3;

            $correo->save();
            $solicitud->save();

            if ($correo && $solicitud) {
                $alumno = Alumno::find($idAlu);
                $alumno->soli_alu = 0;
                $alumno->carta_alu = 0;
                $alumno->presentacion_alu = 0;
                $alumno->save();
                //Se envia el correo
                Mail::to($email)->send(new ServicioSocial($correo));
                DB::commit();
            }else{
                DB::rollBack();
            }

        //Se envia el correo

            return response()->json($solicitud);
        }

        
    }

    /**
     * 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($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

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

}
