Esempio n. 1
0
        // ------------- Helper Method ------------------------
        private DiscussionService NewDiscussionService()
        {
            var userId  = Guid.Parse(User.Identity.GetUserId());
            var service = new DiscussionService(userId);

            return(service);
        }
 public ClassViewModel() 
 {
     classDao = new ClassDao();
     userDao = new UserDao();
     discussionDao = new DiscussionDao();
     discussionService = new DiscussionService();
     classes = classDao.getClassesFromCourse(ContextUtil.Instance.Course);
 }
        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);
            }
        }
Esempio n. 4
0
        public IHttpActionResult Get(string outerKey, int?maxresult = 10)
        {
            discussionService = new DiscussionService();
            var result = new Infrastructure.ViewModel.Base.ResultBaseModel <Infrastructure.ViewModel.ActivityFunction.Discussion.DiscussionDetail>();
            var data   = discussionService.GetDetailByOuterKey(outerKey, maxresult);

            if (data != null)
            {
                result.Success = true;
                result.Data    = new Infrastructure.ViewModel.ActivityFunction.Discussion.DiscussionDetail[1] {
                    data
                };
                result.Message = "查詢成功";
            }
            else
            {
                result.Success = false;
                result.Message = "查詢失敗";
            }
            return(Ok(result));
        }
        public override ModulesListViewModel GetModulesListViewModel()
        {
            bool _isAdmin   = IsAdmin(DiscussionFunction.Manage.ToString());
            var  _pages     = System.Convert.ToInt32(_parameters.Pages);
            var  db         = _uow.DbContext;
            var  moduleActs = db.Activitys.Where(t => t.ModuleKey.Equals(_parameters.ModuleKey) && t.ToRoomId.Equals(_parameters.CircleKey) && t.CardisShow == true);

            if (_parameters.Rows != null)
            {
                var _rows = System.Convert.ToInt32(_parameters.Rows);
                moduleActs = moduleActs.OrderByDescending(t => t.Publish_Utc).Skip((_pages - 1) * _rows).Take(_rows);
            }
            else
            {
                moduleActs = moduleActs.OrderByDescending(t => t.Publish_Utc);
            }

            _list.DiscussionList = new List <DiscussionViewModel>();

            var _service = new DiscussionService();

            foreach (var act in moduleActs)
            {
                var _discussion = _service.GetForMem(act.OuterKey, _parameters.MemberId);
                _discussion.Rows  = _parameters.Rows;
                _discussion.Pages = _parameters.Pages;
                _list.DiscussionList.Add(_discussion);
            }

            _list.IsAdminRole = _isAdmin;
            _list.ModuleKey   = _parameters.ModuleKey;
            _list.LearningId  = _circle.Id;
            _list.CircleKey   = _parameters.CircleKey;
            _list.CircleName  = _circle.Name;

            return(_list);
        }
 /// <summary>
 /// Конструктор с присваиванием сервиса.
 /// </summary>
 /// <param name="discussionService">Сервисы обсуждения.</param>
 /// <param name="voteService">Сервисы оценок.</param>
 /// <param name="cardService">Сервисы карт.</param>
 public DiscussionController(DiscussionService discussionService, VoteService voteService, CardService cardService)
 {
     this.discussionService = discussionService;
     this.voteService       = voteService;
     this.cardService       = cardService;
 }
        /// <summary>
        /// 建立新的留言資訊
        /// </summary>
        /// <returns></returns>
        public async Task <IHttpActionResult> Post()
        {
            var response = new Infrastructure.ViewModel.Base.ResultBaseModel <DiscussionSendMsg>();

            var actModuleMessageService = new MessageService();
            var discussionservice       = new DiscussionService();

            #region 將request值塞入model中

            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 activityOuterKey = multipartFormDataStreamProvider.FormData.Get("activityOuterKey") != null?multipartFormDataStreamProvider.FormData.GetValues("activityOuterKey")[0] : null;

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

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

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

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

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

            multipartFormDataModel = new DiscussionSendMsgRequestModel()
            {
                ActivityOuterKey = activityOuterKey,
                CircleKey        = circleKey,
                CommentOuterKey  = commentOuterKey,
                Msg           = msg,
                ReplyOuterKey = replyOuterKey,
                Token         = Guid.Parse(token)
            };

            #endregion

            memberService = new MemberService();
            //驗證token
            var checkMember = memberService.TokenToMember(multipartFormDataModel.Token).Result;
            if (checkMember != null)
            {
                //查看主題討論是否存在
                var discussionDBData = discussionservice.GetDBDiscussionInfo(multipartFormDataModel.ActivityOuterKey);
                if (discussionDBData != null)
                {
                    discussionMsgService = new DiscussionFuncMsg();
                    var newMsg = discussionMsgService.AddMessage(multipartFormDataModel.CircleKey, multipartFormDataModel.Msg, checkMember.Id, multipartFormDataModel.ActivityOuterKey, multipartFormDataModel.CommentOuterKey, multipartFormDataModel.ReplyOuterKey);
                    //新增成功
                    if (newMsg != null)
                    {
                        //是否有附加檔案
                        if (fileStreams != null && fileStreams.Count > 0)
                        {
                            var fileService           = new FileService();
                            var discussionFileService = new DiscussionFuncFile();
                            //  var files = await MutipartFileProxy(checkMember);
                            var uploadFileInfo = fileService.UploadFiles(checkMember.Id, multipartFormDataFiles, fileStreams.ToArray());
                            newMsg.Comment.Photos = uploadFileInfo;
                            //建立主題討論與檔案的關聯
                            var msgFileReference = discussionFileService.DiscussionFileReference(discussionDBData.Id, uploadFileInfo, newMsg.Id);
                        }
                        response.Success = true;
                        response.Message = "成功建立留言";
                        objHub           = GlobalHost.ConnectionManager.GetHubContext <SignalRHub.WiicoHub>();
                        objHub.Clients.Group(multipartFormDataModel.CircleKey.ToLower()).appendComment(newMsg);
                        response.Data = new DiscussionSendMsg[1] {
                            newMsg
                        };
                        //推播給回覆者訊息
                        if (newMsg.Comment.Parent.HasValue)
                        {
                            //查出被回覆訊息資訊
                            var replyMsgInfo = actModuleMessageService.GetMsgDBInfoByOuterKey(newMsg.CommentOuterkey);
                            memberService = new MemberService();
                            //查出被回覆者資訊
                            // var replyMemberInfo = memberService.GetMemberInfo(replyMsgInfo.CreateUser.Value);
                            var replyMemberInfo = memberService.UserIdToAccount(replyMsgInfo.CreateUser.Value);
                            if (newMsg.Comment.ReplyOuterKey == null)
                            {
                                //推播給被回覆者
                                PushMsgReplyAsync(multipartFormDataModel.CircleKey, newMsg.Comment.EventId, discussionDBData.Name, checkMember, replyMemberInfo, false);
                            }
                            else
                            {
                                PushMsgReplyAsync(multipartFormDataModel.CircleKey, newMsg.Comment.EventId, discussionDBData.Name, checkMember, replyMemberInfo, true);
                            }
                        }
                        //推播給學習圈內所有人
                        else
                        {
                            PushDiscussionSendMsgAsync(multipartFormDataModel.CircleKey, newMsg.Comment.EventId, discussionDBData.Name, checkMember);
                        }
                    }
                    else
                    {
                        response.Success = false;
                        response.Message = "建立留言失敗";
                        response.State   = Infrastructure.ViewModel.Base.LogState.Error;
                    }
                }
                else
                {
                    response.Success = false;
                    response.Message = "主題討論不存在";
                    response.State   = Infrastructure.ViewModel.Base.LogState.Error;
                }
            }
            else
            {
                response.Success = false;
                response.Message = "驗證身分失敗";
                response.State   = Infrastructure.ViewModel.Base.LogState.Logout;
            }
            return(Ok(response));
        }
