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