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