public MyPageGroupDetailsService(ComEntities dbContext) { // todo インスタンス管理 this.dbContext = dbContext; this.groupInfoService = new GroupInfoService(this.dbContext); this.pointInfoService = new PointInfoService(this.dbContext); this.systemDatetimeService = new SystemDatetimeService(); }
/// <summary> /// 会員IDで今月の予想情報を取得する。 /// もともとNPBエリア(NpbRightContentController)にあった共通メソッドだが、 /// Phase1,2仕様どちらでも予想した試合を本日日付からで判定できない。 /// そのため、下記に変更する。 /// ※ExpectTargetを基点にSituationStatus=1のその会員の試合をすべて表示する。 /// 最初に試合表示パネルから予想する時点では、パラメータのGameIDから試合日時が取れるので /// バッチ処理で更新されたPointテーブルのデータに従う形でPointテーブルのレコードは正確に特定できる。 /// そのため、ExpectTargetを基点にすべて表示でPhase2切り替え時も問題ない。 /// </summary> /// <returns>List Game predicted.</returns> public PointInfoViewModel GetExpectedPointInfo(int memberID, bool showCurrentPointInfoOnly = false) { PointInfoViewModel result = new PointInfoViewModel(); SystemDatetimeService systemDatetimeService = new SystemDatetimeService(); var memberPoint = this.GetMemberWithOnlinePoints(memberID,systemDatetimeService.TargetYear,systemDatetimeService.TargetMonth); if (memberPoint == null) return null; result.PointInfoModel = new Models.PointInfo.InfoModel.PointInfoModel(); result.PointInfoModel.PointID = (int)memberPoint.PointId; result.PointInfoModel.PossesionPoint = memberPoint.PossesionPoint; result.PointInfoModel.FundsPoint = memberPoint.FundsPoint; result.PointInfoModel.PayOffPoints = memberPoint.PayOffPoints; result.PointInfoModel.BetStartDate = memberPoint.BetStartDate; result.PointInfoModel.BetEndDate = memberPoint.BetEndDate; //Get these games that not end : not start or ongoing. if (!showCurrentPointInfoOnly) { var expectations = from et in DbContext.ExpectTarget join ep in DbContext.ExpectPoint on et.ExpectTargetID equals ep.ExpectTargetID join p in DbContext.Point on ep.PointID equals p.PointID where (et.FixBetSelectID == 0 || et.FixBetSelectID == null) && ep.SituationStatus == 1 //TODO SituationStatus 要確認(終了していない試合のみ対象で良い?) && p.MemberID == memberID orderby et.StartScheduleDate, et.SportsID select new ExpectationInfoModel { SportID = et.SportsID == null ? 0 : et.SportsID, PointID = (ep.PointID == null ? 0 : ep.PointID), ExpectPointID = (ep.ExpectPointID == null ? 0 : ep.ExpectPointID), ExpectPoint = (ep.ExpectPoint1 == null ? 0 : ep.ExpectPoint1), BetStartDate = p.BetStartDate, //Phase2では不要 GiveTargetMonth = p.GiveTargetMonth, BetSelectID = (ep.BetSelectID.Value == null ? 0 : ep.BetSelectID.Value), GameID = (et.UniqueID == null ? 0 : et.UniqueID), Odds = (from odds in DbContext.OddsInfo join bsm in DbContext.BetSelectMaster on odds.BetSelectMasterID equals bsm.BetSelectMasterID where ep.BetSelectID.ToString() == bsm.BetSelectID.ToString() && odds.ClassificationType == 2 && odds.ExpectTargetID == et.ExpectTargetID select odds.Odds).FirstOrDefault(), StartScheduleDate = et.StartScheduleDate.Value == null ? DateTime.MinValue : et.StartScheduleDate.Value }; result.ExpectationInfoModels = expectations; } return result; }
public UserFollowersController() { // todo インスタンス管理 this.workerService = new UserFollowersService(this.com); this.systemDatetimeService = new SystemDatetimeService(); }
/// <summary> /// 会員IDでオンラインな所持ポイントを取得する。 /// </summary> /// <returns>List Game predicted.</returns> public string GetOnlinePointStr(int memberId) { SystemDatetimeService systemDatetimeService = new SystemDatetimeService(); var point = (from p in this.DbContext.Point where p.MemberID == memberId && p.GiveTargetYear == (short)systemDatetimeService.TargetYear && p.GiveTargetMonth == (short)systemDatetimeService.TargetMonth orderby p.GiveTargetWeek descending, p.CreatedDate descending select new MemberModel { MemberId = p.MemberID, PossesionPoint = p.PossesionPoint, FundsPoint = p.FundsPoint, PayOffPoints = p.PayOffPoints } ).FirstOrDefault(); if (point == null) return "0"; return point.FormattedDisplayPoints; }
public MyPageGroupNewController() { // todo インスタンス管理 this.workerService = new MyPageGroupNewService(this.com); this.systemDatetimeService = new SystemDatetimeService(); }
public JlgTopController() { this.systemDatetimeService = new SystemDatetimeService(); }
/// <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分前以前、ベットあり }
public JsonResult IsExistsFinishedGame() { bool result = false; var memberId = this.GetMemberId(); var systemDatetimeService = new SystemDatetimeService(); var noticeService = new NoticeService(this.com, systemDatetimeService); var fromDate = Utils.GetStartOfDay(systemDatetimeService.SystemDate.AddDays(-1)); var toDate = Utils.GetEndOfDay(systemDatetimeService.SystemDate); result = noticeService.NoticeExpectedGameInfo(memberId, fromDate, toDate, memberId); return Json(result, JsonRequestBehavior.AllowGet); }
/// <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; }
/// <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; }
public GroupInfoService(ComEntities dbContext) { this.dbContext = dbContext; this.pointInfoService = new PointInfoService(this.dbContext); this.systemDatetimeService = new SystemDatetimeService(); }
public MyPageFollowingController() { // todo インスタンス管理 this.workerService = new MyPageFollowingService(this.com); this.systemDatetimeService = new SystemDatetimeService(); }