123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- using ConcursoProjetos.Data;
- using ConcursoProjetos.Domain.Entities;
- using Microsoft.CodeAnalysis;
- using Microsoft.EntityFrameworkCore;
- namespace ConcursoProjetos.Service;
- public interface IDocumentoService
- {
- Documento Gravar(Documento documento);
- bool Excluir(long documentoId);
- bool ExcluirPorProjetoTipoDocumento(long projetoId, long tipoDocumentoId, string projetoPath);
- Documento ObterPorId(long documentoId);
- IEnumerable<Documento> Listar(long projetoId);
- }
- public class DocumentoService : IDocumentoService
- {
- private readonly IDbContextFactory<ApplicationDbContext> _dbContextFactory;
- public DocumentoService(IDbContextFactory<ApplicationDbContext> dbContextFactory)
- {
- _dbContextFactory = dbContextFactory;
- }
- public Documento Gravar(Documento documento)
- {
- try
- {
- using var context = _dbContextFactory.CreateDbContext();
- var existingDocumento = context.Documento.Where(d => d.ProjetoId == documento.ProjetoId && d.TipoDocumentoId == documento.TipoDocumentoId).FirstOrDefault();
- if (existingDocumento != null)
- context.Documento.Remove(existingDocumento);
- context.Documento.Add(documento);
- context.SaveChanges();
- return documento;
- }
- catch (Exception ex)
- {
- return null;
- }
- }
- public bool Excluir(long documentoId)
- {
- using var context = _dbContextFactory.CreateDbContext();
- var documento = context.Documento.Find(documentoId);
- if (documento != null)
- {
- context.Documento.Remove(documento);
- context.SaveChanges();
- return true;
- }
- return false;
- }
- public Documento ObterPorId(long documentoId)
- {
- using var context = _dbContextFactory.CreateDbContext();
- return context.Documento.Find(documentoId);
- }
- public IEnumerable<Documento> Listar(long projetoId)
- {
- using var context = _dbContextFactory.CreateDbContext();
- return context.Documento
- .Include(d => d.TipoDocumento)
- .Where(d => d.ProjetoId == projetoId)
- .OrderBy(d => d.TipoDocumento.Nome)
- .ToList();
- }
- public bool ExcluirPorProjetoTipoDocumento(long projetoId, long tipoDocumentoId, string projetoPath)
- {
- using var context = _dbContextFactory.CreateDbContext();
- var documento = context.Documento.Where(d => d.ProjetoId == projetoId && d.TipoDocumentoId == tipoDocumentoId).SingleOrDefault() ;
- if (documento != null)
- {
- string filename = $"{projetoPath}\\{documento.ArquivoNomeOriginal}";
- if (File.Exists(filename))
- {
- try
- {
- File.Delete(filename);
- }
- catch (Exception ex)
- {
- return false;
- }
- }
- context.Documento.Remove(documento);
- context.SaveChanges();
- return true;
- }
- return true;
- }
- }
|