Пример #1
0
        /// <summary>
        /// GET: /Prize/PrizeTop/ 
        /// </summary>
        public ActionResult Index()
        {
            var prizeTopViewModel = new PrizeTopViewModel();

            if (UserService.IsLogined(Session))
            {
                var pointInfoService = new PointInfoService(ComEntities);

                prizeTopViewModel.AvailablePoint = pointInfoService.GetAvailablePointByMemberId(UserService.GetMemberIdAtLong(Session));
            }

            var prizeEntities = new PrizeEntities();

            var rallyService = new RallyService(prizeEntities);

            prizeTopViewModel.RallyViewModel = rallyService.GetRallyViewModelByToday(DateTime.Now);

            if (prizeTopViewModel.RallyViewModel == null)
            {
                //大会情報期間外パターン
                return View("RallyNotFound");
            }
            else
            {
                prizeTopViewModel.RallyGoodsModel = rallyService.GetRallyGoodsViewModelsByRallyId(prizeTopViewModel.RallyViewModel.RallyId);

                //過去大会履歴リスト(一旦非表示らしいので、コメントアウト。処理は作成済)
                //prizeTopViewModel.RallyHistories = rallyService.GetRallyViewModelAtPrevious(prizeTopViewModel.RallyViewModel.RallyId);

                return View(prizeTopViewModel);
            }
        }
Пример #2
0
 public MyPageFollowingService(ComEntities dbContext)
 {
     // todo インスタンス管理
     this.dbContext = dbContext;
     this.followInfoService = new FollowInfoService(this.dbContext);
     this.pointService = new PointInfoService(this.dbContext);
 }
Пример #3
0
 public UserFollowersService(ComEntities dbContext)
 {
     // todo インスタンス管理
     this.dbContext = dbContext;
     this.followInfoService = new FollowInfoService(this.dbContext);
     this.pointService = new PointInfoService(this.dbContext);
 }
Пример #4
0
 public MyPageGroupNewService(ComEntities dbContext)
 {
     // todo インスタンス管理
     this.dbContext = dbContext;
     this.groupInfoService = new GroupInfoService(this.dbContext);
     this.followInfoService = new FollowInfoService(this.dbContext);
     this.pointInfoService = new PointInfoService(this.dbContext);
 }
Пример #5
0
 public MyPageGroupDetailsService(ComEntities dbContext)
 {
     // todo インスタンス管理
     this.dbContext = dbContext;
     this.groupInfoService = new GroupInfoService(this.dbContext);
     this.pointInfoService = new PointInfoService(this.dbContext);
     this.systemDatetimeService = new SystemDatetimeService();
 }
Пример #6
0
        public JsonResult GetPossessionPoints()
        {
            PointInfoModel result = new PointInfoModel();

            int memberId = 0;
            object currentUser = Session["CurrentUser"];
            if (currentUser != null)
                memberId = Convert.ToInt32(currentUser.ToString());
            var pointInfoService = new PointInfoService(com);
            int points = pointInfoService.GetOnlinePoint(memberId);

            result.PossesionPoint = points;

            return Json(result, JsonRequestBehavior.AllowGet);
        }
Пример #7
0
        public ActionResult ShowExpectedPoints(bool showCurrentPointInfoOnly = false)
        {
            ActionResult result = PartialView("_ExpectedPointInfo");

            PointInfoService service = new PointInfoService(com);

            int memberID = 0;
            object currentUser = Session["CurrentUser"];

            if (currentUser == null)
                return result;

            int.TryParse(currentUser.ToString(), out memberID);

            if (memberID == 0)
                return result;

            var pointInfoViewModel = service.GetExpectedPointInfo(memberID, showCurrentPointInfoOnly);
            result = PartialView("_ExpectedPointInfo", pointInfoViewModel);

            return result;
        }
