public async Task EditAsyncWithCorrectDataShouldReturnCorrectResult() { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options; var dbContext = new ApplicationDbContext(options); var cloudinary = new Mock <ICloudinaryService>(); var concertsRepository = new EfDeletableEntityRepository <Concert>(dbContext); var userConcertsRepository = new EfRepository <UserConcert>(dbContext); var concertGroupsRepository = new EfRepository <ConcertGroup>(dbContext); var concertsService = new ConcertsService(concertsRepository, userConcertsRepository, concertGroupsRepository, cloudinary.Object); var photo = new Mock <IFormFile>(); var date = DateTime.ParseExact("2020-07-24 18:00", "yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture); var id = await concertsService.CreateAsync("Hills Of Rock 2020", photo.Object, date, "https://www.eventim.bg/bg/bileti/hills-of-rock-2020-plovdiv-rowing-canal-1181470/performance.html", 2); var concert = new ConcertEditInputModel { Name = "Varna Rock 2020", ImgUrl = "https://res.cloudinary.com/nikolacgeorgiev/image/upload/v1587376430/concerts_photos/Varna_Rock_2020_gwgfri.jpg", Date = DateTime.ParseExact("2020-08-14 18:00", "yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture), TicketUrl = "https://www.eventim.bg/bg/bileti/varna-rock-2020-barna-plaz-asparuhovo-1148430/performance.html", VenueId = 3, }; Assert.True(await concertsService.EditAsync(id, concert)); }
public async Task <IActionResult> Edit(int id, ConcertEditInputModel input) { var venues = await this.venuesService.GetAllAsync <VenuesDropDownViewModel>(); if (!this.ModelState.IsValid) { input.Venues = venues; return(this.View(input)); } try { await this.concertsService.EditAsync(id, input); this.TempData["Success"] = EditSuccessMessage; return(this.Redirect("/Concerts/Details/" + id)); } catch (Exception e) { this.TempData["Error"] = e.Message; input.Venues = venues; return(this.View(input)); } }
public async Task <bool> EditAsync(int id, ConcertEditInputModel model) { var concert = await this.concertsRepository .All() .FirstOrDefaultAsync(c => c.Id == id); if (concert.Name.ToUpper() != model.Name.ToUpper()) { var concertWithSameName = await this.concertsRepository .All() .FirstOrDefaultAsync(c => c.Name.ToUpper() == model.Name.ToUpper()); if (concertWithSameName != null) { throw new ArgumentException(ErrorMessageConcertExist); } } var filterDate = DateTime.UtcNow; if (model.Date < filterDate) { throw new ArgumentException(ErrorMessageDate); } var url = model.ImgUrl; if (model.Photo != null) { url = await this.cloudinaryService.UploadPhotoAsync( model.Photo, model.Name, GlobalConstants.CloudFolderForConcertsPhotos); } concert.Name = model.Name; concert.ImgUrl = url; concert.Date = model.Date; concert.TicketUrl = model.TicketUrl; concert.VenueId = model.VenueId; this.concertsRepository.Update(concert); await this.concertsRepository.SaveChangesAsync(); return(true); }