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> GetPersonas() { try { var personas = await _Context.Persona.ToListAsync(); return personas; } catch (Exception ex) { throw; } } public async Task GetPersona(int IdPersona) { try { var persona = await _Context.Persona.FirstOrDefaultAsync(p => p.IdPersona == IdPersona); return persona; } catch (Exception ex) { throw ex; } } public async Task 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 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 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; } } } }