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());
            }
        }
Example #3
0
        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();
        }
Example #4
0
        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);
        }