/// <summary> /// 老師更新點名簽到記錄 /// </summary> /// <param name="learningId">學習圈Id</param> /// <param name="token">老師token</param> /// <param name="eventId">點名活動Guid</param> /// <param name="studId">被編輯點名狀態的學生MemberId</param> /// <param name="status">點名狀態 1出席,2缺席,3遲到,4早退,5請假</param> /// <returns></returns> public async Task SignIn_Modify(string circleKey, Guid token, string outerKey, int stuId, int status) { try { var auth = new ServerCheckItem() { OuterKey = outerKey, CircleKey = circleKey, ModuleFun = SignInFunction.Admin }; bool chekc = AuthCheck(token, ref auth); if (chekc) { if (auth.ModuleAuth) { if (AttendanceState.Status.ContainsKey(status.ToString())) { // 更新點名紀錄 var log = signInLogService.UpdateLog(auth.MemberId, auth.EventId, stuId, status.ToString()); // 新增一筆通知 string stateName = AttendanceState.GetStateName(status.ToString()); string text = "您的狀態已更新:" + stateName; var noticeService = new NoticeService(); noticeService.AddNoticeSaveChange(circleKey, stuId, auth.EventId, text); var signalrService = new SignalrService(); //發通知給學生 var connectIdAndNoticeData = signalrService.GetConnectIdAndData(circleKey.ToLower(), log.StuId, SignalrConnectIdType.One, SignalrDataType.Notice); SignalrClientHelper.SendNotice(connectIdAndNoticeData); //告訴同學點名狀態已改變 Clients.Group(circleKey.ToLower()).signIn_StatusChanged(outerKey, log); // 發送推播 await PushOnChangedSignIn(circleKey.ToLower(), auth.EventId, log.StudId, stateName); } else { Clients.Caller.onError("SignIn_Modify", "狀態錯誤!"); } } else { Clients.Caller.onError("SignIn_Modify", "您沒有權限!"); } } else { Clients.Caller.onError("SignIn_Modify", "身分驗證失敗,請重新登入!token:[" + token + "]"); } } catch (Exception ex) { Clients.Caller.onError("SignIn_Modify", "老師點名發生意外: " + ex.Message); } }