예제 #1
0
        /// <summary>
        /// ○○さんへのお知らせのもっと見る取得
        /// </summary>
        /// <param name="usernoticecount">現在表示しているレコード件数</param>
        /// <returns>Json形式のActionResult</returns>
        public ActionResult GetMoreUserNotices(int usernoticecount)
        {
            MyPageNoticeViewModel viewModel = new MyPageNoticeViewModel();

            //ユーザーへのお知らせ
            if (usernoticecount == 0)
                SetUserNotices(viewModel, usernoticecount, MyPageNoticeViewModel.INITIAL_PAGE_SIZE);
            else
                SetUserNotices(viewModel, usernoticecount, MyPageNoticeViewModel.INITIAL_PAGE_SIZE);

            return Json(viewModel, JsonRequestBehavior.AllowGet);
        }
예제 #2
0
        /// <summary>
        /// 運営からのお知らせのもっと見る取得
        /// </summary>
        /// <param name="managementnoticecount">現在表示しているレコード件数</param>
        /// <returns>Json形式のActionResult</returns>
        public ActionResult GetMoreManagementNotices(int managementnoticecount)
        {
            MyPageNoticeViewModel viewModel = new MyPageNoticeViewModel();

            //2015/5/21のリリース対応
            return Json(viewModel, JsonRequestBehavior.AllowGet);

            //運営からのお知らせ
            if (managementnoticecount == 0)
                SetManagementNotices(viewModel, managementnoticecount, 3);
            else
                SetManagementNotices(viewModel, managementnoticecount, MyPageNoticeViewModel.INITIAL_PAGE_SIZE);

            return Json(viewModel, JsonRequestBehavior.AllowGet);
        }
예제 #3
0
        /// <summary>
        /// GET: /mypage/notice/
        /// </summary>
        public ActionResult Index()
        {
            //Todo:認証処理 AOPでやりたい。 一旦Session変数を参照し判定(フォーム認証部分も本来なら見るべき。)
            if (Session["CurrentUser"] == null)
            {
                return RedirectToActionPermanent("Login", "Member", new { area = "" });
            }

            long memberId = 0;

            object currentUser = Session["CurrentUser"];
            if (currentUser != null)
                memberId = Convert.ToInt64(currentUser.ToString());

            MyPageNoticeViewModel viewModel = new MyPageNoticeViewModel();

            Member member = Utils.GetMember(memberId);
            viewModel.Nickname = member.Nickname;

            //運営からのお知らせ
            //SetManagementNotices(viewModel, 0, MyPageNoticeViewModel.MANAGEMENT_NOTICE_INITIAL_SIZE);

            //ユーザーへのお知らせ
            //SetUserNotices(viewModel, 0, MyPageNoticeViewModel.USER_NOTICE_INITIAL_SIZE);

            return View(viewModel);
        }
