ProjetoService.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using ConcursoProjetos.Data;
  2. using ConcursoProjetos.Domain.Entities;
  3. using Microsoft.EntityFrameworkCore;
  4. namespace ConcursoProjetos.Service;
  5. public interface IProjetoService
  6. {
  7. Projeto Adicionar(Projeto projeto);
  8. Projeto Alterar(Projeto projeto);
  9. bool Excluir(long projetoId);
  10. Projeto ObterPorId(long projetoId);
  11. IEnumerable<Projeto> Listar(long candidatoId);
  12. }
  13. public class ProjetoService : IProjetoService
  14. {
  15. private readonly IDbContextFactory<ApplicationDbContext> _dbContextFactory;
  16. public ProjetoService(IDbContextFactory<ApplicationDbContext> dbContextFactory)
  17. {
  18. _dbContextFactory = dbContextFactory;
  19. }
  20. public Projeto Adicionar(Projeto projeto)
  21. {
  22. using var context = _dbContextFactory.CreateDbContext();
  23. context.Projeto.Add(projeto);
  24. context.SaveChanges();
  25. return projeto;
  26. }
  27. public Projeto Alterar(Projeto projeto)
  28. {
  29. using var context = _dbContextFactory.CreateDbContext();
  30. var existingProjeto = context.Projeto.Find(projeto.Id);
  31. if (existingProjeto != null)
  32. {
  33. context.Entry(existingProjeto).CurrentValues.SetValues(projeto);
  34. context.SaveChanges();
  35. return projeto;
  36. }
  37. return null;
  38. }
  39. public bool Excluir(long projetoId)
  40. {
  41. using var context = _dbContextFactory.CreateDbContext();
  42. var projeto = context.Projeto.Find(projetoId);
  43. if (projeto != null)
  44. {
  45. context.Projeto.Remove(projeto);
  46. context.SaveChanges();
  47. return true;
  48. }
  49. return false;
  50. }
  51. public Projeto ObterPorId(long projetoId)
  52. {
  53. using var context = _dbContextFactory.CreateDbContext();
  54. return context.Projeto.Find(projetoId);
  55. }
  56. public IEnumerable<Projeto> Listar(long candidatoId)
  57. {
  58. using var context = _dbContextFactory.CreateDbContext();
  59. return context.Projeto.Include(p => p.Documentos).Where(p => p.CandidatoId == candidatoId).ToList();
  60. }
  61. }