47 lines
2.1 KiB
Markdown
47 lines
2.1 KiB
Markdown
# 活動人員簽到簽退
|
||
|
||
## 資料關聯
|
||
Classes.ID (1) <-> (*) SignUp.CourseID
|
||
|
||
## 資料類別
|
||
* 各資料存取類別、資料集合類別、資料類別已有程式碼
|
||
* 如需擴充加在 DAC_XXXX2.cs 裡面
|
||
* DAC_Classes:活動資料處理類別
|
||
* ClassesList:活動資料集類別
|
||
* ClassesItem:活動資料項目類別
|
||
* DAC_SignUp:活動參加人員資料處理類別
|
||
* SignUpList:活動參加人員資料集類別
|
||
* SignUpItem:活動參加人員資料項目類別
|
||
* CheckInItem:簽到資料項目類別(用於 UploadCheckIns)
|
||
|
||
## 畫面檔
|
||
* 沒有,這是寫給 WinForm 客戶端使用的後端服務
|
||
|
||
## 後端服務
|
||
* Services/ClassesService.asmx
|
||
* 活動的後端服務
|
||
* SearchClasses:查詢活動清單
|
||
* Services/SignUpService.asmx
|
||
* 活動參加人員的後端服務
|
||
* SearchSignUps:以活動編號(CourseID)查詢參加人員
|
||
* UploadCheckIns(int courseID, List<CheckInItem> items):批量上傳簽到簽退資料
|
||
* 上傳資料欄位(CheckInItem):CourseID, Name, Mobile, IDNumber, IDType, MealType, Email, SignUpType, CheckInType, CheckInTime
|
||
* 驗證規則
|
||
* CourseID: 必填、必須存在於課程表 Classes.ID
|
||
* Name, Mobile: 必填
|
||
* SignUpType: 必填,允許值 (預約 / 現場)
|
||
* CheckInType: 必填,允許值 (CHECKIN / CHECKOUT)
|
||
* CheckInTime: 必填,格式 yyyy-MM-dd HH:mm:ss
|
||
* 處理邏輯
|
||
* 按 (CourseID, Name, Mobile) 查詢 SignUp 表
|
||
* 若找到則依照 CheckInType 更新 CheckInTime/CheckOutTime,計入成功筆數
|
||
* 若沒找到則新增 (SignUpType="現場"),並依 CheckInType 設定時間欄位,計入成功筆數
|
||
* 不使用 transaction
|
||
* 回應格式
|
||
* 成功: { Success: true, Message: "...", Data: { CreatedCount, UpdatedCount, FailedCount, SkippedCount, SuccessIDs, Errors } }
|
||
* 失敗: { Success: false, Message: "...", Data: {...} }
|
||
|
||
## 技術規格
|
||
* 前端使用 Vue.js 實作,不使用 Server Control
|
||
* 後端使用 WebService,要 EnableSession
|