예제 #1
0
        // UserInformation -------------------------------------------------------------------------------------

        /// <summary>
        ///     users_infomationデータベースから全てのユーザ情報を取得
        /// </summary>
        /// <returns>
        ///     List<UsersInfomation> : UsersInfomationクラスを参照
        /// </returns>
        public List <UsersInformation> Get_AllUserInformation()
        {
            SqliteConnection db = this.OpenDB();

            SqliteCommand command = new SqliteCommand("SELECT * from users_information", db);

            List <UsersInformation> ret = new List <UsersInformation>();

            using (SqliteDataReader query = command.ExecuteReader())
            {
                while (query.Read())
                {
                    UsersInformation user = new UsersInformation();
                    user._mid        = query.GetString(0);
                    user._balance    = query.GetInt32(1);
                    user._user_name  = query.GetString(2);
                    user._permission = query.GetString(3);
                    ret.Add(user);
                }
            }

            db.Close();

            return(ret);
        }
예제 #2
0
        /// <summary>
        ///     UserInformationテーブルにデータを挿入
        /// </summary>
        /// <param name="user"> 挿入したいUserのUserInformationオブジェクト </param>
        /// <returns>
        ///     成功 -> true , 失敗(主キー被りなど) -> false
        /// </returns>
        public bool Insert_UserInformation(UsersInformation user)
        {
            SqliteConnection db = this.OpenDB();

            SqliteCommand command = new SqliteCommand("INSERT INTO users_information VALUES(@mid,@balance,@user_name,@permission)", db);

            command.Parameters.AddWithValue("@mid", user._mid);
            command.Parameters.AddWithValue("@balance", user._balance);
            command.Parameters.AddWithValue("@user_name", user._user_name);
            command.Parameters.AddWithValue("@permission", user._permission);

            try
            {
                command.ExecuteReader();
            }
            catch
            {
                return(false);
            }
            finally
            {
                db.Close();
            }

            return(true);
        }
        // 別のページから遷移してきた時に呼び出されるメソッド
        // 画面描画は完了していないのでLoadedメソッドを利用?
        // 参照 : ttps://qiita.com/nagasakulllo/items/0b06ccc66b9fe0909b3f
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            string         parent_mid = e.Parameter as string;
            DatabaseAccess db         = new DatabaseAccess();
            var            all_user   = db.Get_AllUserInformation();

            foreach (var user in all_user)
            {
                if (user._mid == parent_mid)
                {
                    ui = user;
                }
            }
        }
예제 #4
0
        // 要望リスト初期化メソッド
        private ObservableCollection <DemandsInformation> GetDemands()
        {
            DatabaseAccess db          = new DatabaseAccess();
            var            all_demands = db.Get_AllDemandInformation();

            foreach (var demand in all_demands)
            {
                // クソみたいなコード(解説 : クラスを変えるのがめんどくさいので無理やりmIDをuser_nameに置換している)
                UsersInformation ui = db.Get_UserInformation(demand._mid);
                demand._mid = ui._user_name;

                Demands.Add(demand);
            }
            return(Demands);
        }
예제 #5
0
 /// <summary>
 /// ログイン中のユーザーのStaticParamをアップデートします。
 /// </summary>
 /// <returns>trueの場合正常,falseの場合異常を示す</returns>
 public static bool update_user()
 {
     try
     {
         DatabaseAccess   db   = new DatabaseAccess();
         UsersInformation user = db.Get_UserInformation(StaticParam._mID);
         StaticParam._balance    = user._balance;
         StaticParam._userName   = user._user_name;
         StaticParam._permission = user._permission;
         return(true);
     }
     catch
     {
         return(false);
     }
 }
예제 #6
0
        private void Debug_Button_Click_1(object sender, RoutedEventArgs e)
        {
            Enable_Toggle();
            // mIDが登録されているかのチェック
            DatabaseAccess db = new DatabaseAccess();

            if (db.Search_UserInformation("01148E4778184D03"))
            {
                // タイマーの停止
                this._timer.Stop();
                // ユーザー情報の取得
                UsersInformation user = db.Get_UserInformation("01148E4778184D03");
                StaticParam._mID        = user._mid;
                StaticParam._userName   = user._user_name;
                StaticParam._balance    = user._balance;
                StaticParam._permission = user._permission;
                // 遷移
                Frame.Navigate(typeof(MenuScreen), user);
            }
        }
