<?php

namespace App\Http\Controllers;

use App\{Alumno,AlumnoHistoricoPagos,FormaPago,Servicios,Periodos};
use App\{Aspirante,AspiranteHistoricoPagos,Bitacora,Vaucher};
use Illuminate\Http\Request;
use Illuminate\Http\File;
use Illuminate\Support\Facades\Storage;

use Illuminate\Support\Facades\View;

class VaucherControllerRespaldo extends Controller
{

	public function prueba(){
		$now = new \DateTime();
		$hoy = $now->format('d');
		if ($hoy=='01') {
			$vau = Vaucher::where('created_at','LIKE', '%'.$now->format('Y-m-d').'%')->first();
			if ($vau==null) {
				
			}
		}
			

		dd($vau);
		//$serv = Servicios::where('nombre','INSCRIPCION')->where('estado','1')->first();
		//dd($serv);
		//if($serv==NULL){$serv=Servicios::where('id','6')->first();}
	}

	public function nuevo(Request $request){

		$data = $request->all();
		$pago=FormaPago::where('estado','1')->get();
		$peri = Periodos::where('vaucher', '1')->first();
		$fich = Periodos::where('ficha', '1')->first();

		//if(array_key_exists('no_solicitud', $data) && $data['no_solicitud']=='1' ){
			// bandera ['alumno','aspirante']
			if ($data['bandera']=='alumno') {
				$alumno=Alumno::where('id',$data['no_control'])->first();
				$comp=AlumnoHistoricoPagos::where('fk_idAlumno',$data['no_control'])->where('fk_idPeriodo',$peri->id)->with('observaciones','alumno.carrera')->first();
				if ($alumno!=null) {
					Bitacora::create(['fk_idFolio'=>$data['no_control']]);
					if ($comp==null) {
						return response()->json(['estado'=>'vista','vista'=>view('vaucher.nuevo_estudiante', compact('alumno','pago')).""]);
					} else {
						switch ($comp->fk_idEstado) {
							case '1': //Por revisar financieros
								return response()->json(['estado'=>'mensaje', 'mensaje'=>"Tu comprobante de pago esta siendo validado por el Departamento de Recursos Financieros."]);
								break;
							case '2': //Ya fue autoizado
								return response()->json(['estado'=>'mensaje', 'mensaje'=>"Tu comprobante de pago fue aprobado por el Departamento de Recursos Financieros."]);
								break;
							case '3': //tiene que volver a subirlo
								return response()->json(['estado'=>'vista','vista'=>view('vaucher.update_estudiante', compact('alumno','pago','comp')).""]);
								break;
						}
					}
				} else {
					return response()->json(['estado'=>'mensaje', 'mensaje'=>"El número de control no se encuentra registrado."]);
				}
			} else {
				
				if ($data['bandera']=='aspirante') {
					$aspirante=Aspirante::where('id',$data['no_solicitud'])->where('fk_idEstatus','3')->first();
					$comp=AspiranteHistoricoPagos::where('fk_idAspirante',$data['no_solicitud'])->where('fk_idPeriodo',$peri->id)->with('observaciones','aspirante.carrera')->first();
				} elseif ($data['bandera']=='ficha') {
					$aspirante=Aspirante::where('id',$data['no_solicitud'])->where('fk_idEstatus','1')->first();
					$comp=AspiranteHistoricoPagos::where('fk_idAspirante',$data['no_solicitud'])->where('fk_idPeriodo',$fich->id)->with('observaciones','aspirante.carrera')->first();
				} else {
					$aspirante=null;
				}

				if ($aspirante!=null) {
					Bitacora::create(['fk_idFolio'=>$data['no_solicitud']]);
					
						
					if ($comp==null) {
						if ($data['bandera']=='aspirante') {
							return response()->json(['estado'=>'vista','vista'=>view('vaucher.nuevo_aspirante', compact('aspirante','pago')).""]);
						} else {
							return response()->json(['estado'=>'vista','vista'=>view('vaucher.nuevo_ficha', compact('aspirante','pago')).""]);
						}
					} else {
						switch ($comp->fk_idEstado) {
							case '1': //Por revisar financieros
								return response()->json(['estado'=>'mensaje', 'mensaje'=>"Tu comprobante de pago esta siendo validado por el Departamento de Recursos Financieros."]); break;
							case '2': //Ya fue autoizado
								return response()->json(['estado'=>'mensaje', 'mensaje'=>"Tu comprobante de pago fue aprobado por el Departamento de Recursos Financieros."]); break;
							case '3': //tiene que volver a subirlo
								if ($data['bandera']=='aspirante') {
									return response()->json(['estado'=>'vista','vista'=>view('vaucher.update_aspirante', compact('aspirante','pago','comp')).""]); 
								} else {
									return response()->json(['estado'=>'vista','vista'=>view('vaucher.update_ficha', compact('aspirante','pago','comp')).""]); 
								}
							break;
						}

					}
					
				} else {
					return response()->json(['estado'=>'mensaje', 'mensaje'=>"El número de solicitud no se encuentra registrado. En un lapso de 24 hrs. despues de tu registro, se vera reflejado."]);
				}
			}
		/*} else {
			return response()->json(['estado'=>'mensaje', 'mensaje'=>"El portal esta en mantenimiento, por favor intenta en unos minutos."]);
		}*/
		
	}

