示例#1
0
        public async Task <IHttpActionResult> PostAllergens(AllergensDTO allergensDTO)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var addedRecipies = allergensDTO.Recipes.Select(i => db.Recipes.Find(i)).ToList();

            if (addedRecipies.Contains(null))
            {
                return(NotFound());
            }

            Allergens allergens = new Allergens()
            {
                Name    = allergensDTO.Name,
                Recipes = addedRecipies
            };

            db.Allergens.Add(allergens);
            await db.SaveChangesAsync();

            var x = CreatedAtRoute("DefaultApi", new { id = allergens.ID }, allergens);

            allergensDTO.ID = allergens.ID;

            return(Ok(allergensDTO));
        }
示例#2
0
        public async Task <IHttpActionResult> PutAllergens(int id, AllergensDTO allergensDTO)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != allergensDTO.ID)
            {
                return(BadRequest());
            }

            var compare = allergensDTO.Recipes.Select(i => db.Recipes.Find(i)).ToList();

            var allergens = db.Allergens.Where(a => a.ID == id).First();

            allergens.Name = allergensDTO.Name;

            var deleted = allergens.Recipes.AsQueryable().Except(compare.AsQueryable()).ToList();

            var added = compare.AsQueryable().Except(allergens.Recipes.AsQueryable()).ToList();

            deleted.ForEach(d => allergens.Recipes.Remove(d));

            foreach (Recipes r in added)
            {
                if (r == null)
                {
                    NotFound();
                }
                if (db.Entry(r).State == EntityState.Detached)
                {
                    db.Recipes.Attach(r);
                }

                allergens.Recipes.Add(r);
            }

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!AllergensExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
示例#3
0
        public async Task <IHttpActionResult> GetAllergens(int id)
        {
            AllergensDTO result = await(from r in db.Allergens
                                        where r.ID == id
                                        select new AllergensDTO()
            {
                ID      = r.ID,
                Name    = r.Name,
                Recipes = (from s in r.Recipes select s.Id).AsEnumerable().ToList()
            }).FirstAsync();

            if (result == null)
            {
                return(NotFound());
            }

            return(Ok(result));
        }
示例#4
0
        public async Task <IHttpActionResult> DeleteAllergens(int id)
        {
            Allergens allergens = await db.Allergens.FindAsync(id);

            if (allergens == null)
            {
                return(NotFound());
            }

            AllergensDTO result = (new AllergensDTO()
            {
                ID = allergens.ID,
                Name = allergens.Name,
                Recipes = (from s in allergens.Recipes select s.Id).AsEnumerable().ToList()
            });

            db.Allergens.Remove(allergens);
            await db.SaveChangesAsync();

            return(Ok(result));
        }