예제 #4
0
        /// <summary>
        /// ユーザーへのお知らせをDBから取得する処理
        /// </summary>
        /// <param name="pageSize">1ページあたりのレコード件数</param>
        /// <returns>NoticeInfoのIEnumerableオブジェクト</returns>
        private IEnumerable<NoticeInfoForMyPage> SetUserNotices(MyPageNoticeViewModel viewModel, int skipCount, int retrieveCount)
        {
            IEnumerable<NoticeInfoForMyPage> result = new List<NoticeInfoForMyPage> { };
            List<NoticeInfoForMyPage> result2 = new List<NoticeInfoForMyPage> { };

            long loginMemberId = 0;

            object currentUser = Session["CurrentUser"];
            if (currentUser != null)
                loginMemberId = Convert.ToInt64(currentUser.ToString());

            try
            {

                if (loginMemberId > 0)
                {
                    //CreatedDateを一か月みる。CreatedDateはレコードを作成するときは必ず入れる。
                    DateTime dt = DateTime.Now.AddMonths(-1);

                    //NoticeDeliverySubjectテーブルからセッションから取得した自分のMemberIdで検索しリストを取得する。
                    //NoticeInfoテーブルを上記で取得したレコードで お知らせID(NoticeID)が同一
                    //かつ 現在日時 < 通知表示終了日時(NoticeDisplayEndTime)

                    //              通知表示終了日時(NoticeDisplayEndTime) は本来NoticeDeliverySubject
                    //              当面は上記CreatedDateで判定する

                    //かつ NoticeClassが1か3のものを10件取得
                    //現在の取得件数をhtmlにdata-usernoticecount属性として保存する
                    //例:<ul data-usernoticecount="10">
                    //var lines = from n in com.NoticeInfo
                    //            join d in com.NoticeDeliverySubject on n.NoticeId equals d.NoticeId
                    //            where d.CreatedDate >= dt
                    //            && (n.NoticeClass == 1 || n.NoticeClass == 3)
                    //            && d.MemberId == loginMemberId
                    //            //&& n.NoticeId <= 4  //PointsPtが付与の仕様確定待ちのため暫定で絞る
                    //            orderby d.CreatedDate descending
                    //            select new NoticeInfoForMyPage
                    //            {
                    //                NoticeId = n.NoticeId,
                    //                NoticeClass = n.NoticeClass,
                    //                NoticeDeliverySubjectId = d.NoticeDeliverySubjectId,
                    //                ClassClass = d.ClassClass,
                    //                MemberId = loginMemberId,
                    //                UniqueID = d.UniqueID,
                    //                UniqueID2 = d.UniqueID2,
                    //                //UniqueID3 = d.UniqueID3,
                    //                AlreadyReadFlg = d.AlreadyReadFlg,
                    //                Title = n.Title,
                    //                Body = n.Body,
                    //                //NoticeBody = n.NoticeBody,
                    //                DeliveryTime = n.DeliveryTime,  //将来NoticeDeliverySubjectに移動(未使用)
                    //                NoticeDisplayEndTime = n.NoticeDisplayEndTime, //将来NoticeDeliverySubjectに移動(未使用)
                    //                TransitionsURL = n.TransitionsURL,
                    //                MailCC = n.MailCC,
                    //                MailBCC = n.MailBCC,
                    //                MailSendStatus = n.MailSendStatus,
                    //                CreatedAccountID = d.CreatedAccountID,
                    //                CreatedDate = d.CreatedDate,
                    //                ModifiedAccountID = d.ModifiedAccountID,
                    //                ModifiedDate = d.ModifiedDate

                    //            };

                    //ScheduleInfo 試合スケジュール_試合情報はHomeTeamIDがすでにわかっているので不要?
                    System.Text.StringBuilder sb = new System.Text.StringBuilder();
                    sb.Append("SELECT ");
                    sb.Append("n.NoticeId,n.NoticeClass,d.NoticeDeliverySubjectId,d.ClassClass,d.MemberId,d.UniqueID,d.UniqueID2,d.UniqueID3,d.AlreadyReadFlg, ");
                    sb.Append(" n.Title,n.Body,n.NoticeBody, n.DeliveryTime,n.NoticeDisplayEndTime,n.TransitionsURL,n.MailCC,n.MailBCC, n.MailSendStatus,d.CreatedAccountID, d.CreatedDate,  d.ModifiedAccountID, d.ModifiedDate ");
                    sb.Append("FROM ");
                    sb.Append("[SPLG].[COM].[NOTICEINFO] n ");
                    sb.Append(" JOIN [SPLG].[COM].[NOTICEDELIVERYSUBJECT] d ");
                    sb.Append("ON n.NOTICEID = d.NOTICEID ");
                    sb.Append("WHERE ");
                    sb.Append("d.CreatedDate >= '" + dt + "' ");
                    sb.Append("AND ");
                    sb.Append("(n.NoticeClass = 1 OR n.NoticeClass = 3) ");
                    sb.Append("AND ");
                    sb.Append("d.MemberId = " + loginMemberId + " ");
                    sb.Append("ORDER BY ");
                    sb.Append("d.CreatedDate DESC ");

                    string query = sb.ToString();

                    var lines = com.Database.SqlQuery<NoticeInfoForMyPage>(@query).ToList<NoticeInfoForMyPage>();

                    foreach (NoticeInfoForMyPage n in lines)
                    {
                        switch (n.ClassClass)
                        {
                            case NoticeInfoForMyPage.CLS_SPORTS:
                                break;
                            case NoticeInfoForMyPage.CLS_TEAM:
                                break;
                            case NoticeInfoForMyPage.CLS_PLAYER:
                                break;
                            case NoticeInfoForMyPage.CLS_GAME:
                                setGameInfo(n);
                                break;
                            case NoticeInfoForMyPage.CLS_LEAGUE:
                                break;
                            case NoticeInfoForMyPage.CLS_FOLLOW:
                                setFollowInfo(n);
                                break;
                            case NoticeInfoForMyPage.CLS_GROUP:
                                setGroupInfo(n);
                                break;
                            case NoticeInfoForMyPage.CLS_POINT_GIVE:
                                setPointGiveInfo(n);
                                break;
                            case NoticeInfoForMyPage.CLS_POINT_PAYOFF:
                                setPointPayoffInfo(n);
                                break;

                        }

                        n.Nickname = (from gm in com.Member where gm.MemberId == n.MemberId select gm.Nickname).FirstOrDefault();

                        n.setTitle(n.ClassClass, n.Title);
                        n.setNoticeBody(n.ClassClass, n.NoticeBody);
                        n.setBody(n.ClassClass, n.Body);

                        result2.Add(n);

                    }

                    viewModel.UserNoticeTotalCount = lines.Count();
                    viewModel.UserNotices = result2.Skip(skipCount).Take(retrieveCount);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return result;
        }
예제 #5
0
        /// <summary>
        /// 運営からのお知らせをDBから取得する処理
        /// </summary>
        /// <param name="pageSize">取得するレコード件数</param>
        /// <returns>NoticeInfoのIEnumerableオブジェクト</returns>
        private IEnumerable<NoticeInfoForMyPage> SetManagementNotices(MyPageNoticeViewModel viewModel, int skipCount, int retrieveCount)
        {
            IEnumerable<NoticeInfoForMyPage> result = new List<NoticeInfoForMyPage> { };

            long memberId = 0;

            object currentUser = Session["CurrentUser"];
            if (currentUser != null)
                memberId = Convert.ToInt64(currentUser.ToString());

            try
            {

                if (memberId > 0)
                {
                    //CreatedDateを一か月みる。CreatedDateはレコードを作成するときは必ず入れる。
                    DateTime dt = DateTime.Now.AddMonths(-1);

                    //NoticeInfoテーブルから条件 現在日時 < 通知表示終了日時(NoticeDisplayEndTime) のものを配信日時の新しい順

                    //              通知表示終了日時(NoticeDisplayEndTime) は本来NoticeDeliverySubject
                    //              当面は上記CreatedDateで判定する

                    //かつ、NoticeClassフィールドが1か3、
                    //かつNoticeDeliverySubjectにレコードが存在しないものを3件表示する
                    //現在の取得件数をhtmlにdata-managementnoticecount属性として保存する
                    //例:<ul data-managementnoticecount="3">

                    var lines = from n in com.NoticeInfo
                                from d in com.NoticeDeliverySubject.Where(x => x.NoticeId == n.NoticeId).DefaultIfEmpty()
                                where d.CreatedDate > dt
                                && (n.NoticeClass == 1 || n.NoticeClass == 3)
                                && d == null
                                orderby d.CreatedDate descending
                                select new NoticeInfoForMyPage
                                {
                                    AlreadyReadFlg = true,  //NoticeDeliverySubjectが存在しないためtrueにセット
                                    NoticeId = n.NoticeId,
                                    NoticeClass = n.NoticeClass,
                                    //TODO NoticeBody = n.NoticeBody,
                                    Title = n.Title,
                                    Body = n.Body,
                                    DeliveryTime = n.DeliveryTime, //将来NoticeDeliverySubjectに移動(未使用)
                                    NoticeDisplayEndTime = n.NoticeDisplayEndTime, //将来NoticeDeliverySubjectに移動(未使用)
                                    TransitionsURL = n.TransitionsURL,
                                    MailCC = n.MailCC,
                                    MailBCC = n.MailBCC,
                                    MailSendStatus = n.MailSendStatus,
                                    CreatedAccountID = n.CreatedAccountID,
                                    CreatedDate = n.CreatedDate,
                                    ModifiedAccountID = n.ModifiedAccountID,
                                    ModifiedDate = n.ModifiedDate,

                                };

                    viewModel.ManagementNoticeTotalCount = lines.Count();
                    viewModel.ManagementNotices = lines.Skip(skipCount).Take(retrieveCount);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return result;
        }