Esempio n. 1
0
        public async Task <IActionResult> Create([FromBody] SavedProductResource savedProductResources)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var product = _mapper.Map <SavedProductResource, Product>(savedProductResources);

            await _unitOfWork.ProductRepository.AddAsync(product);

            if (!await _unitOfWork.CompleteAsync())
            {
                _logger.LogMessage(LoggingEvents.SavedFail, ApplicationConstants.ControllerName.Product, product.Id);
                return(FailedToSave(product.Id));
            }

            product = await _unitOfWork.ProductRepository.GetProduct(product.Id);

            var result = _mapper.Map <Product, ProductResource>(product);

            _logger.LogMessage(LoggingEvents.Created, ApplicationConstants.ControllerName.Product, product.Id);

            return(CreatedAtRoute(ApplicationConstants.ControllerName.Product, new { id = product.Id }, result));
        }
Esempio n. 2
0
        public async Task <IActionResult> Update(string id, [FromBody] SavedProductResource savedProductResource)
        {
            bool isValid = Guid.TryParse(id, out var productId);

            if (!isValid)
            {
                return(InvalidId(id));
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var product = await _unitOfWork.ProductRepository.GetProduct(productId);

            if (product == null)
            {
                return(NotFound(productId));
            }

            _mapper.Map <SavedProductResource, Product>(savedProductResource, product);

            if (!await _unitOfWork.CompleteAsync())
            {
                _logger.LogMessage(LoggingEvents.SavedFail, ApplicationConstants.ControllerName.Product, product.Id);
                return(FailedToSave(product.Id));
            }

            product = await _unitOfWork.ProductRepository.GetProduct(product.Id);

            var result = _mapper.Map <Product, ProductResource>(product);

            _logger.LogMessage(LoggingEvents.Updated, ApplicationConstants.ControllerName.Product, product.Id);

            return(Ok(result));
        }