コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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);
        }