Пример #8
0
        /// <summary>
        ///  GET: /prize/{YYYYMM}/
        /// </summary>
        /// <param name="targetYearMonth"></param>
        /// <param name="rallyGoodsId"></param>
        /// <returns></returns>
        public ActionResult Index(string targetYearMonth, long rallyGoodsId)
        {
            var prizeInfoService = new RallyService(prize,com);
            var pointInfoService = new PointInfoService(com);
            long memberId;

            PrizeGoodViewModel prizeGoods = new PrizeGoodViewModel();

            prizeGoods.RallyGoods = prizeInfoService.GetRallyGoodsViewModelByRallyGoodsId(rallyGoodsId);
            prizeGoods.RallyGoodsRemarks = prizeInfoService.GetRallyGoodsRemarksViewModel(rallyGoodsId);
            prizeGoods.RallyGoodsRemarksText = prizeInfoService.GetRallyGoodsRemarksTextViewModel(rallyGoodsId);
            prizeGoods.RallyGoodsRemarksLink = prizeInfoService.GetRallyGoodsRemarksLinkViewModel(rallyGoodsId);
            // ログインチェックとメンバーID取得
            prizeGoods.IsLogined = UserService.IsLogined(Session);
            if (prizeGoods.IsLogined)
            {
                memberId = UserService.GetMemberIdAtLong(Session);
                prizeGoods.AvailablePoint = pointInfoService.GetAvailablePointByMemberId(memberId);
                prizeGoods.EntryCount = prizeInfoService.GetEntryCount(memberId, rallyGoodsId);
            }

            return View(prizeGoods);
        }
Пример #9
0
        public int GetAfterAvailablePoint(long memberId, int RallyGoodId, int EntryCount)
        {
            // 初期値セット
            int result;

            var pointInfoService = new PointInfoService(ComEntities);

            int AvailablePoint = pointInfoService.GetAvailablePointByMemberId(memberId);

            int rallyPoints = (from rg in PrizeEntities.RallyGoods
                         where rg.RallyGoodId == RallyGoodId
                         select rg.Points
                        ).FirstOrDefault();

            int FinallyPoint = AvailablePoint - (rallyPoints * EntryCount);

            result = FinallyPoint;

            return result;
        }
