TFS_ANTIGUO/TPAtesa_RecHuma/REC-HUMA.INFRASTRUCTURE/Repositories/PersonaRepo.cs
2026-06-26 10:14:39 -06:00

158 lines
5.1 KiB
C#

using Microsoft.EntityFrameworkCore;
using REC_HUMA.CORE.Entities;
using REC_HUMA.CORE.Interfaces;
using REC_HUMA.INFRASTRUCTURE;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace REC_HUMA.INFRASTRUCTURE.Repositories
{
public class PersonaRepo : IPersonaRepo
{
private readonly RECHUMAContext _Context;
private readonly ISolicitudVacacionesRepo _solicitudVacaciones;
private readonly IDiasAcreditadosPeriodoRepo _diasAcreditadosPeriodoRepo;
public PersonaRepo(RECHUMAContext Context, ISolicitudVacacionesRepo solicitudVacaciones, IDiasAcreditadosPeriodoRepo diasAcreditadosPeriodoRepo)
{
_Context = Context;
_solicitudVacaciones = solicitudVacaciones;
_diasAcreditadosPeriodoRepo = diasAcreditadosPeriodoRepo;
}
public async Task<IEnumerable<Persona>> GetPersonas()
{
try
{
var personas = await _Context.Persona.ToListAsync();
return personas;
}
catch (Exception ex)
{
throw;
}
}
public async Task<Persona> GetPersona(int IdPersona)
{
try
{
var persona = await _Context.Persona.FirstOrDefaultAsync(p => p.IdPersona == IdPersona);
return persona;
}
catch (Exception ex)
{
throw ex;
}
}
public async Task<Persona> GetPersonaEmail(string Correo)
{
try
{
var persona = await _Context.Persona.FirstOrDefaultAsync(p => p.Correo.ToLower().Trim() == Correo.ToLower().Trim());
return persona;
}
catch (Exception ex)
{
throw ex;
}
}
public async Task<bool> PutPersona(Persona persona)
{
try
{
var personaActual = await GetPersona(persona.IdPersona);
personaActual.IdTipoIdentificacion = persona.IdTipoIdentificacion;
personaActual.NoIdentificacion = persona.NoIdentificacion;
personaActual.Nombre = persona.Nombre;
personaActual.PrimerApellido = persona.PrimerApellido;
personaActual.SegundoApellido = persona.SegundoApellido;
personaActual.FechaNacimiento = persona.FechaNacimiento;
personaActual.IdPaisNacionalidad = persona.IdPaisNacionalidad;
personaActual.IdEstadoCivil = persona.IdEstadoCivil;
personaActual.Direccion = persona.Direccion;
personaActual.Correo = persona.Correo;
personaActual.IdUniversidad = persona.IdUniversidad;
personaActual.IdGradoAcademico = personaActual.IdGradoAcademico;
personaActual.Titulo = persona.Titulo;
personaActual.IdEmpresa = persona.IdEmpresa;
personaActual.IdPuesto = persona.IdPuesto;
personaActual.IdTipoNombramiento = persona.IdTipoNombramiento;
personaActual.FechaIngreso = persona.FechaIngreso;
personaActual.FechaAscenso = persona.FechaAscenso;
personaActual.FechaSalida = persona.FechaSalida;
personaActual.SalarioBruto = persona.SalarioBruto;
//personaActual.TelefonoPrincipal = persona.TelefonoPrincipal;
//personaActual.TelefonoSecundario = persona.TelefonoSecundario;
//personaActual.IdEstado = persona.IdEstado;
int rows = await _Context.SaveChangesAsync();
return rows > 0;
}
catch (Exception ex)
{
throw ex;
}
}
public async Task PostPersona(Persona persona)
{
try
{
_Context.Persona.Add(persona);
await _Context.SaveChangesAsync();
}
catch (Exception ex)
{
throw;
}
}
public async Task<bool> DeletePersona(int IdPersona)
{
try
{
var solicitudes = await _solicitudVacaciones.GetSolicitudesId(IdPersona);
if (solicitudes.Count() != 0)
{
_Context.SolicitudVacaciones.RemoveRange(solicitudes);
await _Context.SaveChangesAsync();
}
var dias = await _diasAcreditadosPeriodoRepo.GetAllDiasAcreditadosId(IdPersona);
if (dias.Count() != 0)
{
_Context.DiasAcreditadosPeriodo.RemoveRange(dias);
await _Context.SaveChangesAsync();
}
var personaActual = await GetPersona(IdPersona);
_Context.Persona.Remove(personaActual);
int rows = await _Context.SaveChangesAsync();
return rows > 0;
}
catch (Exception ex)
{
throw;
}
}
}
}