Как объединить значения полей из нескольких записей в связанный объект - PullRequest
0 голосов
/ 02 апреля 2020

Я разрабатываю плагин Dyanamic365. Я новичок в этом плагине. У меня проблемы с этим в течение последней недели. У меня есть две сущности. Юридический случай участника и legacase соответственно. Я хочу объединить записи в поле клиента юридического участника с полем «Частный случай» таблицы Legalcase. используя поле legalcaseparticipant_side. поскольку это поле содержит неопределенные размеры. Если кто-то может помочь, это было бы слишком полезно для меня.

        public void Execute(IServiceProvider serviceProvider)
        {
            var pluginProcess = new PartcipantAggreagateSidesProcess(serviceProvider);
            pluginProcess.LoadPrimaryEntity();

            if (!(pluginProcess.ValidateEntityName(bf_legalcaseparticipant.EntityName) || pluginProcess.ValidateEntityName(bf_legalcase.EntityName))) return;
            {
                if (!pluginProcess.ValidateMessage(MessageName.Create, MessageName.Update)) return;
                if (pluginProcess.ExecutionContext.Depth > 10) return;

                pluginProcess.Run();
            }
        }

        class PartcipantAggreagateSidesProcess : PluginProcess
        {
            public PartcipantAggreagateSidesProcess(IServiceProvider serviceProvider) : base(serviceProvider)
            {
            }

            public override void Execute()
            {
                string[] totalSides = { "3rd side", "accused", "applicant", "creditor", "debitor", "defendatnts", "intrest party", "plaintiff", "representive", "submitter", "victim" };

                if (ExecutionContext.MessageName == MessageName.Create)
                {  
                    if (ExecutionContext.PrimaryEntityName == bf_legalcase.EntityName)
                    {
                        QueryExpression bf_partQry = new QueryExpression
                        {
                            EntityName = bf_legalcaseparticipant.EntityName,
                            ColumnSet = new ColumnSet(bf_legalcaseparticipant.FieldNames.bf_legalcaseparticipant_cust, bf_legalcaseparticipant.FieldNames.bf_legalcaseparticipant_side)
                        };

                        bf_partQry.Criteria.AddCondition(bf_legalcaseparticipant.FieldNames.bf_legalcaseparticipant_lcase, ConditionOperator.Equal, TargetEntity.Id);
                        bf_legalcaseparticipant legalPart =   OrganizationService.RetrieveMultiple(bf_partQry).Entities.ToModel<bf_legalcaseparticipant>().FirstOrDefault();

                        if (legalPart != null) 
                        {
                           Entity LegalEntity = OrganizationService.Retrieve(
                           bf_legalcase.EntityName, 
                           TargetKey.Id,
                           new ColumnSet(
                               bf_legalcase.FieldNames.bf_legalcase_partic3rdside,
                               bf_legalcase.FieldNames.bf_legalcase_particaccused,
                               bf_legalcase.FieldNames.bf_legalcase_partic3rdside,
                               bf_legalcase.FieldNames.bf_legalcase_particapplicant,
                               bf_legalcase.FieldNames.bf_legalcase_particcreditor,
                               bf_legalcase.FieldNames.bf_legalcase_particdebitor,
                               bf_legalcase.FieldNames.bf_legalcase_particdefendants,
                               bf_legalcase.FieldNames.bf_legalcase_particinterestpart,
                               bf_legalcase.FieldNames.bf_legalcase_particplaintiff,
                               bf_legalcase.FieldNames.bf_legalcase_particrepresentive,
                               bf_legalcase.FieldNames.bf_legalcase_particsubmiter,
                               bf_legalcase.FieldNames.bf_legalcase_particvictim));

                            foreach (string totalSide in totalSides)
                            {
                                if (legalPart.Contains(bf_legalcaseparticipant.FieldNames.bf_legalcaseparticipant_side) && legalPart.bf_legalcaseparticipant_side!= null) 
                                {
                                    // need to go to the specific entry of legal case table in the total side array and update the customer value in th specific columns 
                                    // simply given the below line 
                                    TargetEntity.Attributes["bf_legalcase_particvictim"] = legalPart.bf_legalcaseparticipant_cust;
                                }
                            }
                        }                      
                    }
                }
            }                 
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...