<?php 

include_once 'connection.php';

#include 'header.php';
include 'goallinefunctionsJSON.php';
//include 'html.php';

#Gets the target team
$currentteam = ( isset( $_GET['teamid'] ) && is_numeric( $_GET['teamid'] ) ) ? intval( $_GET['teamid'] ) : 0;

$setDBH = createDBH();
$teamheader = $setDBH->prepare('SELECT idSeason, idTeamAssignment, idLevelSeason, Level, Division, idTeam, TeamName, SeasonName FROM teamstatview WHERE idTeamAssignment = :idteam LIMIT 1');
$teamheader->bindParam(':idteam', $currentteam, PDO::PARAM_INT);
$teamheader->execute();
$teamheaderreturn = $teamheader->fetch(PDO::FETCH_ASSOC);

$currentseason = $teamheaderreturn['idSeason'];

function teamDataSet($teamID) {
	$pdoConnect = createDBH();

	$SQLWhere = '';
	$SQLJoin = '';
	$SQLGroup = ' GROUP BY idTeamAssignment';

	$SQLOrderBy = '';

	$SQLWhere .= ' WHERE idTeamAssignment = :idteam AND TeamGamesPlayed > 0';

	$Teamstatfetchstart = 'SELECT idTeamAssignment, idLevelSeasonkey, TeamDivision, TeamName, SUM(TeamWins), SUM(TeamLoss), SUM(TeamTie), SUM(TeamOTLoss), SUM(TeamPts), SUM(TeamGoals), SUM(TeamGoalsAgainst), SUM(TeamGoals)-SUM(TeamGoalsAgainst) AS GD, SUM(TeamShots), IF(SUM(TeamShots) > 0, (ROUND(SUM(TeamShots)/SUM(TeamGamesPlayed),2)), 0) As SPG, SUM(TeamShotsAgainst), IF(SUM(TeamShotsAgainst) > 0, (ROUND(SUM(TeamShotsAgainst)/SUM(TeamGamesPlayed),2)), 0) As SAPG, SUM(TeamShots)-SUM(TeamShotsAgainst) AS SD, SUM(TeamPIM), SUM(TeamPN), SUM(TeamPIMA), SUM(TeamPNA), SUM(TeamPPChance), SUM(TeamPPGoal), SUM(TeamPKChance), SUM(TeamPPGAllowed), SUM(SHG), SUM(SHGAllowed), SUM(EmptyNetGoal), SUM(EmptyNetGoalAllowed), (SUM(TeamPPGoal) + SUM(SHG) - SUM(TeamPPGAllowed) - SUM(SHGAllowed)) AS SpTEff, IF(SUM(TeamShots) > 0, ROUND((SUM(TeamGoals)-SUM(EmptyNetGoal))/(SUM(TeamShots)-SUM(EmptyNetGoal)),4), 0) AS ShotEff, IF(SUM(TeamShotsAgainst) > 0, 1-(ROUND(((SUM(TeamGoalsAgainst)-SUM(EmptyNetGoalAllowed))/(SUM(TeamShotsAgainst)-SUM(EmptyNetGoalAllowed))),4)), 0) As DefEff, IF(SUM(TeamPPChance) > 0, SUM(TeamPPGoal)/SUM(TeamPPChance), 0) AS PPConvert, IF(SUM(TeamPKChance) > 0, 1-(SUM(TeamPPGAllowed)/SUM(TeamPKChance)), 0) AS PKConvert FROM teamstatassignment JOIN teamassignment ON teamstatassignment.idTeamAssignmentkey = teamassignment.idTeamAssignment JOIN team ON teamassignment.idTeamkey = team.idTeam';
	$Teamstatquery = $pdoConnect->prepare($Teamstatfetchstart.$SQLWhere.$SQLGroup.$SQLOrderBy);

	$Teamstatquery->bindParam(':idteam', $teamID, PDO::PARAM_INT);


	$Teamstatquery->execute();
	$Teamplayerstat = $Teamstatquery->fetch(PDO::FETCH_ASSOC);
return $Teamplayerstat;
}

