Ejemplo n.º 1
0
        public static Sucursal getSucursaloById(Int64 pId)
        {
            Sucursal item = null;

            using (MySqlConnection _con = new Conexion().Conectar())
            {
                try
                {
                    _con.Open();
                    MySqlCommand cmdGetItemById = new MySqlCommand("select * from sucursal where Id=@pId", _con);
                    cmdGetItemById.Parameters.AddWithValue("@pId", pId);
                    MySqlDataReader _reader = cmdGetItemById.ExecuteReader();
                    while (_reader.Read())
                    {
                        item = new Sucursal(
                            _reader.GetInt64(0),
                            _reader.GetString(1),
                            _reader.GetString(2),
                            _reader.GetString(3),
                            CursoDAL.getCursosByIdSucursal(_reader.GetInt64(0), null)
                            );
                    }
                    _reader.Close();
                }
                catch (Exception ex)
                {
                    _con.Close();
                    throw ex;
                }
                finally
                {
                    _con.Close();
                }
            }
            return(item);
        }
Ejemplo n.º 2
0
        public static bool syncCuotas(Int64 pIdCurso, Int64 pUserId)
        {
            bool             result     = true;
            bool             registro   = false;
            List <Cuota>     lista      = new List <Cuota>();
            List <Matricula> matriculas = new List <Matricula>();
            Curso            curso      = CursoDAL.getCursoById(pIdCurso);
            DateTime         fechaFin   = Convert.ToDateTime(curso.Hasta);

            using (MySqlConnection _con = new Conexion().Conectar())
            {
                try
                {
                    _con.Open();
                    MySqlTransaction _trans           = _con.BeginTransaction();
                    MySqlCommand     cmdGetMatriculas = new MySqlCommand("select Id from matricula where IdCurso=@pIdCurso order by Id asc", _con);
                    cmdGetMatriculas.Parameters.AddWithValue("@pIdCurso", pIdCurso);
                    MySqlDataReader _reader = cmdGetMatriculas.ExecuteReader();
                    while (_reader.Read())
                    {
                        matriculas.Add(MatriculaDAL.getMatriculaById(_reader.GetInt64(0)));
                    }
                    _reader.Close();
                    foreach (Matricula matricula in matriculas)
                    {
                        DateTime fechaIni = Convert.ToDateTime(matricula.FhRegistro);
                        if (matricula != null)
                        {
                            for (int i = 0; i < (Math.Abs((fechaFin.Month - fechaIni.Month) + 12 * (fechaFin.Year - fechaIni.Year)) + 1); i++)
                            {
                                int    val1  = (fechaIni.AddMonths(i)).Month;
                                int    val2  = (fechaIni.AddMonths(i)).Year;
                                string fecha = fechaIni.AddMonths(i).ToString("yyyy") + "-" + fechaIni.AddMonths(i).ToString("MM") + "-" + (DateTime.DaysInMonth(fechaIni.AddMonths(i).Year, fechaIni.AddMonths(i).Month) > Convert.ToInt32(matricula.DiaLimite) ? matricula.DiaLimite : DateTime.DaysInMonth(fechaIni.AddMonths(i).Year, fechaIni.AddMonths(i).Month).ToString());
                                if (Convert.ToInt32(matricula.DiaLimite) < Convert.ToDateTime(curso.Desde).Day&& Convert.ToDateTime(curso.Desde).AddMonths(i).ToString("MM") == Convert.ToDateTime(matricula.FhRegistro).ToString("MM"))
                                {
                                    fecha = fechaIni.ToString("yyyy") + "-" + fechaIni.AddMonths(i).ToString("MM") + "-" + Convert.ToDateTime(curso.Desde).Day;
                                }
                                Cuota cuota = getCuotaByMonth(matricula.Id, (fechaIni.AddMonths(i)).Month, (fechaIni.AddMonths(i)).Year);
                                if (cuota == null)
                                {
                                    MySqlCommand cmdInsertCuota = new MySqlCommand("Insert into cuota (FhRegistro,Precio,Total,IdMatricula) values ('" + fecha + "',@Precio,@Total,@IdMatricula)", _con, _trans);
                                    cmdInsertCuota.Parameters.AddWithValue("@Precio", Properties.Settings.Default.PrecioCuota);
                                    cmdInsertCuota.Parameters.AddWithValue("@Total", "0.00");
                                    cmdInsertCuota.Parameters.AddWithValue("@IdMatricula", matricula.Id);

                                    if (cmdInsertCuota.ExecuteNonQuery() <= 0)
                                    {
                                        result = false;
                                    }
                                    else
                                    {
                                        registro = true;
                                    }
                                }
                            }
                            List <Cuota> cuotas = matricula.Cuotas.Where(a => Convert.ToDateTime(a.FhRegistro) < Convert.ToDateTime(curso.Desde) || Convert.ToDateTime(a.FhRegistro) > Convert.ToDateTime(curso.Hasta)).ToList();
                            foreach (Cuota cuota in cuotas)
                            {
                                if (MatricdetfacDAL.getMatricdetfacByIdCuota(cuota.Id) == null)
                                {
                                    MySqlCommand cmdInsertCuota = new MySqlCommand("delete from cuota where Id=@Id", _con, _trans);
                                    cmdInsertCuota.Parameters.AddWithValue("@Id", cuota.Id);
                                    if (cmdInsertCuota.ExecuteNonQuery() <= 0)
                                    {
                                        result = false;
                                    }
                                    else
                                    {
                                        registro = true;
                                    }
                                    if (result)
                                    {
                                        MySqlCommand cmdInsertAuditoria = new MySqlCommand("Insert into regemphist (Detalle,Accion,TipoRegistro,IdUserEmp) values (@Detalle,@Accion,@TipoRegistro,@IdUserEmp)", _con, _trans);
                                        cmdInsertAuditoria.Parameters.AddWithValue("@Detalle", "Sincronizó cuotas en el sistema y se elimino permanentemente la cuota con Id " + cuota.Id + " de la matricula con Id " + matricula.Id + " ya que no habia sido cancelada ni anulada en ningun caso posible.");
                                        cmdInsertAuditoria.Parameters.AddWithValue("@Accion", "Eliminar");
                                        cmdInsertAuditoria.Parameters.AddWithValue("@TipoRegistro", "Cuotas");
                                        cmdInsertAuditoria.Parameters.AddWithValue("@IdUserEmp", pUserId);
                                        if (cmdInsertAuditoria.ExecuteNonQuery() <= 0)
                                        {
                                            result = false;
                                        }
                                    }
                                }
                            }
                        }
                    }
                    if (result && registro)
                    {
                        if (result)
                        {
                            MySqlCommand cmdInsertAuditoria = new MySqlCommand("Insert into regemphist (Detalle,Accion,TipoRegistro,IdUserEmp) values (@Detalle,@Accion,@TipoRegistro,@IdUserEmp)", _con, _trans);
                            cmdInsertAuditoria.Parameters.AddWithValue("@Detalle", "Sincronizó cuotas en el sistema.");
                            cmdInsertAuditoria.Parameters.AddWithValue("@Accion", "Registrar");
                            cmdInsertAuditoria.Parameters.AddWithValue("@TipoRegistro", "Cuotas");
                            cmdInsertAuditoria.Parameters.AddWithValue("@IdUserEmp", pUserId);
                            if (cmdInsertAuditoria.ExecuteNonQuery() <= 0)
                            {
                                result = false;
                            }
                        }
                    }
                    if (result)
                    {
                        if (registro)
                        {
                            _trans.Commit();
                        }
                    }
                    else
                    {
                        _trans.Rollback();
                    }
                }
                catch (Exception ex)
                {
                    _con.Close();
                    throw ex;
                }
                finally
                {
                    _con.Close();
                }
            }
            return(result);
        }
