// Calcular mensualidad de profesor public static double calcularMensualidadProfesor(List <int> allCourses) { double precioMensual = 0.0; Conexion con = new Conexion(); con.Abrir(); // Recorre todos los cursos del profesor foreach (int idCurso in allCourses) { double horasTotal = 0.0; // Almacena la cantidad de alumnos apuntados al curso int alumnosApuntados = 0; // Primero selecciona todos los alumnos apuntados a dicho curso string query = "select * from `cursoalumno` WHERE `IDCurso` = " + idCurso; MySqlCommand comand = con.Comando(query); MySqlDataReader myReader = comand.ExecuteReader(); DataTable tablaCantidadAlumnos = new DataTable(); tablaCantidadAlumnos.Load(myReader); myReader.Close(); // Calcula la cantidad de alumnos apuntados alumnosApuntados = tablaCantidadAlumnos.Rows.Count; // Carga todos los horarios de el curso recorrido string queryHorario = "select * from `cursoaula` WHERE `IDCurso` = " + idCurso; MySqlCommand comandHorario = con.Comando(queryHorario); MySqlDataReader myReaderHorario = comandHorario.ExecuteReader(); DataTable cursoAula = new DataTable(); cursoAula.Load(myReaderHorario); myReader.Close(); foreach (DataRow row in cursoAula.Rows) { DateTime comienzo = Convert.ToDateTime(row["comienzo"].ToString()); DateTime fin = Convert.ToDateTime(row["fin"].ToString()); // Si el horario pertenece al mes actual entonces lo aniade if (comienzo.Month == DateTime.Today.Month) { TimeSpan result = fin.Subtract(comienzo); horasTotal += result.TotalHours; } } // Obtiene tipo precio del curso especificado y lo multiplica por las horas totales string queryPrecio = "select `tipoCurso` from `curso` WHERE ID = " + idCurso; MySqlCommand comandPrecio = con.Comando(queryPrecio); MySqlDataReader myReaderPrecio = comandPrecio.ExecuteReader(); DataTable precio = new DataTable(); precio.Load(myReaderPrecio); myReaderPrecio.Close(); double precioHora = IDtoTEXT.GetPrecioFromIDInPrecio(int.Parse(precio.Rows[0]["tipoCurso"].ToString())); // precioMensual = horasTotal * precio/hora precioMensual += (horasTotal * precioHora * alumnosApuntados); } // Multiplica por gananciaProfesores precioMensual = precioMensual * (double.Parse(Utils.cargarGananciaProfesores()) / 100); return(precioMensual); }
// *** Calcula precio total de un curso y lo actualiza *** public static void CalcularPrecioCurso(int idCurso) { double precioTotal = 0.0; double horasTotal = 0.0; Conexion con = new Conexion(); con.Abrir(); string query = "select * from `cursoaula`"; MySqlCommand comand = con.Comando(query); MySqlDataReader myReader = comand.ExecuteReader(); DataTable cursoAula = new DataTable(); cursoAula.Load(myReader); myReader.Close(); foreach (DataRow row in cursoAula.Rows) { // Si es el curso especificado calcula las horas totales if (idCurso == int.Parse(row["IDCurso"].ToString())) { DateTime comienzo = Convert.ToDateTime(row["comienzo"].ToString()); DateTime fin = Convert.ToDateTime(row["fin"].ToString()); TimeSpan result = fin.Subtract(comienzo); horasTotal += result.TotalHours; } } // Obtiene tipo precio del curso especificado y lo multiplica por las horas totales string queryPrecio = "select `tipoCurso` from `curso` WHERE ID = " + idCurso; MySqlCommand comandPrecio = con.Comando(queryPrecio); MySqlDataReader myReaderPrecio = comandPrecio.ExecuteReader(); DataTable precio = new DataTable(); precio.Load(myReaderPrecio); myReaderPrecio.Close(); double precioHora = IDtoTEXT.GetPrecioFromIDInPrecio(int.Parse(precio.Rows[0]["tipoCurso"].ToString())); // precioTotal = horasTotal * precio/hora precioTotal = horasTotal * precioHora; // Actualiza el precio en el curso string queryUpdatePrecio = "UPDATE `curso` SET `precio` = '" + precioTotal.ToString().Replace(',', '.') + "' WHERE `curso`.`ID` = " + idCurso + ";"; MySqlCommand comandUpdatePrecio = con.Comando(queryUpdatePrecio); MySqlDataReader myReaderUpdatePrecio = comandUpdatePrecio.ExecuteReader(); myReaderUpdatePrecio.Close(); con.Cerrar(); // Actualiza todos los alumnos apuntados al curso ActualizaPagosPendientesAlumnos(idCurso); // Actualiza el cobro mensual del profesor que imparte el curso especificado ActualizaPagosProfesores(idCurso); }