예제 #7
0
        // タイマー用メソッド
        // カードが翳された場合、画面遷移を行う
        private async void Check_Card(object sender, object e)
        {
            try
            {
                string mID = await Getmid();

                if (mID != "")
                {
                    Enable_Toggle();
                    // mIDが登録されているかのチェック
                    DatabaseAccess db = new DatabaseAccess();
                    if (db.Search_UserInformation(mID))
                    {
                        // タイマーの停止
                        this._timer.Stop();
                        // ユーザー情報の取得
                        UsersInformation user = db.Get_UserInformation(mID);
                        StaticParam._mID        = user._mid;
                        StaticParam._userName   = user._user_name;
                        StaticParam._balance    = user._balance;
                        StaticParam._permission = user._permission;
                        // 遷移
                        Frame.Navigate(typeof(MenuScreen), user);
                    }
                    else
                    {
                        // ダイアログ表示中も裏でタイマーが走るようなので一旦止めています。
                        // CheckFunction.Show_Messageを使用していないのは非同期スレッドが立つらしく確認する前にタイマーがスタートしてしまう為
                        this._timer.Stop();
                        var msg = new ContentDialog();
                        msg.Title             = "Error";
                        msg.Content           = "登録されていないカードです。";
                        msg.PrimaryButtonText = "OK";
                        await msg.ShowAsync();

                        this._timer.Start();
                    }
                }
            }catch {
            }
        }
        private void User_Edit_Decide_Button_Click(object sender, RoutedEventArgs e)
        {
            Enable_Toggle();
            // 入力パラメータチェック
            if (mid_TEXT.Text == "")
            {
                // midが未入力です。
                CheckFunction.Message_Show("Error", "midが未入力です。");
                Enable_Toggle();
                return;
            }
            else if (userName_TEXT.Text == "")
            {
                // 名前が未入力です。
                CheckFunction.Message_Show("Error", "名前が未入力です。");
                Enable_Toggle();
                return;
            }
            else if (balance_TEXT.Text == "")
            {
                // 残高が未入力です。
                CheckFunction.Message_Show("Error", "残高が未入力です。");
                Enable_Toggle();
                return;
            }
            else if (permisson_TEXT.SelectedIndex == 0)
            {
                // 権限が未選択です。
                CheckFunction.Message_Show("Error", "権限が未選択です。");
                Enable_Toggle();
                return;
            }

            // フォーマットチェック
            if (!CheckFunction.mid_Integrity_Check(mid_TEXT.Text))
            {
                CheckFunction.Message_Show("Error", "midのフォーマットが間違っています。もしくは未対応のカードです。");
                Enable_Toggle();
                return;
            }
            else if (!CheckFunction.balance_Integrity_Check(balance_TEXT.Text))
            {
                CheckFunction.Message_Show("Error", "登録できる残高は0~99999の値です。");
                Enable_Toggle();
                return;
            }
            else if (!CheckFunction.user_name_Integrity_Check(userName_TEXT.Text))
            {
                CheckFunction.Message_Show("Error", "登録できる名前は25文字以下です。");
                Enable_Toggle();
                return;
            }

            DatabaseAccess db = new DatabaseAccess();

            if (db.Search_UserInformation(ui._mid))
            {
                db.Delete_UserInformation(ui._mid);
                UsersInformation add_ui = new UsersInformation(mid_TEXT.Text, userName_TEXT.Text, int.Parse(balance_TEXT.Text), ((ComboBoxItem)permisson_TEXT.SelectedItem).Content as string);
                db.Insert_UserInformation(add_ui);
                db.Insert_Operation_Log(StaticParam._mID, "ユーザー情報更新(mID = " + add_ui._mid + ", ユーザー名 = " + ui._user_name + "→" + add_ui._user_name + ", 残高 = " + ui._balance + "→" + add_ui._balance + ", 権限 = " + ui._permission + "→" + add_ui._permission + ")");
                CheckFunction.Message_Show(add_ui._user_name + " の情報を更新しました。", "");
                Frame.Navigate(typeof(UserListEditScreen));
            }
            else
            {
                CheckFunction.Message_Show("Error", "DB上に対象となるmIDが存在しません。");
                Enable_Toggle();
                return;
            }
        }
