public async Task <IActionResult> Get([FromRoute] Guid id, [FromQuery] CollectionRequestModel model) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } IQueryable <MetaHuman> query = this.metasRepository.GetAll() .Where(x => x.Id.Equals(id)); bool withRelations = model.NoRelations; if (withRelations) { query = this.metasRepository.GetRelations(query) as IQueryable <MetaHuman>; } var viewQuery = query.Select(metaHuman => ViewModelHelper.BuildMetaViewModel(metaHuman, withRelations)); MetaHumanViewModel meta = await viewQuery.FirstOrDefaultAsync(); if (meta == null) { return(NotFound()); } return(Ok(meta)); } catch (Exception ex) { return(BadRequest(new JsonResult(ex.Message))); } }
public static MetaHumanViewModel BuildMetaViewModel(MetaHuman metaHuman, bool addRelations = false) { var viewmodel = new MetaHumanViewModel { Id = metaHuman.Id, Name = metaHuman.Name, Description = metaHuman.Description, AlterEgo = metaHuman.AlterEgo, Status = metaHuman.Status }; if (addRelations) { viewmodel.Abilities = metaHuman.MetaHumanAbilities.Select(x => BuildAbilityViewModel(x.Ability)); viewmodel.Teams = metaHuman.MetaHumanTeams.Select(x => BuildTeamViewModel(x.Team)); } return(viewmodel); }