示例#1
0
        public async Task <IList <AffiliateCategory> > GetAllAsync()
        {
            var categories = await GetAllCategoriesAsync();

            var coupons = await _couponRepository.GetAllAsync();

            foreach (var category in categories)
            {
                category.CouponsCount = coupons.Count(c => c.Category != null && c.Category.Id == category.Id);
            }
            return(_mapper.Map <IList <AffiliateCategory> >(categories));
        }
示例#2
0
        public async Task <IList <AffiliateStore> > GetAllAsync()
        {
            var stores = await GetAllLomadeeStoresAsync();

            var coupons = await _couponRepository.GetAllAsync();

            foreach (var lomadeeStore in stores)
            {
                lomadeeStore.CouponsCount = coupons.Count(c => c.Store != null && c.Store.Id == lomadeeStore.Id);
            }
            return(_mapper.Map <IList <AffiliateStore> >(stores));
        }
示例#3
0
        public async Task <IList <AffiliateStore> > GetAllAsync()
        {
            var response = await GetAllZanoxMedia();

            UpdateProperties(response);
            var stores  = _mapper.Map <IList <AffiliateStore> >(response.Admedium.Items);
            var coupons = await _couponRepository.GetAllAsync();

            foreach (var store in stores)
            {
                store.CouponsCount = coupons.Count(c => c.Store != null && c.Store.Id == store.StoreId);
            }
            return(stores);
        }
示例#4
0
        public async Task <IList <AffiliateCategory> > GetAllAsync()
        {
            var coupons = await _couponRepository.GetAllAsync();

            return(new List <AffiliateCategory>
            {
                new AffiliateCategory
                {
                    CategoryId = 117979,
                    AffiliateProgram = Affiliates.Zanox,
                    Name = "Black Friday",
                    FriendlyName = "Black Friday".ToFriendlyName(),
                    ChangedDate = new DateTime(2019, 11, 19),
                    CouponsCount = coupons.Count
                }
            });
        }
示例#5
0
        public async Task Invoke()
        {
            var couponsFromPartner = await _repositoryFromPartner.GetAllAsync();

            if (!couponsFromPartner.Any())
            {
                return;
            }

            var couponsToCreate = new List <AffiliateCoupon>();
            var couponsToChange = new List <AffiliateCoupon>();
            var couponsToCancel = new List <AffiliateCoupon>();

            var cuponicoCoupons = await _cuponicoRepository.GetAllAsync();

            foreach (var partnerCoupon in couponsFromPartner)
            {
                if (partnerCoupon == null)
                {
                    continue;
                }

                var cuponicoCoupon = cuponicoCoupons?.FirstOrDefault(local => local.CouponId == partnerCoupon.CouponId);
                if (cuponicoCoupon == null)
                {
                    couponsToCreate.Add(partnerCoupon);
                }
                else
                {
                    if (!cuponicoCoupon.Equals(partnerCoupon))
                    {
                        couponsToChange.Add(partnerCoupon);
                    }
                }
            }

            if (cuponicoCoupons != null)
            {
                couponsToCancel.AddRange(cuponicoCoupons.Where(localCoupon => couponsFromPartner.All(lomadee => lomadee.CouponId != localCoupon.CouponId)));
            }

            if (couponsToCreate.Any())
            {
                var baches = couponsToCreate.BatchesOf(50);
                foreach (var bach in baches)
                {
                    var coupons = bach.ToList();
                    await _cuponicoRepository.SaveAsync(coupons);

                    var createdCoupons = AffiliateCouponCreated.CreateMany(coupons);
                    await _publisher.PublishAsync(createdCoupons);
                }
            }

            if (couponsToChange.Any())
            {
                var baches = couponsToChange.BatchesOf(50);
                foreach (var bach in baches)
                {
                    var coupons = bach.ToList();
                    await _cuponicoRepository.SaveAsync(coupons);

                    var changedCoupons = AffiliateCouponChanged.CreateMany(coupons);
                    await _publisher.PublishAsync(changedCoupons);
                }
            }

            if (couponsToCancel.Any())
            {
                var baches = couponsToCancel.BatchesOf(50);
                foreach (var bach in baches)
                {
                    var coupons = bach.ToList();
                    await _cuponicoRepository.DeleteAsync(coupons.Select(x => x.CouponId).ToList());

                    var canceledStores = AffiliateCouponCanceled.CreateMany(coupons);
                    await _publisher.PublishAsync(canceledStores);
                }
            }
        }