public async Task <IActionResult> GivePromoCodesToCustomersWithPreferenceAsync(GivePromoCodeRequest request)
        {
            if (request is null)
            {
                return(BadRequest("Request is empty"));
            }

            var customers = await _customerRepository.GetAllAsync(c => c.CustomerPreferences.Any(p => p.Preference.Name == request.Preference));

            var employee = await _employeeRepository.GetEmployeeAsync(e => (e.FirstName + " " + e.LastName) == request.PartnerName);

            if (customers.Count > 0)
            {
                var promocodes = new List <PromoCode>();
                foreach (var customer in customers)
                {
                    var promoCode = _mapper.Map <PromoCode>(request);
                    promoCode.Id               = Guid.NewGuid();
                    promoCode.CustomerId       = customer.Id;
                    promoCode.PreferenceId     = customer.CustomerPreferences.FirstOrDefault().PreferenceId;
                    promoCode.PartnerManagerId = employee.Id;
                    promocodes.Add(promoCode);
                }

                await _promoCodeRepository.CreateBulkAsync(promocodes);
            }
            else
            {
                var promoCode = _mapper.Map <PromoCode>(request);
                await _promoCodeRepository.CreateAsync(promoCode);
            }

            return(Ok());
        }
コード例 #2
0
        public async Task <IEnumerable <string> > GenerateAsync(int count)
        {
            var created = new string[count];
            var i       = 0;

            while (i < count)
            {
                var key = GenerateKey();
                if ((await _codeRepository.GetAsync(key)) == null)
                {
                    await _codeRepository.CreateAsync(new PromoCode()
                    {
                        Key = key
                    });

                    created[i++] = key;
                }
            }
            return(created);
        }
コード例 #3
0
        public async Task CreateAsync(PromoCode code)
        {
            await _innerRepository.CreateAsync(code);

            await _distributedCache.SetStringAsync(code.Key, JsonConvert.SerializeObject(code));
        }