Beispiel #1
0
        public PartialViewResult _OfertaInformacionAdicionalEditar(OfertaInformacionAdicional ofertaInfoAdicional)
        {
            if (ModelState.IsValid)
            {
                TicketEmpresa ticket = (TicketEmpresa)Session["TicketEmpresa"];

                //ofertaInfo.IdOferta = 13;
                //ofertaInfo.TipoConocimiento.IdListaValor = "ABE22";
                //ofertaInfo.Conocimiento = "conocimiento22";
                //ofertaInfo.NivelConocimiento.IdListaValor = "ABC22";
                //ofertaInfo.AniosExperiencia = 5;
                //ofertaInfo.EstadoOfertaInformacionAdicional.IdListaValor = "as22";
                ofertaInfoAdicional.ModificadoPor = ticket.Usuario;

                LNOfertaInformacionAdicional lnOfertaInfo = new LNOfertaInformacionAdicional();
                lnOfertaInfo.Actualizar(ofertaInfoAdicional);

                List <OfertaInformacionAdicional> lista = lnInfoAdicional.ObtenerInformacionAdicional(ofertaInfoAdicional.IdOferta, 0);

                ViewBag.IdOferta = ofertaInfoAdicional.IdOferta;
                return(PartialView("_OfertaInformacionAdicional", lista));
            }
            else
            {
                //Código para ubicar los errores en el ModelState.
                var errors = ModelState.Select(x => x.Value.Errors)
                             .Where(y => y.Count > 0)
                             .ToList();

                int a = 0;
            }

            return(PartialView("_OfertaInformacionAdicionalEditar", ofertaInfoAdicional));
        }
        public List <OfertaInformacionAdicional> ObtenerInformacionAdicional(int idOferta, int idOfertaInformacionAdicional)
        {
            List <OfertaInformacionAdicional> lista = new List <OfertaInformacionAdicional>();

            DataTable dtResultado = adOfertaInfoAdicional.ObtenerInformacionAdicional(idOferta, idOfertaInformacionAdicional);

            foreach (DataRow fila in dtResultado.Rows)
            {
                OfertaInformacionAdicional infoAdicional = new OfertaInformacionAdicional();
                infoAdicional.IdOfertaInformacionAdicional = Convert.ToInt32(fila["IdOfertaInformacionAdicional"]);
                infoAdicional.IdOferta     = Convert.ToInt32(fila["IdOferta"]);
                infoAdicional.Conocimiento = Convert.ToString(fila["Conocimiento"]);
                infoAdicional.TipoConocimiento.IdListaValor  = Convert.ToString(fila["TipoConocimiento"]);
                infoAdicional.TipoConocimiento.Valor         = Convert.ToString(fila["TipoConocimientoDescripcion"]);
                infoAdicional.NivelConocimiento.IdListaValor = Convert.ToString(fila["NivelConocimiento"]);
                infoAdicional.NivelConocimiento.Valor        = Convert.ToString(fila["NivelConocimientoDescripcion"]);
                infoAdicional.AniosExperiencia = Convert.ToInt32(fila["AniosExperiencia"] == System.DBNull.Value ? null : fila["AniosExperiencia"]);
                if (infoAdicional.AniosExperiencia == 0)
                {
                    infoAdicional.AniosExperiencia = null;
                }
                infoAdicional.EstadoOfertaInformacionAdicional.IdListaValor = Convert.ToString(fila["EstadoOfertaInformacionAdicional"]);
                infoAdicional.EstadoOfertaInformacionAdicional.Valor        = Convert.ToString(fila["EstadoOfertaInformacionAdicionalDescripcion"]);
                infoAdicional.CreadoPor = Convert.ToString(fila["CreadoPor"]);

                lista.Add(infoAdicional);
            }

            return(lista);
        }
