public async Task <IActionResult> Create(CreateBindingModel advertisement) { if (!ModelState.IsValid) { return(Redirect("/Advertisement/Create")); } var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); var advertisementServiceModel = new AdvertisementCreateServiceModel { Name = advertisement.Name, Price = advertisement.Price, Description = advertisement.Description, Condition = advertisement.Condition, CategoryId = advertisement.CategoryId, SubCategoryId = advertisement.SubCategoryId, TownId = advertisement.TownId, Address = advertisement.Address, Number = advertisement.Number, UserId = userId, Images = advertisement.Images, }; await advertisementService.CreateAsync(advertisementServiceModel); await NotifyOnAdCreateAsync(advertisementServiceModel); return(Redirect("/Home/Index")); }
private async Task NotifyOnAdCreateAsync(AdvertisementCreateServiceModel ad) { var adOwner = await userManager.FindByIdAsync(ad.UserId); var notificationText = $"{adOwner.UserName} added a new Ad: {ad.Name}"; var notificationActionLink = $"/User/Profile?id={ad.UserId}&orderBy='dateDesc'&page=1"; var userIds = await userService.GetAllUserIdsThatAreFollowingUserAsync(ad.UserId); if (userIds.Count() != 0) { var notification = await notificationService.CreateNotificationAsync(notificationText, notificationActionLink); await notificationService.AssignNotificationToUsersAsync(notification.Id, userIds.ToList()); } }
public async Task CreateAsync(AdvertisementCreateServiceModel advertisement) { List <string> imageUrls = new List <string>(); if (advertisement.Images != null && advertisement.Images.Count != 0) { imageUrls = advertisement.Images .Select(async x => await cloudinaryService.UploadPictureAsync(x, x.FileName)) .Select(x => x.Result) .ToList(); } var ad = new Advertisement { Name = advertisement.Name, Address = advertisement.Address, ArchivedOn = DateTime.UtcNow.AddDays(GlobalConstants.AdvertisementDurationDays), CategoryId = advertisement.CategoryId, SubCategoryId = advertisement.SubCategoryId, Condition = advertisement.Condition, CreatedOn = DateTime.UtcNow, Price = advertisement.Price, Description = advertisement.Description, UserId = advertisement.UserId, Images = string.Join(GlobalConstants.ImageUrlInDatabaseSeparator, imageUrls), EditedOn = null, IsArchived = false, TownId = advertisement.TownId, Number = advertisement.Number, IsReported = false, ReportedOn = null, IsBanned = false, BannedOn = null, IsPromoted = false, PromotedOn = null, PromotedUntil = null }; await context.Advertisements.AddAsync(ad); await context.SaveChangesAsync(); }
public async Task GetAllUserIdsThatHaveAdInWishlistAsync_WithAds_ShouldReturnCorrectly() { var advertisement = new AdvertisementCreateServiceModel() { Name = "OnePlus 7 Pro", Description = "cool phone for everyday use, excellent performance", Price = 800, Condition = ProductCondition.New, CategoryId = "Electronics", SubCategoryId = "Phone", TownId = "testTownId", Address = "str nqkoq", Number = "telefonce", UserId = "test" }; await adService.CreateAsync(advertisement); var ad = await context.Advertisements.FirstOrDefaultAsync(a => a.Name == "OnePlus 7 Pro"); var advertisementWishlist = new UserAdvertisementWishlist { UserId = "test", AdvertisementId = ad.Id, Advertisement = ad, }; await context.UsersAdvertisementsWishlist.AddAsync(advertisementWishlist); await context.SaveChangesAsync(); var expectedResult = 1; var userIds = await service.GetAllUserIdsThatHaveAdInWishlistAsync(ad.Id); var actualResult = userIds.Count(); Assert.AreEqual(expectedResult, actualResult); }