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);
        }
Пример #2
0
        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);
        }