public function crearCalendario(Request $request)
 {
     $producto = Producto::find($request->input('producto_id'));
     $dia_cita = $request->input('dia_cita');
     $hora_cita = $request->input('hora_cita');
     if (is_null($producto)) {
         $code = 1;
         $message = "El producto no existe";
     } else {
         $dayOfWeek = Carbon::now()->dayOfWeek;
         $horaNombre = Horario::find($hora_cita)->nombre;
         $today = Carbon::now()->toDateString();
         $dt_selected = Carbon::createFromFormat('Y-m-d H:i', $today . " " . $horaNombre);
         if ($dayOfWeek >= $dia_cita) {
             $citaInicial = Carbon::now()->next($dia_cita);
             //la cita es next day seleccionado porque seria la semana siguiente
         } else {
             //si la hora actual < la hora seleccionada
             if (Carbon::now()->lt($dt_selected)) {
                 $citaInicial = Carbon::now()->next($dia_cita);
             } else {
                 //si la hora seleccionada es < que la hora actual
                 //la cita es la proxima semana
                 $citaInicial = Carbon::now()->next($dia_cita)->addWeek();
             }
         }
         for ($i = 1; $i <= $producto->cantidad_citas; $i++) {
             if ($i == 1) {
                 $fechaCita = $citaInicial;
             } else {
                 $fechaCita = $fechaCita->addWeeks(2);
             }
             $esDiaInhabil = true;
             while ($esDiaInhabil) {
                 if ($this->esDiaInhabil($fechaCita->toDateString()) or !$this->esFechaValida($fechaCita->toDateString(), $hora_cita)) {
                     $fechaCita = $fechaCita->addWeek();
                 } else {
                     $esDiaInhabil = false;
                 }
             }
             $cita = new Cita();
             $cita->user_id = Auth::user()->id;
             $cita->producto_id = $producto->id;
             $cita->fecha = $fechaCita->toDateString();
             $cita->hora = $horaNombre;
             $cita->dia_id = $dia_cita;
             $cita->hora_id = $hora_cita;
             $cita->save();
         }
         //ponemos el producto configurado.
         $productoUser = Producto::find($request->input('producto_id'))->Usuarios()->updateExistingPivot(Auth::user()->id, array('configurado' => 2));
         $code = 0;
         $message = "OK";
     }
     $user = User::find(Auth::user()->id);
     $this->enviarCalendarioPorMail($producto, $user);
     return response()->json(["success" => true, "code" => $code, "message" => $message]);
 }
 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.');
 }
 public function guardarCitaUnica(Request $request)
 {
     $producto = Producto::find($request->input('producto_id'));
     if (is_null($producto)) {
         App::abort(404);
     }
     $user = User::find(Auth::user()->id);
     $fechaCarbon = Carbon::createFromFormat("Y-m-d", $request->input('fecha'));
     $dia_cita = $fechaCarbon->dayOfWeek;
     $horaFormatHM = substr($request->input('hora'), 0, 5);
     $horario = Horario::whereNombre($horaFormatHM)->first();
     if (is_null($horario)) {
         return \Redirect::back()->with('error', 'OcurriĆ³ un error con la fecha.');
     }
     $hora_cita = $horario->id;
     $cita = new Cita();
     $cita->user_id = Auth::user()->id;
     $cita->producto_id = $request->input('producto_id');
     $cita->fecha = $request->input('fecha');
     $cita->hora = $request->input('hora');
     $cita->dia_id = $dia_cita;
     $cita->hora_id = $hora_cita;
     $cita->save();
     //ponemos el producto configurado.
     $productoUser = Producto::find($request->input('producto_id'))->Usuarios()->updateExistingPivot(Auth::user()->id, array('configurado' => 2));
     $this->enviarCalendarioPorMail($producto, $user);
     return \Redirect("misproductos/ver/" . $request->input('producto_id'));
 }