예제 #9
0
        ///////////////////////////////////////////////// mid読み取りここまで

        // 追加決定ボタン押下イベント
        private void User_Add_Decide_Button_Click(object sender, RoutedEventArgs e)
        {
            Enable_Toggle();
            // 入力パラメータチェック
            if (mid_TEXT.Text == "")
            {
                // midが未入力です。
                CheckFunction.Message_Show("Error", "midが未入力です。");
                Enable_Toggle();
                return;
            }
            else if (userName_TEXT.Text == "")
            {
                // 名前が未入力です。
                CheckFunction.Message_Show("Error", "名前が未入力です。");
                Enable_Toggle();
                return;
            }
            else if (balance_TEXT.Text == "")
            {
                // 残高が未入力です。
                CheckFunction.Message_Show("Error", "残高が未入力です。");
                Enable_Toggle();
                return;
            }
            else if (permisson_TEXT.SelectedIndex == 0)
            {
                // 権限が未選択です。
                CheckFunction.Message_Show("Error", "権限が未選択です。");
                Enable_Toggle();
                return;
            }

            // フォーマットチェック
            if (!CheckFunction.mid_Integrity_Check(mid_TEXT.Text))
            {
                CheckFunction.Message_Show("Error", "midのフォーマットが間違っています。もしくは未対応のカードです。");
                Enable_Toggle();
                return;
            }
            else if (!CheckFunction.balance_Integrity_Check(balance_TEXT.Text))
            {
                CheckFunction.Message_Show("Error", "初期登録できる残高は0~99999の値です。");
                Enable_Toggle();
                return;
            }
            else if (!CheckFunction.user_name_Integrity_Check(userName_TEXT.Text))
            {
                CheckFunction.Message_Show("Error", "登録できる名前は25文字以下です。");
                Enable_Toggle();
                return;
            }


            // 既登録チェック
            DatabaseAccess db = new DatabaseAccess();

            if (db.Search_UserInformation(mid_TEXT.Text))
            {
                // 既登録されています。
                CheckFunction.Message_Show("Error", "このカードは既に登録されています。同じカードは登録できません。");
                Enable_Toggle();
                return;
            }

            // ユーザー登録
            UsersInformation ui = new UsersInformation(mid_TEXT.Text, userName_TEXT.Text, int.Parse(balance_TEXT.Text), ((ComboBoxItem)permisson_TEXT.SelectedItem).Content as string);

            try{
                db.Insert_UserInformation(ui);
                db.Insert_Operation_Log(StaticParam._mID, "ユーザー登録(mID = " + ui._mid + ", ユーザー名 = " + ui._user_name + ", 残高 = " + ui._balance + ", 権限 = " + ui._permission + ")");
            }catch {
                // タイマーストップ
                _timer.Stop();
                Frame.Navigate(typeof(OperationFailureScreen));
                Enable_Toggle();
                return;
            }

            // タイマーストップ
            _timer.Stop();
            // 画面遷移
            CheckFunction.Message_Show("ユーザーの追加に成功しました。", "");
            Frame.Navigate(typeof(UserListEditScreen));
        }