Esempio n. 8
0
        /// <summary>
        /// 取得列表
        /// </summary>
        /// <param name="token">查詢者代碼</param>
        /// <param name="id">活動代號</param>
        /// <param name="strAccess">APPJsonStr</param>
        /// <param name="circleKey">學習圈代碼</param>
        /// <param name="rows">查詢數量</param>
        /// <param name="pages">查詢索引</param>
        /// <returns></returns>

        public IHttpActionResult Get(string strAccess = "", Guid?token = null, int?id = 3, string circleKey = "", int?rows = null, int?pages = 1)
        {
            //APP 呼叫
            if (strAccess != "")
            {
                var requestData = JsonConvert.DeserializeObject <Infrastructure.ViewModel.ActivityFunction.ActivityListRequest>(strAccess);
                if (requestData.Account == null ||
                    requestData.CircleKey == null ||
                    requestData.ICanToken == null ||
                    (!requestData.Id.HasValue))
                {
                    var response = new Infrastructure.ViewModel.Base.BaseResponse <string>();
                    response.Success = false;
                    response.Message = "遺漏參數";
                    response.Data    = null;
                    response.State   = Infrastructure.ViewModel.Base.LogState.RequestDataError;
                    return(Content(HttpStatusCode.BadRequest, response));
                }

                id        = (int)requestData.Id.Value;
                token     = Guid.Parse(requestData.ICanToken);
                circleKey = requestData.CircleKey;
                pages     = requestData.Pages.HasValue ? requestData.Pages : 1;
                rows      = requestData.Rows.HasValue ? requestData.Rows : 20;
            }
            tokenService = new TokenService();
            switch (id.Value)
            {
            //查詢主題討論的列表
            case (int)activityEnum.Discussion:
                discussionService = new DiscussionService();

                var discussionResponse = new Infrastructure.ViewModel.Base.ResultBaseModel <Infrastructure.ViewModel.ActivityFunction.Discussion.DiscussionModuleList>();
                var discussionData     = discussionService.GetDiscussionList(circleKey, pages, rows);

                if (discussionData != null && discussionData.FirstOrDefault() != null)
                {
                    discussionResponse.Data    = discussionData.ToArray();
                    discussionResponse.Success = true;
                    return(Ok(discussionResponse));
                }
                else
                {
                    discussionResponse.Data    = new Infrastructure.ViewModel.ActivityFunction.Discussion.DiscussionModuleList[0];
                    discussionResponse.Success = true;
                    discussionResponse.Message = "查無資料";
                    return(Ok(discussionResponse));
                }

            case (int)activityEnum.SignIn:

                try
                {
                    var checkMember    = tokenService.GetTokenInfo(token.Value.ToString()).Result;
                    var signInResponse = new Infrastructure.ViewModel.Base.ResultBaseModel <Infrastructure.ViewModel.ActivityFunction.SignIn.SignInModuleList>();
                    signInService = new SignInService();

                    var signIndata = signInService.GetSignInList(checkMember.MemberId, circleKey, pages, rows);
                    if (signIndata.FirstOrDefault() != null)
                    {
                        signInResponse.Data    = signIndata.ToArray();
                        signInResponse.Success = true;
                        signInResponse.Message = "查詢成功";
                        return(Ok(signInResponse));
                    }
                    else
                    {
                        signInResponse.Success = true;
                        signInResponse.Message = "查無資料";
                        signInResponse.Data    = new Infrastructure.ViewModel.ActivityFunction.SignIn.SignInModuleList[0];
                        return(Ok(signInResponse));
                    }
                }
                catch (Exception ex)
                {
                    return(Ok(ex.Message));
                }

            case (int)activityEnum.Vote:
                var voteService  = new VoteService();
                var voteList     = voteService.GetList(circleKey);
                var voteResponse = new Infrastructure.ViewModel.Base.ResultBaseModel <Infrastructure.ViewModel.ActivityFunction.Vote.VoteListResponse>();
                if (voteList == null)
                {
                    voteResponse.Message = "無資料";
                }
                else
                {
                    voteResponse.Message = "查詢成功";
                    voteResponse.Data    = voteList.ToArray();
                }
                voteResponse.Success = true;
                return(Ok(voteResponse));

            case (int)activityEnum.Material:
                var materialService = new MaterialService();
                try
                {
                    var materialList = new List <MaterialViewModel>();
                    if (pages.HasValue && rows.HasValue)
                    {
                        materialList = materialService.GetFiles(circleKey, pages.Value, rows.Value);
                    }
                    else
                    {
                        materialList = materialService.GetFiles(circleKey);
                    }
                    var materialResponse = new Infrastructure.ViewModel.Base.ResultBaseModel <MaterialViewModel>();
                    if (materialList == null)
                    {
                        materialResponse.Message = "無資料";
                    }
                    else
                    {
                        materialResponse.Message = "查詢成功";
                        materialResponse.Data    = materialList.ToArray();
                    }
                    materialResponse.Success = true;
                    return(Ok(materialResponse));
                }
                catch (Exception ex)
                {
                    return(Ok(ex.Message));
                }

            default:
                return(Content(HttpStatusCode.InternalServerError, "錯誤的查詢"));
            }
        }
