Example #1
0
        public async Task <IActionResult> Create(RequestReservationCreateViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);

            User    user   = _context.Users.FirstOrDefault(x => x.Id == userId);
            decimal kids   = 0;
            decimal adults = 0;

            List <Client> clients = new List <Client>();

            foreach (var clientId in model.ClientsId)
            {
                Client client = new Client();
                client = _context.Clients.FirstOrDefault(x => x.Id == clientId);
                if (client.IsAdult)
                {
                    adults++;
                }
                else
                {
                    kids++;
                }
                clients.Add(client);
            }

            Room room = _context.Rooms.FirstOrDefault(x => x.Id == model.RoomId);

            room.IsFree = false;
            var     days  = (decimal)(model.ReleaseDate.Subtract(model.AccommodationDate.Date).TotalDays);
            decimal dueAm = days * (adults * room.PriceForAdult + kids * room.PriceForKid);


            Reservation reservation = new Reservation
            {
                Id   = Guid.NewGuid().ToString(),
                User = user,
                AccommodationDate = model.AccommodationDate,
                ReleaseDate       = model.ReleaseDate,
                HaveBreakFast     = model.HaveBreakFast,
                IsAllInclusive    = model.IsAllInclusive,
                DueAmount         = dueAm,
                Room    = room,
                Clients = clients.Select(client => new ClientReservation {
                    Id = Guid.NewGuid().ToString(), Client = client
                }).ToList()
            };

            // reservation.Clients = clients.Select(client => new ClientReservation { Id = Guid.NewGuid().ToString(), Client = client, Reservation = reservation }).ToList();

            await this._context.AddAsync(reservation);

            await this._context.SaveChangesAsync();

            return(RedirectToAction(nameof(All)));
        }
        public async Task <IActionResult> Create(RequestReservationCreateViewModel createModel)
        {
            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);

            User user = await UserManager.GetUserAsync(User);

            List <Client> clients = new List <Client>();

            foreach (var clientId in createModel.ClientsId)
            {
                Client client = new Client();
                client = _context.Clients.FirstOrDefault(x => x.Id == clientId);
                clients.Add(client);
            }

            Room room = _context.Rooms.FirstOrDefault(x => x.Id == createModel.RoomId);

            room.IsFree = false;

            if (ModelState.IsValid)
            {
                Reservation reservation = new Reservation
                {
                    UserId             = user.Id,
                    CheckInDate        = createModel.CheckInDate,
                    CheckOutDate       = createModel.CheckOutDate,
                    HasBreakfast       = createModel.HasBreakfast,
                    IsAllInclusive     = createModel.IsAllInclusive,
                    Room               = room,
                    FinalPrice         = createModel.FinalPrice,
                    ClientReservations = clients.Select(client => new ClientReservation {
                        Client = client
                    }).ToList()
                };


                _context.Add(reservation);
                await _context.SaveChangesAsync();

                SendMessage(clients);

                return(RedirectToAction(nameof(Index)));
            }

            return(View(createModel));
        }
Example #3
0
        public async Task <IActionResult> Create(RequestReservationCreateViewModel createModel)
        {
            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);

            User user = await UserManager.GetUserAsync(User);

            List <Client> clients = new List <Client>();

            foreach (var clientId in createModel.ClientsId)
            {
                Client client = new Client();
                //client = (Client)_context.Clients.Where(x => x.Id == clientId);
                client = _context.Clients.FirstOrDefault(x => x.Id == clientId);
                clients.Add(client);
            }

            Room room = _context.Rooms.FirstOrDefault(x => x.Id == createModel.RoomId);

            room.IsFree = false;

            if (ModelState.IsValid)
            {
                Reservation reservation = new Reservation
                {
                    //User = createModel.User,
                    UserId = user.Id,
                    //User = user,
                    CheckInDate        = createModel.CheckInDate,
                    CheckOutDate       = createModel.CheckOutDate,
                    HasBreakfast       = createModel.HasBreakfast,
                    IsAllInclusive     = createModel.IsAllInclusive,
                    Room               = room,
                    FinalPrice         = createModel.FinalPrice,
                    ClientReservations = clients.Select(client => new ClientReservation {
                        Client = client
                    }).ToList()
                };


                _context.Add(reservation);
                await _context.SaveChangesAsync();

                foreach (Client client in clients)
                {
                    var message = new MimeMessage();
                    message.From.Add(new MailboxAddress("ReservationManager", "*****@*****.**"));
                    message.To.Add(new MailboxAddress($"{client.Email}"));
                    message.Subject = "Rreservation";
                    message.Body    = new TextPart("Successful reservation!");

                    using (var emailClient = new SmtpClient())
                    {
                        emailClient.Connect("smtp.gmail.com", 587, false);
                        emailClient.Authenticate("*****@*****.**", password);
                        emailClient.Send(message);
                        emailClient.Disconnect(true);
                    }
                }


                return(RedirectToAction(nameof(Index)));
            }

            return(View(createModel));
        }