public ActionResult ConfirmDetails(int Id, DateTime Arrival, DateTime Departure)
        {
            try
            {
                //Block sets the new ConfirmDetailsDTO object using provided paramaters
                ConfirmDetailsDTO objDetailsDTO = new ConfirmDetailsDTO();
                objDetailsDTO.CheckIn          = Arrival;
                objDetailsDTO.CheckOut         = Departure;
                objDetailsDTO.RoomId           = Id;
                objDetailsDTO.UserId           = User.Identity.GetUserId();
                objDetailsDTO.Days             = (Departure - Arrival).Days;
                objDetailsDTO.Room             = context.Rooms.Find(Id);
                objDetailsDTO.ApplicationUsers = context.Users.Find(objDetailsDTO.UserId);

                if (objDetailsDTO.ApplicationUsers == null)
                {
                    this.AddNotification("Please relogin.", NotificationType.ERROR);
                    FormsAuthentication.SignOut();
                    return(RedirectToAction("Login", "Account", new { area = "" }));
                }


                return(View(objDetailsDTO));
            }
            catch (Exception ex)
            {
                this.AddNotification("", NotificationType.ERROR);
                ViewBag.Error = ("Error: " + Convert.ToString(ex));
                return(View("~/Views/Shared/Error.cshtml"));
            }
        }
        /// <summary>
        /// Will build the addtional details form so the user can see the options available
        /// </summary>
        /// <param name="objConfirm">ConfirmDetailsDTO Object to build the Additional Details</param>
        /// <returns>AdditionalDeatailsDTO View Model </returns>
        public ActionResult GetAddtionalDetails(ConfirmDetailsDTO objConfirm)
        {
            try
            {
                //Builds AddonDetailsDTO using objConfirm params
                AddonDetailsDTO addonDTO = new AddonDetailsDTO
                {
                    UserId           = objConfirm.UserId,
                    ApplicationUsers = context.Users.Find(objConfirm.UserId),
                    RoomId           = objConfirm.RoomId,
                    Room             = context.Rooms.Find(objConfirm.RoomId),
                    CheckIn          = objConfirm.CheckIn,
                    CheckOut         = objConfirm.CheckOut,
                    Days             = objConfirm.Days
                };

                //Gets viewbag data for the select list of all the board types
                ViewBag.BoardTypeId =
                    from u in context.BoardTypes
                    select new SelectListItem
                {
                    Value = u.Id.ToString(),
                    Text  = u.Board_Type + " - Per Night £" + u.BoardCosts
                };



                //Gets the number of guests a person can choose from based on the maximum capacity of the room
                int max = addonDTO.Room.RoomType.Capacity;
                List <SelectListItem> NoOfGuests = new List <SelectListItem>();
                for (int a = 1; a <= max; a++)
                {
                    NoOfGuests.Add(new SelectListItem {
                        Value = a.ToString(), Text = a.ToString()
                    });
                }
                ViewBag.NoOfGuests = new SelectList(NoOfGuests, "Value", "Text");


                //Gets only the Extras that are allowed at booking
                addonDTO.AllExtras = context.Extras.Where(x => x.Bookable == true).ToList();



                return(View(addonDTO));
            }
            catch (Exception ex)
            {
                this.AddNotification("", NotificationType.ERROR);
                ViewBag.Error = ("Error: " + Convert.ToString(ex));
                return(View("~/Views/Shared/Error.cshtml"));
            }
        }