public ActionResult Book(int? id = 0, string startDate = "") { ReservasUsuarioJaveriana.Models.Book model = new Book(); model.Resources = _repo.GetResources(); model.Hours = _repo.GetHours(); model.ListDuration = _repo.GetDuration(); try { if (startDate != "" && id > 0) { DateTime start = DateTime.Parse(startDate); model.BookDate = start.Date; model.StartTime = (start.Hour * 100).ToString(); model.Application = id.ToString(); } } catch(Exception) { // } return View(model); }
public ActionResult Book(Book model) { try { if (ModelState.IsValid) { var reserva = _repo.insert(model); //Send Email _repo.SendMail(reserva, Server.MapPath("~/Templates/EmailReserva.html")); //this.SendMail(); TempData["Success"] = "La reserva ha sido registrada satisfactoriamente"; return RedirectToAction("Index", "Book"); } } 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."); } model.Resources = _repo.GetResources(); model.Hours = _repo.GetHours(); return View(model); }
public List<string> validate(Book model) { List<string> result = new List<string>(); int endTime = (Convert.ToInt32(model.StartTime) + Convert.ToInt32(model.Duration) * 100); if (model.Application == null) result.Add("Seleccione aplicación"); if (model.BookDate == null) { result.Add("Seleccione fecha de la reserva"); } else { if (model.BookDate.Date < DateTime.Now.Date) result.Add("Por favor, seleccione una fecha valida"); } if (model.StartTime == null) { result.Add("Seleccione hora de la reserva"); } else { if (model.BookDate.Date == DateTime.Now.Date) { var fReserva = model.BookDate.AddHours(Convert.ToInt32(model.StartTime) / 100); int diferencia = (fReserva - DateTime.Now).Hours; if(diferencia < 1) result.Add("La reserva debe hacerse mínimo con una hora de anticipación"); } } if (model.Application != null) { var horaFinal = (Convert.ToInt32(model.StartTime) + Convert.ToInt32(model.Duration) * 100); var day = (int)model.BookDate.DayOfWeek; if (validateLicencesCitrix(model.BookDate, model.BookDate, Convert.ToInt32(model.StartTime), horaFinal, day, 1) < 1) { result.Add("No hay disponibilidad de licencias citrix en la fecha seleccionada"); } else { if (validateLicencesResource(model.BookDate, model.BookDate, Convert.ToInt32(model.StartTime), horaFinal, day, Convert.ToInt32(model.Application), 1) < 1) { recurso app = db.recursoes.Find(Convert.ToInt32(model.Application)); result.Add(String.Format("No hay disponibilidad de licencias de {0} en la fecha seleccionada", app.nombre)); } } if (haveBooking(model.BookDate, Convert.ToInt32(model.StartTime), endTime, Convert.ToInt32(model.Application))) result.Add("Ya tienes reservada la aplicación en el horario seleccionado"); } return result; }
public reserva insert(Book book) { reserva reserva = new reserva(); using (var transaction = db.Database.BeginTransaction()) { try { var horaFinal = 0; horaFinal = (Convert.ToInt32(book.StartTime) + Convert.ToInt32(book.Duration) * 100); if (horaFinal >= 2400) horaFinal = 2359; var day = (int)book.BookDate.DayOfWeek; //var username = HttpContext.Current.User.Identity.Name.ToString().Split('@')[0]; var username = ReservasUsuarioJaveriana.Lib.Util.GetUserLogged(); reserva.fecha_inicio = book.BookDate; reserva.fecha_final = book.BookDate; reserva.dia = Convert.ToByte(day); reserva.hora_inicial = Convert.ToInt16(book.StartTime); reserva.hora_final = Convert.ToInt16(horaFinal); reserva.tipo_reserva = "1"; reserva.emplid = username; reserva.fecha_registro = DateTime.Now; db.reservas.Add(reserva); db.SaveChanges(); this.insertResourceToBook(reserva, Convert.ToInt32(book.Application)); this.insertUserToBook(reserva, username); transaction.Commit(); return reserva; } catch (Exception) { transaction.Rollback(); throw; } } }
public JsonResult ValidateBook(Book model) { var result = _repo.validate(model); if (result.Count > 0) return Json(result.ToArray(), JsonRequestBehavior.AllowGet); else return Json(true, JsonRequestBehavior.AllowGet); }