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); }
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(); }
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}")); }