public IHttpActionResult Post(CocktailCreate model) { var service = CreateCustomCocktailService(); if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (service.DoesCocktailAlreadyExist(model)) { return(Conflict()); } if (!service.IsLiquorInDatabase(model.LiquorsInCocktail)) { return(InternalServerError(new SystemException("Liquor is not in the database."))); } if (!service.Create(model)) { return(InternalServerError()); } return(Ok()); }
//-- Create public bool AddCocktail(CocktailCreate model) { var entity = new Cocktail() { Name = model.Name, Ingredients = model.Ingredients }; int numOfChanges = 1; List <CocktailLiquor> cocktailLiquors = ConvertFromStringToCocktailLiquor(model, entity); foreach (CocktailLiquor i in cocktailLiquors) { _context.CocktailLiquors.Add(i); } numOfChanges += cocktailLiquors.Count(); entity.LiquorsInCocktail = cocktailLiquors; _context.Cocktails.Add(entity); return(_context.SaveChanges() == numOfChanges); }
public IHttpActionResult Put([FromUri] int id, [FromBody] CocktailCreate model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (_service.GetByID(id) is null) { return(NotFound()); } if (!_service.IsLiquorInDatabase(model.LiquorsInCocktail)) { return(InternalServerError(new SystemException("Liquor is not in database."))); } if (_service.ChangesWereNotMade(id, model)) { return(Ok("No changes were made.")); } if (_service.DoesCocktailAlreadyExist(model)) { return(Conflict()); } if (!_service.UpdateByID(id, model)) { return(InternalServerError()); } return(Ok()); }
//-- Update public bool UpdateByID(int id, CocktailCreate updatedCocktail) { Cocktail cocktail = _context.Cocktails.Find(id); int numOfChanges = 0; if (!(cocktail.Name == updatedCocktail.Name && cocktail.Ingredients == updatedCocktail.Ingredients)) { numOfChanges = 1; } cocktail.Name = updatedCocktail.Name; cocktail.Ingredients = updatedCocktail.Ingredients; numOfChanges += RemoveCocktailLiquor(id); List <CocktailLiquor> cocktailLiquors = ConvertFromStringToCocktailLiquor(updatedCocktail, cocktail); foreach (CocktailLiquor i in cocktailLiquors) { _context.CocktailLiquors.Add(i); } numOfChanges += cocktailLiquors.Count(); cocktail.LiquorsInCocktail = cocktailLiquors; return(_context.SaveChanges() == numOfChanges); }
//-- Create public bool Create(CocktailCreate model) { var entity = new CustomCocktail() { User = _user, Name = model.Name, Ingredients = model.Ingredients }; int numOfChanges = 1; List <CustomSpecific> customSpecifics = ConvertFromStringToCustomSpecific(model, entity); foreach (CustomSpecific i in customSpecifics) { _context.CustomSpecifics.Add(i); } numOfChanges += customSpecifics.Count(); entity.LiquorsInCocktail = customSpecifics; _context.CustomCocktails.Add(entity); return(_context.SaveChanges() == numOfChanges); }
// helper public List <CustomSpecific> ConvertFromStringToCustomSpecific(CocktailCreate cocktailCreate, CustomCocktail customCocktail) { List <CustomSpecific> customSpecifics = new List <CustomSpecific>(); List <string> liquors = cocktailCreate.LiquorsInCocktail.Split(_separator, StringSplitOptions.RemoveEmptyEntries).ToList(); foreach (string name in liquors) { var liquorQuery = _context .Liquors .SingleOrDefault(e => e.Type == name && e.Subtype == null || e.Subtype == name); var specificLiquorQuery = _context .SpecificLiquors .SingleOrDefault(e => e.Name == name); CustomSpecific junction = new CustomSpecific() { CustomCocktail = customCocktail, Liquor = liquorQuery, SpecificLiquor = specificLiquorQuery }; customSpecifics.Add(junction); } return(customSpecifics); }
//-- Update public bool Update(int id, CocktailCreate updatedCustomCocktail) { CustomCocktail customCocktail = _context.CustomCocktails.Find(id); int numOfChanges = 0; if (!(customCocktail.Name == updatedCustomCocktail.Name && customCocktail.Ingredients == updatedCustomCocktail.Ingredients)) { numOfChanges = 1; } customCocktail.Name = updatedCustomCocktail.Name; customCocktail.Ingredients = updatedCustomCocktail.Ingredients; numOfChanges += RemoveCustomSpecific(id); List <CustomSpecific> customSpecifics = ConvertFromStringToCustomSpecific(updatedCustomCocktail, customCocktail); foreach (CustomSpecific i in customSpecifics) { _context.CustomSpecifics.Add(i); } numOfChanges += customSpecifics.Count(); customCocktail.LiquorsInCocktail = customSpecifics; return(_context.SaveChanges() == numOfChanges); }
// helper public bool ChangesWereNotMade(int id, CocktailCreate updatedCocktail) { Cocktail cocktail = _context.Cocktails.Find(id); return(updatedCocktail.Name == cocktail.Name && string.Join(",", ConvertFromCocktailLiquorToString(cocktail.LiquorsInCocktail).ToList()) == string.Join(",", updatedCocktail.LiquorsInCocktail.Split(_separator, StringSplitOptions.RemoveEmptyEntries).ToList()) && updatedCocktail.Ingredients.ToLower() == cocktail.Ingredients.ToLower()); }
// helper public bool DoesCocktailAlreadyExist(CocktailCreate model) { CocktailListItem cocktailListItem = GetByName(model.Name); if (cocktailListItem is null) { return(false); } return(model.LiquorsInCocktail == string.Join(", ", cocktailListItem.LiquorsInCocktail) && model.Ingredients == string.Join(", ", cocktailListItem.Ingredients)); }
// helper public bool DoesCocktailAlreadyExist(CocktailCreate model) { List <CocktailListItem> cocktailListItems = GetByName(model.Name); if (cocktailListItems is null) { return(false); } bool check = false; foreach (CocktailListItem item in cocktailListItems) { if (model.LiquorsInCocktail == string.Join(", ", item.LiquorsInCocktail) && model.Ingredients == string.Join(", ", item.Ingredients)) { check = true; } } return(check); }
// helper public List <CocktailLiquor> ConvertFromStringToCocktailLiquor(CocktailCreate cocktailCreate, Cocktail cocktail) { List <CocktailLiquor> cocktailLiquors = new List <CocktailLiquor>(); List <string> liquors = cocktailCreate.LiquorsInCocktail.Split(_separator, StringSplitOptions.RemoveEmptyEntries).ToList(); foreach (string name in liquors) { var query = _context .Liquors .Single(e => e.Type == name && e.Subtype == null || e.Subtype == name); CocktailLiquor junction = new CocktailLiquor() { Liquor = query, Cocktail = cocktail }; cocktailLiquors.Add(junction); } return(cocktailLiquors); }
public IHttpActionResult Post(CocktailCreate model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (_service.GetByName(model.Name) != null) { return(Conflict()); } if (!_service.IsLiquorInDatabase(model.LiquorsInCocktail)) { return(InternalServerError(new SystemException("Liquor is not in database."))); } if (!_service.AddCocktail(model)) { return(InternalServerError()); } return(Ok()); }