Ejemplo n.º 1
0
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                var userId     = User.Identity.GetUserName();
                var floorItems = new List <FloorsModel>();
                if (userRoleRepository.GetRoleByUserName(userId) != null)
                {
                    var userRole           = userRoleRepository.GetRoleByUserName(userId).IdUserType;
                    var userDepartment     = userRoleRepository.GetRoleByUserName(userId).IdDepartment;
                    var filterDepartmentId = departmentRepository.GetDepartmentIdByName(userDepartment);
                    var spaceAlreadyBooked = 0;
                    //Get relevant floors for department

                    floorItems = floorRepository.GetFloorByDepartmentId(filterDepartmentId);


                    if (floorItems != null && floorItems.Count != 0)
                    {
                        ViewBag.datafloors = floorItems;
                    }
                    else
                    {
                        ViewBag.Message = "No floor space has been allocated for your department. Please contact your admin.";
                    }


                    // TODO: Add insert logic here

                    if (ViewBag.Message != "No floor space has been allocated for your department. Please contact your admin.")

                    {
                        BookingsModel bookingModel = new BookingsModel();
                        bookingModel.IdFloor        = Guid.Parse(Request.Form["Floor"]);
                        bookingModel.IdBuilding     = floorRepository.GetFloorById(Guid.Parse(Request.Form["Floor"])).IdBuilding;
                        bookingModel.UserName       = userId;
                        bookingModel.UserDepartment = userDepartment;
                        bookingModel.UserRole       = userRole;

                        UpdateModel(bookingModel);

                        var maxFloorBuildingSpace = floorRepository.GetFloorByFloorIdandBuildingIdandDepartmentId(bookingModel.IdFloor, bookingModel.IdBuilding, filterDepartmentId).BookableSeats;

                        var bookingsOnFloorBuildingDepartment = bookingRepository.GetBookingByDepartmentFloorBuilding(userDepartment, bookingModel.IdFloor, bookingModel.IdBuilding, bookingModel.BookingValidFrom, bookingModel.BookingValidTo);



                        if (bookingsOnFloorBuildingDepartment == null || bookingsOnFloorBuildingDepartment.Count == 0)
                        {
                            spaceAlreadyBooked = bookingModel.BookedSeats;
                        }

                        else
                        {
                            foreach (BookingsModel booking in bookingsOnFloorBuildingDepartment)
                            {
                                spaceAlreadyBooked = spaceAlreadyBooked + booking.BookedSeats;
                            }
                            spaceAlreadyBooked = spaceAlreadyBooked + bookingModel.BookedSeats;
                        }


                        if (bookingRepository.IsDuplicateBooking(bookingModel) == false && spaceAlreadyBooked <= maxFloorBuildingSpace)
                        {
                            bookingRepository.InsertBooking(bookingModel);
                            return(RedirectToAction("Index"));
                        }
                        else
                        {
                            return(RedirectToAction("IndexError"));
                        }
                    }

                    else
                    {
                        return(RedirectToAction("IndexFilterErrorBooking"));
                    }
                }
                else
                {
                    return(RedirectToAction("Contact", "Home"));
                }
            }
            catch
            {
                return(View("CreateBooking"));
            }
        }