Beispiel #1
0
        /*Obtiene los generos de una banda especifica
         */
        public List <generos> obtenerGenerosBanda(bandas banda)
        {
            List <generos> obj = new List <generos>();

            try
            {
                using (myconcertEntities context = new myconcertEntities())
                {
                    var aType = context.generos.Join(context.generosbanda,
                                                     g => g.PK_generos,
                                                     gb => gb.FK_GENEROSBANDA_GENEROS,
                                                     (g, gb) => new { g, gb })
                                .Where(f => f.gb.FK_GENEROSBANDA_BANDAS == banda.PK_bandas).
                                Select(s => new { PK_generos = s.g.PK_generos,
                                                  genero     = s.g.genero }).ToList();

                    foreach (var i in aType)
                    {
                        obj.Add(context.generos.FirstOrDefault(g => g.PK_generos == i.PK_generos));
                    }
                }
            }
            catch (Exception ex)
            {
                throw (ex);
            }
            return(obj);
        }
        public bool comprobarBandaEnCartelera(DateTime fInicial, DateTime fFinal, bandas banda)
        {
            int conteo = 0;;

            try
            {
                using (myconcertEntities context = new myconcertEntities())
                {
                    conteo = context.eventos.Join(context.categoriasevento,
                                                  e => e.PK_eventos,
                                                  ce => ce.FK_CATEGORIASEVENTO_EVENTOS,
                                                  (e, ce) => new { e, ce })
                             .Where(w => w.ce.FK_CATEGORIASEVENTO_BANDAS == banda.PK_bandas)
                             .Select(s => s.e)
                             .Count(c => c.fechaInicio <fInicial && c.fechaFinal> fInicial || c.fechaInicio <fFinal && c.fechaFinal> fFinal);
                }
                if (conteo == 0)
                {
                    return(false);
                }
                else
                {
                    return(true);
                }
            }
            catch (Exception e)
            {
                throw (e);
            }
        }
Beispiel #3
0
        public bandas updatebandas(Banda pBanda)
        {
            string nombre = pBanda.Nombre;
            int    estado = _manejadorDB.obtenerEstado(pBanda.Estado).PK_estados;
            bandas ban    = new bandas();

            ban.FK_BANDAS_ESTADOS = estado;
            ban.nombreBan         = nombre;
            return(ban);
        }
Beispiel #4
0
        public Banda createBanda(bandas pBanda)
        {
            int    id           = pBanda.PK_bandas;
            string nombre       = pBanda.nombreBan;
            float  calificacion = _manejadorDB.getCalificacion(pBanda);
            string estado       = _manejadorDB.obtenerEstado(pBanda.FK_BANDAS_ESTADOS).estado;
            Banda  ban          = new Banda(id, nombre, calificacion, estado);

            return(ban);
        }
Beispiel #5
0
 //Conseguir bandas no seleccionadas de una cartelera convertida a festival
 public List <bandas> extraerBandasNoSeleccionadas(List <bandas> bandasGanadorasFestival, List <bandas> todasBandasCartelera)
 {
     foreach (bandas bandaGanadora in bandasGanadorasFestival)
     {
         bandas bandaEliminar = todasBandasCartelera.Find(x => x.nombreBan.Equals(bandaGanadora.nombreBan));
         if (bandaEliminar != null)
         {
             todasBandasCartelera.Remove(bandaEliminar);
         }
     }
     return(todasBandasCartelera);
 }
Beispiel #6
0
 //Comprueba si banda esta en lista
 public bool existeEnLista(List <bandas> lista, bandas pBanda)
 {
     foreach (bandas bandActual in lista)
     {
         if (pBanda.nombreBan == bandActual.nombreBan)
         {
             //Retorna que banda se encuentra en lista
             return(true);
         }
     }
     //Retorna que banda no está en la lista
     return(false);
 }
