Beispiel #1
0
        /// <summary>
        /// 根據新增學習圈建立驗證碼
        /// </summary>
        /// <param name="circleKey"></param>
        /// <returns></returns>
        public bool CreateFromCreateLearningCircle(string circleKey)
        {
            var learningCircleService = new LearningCircleService();
            var learningCircleInfo    = learningCircleService.GetDetailByOuterKey(circleKey.ToLower());

            if (learningCircleInfo == null)
            {
                return(false);
            }
            var codeService  = new CaptchaHelper();
            var code         = codeService.GenerateRandomText(10);
            var checkHadCode = _uow.MemberInviteRepo.GetFirst(t => t.CircleKey.ToLower() == circleKey.ToLower() && t.Enable == true && t.IsCourseCode == true);

            if (checkHadCode == null)
            {
                var entity = new MemberInvite()
                {
                    CircleKey    = circleKey.ToLower(),
                    Code         = code.ToLower(),
                    CreateDate   = DateTime.UtcNow,
                    Enable       = true,
                    InviteEmail  = null,
                    InviteUrl    = null,
                    IsCourseCode = true,
                    Type         = 0
                };
                _uow.DbContext.MemberInvite.Add(entity);
                _uow.SaveChanges();
            }
            return(true);
        }
        /// <summary>
        /// 取得登入者學習圈資訊
        /// </summary>
        /// <param name="strAccess"></param>
        /// <returns></returns>

        public IHttpActionResult Get([FromUri]string strAccess) {
            strAccess = HttpUtility.UrlDecode(strAccess);
            var requestData = JsonConvert.DeserializeObject<Infrastructure.ViewModel.CourseManage.GetAllMyCourseRequest>(strAccess);
            if (requestData.Account == null ||
                requestData.ICanToken == null)
                return Content(HttpStatusCode.BadRequest, "遺漏參數");

            var result = new ResultBaseModel<Infrastructure.ViewModel.CourseManage.GetAllMyCourseResponse>();
            var tokenService = new TokenService();
            var checkToken = tokenService.GetTokenInfo(requestData.ICanToken).Result;
            if (checkToken == null)
            {
                result.Success = false;
                result.Message = "已登出";
                result.State = Infrastructure.ViewModel.Base.LogState.Logout;
                return Ok(result);
            }
            var service = new LearningCircleService();
            var response = service.APPGetAllMyCourse(requestData.ICanToken);
            if (response == null)
            {
                result.Success = false;
                result.Message = "查無資料";
                return Ok(result);
            }
            result.Success = true;
            result.Message = "查詢成功";
            if (response.FirstOrDefault() != null)
                result.Data = response.ToArray();
            else
                result.Data = new Infrastructure.ViewModel.CourseManage.GetAllMyCourseResponse[0];
            return Ok(result);
        }
Beispiel #3
0
        /// <summary>
        /// 取得請假單資訊 - forAPP
        /// </summary>
        /// <param name="eventId"></param>
        /// <param name="isManage"></param>
        /// <returns></returns>
        public Infrastructure.ViewModel.ActivityFunction.Leave.GetAbSenceFormDetailResponse GetAbSenceFormDetail(Infrastructure.ViewModel.ActivityFunction.Leave.GetAbSenceFormDetailRequest requestData)
        {
            var eventId = Utility.OuterKeyHelper.CheckOuterKey(requestData.OuterKey);

            if (eventId == null || eventId == Guid.Empty)
            {
                return(null);
            }
            var authService           = new AuthService();
            var learningcircleService = new LearningCircleService();
            var learningInfo          = learningcircleService.GetDetailByOuterKey(requestData.ClassID);

            if (learningInfo == null)
            {
                return(null);
            }
            var tokenService = new TokenService();
            var checkMember  = tokenService.GetTokenInfo(requestData.ICanToken).Result;

            if (checkMember == null)
            {
                return(null);
            }
            var isManage = authService.CheckFunctionAuth(learningInfo.Id, ParaCondition.LeaveFunction.Review, checkMember.MemberId);

            return(GetAPPDetailLeaveSqlQuery(_uow.DbContext.AttendanceLeave.FirstOrDefault(t => t.EventId == eventId), isManage));
        }
Beispiel #4
0
        /// <summary>
        /// 取得個人的傳統課表資訊
        /// </summary>
        /// <param name="token"></param>
        /// <returns></returns>
        public WeekTableViewModel GetByToken(string token)
        {
            var tokenService = new TokenService();
            var tokenInfo    = tokenService.GetTokenInfo(token);

            if (tokenInfo == null)
            {
                return(null);
            }

            var learningCircleService = new LearningCircleService();
            var learningCircles       = learningCircleService.GetLearningCircleListByToken(token, null, null);

            if (learningCircles == null)
            {
                return(null);
            }

            var responseData = new WeekTableViewModel();

            foreach (var learningCircle in learningCircles)
            {
                var data = GetByLearningCircleId(learningCircle.Id);
                responseData.WeekTable = new List <WeekTable>();
                if (data != null)
                {
                    responseData.WeekTable.AddRange(data);
                }
                responseData.StartDate = learningCircle.StartDate.Value.ToLocalTime();
                responseData.EndDate   = learningCircle.EndDate.Value.ToLocalTime();
            }
            return(responseData);
        }
Beispiel #5
0
        /// <summary>
        /// 取得課綱資訊
        /// </summary>
        /// <param name="circleKey"></param>
        /// <param name="isDelete"></param>
        /// <returns></returns>
        public IEnumerable <Syllabus> GetSyllabusByCircleKey(string circleKey, bool isDelete)
        {
            var learningCircleService = new LearningCircleService();
            var learningCircleInfo    = learningCircleService.GetDetailByOuterKey(circleKey);
            var result = GetSyllabus(learningCircleInfo.Id, false);

            return(result);
        }
Beispiel #6
0
        private bool AuthCheck(Guid token, ref ServerCheckItem item)
        {
            var memberService = new MemberService();
            var memberInfo    = memberService.TokenToMember(token.ToString()).Result;

            if (memberInfo == null)
            {
                return(false);
            }
            // 是否為合法使用者
            item.MemberId = memberInfo.Id;
            if (item.MemberId > 0)
            {
                // 取得活動Guid
                if (!string.IsNullOrEmpty(item.OuterKey))
                {
                    var eventId = Service.Utility.OuterKeyHelper.CheckOuterKey(item.OuterKey);
                    if (eventId.HasValue)
                    {
                        item.EventId = eventId.Value;
                    }
                    else
                    {
                        return(false);
                    }
                }
                // 取得學習圈 id
                if (!string.IsNullOrEmpty(item.CircleKey))
                {
                    var learningcircleService = new LearningCircleService();
                    var learningcircleInfo    = learningcircleService.GetDetailByOuterKey(item.CircleKey);
                    if (learningcircleInfo != null)
                    {
                        item.CircleId = learningcircleInfo.Id;
                    }
                    else
                    {
                        return(false);
                    }
                }
                //如果是smartTA的權限,直接true
                if (memberInfo.RoleName == "3")
                {
                    item.ModuleAuth = true;
                    return(true);
                }

                // 判斷特定權限
                if (!string.IsNullOrEmpty(item.ModuleFun))
                {
                    var authService = new AuthService();
                    item.ModuleAuth = authService.CheckFunctionAuth(item.CircleId, item.ModuleFun, item.MemberId);
                }
            }
            return(true);
        }
