private void Purchase_Decide_Button_Click(object sender, RoutedEventArgs e) { Enable_Toggle(); DatabaseAccess db = new DatabaseAccess(); if (db.Check_Payment(StaticParam._mID, total_price)) { db.Exec_Payment(StaticParam._mID, total_price); foreach (Item item in Items) { db.Insert_Purchase_Log(StaticParam._mID, item._janCode, item._num, item._price); db.Reduce_Item(item._janCode, item._num); } CheckFunction.Message_Show("決済に成功しました。", ""); Frame.Navigate(typeof(MenuScreen)); } else { CheckFunction.Message_Show("Error", "残高が不足しています。"); Enable_Toggle(); return; } }
// タイマー用メソッド 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(); } }