コード例 #1
0
        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));
        }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
        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);
        }