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); }
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); }