Esempio n. 1
0
        /// <summary>
        /// 在水道頁長出新增活動之後的主題討論活動
        /// </summary>
        /// <param name="eventId"></param>
        /// <param name="memberId"></param>
        ///  <param name="circleKey"></param>
        /// <returns></returns>
        private Infrastructure.ViewModel.ActivitysViewModel addPanelInfo(Guid eventId, int memberId, string circleKey)
        {
            var db           = _uow.DbContext;
            var data         = new Infrastructure.ViewModel.ActivitysViewModel();
            var activityInfo = db.Activitys.FirstOrDefault(t => t.OuterKey == eventId);

            if (activityInfo != null)
            {
                DateTime dt = DateTime.UtcNow;
                // 回傳給APP的物件
                var me        = db.Members.SingleOrDefault(x => x.Id == memberId);
                var photoInfo = me.Photo;
                if (me != null)
                {
                    data = new Infrastructure.ViewModel.ActivitysViewModel()
                    {
                        Id             = 0,
                        CreatorAccount = me.Account,
                        CreatorName    = me.Name,
                        CreatorPhoto   = photoInfo,
                        ToRoomId       = circleKey.ToLower(),
                        ModuleKey      = "discussion",
                        Created_Utc    = dt,
                        ReadMark       = false,
                        PositionMark   = false,
                        OuterKey       = eventId,
                        Publish_Utc    = activityInfo.Publish_Utc
                    };
                }
            }
            return(data);
        }
Esempio n. 2
0
        /// <summary>
        /// 在水道頁長出新增活動之後的檔案活動
        /// </summary>
        /// <param name="eventId"></param>
        /// <param name="memberId"></param>
        /// <param name="circleKey"></param>
        /// <returns></returns>
        public Infrastructure.ViewModel.ActivitysViewModel addPanelInfo(Guid eventId, int memberId, string circleKey)
        {
            var data         = new Infrastructure.ViewModel.ActivitysViewModel();
            var db           = _uow.DbContext;
            var activityInfo = db.Activitys.Where(t => t.OuterKey == eventId).FirstOrDefault();

            if (activityInfo != null)
            {
                DateTime dt = DateTime.UtcNow;
                // 回傳給APP的物件
                var me = db.Members.SingleOrDefault(x => x.Id == memberId);
                if (me != null)
                {
                    data = new Infrastructure.ViewModel.ActivitysViewModel()
                    {
                        Id             = 0,
                        CreatorAccount = me.Account,
                        // CreatorPhoto = _uow.IThinkVmRepo.GetTempMemberByAccountId(memberId).Photo,
                        CreatorPhoto = me.Photo,
                        CreatorName  = me.Name,
                        ToRoomId     = circleKey.ToLower(),
                        ModuleKey    = Utility.ParaCondition.ModuleType.Material,
                        Created_Utc  = dt,
                        ReadMark     = false,
                        PositionMark = false,
                        OuterKey     = eventId,
                        Publish_Utc  = activityInfo.Publish_Utc,
                        sOuterKey    = Utility.OuterKeyHelper.GuidToPageToken(eventId)
                    };
                }
            }

            return(data);
        }
Esempio n. 3
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));
        }