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 }); }
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); }