Example #1
0
        private void UpdateTags(int id, Patch patch, Data.Models.Patch existingPatch)
        {
            List <Tag> tagsToRemove = existingPatch.Tags.Where(tag => !patch.Tags.Any(x => x.Name == tag.Name && x.PatchId == id)).ToList();
            List <Tag> tagsToAdd    = (
                from tag in patch.Tags
                where !existingPatch.Tags.Any(x => x.Name == tag.Name && x.PatchId == id)
                select new Tag
            {
                PatchId = id,
                Name = tag.Name
            }).ToList();

            context.Tags.AddRange(tagsToAdd);
            context.Tags.RemoveRange(tagsToRemove);
        }
Example #2
0
        public async Task <IActionResult> PutPatch([FromRoute] int id, [FromBody] Patch patch)
        {
            if (!PatchExists(id))
            {
                return(NotFound());
            }

            patch.DateUpdated = DateTime.UtcNow;
            Data.Models.Patch existingPatch = context.Patches.Where(x => x.Id == id).Include(x => x.Tags).Single();
            context.Entry(existingPatch).CurrentValues.SetValues(patch);
            UpdateTags(id, patch, existingPatch);

            await context.SaveChangesAsync();

            cache.Remove(Constants.PatchCacheKey);

            return(NoContent());
        }
Example #3
0
        public async Task <ActionResult <Patch> > PostPatch(Patch patch)
        {
            var patchToInsert = mapper.Map <Data.Models.Patch>(patch);

            patchToInsert.DateCreated = DateTime.UtcNow;
            patchToInsert.Tags        = new List <Tag>();
            foreach (Models.Tag tag in patch.Tags)
            {
                patchToInsert.Tags.Add(new Tag {
                    Name = tag.Name
                });
            }
            context.Patches.Add(patchToInsert);
            await context.SaveChangesAsync();

            cache.Remove(Constants.PatchCacheKey);

            return(CreatedAtAction("GetPatch", patchToInsert));
        }