//show floor with desks
        public IActionResult FlexDesks(ReservationViewModel rvm)
        {
            try
            {
                ViewData["sessionData"] = new int?[] { HttpContext.Session.GetInt32("admin"), HttpContext.Session.GetInt32("language") };
                this.rvm       = rvm;
                activeUser     = userBll.GetUserById((long)HttpContext.Session.GetInt32("userId"));
                rvm.ActiveUser = activeUser;
                rvm.Dictionary = new Dictionary(HttpContext.Session.GetInt32("language"));
                if (rvm.UserId == 0)
                {
                    rvm.User = activeUser;
                }
                rvm.User     = userBll.GetUserById(rvm.UserId);
                rvm.UserCode = rvm.User.Login;

                if (rvm.Start == null)
                {
                    rvm.Start = DateTime.Today;
                }
                if (rvm.End == null)
                {
                    rvm.End = rvm.Start;
                }

                // Check if dates are ok
                string message = rvm.CheckDates(HttpContext.Session.GetInt32("language"));
                if (rvm.DatesOK == false)
                {
                    IEnumerable <Reservation> reservations = reservationBll.ShowAllReservations().Where(r => r.UserId == activeUser.UserId && r.EndDate >= DateTime.Today);
                    rvm.Reservations = new ReservationFE().GetReservations(flexDeskBll, reservations);
                    //exception: Back to List
                    rvm.Message = message;
                    return(RedirectToAction("Index", rvm));
                }

                UpdateRvm(rvm);

                if (rvm.Reservations.Any(r => r.UserId == rvm.UserId))
                {
                    ReservationFE reservation = rvm.Reservations.First(r => r.UserId == rvm.UserId);
                    //Exception: User has already reservation in this period
                    return(RedirectToAction("Delete", routeValues: new { id = reservation.ReservationId, message = new Dictionary(HttpContext.Session.GetInt32("language")).Label25 }));
                }

                IEnumerable <Absence> afwezigheden = absenceBll.ShowAllAbsences().Where(a => a.UserId == rvm.UserId);

                if (afwezigheden.Any(a => (a.StartDate >= rvm.Start && a.StartDate <= rvm.End) || (a.EndDate >= rvm.Start && a.EndDate <= rvm.End)) ||
                    afwezigheden.Any(a => (rvm.Start >= a.StartDate && rvm.Start <= a.EndDate) || (rvm.End >= a.StartDate && rvm.End <= a.EndDate)))
                {
                    //exception: User has already absence in this period;
                    rvm.Message = rvm.Dictionary.Label29;
                    return(RedirectToAction("Index", rvm));
                }
                return(View(rvm));
            }
            catch (Exception)
            {
                rvm.Floors = floorBll.ShowAllFloors().Where(floor => floor.BuildingId == rvm.Building.BuildingId).ToList();
                return(RedirectToAction("Index", "Home"));
            }
        }