コード例 #1
0
ファイル: TelegramAuth.cs プロジェクト: str1py/Ducky
        public TelegramUserModel IsUserAuth()
        {
            if (Properties.Socials.Default.TelegramUserID != 0)
            {
                try
                {
                    var loadedSession = store.Load("session");
                    session = Session.TryLoadOrCreateNew(store, Properties.Socials.Default.TelegramUserID.ToString());

                    var ph = imghlp.byteArrayToImage(loadedSession.TLUser.Photo.Serialize());
                    TelegramUserModel telegramuser = (new TelegramUserModel
                    {
                        UserID = loadedSession.TLUser.Id.ToString(),
                        UserNameAndSurname = loadedSession.TLUser.FirstName + " " + loadedSession.TLUser.LastName,
                        UserNickName = loadedSession.TLUser.Username,
                        UserPhoto = ph
                    });
                    return(telegramuser);
                }
                catch { return(null); }
            }
            else
            {
                return(null);
            }
        }
コード例 #2
0
        private async Task <TelegramUserModel> UpdateTelegramUser(TelegramUserModel telegramUser, UserModel user)
        {
            var entity = await telegramUserRepo.FirstAsync(x => x.Id == telegramUser.Id);

            entity.UserId = user.Id;
            // telegramUserRepo.Update(entity);
            await unitOfWork.CommitAsync();

            return(ConvertEntityToTelegramUserModel(entity));
        }
コード例 #3
0
        protected override void HandlerUserButtonOk_Click(object sender, EventArgs e)
        {
            Log.Debug(TAG, "HandlerUserButtonOk_Click");

            string errMsg = ReadView(userId);

            if (!string.IsNullOrWhiteSpace(errMsg))
            {
                UserCardSubHeader.Text = errMsg;
                UserCardSubHeader.SetTextColor(Color.Red);
                Toast.MakeText(this, errMsg, ToastLength.Short).Show();
                return;
            }

            int selected_telegram_id = TelegramUsers.Keys.ToList()[TelegramAccount.SelectedItemPosition];

            lock (DatabaseContext.DbLocker)
            {
                using (DatabaseContext db = new DatabaseContext(gs.DatabasePathBase))
                {
                    UserModel user = db.Users.Find(userId);

                    user.Name  = UserName.Text.Trim();
                    user.Email = UserEmail.Text.Trim();
                    user.Phone = UserPhone.Text.Trim();

                    user.AlarmSubscriber = UserAlarmSubscribing.Checked;
                    user.CommandsAllowed = UserCommandsAllowed.Checked;

                    db.Users.Update(user);
                    if (selected_telegram_id > 0)
                    {
                        TelegramUserModel telegramUser = db.TelegramUsers.Find(selected_telegram_id);
                        telegramUser.LinkedUserId = user.Id;
                        List <TelegramUserModel> other_telegram_users = db.TelegramUsers.Where(x => x.LinkedUserId == user.Id && x.Id == selected_telegram_id).ToList();
                        if (other_telegram_users != null && other_telegram_users.Count > 0)
                        {
                            other_telegram_users.ForEach(x => { x.LinkedUserId = null; });
                        }
                    }
                    else
                    {
                        TelegramUserModel telegramUser = db.TelegramUsers.FirstOrDefault(x => x.LinkedUserId == userId);
                        if (telegramUser != null)
                        {
                            telegramUser.LinkedUserId = null;
                        }
                    }
                    db.SaveChanges();
                }
            }
            StartActivity(typeof(UsersListActivity));
        }
コード例 #4
0
        private async Task LoginUser(TelegramUserModel telegramUser, Message message)
        {
            if (LoginTempCache == null)
            {
                LoginTempCache = new Dictionary <long, TelegramLoginStepModel>();
            }
            var model = LoginTempCache.GetValueOrDefault(telegramUser.Id);

            if (model == null)
            {
                LoginTempCache.Add(telegramUser.Id, new TelegramLoginStepModel {
                    Step = TelegramLoginStep.WaitingForUsername
                });
                await botService.Client.SendTextMessageAsync(message.Chat.Id, "You must first login");

                await botService.Client.SendTextMessageAsync(message.Chat.Id, "Please enter your username");
            }
            else if (model.Step == TelegramLoginStep.WaitingForUsername)
            {
                model.Username = message.Text;
                model.Step     = TelegramLoginStep.WaiyingForPassword;
                await botService.Client.SendTextMessageAsync(message.Chat.Id, "Please enter your password");
            }
            else
            {
                model.Password = message.Text;
                LoginTempCache.Remove(telegramUser.Id);
                UserModel user = null;
                try
                {
                    user = await userLib.LoginAsync(new LoginModel
                    {
                        Password = model.Password,
                        Username = model.Username
                    });
                }
                catch { }
                if (user == null)
                {
                    await botService.Client.SendTextMessageAsync(message.Chat.Id, "Username or Password is incorct");
                }
                else
                {
                    telegramUser = await UpdateTelegramUser(telegramUser, user);

                    await botService.Client.SendTextMessageAsync(message.Chat.Id, "Successful!, Thanks");
                }
            }
        }
