Пример #1
0
        /// <summary>
        /// 建立學習圈 - [後臺管理API用]
        /// </summary>
        /// <returns></returns>
        public LearningCircle CreateLearningCircle(string name, string circleKey, string description, string token, DateTime startDate, DateTime endDate, int?orgId, string objective = null, int?section = null)
        {
            var db = _uow.DbContext;

            var checkDBEmpty = db.LearningCircle.FirstOrDefault(t => t.LearningOuterKey == circleKey && t.Name == name);

            if (checkDBEmpty != null)
            {
                return(checkDBEmpty);
            }
            var now          = DateTime.UtcNow;
            var tokenService = new TokenService();
            var creator      = tokenService.GetTokenInfo(token).Result;
            var entity       = new LearningCircle()
            {
                Created     = TimeData.Create(now),
                Deleted     = TimeData.Create(null),
                Updated     = TimeData.Create(null),
                CreateUser  = creator.MemberId,
                Description = description,
                Name        = name,
                Enable      = true,
                Visibility  = true,
                StartDate   = startDate.ToUniversalTime(),
                EndDate     = endDate.ToUniversalTime(),
                LCType      = 10,
                Objective   = objective
            };

            if (section.HasValue)
            {
                entity.Section = section.Value.ToString();
            }
            if (orgId.HasValue)
            {
                entity.OrgId = orgId.Value;
            }

            if (circleKey == null || circleKey == string.Empty)
            {
                circleKey = string.Format("{0}{1}", now.Ticks.ToString(), "course");
            }

            entity.LearningOuterKey = circleKey.ToLower();

            db.LearningCircle.Add(entity);
            db.SaveChanges();
            var memberInviteService = new MemberInviteService();
            var memerInviteInfo     = memberInviteService.CreateFromCreateLearningCircle(circleKey.ToLower());

            return(entity);
        }
        public IHttpActionResult Post(CircleMemberRoleRequest requestData)
        {
            var response = new Infrastructure.ViewModel.Base.BaseResponse <string>();

            var requestService = new Service.Utility.RequestDataHelper <CircleMemberRoleRequest>();
            var checkColumnKey = new string[1] {
                "token"
            };
            var checkEmpty = requestService.CheckColumnEmpty(requestData, checkColumnKey);

            response.Success = false;
            if (checkEmpty == false)
            {
                response.Message = "遺漏參數";
                response.State   = Infrastructure.ViewModel.Base.LogState.RequestDataError;
                return(Content(HttpStatusCode.BadRequest, response));
            }

            //後臺新增
            if (requestData.InviteCode == null && requestData.RoleId.HasValue)
            {
                var authService     = new AuthService();
                var checkManageAuth = authService.CheckCourseManageAuth(requestData.Token, requestData.CircleKey.ToLower());
                //除了課程管理者可以修改,其他角色都不得修改
                if (checkManageAuth == null || checkManageAuth.CircleMemberSetting.AddCircleMember == false)
                {
                    response.Message = "無法加入";
                    response.State   = Infrastructure.ViewModel.Base.LogState.Error;
                    return(Ok(response));
                }

                var proxyReponse = circleMemberService.InsertMutipleCircleMemberRole(requestData);
                response.Success = proxyReponse;
                if (proxyReponse)
                {
                    response.Message = "新增成功";
                    return(Ok(response));
                }
                else
                {
                    response.State   = Infrastructure.ViewModel.Base.LogState.Error;
                    response.Message = "新增失敗";
                    return(Ok(response));
                }
            }
            else
            { //邀請碼新增
                var inviteService = new MemberInviteService();
                var inviteInfo    = inviteService.GetDetail(requestData.InviteCode.ToLower());

                if (inviteInfo == null)
                {
                    response.Message = "無法加入";
                    response.State   = Infrastructure.ViewModel.Base.LogState.Error;
                    return(Ok(response));
                }
                var inviteResponse      = new Infrastructure.ViewModel.Base.BaseResponse <InviteResponseData>();
                var organizationService = new OrganizationService();
                var checkCanRegister    = organizationService.CheckCanRegister(requestData.OrgCode);
                if (checkCanRegister == false)
                {
                    inviteResponse.Message = "不允許加入課程";
                    inviteResponse.State   = Infrastructure.ViewModel.Base.LogState.Error;
                    inviteResponse.Data    = new InviteResponseData()
                    {
                        InviteStatus = InviteStatusEnum.EndInvite, IsOrgRegister = false, CircleKey = requestData.CircleKey
                    };
                    return(Ok(inviteResponse));
                }

                var responseData = circleMemberService.InsertCircleMemberRoleByInvite(requestData);

                inviteResponse.Success = true;
                inviteResponse.Data    = responseData;
                inviteResponse.Message = responseData.InviteStatus.ToString();
                return(Ok(inviteResponse));
            }
        }