public ProductFormData GetProductsFormData()
        {
            var currency        = Context.Currency.Select(c => c.Name).ToList();
            var units           = Context.Units.Select(c => c.Name).ToList();
            var productFormData = new ProductFormData {
                Unit = units, Currency = currency
            };

            return(productFormData);
        }
        public Response ValidateAndAdd(ProductFormData productData)
        {
            if ("" == (productData.Name))
            {
                return(new Response(0, -2, "Missing Name"));
            }

            if ("" == (productData.Type))
            {
                return(new Response(0, -2, "Missing Type"));
            }

            Product product = new Product(productData.Name);

            product.Type = ("Unknown");

            if ("Eyeshadow" == (productData.Type) || "Mascara" == (productData.Type))
            {
                product.Type   = (productData.Type);
                product.Family = (ProductFamily.EYES);
                if ("Eyeshadow" == (productData.Type) && product.Name.Contains("Queen"))
                {
                    product.Range = (ProductRange.QUEEN);
                }
            }

            product.Range = (ProductRange.BUDGET);
            if (productData.PackagingRecyclable)
            {
                product.Range = (ProductRange.PROFESSIONAL);
            }

            if ("Foundation" == (productData.Type))
            {
                if (productData.SuggestedPrice > 10)
                {
                    product.Range = (ProductRange.PROFESSIONAL);
                }
            }

            if ("Lipstick" == (productData.Type))
            {
                product.Type   = (productData.Type);
                product.Family = (ProductFamily.LIPS);
                if (productData.SuggestedPrice > 10)
                {
                    product.Range = (ProductRange.PROFESSIONAL);
                }

                if (productData.SuggestedPrice > 20)
                {
                    if (productData.Weight > 0 && productData.Weight < 10)
                    {
                        return(new Response(0, -1, "Error - failed quality check for Queen Range"));
                    }

                    product.Range = (ProductRange.QUEEN);
                }
            }

            if ("Mascara" == (productData.Type))
            {
                product.Family = (ProductFamily.LASHES);
                if (productData.SuggestedPrice > 15)
                {
                    product.Range = (ProductRange.PROFESSIONAL);
                }

                if (productData.SuggestedPrice > 25 && productData.PackagingRecyclable)
                {
                    product.Range = (ProductRange.QUEEN);
                }
            }

            if (productData.Weight < 0)
            {
                return(new Response(0, -3, "Weight error"));
            }

            product.Weight = (productData.Weight);

            if ("Blusher" == (productData.Type) || "Foundation" == (productData.Type))
            {
                product.Type   = (productData.Type);
                product.Family = (ProductFamily.SKIN);
                if ("Blusher" == (productData.Type) && productData.Weight > 10)
                {
                    return(new Response(0, -3, "Error - weight too high"));
                }
            }

            if (!productData.PackagingRecyclable && product.Range == ProductRange.QUEEN)
            {
                return(new Response(0, -1, "Error - failed quality check for Queen Range"));
            }

            if ("Unknown" == (product.Type))
            {
                return(new Response(0, -1, "Unknown product type " + productData.Type));
            }

            return(new Response(_db.storeProduct(product), 0, "Product Successfully Added"));
        }