	public function save(Request $request){
		$data=$request->all();
		$file = $request->file('imagen');
    $exte = $file->getClientOriginalExtension();
    $fpa = FormaPago::where('id', $data['metodo'])->first();
		$peri = Periodos::where('vaucher', '1')->first();
		$fich = Periodos::where('ficha', '1')->first();
		$now = new \DateTime();
		$hoy = $now->format('d');
		if ($hoy=='01') {
			$vau = Vaucher::where('created_at','LIKE', '%'.$now->format('Y-m-d').'%')->first();
			if ($vau==null) {
				$peri->consecutivo_vaucher = 1;
				$peri->save();
			}
		}

    if ($exte=='jpg' || $exte=='jpeg' || $exte=='JPG' || $exte=='JPEG' || $exte=='png' || $exte=='PNG') {
			/* Bandera ['alumno','aspirante'] */
			if ($data['bandera']=='alumno') {
				$alum = Alumno::where('id', $data['no_control'])->first();
				$alum->celular = $data['celular'];
				$alum->save();
				
				$name = "R_".$data['no_control']."_".$now->format('dm:Hi').'.'.$exte;
				$serv = Servicios::where('nombre','REINSCRIPCION')->where('estado','1')->where('costo',$data['importe'])->first();
				if($serv==NULL){$serv=Servicios::where('id','6')->first();}

				$pago = AlumnoHistoricoPagos::create([
								'fk_idServicio'=>$serv->id,
								'fk_idAlumno'=>$data['no_control'],
								'fk_idFormaPago'=>$data['metodo'],
								'fk_idPeriodo'=>$peri->id,
								'fk_idAutorizo'=>'999',
								'fk_idEstado'=>'1',
								'importe'=>$data['importe'],
								'referencia'=>$data['referencia'],
								'imagen'=>$name,
								'fecha_pago'=>$data['fecha_pago'],
								'consecutivo'=>$peri->consecutivo_vaucher,
							]);
				$path = $request->file('imagen')->storeAs($peri->nombre, $name, 'vaucher'); 

			} elseif ($data['bandera']=='aspirante') { 
				$alum = Aspirante::where('id', $data['no_solicitud'])->first();
				$alum->celular = $data['celular'];
				$alum->save();

				$name = "I_".$data['no_solicitud']."_".$now->format('dm:Hi').'.'.$exte;
				$serv = Servicios::where('nombre','INSCRIPCION')->where('estado','1')->where('costo',$data['importe'])->first();
				if($serv==NULL){$serv=Servicios::where('id','6')->first();}

				$pago = AspiranteHistoricoPagos::create([
								'fk_idServicio'=>$serv->id,
								'fk_idAspirante'=>$data['no_solicitud'],
								'fk_idFormaPago'=>$data['metodo'],
								'fk_idPeriodo'=>$peri->id,
								'fk_idAutorizo'=>'999',
								'fk_idEstado'=>'1',
								'importe'=>$data['importe'],
								'referencia'=>$data['referencia'],
								'imagen'=>$name,
								'fecha_pago'=>$data['fecha_pago'],
								'consecutivo'=>$peri->consecutivo_vaucher,
							]);
				$path = $request->file('imagen')->storeAs($peri->nombre, $name, 'vaucher'); 

			} elseif ($data['bandera']=='ficha') { 
				$alum = Aspirante::where('id', $data['no_solicitud'])->first();
				$alum->celular = $data['celular'];
				$alum->save();
				
				$name = "F_".$data['no_solicitud']."_".$now->format('dm:Hi').'.'.$exte;
				$serv = Servicios::where('costo',$data['importe'])->first();
				if($serv==NULL){$serv=Servicios::where('id','6')->first();}

				$pago = AspiranteHistoricoPagos::create([
								'fk_idServicio'=>$serv->id,
								'fk_idAspirante'=>$data['no_solicitud'],
								'fk_idFormaPago'=>$data['metodo'],
								'fk_idPeriodo'=>$fich->id,
								'fk_idAutorizo'=>'999',
								'fk_idEstado'=>'1',
								'importe'=>$data['importe'],
								'referencia'=>$data['referencia'],
								'imagen'=>$name,
								'fecha_pago'=>$data['fecha_pago'],
								'consecutivo'=>$peri->consecutivo_vaucher,
							]);

				$path = $request->file('imagen')->storeAs($fich->nombre, $name, 'vaucher'); 
			}
			$peri->consecutivo_vaucher = $peri->consecutivo_vaucher+1;
			$peri->save();
			
			return response()->json(['estado'=>'exito', 'mensaje'=>'Muchas gracias, tu vaucher ha sido registado de manera exitosa. <br>Se te notificará a tu correo cuando sea validado.' ]);
		} else {
			return response()->json(['estado'=>'error', 'mensaje'=>'Solo esta permitido subir imagenes en formato jpg, png, jpeg.']);
		}
	}