コード例 #5
0
        public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
        {
            Log.Debug(TAG, $"OnBindViewHolder - position:{position}");
            TelegramUserListItemViewHolder telegramUsersViewHolder = holder as TelegramUserListItemViewHolder;

            lock (DatabaseContext.DbLocker)
            {
                using (DatabaseContext db = new DatabaseContext(gs.DatabasePathBase))
                {
                    TelegramUserModel row = db.TelegramUsers.Include(x => x.LinkedUser).Skip(position).FirstOrDefault();

                    telegramUsersViewHolder.TelegramId.Text = row.TelegramId + (string.IsNullOrWhiteSpace(row.UserName) ? "" : $" (@{row.UserName})");

                    if (string.IsNullOrEmpty(row.Name))
                    {
                        telegramUsersViewHolder.TelegramFirstSecondName.Text = "<no name>";
                        telegramUsersViewHolder.TelegramFirstSecondName.SetTextColor(Color.LightGray);
                    }
                    else
                    {
                        telegramUsersViewHolder.TelegramFirstSecondName.Text = row.Name;
                        telegramUsersViewHolder.TelegramFirstSecondName.SetTextColor(Color.Black);
                    }

                    if (row.LinkedUser != null)
                    {
                        telegramUsersViewHolder.LinkedUser.Text = row.LinkedUser.Name;
                        telegramUsersViewHolder.LinkedUser.SetTextColor(Color.Black);
                    }
                    else
                    {
                        telegramUsersViewHolder.LinkedUser.Text = "< - >";
                        telegramUsersViewHolder.LinkedUser.SetTextColor(Color.Gray);
                    }

                    telegramUsersViewHolder.LinkedUser.Tag = row.Id;
                }
            }
        }
コード例 #6
0
        protected virtual void HandlerUserButtonOk_Click(object sender, EventArgs e)
        {
            string errMsg = ReadView();

            if (!string.IsNullOrWhiteSpace(errMsg))
            {
                UserCardSubHeader.Text = errMsg;
                UserCardSubHeader.SetTextColor(Android.Graphics.Color.Red);
                Toast.MakeText(this, errMsg, ToastLength.Short).Show();
                return;
            }

            int selected_telegram_id = TelegramUsers.Keys.ToList()[TelegramAccount.SelectedItemPosition];

            lock (DatabaseContext.DbLocker)
            {
                using (DatabaseContext db = new DatabaseContext(gs.DatabasePathBase))
                {
                    UserModel user = new UserModel()
                    {
                        AlarmSubscriber = UserAlarmSubscribing.Checked,
                        CommandsAllowed = UserCommandsAllowed.Checked,
                        Name            = UserName.Text.Trim(),
                        Email           = UserEmail.Text.Trim(),
                        Phone           = UserPhone.Text.Trim()
                    };
                    db.Users.Add(user);
                    db.SaveChanges();
                    if (selected_telegram_id > 0)
                    {
                        TelegramUserModel telegramUser = db.TelegramUsers.Find(selected_telegram_id);
                        telegramUser.LinkedUserId = user.Id;
                        db.SaveChanges();
                    }
                }
            }
            StartActivity(typeof(UsersListActivity));
        }
コード例 #7
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            Log.Debug(TAG, "OnCreate");

            base.OnCreate(savedInstanceState);
            UserFooterLayout = FindViewById <LinearLayout>(Resource.Id.user_footer_layout);
            int user_id = Intent.Extras.GetInt(nameof(UserModel.Id), 0);

            if (user_id < 1)
            {
                string err_title = GetText(Resource.String.err_title_2);
                UserName.Text    = err_title;
                UserName.Enabled = false;

                UserEmail.Text    = err_title;
                UserEmail.Enabled = false;

                UserPhone.Text    = err_title;
                UserPhone.Enabled = false;

                UserAlarmSubscribing.Enabled = false;
                UserCommandsAllowed.Enabled  = false;

                UserCardSubHeader.Text    = err_title;
                UserCardSubHeader.Enabled = false;

                UserCardButtonOk.Enabled = false;
                return;
            }

            UserModel user = null;

            lock (DatabaseContext.DbLocker)
            {
                using (DatabaseContext db = new DatabaseContext(gs.DatabasePathBase))
                {
                    user = db.Users.Find(user_id);
                }
            }
            userId         = user.Id;
            UserName.Text  = user.Name;
            UserEmail.Text = user.Email;
            UserPhone.Text = user.Phone;
            UserAlarmSubscribing.Checked = user.AlarmSubscriber;
            UserCommandsAllowed.Checked  = user.CommandsAllowed;

            TelegramUserModel telegramUser = null;

            lock (DatabaseContext.DbLocker)
            {
                using (DatabaseContext db = new DatabaseContext(gs.DatabasePathBase))
                {
                    telegramUser = db.TelegramUsers.FirstOrDefault(x => x.LinkedUserId == user.Id);
                }
            }
            if (telegramUser != null)
            {
                TelegramAccount.SetSelection(TelegramUsers.Keys.ToList().IndexOf(telegramUser.Id));
            }

            UserCardHeader.Text    = GetText(Resource.String.edit_user_title);
            UserCardSubHeader.Text = GetText(Resource.String.edit_user_sub_title);

            AppCompatButton buttonDeleteUser = new AppCompatButton(this)
            {
                Text = GetText(Resource.String.delete_title)
            };

            buttonDeleteUser.SetTextColor(Color.DarkRed);
            buttonDeleteUser.Click           += ButtonDeleteUser_Click;
            buttonDeleteUser.LayoutParameters = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.WrapContent);
            UserFooterLayout.AddView(buttonDeleteUser);
        }