123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- using ConcursoProjetos.Data;
- using ConcursoProjetos.Domain.Entities;
- using Microsoft.CodeAnalysis;
- using Microsoft.EntityFrameworkCore;
- namespace ConcursoProjetos.Service;
- public interface IProjetoService
- {
- Projeto Adicionar(Projeto projeto);
- Projeto Alterar(Projeto projeto);
- bool Excluir(long projetoId);
- string Path(long projetoId);
- Projeto ObterPorId(long projetoId);
- Projeto ObterPorCodigo(Guid codigo);
- IEnumerable<Projeto> Listar(long candidatoId);
- }
- public class ProjetoService : IProjetoService
- {
- private readonly IDbContextFactory<ApplicationDbContext> _dbContextFactory;
- public ProjetoService(IDbContextFactory<ApplicationDbContext> dbContextFactory)
- {
- _dbContextFactory = dbContextFactory;
- }
- public Projeto Adicionar(Projeto projeto)
- {
- using var context = _dbContextFactory.CreateDbContext();
- context.Projeto.Add(projeto);
- context.SaveChanges();
- return projeto;
- }
- public Projeto Alterar(Projeto projeto)
- {
- using var context = _dbContextFactory.CreateDbContext();
- var existingProjeto = context.Projeto.Find(projeto.Id);
- if (existingProjeto != null)
- {
- context.Entry(existingProjeto).CurrentValues.SetValues(projeto);
- context.SaveChanges();
- return projeto;
- }
- return null;
- }
- public bool Excluir(long projetoId)
- {
- using var context = _dbContextFactory.CreateDbContext();
- var projeto = context.Projeto.Find(projetoId);
- if (projeto != null)
- {
- context.Projeto.Remove(projeto);
- context.SaveChanges();
- ExcluirArquivosDoProjeto(projetoId);
- return true;
- }
- return false;
- }
- public Projeto ObterPorId(long projetoId)
- {
- using var context = _dbContextFactory.CreateDbContext();
- return context.Projeto.Find(projetoId);
- }
- public IEnumerable<Projeto> Listar(long candidatoId)
- {
- using var context = _dbContextFactory.CreateDbContext();
- return context.Projeto.Include(p => p.Documentos).Where(p => p.CandidatoId == candidatoId).ToList();
- }
- public string Path(long projetoId)
- {
- string projectPath = $"{Environment.CurrentDirectory}\\files\\{projetoId}";
- return projectPath;
- }
- private void ExcluirArquivosDoProjeto(long projetoId)
- {
- string path = Path(projetoId);
- if (Directory.Exists(path))
- {
- // Obtém todos os arquivos no diretório
- string[] arquivos = Directory.GetFiles(path);
- // Remove cada arquivo
- foreach (string arquivo in arquivos)
- {
- File.Delete(arquivo);
- }
- // Após remover todos os arquivos, remove o diretório
- Directory.Delete(path);
- }
- }
- public Projeto ObterPorCodigo(Guid codigo)
- {
- using var context = _dbContextFactory.CreateDbContext();
- return context.Projeto.Where(p => p.Codigo == codigo).FirstOrDefault();
- }
- }
|