Beispiel #3
0
        public PartialViewResult _OfertaInformacionAdicionalCrear(OfertaInformacionAdicional ofertaInfoAdicional)
        {
            if (ModelState.IsValid)
            {
                TicketEmpresa ticket = (TicketEmpresa)Session["TicketEmpresa"];

                //ofertaInfo.IdOferta = ofertaInfo.IdOferta;
                //ofertaInfo.TipoConocimiento.IdListaValor = "ABE";  //Datos de prueba
                //ofertaInfo.Conocimiento = "conocimiento"; //Datos de prueba
                //ofertaInfo.NivelConocimiento.IdListaValor = "ABC"; //Datos de prueba
                //ofertaInfo.AniosExperiencia = 5; //Datos de prueba
                ofertaInfoAdicional.EstadoOfertaInformacionAdicional.IdListaValor = "OFOCAC"; //Estado oferta Informaciónn adicional Activo
                ofertaInfoAdicional.CreadoPor = ticket.Usuario;

                LNOfertaInformacionAdicional lnOfertaInfo = new LNOfertaInformacionAdicional();
                lnOfertaInfo.Insertar(ofertaInfoAdicional);

                List <OfertaInformacionAdicional> lista = lnInfoAdicional.ObtenerInformacionAdicional(ofertaInfoAdicional.IdOferta, 0);

                ViewBag.IdOferta = ofertaInfoAdicional.IdOferta;
                return(PartialView("_OfertaInformacionAdicional", lista));
            }

            return(PartialView("_OfertaInformacionAdicionalCrear", ofertaInfoAdicional));
        }
Beispiel #4
0
        public void Actualizar(OfertaInformacionAdicional ofertaInformacionAdicional)
        {
            using (SqlConnection conexion = new SqlConnection(cadenaConexion))
            {
                SqlCommand cmd = new SqlCommand();

                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "OfertaInformacionAdicional_Actualizar";

                //Parámetros:
                cmd.Parameters.Add(new SqlParameter("@IdOfertaInformacionAdicional", ofertaInformacionAdicional.IdOfertaInformacionAdicional));
                cmd.Parameters.Add(new SqlParameter("@IdOferta", ofertaInformacionAdicional.IdOferta));
                cmd.Parameters.Add(new SqlParameter("@TipoConocimiento", ofertaInformacionAdicional.TipoConocimientoIdListaValor));
                cmd.Parameters.Add(new SqlParameter("@Conocimiento", ofertaInformacionAdicional.Conocimiento));
                cmd.Parameters.Add(new SqlParameter("@NivelConocimiento", ofertaInformacionAdicional.NivelConocimientoIdListaValor));
                cmd.Parameters.Add(new SqlParameter("@AniosExperiencia", ofertaInformacionAdicional.AniosExperiencia));
                //cmd.Parameters.Add(new SqlParameter("@EstadoOfertaInformacionAdicional", ofertaInformacionAdicional.EstadoOfertaInformacionAdicional.IdListaValor));
                cmd.Parameters.Add(new SqlParameter("@ModificadoPor", ofertaInformacionAdicional.ModificadoPor));

                cmd.Connection = conexion;

                conexion.Open();

                cmd.ExecuteNonQuery();

                conexion.Close();
            }
        }
        public void Insertar(OfertaInformacionAdicional ofertaInformacionAdicional)
        {
            if (ofertaInformacionAdicional.NivelConocimientoIdListaValor == null)
            {
                ofertaInformacionAdicional.NivelConocimientoIdListaValor = "";
            }

            adOfertaInfoAdicional.InsertarInformacionAdicional(ofertaInformacionAdicional);
        }
        public void Actualizar(OfertaInformacionAdicional ofertaInformacionAdicional)
        {
            if (ofertaInformacionAdicional.NivelConocimientoIdListaValor == null)
            {
                ofertaInformacionAdicional.NivelConocimientoIdListaValor = "";
            }


            adOfertaInfoAdicional.Actualizar(ofertaInformacionAdicional);
        }
Beispiel #7
0
        [HttpGet] // esta acción devuelve la vista parcial con los datos para cargar el modal.
        public PartialViewResult _OfertaInformacionAdicionalCrear(int id)
        {
            //Se cargan los combos del tipo.
            ViewBag.TipoConocimientoIdListaValor  = new SelectList(lnGeneral.ObtenerListaValor(Constantes.IDLISTA_TIPO_OTRO_CONOCIMIENTO), "IdListaValor", "Valor");
            ViewBag.NivelConocimientoIdListaValor = new SelectList(lnGeneral.ObtenerListaValor(Constantes.IDLISTA_NIVEL_CONOCIMIENTOS).OrderBy(m => m.Peso), "IdListaValor", "Valor");

            OfertaInformacionAdicional ofertaInfoAdicional = new OfertaInformacionAdicional();

            ofertaInfoAdicional.IdOferta = id;

            return(PartialView("_OfertaInformacionAdicionalCrear", ofertaInfoAdicional));
        }
