コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }