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());
        }
Exemplo n.º 2
0
        //-- 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());
        }
Exemplo n.º 4
0
        //-- 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);
        }
Exemplo n.º 8
0
        // 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());
        }
Exemplo n.º 9
0
        // 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);
        }
Exemplo n.º 11
0
        // 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());
        }