public async Task <BaseModel> UpdateAsync(PrintingEditionsModelItem model) { var response = new BaseModel(); if (model == null) { response.Errors.Add(ErrorConstants.ModelIsNull); } var existingProduct = await _printingEditionRepository.GetByIdAsync(model.Id); if (existingProduct == null) { response.Errors.Add(ErrorConstants.ImpossibleToFindProduct); return(response); } var product = PrintingEditionMapper.UpdateEntityWithModel(existingProduct, model); var result = await _printingEditionRepository.UpdateAsync(product); if (!result) { response.Errors.Add(ErrorConstants.ImpossibleToUpdateProduct); } response = await UpdateAuthorInProductAsync(product, model.Authors); return(response); }
public async Task <PrintingEditionsModelItem> GetById(long id) { var response = new PrintingEditionsModelItem(); if (id == 0) { response.Errors.Add(ErrorConstants.ModelIsNull); return(response); } var product = await _printingEditionRepository.GetByProductIdAsync(id); if (product == null) { response.Errors.Add(ErrorConstants.ImpossibleToFindProduct); return(response); } var productModel = PrintingEditionMapper.MapEntityToModel(product.PrintingEdition); foreach (var item in product.Authors) { var author = AuthorMapper.MapEntityToModel(item); productModel.Authors.Add(author); } return(productModel); }
public async Task <PrintingEditionsModel> GetAllAsync(PrintingEditionsFilterModel model) { var response = new PrintingEditionsModel(); if (model == null) { response.Errors.Add(ErrorConstants.ModelIsNull); } var filterModel = FilterMapper.MapPrintingEditionsFilteringModel(model); var printingEditions = await _authorInPrintingEditionsRepository.GetFilteredPrintingEditionsAsync(filterModel); if (printingEditions == null) { response.Errors.Add(ErrorConstants.ImpossibleToFindProduct); return(response); } var products = new PrintingEditionsModel(); foreach (var printingEdition in printingEditions.Data) { var convertedPrice = _currencyConverter.Convert(CurrencyEnum.Currency.USD, model.Currency, printingEdition.PrintingEdition.Price); var printingEditionItemModel = PrintingEditionMapper.MapProductResponseModelToModelItem(printingEdition, model.Currency, convertedPrice); products.Items.Add(printingEditionItemModel); } products.TotalCount = printingEditions.TotalItemsCount; return(products); }
public PrintingEditionService(IPrintingEditionRepository printingEditionRepository, IAuthorInPrintingEditionRepository authorInPrintingEditionRepository, PrintingEditionMapper printingEditionMapper, IAuthorRepository authorRepository, ExchangeRateProvider exchangeRateProvider) { _printingEditionMapper = printingEditionMapper; _printingEditionRepository = printingEditionRepository; _authorInPrintingEditionRepository = authorInPrintingEditionRepository; _authorRepository = authorRepository; _exchangeRateProvider = exchangeRateProvider; }
public async Task <BaseModel> CreateAsync(PrintingEditionsModelItem model) { var response = new BaseModel(); if (model == null) { response.Errors.Add(ErrorConstants.ModelIsNull); return(response); } var changedPrice = _currencyConverter.Convert(model.Currency, CurrencyEnum.Currency.USD, model.Price); var product = PrintingEditionMapper.MapModelToEntity(model, changedPrice); var result = await _printingEditionRepository.CreateAsync(product); if (!result) { response.Errors.Add(ErrorConstants.ImpossibleToCreateProduct); } response = await CreateAuthorInProductAsync(product, model.Authors); return(response); }