Пример #10
0
        /// <summary>
        /// 試合状況を取得
        /// </summary>
        /// <param name="gameId">試合ID</param>
        /// <param name="strMemberId">会員ID</param>
        /// <returns>
        ///  0: 試合情報なし?
        ///  1: 受付前
        ///  2: 5分前以前、ベットなし
        ///  3: 5分前以前、ベットあり
        ///  4: 5分前以降、ベットなし
        ///  5: 5分前以降、ベットあり
        ///  6: 試合中、ベットなし
        ///  7: 試合中、ベットあり
        ///  8: 試合終了、ベットなし
        ///  9: 試合終了、ベットあり
        /// 10: 試合中止
        /// </returns>
        public static int GetStatusMatch(int gameId, string strMemberId)
        {
            //Todo:判定が煩雑なので、ロジック整理の必要有り

            var memberId = !string.IsNullOrEmpty(strMemberId) ? Convert.ToInt64(strMemberId) : 0;

            if (memberId > 0)
            {
                // ポイントテーブル存在判定
                var systemDatetimeService = new SystemDatetimeService();
                var pointInfoService = new PointInfoService(new ComEntities());
                var isExist = pointInfoService.IsExistsPoint(memberId, systemDatetimeService.SystemDate);
                if (!isExist) return 1;
            }

            // BET情報を取得
            var oddsService = new OddsService();
            var oddinfo = oddsService.GetOddsInfoByGameID(Constants.JLG_SPORT_ID, gameId, memberId);
            if (oddinfo.ExpectTargetID == 0) return 1;

            var checkBet = oddinfo.BetSelectedID != null;  // BET有無

            var jlg = new JlgEntities();
            var gameInfos = (from si in jlg.ScheduleInfo //年間試合スケジュール_試合情報
                             where si.GameID == gameId
                             select new JlgGameInfoByCondidtion
                             {
                                ScheduleInfoJlg = si,
                                GameTimetoStr = si.GameTime.ToString()
                             }).First();

            int result = 0;

            if (gameInfos == null) return result;

            var gameDate = Utils.ConvertStrToDatetime(gameInfos.ScheduleInfoJlg.GameDate.ToString());

            var gameStartDateAndTime = DateTime.MaxValue; // "未定"やnullがありうる
            int time;
            if (int.TryParse(gameInfos.GameTimetoStr, out time))
            {
                var hours = Convert.ToInt32(time.ToString().Substring(0, 2));
                var minute = Convert.ToInt32(time.ToString().Substring(2, 2));

                gameStartDateAndTime = new DateTime(gameDate.Year, gameDate.Month, gameDate.Day, hours, minute, 0);
            }

            //予想可能日付閾値(今日日付基準の月末日取得)
            var expectableEnd = DateTime.Now.EndOfTheMonthWithTime();

            if (DateTime.Now < gameStartDateAndTime)
            {
                //Case 1:Can not bet
                if (gameStartDateAndTime > expectableEnd)
                {
                    return 1;                             // 1:ベット不可
                }

                DateTime limitTime = gameStartDateAndTime.AddMinutes(-5);

                if (DateTime.Now < limitTime)
                {
                    return !checkBet ? 2 : 3;         // 2:5分前以前、ベットなし  3:5分前以前、ベットあり
                }

                return !checkBet ? 4 : 5;         // 3:5分前以降、ベットなし  4:5分前以前、ベットあり
            }

            // 一試合個人スタッツ_ヘッダー情報
            var realGameInfos = from sr in jlg.StatsReportLS where sr.GameID == gameId select sr;

            if (realGameInfos != null)
            {
                if (realGameInfos.FirstOrDefault() != null)
                {
                    //空白:試合中または試合前 2=正常終了 7=サスペンデッド 9=中止(試合中)
                    string gameSetSituationCd = GetNpbGameStateID((short)realGameInfos.FirstOrDefault().SituationID);

                    if ((!string.IsNullOrEmpty(gameSetSituationCd)) && ((gameSetSituationCd == "8") ||(gameSetSituationCd == "9")))
                    {
                        return 10;
                    }

                    switch (gameSetSituationCd)
                    {
                        case "0":
                            return !checkBet ? 4 : 5;         // 4:試合前、ベットなし 5:試合前、ベットあり
                        case "1":
                            return !checkBet ? 6 : 7;         // 8:試合中、ベットなし 7:試合中、ベットあり
                        case "4":
                            return !checkBet ? 8 : 9;         // 8:試合終了、ベットなし 9:試合終了、ベットあり
                    }

                    return 10;                    // 10:試合中止
                }

                return !checkBet ? 4 : 5;         // 3:5分前以降、ベットなし  4:5分前以前、ベットあり
            }

            return !checkBet ? 4 : 5;         // 3:5分前以降、ベットなし  4:5分前以前、ベットあり
        }
Пример #11
0
        /// <summary>
        /// Get: /Home/ShowPointAlert
        /// </summary>
        /// <returns></returns> 
        public ActionResult ShowPointAlert()
        {
            var memberId = (Convert.ToInt64(Session["CurrentUser"]));

            var pointInfoService = new PointInfoService(com);

            var memberModel = pointInfoService.GetMemberWithOnlinePoints(memberId, (short)DateTime.Now.Year, (short)DateTime.Now.Month);

            return PartialView("_PointAlert", memberModel);
        }
