public ActionResult Reservar(ReservaClase model) { try { if (ModelState.IsValid) { _repo.InsertarReserva(model); TempData["Success"] = "La reserva ha sido registrada satisfactoriamente"; return RedirectToAction("Index", "Reserva"); } } catch (Exception) { ModelState.AddModelError(string.Empty, "No se puede guardar la transacción. Inténtalo de nuevo, y si el problema persiste póngase en contacto con el administrador del sistema."); } IList<SelectListItem> classes = new List<SelectListItem>(); classes.Add(new SelectListItem() { Text = "Seleccione", Value = "" }); model.Clases = classes; model.Recursos = _repo.GetRecursos(); return View(model); }
public JsonResult ValidarReserva(ReservaClase 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() { ReservaClase model = new ReservaClase(); IList<SelectListItem> classes = new List<SelectListItem>(); classes.Add(new SelectListItem() { Text = "Seleccione", Value = "" }); model.Clases = classes; model.Recursos = _repo.GetRecursos(); return View(model); }
private List<string> validarLicencias(ReservaClase model) { List<string> result = new List<string>(); ///VALIDAR LICENCIAS string[] clase = model.Clase.Split('-'); var strm = clase[0]; var class_nbr = clase[1]; var usuariosClase = this.GetUsuariosByClase(strm, model.IdCurso, class_nbr); foreach (string reunion in model.Reunion) { string[] reu = reunion.Split('-'); var dia = Convert.ToByte(reu[0]); var horaInicio = Convert.ToInt16(reu[1]); var horaFin = Convert.ToInt16(reu[2]); var licenciasRequeridas = usuariosClase.Count; if (dia == 0) { result.Add("La reunión seleccionada no posee día"); } else { 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 = dbSql.recursoes.Find(Convert.ToInt32(recursoId)); result.Add(String.Format("No hay disponibilidad de licencias de {0} en la fecha seleccionada", app.nombre)); } } } }//FIN FOREACH REUNION return result; }
private List<string> claseTieneReserva(ReservaClase model) { List<string> result = new List<string>(); string[] clase = model.Clase.Split('-'); var strm = clase[0]; var class_nbr = clase[1]; var crse_id = model.IdCurso; foreach (string reunion in model.Reunion) { string[] reu = reunion.Split('-'); var dia = Convert.ToByte(reu[0]); var horaInicio = Convert.ToInt16(reu[1]); var horaFin = Convert.ToInt16(reu[2]); foreach (string recurso_id in model.Recurso) { foreach (int num in dbSql.claseTieneReserva(strm, crse_id, class_nbr, dia, horaInicio, horaFin, Convert.ToInt32(recurso_id))) { if (num > 0) { var recurso = dbSql.recursoes.Find(Convert.ToInt32(recurso_id)); result.Add(String.Format("La clase seleccionada ya tiene una reserva el día {0} de {1}.", Utils.getDayOfWeek(dia), recurso.nombre)); } } } //claseTieneReserva(string strm, string crse_id, string class_nbr, int dia, int hora_inicial, int hora_final, int recurso_id) } return result; }
public List<string> ValidarReserva(ReservaClase model) { List<string> result = new List<string>(); if (model.IdCurso == null) result.Add("Seleccione el curso"); if (model.Clase == null) result.Add("Seleccione la clase"); if (model.Reunion == null) result.Add("Seleccione al menos una reunión"); if (model.Recurso == null) result.Add("Seleccione al menos una aplicación"); 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"); } if (model.Clase != null && model.Reunion != null && model.Recurso != null) { var validacionLicencias = this.validarLicencias(model); if (validacionLicencias.Count > 0) result.AddRange(validacionLicencias); var tieneReserva = this.claseTieneReserva(model); if (tieneReserva.Count > 0) result.AddRange(tieneReserva); } return result; }
public void InsertarReserva(ReservaClase model) { using (var transaction = dbSql.Database.BeginTransaction()) { try { string[] clase = model.Clase.Split('-'); var strm = clase[0]; var class_nbr = clase[1]; foreach (string reunion in model.Reunion) { string[] reu = reunion.Split('-'); var dia = Convert.ToByte(reu[0]); var horaInicio = Convert.ToInt16(reu[1]); var horaFin = Convert.ToInt16(reu[2]); 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 = "2"; reserva.strm = strm; reserva.class_nbr = class_nbr; reserva.crse_id = model.IdCurso; reserva.fecha_registro = DateTime.Now; reserva.curso = model.Curso; dbSql.reservas.Add(reserva); dbSql.SaveChanges(); foreach (var recursoId in model.Recurso) { this.insertarRecursoReserva(reserva, Convert.ToInt32(recursoId)); } var usuariosClase = this.GetUsuariosByClase(strm, model.IdCurso, class_nbr); foreach (Usuario usuario in usuariosClase) { this.insertarUsuarioReserva(reserva, usuario.OPRID); } } transaction.Commit(); //dbSql.RegisterEvents(); } catch (Exception) { transaction.Rollback(); throw; } } }