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")); } }