/// <summary>diante
 /// modifica un estudiante
 /// </summary>
 /// <param name="dato"></param>
 public void modificar(Estudiante dato)
 {
     if (this.existe(dato))
     {
         this.estudianteDao.modificar(dato);
     }
     else
     {
         throw new Exception("No existe el registro.");
     }
 }
 /// <summary>
 /// crea un estudiante nuevo
 /// </summary>
 /// <param name="dato"></param>
 public void nuevo(Estudiante dato)
 {
     if (!this.existe(dato))
     {
         this.estudianteDao.nuevo(dato);
     }
     else
     {
         throw new Exception("Ya existe el registro.");
     }
 }
 /// <summary>
 /// modifica un estudiante
 /// </summary>
 /// <param name="dato"></param>        
 public void modificar(Estudiante dato)
 {
         using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
         {
             MySqlCommand comando = new MySqlCommand("sp_estudiante_UPDATE");
             comando.CommandType = CommandType.StoredProcedure;
             comando.Parameters.AddWithValue("p_idEstudiante", dato.idEstudiante);
             comando.Parameters.AddWithValue("p_apellido1", dato.apellido1);
             comando.Parameters.AddWithValue("p_apellido2", dato.apellido2);
             comando.Parameters.AddWithValue("p_nombre", dato.nombre);
             comando.Parameters.AddWithValue("p_identificacion", dato.identificacion);
             comando.Parameters.AddWithValue("p_sexo", dato.sexo);
             comando.Parameters.AddWithValue("p_fechaNacimiento", dato.fechaNacimiento);
             comando.Parameters.AddWithValue("p_estadoCivil", dato.estadoCivil);
             comando.Parameters.AddWithValue("p_direccion", dato.direccion);
             comando.Parameters.AddWithValue("p_provincia", dato.provincia.idProvincia);
             comando.Parameters.AddWithValue("p_canton", dato.canton.idCanton);
             comando.Parameters.AddWithValue("p_distrito", dato.distrito.idDistrito);
             comando.Parameters.AddWithValue("p_lugarTrabajo", dato.lugarTrabajo);
             comando.Parameters.AddWithValue("p_nacionalidad", dato.nacionalidad.idNacionalidad); ;
             comando.Parameters.AddWithValue("p_email1", dato.email1);
             comando.Parameters.AddWithValue("p_email2", dato.email2);
             comando.Parameters.AddWithValue("p_telefonoOficina", dato.telefonoOficina);
             comando.Parameters.AddWithValue("p_telefonoCelular", dato.telefonoCelular);
             comando.Parameters.AddWithValue("p_telefonoCasa", dato.telefonoCasa);
             comando.Parameters.AddWithValue("p_colegioProcedencia", dato.colegioProcedencia);
             comando.Parameters.AddWithValue("p_universidadProcedencia", dato.universidadProcedencia);
             comando.Parameters.AddWithValue("p_comentario", dato.comentario);
             comando.Parameters.AddWithValue("p_convenio", dato.convenio.idConvenio);
             comando.Parameters.AddWithValue("p_beca", dato.beca);
             comando.Parameters.AddWithValue("p_titulo", dato.titulo);
             if (dato.divulgacion == 0)
             {
                 comando.Parameters.AddWithValue("p_divulgacion", null);
             }
             else
             {
                 comando.Parameters.AddWithValue("p_divulgacion", dato.divulgacion);
             }	
             comando.Parameters.AddWithValue("p_estado", dato.estado);
             comando.Parameters.AddWithValue("p_usuarioModificacion", dato.usuarioModificacion);
             comando.Parameters.AddWithValue("p_monto", dato.monto);
             db.executeNonQuery(comando);
         } 
 }
 /// <summary>
 /// verifica si existe un estudiante
 /// </summary>
 /// <param name="dato"></param>
 /// <returns>TRUE si existe FALSE en caso contrario</returns>
 public bool existe(Estudiante dato)
 {
     Estudiante objeto = new Estudiante();
     using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
     {
         MySqlCommand comando = new MySqlCommand("sp_estudiante_SELECT_ByID");
         comando.CommandType = CommandType.StoredProcedure;
         comando.Parameters.AddWithValue("p_idEstudiante", dato.idEstudiante);
         DataSet ds = db.executeReader(comando, "estudiante");
         if (ds.Tables[0].Rows.Count > 0)
         {
             return true;
         }
         else
         {
             return false;
         }
     } 
 }
        /// <summary>
        /// consulta todas los estudiantes
        /// </summary>
        /// <returns>List</returns>
        public List<Estudiante> consultarNombreApellidoIdentificacion(String datoBuscar)
        {
            using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
            {
                List<Estudiante> lista = new List<Estudiante>();
                MySqlCommand comando = new MySqlCommand("sp_estudiante_SELECT_ByNombre");
                comando.CommandType = CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("p_valor_buscar", datoBuscar);
                //Incluir el nombre de la tabla 
                DataSet ds = db.executeReader(comando, "estudiante");
                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    Estudiante dato = new Estudiante();
                    if (!row["idEstudiante"].ToString().Equals(""))
                        dato.idEstudiante = Int32.Parse(row["idEstudiante"].ToString());
                    if (!row["identificacion"].ToString().Equals(""))
                        dato.identificacion = row["identificacion"].ToString();
                    if (!row["apellido1"].ToString().Equals(""))
                        dato.apellido1 = row["apellido1"].ToString();
                    if (!row["apellido2"].ToString().Equals(""))
                        dato.apellido2 = row["apellido2"].ToString();
                    if (!row["nombre"].ToString().Equals(""))
                        dato.nombre = row["nombre"].ToString();
                    if (!row["sexo"].ToString().Equals(""))
                        dato.sexo = row["sexo"].ToString();

                    if (!row["fechaNacimiento"].ToString().Equals(""))
                        dato.fechaNacimiento = DateTime.Parse(row["fechaNacimiento"].ToString());
                    if (!row["estadoCivil"].ToString().Equals(""))
                        dato.estadoCivil = row["estadoCivil"].ToString();

                    if (!row["direccion"].ToString().Equals(""))
                        dato.direccion = row["direccion"].ToString();
                    if (!row["provincia"].ToString().Equals(""))
                        dato.provincia.idProvincia = Int32.Parse(row["provincia"].ToString());
                    if (!row["canton"].ToString().Equals(""))
                        dato.canton.idCanton = Int32.Parse(row["canton"].ToString());
                    if (!row["distrito"].ToString().Equals(""))
                        dato.distrito.idDistrito = Int32.Parse(row["distrito"].ToString());
                    if (!row["lugarTrabajo"].ToString().Equals(""))
                        dato.lugarTrabajo = row["lugarTrabajo"].ToString();

                    if (!row["email1"].ToString().Equals(""))
                        dato.email1 = row["email1"].ToString();
                    if (!row["email2"].ToString().Equals(""))
                        dato.email2 = row["email2"].ToString();

                    if (!row["telefonoOficina"].ToString().Equals(""))
                        dato.telefonoOficina = row["telefonoOficina"].ToString();
                    if (!row["telefonoCelular"].ToString().Equals(""))
                        dato.telefonoCelular = row["telefonoCelular"].ToString();
                    if (!row["telefonoCasa"].ToString().Equals(""))
                        dato.telefonoCasa = row["telefonoCasa"].ToString();
                    if (!row["colegioProcedencia"].ToString().Equals(""))
                        dato.colegioProcedencia = row["colegioProcedencia"].ToString();
                    if (!row["universidadProcedencia"].ToString().Equals(""))
                        dato.universidadProcedencia = row["universidadProcedencia"].ToString();
                    if (!row["comentario"].ToString().Equals(""))
                        dato.comentario = row["comentario"].ToString();
                    if (!row["convenio"].ToString().Equals(""))
                        dato.convenio.idConvenio = Int32.Parse(row["convenio"].ToString());
                    if (!row["nacionalidad"].ToString().Equals(""))
                        dato.nacionalidad.idNacionalidad = Int32.Parse(row["nacionalidad"].ToString());
                    if (!row["monto"].ToString().Equals(""))
                        dato.monto = Double.Parse(row["monto"].ToString());

                    if (!row["estado"].ToString().Equals(""))
                        dato.estado = row["estado"].ToString();
                    //Para indicar los datos del usuario
                    if (!row["usuarioCreacion"].ToString().Equals(""))
                        dato.usuarioCreacion = row["usuarioCreacion"].ToString();
                    if (!row["usuarioModificacion"].ToString().Equals(""))
                        dato.usuarioModificacion = row["usuarioModificacion"].ToString();
                    //Indicamos los valores de las fechas
                    if (!row["fechaCreacion"].ToString().Equals(""))
                        dato.fechaCreacion = DateTime.Parse(row["fechaCreacion"].ToString());
                    if (!row["fechaModificacion"].ToString().Equals(""))
                        dato.fechaModificacion = DateTime.Parse(row["fechaModificacion"].ToString());
                    lista.Add(dato);
                }
                return lista;
            }
        }
        /// <summary>
        /// consulta una estudiante
        /// </summary>
        /// <param name="dato"></param>
        /// <returns></returns>
        public Estudiante consultarId(Estudiante dato)
        {

            using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
            {
                MySqlCommand comando = new MySqlCommand("sp_estudiante_SELECT_ByID");
                comando.CommandType = CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("p_idEstudiante", dato.idEstudiante);
                //Despues del comando indicar el nombre de la tabla
                DataSet ds = db.executeReader(comando, "estudiante");
                if (ds.Tables[0].Rows.Count > 0)
                {
                    DataRow row = ds.Tables[0].Rows[0];
                    if (!row["idEstudiante"].ToString().Equals("")) 
                        dato.idEstudiante = Int32.Parse(row["idEstudiante"].ToString());
                    if (!row["identificacion"].ToString().Equals("")) 
                        dato.identificacion = row["identificacion"].ToString();
                    if (!row["apellido1"].ToString().Equals("")) 
                        dato.apellido1 = row["apellido1"].ToString();
                    if (!row["apellido2"].ToString().Equals("")) 
                        dato.apellido2 = row["apellido2"].ToString();
                    if (!row["nombre"].ToString().Equals("")) 
                        dato.nombre = row["nombre"].ToString();
                    if (!row["sexo"].ToString().Equals("")) 
                        dato.sexo = row["sexo"].ToString();
                    
                    if (!row["fechaNacimiento"].ToString().Equals(""))
                        dato.fechaNacimiento = DateTime.Parse(row["fechaNacimiento"].ToString());
                    if (!row["estadoCivil"].ToString().Equals("")) 
                        dato.estadoCivil = row["estadoCivil"].ToString();

                    if (!row["direccion"].ToString().Equals("")) 
                        dato.direccion = row["direccion"].ToString();
                    if (!row["provincia"].ToString().Equals(""))
                        dato.provincia.idProvincia = Int32.Parse (row["provincia"].ToString());
                    if (!row["canton"].ToString().Equals(""))
                        dato.canton.idCanton  = Int32.Parse (row["canton"].ToString());
                    if (!row["distrito"].ToString().Equals(""))
                        dato.distrito.idDistrito  = Int32.Parse (row["distrito"].ToString());
                    if (!row["lugarTrabajo"].ToString().Equals("")) 
                        dato.lugarTrabajo = row["lugarTrabajo"].ToString();

                    if (!row["email1"].ToString().Equals("")) 
                        dato.email1 = row["email1"].ToString();
                    if (!row["email2"].ToString().Equals(""))
                        dato.email2 = row["email2"].ToString();

                    if (!row["telefonoOficina"].ToString().Equals("")) 
                        dato.telefonoOficina = row["telefonoOficina"].ToString();
                    if (!row["telefonoCelular"].ToString().Equals("")) 
                        dato.telefonoCelular = row["telefonoCelular"].ToString();
                    if (!row["telefonoCasa"].ToString().Equals("")) 
                        dato.telefonoCasa = row["telefonoCasa"].ToString();
                    if (!row["colegioProcedencia"].ToString().Equals("")) 
                        dato.colegioProcedencia = row["colegioProcedencia"].ToString();
                    if (!row["universidadProcedencia"].ToString().Equals("")) 
                        dato.universidadProcedencia = row["universidadProcedencia"].ToString();
                    if (!row["comentario"].ToString().Equals("")) 
                        dato.comentario = row["comentario"].ToString();
                    if (!row["convenio"].ToString().Equals(""))
                        dato.convenio.idConvenio  = Int32.Parse (row["convenio"].ToString());
                    if (!row["nacionalidad"].ToString().Equals(""))
                        dato.nacionalidad.idNacionalidad  = Int32.Parse (row["nacionalidad"].ToString());
                    if (!row["monto"].ToString().Equals(""))
                        dato.monto = Double.Parse(row["monto"].ToString());

                    if (!row["beca"].ToString().Equals(""))
                        dato.beca = row["beca"].ToString();
                    if (!row["divulgacion"].ToString().Equals(""))
                        dato.divulgacion = Int32.Parse(row["divulgacion"].ToString());


                    if (!row["estado"].ToString().Equals("")) 
                        dato.estado = row["estado"].ToString();
                    //Para indicar los datos del usuario
                    if (!row["usuarioCreacion"].ToString().Equals("")) 
                        dato.usuarioCreacion = row["usuarioCreacion"].ToString();
                    if (!row["usuarioModificacion"].ToString().Equals("")) 
                        dato.usuarioModificacion = row["usuarioModificacion"].ToString();
                    //Indicamos los valores de las fechas
                    if (!row["fechaCreacion"].ToString().Equals(""))
                        dato.fechaCreacion = DateTime.Parse(row["fechaCreacion"].ToString());
                    if (!row["fechaModificacion"].ToString().Equals(""))
                        dato.fechaModificacion = DateTime.Parse(row["fechaModificacion"].ToString());
                }
                else
                {
                    dato = null;
                }
                return dato;
            }
        }
 /// <summary>
 /// elimina un estudiante
 /// </summary>
 /// <param name="dato"></param>
 public void eliminar(Estudiante dato)
 {
     using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
     {
         MySqlCommand comando = new MySqlCommand("sp_estudiante_DELETE");
         comando.CommandType = CommandType.StoredProcedure;
         comando.Parameters.AddWithValue("p_idEstudiante", dato.idEstudiante);
         db.executeNonQuery(comando);
     }
 }
        /// <summary>
        /// actualiza un registro
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ASPxGridView1_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
        {
            try
            {
                Estudiante estudiante = new Estudiante();
                //llena el objeto con los valores
                estudiante.idEstudiante = Int32.Parse (e.NewValues["idEstudiante"].ToString());
                estudiante.identificacion = e.NewValues["identificacion"].ToString();
                estudiante.nombre = e.NewValues["nombre"].ToString();
                estudiante.apellido1 = e.NewValues["apellido1"].ToString();
                estudiante.apellido2 = e.NewValues["apellido2"].ToString();
                estudiante.estadoCivil = e.NewValues["estadoCivil"].ToString();
                estudiante.sexo = e.NewValues["sexo"].ToString();
                estudiante.fechaNacimiento = DateTime .Parse(e.NewValues["fechaNacimiento"].ToString());
                estudiante.estado = e.NewValues["estado"].ToString();

                ASPxPageControl Tabs = (ASPxPageControl)ASPxGridView1.FindEditFormTemplateControl("pageControl");
                ASPxComboBox cmbProvincia = (ASPxComboBox)Tabs.FindControl("provincia");
                ASPxComboBox cmbCanton = (ASPxComboBox)Tabs.FindControl("canton");
                ASPxComboBox cmbDistrito = (ASPxComboBox)Tabs.FindControl("distrito");
                if (cmbProvincia.Value != null) { 
                    estudiante.provincia.idProvincia = Int32.Parse(cmbProvincia.Value.ToString());
                }
                if (cmbCanton.Value != null)
                {
                    estudiante.canton.idCanton = Int32.Parse(cmbCanton.Value.ToString());
                }
                if (cmbDistrito.Value != null)
                {
                    estudiante.distrito.idDistrito = Int32.Parse(cmbDistrito.Value.ToString());
                }

                estudiante.direccion = e.NewValues["direccion"].ToString();
                estudiante.nacionalidad.idNacionalidad = Int32.Parse(e.NewValues["nacionalidad"].ToString());

                estudiante.telefonoOficina = e.NewValues["telefonoOficina"] == null ? null : e.NewValues["telefonoOficina"].ToString();
                estudiante.telefonoCelular = e.NewValues["telefonoCelular"] == null ? null : e.NewValues["telefonoCelular"].ToString();
                estudiante.telefonoCasa = e.NewValues["telefonoCasa"] == null ? null : e.NewValues["telefonoCasa"].ToString();
                estudiante.email1 = e.NewValues["email1"] == null ? null : e.NewValues["email1"].ToString();
                estudiante.email2 = e.NewValues["email2"] == null ? null : e.NewValues["email2"].ToString();

                estudiante.colegioProcedencia = e.NewValues["colegioProcedencia"] == null ? null : e.NewValues["colegioProcedencia"].ToString();
                estudiante.lugarTrabajo = e.NewValues["lugarTrabajo"] == null ? null : e.NewValues["lugarTrabajo"].ToString();
                estudiante.comentario = e.NewValues["comentario"] == null ? null : e.NewValues["comentario"].ToString();
                estudiante.convenio.idConvenio  = e.NewValues["convenio"] == null ? estudiante.convenio.idConvenio  : Int32.Parse(e.NewValues["convenio"].ToString());

                estudiante.beca = e.NewValues["beca"].ToString();
                estudiante.titulo = e.NewValues["titulo"].ToString();
                estudiante.divulgacion = e.NewValues["divulgacion"] == null ? 0 : Int32.Parse(e.NewValues["divulgacion"].ToString());
                estudiante.usuarioCreacion = Session["usuario"].ToString();
                 
                estudianteBo.modificar(estudiante);//agrega el objeto a la base de datos

                e.Cancel = true;//manejo de execpcion no controlada BUSCAR SOLUCION
                this.ASPxGridView1.CancelEdit();
                Session["entro"] = "NO";
                this.cargarDatos();//refescar los datos
            }
            catch (Exception ex)
            {
                Session["errorMessage"] = ex.Message;
            }
        }
        private void calculoMonto(Double prima)
        {
            if (Session["idMatricula"] != null)
            {
                Class.Matricula.Matricula matricula = this.matriculaBo.consultarId(new Class.Matricula.Matricula(Int32.Parse(Session["idMatricula"].ToString())));


                if (matricula != null)
                {


                    if (matricula.estado.Equals("PROCESO"))
                    {
                        
                        if (this.cmbTipoPago.Value.ToString().Equals("SI"))
                        {
                            this.txtPrima.Text = "0.00";
                            Convenio convenio = this.convenioBo.consultarId(new Convenio(Int32.Parse(this.cmbConvenio.Value.ToString())));

                            if (this.cmbMedioPago.Value.ToString().Equals("EFECTIVO") ||
                                this.cmbMedioPago.Value.ToString().Equals("DEPOSITO") ||
                                this.cmbMedioPago.Value.ToString().Equals("CHEQUE"))
                            {
                                if (this.ASPxGridViewCursoMatriculado.VisibleRowCount >= 4)
                                {
                                    convenioPorcentaje = convenio.descuentoEfectivoBC;
                                }
                                else
                                {
                                    convenioPorcentaje = convenio.descuentoEfectivoBI;
                                }
                            }
                            else
                            {
                                if (this.ASPxGridViewCursoMatriculado.VisibleRowCount >= 4)
                                {
                                    convenioPorcentaje = convenio.descuentoTarjetaBC;
                                }
                                else
                                {
                                    convenioPorcentaje = convenio.descuentoTarjetaBI;
                                }
                            }

                            Estudiante estudiante = new Estudiante(Int32.Parse(this.cmbEstudiante.Value.ToString()));
                            estudiante = estudianteBo.consultarId(estudiante);

                            if (estudiante.monto > 0)
                            {
                                this.montoDescuento = 0;
                                this.lblMontoAFavor.Text = String.Format("NOTA: Créditos: {0:n} NO APLICA DESCUENTO.", estudiante.monto);
                            }
                            else
                            {
                                this.montoDescuento = this.montoSubTotal * (convenioPorcentaje / 100);
                            }
                            this.montoCredito = 0;
                            this.montoPrima = 0;
                            this.montoComision = 0;
                            this.montoTotal = this.montoSubTotal - this.montoDescuento;
                        }
                        else
                        {

                            double primaPorcentaje = Double.Parse(this.txtPrimaPorcentaje.Text);
                            double comisionPorcentaje = Double.Parse(parametroBo.consultarId(new Parametro("PORCENTAJE_COMISION")).descripcion);

                            this.montoDescuento = 0;
                            this.montoPrima = this.montoSubTotal * (primaPorcentaje / 100);
                            this.montoComision = prima != 0 ? prima : (this.montoSubTotal - this.montoPrima) * (comisionPorcentaje / 100);
                            this.montoCredito = (this.montoSubTotal - this.montoPrima) + this.montoComision;
                            this.montoTotal = (this.montoSubTotal + this.montoComision);



                        }

                    }
                }

            }
        }
 public EstudianteCarrera(Carrera carrera, Estudiante estudiante)
 {
     this.carrera = carrera;
     this.estudiante = estudiante;            
 }
 public List<Estudiante> consultarEstudisteCursoLista(Int32 idOfertaAcademica)
 {
     List<Estudiante> lista = new List<Estudiante>();
     using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
     {
         MySqlCommand comando = new MySqlCommand("sp_registro_notas");
         comando.CommandType = CommandType.StoredProcedure;
         comando.Parameters.AddWithValue("p_ofertaAcademica", idOfertaAcademica);
         //indicamos el nombre de la tabla
         DataSet ds = db.executeReader(comando, "matricula_detalle");
       
         if (ds.Tables[0].Rows.Count > 0)
         {
             foreach (DataRow row in ds.Tables[0].Rows)
             {
                 Estudiante dato = new Estudiante();
                 if (!row["NombreEstudiante"].ToString().Equals(""))
                     dato.nombre = row["NombreEstudiante"].ToString();
                 if (!row["idEstudiante"].ToString().Equals(""))
                     dato.idEstudiante  = Int32 .Parse ( row["idEstudiante"].ToString());
                 lista.Add(dato);
             }
         }
     }
     return lista;
 }
        /// <summary>
        /// consulta una Estudiante
        /// </summary>
        /// <param name="dato"></param>
        /// <returns></returns>
        public Estudiante consultarId(Estudiante dato)
        {
            dato = this.estudianteDao.consultarId(dato);
            if (dato != null)
            {
                if (dato.nacionalidad.idNacionalidad != 0)
                {
                    dato.nacionalidad = this.nacionalidadBo.consultarId(new Nacionalidad(dato.nacionalidad.idNacionalidad));
                }

                if (dato.convenio.idConvenio != 0)
                {
                    dato.convenio = this.convenioBo.consultarId(new Convenio(dato.convenio.idConvenio));
                }

                if (dato.provincia.idProvincia != 0)
                {
                    dato.provincia = this.provinciaBo.consultarId(new Provincia(dato.provincia.idProvincia));
                    if (dato.provincia != null && dato.canton.idCanton != 0)
                    {
                        dato.canton = this.cantonBo.consultarId(new Canton(dato.provincia.idProvincia, dato.canton.idCanton));
                        if (dato.canton != null && dato.distrito.idDistrito != 0)
                        {
                            dato.distrito = this.distritoBo.consultarId(new Distrito(dato.provincia, dato.canton, dato.distrito.idDistrito));
                        }
                    }
                }
            }
            return dato;
        }
 /// <summary>
 /// verifica si existe un estudiante
 /// </summary>
 /// <param name="dato"></param>
 /// <returns>TRUE si existe FALSE en caso contrario</returns>
 public bool existe(Estudiante dato)
 {
     return this.estudianteDao.existe(dato);
 }