Exemplo n.º 1
0
        /// <summary>
        /// Create product
        /// </summary>
        /// <param name="productCommand"></param>
        /// <returns></returns>
        public async Task <CreateProductDto> CreateProduct(ICreateProductCommand productCommand)
        {
            CreateProductDto response = null;

            try
            {
                var product = Product.CreateProduct(productCommand);

                if (product == null)
                {
                    return(await Task.Run(() => response = new CreateProductDto(null)));
                }

                if (product.Errors.Count > 0)
                {
                    return(await Task.Run(() => response = new CreateProductDto(product)));
                }

                var result = _repository.Product.GetByCondition(x => x.Code.Equals(product.Code) || x.Name.Equals(product.Name));
                if (result?.Count() == 0)
                {
                    _repository.Product.CreateProduct(product);
                    _repository.Save();
                    response = new CreateProductDto(product);
                }
                else
                {
                    response = new CreateProductDto(product)
                    {
                        Errors = new List <Error>
                        {
                            new Error("Id", "Product already exists")
                        }
                    };
                }

                return(await Task.Run(() => response));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                response = CreateProductDto.PrepareExceptionResponse(null, "ERROR_SYSTEM");
                return(await Task.Run(() => response));
            }
        }