private async Task <Arquivo> ExtrairArquivoDataRow(DataRow dr)
        {
            bool     isDiretorio = (bool)dr["ind_diretorio"];
            long     id          = Convert.ToInt64(dr["id_arquivo"]);
            long     tamanho     = Convert.ToInt64(dr["tamanho"]);
            string   nome        = dr["nome"].ToString();
            string   url         = dr["url"].ToString();
            string   mimetype    = dr["mimetype"] != DBNull.Value ? dr["mimetype"].ToString() : String.Empty;
            DateTime dataCriacao = Convert.ToDateTime(dr["datahora_criacao"]);
            Arquivo  parent      = null;

            if (dr["fk_parent"] != DBNull.Value)
            {
                parent = await FindByIdAsync(Convert.ToInt64(dr["fk_parent"]));
            }

            Arquivo arquivo = ArquivoFactory.Create();

            arquivo.IsDiretorio = isDiretorio;
            arquivo.IdArquivo   = id;
            arquivo.Tamanho     = tamanho;
            arquivo.Nome        = nome;
            arquivo.Url         = url;
            arquivo.MimeType    = mimetype;
            arquivo.DataCriacao = dataCriacao;
            arquivo.Parent      = parent;

            return(arquivo);
        }
예제 #2
0
        public async static Task <Arquivo> AddAsync(string nome, bool isDiretorio, long fkParent)
        {
            IArquivoRepository arquivoRepository = ArquivoRepositoryFactory.Create();

            if (isDiretorio)
            {
                if ((await arquivoRepository.FindWhereParentAndNameEqualsAsync(fkParent, nome)).Any())
                {
                    throw new ArgumentException("Diretório não pode ser inserido com nome repetido dentro desta pasta");
                }
            }

            // Adicionar verificação de versão para criar a referência com o versionamento correto

            Arquivo parent = await arquivoRepository.FindByIdAsync(fkParent);

            Arquivo arquivo = ArquivoFactory.Create(nome, isDiretorio, parent);

            await arquivoRepository.AddAsync(arquivo);

            return(arquivo);
        }