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.Properties.Count() != 1)
            {
                return(false);
            }

            var matchingEntities = _metadataManager.Domain(_application).GetClassModels().Where(x => new[]
            {
                $"delete{x.Name.ToLower()}",
                $"remove{x.Name.ToLower()}",
            }.Contains(_template.Model.Name.ToLower().RemoveSuffix("command"))).ToList();

            if (matchingEntities.Count() != 1)
            {
                return(false);
            }

            _foundEntity = matchingEntities.Single();

            _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);
        }
示例#3
0
 public static bool HasStringValidation(this DTOFieldModel model)
 {
     return(model.HasStereotype("String Validation"));
 }
示例#4
0
        public static StringValidation GetStringValidation(this DTOFieldModel model)
        {
            var stereotype = model.GetStereotype("String Validation");

            return(stereotype != null ? new StringValidation(stereotype) : null);
        }
示例#5
0
 public virtual string PropertyAttributes(DTOModel dto, DTOFieldModel field) => null;
 public override string PropertyAttributes(DTOModel dto, DTOFieldModel field)
 {
     return(@"
 [DataMember]");
 }
示例#7
0
 public string PropertyAttributes(DTOFieldModel field)
 {
     return(GetDecorators().Aggregate(x => x.PropertyAttributes(Model, field)));
 }