/// <summary> /// Registra una fase, con todos sus atributos en la base de datos /// </summary> private static void registrarUnaFase(SqlConnection con, SqlTransaction trans, SqlCommand cmd, Fase fase) { if (fase != null && fase.estado.idEstado != Estado.faseFINALIZADA) { string sql = @"INSERT INTO Fases (idFase, idEdicion, tipoFixture, idEstado, cantidadEquipos, cantidadGrupos) VALUES (@idFase, @idEdicion, @tipoFixture, @idEstado, @cantidadEquipos, @cantidadGrupos)"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@idFase", fase.idFase); cmd.Parameters.AddWithValue("@idEdicion", fase.idEdicion); cmd.Parameters.AddWithValue("@tipoFixture", fase.tipoFixture.idTipoFixture); cmd.Parameters.AddWithValue("@idEstado", fase.esGenerica ? Estado.faseREGISTRADA : Estado.faseDIAGRAMADA); if (fase.esGenerica) { cmd.Parameters.AddWithValue("@cantidadEquipos", fase.equipos.Count); cmd.Parameters.AddWithValue("@cantidadGrupos", fase.grupos.Count); } else { cmd.Parameters.AddWithValue("@cantidadEquipos", DBNull.Value); cmd.Parameters.AddWithValue("@cantidadGrupos", DBNull.Value); } cmd.CommandText = sql; cmd.ExecuteNonQuery(); if (fase.grupos.Count != 0 && !fase.esGenerica) { DAOGrupo daoGrupo = new DAOGrupo(); daoGrupo.registrarGrupos(fase, con, trans); DAOFecha daoFecha = new DAOFecha(); daoFecha.registrarFechas(fase, con, trans); DAOPartido daoPartido = new DAOPartido(); daoPartido.registrarPartidos(fase, con, trans); } } }
/// <summary> /// Cierra la fase anterior a la actual, y actualiza todas las fases posteriores segun lo haya configurado el usuario. /// </summary> /// <param name="edicion">La edicion que contiene las fases a modificar</param> /// <param name="idFaseActual">El numero de fase que acaba de crear el usuario.</param> public void cerrarFaseYActualizarPosteriores(Edicion edicion, int idFaseActual) { SqlConnection con = new SqlConnection(cadenaDeConexion); SqlCommand cmd = new SqlCommand(); SqlTransaction trans = null; try { if (con.State == ConnectionState.Closed) { con.Open(); } trans = con.BeginTransaction(); cmd.Connection = con; cmd.Transaction = trans; DAOPartido daoPartido = new DAOPartido(); DAOFecha daoFecha = new DAOFecha(); cerrarFase(idFaseActual - 1, edicion.idEdicion, cmd); daoPartido.cambiarEstadosAPartidos(Estado.partidoCANCELADO, edicion.idEdicion, idFaseActual - 1, cmd); daoFecha.cambiarEstadosAFechas(Estado.fechaCOMPLETA, edicion.idEdicion, idFaseActual - 1, cmd); actualizarFasesPosteriores(edicion.fases, idFaseActual, cmd); trans.Commit(); } catch (Exception ex) { cmd.Transaction.Rollback(); throw new Exception("No se pudo cambiar el estado de la Fase: " + ex.Message); } finally { if (con != null && con.State == ConnectionState.Open) { con.Close(); } } }
/// <summary> /// Obtiene las fases de una edición por Id. Obteniendo solo los valores necesarios para mostrar la informacion básica de la fase y sus equipos. /// autor: Antonio Herrera /// </summary> public List <Fase> obtenerFasesReducidas(int idEdicion) { SqlConnection con = new SqlConnection(cadenaDeConexion); SqlCommand cmd = new SqlCommand(); SqlDataReader dr; List <Fase> fases = new List <Fase>(); DAOGrupo daoGrupo = new DAOGrupo(); DAOFecha daoFecha = new DAOFecha(); DAOPartido daoPartido = new DAOPartido(); try { if (con.State == ConnectionState.Closed) { con.Open(); } cmd.Connection = con; string sql = @"SELECT * FROM Fases WHERE idEdicion = @idEdicion"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@idEdicion", idEdicion); cmd.CommandText = sql; dr = cmd.ExecuteReader(); while (dr.Read()) { Fase fase = new Fase() { idFase = int.Parse(dr["idFase"].ToString()), idEdicion = idEdicion, estado = new Estado() { idEstado = int.Parse(dr["idEstado"].ToString()) }, tipoFixture = new TipoFixture(dr["tipoFixture"].ToString()), equipos = new List <Equipo>(), cantidadDeEquipos = (dr["cantidadEquipos"] != DBNull.Value) ? int.Parse(dr["cantidadEquipos"].ToString()) : 0, cantidadDeGrupos = (dr["cantidadGrupos"] != DBNull.Value) ? int.Parse(dr["cantidadGrupos"].ToString()) : 0, esGenerica = (dr["cantidadEquipos"] != DBNull.Value) // si el valor del campo cantidadEquipos no es Null, entonecs se trata de una fase generica. }; fases.Add(fase); } if (dr != null) { dr.Close(); } foreach (Fase fase in fases) { if (!fase.esGenerica) { daoGrupo.obtenerGrupos(fase, con, false); foreach (Grupo grupo in fase.grupos) { fase.equipos.AddRange(grupo.equipos); } } } return(fases); } catch (Exception ex) { throw new Exception("Error al intentar recuperar las fases de una Edición: " + ex.Message); } finally { if (con != null && con.State == ConnectionState.Open) { con.Close(); } } }