Esempio n. 9
0
        /// <summary>
        /// 建立新的留言資訊
        /// </summary>
        /// <returns></returns>
        public IHttpActionResult Post()
        {
            var result                  = new Infrastructure.ViewModel.Base.ResultBaseModel <DiscussionSendMsg>();
            var requestFormData         = HttpContext.Current.Request.Form;
            var actModuleMessageService = new MessageService();
            var discussionservice       = new DiscussionService();

            #region 將request值塞入model中
            var msgData = new Infrastructure.ViewModel.ActivityFunction.Discussion.DiscussionSendMsgRequestModel()
            {
                Token            = Guid.Parse(requestFormData["token"].ToString()),
                CircleKey        = requestFormData["circleKey"].ToString(),
                ActivityOuterKey = requestFormData["activityOuterKey"].ToString()
            };

            if (requestFormData["commentOuterKey"] != null)
            {
                msgData.CommentOuterKey = requestFormData["commentOuterKey"].ToString();
            }

            if (requestFormData["replyOuterKey"] != null)
            {
                msgData.ReplyOuterKey = requestFormData["replyOuterKey"].ToString();
            }

            if (requestFormData["msg"] != null)
            {
                msgData.Msg = HttpUtility.UrlDecode(requestFormData["msg"].ToString());
            }
            #endregion
            var msgFiles = HttpContext.Current.Request.Files;
            memberService = new MemberService();
            //驗證token
            var checkMember = memberService.TokenToMember(msgData.Token).Result;
            if (checkMember != null)
            {
                //查看主題討論是否存在
                var discussionDBData = discussionservice.GetDBDiscussionInfo(msgData.ActivityOuterKey);
                if (discussionDBData != null)
                {
                    discussionMsgService = new DiscussionFuncMsg();
                    var newMsg = discussionMsgService.AddMessage(msgData.CircleKey, msgData.Msg, checkMember.Id, msgData.ActivityOuterKey, msgData.CommentOuterKey, msgData.ReplyOuterKey);
                    //新增成功
                    if (newMsg != null)
                    {
                        //是否有附加檔案
                        if (msgFiles.Count > 0)
                        {
                            var fileService           = new FileService();
                            var discussionFileService = new DiscussionFuncFile();
                            //  var files = await MutipartFileProxy(checkMember);
                            var uploadFileInfo = fileService.UploadFile(checkMember.Id, msgFiles);
                            newMsg.Comment.Photos = uploadFileInfo;
                            //建立主題討論與檔案的關聯
                            var msgFileReference = discussionFileService.DiscussionFileReference(discussionDBData.Id, uploadFileInfo, newMsg.Id);
                        }
                        result.Success = true;
                        result.Message = "成功建立留言";
                        objHub         = GlobalHost.ConnectionManager.GetHubContext <WiicoApi.SignalRHub.WiicoHub>();
                        objHub.Clients.Group(msgData.CircleKey.ToLower()).appendComment(newMsg);
                        result.Data = new Infrastructure.ViewModel.ActivityFunction.Discussion.DiscussionSendMsg[1] {
                            newMsg
                        };
                        //推播給回覆者訊息
                        if (newMsg.Comment.Parent.HasValue)
                        {
                            //查出被回覆訊息資訊
                            var replyMsgInfo = actModuleMessageService.GetMsgDBInfoByOuterKey(newMsg.CommentOuterkey);
                            memberService = new MemberService();
                            //查出被回覆者資訊
                            var replyMemberInfo = memberService.UserIdToAccount(replyMsgInfo.CreateUser.Value);

                            if (newMsg.Comment.ReplyOuterKey == null)
                            {
                                //推播給被回覆者
                                PushMsgReplyAsync(msgData.CircleKey, newMsg.Comment.EventId, discussionDBData.Name, checkMember, replyMemberInfo, false);
                            }
                            else
                            {
                                PushMsgReplyAsync(msgData.CircleKey, newMsg.Comment.EventId, discussionDBData.Name, checkMember, replyMemberInfo, true);
                            }
                        }
                        //推播給學習圈內所有人
                        else
                        {
                            PushDiscussionSendMsgAsync(msgData.CircleKey, newMsg.Comment.EventId, discussionDBData.Name, checkMember);
                        }
                    }
                    else
                    {
                        result.Success = false;
                        result.Message = "建立留言失敗";
                    }
                }
                else
                {
                    result.Success = false;
                    result.Message = "主題討論不存在";
                }
            }
            else
            {
                result.Success = false;
                result.Message = "驗證身分失敗";
            }
            return(Ok(result));
        }
