Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
2.2 kB
2
Indexable
Never
import Matches from '../database/models/Matches.model';
import Teams from '../database/models/Teams.model';

const getAllMatches = async () => {
  const matches = await Matches.findAll({
    where: { inProgress: false },
  });
  return matches;
};

const calculateTotalPoints = (homeTeamGoals: number, awayTeamGoals: number) => {
  if (homeTeamGoals > awayTeamGoals) return 3;
  if (homeTeamGoals === awayTeamGoals) return 1;
  return 0;
};

const calculateTotalGames = (homeTeamGoals: number, awayTeamGoals: number) => {
  if (homeTeamGoals > awayTeamGoals) return 1;
  if (homeTeamGoals === awayTeamGoals) return 1;
  return 0;
};

const calculateTotalVictories = (homeTeamGoals: number, awayTeamGoals: number) => {
  if (homeTeamGoals > awayTeamGoals) return 1;
  return 0;
};

const calculateTotalDraws = (homeTeamGoals: number, awayTeamGoals: number) => {
  if (homeTeamGoals === awayTeamGoals) return 1;
  return 0;
};

const calculateTotalLosses = (homeTeamGoals: number, awayTeamGoals: number) => {
  if (homeTeamGoals < awayTeamGoals) return 1;
  return 0;
};

const calculateGoalsFavor = (homeTeamGoals: number, _awayTeamGoals: number) => homeTeamGoals;

const calculateGoalsOwn = (_homeTeamGoals: number, awayTeamGoals: number) => awayTeamGoals;

const getHomeLeaderboard = async () => {
  const matches = await getAllMatches();
  const teams = await Teams.findAll();

  const newMatches = matches.map((match) => {
    const homeTeam = teams.find((team) => team.id === match.homeTeamId);
    return {
      name: homeTeam?.teamName,
      totalPoints: calculateTotalPoints(match.homeTeamGoals, match.awayTeamGoals),
      totalGames: calculateTotalGames(match.homeTeamGoals, match.awayTeamGoals),
      totalVictories: calculateTotalVictories(match.homeTeamGoals, match.awayTeamGoals),
      totalDraws: calculateTotalDraws(match.homeTeamGoals, match.awayTeamGoals),
      totalLosses: calculateTotalLosses(match.homeTeamGoals, match.awayTeamGoals),
      goalsFavor: calculateGoalsFavor(match.homeTeamGoals, match.awayTeamGoals),
      goalsOwn: calculateGoalsOwn(match.homeTeamGoals, match.awayTeamGoals),
    };
  });
  return newMatches;
};

export default { getHomeLeaderboard };
Leave a Comment