Beispiel #1
0
        public async Task <DomainValidationResult <Promotion> > CreatePromotionAsync(
            string promotionalCode,
            Currency currency,
            TimeSpan duration,
            DateTime expiredAt
            )
        {
            var result = new DomainValidationResult <Promotion>();

            if (!await _promotionRepository.IsPromotionalCodeAvailableAsync(promotionalCode))
            {
                result.AddFailedPreconditionError("The promotional code isn't available");
            }

            if (result.IsValid)
            {
                var promotion = new Promotion(
                    promotionalCode,
                    currency,
                    duration,
                    new DateTimeProvider(expiredAt));

                _promotionRepository.Create(promotion);

                await _promotionRepository.CommitAsync();

                return(promotion);
            }

            return(result);
        }
        public bool Create(PromotionCreateRequest entity)
        {
            string   description = entity.Description;
            DateTime beginDate   = entity.BeginDate;
            DateTime expiredDate = entity.ExpiredDate;

            if (!util.ValidRangeLengthInput(description, 1, 250) ||
                beginDate == null ||
                expiredDate == null ||
                beginDate.CompareTo(expiredDate) >= 0)
            {
                return(false);
            }

            Promotion existed = _proRepo.GetAll()
                                .FirstOrDefault(e => e.Description.Trim().ToLower().Equals(description.Trim().ToLower()));

            if (existed != null)
            {
                return(false);
            }
            Promotion newEntity = new Promotion();

            newEntity.Description = description.Trim();
            newEntity.BeginDate   = beginDate;
            newEntity.BrandId     = entity.BrandId;

            return(_proRepo.Create(newEntity));
        }
Beispiel #3
0
 public int Post([FromBody] Promotion value)
 {
     return(_promotionRepository.Create(value));
 }