public async Task <IActionResult> Get(string id, string include) { var includeFields = IncludeField.ParseList(include); using (var db = RavenStore.Store.OpenAsyncSession()) { var includeTests = includeFields.Any(f => f.HasNameAndFilter("tests", "")); Models.Raven.Group group = null; if (includeTests) { group = await db.Include <Models.Raven.Group>(g => g.Tests).LoadAsync <Models.Raven.Group>($"groups/{id}"); } else { group = await db.LoadAsync <Models.Raven.Group>($"groups/{id}"); } if (group == null) { return(NotFound()); } return(Ok(new Models.Outgoing.Group() { Id = group.Id, Name = group.Name, Description = group.Description, Tests = includeTests ? group.Tests.Select(t => { var test = db.LoadAsync <Models.Raven.Group>(t).Result; return new Models.Outgoing.Test() { Description = test.Description, Name = test.Name, Id = test.Id, SerializeSteps = false }; }).ToList() : null, SerializeTests = includeTests })); } }
public async Task <IActionResult> Create([FromBody] Models.Post.Group model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } using (var db = RavenStore.Store.OpenAsyncSession()) { var group = new Models.Raven.Group() { Description = model.Description, Name = model.Name }; await db.StoreAsync(group, null, null); await db.SaveChangesAsync(); return(CreatedAtAction("Get", new { id = group.Id }, group)); } }