Пример #12
0
        /// <summary>
        /// 試合状況を取得
        /// </summary>
        /// <param name="gameId">試合ID</param>
        /// <param name="strMemberId">会員ID</param>
        /// <returns>
        ///  0: 試合情報なし?
        ///  1: 受付前
        ///  2: 5分前以前、ベットなし
        ///  3: 5分前以前、ベットあり
        ///  4: 5分前以降、ベットなし
        ///  5: 5分前以降、ベットあり
        ///  6: 試合中、ベットなし
        ///  7: 試合中、ベットあり
        ///  8: 試合終了、ベットなし
        ///  9: 試合終了、ベットあり
        /// 10: 試合中止
        /// </returns>
        public static int GetStatusMatch(int gameId, string strMemberId)
        {
            //Todo:判定が煩雑なので、ロジック整理の必要有り

            var memberId = !string.IsNullOrEmpty(strMemberId) ? Convert.ToInt64(strMemberId) : 0;

            if (memberId > 0)
            {
                // ポイントテーブル存在判定
                var systemDatetimeService = new SystemDatetimeService();
                var pointInfoService = new PointInfoService(new ComEntities());
                var isExist = pointInfoService.IsExistsPoint(memberId, systemDatetimeService.SystemDate);
                if (!isExist) return 1;
            }

            // BET情報を取得
            var oddsService = new OddsService();
            var oddinfo = oddsService.GetOddsInfoByGameID(Constants.MLB_SPORT_ID, gameId, memberId);
            if (oddinfo.ExpectTargetID == 0) return 1;

            var checkBet = oddinfo.BetSelectedID != null;  // BET有無

            var mlb = new MlbEntities();
            var gameInfos = (from ss in mlb.SeasonSchedule //年間試合スケジュール_試合情報
                             join dg in mlb.DayGroup on ss.DayGroupId equals dg.DayGroupId
                             where ss.GameID == gameId
                             select new MlbGameInfos
                             {
                                 GameDateJPN = dg.GameDateJPN,
                                 Time = ss.Time
                             }).First();

            if (gameInfos == null) return 0;

            var gameDate = Utils.ConvertStrToDatetime(gameInfos.GameDateJPN.ToString());
            var gameStartDateAndTime = DateTime.MaxValue; // 未定
            int hours = 0;
            int minute = 0;

            string time = gameInfos.Time.Trim();
            //When   time.ToString().Length <2  then  error
            //When time is 0930-> Int32.TryParse  to 900 then error because hours:90 and minute:0
            if (time.Length > 1)
                hours = Convert.ToInt32(time.Substring(0, 2));
            //When   time.ToString().Length <4  then  error
            if (time.Length > 2)
                minute = Convert.ToInt32(time.Substring(2, time.Length - 2));
            //End edit
            gameStartDateAndTime = new DateTime(gameDate.Year, gameDate.Month, gameDate.Day, hours, minute, 0);

            //予想可能日付閾値(今日日付基準の月末日取得)
            var expectableEnd = DateTime.Now.EndOfTheMonthWithTime();

            if (DateTime.MaxValue.Equals(gameStartDateAndTime) || DateTime.Now < gameStartDateAndTime)
            {
                //Case 1:Can not bet
                if (gameStartDateAndTime > expectableEnd)
                {
                    return  1;  // 1:ベット不可
                }

                var limitTime = gameStartDateAndTime.AddMinutes(-5);

                if (DateTime.Now < limitTime)
                {
                    return !checkBet ? 2 : 3;   // 2:5分前以前、ベットなし  3:5分前以前、ベットあり
                }

                return !checkBet ? 4 : 5;   // 3:5分前以降、ベットなし  4:5分前以前、ベットあり
            }

            var realGameInfos = from rgi in mlb.RealGameInfo where rgi.GameID == gameId select rgi;

            if (realGameInfos != null)
            {
                if (realGameInfos.FirstOrDefault() != null)
                {
                    //空白:試合中または試合前 2=正常終了 7=サスペンデッド 9=中止(試合中)
                    string gameSetSituationCd = GetNpbGameSetSituationCode((short)realGameInfos.FirstOrDefault().GameStateID);

                    //"0=試合前、1=試合中、2=試合後
                    int gameStatus = GetStatusMatch(gameId.ToString());

                    //int inning = realGameInfos.FirstOrDefault().Inning.HasValue ? realGameInfos.FirstOrDefault().Inning.Value : default(short);
                    if ( (!string.IsNullOrEmpty(gameSetSituationCd)) && ((gameSetSituationCd == "8") ||(gameSetSituationCd == "9")))
                    {
                        return 10;
                    }

                    if (gameSetSituationCd == "2")
                    {
                        return !checkBet ? 8 : 9;   // 8:試合終了、ベットなし 9:試合終了、ベットあり
                    }

                    if (string.IsNullOrEmpty(gameSetSituationCd) && gameStatus > 0   /*inning >= 1*/)
                    {
                        return !checkBet ? 6 : 7;   // 6:試合中、ベットなし 7:試合中、ベットあり
                    }

                    return 10;                      // 10:試合中止
                }

                return !checkBet ? 6 : 7;           // 6:試合中、ベットなし 7:試合中、ベットあり
            }

            return 0;
        }
