/// <summary> /// 刪除角色 /// </summary> /// <param name="requestData"></param> /// <returns></returns> public bool DeleteMutiple(LearningRoleDeleteResquest requestData) { var tokenService = new TokenService(); var tokenInfo = tokenService.GetTokenInfo(requestData.Token).Result; if (tokenInfo == null) { return(false); } var db = _uow.DbContext; var learningCircleService = new LearningCircleService(); var learningCircleInfo = learningCircleService.GetDetailByOuterKey(requestData.CircleKey.ToLower()); if (learningCircleInfo == null) { return(false); } var circleMemberService = new Service.Backend.CircleMemberService(); //查出該課程的學生角色 var studentRoleInfo = db.LearningRole.FirstOrDefault(t => t.Level == 3 && t.LearningId == learningCircleInfo.Id && t.IsFixed == false); if (studentRoleInfo == null) { return(false); } foreach (var learningRoleId in requestData.Ids) { var oldLeanirngRole = db.LearningRole.Find(learningRoleId); //查不到或無法修改就跳過 if (oldLeanirngRole == null || oldLeanirngRole.IsFixed == false) { continue; } //將該角色的所有成員全部移至學生Level3 isFixed=false的角色中 var circleMemberDatas = db.CircleMemberRoleplay.Where(t => t.RoleId == learningRoleId && t.CircleId == oldLeanirngRole.LearningId); foreach (var circleMemberData in circleMemberDatas) { circleMemberData.RoleId = studentRoleInfo.Id; } oldLeanirngRole.Enable = false; oldLeanirngRole.Deleted = TimeData.Create(DateTime.UtcNow); oldLeanirngRole.DeleteUser = tokenInfo.MemberId; } db.SaveChanges(); return(true); }
/// <summary> /// 取得情感資訊 /// </summary> public IOTProjectMoctionViewModel <IOTProjectAvgDataResponse> GetMotionData(string circleKey) { var sensors = mqttDeviceService.GetDeviceSensors(Convert.ToInt64(DeviceEnum.EMotion).ToString(), accessKey).Result; var avgResponse = SetCourseStatusInitData(); var circleMemberRoleService = new Service.Backend.CircleMemberService(); var circleMemberDatas = circleMemberRoleService.GetCircleMemberRoleListByCircleKey(circleKey.ToLower()); var memberCount = circleMemberDatas.FirstOrDefault() != null?circleMemberDatas.Count() : 0; var voteService = new VoteService(); var list = voteService.GetList(circleKey); if (list != null) { var index = 0; var avgPresentCount = 0; var avgParticipateCount = 0; var itemList = voteService.GetItemListByCircleKey(circleKey); //計算參與平均數 foreach (var vote in list) { avgPresentCount += vote.PresentCount.HasValue ? vote.PresentCount.Value : 0; var items = itemList.Where(t => t.ActVoteId == vote.VoteId).ToList(); foreach (var item in items) { avgParticipateCount += item.ChooseCount; } index++; } avgPresentCount = avgPresentCount / index; avgParticipateCount = avgParticipateCount / index; avgResponse.ParticipateCount = avgParticipateCount; avgResponse.PresentCount = avgPresentCount; //計算參與率 avgResponse.ParticipateRate = (avgParticipateCount != 0 && avgPresentCount != 0) ? Math.Round((Convert.ToDouble(avgParticipateCount) / Convert.ToDouble(avgPresentCount)) * 100, 0) : 0; } foreach (var sensor in sensors) { //情緒平均資料 if (sensor.Id == "FeelingAvg") { var sensorData = sensor.Value.FirstOrDefault(); if (sensorData == null || sensorData.Count() <= 0) { continue; } try { var apiData = JsonConvert.DeserializeObject <IOTProjectViewModel <IOTProjectAverageData> >(sensorData); var statusIndex = 0; var sensorMemberCount = 0.00; foreach (var data in apiData.Data) { var _data = new IOTProjectAvgDataResponse() { StatusCountAvg = Math.Round(data.ChooseCountAvg, 0), StatusID = data.ChooseID }; sensorMemberCount += _data.StatusCountAvg; avgResponse.Status[statusIndex] = _data; statusIndex++; } foreach (var responseData in avgResponse.Status) { responseData.Percentage = Math.Round((responseData.StatusCountAvg / sensorMemberCount) * 100, 0); } avgResponse.RecordTime = apiData.RecordTime; } catch (Exception ex) { return(avgResponse); } } } return(avgResponse); }