//-- 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); }
//-- 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); }
//-- Get By Name public List <CocktailListItem> GetByName(string name) { List <CocktailListItem> customCocktails = _context.CustomCocktails.Where(e => e.Name.ToLower() == name.ToLower() && e.UserId == _user.Id).Select(e => new CocktailListItem { Id = e.Id, Name = e.Name, }).ToList(); if (customCocktails.Count == 0) { return(null); } foreach (CocktailListItem item in customCocktails) { CustomCocktail customCocktail = _context.CustomCocktails.Find(item.Id); item.LiquorsInCocktail = ConvertFromCustomSpecificToString(customCocktail.LiquorsInCocktail); item.Ingredients = customCocktail.Ingredients.Split(_separator, StringSplitOptions.RemoveEmptyEntries).ToList(); } return(customCocktails); }
//-- Get By ID public CocktailListItem GetById(int id) { CustomCocktail customCocktail = _context.CustomCocktails.Find(id); if (customCocktail is null) { return(null); } if (customCocktail.UserId != _user.Id) { return(null); } return(new CocktailListItem { Id = customCocktail.Id, Name = customCocktail.Name, LiquorsInCocktail = ConvertFromCustomSpecificToString(customCocktail.LiquorsInCocktail), Ingredients = customCocktail.Ingredients.Split(_separator, StringSplitOptions.RemoveEmptyEntries).ToList() }); }
// helper public bool ChangesWereNotMade(int id, CocktailCreate updatedCustomCocktail) { CustomCocktail customCocktail = _context.CustomCocktails.Find(id); return(updatedCustomCocktail.Name == customCocktail.Name && string.Join(",", ConvertFromCustomSpecificToString(customCocktail.LiquorsInCocktail).ToList()) == string.Join(",", updatedCustomCocktail.LiquorsInCocktail.Split(_separator, StringSplitOptions.RemoveEmptyEntries).ToList()) && updatedCustomCocktail.Ingredients.ToLower() == customCocktail.Ingredients.ToLower()); }
// 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); }