Пример #13
0
        /// <summary>
        /// 試合状況を取得
        /// </summary>
        /// <param name="gameId">試合ID</param>
        /// <param name="strMemberId">会員ID</param>
        /// <returns>
        ///  0: 試合情報なし?
        ///  1: 受付前
        ///  2: 5分前以前、ベットなし
        ///  3: 5分前以前、ベットあり
        ///  4: 5分前以降、ベットなし
        ///  5: 5分前以降、ベットあり
        ///  6: 試合中、ベットなし
        ///  7: 試合中、ベットあり
        ///  8: 試合終了、ベットなし
        ///  9: 試合終了、ベットあり
        /// 10: 試合中止
        /// </returns>
        public static int GetStatusMatch(int gameId, string strMemberId)
        {
            //Todo:判定が煩雑なので、ロジック整理の必要有り

            var memberId = !string.IsNullOrEmpty(strMemberId) ? Convert.ToInt64(strMemberId) : 0;

            if (memberId > 0)
            {
                // ポイントテーブル存在判定
                var systemDatetimeService = new SystemDatetimeService();
                var pointInfoService = new PointInfoService(new ComEntities());
                var isExist = pointInfoService.IsExistsPoint(memberId, systemDatetimeService.SystemDate);
                if (!isExist) return 1;
            }

            // BET情報を取得
            var oddsService = new OddsService();
            var oddinfo = oddsService.GetOddsInfoByGameID(Constants.NPB_SPORT_ID, gameId, memberId);
            if (oddinfo.ExpectTargetID == 0) return 1;

            var isBet = oddinfo.BetSelectedID != null; // BET有無

            var npb = new NpbEntities();

            // 年間試合スケジュール_試合情報 を取得
            var gameInfoSS = npb.GameInfoSS.FirstOrDefault(x => x.ID == gameId);

            if (gameInfoSS == null) return 0;

            // 全試合情報を取得
            string gameSetSituationCd = null; // 試合終了状況コード
            var gameInfoRGI = npb.GameInfoRGI.FirstOrDefault(x => x.GameID == gameId);
            if (gameInfoRGI != null)
            {
                gameSetSituationCd = gameInfoRGI.GameSetSituationCD;
            }

            if (!string.IsNullOrEmpty(gameSetSituationCd) && (gameSetSituationCd == "0")) // 中止(試合前)
            {
                return 10;
            }

            var gameDate = Utils.ConvertStrToDatetime(gameInfoSS.GameDate.ToString());
            var hours = Convert.ToInt32(gameInfoSS.Time.Substring(0, 2));
            var minute = Convert.ToInt32(gameInfoSS.Time.Substring(2, 2));

            var gameStartDateAndTime = new DateTime(gameDate.Year, gameDate.Month, gameDate.Day, hours, minute, 0);

            //予想可能日付閾値(今日日付基準の月末日取得)
            var expectableEnd = DateTime.Now.EndOfTheMonthWithTime();

            // 試合開始時間前
            if (DateTime.Now < gameStartDateAndTime)
            {
                //Case 1:Can not bet
                if (gameStartDateAndTime > expectableEnd)
                {
                    return 1;
                }

                //予想可能限界日付時間(Todo:5分前の定義が、マジックナンバー)
                var limitTime = gameStartDateAndTime.AddMinutes(-5);

                if (DateTime.Now < limitTime)   //締切時間前
                {
                    return !isBet ? 2 : 3;
                }

                return !isBet ? 4 : 5;  // 締切時間以降
            }

            // 試合開始時間以降
            if (gameInfoRGI == null)
            {
                return !isBet ? 4 : 5;
            }

            if (!string.IsNullOrEmpty(gameSetSituationCd) && (gameSetSituationCd == "9")) // 中止(試合中)
            {
                return 10;
            }

            if (gameSetSituationCd == "2" ||
                gameSetSituationCd == "4" ||
                gameSetSituationCd == "5" ||
                gameSetSituationCd == "8" ||
                gameSetSituationCd == "A" ||
                gameSetSituationCd == "B" ||
                gameSetSituationCd == "C" ||
                gameSetSituationCd == "D")
            {
                return !isBet ? 8 : 9;
            }

            if (!string.IsNullOrEmpty(gameSetSituationCd))
            {
                return 10;
            }

            int inning = gameInfoRGI.Inning ?? default(short);   // 現イニング

            if (inning == 0)    // 試合前
            {
                return !isBet ? 4 : 5;
            }

            if (inning >= 1)    // 試合中
            {
                return !isBet ? 6 : 7;
            }

            return 0;
        }