Esempio n. 10
0
        public async Task <IHttpActionResult> POST()
        {
            discussionService = new DiscussionService();
            var result = new Infrastructure.ViewModel.Base.BaseResponse <string>();

            result.Success = false;
            result.Data    = "";
            await SetFileData();

            if (multipartFormDataStreamProvider.FormData == null)
            {
                result.Message = "遺漏參數";
                result.State   = Infrastructure.ViewModel.Base.LogState.RequestDataError;
                return(Content(HttpStatusCode.BadRequest, result));
            }
            //設定參數
            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;

            if (token == null || circleKey == null || title == null)
            {
                result.Message = "遺漏參數";
                result.State   = Infrastructure.ViewModel.Base.LogState.RequestDataError;
                return(Content(HttpStatusCode.BadRequest, result));
            }
            multipartFormDataModel           = new DiscussionCreateRequestModel();
            multipartFormDataModel.Token     = Guid.Parse(token);
            multipartFormDataModel.CircleKey = circleKey.ToLower();
            multipartFormDataModel.Title     = title;
            multipartFormDataModel.Content   = content;
            var activityOuterKey = streamProvider.FormData.Get("activityOuterKey") != null?streamProvider.FormData.GetValues("activityOuterKey")[0] : null;

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

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

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

            multipartFormDataModel.ActivityOuterKey = activityOuterKey != null ? activityOuterKey : null;
            multipartFormDataModel.CommentOuterKey  = commentOuterKey != null ? commentOuterKey : null;
            multipartFormDataModel.ReplyOuterKey    = replyOuterKey != null ? replyOuterKey : null;
            multipartFormDataModel.Msg = msg != null ? msg : null;

            //驗證token
            var checkMember = tokenService.GetTokenInfo(multipartFormDataModel.Token.ToString()).Result;

            if (checkMember != null)
            {
                authService           = new AuthService();
                discussionFileService = new DiscussionFuncFile();
                cacheService          = new CacheService();
                learingCircleService  = new LearningCircleService();
                var learningCircleInfo = learingCircleService.GetCourseLearningInfo(multipartFormDataModel.CircleKey);
                var hasAuth            = authService.CheckFunctionAuth(learningCircleInfo.Id, DiscussionFunction.Manage, checkMember.MemberId);
                //老師新增主題討論活動
                if (hasAuth)
                {
                    var newDiscussion = new Infrastructure.Entity.ActDiscussion();
                    //建立有附加檔案的主題討論
                    if (fileStreams.Count > 0)
                    {
                        var fileService = new FileService();
                        var files       = fileService.UploadFiles(checkMember.MemberId, multipartFormDataFiles, fileStreams.ToArray());
                        newDiscussion = discussionService.Add(multipartFormDataModel.CircleKey, checkMember.MemberId, multipartFormDataModel.Title, multipartFormDataModel.Content, files.Count(), 1);
                        //建立主題討論與檔案的關聯
                        var discussionFileReference = discussionFileService.DiscussionFileReference(newDiscussion.Id, files, null);
                    }
                    else
                    {
                        newDiscussion = discussionService.Add(multipartFormDataModel.CircleKey, checkMember.MemberId, multipartFormDataModel.Title, multipartFormDataModel.Content, 0, 1);
                    }
                    var rtn = new Infrastructure.ViewModel.ActivitysViewModel();
                    if (newDiscussion != null)
                    {
                        result.Success  = true;
                        result.Message  = "成功建立主題討論活動";
                        activityService = new ActivityService();
                        //顯示回傳app資訊
                        rtn = activityService.SignalrResponse(multipartFormDataModel.CircleKey, newDiscussion.EventId, ModuleType.Discussion, checkMember.MemberId, true);
                        //新增主題討論活動
                        var objHub = GlobalHost.ConnectionManager.GetHubContext <WiicoHub>();
                        objHub.Clients.Group(multipartFormDataModel.CircleKey.ToLower()).appendActivity(rtn, "");
                        //為了推播與發通知查詢學習圈成員
                        var members = cacheService.GetCircleMember(multipartFormDataModel.CircleKey);
                        if (members == null)
                        {
                            return(Ok(result));
                        }
                        var signalrService = new SignalrService();
                        //發通知
                        var connectIdAndData = signalrService.GetConnectIdAndData(multipartFormDataModel.CircleKey, checkMember.MemberId, SignalrConnectIdType.All, SignalrDataType.Activity);
                        SignalrClientHelper.ShowRecordListById(connectIdAndData);
                        //發通知
                        //  ShowRecordList(members, discussionData.CircleKey);
                        // 推播
                        PushDiscussionOnCreatedAsync(members, multipartFormDataModel.CircleKey, rtn.OuterKey, multipartFormDataModel.Title, checkMember.MemberId);
                    }
                    else
                    {
                        rtn            = null;
                        result.Success = false;
                        result.Message = "新增失敗";
                    }
                }
                else
                {
                    result.Success = false;
                    result.Message = "沒有權限";
                }
            }
            return(Ok(result));
        }
