public IActionResult Update(string id, [FromBody] CreateAttributeViewModel model)
        {
            AttributeRepository attributeRepository = null;

            try
            {
                attributeRepository = ResolverFactory.Resolve <AttributeRepository>();
                var attributeModel = attributeRepository.GetById(id);
                var state          = attributeModel.State;
                if (model.Enabled)
                {
                    state = (state | EntityState.Disabled) ^ EntityState.Disabled;
                }
                else
                {
                    state = state | EntityState.Disabled;
                }
                var result = attributeRepository.Update(id, new
                {
                    model.Name,
                    model.Description,
                    model.SourceConnectionId,
                    model.DestinationConnectionId,
                    model.EntityId,
                    model.SourceProcessorId,
                    model.DestinationProcessorId,
                    State = state
                });

                if (model.Options != null && model.Options.Count() > 0)
                {
                    attributeRepository.LinkOptions(id, model.Options);
                }

                transaction.Commit();
                return(Ok(result));
            }
            catch
            {
                transaction.Rollback();
                throw;
            }
            finally
            {
                attributeRepository?.Dispose();
            }
        }
        public IActionResult Create([FromBody] CreateAttributeViewModel model)
        {
            AttributeRepository attributeRepository = null;

            try
            {
                attributeRepository = ResolverFactory.Resolve <AttributeRepository>();
                var result = attributeRepository.Create(new
                {
                    model.Name,
                    model.Description,
                    model.SourceConnectionId,
                    model.DestinationConnectionId,
                    model.EntityId,
                    model.SourceProcessorId,
                    model.DestinationProcessorId,
                    State = 0
                });

                if (model.Options != null && model.Options.Count() > 0)
                {
                    attributeRepository.LinkOptions(result, model.Options);
                }

                transaction.Commit();
                return(Ok(result));
            }
            catch
            {
                transaction.Rollback();
                throw;
            }
            finally
            {
                attributeRepository?.Dispose();
            }
        }
        public IActionResult UpdateOptions(string id, [FromBody] IEnumerable <OptionItem> options)
        {
            AttributeRepository attributeRepository = null;

            try
            {
                attributeRepository = ResolverFactory.Resolve <AttributeRepository>();
                if (options != null && options.Count() > 0)
                {
                    attributeRepository.LinkOptions(id, options);
                }
                transaction.Commit();
                return(Ok(id));
            }
            catch
            {
                transaction.Rollback();
                throw;
            }
            finally
            {
                attributeRepository?.Dispose();
            }
        }