Пример #1
0
        private Guid CreateRepositoryMethod(
            GenericManager genericManager,
            string methodName,
            RepositoryMethod.RepositoryMethodType type,
            MethodParameter[] inputParameters,
            MethodParameter outputParameter)
        {
            var content = new RepositoryMethodContent();

            foreach (var item in inputParameters)
            {
                item.Direction = MethodParameter.ParameterDirection.Input;
            }

            if (outputParameter != null)
            {
                outputParameter.Direction = MethodParameter.ParameterDirection.Output;
                content.Parameters.Add(outputParameter);
            }
            content.Parameters.AddRange(inputParameters);

            var method = new RepositoryMethod()
            {
                Name         = methodName,
                RepositoryId = RepositoryEntityReference,
                Type         = new OptionSetValue((int)type),
                Content      = JsonParserService.StringfyWithTypes(content),
            };

            return(genericManager.Create(RepositoryMethod.LogicalName, Entity.EntityToDictionary(method)));
        }
Пример #2
0
 public void InvokeConstrainEntity <T>(T entity, RepositoryMethod method)
 {
     if (typeof(T) == typeof(User))
     {
         _userConstrainer.InvokeConstrain(entity as User, method);
     }
 }
Пример #3
0
        private void UpdatedExecuteRepositoryMethodSentence(RepositoryMethod method)
        {
            var repositoryId = method.RepositoryId.Id;
            var repository   = Entity.DictionartyToEntity <Repository>(GenericManager.Retrieve(Repository.LogicalName, repositoryId).Values);
            var schemaId     = repository.SchemaId.Id;
            var schema       = Entity.DictionartyToEntity <Schema>(GenericManager.Retrieve(Schema.LogicalName, schemaId).Values);
            var newSentence  = new ExecuteRepositoryMethodSentence(schema.Name, repository.Name, method);

            _view.RaiseUpdateUseCaseSentenceEvent(newSentence, BasicSentence);
        }
Пример #4
0
 public void InvokeConstrain(T entity, RepositoryMethod method)
 {
     if (_constrainerByRepoMethod.TryGetValue(method, out var constrainers))
     {
         var tasks = constrainers?.Select(z => z.Constrain(entity));
         if (tasks != null)
         {
             Task.WhenAll(tasks).GetAwaiter().GetResult();
         }
     }
 }
Пример #5
0
        private Guid CreateDefaultZeroInputsViewRepositoryMethod(GenericManager genericManager, string methodName)
        {
            var content = new RepositoryMethodContent()
                          .AddDefaultOutputViewParameter();
            var method = new RepositoryMethod()
            {
                Name         = methodName,
                Type         = new OptionSetValue((int)RepositoryMethod.RepositoryMethodType.View),
                RepositoryId = RepositoryEntityReference,
                Content      = JsonParserService.StringfyWithTypes(content),
            };

            return(genericManager.Create(RepositoryMethod.LogicalName, Entity.EntityToDictionary(method)));
        }
Пример #6
0
        public ExecuteRepositoryMethodSentence(
            Domain domain,
            Schema schema,
            Repository repository,
            RepositoryMethod method)
            : base(SentenceName, SentenceDescription, SentenceType)
        {
            Domain     = domain ?? throw new ArgumentNullException(nameof(domain));
            Schema     = schema ?? throw new ArgumentNullException(nameof(schema));
            Repository = repository ?? throw new ArgumentNullException(nameof(repository));
            Method     = method ?? throw new ArgumentNullException(nameof(method));

            AddValue(nameof(Domain), Domain);
            AddValue(nameof(Schema), Schema);
            AddValue(nameof(Repository), Repository);
            AddValue(nameof(Method), Method);

            AddInputContextParameter(method.InputParameters.ToArray());
            AddOutputContextParameter(Method.OutputParameters.First());
        }
Пример #7
0
        public void ProcessData(RepositoryMethod regardingRepositoryMethod)
        {
            Name        = regardingRepositoryMethod.Name;
            DisplayName = $"Method {SchemaName}.{RepositoryName}.{regardingRepositoryMethod.Name}";

            var repositoryMethod = JsonParserService.ObjectifyWithTypes <RepositoryMethodContent>
                                       (regardingRepositoryMethod.Content);

            foreach (var item in repositoryMethod.Parameters
                     .Where(k => k.Direction == Methods.MethodParameter.ParameterDirection.Input))
            {
                InputParameters.Add(item);
            }

            foreach (var item in repositoryMethod.Parameters
                     .Where(k => k.Direction == Methods.MethodParameter.ParameterDirection.Output))
            {
                OutputParameters.Add(item);
            }
        }
Пример #8
0
        public ExecuteRepositoryMethodSentence(string schemaName, string repositoryName, RepositoryMethod repositoryMethod)
            : this()
        {
            Type = SentenceType.ExecuteRepositoryMethod;
            if (repositoryMethod == null)
            {
                throw new ArgumentNullException(nameof(repositoryMethod));
            }
            RepositoryMethodId = new EntityReferenceValue(repositoryMethod.Id, RepositoryMethod.LogicalName, repositoryMethod.Name);
            RepositoryName     = repositoryName;
            SchemaName         = schemaName;

            Values.Add(nameof(SchemaName), schemaName);
            Values.Add(nameof(RepositoryName), repositoryName);
            Values.Add(nameof(RepositoryMethodId), RepositoryMethodId);

            ProcessData(repositoryMethod);
        }