private async Task <bool> OtpValidatorAsync(PromptValidatorContext <string> promptContext,
                                                    CancellationToken cancellationToken)
        {
            bool valid = false;

            //Si el prompt reconocio la entrada
            if (promptContext.Recognized.Succeeded)
            {
                //Mando a sacar el objeto de la coversacion donde ya guarde el OTP
                DataConversation dataConversation =
                    await _botStateService.DataConversationAccessor.GetAsync(promptContext.Context,
                                                                             () => new DataConversation(), cancellationToken);

                valid = promptContext.Recognized.Value == dataConversation.OTP;

                if (!valid)
                {
                    await promptContext.Context.SendActivityAsync(
                        MessageFactory.Text(
                            $"El codigo OTP no es valido. (Recuerda que el codigo es {dataConversation.OTP})"),
                        cancellationToken);
                }
            }
            return(valid);
        }
Esempio n. 2
0
        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            // Override point for customization after application launch.
            // If not required for your application you can safely delete this method

            dataConversation = new DataConversation();
            dbmessages       = new List <DBMessage>(dataConversation.Start());

            return(true);
        }
Esempio n. 3
0
        private async Task <bool> EsOtpValidoAsync(string texto, ITurnContext context, CancellationToken cancellationToken)
        {
            //Mando a sacar el objeto de la coversacion donde ya guarde el OTP
            DataConversation dataConversation =
                await _botStateService.DataConversationAccessor.GetAsync(context,
                                                                         () => new DataConversation(), cancellationToken);

            bool valid = texto == dataConversation.OTP;

            return(valid);
        }
        /// <summary>
        /// Metodo en el cual le pido el OTP al usuario
        /// </summary>
        /// <param name="stepContext"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        private async Task <DialogTurnResult> OtpStepAsync(WaterfallStepContext stepContext,
                                                           CancellationToken cancellationToken)
        {
            //Extraemos el numero de telefono del paso anterior
            string telefono = (string)stepContext.Result;

            stepContext.Values["telefono"] = telefono;

            DataConversation dataConversation =
                await _botStateService.DataConversationAccessor.GetAsync(stepContext.Context,
                                                                         () => new DataConversation(), cancellationToken);

            PerfilDeUsuario perfilDeUsuario =
                await _botStateService.PerfilDeUsuarioAccessor.GetAsync(stepContext.Context,
                                                                        () => new PerfilDeUsuario(), cancellationToken);


            //Seteo en numero que el usuario ingreso
            perfilDeUsuario.NumeroTelefono = telefono;

            //Si hay un numero valido, lo mando de un solo al reporte sin  pasar por el OTP
            if (perfilDeUsuario.NumerosValidos.Any(y => y.Numero == telefono && y.FechaVencimiento >= DateTime.Now))
            {
                //Marco que el numero actual es valido para que me deje pasar
                perfilDeUsuario.EsNumeroIngresadoValido = true;

                await _botStateService.PerfilDeUsuarioAccessor.SetAsync(stepContext.Context, perfilDeUsuario,
                                                                        cancellationToken);

                return(await stepContext.NextAsync("", cancellationToken));
            }
            else
            {
                //Mando a generar el OTP
                string otpFake = RandomString(8);

                dataConversation.OTP = otpFake;

                //Mando a setear al state la nueva data
                await _botStateService.DataConversationAccessor.SetAsync(stepContext.Context, dataConversation, cancellationToken);

                await _botStateService.PerfilDeUsuarioAccessor.SetAsync(stepContext.Context, perfilDeUsuario,
                                                                        cancellationToken);

                //Le solicitamos al usuario que nos diga el OTP

                return(await stepContext.PromptAsync($"{nameof(ObtenerReporteDialog)}.otp", new PromptOptions()
                {
                    Prompt = MessageFactory.Text(
                        $"Por favor ingrese el codigo enviado a su telefono (pssst, el codigo es: {otpFake})")
                }, cancellationToken));
            }
        }
Esempio n. 5
0
    private void LoadGameData()
    {
        string filePath = Application.dataPath + gameDataProjectFilePath;

        if (File.Exists(filePath))
        {
            string dataAsJson = File.ReadAllText(filePath);
            gameData = JsonUtility.FromJson <DataConversation> (dataAsJson);
        }
        else
        {
            gameData = new DataConversation();
        }
    }
Esempio n. 6
0
        /// <summary>
        /// En este paso leemos lo que dijo sobre re intentar o sobre querer un codigo nuevo
        /// </summary>
        /// <param name="stepContext"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        private async Task <DialogTurnResult> ProcesarRespuestaReintentoStepAsync(WaterfallStepContext stepContext,
                                                                                  CancellationToken cancellationToken)
        {
            //Extramos el dato de la opcion anterior
            string eleccion = ((FoundChoice)stepContext.Result).Value;

            DataConversation dataConversation =
                await _botStateService.DataConversationAccessor.GetAsync(stepContext.Context,
                                                                         () => new DataConversation(), cancellationToken);

            //Verificamos que fue lo que eligio
            if (eleccion == "Reintentar")
            {
                //Le solicitamos al usuario que nos diga el OTP

                return(await stepContext.PromptAsync($"{nameof(ReintentarOtpDialog)}.otp", new PromptOptions()
                {
                    Prompt = MessageFactory.Text(
                        $"Muy bien, ingrese el codigo enviado a su telefono (pssst, el codigo es: {dataConversation.OTP})")
                }, cancellationToken));


                //Si pidio reintentar, levanto el dialogo de re intento
                //return await stepContext.BeginDialogAsync($"{nameof(ReintentarOtpDialog)}.reintentar", null,
                //    cancellationToken);
            }
            else
            {
                //Mando a generar el OTP
                string otpFake = RandomString(8);

                //Seteo el OTP
                dataConversation.OTP = otpFake;

                //Mando a setear al state la nueva data
                await _botStateService.DataConversationAccessor.SetAsync(stepContext.Context, dataConversation, cancellationToken);

                //Le solicitamos al usuario que nos diga el OTP

                return(await stepContext.PromptAsync($"{nameof(ReintentarOtpDialog)}.otp", new PromptOptions()
                {
                    Prompt = MessageFactory.Text(
                        $"Se le reenvio el codigo a su telefono, favor ingresarlo (pssst, el codigo es: {otpFake})")
                }, cancellationToken));

                //Si dijo que quiere un codigo nuevo, se le manda al dialogo de nuevo codigo
                //return await stepContext.BeginDialogAsync($"{nameof(ReintentarOtpDialog)}.nuevoCodigo", null,
                //    cancellationToken);
            }
        }
