Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
 public PrintingEditionService(IPrintingEditionRepository printingEditionRepository,
                               IAuthorInPrintingEditionRepository authorInPrintingEditionRepository,
                               PrintingEditionMapper printingEditionMapper, IAuthorRepository authorRepository,
                               ExchangeRateProvider exchangeRateProvider)
 {
     _printingEditionMapper             = printingEditionMapper;
     _printingEditionRepository         = printingEditionRepository;
     _authorInPrintingEditionRepository = authorInPrintingEditionRepository;
     _authorRepository     = authorRepository;
     _exchangeRateProvider = exchangeRateProvider;
 }
Beispiel #5
0
        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);
        }