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')); }