Ejemplo n.º 3
0
        public static bool updateMatricula(Matricula item, Useremp pUser)
        {
            bool result = true;

            using (MySqlConnection _con = new Conexion().Conectar())
            {
                _con.Open();
                MySqlTransaction _trans = _con.BeginTransaction();
                try
                {
                    Matricula    matricula        = getMatriculaById(item.Id);
                    MySqlCommand cmdUpdatePersona = new MySqlCommand("update persona set Nombre=@Nombre,Dui=@Dui,Nit=@Nit,Direccion=@Direccion,FechaNac=@FechaNac where Id=@Id", _con, _trans);
                    cmdUpdatePersona.Parameters.AddWithValue("@Id", item.Estudiante.Persona.Id);
                    cmdUpdatePersona.Parameters.AddWithValue("@Nombre", item.Estudiante.Persona.Nombre);
                    cmdUpdatePersona.Parameters.AddWithValue("@Dui", item.Estudiante.Persona.Dui);
                    cmdUpdatePersona.Parameters.AddWithValue("@Nit", item.Estudiante.Persona.Nit);
                    cmdUpdatePersona.Parameters.AddWithValue("@Direccion", item.Estudiante.Persona.Direccion);
                    cmdUpdatePersona.Parameters.AddWithValue("@FechaNac", Convert.ToDateTime(item.Estudiante.Persona.FechaNac).ToString("yyyy-MM-dd"));
                    if (cmdUpdatePersona.ExecuteNonQuery() <= 0)
                    {
                        result = false;
                    }
                    MySqlCommand cmdUpdateEstudiante = new MySqlCommand("update estudiante set ApPaterno=@ApPaterno,ApMaterno=@ApMaterno, " +
                                                                        "Telefono=@Telefono,Enfermedad=@Enfermedad,Correo=@Correo,TelEmergencia=@TelEmergencia,ParentEmergencia=@ParentEmergencia,IdPersona=@IdPersona " +
                                                                        "where Id=@Id", _con, _trans);
                    cmdUpdateEstudiante.Parameters.AddWithValue("@Id", item.Estudiante.Id);

                    cmdUpdateEstudiante.Parameters.AddWithValue("@ApPaterno", item.Estudiante.ApPaterno);
                    cmdUpdateEstudiante.Parameters.AddWithValue("@ApMaterno", item.Estudiante.ApMaterno);
                    cmdUpdateEstudiante.Parameters.AddWithValue("@Telefono", item.Estudiante.Telefono);
                    cmdUpdateEstudiante.Parameters.AddWithValue("@Enfermedad", item.Estudiante.Enfermedad);
                    cmdUpdateEstudiante.Parameters.AddWithValue("@Correo", item.Estudiante.Correo);
                    cmdUpdateEstudiante.Parameters.AddWithValue("@TelEmergencia", item.Estudiante.TelEmergencia);
                    cmdUpdateEstudiante.Parameters.AddWithValue("@ParentEmergencia", item.Estudiante.ParentEmergencia);
                    cmdUpdateEstudiante.Parameters.AddWithValue("@IdPersona", item.Estudiante.IdPersona);

                    if (cmdUpdateEstudiante.ExecuteNonQuery() <= 0)
                    {
                        result = false;
                    }

                    MySqlCommand cmdUpdateMatricula = new MySqlCommand("update matricula set FhRegistro=@FhRegistro,Becado=@Becado,DiaLimite=@DiaLimite,IdCurso=@IdCurso where Id=@Id", _con, _trans);
                    cmdUpdateMatricula.Parameters.AddWithValue("@Id", item.Id);
                    cmdUpdateMatricula.Parameters.AddWithValue("@FhRegistro", item.FhRegistro);
                    cmdUpdateMatricula.Parameters.AddWithValue("@Becado", item.Becado);
                    cmdUpdateMatricula.Parameters.AddWithValue("@DiaLimite", item.DiaLimite);
                    cmdUpdateMatricula.Parameters.AddWithValue("@IdCurso", item.IdCurso);

                    if (cmdUpdateMatricula.ExecuteNonQuery() <= 0)
                    {
                        result = false;
                    }

                    if (result)
                    {
                        foreach (Detmatricula detMatricula in item.Padres)
                        {
                            if (detMatricula.Id == 0)
                            {
                                if (detMatricula.encargado.Id == 0)
                                {
                                    MySqlCommand cmdInsertPersona = new MySqlCommand("Insert into persona (Nombre,Dui,Nit,Direccion) values (@Nombre, @Dui, @Nit, @Direccion)", _con, _trans);
                                    cmdInsertPersona.Parameters.AddWithValue("@Nombre", detMatricula.encargado.Persona.Nombre);
                                    cmdInsertPersona.Parameters.AddWithValue("@Dui", "");
                                    cmdInsertPersona.Parameters.AddWithValue("@Nit", "");
                                    cmdInsertPersona.Parameters.AddWithValue("@Direccion", detMatricula.encargado.Persona.Direccion);
                                    if (cmdInsertPersona.ExecuteNonQuery() <= 0)
                                    {
                                        result = false;
                                    }
                                    else
                                    {
                                        MySqlCommand cmdUltimoId = new MySqlCommand("select last_insert_id() as id;", _con);
                                        cmdUltimoId.Transaction           = _trans;
                                        detMatricula.encargado.Persona.Id = Convert.ToInt32(cmdUltimoId.ExecuteScalar());
                                        detMatricula.encargado.IdPersona  = Convert.ToInt32(cmdUltimoId.ExecuteScalar());
                                    }

                                    MySqlCommand cmdInsertEncargado = new MySqlCommand("Insert into encargado (LugarTrabajo,Trabajo,Telefono,IdPersona) values (@LugarTrabajo,@Trabajo,@Telefono,@IdPersona)", _con, _trans);
                                    cmdInsertEncargado.Parameters.AddWithValue("@LugarTrabajo", detMatricula.encargado.LugarTrabajo);
                                    cmdInsertEncargado.Parameters.AddWithValue("@Trabajo", detMatricula.encargado.Trabajo);
                                    cmdInsertEncargado.Parameters.AddWithValue("@Telefono", detMatricula.encargado.Telefono);
                                    cmdInsertEncargado.Parameters.AddWithValue("@IdPersona", detMatricula.encargado.IdPersona);

                                    if (cmdInsertEncargado.ExecuteNonQuery() <= 0)
                                    {
                                        result = false;
                                    }
                                    else
                                    {
                                        MySqlCommand cmdUltimoId = new MySqlCommand("select last_insert_id() as id;", _con);
                                        cmdUltimoId.Transaction   = _trans;
                                        detMatricula.IdEncargado  = Convert.ToInt32(cmdUltimoId.ExecuteScalar());
                                        detMatricula.encargado.Id = Convert.ToInt32(cmdUltimoId.ExecuteScalar());
                                    }
                                    MySqlCommand cmdInsertDetMatricula = new MySqlCommand("Insert into detmatricula (Parentesco,IdMatricula,IdEncargado) values (@Parentesco,@IdMatricula,@IdEncargado)", _con, _trans);
                                    cmdInsertDetMatricula.Parameters.AddWithValue("@Parentesco", detMatricula.Parentesco);
                                    cmdInsertDetMatricula.Parameters.AddWithValue("@IdMatricula", item.Id);
                                    cmdInsertDetMatricula.Parameters.AddWithValue("@IdEncargado", detMatricula.IdEncargado);

                                    if (cmdInsertDetMatricula.ExecuteNonQuery() <= 0)
                                    {
                                        result = false;
                                    }
                                    else
                                    {
                                        MySqlCommand cmdUltimoId = new MySqlCommand("select last_insert_id() as id;", _con);
                                        cmdUltimoId.Transaction = _trans;
                                        detMatricula.Id         = Convert.ToInt32(cmdUltimoId.ExecuteScalar());
                                    }
                                }
                                else
                                {
                                    MySqlCommand cmdInsertDetMatricula = new MySqlCommand("Insert into detmatricula (Parentesco,IdMatricula,IdEncargado) values (@Parentesco,@IdMatricula,@IdEncargado)", _con, _trans);
                                    cmdInsertDetMatricula.Parameters.AddWithValue("@Parentesco", detMatricula.Parentesco);
                                    cmdInsertDetMatricula.Parameters.AddWithValue("@IdMatricula", detMatricula.IdMatricula);
                                    cmdInsertDetMatricula.Parameters.AddWithValue("@IdEncargado", detMatricula.IdEncargado);

                                    if (cmdInsertDetMatricula.ExecuteNonQuery() <= 0)
                                    {
                                        result = false;
                                    }
                                    else
                                    {
                                        MySqlCommand cmdUltimoId = new MySqlCommand("select last_insert_id() as id;", _con);
                                        cmdUltimoId.Transaction = _trans;
                                        detMatricula.Id         = Convert.ToInt32(cmdUltimoId.ExecuteScalar());
                                    }
                                }
                            }
                            else
                            {
                                //actualizar persona

                                MySqlCommand cmdUpdatePersonaEnc = new MySqlCommand("update persona set Nombre=@Nombre,Direccion=@Direccion where Id=@Id", _con, _trans);
                                cmdUpdatePersonaEnc.Parameters.AddWithValue("@Id", detMatricula.encargado.Persona.Id);
                                cmdUpdatePersonaEnc.Parameters.AddWithValue("@Nombre", detMatricula.encargado.Persona.Nombre);
                                cmdUpdatePersonaEnc.Parameters.AddWithValue("@Direccion", detMatricula.encargado.Persona.Direccion);
                                if (cmdUpdatePersonaEnc.ExecuteNonQuery() <= 0)
                                {
                                    result = false;
                                }
                                MySqlCommand cmdUpdateEncargado = new MySqlCommand("update encargado set LugarTrabajo=@LugarTrabajo,Trabajo=@Trabajo,Telefono=@Telefono where Id=@Id", _con, _trans);
                                cmdUpdateEncargado.Parameters.AddWithValue("@Id", detMatricula.encargado.Id);
                                cmdUpdateEncargado.Parameters.AddWithValue("@LugarTrabajo", detMatricula.encargado.LugarTrabajo);
                                cmdUpdateEncargado.Parameters.AddWithValue("@Trabajo", detMatricula.encargado.Trabajo);
                                cmdUpdateEncargado.Parameters.AddWithValue("@Telefono", detMatricula.encargado.Telefono);

                                if (cmdUpdateEncargado.ExecuteNonQuery() <= 0)
                                {
                                    result = false;
                                }
                            }
                        }
                    }
                    if (result)
                    {
                        DateTime date  = Convert.ToDateTime(item.FhRegistro);
                        Curso    curso = CursoDAL.getCursoById(item.IdCurso);

                        foreach (Cuota cuota in item.Cuotas)
                        {
                            MySqlCommand cmdInsertCuota = new MySqlCommand("update cuota set FhRegistro=@FhRegistro where Id=@pId", _con, _trans);
                            cmdInsertCuota.Parameters.AddWithValue("@FhRegistro", Convert.ToDateTime(cuota.FhRegistro).ToString("yyyy") + "/" + Convert.ToDateTime(cuota.FhRegistro).ToString("MM") + "/" + (Validation.Validation.getMaxDayMonth(Convert.ToDateTime(cuota.FhRegistro).Month) > Convert.ToInt32(item.DiaLimite) ? item.DiaLimite : Validation.Validation.getMaxDayMonth(Convert.ToDateTime(cuota.FhRegistro).Month).ToString()));

                            cmdInsertCuota.Parameters.AddWithValue("@pId", cuota.Id);

                            if (cmdInsertCuota.ExecuteNonQuery() <= 0)
                            {
                                result = false;
                            }
                        }
                    }
                    if (result)
                    {
                        foreach (Detmatricula detMatricula in matricula.Padres)
                        {
                            if (item.Padres.Where(a => a.Id == detMatricula.Id).FirstOrDefault() == null)
                            {
                                MySqlCommand cmdDeleteDetMatricula = new MySqlCommand("Delete from detmatricula where Id=@pId;", _con, _trans);
                                cmdDeleteDetMatricula.Parameters.AddWithValue("@pId", detMatricula.Id);

                                if (cmdDeleteDetMatricula.ExecuteNonQuery() <= 0)
                                {
                                    result = false;
                                }
                            }
                        }
                    }
                    if (result)
                    {
                        Estudiante   est = matricula.Estudiante;
                        MySqlCommand cmdInsertAuditoria = new MySqlCommand("Insert into regemphist (Detalle,Accion,TipoRegistro,IdUserEmp) values (@Detalle,@Accion,@TipoRegistro,@IdUserEmp)", _con, _trans);
                        cmdInsertAuditoria.Parameters.AddWithValue("@Detalle", "Actualizó la información de inscripción del alumno \"" + est.Persona.Nombre + "\" valores antiguos: \n" +
                                                                   "Nombre: " + est.Persona.Nombre + ", Apellido Paterno: " + est.ApPaterno + ", Apellido Materno: " + est.ApMaterno + ", Fecha de Nacimiento: " + est.Persona.FechaNac + ", " +
                                                                   "Enfermedad: " + est.Enfermedad + ", Dirección: " + est.Persona.Direccion + ", Correo: " + est.Correo + ", Teléfono: " + est.Telefono + ", Teléfono de emergencias: " +
                                                                   est.TelEmergencia + ", Parentesco o nombre: " + est.ParentEmergencia + ", Curso: " + CursoDAL.getCursoById(matricula.IdCurso).Nombre + ", Dia limite de pago: " +
                                                                   matricula.DiaLimite + ", Becado: " + (matricula.Becado == 0 ? "No" : "Si") + (matricula.Padres.Where(a => a.Parentesco == "Padre").FirstOrDefault() == null ? "" : ", Padre:" + matricula.Padres.Where(a => a.Parentesco == "Padre").FirstOrDefault().encargado.Persona.Nombre) +
                                                                   (matricula.Padres.Where(a => a.Parentesco == "Madre").FirstOrDefault() == null ? ".\n" : ", Madre: " + matricula.Padres.Where(a => a.Parentesco == "Madre").FirstOrDefault().encargado.Persona.Nombre) +
                                                                   "Datos Nuevos: \n" +
                                                                   "Nombre: " + item.Estudiante.Persona.Nombre + ", Apellido Paterno: " + item.Estudiante.ApPaterno + ", Apellido Materno: " + item.Estudiante.ApMaterno + ", Fecha de Nacimiento: " + item.Estudiante.Persona.FechaNac + ", " +
                                                                   "Enfermedad: " + item.Estudiante.Enfermedad + ", Dirección: " + item.Estudiante.Persona.Direccion + ", Correo: " + item.Estudiante.Correo + ", Teléfono: " + item.Estudiante.Telefono + ", Teléfono de emergencias: " +
                                                                   item.Estudiante.TelEmergencia + ", Parentesco o nombre: " + item.Estudiante.ParentEmergencia + ", Curso: " + CursoDAL.getCursoById(item.IdCurso).Nombre + ", Dia limite de pago: " +
                                                                   item.DiaLimite + ", Becado: " + (item.Becado == 0 ? "No" : "Si") + (item.Padres.Where(a => a.Parentesco == "Padre").FirstOrDefault() == null ? "" : ", Padre:" + item.Padres.Where(a => a.Parentesco == "Padre").FirstOrDefault().encargado.Persona.Nombre) +
                                                                   (item.Padres.Where(a => a.Parentesco == "Madre").FirstOrDefault() == null ? ".\n" : ", Madre: " + item.Padres.Where(a => a.Parentesco == "Madre").FirstOrDefault().encargado.Persona.Nombre));

                        cmdInsertAuditoria.Parameters.AddWithValue("@Accion", "Actualizar");
                        cmdInsertAuditoria.Parameters.AddWithValue("@TipoRegistro", "Curso");
                        cmdInsertAuditoria.Parameters.AddWithValue("@IdUserEmp", pUser.Id);
                        if (cmdInsertAuditoria.ExecuteNonQuery() <= 0)
                        {
                            result = false;
                        }
                    }

                    if (result)
                    {
                        _trans.Commit();
                    }
                    else
                    {
                        _trans.Rollback();
                    }
                }
                catch (Exception ex)
                {
                    _con.Close();
                    throw ex;
                }
                finally
                {
                    _con.Close();
                }
            }
            return(result);
        }