	public function update(Request $request){
		$data=$request->all();
		if ($data['bandera']=='alumno') {
			$alum= Alumno::where('id', $data['no_control'])->first();
			$alup= AlumnoHistoricoPagos::where('id',$data['idPago'])->first();
		} else {
			$alum= Aspirante::where('id', $data['no_control'])->first();
			$alup= AspiranteHistoricoPagos::where('id',$data['idPago'])->first();
		}

		$fich = Periodos::where('ficha', '1')->first();
		$peri = Periodos::where('vaucher', '1')->first();
		
		$file = $request->file('imagen');
    $exte = $file->getClientOriginalExtension();
    $now = new \DateTime();
    
    if ($exte=='jpg' || $exte=='jpeg' || $exte=='JPG' || $exte=='JPEG' || $exte=='png' || $exte=='PNG') {
	   
	   	if ($data['bandera']=='ficha') { Storage::disk('vaucher')->delete($fich->nombre.'/'.$alup->imagen);
	   	} else { Storage::disk('vaucher')->delete($peri->nombre.'/'.$alup->imagen);	}
	    
	    if ($data['bandera']=='ficha') {
	    	$name = 'F_'.$data['no_control']."_".$now->format('dm:Hi').'.'.$exte;
		   	$serv = Servicios::where('costo',$data['importe'])->first();
		  } elseif($data['bandera']=='alumno'){
		  	$name = 'R_'.$data['no_control']."_".$now->format('dm:Hi').'.'.$exte;
		  	$serv = Servicios::where('nombre','REINSCRIPCION')->where('estado','1')->where('costo',$data['importe'])->first();
		  } else {
		  	$name = 'I_'.$data['no_control']."_".$now->format('dm:Hi').'.'.$exte;
		  	$serv = Servicios::where('nombre','INSCRIPCION')->where('estado','1')->where('costo',$data['importe'])->first();
		  }
			if($serv==NULL){$serv=Servicios::where('id','6')->first();}

			$alup->fk_idServicio=$serv->id;
			$alup->fk_idFormaPago=$data['metodo'];
			$alup->importe=$data['importe'];
			$alup->referencia=$data['referencia'];
			$alup->fecha_pago=$data['fecha_pago'];
			$alup->imagen = $name;
			$alup->fk_idEstado = '1';
			$alup->save();
						
			if ($data['bandera']=='ficha') {
	   		$path = $request->file('imagen')->storeAs($fich->nombre, $name, 'vaucher');
	   	} else {
	   		$path = $request->file('imagen')->storeAs($peri->nombre, $name, 'vaucher');
	   	}
			
			return response()->json(['estado'=>'exito', 'mensaje'=>'Muchas gracias, tu vaucher ha sido actualizado de manera exitosa. <br>Se te notificará a tu correo cuando sea validado.' ]);
		} else {
			return response()->json(['estado'=>'error', 'mensaje'=>'Solo esta permitido subir imagenes en formato jpg, png, jpeg.']);
		}
	}
}
