Ejemplo n.º 1
0
        public void SaveValue(FieldType type, Guid referenceCode, IEnumerable <DTO.MetadataField> metadatas)
        {
            using (var transaction = Connection.BeginTransaction())
            {
                try
                {
                    var _metadatas = metadatas.Select(field =>
                    {
                        var _field = new MetadataField(field);

                        var metadata   = BaseMetadata.CreateInstance(_field, null, referenceCode);
                        metadata.Value = field.Value.AsString();

                        return(metadata);
                    }).ToList();

                    metadataService.SaveValue(_metadatas);
                }
                catch
                {
                    transaction.Rollback();

                    throw;
                }
            }
        }
Ejemplo n.º 2
0
        public void Remove(Guid code)
        {
            using (var transaction = Connection.BeginTransaction())
            {
                try
                {
                    var field = metadataFieldRepository.Get(code);

                    if (field.IsNull())
                    {
                        throw new ArgumentException("Nenhum campo encontrado com o código informado");
                    }

                    var metadata = BaseMetadata.CreateInstance(field, null);

                    var exists = metadataService.HasValueByJsonId(metadata);

                    if (exists)
                    {
                        throw new ArgumentException("Não é possível remover esse campo, pois já existem valores vinculados ao mesmo");
                    }

                    metadataFieldRepository.Delete(field);
                }
                catch
                {
                    transaction.Rollback();
                    throw;
                }
            }
        }
Ejemplo n.º 3
0
        public ICollection <BaseMetadata> GetFieldAndFill(FieldType type, IEnumerable <BaseMetadata> metadatas)
        {
            var _metadatas = new List <BaseMetadata>();

            var fields = metadataFieldRepository.GetByType(type);

            fields.ForEach(field =>
            {
                var metadataDb = !metadatas.IsNull() ? metadatas.FirstOrDefault(m => m.Field.JsonId == field.JsonId) : null;

                if (metadataDb.IsNull())
                {
                    _metadatas.Add(BaseMetadata.CreateInstance(field, metadataDb));
                }
                else
                {
                    _metadatas.Add(metadataDb);
                }
            });

            return(_metadatas);
        }