Ejemplo n.º 1
0
        /// <summary>
        /// Método que corresponde al patrón Chain of Responsibility.
        /// En caso de que el atributo Relacion correspondiente al Perfil que envía el mensaje
        /// esté fijado en el valor inicial de null, se pide una relación,
        /// y se agrega el ID a la lista de UsuariosPreguntados.
        ///
        /// En caso de que el Perfil correspondiente tenga el valor nulo de Relación,
        /// y esté en la lista de preguntados, se procesa el valor ingresado en el
        /// último mensaje para validarlo.
        /// De ser correcto, se modifica el campo Relacion de Perfil y se pasa al siguiente eslabón.
        /// De no ser correcto, se pide al usuario que ingrese un valor adecuado.
        ///
        ///
        /// Si al ingresar al método, el valor de Relacion no es el nulo, se asume que ya fue fijado por el usuario,
        /// por lo que se envía el mensaje hacia el siguiente eslabón.
        /// </summary>
        /// <param name="m">Mensaje que se transmite por patrón COR</param>
        public override async void Handle(Mensaje m)
        {
            Perfil perfil = BibliotecaPerfiles.GetUsuario(m.Id);

            if (perfil.Relacion == TipoAfinidad.Vacio)
            {
                if (!perfil.RegistroPreguntas.Relacion)
                {
                    perfil.RegistroPreguntas.Relacion = true;
                    await Preguntar(m.Id, m.Plataforma);
                }
                else
                {
                    try
                    {
                        TipoAfinidad afinidad = BuscoAfinidad(m.Contenido);
                        EditorPerfil.SetRelacion(m.Id, afinidad);
                        Siguiente.Handle(m);
                    }
                    catch (ArgumentException)
                    {
                        await Respuesta.PedirAclaracion(m.Id, m.Plataforma);
                        await Preguntar(m.Id, m.Plataforma);
                    }
                    catch (NullReferenceException)
                    {
                        await Respuesta.PedirAclaracion(m.Id, m.Plataforma);
                        await Preguntar(m.Id, m.Plataforma);
                    }
                }
            }
            else
            {
                Siguiente.Handle(m);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Método que corresponde al patrón Chain of Responsibility.
        /// En caso de que el atributo Interes correspondiente al Perfil que envía el mensaje
        /// esté fijado en el valor inicial de null, se pide un interés,
        /// y se agrega el ID a la lista de UsuariosPreguntados.
        ///
        /// En caso de que el Perfil correspondiente tenga el valor nulo de Interes,
        /// y esté en la lista de preguntados, se procesa el valor ingresado en el
        /// último mensaje para validarlo.
        /// De ser correcto, se modifica el campo Interes de Perfil y se pasa al siguiente eslabón.
        /// De no ser correcto, se pide al usuario que ingrese un valor adecuado.
        ///
        ///
        /// Si al ingresar al método, el valor de Interes no es el nulo, se asume que ya fue fijado por el usuario,
        /// por lo que se envía el mensaje hacia el siguiente eslabón.
        /// </summary>
        /// <param name="m">Mensaje que se transmite por patrón COR</param>

        public override async void Handle(Mensaje m)
        {
            Perfil perfil = BibliotecaPerfiles.GetUsuario(m.Id);

            if (perfil.Interes == null)
            {
                if (!perfil.RegistroPreguntas.Interes)
                {
                    await Preguntar(m.Id, m.Plataforma);

                    perfil.RegistroPreguntas.Interes = true;
                }
                else
                {
                    try
                    {
                        EditorPerfil.SetInteres(m.Id, m.Contenido);
                        Siguiente.Handle(m);
                    }
                    catch (NullReferenceException)
                    {
                        await Respuesta.PedirAclaracion(m.Id, m.Plataforma);
                        await Preguntar(m.Id, m.Plataforma);
                    }
                    catch (ArgumentNullException)
                    {
                        await Respuesta.PedirAclaracion(m.Id, m.Plataforma);
                        await Preguntar(m.Id, m.Plataforma);
                    }
                }
            }
            else
            {
                Siguiente.Handle(m);
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Método que se encarga de trasladar a la clase encargada de enviar mensajes al usuario el
 /// pedido por un valor de Precio Maximo.
 /// </summary>
 public override async Task Preguntar(long id, TipoPlataforma plat)
 {
     string pregunta = Respuesta.DefinirFrase(this);
     await Respuesta.GenerarRespuesta(pregunta, id, plat);
 }
Ejemplo n.º 4
0
 public static async Task EnviarRegalo(Regalo regalo, long idPerfil, TipoPlataforma plat)
 {
     await Respuesta.EnviaRegalo(regalo.ToString(), idPerfil, plat);
 }