public ActionResult ReserveRoom(ReservedRooms reserved)
        {
            //set room
            reserved.Room = _context.Rooms.Where(r => r.Id == reserved.RoomId).SingleOrDefault();
            // set UnitPrice
            reserved.Room.UnitPrice = _context.UnitPrice.Where(u => u.Id == reserved.Room.UnitPriceID).SingleOrDefault();

            // Set DateTime - ReservedAt
            reserved.ReservedAt = DateTime.Now;
            // Set UserId
            reserved.UserId = User.Identity.GetUserId();

            SaveInvoice(reserved);

            var userInvoices = _context
                               .Invoices
                               .Where(x => x.UserId == reserved.UserId)
                               .ToList();

            var invoiceInDb = userInvoices
                              .SingleOrDefault
                                  (x => x.ReservedAt.ToString() == reserved.ReservedAt.ToString());

            reserved.InvoiceId = invoiceInDb.Id;

            _context.ReserveRooms.Add(reserved);
            _context.SaveChanges();

            return(RedirectToAction("ShowInvoice", "RoomReservation", new { id = reserved.Id }));
        }
        public ActionResult Reserving(int id)
        {
            var reserving = new ReservedRooms()
            {
                RoomId = id
            };

            if (User.Identity.IsAuthenticated && !User.IsInRole(RoleName.Admin))
            {
                string userId = User.Identity.GetUserId();
                var    user   = _context.Users.Where(u => u.Id == userId).SingleOrDefault();
                if (user != null)
                {
                    reserving.Name        = user.Name;
                    reserving.ZipCode     = user.ZipCode;
                    reserving.City        = user.City;
                    reserving.Street      = user.Street;
                    reserving.HouseNumber = user.HouseNumber;
                    reserving.PhoneNumber = user.Phone;
                    reserving.Email       = user.Email;
                }
            }

            return(View(reserving));
        }
        private void SaveInvoice(ReservedRooms reserved)
        {
            var calculateMethods = new CalculateMethods(reserved);
            var invoice          = calculateMethods.CalculateInvoice();

            _context.Invoices.Add(invoice);
            _context.SaveChanges();
        }