public void Insertar(OfertaPostulante ofertapostulante)
        {
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "OfertaPostulante_Insertar";
            cmd.Connection = cnn.cn;
            cnn.Conectar();
            cmd.Parameters.Add(new SqlParameter("@IdOferta", SqlDbType.Int)).Value = ofertapostulante.IdOferta;
            cmd.Parameters.Add(new SqlParameter("@IdAlumno", SqlDbType.Int)).Value = ofertapostulante.IdAlumno;
            cmd.Parameters.Add(new SqlParameter("@FaseOferta", SqlDbType.VarChar, 6)).Value = ofertapostulante.FaseOfertaPostulacion;
            cmd.Parameters.Add(new SqlParameter("@IdCV", SqlDbType.Int)).Value = ofertapostulante.IdCV;
            cmd.Parameters.Add(new SqlParameter("@DocumentoCV", ofertapostulante.DocumentoCV));
            cmd.Parameters.Add(new SqlParameter("@CreadoPor", SqlDbType.VarChar,50)).Value = ofertapostulante.CreadoPor;
            cmd.ExecuteNonQuery();
            cnn.Desconectar();
            if (ofertapostulante.RecibeCorreos == "OFCOCO")
            {

                cmd2.CommandType = CommandType.StoredProcedure;
                cmd2.CommandText = "OfertaCorreo_Insertar";
                cmd2.Connection = cnn2.cn;
                cnn2.Conectar();
                cmd2.Parameters.Add(new SqlParameter("@IdOferta", SqlDbType.Int)).Value = ofertapostulante.IdOferta;
                cmd2.Parameters.Add(new SqlParameter("@IdAlumno", SqlDbType.Int)).Value = ofertapostulante.IdAlumno;
                cmd2.Parameters.Add(new SqlParameter("@CorreoUsuarioEmpresa", SqlDbType.VarChar, 300)).Value = ofertapostulante.CorreoElectronicoUsuarioEmpresa;
                cmd2.Parameters.Add(new SqlParameter("@CargoOfrecido", SqlDbType.VarChar, 300)).Value = ofertapostulante.CargoOfrecido;
                cmd2.ExecuteNonQuery();
                cnn2.Desconectar();
            }
        }
 public void Actualizar(OfertaPostulante ofertapostulante)
 {
     cmd.CommandType = CommandType.StoredProcedure;
     cmd.CommandText = "OfertaPostulante_Actualizar";
     cmd.Connection = cnn.cn;
     cnn.Conectar();
     cmd.Parameters.Add(new SqlParameter("@IdOfertaPostulante", SqlDbType.Int)).Value = ofertapostulante.IdOfertaPostulante;
     cmd.Parameters.Add(new SqlParameter("@IdOferta", SqlDbType.Int)).Value = ofertapostulante.IdOferta;
     cmd.Parameters.Add(new SqlParameter("@IdAlumno", SqlDbType.Int)).Value = ofertapostulante.IdAlumno;
     cmd.Parameters.Add(new SqlParameter("@IdCV", SqlDbType.Int)).Value = ofertapostulante.IdCV;
     cmd.Parameters.Add(new SqlParameter("@DocumentoCV", ofertapostulante.DocumentoCV));
     cmd.Parameters.Add(new SqlParameter("@ModificadoPor", SqlDbType.VarChar, 50)).Value = ofertapostulante.ModificadoPor;
     cmd.ExecuteNonQuery();
     cnn.Desconectar();
 }
 public void Insertar(OfertaPostulante ofertapostulante)
 {
     adOfertaPostulante.Insertar(ofertapostulante);
     if (ofertapostulante.RecibeCorreos == "OFCOPO")
     {
         DataTable dt = adAlumno.ObtenerAlumnoPorIdAlumno(ofertapostulante.IdAlumno);
         if (dt.Rows.Count > 0)
         {
             Mensaje mensaje = new Mensaje();
             mensaje.DeUsuarioCorreoElectronico = "*****@*****.**";
             mensaje.ParaUsuarioCorreoElectronico = ofertapostulante.CorreoElectronicoUsuarioEmpresa;
             mensaje.Asunto = "Nuevo Postulante: " + dt.Rows[0]["Nombres"] + " " + dt.Rows[0]["Apellidos"] + " - Oferta " + ofertapostulante.CargoOfrecido;
             mensaje.MensajeTexto = "Ha recibido un Postulante nuevo para su Oferta: " + ofertapostulante.CargoOfrecido + "\r\n\r\n" + dt.Rows[0]["Nombres"] + " " + dt.Rows[0]["Apellidos"];
             LNCorreo.EnviarCorreo(mensaje);
         }
     }
 }
        public ActionResult CambiarEstadoPostulante(int idOfertaPostulante, string faseOferta)
        {
            TicketEmpresa ticket = (TicketEmpresa)Session["TicketEmpresa"];

            LNOferta lnOferta = new LNOferta();

            List<OfertaPostulante> lista = new List<OfertaPostulante>();

            OfertaPostulante ofertaPostulante = new OfertaPostulante();
            ofertaPostulante.IdOfertaPostulante = idOfertaPostulante;
            ofertaPostulante.ModificadoPor = ticket.Usuario;
            ofertaPostulante.Seleccionado = true; //Valor agregado por compatibilidad con otro proceso. Se coloca True para indicar que Sí debe actualizar el campo.
            lista.Add(ofertaPostulante);

            lnOferta.ActualizarFaseDePostulantes(lista, faseOferta);

            //Se obtiene la descripción de la oferta:
            LNGeneral lnGeneral = new LNGeneral();
            ListaValor listaValorFase = lnGeneral.ObtenerListaValor(Constantes.IDLISTA_FASE_OFERTA).Where(m => m.IdListaValor == faseOferta).FirstOrDefault();

            //Se retorna la descripción de la fase seleccionada.
            return Content(listaValorFase.DescripcionValor);
        }
 public void Actualizar(OfertaPostulante ofertapostulante)
 {
     adOfertaPostulante.Actualizar(ofertapostulante);
 }
        public List<OfertaPostulante> ObtenerPostulantesPorIdOferta(int idOferta)
        {
            List<OfertaPostulante> postulantes = new List<OfertaPostulante>();

            DataTable dtResultado = adOferta.ObtenerPostulantesPorIdOferta(idOferta);

            foreach (DataRow fila in dtResultado.Rows)
            {
                OfertaPostulante postulante = new OfertaPostulante();
                postulante.IdAlumno = Convert.ToInt32(fila["IdAlumno"]);
                postulante.IdOferta = Convert.ToInt32(fila["IdOferta"]);
                postulante.IdOfertaPostulante = Convert.ToInt32(fila["IdOfertaPostulante"]);
                postulante.FaseOferta.Valor = Convert.ToString(fila["FaseOfertaDescripcion"]);
                postulante.FechaPostulacion = Convert.ToDateTime(fila["FechaPostulacion"]);
                postulante.Alumno = new Alumno() { Nombres = Convert.ToString(fila["AlumnoNombres"]), Apellidos = Convert.ToString(fila["AlumnoApellidos"]) };
                postulante.NivelDeMatch = Convert.ToInt32(fila["NivelDeMatch"]);
                postulante.CorreoElectronico = Convert.ToString(fila["CorreoElectronico"]);
                postulante.Usuario = Convert.ToString(fila["Usuario"]);
                postulante.FaseOferta.Peso = Convert.ToInt32(fila["FasePeso"]);

                postulantes.Add(postulante);
            }

            return postulantes;
        }
        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;
        }
        public ActionResult DescargarCV(OfertaPostulante entidad)
        {
            byte[] cv = lnofertapostulante.OfertaPostulante_DescaragarCV(entidad.IdAlumno, entidad.IdOferta);

            using (System.IO.MemoryStream stream = new System.IO.MemoryStream())
            {
                stream.Write(cv, 0, cv.Length);
                Response.Buffer = false;
                Response.AppendHeader("Content-Type", "image/bmp");
                Response.AppendHeader("Content-Transfer-Encoding", "binary");
                Response.AppendHeader("Content-Disposition", "attachment; filename=imagen.bmp");
                Response.BinaryWrite(cv);
            }

            Response.End();

            return View();
        }
        public ActionResult PostularOferta(OfertaPostulante entidad)
        {
            ViewBag.MensajePostulacion = "";

            if (entidad.IdCV > 0)
            {
                TicketAlumno ticket = (TicketAlumno)Session["TicketAlumno"];
                entidad.CreadoPor = ticket.Usuario;

                //Se crea el CV en formato Word.
                string rutaPlantilla = AppDomain.CurrentDomain.BaseDirectory + "Plantillas\\template.docx";
                PlantillaController plantilla = new PlantillaController();
                entidad.DocumentoCV = plantilla.Word2PDF(plantilla.CrearCurriculum(entidad.IdCV, rutaPlantilla).ToArray());
                lnofertapostulante.Insertar(entidad);
            }
            else
            {
                ViewBag.MensajePostulacion = "XXX";
            }

            return View();
        }