public bool Create([FromBody] AspirantViewModel model) { if (model is null || !model.IsValid() || model.Puesto is null) { return(false); } model.Trim(); bool exists = _dbContext.Candidatos.Any(x => x.Estado == Estado.Activo && (x.Cedula.ToUpper() == model.Cedula.ToUpper() || x.Correo.ToUpper() == model.Correo.ToUpper())); if (exists) { return(false); } var asp = model.ToCandidato(); if (asp.Puesto?.PuestoId > 0) { asp.Puesto = _dbContext.Puestos.FirstOrDefault(x => x.PuestoId == model.Puesto.PuestoId); } if (asp.Usuario?.UsuarioId > 0) { asp.Usuario = _dbContext.Usuarios.FirstOrDefault(x => x.UsuarioId == model.Usuario.UsuarioId); } if (asp.Capacitaciones?.Count() > 0) { asp.Capacitaciones = _dbContext.Capacitaciones .Where(x => model.Capacitaciones .Select(y => y.CapacitacionId) .Contains(x.CapacitacionId)) .ToList(); } if (asp.ExperienciasLaboral?.Count() > 0) { asp.ExperienciasLaboral = _dbContext.ExperienciasLaboral .Where(x => model.ExperienciasLaboral .Select(y => y.ExperienciaLaboralId) .Contains(x.ExperienciaLaboralId)) .ToList(); } if (asp.Idiomas?.Count() > 0) { asp.Idiomas = _dbContext.Idiomas .Where(x => model.Idiomas .Select(y => y.IdiomaId) .Contains(x.IdiomaId)) .Select(x => new CandidatoIdioma { Idioma = x }) .ToList(); } if (asp.Competencias?.Count() > 0) { asp.Competencias = _dbContext.Competencias .Where(x => model.Competencias .Select(y => y.CompetenciaId) .Contains(x.CompetenciaId)) .Select(x => new CandidatoCompetencia { Competencia = x }) .ToList(); } asp.FechaCreacion = DateTime.Now; _dbContext.Candidatos.Add(asp); _dbContext.SaveChanges(); return(true); }
public bool Update([FromBody] AspirantViewModel model) { if (model is null || !model.IsValid()) { return(false); } model.Trim(); bool exists = _dbContext.Candidatos.Any(x => x.Estado == Estado.Activo && (x.Cedula.ToUpper() == model.Cedula.ToUpper() || x.Correo.ToUpper() == model.Correo.ToUpper()) && x.CandidatoId != model.CandidatoId); if (exists) { return(false); } var item = _dbContext.Candidatos.Include(x => x.Usuario) .Include(x => x.Competencias) .Include(x => x.Idiomas) .Include(x => x.Capacitaciones) .Include(x => x.ExperienciasLaboral) .FirstOrDefault(x => x.CandidatoId == model.CandidatoId); var asp = model.ToCandidato(); item.Cedula = asp.Cedula; item.Nombre = asp.Nombre; item.Apellidos = asp.Apellidos; item.Telefono = asp.Telefono; item.Correo = asp.Correo; item.SalarioAspira = asp.SalarioAspira; item.RecomendadoPor = asp.RecomendadoPor; item.Puesto = _dbContext.Puestos.Include(x => x.Departamento).FirstOrDefault(x => x.PuestoId == asp.Puesto.PuestoId); if (asp.Usuario?.UsuarioId > 0) { item.Usuario = _dbContext.Usuarios.FirstOrDefault(x => x.UsuarioId == asp.Usuario.UsuarioId); } item.Estado = asp.Estado; if (item.Competencias != null) { _dbContext.RemoveRange(item.Competencias); } if (item.Capacitaciones != null) { _dbContext.RemoveRange(item.Capacitaciones); } if (item.ExperienciasLaboral != null) { _dbContext.RemoveRange(item.ExperienciasLaboral); } if (item.Idiomas != null) { _dbContext.RemoveRange(item.Idiomas); } item.Competencias = asp.Competencias; item.Capacitaciones = asp.Capacitaciones; item.ExperienciasLaboral = asp.ExperienciasLaboral; item.Idiomas = asp.Idiomas; // Update the user basic info too. if (item.Usuario != null) { item.Usuario.Nombre = item.Nombre; item.Usuario.Apellidos = item.Apellidos; item.Usuario.Telefono = item.Telefono; item.Usuario.NombreUsuario = item.Usuario.Correo = item.Correo; item.Usuario.Cedula = item.Cedula; } _dbContext.Update(item); _dbContext.SaveChanges(); return(true); }