Beispiel #7
0
        //Registrar nueva banda en el sistema
        public Respuesta nuevaBanda(string pNombre, JArray pMiembros,
                                    JArray pCanciones, JArray pGeneros)
        {
            Respuesta respuesta = null;
            Banda     banda     = new Banda(pNombre, _manejador.obtenerEstado(1).estado);

            string[] miembros = _serial.getArrayString(pMiembros);
            if (miembros.Length < 1)
            {
                return(_fabricaRespuestas.crearRespuesta(false, "Debe ingresar al menos un integrante de banda."));
            }

            string[] canciones = _serial.getArrayString(pCanciones);
            if (canciones.Length < 3)
            {
                return(_fabricaRespuestas.crearRespuesta(false, "Error, se ingresaron menos de las 3 canciones mínimas para banda nueva. Por favor intente nuevo."));
            }
            else if (canciones.Length > 10)
            {
                return(_fabricaRespuestas.crearRespuesta(false, "Error, se ingresaron más de 10 canciones máximas. Por favor intente con menos."));
            }

            int[] generos = _serial.getArrayInt(pGeneros);
            if (generos.Length > 10 || generos.Length < 1)
            {
                return(_fabricaRespuestas.crearRespuesta(false, "Error: Se deben seleccionar de 1 a 10 géneros musicales. Por favor intente con 10 o menos."));
            }

            //Almacena banda nueva
            try
            {
                bandas bandaNueva = _manejador.obtenerBanda(banda.Nombre);
                if (bandaNueva != null)
                {
                    return(_fabricaRespuestas.crearRespuesta(false, "Error: Banda ya existente. Por favor intente de nuevo."));
                }

                _manejador.añadirBanda(_convertidor.updatebandas(banda),
                                       _convertidor.updateintegrantes(miembros),
                                       _convertidor.updatecanciones(canciones),
                                       _convertidor.updateListaGeneros(generos));
                respuesta = _fabricaRespuestas.crearRespuesta(true, "Banda registrada correctamente.");
            } catch (Exception)
            {
                //Retorna respuesta de error
                respuesta = _fabricaRespuestas.crearRespuesta(false, "Fallo al ingresar banda o banda ya existente.");
                //respuesta = _fabricaRespuestas.crearRespuesta(false, "Fallo al ingresar banda o banda ya esxistente.", e.ToString());
            }

            return(respuesta);
        }
Beispiel #8
0
        /*Obtiene una banda del nombre deseado
         */
        public bandas obtenerBanda(string banda)
        {
            bandas obj = null;

            try
            {
                using (myconcertEntities context = new myconcertEntities())
                {
                    obj = context.bandas.FirstOrDefault(r => r.nombreBan == banda);
                }
            }
            catch (Exception ex)
            {
                throw (ex);
            }
            return(obj);
        }
Beispiel #9
0
        /*Obtiene los comentarios de una banda especifica
         */
        public List <comentarios> obtenerComentarios(bandas banda)
        {
            List <comentarios> obj = null;

            try
            {
                using (myconcertEntities context = new myconcertEntities())
                {
                    obj = context.comentarios.Where(i => i.FK_COMENTARIOS_BANDAS == banda.PK_bandas).ToList();
                }
            }
            catch (Exception ex)
            {
                throw (ex);
            }
            return(obj);
        }
Beispiel #10
0
        /*Obtiene los integrantes de una banda especifica
         */
        public List <integrantes> obtenerIntegrantes(bandas banda)
        {
            List <integrantes> obj = null;

            try
            {
                using (myconcertEntities context = new myconcertEntities())
                {
                    obj = context.integrantes.Where(i => i.FK_INTEGRANTES_BANDAS == banda.PK_bandas).ToList();
                }
            }
            catch (Exception ex)
            {
                throw (ex);
            }
            return(obj);
        }
