public async Task <ActionResult> CancelReserve(LaboratoryReserveViewModel model)
        {
            try
            {
                using (var context = new UnicesumarBdEntities())
                {
                    var reserve = await context.ListLaboratoryReserve.FirstOrDefaultAsync(p => p.Id == model.Id);

                    context.Entry(reserve).State = EntityState.Deleted;

                    await context.SaveChangesAsync();

                    return(RedirectToAction("Index"));
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        public async Task <ActionResult> CancelReserveModal(int id)
        {
            try
            {
                using (var context = new UnicesumarBdEntities())
                {
                    var viewModel = new LaboratoryReserveViewModel
                    {
                        Id = id,
                    };

                    var content = LayoutHelper.GetPartialViewData("_ModalCancel", ControllerContext, ViewData, TempData, viewModel).ToString();

                    return(Json(content));
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        public async Task <ActionResult> ReserveLab(LaboratoryReserveViewModel model)
        {
            try
            {
                using (var context = new UnicesumarBdEntities())
                {
                    var userId = Convert.ToInt32(Session["userId"]);

                    if (userId == 0)
                    {
                        return(RedirectToAction("Login", "Account"));
                    }

                    var labReserve = new LaboratoryReserve
                    {
                        LaboratoryId  = model.LaboratoryId,
                        UserId        = userId,
                        TypeReserveId = model.TypeReserveId,
                        ClassId       = model.ClassId,
                        ShiftId       = model.ShiftId,
                        DisciplineId  = model.DisciplineId,
                        Date          = model.TypeReserveId == ETypeReserve.Simple ? model.Date : null,
                        DateStart     = model.TypeReserveId == ETypeReserve.Recorrent ? model.DateStart : null,
                        DateEnd       = model.TypeReserveId == ETypeReserve.Recorrent ? model.DateEnd : null,
                        HoraryId      = model.HoraryId,
                    };

                    context.Entry(labReserve).State = EntityState.Added;

                    await context.SaveChangesAsync();

                    return(RedirectToAction("Index", "MyReservations"));
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        public async Task <ActionResult> ManageScheduleLab(int id)
        {
            try
            {
                using (var context = new UnicesumarBdEntities())
                {
                    var viewModel = new LaboratoryReserveViewModel();

                    viewModel.LaboratoryId = id;

                    var laboratory = context.ListLaboratory.FirstOrDefault(p => p.Id == id);

                    viewModel.LaboratoryName = laboratory.Name;

                    viewModel.ListTypeReserve = new SelectList(GetListExamsStatusTypes(), "Value", "Description");

                    var listClass = await context.ListClass
                                    .Select(p => new GetDropDownListViewModel
                    {
                        Id    = p.Id,
                        Title = p.Title
                    })
                                    .ToListAsync();

                    viewModel.ListClass = new SelectList(listClass, "Id", "Title");

                    var listShift = await context.ListShift
                                    .Select(p => new GetDropDownListViewModel
                    {
                        Id    = p.Id,
                        Title = p.Title
                    })
                                    .ToListAsync();

                    viewModel.ListShift = new SelectList(listShift, "Id", "Title");

                    if (laboratory.LaboratoryCategoryId == 1)
                    {
                        var listDiscipline = await context.ListDiscipline
                                             .Where(p => p.Id <= 6)
                                             .Select(p => new GetDropDownListViewModel
                        {
                            Id    = p.Id,
                            Title = p.Title
                        })
                                             .ToListAsync();

                        viewModel.ListDiscipline = new SelectList(listDiscipline, "Id", "Title");
                    }
                    else
                    {
                        var listDiscipline = await context.ListDiscipline
                                             .Where(p => p.Id >= 7)
                                             .Select(p => new GetDropDownListViewModel
                        {
                            Id    = p.Id,
                            Title = p.Title
                        })
                                             .ToListAsync();

                        viewModel.ListDiscipline = new SelectList(listDiscipline, "Id", "Title");
                    }

                    var listHorary = await context.ListHorary.
                                     Select(p => new GetDropDownListViewModel
                    {
                        Id    = p.Id,
                        Title = p.Title
                    })
                                     .ToListAsync();

                    viewModel.ListHorary = new SelectList(listHorary, "Id", "Title");

                    var content = LayoutHelper.GetPartialViewData("_ModalBody", ControllerContext, ViewData, TempData, viewModel).ToString();

                    return(Json(content));
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }