public async Task <IActionResult> Edit(string id, OrganizedTripViewModel tripViewModel) { if (id != tripViewModel.Id) { return(this.NotFound()); } if (!this.ModelState.IsValid) { this.ViewData["DestinationId"] = new SelectList(this.destinationsService.GetAll(), "Id", "Town", tripViewModel.DestinationId); this.ViewData["HotelId"] = new SelectList(this.hotelsService.GetAll(), "Id", "Name", tripViewModel.HotelId); return(this.View(tripViewModel)); } try { await this.tripsService.EditAsync(id, tripViewModel); } catch (DbUpdateConcurrencyException) { if (!this.OrganizedTripExists(tripViewModel.Id)) { return(this.NotFound()); } else { throw; } } return(this.RedirectToAction(nameof(this.Index))); }
public async Task EditAsync_ShouldWorkCorrectly() { // Arrange var context = ApplicationDbContextInMemoryFactory.InitializeContext(); var seeder = new OrganizedtripsServiceTestsSeeder(); await seeder.SeedTripAsync(context); var tripRepository = new EfDeletableEntityRepository <OrganizedTrip>(context); var service = new OrganizedTripsService(tripRepository); var trip = tripRepository.All().First(); var model = new OrganizedTripViewModel { Id = trip.Id, Name = trip.Name, ImageUrl = trip.ImageUrl, Description = trip.Description, DepartureDateTime = trip.DepartureDateTime, ReturnDateTime = trip.ReturnDateTime, DestinationId = trip.DestinationId, PricePerPerson = trip.PricePerPerson, HotelId = trip.HotelId, AvailableSeats = trip.AvailableSeats, Transport = trip.Transport, ReservationType = trip.ReservationType, }; model.Name = "EditedTripName"; model.ImageUrl = "EditedImageUrl"; model.PricePerPerson = 50; model.ReservationType = ReservationType.OrganizedTrip; model.Description = "EditedDescription"; model.DepartureDateTime = new DateTime(2020, 03, 03, 13, 00, 00); model.ReturnDateTime = new DateTime(2020, 03, 03, 13, 30, 00); model.DestinationId = 1; model.HotelId = 1; model.AvailableSeats = 2; model.Transport = TransportType.Bus; // Act await service.EditAsync(model.Id, model); var actualResult = tripRepository.All().First(); var expectedResult = model; // Assert Assert.True(expectedResult.Name == actualResult.Name); Assert.True(expectedResult.ImageUrl == actualResult.ImageUrl); Assert.True(expectedResult.Description == actualResult.Description); Assert.True(expectedResult.ReservationType == actualResult.ReservationType); Assert.True(expectedResult.PricePerPerson == actualResult.PricePerPerson); Assert.True(expectedResult.DepartureDateTime == actualResult.DepartureDateTime); Assert.True(expectedResult.ReturnDateTime == actualResult.ReturnDateTime); Assert.True(expectedResult.AvailableSeats == actualResult.AvailableSeats); Assert.True(expectedResult.HotelId == actualResult.HotelId); Assert.True(expectedResult.Transport == actualResult.Transport); Assert.True(expectedResult.DestinationId == actualResult.DestinationId); }
public async Task EditAsync(string id, OrganizedTripViewModel input) { var trip = this.organizedTripsRepository.All().FirstOrDefault(x => x.Id == id); trip.Name = input.Name; trip.ImageUrl = input.ImageUrl; trip.Description = input.Description; trip.PricePerPerson = input.PricePerPerson; trip.DepartureDateTime = input.DepartureDateTime; trip.ReturnDateTime = input.ReturnDateTime; trip.DestinationId = input.DestinationId; trip.HotelId = input.HotelId; trip.Transport = input.Transport; trip.AvailableSeats = input.AvailableSeats; trip.IsDeleted = input.IsDeleted; this.organizedTripsRepository.Update(trip); await this.organizedTripsRepository.SaveChangesAsync(); }