Ejemplo n.º 1
0
        /// <summary>
        /// Método que categoriza inputs, dándole una etiqueta que defina qué tipo de interacción es.
        /// </summary>
        /// <returns>Objeto Mensaje (contiene el contenido original del mensaje en un string, las frases clave
        /// en una lista de strings y un campo de TipoMensaje.</returns>
        ///
        //Aplicamos patrón Creator porque TaggerMensajes contiene los datos que serán provistos para
        //inicializar instancias de Mensaje, y tiene un método que devuelve objetos del tipo Mensaje
        //(TaggerMensajes usa de forma muy cercana objetos Mensaje)
        public void GetMensajeEntrante()
        {
            Mensaje mensaje = this.EtiquetarMensaje();

            this.mediador.Notificar(mensaje);
        }
/// <summary>
/// El método notificar recibe un mensaje y según su tipo continúa con el flujo de comunicación interna.
/// </summary>
/// <param name="mensaje"></param>
        public void Notificar(Mensaje mensaje)
        {
            switch (mensaje.Tipo())
            {
            case TipoMensaje.Genero:

                if ((ultimoEnvio == TipoEnvio.Genero) || (ultimoEnvio == TipoEnvio.Saludo))
                {
                    generadorPerfil.SetGenero(mensaje.Contenido());
                    ProcesamientoExitoso = true;
                }
                else
                {
                    ProcesamientoExitoso = false;
                }
                break;

            case TipoMensaje.Numero:

                switch (ultimoEnvio)
                {
                case TipoEnvio.Edad:
                    generadorPerfil.SetEdad(mensaje.Contenido());
                    ProcesamientoExitoso = true;
                    break;

                case TipoEnvio.PrecioMax:
                    generadorPerfil.SetPrecioMaximo(mensaje.Contenido());
                    ProcesamientoExitoso = true;
                    break;

                case TipoEnvio.PrecioMin:
                    generadorPerfil.SetPrecioMinimo(mensaje.Contenido());
                    ProcesamientoExitoso = true;
                    break;

                default:
                    ProcesamientoExitoso = false;
                    break;
                }
                break;

            case TipoMensaje.Interes:

                if ((ultimoEnvio == TipoEnvio.Interes) || (ultimoEnvio == TipoEnvio.Saludo))
                {
                    generadorPerfil.SetInteres(mensaje.Contenido());
                    ProcesamientoExitoso = true;
                }
                else
                {
                    ProcesamientoExitoso = false;
                }
                break;

            case TipoMensaje.Positivo:
                if ((ultimoEnvio == TipoEnvio.Sugerencia))
                {
                    ProcesamientoExitoso = true;
                }
                else
                {
                    ProcesamientoExitoso = false;
                }
                break;

            case TipoMensaje.Negativo:
                if ((ultimoEnvio == TipoEnvio.Sugerencia))
                {
                    ultimoEnvio          = TipoEnvio.Despedida;
                    ProcesamientoExitoso = true;
                }
                else
                {
                    if ((ultimoEnvio == TipoEnvio.Genero))
                    {     //TipoGenero Desconocido si no quiere brindar el Genero
                        generadorPerfil.SetGenero(mensaje.Contenido());
                        ProcesamientoExitoso = true;
                    }
                    else
                    {
                        ProcesamientoExitoso = false;
                    }
                }

                break;

            case TipoMensaje.Saludo:
                ProcesamientoExitoso = (ultimoEnvio == TipoEnvio.Saludo);

                break;

            case TipoMensaje.Despedida:
                ultimoEnvio          = TipoEnvio.Despedida;
                ProcesamientoExitoso = false;

                break;

            case TipoMensaje.Otros:
                ProcesamientoExitoso = false;

                break;
            }

            if (ProcesamientoExitoso)
            {
                this.ultimoEnvio = generadorPerfil.getDatoFaltante();
                if (this.ultimoEnvio == TipoEnvio.Sugerencia)
                {
                    //Hacer busqueda
                }
                else
                {
                    respuesta.Preguntar(ultimoEnvio);
                }
            }
            else
            {
                respuesta.PedirAclaraciones(ultimoEnvio);
            }
        }
 /// <summary>
 /// Entrada de la Bitacora. Contenido queda bajo posible modificacion
 /// </summary>
 /// <param name="msg">contenido de la entrada obtenida a traves de mensaje con anterioridad</param>
 /// <param name="name">Nombre del objeto</param>
 public Entrada(Mensaje msg)
 {
     this.Estado    = TipoEstado.Finalizada;
     this.Contenido = msg;
 }