public JsonResult ValidarReserva(ReservaGrupo model) { List<string> result = _repo.ValidarReserva(model); if (result.Count > 0) return Json(result.ToArray(), JsonRequestBehavior.AllowGet); else return Json(true, JsonRequestBehavior.AllowGet); }
public ActionResult Reservar() { ReservaGrupo model = new ReservaGrupo(); model.Recursos = _repo.GetRecursos(); model.HoraList = _repo.GetHours(); model.DiaList = _repo.GetDays(); model.GrupoList = _repo.GetGruposPersonalizados(); return View(model); }
public ActionResult Reservar(ReservaGrupo model) { try { if (ModelState.IsValid) { _repo.insert(model); TempData["Success"] = "La reserva ha sido registrada satisfactoriamente"; } return RedirectToAction("Index", "Reserva"); } catch (Exception) { TempData["Error"] = "No se pudieron guardar los cambios, intente de nuevo por favor."; return RedirectToAction("Index", "Reserva"); } }
private List<string> validarLicencias(ReservaGrupo model) { List<string> result = new List<string>(); var grupo = db.grupoes.Find(Convert.ToInt32(model.Grupo)); var usuariosGrupo = grupo.usuarios_grupo.ToList<usuarios_grupo>(); var dia = Convert.ToByte(model.DiaReserva); var horaInicio = Convert.ToInt16(model.HoraInicio); var horaFin = Convert.ToInt16(model.HoraFin); var licenciasRequeridas = usuariosGrupo.Count; if (validateLicencesCitrix(model.FechaInicio, model.FechaFin, horaInicio, horaFin, dia, licenciasRequeridas) < 1) { result.Add("No hay disponibilidad de licencias citrix en la fecha seleccionada"); } foreach (var recursoId in model.Recurso) { if (validateLicencesResource(model.FechaInicio, model.FechaFin, horaInicio, horaFin, dia, Convert.ToInt32(recursoId), licenciasRequeridas) < 1) { recurso app = db.recursoes.Find(Convert.ToInt32(recursoId)); result.Add(String.Format("No hay disponibilidad de licencias de {0} en la fecha seleccionada", app.nombre)); } } return result; }
private List<string> grupoTieneReserva(ReservaGrupo model) { List<string> result = new List<string>(); var grupo_id = Convert.ToInt32(model.Grupo); var dia = Convert.ToByte(model.DiaReserva); var horaInicio = Convert.ToInt16(model.HoraInicio); var horaFin = Convert.ToInt16(model.HoraFin); foreach (string recurso_id in model.Recurso) { foreach (int num in db.grupoTieneReserva(grupo_id, dia, horaInicio, horaFin, Convert.ToInt32(recurso_id))) { if (num > 0) { var recurso = db.recursoes.Find(Convert.ToInt32(recurso_id)); result.Add(String.Format("El grupo seleccionado ya tiene una reserva el día {0} de {1}.", Utils.getDayOfWeek(dia), recurso.nombre)); } } } return result; }
public List<string> ValidarReserva(ReservaGrupo model) { List<string> result = new List<string>(); if (model.Grupo == null) result.Add("Seleccione el grupo personalizado"); if (model.DiaReserva == null) result.Add("Seleccione el día de la reserva"); if (model.HoraInicio == null) result.Add("Seleccione la hora de inicio de la reserva"); if (model.HoraFin == null) result.Add("Seleccione la hora final de la reserva"); if (model.GetFechaInicio() == null) { result.Add("Seleccione la fecha de inicio"); } else { if (model.GetFechaInicio().Date < DateTime.Now.Date) result.Add("Seleccione una fecha de inicio válida"); } if (model.GetFechaFin() == null) { result.Add("Seleccione la fecha de inicio"); } else { if (model.GetFechaFin().Date < DateTime.Now.Date) result.Add("Seleccione una fecha fin válida"); } if (model.GetFechaInicio() != null && model.GetFechaFin() != null) { if (model.GetFechaFin().Date < model.GetFechaInicio().Date) result.Add("Seleccione una fecha de vigencia de la reserva válida"); } //Validar la hora de la reserva if (Convert.ToInt16(model.HoraInicio) >= Convert.ToInt16(model.HoraFin)) result.Add("Seleccione un horario de la reserva válido"); if(model.Recurso == null) result.Add("Seleccione al menos una aplicación"); if(result.Count == 0) { var validacionLicencias = this.validarLicencias(model); if (validacionLicencias.Count > 0) result.AddRange(validacionLicencias); //Validar si ya existe una reserva var tieneReserva = this.grupoTieneReserva(model); if (tieneReserva.Count > 0) result.AddRange(tieneReserva); } return result; }
public void insert(ReservaGrupo model) { using (var transaction = db.Database.BeginTransaction()) { try { var grupo_id = Convert.ToInt32(model.Grupo); var grupo = db.grupoes.Find(grupo_id); var dia = Convert.ToByte(model.DiaReserva); var horaInicio = Convert.ToInt16(model.HoraInicio); var horaFin = Convert.ToInt16(model.HoraFin); reserva reserva = new reserva(); reserva.fecha_inicio = model.GetFechaInicio(); reserva.fecha_final = model.GetFechaFin(); reserva.dia = dia; reserva.hora_inicial = horaInicio; reserva.hora_final = horaFin; reserva.tipo_reserva = "3"; reserva.grupo_id = grupo_id; reserva.fecha_registro = DateTime.Now; db.reservas.Add(reserva); db.SaveChanges(); foreach (var recursoId in model.Recurso) { this.insertarRecursoReserva(reserva, Convert.ToInt32(recursoId)); } foreach (var usuario in grupo.usuarios_grupo.ToList<usuarios_grupo>()) { this.insertarUsuarioReserva(reserva, usuario.oprid); } transaction.Commit(); //db.RegisterEvents(); } catch (Exception) { transaction.Rollback(); throw; } } }