Beispiel #7
0
        /// <summary>
        /// 長出點名活動列表資料
        /// </summary>
        /// <param name="memberId">參與者編號</param>
        /// <param name="circleKey">學習圈代碼</param>
        /// <param name="pages">查詢索引</param>
        /// <param name="rows">查詢數量</param>
        /// <returns></returns>
        public IEnumerable <SignInModuleList> GetSignInList(int memberId, string circleKey, int?pages, int?rows)
        {
            var activityService       = new ActivityService();
            var authService           = new AuthService();
            var acts                  = activityService.GetActivityListByModuleKey(circleKey, Utility.ParaCondition.ModuleType.SignIn, pages, rows);
            var learningCircieService = new LearningCircleService();
            var resultList            = new List <SignInModuleList>();
            var learningCircleInfo    = learningCircieService.GetDetailByOuterKey(circleKey.ToLower());
            var memberService         = new MemberService();

            if (learningCircleInfo != null)
            {
                var IsTeacher = authService.CheckFunctionAuth(learningCircleInfo.Id, "signInadmin", memberId);
                //取得學習圈所有人

                foreach (var act in acts)
                {
                    var item = new SignInModuleList();
                    //狀態列表
                    item.SignInCount = IsTeacher ? GetSignInStatusLog(act.OuterKey, memberService.GetStudentList(circleKey).Count()) : new List <Infrastructure.ValueObject.SignStatus>();
                    item.MyStatus    = IsTeacher ? 0 : GetStudentStatus(memberId, act.OuterKey);
                    if (act.ActivityDate.HasValue)
                    {
                        item.ActivityTime = act.ActivityDate.Value.ToLocalTime();
                    }
                    if (act.Created.Utc.HasValue)
                    {
                        item.CreateTime = act.Created.Local.Value;
                    }
                    if (act.Publish_Utc.HasValue)
                    {
                        item.Publish_date = act.Publish_Utc.Value.ToLocalTime();
                    }
                    if (act.StartDate.HasValue)
                    {
                        item.StartDate = act.StartDate.Value.ToLocalTime();
                    }
                    if (act.Duration.HasValue)
                    {
                        item.Duration = act.Duration.Value;
                    }

                    item.GroupId   = circleKey;
                    item.ModuleKey = Utility.ParaCondition.ModuleType.SignIn;
                    item.OuterKey  = Service.Utility.OuterKeyHelper.GuidToPageToken(act.OuterKey);
                    if (act.StartDate.HasValue && act.Duration.HasValue)
                    {
                        var endDate = act.StartDate.Value.Add(new TimeSpan(0, 0, act.Duration.Value));
                        item.RemainSeconds = (endDate - DateTime.UtcNow).TotalSeconds;
                    }
                    resultList.Add(item);
                }
            }
            return(resultList);
        }
Beispiel #8
0
        public IHttpActionResult Post(LearningCirclePostRequest requestData)
        {
            var result          = new Infrastructure.ViewModel.Base.BaseResponse <Infrastructure.Entity.LearningCircle>();
            var requestService  = new Service.Utility.RequestDataHelper <LearningCirclePostRequest>();
            var checkColumnKeys = new string[7] {
                "name", "description", "token", "startdate", "enddate", "weeks", "place"
            };
            var checkEmpty = requestService.CheckColumnEmpty(requestData, checkColumnKeys);

            if (checkEmpty == false)
            {
                result.Success = false;
                result.Message = "確認是否遺漏資訊";
                return(Content(HttpStatusCode.BadRequest, result));
            }
            var service = new LearningCircleService();
            var data    = service.CreateLearningCircle(requestData.Name,
                                                       requestData.CircleKey,
                                                       requestData.Description,
                                                       requestData.Token,
                                                       requestData.StartDate.Value,
                                                       requestData.EndDate.Value,
                                                       requestData.OrgId
                                                       );

            if (data == null)
            {
                result.Success = false;
                result.Message = "新增失敗";
                result.State   = Infrastructure.ViewModel.Base.LogState.Error;
                return(Ok(result));
            }
            result.Success = true;
            var learningRoleService = new LearningRoleService();
            var authService         = new AuthService();
            //建立老師角色身分
            var teacherRole = learningRoleService.AddLearningEditRole(data.CreateUser.Value, data.Id, "老師", true, false, 1);
            //建立助教角色身分
            var surpportTeacherRole = learningRoleService.AddLearningEditRole(data.CreateUser.Value, data.Id, "助教", true, false, 2);
            //建立學生角色身分
            var studentRole = learningRoleService.AddLearningEditRole(data.CreateUser.Value, data.Id, "學生", false);
            //建立學習圈內角色權限
            var insertAuthSuccess = authService.InsertLearningCircleAllRoleAuth(data.Id, data.CreateUser.Value);

            var weekService      = new WeekTableService();
            var weekDatas        = weekService.CreateWeekDatas(requestData.Token, data.LearningOuterKey, 0, requestData.Place, requestData.StartDate.Value, requestData.EndDate.Value, requestData.Weeks);
            var timeTableService = new TimeTableService();

            var timeTableDatas = requestData.ClassWeekType > 0 ? timeTableService.CreateByCircleKey(data.LearningOuterKey, requestData.ClassWeekType) : timeTableService.CreateByCircleKey(data.LearningOuterKey);

            result.Message = "新增成功";
            result.Data    = data;
            return(Ok(result));
        }