Esempio n. 7
0
    // Use this for initialization
    void Start()
    {
        if (instance == null)
        {
            instance = this;
        }
        else
        {
            return;
        }


        //pega a referencia para os textos do DataController
        allConversations = FindObjectOfType <DataController> ().allConversations;
        box      = gameObject.transform.GetChild(0).gameObject;
        sentence = 0;
    }
Esempio n. 8
0
    private void LoadTextData()
    {
        string filePath = Path.Combine(Application.streamingAssetsPath, textDataFileName);

        if (File.Exists(filePath))
        {
            // Le o JSON e joga todo o texto em uma string
            string dataAsJson = File.ReadAllText(filePath);

            //Chama o JsonUyility pra ele transformar a string no Objeto dataText
            DataConversation loadedText = JsonUtility.FromJson <DataConversation>(dataAsJson);

            //Joga tudo agora na nossa variavel pública
            allConversations = loadedText;
        }
        else
        {
            Debug.Log("Arquivo Not founD.");
        }
    }
        private void Initialize(LastChatAdapterViewHolder holder, DataConversation item)
        {
            try
            {
                GlideImageLoader.LoadImage(ActivityContext, item.User.Avatar, holder.ImageAvatar, ImageStyle.CircleCrop, ImagePlaceholders.Drawable);

                string name = DeepSoundTools.GetNameFinal(item.User);
                if (holder.TxtUsername.Text != name)
                {
                    holder.TxtUsername.Text = name;
                }

                //If message contains Media files
                switch (item.GetLastMessage.ApiType)
                {
                case ApiType.Text:
                {
                    holder.LastMessagesIcon.Visibility = ViewStates.Gone;
                    holder.TxtLastMessages.Text        = item.GetLastMessage.Text.Contains("http")
                            ? Methods.FunString.SubStringCutOf(item.GetLastMessage.Text, 30)
                            : Methods.FunString.DecodeString(Methods.FunString.SubStringCutOf(item.GetLastMessage.Text, 30))
                                                         ?? ActivityContext.GetText(Resource.String.Lbl_SendMessage);
                    break;
                }

                case ApiType.Image:
                {
                    holder.LastMessagesIcon.Visibility = ViewStates.Visible;
                    FontUtils.SetTextViewIcon(FontsIconFrameWork.IonIcons, holder.LastMessagesIcon, IonIconsFonts.Images);
                    holder.TxtLastMessages.Text = Application.Context.GetText(Resource.String.Lbl_SendImageFile);
                    break;
                }
                }

                //last seen time
                holder.TxtTimestamp.Text = Methods.Time.TimeAgo(Convert.ToInt32(item.GetLastMessage.Time), true);

                //Check read message
                if (item.GetLastMessage.ToId != UserDetails.UserId && item.GetLastMessage.FromId == UserDetails.UserId)
                {
                    if (item.GetLastMessage.Seen == 0)
                    {
                        holder.ImageColor.Visibility = ViewStates.Invisible;
                        holder.TxtUsername.SetTypeface(Typeface.Default, TypefaceStyle.Normal);
                        holder.TxtLastMessages.SetTypeface(Typeface.Default, TypefaceStyle.Normal);
                    }
                    else
                    {
                        holder.ImageColor.Visibility = ViewStates.Invisible;
                        holder.TxtUsername.SetTypeface(Typeface.Default, TypefaceStyle.Normal);
                        holder.TxtLastMessages.SetTypeface(Typeface.Default, TypefaceStyle.Normal);
                    }
                }
                else if (item.GetLastMessage.ToId == UserDetails.UserId && item.GetLastMessage.FromId != UserDetails.UserId)
                {
                    if (item.GetLastMessage.Seen == 0)
                    {
                        holder.TxtUsername.SetTypeface(Typeface.Default, TypefaceStyle.Bold);
                        holder.TxtLastMessages.SetTypeface(Typeface.Default, TypefaceStyle.Bold);

                        if (item.GetCountSeen != 0)
                        {
                            var drawable = TextDrawable.InvokeBuilder().BeginConfig().FontSize(25).EndConfig().BuildRound(item.GetCountSeen.ToString(), Color.ParseColor(AppSettings.MainColor));
                            holder.ImageColor.SetImageDrawable(drawable);
                            holder.ImageColor.Visibility = ViewStates.Visible;
                        }
                        else
                        {
                            holder.ImageColor.Visibility = ViewStates.Invisible;
                        }
                    }
                    else
                    {
                        holder.ImageColor.Visibility = ViewStates.Invisible;
                        holder.TxtUsername.SetTypeface(Typeface.Default, TypefaceStyle.Normal);
                        holder.TxtLastMessages.SetTypeface(Typeface.Default, TypefaceStyle.Normal);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }