示例#1
0
        public AddProductResponse AddProduct(AddProductRequest request)
        {
            var response = new AddProductResponse {
                Errors = new List <Error>()
            };

            try
            {
                Repository.AddProduct(request.ProductEntity);
                response.Message = "Product added successfully!";
            }
            catch (Exception ex)
            {
                response.Errors.Add(
                    new Error
                {
                    CustomisedMessage = "Unable to add  product",
                    StackTrace        = ex.StackTrace,
                    SystemMessage     = ex.Message,
                });

                Logger.Fatal(request);
                Logger.Fatal(response, ex);
            }

            return(response);
        }
示例#2
0
 public Product AddProduct(AddProductResponse newProductRes)
 {
     using (context)
     {
         try
         {
             if (!string.IsNullOrEmpty(newProductRes.NewProduct.Name) ||
                 string.IsNullOrEmpty(newProductRes.NewProduct.Description))
             {
                 var product = context.Products.Where(prod => prod.Name == newProductRes.NewProduct.Name && prod.Price == newProductRes.NewProduct.Price).ToList();
                 if (!product.Any())
                 {
                     context.Products.Add(newProductRes.NewProduct);
                     newProductRes.Success = context.SaveChanges() != 0;
                 }
                 else
                 {
                     newProductRes.Success      = false;
                     newProductRes.ErrorMessage = $"The product {newProductRes.NewProduct.Name} already exists.";
                 }
             }
             else
             {
                 newProductRes.Success      = false;
                 newProductRes.ErrorMessage = "The product must have the following details: price, name and description.";
             }
         }
         catch (Exception ex)
         {
             newProductRes.Success      = false;
             newProductRes.ErrorMessage = $"An error has occured: {ex.Message} {ex.InnerException}";
         }
     }
     return(newProductRes.NewProduct);
 }
示例#3
0
        public IActionResult AddProduct([FromBody] Product data)
        {
            var productResponse = new AddProductResponse
            {
                NewProduct = data
            };

            productRepository.AddProduct(productResponse);
            return(Json(productResponse));
        }
示例#4
0
        public async Task Consume(ConsumeContext <AddProductRequest> context)
        {
            var request = context.Message;

            var cart = await repo.GetCartByIdAsync(request.CartId);

            var product = request.Product;

            //double dispatch pattern
            cart.AddProduct(ShoppingCartProduct.Create(product.Id, product.Name, cart, new Money(product.Price.Amount)));

            await repo.SaveAsync(cart);

            var response = new AddProductResponse(true, ResponseAction.Updated);

            await context.RespondAsync(response);
        }
示例#5
0
        public AddProductResponse AddProduct(AddProductRequest request)
        {
            AddProductResponse addProductResponse = new AddProductResponse();

            addProductResponse.Message = "Product not added successfully.";
            if (String.IsNullOrEmpty(request.AuthToken))
            {
                addProductResponse.Message = "Please pass all mandatory fields.";
                return(addProductResponse);
            }

            AuthenticationToken authToken = new Helper().GetAuthenticationToken(request.AuthToken);

            if (authToken == null)
            {
                addProductResponse.Message = "Unauthorizes user.";
                return(addProductResponse);
            }

            if (String.IsNullOrEmpty(request.productInfo.Name) || String.IsNullOrEmpty(request.productInfo.Quantity))
            {
                addProductResponse.Message = "Please pass all mandatory fields.";
                return(addProductResponse);
            }

            ProductEL productEL = new ProductEL();

            productEL = MapperUtility.MapTo(request.productInfo, productEL);
            if (productHelper.AddProduct(productEL))
            {
                addProductResponse.Message   = "Product added successfully.";
                addProductResponse.IsSuccess = true;
                return(addProductResponse);
            }
            else
            {
                addProductResponse.Message = "Some error occured.";
                return(addProductResponse);
            }
        }
示例#6
0
        public AddProductResponse Post_AddProduct([FromBody] Models.Product mProduct)
        {
            IProductBS bs = DIFactoryDesigntime.GetInstance <IProductBS>();
            IBaseConverter <Models.Product, Entities.Product> convtResult = new AutoMapConverter <Models.Product, Entities.Product>();

            Entities.Product eProduct = convtResult.ConvertObject(mProduct);
            bs.AddProduct(eProduct);

            var addProductResponse = new AddProductResponse()
            {
                ProductID = eProduct.ProductID
            };

            return(addProductResponse);

            ////Generate a link to the new product and set the Location header in the response.
            ////For public HttpResponseMessage Post_AddProduct([FromBody] Models.Product mProduct)
            //var response = Request.CreateResponse(HttpStatusCode.Created);
            //string uri = Url.Link("GetProductById", new { id = eProduct.ProductID });
            //response.Headers.Location = new Uri(uri);
            //return response;
        }
示例#7
0
        /// <summary>
        /// Method adds product using an injected repository
        /// </summary>
        /// <param name="request">Contains product to be added</param>
        /// <returns>Contains operation status</returns>
        public AddProductResponse AddProduct(AddProductRequest request)
        {
            AddProductResponse response = new AddProductResponse();
            try
            {
                productsRepository.Add(request.Product);
                unitOfWork.Commit();
                response.Status = true;
                response.Message = "ok";
            }
            catch (Exception e)
            {
                response.Status = false;
                response.Message = e.Message;
                if (e.InnerException != null)
                {
                    response.Message += Environment.NewLine;
                    response.Message += string.Format("Inner exception: {0}", e.InnerException.Message);
                }
            }

            return response;
        }
