public async Task <IActionResult> Update([FromBody] ProductOptionTariffDto productOptionTariffDto) { ProductOptionTariff productOptionTariff = await productOptionTariffRepository.GetProductOptionTariff(productOptionTariffDto.Id); if (productOptionTariff == null) { return(StatusCode(StatusCodes.Status500InternalServerError, $"ProductOptionTariff id == {productOptionTariffDto.Id}. Not found!")); } productOptionTariff.SetName(productOptionTariffDto.Name); productOptionTariff.SetProductOption(productOptionTariffDto.ProductOptionId); productOptionTariff.RemovePriceItems(productOptionTariffDto.Prices.ToProductOptionTariffPrices()); foreach (var item in productOptionTariffDto.Prices) { Price price = new Price(item.Price.Value, item.Price.Currency); ProlongationPeriod period = new ProlongationPeriod(item.Period.Value, (PeriodUnit)item.Period.periodUnit); if (productOptionTariff.Prices.FirstOrDefault(x => x.Period == period && x.Price.Currency == price.Currency) != null) { productOptionTariff.ChangePriceItem(price, period); } else { productOptionTariff.AddPriceItem(price, period); } } await productOptionTariffRepository.Update(productOptionTariff); await unitOfWork.SaveEntitiesAsync(); return(Ok()); }
public async Task <IActionResult> Add([FromBody] ProductOptionTariffDto productOptionTariffDto) { ProductOptionTariff productOptionTariff = new ProductOptionTariff( productOptionTariffDto.ProductOptionId, productOptionTariffDto.Name); foreach (var priceItem in productOptionTariffDto.Prices) { Price price = new Price(priceItem.Price.Value, priceItem.Price.Currency); ProlongationPeriod prolongationPeriod = new ProlongationPeriod(priceItem.Period.Value, (PeriodUnit)priceItem.Period.periodUnit); productOptionTariff.AddPriceItem(price, prolongationPeriod); } await productOptionTariffRepository.Add(productOptionTariff); await unitOfWork.SaveEntitiesAsync(); return(Ok()); }