Beispiel #11
0
        /*Obtiene la lista de canciones de una banda especifica
         */
        public List <canciones> obtenerCanciones(bandas banda)
        {
            List <canciones> obj = null;

            try
            {
                using (myconcertEntities context = new myconcertEntities())
                {
                    obj = context.canciones.Where(r => r.FK_CANCIONES_BANDAS == banda.PK_bandas).ToList();
                }
            }
            catch (Exception ex)
            {
                throw (ex);
            }
            return(obj);
        }
        /*
         */
        public float getCalificacion(bandas banda)
        {
            float calificacion = 0;

            try
            {
                using (myconcertEntities context = new myconcertEntities())
                {
                    calificacion = (float)context.comentarios.Where(r => r.FK_COMENTARIOS_BANDAS == banda.PK_bandas).Average(r => r.calificacion);
                }
                return(calificacion);
            }
            catch (Exception)
            {
                return(calificacion);
            }
        }
        /*
         */
        public int getCantidadComentarios(bandas banda)
        {
            int cantidadComen = 0;

            try
            {
                using (myconcertEntities context = new myconcertEntities())
                {
                    cantidadComen = context.comentarios.Count(r => r.FK_COMENTARIOS_BANDAS == banda.PK_bandas);
                }
            }
            catch (Exception ex)
            {
                throw (ex);
            }
            return(cantidadComen);
        }
Beispiel #14
0
    {   //DB = base de datos
        /*Añade una banda a la DB
         * Realiza una transacción en caso de que alguna solicitud falle, de esta manera solo añade la banda si todos
         * los demas elementos que pertenecen a la banda son añadidos
         */
        public void añadirBanda(bandas banda, List <integrantes> integ, List <canciones> can, List <generos> gen)
        {
            using (myconcertEntities context = new myconcertEntities())
            {
                using (var dbContextTransaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        banda = context.bandas.Add(banda);

                        foreach (integrantes i in integ)
                        {
                            i.FK_INTEGRANTES_BANDAS = banda.PK_bandas;
                            context.integrantes.Add(i);
                        }
                        foreach (canciones c in can)
                        {
                            c.FK_CANCIONES_BANDAS = banda.PK_bandas;
                            context.canciones.Add(c);
                        }
                        foreach (generos g in gen)
                        {
                            generosbanda gB = new generosbanda
                            {
                                FK_GENEROSBANDA_BANDAS  = banda.PK_bandas,
                                FK_GENEROSBANDA_GENEROS = g.PK_generos
                            };

                            context.generosbanda.Add(gB);
                        }

                        context.SaveChanges();
                        dbContextTransaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        dbContextTransaction.Rollback();
                        throw (ex);
                    }
                }
            }
        }
Beispiel #15
0
        public void extraerBandasNoSeleccionadasTest()
        {
            List <bandas> listaTotal = new List <bandas>();
            bandas        banda1     = new bandas();
            bandas        banda2     = new bandas();

            banda1.nombreBan = "Romare";
            banda2.nombreBan = "Nicolas Jaar";
            listaTotal.Add(banda1);
            listaTotal.Add(banda2);

            List <bandas> listaGanadores = new List <bandas>();
            bandas        banda3         = new bandas();

            banda3.nombreBan = "Romare";
            listaGanadores.Add(banda3);

            List <bandas> listaPerdedores = _model.extraerBandasNoSeleccionadas(listaGanadores, listaTotal);

            Assert.AreEqual(listaPerdedores[0].nombreBan, banda2.nombreBan);
        }
Beispiel #16
0
        public void bandasToStringTest()
        {
            List <bandas> lista  = new List <bandas>();
            bandas        banda1 = new bandas();
            bandas        banda2 = new bandas();

            banda1.nombreBan = "Romare";
            banda2.nombreBan = "Nicolas Jaar";
            lista.Add(banda1);
            lista.Add(banda2);
            bandas[] arrayBanda = lista.ToArray();

            List <string> listaRespuesta = _model.bandasToString(lista);

            string[] arrayString = listaRespuesta.ToArray();

            for (int i = 0; i < arrayBanda.Length; i++)
            {
                StringAssert.Equals(arrayBanda[i], arrayString[i]);
            }
        }
