(id)
| 886 | }; |
| 887 | |
| 888 | const getAdvancedBoxScore = async (id) => { |
| 889 | const teamTask = db.any( |
| 890 | ` |
| 891 | WITH havoc AS ( |
| 892 | WITH fumbles AS ( |
| 893 | SELECT t.school, COALESCE(SUM(CAST(s.stat AS NUMERIC)), 0.0) AS fumbles |
| 894 | FROM game AS g |
| 895 | INNER JOIN game_team AS gt ON g.id = gt.game_id |
| 896 | INNER JOIN team AS t ON gt.team_id = t.id |
| 897 | LEFT JOIN game_player_stat AS s ON s.game_team_id = gt.id AND s.type_id = 4 AND s.category_id = 10 |
| 898 | WHERE g.id = $1 |
| 899 | GROUP BY t.school |
| 900 | ) |
| 901 | SELECT t.school, |
| 902 | (COALESCE(SUM(CAST(s.stat AS NUMERIC)), 0.0) + fumbles) AS total_havoc, |
| 903 | COALESCE(SUM(CAST(s.stat AS NUMERIC)) FILTER (WHERE s.type_id IN (16,24)), 0.0) AS db_havoc, |
| 904 | (COALESCE(SUM(CAST(s.stat AS NUMERIC)) FILTER (WHERE s.type_id = 21), 0.0) + f.fumbles) AS front_seven_havoc |
| 905 | FROM game AS g |
| 906 | INNER JOIN game_team AS gt ON g.id = gt.game_id |
| 907 | INNER JOIN game_team AS gt2 ON g.id = gt2.game_id AND gt.id <> gt2.id |
| 908 | INNER JOIN team AS t ON gt.team_id = t.id |
| 909 | INNER JOIN game_team_stat AS s ON s.game_team_id = gt.id AND s.type_id IN (16,21,24) |
| 910 | LEFT JOIN fumbles AS f ON t.school <> f.school |
| 911 | WHERE g.id = $1 |
| 912 | GROUP BY t.school, f.fumbles |
| 913 | ), plays AS ( |
| 914 | SELECT g.id, |
| 915 | g.season, |
| 916 | g.week, |
| 917 | t.school, |
| 918 | g.excitement, |
| 919 | gt.win_prob, |
| 920 | gt.home_away AS home_away, |
| 921 | gt.points AS points, |
| 922 | gt.winner AS winner, |
| 923 | CASE |
| 924 | WHEN p.down = 2 AND p.distance >= 8 THEN 'passing' |
| 925 | WHEN p.down IN (3,4) AND p.distance >= 5 THEN 'passing' |
| 926 | ELSE 'standard' |
| 927 | END AS down_type, |
| 928 | CASE |
| 929 | WHEN p.play_type_id IN (20,26,34,36,37,38,39,63) THEN false |
| 930 | WHEN p.scoring = true THEN true |
| 931 | WHEN p.down = 1 AND (CAST(p.yards_gained AS NUMERIC) / p.distance) >= 0.5 THEN true |
| 932 | WHEN p.down = 2 AND (CAST(p.yards_gained AS NUMERIC) / p.distance) >= 0.7 THEN true |
| 933 | WHEN p.down IN (3,4) AND (p.yards_gained >= p.distance) THEN true |
| 934 | ELSE false |
| 935 | END AS success, |
| 936 | CASE |
| 937 | WHEN p.play_type_id IN (3,4,6,7,24,26,36,51,67) THEN 'Pass' |
| 938 | WHEN p.play_type_id IN (5,9,29,39,68) THEN 'Rush' |
| 939 | ELSE 'Other' |
| 940 | END AS play_type, |
| 941 | CASE |
| 942 | WHEN p.period = 2 AND p.scoring = false AND ABS(p.home_score - p.away_score) > 38 THEN true |
| 943 | WHEN p.period = 3 AND p.scoring = false AND ABS(p.home_score - p.away_score) > 28 THEN true |
| 944 | WHEN p.period = 4 AND p.scoring = false AND ABS(p.home_score - p.away_score) > 22 THEN true |
| 945 | WHEN p.period = 2 AND p.scoring = true AND ABS(p.home_score - p.away_score) > 45 THEN true |
nothing calls this directly
no outgoing calls
no test coverage detected