Ejemplo n.º 4
0
        public static bool insertMatricula(Matricula item, Useremp pUser)
        {
            bool result = true;

            using (MySqlConnection _con = new Conexion().Conectar())
            {
                _con.Open();
                MySqlTransaction _trans = _con.BeginTransaction();
                try
                {
                    if (item.Estudiante.Id == 0)
                    {
                        MySqlCommand cmdInsertPersona = new MySqlCommand("Insert into persona (Nombre,Dui,Nit,FechaNac,Direccion) values (@Nombre,@Dui,@Nit,@FechaNac,@Direccion)", _con, _trans);
                        cmdInsertPersona.Parameters.AddWithValue("@Nombre", item.Estudiante.Persona.Nombre);
                        cmdInsertPersona.Parameters.AddWithValue("@Dui", "");
                        cmdInsertPersona.Parameters.AddWithValue("@Nit", "");
                        cmdInsertPersona.Parameters.AddWithValue("@FechaNac", item.Estudiante.Persona.FechaNac);
                        cmdInsertPersona.Parameters.AddWithValue("@Direccion", item.Estudiante.Persona.Direccion);
                        if (cmdInsertPersona.ExecuteNonQuery() <= 0)
                        {
                            result = false;
                        }
                        else
                        {
                            MySqlCommand cmdUltimoId = new MySqlCommand("select last_insert_id() as id;", _con);
                            cmdUltimoId.Transaction    = _trans;
                            item.Estudiante.Persona.Id = Convert.ToInt32(cmdUltimoId.ExecuteScalar());
                            item.Estudiante.IdPersona  = Convert.ToInt32(cmdUltimoId.ExecuteScalar());
                        }

                        MySqlCommand cmdInsertEstudiante = new MySqlCommand("Insert into estudiante (ApPaterno,ApMaterno,Telefono,Enfermedad,Correo,TelEmergencia,ParentEmergencia,IdPersona) values " +
                                                                            "(@ApPaterno,@ApMaterno,@Telefono,@Enfermedad,@Correo,@TelEmergencia,@ParentEmergencia,@IdPersona)", _con, _trans);
                        cmdInsertEstudiante.Parameters.AddWithValue("@ApPaterno", item.Estudiante.ApPaterno);
                        cmdInsertEstudiante.Parameters.AddWithValue("@ApMaterno", item.Estudiante.ApMaterno);
                        cmdInsertEstudiante.Parameters.AddWithValue("@Telefono", item.Estudiante.Telefono);
                        cmdInsertEstudiante.Parameters.AddWithValue("@Enfermedad", item.Estudiante.Enfermedad);
                        cmdInsertEstudiante.Parameters.AddWithValue("@Correo", item.Estudiante.Correo);
                        cmdInsertEstudiante.Parameters.AddWithValue("@TelEmergencia", item.Estudiante.TelEmergencia);
                        cmdInsertEstudiante.Parameters.AddWithValue("@ParentEmergencia", item.Estudiante.ParentEmergencia);
                        cmdInsertEstudiante.Parameters.AddWithValue("@IdPersona", item.Estudiante.IdPersona);

                        if (cmdInsertEstudiante.ExecuteNonQuery() <= 0)
                        {
                            result = false;
                        }
                        else
                        {
                            MySqlCommand cmdUltimoId = new MySqlCommand("select last_insert_id() as id;", _con);
                            cmdUltimoId.Transaction = _trans;
                            item.IdEstudiante       = Convert.ToInt32(cmdUltimoId.ExecuteScalar());
                            item.Estudiante.Id      = Convert.ToInt32(cmdUltimoId.ExecuteScalar());
                        }
                    }

                    if (result)
                    {
                        MySqlCommand cmdInsertMatricula = new MySqlCommand("Insert into matricula (FhRegistro,Becado,DiaLimite,IdCurso,IdEstudiante) values (@FhRegistro,@Becado,@DiaLimite,@IdCurso,@IdEstudiante)", _con, _trans);
                        cmdInsertMatricula.Parameters.AddWithValue("@FhRegistro", item.FhRegistro);
                        cmdInsertMatricula.Parameters.AddWithValue("@Becado", item.Becado);
                        cmdInsertMatricula.Parameters.AddWithValue("@DiaLimite", item.DiaLimite);
                        cmdInsertMatricula.Parameters.AddWithValue("@IdCurso", item.IdCurso);
                        cmdInsertMatricula.Parameters.AddWithValue("@IdEstudiante", item.Estudiante.Id);

                        if (cmdInsertMatricula.ExecuteNonQuery() <= 0)
                        {
                            result = false;
                        }
                        else
                        {
                            MySqlCommand cmdUltimoId = new MySqlCommand("select last_insert_id() as id;", _con);
                            cmdUltimoId.Transaction = _trans;
                            item.Id = Convert.ToInt32(cmdUltimoId.ExecuteScalar());
                        }
                    }
                    if (result)
                    {
                        foreach (Detmatricula detMatricula in item.Padres)
                        {
                            if (detMatricula.IdEncargado == 0)
                            {
                                MySqlCommand cmdInsertPersona = new MySqlCommand("Insert into persona (Nombre,Dui,Nit,Direccion) values (@Nombre,@Dui,@Nit,@Direccion)", _con, _trans);
                                cmdInsertPersona.Parameters.AddWithValue("@Nombre", detMatricula.encargado.Persona.Nombre);
                                cmdInsertPersona.Parameters.AddWithValue("@Dui", "");
                                cmdInsertPersona.Parameters.AddWithValue("@Nit", "");
                                cmdInsertPersona.Parameters.AddWithValue("@Direccion", detMatricula.encargado.Persona.Direccion);
                                if (cmdInsertPersona.ExecuteNonQuery() <= 0)
                                {
                                    result = false;
                                }
                                else
                                {
                                    MySqlCommand cmdUltimoId = new MySqlCommand("select last_insert_id() as id;", _con);
                                    cmdUltimoId.Transaction           = _trans;
                                    detMatricula.encargado.Persona.Id = Convert.ToInt32(cmdUltimoId.ExecuteScalar());
                                    detMatricula.encargado.IdPersona  = Convert.ToInt32(cmdUltimoId.ExecuteScalar());
                                }

                                MySqlCommand cmdInsertEncargado = new MySqlCommand("Insert into encargado (LugarTrabajo,Trabajo,Telefono,IdPersona) values (@LugarTrabajo,@Trabajo,@Telefono,@IdPersona)", _con, _trans);
                                cmdInsertEncargado.Parameters.AddWithValue("@LugarTrabajo", detMatricula.encargado.LugarTrabajo);
                                cmdInsertEncargado.Parameters.AddWithValue("@Trabajo", detMatricula.encargado.Trabajo);
                                cmdInsertEncargado.Parameters.AddWithValue("@Telefono", detMatricula.encargado.Telefono);
                                cmdInsertEncargado.Parameters.AddWithValue("@IdPersona", detMatricula.encargado.IdPersona);

                                if (cmdInsertEncargado.ExecuteNonQuery() <= 0)
                                {
                                    result = false;
                                }
                                else
                                {
                                    MySqlCommand cmdUltimoId = new MySqlCommand("select last_insert_id() as id;", _con);
                                    cmdUltimoId.Transaction   = _trans;
                                    detMatricula.IdEncargado  = Convert.ToInt32(cmdUltimoId.ExecuteScalar());
                                    detMatricula.encargado.Id = Convert.ToInt32(cmdUltimoId.ExecuteScalar());
                                }
                            }
                            MySqlCommand cmdInsertDetMatricula = new MySqlCommand("Insert into detmatricula (Parentesco,IdMatricula,IdEncargado) values (@Parentesco,@IdMatricula,@IdEncargado)", _con, _trans);
                            cmdInsertDetMatricula.Parameters.AddWithValue("@Parentesco", detMatricula.Parentesco);
                            cmdInsertDetMatricula.Parameters.AddWithValue("@IdMatricula", item.Id);
                            cmdInsertDetMatricula.Parameters.AddWithValue("@IdEncargado", detMatricula.IdEncargado);

                            if (cmdInsertDetMatricula.ExecuteNonQuery() <= 0)
                            {
                                result = false;
                            }
                            else
                            {
                                MySqlCommand cmdUltimoId = new MySqlCommand("select last_insert_id() as id;", _con);
                                cmdUltimoId.Transaction = _trans;
                                detMatricula.Id         = Convert.ToInt32(cmdUltimoId.ExecuteScalar());
                            }
                        }
                    }
                    DateTime date    = Convert.ToDateTime(item.FhRegistro);
                    Curso    curso   = CursoDAL.getCursoById(item.IdCurso);
                    int      nCuotas = Math.Abs((Convert.ToDateTime(curso.Hasta).Month - Convert.ToDateTime(item.FhRegistro).Month) + 12 * (Convert.ToDateTime(curso.Hasta).Year - Convert.ToDateTime(item.FhRegistro).Year)) + 1;
                    for (int i = 0; i < nCuotas; i++)
                    {
                        MySqlCommand cmdInsertCuota = new MySqlCommand("Insert into cuota (FhRegistro,Precio,Total,IdMatricula) values (@FhRegistro,@Precio,@Total,@IdMatricula)", _con, _trans);
                        cmdInsertCuota.Parameters.AddWithValue("@FhRegistro", date.AddMonths(i).ToString("yyyy") + "/" + date.AddMonths(i).ToString("MM") + "/" + (Validation.Validation.getMaxDayMonth(Convert.ToInt32(date.AddMonths(i).ToString("MM"))) > Convert.ToInt32(item.DiaLimite) ? item.DiaLimite : Validation.Validation.getMaxDayMonth(Convert.ToInt32(date.AddMonths(i).ToString("MM"))).ToString()));
                        cmdInsertCuota.Parameters.AddWithValue("@Precio", Properties.Settings.Default.PrecioCuota);
                        cmdInsertCuota.Parameters.AddWithValue("@Total", "0.00");
                        cmdInsertCuota.Parameters.AddWithValue("@IdMatricula", item.Id);

                        if (cmdInsertCuota.ExecuteNonQuery() <= 0)
                        {
                            result = false;
                        }
                    }
                    if (result)
                    {
                        MySqlCommand cmdInsertAuditoria = new MySqlCommand("Insert into regemphist (Detalle,Accion,TipoRegistro,IdUserEmp) values (@Detalle,@Accion,@TipoRegistro,@IdUserEmp)", _con, _trans);
                        cmdInsertAuditoria.Parameters.AddWithValue("@Detalle", "Inscribio al estudiante \"" + item.Estudiante.Persona.Nombre + "\" en el curso \"" + CursoDAL.getCursoById(item.IdCurso).Nombre + "\"" +
                                                                   (item.Padres.Where(a => a.Parentesco == "Madre").FirstOrDefault() == null ? "" : ", selecciono a \"" + item.Padres.Where(a => a.Parentesco == "Madre").FirstOrDefault().encargado.Persona.Nombre + "\"" +
                                                                    (item.Padres.Where(a => a.Parentesco == "Padre").FirstOrDefault() == null ? "." : " y a \"" + item.Padres.Where(a => a.Parentesco == "Padre").FirstOrDefault().encargado.Persona.Nombre + "\" como su padre.")));
                        cmdInsertAuditoria.Parameters.AddWithValue("@Accion", "Registrar");
                        cmdInsertAuditoria.Parameters.AddWithValue("@TipoRegistro", "Inscripcion");
                        cmdInsertAuditoria.Parameters.AddWithValue("@IdUserEmp", pUser.Id);
                        if (cmdInsertAuditoria.ExecuteNonQuery() <= 0)
                        {
                            result = false;
                        }
                    }

                    if (result)
                    {
                        _trans.Commit();
                    }
                    else
                    {
                        _trans.Rollback();
                    }
                }
                catch (Exception ex)
                {
                    _con.Close();
                    throw ex;
                }
                finally
                {
                    _con.Close();
                }
            }
            return(result);
        }