Example #1
0
        public async Task <ActionResult <IEnumerable <TemplateOut> > > GetTemplates()
        {
            var templates = await _Context.Templates.ToListAsync();

            var templateOut = new TemplateOut[templates.Count];

            for (var i = 0; i < templates.Count; i++)
            {
                templateOut[i] = TemplateToTemplateOut(templates[i]);
            }

            return(templateOut);
        }
Example #2
0
        public async Task <IActionResult> PutTemplate(TemplateOut templateOut)
        {
            var unpacked = TemplateOutToTemplateAndPaths(templateOut);

            _Context.Entry(unpacked.Item1).State = EntityState.Modified;

            var storedPaths = _Context.Paths.AsNoTracking().Where(path => path.TemplateID == unpacked.Item1.ID).ToList();

            foreach (var p in unpacked.Item2)
            {
                var stored = false;
                for (var i = 0; i < storedPaths.Count; i++)
                {
                    if (storedPaths[i].ID == p.ID)
                    {
                        stored = true;
                        storedPaths.RemoveAt(i);
                        _Context.Entry(p).State = EntityState.Modified;
                        break;
                    }
                }
                if (!stored)
                {
                    _Context.Paths.Add(p);
                }
            }

            foreach (var deleted in storedPaths)
            {
                _Context.Paths.Remove(deleted);
            }

            try {
                await _Context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException) {
                if (!TemplateExists(unpacked.Item1.ID))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Example #3
0
        private (Template, List <Path>) TemplateOutToTemplateAndPaths(TemplateOut templateOut)
        {
            var template = templateOut.ToTemplate();
            var paths    = new List <Path>();

            foreach (var p in templateOut.Sources)
            {
                paths.Add(p.ToPath(template.ID, true));
            }

            foreach (var p in templateOut.Targets)
            {
                paths.Add(p.ToPath(template.ID, false));
            }

            return(template, paths);
        }
Example #4
0
        private TemplateOut TemplateToTemplateOut(Template template)
        {
            var tOut = TemplateOut.FromTemplate(template);

            foreach (var path in GetPaths(template.ID))
            {
                if (path.Source)
                {
                    tOut.Sources.Add(PathOut.FromPath(path));
                }
                else
                {
                    tOut.Targets.Add(PathOut.FromPath(path));
                }
            }

            return(tOut);
        }
Example #5
0
        public async Task <ActionResult <TemplateOut> > PostTemplate(TemplateOut templateOut)
        {
            var unpacked = TemplateOutToTemplateAndPaths(templateOut);

            _Context.Templates.Add(unpacked.Item1);

            await _Context.SaveChangesAsync();

            var templateRet = TemplateToTemplateOut(unpacked.Item1);

            foreach (var p in unpacked.Item2)
            {
                p.TemplateID = templateRet.ID;
                _Context.Paths.Add(p);
            }

            await _Context.SaveChangesAsync();

            return(CreatedAtAction("GetTemplate", new { id = templateRet.ID }, templateRet));
        }