Esempio n. 11
0
        public async Task <IHttpActionResult> Put()
        {
            discussionService = new DiscussionService();
            var response = new Infrastructure.ViewModel.Base.BaseResponse <string>();

            response.Success = false;
            response.Data    = "";
            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 activityOuterKey = multipartFormDataStreamProvider.FormData.Get("activityOuterKey") != null?multipartFormDataStreamProvider.FormData.GetValues("activityOuterKey")[0] : null;

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

            if (token == null || circleKey == null || title == null || activityOuterKey == null)
            {
                response.Message = "遺漏參數";
                response.State   = Infrastructure.ViewModel.Base.LogState.RequestDataError;
                return(Content(HttpStatusCode.BadRequest, response));
            }
            multipartFormDataModel           = new  DiscussionCreateRequestModel();
            multipartFormDataModel.Token     = Guid.Parse(token);
            multipartFormDataModel.CircleKey = circleKey.ToLower();
            multipartFormDataModel.Title     = title;
            multipartFormDataModel.Content   = content;

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

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

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

            multipartFormDataModel.ActivityOuterKey = activityOuterKey != null ? activityOuterKey : null;
            multipartFormDataModel.CommentOuterKey  = commentOuterKey != null ? commentOuterKey : null;
            multipartFormDataModel.ReplyOuterKey    = replyOuterKey != null ? replyOuterKey : null;
            multipartFormDataModel.Msg = msg != null ? msg : null;

            //驗證token
            var checkMember = tokenService.GetTokenInfo(multipartFormDataModel.Token.ToString()).Result;

            if (checkMember != null && activityOuterKey != null)
            {
                authService          = new AuthService();
                learingCircleService = new LearningCircleService();
                var learningCircleInfo = learingCircleService.GetCourseLearningInfo(multipartFormDataModel.CircleKey);
                var hasAuth            = authService.CheckFunctionAuth(learningCircleInfo.Id, DiscussionFunction.Manage, checkMember.MemberId);

                //老師編輯主題討論活動
                if (hasAuth)
                {
                    discussionFileService = new DiscussionFuncFile();
                    var updateDiscussion = new Infrastructure.Entity.ActDiscussion();
                    if (multipartFormDataFiles.Count > 0)
                    {
                        var fileService    = new FileService();
                        var uploadFileInfo = fileService.UploadFiles(checkMember.MemberId, multipartFormDataFiles, fileStreams.ToArray());
                        updateDiscussion = discussionService.Update(multipartFormDataModel, checkMember.MemberId, uploadFileInfo.Count);
                        //建立主題討論與檔案的關聯
                        var discussionFileReference = discussionFileService.DiscussionFileReference(updateDiscussion.Id, uploadFileInfo, null);
                    }
                    else
                    {
                        updateDiscussion = discussionService.Update(multipartFormDataModel, checkMember.MemberId, 0);
                    }

                    if (updateDiscussion != null)
                    {
                        cacheService = new CacheService();
                        //刪除檔案
                        if (removeFiles != null && removeFiles != string.Empty)
                        {
                            var removeFilesArray = removeFiles.Split(',');
                            //刪除主題討論與檔案的關聯
                            discussionFileService.DeleteDiscussionFileReference(updateDiscussion.Id, removeFilesArray);
                        }
                        var rtn = discussionService.GetUpdateDetailByEventId(updateDiscussion.EventId);
                        response.Success = true;
                        response.Message = "成功編輯主題討論活動";
                        objHub.Clients.Group(multipartFormDataModel.CircleKey.ToLower()).updateDetail("discussion", rtn);
                        //為了推播與發通知查詢學習圈成員
                        var members = cacheService.GetCircleMember(multipartFormDataModel.CircleKey);
                        //為了單元測試用
                        if (members == null)
                        {
                            return(Ok(response));
                        }
                        // 推播
                        PushDiscussionOnUpdateAsync(members, multipartFormDataModel.CircleKey, updateDiscussion.EventId, multipartFormDataModel.Title, checkMember.MemberId);

                        var signalrService = new SignalrService();
                        //發通知
                        var connectIdAndData = signalrService.GetConnectIdAndData(multipartFormDataModel.CircleKey, checkMember.MemberId, SignalrConnectIdType.All, SignalrDataType.Activity);
                        SignalrClientHelper.ShowRecordListById(connectIdAndData);
                        //發通知
                        //ShowRecordList(members, discussionData.CircleKey);
                    }
                    else
                    {
                        response.Success = false;
                        response.Message = "編輯失敗";
                    }
                }
                else
                {
                    response.Success = false;
                    response.Message = "沒有權限";
                }
            }
            return(Ok(response));
        }