Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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;
        }
Example #4
0
        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;
                }
            }
        }
Example #5
0
        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);
        }