public IHttpResponse Create(CreateProductViewModel model) { if (model.ProductType == null) { return(BadRequestErrorWithView("You must select a product type.")); } if (model.Price == default(decimal) || model.Price < 0) { return(BadRequestErrorWithView("You must enter a valid number larger than 0.")); } if (model.Name.Trim().Length < 3 || model.Description.Trim().Length < 3 || model.Name.Contains(" ")) { return(BadRequestErrorWithView("Invalid product information.")); } var user = this.DbContext.Users.First(u => u.Username == this.User.Username); Product product = model.To <Product>(); //Use Enum.TryParse to check if the enum exists. object type; Enum.TryParse(typeof(ProductType), model.ProductType, out type); if (type == null) { return(this.BadRequestErrorWithView("Invalid product type.")); } product.Type = (ProductType)type; if (this.DbContext.Products.Any(p => p.Name == product.Name)) { return(this.BadRequestErrorWithView("Product already exists!")); } this.DbContext.Products.Add(product); this.DbContext.SaveChanges(); return(this.Redirect($"/products/details?id={product.Id}")); }