57 lines
2.3 KiB
Markdown
57 lines
2.3 KiB
Markdown
# 簽到簽退
|
|
|
|
## 畫面
|
|
* MainForm 上的 tabPage1
|
|
* 上面有兩個區域:預約報名、現場報到
|
|
* 使用銜接鍵盤介面的二維碼掃描器來掃碼
|
|
|
|
### 預約報名
|
|
* txtQRCode 為掃碼輸入框
|
|
* 掃碼之後查詢本地數據庫的 SignUp 表的 QRCode 欄位
|
|
* 查到時
|
|
* 依照 cbCheckMode 的值(簽到 / 簽退)更新本地數據庫欄位(CheckInTime / CheckOutTime)
|
|
* 本地數據庫 CheckIn 表新增一筆
|
|
* lbCheckResult 顯示綠底白字 "報到成功"
|
|
* lbName 顯示 Name
|
|
* lbMobile 顯示 Mobile
|
|
* lbCheckInTime 顯示 CheckInTime
|
|
* lbCheckOutTime 顯示 CheckOutTime
|
|
* 未查到
|
|
* lbCheckResult 顯示紅底白字 "無此筆資料"
|
|
* lbName 內容清空
|
|
* lbMobile 內容清空
|
|
* lbCheckInTime 內容清空
|
|
* lbCheckOutTime 內容清空
|
|
|
|
### 現場報到
|
|
* txtName 輸入姓名 (必須輸入)
|
|
* txtMobile 輸入手機號 (必須輸入)
|
|
* 點擊 btnMenualCheckIn 按鈕執行現場報到
|
|
* cbCheckMode 的值 = "簽到" 時
|
|
* 用姓名與手機號查找本地數據庫 SignUp 表
|
|
* 查到:
|
|
* 本地數據庫 SignUp 表更新 CheckInTime
|
|
* 本地數據庫 CheckIn 表新增一筆
|
|
* 未查到:
|
|
* 本地數據庫 SignUp 表新增一筆
|
|
* 本地數據庫 CheckIn 表新增一筆
|
|
* lbMenualCheckInTime 顯示 CheckInTime
|
|
* lbMenualCheckOutTime 空白
|
|
* cbCheckMode 的值 = "簽退" 時
|
|
* 用姓名與手機號查找本地數據庫 SignUp 表
|
|
* 查到:
|
|
* 本地數據庫 SignUp 表更新 CheckOutTime
|
|
* 本地數據庫 CheckIn 表新增一筆
|
|
* 未查到:
|
|
* 本地數據庫 SignUp 表新增一筆
|
|
* 本地數據庫 CheckIn 表新增一筆
|
|
* lbMenualCheckInTime 顯示 CheckInTime
|
|
* lbMenualCheckOutTime 顯示 CheckOutTime
|
|
|
|
## 資料庫表結構
|
|
* 已有數據庫表結構以及存取類別,在 Data/Models 和 Data/Repositories 目錄
|
|
* 亦可參照 資料儲存服務.md
|
|
|
|
## 邏輯澄清
|
|
* CheckInTime/CheckOutTime:若已有值則不覆蓋,只在為 NULL 時才寫入
|
|
* 異常處理:數據庫操作失敗時顯示錯誤訊息,不清空UI |