public async Task <DiscountResult> CreateDiscountAsync(DiscountRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var availableProduct = await _paymentRepository.GetById(request.ProductIds);

            Discount       discount       = Create <Discount>(request);
            DiscountResult discountResult = Create <DiscountResult>(request);

            if (availableProduct != null)
            {
                discount.ProductIds = availableProduct.SKU;
                discount.Id         = Guid.NewGuid().ToString();
                var result = await _discountRepository.Add(discount);

                discountResult.Id         = discount.Id;
                discountResult.ProductIds = discount.ProductIds;
                discountResult.Code       = DiscountResultCode.Success;
            }
            else
            {
                discountResult.ProductIds = "";
                discountResult.Code       = DiscountResultCode.NoProductAvailable;
            }

            return(discountResult);
        }
 private static T Create <T>(DiscountRequest request) where T : DiscountBase, new()
 {
     return(new T
     {
         Percentage = request.Percentage,
         Description = request.Description,
         ValidDate = request.ValidDate
     });
 }
Example #3
0
        public DiscountTests()
        {
            _request = new DiscountRequest
            {
                Percentage  = 10,
                Description = "10% de descuento en chicles trident 18's",
                ProductIds  = "7506105606053",
                ValidDate   = new DateTime(2020, 07, 24)
            };

            _availableProducts = new List <Product> {
                new Product()
                {
                    Description = "",
                    SKU         = "7506105606053",
                    Price       = new Amount()
                    {
                        CurrencyId  = Guid.Parse("50bca81b-4099-4087-8469-874fdc6906cf"),
                        TotalAmount = 14
                    },
                    Taxes = new List <Tax>
                    {
                        new Tax()
                        {
                            Id          = "b0d92892-eb04-4a34-a655-63264cc923eb",
                            Percentage  = 16,
                            Description = "IVA"
                        }
                    }
                }
            };

            _discountRepositoryMock = new Mock <IDiscountRepository>();
            _productRepositoryMock  = new Mock <IProductRepository>();


            _discount = new Discount(_discountRepositoryMock.Object, _productRepositoryMock.Object);
        }