예제 #10
0
        // タイマー用メソッド
        private async void Check_Card(object sender, object e)
        {
            string mID = "";

            // タイマーの停止
            this._timer.Stop();

            // カードを離した際のGetmid()で例外が走るみたいなので応急措置です
            try
            {
                mID = await Getmid();
            }catch {
                this._timer.Start();
                return;
            }

            try
            {
                if (mID != "")
                {
                    // mIDが登録されていた場合
                    // mIDが登録されているかのチェック
                    DatabaseAccess db = new DatabaseAccess();
                    if (db.Search_UserInformation(mID))
                    {
                        // 事前処理
                        // 決済額のリセット
                        total_price = 0;

                        // カード情報表示
                        UsersInformation uis = db.Get_UserInformation(mID);
                        USER_INFO.Text = uis._user_name + " 様  残高 " + uis._balance + "円";

                        // 入力内容チェック
                        if (Items.Count <= 0)
                        {
                            this._timer.Start();
                            return;
                        }


                        foreach (Item checkItem in Items)
                        {
                            if (checkItem._num <= 0)
                            {
                                var msg = new ContentDialog();
                                msg.Title             = "Error";
                                msg.Content           = checkItem._itemName + "の個数が0になっています。";
                                msg.PrimaryButtonText = "OK";
                                await msg.ShowAsync();

                                JANCODE_TEXT.Focus(FocusState.Keyboard);
                                this._timer.Start();

                                return;
                            }

                            if (db.isStocked_Item(checkItem._janCode, checkItem._num))
                            {
                            }
                            else
                            {
                                var msg = new ContentDialog();
                                msg.Title             = "Error";
                                msg.Content           = checkItem._itemName + "の在庫数が不足しています。";
                                msg.PrimaryButtonText = "OK";
                                await msg.ShowAsync();

                                JANCODE_TEXT.Focus(FocusState.Keyboard);
                                this._timer.Start();
                                return;
                            }
                        }
                        // 入力内容チェックここまで

                        foreach (Item it in Items)
                        {
                            total_price += it._price * it._num;
                        }
                        // 決済可否チェック

                        if (db.Check_Payment(mID, total_price))
                        {
                            db.Exec_Payment(mID, total_price);
                            foreach (Item item in Items)
                            {
                                db.Insert_Purchase_Log(mID, item._janCode, item._num, item._price);
                                db.Reduce_Item(item._janCode, item._num);
                            }
                            UsersInformation ui = db.Get_UserInformation(mID);
                            // ここで音を出してもいいかも
                            SE.Play();
                            USER_INFO.Text = uis._user_name + " 様  残高 " + (uis._balance - total_price) + "円 決済成功";
                            var msg = new ContentDialog();
                            msg.FontSize          = 74;
                            msg.Title             = "決済に成功しました。";
                            msg.Content           = "残高 " + ui._balance + "円";
                            msg.PrimaryButtonText = "OK";
                            //await msg.ShowAsync();
                            Items.Clear();
                            JANCODE_TEXT.Focus(FocusState.Keyboard);
                            this._timer.Start();
                            return;
                        }
                        else
                        {
                            var msg = new ContentDialog();
                            msg.Title             = "Error";
                            msg.Content           = "残高が不足しています。";
                            msg.PrimaryButtonText = "OK";
                            await msg.ShowAsync();

                            JANCODE_TEXT.Focus(FocusState.Keyboard);
                            this._timer.Start();
                            return;
                        }

                        // 決済可否チェックここまで
                    }
                    else
                    {
                        // ダイアログ表示中も裏でタイマーが走るようなので一旦止めています。
                        // CheckFunction.Show_Messageを使用していないのは非同期スレッドが立つらしく確認する前にタイマーがスタートしてしまう為

                        var msg = new ContentDialog();
                        msg.Title             = "Error";
                        msg.Content           = "登録されていないカードです。";
                        msg.PrimaryButtonText = "OK";
                        await msg.ShowAsync();

                        JANCODE_TEXT.Focus(FocusState.Keyboard);
                        this._timer.Start();
                    }
                }
                else
                {
                    this._timer.Start();
                    USER_INFO.Text = "";
                }
            }
            catch (Exception es)
            {
                var msg = new ContentDialog();
                msg.Title             = "Error";
                msg.Content           = "不明なエラーです。管理者に問い合わせて下さい。\n" + es;
                msg.PrimaryButtonText = "OK";
                await msg.ShowAsync();

                JANCODE_TEXT.Focus(FocusState.Keyboard);
                this._timer.Start();
            }
        }