Beispiel #8
0
        [HttpGet] // esta acción devuelve la vista parcial con los datos para cargar el modal.
        public PartialViewResult _OfertaInformacionAdicionalEditar(int id)
        {
            List <ListaValor> listaTipoInfoAdicional = lnGeneral.ObtenerListaValor(Constantes.IDLISTA_TIPO_OTRO_CONOCIMIENTO);
            List <ListaValor> listaNivelConocimiento = lnGeneral.ObtenerListaValor(Constantes.IDLISTA_NIVEL_CONOCIMIENTOS);

            List <OfertaInformacionAdicional> lista = lnInfoAdicional.ObtenerInformacionAdicional(0, id);

            OfertaInformacionAdicional ofertaInfoAdicionalEdicion = lista[0];

            ViewBag.TipoConocimientoIdListaValor  = new SelectList(listaTipoInfoAdicional, "IdListaValor", "Valor", ofertaInfoAdicionalEdicion.TipoConocimiento.IdListaValor);
            ViewBag.NivelConocimientoIdListaValor = new SelectList(listaNivelConocimiento.OrderBy(m => m.Peso), "IdListaValor", "Valor", ofertaInfoAdicionalEdicion.NivelConocimiento.IdListaValor);

            return(PartialView("_OfertaInformacionAdicionalEditar", ofertaInfoAdicionalEdicion));
        }
Beispiel #9
0
        public PartialViewResult _OfertaInformacionAdicionalEliminar(int id)
        {
            List <OfertaInformacionAdicional> listaInfoAdicional = this.lnInfoAdicional.ObtenerInformacionAdicional(0, id);

            OfertaInformacionAdicional ofertaInfoAdicional = listaInfoAdicional[0];

            this.lnInfoAdicional.Eliminar(id);

            List <OfertaInformacionAdicional> lista = lnInfoAdicional.ObtenerInformacionAdicional(ofertaInfoAdicional.IdOferta, 0);

            ViewBag.IdOferta = ofertaInfoAdicional.IdOferta;

            return(PartialView("_OfertaInformacionAdicional", lista));
        }
