public void CalculateTeamResult(TeamMatch team, TeamMatch teamAgainst, int seasonId)
        {
            using (var dc = ThaitaeDataDataContext.Create())
            {
                var teamUpdate = dc.TeamSeasons.Single(item => item.TeamId == team.TeamId && item.SeasonId == seasonId);
                teamUpdate.TeamMatchPlayed = dc.TeamMatches.Count(item => item.TeamId == team.TeamId && item.TeamStatus != 0);
                teamUpdate.TeamDrew = dc.TeamMatches.Count(item => item.TeamId == team.TeamId && item.TeamStatus == 2);
                var teamgoalAgainstSum =
                    dc.TeamMatches.Where(item => item.TeamId == team.TeamId && item.SeasonId == seasonId && item.TeamStatus != 0).Sum(
                        item => item.TeamGoalAgainst);
                if (teamgoalAgainstSum != null)
                    teamUpdate.TeamGoalAgainst = (int)teamgoalAgainstSum;

                var teamgoalForSum =
                    dc.TeamMatches.Where(item => item.TeamId == team.TeamId && item.SeasonId == seasonId && item.TeamStatus != 0).Sum(
                        item => item.TeamGoalFor);
                if (teamgoalForSum != null)
                    teamUpdate.TeamGoalFor = (int)teamgoalForSum;
                teamUpdate.TeamGoalDiff = teamUpdate.TeamGoalFor - teamUpdate.TeamGoalAgainst;
                teamUpdate.TeamLoss = dc.TeamMatches.Count(item => item.TeamId == team.TeamId && item.SeasonId == seasonId && item.TeamStatus == 3);
                teamUpdate.TeamWon = dc.TeamMatches.Count(item => item.TeamId == team.TeamId && item.SeasonId == seasonId && item.TeamStatus == 1);
                teamUpdate.TeamPts = (teamUpdate.TeamWon * 3) + (teamUpdate.TeamDrew);

                var teamUpdateYellowCard = 0;
                var teamUpdateRedCard = 0;
                var playersUpdate = dc.Players.Where(item => item.TeamId == teamUpdate.TeamId && item.SeasonId == teamUpdate.SeasonId);
                if (playersUpdate.Count() != 0)
                {
                    teamUpdateYellowCard = playersUpdate.Sum(item => item.PlayerYellowCard);
                    teamUpdateRedCard = playersUpdate.Sum(item => item.PlayerRedCard);
                }

                teamUpdate.TeamYellowCard = teamUpdateYellowCard;
                teamUpdate.TeamRedCard = teamUpdateRedCard;
                var teamAgainstUpdate = dc.TeamSeasons.Single(item => item.TeamId == teamAgainst.TeamId && item.SeasonId == seasonId);
                teamAgainstUpdate.TeamMatchPlayed = dc.TeamMatches.Count(item => item.TeamId == teamAgainst.TeamId && item.SeasonId == seasonId && item.TeamStatus != 0);
                teamAgainstUpdate.TeamDrew = dc.TeamMatches.Count(item => item.TeamId == teamAgainst.TeamId && item.SeasonId == seasonId && item.TeamStatus == 2);
                var teamAgainstgoalAgainstSum =
                    dc.TeamMatches.Where(item => item.TeamId == teamAgainst.TeamId && item.SeasonId == seasonId && item.TeamStatus != 0).Sum(
                        item => item.TeamGoalAgainst);
                if (teamAgainstgoalAgainstSum != null)
                    teamAgainstUpdate.TeamGoalAgainst = (int)teamAgainstgoalAgainstSum;

                var teamAgainstgoalForSum =
                    dc.TeamMatches.Where(item => item.TeamId == teamAgainst.TeamId && item.SeasonId == seasonId && item.TeamStatus != 0).Sum(
                        item => item.TeamGoalFor);
                if (teamAgainstgoalForSum != null)
                    teamAgainstUpdate.TeamGoalFor = (int)teamAgainstgoalForSum;
                teamAgainstUpdate.TeamGoalDiff = teamAgainstUpdate.TeamGoalFor - teamAgainstUpdate.TeamGoalAgainst;
                teamAgainstUpdate.TeamLoss = dc.TeamMatches.Count(item => item.TeamId == teamAgainst.TeamId && item.SeasonId == seasonId && item.TeamStatus == 3);
                teamAgainstUpdate.TeamWon = dc.TeamMatches.Count(item => item.TeamId == teamAgainst.TeamId && item.SeasonId == seasonId && item.TeamStatus == 1);
                teamAgainstUpdate.TeamPts = (teamAgainstUpdate.TeamWon * 3) + (teamAgainstUpdate.TeamDrew);

                var teamAgainstYellowCard = 0;
                var teamAgainstRedCard = 0;
                var playersAgainst =
                    dc.Players.Where(
                        item => item.TeamId == teamAgainstUpdate.TeamId && item.SeasonId == teamAgainstUpdate.SeasonId);
                if (playersAgainst.Count() != 0)
                {
                    teamAgainstYellowCard = playersAgainst.Sum(item => item.PlayerYellowCard);
                    teamAgainstRedCard = playersAgainst.Sum(item => item.PlayerRedCard);
                }

                teamAgainstUpdate.TeamYellowCard = teamAgainstYellowCard;
                teamAgainstUpdate.TeamRedCard = teamAgainstRedCard;
                dc.SubmitChanges();
            }
        }
        protected void JqgridMatch1_RowAdding(object sender, JQGridRowAddEventArgs e)
        {
            var homeId = String.IsNullOrEmpty(e.RowData["TeamHomeIdNameExtend"])
                                ? 0
                                : Convert.ToInt32(e.RowData["TeamHomeIdNameExtend"]);
            var awayId = String.IsNullOrEmpty(e.RowData["TeamAwayIdNameExtend"])
                                ? 0
                                : Convert.ToInt32(e.RowData["TeamAwayIdNameExtend"]);
            var date = String.IsNullOrEmpty(e.RowData["MatchDate"])
                           ? DateTime.Now
                           : Convert.ToDateTime(e.RowData["MatchDate"]);
            if (homeId == 0 || awayId == 0 || Convert.ToInt32(Session["seasonid"]) == 0) return;
            using (var dc = ThaitaeDataDataContext.Create())
            {
                var match1 = new Match
                {
                    MatchDate = date,
                    SeasonId = Convert.ToInt32(Session["seasonid"]),
                    TeamHomeId = homeId,
                    TeamAwayId = awayId
                };
                var match2 = new Match
                {
                    MatchDate = date,
                    SeasonId = Convert.ToInt32(Session["seasonid"]),
                    TeamHomeId = awayId,
                    TeamAwayId = homeId
                };
                dc.Matches.InsertOnSubmit(match2);
                dc.Matches.InsertOnSubmit(match1);
                dc.SubmitChanges();
                var teamHome1 = new TeamMatch
                {
                    TeamId = homeId,
                    TeamGoalFor = 0,
                    TeamGoalPenalty = 0,
                    TeamHome = 1,
                    SeasonId = Convert.ToInt32(Session["seasonid"]),
                    MatchId = match1.MatchId
                };

                var teamAway1 = new TeamMatch
                {
                    TeamId = awayId,
                    TeamGoalFor = 0,
                    TeamGoalPenalty = 0,
                    TeamHome = 0,
                    SeasonId = Convert.ToInt32(Session["seasonid"]),
                    MatchId = match1.MatchId
                };

                var teamHome2 = new TeamMatch
                {
                    TeamId = awayId,
                    TeamGoalFor = 0,
                    TeamGoalPenalty = 0,
                    TeamHome = 1,
                    SeasonId = Convert.ToInt32(Session["seasonid"]),
                    MatchId = match2.MatchId
                };

                var teamAway2 = new TeamMatch
                {
                    TeamId = homeId,
                    TeamGoalFor = 0,
                    TeamGoalPenalty = 0,
                    TeamHome = 0,
                    SeasonId = Convert.ToInt32(Session["seasonid"]),
                    MatchId = match2.MatchId
                };
                dc.TeamMatches.InsertOnSubmit(teamHome1);
                dc.TeamMatches.InsertOnSubmit(teamHome2);
                dc.TeamMatches.InsertOnSubmit(teamAway1);
                dc.TeamMatches.InsertOnSubmit(teamAway2);
                dc.SubmitChanges();
            }
        }
 public void GenerateMatch(int seasonId)
 {
     using (var dc = ThaitaeDataDataContext.Create())
     {
         var isChampionLeagueFinal = dc.Leagues.Any(item => item.LeagueId == Convert.ToInt32(Session["leagueid"]) && (item.LeagueType == 1 || item.LeagueType == 2));
         if (!isChampionLeagueFinal)
         {
             var teamSeasonList =
                 dc.TeamSeasons.Join(dc.Teams, teamSeason => teamSeason.TeamId, team => team.TeamId,
                                     (teamSeason, team) => new { teamSeason.SeasonId, team.TeamId })
                   .Where(teamSeason => teamSeason.SeasonId == seasonId)
                   .ToList();
             for (var i = 0; i < teamSeasonList.Count; i++)
             {
                 for (var j = 0; j < teamSeasonList.Count; j++)
                 {
                     if (teamSeasonList[i].TeamId != teamSeasonList[j].TeamId)
                     {
                         Match match = null;
                         var matchExist = dc.Matches.Count(
                             item =>
                             item.SeasonId == seasonId && item.TeamHomeId == teamSeasonList[i].TeamId &&
                             item.TeamAwayId == teamSeasonList[j].TeamId);
                         if (matchExist == 0)
                         {
                             match = new Match
                                 {
                                     SeasonId = seasonId,
                                     MatchDate = DateTime.Now,
                                     TeamHomeId = teamSeasonList[i].TeamId,
                                     TeamAwayId = teamSeasonList[j].TeamId
                                 };
                             dc.Matches.InsertOnSubmit(match);
                             dc.SubmitChanges();
                         }
                         else
                         {
                             match = dc.Matches.Single(
                                 item =>
                                 item.SeasonId == seasonId && item.TeamHomeId == teamSeasonList[i].TeamId &&
                                 item.TeamAwayId == teamSeasonList[j].TeamId);
                         }
                         var teamHomeExist =
                             dc.TeamMatches.Count(
                                 item => item.MatchId == match.MatchId && item.TeamId == match.TeamHomeId);
                         if (teamHomeExist == 0)
                         {
                             var teamHomeMatch = new TeamMatch
                                 {
                                     MatchId = match.MatchId,
                                     TeamId = match.TeamHomeId,
                                     TeamHome = 1,
                                     SeasonId = match.SeasonId
                                 };
                             dc.TeamMatches.InsertOnSubmit(teamHomeMatch);
                             dc.SubmitChanges();
                         }
                         var teamAwayExist =
                             dc.TeamMatches.Count(
                                 item => item.MatchId == match.MatchId && item.TeamId == match.TeamAwayId);
                         if (teamAwayExist == 0)
                         {
                             var teamAwayMatch = new TeamMatch
                                 {
                                     MatchId = match.MatchId,
                                     TeamId = match.TeamAwayId,
                                     TeamHome = 0,
                                     SeasonId = match.SeasonId
                                 };
                             dc.TeamMatches.InsertOnSubmit(teamAwayMatch);
                             dc.SubmitChanges();
                         }
                     }
                 }
             }
         }
         else
         {
             var isFinished = SeasonHelper.CheckGroupSeasonIsFinnish(seasonId);
         }
     }
 }
 partial void DeleteTeamMatch(TeamMatch instance);
 partial void UpdateTeamMatch(TeamMatch instance);
 partial void InsertTeamMatch(TeamMatch instance);
		private void detach_TeamMatches(TeamMatch entity)
		{
			this.SendPropertyChanging();
			entity.Team = null;
		}
		private void attach_TeamMatches(TeamMatch entity)
		{
			this.SendPropertyChanging();
			entity.Team = this;
		}