Example #1
0
        public async Task AddRoomToUserAsyncShouldAddRowInUsersRoomTable()
        {
            //Arange
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;

            var db     = new ApplicationDbContext(options);
            var config = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile <ApplicationProfile>();
            });
            var mapper      = new Mapper(config);
            var roomService = new RoomService(db, mapper);

            //Act
            var user = new ApplicationUser
            {
                UserName = "******",
                Email    = "*****@*****.**"
            };
            var room = new Room
            {
                Adults      = 1,
                CheckIn     = new DateTime(2020, 12, 20),
                CheckOut    = new DateTime(2020, 12, 21),
                Image       = "no image",
                Description = "no description",
                Price       = 5,
                RoomCount   = 5,
                RoomType    = RoomType.Single,
            };

            db.Rooms.Add(room);
            db.Users.Add(user);
            await db.SaveChangesAsync();

            var viewModel = new UserReserveFinishViewModel
            {
                CheckIn           = new DateTime(2020, 12, 20),
                CheckOut          = new DateTime(2020, 12, 20),
                CreaditCardNumber = "1234512345123451",
                Cvv         = 111,
                Expiration  = "03/24",
                FirstName   = "Gosho",
                LastName    = "Goshev",
                NameOfCard  = "Gosho Goshev",
                PhoneNumber = "1231231231",
            };
            await roomService.AddRoomToUserAsync(viewModel, user.Id, room.Id);

            //assert
            Assert.True(await db.UserRooms.CountAsync() == 1);
        }
Example #2
0
        public async Task AddRoomToUserAsync(UserReserveFinishViewModel reserveInputModel, string userId, string roomId)
        {
            var wantedRoom = this.db.Rooms.FirstOrDefault(x => x.Id == roomId);
            var wantedUser = this.db.Users.FirstOrDefault(x => x.Id == userId);

            wantedRoom.CheckIn     = reserveInputModel.CheckIn;
            wantedRoom.CheckOut    = reserveInputModel.CheckOut;
            wantedRoom.RoomCount  -= 1;
            wantedUser.PhoneNumber = reserveInputModel.PhoneNumber;
            wantedUser.FirstName   = reserveInputModel.FirstName;
            wantedUser.LastName    = reserveInputModel.LastName;
            wantedUser.UserRooms.Add(new UserRoom {
                RoomId = roomId, UserId = userId
            });
            await this.db.SaveChangesAsync();
        }
Example #3
0
        public async Task <IActionResult> Reserve(UserReserveFinishViewModel reserveInputModel, string roomId)
        {
            if (!this.ModelState.IsValid || reserveInputModel.CheckIn < DateTime.UtcNow || reserveInputModel.CheckOut < DateTime.UtcNow)
            {
                this.ViewData["id"] = roomId;
                var typeOfRoom = this.roomsService.GetTypeOfRoom(roomId);
                this.ViewData["type"] = typeOfRoom;
                return(this.View(reserveInputModel));
            }
            var userId = this.User.FindFirst(ClaimTypes.NameIdentifier).Value;

            await this.roomsService.AddRoomToUserAsync(reserveInputModel, userId, roomId);

            this.TempData["Success"] = "Added Successfully!";
            return(this.Redirect($"/Rooms/Details/{roomId}"));
        }