Beispiel #17
0
        public eventos updateeventos(Festival pEvento)
        {
            eventos event_feste = new eventos();

            event_feste.PK_eventos        = pEvento.Id;
            event_feste.nombreEve         = pEvento.Nombre;
            event_feste.ubicacion         = pEvento.Ubicacion;
            event_feste.FK_EVENTOS_PAISES = _manejadorDB.obtenerPais(pEvento.Pais).PK_paises;
            event_feste.fechaInicio       = pEvento.FechaInicioFestival;
            event_feste.fechaFinal        = pEvento.FechaInicioFestival;
            event_feste.ubicacion         = pEvento.Ubicacion;
            event_feste.transporte        = pEvento.Transporte;
            event_feste.servicios         = pEvento.Servicios;
            event_feste.comida            = pEvento.Comida;
            bandas banda = _manejadorDB.obtenerBanda(pEvento.RecomendacionChef);

            event_feste.FK_EVENTOS_BANDAS_CHEF  = banda == null ? 0 : banda.PK_bandas;
            event_feste.FK_EVENTOS_TIPOSEVENTOS = _manejadorDB.obtenerTipoEvento(pEvento.TipoEvento).PK_tiposEventos;
            event_feste.FK_EVENTOS_ESTADOS      = _manejadorDB.obtenerEstado(pEvento.Estado).PK_estados;

            return(event_feste);
        }
        /*
         */

        public List <bandas> obtenerBandasNoCartelera(eventos cartelera)
        {
            List <bandas> bandasCarte = null;
            string        query       = @"SELECT B.PK_bandas, B.nombreBan, B.FK_BANDAS_ESTADOS " +
                                        "FROM bandas as B INNER JOIN categoriasevento as CE " +
                                        "on CE.FK_CATEGORIASEVENTO_BANDAS = B.PK_bandas " +
                                        "where CE.FK_CATEGORIASEVENTO_EVENTOS = ?PK_eventos";

            MySqlParameter[] parameters =
            {
                new MySqlParameter("?PK_eventos", cartelera.PK_eventos)
            };
            List <bandas> bandasTotal = null;

            try
            {
                using (myconcertEntities context = new myconcertEntities())
                {
                    bandasCarte = context.bandas.SqlQuery(query, parameters).ToList <bandas>();

                    bandasTotal = context.bandas.ToList();
                    foreach (bandas bandaCartelera in bandasCarte)
                    {
                        bandas bandaEliminar = bandasTotal.Find(x => x.nombreBan.Equals(bandaCartelera.nombreBan));
                        if (bandaEliminar != null)
                        {
                            bandasTotal.Remove(bandaEliminar);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw (ex);
            }
            return(bandasTotal);
        }
Beispiel #19
0
        //Crear evento nuevo
        public Respuesta crearEvento(string pTipoEvento, JObject pDatosEventoJSON, JArray pListaCategorias)
        {
            Respuesta respuesta = null;

            try
            {
                string nombreEvento = null;
                switch (pTipoEvento)
                {
                //Si el evento a crear es una cartelera
                case "cartelera":
                    //Verificar si cartelera existe
                    Cartelera nuevaCartelera = _serial.leerDatosCartelera(pDatosEventoJSON);
                    nombreEvento = nuevaCartelera.Nombre;
                    eventos eveAux = _manejador.obtenerEvento(nuevaCartelera.Nombre);
                    if (eveAux != null)
                    {
                        return(_fabricaRespuestas.crearRespuesta(false, "Error: Evento ya existente. Intentar de nuevo por favor."));
                    }

                    //Verificar que existan categorias en la cartelera
                    FestivalCategoriaBanda[] categoriasSerial = _serial.getArrayFestivalCategoriaBanda(pListaCategorias);
                    if (categoriasSerial.Length == 0)
                    {
                        return(_fabricaRespuestas.crearRespuesta(false, "No se puede crear cartelera sin categorías. Por favor intente de nuevo."));
                    }

                    //Organiza información para envío
                    List <categoriasevento> categoriasEvento = _convertidor.updatecategoriasevento(categoriasSerial);

                    //Verificar existencia de bandas en categoria
                    foreach (categoriasevento catEve in categoriasEvento)
                    {
                        if (_manejador.obtenerBanda(catEve.FK_CATEGORIASEVENTO_BANDAS) == null)
                        {
                            string nombreCategoria = _manejador.obtenerCategoria(catEve.FK_CATEGORIASEVENTO_CATEGORIAS).categoria;
                            return(_fabricaRespuestas.crearRespuesta(false, "No se puede crear una cartelera si " + nombreCategoria
                                                                     + " no tiene bandas asociadas. Por favor intente de nuevo."));
                        }
                        bandas bandaAuxiliar = _manejador.obtenerBanda(catEve.FK_CATEGORIASEVENTO_BANDAS);
                        if (_manejador.comprobarBandaEnCartelera(nuevaCartelera.FechaInicioFestival, nuevaCartelera.FechaFinalFestival, bandaAuxiliar))
                        {
                            return(_fabricaRespuestas.crearRespuesta(false, "La banda " + bandaAuxiliar.nombreBan + " no se encuentra disponible para las fechas indicadas."));
                        }
                    }

                    //Almacena nuevo evento en persistencia
                    _manejador.añadirCartelera(_convertidor.updateeventos(nuevaCartelera), categoriasEvento);

                    //Publicar tweets de bandas agregadas a evento
                    publicarBandasTwitter(nombreEvento, categoriasEvento);

                    //Operación completada
                    respuesta = _fabricaRespuestas.crearRespuesta(true, "Cartelera creada exitosamente.");
                    break;

                //Si el evento a crear es un festival
                case "festival":
                    //Verificar si festival existe
                    Festival nuevoFestival = _serial.leerDatosFestival(pDatosEventoJSON);
                    eventos  eveAux1       = _manejador.obtenerEvento(nuevoFestival.Nombre);
                    if (eveAux1 == null)
                    {
                        return(_fabricaRespuestas.crearRespuesta(false, "Error: Cartelera no existente. Intentar de nuevo por favor. Se necesita partir de una cartelera para convertir a festival."));
                    }

                    FestivalCategoriaBanda[] categoriasFestival = _serial.getArrayFestivalCategoriaBanda(pListaCategorias);

                    eventos nuevoEvento = _convertidor.updateeventos(nuevoFestival);


                    //Organiza la información para envío
                    List <bandas>     bandasGanadorasFestival = parseBandas(categoriasFestival);
                    List <categorias> categoriasCartelera     = _manejador.obtenerCategoriasEvento(nuevoEvento.PK_eventos);
                    List <bandas>     todasBandasCartelera    = extraerBandasEvento(nuevoEvento, categoriasCartelera);

                    List <bandas> bandasPerdedoras = extraerBandasNoSeleccionadas(bandasGanadorasFestival, todasBandasCartelera);

                    Console.WriteLine("*** Cartelera ***");
                    printList(todasBandasCartelera);

                    Console.WriteLine("*** Ganadoras ***");
                    printList(bandasGanadorasFestival);

                    Console.WriteLine("*** Perdedoras ***");
                    printList(bandasPerdedoras);

                    List <string> bandasGanadoras        = bandasToString(bandasGanadorasFestival);
                    List <string> bandasPerdedorasString = bandasToString(bandasPerdedoras);

                    string bandaRecomendada = _chef.executeChefProcess(bandasGanadoras, bandasGanadorasFestival, nuevoEvento.PK_eventos);

                    nuevoEvento.FK_EVENTOS_BANDAS_CHEF = _manejador.obtenerBanda(bandaRecomendada).PK_bandas;

                    //Almacena nuevo evento en persistencia
                    _manejador.crearFestival(nuevoEvento, bandasPerdedoras);

                    //Publica tweet de nuevo festival
                    publicarFestivalNuevoTwitter(nuevoEvento.nombreEve);

                    //Operación completada
                    respuesta = _fabricaRespuestas.crearRespuesta(true, "Festival creado exitosamente. Nuestra banda recomendada por el chef para el festival es: " + bandaRecomendada);
                    break;

                default:
                    //Tipo de evento no existe
                    respuesta = _fabricaRespuestas.crearRespuesta(false, "Tipo de evento no existente.");
                    break;
                }
            } catch (Exception e)
            {
                //respuesta = _fabricaRespuestas.crearRespuesta(false, "Error al crear evento por falta de información. Verifique los datos ingresados por favor.");
                respuesta = _fabricaRespuestas.crearRespuesta(false, "Error al crear evento. Por favor intente de nuevo.", e.ToString());
            }

            //Retorna respuesta
            return(respuesta);
        }