//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); }