protected function esFechaValida($fechaHora)
 {
     $horaEnviada = $fechaHora->format('H:i');
     $dayOfWeek = $fechaHora->dayOfWeek;
     $dia = Dia::find($dayOfWeek);
     $horarios = $dia->Horarios()->get();
     foreach ($horarios as $hora) {
         if ($hora->nombre == $horaEnviada) {
             //si no existe cita
             if (is_null(Cita::where('dia_id', '=', $dayOfWeek)->where('hora_id', '=', $hora->id)->first())) {
                 return true;
             }
         }
     }
     return false;
 }
 public function guardarCita(Request $request)
 {
     $cliente = $request->input('user_id');
     $programa = $request->input('producto_id');
     $fecha = Carbon::createFromFormat('Y-m-d', $request->input('fecha'));
     $horaId = $request->input('hora');
     $hora = Horario::find($horaId);
     if (!is_null(Cita::where('dia_id', '=', $fecha->dayOfWeek)->where('hora_id', '=', $horaId)->first())) {
         return \Redirect::back()->with('error', 'Ya existe una cita para la fecha y hora seleccionada.');
     }
     $cita = new Cita();
     $cita->user_id = $cliente;
     $cita->producto_id = $programa;
     $cita->fecha = $request->input('fecha');
     $cita->hora = $hora->nombre;
     $cita->dia_id = $fecha->dayOfWeek;
     $cita->creadaporadmin = 1;
     $cita->hora_id = $horaId;
     $cita->save();
     return \Redirect::back()->with('message', 'La cita ha sido creada exitosamente.');
 }
 protected function esFechaValida($fecha, $horaId, $userId = null, $productoId = null)
 {
     $cita = Cita::where('fecha', '=', $fecha)->where('hora_id', '=', $horaId)->first();
     if (is_null($cita)) {
         //no encontre cita
         return true;
     } else {
         //si encontre, ahora si llega userId y productoId, valido que la cita encontrada, no sea del mismo usuario y mismo producto
         if ($userId > 0 and $productoId > 0) {
             if ($cita->user_id == $userId and $cita->producto_id == $productoId) {
                 return true;
             } else {
                 return false;
             }
         } else {
             return false;
         }
     }
 }