Beispiel #9
0
        /// <summary>
        /// 建立傳統周課表 - 一筆傳統周課表
        /// </summary>
        /// <returns></returns>
        public WeekTable CreateWeekData(string token, string circleKey, int classWeekType, string place, DateTime startDate, DateTime endDate)
        {
            var tokenService = new TokenService();
            var tokenInfo    = tokenService.GetTokenInfo(token).Result;

            if (tokenInfo == null)
            {
                return(null);
            }

            var learningCircleService = new LearningCircleService();
            var learningCircleinfo    = learningCircleService.GetDetailByOuterKey(circleKey);

            if (learningCircleinfo == null)
            {
                return(null);
            }
            var startHour        = Convert.ToInt32(startDate.ToString("HH"));
            var endHour          = Convert.ToInt32(endDate.ToString("HH"));
            var dayOfWeekService = new Utility.DayOfWeekTools();
            var week             = dayOfWeekService.ChangeToCht(startDate.DayOfWeek);

            //9點以前都是第一節,9點以後都(目前小時-7)節
            startHour = startHour <= 9 ? 1 : startHour - 7;
            endHour   = endHour <= 9 ? 1 : endHour - 7;
            var entity = new WeekTable()
            {
                ClassWeekType    = classWeekType,
                CreateUtcDate    = DateTime.UtcNow,
                Creator          = tokenInfo.MemberId,
                EndPeriod        = endHour,
                EndTime          = endDate.ToUniversalTime(),
                LearningCircleId = learningCircleinfo.Id,
                Place            = place,
                StartPeriod      = startHour,
                StartTime        = startDate.ToUniversalTime(),
                Week             = week
            };

            try
            {
                var db = _uow.DbContext;
                db.WeekTable.Add(entity);
                db.SaveChanges();
                return(entity);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
        public override void Delete()
        {
            var  learningCircleService = new LearningCircleService();
            var  leanringCircleInfo    = learningCircleService.GetDetailByOuterKey(_parameters.CircleKey.ToLower());
            var  authService           = new AuthService();
            bool _isAdmin = authService.CheckFunctionAuth(leanringCircleInfo.Id, Service.Utility.ParaCondition.SignInFunction.Admin, _parameters.MemberId);

            var _service = new SignInService();

            if (_isAdmin)
            {
                _service.Delete(_parameters.EventId, _parameters.MemberId);
            }
        }
        public override void Delete()
        {
            var  authService        = new AuthService();
            var  learningService    = new LearningCircleService();
            var  learningCircleInfo = learningService.GetDetailByOuterKey(_parameters.CircleKey);
            bool _isAdmin           = authService.CheckFunctionAuth(learningCircleInfo.Id, Service.Utility.ParaCondition.DiscussionFunction.Manage, _parameters.MemberId);

            var _service = new DiscussionService();

            if (_isAdmin)
            {
                //刪除主題討論活動
                _service.DeleteDiscussion(_parameters.EventId, _parameters.MemberId);
            }
        }
Beispiel #12
0
        /// <summary>
        /// 加入學習圈
        /// </summary>
        /// <param name="circleKey"></param>
        /// <param name="token"></param>
        public BaseResponse <JObject> joinGroup(string circleKey, Guid token)
        {
            var    result   = new BaseResponse <JObject>();
            string error    = string.Empty;
            string groupKey = circleKey.ToLower();

            //使用者 的 連接ID(重新連接還是會使用相同的ID)
            var connId  = Context.ConnectionId;    //取得裝置
            var version = 0;

            if (Context.QueryString != null && !string.IsNullOrEmpty(Context.QueryString["version"]))
            {
                version = Convert.ToInt32(Context.QueryString["version"]);
            }
            //塞人至相對應的group
            _connections.Add(circleKey.ToLower(), connId, version);

            try
            {
                var tokenService = new TokenService();
                var tokenInfo    = tokenService.GetTokenInfo(token.ToString()).Result;
                //更新connectionId
                // Models.Auth.AuthMember.UpdateConnectionId(connId, memberAccount.Result.Id);
                var learningCircleService = new LearningCircleService();
                var learningCircleInfo    = learningCircleService.GetDetailByOuterKey(circleKey);
                var activityService       = new ActivityService();
                var authList = activityService.CircleAuth(tokenInfo.MemberId, learningCircleInfo.Id);
                // 將 連接ID 與 群組代碼 放入SignalR的Groups,之後就能透過Groups(群組代碼)將訊息廣播給使用者
                error = "Groups.Add";
                Groups.Add(connId, groupKey);
                mqttCircleKey = circleKey;
                // 呼叫前端的Method(發送連接成功的Request)
                error = "joinGroup Clients.Caller.onConnected token:[" + token + "]";
                Clients.Caller.onConnected(groupKey, token, connId, authList);
                result.Data    = authList;
                result.Success = true;
                return(result);
                //  var checkiCan5ManToken = ican5API.CheckiCanManToken(token, memberAccount, circleKey);
            }
            catch (Exception ex)
            {
                Clients.Caller.onError("joinGroup", "連接學習圈發生意外: token:[" + token + "]" + ex.Message + error);
                result.Success = false;
                return(result);
            }
        }
Beispiel #13
0
        /// <summary>
        /// 取得列表 - ForAPP
        /// </summary>
        /// <returns></returns>
        public Infrastructure.ViewModel.ActivityFunction.Leave.GetAbsenceFormListResponse GetAbsenceFormList(Infrastructure.ViewModel.ActivityFunction.Leave.GetAbsenceFormListRequest requestData)
        {
            var tokenService = new TokenService();
            var checkMember  = tokenService.GetTokenInfo(requestData.ICanToken).Result;

            if (checkMember == null)
            {
                return(null);
            }
            var authService           = new AuthService();
            var learningcircleService = new LearningCircleService();
            var learningInfo          = learningcircleService.GetDetailByOuterKey(requestData.ClassID);

            if (learningInfo == null)
            {
                return(null);
            }
            var auth         = authService.CheckFunctionAuth(learningInfo.Id, ParaCondition.LeaveFunction.Review, checkMember.MemberId);
            var responseData = new Infrastructure.ViewModel.ActivityFunction.Leave.GetAbsenceFormListResponse();

            if (auth)
            {
                //老師介面
                var searchData = requestData.CheckDate.HasValue ?
                                 GetAppList(learningInfo.Id, true, null, requestData.CheckDate.Value) :
                                 GetAppList(learningInfo.Id, true, null, null);
                responseData.Forms = searchData;
                responseData.IsQueryFormSuccess = true;
                responseData.IsManager          = true;
                responseData.IsQueryRoomSuccess = true;
            }
            else
            {
                //學生介面
                var searchData = requestData.CheckDate.HasValue ?
                                 GetAppList(learningInfo.Id, false, checkMember.MemberId, requestData.CheckDate.Value) :
                                 GetAppList(learningInfo.Id, false, checkMember.MemberId, null);
                responseData.Forms = searchData;
                responseData.IsQueryFormSuccess = true;
                responseData.IsManager          = false;
                responseData.IsQueryRoomSuccess = true;
            }
            responseData.ClassID   = learningInfo.LearningOuterKey;
            responseData.ClassName = learningInfo.Name;
            return(responseData);
        }
        /// <summary>
        /// 新增單筆資訊
        /// </summary>
        /// <param name="circleKey"></param>
        /// <param name="account"></param>
        /// <param name="token"></param>
        /// <param name="roleId"></param>
        /// <returns></returns>
        public bool InsertCircleMemberRole(string circleKey, string account, string token, int roleId)
        {
            var memberService = new MemberService();
            var memberInfo    = memberService.TokenToMember(token).Result;

            if (memberInfo == null)
            {
                return(false);
            }

            var learningRoleService = new LearningRoleService();
            var learningRoleInfo    = learningRoleService.GetDetailById(roleId);

            if (learningRoleInfo == null)
            {
                return(false);
            }
            var learningCircleService = new LearningCircleService();
            var learningCircleInfo    = learningCircleService.GetDetailByOuterKey(circleKey.ToLower());

            if (learningCircleInfo == null)
            {
                return(false);
            }
            var accountInfo = memberService.AccountToMember(account, learningCircleInfo.OrgId);

            if (accountInfo == null)
            {
                return(false);
            }

            var entity = new CircleMemberRoleplay()
            {
                CircleId    = learningCircleInfo.Id,
                Enable      = true,
                MemberId    = accountInfo.Id,
                RoleId      = roleId,
                ResType     = 0,
                ExternalRid = null
            };

            _uow.DbContext.CircleMemberRoleplay.Add(entity);
            return(true);
        }
Beispiel #15
0
        /// <summary>
        /// 建立請假單
        /// </summary>
        /// <param name="requestData"></param>
        /// <param name="files"></param>
        /// <returns></returns>
        public Infrastructure.ViewModel.SignInLogViewModel SetNewAbsenceForm(Infrastructure.ViewModel.ActivityFunction.Leave.SetNewAbsenceFormRequest requestData, List <FileStorage> files, List <Stream> streams)
        {
            var tokenService = new TokenService();
            var checkMember  = tokenService.GetTokenInfo(requestData.Token.ToString()).Result;

            if (checkMember == null)
            {
                return(null);
            }
            var authService           = new AuthService();
            var learningcircleService = new LearningCircleService();
            var learningInfo          = learningcircleService.GetDetailByOuterKey(requestData.CircleKey);

            if (learningInfo == null)
            {
                return(null);
            }
            var auth = authService.CheckFunctionAuth(learningInfo.Id, ParaCondition.LeaveFunction.Create, checkMember.MemberId);

            if (auth)
            {
                var uploadData = new Infrastructure.DataTransferObject.UploadFileModel()
                {
                    Token           = requestData.Token,
                    Title           = requestData.Title,
                    Content         = requestData.Content,
                    CircleKey       = requestData.CircleKey,
                    LeaveDate       = requestData.LeaveDate,
                    LeaveCategoryId = requestData.LeaveCategoryId
                };
                var createRespone = Add(learningInfo, checkMember.MemberId, uploadData, files, streams);
                if (createRespone == null)
                {
                    return(null);
                }
                else
                {
                    return(createRespone);
                }
            }
            return(null);
        }
        public IHttpActionResult Post([FromBody]Infrastructure.ViewModel.CourseManage.GetAllMyCourseRequest value) {
            if (value.Account == null ||
                value.ICanToken == null)
                return Content(HttpStatusCode.BadRequest, "遺漏參數");

            var result = new Infrastructure.ViewModel.Base.ResultBaseModel<Infrastructure.ViewModel.CourseManage.GetAllMyCourseResponse>();
            var service = new LearningCircleService();
            var response = service.APPGetAllMyCourse(value.ICanToken);
            if (response == null)
            {
                result.Success = false;
                result.Message = "查詢失敗";
                result.State = Infrastructure.ViewModel.Base.LogState.Error;
                return Ok(response);
            }
            result.Success = true;
            result.Message = "查詢成功";
            result.Data = response.ToArray();
            return Ok(result);
        }
Beispiel #17
0
        /// <summary>
        /// 根據課程資訊建立每日課表
        /// </summary>
        /// <param name="circleKey"></param>
        /// <param name="classWeekType"></param>
        /// <returns></returns>
        public bool CreateByCircleKey(string circleKey, int?classWeekType = 0)
        {
            var learningcircleService = new LearningCircleService();
            var learningcircleInfo    = learningcircleService.GetDetailByOuterKey(circleKey);

            if (learningcircleInfo == null)
            {
                return(false);
            }

            var dateTimeTools = new Utility.DateTimeTools();
            var datas         = dateTimeTools.Getdata(learningcircleInfo.StartDate.Value.ToLocalTime(), learningcircleInfo.EndDate.Value.ToLocalTime(), circleKey, classWeekType);

            if (datas != null && datas.FirstOrDefault() != null)
            {
                var db = _uow.DbContext;
                db.TimeTable.AddRange(datas);
                db.SaveChanges();
            }
            return(true);
        }
Beispiel #18
0
        public async Task PushOnCreatedSignIn(string circleKey, Guid eventId, int?myId)
        {
            var creatorName   = string.Empty;
            var memberService = new MemberService();

            if (myId != null)
            {
                creatorName = memberService.UserIdToAccount(myId.Value).Name;
            }
            var learningcircleService = new LearningCircleService();
            var members      = learningcircleService.GetCircleMemberList(circleKey, myId);
            var eventMessage = string.Format("{0}新增了點名活動", creatorName);
            var pushService  = new PushService();
            // 推播文字:點名活動即將開始({日期} {時間})
            // var message = string.Format("{0}(建立時間:{1:yyyy/M/d HH:mm})", eventMessage, DateTime.Now);
            var message = string.Format("{0}", eventMessage);

            if (members.Count > 0)
            {
                await pushService.PushMsgAsync("ToEventCard", circleKey, eventId, "推播_查看點名-開始", members.ToArray(), message);
            }
        }
Beispiel #19
0
        public IHttpActionResult Put(LearningCirclePostRequest requestData)
        {
            var result          = new Infrastructure.ViewModel.Base.BaseResponse <Infrastructure.Entity.LearningCircle>();
            var requestService  = new Service.Utility.RequestDataHelper <LearningCirclePostRequest>();
            var checkColumnKeys = new string[4] {
                "name", "circlekey", "description", "token"
            };
            var checkEmpty = requestService.CheckColumnEmpty(requestData, checkColumnKeys);
            //取得資料
            var requestFormData = HttpContext.Current.Request.Form;

            if (checkEmpty == false)
            {
                result.Success = false;
                result.Message = "確認是否遺漏資訊";
                result.State   = Infrastructure.ViewModel.Base.LogState.RequestDataError;
                return(Content(HttpStatusCode.BadRequest, result));
            }
            var service = new LearningCircleService();
            var data    = service.UpdateLearningCircle(requestData.Name,
                                                       requestData.CircleKey,
                                                       requestData.Description,
                                                       requestData.Token, true, requestData.Objective,
                                                       requestData.Remark
                                                       );

            if (data == null)
            {
                result.Success = false;
                result.Message = "編輯失敗";
                result.State   = Infrastructure.ViewModel.Base.LogState.Error;
                return(Ok(result));
            }
            result.Success = true;
            result.Message = "編輯成功";
            result.Data    = data;
            return(Ok(result));
        }
Beispiel #20
0
        private void ShowRecordList(string circleKey)
        {
            var _actService           = new ActivityService();
            var learningCircleService = new LearningCircleService();

            var members = learningCircleService.GetCircleMemberIdList(circleKey);

            foreach (var mem in members)
            {
                var myConn = HttpContext.Current.Cache.Get(mem.ToString()) as List <string>;
                if (myConn != null)
                {
                    var data   = _actService.GetLatestList(mem, "");
                    var objHub = GlobalHost.ConnectionManager.GetHubContext <SignalRHub.WiicoHub>();

                    // 所有歸屬在這個id下的connection都會收到
                    foreach (var connId in myConn)
                    {
                        objHub.Clients.Client(connId).showRecordList(data);
                    }
                }
            }
        }
        public IHttpActionResult Get([FromUri] string strAccess)
        {
            var requestData     = JsonConvert.DeserializeObject <Infrastructure.ViewModel.CourseManage.GetCourseDetailRequest>(strAccess);
            var requestService  = new Service.Utility.RequestDataHelper <Infrastructure.ViewModel.CourseManage.GetCourseDetailRequest>();
            var checkColumnKeys = new string[3] {
                "account", "classid", "icantoken"
            };
            var checkEmpty = requestService.CheckColumnEmpty(requestData, checkColumnKeys);

            if (checkEmpty == false)
            {
                return(Content(HttpStatusCode.InternalServerError, "遺漏參數"));
            }
            var response     = new ResultBaseModel <Infrastructure.ViewModel.CourseManage.GetCourseDetailResponse>();
            var tokenService = new TokenService();
            var checkToken   = tokenService.GetTokenInfo(requestData.ICanToken).Result;

            if (checkToken == null)
            {
                response.Success = false;
                response.Message = "已登出";
                response.State   = Infrastructure.ViewModel.Base.LogState.Logout;
                return(Ok(response));
            }


            var service = new LearningCircleService();
            var data    = service.APPGetCourseDetail(requestData.ICanToken, requestData.ClassID);

            response.Success = true;
            response.Message = "查詢成功";
            response.Data    = new Infrastructure.ViewModel.CourseManage.GetCourseDetailResponse[1] {
                data
            };

            return(Ok(response));
        }
Beispiel #22
0
        /// <summary>
        /// 取得課程的邀請狀態
        /// </summary>
        /// <param name="token"></param>
        /// <param name="circleKey"></param>
        /// <param name="inviteType">查詢邀請對象 0: 成員 | 1 : 管理者</param>
        /// <returns></returns>
        public bool GetLearningInviteStatus(string token, string circleKey, int inviteType)
        {
            var db           = _uow.DbContext;
            var tokenService = new TokenService();
            var tokenInfo    = tokenService.GetTokenInfo(token).Result;

            if (tokenInfo == null)
            {
                return(false);
            }
            var authService = new AuthService();

            if (authService.CheckCourseTeacher(tokenInfo.MemberId, circleKey.ToLower()) || authService.CheckCourseAdmin(tokenInfo.MemberId, circleKey.ToLower()))
            {
                var learningCircleService = new LearningCircleService();
                var learningCircleinfo    = learningCircleService.GetDetailByOuterKey(circleKey.ToLower());
                if (learningCircleinfo == null)
                {
                    return(false);
                }
                return(inviteType == 0 ? learningCircleinfo.InviteEnable : learningCircleinfo.AdminInviteEnable);
            }
            return(false);
        }
Beispiel #23
0
        /// <summary>
        /// 刪除學習圈資訊
        /// </summary>
        /// <returns></returns>

        public IHttpActionResult Delete(string token, string circlekey)
        {
            var result = new Infrastructure.ViewModel.Base.BaseResponse <Infrastructure.Entity.LearningCircle>();

            if (token == null || circlekey == null)
            {
                result.Success = false;
                result.Message = "確認是否遺漏資訊";
                return(Content(HttpStatusCode.BadRequest, result));
            }
            var service = new LearningCircleService();
            var data    = service.DeleteLearningCircleByCircleKey(circlekey.ToLower(), token);

            if (data == false)
            {
                result.Success = false;
                result.Message = "刪除失敗";
                result.State   = Infrastructure.ViewModel.Base.LogState.Error;
                return(Ok(result));
            }
            result.Success = true;
            result.Message = "刪除成功";
            return(Ok(result));
        }
Beispiel #24
0
        /// <summary>
        /// 修改周課表
        /// </summary>
        /// <param name="token"></param>
        /// <param name="circleKey"></param>
        /// <param name="place"></param>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <param name="weeks"></param>
        /// <returns></returns>
        public bool UpdateWeekDatas(string token, string circleKey, string place, DateTime startDate, DateTime endDate, int classWeekType, List <int> weeks)
        {
            var tokenService = new TokenService();
            var tokenInfo    = tokenService.GetTokenInfo(token).Result;

            if (tokenInfo == null)
            {
                return(false);
            }

            var learningCircleService = new LearningCircleService();
            var learningCircleinfo    = learningCircleService.GetDetailByOuterKey(circleKey);

            if (learningCircleinfo == null)
            {
                return(false);
            }

            var startHour        = Convert.ToInt32(startDate.ToString("HH"));
            var endHour          = Convert.ToInt32(endDate.ToString("HH"));
            var dayOfWeekService = new Utility.DayOfWeekTools();
            var startWeek        = startDate.DayOfWeek;

            //9點以前都是第一節,9點以後都(目前小時-7)節
            startHour = startHour <= 9 ? 1 : startHour - 7;
            endHour   = endHour <= 9 ? 1 : endHour - 7;

            try
            {
                var db = _uow.DbContext;
                //排序 周日:0 ~周六:6
                weeks = weeks.OrderBy(t => t).ToList();
                //查看week是否有錯誤資料
                var weekMax = weeks.Max(t => t);
                if (weekMax >= 7)
                {
                    return(false);
                }
                //取得資料庫目前傳統課表
                var sqlWeekTablesDatas = GetByLearningCircleId(learningCircleinfo.Id);
                //暫存作為刪除的資料
                var tempWeekTableDatas = sqlWeekTablesDatas.ToList();
                foreach (var week in weeks)
                {
                    var weekInfo = (DayOfWeek)week;
                    //踢出不要刪除的weekTable資訊
                    if (tempWeekTableDatas.Count() > 0)
                    {
                        var removeTempData = tempWeekTableDatas.FirstOrDefault(t => t.StartTime.ToLocalTime().DayOfWeek.ToString() == weekInfo.ToString());
                        if (removeTempData != null)
                        {
                            tempWeekTableDatas.Remove(removeTempData);
                        }
                    }

                    //設定開始日期
                    var _startDate = startDate;
                    var checkWeek  = week - (int)startWeek;
                    if (checkWeek < 0)
                    {
                        _startDate = startDate.AddDays(7 + checkWeek);
                    }
                    else if (checkWeek > 0)
                    {
                        _startDate = startDate.AddDays(checkWeek);
                    }

                    //找出並修改要保留的資料
                    var editDataInfo = sqlWeekTablesDatas.FirstOrDefault(t => t.StartTime.ToLocalTime().DayOfWeek.ToString() == weekInfo.ToString());
                    if (editDataInfo != null)
                    {
                        editDataInfo.Place         = place;
                        editDataInfo.StartTime     = _startDate.ToUniversalTime();
                        editDataInfo.EndTime       = endDate.ToUniversalTime();
                        editDataInfo.StartPeriod   = startHour;
                        editDataInfo.EndPeriod     = endHour;
                        editDataInfo.ClassWeekType = classWeekType;
                        continue;
                    }

                    //資料庫無該資料,需要新增
                    var entity = new WeekTable()
                    {
                        ClassWeekType    = classWeekType,
                        CreateUtcDate    = DateTime.UtcNow,
                        Creator          = tokenInfo.MemberId,
                        EndPeriod        = endHour,
                        EndTime          = endDate.ToUniversalTime(),
                        LearningCircleId = learningCircleinfo.Id,
                        Place            = place,
                        StartPeriod      = startHour,
                        StartTime        = _startDate.ToUniversalTime(),
                        Week             = dayOfWeekService.ChangeToCht(weekInfo)
                    };
                    db.WeekTable.Add(entity);
                }
                //刪除timeTable資訊
                foreach (var deleteWeek in tempWeekTableDatas)
                {
                    var timeTableInfo        = db.TimeTable.Where(t => t.Course_No == circleKey).ToList();
                    var deleteTimeTableDatas = timeTableInfo.Where(t => t.StartDate.Value.DayOfWeek.ToString() == deleteWeek.StartTime.DayOfWeek.ToString()).ToList();
                    db.TimeTable.RemoveRange(deleteTimeTableDatas);
                }
                //刪除weektable資訊
                db.WeekTable.RemoveRange(tempWeekTableDatas);
                db.SaveChanges();
                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
Beispiel #25
0
        /// <summary>
        /// 加入學習圈
        /// </summary>
        /// <param name="circleKey"></param>
        /// <param name="token"></param>
        public BaseResponse <JObject> joinGroup(string circleKey, Guid token)
        {
            var    result   = new BaseResponse <JObject>();
            string error    = string.Empty;
            string groupKey = circleKey.ToLower();
            var    version  = 0;

            if (Context.QueryString != null && !string.IsNullOrEmpty(Context.QueryString["version"]))
            {
                version = Convert.ToInt32(Context.QueryString["version"]);
            }
            //塞人至相對應的group
            _connections.Add(groupKey, Context.ConnectionId, version);
            try
            {
                var memberService = new MemberService();
                var memberInfo    = memberService.TokenToMember(token.ToString()).Result;
                if (memberInfo == null)
                {
                    return(null);
                }

                //如果是smartTA登入
                if (memberInfo.RoleName == "3")
                {
                    var smartTAService = new Service.Backend.SmartTAService();
                    //先把學習圈內的smartTA都踢掉
                    var smartTAs = smartTAService.GetSmartTAs(groupKey);
                    if (smartTAs != null)
                    {
                        foreach (var smartTA in smartTAs)
                        {
                            Groups.Remove(smartTA.ConnectionId, groupKey);
                        }
                    }
                    var setSmartTAValue = new SmartTAPostRequest()
                    {
                        CircleKeys  = new List <string>(),
                        ClassRoomId = memberInfo.Account
                    };
                    setSmartTAValue.CircleKeys.Add(groupKey);
                    //建立smartTA關聯
                    var setSmartTA = smartTAService.InsertRelation(setSmartTAValue);
                }
                var learningCircleService = new LearningCircleService();
                var learningCircleInfo    = learningCircleService.GetDetailByOuterKey(groupKey);
                var activityService       = new ActivityService();
                var authList = activityService.CircleAuth(memberInfo.Id, learningCircleInfo.Id);
                // 將 連接ID 與 群組代碼 放入SignalR的Groups,之後就能透過Groups(群組代碼)將訊息廣播給使用者
                error = "Groups.Add";
                Groups.Add(Context.ConnectionId, groupKey);
                mqttCircleKey = groupKey;
                // 呼叫前端的Method(發送連接成功的Request)
                error = "joinGroup Clients.Caller.onConnected token:[" + token + "]";
                Clients.Caller.onConnected(groupKey, token, Context.ConnectionId, authList);
                result.Data    = authList;
                result.Success = true;
                return(result);
            }
            catch (Exception ex)
            {
                Clients.Caller.onError("joinGroup", "連接學習圈發生意外: token:[" + token + "]" + ex.Message + error);
                result.Success = false;
                return(result);
            }
        }
Beispiel #26
0
        /// <summary>
        /// 修改開始結束日期資訊
        /// </summary>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <param name="circleKey"></param>
        /// <returns></returns>
        public bool UpdateByCircleKey(DateTime startDate, DateTime endDate, string circleKey)
        {
            var learningcircleService = new LearningCircleService();
            var learningcircleInfo    = learningcircleService.GetDetailByOuterKey(circleKey);

            if (learningcircleInfo == null)
            {
                return(false);
            }
            var dateTimeTools = new Utility.DateTimeTools();
            var datas         = dateTimeTools.Getdata(learningcircleInfo.StartDate.Value.ToLocalTime(), learningcircleInfo.EndDate.Value.ToLocalTime(), circleKey);
            //  var removeDatas   = datas.Where(t => t.StartDate.Value < startDate || t.EndDate.Value > endDate).ToList();
            var db          = _uow.DbContext;
            var dbData      = db.TimeTable.Where(t => t.Course_No == circleKey).ToList(); //取得DB目前所有上課時間地點資訊
            var allData     = dbData.Union(datas);                                        //聯集需求的日期
            var deleteDatas = allData.Except(datas);                                      //找出不是需求的日期 -與DB資料的差集
            //找出不是需求的日期
            var removeDatas = db.TimeTable.Where(t => t.Course_No == circleKey && (t.StartDate.Value <startDate || t.EndDate.Value> endDate)).ToList();

            removeDatas = removeDatas.Union(deleteDatas).ToList(); //聯集需要刪除的資料
            //刪除更新設定區間外的日期
            db.TimeTable.RemoveRange(removeDatas);
            //取得最初的開始日期
            var firstTimeTable = datas.OrderBy(t => t.StartDate).FirstOrDefault();
            //取得最後的結束日期
            var lastTimeTable    = datas.OrderByDescending(t => t.EndDate).FirstOrDefault();
            var weekTableService = new WeekTableService();
            var weekTableInfo    = weekTableService.GetByCirclekey(circleKey);
            var weekOfDays       = weekTableInfo.WeekTable.Select(t => t.StartTime.ToLocalTime().DayOfWeek.ToString()).OrderBy(t => t);

            //新增DB所沒有的startDate日期區塊
            if (firstTimeTable.StartDate.HasValue && (firstTimeTable.StartDate.Value >= startDate))
            {
                var insertStartDates = new List <TimeTable>();

                var diffStartDay = (firstTimeTable.StartDate.Value - startDate).Days + 1;
                for (var firstDay = 1; firstDay < diffStartDay; firstDay++)
                {
                    var lastEntity = new TimeTable()
                    {
                        ClassRoom = firstTimeTable.ClassRoom,
                        ClassTime = firstTimeTable.ClassTime,
                        Course_No = firstTimeTable.Course_No,
                        Course_Id = firstTimeTable.Course_Id,
                        EndDate   = firstTimeTable.EndDate,
                        StartDate = firstTimeTable.StartDate
                    };
                    var lastStartDate = lastEntity.StartDate.Value.AddDays(-(firstDay));
                    var lastEndDate   = lastEntity.EndDate.Value.AddDays(-(firstDay));
                    if (weekOfDays.FirstOrDefault(t => t == lastStartDate.DayOfWeek.ToString()) != null)
                    {
                        lastEntity.StartDate = lastStartDate;
                        lastEntity.EndDate   = lastEndDate;
                        db.TimeTable.Add(lastEntity);
                    }
                }
            }

            //新增DB所沒有的endDate日期 區塊
            if (lastTimeTable.EndDate.HasValue && (lastTimeTable.EndDate.Value >= endDate))
            {
                var insertStartDates = new List <TimeTable>();
                var diffEndDay       = (endDate - lastTimeTable.EndDate.Value).Days + 1;
                for (var endDay = 1; endDay <= diffEndDay; endDay++)
                {
                    var nextEntity = new TimeTable()
                    {
                        ClassRoom = lastTimeTable.ClassRoom,
                        ClassTime = lastTimeTable.ClassTime,
                        Course_No = lastTimeTable.Course_No,
                        Course_Id = lastTimeTable.Course_Id,
                        EndDate   = lastTimeTable.EndDate,
                        StartDate = lastTimeTable.StartDate
                    };;
                    var nextStartDate = nextEntity.StartDate.Value.AddDays(endDay);
                    var nextEndDate   = nextEntity.EndDate.Value.AddDays(endDay);
                    if (weekOfDays.FirstOrDefault(t => t == nextStartDate.DayOfWeek.ToString()) != null)
                    {
                        nextEntity.StartDate = nextStartDate;
                        nextEntity.EndDate   = nextEndDate;
                        db.TimeTable.Add(nextEntity);
                    }
                }
            }

            //補上新加入的weeks資料
            foreach (var data in datas)
            {
                var checkData = dbData.FirstOrDefault(t => t.StartDate.Value.Date == data.StartDate.Value.Date);
                if (checkData != null)
                {
                    continue;
                }

                db.TimeTable.Add(data);
            }


            db.SaveChanges();
            return(true);
        }
Beispiel #27
0
        /// <summary>
        /// 取得學習圈列表
        /// </summary>
        /// <param name="strAccess"></param>
        /// <returns></returns>
        public IHttpActionResult Get(string strAccess)
        {
            var requestService  = new Service.Utility.RequestDataHelper <LearningCircleGetRequest>();
            var requestData     = JsonConvert.DeserializeObject <LearningCircleGetRequest>(strAccess);
            var checkColumnKeys = new string[1] {
                "token"
            };
            var checkEmpty      = requestService.CheckColumnEmpty(requestData, checkColumnKeys);
            var backendResponse = new Infrastructure.ViewModel.Base.BaseResponse <List <LearningCircleManageViewModel> >();

            backendResponse.Success = false;
            backendResponse.Data    = new List <LearningCircleManageViewModel>();
            if (checkEmpty == false)
            {
                backendResponse.Message = "請確認是否遺漏資訊";
                return(Content(HttpStatusCode.BadRequest, backendResponse));
            }
            var learningCircleService = new LearningCircleService();
            //    var data = service.GetLearningCircleListByToken(token, orgId, searchName);
            var tokenService = new TokenService();
            var tokenInfo    = tokenService.GetTokenInfo(requestData.Token).Result;

            if (tokenInfo == null)
            {
                backendResponse.Message = "已登出";
                backendResponse.State   = Infrastructure.ViewModel.Base.LogState.Logout;
                return(Ok(backendResponse));
            }
            //查詢列表
            if (requestData.CircleKey == null || requestData.CircleKey == string.Empty)
            {
                var data = learningCircleService.GetLearningCircleManageList(tokenInfo.MemberId, requestData.SearchName, requestData.OrgId);
                if (data == null)
                {
                    backendResponse.Success = false;
                    backendResponse.Message = "查詢失敗";
                    backendResponse.State   = Infrastructure.ViewModel.Base.LogState.Error;
                    return(Ok(backendResponse));
                }

                backendResponse.Message = "查詢成功";
                backendResponse.Success = true;
                backendResponse.Data    = data.ToList();
                return(Ok(backendResponse));
            }
            //查詢單個課程
            else
            {
                var detailResponse = new Infrastructure.ViewModel.Base.BaseResponse <LearningCircleGetResponse>();
                var data           = learningCircleService.GetLearningCircleInfo(requestData.CircleKey.ToLower());
                if (data == null)
                {
                    detailResponse.Success = false;
                    detailResponse.Message = "查詢失敗";
                    detailResponse.State   = Infrastructure.ViewModel.Base.LogState.Error;
                }
                else
                {
                    detailResponse.Success = true;
                    detailResponse.Message = "查詢成功";
                    detailResponse.Data    = data;
                }
                return(Ok(detailResponse));
            }
        }
        public async Task <IHttpActionResult> Get()
        {
            var response = new Infrastructure.ViewModel.Base.BaseResponse <string>();

            multipartFormDataModel = new SetNewAbsenceFormRequest();
            await SetFileData();

            if (multipartFormDataStreamProvider.FormData == null)
            {
                response.Message = "遺漏參數";
                response.State   = Infrastructure.ViewModel.Base.LogState.RequestDataError;
                return(Content(HttpStatusCode.BadRequest, response));
            }
            //設定參數
            var token = multipartFormDataStreamProvider.FormData.Get("icantoken") != null?multipartFormDataStreamProvider.FormData.GetValues("icantoken")[0] : null;

            var circleKey = multipartFormDataStreamProvider.FormData.Get("classid") != null?multipartFormDataStreamProvider.FormData.GetValues("classid")[0] : null;

            var title = multipartFormDataStreamProvider.FormData.Get("title") != null?multipartFormDataStreamProvider.FormData.GetValues("title")[0] : null;

            var content = multipartFormDataStreamProvider.FormData.Get("content") != null?multipartFormDataStreamProvider.FormData.GetValues("content")[0] : null;

            var leavedate = multipartFormDataStreamProvider.FormData.Get("leavedate") != null?multipartFormDataStreamProvider.FormData.GetValues("leavedate")[0] : null;

            var leavecategoryid = multipartFormDataStreamProvider.FormData.Get("leavecategoryid") != null?multipartFormDataStreamProvider.FormData.GetValues("leavecategoryid")[0] : null;

            if (token == null || circleKey == null || title == null || content == null || leavedate == null || leavecategoryid == null)
            {
                response.Message = "遺漏參數";
                response.State   = Infrastructure.ViewModel.Base.LogState.RequestDataError;
                return(Content(HttpStatusCode.BadRequest, response));
            }

            multipartFormDataModel.Token           = Guid.Parse(token);
            multipartFormDataModel.CircleKey       = circleKey.ToLower();
            multipartFormDataModel.Title           = HttpUtility.UrlDecode(title);
            multipartFormDataModel.Content         = HttpUtility.UrlDecode(content);
            multipartFormDataModel.LeaveDate       = Convert.ToDateTime(leavedate);
            multipartFormDataModel.LeaveCategoryId = Convert.ToInt32(leavecategoryid);

            var service = new LeaveService();

            var data = service.SetNewAbsenceForm(multipartFormDataModel, multipartFormDataFiles, fileStreams);

            objHub.Clients.Group(multipartFormDataModel.CircleKey.ToLower()).addLeave(data);


            var tokenService = new TokenService();
            var checkToken   = tokenService.GetTokenInfo(multipartFormDataModel.Token.ToString()).Result;

            if (checkToken == null)
            {
                response.Success = false;
                response.Message = "已登出";
                response.State   = Infrastructure.ViewModel.Base.LogState.Logout;
                return(Ok(response));
            }

            response.Success = data != null ? true : false;
            response.Message = data != null ? "建立成功" : "建立失敗";

            //單元測試結果
            if (HttpContext.Current == null)
            {
                return(Ok(response));
            }

            var pushService = new PushService();
            // 檢查通過,save data
            var message         = pushService.PushOnCreatedLeave(multipartFormDataModel.CircleKey, data.EventId, checkToken.MemberId, multipartFormDataModel.LeaveDate.ToLocalTime()).Result;
            var activityService = new ActivityService();

            var signalrService = new SignalrService();

            //發通知給老師們
            var connectIdAndNoticeData = signalrService.GetConnectIdAndData(multipartFormDataModel.CircleKey, checkToken.MemberId, SignalrConnectIdType.Teachers, SignalrDataType.Notice);
            var learningCircleService  = new LearningCircleService();
            var teachers = learningCircleService.GetCircleTeacherIdListBySql(multipartFormDataModel.CircleKey.ToLower(), checkToken.MemberId);

            // 將通知寫入資料庫
            activityService.AddMutipleNotice(multipartFormDataModel.CircleKey, teachers, data.EventId, message);
            SignalrClientHelper.SendNotice(connectIdAndNoticeData);

            foreach (var item in data.OuterKeySignInLog)
            {
                //告訴同班的有活動的開始時間被修改
                SignalrClientHelper.SignIn_StatusChanged(multipartFormDataModel.CircleKey, item.Key, item.Value);
            }
            //    return result;
            return(Ok(response));
        }
Beispiel #29
0
        /// <summary>
        /// 雲端版APP專用
        /// </summary>
        /// <param name="circleKey"></param>
        /// <param name="token"></param>
        /// <param name="files"></param>
        /// <returns></returns>
        public Infrastructure.BusinessObject.MaterialEvent AddFile(string circleKey, string token, HttpFileCollection files)
        {
            var tokenService          = new TokenService();
            var checkToken            = tokenService.GetTokenInfo(token).Result;
            var learningcircleService = new LearningCircleService();
            var learningcircleinfo    = learningcircleService.GetDetailByOuterKey(circleKey);

            var createDateTime = DateTime.UtcNow;

            if (checkToken == null)
            {
                return(null);
            }
            var fileService = new FileService();
            var newFiles    = fileService.UploadFile(checkToken.MemberId, files);
            var file        = newFiles.FirstOrDefault();

            if (file == null)
            {
                return(null);
            }
            try
            {
                var db             = _uow.DbContext;
                var materialEntity = new Infrastructure.Entity.ActMaterial()
                {
                    LearningId        = learningcircleinfo.Id,
                    Name              = file.Name,
                    EventId           = file.FileGuid,
                    CreateUser        = checkToken.MemberId,
                    Created           = Infrastructure.Property.TimeData.Create(createDateTime),
                    Updated           = Infrastructure.Property.TimeData.Create(null),
                    Deleted           = Infrastructure.Property.TimeData.Create(null),
                    GoogleDriveFileId = file.FileGuid.ToString("N"),
                    FileImgUrl        = string.Format("{0}api/imgFile/{1}/{2}/{3}", loginServer, file.FileGuid.ToString("N"), maxImgWidth, maxImgHeight),
                    FileLength        = file.FileSize,
                    FileType          = file.FileContentType,
                    Visibility        = true
                };
                var activityEntity = new Activitys()
                {
                    CardisShow  = true,
                    CreateUser  = checkToken.MemberId,
                    Created     = Infrastructure.Property.TimeData.Create(createDateTime),
                    Updated     = Infrastructure.Property.TimeData.Create(null),
                    Deleted     = Infrastructure.Property.TimeData.Create(null),
                    OuterKey    = file.FileGuid,
                    Publish_Utc = createDateTime,
                    ToRoomId    = circleKey,
                    ModuleKey   = Utility.ParaCondition.ModuleType.Material,
                    StartDate   = createDateTime,
                    IsActivity  = true
                };
                db.ActMaterial.Add(materialEntity);
                db.Activitys.Add(activityEntity);
                db.SaveChanges();
            }
            catch (Exception ex)
            {
                return(null);

                throw ex;
            }
            var memberService = new MemberService();
            var memberInfo    = memberService.UserIdToAccount(checkToken.MemberId);

            var response = new Infrastructure.BusinessObject.MaterialEvent()
            {
                ClassId       = circleKey,
                CreateAccount = memberInfo.Account,
                Creator       = memberInfo.Id.ToString(),
                OuterKey      = file.FileGuid,
                CreateDate    = createDateTime
            };

            return(response);
        }
Beispiel #30
0
        /// <summary>
        /// 處理資料
        /// </summary>
        /// <param name="requestData"></param>
        /// <returns></returns>
        public bool WeekTableDataProxy(WeekTablePostRequest requestData)
        {
            var tokenService = new TokenService();
            var tokenInfo    = tokenService.GetTokenInfo(requestData.Token).Result;

            if (tokenInfo == null)
            {
                return(false);
            }
            if (requestData.WeekTableData == null)
            {
                return(false);
            }
            var insertDatas           = requestData.WeekTableData.WeekTable.Where(t => t.Id == 0);
            var learningCircleService = new LearningCircleService();
            var learningCircleInfo    = learningCircleService.GetDetailByOuterKey(requestData.CircleKey.ToLower());

            if (learningCircleInfo == null)
            {
                return(false);
            }
            var startDateTime  = requestData.WeekTableData.StartDate;
            var endDateTime    = requestData.WeekTableData.EndDate;
            var dayOfWeekTools = new Utility.DayOfWeekTools();
            var DateTimeTools  = new Utility.DateTimeTools();

            //處理新增資料
            foreach (var insertData in insertDatas)
            {
                insertData.LearningCircleId = learningCircleInfo.Id;
                insertData.ClassWeekType    = 0;
                insertData.Creator          = tokenInfo.MemberId;
                insertData.CreateUtcDate    = DateTime.UtcNow;
                var insertStartPeriod = DateTimeTools.DatetimeToSectionint(insertData.StartTime, true);
                var insertEndPeriod   = DateTimeTools.DatetimeToSectionint(insertData.EndTime, false);
                insertData.StartPeriod = insertStartPeriod;
                insertData.EndPeriod   = insertEndPeriod;
                /*判斷week字串與startTime的時與分,再組成對的時間*/
                //取出時與分
                var insertStartHour   = insertData.StartTime.ToUniversalTime().Hour;
                var insertStartMinute = insertData.StartTime.ToUniversalTime().Minute;
                var insertEndHour     = insertData.EndTime.ToUniversalTime().Hour;
                var insertEndMinute   = insertData.EndTime.ToUniversalTime().Minute;
                var insertDayOfWeek   = dayOfWeekTools.ChangeToDayOfWeek(insertData.Week);
                if (insertDayOfWeek == null)
                {
                    return(false);
                }
                var startDayOfWeek = startDateTime.DayOfWeek;
                if (insertDayOfWeek.Value != startDayOfWeek)
                {
                    var interval = (int)startDayOfWeek - (int)insertDayOfWeek.Value;
                    if (interval > 0)
                    {
                        startDateTime = startDateTime.AddDays(interval);
                    }
                    else
                    {
                        startDateTime = startDateTime.AddDays(7 + interval);
                    }
                }
                startDateTime        = startDateTime.AddHours(insertStartHour);
                startDateTime        = startDateTime.AddMinutes(insertStartMinute);
                endDateTime          = endDateTime.AddHours(insertEndHour);
                endDateTime          = endDateTime.AddMinutes(insertEndMinute);
                insertData.StartTime = startDateTime.ToUniversalTime();
                insertData.EndTime   = endDateTime.ToUniversalTime();
            }
            try
            {
                var db = _uow.DbContext;
                var updateLearningCircleInfo = db.LearningCircle.FirstOrDefault(t => t.LearningOuterKey.ToLower() == requestData.CircleKey.ToLower());
                if (updateLearningCircleInfo != null)
                {
                    updateLearningCircleInfo.StartDate = requestData.WeekTableData.StartDate.ToUniversalTime();
                    updateLearningCircleInfo.EndDate   = requestData.WeekTableData.EndDate.ToUniversalTime();
                }
                db.WeekTable.AddRange(insertDatas);
                var dbData = GetByCirclekey(requestData.CircleKey.ToLower());
                //聯集資料
                var unionDataIds = requestData.WeekTableData.WeekTable.Select(t => t.Id).Union(dbData.WeekTable.Select(t => t.Id));
                //找出欲刪除的資料
                var deleteDataIds = unionDataIds.Except(requestData.WeekTableData.WeekTable.Select(t => t.Id));
                foreach (var deleteDataId in deleteDataIds)
                {
                    var deleteTimeTable = db.WeekTable.Find(deleteDataId);
                    if (deleteTimeTable == null)
                    {
                        continue;
                    }
                    db.WeekTable.Remove(deleteTimeTable);
                }
                //處理編輯資料
                var updateDatas = requestData.WeekTableData.WeekTable.Where(t => t.Id > 0).ToList();
                startDateTime = requestData.WeekTableData.StartDate;
                endDateTime   = requestData.WeekTableData.EndDate;
                foreach (var updateData in updateDatas)
                {
                    var updateDataInfo    = db.WeekTable.Find(updateData.Id);
                    var updateStartPeriod = DateTimeTools.DatetimeToSectionint(updateData.StartTime, true);
                    var updateEndPeriod   = DateTimeTools.DatetimeToSectionint(updateData.EndTime, false);
                    updateDataInfo.StartPeriod   = updateStartPeriod;
                    updateDataInfo.EndPeriod     = updateEndPeriod;
                    updateDataInfo.UpdateUtcDate = DateTime.UtcNow;
                    updateDataInfo.Updater       = tokenInfo.MemberId;
                    /*判斷week字串與startTime的時與分,再組成對的時間*/
                    //取出時與分
                    var updateStartHour   = updateData.StartTime.ToUniversalTime().Hour;
                    var updateStartMinute = updateData.StartTime.ToUniversalTime().Minute;
                    var updateEndHour     = updateData.EndTime.ToUniversalTime().Hour;
                    var updateEndMinute   = updateData.EndTime.ToUniversalTime().Minute;
                    var updateDayOfWeek   = dayOfWeekTools.ChangeToDayOfWeek(updateData.Week);
                    if (updateDayOfWeek == null)
                    {
                        return(false);
                    }
                    var startDayOfWeek = startDateTime.DayOfWeek;
                    if (updateDayOfWeek.Value != startDayOfWeek)
                    {
                        var interval = (int)startDayOfWeek - (int)updateDayOfWeek.Value;
                        if (interval > 0)
                        {
                            startDateTime = startDateTime.AddDays(interval);
                        }
                        else
                        {
                            startDateTime = startDateTime.AddDays(7 + interval);
                        }
                    }
                    startDateTime            = startDateTime.AddHours(updateStartHour);
                    startDateTime            = startDateTime.AddMinutes(updateStartMinute);
                    endDateTime              = endDateTime.AddHours(updateEndHour);
                    endDateTime              = endDateTime.AddMinutes(updateEndMinute);
                    updateDataInfo.StartTime = updateData.StartTime.ToUniversalTime();
                    updateDataInfo.EndTime   = updateData.EndTime.ToUniversalTime();
                    updateDataInfo.Week      = updateData.Week;
                    updateDataInfo.Place     = updateData.Place;
                }
                db.SaveChanges();
                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }