public DocumentoDTO AddNewDocument(DocumentoDTO documentoDTO, int idEmpresa, int idSector)
 {
     try {
         Console.WriteLine("[DocumentosService] -> insertando nuevo documento");
         Documento documento = ModelMapper.Map(documentoDTO);
         documento.EmpresaId = idEmpresa;
         documento.SectorId  = idSector;
         int idInserted = 0;
         Console.WriteLine("[DocumentosService] -> insertando documento: " + documento.ToString());
         using (DocumentosDbContext db = new DocumentosDbContext()) {
             EntityEntry <Documento> result = db.Documentos.Add(documento);
             db.SaveChanges();
             idInserted = result.Entity.DocumentoId;
         }
         if (idInserted == 0)
         {
             Console.WriteLine("[DocumentosService] -> operacion fallida");
             return(null);
         }
         documentoDTO.DocumentoId = idInserted;
         documentoDTO.Fecha       = documento.Fecha.ToString();
     } catch (Exception exception) {
         Console.WriteLine("[DocumentosService] -> se produjo un error error en acceso a la base de datos");
         throw new DocumentosDatabaseException("Se produjo un error error en acceso a la base de datos", exception);
     }
     // Armado de objeto respuesta no tiene que afectar el flujo, ya que se insertó registro en DB
     try{
         documentoDTO.Empresa = loginService.getNombreEmpresaBy(idEmpresa);
         documentoDTO.Sector  = loginService.getNombreSectorBy(idSector, idEmpresa);
     } catch (Exception exception) {
         Console.WriteLine("[DocumentosService] -> error al obtener nombre para respuesta: " + exception.Message);
     }
     Console.WriteLine("[DocumentosService] -> se registro documento con id" + documentoDTO.DocumentoId);
     return(documentoDTO);
 }
        public int AddNewSectorInEmpresa(int idEmpresa, Sector sector)
        {
            Console.WriteLine("[EmpresasService] -> buscando empresa");
            Empresa valid = FindEmpresaBy(idEmpresa);

            if (valid == null || valid.Nombre == null)
            {
                Console.WriteLine("[EmpresasService] -> no existe empresa id = " + idEmpresa);
                return(-99);
            }
            int idGenerated = 0;

            try{
                sector.EmpresaId = idEmpresa;
                Console.WriteLine("[EmpresasService] -> insertando nuevo sector");
                using (DocumentosDbContext db = new DocumentosDbContext()) {
                    EntityEntry <Sector> result = db.Sectores.Add(sector);
                    db.SaveChanges();
                    idGenerated = result.Entity.SectorId;
                }
            } catch (Exception exception) {
                Console.WriteLine("[EmpresasService] -> se produjo un error error en el proceso con la base de datos");
                throw new DocumentosDatabaseException("Se produjo un error error en el proceso con la base de datos", exception);
            }
            if (idGenerated == 0)
            {
                Console.WriteLine("[EmpresasService] -> no se completo proceso");
            }
            Console.WriteLine("[EmpresasService] -> se registro nuevo sector con id: " + idGenerated);
            return(idGenerated);
        }
        public int AddNewEmpresa(Empresa empresa)
        {
            int idGenerated = 0;

            try{
                Console.WriteLine("[EmpresasService] -> insertando nueva empresa");
                using (DocumentosDbContext db = new DocumentosDbContext()) {
                    EntityEntry <Empresa> result = db.Empresas.Add(empresa);
                    db.SaveChanges();
                    idGenerated = result.Entity.EmpresaId;
                }
            } catch (Exception exception) {
                Console.WriteLine("[EmpresasService] -> se produjo un error error en el proceso con la base de datos");
                throw new DocumentosDatabaseException("Se produjo un error error en el proceso con la base de datos", exception);
            }
            if (idGenerated == 0)
            {
                Console.WriteLine("[EmpresasService] -> no se completo proceso");
            }
            Console.WriteLine("[EmpresasService] -> se registro nueva empresa con id: " + idGenerated);
            return(idGenerated);
        }
        public EmpresaDTO ModifyEmpresa(int idEmpresa, Empresa empresa)
        {
            Console.WriteLine("[EmpresasService] -> buscando empresa con id: " + idEmpresa);
            Empresa valid = FindEmpresaBy(idEmpresa);

            if (valid == null || valid.Nombre == null)
            {
                Console.WriteLine("[EmpresasService] -> no existe empresa id = " + idEmpresa);
                return(null);
            }
            Console.WriteLine("[EmpresasService] -> actualizando empresa...");
            try{
                if (empresa.Nombre != null)
                {
                    valid.Nombre = empresa.Nombre;
                }
                if (empresa.Direccion != null)
                {
                    valid.Direccion = empresa.Direccion;
                }
                if (empresa.Telefono != null)
                {
                    valid.Telefono = empresa.Telefono;
                }
                if (empresa.Web != null)
                {
                    valid.Web = empresa.Web;
                }
                using (DocumentosDbContext db = new DocumentosDbContext()) {
                    EntityEntry <Empresa> result = db.Empresas.Update(valid);
                    db.SaveChanges();
                    valid = result.Entity;
                }
                return(ModelMapper.Map(valid));
            } catch (Exception exception) {
                Console.WriteLine("[EmpresasService] -> se produjo un error error en el proceso con la base de datos");
                throw new DocumentosDatabaseException("Se produjo un error error en el proceso con la base de datos", exception);
            }
        }
 public int DeleteDocumento(string number)
 {
     try {
         List <Documento> toDelete = null;
         using (DocumentosDbContext db = new DocumentosDbContext()){
             toDelete = db.Documentos.Where(d => d.Numero == number).ToList();
         }
         if (toDelete.Count == 0)
         {
             Console.WriteLine("[DocumentosService] -> no se encontraron registro a eliminar");
             return(0);
         }
         using (DocumentosDbContext db = new DocumentosDbContext()) {
             db.Documentos.RemoveRange(toDelete);
             db.SaveChanges();
         }
         Console.WriteLine("[DocumentosService] -> registros eliminados: " + toDelete.Count);
         return(toDelete.Count);
     } catch (Exception exception) {
         Console.WriteLine("[DocumentosService] -> se produjo un error error en acceso a la base de datos");
         throw new DocumentosDatabaseException("Se produjo un error error en acceso a la base de datos", exception);
     }
 }
        public EmpresaDTO DeleteEmpresa(int idEmpresa)
        {
            Console.WriteLine("[EmpresasService] -> buscando empresa con id: " + idEmpresa);
            Empresa reg = FindEmpresaBy(idEmpresa);

            if (reg == null || reg.Nombre == null)
            {
                Console.WriteLine("[EmpresasService] -> no hay empresas con id: " + idEmpresa);
                return(null);
            }
            Console.WriteLine("[EmpresasService] -> se va a eliminar: " + reg.ToString());
            try{
                EmpresaDTO deleted = new EmpresaDTO();
                using (DocumentosDbContext db = new DocumentosDbContext()){
                    EntityEntry <Empresa> result = db.Empresas.Remove(reg);
                    db.SaveChanges();
                    deleted = ModelMapper.Map(result.Entity);
                }
                return(deleted);
            } catch (Exception exception) {
                Console.WriteLine("[EmpresasService] -> se produjo un error error en el proceso con la base de datos");
                throw new DocumentosDatabaseException("Se produjo un error error en el proceso con la base de datos", exception);
            }
        }