/// <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); } }
/// <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); } }
/// <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); }
public static async Task EnviarRegalo(Regalo regalo, long idPerfil, TipoPlataforma plat) { await Respuesta.EnviaRegalo(regalo.ToString(), idPerfil, plat); }