示例#8
0
        public AddProductResponse AddProduct(AddProductRequest request)
        {
            AddProductResponse response = new AddProductResponse();

            try
            {
                if (request.SecurityString == ConfigurationManager.AppSettings[Constants.APP_SETTING_SECURITY_TOKEN])
                {
                    LacesDataModel.User.User user = new LacesDataModel.User.User(request.UserId); // Ensure user exists.

                    LacesDataModel.Product.Product product = new LacesDataModel.Product.Product();
                    product.AskingPrice     = request.AskingPrice;
                    product.Brand           = request.Brand;
                    product.ConditionId     = request.ConditionId;
                    product.CreatedDate     = DateTime.Now;
                    product.Description     = request.Description;
                    product.Name            = request.ProductName;
                    product.ProductStatusId = (int)ProductStatusOptions.Open;
                    product.ProductTypeId   = request.ProductTypeId;
                    product.SellerId        = user.UserId;
                    product.Size            = request.Size;
                    product.UpdatedDate     = DateTime.Now;

                    if (product.Add())
                    {
                        if (request.Images != null && request.Images.Count > 0)
                        {
                            int count = 0;

                            /* This is needed until we can get the Id back from Add(). Remove ASAP */

                            List <LacesDataModel.Product.Product> queryResult = new List <LacesDataModel.Product.Product>();

                            SearchEntity search = new SearchEntity();

                            search.ColumnsToReturn = new List <string>();
                            search.ColumnsToReturn.Add("ProductId");

                            search.ConnectionString = Constants.CONNECTION_STRING;

                            search.OrderBy           = new OrderBy();
                            search.OrderBy.Column    = "ProductId";
                            search.OrderBy.Direction = OrderByDirection.DESC;

                            search.PageSizeLimit = 1;

                            search.SchemaName = Constants.SCHEMA_DEFAULT;
                            search.TableName  = Constants.TABLE_PRODUCTS;

                            queryResult = new GenericRepository <LacesDataModel.Product.Product>().Read(search);

                            if (queryResult.Count > 0)
                            {
                                product.ProductId = queryResult[0].ProductId;
                            }

                            /* End remove section */

                            foreach (LacesAPI.Models.Request.ImageInfo image in request.Images)
                            {
                                string fileName = product.ProductId + "_" + count + "." + image.FileFormat;
                                string filePath = ConfigurationManager.AppSettings[Constants.APP_SETTING_PRODUCT_IMAGE_DIRECTORY] + fileName;

                                File.WriteAllBytes(filePath, image.ImageData);

                                Image productImage = new Image();

                                productImage.AssociatedEntityId = product.ProductId;
                                productImage.FileFormat         = image.FileFormat;
                                productImage.FileName           = fileName;
                                productImage.FilePath           = filePath;
                                productImage.ImageEntityTypeId  = (int)ImageEntityTypeOptions.Product;
                                productImage.CreatedDate        = DateTime.Now;
                                productImage.UpdatedDate        = DateTime.Now;
                                productImage.Add();
                            }
                        }

                        if (request.Tags != null && request.Tags.Count > 0)
                        {
                            foreach (string tag in request.Tags)
                            {
                                LacesDataModel.Product.Tag newTag = new LacesDataModel.Product.Tag();

                                newTag.ProductId   = product.ProductId;
                                newTag.Description = tag;

                                newTag.Add();
                            }
                        }

                        response.Success = true;
                        response.Message = "Product succesfully created.";
                    }
                    else
                    {
                        response.Success = false;
                        response.Message = "An error occurred when communicating with the database.";
                    }
                }
                else
                {
                    response.Success = false;
                    response.Message = "Invalid security token.";
                }
            }
            catch (Exception ex)
            {
                response         = new AddProductResponse();
                response.Success = false;

                if (ex.Message.Contains("find user"))
                {
                    response.Message = ex.Message;
                }
                else
                {
                    response.Message = "An unexpected error has occurred; please verify the format of your request.";
                }
            }

            return(response);
        }
        public AddProductResponse Post_AddProduct([FromBody] Models.Product mProduct)
        {
            IProductBS bs = DIFactoryDesigntime.GetInstance<IProductBS>();
            IBaseConverter<Models.Product, Entities.Product> convtResult = new AutoMapConverter<Models.Product, Entities.Product>();
            Entities.Product eProduct = convtResult.ConvertObject(mProduct);
            bs.AddProduct(eProduct);
            
            var addProductResponse = new AddProductResponse() 
            {
                ProductID =  eProduct.ProductID
            };
            return addProductResponse;  

            ////Generate a link to the new product and set the Location header in the response.
            ////For public HttpResponseMessage Post_AddProduct([FromBody] Models.Product mProduct)
            //var response = Request.CreateResponse(HttpStatusCode.Created);            
            //string uri = Url.Link("GetProductById", new { id = eProduct.ProductID });
            //response.Headers.Location = new Uri(uri);
            //return response;
        }