Пример #14
0
 public GroupInfoService(ComEntities dbContext)
 {
     this.dbContext = dbContext;
     this.pointInfoService = new PointInfoService(this.dbContext);
     this.systemDatetimeService = new SystemDatetimeService();
 }
Пример #15
0
        /// <summary>
        /// ポイント情報の取得
        /// </summary>
        /// <param name="memberId"></param>
        /// <param name="target_year"></param>
        /// <param name="target_month"></param>
        /// <param name="targetRanking">総合ランキング</param>
        /// <param name="targetPossesionPoint">懸賞応募可能ポイント</param>
        /// <param name="monthlyRank"></param>
        /// <returns>PointInfo</returns>
        private MyPageTopViewModel.PointInfoModel GetPointInfo(Int64 memberId, int target_year, int target_month, out long targetRanking, out int targetPossesionPoint, out long monthlyRank)
        {
            MyPageTopViewModel.PointInfoModel pim = new MyPageTopViewModel.PointInfoModel();

            PointInfoService pointInfoService = new PointInfoService(com);

            targetRanking = 0;
            targetPossesionPoint = 0;
            monthlyRank = 0;

            if (memberId > 0)
            {
                var m = pointInfoService.GetMemberWithOnlinePoints(memberId, target_year, target_month);

                if (m == null)
                    return new MyPageTopViewModel.PointInfoModel();

                pim = new MyPageTopViewModel.PointInfoModel
                      {
                          PossesionPoint = m.PossesionPoint,
                          FundsPoint = m.FundsPoint,
                          PayOffPoints = m.PayOffPoints
                      };

                //所持ポイントランキングから総合ランキングと懸賞応募可能ポイントを取得する
                var targetDate = DateTime.Now.Date.AddDays(-1);
                var possesionPointRanking = (from ppr in com.PossesionPointRanking
                               where ppr.MemberID == memberId && ppr.TargetDate == targetDate
                               select ppr).FirstOrDefault();

                if (possesionPointRanking != null)
                {
                    targetRanking = possesionPointRanking.TargetRanking;
                    targetPossesionPoint = possesionPointRanking.TargetPossesionPoint;
                }
            }

            return pim;
        }
Пример #16
0
        public JsonResult GetPossesionPoint()
        {
            var memberId = (Convert.ToInt64(Session["CurrentUser"]));

            var pointInfoService = new PointInfoService(com);
            var memberModel = pointInfoService.GetMemberWithOnlinePoints(memberId, (short)DateTime.Now.Year, (short)DateTime.Now.Month);

            return Json(memberModel.PossesionPoint, JsonRequestBehavior.AllowGet);
        }