Beispiel #1
0
        public IActionResult GetOptions([FromBody] AttributeTemplateOptionRequestViewModel model)
        {
            var              entityModel           = entityRepository.GetById(model.EntityId);
            ConnectionModel  sourceConnection      = null;
            ConnectionModel  destinationConnection = null;
            IAttributePuller puller = null;
            IAttributePusher pusher = null;
            IIndexer         indexer;

            if (!string.IsNullOrWhiteSpace(model.SourceConnectionId))
            {
                sourceConnection = connectionRepository.GetById(model.SourceConnectionId);
                puller           = pullers.FirstOrDefault(p => p.IsImplemented(model.SourceProcessorId, entityModel.SourceProcessorId, sourceConnection.ProviderId));
            }

            if (!string.IsNullOrWhiteSpace(model.DestinationConnectionId))
            {
                destinationConnection = connectionRepository.GetById(model.DestinationConnectionId);
                pusher = pushers.FirstOrDefault(p => p.IsImplemented(model.DestinationProcessorId, entityModel.DestinationProcessorId, destinationConnection.ProviderId));
            }

            indexer = indexers.FirstOrDefault(i => i.IsImplemented(model.SourceConnectionId, entityModel.SourceConnectionId.ToString(), model.SourceProcessorId));
            return(Ok(new
            {
                Puller = puller?.Options ?? new List <OptionItem>(),
                Indexer = indexer?.Options ?? new List <OptionItem>(),
                Pusher = pusher?.Options ?? new List <OptionItem>(),
            }));
        }
        public IActionResult GetOptions(Guid id, [FromBody] AttributeTemplateOptionRequestViewModel model)
        {
            using (var connectionRepository = ResolverFactory.Resolve <ConnectionRepository>())
                using (var entityRepository = ResolverFactory.Resolve <EntityRepository>())
                    using (var attributeRepository = ResolverFactory.Resolve <AttributeRepository>())
                    {
                        var attribute       = attributeRepository.GetById(id.ToString());
                        var entityModel     = entityRepository.GetById(model.EntityId);
                        var options         = attributeRepository.LoadOptions(id.ToString());
                        var instanceOptions = options.Select(o => new OptionItem
                        {
                            Name  = o.Key,
                            Value = o.Value
                        }).ToList();
                        ConnectionModel  sourceConnection      = null;
                        ConnectionModel  destinationConnection = null;
                        IAttributePuller puller = null;
                        IAttributePusher pusher = null;
                        IIndexer         indexer;

                        if (!string.IsNullOrWhiteSpace(model.SourceConnectionId))
                        {
                            sourceConnection = connectionRepository.GetById(model.SourceConnectionId);
                            puller           = pullers.FirstOrDefault(p => p.IsImplemented(model.SourceProcessorId, entityModel.SourceProcessorId, sourceConnection.ProviderId));
                            puller.SetOptions(instanceOptions);
                        }

                        if (!string.IsNullOrWhiteSpace(model.DestinationConnectionId))
                        {
                            destinationConnection = connectionRepository.GetById(model.DestinationConnectionId);
                            pusher = pushers.FirstOrDefault(p => p.IsImplemented(model.DestinationProcessorId, entityModel.DestinationProcessorId, destinationConnection.ProviderId));
                            pusher.SetOptions(instanceOptions);
                        }

                        indexer = indexers.FirstOrDefault(i => i.IsImplemented(model.SourceConnectionId, entityModel.SourceConnectionId.ToString(), model.SourceProcessorId));
                        indexer?.SetOptions(instanceOptions);
                        return(Ok(new
                        {
                            Puller = puller?.Options ?? new List <OptionItem>(),
                            Indexer = indexer?.Options ?? new List <OptionItem>(),
                            Pusher = pusher?.Options ?? new List <OptionItem>(),
                        }));
                    }
        }