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);
        }
        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;
        }
        public void InsertarInformacionAdicional(OfertaInformacionAdicional ofertaInformacionAdicional)
        {
            using (SqlConnection conexion = new SqlConnection(cadenaConexion))
            {
                SqlCommand cmd = new SqlCommand();

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

                //Parámetros:
                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("@AñosExperiencia", ofertaInformacionAdicional.AniosExperiencia));
                cmd.Parameters.Add(new SqlParameter("@EstadoOfertaInformacionAdicional", ofertaInformacionAdicional.EstadoOfertaInformacionAdicional.IdListaValor));
                cmd.Parameters.Add(new SqlParameter("@CreadoPor", ofertaInformacionAdicional.CreadoPor));

                cmd.Connection = conexion;

                conexion.Open();

                cmd.ExecuteNonQuery();

                conexion.Close();
            }
        }
        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);
        }
        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);
        }
 public void InsertarInformacionAdicional(OfertaInformacionAdicional ofertaInformacionAdicional)
 {
     lnInfoAdicional.Insertar(ofertaInformacionAdicional);
 }
        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 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;
        }