Beispiel #10
0
 public void InsertarInformacionAdicional(OfertaInformacionAdicional ofertaInformacionAdicional)
 {
     lnInfoAdicional.Insertar(ofertaInformacionAdicional);
 }
        public Oferta ObtenerPorId(int idOferta)
        {
            Oferta oferta = null;

            //18FEB: Se obtiene las carreras de UTP y se quitan las ya seleccionadas.
            LNGeneral         lnGeneral        = new LNGeneral();
            List <ListaValor> listaCarrerasUTP = lnGeneral.ObtenerListaValor(Constantes.IDLISTA_DE_CARRERA).Where(m => m.IdListaValorPadre == "TEUNIV").ToList(); //Se obtienen todas las carreras


            DataSet dsResultado = adOferta.ObtenerPorId(idOferta);

            //Tabla Index 0: Datos de la oferta.
            if (dsResultado.Tables[0].Rows.Count > 0)
            {
                oferta = new Oferta();

                oferta.IdOferta      = Convert.ToInt32(dsResultado.Tables[0].Rows[0]["IdOferta"]);
                oferta.IdEmpresa     = Convert.ToInt32(dsResultado.Tables[0].Rows[0]["IdEmpresa"]);
                oferta.CargoOfrecido = Convert.ToString(dsResultado.Tables[0].Rows[0]["CargoOfrecido"]);
                oferta.Funciones     = Convert.ToString(dsResultado.Tables[0].Rows[0]["Funciones"]);
                oferta.Competencias  = Convert.ToString(dsResultado.Tables[0].Rows[0]["Competencias"]);

                oferta.TipoTrabajoIdListaValor  = Convert.ToString(dsResultado.Tables[0].Rows[0]["TipoTrabajo"]);
                oferta.TipoTrabajo.Valor        = Convert.ToString(dsResultado.Tables[0].Rows[0]["TipoTrabajoDescripcion"]);
                oferta.TipoCargoIdListaValor    = Convert.ToString(dsResultado.Tables[0].Rows[0]["TipoCargo"]);
                oferta.TipoCargo.Valor          = Convert.ToString(dsResultado.Tables[0].Rows[0]["TipoCargoDescripcion"]);
                oferta.TipoContratoIdListaValor = Convert.ToString(dsResultado.Tables[0].Rows[0]["TipoContrato"]);
                oferta.TipoContrato.Valor       = Convert.ToString(dsResultado.Tables[0].Rows[0]["TipoContratoDescripcion"]);


                oferta.RemuneracionOfrecida = Convert.ToDecimal(dsResultado.Tables[0].Rows[0]["RemuneracionOfrecida"]);
                oferta.Horario     = Convert.ToString(dsResultado.Tables[0].Rows[0]["Horario"]);
                oferta.AreaEmpresa = Convert.ToString(dsResultado.Tables[0].Rows[0]["AreaEmpresa"]);

                if (dsResultado.Tables[0].Rows[0]["NumeroVacantes"] == System.DBNull.Value)
                {
                    oferta.NumeroVacantes = null;
                }
                else
                {
                    oferta.NumeroVacantes = Convert.ToInt32(dsResultado.Tables[0].Rows[0]["NumeroVacantes"]);
                }

                oferta.IdEmpresaLocacion         = Convert.ToInt32(dsResultado.Tables[0].Rows[0]["IdEmpresaLocacion"]);
                oferta.RecibeCorreosIdListaValor = Convert.ToString(dsResultado.Tables[0].Rows[0]["RecibeCorreos"]);
                oferta.FechaFinRecepcionCV       = Convert.ToDateTime(dsResultado.Tables[0].Rows[0]["FechaFinRecepcionCV"]);
                oferta.AreaEmpresa = Convert.ToString(dsResultado.Tables[0].Rows[0]["AreaEmpresa"]);

                if (dsResultado.Tables[0].Rows[0]["DuracionContrato"] == System.DBNull.Value)
                {
                    oferta.DuracionContrato = null;
                }
                else
                {
                    oferta.DuracionContrato = Convert.ToInt32(dsResultado.Tables[0].Rows[0]["DuracionContrato"]);
                }

                oferta.Empresa.NombreComercial = Convert.ToString(dsResultado.Tables[0].Rows[0]["EmpresaNombreComercial"]);
                oferta.NombreLocacion          = Convert.ToString(dsResultado.Tables[0].Rows[0]["NombreLocacion"]);

                oferta.CreadoPor         = Convert.ToString(dsResultado.Tables[0].Rows[0]["CreadoPor"]);
                oferta.ModificadoPor     = Convert.ToString(dsResultado.Tables[0].Rows[0]["ModificadoPor"]);
                oferta.FechaCreacion     = Convert.ToDateTime(dsResultado.Tables[0].Rows[0]["FechaCreacion"]);
                oferta.FechaModificacion = Convert.ToDateTime(dsResultado.Tables[0].Rows[0]["FechaModificacion"]);

                oferta.EstadoOferta = Convert.ToString(dsResultado.Tables[0].Rows[0]["EstadoOferta"]);
                oferta.UsuarioPropietarioEmpresa = Convert.ToString(dsResultado.Tables[0].Rows[0]["UsuarioPropietarioEmpresa"]);
                oferta.FechaPublicacion          = Convert.ToDateTime(dsResultado.Tables[0].Rows[0]["FechaPublicacion"]);

                oferta.CicloMinimoCarreraUTP          = Convert.ToInt32(dsResultado.Tables[0].Rows[0]["CicloMinimoCarreraUTP"]);
                oferta.EstadoCarreraUTP               = Convert.ToString(dsResultado.Tables[0].Rows[0]["EstadoCarreraUTP"]);
                oferta.ExperienciaGeneral             = Convert.ToInt32(dsResultado.Tables[0].Rows[0]["MesesExperienciaTotal"]);
                oferta.ExperienciaPosicionesSimilares = Convert.ToInt32(dsResultado.Tables[0].Rows[0]["MesesExperienciaTipoTrabajo"]);

                //05MAR15: Para las nuevas ofertas este campo siempre está con data. Se agrega la validación para compatibilidad con ofertas anteriores.
                oferta.FechaFinProceso = Convert.ToDateTime(dsResultado.Tables[0].Rows[0]["FechaFinProceso"] == System.DBNull.Value ? new DateTime(1, 1, 1900) : dsResultado.Tables[0].Rows[0]["FechaFinProceso"]);
            }

            //Tabla Index 1: Lista de estudios.
            //Se instancia las listas:
            oferta.ListaEstudios         = new List <OfertaEstudio>();
            oferta.CarrerasSeleccionadas = new List <OfertaEstudio>();
            foreach (DataRow filaEstudio in dsResultado.Tables[1].Rows)
            {
                OfertaEstudio estudio = new OfertaEstudio();
                estudio.IdOfertaEstudio            = Convert.ToInt32(filaEstudio["IdOfertaEstudio"] == System.DBNull.Value ? null : filaEstudio["IdOfertaEstudio"]);
                estudio.IdOferta                   = Convert.ToInt32(filaEstudio["IdOfertaEstudio"] == System.DBNull.Value ? null : filaEstudio["IdOfertaEstudio"]);
                estudio.CicloEstudio               = Convert.ToInt32(filaEstudio["CicloEstudio"] == System.DBNull.Value ? null : filaEstudio["CicloEstudio"]);
                estudio.Estudio                    = Convert.ToString(filaEstudio["Estudio"] == System.DBNull.Value ? null : filaEstudio["Estudio"]);
                estudio.TipoDeEstudio.IdListaValor = Convert.ToString(filaEstudio["TipoDeEstudio"] == System.DBNull.Value ? null : filaEstudio["TipoDeEstudio"]);
                estudio.TipoDeEstudioIdListaValor  = Convert.ToString(filaEstudio["TipoDeEstudio"] == System.DBNull.Value ? null : filaEstudio["TipoDeEstudio"]);
                estudio.TipoDeEstudio.Valor        = Convert.ToString(filaEstudio["TipoDeEstudioDescripcion"]);
                estudio.EstadoDelEstudio.Valor     = Convert.ToString(filaEstudio["EstadoDelEstudioDescripcion"]);
                estudio.EstadoOfertaEstudio.Valor  = Convert.ToString(filaEstudio["EstadoOfertaEstudioDescripcion"]);
                estudio.CreadoPor                  = Convert.ToString(filaEstudio["CreadoPor"]);
                estudio.ModificadoPor              = Convert.ToString(filaEstudio["ModificadoPor"]);
                estudio.FechaCreacion              = Convert.ToDateTime(filaEstudio["FechaCreacion"]);
                estudio.FechaModificacion          = Convert.ToDateTime(filaEstudio["FechaModificacion"]);

                #region Se separan las carrearas universitarias UTP.
                if (estudio.TipoDeEstudio.IdListaValor == "TEUNIV") //Tipo de Estudio Universitario de UTP.
                {
                    var carreraEncontrada = listaCarrerasUTP.Where(m => m.Valor == estudio.Estudio).FirstOrDefault();

                    if (carreraEncontrada != null)
                    {
                        estudio.CodigoCarrera = carreraEncontrada.IdListaValor; //Se guarda el código de la carrera.
                        oferta.CarrerasSeleccionadas.Add(estudio);
                    }
                }
                else //Otros estudios.
                {
                    oferta.ListaEstudios.Add(estudio);
                }
                #endregion
            }

            //Tabla Index 2: Lista de experiencia por sector
            oferta.ListaSectores = new List <OfertaSectorEmpresarial>();
            foreach (DataRow filaSector in dsResultado.Tables[2].Rows)
            {
                OfertaSectorEmpresarial sector = new OfertaSectorEmpresarial();
                sector.IdOfertaSectorEmpresarial = Convert.ToInt32(filaSector["IdOfertaSectorEmpresarial"]);
                sector.IdOferta = Convert.ToInt32(filaSector["IdOferta"]);
                sector.SectorEmpresarial.Valor             = Convert.ToString(filaSector["SectorEmpresarialDescripcion"]);
                sector.AniosTrabajados                     = Convert.ToInt32(filaSector["AniosTrabajados"] == System.DBNull.Value ? null : filaSector["AniosTrabajados"]);
                sector.ExperienciaExcluyente               = Convert.ToBoolean(filaSector["ExperienciaExcluyente"]);
                sector.EstadoOfertaSectorEmpresarial.Valor = Convert.ToString(filaSector["EstadoOfertaSectorEmpresarialDescripcion"]);
                sector.CreadoPor         = Convert.ToString(filaSector["CreadoPor"]);
                sector.ModificadoPor     = Convert.ToString(filaSector["ModificadoPor"]);
                sector.FechaCreacion     = Convert.ToDateTime(filaSector["FechaCreacion"]);
                sector.FechaModificacion = Convert.ToDateTime(filaSector["FechaModificacion"]);

                oferta.ListaSectores.Add(sector);
            }

            //Tabla Index 3: Lista de información adicional
            oferta.ListaInformacionAdicional = new List <OfertaInformacionAdicional>();
            foreach (DataRow filaInfoAdicional in dsResultado.Tables[3].Rows)
            {
                OfertaInformacionAdicional infoAdicional = new OfertaInformacionAdicional();
                infoAdicional.IdOfertaInformacionAdicional = Convert.ToInt32(filaInfoAdicional["IdOfertaInformacionAdicional"]);
                infoAdicional.IdOferta = Convert.ToInt32(filaInfoAdicional["IdOferta"]);
                infoAdicional.TipoConocimiento.Valor  = Convert.ToString(filaInfoAdicional["TipoConocimientoDescripcion"]);
                infoAdicional.Conocimiento            = Convert.ToString(filaInfoAdicional["Conocimiento"]);
                infoAdicional.NivelConocimiento.Valor = Convert.ToString(filaInfoAdicional["NivelConocimientoDescripcion"]);
                infoAdicional.AniosExperiencia        = Convert.ToInt32(filaInfoAdicional["AniosExperiencia"] == System.DBNull.Value ? null : filaInfoAdicional["AniosExperiencia"]);
                infoAdicional.EstadoOfertaInformacionAdicional.Valor = Convert.ToString(filaInfoAdicional["EstadoOfertaInformacionAdicionalDescripcion"]);
                infoAdicional.CreadoPor         = Convert.ToString(filaInfoAdicional["CreadoPor"]);
                infoAdicional.ModificadoPor     = Convert.ToString(filaInfoAdicional["ModificadoPor"]);
                infoAdicional.FechaCreacion     = Convert.ToDateTime(filaInfoAdicional["FechaCreacion"]);
                infoAdicional.FechaModificacion = Convert.ToDateTime(filaInfoAdicional["FechaModificacion"]);

                oferta.ListaInformacionAdicional.Add(infoAdicional);
            }


            //Tabla Index 4: Lista de Postulantes
            oferta.Postulantes = new List <OfertaPostulante>();
            foreach (DataRow filaPostulante in dsResultado.Tables[4].Rows)
            {
                OfertaPostulante postulante = new OfertaPostulante();
                postulante.Alumno.IdAlumno   = Convert.ToInt32(filaPostulante["IdAlumno"]);
                postulante.Alumno.Nombres    = Convert.ToString(filaPostulante["AlumnoNombres"]);
                postulante.Alumno.Apellidos  = Convert.ToString(filaPostulante["AlumnoApellidos"]);
                postulante.FechaPostulacion  = Convert.ToDateTime(filaPostulante["FechaPostulacion"]);
                postulante.FaseOferta.Valor  = Convert.ToString(filaPostulante["FaseOferta"]);
                postulante.NombreCV          = Convert.ToString(filaPostulante["NombreCV"]);
                postulante.NivelDeMatch      = Convert.ToInt32(filaPostulante["NivelDeMatch"]);
                postulante.CreadoPor         = Convert.ToString(filaPostulante["CreadoPor"]);
                postulante.ModificadoPor     = Convert.ToString(filaPostulante["ModificadoPor"]);
                postulante.FechaCreacion     = Convert.ToDateTime(filaPostulante["FechaCreacion"]);
                postulante.FechaModificacion = Convert.ToDateTime(filaPostulante["FechaModificacion"]);

                oferta.Postulantes.Add(postulante);
            }

            //Fases de la oferta
            oferta.OfertaFases = Obtener_OfertaFase(idOferta);


            //Se instancia la lista:
            oferta.CarrerasDisponibles = new List <ListaValor>(); //Esta lista va al lado izquierdo
            //Se recorren las carreras.
            foreach (var carreraUTP in listaCarrerasUTP)
            {
                //Si la carreraUTP ya está seleccionada entonces NO se agrega. Si la búsqueda es null => no está, por lo tanto, sí se agrega.
                if (oferta.CarrerasSeleccionadas.Where(m => m.Estudio == carreraUTP.Valor).FirstOrDefault() == null)
                {
                    ListaValor carreraDisponible = copiarListaValor(carreraUTP);
                    oferta.CarrerasDisponibles.Add(carreraDisponible);
                }
            }

            return(oferta);
        }