public bool IsMatch() { if (_template.Model.TypeReference.Element == null) { return(false); } if (_template.Model.Properties.Count() != 1) { return(false); } var matchingEntities = _metadataManager.Domain(_application).GetClassModels().Where(x => new[] { $"get{x.Name.ToLower()}", $"get{x.Name.ToLower()}byid", $"find{x.Name.ToLower()}", $"find{x.Name.ToLower()}byid", $"lookup{x.Name.ToLower()}", $"lookup{x.Name.ToLower()}byid", }.Contains(_template.Model.Name.ToLower().RemoveSuffix("query"))).ToList(); if (matchingEntities.Count() != 1) { return(false); } _foundEntity = matchingEntities.Single(); _dtoToReturn = _metadataManager.Services(_application).GetDTOModels().SingleOrDefault(x => x.Id == _template.Model.TypeReference.Element.Id && x.IsMapped && x.Mapping.ElementId == _foundEntity.Id); if (_dtoToReturn == null) { return(false); } _idProperty = _template.Model.Properties.FirstOrDefault(p => string.Equals(p.Name, "id", StringComparison.InvariantCultureIgnoreCase) || string.Equals(p.Name, $"{_foundEntity.Name}Id", StringComparison.InvariantCultureIgnoreCase)); if (_idProperty == null) { return(false); } var repositoryInterface = _template.GetTypeName(EntityRepositoryInterfaceTemplate.TemplateId, _foundEntity, new TemplateDiscoveryOptions() { ThrowIfNotFound = false }); if (repositoryInterface == null) { return(false); } _repository = new RequiredService(type: repositoryInterface, name: repositoryInterface.Substring(1).ToCamelCase()); return(true); }
public bool IsMatch() { if (_template.Model.TypeReference.Element == null || !_template.Model.TypeReference.IsCollection) { return(false); } var matchingEntities = _metadataManager.Domain(_application).GetClassModels().Where(x => new[] { $"get{x.Name.ToPluralName().ToLower()}", $"getall{x.Name.ToPluralName().ToLower()}", $"find{x.Name.ToPluralName().ToLower()}", $"findall{x.Name.ToPluralName().ToLower()}", $"lookup{x.Name.ToPluralName().ToLower()}", $"lookupall{x.Name.ToPluralName().ToLower()}", }.Contains(_template.Model.Name.ToLower().RemoveSuffix("query"))).ToList(); if (matchingEntities.Count() != 1) { return(false); } _foundEntity = matchingEntities.Single(); _dtoToReturn = _metadataManager.Services(_application).GetDTOModels().SingleOrDefault(x => x.Id == _template.Model.TypeReference.Element.Id && x.IsMapped && x.Mapping.ElementId == _foundEntity.Id); if (_dtoToReturn == null) { return(false); } var repositoryInterface = _template.GetTypeName(EntityRepositoryInterfaceTemplate.TemplateId, _foundEntity, new TemplateDiscoveryOptions() { ThrowIfNotFound = false }); if (repositoryInterface == null) { return(false); } _repository = new RequiredService(type: repositoryInterface, name: repositoryInterface.Substring(1).ToCamelCase()); return(true); }