#Generate team stats
$GetTeamData = teamDataSet($currentteam);

#Takes Division info from header and determines if rankings go to Division level
if (!empty($teamheaderreturn['Division']))
{$Rankto = 'Division';
$RankArray = 'DivisionRank';}
else {$Rankto = 'Level';
$RankArray = 'LevelRank';}


#Gets List of possible stats to sort and in which direction to sort for ranking function
$GetRuleSet = getRuleSet();

#Gets array of all team data
$GetAllTeamData = teamstatdataset($currentseason);

#Set number of adjacent spots to go use
$SetAdjacent = 2;

#CreateRankings
$SPGStat = convertNumtoStat($GetTeamData['SPG'], NULL);
$SPGArray = makeStatArray ($GetAllTeamData, 'SPG', 1, NULL);
$SPGRank = getRanking($SPGArray, $currentteam, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division']);
$SPGRankTeam = adjacentranked($SPGArray, $SPGRank['LeagueRank'], $Rankto, $SPGRank[$RankArray], $SetAdjacent);

$ShotEffStat = convertNumtoStat($GetTeamData['ShotEff'], 'Percent');
$ShotEffArray = makeStatArray ($GetAllTeamData, 'ShotEff', 1, 'Percent');
$ShotEffRank = getRanking($ShotEffArray, $currentteam, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division']);
$ShotEffRankTeam = adjacentranked($ShotEffArray, $ShotEffRank['LeagueRank'], $Rankto, $ShotEffRank[$RankArray], $SetAdjacent);

$SAPGStat = convertNumtoStat($GetTeamData['SAPG'], NULL);
$SAPGArray = makeStatArray ($GetAllTeamData, 'SAPG', 0, NULL);
$SAPGRank = getRanking($SAPGArray, $currentteam, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division']);
$SAPGRankTeam = adjacentranked($SAPGArray, $SAPGRank['LeagueRank'], $Rankto, $SAPGRank[$RankArray], $SetAdjacent);

$DefEffStat = convertNumtoStat($GetTeamData['DefEff'], 'Percent');
$DefEffArray = makeStatArray ($GetAllTeamData, 'DefEff', 1, 'Percent');
$DefEffRank = getRanking($DefEffArray, $currentteam, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division']);
$DefRankTeam = adjacentranked($DefEffArray, $DefEffRank['LeagueRank'], $Rankto, $DefEffRank[$RankArray], $SetAdjacent);

$ShotDiffStat = convertNumtoStat($GetTeamData['SD'], 'PlusMinus');
$ShotDiffArray = makeStatArray ($GetAllTeamData, 'SD', 1, 'PlusMinus');
$ShotDiffRank = getRanking($ShotDiffArray, $currentteam, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division']);
$ShotDiffRankTeam = adjacentranked($ShotDiffArray, $ShotDiffRank['LeagueRank'], $Rankto, $ShotDiffRank[$RankArray], $SetAdjacent);

$GoalsForStat = convertNumtoStat($GetTeamData['SUM(TeamGoals)'], NULL);
$GoalsForArray = makeStatArray ($GetAllTeamData, 'SUM(TeamGoals)', 1, NULL);
$GoalsForRank = getRanking($GoalsForArray, $currentteam, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division']);
$GoalsForRankTeam = adjacentranked($GoalsForArray, $GoalsForRank['LeagueRank'], $Rankto, $GoalsForRank[$RankArray], $SetAdjacent);

$GoalsAgainstStat = convertNumtoStat($GetTeamData['SUM(TeamGoalsAgainst)'], NULL);
$GoalsAgainstArray = makeStatArray ($GetAllTeamData, 'SUM(TeamGoalsAgainst)', 0, NULL);
$GoalsAgainstRank = getRanking($GoalsAgainstArray, $currentteam, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division']);
$GoalsAgainstRankTeam = adjacentranked($GoalsAgainstArray, $GoalsAgainstRank['LeagueRank'], $Rankto, $GoalsAgainstRank[$RankArray], $SetAdjacent);

$GoalsDiffStat = convertNumtoStat($GetTeamData['GD'], 'PlusMinus');
$GoalsDiffArray = makeStatArray ($GetAllTeamData, 'GD', 1, 'PlusMinus');
$GoalsDiffRank = getRanking($GoalsDiffArray, $currentteam, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division']);
$GoalsDiffRankTeam = adjacentranked($GoalsDiffArray, $GoalsDiffRank['LeagueRank'], $Rankto, $GoalsDiffRank[$RankArray], $SetAdjacent);

$PPStat = convertNumtoStat($GetTeamData['PPConvert'], 'Percent');
$PPArray = makeStatArray ($GetAllTeamData, 'PPConvert', 1, 'Percent');
$PPRank = getRanking($PPArray, $currentteam, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division']);
$PPRankTeam = adjacentranked($PPArray, $PPRank['LeagueRank'], $Rankto, $PPRank[$RankArray], $SetAdjacent);

$PKStat = convertNumtoStat($GetTeamData['PKConvert'], 'Percent');
$PKArray = makeStatArray ($GetAllTeamData, 'PKConvert', 1, 'Percent');
$PKRank = getRanking($PKArray, $currentteam, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division']);
$PKRankTeam = adjacentranked($PKArray, $PKRank['LeagueRank'], $Rankto, $PKRank[$RankArray], $SetAdjacent);

$SPTeamEffStat = convertNumtoStat($GetTeamData['SpTEff'], 'PlusMinus');
$SpTeamEffArray = makeStatArray ($GetAllTeamData, 'SpTEff', 1, 'PlusMinus');
$SPRank = getRanking($SpTeamEffArray, $currentteam, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division']);
$SPRankTeam = adjacentranked($SpTeamEffArray, $SPRank['LeagueRank'], $Rankto, $SPRank[$RankArray], $SetAdjacent);

#Use function to convert data in Div boxes
/*
$ShotEffRankDiv = designRankBox('Shot Efficiency Rank', 'ShotEff', $currentseason, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division'], $ShotEffRank, $ShotEffRankTeam);
$DefEffRankDiv = designRankBox('Defensive Efficiency Rank', 'DefEff', $currentseason, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division'], $DefEffRank, $DefRankTeam);

$GoalsRankDiv = designRankBox('Goals For Rank', 'GF', $currentseason, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division'], $GoalsForRank, $GoalsForRankTeam);
$GoalsAgainstRankDiv = designRankBox('Goals Against Rank', 'GA', $currentseason, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division'], $GoalsAgainstRank, $GoalsAgainstRankTeam);
$GoalsDiffRankDiv = designRankBox('Goal Differential Rank', 'GD', $currentseason, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division'], $GoalsDiffRank, $GoalsDiffRankTeam);

$PPRankDiv = designRankBox('Powerplay Rank', 'PP%', $currentseason, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division'], $PPRank, $PPRankTeam);
$PKRankDiv = designRankBox('Penalty Kill Rank', 'PK%', $currentseason, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division'], $PKRank, $PKRankTeam);
$SPRankDiv = designRankBox('Special Teams +/- Rank', 'SpT', $currentseason, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division'], $SPRank, $SPRankTeam);
*/

function createRankingJSONArray ($title, $teamstatsort, $season, $level, $div, $rank, $adjacentList, $teamStat) {
$preprankBoxJSONArray = array(
	'title' => $title,
	'sort' => $teamstatsort,
	'season' => $season,
	'level' => $level,
	'division' => $div,
	'rank' => $rank,
	'dataarray' => $adjacentList,
	'statDisplay' => $teamStat,
	'linkslist' => array(array('link'=>'team?teamid=','linktarget'=>'Teamid','linkname'=>'Team'))
	);
return $preprankBoxJSONArray;
}

function createRankListJSON ($rankArray) {
	$returnRankArray = array();
	if (!empty($rankArray['DivisionTotal'])) {
		$returnRankArray[] = array('Division', $rankArray['DivisionRank'].' / '. $rankArray['DivisionTotal']);
	}
	$returnRankArray[] =array('Level', $rankArray['LevelRank'].' / '.$rankArray['LevelTotal']);
	$returnRankArray[] =array('League', $rankArray['LeagueRank'].' / '. $rankArray['LeagueTotal']);
	return $returnRankArray;
}

$ShotPGRankDiv = createRankingJSONArray('Shots Per Game', 'SPG', $currentseason, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division'], createRankListJSON($SPGRank), $SPGRankTeam, $SPGStat);
$ShotEffRankDiv = createRankingJSONArray('Shot Efficiency', 'ShotEff', $currentseason, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division'], createRankListJSON($ShotEffRank), $ShotEffRankTeam, $ShotEffStat);
$ShotAPGEffRankDiv = createRankingJSONArray('Shots Allowed Per Game', 'SAPG', $currentseason, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division'], createRankListJSON($SAPGRank), $SAPGRankTeam, $SAPGStat);
$DefEffRankDiv = createRankingJSONArray('Defensive Efficiency', 'DefEff', $currentseason, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division'], createRankListJSON($DefEffRank), $DefRankTeam, $DefEffStat);

$GoalsRankDiv = createRankingJSONArray('Goals For', 'GF', $currentseason, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division'], createRankListJSON($GoalsForRank), $GoalsForRankTeam, $GoalsForStat);
$GoalsAgainstRankDiv = createRankingJSONArray('Goals Against', 'GA', $currentseason, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division'], createRankListJSON($GoalsAgainstRank), $GoalsAgainstRankTeam, $GoalsAgainstStat);
$GoalsDiffRankDiv = createRankingJSONArray('Goal Differential', 'GD', $currentseason, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division'], createRankListJSON($GoalsDiffRank), $GoalsDiffRankTeam, $GoalsDiffStat);

$PPRankDiv = createRankingJSONArray('Powerplay', 'PP%', $currentseason, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division'], createRankListJSON($PPRank), $PPRankTeam, $PPStat);
$PKRankDiv = createRankingJSONArray('Penalty Kill', 'PK%', $currentseason, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division'], createRankListJSON($PKRank), $PKRankTeam, $PKStat);
$SPRankDiv = createRankingJSONArray('Special Teams +/-', 'SpT', $currentseason, $teamheaderreturn['idLevelSeason'], $teamheaderreturn['Division'], createRankListJSON($SPRank), $SPRankTeam, $SPTeamEffStat);

/*
#Creates filters for page
$ResetLink = Createlink('sort');
$FilterSet = assemblesortmenu($ResetLink);
$FilterMenuDiv = divBuilder('SortSelector', 'id', $FilterSet);

if (empty($sortcondition))
{
	$sortcondition = 'Wins';
}
$Targetsort = sortinghandle($sortcondition);
$GetStats = teamstatfetch($Targetsort);
$TeamStatsDiv = divBuilder('TeamStats', 'id', $GetStats);

*/
#$Header = HTMLHeader(NULL);
/*
$ShotsRankDiv = $ShotEffRankDiv.$DefEffRankDiv;
$GoalsRankDiv = $GoalsRankDiv.$GoalsAgainstRankDiv.$GoalsDiffRankDiv;
$SpecialRankDiv = $PPRankDiv.$PKRankDiv.$SPRankDiv;
$sectionRank = divBuilder('sectionblock','class',$ShotsRankDiv.$GoalsRankDiv.$SpecialRankDiv);
$sectionRankJSON = $ShotsRankDiv.$GoalsRankDiv.$SpecialRankDiv;
$ContentDiv = divBuilder('container', 'id', $HeaderDiv.$sectionRank);
 */
#echo $Header;
echo json_encode(array($ShotPGRankDiv, $ShotEffRankDiv, $ShotAPGEffRankDiv, $DefEffRankDiv, $GoalsRankDiv, $GoalsAgainstRankDiv, $GoalsDiffRankDiv, $PPRankDiv, $PKRankDiv, $SPRankDiv)); 

#include 'footer.php';
?>