public ActionResult GetAddtionalDetails(AddonDetailsDTO objAddons) { try { if (objAddons == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } //Builds Reservation obj from objAddons param Reservation tempReservation = new Reservation { Arrival = objAddons.CheckIn, Depature = objAddons.CheckOut, NoOfGuests = objAddons.NoOfGuests, RoomId = objAddons.RoomId, Room = context.Rooms.Find(objAddons.RoomId), UserId = objAddons.UserId, ApplicationUsers = context.Users.Find(objAddons.UserId), BoardTypeId = objAddons.BoardTypeId, BoardType = context.BoardTypes.Find(objAddons.BoardTypeId), }; //Checks to see if there was any selected extras and adds them if so if (objAddons.SelectedExtra != null) { foreach (int id in objAddons.SelectedExtra) { tempReservation.Extras.Add(context.Extras.Where(x => x.Id == id).FirstOrDefault()); } } //Buillds PaymentDetails object using Reservation Functions PaymentDetails objPaymentDTO = new PaymentDetails { RoomCosts = tempReservation.calculateRoomCosts(objAddons.Days), BoardCosts = tempReservation.CalculateBoardCosts(objAddons.Days), BookingExtrasCost = tempReservation.CalculateBookingExtraCosts(objAddons.Days), TotalCost = tempReservation.CalculateBookingBill(objAddons.Days), DepositToPay = tempReservation.CalculateDepositAmount(objAddons.Days), }; tempReservation.TotalBill = tempReservation.CalculateBookingBill(objAddons.Days); tempReservation.Deposit = tempReservation.CalculateDepositAmount(objAddons.Days); Session["objAddon"] = objAddons; return(View("PaymentBill", objPaymentDTO)); } catch (Exception ex) { this.AddNotification("", NotificationType.ERROR); ViewBag.Error = ("Error: " + Convert.ToString(ex)); return(View("~/Views/Shared/Error.cshtml")); } }