@mtgame/core 0.1.38 → 0.1.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/tournament-api.d.ts +3 -1
- package/bundles/mtgame-core.umd.js +16 -2
- package/bundles/mtgame-core.umd.js.map +1 -1
- package/bundles/mtgame-core.umd.min.js +1 -1
- package/bundles/mtgame-core.umd.min.js.map +1 -1
- package/esm2015/api/tournament-api.js +15 -3
- package/esm5/api/tournament-api.js +18 -3
- package/fesm2015/mtgame-core.js +13 -2
- package/fesm2015/mtgame-core.js.map +1 -1
- package/fesm5/mtgame-core.js +16 -2
- package/fesm5/mtgame-core.js.map +1 -1
- package/mtgame-core.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@mtgame/core/localization/hockey-penalty-types.ts","ng://@mtgame/core/models/util.ts","ng://@mtgame/core/models/file.ts","ng://@mtgame/core/models/sport.ts","ng://@mtgame/core/models/basketball-profile.ts","ng://@mtgame/core/models/user-profile.ts","ng://@mtgame/core/models/city.ts","ng://@mtgame/core/models/volleyball-profile.ts","ng://@mtgame/core/models/hockey-profile.ts","ng://@mtgame/core/models/football-profile.ts","ng://@mtgame/core/models/handball-profile.ts","ng://@mtgame/core/models/rugby-profile.ts","ng://@mtgame/core/models/user.ts","ng://@mtgame/core/models/tournament-season.ts","ng://@mtgame/core/models/team.ts","ng://@mtgame/core/models/organization.ts","ng://@mtgame/core/models/league.ts","ng://@mtgame/core/models/tournament.ts","ng://@mtgame/core/models/volleyball-game-config.ts","ng://@mtgame/core/models/basketball-game-config.ts","ng://@mtgame/core/models/playoff.ts","ng://@mtgame/core/models/league-court.ts","ng://@mtgame/core/models/media-item.ts","ng://@mtgame/core/models/hockey-game-config.ts","ng://@mtgame/core/models/football-game-config.ts","ng://@mtgame/core/models/handball-game-config.ts","ng://@mtgame/core/utils/array.ts","ng://@mtgame/core/models/game.ts","ng://@mtgame/core/models/tournament-group.ts","ng://@mtgame/core/utils/data.ts","ng://@mtgame/core/models/team-user.ts","ng://@mtgame/core/storage/store.ts","ng://@mtgame/core/services/base.service.ts","ng://@mtgame/core/services/config.service.ts","ng://@mtgame/core/models/tournament-team.ts","ng://@mtgame/core/models/basketball-game-log.ts","ng://@mtgame/core/models/tournament-disqualification.ts","ng://@mtgame/core/models/league-player.ts","ng://@mtgame/core/models/tournament-team-user.ts","ng://@mtgame/core/models/basketball-statistic.ts","ng://@mtgame/core/models/basketball-game-team-statistic.ts","ng://@mtgame/core/models/basketball-game-statistic.ts","ng://@mtgame/core/models/hockey-game-log.ts","ng://@mtgame/core/models/game-user.ts","ng://@mtgame/core/models/game-user-limitation.ts","ng://@mtgame/core/api/game-base-api.ts","ng://@mtgame/core/api/basketball-game-api.ts","ng://@mtgame/core/models/feedback.ts","ng://@mtgame/core/api/feedback-api.ts","ng://@mtgame/core/api/file-api.ts","ng://@mtgame/core/models/football-game-log.ts","ng://@mtgame/core/models/hockey-game-statistic.ts","ng://@mtgame/core/models/hockey-statistic.ts","ng://@mtgame/core/models/hockey-game-team-statistic.ts","ng://@mtgame/core/api/hockey-game-api.ts","ng://@mtgame/core/models/handball-game-log.ts","ng://@mtgame/core/models/football-game-statistic.ts","ng://@mtgame/core/models/football-statistic.ts","ng://@mtgame/core/models/football-game-team-statistic.ts","ng://@mtgame/core/api/football-game-api.ts","ng://@mtgame/core/models/tournament-stage.ts","ng://@mtgame/core/models/handball-game-statistic.ts","ng://@mtgame/core/models/handball-statistic.ts","ng://@mtgame/core/models/handball-game-team-statistic.ts","ng://@mtgame/core/api/handball-game-api.ts","ng://@mtgame/core/models/tournament-news.ts","ng://@mtgame/core/models/game-timeline-stages.ts","ng://@mtgame/core/models/league-news.ts","ng://@mtgame/core/models/volleyball-statistic.ts","ng://@mtgame/core/models/tournament-stage-team.ts","ng://@mtgame/core/models/tournament-event.ts","ng://@mtgame/core/models/league-user.ts","ng://@mtgame/core/models/rugby-statistic.ts","ng://@mtgame/core/api/tournament-api.ts","ng://@mtgame/core/models/league-banner.ts","ng://@mtgame/core/models/league-partner.ts","ng://@mtgame/core/models/poll.ts","ng://@mtgame/core/models/league-document.ts","ng://@mtgame/core/api/league-api.ts","ng://@mtgame/core/api/league-news-api.ts","ng://@mtgame/core/api/league-player-api.ts","ng://@mtgame/core/api/media-api.ts","ng://@mtgame/core/models/game-invite.ts","ng://@mtgame/core/models/team-invite.ts","ng://@mtgame/core/models/team-event-type.ts","ng://@mtgame/core/models/team-event-invite.ts","ng://@mtgame/core/localization/team-event-type.ts","ng://@mtgame/core/models/team-event.ts","ng://@mtgame/core/models/notification.ts","ng://@mtgame/core/models/tournament-team-user-invite.ts","ng://@mtgame/core/models/tournament-invite.ts","ng://@mtgame/core/models/notification-settings.ts","ng://@mtgame/core/models/rugby-game-log.ts","ng://@mtgame/core/api/notification-base-api.ts","ng://@mtgame/core/api/notification-api.ts","ng://@mtgame/core/api/org-notification-api.ts","ng://@mtgame/core/api/reference-api.ts","ng://@mtgame/core/models/rugby-game-team-statistic.ts","ng://@mtgame/core/models/rugby-game-statistic.ts","ng://@mtgame/core/models/team-permission.ts","ng://@mtgame/core/api/rugby-game-api.ts","ng://@mtgame/core/models/team-invite-external.ts","ng://@mtgame/core/models/user-permission.ts","ng://@mtgame/core/models/team-access.ts","ng://@mtgame/core/api/team-api.ts","ng://@mtgame/core/api/team-event-api.ts","ng://@mtgame/core/models/tournament-join-team.ts","ng://@mtgame/core/api/tournament-join-api.ts","ng://@mtgame/core/api/tournament-season-api.ts","ng://@mtgame/core/api/tournament-stage-api.ts","ng://@mtgame/core/models/user-access.ts","ng://@mtgame/core/models/volleyball-game-log.ts","ng://@mtgame/core/api/user-api.ts","ng://@mtgame/core/models/volleyball-game-team-statistic.ts","ng://@mtgame/core/models/volleyball-game-statistic.ts","ng://@mtgame/core/api/volleyball-game-api.ts","ng://@mtgame/core/api/public-team-api.ts","ng://@mtgame/core/api/public-user-api.ts","ng://@mtgame/core/localization/basketball-game-log-types.ts","ng://@mtgame/core/localization/hockey-game-log-types.ts","ng://@mtgame/core/localization/football-game-log-types.ts","ng://@mtgame/core/localization/handball-game-log-types.ts","ng://@mtgame/core/localization/overtime-types.ts","ng://@mtgame/core/localization/rugby-game-log-types.ts","ng://@mtgame/core/localization/team-user-role.ts","ng://@mtgame/core/localization/user-profile.ts","ng://@mtgame/core/localization/volleyball-game-log-types.ts","ng://@mtgame/core/models/league-playlist.ts","ng://@mtgame/core/models/rugby-game-config.ts","ng://@mtgame/core/services/centrifugo.service.ts","ng://@mtgame/core/storage/storage-engine.ts","ng://@mtgame/core/storage/local-storage-engine.ts","ng://@mtgame/core/utils/cookie.ts","ng://@mtgame/core/utils/favicon.ts","ng://@mtgame/core/http-cookie.interceptor.ts","ng://@mtgame/core/utils/component-destroyed.ts","ng://@mtgame/core/utils/validators.ts","ng://@mtgame/core/utils/enum.ts","ng://@mtgame/core/utils/errors.ts","ng://@mtgame/core/utils/device.ts","ng://@mtgame/core/utils/form.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__values","o","m","__read","ar","error","__spread","concat","HockeyPenaltyTypes","id","code","title","BaseModel","data","_b","keys","_c","toFront","dto","toBack","enumField","enumClass","isNaN","penaltyTypeField","find","item","listField","modelClass","isArray","map","DateField","_super","date","Date","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","toISOString","slice","DateTimeField","ModelInstance","config","mappingFields","relation","path","modelType","instance","backField","frontField","extractValue","undefined","FileEngine","ToFrontHook","descriptor","args","_i","parseMethod","ToBackHook","keyParts","split","keyParts_1","keyParts_1_1","k","SportTypes","File","_originalName","name","resizedPath","_path","filePath","file","original_name","resized_path","mime_type","size","engine","created_at","createdAt","GameBasketballPosition","WorkHand","Sport","isBasketball","basketball","parentId","isClassicBasketball","classic_basketball","isStreetball","streetball","isVolleyball","volleyball","isClassicVolleyball","classic_volleyball","isBeachVolleyball","beach_volleyball","isHockey","hockey","isIceHockey","ice_hockey","isBallHockey","ball_hockey","isFootball","football","isClassicFootball","classic_football","isMiniFootball","mini_football","isHandball","handball","isHandballClassic","handball_classic","isRugby","rugby","isRugby15","rugby15","isRugby7","rugby7","sport","parent_id","sub_sports","UserProfile","user_id","height","weight","City","GameVolleyballPosition","VolleyballWorkHand","BasketballProfile","position","work_hand","workHand","GameHockeyPosition","HockeyWorkHand","VolleyballProfile","GameFootballPosition","FootballWorkFoot","HockeyProfile","GameHandballPosition","FootballProfile","work_foot","workFoot","GameRugbyPosition","HandballProfile","UserGender","RugbyProfile","TournamentSeasonStatuses","User","user","lastName","firstName","filter","join","substr","birthDate","diff","getTime","Math","floor","last_name","first_name","middle_name","email","phone","birth_date","photo","profile","basketball_profile","volleyball_profile","hockey_profile","football_profile","handball_profile","rugby_profile","wizards","city","gender","is_active","basketballProfile","volleyballProfile","hockeyProfile","footballProfile","handballProfile","rugbyProfile","Team","getEmptyLogoClass","classList","team","logo","owner","users_count","won_games_count","games_count","score_sum","closest_game_datetime","closestGameDatetime","Organization","owner_id","League","socialLinks","link","indexOf","contact_email","contact_phone","alias","description","social_links","links","organization","tournaments_count","documents_count","cover","about","TournamentTypes","TournamentStatuses","TournamentGender","BasketballStatisticTypes","VolleyballStatisticTypes","GameTimeTypes","OvertimeTypes","TournamentSeason","preview_image","status","start_date","closed_date","tournaments","previewImage","startDate","closedDate","VolleyballGameTypes","TournamentSettings","age_from","age_to","max_team_players","max_game_players","type","tours_count","periods_count","period_time","overtime_type","overtime_time","overtime_score","game_type","timeout_count","timeout_time","substitute_count","game_up_to_score","volleyball_score_in_set","volleyball_score_in_last_set","manage_team_application","recruitment_is_open","transfer_is_open","basketball_statistic_type","volleyball_statistic_type","shot_clock_enabled","game_time_type","with_result_table","free_substitute_enabled","bonus_points_enabled","basketballStatisticType","volleyballStatisticType","gameTimeType","overtimeType","TournamentTeamWinner","team_id","tournament_id","points","Tournament","location","price","regulation_files","settings","league","teams_count","team_winner","team_second","team_third","season","season_id","regulationFile","teamWinner","teamSecond","teamThird","BasketballGameConfig","overtime_timeout_count","statistic_type","statisticType","PlayoffTypes","VolleyballGameConfig","gameType","best_of_three","getSetMaxScore","set","setsCount","scoreInLastSet","scoreInSet","score_in_set","score_in_last_set","LeagueCourt","address","league_id","MediaItem","Boolean","videoUrl","original_photo","list_photo","detail_photo","game","tournament","game_id","video_url","video_preview","is_live","originalPhoto","listPhoto","detailPhoto","videoPreview","HockeyGameConfig","periodsCount","FootballGameConfig","HandballGameConfig","generateArray","GameStatuses","GameResultTypes","PlayoffSettings","rounds","final_rounds","third_place_rounds","min_player_games_count","min_player_time","Playoff","_this","stages","log","teamsCount","getPlayoffStages","stagesCount","stage","playoffStage","pow","tournament_stage_id","is_official","TournamentGroup","sort","TournamentTeamShort","Game","_basketballGameConfig","gameConfig","_volleyballGameConfig","_hockeyGameConfig","_handballGameConfig","_footballGameConfig","scoreByPeriod","period","teamScore","competitorTeamScore","closed","competitorTeam","teamId","competitorTeamId","tournament_team","tournament_team_id","competitor_team","competitor_tournament_team","competitor_tournament_team_id","competitor_team_id","competitor_team_name","datetime","team_score","competitor_team_score","result_type","playoff_number","tournament_tour","game_config","basketball_game_config","volleyball_game_config","hockey_game_config","football_game_config","handball_game_config","score_by_period","playoff_stage","tournament_playoff_id","tournament_playoff","tournament_court","media_count","media_live_count","media","tournament_group","tournamentTeam","competitorTournamentTeam","resultType","basketballGameConfig","volleyballGameConfig","hockeyGameConfig","footballGameConfig","handballGameConfig","tournamentPlayoff","tournamentCourt","tournamentGroup","updateItemInArray","force","checkFunction","isFunction","updatedAt","updateItemsInArray","items","forEach","addItemInArray","atEnd","addItemsInArray","reverse","deleteItemFromArray","functionToCheck","toString","TeamUserRole","Store","get","getSubject","pipe","save","appendItem","appendItems","prependItem","prependItems","updateItem","updateItems","deleteItem","dispose","complete","clearStorageData","clear","getEngine","BehaviorSubject","BaseService","store","Injectable","providedIn","ConfigService","configData","initialize","_a","Optional","Inject","TournamentTeam","gamesCount","wonGamesCount","group","final_standing","draw_games_count","last_games_count","last_games_won","missed_sum","score_points_sum","missed_points_sum","games","notifications_count","win_normal_time_games_count","lose_normal_time_games_count","win_overtime_games_count","lose_overtime_games_count","last_five_games","lastFiveGames","BasketballGameLogTypes","TeamUser","teamPlayer","role","number","TournamentDisqualification","tournament_team_user_id","date_from","date_to","matches_count","dateFrom","dateTo","LeaguePlayer","middleName","has_changes","rating","TournamentTeamUser","team_user","disqualified","disqualification","league_player","teamUser","leaguePlayer","BasketballStatistic","personalFouls","technicalFouls","unsportsmanlikeFouls","gameTime","tournament_team_user","month","win_lose","two_points_made","three_points_made","free_throws_made","one_points_made","two_point_attempts","three_point_attempts","free_throw_attempts","one_point_attempts","two_point_percent","three_point_percent","free_throw_percent","one_point_percent","assists","blocks","rebounds","offensive_rebounds","defensive_rebounds","steals","turnovers","personal_fouls","technical_fouls","unsportsmanlike_fouls","game_time","newbie","rank","tournamentTeamUser","BasketballGameTeamStatistic","BasketballGameStatistic","gameUserId","game_user_id","updated_at","HockeyGameLogTypes","HockeyAdvantageTypes","BasketballGameLog","active","isPointsType","two_point_made","three_point_made","free_throw_made","one_point_made","logType","isReboundType","rebound","offensive_rebound","defensive_rebound","isFoulType","personal_foul","technical_foul","unsportsmanlike_foul","getScore","compare","model","time","minutes","seconds","unique_id","log_type","is_highlight","GameUser","is_mvp","GameUserLimitationTypes","min_user_games_count","min_user_time","manual","GameUserLimitations","limitations","GameBaseApi","httpClient","configService","getUsers","gameId","toPromise","getMvp","getUsersLimitation","HttpClient","BasketballGameApi","getById","getTeamStatistic","getUserStatistic","getLogs","downloadProtocol","fileType","responseType","downloadFibaProtocol","Feedback","theme","message","files","captcha","FeedbackApi","sendFeedback","post","response","sendLeagueFeedback","leagueId","FileApi","upload","fileData","filename","width","params","HttpParams","formData","FormData","append","createZipArchive","files_1","files_1_1","FootballGameLogTypes","HockeyGameLog","_penalizedGameUserId","isScoreType","goal","shootout_goal","after_game_shootout_goal","isPenaltyType","minor_penalty","major_penalty","misconduct_penalty","game_misconduct_penalty","penalty_shot","match_penalty","isAfter","advantage","advantage_num","is_goalie","penalty_type","penalized_game_user_id","mutual_penalty","penaltyType","HockeyGameStatistic","evShotsOnGoal","ppShotsOnGoal","shShotsOnGoal","evShotsBlocked","ppShotsBlocked","shShotsBlocked","evShotMisses","ppShotMisses","shShotMisses","ppShots","evShots","shShots","shootoutAttempts","shots","ppGoals","shGoals","evGoals","goals","shootoutGoals","ppAssists","evAssists","shAssists","faceOffWins","faceOffLosses","saves","goalsAgainst","shootoutSaves","shootoutGoalsAgainst","shotsAgainst","shootoutShotsAgainst","round","totalShotsAgainst","totalSaves","pp_shot_misses","pp_shots_on_goal","pp_shots_blocked","ev_shot_misses","ev_shots_on_goal","ev_shots_blocked","sh_shot_misses","sh_shots_on_goal","sh_shots_blocked","pp_goals","ev_goals","sh_goals","pp_assists","ev_assists","sh_assists","shootout_attempts","shootout_goals","after_game_shootout_attempts","after_game_shootout_goals","block_shots","face_off_losses","face_off_wins","shootout_save","after_game_shootout_saves","goals_against","shootout_goals_against","after_game_shootout_goals_against","safety_rate","penalty_minutes","plus_minus","HockeyStatistic","lose_games_count","pp_shots","ev_shots","sh_shots","pp_goals_percent","ev_goals_percent","sh_goals_percent","total_goals","shot_misses","shots_on_goal","shots_blocked","total_shots","goals_percent","total_goals_percent","face_offs","face_off_percent","total_saves","shootout_saves","shots_against","shootout_shots_against","total_shots_against","saves_percent","total_saves_percent","total_goals_against","HockeyGameTeamStatistic","HockeyGameApi","format","downloadApplication","HandballGameLogTypes","FootballGameLog","penalty_goal","small_penalty_goal","auto_goal","FootballGameStatistic","shotMisses","shotsOnGoal","shotsBlocked","penaltyGoals","smallPenaltyGoals","totalGoals","penaltyAttempts","penaltyShots","smallPenaltyAttempts","smallPenaltyShots","penaltySaves","penaltyGoalsAgainst","smallPenaltySaves","smallPenaltyGoalsAgainst","autoGoalsAgainst","penaltyShotsAgainst","smallPenaltyShotsAgainst","corners","free_kicks","penalty_goals","penalty_attempts","penalty_goals_against","penalty_saves","small_penalty_goals","small_penalty_attempts","small_penalty_goals_against","small_penalty_saves","fouls","yellow_cards","red_cards","perfect_passes","losses","outs","auto_goals","auto_goals_against","FootballStatistic","drawGamesCount","scoreSum","missedSum","shots_on_goal_percent","penalty_goals_percent","penalty_shots_against","penalty_saves_percent","small_penalty_goals_percent","small_penalty_shots_against","small_penalty_saves_percent","FootballGameTeamStatistic","FootballGameApi","TournamentStageStatuses","HandballGameLog","foul","yellow_card","red_card","HandballGameStatistic","penaltyShotsOnGoal","penaltyMisses","penalty_misses","penalty_shots_on_goal","yellowCards","two_minute_fouls","HandballStatistic","penalty_shots","HandballGameTeamStatistic","HandballGameApi","TournamentNews","picture","text","author","GameTimelineStageItem","stage_id","playoff_stages_count","GameTimelineStages","current_tour","current_playoff_stage","LeagueNewsType","TournamentStage","VolleyballStatistic","receives","excellentReceives","serve_hits","serve_faults","serve_aces","serve_percent","ace_percent","stuff_blocks","block_faults","block_rebounds","block_percent","attack_spikes","attack_faults","attack_shots","attack_percent","receive_faults","excellent_receives","receive_percent","serve_receives","serve_receive_faults","excellent_serve_receives","serve_receive_percent","faults","TournamentStageTeam","received_points","TournamentEventTypes","LeagueNews","preview_text","detail_text","mobile_picture","is_main","video_link","tag","mobilePicture","LeagueUserRoles","LeagueUserPermissions","TournamentEvent","news","event","LeagueUser","_role","permissions","RugbyStatistic","tries","penalty_tries","conversion_goals","conversion_misses","drawing_ball","drop_goals","drop_goal_misses","offloads","tackles","handling_errors","carries_other_gainline","scrums_won","scrum_losses","scrums_won_free","lineouts_success","lineouts_steal","quick_throws","rucks_won","ruck_losses","mauls_won","maul_losses","TournamentApi","tournamentId","getByAlias","getNews","getEvents","page","filters","search","tournamentTour","observe","total","headers","getTournamentStages","getPlayoff","getPlayoffGames","playoffId","playoffNumber","getGamesStages","getGames","applyGamesFilters","getTeams","getStageTeams","getTeamById","tournamentTeamId","getUserById","userId","getUserGames","tournamentUserId","getBasketballStatisticLeaders","applyStatisticLeadersFilters","getVolleyballStatisticLeaders","getHockeyStatisticLeaders","getFootballStatisticLeaders","getHandballStatisticLeaders","getBasketballStatistic","applyStatisticFilters","getVolleyballStatistic","getHockeyStatistic","getFootballStatistic","getHandballStatistic","getRugbyStatistic","getTournamentTeamUsers","myPermission","getTournamentTeamTournaments","getTournamentUserTournaments","tournamentTeamUserId","tournamentIds","tournamentStageId","statuses","tournamentCourtId","leaguePlayerId","query","isPlayoff","per_game","tournament_ids","is_playoff","fields","BannerLocation","LeaguePartner","PollStatuses","LeagueBanner","LeagueDocument","LeagueApi","getByDomain","domain","getTournaments","getTournamentSeasons","getSeasons","notClosed","include","getPartners","getBanners","getCourts","getGraphicSettings","getDocuments","LeagueNewsApi","getLeagueNewsList","getMainLeagueNews","getMainLeagueNewsList","getNewsById","newsId","getTournamentNewsList","LeaguePlayerApi","getTournamentUsers","seasonId","MediaApi","getMedia","mediaId","getTournamentGameMedia","applyGameMediaFilters","getLeagueGameMedia","getLeagueMedia","mediaType","getGameMediaById","getGameMedia","createZip","mediaIds","downloadMedia","mediaCount","GameInviteStatus","PollVariant","uuid","PollAnswer","answer_uuid","poll_id","Poll","variantsWithAnswers","_variants","_answers","calculateAnswersPercentage","variants","answersByVariant","reduce","acc","answerUuid","variant","percent","a","answers","multiple_answer","anonymous","TeamInvite","user_accept","team_accept","updateAt","TeamEventTypes","GameInvite","TeamEventInviteStatuses","TeamEventTypeLocalization","training","other","TeamEvent","eventType","eventCustomName","event_type","event_custom_name","NotificationType","NotificationServiceEnum","TeamEventInvite","team_event_id","team_user_id","TournamentTeamUserInvite","tournament_team_invite_id","accepted","TournamentInvite","teamAccept","organizationAccept","organization_accept","user_invites_count","user_invites","userInvites","NotificationAllowTypes","Notification","initiator","team_invite","poll","game_invite","team_event","team_event_invite","tournament_invite","viewed","protected","service","teamInvite","gameInvite","teamEvent","teamEventInvite","tournamentInvite","RugbyGameLogTypes","NotificationSettings","popup","sound","browser","NotificationBaseApi","getCount","apiUrl","getList","markViewed","notificationId","markAllViewed","getNotificationSettings","updateNotificationSettings","NotificationApi","OrgNotificationApi","ReferenceApi","getCities","getSports","RugbyGameTeamStatistic","RugbyGameStatistic","TeamPermissionTypes","RUGBY_GAME_LOG_TYPE_POINTS","_a$1","penalty_try","try","conversion_goal","drop_goal","RUGBY_TEAM_LOG_TYPES","timeout","scrum_won","scrum_lose","scrum_won_free","lineout_success","lineout_loss","lineout_steal","quick_throw","ruck_won","ruck_lose","maul_won","maul_lose","team_foul","RugbyGameLog","scorePoints","isTeamType","includes","RugbyGameApi","TeamInviteExternal","UserPermissionTypes","TeamPermission","players","statistic","polls","events","TeamAccess","can_edit","can_view_users","can_manage_permission","can_change_owner","can_delete","can_manage_invites","can_view_invites","can_manage_polls","can_view_polls","can_answer_poll","can_manage_games","can_view_games","can_view_statistic","can_promote_users","can_edit_users","can_delete_users","can_view_events","can_manage_events","can_view_tournaments","can_manage_tournaments","TeamApi","sportId","getTeamAccess","update","values","patch","delete","getPermission","updatePermission","permission","updateUserRole","teamUserId","updateUserNumber","gameNumber","deleteUser","changeOwner","getInvites","sendInvite","acceptInvite","invite","declineInvite","resendInvite","getInvitesExternal","sendInviteExternal","deleteInviteExternal","resendInviteExternal","getPolls","archive","createPoll","getUsersStatistic","joinTeam","leaveTeam","createGame","getTeamEvents","createTeamEvent","getTournamentTeams","getTournamentInvites","getTournamentGames","acceptTournamentInvite","inviteId","declineTournamentInvite","registerLazyUser","userData","getLazyUser","updateLazyUser","deleteLazyUser","resendLazyUserEmail","TeamEventApi","getTeamEvent","teamEventId","updateTeamEvent","deleteTeamEvent","getTeamEventInvites","createTeamEventInvite","acceptTeamEventInvite","declineTeamEventInvite","TournamentJoinData","validUsersCount","invalidUsersCount","hasAccess","inviteSent","alreadyInTournament","valid_users_count","invalid_users_count","has_access","invite_sent","already_in_tournament","TournamentJoinTeam","join_data","joinData","TournamentJoinApi","getTeamsForJoin","getTeamUsers","joinTournament","invites","TournamentSeasonApi","short","getPlayoffs","TournamentStageApi","getGroups","stageId","UserAccess","edit","personal_data","teams","VolleyballGameLogType","UserPermission","personalData","UserApi","getCurrentUser","getAccess","updateUser","updateUserPhoto","changePassword","oldPassword","password","passwordConfirm","payload","old_password","password_confirm","changeEmail","changeEmailConfirm","token","getUserProfile","getBasketballProfile","getVolleyballProfile","updateUserProfile","userProfile","updateUserBasketballProfile","updateUserVolleyballProfile","getUserPermissions","updateUserPermission","getStatistics","getStreetballStatistics","getGameInvites","acceptGameInvite","declineGameInvite","searchUsers","setWizardShowed","wizard","put","VolleyballGameTeamStatistic","VolleyballGameStatistic","attackSpikes","attackShots","stuffBlocks","blockRebounds","SCORE_LOG_TYPES","serve_ace","stuff_block","attack_spike","point","FAULT_LOG_TYPES","serve_fault","attack_fault","block_fault","receive_fault","fault","serve_receive_fault","VolleyballGameLog","rally","isFaultType","isServe","serve_hit","isAttack","attack_shot","isReceive","receive","excellent_receive","isServeReceive","serve_receive","excellent_serve_receive","isBlock","block_rebound","isEnterExit","enter_game","exit_game","isComboType","VolleyballGameApi","downloadProtocolLight","PublicTeamApi","PublicUserApi","getTournamentUser","getLeaguePlayer","BasketballGameLogTypeLocalization","_a$2","remove_game","two_point_attempt","three_point_attempt","free_throw_attempt","one_point_attempt","assist","block","steal","turnover","team_rebound","HockeyGameLogTypeLocalization","_a$3","shot_miss","shot_on_goal","shot_blocked","shootout_attempt","after_game_shootout_attempt","block_shot","face_off_lose","face_off_win","after_game_shootout_save","penalty_start","penalty_end","FootballGameLogTypeLocalization","_a$4","penalty_attempt","small_penalty_attempt","corner","free_kick","penalty_save","small_penalty_save","perfect_pass","loss","out","HandballGameLogTypeLocalization","_a$5","penalty_miss","penalty_shot_on_goal","two_minute_foul","OvertimeTypeLocalization","_a$6","to_score_diff","to_score_total","without_overtime","to_first_goal","to_first_goal_and_bullitts","bullitts","penalties","time_and_penalties","RugbyGameLogTypeLocalization","_a$7","conversion_miss","drop_goal_miss","offload","tackle","handling_error","TeamUserRoleLocalization","_a$8","member","moderator","admin","coach","head_coach","playing_coach","manager","head_manager","captain","assistant","GameBasketballPositionLocalization","_a$9","point_guard","shooting_guard","small_forward","power_forward","center","GameBasketballPositionShortLocalization","WorkHandLocalization","left","right","GameVolleyballPositionLocalization","_d","setter","libero","middle_player","receiver_attacker","dioganal","GameVolleyballPositionShortLocalization","_e","GameVolleyballPositionShortRuLocalization","_f","VolleyballWorkHandLocalization","_g","GameHockeyPositionLocalization","_h","goaltender","defensemen","forward","GameFootballPositionLocalization","_j","goalkeeper","midfielder","FootballWorkFootLocalization","_k","both","GameHandballPositionLocalization","_l","winger","pivot","centre_back","fullback","GameRugbyPositionLocalization","_m","front_line","second_line","back_line","halfback","three_quarter","VolleyballGameLogTypeLocalization","_a$a","LeaguePlaylist","key_code","RugbyGameConfig","overtime_periods","CentrifugoService","channels$","subscriptions","connectedSubject","listen","channel","Subject","subscription","connect","subscribe","connected","addEngineSubscription","setTimeout","unsubscribe","initializeEngineSubject","ReplaySubject","initializeEngine","url","timestamp","transports","centrifuge","on","publish","Observable","observer","res","disconnect","Centrifuge","resolveMessage","bind","StorageEngineField","defaultValue","StorageEngine","addField","field","setItem","getItem","removeItem","Error","LocalStorageEngine","localStorage","JSON","stringify","parse","getCookie","parts","document","cookie","shift","getIconsData","folder","rel","sizes","href","color","HttpCookieInterceptor","injector","platformId","isBrowser","isPlatformBrowser","intercept","req","handle","clone","withCredentials","csrf","setHeaders","X-CSRFToken","Injector","PLATFORM_ID","cmpType","def","ɵcmp","ɵdir","original","onDestroy","__componentDestroyed$","leagueAlias","data_1","data_1_1","createElement","e_2","setAttribute","head","appendChild","component","maxFileSize","control","array","chunks","chunkLength","ceil","production","captureException","console","prefixes","window","DocumentTouch","q","matchMedia","matches","markFormGroupTouched","formGroup","controls","markAsTouched","markAsDirty","FormGroup","minLength","minLengthArray","valid","test","invalidDate","authService","selfCheck","ignore","subject","of","delay","switchMap","checkEmail","emailTaken","replace","invalidPhone","invalidUrl"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export const HockeyPenaltyTypes = [\n {id: 1, code: 'ÐÐÐ ÐС', title: 'ÐгÑеÑÑÐ¾Ñ Ð² дÑаке'},\n {id: 2, code: 'ÐТ-Ð-ÐÐÐ', title: 'ÐÑака в Ð³Ð¾Ð»Ð¾Ð²Ñ Ð¸Ð»Ð¸ ÑеÑ'},\n {id: 3, code: 'ÐТ-ÐÐ ', title: 'ÐÑака вÑаÑаÑÑ'},\n {id: 4, code: 'ÐТ-СÐ', title: 'ÐÑака Ñзади'},\n {id: 5, code: 'ÐÐÐÐ', title: 'ÐлокиÑовка'},\n {id: 6, code: 'ÐÐ -ÐÐ', title: 'ÐÑоÑок клÑÑки'},\n {id: 7, code: 'ÐÐ-ШÐ', title: 'ÐÑбÑÐ¾Ñ ÑайбÑ'},\n {id: 8, code: 'ÐРУÐ', title: 'ÐÑÑбоÑÑÑ'},\n {id: 9, code: 'ÐÐСЦ', title: 'ÐиÑÑиплинаÑнÑй ÑÑÑаÑ'},\n {id: 10, code: 'ÐÐС-ÐÐ', title: 'ÐиÑÑиплинаÑнÑй до конÑа маÑÑа'},\n {id: 11, code: 'ÐÐ ÐÐÐ', title: 'ÐÑака'},\n {id: 12, code: 'ÐÐЧÐÐ', title: 'ÐаÑинÑик дÑаки'},\n {id: 13, code: 'ÐÐ-ÐÐ', title: 'ÐадеÑжка игÑÑ'},\n {id: 14, code: 'ÐÐ-ÐÐ-СÐ', title: 'ÐадеÑжка клÑÑки ÑопеÑника'},\n {id: 15, code: 'ÐÐ-ÐÐ', title: 'ÐадеÑжка клÑÑкой'},\n {id: 16, code: 'ÐÐ-СÐ', title: 'ÐадеÑжка ÑопеÑника'},\n {id: 17, code: 'ÐÐ-ШÐ', title: 'ÐадеÑжка ÑÐ°Ð¹Ð±Ñ ÑÑками'},\n {id: 18, code: 'СÐ-ÐÐ', title: 'ÐгÑа Ñо Ñломанной клÑÑкой'},\n {id: 19, code: 'ÐÐ-ÐÐ', title: 'ÐгÑа вÑÑоко поднÑÑой клÑÑкой'},\n {id: 20, code: 'ÐÐ-УÐ', title: 'ÐолÑÑий ÑдаÑ'},\n {id: 21, code: 'СÐ-ШТ', title: 'ÐалÑй ÑкамееÑнÑй ÑÑÑаÑ'},\n {id: 22, code: 'ÐШ', title: 'ÐаÑÑ-ÑÑÑаÑ'},\n {id: 23, code: 'ÐÐ-ÐТ', title: 'ÐепÑавилÑÐ½Ð°Ñ Ð°Ñака'},\n {id: 24, code: 'ЧС-СТ', title: 'ÐаÑÑÑение ÑиÑленного ÑоÑÑава'},\n {id: 25, code: 'ÐС-ÐÐ', title: 'ÐеÑÑандаÑÑÐ½Ð°Ñ ÐºÐ»ÑÑка'},\n {id: 26, code: 'ÐÐÐ -ÐÐ', title: 'ÐпаÑное ÑнаÑÑжение'},\n {id: 27, code: 'ÐС-ÐÐ', title: 'ÐÑкоÑбление ÑÑдей и неÑпоÑÑивное поведение'},\n {id: 28, code: 'ÐТ-ÐÐ', title: 'ÐÑказ наÑаÑÑ Ð¸Ð³ÑÑ'},\n {id: 29, code: 'ÐТСЧ', title: 'ÐÑÑеÑение'},\n {id: 30, code: 'ÐÐÐÐÐÐ', title: 'Ðлевок'},\n {id: 31, code: 'ÐÐÐÐ', title: 'Ðодножка'},\n {id: 32, code: 'ÐÐÐС', title: 'ÐодÑеÑка'},\n {id: 33, code: 'ÐÐ -ÐÐ', title: 'ÐÑедÑпÑеждение инÑекÑий'},\n {id: 34, code: 'ÐÐ-СÐ', title: 'Ðокидание Ñкамейки во вÑÐµÐ¼Ñ ÐºÐ¾Ð½ÑликÑа'},\n {id: 35, code: 'СÐ-ÐÐ ', title: 'Сдвиг воÑоÑ'},\n {id: 36, code: 'СÐÐ', title: 'СимÑлÑÑиÑ'},\n {id: 37, code: 'ТÐ-ÐÐ ', title: 'ТолÑок на боÑÑ'},\n {id: 38, code: 'ТÐ-ÐÐ', title: 'ТолÑок клÑÑкой'},\n {id: 39, code: 'УÐ-ÐÐÐ', title: 'Ð£Ð´Ð°Ñ Ð³Ð¾Ð»Ð¾Ð²Ð¾Ð¹'},\n {id: 40, code: 'УÐ-ÐÐ', title: 'Ð£Ð´Ð°Ñ ÐºÐ»ÑÑкой'},\n {id: 41, code: 'УÐ-Ð-ÐÐ', title: 'Ð£Ð´Ð°Ñ ÐºÐ¾Ð½Ñом клÑÑки'},\n {id: 42, code: 'УÐ-ÐÐÐ', title: 'Ð£Ð´Ð°Ñ ÐºÐ¾Ð»ÐµÐ½Ð¾Ð¼'},\n {id: 43, code: 'УÐ-ÐÐÐ', title: 'Ð£Ð´Ð°Ñ Ð»Ð¾ÐºÑем'},\n {id: 44, code: 'УÐ-ÐÐ', title: 'Ð£Ð´Ð°Ñ Ð½Ð¾Ð³Ð¾Ð¹'},\n {id: 45, code: 'УÐУС', title: 'УкÑÑ'},\n {id: 46, code: 'ÐÐ-ÐÐ ', title: 'ФизиÑеÑкий конÑÐ°ÐºÑ Ñо зÑиÑелем'},\n {id: 47, code: 'ШТ-ÐÐ ', title: 'ШÑÑÐ°Ñ Ð²ÑаÑаÑÑ'}\n];\n","import { HockeyPenaltyTypes } from '../localization/hockey-penalty-types';\n\nexport const MODEL_MAPPING_FIELDS_KEY = '_mapping_fields_';\nexport const MODEL_RELATION_KEY = '_relation_';\nexport const MODEL_TO_FRONT_KEY = '_to_front_';\nexport const MODEL_TO_BACK_KEY = '_to_back_';\n\ntype ParserInterface = (dto: any, path?: GraphPathInterface) => any;\n\ninterface ModelTypeInterface {\n new(data?: any);\n}\n\nexport interface ModelInterface {\n toFront(dto: any): any;\n toBack(dto: any): any;\n}\n\nexport abstract class BaseModel {\n constructor(data?: {[key: string]: any}) {\n if (data) {\n for (const key of Object.keys(data)) {\n this[key] = data[key];\n }\n }\n }\n\n static toFront(dto: any): any {\n return undefined;\n }\n\n static toBack(dto: any): any {\n return undefined;\n }\n}\n\ninterface GraphPathInterface {\n [key: string]: any;\n}\n\nexport function enumField(enumClass) {\n return {\n toFront: (value) => {\n if (isNaN(+value)) {\n return enumClass[value];\n } else {\n return value;\n }\n },\n toBack: (value) => {\n if (isNaN(+value)) {\n return value;\n } else {\n return enumClass[value];\n }\n }\n };\n}\n\nexport function penaltyTypeField() {\n return {\n toFront: (data) => {\n if (!data) {\n return null;\n }\n if (typeof data === 'object') {\n return data;\n }\n return HockeyPenaltyTypes.find(item => item.id === data);\n },\n toBack: (data) => {\n if (!data) {\n return null;\n }\n if (typeof data === 'object') {\n return data.id;\n }\n return data;\n }\n };\n}\n\nexport function listField(modelClass) {\n return {\n toFront: (value) => {\n if (!Array.isArray(value)) {\n return [];\n }\n return value.map(item => modelClass.toFront(item));\n },\n toBack: (value) => {\n if (!Array.isArray(value)) {\n return [];\n }\n return value.map(item => modelClass.toBack(item));\n }\n };\n}\n\nexport class DateField extends BaseModel {\n static toFront(date: any): any {\n if (date) {\n return new Date(date);\n } else {\n return undefined;\n }\n }\n static toBack(date: Date): any {\n if (date) {\n const dateUtc = new Date(Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds())\n );\n return dateUtc.toISOString().slice(0, 10);\n } else {\n return undefined;\n }\n }\n}\n\nexport class DateTimeField extends BaseModel {\n static toFront(date: any): any {\n if (date) {\n return new Date(date);\n } else {\n return undefined;\n }\n }\n static toBack(date: Date): any {\n if (date) {\n const dateUtc = new Date(Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds())\n );\n return date.toISOString();\n } else {\n return undefined;\n }\n }\n}\n\nexport function ModelInstance(\n config: {\n mappingFields?: { [key: string]: string },\n relation?: { [key: string]: BaseModel }\n }\n) {\n return (target: ModelTypeInterface) => {\n if (config) {\n if (config.mappingFields) {\n target[MODEL_MAPPING_FIELDS_KEY] = config.mappingFields;\n }\n if (config.relation) {\n target[MODEL_RELATION_KEY] = config.relation;\n }\n target[MODEL_TO_FRONT_KEY] = (dto: any, path: GraphPathInterface) => {\n return toFront(target, dto, path);\n };\n target[MODEL_TO_BACK_KEY] = (dto: any, path: GraphPathInterface) => {\n return toBack(target, dto, path);\n };\n }\n };\n}\n\nexport const ToFrontHook = (target: ModelTypeInterface, key: string | symbol, descriptor: TypedPropertyDescriptor<Function>) => {\n return {\n value: (...args: any[]) => {\n const parseMethod = target[MODEL_TO_FRONT_KEY] as ParserInterface;\n if (parseMethod) {\n return parseMethod(args[0], (args.length > 1 ? args[1] : undefined));\n }\n return undefined;\n }\n };\n};\n\nexport const ToBackHook = (target: ModelTypeInterface, key: string | symbol, descriptor: TypedPropertyDescriptor<Function>) => {\n return {\n value: (...args: any[]) => {\n const parseMethod = target[MODEL_TO_BACK_KEY] as ParserInterface;\n if (parseMethod) {\n return parseMethod(args[0]);\n }\n return undefined;\n }\n };\n};\n\nfunction extractValue(key, data) {\n if (!data) {\n return undefined;\n }\n\n const keyParts = key.split('.');\n if (keyParts.length === 1) {\n if (key in data) {\n return data[key];\n } else {\n return undefined;\n }\n }\n\n for (const k of keyParts) {\n if (data && k in data) {\n data = data[k];\n } else {\n return undefined;\n }\n }\n\n return data;\n}\n\nfunction toFront(modelType: ModelTypeInterface, data: any, path?: GraphPathInterface): any {\n // Check if recursion is required\n if (Array.isArray(data)) {\n return data.map(item => {\n return toFront(modelType, item);\n });\n }\n\n const instance = new modelType();\n\n // Mapping fields\n const mappingFields = modelType[MODEL_MAPPING_FIELDS_KEY] as string[];\n const relation = modelType[MODEL_RELATION_KEY] as { [key: string]: ModelInterface };\n if (mappingFields) {\n for (const backField of Object.keys(mappingFields)) {\n const frontField = mappingFields[backField];\n const value = extractValue(backField, data);\n if (relation && relation.hasOwnProperty(frontField)) {\n instance[frontField] = relation[frontField].toFront(value);\n } else {\n instance[frontField] = value;\n }\n }\n }\n\n return instance;\n}\n\nfunction toBack(modelType: ModelTypeInterface, instance: any, path?: GraphPathInterface): any {\n if (!instance) {\n return instance;\n }\n\n // Check if recursion is required\n if (Array.isArray(instance)) {\n return instance.map(item => {\n return toBack(modelType, item);\n });\n }\n\n const data = {};\n const mappingFields = modelType[MODEL_MAPPING_FIELDS_KEY] as string[];\n const relation = modelType[MODEL_RELATION_KEY] as { [key: string]: ModelInterface };\n if (mappingFields) {\n for (const backField of Object.keys(mappingFields)) {\n const frontField = mappingFields[backField];\n if (relation && relation.hasOwnProperty(frontField) && instance[frontField] !== undefined) {\n data[backField] = relation[frontField].toBack(instance[frontField]);\n } else {\n data[backField] = instance[frontField];\n }\n }\n }\n\n return data;\n}\n","import { ModelInstance, ToFrontHook, ToBackHook, enumField, DateTimeField } from './util';\n\nexport enum FileEngine {\n django = 1,\n s3\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n original_name: 'originalName',\n path: 'path',\n resized_path: 'resizedPath',\n mime_type: 'mimeType',\n size: 'size',\n engine: 'engine',\n created_at: 'createdAt',\n },\n relation: {\n engine: enumField(FileEngine),\n createdAt: DateTimeField,\n }\n})\nexport class File {\n id: number;\n name: string;\n _originalName: string;\n _path: string;\n resizedPath: string;\n mimeType: string;\n size: number;\n engine: FileEngine;\n createdAt: Date;\n\n set originalName(name: string) {\n this._originalName = name;\n }\n\n get originalName(): string {\n return this._originalName || this.name;\n }\n\n set path(filePath: string) {\n this._path = filePath;\n }\n\n get path(): string {\n return this.resizedPath || this._path;\n }\n\n @ToFrontHook\n static toFront(data: any): File {\n return null;\n }\n\n @ToBackHook\n static toBack(file: File): any {\n return null;\n }\n}\n","import {ModelInstance, ToFrontHook, ToBackHook, BaseModel} from './util';\n\nexport enum SportTypes {\n basketball = 1,\n volleyball = 2,\n classic_basketball = 3,\n streetball = 4,\n classic_volleyball = 5,\n beach_volleyball = 6,\n hockey = 7,\n ice_hockey = 8,\n ball_hockey = 9,\n football = 10,\n classic_football = 11,\n mini_football = 12,\n handball = 13,\n handball_classic = 14,\n rugby = 15,\n rugby7 = 16,\n rugby15 = 17,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n parent_id: 'parentId',\n sub_sports: 'subSports'\n }\n})\nexport class Sport extends BaseModel {\n id: number;\n name: string;\n parentId: number;\n subSports: Sport[];\n\n isBasketball() {\n return this.id === SportTypes.basketball || this.parentId === SportTypes.basketball;\n }\n\n isClassicBasketball() {\n return this.id === SportTypes.classic_basketball;\n }\n\n isStreetball() {\n return this.id === SportTypes.streetball;\n }\n\n isVolleyball() {\n return this.id === SportTypes.volleyball || this.parentId === SportTypes.volleyball;\n }\n\n isClassicVolleyball() {\n return this.id === SportTypes.classic_volleyball;\n }\n\n isBeachVolleyball() {\n return this.id === SportTypes.beach_volleyball;\n }\n\n isHockey(): boolean {\n return this.id === SportTypes.hockey || this.parentId === SportTypes.hockey;\n }\n\n isIceHockey(): boolean {\n return this.id === SportTypes.ice_hockey;\n }\n\n isBallHockey(): boolean {\n return this.id === SportTypes.ball_hockey;\n }\n\n isFootball() {\n return this.id === SportTypes.football || this.parentId === SportTypes.football;\n }\n\n isClassicFootball() {\n return this.id === SportTypes.classic_football;\n }\n\n isMiniFootball() {\n return this.id === SportTypes.mini_football;\n }\n\n isHandball() {\n return this.id === SportTypes.handball || this.parentId === SportTypes.handball;\n }\n\n isHandballClassic() {\n return this.id === SportTypes.handball_classic;\n }\n\n isRugby() {\n return this.id === SportTypes.rugby || this.parentId === SportTypes.rugby;\n }\n\n isRugby15() {\n return this.id === SportTypes.rugby15;\n }\n\n isRugby7() {\n return this.id === SportTypes.rugby7;\n }\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(sport: Sport): any {\n return null;\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameBasketballPosition {\n point_guard = 1,\n shooting_guard,\n small_forward,\n power_forward,\n center\n}\n\nexport enum WorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameBasketballPosition),\n workHand: enumField(WorkHand)\n }\n})\nexport class BasketballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameBasketballPosition;\n workHand: WorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n height: 'height',\n weight: 'weight'\n }\n})\nexport class UserProfile {\n id: number;\n userId: number;\n height: number;\n weight: number;\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name'\n }\n})\nexport class City extends BaseModel {\n id: number;\n name: string;\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameVolleyballPosition {\n setter = 1,\n libero,\n middle_player,\n receiver_attacker,\n dioganal\n}\n\nexport enum VolleyballWorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameVolleyballPosition),\n workHand: enumField(VolleyballWorkHand)\n }\n})\nexport class VolleyballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameVolleyballPosition;\n workHand: VolleyballWorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameHockeyPosition {\n defensemen = 1,\n forward,\n goaltender\n}\n\nexport enum HockeyWorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameHockeyPosition),\n workHand: enumField(HockeyWorkHand)\n }\n})\nexport class HockeyProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameHockeyPosition;\n workHand: HockeyWorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameFootballPosition {\n defensemen = 1,\n midfielder,\n forward,\n goalkeeper\n}\n\nexport enum FootballWorkFoot {\n left = 1,\n right,\n both\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_foot: 'workFoot'\n },\n relation: {\n position: enumField(GameFootballPosition),\n workFoot: enumField(FootballWorkFoot)\n }\n})\nexport class FootballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameFootballPosition;\n workFoot: FootballWorkFoot;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { WorkHand } from './basketball-profile';\n\nexport enum GameHandballPosition {\n goalkeeper = 1,\n winger,\n pivot,\n centre_back,\n fullback\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameHandballPosition),\n workHand: enumField(WorkHand)\n }\n})\nexport class HandballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameHandballPosition;\n workHand: WorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameRugbyPosition {\n front_line = 1,\n second_line,\n back_line,\n halfback,\n three_quarter,\n fullback,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position'\n },\n relation: {\n position: enumField(GameRugbyPosition),\n }\n})\nexport class RugbyProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameRugbyPosition;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, DateField, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { UserProfile } from './user-profile';\nimport { File } from './file';\nimport { City } from './city';\nimport { BasketballProfile } from './basketball-profile';\nimport { VolleyballProfile } from './volleyball-profile';\nimport { HockeyProfile } from './hockey-profile';\nimport { FootballProfile } from './football-profile';\nimport { HandballProfile } from './handball-profile';\nimport { RugbyProfile } from './rugby-profile';\n\nexport enum UserGender {\n male = 1,\n female\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n last_name: 'lastName',\n first_name: 'firstName',\n middle_name: 'middleName',\n email: 'email',\n phone: 'phone',\n birth_date: 'birthDate',\n photo: 'photo',\n profile: 'profile',\n basketball_profile: 'basketballProfile',\n volleyball_profile: 'volleyballProfile',\n hockey_profile: 'hockeyProfile',\n football_profile: 'footballProfile',\n handball_profile: 'handballProfile',\n rugby_profile: 'rugbyProfile',\n wizards: 'wizards',\n city: 'city',\n gender: 'gender',\n is_active: 'isActive',\n },\n relation: {\n birthDate: DateField,\n photo: File,\n profile: UserProfile,\n basketballProfile: BasketballProfile,\n volleyballProfile: VolleyballProfile,\n hockeyProfile: HockeyProfile,\n footballProfile: FootballProfile,\n handballProfile: HandballProfile,\n rugbyProfile: RugbyProfile,\n city: City,\n gender: enumField(UserGender)\n }\n})\nexport class User extends BaseModel {\n id: number;\n lastName: string;\n firstName: string;\n middleName: string;\n email: string;\n phone: string;\n birthDate: Date;\n profile: UserProfile;\n basketballProfile: BasketballProfile;\n volleyballProfile: VolleyballProfile;\n hockeyProfile: HockeyProfile;\n footballProfile: FootballProfile;\n handballProfile: HandballProfile;\n rugbyProfile: RugbyProfile;\n photo: File;\n wizards: string[];\n city: City;\n gender: UserGender;\n isActive: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(user: User): any {\n return null;\n }\n\n get fullName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get shortName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get initials(): string {\n return [this.lastName, this.firstName].filter(s => s).map(s => s.substr(0, 1)).join('');\n }\n\n get age(): number {\n if (!this.birthDate) {\n return null;\n }\n const diff = (new Date()).getTime() - this.birthDate.getTime();\n return Math.floor(diff / (365 * 86400 * 1000));\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, enumField, DateField } from './util';\nimport { File } from './file';\n\nexport enum TournamentSeasonStatuses {\n open,\n in_progress,\n closed,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n alias: 'alias',\n logo: 'logo',\n cover: 'cover',\n preview_image: 'previewImage',\n status: 'status',\n start_date: 'startDate',\n closed_date: 'closedDate',\n tournaments: 'tournaments',\n },\n relation: {\n logo: File,\n cover: File,\n previewImage: File,\n status: enumField(TournamentSeasonStatuses),\n startDate: DateField,\n closedDate: DateField,\n }\n})\nexport class TournamentSeason extends BaseModel {\n id: number;\n name: string;\n alias: string;\n logo: File;\n cover: File;\n previewImage: File;\n status: TournamentSeasonStatuses;\n startDate: Date;\n closedDate: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateField } from './util';\nimport { File } from './file';\nimport { Sport } from './sport';\nimport { User } from './user';\nimport { City } from './city';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n sport: 'sport',\n logo: 'logo',\n owner: 'owner',\n city: 'city',\n users_count: 'usersCount',\n won_games_count: 'wonGamesCount',\n games_count: 'gamesCount',\n score_sum: 'scoreSum',\n closest_game_datetime: 'closestGameDatetime',\n },\n relation: {\n sport: Sport,\n logo: File,\n owner: User,\n city: City,\n closestGameDatetime: DateField,\n }\n})\nexport class Team extends BaseModel {\n id: number;\n name: string;\n sport: Sport;\n logo: File;\n owner: User;\n city: City;\n usersCount: number;\n wonGamesCount: number;\n gamesCount: number;\n scoreSum: number;\n closestGameDatetime: Date;\n\n getEmptyLogoClass(): string {\n const classList = ['empty-logo'];\n if (this.sport.isBasketball()) {\n classList.push('empty-logo-basketball');\n }\n if (this.sport.isVolleyball()) {\n classList.push('empty-logo-volleyball');\n }\n if (this.sport.isHockey()) {\n classList.push('empty-logo-hockey');\n }\n if (this.sport.isFootball()) {\n classList.push('empty-logo-football');\n }\n if (this.sport.isHandball()) {\n classList.push('empty-logo-handball');\n }\n return classList.join(' ');\n }\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(team: Team): any {\n return null;\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\nimport { User } from './user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n owner_id: 'ownerId',\n owner: 'owner',\n },\n relation: {\n owner: User,\n }\n})\nexport class Organization extends BaseModel {\n id: number;\n ownerId: number;\n owner: User;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField } from './util';\nimport { Organization } from './organization';\nimport { File } from './file';\nimport { Sport } from './sport';\n\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n logo: 'logo',\n contact_email: 'contactEmail',\n contact_phone: 'contactPhone',\n name: 'name',\n alias: 'alias',\n sport: 'sport',\n description: 'description',\n social_links: 'socialLinks',\n links: 'links',\n organization: 'organization',\n tournaments_count: 'tournamentsCount',\n documents_count: 'documentsCount',\n closest_game_datetime: 'closestGameDatetime',\n cover: 'cover',\n about: 'about',\n },\n relation: {\n organization: Organization,\n logo: File,\n cover: File,\n sport: Sport,\n }\n})\nexport class League extends BaseModel {\n id: number;\n logo: File;\n contactEmail: string;\n contactPhone: string;\n name: string;\n alias: string;\n sport: Sport;\n description: string;\n socialLinks: string[];\n links: string[];\n organization: Organization;\n tournamentsCount: number;\n documentsCount: number;\n closestGameDatetime: string;\n cover: File;\n about: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get vkLink(): string {\n return this.socialLinks.find(link => link.indexOf('vk.com/') > -1);\n }\n\n get fbLink(): string {\n return this.socialLinks.find(link => link.indexOf('facebook.com/') > -1);\n }\n\n get instaLink(): string {\n return this.socialLinks.find(link => link.indexOf('instagram.com/') > -1);\n }\n\n get youtubeLink(): string {\n return this.socialLinks.find(link => link.indexOf('youtube.com/') > -1);\n }\n\n get telegramLink(): string {\n return this.socialLinks.find(link =>\n link.substr(0, 13) === 'https://t.me/' ||\n link.substr(0, 17) === 'https://www.t.me/'\n );\n }\n\n get tiktokLink(): string {\n return this.socialLinks.find(link => link.indexOf('tiktok.com/') > -1);\n }\n}\n","import { BaseModel, enumField, ModelInstance, DateTimeField, ToBackHook, ToFrontHook } from './util';\nimport { City } from './city';\nimport { File } from './file';\nimport { League } from './league';\nimport { Sport } from './sport';\nimport { Team } from './team';\nimport { TournamentSeason } from './tournament-season';\n\nexport enum TournamentTypes {\n group = 'group',\n elimination = 'elimination',\n fiba = 'fiba'\n}\n\nexport enum TournamentStatuses {\n open,\n in_progress,\n closed,\n}\n\nexport enum TournamentGender {\n male= 1,\n female,\n all\n}\n\nexport enum BasketballStatisticTypes {\n standard = 1,\n light,\n advanced\n}\n\nexport enum VolleyballStatisticTypes {\n standard = 1,\n light,\n advanced\n}\n\nexport enum GameTimeTypes {\n clean = 1,\n dirty,\n}\n\nexport enum OvertimeTypes {\n to_score_total = 1,\n to_score_diff,\n time,\n without_overtime,\n to_first_goal,\n to_first_goal_and_bullitts,\n bullitts,\n penalties,\n time_and_penalties\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n gender: 'gender',\n age_from: 'ageFrom',\n age_to: 'ageTo',\n max_team_players: 'maxTeamPlayers',\n max_game_players: 'maxGamePlayers',\n type: 'type',\n tours_count: 'toursCount',\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n overtime_score: 'overtimeScore',\n game_type: 'gameType',\n timeout_count: 'timeoutCount',\n timeout_time: 'timeoutTime',\n substitute_count: 'substituteCount',\n game_up_to_score: 'gameUpToScore',\n volleyball_score_in_set: 'volleyballScoreInSet',\n volleyball_score_in_last_set: 'volleyballScoreInLastSet',\n manage_team_application: 'manageTeamApplication',\n recruitment_is_open: 'recruitmentIsOpen',\n transfer_is_open: 'transferIsOpen',\n basketball_statistic_type: 'basketballStatisticType',\n volleyball_statistic_type: 'volleyballStatisticType',\n shot_clock_enabled: 'shotClockEnabled',\n game_time_type: 'gameTimeType',\n with_result_table: 'withResultTable',\n free_substitute_enabled: 'freeSubstituteEnabled',\n bonus_points_enabled: 'bonusPointsEnabled',\n },\n relation: {\n type: enumField(TournamentTypes),\n gender: enumField(TournamentGender),\n basketballStatisticType: enumField(BasketballStatisticTypes),\n volleyballStatisticType: enumField(VolleyballStatisticTypes),\n gameTimeType: enumField(GameTimeTypes),\n overtimeType: enumField(OvertimeTypes),\n }\n})\nexport class TournamentSettings extends BaseModel {\n id: number;\n gender: TournamentGender;\n ageFrom: number;\n ageTo: number;\n maxTeamPlayers: number;\n maxGamePlayers: number;\n type: TournamentTypes;\n toursCount: number;\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n overtimeScore: number;\n gameType: string;\n timeoutCount: number;\n timeoutTime: number;\n substituteCount: number;\n gameUpToScore: number;\n volleyballScoreInSet: number;\n volleyballScoreInLastSet: number;\n manageTeamApplication: boolean;\n recruitmentIsOpen: boolean;\n transferIsOpen: boolean;\n basketballStatisticType: BasketballStatisticTypes;\n volleyballStatisticType: VolleyballStatisticTypes;\n shotClockEnabled: boolean;\n gameTimeType: GameTimeTypes;\n withResultTable: boolean;\n freeSubstituteEnabled: boolean;\n bonusPointsEnabled: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n tournament_id: 'tournamentId',\n name: 'name',\n logo: 'logo',\n team: 'team',\n points: 'points',\n },\n relation: {\n logo: File,\n team: Team,\n }\n})\nexport class TournamentTeamWinner extends BaseModel {\n id: number;\n teamId: number;\n tournamentId: number;\n name: string;\n logo: File;\n team: Team;\n points: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n alias: 'alias',\n logo: 'logo',\n cover: 'cover',\n preview_image: 'previewImage',\n city: 'city',\n sport: 'sport',\n location: 'location',\n description: 'description',\n date: 'date',\n price: 'price',\n regulation_files: 'regulationFiles',\n settings: 'settings',\n league: 'league',\n teams_count: 'teamsCount',\n closest_game_datetime: 'closestGameDatetime',\n status: 'status',\n team_winner: 'teamWinner',\n team_second: 'teamSecond',\n team_third: 'teamThird',\n season: 'season',\n season_id: 'seasonId',\n },\n relation: {\n logo: File,\n cover: File,\n previewImage: File,\n city: City,\n sport: Sport,\n regulationFile: File,\n settings: TournamentSettings,\n date: DateTimeField,\n league: League,\n status: enumField(TournamentStatuses),\n teamWinner: TournamentTeamWinner,\n teamSecond: TournamentTeamWinner,\n teamThird: TournamentTeamWinner,\n season: TournamentSeason,\n }\n})\nexport class Tournament extends BaseModel {\n id: number;\n name: string;\n alias: string;\n logo: File;\n cover: File;\n previewImage: File;\n city: City;\n sport: Sport;\n location: string;\n description: string;\n date: Date;\n price: number;\n regulationFiles: File[];\n settings: TournamentSettings;\n league: League;\n teamsCount: number;\n closestGameDatetime: string;\n status: TournamentStatuses;\n teamWinner: TournamentTeamWinner;\n teamSecond: TournamentTeamWinner;\n teamThird: TournamentTeamWinner;\n season: TournamentSeason;\n seasonId: number;\n\n getEmptyLogoClass(): string {\n const classList = ['empty-logo'];\n if (this.sport.isBasketball()) {\n classList.push('empty-logo-basketball');\n }\n if (this.sport.isVolleyball()) {\n classList.push('empty-logo-volleyball');\n }\n if (this.sport.isHockey()) {\n classList.push('empty-logo-hockey');\n }\n if (this.sport.isFootball()) {\n classList.push('empty-logo-football');\n }\n return classList.join(' ');\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { VolleyballStatisticTypes } from './tournament';\n\nexport enum VolleyballGameTypes {\n best_of_five = 1,\n best_of_three\n}\n\n@ModelInstance({\n mappingFields: {\n game_type: 'gameType',\n timeout_count: 'timeoutCount',\n timeout_time: 'timeoutTime',\n substitute_count: 'substituteCount',\n score_in_set: 'scoreInSet',\n score_in_last_set: 'scoreInLastSet',\n statistic_type: 'statisticType'\n },\n relation: {\n gameType: enumField(VolleyballGameTypes),\n statisticType: enumField(VolleyballStatisticTypes),\n }\n})\nexport class VolleyballGameConfig extends BaseModel {\n gameType: VolleyballGameTypes;\n timeoutCount: number;\n timeoutTime: number;\n substituteCount: number;\n scoreInSet: number;\n scoreInLastSet: number;\n statisticType: VolleyballStatisticTypes;\n\n get setsCount(): number {\n return this.gameType === VolleyballGameTypes.best_of_three ? 3 : 5;\n }\n\n getSetMaxScore(set: number) {\n return set === this.setsCount ? this.scoreInLastSet : this.scoreInSet;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { BasketballStatisticTypes, GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n game_up_to_score: 'gameUpToScore',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n overtime_score: 'overtimeScore',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n statistic_type: 'statisticType',\n shot_clock_enabled: 'shotClockEnabled',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n statisticType: enumField(BasketballStatisticTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class BasketballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n gameUpToScore: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n overtimeScore: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n statisticType: BasketballStatisticTypes;\n shotClockEnabled: boolean;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { generateArray } from '../utils/array';\n\nexport enum PlayoffTypes {\n double_elimination = 'double_elimination',\n elimination = 'elimination'\n}\n\n@ModelInstance({\n mappingFields: {\n rounds: 'rounds',\n final_rounds: 'finalRounds',\n third_place_rounds: 'thirdPlaceRounds',\n teams_count: 'teamsCount',\n type: 'type',\n min_player_games_count: 'minPlayerGamesCount',\n min_player_time: 'minPlayerTime',\n },\n relation: {\n type: enumField(PlayoffTypes)\n }\n})\nexport class PlayoffSettings extends BaseModel {\n rounds: number;\n finalRounds: number;\n thirdPlaceRounds: number;\n teamsCount: number;\n type: PlayoffTypes;\n minPlayerGamesCount: number;\n minPlayerTime: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n settings: 'settings',\n tournament_id: 'tournamentId',\n tournament_stage_id: 'tournamentStageId',\n is_official: 'isOfficial'\n },\n relation: {\n settings: PlayoffSettings\n }\n})\nexport class Playoff extends BaseModel {\n id: number;\n name: string;\n settings: PlayoffSettings;\n tournamentId: number;\n tournamentStageId: number;\n isOfficial: boolean;\n private stages: {title: string, value: number}[] = [];\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get stagesCount(): number {\n return Math.log(this.settings.teamsCount) / Math.log(2);\n }\n\n getPlayoffStages() {\n if (this.stages.length === 0 && this.settings.teamsCount) {\n const stagesCount = Math.log(this.settings.teamsCount) / Math.log(2);\n this.stages = generateArray(stagesCount).map(stage => {\n const playoffStage = this.settings.teamsCount / 2 ** stage;\n let title = '';\n if (playoffStage === 1) {\n title = 'Финал';\n } else {\n title = `1 / ${playoffStage}`;\n }\n return {\n value: stage,\n title\n };\n });\n }\n return this.stages;\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n address: 'address',\n league_id: 'leagueId'\n }\n})\nexport class LeagueCourt extends BaseModel {\n id: number;\n name: string;\n address: string;\n leagueId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n original_photo: 'originalPhoto',\n list_photo: 'listPhoto',\n detail_photo: 'detailPhoto',\n game: 'game',\n tournament: 'tournament',\n game_id: 'gameId',\n tournament_id: 'tournament_id',\n video_url: 'videoUrl',\n video_preview: 'videoPreview',\n is_live: 'isLive',\n },\n relation: {\n originalPhoto: File,\n listPhoto: File,\n detailPhoto: File,\n videoPreview: File\n }\n})\nexport class MediaItem extends BaseModel {\n id: number;\n originalPhoto: File;\n listPhoto: File;\n detailPhoto: File;\n gameId: number;\n tournamentId: number;\n videoUrl: string;\n videoPreview: File;\n isLive: boolean;\n\n get isVideo(): boolean {\n return Boolean(this.videoUrl);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class HockeyGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get overtimePeriod(): number {\n return this.periodsCount + 1;\n }\n\n get bullitsPeriod(): number {\n return this.periodsCount + 2;\n }\n\n get playoffBullitsPeriod(): number {\n return this.periodsCount + 3;\n }\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class FootballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class HandballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","export function generateArray(length: number): number[] {\n if (length <= 0) {\n return [];\n }\n return Array.apply(null, Array(length)).map((_, i) => i + 1);\n}\n\nexport function getArrayChunks(array: any[], length: number): any[][] {\n const chunks = [];\n const chunkLength = Math.ceil(array.length / length);\n if (chunkLength === 0) {\n return [array];\n }\n for (let i = 0; i < chunkLength; i++) {\n chunks.push(array.slice(i * length, (i + 1) * length));\n }\n return chunks;\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField, listField } from './util';\nimport { Team } from './team';\nimport { BasketballGameConfig } from './basketball-game-config';\nimport { VolleyballGameConfig } from './volleyball-game-config';\nimport { LeagueCourt } from './league-court';\nimport { MediaItem } from './media-item';\nimport { HockeyGameConfig } from './hockey-game-config';\nimport { Tournament } from './tournament';\nimport { FootballGameConfig } from './football-game-config';\nimport { HandballGameConfig } from './handball-game-config';\nimport { Playoff } from './playoff';\nimport { TournamentGroup } from './tournament-group';\nimport { File } from './file';\n\nexport enum GameStatuses {\n open = 1,\n in_progress,\n closed,\n archived,\n draft\n}\n\nexport enum GameResultTypes {\n team_won = 1,\n competitor_team_won,\n team_technical_defeat,\n competitor_team_technical_defeat\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n logo: 'logo',\n },\n relation: {\n logo: File\n }\n})\nexport class TournamentTeamShort extends BaseModel {\n id: number;\n name: string;\n logo: File;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n status: 'status',\n team: 'team',\n tournament_team: 'tournamentTeam',\n tournament_team_id: 'tournamentTeamId',\n team_id: 'teamId',\n competitor_team: 'competitorTeam',\n competitor_tournament_team: 'competitorTournamentTeam',\n competitor_tournament_team_id: 'competitorTournamentTeamId',\n competitor_team_id: 'competitorTeamId',\n competitor_team_name: 'competitorTeamName',\n datetime: 'datetime',\n location: 'location',\n team_score: 'teamScore',\n competitor_team_score: 'competitorTeamScore',\n result_type: 'resultType',\n playoff_number: 'playoffNumber',\n tournament_id: 'tournamentId',\n tournament_tour: 'tournamentTour',\n game_config: 'gameConfig',\n basketball_game_config: 'basketballGameConfig',\n volleyball_game_config: 'volleyballGameConfig',\n hockey_game_config: 'hockeyGameConfig',\n football_game_config: 'footballGameConfig',\n handball_game_config: 'handballGameConfig',\n score_by_period: 'scoreByPeriod',\n playoff_stage: 'playoffStage',\n tournament_stage_id: 'tournamentStageId',\n tournament_playoff_id: 'tournamentPlayoffId',\n tournament_playoff: 'tournamentPlayoff',\n tournament_court: 'tournamentCourt',\n media_count: 'mediaCount',\n media_live_count: 'mediaLiveCount',\n media: 'media',\n tournament: 'tournament',\n tournament_group: 'tournamentGroup',\n },\n relation: {\n status: enumField(GameStatuses),\n team: Team,\n tournamentTeam: TournamentTeamShort,\n competitorTeam: Team,\n competitorTournamentTeam: TournamentTeamShort,\n datetime: DateTimeField,\n resultType: enumField(GameResultTypes),\n basketballGameConfig: BasketballGameConfig,\n volleyballGameConfig: VolleyballGameConfig,\n hockeyGameConfig: HockeyGameConfig,\n footballGameConfig: FootballGameConfig,\n handballGameConfig: HandballGameConfig,\n tournamentPlayoff: Playoff,\n tournamentCourt: LeagueCourt,\n media: listField(MediaItem),\n tournament: Tournament,\n tournamentGroup: TournamentGroup,\n }\n})\nexport class Game extends BaseModel {\n private _basketballGameConfig: BasketballGameConfig;\n private _volleyballGameConfig: VolleyballGameConfig;\n private _hockeyGameConfig: HockeyGameConfig;\n private _footballGameConfig: FootballGameConfig;\n private _handballGameConfig: HandballGameConfig;\n\n id: number;\n status: GameStatuses;\n team: Team;\n tournamentTeam: TournamentTeamShort;\n teamId: number;\n tournamentTeamId: number;\n competitorTeam: Team;\n competitorTournamentTeam: TournamentTeamShort;\n competitorTeamId: number;\n competitorTournamentTeamId: number;\n competitorTeamName: string;\n gameConfig: any;\n datetime: Date;\n location: string;\n teamScore: number;\n competitorTeamScore: number;\n resultType: GameResultTypes;\n playoffNumber: string;\n tournamentId: number;\n tournamentTour: number;\n scoreByPeriod: any;\n playoffStage: string;\n tournamentStageId: number;\n tournamentPlayoffId: number;\n tournamentPlayoff: Playoff;\n tournamentCourt: LeagueCourt;\n mediaCount: number;\n mediaLiveCount: number;\n media: MediaItem[];\n tournament: Tournament;\n tournamentGroup: TournamentGroup;\n\n get basketballGameConfig(): BasketballGameConfig {\n if (this._basketballGameConfig && this._basketballGameConfig.periodsCount) {\n return this._basketballGameConfig;\n }\n if (this.gameConfig) {\n this._basketballGameConfig = BasketballGameConfig.toFront(this.gameConfig);\n }\n return this._basketballGameConfig;\n }\n\n set basketballGameConfig(value) {\n this._basketballGameConfig = value;\n }\n\n get volleyballGameConfig(): VolleyballGameConfig {\n if (this._volleyballGameConfig && this._volleyballGameConfig.setsCount) {\n return this._volleyballGameConfig;\n }\n if (this.gameConfig) {\n this._volleyballGameConfig = VolleyballGameConfig.toFront(this.gameConfig);\n }\n return this._volleyballGameConfig;\n }\n\n set volleyballGameConfig(value) {\n this._volleyballGameConfig = value;\n }\n\n get hockeyGameConfig(): HockeyGameConfig {\n if (this._hockeyGameConfig && this._hockeyGameConfig.periodsCount) {\n return this._hockeyGameConfig;\n }\n if (this.gameConfig) {\n this._hockeyGameConfig = HockeyGameConfig.toFront(this.gameConfig);\n }\n return this._hockeyGameConfig;\n }\n\n set hockeyGameConfig(value) {\n this._hockeyGameConfig = value;\n }\n\n get handballGameConfig(): HandballGameConfig {\n if (this._handballGameConfig && this._handballGameConfig.periodsCount) {\n return this._handballGameConfig;\n }\n if (this.gameConfig) {\n this._handballGameConfig = HandballGameConfig.toFront(this.gameConfig);\n }\n return this._handballGameConfig;\n }\n\n set handballGameConfig(value) {\n this._handballGameConfig = value;\n }\n\n get footballGameConfig(): FootballGameConfig {\n if (this._footballGameConfig && this._footballGameConfig.periodsCount) {\n return this._footballGameConfig;\n }\n if (this.gameConfig) {\n this._footballGameConfig = FootballGameConfig.toFront(this.gameConfig);\n }\n return this._footballGameConfig;\n }\n\n set footballGameConfig(value) {\n this._footballGameConfig = value;\n }\n\n get scoreByPeriodList(): {period: number, teamScore: number, competitorTeamScore: number}[] {\n if (!this.scoreByPeriod) {\n return [];\n }\n return Object.keys(this.scoreByPeriod).map(period => ({\n period: +period,\n teamScore: this.scoreByPeriod[period][0],\n competitorTeamScore: this.scoreByPeriod[period][1]\n }));\n }\n\n get isClosed(): boolean {\n return this.status === GameStatuses.closed;\n }\n\n get isTeamWon() {\n return this.teamScore > this.competitorTeamScore;\n }\n\n get isCompetitorTeamWon() {\n return this.competitorTeamScore > this.teamScore;\n }\n\n get teamWinnerId() {\n if (this.status !== GameStatuses.closed) {\n return null;\n }\n if (this.teamScore === this.competitorTeamScore) {\n return null;\n }\n if (this.team.id) {\n return this.teamScore > this.competitorTeamScore ? this.team.id : this.competitorTeam.id;\n } else {\n return this.teamScore > this.competitorTeamScore ? this.teamId : this.competitorTeamId;\n }\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { TournamentTeam } from './tournament-team';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n sort: 'sort',\n tournament_stage_id: 'tournamentStageId'\n }\n})\nexport class TournamentGroup extends BaseModel {\n id: number;\n name: string;\n sort: number;\n tournamentStageId: number;\n teams: TournamentTeam[];\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","export function updateItemInArray(data: any[], item: any, force = false, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return data;\n }\n return data.map(v => {\n if (checkFunction && isFunction(checkFunction)) {\n if (!checkFunction(v)) {\n return v;\n }\n } else if (v.id !== item.id) {\n return v;\n }\n if (v.updatedAt && item.updatedAt && !force) {\n return v.updatedAt > item.updatedAt ? v : item;\n }\n return item;\n });\n}\n\nexport function updateItemsInArray(data: any[], items: any[], force: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n items.forEach(item => {\n data = updateItemInArray(data, item, force, checkFunction);\n });\n return data;\n}\n\nexport function patchItemInArray(data: any[], item: any, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return data;\n }\n return data.map(v => {\n if (checkFunction && isFunction(checkFunction)) {\n if (!checkFunction(v)) {\n return v;\n }\n } else if (v.id !== item.id) {\n return v;\n }\n return Object.assign(v, item);\n });\n}\n\nexport function addItemInArray(data: any[], item: any, atEnd: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return [item];\n }\n if (data.find(i => isFunction(checkFunction) ? checkFunction(i) : i.id === item.id)) {\n return data;\n }\n\n return atEnd\n ? [...data, item]\n : [item, ...data];\n}\n\nexport function addItemsInArray(data: any[], items: any[], atEnd: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n (!atEnd\n ? Object.assign([], items).reverse()\n : items\n ).forEach(item => {\n data = addItemInArray(data, item, atEnd, checkFunction);\n });\n return data;\n}\n\nexport function deleteItemFromArray(data: any[], item: any): any[] {\n if (!Array.isArray(data)) {\n return [];\n }\n if (isFunction(item)) {\n return data.filter(i => !item(i));\n } else {\n return data.filter(v => v.id !== item.id);\n }\n}\n\nfunction isFunction(functionToCheck) {\n return functionToCheck && {}.toString.call(functionToCheck) === '[object Function]';\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { User } from './user';\nimport { Team } from './team';\n\nexport enum TeamUserRole {\n member = 1,\n moderator,\n admin,\n coach,\n head_coach,\n playing_coach,\n manager,\n head_manager,\n captain,\n assistant,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n user: 'user',\n role: 'role',\n number: 'number',\n team: 'team',\n },\n relation: {\n user: User,\n team: Team,\n role: enumField(TeamUserRole)\n }\n})\nexport class TeamUser extends BaseModel {\n id: number;\n teamId: number;\n user: User;\n team: Team;\n number: number;\n role: TeamUserRole;\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(teamPlayer: TeamUser): any {\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { addItemInArray, addItemsInArray, deleteItemFromArray, updateItemInArray, updateItemsInArray } from '../utils/data';\nimport { StorageEngine } from './storage-engine';\n\nexport class Store {\n private data: {[key: string]: BehaviorSubject<any>} = {};\n\n constructor(private engine?: StorageEngine) {\n }\n\n get(key: string): Observable<any> {\n return this.getSubject(key).pipe(filter(item => item !== undefined));\n }\n\n value(key: string): any {\n return this.getSubject(key).value;\n }\n\n save(key: string, value: any): void {\n this.getSubject(key).next(value);\n if (this.engine) {\n this.engine.save(key, value);\n }\n }\n\n appendItem(key: string, value: any, checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemInArray(this.value(key) || [], value, true, checkFunction));\n }\n\n appendItems(key: string, value: any[], checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemsInArray(this.value(key) || [], value, true));\n }\n\n prependItem(key: string, value: any, checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemInArray(this.value(key) || [], value, false, checkFunction));\n }\n\n prependItems(key: string, value: any[], checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemsInArray(this.value(key) || [], value, false, checkFunction));\n }\n\n updateItem(key: string, value: any, force?: boolean, checkFunction?: (item: any) => boolean): void {\n this.save(key, updateItemInArray(this.value(key) || [], value, force, checkFunction));\n }\n\n updateItems(key: string, value: any, force?: boolean, checkFunction?: (item: any) => boolean): void {\n this.save(key, updateItemsInArray(this.value(key) || [], value, force, checkFunction));\n }\n\n deleteItem(key: string, value: any): void {\n this.save(key, deleteItemFromArray(this.value(key) || [], value));\n }\n\n dispose(): void {\n for (const key of Object.keys(this.data)) {\n this.data[key].complete();\n delete this.data[key];\n }\n }\n\n clearStorageData(): void {\n if (this.engine) {\n this.engine.clear();\n }\n }\n\n getEngine(): StorageEngine {\n return this.engine;\n }\n\n private getSubject(key: string): BehaviorSubject<any> {\n if (!this.data[key]) {\n this.data[key] = new BehaviorSubject<any>(this.engine ? this.engine.get(key) : undefined);\n }\n return this.data[key];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '../storage/store';\n\n@Injectable({providedIn: 'root'})\nexport class BaseService {\n protected store = new Store();\n\n dispose(): void {\n this.store.dispose();\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { BaseService } from './base.service';\n\nconst CONFIG_STORE_KEY = 'config';\n\nexport const CONFIG_DATA = 'mtg-core-config-data';\n\n@Injectable({providedIn: 'root'})\nexport class ConfigService extends BaseService {\n constructor(\n @Optional() @Inject(CONFIG_DATA) private configData: any\n ) {\n super();\n if (configData) {\n this.initialize(configData);\n }\n }\n\n get config$() {\n return this.store.get(CONFIG_STORE_KEY);\n }\n\n get config() {\n return this.store.value(CONFIG_STORE_KEY) || {};\n }\n\n initialize(data: any): void {\n this.store.save(CONFIG_STORE_KEY, data);\n }\n\n set(key: string, value: any): void {\n this.store.save(CONFIG_STORE_KEY, {\n ...this.config,\n [key]: value\n });\n }\n\n get(key: string): any {\n return this.store.value(CONFIG_STORE_KEY) && this.store.value(CONFIG_STORE_KEY)[key];\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\nimport { TournamentGroup } from './tournament-group';\nimport { Game } from './game';\nimport { Tournament } from './tournament';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n logo: 'logo',\n team_id: 'teamId',\n tournament_id: 'tournamentId',\n tournament: 'tournament',\n team: 'team',\n group: 'group',\n final_standing: 'finalStanding',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n draw_games_count: 'drawGamesCount',\n last_games_count: 'lastGamesCount',\n last_games_won: 'lastGamesWon',\n score_sum: 'scoreSum',\n missed_sum: 'missedSum',\n score_points_sum: 'scorePointsSum',\n missed_points_sum: 'missedPointsSum',\n points: 'points',\n users_count: 'usersCount',\n games: 'games',\n notifications_count: 'notificationsCount',\n win_normal_time_games_count: 'winNormalTimeGamesCount',\n lose_normal_time_games_count: 'loseNormalTimeGamesCount',\n win_overtime_games_count: 'winOvertimeGamesCount',\n lose_overtime_games_count: 'loseOvertimeGamesCount',\n last_five_games: 'lastFiveGames'\n },\n relation: {\n logo: File,\n tournament: Tournament,\n team: Team,\n group: TournamentGroup,\n games: Game,\n lastFiveGames: Game,\n }\n})\nexport class TournamentTeam extends BaseModel {\n id: number;\n name: string;\n logo: File;\n teamId: number;\n tournamentId: number;\n tournament: Tournament;\n team: Team;\n group: TournamentGroup;\n finalStanding: number;\n gamesCount: number;\n wonGamesCount: number;\n drawGamesCount: number;\n lastGamesCount: number;\n lastGamesWon: number;\n scoreSum: number;\n missedSum: number;\n scorePointsSum: number;\n missedPointsSum: number;\n points: number;\n usersCount: number;\n games: Game[];\n notificationsCount: number;\n winNormalTimeGamesCount: number;\n loseNormalTimeGamesCount: number;\n winOvertimeGamesCount: number;\n loseOvertimeGamesCount: number;\n lastFiveGames: Game[];\n\n get gamesWonPercent(): number {\n if (!this.gamesCount) {\n return 0;\n }\n return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { enumField, ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateTimeField } from './util';\nimport { GameUser } from './game-user';\nimport { GameLogBase } from './game-log-base';\n\nexport enum BasketballGameLogTypes {\n enter_game = 1,\n exit_game,\n remove_game,\n two_point_made,\n three_point_made,\n free_throw_made,\n two_point_attempt,\n three_point_attempt,\n free_throw_attempt,\n assist,\n block,\n rebound,\n offensive_rebound,\n defensive_rebound,\n steal,\n turnover,\n personal_foul,\n technical_foul,\n unsportsmanlike_foul,\n one_point_attempt,\n one_point_made,\n timeout,\n team_rebound,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(BasketballGameLogTypes),\n }\n})\nexport class BasketballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: BasketballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n combined: BasketballGameLog;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n\n isPointsType() {\n return [\n BasketballGameLogTypes.two_point_made,\n BasketballGameLogTypes.three_point_made,\n BasketballGameLogTypes.free_throw_made,\n BasketballGameLogTypes.one_point_made,\n ].indexOf(this.logType) > -1;\n }\n\n isReboundType() {\n return [\n BasketballGameLogTypes.rebound,\n BasketballGameLogTypes.offensive_rebound,\n BasketballGameLogTypes.defensive_rebound\n ].indexOf(this.logType) > -1;\n }\n\n isFoulType() {\n return [\n BasketballGameLogTypes.personal_foul,\n BasketballGameLogTypes.technical_foul,\n BasketballGameLogTypes.unsportsmanlike_foul\n ].indexOf(this.logType) > -1;\n }\n\n getScore() {\n const scoreMapping = {\n [BasketballGameLogTypes.one_point_made]: 1,\n [BasketballGameLogTypes.free_throw_made]: 1,\n [BasketballGameLogTypes.two_point_made]: 2,\n [BasketballGameLogTypes.three_point_made]: 3\n };\n return scoreMapping[this.logType];\n }\n\n compare(model: BasketballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team_user_id: 'tournamentTeamUserId',\n date_from: 'dateFrom',\n date_to: 'dateTo',\n matches_count: 'matchesCount',\n },\n relation: {\n dateFrom: DateField,\n dateTo: DateField,\n }\n})\nexport class TournamentDisqualification extends BaseModel {\n id: number;\n tournamentTeamUserId: number;\n dateFrom: Date;\n dateTo: Date;\n matchesCount: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField } from './util';\nimport { File } from './file';\nimport { User } from './user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n league_id: 'leagueId',\n first_name: 'firstName',\n last_name: 'lastName',\n middle_name: 'middleName',\n birth_date: 'birthDate',\n photo: 'photo',\n user: 'user',\n has_changes: 'hasChanges',\n rating: 'rating',\n },\n relation: {\n birthDate: DateField,\n photo: File,\n user: User,\n }\n})\nexport class LeaguePlayer extends BaseModel {\n id: number;\n userId: number;\n leagueId: number;\n firstName: string;\n lastName: string;\n middleName: string;\n birthDate: Date;\n photo: File;\n user: User;\n hasChanges: boolean;\n rating: number;\n\n get fullName(): string {\n return [this.lastName, this.firstName, this.middleName].filter(s => s).join(' ');\n }\n\n get shortName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get initials(): string {\n return [this.lastName, this.firstName].filter(s => s).map(s => s.substr(0, 1)).join('');\n }\n\n get age(): number {\n if (!this.birthDate) {\n return null;\n }\n const diff = (new Date()).getTime() - this.birthDate.getTime();\n return Math.floor(diff / (365 * 86400 * 1000));\n }\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(data: any): any {\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { TournamentTeam } from './tournament-team';\nimport { TeamUser } from './team-user';\nimport { TournamentDisqualification } from './tournament-disqualification';\nimport { LeaguePlayer } from './league-player';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team: 'tournamentTeam',\n team_user: 'teamUser',\n disqualified: 'disqualified',\n disqualification: 'disqualification',\n league_player: 'leaguePlayer',\n },\n relation: {\n tournamentTeam: TournamentTeam,\n teamUser: TeamUser,\n disqualification: TournamentDisqualification,\n leaguePlayer: LeaguePlayer,\n }\n})\nexport class TournamentTeamUser extends BaseModel {\n id: number;\n tournamentTeam: TournamentTeam;\n teamUser: TeamUser;\n disqualified: boolean;\n disqualification: TournamentDisqualification;\n leaguePlayer: LeaguePlayer;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\nimport { LeaguePlayer } from './league-player';\n\n@ModelInstance({\n mappingFields: {\n league_player: 'leaguePlayer',\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n points: 'points',\n two_points_made: 'twoPointsMade',\n three_points_made: 'threePointsMade',\n free_throws_made: 'freeThrowsMade',\n one_points_made: 'onePointsMade',\n two_point_attempts: 'twoPointAttempts',\n three_point_attempts: 'threePointAttempts',\n free_throw_attempts: 'freeThrowAttempts',\n one_point_attempts: 'onePointAttempts',\n two_point_percent: 'twoPointPercent',\n three_point_percent: 'threePointPercent',\n free_throw_percent: 'freeThrowPercent',\n one_point_percent: 'onePointPercent',\n assists: 'assists',\n blocks: 'blocks',\n rebounds: 'rebounds',\n offensive_rebounds: 'offensiveRebounds',\n defensive_rebounds: 'defensiveRebounds',\n steals: 'steals',\n turnovers: 'turnovers',\n personal_fouls: 'personalFouls',\n technical_fouls: 'technicalFouls',\n unsportsmanlike_fouls: 'unsportsmanlikeFouls',\n game_time: 'gameTime',\n newbie: 'newbie',\n rank: 'rank',\n },\n relation: {\n leaguePlayer: LeaguePlayer,\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class BasketballStatistic extends BaseModel implements BaseStatistic {\n leaguePlayer: LeaguePlayer;\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: WinLoseType;\n gamesCount: number;\n wonGamesCount: number;\n points: number;\n twoPointsMade: number;\n threePointsMade: number;\n freeThrowsMade: number;\n onePointsMade: number;\n twoPointAttempts: number;\n threePointAttempts: number;\n freeThrowAttempts: number;\n onePointAttempts: number;\n twoPointPercent: number;\n threePointPercent: number;\n freeThrowPercent: number;\n onePointPercent: number;\n assists: number;\n blocks: number;\n rebounds: number;\n offensiveRebounds: number;\n defensiveRebounds: number;\n steals: number;\n turnovers: number;\n personalFouls: number;\n technicalFouls: number;\n unsportsmanlikeFouls: number;\n gameTime: number;\n newbie: boolean;\n rank: number;\n\n get totalFouls() {\n return this.personalFouls + this.technicalFouls + this.unsportsmanlikeFouls;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n get tournamentTeamPoints(): number {\n return this.tournamentTeam && this.tournamentTeam.points;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { BasketballStatistic } from './basketball-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: BasketballStatistic,\n competitorTeam: BasketballStatistic\n }\n})\nexport class BasketballGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: BasketballStatistic;\n competitorTeam: BasketballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n points: 'points',\n free_throws_made: 'freeThrowsMade',\n two_points_made: 'twoPointsMade',\n three_points_made: 'threePointsMade',\n one_points_made: 'onePointsMade',\n two_point_attempts: 'twoPointAttempts',\n three_point_attempts: 'threePointAttempts',\n free_throw_attempts: 'freeThrowAttempts',\n one_point_attempts: 'onePointAttempts',\n assists: 'assists',\n blocks: 'blocks',\n rebounds: 'rebounds',\n offensive_rebounds: 'offensiveRebounds',\n defensive_rebounds: 'defensiveRebounds',\n steals: 'steals',\n turnovers: 'turnovers',\n personal_fouls: 'personalFouls',\n technical_fouls: 'technicalFouls',\n unsportsmanlike_fouls: 'unsportsmanlikeFouls',\n updated_at: 'updatedAt',\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class BasketballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n freeThrowsMade: number;\n twoPointsMade: number;\n threePointsMade: number;\n onePointsMade: number;\n twoPointAttempts: number;\n threePointAttempts: number;\n freeThrowAttempts: number;\n onePointAttempts: number;\n assists: number;\n blocks: number;\n rebounds: number;\n offensiveRebounds: number;\n defensiveRebounds: number;\n steals: number;\n turnovers: number;\n personalFouls: number;\n technicalFouls: number;\n unsportsmanlikeFouls: number;\n updatedAt: Date;\n\n get id(): number {\n return this.gameUserId;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get totalFouls(): number {\n return (this.personalFouls || 0) + (this.technicalFouls || 0) + (this.unsportsmanlikeFouls || 0);\n }\n}\n","import { enumField, ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateTimeField, penaltyTypeField } from './util';\nimport { GameUser } from './game-user';\nimport { GameLogBase } from './game-log-base';\n\nexport enum HockeyGameLogTypes {\n enter_game = 1,\n exit_game,\n shot_miss,\n shot_on_goal,\n shot_blocked,\n goal,\n shootout_attempt,\n shootout_goal,\n assist,\n block_shot ,\n minor_penalty ,\n major_penalty ,\n misconduct_penalty ,\n game_misconduct_penalty ,\n match_penalty ,\n penalty_shot ,\n face_off_lose ,\n face_off_win ,\n save ,\n timeout,\n penalty_start,\n penalty_end,\n after_game_shootout_attempt,\n after_game_shootout_goal,\n after_game_shootout_save,\n shootout_save,\n}\n\nexport enum HockeyAdvantageTypes {\n power_play = 1,\n shorthanded,\n even_strength\n}\n\nexport interface PenaltyType {\n id: number;\n code: string;\n title: string;\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n advantage: 'advantage',\n advantage_num: 'advantageNum',\n is_goalie: 'isGoalie',\n penalty_type: 'penaltyType',\n penalized_game_user_id: 'penalizedGameUserId',\n mutual_penalty: 'mutualPenalty',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(HockeyGameLogTypes),\n advantage: enumField(HockeyAdvantageTypes),\n penaltyType: penaltyTypeField()\n }\n})\nexport class HockeyGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: HockeyGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n advantage: HockeyAdvantageTypes;\n advantageNum: number;\n isGoalie: boolean;\n penaltyType: PenaltyType;\n _penalizedGameUserId: number;\n mutualPenalty: boolean;\n\n get penalizedGameUserId(): number {\n if (this._penalizedGameUserId) {\n return this._penalizedGameUserId;\n }\n return this.gameUserId;\n }\n\n set penalizedGameUserId(value: number) {\n this._penalizedGameUserId = value;\n }\n\n compare(model: HockeyGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n isScoreType(): boolean {\n return [HockeyGameLogTypes.goal, HockeyGameLogTypes.shootout_goal, HockeyGameLogTypes.after_game_shootout_goal].indexOf(this.logType) > -1;\n }\n\n isPenaltyType(): boolean {\n return [\n HockeyGameLogTypes.minor_penalty, HockeyGameLogTypes.major_penalty,\n HockeyGameLogTypes.misconduct_penalty, HockeyGameLogTypes.game_misconduct_penalty,\n HockeyGameLogTypes.penalty_shot, HockeyGameLogTypes.match_penalty\n ].indexOf(this.logType) > -1;\n }\n\n isAfter(log: HockeyGameLog): boolean {\n if (this.time === log.time && this.period === log.period) {\n return this.id > log.id;\n }\n if (this.period === log.period) {\n return this.time > log.time;\n }\n return this.period > log.period;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { TeamUser } from './team-user';\nimport { TournamentTeamUser } from './tournament-team-user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n game_id: 'gameId',\n team_user: 'teamUser',\n tournament_team_user: 'tournamentTeamUser',\n is_mvp: 'isMvp',\n updated_at: 'updatedAt'\n },\n relation: {\n teamUser: TeamUser,\n tournamentTeamUser: TournamentTeamUser,\n updatedAt: DateTimeField,\n }\n})\nexport class GameUser extends BaseModel {\n id: number;\n gameId: number;\n teamUser: TeamUser;\n tournamentTeamUser: TournamentTeamUser;\n isMvp: boolean;\n updatedAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField, listField } from './util';\n\ninterface LimitationValue {\n current: number;\n required: number;\n}\n\n@ModelInstance({\n mappingFields: {\n min_user_games_count: 'minUserGamesCount',\n min_user_time: 'minUserTime',\n manual: 'manual',\n },\n})\nexport class GameUserLimitationTypes extends BaseModel {\n minUserGamesCount: LimitationValue;\n minUserTime: LimitationValue;\n manual: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(data: any): any {\n }\n}\n\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user_id: 'tournamentTeamUserId',\n limitations: 'limitations'\n },\n relation: {\n limitations: GameUserLimitationTypes\n }\n})\nexport class GameUserLimitations extends BaseModel {\n tournamentTeamUserId: number;\n limitations: GameUserLimitationTypes;\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(data: any): any {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { GameUser } from '../models/game-user';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\nimport { GameUserLimitations } from '../models/game-user-limitation';\n\n@Injectable({providedIn: 'root'})\nexport class GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService,\n ) {\n }\n\n async getUsers(gameId: number): Promise<GameUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/users/`).pipe(\n map(result => GameUser.toFront(result))\n ).toPromise();\n }\n\n async getMvp(gameId: number): Promise<GameUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/mvp/`).pipe(\n map(result => GameUser.toFront(result))\n ).toPromise();\n }\n\n async getUsersLimitation(gameId: number): Promise<GameUserLimitations[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/users_limitation/`).pipe(\n map(result => GameUserLimitations.toFront(result))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { BasketballGameTeamStatistic } from '../models/basketball-game-team-statistic';\nimport { BasketballGameStatistic } from '../models/basketball-game-statistic';\nimport { BasketballGameLog } from '../models/basketball-game-log';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class BasketballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<BasketballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/team_statistic/`).pipe(\n map(result => BasketballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<BasketballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/user_statistic/`).pipe(\n map(result => BasketballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<BasketballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/logs/`).pipe(\n map(result => BasketballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, fileType: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/game_protocol/?file_type=${fileType}`,\n {responseType: 'blob'}\n )\n .toPromise();\n }\n\n async downloadFibaProtocol(gameId: number, fileType: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/game_protocol_fiba/?file_type=${fileType}`,\n {responseType: 'blob'}\n )\n .toPromise();\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n theme: 'theme',\n message: 'message',\n files: 'files',\n email: 'email',\n captcha: 'captcha',\n },\n relation: {\n files: File\n }\n})\nexport class Feedback {\n id: number;\n theme: string;\n message: string;\n email: string;\n captcha: string;\n files: File[];\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(value: any): any {\n return null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Feedback } from '../models/feedback';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class FeedbackApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async sendFeedback(data: any): Promise<Feedback> {\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/feedback/`, Feedback.toBack(data))\n .pipe(map(response => Feedback.toFront(response)))\n .toPromise();\n }\n\n async sendLeagueFeedback(leagueId: number, data: any): Promise<Feedback> {\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/feedback/`, Feedback.toBack(data))\n .pipe(map(response => Feedback.toFront(response)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { map } from 'rxjs/operators';\nimport { File } from '../models/file';\n\n@Injectable({providedIn: 'root'})\nexport class FileApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async upload(fileData: any, filename?: string, width?: number, height?: number): Promise<File> {\n let params = new HttpParams();\n if (width && height) {\n params = params.set('width', width.toString()).set('height', height.toString());\n }\n\n const formData = new FormData();\n formData.append('file', fileData, filename);\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/file/`, formData, {params})\n .pipe(map(data => File.toFront(data)))\n .toPromise();\n }\n\n async createZipArchive(files: {file: any, filename: string}[]): Promise<any> {\n const formData = new FormData();\n for (const file of files) {\n formData.append('files', file.file, file.filename);\n }\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/file/zip_archive/`, formData, {responseType: 'blob'})\n .toPromise();\n }\n}\n","import { enumField, ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateTimeField, penaltyTypeField } from './util';\nimport { GameUser } from './game-user';\nimport { GameLogBase } from './game-log-base';\n\nexport enum FootballGameLogTypes {\n enter_game = 1,\n exit_game,\n shot_miss,\n shot_on_goal,\n shot_blocked,\n goal,\n penalty_attempt,\n penalty_goal,\n penalty_save,\n small_penalty_attempt,\n small_penalty_goal,\n small_penalty_save,\n assist,\n block_shot,\n corner,\n free_kick,\n foul,\n save,\n yellow_card,\n red_card,\n perfect_pass,\n loss,\n steal,\n out,\n timeout,\n auto_goal,\n}\n\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n is_goalie: 'isGoalie',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(FootballGameLogTypes)\n }\n})\nexport class FootballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: FootballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n isGoalie: boolean;\n\n compare(model: FootballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n isScoreType(): boolean {\n return [\n FootballGameLogTypes.goal,\n FootballGameLogTypes.penalty_goal,\n FootballGameLogTypes.small_penalty_goal,\n FootballGameLogTypes.auto_goal,\n ].indexOf(this.logType) > -1;\n }\n\n isAfter(log: FootballGameLog): boolean {\n if (this.time === log.time && this.period === log.period) {\n return this.id > log.id;\n }\n if (this.period === log.period) {\n return this.time > log.time;\n }\n return this.period > log.period;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n updated_at: 'updatedAt',\n points: 'points',\n pp_shot_misses: 'ppShotMisses',\n pp_shots_on_goal: 'ppShotsOnGoal',\n pp_shots_blocked: 'ppShotsBlocked',\n ev_shot_misses: 'evShotMisses',\n ev_shots_on_goal: 'evShotsOnGoal',\n ev_shots_blocked: 'evShotsBlocked',\n sh_shot_misses: 'shShotMisses',\n sh_shots_on_goal: 'shShotsOnGoal',\n sh_shots_blocked: 'shShotsBlocked',\n pp_goals: 'ppGoals',\n ev_goals: 'evGoals',\n sh_goals: 'shGoals',\n pp_assists: 'ppAssists',\n ev_assists: 'evAssists',\n sh_assists: 'shAssists',\n shootout_attempts: 'shootoutAttempts',\n shootout_goals: 'shootoutGoals',\n after_game_shootout_attempts: 'afterGameShootoutAttempts',\n after_game_shootout_goals: 'afterGameShootoutGoals',\n block_shots: 'blockShots',\n face_off_losses: 'faceOffLosses',\n face_off_wins: 'faceOffWins',\n saves: 'saves',\n shootout_save: 'shootoutSaves',\n after_game_shootout_saves: 'afterGameShootoutSaves',\n goals_against: 'goalsAgainst',\n shootout_goals_against: 'shootoutGoalsAgainst',\n after_game_shootout_goals_against: 'afterGameShootoutGoalsAgainst',\n safety_rate: 'safetyRate',\n penalty_minutes: 'penaltyMinutes',\n game_time: 'gameTime',\n plus_minus: 'plusMinus'\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class HockeyGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n ppShotMisses: number;\n ppShotsOnGoal: number;\n ppShotsBlocked: number;\n evShotMisses: number;\n evShotsOnGoal: number;\n evShotsBlocked: number;\n shShotMisses: number;\n shShotsOnGoal: number;\n shShotsBlocked: number;\n ppGoals: number;\n evGoals: number;\n shGoals: number;\n ppAssists: number;\n evAssists: number;\n shAssists: number;\n shootoutAttempts: number;\n shootoutGoals: number;\n afterGameShootoutAttempts: number;\n afterGameShootoutGoals: number;\n blockShots: number;\n faceOffLosses: number;\n faceOffWins: number;\n saves: number;\n shootoutSaves: number;\n afterGameShootoutSaves: number;\n goalsAgainst: number;\n shootoutGoalsAgainst: number;\n afterGameShootoutGoalsAgainst: number;\n safetyRate: number;\n penaltyMinutes: number;\n gameTime: number;\n plusMinus: number;\n updatedAt: Date;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get shotsOnGoal(): number {\n return (this.evShotsOnGoal || 0) + (this.ppShotsOnGoal || 0) + (this.shShotsOnGoal || 0);\n }\n\n get shotsBlocked(): number {\n return (this.evShotsBlocked || 0) + (this.ppShotsBlocked || 0) + (this.shShotsBlocked || 0);\n }\n\n get shotMisses(): number {\n return (this.evShotMisses || 0) + (this.ppShotMisses || 0) + (this.shShotMisses || 0);\n }\n\n get ppShots(): number {\n return (this.ppShotMisses || 0) + (this.ppShotsOnGoal || 0) + (this.ppShotsBlocked || 0);\n }\n\n get evShots(): number {\n return (this.evShotMisses || 0) + (this.evShotsOnGoal || 0) + (this.evShotsBlocked || 0);\n }\n\n get shShots(): number {\n return (this.shShotMisses || 0) + (this.shShotsOnGoal || 0) + (this.shShotsBlocked || 0);\n }\n\n get shots(): number {\n return this.ppShots + this.evShots + this.shShots + (this.shootoutAttempts || 0);\n }\n\n get totalShots(): number {\n return this.shots + (this.shootoutAttempts || 0);\n }\n\n get goals(): number {\n return (this.ppGoals || 0) + (this.shGoals || 0) + (this.evGoals || 0);\n }\n\n get totalGoals(): number {\n return this.goals + (this.shootoutGoals || 0);\n }\n\n get assists(): number {\n return (this.ppAssists || 0) + (this.evAssists || 0) + (this.shAssists || 0);\n }\n\n get faceOffs(): number {\n return (this.faceOffWins || 0) + (this.faceOffLosses || 0);\n }\n\n get shootOuts(): number {\n return (this.shootoutAttempts || 0) + (this.shootoutGoals || 0);\n }\n\n get shotsAgainst(): number {\n return (this.saves || 0) + (this.goalsAgainst || 0);\n }\n\n get shootoutShotsAgainst(): number {\n return (this.shootoutSaves || 0) + (this.shootoutGoalsAgainst || 0);\n }\n\n get totalShotsAgainst(): number {\n return this.shotsAgainst + this.shootoutShotsAgainst;\n }\n\n get savesPercent(): number {\n if (!this.shotsAgainst || !this.saves) {\n return 0;\n }\n return Math.round(1000 * this.saves / this.shotsAgainst) / 10;\n }\n\n get totalSaves(): number {\n return (this.saves || 0) + (this.shootoutSaves || 0);\n }\n\n get totalSavesPercent(): number {\n if (!this.totalShotsAgainst || !this.totalSaves) {\n return 0;\n }\n return Math.round(1000 * this.totalSaves / this.totalShotsAgainst) / 10;\n }\n\n get totalGoalsAgainst(): number {\n return (this.goalsAgainst || 0) + (this.shootoutGoalsAgainst || 0);\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\nimport { LeaguePlayer } from './league-player';\n\n@ModelInstance({\n mappingFields: {\n league_player: 'leaguePlayer',\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n lose_games_count: 'loseGamesCount',\n points: 'points',\n pp_shots: 'ppShots',\n pp_shot_misses: 'ppShotMisses',\n pp_shots_on_goal: 'ppShotsOnGoal',\n pp_shots_blocked: 'ppShotsBlocked',\n ev_shots: 'evShots',\n ev_shot_misses: 'evShotMisses',\n ev_shots_on_goal: 'evShotsOnGoal',\n ev_shots_blocked: 'evShotsBlocked',\n sh_shots: 'shShots',\n sh_shot_misses: 'shShotMisses',\n sh_shots_on_goal: 'shShotsOnGoal',\n sh_shots_blocked: 'shShotsBlocked',\n pp_goals_percent: 'ppGoalsPercent',\n pp_goals: 'ppGoals',\n ev_goals_percent: 'evGoalsPercent',\n ev_goals: 'evGoals',\n sh_goals_percent: 'shGoalsPercent',\n goals: 'goals',\n total_goals: 'totalGoals',\n sh_goals: 'shGoals',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n shots: 'shots',\n total_shots: 'totalShots',\n goals_percent: 'goalsPercent',\n total_goals_percent: 'totalGoalsPercent',\n pp_assists: 'ppAssists',\n ev_assists: 'evAssists',\n sh_assists: 'shAssists',\n shootout_attempts: 'shootoutAttempts',\n shootout_goals: 'shootoutGoals',\n after_game_shootout_attempts: 'afterGameShootoutAttempts',\n after_game_shootout_goals: 'afterGameShootoutGoals',\n block_shots: 'blockShots',\n face_off_losses: 'faceOffLosses',\n face_off_wins: 'faceOffWins',\n face_offs: 'faceOffs',\n face_off_percent: 'faceOffPercent',\n saves: 'saves',\n total_saves: 'totalSaves',\n shootout_saves: 'shootoutSaves',\n shots_against: 'shotsAgainst',\n shootout_shots_against: 'shootoutShotsAgainst',\n total_shots_against: 'totalShotsAgainst',\n saves_percent: 'savesPercent',\n total_saves_percent: 'totalSavesPercent',\n goals_against: 'goalsAgainst',\n shootout_goals_against: 'shootoutGoalsAgainst',\n total_goals_against: 'totalGoalsAgainst',\n safety_rate: 'safetyRate',\n penalty_minutes: 'penaltyMinutes',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n newbie: 'newbie',\n rank: 'rank',\n },\n relation: {\n leaguePlayer: LeaguePlayer,\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class HockeyStatistic extends BaseModel implements BaseStatistic {\n leaguePlayer: LeaguePlayer;\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: WinLoseType;\n gamesCount: number;\n wonGamesCount: number;\n loseGamesCount: number;\n points: number;\n ppShots: number;\n ppShotMisses: number;\n ppShotsOnGoal: number;\n ppShotsBlocked: number;\n evShots: number;\n evShotMisses: number;\n evShotsOnGoal: number;\n evShotsBlocked: number;\n shShots: number;\n shShotMisses: number;\n shShotsOnGoal: number;\n shShotsBlocked: number;\n ppGoalsPercent: number;\n ppGoals: number;\n evGoalsPercent: number;\n evGoals: number;\n shGoalsPercent: number;\n shGoals: number;\n goals: number;\n totalGoals: number;\n totalGoalsPercent;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n shots: number;\n totalShots: number;\n goalsPercent: number;\n ppAssists: number;\n evAssists: number;\n shAssists: number;\n shootoutAttempts: number;\n shootoutGoals: number;\n afterGameShootoutAttempts: number;\n afterGameShootoutGoals: number;\n blockShots: number;\n faceOffLosses: number;\n faceOffWins: number;\n faceOffs: number;\n faceOffPercent: number;\n savesPercent: number;\n totalSavesPercent: number;\n saves: number;\n shootoutSaves: number;\n totalSaves: number;\n shotsAgainst: number;\n shootoutShotsAgainst: number;\n totalShotsAgainst: number;\n goalsAgainst: number;\n shootoutGoalsAgainst: number;\n totalGoalsAgainst: number;\n safetyRate: number;\n penaltyMinutes: number;\n gameTime: number;\n plusMinus: number;\n newbie: boolean;\n rank: number;\n\n get assists(): number {\n return (this.ppAssists || 0) + (this.shAssists || 0) + (this.evAssists || 0);\n }\n\n get userMinutes(): string {\n if (!this.gameTime) {\n return '00:00';\n }\n const minutes = Math.floor(this.gameTime / 60);\n const seconds = Math.floor(this.gameTime - minutes * 60);\n return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;\n }\n\n get gamesWonPercent(): number {\n if (!this.gamesCount) {\n return 0;\n }\n return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;\n }\n\n get tournamentTeamPoints(): number {\n return this.tournamentTeam && this.tournamentTeam.points;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { HockeyStatistic } from './hockey-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: HockeyStatistic,\n competitorTeam: HockeyStatistic\n }\n})\nexport class HockeyGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: HockeyStatistic;\n competitorTeam: HockeyStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { HockeyGameLog } from '../models/hockey-game-log';\nimport { HockeyGameStatistic } from '../models/hockey-game-statistic';\nimport { HockeyGameTeamStatistic } from '../models/hockey-game-team-statistic';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class HockeyGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<HockeyGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/team_statistic/`).pipe(\n map(result => HockeyGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<HockeyGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/user_statistic/`).pipe(\n map(result => HockeyGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<HockeyGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/logs/`).pipe(\n map(result => HockeyGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadApplication(gameId: number, format: 'pdf' | 'xlsx' | 'html', type: 'game_user'|'tournament_user'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/game_application_file/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { GameLogBase } from './game-log-base';\nimport { GameUser } from './game-user';\n\nexport enum HandballGameLogTypes {\n enter_game = 1,\n exit_game,\n shot_miss,\n shot_on_goal,\n shot_blocked,\n goal,\n assist,\n penalty_miss,\n penalty_shot_on_goal,\n penalty_goal,\n save,\n penalty_save,\n foul,\n yellow_card,\n red_card,\n two_minute_foul,\n turnover,\n steal,\n block_shot,\n timeout\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n is_goalie: 'isGoalie',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(HandballGameLogTypes)\n }\n})\nexport class HandballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: HandballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n isGoalie: boolean;\n\n compare(model: HandballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n isScoreType(): boolean {\n return [HandballGameLogTypes.goal, HandballGameLogTypes.penalty_goal].indexOf(this.logType) > -1;\n }\n\n isAfter(log: HandballGameLog): boolean {\n if (this.time === log.time && this.period === log.period) {\n return this.id > log.id;\n }\n if (this.period === log.period) {\n return this.time > log.time;\n }\n return this.period > log.period;\n }\n\n isFoulType(): boolean {\n return [HandballGameLogTypes.foul, HandballGameLogTypes.yellow_card, HandballGameLogTypes.red_card].indexOf(this.logType) > -1;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n updated_at: 'updatedAt',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n goals: 'goals',\n assists: 'assists',\n corners: 'corners',\n free_kicks: 'freeKicks',\n penalty_goals: 'penaltyGoals',\n penalty_attempts: 'penaltyAttempts',\n penalty_goals_against: 'penaltyGoalsAgainst',\n penalty_saves: 'penaltySaves',\n small_penalty_goals: 'smallPenaltyGoals',\n small_penalty_attempts: 'smallPenaltyAttempts',\n small_penalty_goals_against: 'smallPenaltyGoalsAgainst',\n small_penalty_saves: 'smallPenaltySaves',\n saves: 'saves',\n goals_against: 'goalsAgainst',\n safety_rate: 'safetyRate',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n fouls: 'fouls',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n perfect_passes: 'perfectPasses',\n losses: 'losses',\n steals: 'steals',\n outs: 'outs',\n block_shots: 'blockShots',\n auto_goals: 'autoGoals',\n auto_goals_against: 'autoGoalsAgainst'\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class FootballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n goals: number;\n assists: number;\n blockShots: number;\n corners: number;\n freeKicks: number;\n penaltyGoals: number;\n penaltyAttempts: number;\n penaltyGoalsAgainst: number;\n penaltySaves: number;\n smallPenaltyGoals: number;\n smallPenaltyAttempts: number;\n smallPenaltyGoalsAgainst: number;\n smallPenaltySaves: number;\n saves: number;\n goalsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n perfectPasses: number;\n losses: number;\n steals: number;\n outs: number;\n gameTime: number;\n plusMinus: number;\n updatedAt: Date;\n autoGoals: number;\n autoGoalsAgainst: number;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get shots(): number {\n return (this.shotMisses || 0) + (this.shotsOnGoal || 0) + (this.shotsBlocked || 0);\n }\n\n\n get totalGoals(): number {\n return (this.goals || 0) + (this.penaltyGoals || 0) + (this.smallPenaltyGoals || 0);\n }\n\n get goalsPercent(): number {\n if (!this.shots || !this.totalGoals) {\n return 0;\n }\n return Math.round(1000 * this.totalGoals / this.shots) / 10;\n }\n\n get shotsOnGoalPercent(): number {\n if (!this.shotsOnGoal || !this.shots) {\n return 0;\n }\n return Math.round(1000 * this.shotsOnGoal / this.shots) / 10;\n }\n\n get penalties(): number {\n return (this.penaltyGoals || 0) + (this.penaltyAttempts || 0);\n }\n\n get penaltyGoalsPercent(): number {\n if (!this.penaltyAttempts || !this.penaltyGoals) {\n return 0;\n }\n const penaltyShots = this.penaltyAttempts + this.penaltyGoals;\n return Math.round(1000 * this.penaltyGoals / penaltyShots) / 10;\n }\n\n get smallPenalties(): number {\n return (this.smallPenaltyGoals || 0) + (this.smallPenaltyAttempts || 0);\n }\n\n get smallPenaltyGoalsPercent(): number {\n if (!this.smallPenaltyAttempts || !this.smallPenaltyGoals) {\n return 0;\n }\n const smallPenaltyShots = this.smallPenaltyAttempts + this.smallPenaltyGoals;\n return Math.round(1000 * this.smallPenaltyGoals / smallPenaltyShots) / 10;\n }\n\n get shotsAgainst(): number {\n return (this.saves || 0) + (this.goalsAgainst || 0);\n }\n\n get penaltyShotsAgainst(): number {\n return (this.penaltySaves || 0) + (this.penaltyGoalsAgainst || 0);\n }\n\n get smallPenaltyShotsAgainst(): number {\n return (this.smallPenaltySaves || 0) + (this.smallPenaltyGoalsAgainst || 0);\n }\n\n get totalGoalsAgainst(): number {\n return (this.goalsAgainst || 0) + (this.penaltyGoalsAgainst || 0) + (this.smallPenaltyGoalsAgainst || 0) + (this.autoGoalsAgainst || 0);\n }\n\n\n get totalSaves(): number {\n return (this.saves || 0) + (this.penaltySaves || 0) + (this.smallPenaltySaves || 0);\n }\n\n get savesPercent(): number {\n if (!this.shotsAgainst || !this.saves) {\n return 0;\n }\n return Math.round(1000 * this.saves / this.shotsAgainst) / 10;\n }\n\n get penaltySavesPercent(): number {\n if (!this.penaltyShotsAgainst || !this.penaltySaves) {\n return 0;\n }\n return Math.round(1000 * this.penaltySaves / this.penaltyShotsAgainst) / 10;\n }\n\n get smallPenaltySavesPercent(): number {\n if (!this.smallPenaltyShotsAgainst || !this.smallPenaltySaves) {\n return 0;\n }\n return Math.round(1000 * this.smallPenaltySaves / this.smallPenaltyShotsAgainst) / 10;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\nimport { LeaguePlayer } from './league-player';\n\n@ModelInstance({\n mappingFields: {\n league_player: 'leaguePlayer',\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n shots_on_goal_percent: 'shotsOnGoalPercent',\n shots: 'shots',\n goals: 'goals',\n goals_percent: 'goalsPercent',\n total_goals: 'totalGoals',\n assists: 'assists',\n penalty_goals: 'penaltyGoals',\n penalty_attempts: 'penaltyAttempts',\n penalty_goals_percent: 'penaltyGoalsPercent',\n penalty_saves: 'penaltySaves',\n penalty_goals_against: 'penaltyGoalsAgainst',\n penalty_shots_against: 'penaltyShotsAgainst',\n penalty_saves_percent: 'penaltySavesPercent',\n small_penalty_goals: 'smallPenaltyGoals',\n small_penalty_attempts: 'smallPenaltyAttempts',\n small_penalty_goals_percent: 'smallPenaltyGoalsPercent',\n small_penalty_saves: 'smallPenaltySaves',\n small_penalty_goals_against: 'smallPenaltyGoalsAgainst',\n small_penalty_shots_against: 'smallPenaltyShotsAgainst',\n small_penalty_saves_percent: 'smallPenaltySavesPercent',\n saves: 'saves',\n saves_percent: 'savesPercent',\n total_saves: 'totalSaves',\n goals_against: 'goalsAgainst',\n total_goals_against: 'totalGoalsAgainst',\n shots_against: 'shotsAgainst',\n safety_rate: 'safetyRate',\n fouls: 'fouls',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n perfect_passes: 'perfectPasses',\n losses: 'losses',\n steals: 'steals',\n outs: 'outs',\n block_shots: 'blockShots',\n corners: 'corners',\n free_kicks: 'freeKicks',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n newbie: 'newbie',\n rank: 'rank',\n auto_goals: 'autoGoals',\n auto_goals_against: 'autoGoalsAgainst',\n },\n relation: {\n leaguePlayer: LeaguePlayer,\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class FootballStatistic extends BaseModel implements BaseStatistic {\n leaguePlayer: LeaguePlayer;\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: WinLoseType;\n gamesCount: number;\n wonGamesCount: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n shotsOnGoalPercent: number;\n shots: number;\n goals: number;\n totalGoals: number;\n goalsPercent: number;\n assists: number;\n penaltyGoals: number;\n penaltyAttempts: number;\n penaltyGoalsPercent: number;\n penaltySaves: number;\n penaltyGoalsAgainst: number;\n penaltyShotsAgainst: number;\n penaltySavesPercent: number;\n smallPenaltyGoals: number;\n smallPenaltyAttempts: number;\n smallPenaltyGoalsPercent: number;\n smallPenaltySaves: number;\n smallPenaltyGoalsAgainst: number;\n smallPenaltyShotsAgainst: number;\n smallPenaltySavesPercent: number;\n saves: number;\n savesPercent: number;\n totalSaves: number;\n goalsAgainst: number;\n totalGoalsAgainst: number;\n shotsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n perfectPasses: number;\n losses: number;\n steals: number;\n outs: number;\n gameTime: number;\n plusMinus: number;\n blockShots: number;\n corners: number;\n freeKicks: number;\n newbie: boolean;\n rank: number;\n autoGoals: number;\n autoGoalsAgainst: number;\n\n get userMinutes(): string {\n if (!this.gameTime) {\n return '00:00';\n }\n const minutes = Math.floor(this.gameTime / 60);\n const seconds = Math.floor(this.gameTime - minutes * 60);\n return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;\n }\n\n get tournamentTeamPoints(): number {\n return this.tournamentTeam && this.tournamentTeam.points;\n }\n\n get tournamentTeamGamesCount(): number {\n return this.tournamentTeam && this.tournamentTeam.gamesCount;\n }\n\n get tournamentTeamWonGamesCount(): number {\n return this.tournamentTeam && this.tournamentTeam.wonGamesCount;\n }\n\n get tournamentTeamDrawGamesCount(): number {\n return this.tournamentTeam && this.tournamentTeam.drawGamesCount;\n }\n\n get tournamentTeamLostGamesCount(): number {\n if (!this.tournamentTeam) {\n return null;\n }\n return this.tournamentTeam.gamesCount - this.tournamentTeam.drawGamesCount - this.tournamentTeam.wonGamesCount;\n }\n\n get tournamentTeamScoreSum(): number {\n return this.tournamentTeam && this.tournamentTeam.scoreSum;\n }\n\n get tournamentTeamMissedSum(): number {\n return this.tournamentTeam && this.tournamentTeam.missedSum;\n }\n\n get tournamentTeamPlusMinus(): number {\n if (!this.tournamentTeam) {\n return null;\n }\n return this.tournamentTeam.scoreSum - this.tournamentTeam.missedSum;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { FootballStatistic } from './football-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: FootballStatistic,\n competitorTeam: FootballStatistic\n }\n})\nexport class FootballGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: FootballStatistic;\n competitorTeam: FootballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { FootballGameLog } from '../models/football-game-log';\nimport { FootballGameStatistic } from '../models/football-game-statistic';\nimport { FootballGameTeamStatistic } from '../models/football-game-team-statistic';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class FootballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<FootballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/team_statistic/`).pipe(\n map(result => FootballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<FootballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/user_statistic/`).pipe(\n map(result => FootballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<FootballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/logs/`).pipe(\n map(result => FootballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadApplication(gameId: number, format: 'pdf' | 'xlsx' | 'html', type: 'game_user' | 'tournament_user'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/game_application_file/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField, DateField } from './util';\n\nexport enum TournamentStageStatuses {\n open,\n in_progress,\n closed\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n date: 'date',\n tournament_id: 'tournamentId',\n status: 'status',\n },\n relation: {\n date: DateField,\n status: enumField(TournamentStageStatuses)\n }\n})\nexport class TournamentStage extends BaseModel {\n id: number;\n name: string;\n date: Date;\n tournamentId: number;\n status: TournamentStageStatuses;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n goals: 'goals',\n assists: 'assists',\n penalty_goals: 'penaltyGoals',\n penalty_misses: 'penaltyMisses',\n penalty_shots_on_goal: 'penaltyShotsOnGoal',\n saves: 'saves',\n penalty_saves: 'penaltySaves',\n goals_against: 'goalsAgainst',\n penalty_goals_against: 'penaltyGoalsAgainst',\n safety_rate: 'safetyRate',\n fouls: 'fouls',\n yellowCards: 'yellowCards',\n red_cards: 'redCards',\n two_minute_fouls: 'twoMinuteFouls',\n turnovers: 'turnovers',\n steals: 'steals',\n block_shots: 'blockShots',\n game_time: 'gameTime',\n plus_minus: 'plusMinus'\n }\n})\nexport class HandballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n goals: number;\n assists: number;\n penaltyGoals: number;\n penaltyMisses: number;\n penaltyShotsOnGoal: number;\n saves: number;\n penaltySaves: number;\n goalsAgainst: number;\n penaltyGoalsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n twoMinuteFouls: number;\n turnovers: number;\n steals: number;\n blockShots: number;\n gameTime: number;\n plusMinus: number;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get shots(): number {\n return (this.shotMisses || 0) + (this.shotsOnGoal || 0) + (this.shotsBlocked || 0);\n }\n\n\n get totalGoals(): number {\n return (this.goals || 0) + (this.penaltyGoals || 0);\n }\n\n get goalsPercent(): number {\n if (!this.shots || !this.totalGoals) {\n return 0;\n }\n return Math.round(1000 * this.totalGoals / this.shots) / 10;\n }\n\n get shotsOnGoalPercent(): number {\n if (!this.shotsOnGoal || !this.shots) {\n return 0;\n }\n return Math.round(1000 * this.shotsOnGoal / this.shots) / 10;\n }\n\n get penaltyShots(): number {\n return (this.penaltyShotsOnGoal || 0) + (this.penaltyMisses || 0);\n }\n\n get penaltyGoalsPercent(): number {\n if (!this.penaltyShots || !this.penaltyGoals) {\n return 0;\n }\n return Math.round(1000 * this.penaltyGoals / this.penaltyShots) / 10;\n }\n\n get shotsAgainst(): number {\n return (this.saves || 0) + (this.goalsAgainst || 0);\n }\n\n get penaltyShotsAgainst(): number {\n return (this.penaltySaves || 0) + (this.penaltyGoalsAgainst || 0);\n }\n\n get totalGoalsAgainst(): number {\n return (this.goalsAgainst || 0) + (this.penaltyGoalsAgainst || 0);\n }\n\n get totalSaves(): number {\n return (this.saves || 0) + (this.penaltySaves || 0);\n }\n\n get savesPercent(): number {\n if (!this.shotsAgainst || !this.saves) {\n return 0;\n }\n return Math.round(1000 * this.saves / this.shotsAgainst) / 10;\n }\n\n get penaltySavesPercent(): number {\n if (!this.penaltyShotsAgainst || !this.penaltySaves) {\n return 0;\n }\n return Math.round(1000 * this.penaltySaves / this.penaltyShotsAgainst) / 10;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\nimport { LeaguePlayer } from './league-player';\n\n@ModelInstance({\n mappingFields: {\n league_player: 'leaguePlayer',\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n goals: 'goals',\n assists: 'assists',\n penalty_goals: 'penaltyGoals',\n penalty_misses: 'penaltyMisses',\n penalty_shots_on_goal: 'penaltyShotsOnGoal',\n saves: 'saves',\n penalty_saves: 'penaltySaves',\n goals_against: 'goalsAgainst',\n penalty_goals_against: 'penaltyGoalsAgainst',\n safety_rate: 'safetyRate',\n fouls: 'fouls',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n two_minute_fouls: 'twoMinuteFouls',\n turnovers: 'turnovers',\n steals: 'steals',\n block_shots: 'blockShots',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n shots: 'shots',\n goals_percent: 'goalsPercent',\n penalty_shots: 'penaltyShots',\n penalty_goals_percent: 'penaltyGoalsPercent',\n shots_against: 'shotsAgainst',\n saves_percent: 'savesPercent',\n penalty_shots_against: 'penaltyShotsAgainst',\n penalty_saves_percent: 'penaltySavesPercent',\n total_goals: 'totalGoals',\n total_saves: 'totalSaves',\n total_goals_against: 'totalGoalsAgainst',\n newbie: 'newbie',\n rank: 'rank',\n },\n relation: {\n leaguePlayer: LeaguePlayer,\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class HandballStatistic extends BaseModel implements BaseStatistic {\n leaguePlayer: LeaguePlayer;\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: WinLoseType;\n gamesCount: number;\n wonGamesCount: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n goals: number;\n assists: number;\n penaltyGoals: number;\n penaltyMisses: number;\n penaltyShotsOnGoal: number;\n saves: number;\n penaltySaves: number;\n goalsAgainst: number;\n penaltyGoalsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n twoMinuteFouls: number;\n turnovers: number;\n steals: number;\n blockShots: number;\n gameTime: number;\n plusMinus: number;\n shots: number;\n goalsPercent: number;\n penaltyShots: number;\n penaltyGoalsPercent: number;\n shotsAgainst: number;\n savesPercent: number;\n penaltyShotsAgainst: number;\n penaltySavesPercent: number;\n totalGoals: number;\n totalSaves: number;\n totalGoalsAgainst: number;\n newbie: boolean;\n rank: number;\n\n get userMinutes(): string {\n if (!this.gameTime) {\n return '00:00';\n }\n const minutes = Math.floor(this.gameTime / 60);\n const seconds = Math.floor(this.gameTime - minutes * 60);\n return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;\n }\n\n get tournamentTeamPoints(): number {\n return this.tournamentTeam && this.tournamentTeam.points;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { HandballStatistic } from './handball-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: HandballStatistic,\n competitorTeam: HandballStatistic\n }\n})\nexport class HandballGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: HandballStatistic;\n competitorTeam: HandballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { HandballGameLog } from '../models/handball-game-log';\nimport { HandballGameStatistic } from '../models/handball-game-statistic';\nimport { HandballGameTeamStatistic } from '../models/handball-game-team-statistic';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class HandballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<HandballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/team_statistic/`).pipe(\n map(result => HandballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<HandballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/user_statistic/`).pipe(\n map(result => HandballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<HandballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/logs/`).pipe(\n map(result => HandballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadApplication(gameId: number, format: 'pdf' | 'xlsx' | 'html', type: 'game_user' | 'tournament_user'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/game_application_file/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { File } from './file';\nimport { User } from './user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n picture: 'picture',\n text: 'text',\n author: 'author',\n created_at: 'createdAt',\n },\n relation: {\n picture: File,\n author: User,\n createdAt: DateTimeField,\n }\n})\nexport class TournamentNews extends BaseModel {\n id: number;\n title: string;\n picture: File;\n text: string;\n author: User;\n createdAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField } from './util';\n\n@ModelInstance({\n mappingFields: {\n stage_id: 'stageId',\n tours_count: 'toursCount',\n playoff_stages_count: 'playoffStagesCount',\n }\n})\nexport class GameTimelineStageItem {\n stageId: number;\n toursCount: number;\n playoffStagesCount: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n tours_count: 'toursCount',\n playoff_stages_count: 'playoffStagesCount',\n current_tour: 'currentTour',\n current_playoff_stage: 'currentPlayoffStage',\n stages: 'stages',\n tournament_stage_id: 'tournamentStageId',\n },\n relation: {\n stages: listField(GameTimelineStageItem)\n }\n})\nexport class GameTimelineStages extends BaseModel {\n toursCount: number;\n playoffStagesCount: number;\n currentTour: number;\n currentPlayoffStage: number;\n stages: GameTimelineStageItem[];\n tournamentStageId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField, DateTimeField, enumField } from './util';\nimport { File } from './file';\nimport { Tournament } from './tournament';\n\nexport enum LeagueNewsType {\n text = 1,\n video\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n datetime: 'datetime',\n preview_text: 'previewText',\n detail_text: 'detailText',\n picture: 'picture',\n cover: 'cover',\n mobile_picture: 'mobilePicture',\n is_main: 'isMain',\n tournaments: 'tournaments',\n type: 'type',\n video_link: 'videoLink',\n tag: 'tag',\n },\n relation: {\n datetime: DateTimeField,\n picture: File,\n cover: File,\n mobilePicture: File,\n tournaments: listField(Tournament),\n type: enumField(LeagueNewsType),\n }\n})\nexport class LeagueNews extends BaseModel {\n id: number;\n title: string;\n datetime: Date;\n previewText: string;\n detailText: string;\n picture: File;\n cover: File;\n mobilePicture: File;\n isMain: boolean;\n tournaments: Tournament[];\n type: LeagueNewsType;\n videoLink: string;\n tag: string;\n\n @ToFrontHook\n static toFront(data: any): any {\n return undefined;\n }\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField } from './util';\nimport { Team } from './team';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { TeamUser } from './team-user';\nimport { TournamentTeam } from './tournament-team';\nimport { User } from './user';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\nimport { LeaguePlayer } from './league-player';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n team_user: 'teamUser',\n league_player: 'leaguePlayer',\n tournament_team_user: 'tournamentTeamUser',\n tournament_team: 'tournamentTeam',\n user: 'user',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n serve_hits: 'serveHits',\n serve_faults: 'serveFaults',\n serve_aces: 'serveAces',\n serve_percent: 'servePercent',\n ace_percent: 'acePercent',\n stuff_blocks: 'stuffBlocks',\n block_faults: 'blockFaults',\n block_rebounds: 'blockRebounds',\n block_percent: 'blockPercent',\n attack_spikes: 'attackSpikes',\n attack_faults: 'attackFaults',\n attack_shots: 'attackShots',\n attack_percent: 'attackPercent',\n receives: 'receives',\n receive_faults: 'receiveFaults',\n excellent_receives: 'excellentReceives',\n receive_percent: 'receivePercent',\n serve_receives: 'serveReceives',\n serve_receive_faults: 'serveReceiveFaults',\n excellent_serve_receives: 'excellentServeReceives',\n serve_receive_percent: 'serveReceivePercent',\n points: 'points',\n faults: 'faults',\n newbie: 'newbie',\n rank: 'rank',\n },\n relation: {\n team: Team,\n teamUser: TeamUser,\n leaguePlayer: LeaguePlayer,\n tournamentTeamUser: TournamentTeamUser,\n tournamentTeam: TournamentTeam,\n user: User,\n month: DateField,\n }\n})\nexport class VolleyballStatistic extends BaseModel implements BaseStatistic {\n leaguePlayer: LeaguePlayer;\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: WinLoseType;\n gamesCount: number;\n wonGamesCount: number;\n newbie: boolean;\n rank: number;\n serveHits: number;\n serveFaults: number;\n serveAces: number;\n servePercent: number;\n acePercent: number;\n stuffBlocks: number;\n blockFaults: number;\n blockRebounds: number;\n blockPercent: number;\n attackSpikes: number;\n attackFaults: number;\n attackShots: number;\n attackPercent: number;\n receives: number;\n receiveFaults: number;\n excellentReceives: number;\n receivePercent: number;\n serveReceives: number;\n serveReceiveFaults: number;\n excellentServeReceives: number;\n serveReceivePercent: number;\n points: number;\n faults: number;\n\n get tournamentTeamPoints(): number {\n return this.tournamentTeam && this.tournamentTeam.points;\n }\n\n get totalReceives(): number {\n return this.receives + this.excellentReceives;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { TournamentTeam } from './tournament-team';\nimport { TournamentGroup } from './tournament-group';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team: 'tournamentTeam',\n group: 'group',\n tournament_stage_id: 'tournamentStageId',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n score_sum: 'scoreSum',\n missed_sum: 'missedSum',\n last_games_count: 'lastGamesCount',\n last_games_won: 'lastGamesWon',\n points: 'points',\n final_standing: 'finalStanding',\n received_points: 'receivedPoints',\n },\n relation: {\n tournamentTeam: TournamentTeam,\n group: TournamentGroup\n }\n})\nexport class TournamentStageTeam extends BaseModel {\n id: number;\n tournamentTeam: TournamentTeam;\n group: TournamentGroup;\n tournamentStageId: number;\n gamesCount: number;\n wonGamesCount: number;\n scoreSum: number;\n missedSum: number;\n lastGamesCount: number;\n lastGamesWon: number;\n points: number;\n finalStanding: number;\n receivedPoints: number;\n\n get gamesWonPercent(): number {\n if (!this.gamesCount) {\n return 0;\n }\n return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField, enumField, listField } from './util';\nimport { Game } from './game';\nimport { Tournament } from './tournament';\nimport { League } from './league';\nimport { LeagueNews } from './league-news';\n\nexport enum TournamentEventTypes {\n game_closed = 1,\n media_added,\n news\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n game: 'game',\n news: 'news',\n league: 'league',\n tournaments: 'tournaments',\n event: 'event',\n datetime: 'datetime'\n },\n relation: {\n game: Game,\n news: LeagueNews,\n league: League,\n tournaments: listField(Tournament),\n datetime: DateField,\n event: enumField(TournamentEventTypes)\n }\n})\nexport class TournamentEvent extends BaseModel {\n id: number;\n game: Game;\n news: LeagueNews;\n tournaments: Tournament[];\n event: TournamentEventTypes;\n datetime: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { User } from './user';\nimport { BaseModel, enumField, listField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\n\nexport enum LeagueUserRoles {\n admin = 1,\n moderator,\n game_manager\n}\n\nexport enum LeagueUserPermissions {\n settings = 1,\n users,\n teams,\n media,\n news,\n game_export,\n schedule,\n game_management\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user: 'user',\n role: 'role',\n permissions: 'permissions'\n },\n relation: {\n user: User,\n permissions: listField(enumField(LeagueUserPermissions))\n }\n})\nexport class LeagueUser extends BaseModel {\n id: number;\n user: User;\n _role: LeagueUserRoles;\n permissions: LeagueUserPermissions[];\n\n set role(value: LeagueUserRoles|string) {\n this._role = LeagueUserRoles[value];\n }\n\n get role(): LeagueUserRoles|string {\n return this._role;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n newbie: 'newbie',\n // User statistic\n points: 'points',\n tries: 'tries',\n penalty_tries: 'penaltyTries',\n conversion_goals: 'conversionGoals',\n conversion_misses: 'conversionMisses',\n drawing_ball: 'drawingBall',\n penalty_misses: 'penaltyMisses',\n penalty_goals: 'penaltyGoals',\n drop_goals: 'dropGoals',\n drop_goal_misses: 'dropGoalMisses',\n free_kicks: 'freeKicks',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n offloads: 'offloads',\n tackles: 'tackles',\n outs: 'outs',\n handling_errors: 'handlingErrors',\n carries_other_gainline: 'carriesOtherGainline',\n plus_minus: 'plusMinus',\n game_time: 'gameTime',\n\n // Team statistic\n scrums_won: 'scrumsWon',\n scrum_losses: 'scrumLosses',\n scrums_won_free: 'scrumsWonFree',\n lineouts_success: 'lineoutsSuccess',\n lineouts_steal: 'lineoutsSteal',\n quick_throws: 'quickThrows',\n rucks_won: 'rucksWon',\n ruck_losses: 'ruckLosses',\n mauls_won: 'maulsWon',\n maul_losses: 'maulLosses',\n fouls: 'fouls'\n },\n relation: {\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class RugbyStatistic extends BaseModel {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: boolean;\n gamesCount: number;\n wonGamesCount: number;\n newbie: boolean;\n points: number;\n tries: number;\n penaltyTries: number;\n conversionGoals: number;\n conversionMisses: number;\n drawingBall: number;\n penaltyMisses: number;\n penaltyGoals: number;\n dropGoals: number;\n dropGoalMisses: number;\n freeKicks: number;\n yellowCards: number;\n redCards: number;\n offloads: number;\n tackles: number;\n outs: number;\n handlingErrors: number;\n carriesOtherGainline: number;\n plusMinus: number;\n gameTime: number;\n\n scrumsWon: number;\n scrumLosses: number;\n scrumsWonFree: number;\n lineoutsSuccess: number;\n lineoutsSteal: number;\n quickThrows: number;\n rucksWon: number;\n ruckLosses: number;\n maulsWon: number;\n maulLosses: number;\n fouls: number;\n\n get userMinutes(): string {\n if (!this.gameTime) {\n return '00:00';\n }\n const minutes = Math.floor(this.gameTime / 60);\n const seconds = Math.floor(this.gameTime - minutes * 60);\n return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Tournament } from '../models/tournament';\nimport { map } from 'rxjs/operators';\nimport { TournamentNews } from '../models/tournament-news';\nimport { Game, GameStatuses } from '../models/game';\nimport { GameTimelineStages } from '../models/game-timeline-stages';\nimport { TournamentTeam } from '../models/tournament-team';\nimport { TournamentStage } from '../models/tournament-stage';\nimport { Playoff } from '../models/playoff';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { BasketballStatistic } from '../models/basketball-statistic';\nimport { VolleyballStatistic } from '../models/volleyball-statistic';\nimport { TournamentTeamUser } from '../models/tournament-team-user';\nimport { TournamentStageTeam } from '../models/tournament-stage-team';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { ConfigService } from '../services/config.service';\nimport { HockeyStatistic } from '../models/hockey-statistic';\nimport { FootballStatistic } from '../models/football-statistic';\nimport { LeagueUserPermissions } from '../models/league-user';\nimport { HandballStatistic } from '../models/handball-statistic';\nimport { RugbyStatistic } from '../models/rugby-statistic';\n\nexport interface TournamentGamesFilters {\n tournamentIds?: number[];\n tournamentSeasonId?: number;\n tournamentStageId?: number;\n tournamentTour?: number;\n teamId?: number;\n playoffStage?: number;\n playoffId?: number;\n isPlayoff?: boolean;\n status?: GameStatuses;\n statuses?: GameStatuses[];\n tournamentCourtId?: number;\n leaguePlayerId?: number;\n userId?: number;\n query?: string;\n}\n\nexport type StatisticGroupByTypes = 'team' | 'user' | 'team_user' | 'tournament_team' | 'league_player' | 'tournament_team_user'\n | 'month' | 'win_loses';\n\nexport interface StatisticFilters {\n tournament_id?: number;\n tournament_ids?: number[];\n tournament_season_id?: number;\n tournament_team_id?: number;\n league_player_id?: number;\n tournament_team_user_id?: number;\n team_id?: number;\n team_user_id?: number;\n user_id?: number;\n tournament_stage_id?: number;\n tournament_tour?: number;\n playoff_stage?: number;\n playoff_id?: number;\n is_playoff?: boolean;\n date_from?: string;\n date_to?: string;\n query?: string;\n per_game?: boolean;\n group_by: StatisticGroupByTypes;\n order_by?: string;\n page?: number;\n size?: number;\n}\n\nexport interface StatisticLeadersFilters {\n tournament_id?: number;\n tournament_ids?: number[];\n tournament_season_id?: number;\n tournament_team_id?: number;\n team_id?: number;\n tournament_stage_id?: number;\n tournament_tour?: number;\n playoff_stage?: number;\n playoff_id?: number;\n date_from?: string;\n date_to?: string;\n per_game?: boolean;\n group_by: StatisticGroupByTypes;\n size?: number;\n fields: string[];\n}\n\nexport interface TournamentEventsListFilter {\n event?: TournamentEventTypes;\n search?: string;\n tournamentTour?: number;\n}\n\n@Injectable({providedIn: 'root'})\nexport class TournamentApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getById(tournamentId: number): Promise<Tournament> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/`)\n .pipe(map(result => Tournament.toFront(result)))\n .toPromise();\n }\n\n async getByAlias(leagueId: number, alias: string): Promise<Tournament> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournaments/${alias}/`)\n .pipe(map(result => Tournament.toFront(result)))\n .toPromise();\n }\n\n async getNews(tournamentId: number): Promise<TournamentNews[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/news/`)\n .pipe(map(result => TournamentNews.toFront(result)))\n .toPromise();\n }\n\n async getEvents(tournamentId: number, page: number, size: number, filters?: TournamentEventsListFilter): Promise<PaginatedResponse<TournamentEvent[]>> {\n let params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\n if (filters) {\n if (filters.event) {\n params = params.set('event', TournamentEventTypes[filters.event]);\n }\n if (filters.search) {\n params = params.set('search', filters.search);\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/events/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentEvent.toFront(result.body)\n })))\n .toPromise();\n }\n\n async getTournamentStages(tournamentId: number): Promise<TournamentStage[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/stages/`).pipe(\n map(data => TournamentStage.toFront(data))\n ).toPromise();\n }\n\n async getPlayoff(tournamentId: number): Promise<Playoff[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/playoff/`).pipe(\n map(result => Playoff.toFront(result))\n ).toPromise();\n }\n\n async getPlayoffGames(playoffId: number, playoffNumber?: string): Promise<Game[]> {\n let params = new HttpParams();\n if (playoffNumber) {\n params = params.set('playoff_number', playoffNumber);\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_playoff/${playoffId}/games/`,\n {params}\n ).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getGamesStages(tournamentId: number): Promise<GameTimelineStages> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/games_stages/`)\n .pipe(map(data => GameTimelineStages.toFront(data)))\n .toPromise();\n }\n\n async getGames(tournamentId: number, page: number, size: number, filters: TournamentGamesFilters = {}): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n params = applyGamesFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/games/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: Game.toFront(result.body)\n }))).toPromise();\n }\n\n async getTeams(tournamentId: number): Promise<TournamentTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/teams/`)\n .pipe(map(result => TournamentTeam.toFront(result)))\n .toPromise();\n }\n\n async getStageTeams(tournamentId: number): Promise<TournamentStageTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/stage_teams/`)\n .pipe(map(result => TournamentStageTeam.toFront(result)))\n .toPromise();\n }\n\n async getTeamById(tournamentTeamId: number): Promise<TournamentTeam> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/`)\n .pipe(map(result => TournamentTeam.toFront(result)))\n .toPromise();\n }\n\n async getUserById(userId: number): Promise<TournamentTeamUser> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${userId}/`)\n .pipe(map(result => TournamentTeamUser.toFront(result)))\n .toPromise();\n }\n\n async getUserGames(tournamentUserId: number): Promise<Game[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${tournamentUserId}/games/`)\n .pipe(map(result => Game.toFront(result)))\n .toPromise();\n }\n\n async getBasketballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: BasketballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/basketball_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = BasketballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getVolleyballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: VolleyballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/volleyball_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = VolleyballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getHockeyStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: HockeyStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/hockey_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = HockeyStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getFootballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: FootballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/football_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = FootballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getHandballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: HandballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/handball_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = HandballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getBasketballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<BasketballStatistic[]>> {\n let params = new HttpParams();\n params = applyStatisticFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/basketball_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: BasketballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getVolleyballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<VolleyballStatistic[]>> {\n let params = new HttpParams();\n params = applyStatisticFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/volleyball_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: VolleyballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getHockeyStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<HockeyStatistic[]>> {\n let params = new HttpParams();\n params = applyStatisticFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/hockey_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: HockeyStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getFootballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<FootballStatistic[]>> {\n let params = new HttpParams();\n params = applyStatisticFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/football_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: FootballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getHandballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<HandballStatistic[]>> {\n let params = new HttpParams();\n params = applyStatisticFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/handball_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: HandballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getRugbyStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<RugbyStatistic[]>> {\n let params = new HttpParams();\n params = applyStatisticFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/rugby_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: RugbyStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getTournamentTeamUsers(tournamentTeamId: number): Promise<TournamentTeamUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/users/`).pipe(\n map(result => TournamentTeamUser.toFront(result))\n ).toPromise();\n }\n\n async myPermission(tournamentId: number): Promise<LeagueUserPermissions[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/permission/`).pipe(\n map((data: any) => (data.permissions || []).map(item => LeagueUserPermissions[item]))\n ).toPromise();\n }\n\n async getTournamentTeamTournaments(tournamentTeamId: number): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/tournaments/`).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n async getTournamentUserTournaments(tournamentTeamUserId: number): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${tournamentTeamUserId}/tournaments/`).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n}\n\nexport function applyGamesFilters(filters: TournamentGamesFilters, params: HttpParams): HttpParams {\n if (filters.tournamentIds) {\n params = params.set('tournament_ids', filters.tournamentIds.join(','));\n }\n if (filters.tournamentStageId) {\n params = params.set('tournament_stage_id', filters.tournamentStageId.toString());\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n if (filters.playoffStage) {\n params = params.set('playoff_stage', filters.playoffStage.toString());\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n if (filters.status) {\n params = params.set('status', GameStatuses[filters.status]);\n }\n if (filters.statuses) {\n const statuses = filters.statuses.map(i => GameStatuses[i]);\n params = params.set('statuses', statuses.join(','));\n }\n if (filters.tournamentCourtId) {\n params = params.set('tournament_court_id', filters.tournamentCourtId.toString());\n }\n if (filters.leaguePlayerId) {\n params = params.set('league_player_id', filters.leaguePlayerId.toString());\n }\n if (filters.userId) {\n params = params.set('user_id', filters.userId.toString());\n }\n if (filters.query) {\n params = params.set('query', filters.query);\n }\n if (filters.isPlayoff !== undefined && filters.isPlayoff !== null) {\n params = params.set('is_playoff', filters.isPlayoff ? '1' : '0');\n }\n return params;\n}\n\nexport function applyStatisticFilters(filters: StatisticFilters, params: HttpParams): HttpParams {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n\n if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\n }\n\n if (filters.is_playoff !== undefined && filters.is_playoff !== null) {\n params = params.set('is_playoff', filters.is_playoff ? '1' : '0');\n }\n\n return params;\n}\n\nexport function applyStatisticLeadersFilters(filters: StatisticLeadersFilters, params: HttpParams): HttpParams {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n\n if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\n }\n if (filters.fields) {\n params = params.set('fields', filters.fields.join(','));\n }\n return params;\n}\n","import {ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField} from './util';\nimport {File} from './file';\n\nexport enum BannerLocation {\n slider = 'slider',\n central = 'central',\n media = 'media',\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n picture: 'picture',\n link: 'link',\n sort: 'sort',\n location: 'location',\n },\n relation: {\n picture: File,\n location: enumField(BannerLocation),\n }\n})\nexport class LeagueBanner extends BaseModel {\n id: number;\n title: string;\n picture: File;\n link: string;\n sort: number;\n location: BannerLocation;\n\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(data: any): any {\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n picture: 'picture',\n link: 'link',\n sort: 'sort',\n },\n relation: {\n picture: File\n }\n})\nexport class LeaguePartner extends BaseModel {\n id: number;\n title: string;\n picture: File;\n link: string;\n sort: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { User } from './user';\n\nexport enum PollStatuses {\n open = 1,\n closed,\n archived,\n}\n\n@ModelInstance({\n mappingFields: {\n uuid: 'uuid',\n name: 'name'\n }\n})\nexport class PollVariant extends BaseModel {\n uuid: string;\n name: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n answer_uuid: 'answerUuid',\n user: 'user',\n poll_id: 'pollId',\n },\n relation: {\n user: User\n }\n})\nexport class PollAnswer extends BaseModel {\n id: number;\n answerUuid: string;\n user: User;\n pollId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n active: 'active',\n status: 'status',\n team_id: 'teamId',\n name: 'name',\n description: 'description',\n variants: 'variants',\n author: 'author',\n answers: 'answers',\n multiple_answer: 'multipleAnswer',\n anonymous: 'anonymous',\n created_at: 'createdAt'\n },\n relation: {\n status: enumField(PollStatuses),\n variants: PollVariant,\n author: User,\n answers: PollAnswer,\n createdAt: DateTimeField,\n }\n})\nexport class Poll extends BaseModel {\n id: number;\n active: boolean;\n teamId: number;\n status: PollStatuses;\n name: string;\n description: string;\n _variants: PollVariant[];\n author: User;\n _answers: PollAnswer[];\n multipleAnswer: boolean;\n anonymous: boolean;\n createdAt: Date;\n variantsWithAnswers: {variant: PollVariant, percent: number}[] = [];\n\n set variants(value: PollVariant[]) {\n this._variants = value || [];\n if (this._answers) {\n this.calculateAnswersPercentage();\n }\n }\n get variants(): PollVariant[] {\n return this._variants;\n }\n\n set answers(value: PollAnswer[]) {\n this._answers = value || [];\n if (this._variants) {\n this.calculateAnswersPercentage();\n }\n }\n get answers(): PollAnswer[] {\n return this._answers;\n }\n\n calculateAnswersPercentage() {\n if (!this._answers.length) {\n return;\n }\n\n const variants = this._variants.map(v => v.uuid);\n const answersByVariant = this._answers.reduce((acc, item) => {\n if (variants.indexOf(item.answerUuid) < 0) {\n return acc;\n }\n if (!acc[item.answerUuid]) {\n acc[item.answerUuid] = 0;\n }\n acc[item.answerUuid]++;\n return acc;\n }, {});\n this.variantsWithAnswers = this._variants.map(item => ({\n variant: item,\n percent: answersByVariant[item.uuid] ? Math.round(100 * answersByVariant[item.uuid] / this._answers.length) : 0\n }))\n .sort((a, b) => a.percent > b.percent ? -1 : 1);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n file: 'file',\n },\n relation: {\n file: File,\n }\n})\nexport class LeagueDocument extends BaseModel {\n id: number;\n file: File;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { League } from '../models/league';\nimport { map } from 'rxjs/operators';\nimport { Tournament, TournamentStatuses } from '../models/tournament';\nimport { ConfigService } from '../services/config.service';\nimport { applyGamesFilters, TournamentEventsListFilter, TournamentGamesFilters } from './tournament-api';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { GameMediaFilters } from './media-api';\nimport { TournamentSeason } from '../models/tournament-season';\nimport { Game, GameStatuses } from '../models/game';\nimport { LeaguePartner } from '../models/league-partner';\nimport { LeagueCourt } from '../models/league-court';\nimport { BannerLocation, LeagueBanner } from '../models/league-banner';\nimport { LeagueDocument } from '../models/league-document';\n\nexport interface TournamentListFilters {\n statuses: TournamentStatuses[];\n}\n\n@Injectable({providedIn: 'root'})\nexport class LeagueApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\n }\n\n async getByAlias(alias: string): Promise<League> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${alias}/`).pipe(\n map(result => League.toFront(result))\n ).toPromise();\n }\n\n async getByDomain(domain: string): Promise<League> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/by_domain/${domain}/`).pipe(\n map(result => League.toFront(result))\n ).toPromise();\n }\n\n async getTournaments(leagueId: number, filters?: TournamentListFilters): Promise<Tournament[]> {\n let params = new HttpParams();\n if (filters) {\n if (filters.statuses) {\n params = params.set('statuses', filters.statuses.map(s => TournamentStatuses[s]).join(','));\n }\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournaments/`, {params}).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n async getEvents(leagueId: number, page: number, size: number, filters?: TournamentEventsListFilter): Promise<PaginatedResponse<TournamentEvent[]>> {\n let params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\n if (filters) {\n if (filters.event) {\n params = params.set('event', TournamentEventTypes[filters.event]);\n }\n if (filters.search) {\n params = params.set('search', filters.search);\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/events/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentEvent.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getTournamentSeasons(leagueId: number): Promise<TournamentSeason[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournament_seasons/`).pipe(\n map(result => TournamentSeason.toFront(result))\n ).toPromise();\n }\n\n async getGames(leagueId: number, page: number, size: number, filters: TournamentGamesFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n params = applyGamesFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/games/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: Game.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getSeasons(leagueId: number, page = 1, size = 20, notClosed?: boolean, include?: string[]): Promise<PaginatedResponse<TournamentSeason[]>> {\n const params = new HttpParams()\n .set('page', page.toString())\n .set('size', size.toString())\n .set('not_closed', notClosed ? '1' : '')\n .set('include', include ? include.join(',') : '');\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournament_seasons/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentSeason.toFront(result.body)\n })))\n .toPromise();\n }\n\n async getPartners(leagueId: number): Promise<LeaguePartner[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/partners/`).pipe(\n map(result => LeaguePartner.toFront(result))\n ).toPromise();\n }\n\n async getBanners(leagueId: number, location?: BannerLocation): Promise<LeagueBanner[]> {\n const params = location ? new HttpParams().set('location', location) : new HttpParams();\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/banners/`, {params}).pipe(\n map(result => LeagueBanner.toFront(result))\n ).toPromise();\n }\n\n async getCourts(leagueId: number): Promise<LeagueCourt[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/courts/`).pipe(\n map(result => LeagueCourt.toFront(result))\n ).toPromise();\n }\n\n async getGraphicSettings(leagueId: number): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/graphic_settings/`)\n .toPromise();\n }\n\n async getDocuments(leagueId: number): Promise<LeagueDocument[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/documents/`).pipe(\n map(result => LeagueDocument.toFront(result))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { LeagueNews, LeagueNewsType } from '../models/league-news';\nimport { map } from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class LeagueNewsApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\n }\n\n async getLeagueNewsList(leagueId: number, page: number, size: number, type: LeagueNewsType = LeagueNewsType.text): Promise<PaginatedResponse<LeagueNews[]>> {\n const params = new HttpParams().set('page', page.toString())\n .set('size', size.toString())\n .set('type', LeagueNewsType[type]);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/news/`, {params, observe: 'response'})\n .pipe(map(response => ({\n total: +response.headers.get('X-Page-Count'),\n data: LeagueNews.toFront(response.body)\n })))\n .toPromise();\n }\n\n async getMainLeagueNews(leagueId: number): Promise<LeagueNews> {\n return this.httpClient.get<any[]>(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/news/?is_main=true`)\n .pipe(map(response => response && response.length > 0 ? LeagueNews.toFront(response[0]) : null))\n .toPromise();\n }\n\n async getMainLeagueNewsList(leagueId: number): Promise<LeagueNews[]> {\n return this.httpClient.get<any[]>(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/news/?is_main=true`)\n .pipe(map(response => LeagueNews.toFront(response)))\n .toPromise();\n }\n\n async getNewsById(newsId: number): Promise<LeagueNews> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league_news/${newsId}/`)\n .pipe(map(response => LeagueNews.toFront(response)))\n .toPromise();\n }\n\n async getTournamentNewsList(tournamentId: number): Promise<PaginatedResponse<LeagueNews[]>> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/news/`, {observe: 'response'})\n .pipe(map(response => ({\n total: +response.headers.get('X-Page-Count'),\n data: LeagueNews.toFront(response.body)\n })))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { LeaguePlayer } from '../models/league-player';\nimport { map } from 'rxjs/operators';\nimport { TournamentTeamUser } from '../models/tournament-team-user';\n\n@Injectable({providedIn: 'root'})\nexport class LeaguePlayerApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n getById(leaguePlayerId: number): Promise<LeaguePlayer> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league_player/${leaguePlayerId}/`).pipe(\n map(item => LeaguePlayer.toFront(item))\n ).toPromise();\n }\n\n getTournamentUsers(leaguePlayerId: number, seasonId?: number): Promise<TournamentTeamUser[]> {\n let params = new HttpParams();\n if (seasonId) {\n params = params.set('season_id', seasonId.toString());\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league_player/${leaguePlayerId}/tournament_users/`, {params}).pipe(\n map(item => TournamentTeamUser.toFront(item))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { MediaItem } from '../models/media-item';\nimport { Game, GameStatuses } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { ConfigService } from '../services/config.service';\nimport { applyGamesFilters, TournamentGamesFilters } from './tournament-api';\n\nexport interface GameMediaFilters extends TournamentGamesFilters {\n mediaCount?: number;\n}\n\nexport interface MediaFilters {\n mediaType?: 'photo' | 'video' | 'live_video';\n sort?: string;\n teamId?: number;\n}\n\n@Injectable({providedIn: 'root'})\nexport class MediaApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getMedia(mediaId: number): Promise<MediaItem> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/media/${mediaId}/`).pipe(\n map(result => MediaItem.toFront(result))\n ).toPromise();\n }\n\n async getTournamentGameMedia(tournamentId: number, page: number, size: number, filters?: GameMediaFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n params = applyGameMediaFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/game_media/`, {observe: 'response', params}).pipe(\n map(response => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n })\n ).toPromise();\n }\n\n async getLeagueGameMedia(leagueId: number, page: number, size: number, filters?: GameMediaFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n params = applyGameMediaFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/game_media/`, {observe: 'response', params}).pipe(\n map(response => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n })\n ).toPromise();\n }\n\n async getLeagueMedia(leagueId: number, page: number, size: number, filters: MediaFilters = {}): Promise<PaginatedResponse<MediaItem[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n if (filters.mediaType) {\n params = params.set('media_type', filters.mediaType);\n }\n if (filters.sort) {\n params = params.set('sort', filters.sort);\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/media/`, {params, observe: 'response'})\n .pipe(map(response => ({\n total: +response.headers.get('X-Page-Count'),\n data: MediaItem.toFront(response.body)\n }))).toPromise();\n }\n\n async getGameMediaById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/game_media/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getGameMedia(gameId: number): Promise<MediaItem[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/media/?size=1000`).pipe(\n map(result => MediaItem.toFront(result))\n ).toPromise();\n }\n\n async createZip(mediaIds: number[]): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/media/zip/`, mediaIds, { responseType: 'blob' })\n .toPromise();\n }\n\n async downloadMedia(mediaId: number): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/media/${mediaId}/download/`,{responseType: 'blob'})\n .toPromise();\n }\n}\n\nexport function applyGameMediaFilters(filters: GameMediaFilters, params: HttpParams, ): HttpParams {\n if (filters) {\n params = applyGamesFilters(filters, params);\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n if (filters.tournamentStageId) {\n params = params.set('tournament_stage_id', filters.tournamentStageId.toString());\n }\n if (filters.playoffId) {\n params = params.set('playoff_id', filters.playoffId.toString());\n }\n if (filters.playoffStage) {\n params = params.set('playoff_stage', filters.playoffStage.toString());\n }\n if (filters.status) {\n params = params.set('status', GameStatuses[filters.status]);\n }\n if (filters.mediaCount) {\n params = params.set('media_count', filters.mediaCount.toString());\n }\n }\n return params;\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { TeamUser } from './team-user';\nimport { Game } from './game';\n\nexport enum GameInviteStatus {\n accepted = 1,\n declined,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_user: 'teamUser',\n game_id: 'gameId',\n game: 'game',\n status: 'status',\n },\n relation: {\n game: Game,\n teamUser: TeamUser,\n status: enumField(GameInviteStatus),\n }\n})\nexport class GameInvite extends BaseModel {\n id: number;\n teamUser: TeamUser;\n gameId: number;\n game: Game;\n status: GameInviteStatus;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { User } from './user';\nimport { Team } from './team';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n user: 'user',\n team: 'team',\n team_id: 'teamId',\n user_accept: 'userAccept',\n team_accept: 'teamAccept',\n users_count: 'usersCount',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n score_sum: 'scoreSum',\n created_at: 'createdAt',\n updated_at: 'updatedAt',\n },\n relation: {\n user: User,\n team: Team,\n createdAt: DateTimeField,\n updateAt: DateTimeField,\n }\n})\nexport class TeamInvite extends BaseModel {\n id: number;\n userId: number;\n user: User;\n teamId: number;\n team: Team;\n userAccept: boolean;\n teamAccept: boolean;\n usersCount: number;\n gamesCount: number;\n wonGamesCount: number;\n scoreSum: number;\n createdAt: Date;\n updatedAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","export enum TeamEventTypes {\n training = 1,\n other = 2,\n}\n","import { enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum TeamEventInviteStatuses {\n accepted = 1,\n declined = 2\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_event_id: 'teamEventId',\n team_user_id: 'teamUserId',\n status: 'status',\n },\n relation: {\n status: enumField(TeamEventInviteStatuses)\n }\n})\nexport class TeamEventInvite {\n id: number;\n teamEventId: number;\n teamUserId: number;\n status: TeamEventInviteStatuses;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { TeamEventTypes } from '../models/team-event-type';\n\nexport const TeamEventTypeLocalization = {\n [TeamEventTypes.training]: 'ТÑениÑовка',\n [TeamEventTypes.other]: 'ÐÑÑгое'\n};\n","import { BaseModel, enumField, ModelInstance, DateTimeField, ToBackHook, ToFrontHook } from './util';\nimport { Team } from './team';\nimport { TeamEventTypeLocalization } from '../localization/team-event-type';\nimport { TeamEventTypes } from './team-event-type';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n team: 'team',\n event_type: 'eventType',\n event_custom_name: 'eventCustomName',\n description: 'description',\n datetime: 'datetime',\n location: 'location',\n },\n relation: {\n eventType: enumField(TeamEventTypes),\n team: Team,\n datetime: DateTimeField,\n }\n})\nexport class TeamEvent extends BaseModel {\n id: number;\n teamId: number;\n team: Team;\n eventType: TeamEventTypes;\n eventCustomName: string;\n description: string;\n datetime: Date;\n location: string;\n\n get name(): string {\n if (this.eventType === TeamEventTypes.other) {\n return this.eventCustomName;\n }\n return TeamEventTypeLocalization[this.eventType];\n }\n\n get isClosed(): boolean {\n return this.datetime.getTime() < new Date().getTime();\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { Team } from './team';\nimport { Poll } from './poll';\nimport { Game } from './game';\nimport { TeamInvite } from './team-invite';\nimport { TeamUser } from './team-user';\nimport { GameInvite } from './game-invite';\nimport { TeamEvent } from './team-event';\nimport { TeamEventInvite } from './team-event-invite';\nimport { Tournament } from './tournament';\nimport { TournamentInvite } from './tournament-invite';\nimport { TournamentTeam } from './tournament-team';\nimport { User } from './user';\n\nexport enum NotificationType {\n team_updated = 1,\n team_invited,\n team_join_request,\n team_join_declined_by_team,\n team_join_declined_by_user,\n team_join_canceled_by_team,\n team_join_canceled_by_user,\n team_joined_for_user,\n team_joined_for_team,\n team_user_role_changed_for_user,\n team_user_role_changed_for_team,\n team_user_number_changed,\n team_user_deleted_for_user,\n team_user_deleted_for_team,\n team_user_left,\n\n game_updated,\n game_invited,\n game_invite_accepted,\n game_invite_declined,\n game_remind,\n game_won,\n game_losing,\n game_tech_defeat,\n game_tech_victory,\n\n poll_created,\n poll_closed,\n\n team_event_invited,\n team_event_accepted,\n team_event_declined,\n team_event_remind,\n\n tournament_invited,\n tournament_joined,\n tournament_join_declined,\n tournament_join_canceled,\n tournament_user_invited,\n tournament_user_accepted_for_team,\n tournament_user_accepted_for_user,\n tournament_user_added,\n tournament_user_declined_for_team,\n tournament_user_declined_for_user,\n tournament_user_invite_deleted,\n tournament_user_deleted,\n tournament_user_disqualified_for_team,\n tournament_user_disqualified_for_user,\n tournament_user_disqualification_updated_for_team,\n tournament_user_disqualification_updated_for_user,\n tournament_team_deleted,\n\n org_tournament_invite_created,\n org_tournament_invite_declined,\n org_tournament_invite_deleted,\n org_tournament_invite_changed,\n org_tournament_user_deleted,\n org_tournament_user_invited,\n org_tournament_user_has_changes,\n org_tournament_team_leave,\n}\n\nexport enum NotificationServiceEnum {\n public = 1,\n org\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n event_type: 'event',\n data: 'data',\n initiator: 'initiator',\n team: 'team',\n team_invite: 'teamInvite',\n team_user: 'teamUser',\n poll: 'poll',\n game: 'game',\n game_invite: 'gameInvite',\n team_event: 'teamEvent',\n team_event_invite: 'teamEventInvite',\n tournament: 'tournament',\n tournament_invite: 'tournamentInvite',\n tournament_team: 'tournamentTeam',\n viewed: 'viewed',\n protected: 'protected',\n service: 'service',\n created_at: 'createdAt',\n },\n relation: {\n event: enumField(NotificationType),\n initiator: User,\n team: Team,\n teamInvite: TeamInvite,\n teamUser: TeamUser,\n poll: Poll,\n game: Game,\n gameInvite: GameInvite,\n teamEvent: TeamEvent,\n teamEventInvite: TeamEventInvite,\n tournament: Tournament,\n tournamentInvite: TournamentInvite,\n tournamentTeam: TournamentTeam,\n service: enumField(NotificationServiceEnum),\n createdAt: DateTimeField,\n }\n})\nexport class Notification extends BaseModel {\n id: number;\n event: NotificationType;\n data: any;\n initiator: User;\n team: Team;\n teamInvite: TeamInvite;\n teamUser: TeamUser;\n poll: Poll;\n game: Game;\n gameInvite: GameInvite;\n teamEvent: TeamEvent;\n teamEventInvite: TeamEventInvite;\n tournament: Tournament;\n tournamentInvite: TournamentInvite;\n tournamentTeam: TournamentTeam;\n viewed: boolean;\n protected: boolean;\n service: NotificationServiceEnum;\n createdAt: Date;\n\n get important(): boolean {\n return true;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\nimport { TeamUser } from './team-user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team_invite_id: 'tournamentTeamInviteId',\n tournament_team_id: 'tournamentTeamId',\n team_user: 'teamUser',\n accepted: 'accepted'\n },\n relation: {\n teamUser: TeamUser\n }\n})\nexport class TournamentTeamUserInvite extends BaseModel {\n id: number;\n tournamentTeamInviteId: number;\n tournamentTeamId: number;\n teamUser: TeamUser;\n accepted: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\nimport { Tournament } from './tournament';\nimport { TournamentTeamUserInvite } from './tournament-team-user-invite';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team: 'team',\n tournament: 'tournament',\n team_accept: 'teamAccept',\n organization_accept: 'organizationAccept',\n user_invites_count: 'userInvitesCount',\n user_invites: 'userInvites',\n notifications_count: 'notificationsCount',\n },\n relation: {\n team: Team,\n tournament: Tournament,\n userInvites: TournamentTeamUserInvite,\n }\n})\nexport class TournamentInvite extends BaseModel {\n id: number;\n team: Team;\n tournament: Tournament;\n teamAccept: boolean;\n organizationAccept: boolean;\n userInvitesCount: number;\n userInvites: TournamentTeamUserInvite[];\n notificationsCount: number;\n\n get isOpen(): boolean {\n return (this.teamAccept === null || this.organizationAccept === null) && this.teamAccept !== false && this.organizationAccept !== false;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\n\nexport enum NotificationAllowTypes {\n all = 1,\n important,\n none\n}\n\n@ModelInstance({\n mappingFields: {\n user_id: 'userId',\n popup: 'popup',\n sound: 'sound',\n browser: 'browser',\n email: 'email'\n },\n relation: {\n sound: enumField(NotificationAllowTypes),\n browser: enumField(NotificationAllowTypes),\n }\n})\nexport class NotificationSettings extends BaseModel {\n userId: number;\n popup: boolean;\n sound: NotificationAllowTypes;\n browser: NotificationAllowTypes;\n email: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { GameLogBase } from './game-log-base';\nimport { GameUser } from './game-user';\n\nexport enum RugbyGameLogTypes {\n enter_game = 1,\n exit_game,\n try,\n penalty_try,\n conversion_goal,\n conversion_miss,\n drawing_ball,\n penalty_miss,\n penalty_goal,\n drop_goal,\n drop_goal_miss,\n free_kick,\n yellow_card,\n red_card,\n offload,\n tackle,\n out,\n handling_error,\n carries_other_gainline,\n\n // team actions\n timeout,\n scrum_won,\n scrum_lose,\n scrum_won_free,\n lineout_success,\n lineout_loss,\n lineout_steal,\n quick_throw,\n ruck_won,\n ruck_lose,\n maul_won,\n maul_lose,\n team_foul,\n}\n\nexport const RUGBY_GAME_LOG_TYPE_POINTS = {\n [RugbyGameLogTypes.penalty_try]: 7,\n [RugbyGameLogTypes.try]: 5,\n [RugbyGameLogTypes.conversion_goal]: 2,\n [RugbyGameLogTypes.penalty_goal]: 3,\n [RugbyGameLogTypes.drop_goal]: 3\n};\n\nexport const RUGBY_TEAM_LOG_TYPES = [\n RugbyGameLogTypes.timeout, RugbyGameLogTypes.scrum_won, RugbyGameLogTypes.scrum_lose, RugbyGameLogTypes.scrum_won_free,\n RugbyGameLogTypes.lineout_success, RugbyGameLogTypes.lineout_loss, RugbyGameLogTypes.lineout_steal, RugbyGameLogTypes.quick_throw,\n RugbyGameLogTypes.ruck_won, RugbyGameLogTypes.ruck_lose, RugbyGameLogTypes.maul_won, RugbyGameLogTypes.maul_lose,\n RugbyGameLogTypes.team_foul,\n];\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n penalty_type: 'penaltyType',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(RugbyGameLogTypes)\n }\n})\nexport class RugbyGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: RugbyGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n isGoalie: boolean;\n\n compare(model: RugbyGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n isScoreType(): boolean {\n return RUGBY_GAME_LOG_TYPE_POINTS[this.logType] !== undefined;\n }\n\n scorePoints(): number {\n return RUGBY_GAME_LOG_TYPE_POINTS[this.logType];\n }\n\n isAfter(log: RugbyGameLog): boolean {\n if (this.time === log.time && this.period === log.period) {\n return this.id > log.id;\n }\n if (this.period === log.period) {\n return this.time > log.time;\n }\n return this.period > log.period;\n }\n\n isFoulType(): boolean {\n return [RugbyGameLogTypes.team_foul, RugbyGameLogTypes.yellow_card, RugbyGameLogTypes.red_card].indexOf(this.logType) > -1;\n }\n\n isTeamType(): boolean {\n return RUGBY_TEAM_LOG_TYPES.includes(this.logType);\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { Notification } from '../models/notification';\nimport { NotificationSettings } from '../models/notification-settings';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { ConfigService } from '../services/config.service';\n\nexport interface NotificationFilters {\n protected?: boolean;\n not_viewed?: boolean;\n important?: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class NotificationBaseApi {\n protected apiUrl: string;\n\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getCount(): Promise<number> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/count/`)\n .pipe(map(data => +data))\n .toPromise();\n }\n\n async getList(page: number, size: number, filters: NotificationFilters = {}): Promise<PaginatedResponse<Notification[]>> {\n let params = new HttpParams()\n .set('page', page.toString())\n .set('size', size.toString());\n for (const key of Object.keys(filters)) {\n params = params.set(key, filters[key]);\n }\n\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/`, {params, observe: 'response'})\n .pipe(\n map(response => {\n const data: Notification[] = Notification.toFront(response.body);\n return {\n total: +response.headers.get('x-page-count'),\n data\n };\n }),\n ).toPromise();\n }\n\n async markViewed(notificationId: number, viewed: boolean): Promise<Notification> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/${notificationId}/viewed/`, {viewed})\n .pipe(map(data => Notification.toFront(data)))\n .toPromise();\n }\n\n async markAllViewed(): Promise<Notification[]> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/viewed/`, {})\n .pipe(map(data => Notification.toFront(data)))\n .toPromise();\n }\n\n async getNotificationSettings(): Promise<NotificationSettings> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}${this.apiUrl}/notification_settings/`)\n .pipe(map(data => NotificationSettings.toFront(data)))\n .toPromise();\n }\n\n async updateNotificationSettings(data: NotificationSettings): Promise<NotificationSettings> {\n return this.httpClient.post(\n `${this.configService.get('apiUrl')}${this.apiUrl}/notification_settings/`,\n NotificationSettings.toBack(data)\n )\n .pipe(map(result => NotificationSettings.toFront(result)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NotificationBaseApi } from './notification-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class NotificationApi extends NotificationBaseApi {\n protected apiUrl = '/api/v1';\n}\n","import { Injectable } from '@angular/core';\nimport { NotificationBaseApi } from './notification-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class OrgNotificationApi extends NotificationBaseApi {\n protected apiUrl = '/org/api/v1';\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\nimport { City } from '../models/city';\nimport { Sport } from '../models/sport';\n\n@Injectable({providedIn: 'root'})\nexport class ReferenceApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getCities(): Promise<City[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/reference/cities/`)\n .pipe(\n map(data => City.toFront(data))\n ).toPromise();\n }\n\n async getSports(): Promise<Sport[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/sport/`)\n .pipe(\n map(data => Sport.toFront(data))\n ).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { RugbyStatistic } from './rugby-statistic';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: RugbyStatistic,\n competitorTeam: RugbyStatistic\n }\n})\nexport class RugbyGameTeamStatistic extends BaseModel {\n team: RugbyStatistic;\n competitorTeam: RugbyStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n updated_at: 'updatedAt',\n points: 'points',\n tries: 'tries',\n penalty_tries: 'penaltyTries',\n conversion_goals: 'conversionGoals',\n conversion_misses: 'conversionMisses',\n drawing_ball: 'drawingBall',\n penalty_misses: 'penaltyMisses',\n penalty_goals: 'penaltyGoals',\n drop_goals: 'dropGoals',\n drop_goal_misses: 'dropGoalMisses',\n free_kicks: 'freeKicks',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n offloads: 'offloads',\n tackles: 'tackles',\n outs: 'outs',\n handling_errors: 'handlingErrors',\n carries_other_gainline: 'carriesOtherGainline',\n game_time: 'gameTime',\n plus_minus: 'plusMinus'\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class RugbyGameStatistic extends BaseModel {\n gameUserId: number;\n points: number;\n tries: number;\n penaltyTries: number;\n conversionGoals: number;\n conversionMisses: number;\n drawingBall: number;\n penaltyMisses: number;\n penaltyGoals: number;\n dropGoals: number;\n dropGoalMisses: number;\n freeKicks: number;\n yellowCards: number;\n redCards: number;\n offloads: number;\n tackles: number;\n outs: number;\n handlingErrors: number;\n carriesOtherGainline: number;\n gameTime: number;\n plusMinus: number;\n updatedAt: Date;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook, enumField } from './util';\n\nexport enum TeamPermissionTypes {\n for_all = 1,\n for_users,\n for_team\n}\n\n@ModelInstance({\n mappingFields: {\n players: 'players',\n games: 'games',\n statistic: 'statistic',\n polls: 'polls',\n events: 'events'\n },\n relation: {\n players: enumField(TeamPermissionTypes),\n games: enumField(TeamPermissionTypes),\n statistic: enumField(TeamPermissionTypes),\n polls: enumField(TeamPermissionTypes),\n events: enumField(TeamPermissionTypes)\n }\n})\nexport class TeamPermission extends BaseModel {\n players: TeamPermissionTypes;\n games: TeamPermissionTypes;\n statistic: TeamPermissionTypes;\n polls: TeamPermissionTypes;\n events: TeamPermissionTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { BasketballGameTeamStatistic } from '../models/basketball-game-team-statistic';\nimport { BasketballGameStatistic } from '../models/basketball-game-statistic';\nimport { BasketballGameLog } from '../models/basketball-game-log';\nimport { GameBaseApi } from './game-base-api';\nimport { RugbyGameTeamStatistic } from '../models/rugby-game-team-statistic';\nimport { RugbyGameStatistic } from '../models/rugby-game-statistic';\nimport { RugbyGameLog } from '../models/rugby-game-log';\n\n@Injectable({providedIn: 'root'})\nexport class RugbyGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_rugby_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<RugbyGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_rugby_game/${gameId}/team_statistic/`).pipe(\n map(result => RugbyGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<RugbyGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_rugby_game/${gameId}/user_statistic/`).pipe(\n map(result => RugbyGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<RugbyGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_rugby_game/${gameId}/logs/`).pipe(\n map(result => RugbyGameLog.toFront(result))\n ).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n email: 'email',\n first_name: 'firstName',\n last_name: 'lastName',\n },\n})\nexport class TeamInviteExternal extends BaseModel {\n id: number;\n teamId: number;\n email: string;\n firstName: string;\n lastName: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\n\nexport enum UserPermissionTypes {\n denied = 1,\n for_all,\n for_users,\n for_team\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n personal_data: 'personalData',\n games: 'games',\n teams: 'teams',\n statistic: 'statistic'\n },\n relation: {\n personalData: enumField(UserPermissionTypes),\n games: enumField(UserPermissionTypes),\n teams: enumField(UserPermissionTypes),\n statistic: enumField(UserPermissionTypes)\n }\n})\nexport class UserPermission extends BaseModel {\n id: number;\n personalData: UserPermissionTypes;\n games: UserPermissionTypes;\n teams: UserPermissionTypes;\n statistic: UserPermissionTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { TeamUserRole } from './team-user';\n\n@ModelInstance({\n mappingFields: {\n can_edit: 'canEdit',\n can_view_users: 'canViewUsers',\n can_manage_permission: 'canManagePermission',\n can_change_owner: 'canChangeOwner',\n can_delete: 'canDelete',\n can_manage_invites: 'canManageInvites',\n can_view_invites: 'canViewInvites',\n can_manage_polls: 'canManagePolls',\n can_view_polls: 'canViewPolls',\n can_answer_poll: 'canAnswerPoll',\n can_manage_games: 'canManageGames',\n can_view_games: 'canViewGames',\n can_view_statistic: 'canViewStatistic',\n can_promote_users: 'canPromoteUsers',\n can_edit_users: 'canEditUsers',\n can_delete_users: 'canDeleteUsers',\n can_view_events: 'canViewEvents',\n can_manage_events: 'canManageEvents',\n can_view_tournaments: 'canViewTournaments',\n can_manage_tournaments: 'canManageTournaments',\n role: 'role'\n },\n relation: {\n role: enumField(TeamUserRole)\n }\n})\nexport class TeamAccess extends BaseModel {\n canEdit: boolean;\n canViewUsers: boolean;\n canManagePermission: boolean;\n canChangeOwner: boolean;\n canDelete: boolean;\n canManageInvites: boolean;\n canViewInvites: boolean;\n canManagePolls: boolean;\n canViewPolls: boolean;\n canAnswerPoll: boolean;\n canManageGames: boolean;\n canViewGames: boolean;\n canViewStatistic: boolean;\n canPromoteUsers: boolean;\n canEditUsers: boolean;\n canDeleteUsers: boolean;\n canViewEvents: boolean;\n canManageEvents: boolean;\n canViewTournaments: boolean;\n canManageTournaments: boolean;\n role: TeamUserRole;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';\nimport { Team } from '../models/team';\nimport { map } from 'rxjs/operators';\nimport { TeamUser, TeamUserRole } from '../models/team-user';\nimport { User } from '../models/user';\nimport { TeamInvite } from '../models/team-invite';\nimport { TeamInviteExternal } from '../models/team-invite-external';\nimport { Poll } from '../models/poll';\nimport { VolleyballStatistic } from '../models/volleyball-statistic';\nimport { Game } from '../models/game';\nimport { TeamEvent } from '../models/team-event';\nimport { Tournament } from '../models/tournament';\nimport { TournamentTeam } from '../models/tournament-team';\nimport { TournamentInvite } from '../models/tournament-invite';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { BasketballStatistic } from '../models/basketball-statistic';\nimport { TeamPermission } from '../models/team-permission';\nimport { TeamAccess } from '../models/team-access';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TeamApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async search(query: string, sportId?: number): Promise<Team[]> {\n let params = (new HttpParams()).set('search', query);\n if (sportId) {\n params = params.set('sport', sportId.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/`, {params})\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async create(team: Team): Promise<Team> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/`, Team.toBack(team))\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getById(teamId: number): Promise<Team> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/`)\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getTeamAccess(teamId: number): Promise<TeamAccess> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/access/`)\n .pipe(map(data => TeamAccess.toFront(data)))\n .toPromise();\n }\n\n async update(teamId: number, values: any): Promise<Team> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/`, Team.toBack(values))\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async delete(team: Team): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team/${team.id}/`)\n .toPromise();\n }\n\n async getPermission(teamId: number): Promise<TeamPermission> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/permission/`)\n .pipe(map(data => TeamPermission.toFront(data)))\n .toPromise();\n }\n\n async updatePermission(teamId: number, permission: TeamPermission): Promise<TeamPermission> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/permission/`, TeamPermission.toBack(permission))\n .pipe(map(data => TeamPermission.toFront(data)))\n .toPromise();\n }\n\n async getUsers(teamId: number, tournamentId?: number): Promise<TeamUser[]> {\n let params = new HttpParams();\n if (tournamentId) {\n params = params.set('tournament_id', tournamentId.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/`, {params})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateUserRole(teamId: number, teamUserId: number, role: TeamUserRole): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/${teamUserId}/role/`, {role: TeamUserRole[role]})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateUserNumber(teamId: number, teamUserId: number, gameNumber: number): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/${teamUserId}/number/`, {number: gameNumber.toString()})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async deleteUser(teamUser: TeamUser): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team/${teamUser.teamId}/users/${teamUser.id}/`)\n .toPromise();\n }\n\n async changeOwner(teamId: number, user: User): Promise<Team> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/owner/`, {id: user.id})\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getInvites(teamId: number): Promise<TeamInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites/`)\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async sendInvite(teamId: number, user: User): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites/`, {user})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/accept/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async declineInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/decline/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async resendInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/resend/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async getInvitesExternal(teamId: number): Promise<TeamInviteExternal[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites_external/`)\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async sendInviteExternal(teamId: number, invite: TeamInviteExternal): Promise<TeamInviteExternal> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites_external/`, TeamInviteExternal.toBack(invite))\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async deleteInviteExternal(invite: TeamInviteExternal): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/invites_external/${invite.id}/`)\n .toPromise();\n }\n\n async resendInviteExternal(invite: TeamInviteExternal): Promise<TeamInviteExternal> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/invites_external/${invite.id}/resend/`, {})\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async getPolls(teamId: number, archive: boolean = false): Promise<Poll[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/polls/${archive ? '?archive=1' : ''}`)\n .pipe(map(data => Poll.toFront(data)))\n .toPromise();\n }\n\n async createPoll(teamId: number, poll: Poll): Promise<Poll> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/polls/`, Poll.toBack(poll))\n .pipe(map(data => Poll.toFront(data)))\n .toPromise();\n }\n\n async getUsersStatistic(teamId: number): Promise<BasketballStatistic[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/statistics/`)\n .pipe(map(data => BasketballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getVolleyballStatistic(teamId: number): Promise<VolleyballStatistic[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/volleyball_statistics/`)\n .pipe(map(data => VolleyballStatistic.toFront(data)))\n .toPromise();\n }\n\n async joinTeam(teamId: number): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/join/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async leaveTeam(teamId: number): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/leave/`, {})\n .toPromise();\n }\n\n async getGames(teamId: number, archive = false): Promise<Game[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/games/${archive ? '?archive=1' : ''}`)\n .pipe(map(data => Game.toFront(data)))\n .toPromise();\n }\n\n async createGame(teamId: number, game: Game): Promise<Game> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/games/`, Game.toBack(game))\n .pipe(map(data => Game.toFront(data)))\n .toPromise();\n }\n\n async getTeamEvents(teamId: number): Promise<TeamEvent[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/events/`)\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async createTeamEvent(teamId: number, teamEvent: TeamEvent): Promise<TeamEvent> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/events/`, TeamEvent.toBack(teamEvent))\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async getTournaments(teamId: number): Promise<Tournament[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournaments/`)\n .pipe(map(data => Tournament.toFront(data)))\n .toPromise();\n }\n\n async getTournamentTeams(teamId: number): Promise<TournamentTeam[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournament_teams/`)\n .pipe(map(data => TournamentTeam.toFront(data)))\n .toPromise();\n }\n\n async getTournamentInvites(teamId: number): Promise<TournamentInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournament_invites/`)\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async getTournamentGames(teamId: number, tournamentId: number, page: number, size?: number): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournaments/${tournamentId}/games/`, {params, observe: 'response'})\n .pipe(map((response: HttpResponse<any>) => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n }))\n .toPromise();\n }\n\n async acceptTournamentInvite(inviteId: number): Promise<TournamentInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/tournament_invite/${inviteId}/accept/`, {})\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async declineTournamentInvite(inviteId: number): Promise<TournamentInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/tournament_invite/${inviteId}/decline/`, {})\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async registerLazyUser(teamId: number, userData: User): Promise<TeamUser> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/lazy_user/`, {user: User.toBack(userData)})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async getLazyUser(teamUserId: number): Promise<TeamUser> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`)\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateLazyUser(teamUserId: number, userData: User): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`, {user: User.toBack(userData)})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async deleteLazyUser(teamUserId: number): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`)\n .toPromise();\n }\n\n async resendLazyUserEmail(teamUserId: number): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/resend_email/`, {})\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { TeamEvent } from '../models/team-event';\nimport { TeamEventInvite } from '../models/team-event-invite';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TeamEventApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getTeamEvent(teamEventId: number): Promise<TeamEvent> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/`)\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async updateTeamEvent(teamEvent: TeamEvent): Promise<TeamEvent> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEvent.id}/`, TeamEvent.toBack(teamEvent))\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async deleteTeamEvent(teamEventId: number): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/`)\n .toPromise();\n }\n\n async getTeamEventInvites(teamEventId: number): Promise<TeamEventInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/invites/`)\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async createTeamEventInvite(teamEventId: number, teamUserId: number): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/invites/`, {team_user_id: teamUserId})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptTeamEventInvite(teamEventInvite: TeamEventInvite): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event_invite/${teamEventInvite.id}/accept/`, {})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async declineTeamEventInvite(teamEventInvite: TeamEventInvite): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event_invite/${teamEventInvite.id}/decline/`, {})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\n\n@ModelInstance({\n mappingFields: {\n valid_users_count: 'validUsersCount',\n invalid_users_count: 'invalidUsersCount',\n has_access: 'hasAccess',\n invite_sent: 'inviteSent',\n already_in_tournament: 'alreadyInTournament'\n }\n})\nexport class TournamentJoinData extends BaseModel {\n validUsersCount: number;\n invalidUsersCount: number;\n hasAccess: boolean;\n inviteSent: boolean;\n alreadyInTournament: boolean;\n\n get usersCount(): number {\n return this.validUsersCount + this.invalidUsersCount;\n }\n\n get valid() {\n return this.hasAccess && !this.inviteSent && !this.alreadyInTournament;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n join_data: 'joinData'\n },\n relation: {\n team: Team,\n joinData: TournamentJoinData\n }\n})\nexport class TournamentJoinTeam extends BaseModel {\n team: Team;\n joinData: TournamentJoinData;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TournamentJoinTeam } from '../models/tournament-join-team';\nimport { map } from 'rxjs/operators';\nimport { TeamUser } from '../models/team-user';\nimport { TournamentTeamUserInvite } from '../models/tournament-team-user-invite';\nimport { TournamentInvite } from '../models/tournament-invite';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TournamentJoinApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getTeamsForJoin(tournamentId: number): Promise<TournamentJoinTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/teams_for_join/`).pipe(\n map(response => TournamentJoinTeam.toFront(response))\n ).toPromise();\n }\n\n async getTeamUsers(teamId: number): Promise<TeamUser[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/`)\n .pipe(\n map(data => TeamUser.toFront(data))\n ).toPromise();\n }\n\n async joinTournament(tournamentId: number, teamId: number, invites: TournamentTeamUserInvite[]): Promise<TournamentInvite> {\n const body = {\n team: {id: teamId},\n user_invites: TournamentTeamUserInvite.toBack(invites)\n };\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/join/`, body)\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { TournamentSeason } from '../models/tournament-season';\nimport { ConfigService } from '../services/config.service';\nimport { map } from 'rxjs/operators';\nimport { Game, GameStatuses } from '../models/game';\nimport { Tournament } from '../models/tournament';\nimport { applyGamesFilters, TournamentEventsListFilter, TournamentGamesFilters } from './tournament-api';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { applyGameMediaFilters, GameMediaFilters } from './media-api';\nimport { TournamentTeam } from '../models/tournament-team';\nimport { GameTimelineStages } from '../models/game-timeline-stages';\nimport { Playoff } from '../models/playoff';\n\n@Injectable({providedIn: 'root'})\nexport class TournamentSeasonApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getByAlias(leagueId: number, alias: string): Promise<TournamentSeason> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournament_seasons/${alias}/`).pipe(\n map(result => TournamentSeason.toFront(result))\n ).toPromise();\n }\n\n async getTournaments(seasonId: number): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/tournaments/`).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n async getGames(seasonId: number, page: number, size: number, filters: TournamentGamesFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n params = applyGamesFilters(filters, params);\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/games/`,\n {params, observe: 'response'}\n ).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: Game.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getEvents(seasonId: number, page: number, size: number, filters?: TournamentEventsListFilter): Promise<PaginatedResponse<TournamentEvent[]>> {\n let params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\n if (filters) {\n if (filters.event) {\n params = params.set('event', TournamentEventTypes[filters.event]);\n }\n if (filters.search) {\n params = params.set('search', filters.search);\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n }\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/events/`,\n {params, observe: 'response'}\n )\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentEvent.toFront(result.body)\n })))\n .toPromise();\n }\n\n async getGameMedia(seasonId: number, page: number, size: number, filters: GameMediaFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n params = applyGameMediaFilters(filters, params);\n\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/game_media/`,\n {observe: 'response', params})\n .pipe(\n map(response => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n })\n ).toPromise();\n }\n\n async getTeams(seasonId: number, short?: boolean): Promise<TournamentTeam[]> {\n let params = new HttpParams();\n if (short) {\n params = params.set('short', '1');\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/teams/`, {params}).pipe(\n map(result => TournamentTeam.toFront(result))\n ).toPromise();\n }\n\n async getPlayoffs(seasonId: number): Promise<Playoff[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/playoffs/`).pipe(\n map(result => Playoff.toFront(result))\n ).toPromise();\n }\n\n async getGamesStages(seasonId: number): Promise<GameTimelineStages> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/games_stages/`)\n .pipe(map(data => GameTimelineStages.toFront(data)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TournamentStage } from '../models/tournament-stage';\nimport { map } from 'rxjs/operators';\nimport { TournamentGroup } from '../models/tournament-group';\nimport { Playoff } from '../models/playoff';\nimport { TournamentStageTeam } from '../models/tournament-stage-team';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TournamentStageApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getById(id: number): Promise<TournamentStage> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${id}/`)\n .pipe(map(result => TournamentStage.toFront(result)))\n .toPromise();\n }\n\n async getGroups(stageId: number): Promise<TournamentGroup[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/groups/`)\n .pipe(map(result => TournamentGroup.toFront(result)))\n .toPromise();\n }\n\n async getPlayoffs(stageId: number): Promise<Playoff[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/playoff/`)\n .pipe(map(result => Playoff.toFront(result)))\n .toPromise();\n }\n\n async getTeams(stageId: number): Promise<TournamentStageTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/teams/`)\n .pipe(map(result => TournamentStageTeam.toFront(result)))\n .toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n edit: 'edit',\n personal_data: 'personalData',\n teams: 'teams',\n statistic: 'statistic',\n games: 'games'\n }\n})\nexport class UserAccess extends BaseModel {\n edit: boolean;\n personalData: boolean;\n teams: boolean;\n statistic: boolean;\n games: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField, DateTimeField } from './util';\nimport { GameLogBase } from './game-log-base';\nimport { GameUser } from './game-user';\n\nexport enum VolleyballGameLogType {\n enter_game = 1,\n exit_game,\n remove_game,\n serve_hit,\n serve_fault,\n serve_ace,\n stuff_block,\n block_fault,\n block_rebound,\n attack_spike,\n attack_fault,\n attack_shot,\n receive,\n receive_fault,\n excellent_receive,\n point,\n fault,\n serve_receive,\n serve_receive_fault,\n excellent_serve_receive,\n timeout,\n yellow_card,\n}\n\nexport const SCORE_LOG_TYPES = [\n VolleyballGameLogType.serve_ace, VolleyballGameLogType.stuff_block,\n VolleyballGameLogType.attack_spike, VolleyballGameLogType.point\n];\nexport const FAULT_LOG_TYPES = [\n VolleyballGameLogType.serve_fault, VolleyballGameLogType.attack_fault,\n VolleyballGameLogType.block_fault, VolleyballGameLogType.receive_fault,\n VolleyballGameLogType.fault, VolleyballGameLogType.serve_receive_fault\n];\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n log_type: 'logType',\n set: 'set',\n rally: 'rally',\n position: 'position',\n team_id: 'teamId',\n datetime: 'datetime',\n is_highlight: 'isHighlight',\n },\n relation: {\n logType: enumField(VolleyballGameLogType),\n datetime: DateTimeField\n }\n})\nexport class VolleyballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n active = true;\n gameId: number;\n gameUserId: number;\n logType: VolleyballGameLogType;\n set: number;\n rally: number;\n position: number;\n teamId: number;\n datetime: Date;\n isHighlight: boolean;\n gameUser: GameUser;\n\n compare(model: VolleyballGameLog): number {\n if (this.rally === model.rally && this.set === model.set) {\n if (this.datetime && model.datetime) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n } else {\n return this.id < model.id ? 1 : -1;\n }\n }\n if (this.set === model.set) {\n return this.rally < model.rally ? 1 : -1;\n }\n return this.set < model.set ? 1 : -1;\n }\n\n isScoreType() {\n return SCORE_LOG_TYPES.includes(this.logType);\n }\n\n isFaultType() {\n return FAULT_LOG_TYPES.includes(this.logType);\n }\n\n isServe() {\n return [\n VolleyballGameLogType.serve_hit,\n VolleyballGameLogType.serve_ace,\n VolleyballGameLogType.serve_fault\n ].includes(this.logType);\n }\n\n isAttack() {\n return [\n VolleyballGameLogType.attack_fault,\n VolleyballGameLogType.attack_spike,\n VolleyballGameLogType.attack_shot\n ].includes(this.logType);\n }\n\n isReceive() {\n return [\n VolleyballGameLogType.receive_fault,\n VolleyballGameLogType.receive,\n VolleyballGameLogType.excellent_receive\n ].includes(this.logType);\n }\n\n isServeReceive() {\n return [\n VolleyballGameLogType.serve_receive_fault,\n VolleyballGameLogType.serve_receive,\n VolleyballGameLogType.excellent_serve_receive\n ].includes(this.logType);\n }\n\n isBlock() {\n return [\n VolleyballGameLogType.block_fault,\n VolleyballGameLogType.block_rebound,\n VolleyballGameLogType.stuff_block\n ].includes(this.logType);\n }\n\n isEnterExit() {\n return [\n VolleyballGameLogType.enter_game,\n VolleyballGameLogType.exit_game,\n VolleyballGameLogType.timeout\n ].includes(this.logType);\n }\n\n isComboType() {\n return ![\n VolleyballGameLogType.receive,\n VolleyballGameLogType.serve_receive\n ].includes(this.logType);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { User } from '../models/user';\nimport { File } from '../models/file';\nimport { map } from 'rxjs/operators';\nimport { UserProfile } from '../models/user-profile';\nimport { BasketballProfile } from '../models/basketball-profile';\nimport { VolleyballProfile } from '../models/volleyball-profile';\nimport { Team } from '../models/team';\nimport { TeamInvite } from '../models/team-invite';\nimport { BasketballStatistic } from '../models/basketball-statistic';\nimport { VolleyballStatistic } from '../models/volleyball-statistic';\nimport { Game } from '../models/game';\nimport { GameInvite } from '../models/game-invite';\nimport { TeamEvent } from '../models/team-event';\nimport { UserAccess } from '../models/user-access';\nimport { UserPermission } from '../models/user-permission';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class UserApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getCurrentUser(): Promise<User> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/`)\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async getUserById(userId: number): Promise<User> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/`)\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async getAccess(userId?: number): Promise<UserAccess> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/user/${userId || 'current'}/access/`)\n .pipe(map(data => UserAccess.toFront(data)))\n .toPromise();\n }\n\n async updateUser(userId: number, data: any): Promise<User> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/`, User.toBack(data))\n .pipe(map(result => User.toFront(result)))\n .toPromise();\n }\n\n async updateUserPhoto(file: any, filename?: string): Promise<File> {\n const formData = new FormData();\n formData.append('file', file, filename);\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/photo/`, formData)\n .pipe(map(data => File.toFront(data)))\n .toPromise();\n }\n\n async changePassword(userId: number, oldPassword: string, password: string, passwordConfirm: string): Promise<any> {\n const payload = {\n old_password: oldPassword,\n password,\n password_confirm: passwordConfirm\n };\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/change_password/`, payload)\n .toPromise();\n }\n\n async changeEmail(userId: number, email: string, password: string): Promise<any> {\n const payload = {email, password};\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/change_email/`, payload)\n .toPromise();\n }\n\n async changeEmailConfirm(userId, email: string, password: string, token: number): Promise<any> {\n const payload = {email, password, token};\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/change_email_confirm/`, payload)\n .toPromise();\n }\n\n async getUserProfile(userId: number): Promise<UserProfile> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/profile/`)\n .pipe(map(data => UserProfile.toFront(data)))\n .toPromise();\n }\n\n async getBasketballProfile(userId: number): Promise<BasketballProfile> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/basketball_profile/`)\n .pipe(map(data => BasketballProfile.toFront(data)))\n .toPromise();\n }\n\n async getVolleyballProfile(userId: number): Promise<VolleyballProfile> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/volleyball_profile/`)\n .pipe(map(data => VolleyballProfile.toFront(data)))\n .toPromise();\n }\n\n async updateUserProfile(userProfile: UserProfile): Promise<UserProfile> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${userProfile.userId}/profile/`, UserProfile.toBack(userProfile))\n .pipe(map(data => UserProfile.toFront(data)))\n .toPromise();\n }\n\n async updateUserBasketballProfile(basketballProfile: BasketballProfile): Promise<BasketballProfile> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${basketballProfile.userId}/basketball_profile/`, BasketballProfile.toBack(basketballProfile))\n .pipe(map(data => BasketballProfile.toFront(data)))\n .toPromise();\n }\n\n async updateUserVolleyballProfile(volleyballProfile: VolleyballProfile): Promise<VolleyballProfile> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${volleyballProfile.userId}/volleyball_profile/`, VolleyballProfile.toBack(volleyballProfile))\n .pipe(map(data => VolleyballProfile.toFront(data)))\n .toPromise();\n }\n\n async getUserPermissions(userId?: number): Promise<UserPermission> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId || 'current'}/permission/`)\n .pipe(map(data => UserPermission.toFront(data)))\n .toPromise();\n }\n\n async updateUserPermission(data: any): Promise<UserPermission> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/current/permission/`, UserPermission.toBack(data))\n .pipe(map(result => UserPermission.toFront(result)))\n .toPromise();\n }\n\n async getTeams(userId: number): Promise<Team[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/teams/`)\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getInvites(): Promise<TeamInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/invites/`)\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptInvite(inviteId: number): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/invites/${inviteId}/accept/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async declineInvite(inviteId: number): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/invites/${inviteId}/decline/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async getStatistics(userId: number): Promise<BasketballStatistic> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/statistics/`)\n .pipe(map(data => BasketballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getStreetballStatistics(userId: number): Promise<BasketballStatistic> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/streetball_statistics/`)\n .pipe(map(data => BasketballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getVolleyballStatistic(userId: number): Promise<VolleyballStatistic> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/volleyball_statistics/`)\n .pipe(map(data => VolleyballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getGames(userId: number): Promise<Game[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/games/`)\n .pipe(map(data => Game.toFront(data)))\n .toPromise();\n }\n\n async getGameInvites(): Promise<GameInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/game_invites/`)\n .pipe(map(data => GameInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptGameInvite(inviteId: number): Promise<GameInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/game_invites/${inviteId}/accept/`, {})\n .pipe(map(data => GameInvite.toFront(data)))\n .toPromise();\n }\n\n async declineGameInvite(inviteId: number): Promise<GameInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/game_invites/${inviteId}/decline/`, {})\n .pipe(map(data => GameInvite.toFront(data)))\n .toPromise();\n }\n\n async searchUsers(query: string): Promise<User[]> {\n const params = (new HttpParams()).set('search', query);\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/`, {params})\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async setWizardShowed(wizard: string): Promise<User> {\n return this.httpClient\n .put(`${this.configService.get('apiUrl')}/api/v1/user/current/wizards/`, {wizard})\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async getTeamEvents(userId: number): Promise<TeamEvent[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/team_events/`)\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook, BaseModel } from './util';\nimport { VolleyballStatistic } from './volleyball-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam',\n },\n relation: {\n team: VolleyballStatistic,\n competitorTeam: VolleyballStatistic,\n }\n})\nexport class VolleyballGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: VolleyballStatistic;\n competitorTeam: VolleyballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n serve_hits: 'serveHits',\n serve_faults: 'serveFaults',\n serve_aces: 'serveAces',\n stuff_blocks: 'stuffBlocks',\n block_faults: 'blockFaults',\n block_rebounds: 'blockRebounds',\n attack_spikes: 'attackSpikes',\n attack_faults: 'attackFaults',\n attack_shots: 'attackShots',\n receives: 'receives',\n receive_faults: 'receiveFaults',\n excellent_receives: 'excellentReceives',\n serve_receives: 'serveReceives',\n serve_receive_faults: 'serveReceiveFaults',\n excellent_serve_receives: 'excellentServeReceives',\n points: 'points',\n faults: 'faults',\n yellow_cards: 'yellowCards',\n }\n})\nexport class VolleyballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n serveHits: number;\n serveFaults: number;\n serveAces: number;\n stuffBlocks: number;\n blockFaults: number;\n blockRebounds: number;\n attackSpikes: number;\n attackFaults: number;\n attackShots: number;\n receives: number;\n receiveFaults: number;\n excellentReceives: number;\n serveReceives: number;\n serveReceiveFaults: number;\n excellentServeReceives: number;\n points: number;\n faults: number;\n yellowCards: number;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get attacks(): number {\n return this.attackSpikes + this.attackShots;\n }\n\n get blocks(): number {\n return this.stuffBlocks + this.blockRebounds;\n }\n\n get totalReceives(): number {\n return this.receives + this.excellentReceives;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Game } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { VolleyballGameTeamStatistic } from '../models/volleyball-game-team-statistic';\nimport { VolleyballGameStatistic } from '../models/volleyball-game-statistic';\nimport { VolleyballGameLog } from '../models/volleyball-game-log';\nimport { ConfigService } from '../services/config.service';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class VolleyballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<VolleyballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/team_statistic/`).pipe(\n map(result => VolleyballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<VolleyballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/user_statistic/`).pipe(\n map(result => VolleyballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<VolleyballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/logs/`).pipe(\n map(result => VolleyballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocolLight(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/game_protocol_light/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { Team } from '../models/team';\nimport { map } from 'rxjs/operators';\nimport { TournamentTeam } from '../models/tournament-team';\n\n@Injectable({providedIn: 'root'})\nexport class PublicTeamApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n getById(teamId: number): Promise<Team> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_team/${teamId}/`).pipe(\n map(result => Team.toFront(result))\n ).toPromise();\n }\n\n getTournamentTeams(teamId: number, leagueId: number): Promise<TournamentTeam[]> {\n const params = new HttpParams().set('league_id', leagueId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_team/${teamId}/tournament_teams/`, {params}).pipe(\n map(result => TournamentTeam.toFront(result))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { User } from '../models/user';\nimport { map } from 'rxjs/operators';\nimport { Tournament } from '../models/tournament';\nimport { TournamentTeamUser } from '../models/tournament-team-user';\nimport { LeaguePlayer } from '../models/league-player';\n\n@Injectable({providedIn: 'root'})\nexport class PublicUserApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n getById(userId: number): Promise<User> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/`).pipe(\n map(result => User.toFront(result))\n ).toPromise();\n }\n\n getTournaments(userId: number, leagueId: number): Promise<Tournament[]> {\n const params = new HttpParams().set('league_id', leagueId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/tournaments/`, {params}).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n getTournamentUser(userId: number, seasonId: number): Promise<TournamentTeamUser> {\n const params = new HttpParams().set('season_id', seasonId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/tournament_user/`, {params}).pipe(\n map(result => TournamentTeamUser.toFront(result))\n ).toPromise();\n }\n\n getLeaguePlayer(userId: number, leagueId: number): Promise<LeaguePlayer> {\n const params = new HttpParams().set('league_id', leagueId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/league_player/`, {params}).pipe(\n map(result => LeaguePlayer.toFront(result))\n ).toPromise();\n }\n}\n","import { BasketballGameLogTypes } from '../models/basketball-game-log';\n\nexport const BasketballGameLogTypeLocalization = {\n [BasketballGameLogTypes.enter_game]: 'ÐÑÑ
од на плоÑадкÑ',\n [BasketballGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð»Ð¾Ñадки',\n [BasketballGameLogTypes.remove_game]: 'Удаление Ñ Ð¿Ð»Ð¾Ñадки',\n [BasketballGameLogTypes.two_point_attempt]: 'ÐÑоÑок 2 оÑка',\n [BasketballGameLogTypes.three_point_attempt]: 'ÐÑоÑок 3 оÑка',\n [BasketballGameLogTypes.free_throw_attempt]: 'ШÑÑаÑной бÑоÑок',\n [BasketballGameLogTypes.one_point_attempt]: 'ÐÑоÑок 1 оÑко',\n [BasketballGameLogTypes.two_point_made]: '2 оÑка',\n [BasketballGameLogTypes.three_point_made]: '3 оÑка',\n [BasketballGameLogTypes.free_throw_made]: '1 оÑко, ÑÑÑаÑной',\n [BasketballGameLogTypes.one_point_made]: '1 оÑко',\n [BasketballGameLogTypes.assist]: 'ÐеÑедаÑа',\n [BasketballGameLogTypes.block]: 'ÐлокÑоÑ',\n [BasketballGameLogTypes.rebound]: 'ÐодбоÑ',\n [BasketballGameLogTypes.offensive_rebound]: 'ÐÐ¾Ð´Ð±Ð¾Ñ Ð² нападении',\n [BasketballGameLogTypes.defensive_rebound]: 'ÐÐ¾Ð´Ð±Ð¾Ñ Ð² заÑиÑе',\n [BasketballGameLogTypes.steal]: 'ÐеÑеÑ
ваÑ',\n [BasketballGameLogTypes.turnover]: 'ÐоÑеÑÑ',\n [BasketballGameLogTypes.personal_foul]: 'Фол',\n [BasketballGameLogTypes.technical_foul]: 'ТеÑ
ниÑеÑкий Ñол',\n [BasketballGameLogTypes.unsportsmanlike_foul]: 'ÐеÑпоÑÑинÑй Ñол',\n [BasketballGameLogTypes.timeout]: 'ТаймаÑÑ',\n [BasketballGameLogTypes.team_rebound]: 'ÐоманднÑй подбоÑ',\n};\n","import { HockeyGameLogTypes } from '../models/hockey-game-log';\n\nexport const HockeyGameLogTypeLocalization = {\n [HockeyGameLogTypes.enter_game]: 'ÐÑÑ
од на плоÑадкÑ',\n [HockeyGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð»Ð¾Ñадки',\n [HockeyGameLogTypes.shot_miss]: 'ÐÑоÑок мимо',\n [HockeyGameLogTypes.shot_on_goal]: 'ÐÑоÑок по воÑоÑам',\n [HockeyGameLogTypes.shot_blocked]: 'ÐаблокиÑованнÑй бÑоÑок',\n [HockeyGameLogTypes.goal]: 'Ðол',\n [HockeyGameLogTypes.shootout_attempt]: 'ÐÑÐ»Ð»Ð¸Ñ Ð¿ÑомаÑ
',\n [HockeyGameLogTypes.shootout_goal]: 'ÐÑÐ»Ð»Ð¸Ñ Ð³Ð¾Ð»',\n [HockeyGameLogTypes.after_game_shootout_attempt]: 'ÐÑÐ»Ð»Ð¸Ñ Ð¿ÑомаÑ
',\n [HockeyGameLogTypes.after_game_shootout_goal]: 'ÐÑÐ»Ð»Ð¸Ñ Ð³Ð¾Ð»',\n [HockeyGameLogTypes.assist]: 'ÐеÑедаÑа',\n [HockeyGameLogTypes.block_shot]: 'ÐлокиÑовка бÑоÑка',\n [HockeyGameLogTypes.minor_penalty]: 'ÐалÑй ÑÑÑаÑ',\n [HockeyGameLogTypes.major_penalty]: 'ÐолÑÑой ÑÑÑаÑ',\n [HockeyGameLogTypes.misconduct_penalty]: 'ÐиÑÑиплинаÑнÑй ÑÑÑаÑ',\n [HockeyGameLogTypes.game_misconduct_penalty]: 'ÐиÑÑиплинаÑнÑй ÑÑÑÐ°Ñ Ð´Ð¾ конÑа игÑÑ',\n [HockeyGameLogTypes.match_penalty]: 'ÐаÑÑ-ÑÑÑаÑ',\n [HockeyGameLogTypes.penalty_shot]: 'ШÑÑаÑной бÑоÑок',\n [HockeyGameLogTypes.face_off_lose]: 'ÐÑоигÑÑÑ Ð² вбÑаÑÑвании',\n [HockeyGameLogTypes.face_off_win]: 'Ðобеда в вбÑаÑÑвании',\n [HockeyGameLogTypes.save]: 'ÐÑÑажен бÑоÑок',\n [HockeyGameLogTypes.shootout_save]: 'ÐÑÑажен бÑоÑок',\n [HockeyGameLogTypes.after_game_shootout_save]: 'ÐÑÑажен бÑоÑок',\n [HockeyGameLogTypes.timeout]: 'ТаймаÑÑ',\n [HockeyGameLogTypes.penalty_start]: 'ÐаÑало ÑÑÑаÑного вÑемени',\n [HockeyGameLogTypes.penalty_end]: 'ÐÐ¾Ð½ÐµÑ ÑÑÑаÑного вÑемени'\n};\n","import { FootballGameLogTypes } from '../models/football-game-log';\n\nexport const FootballGameLogTypeLocalization = {\n [FootballGameLogTypes.enter_game]: 'ÐÑÑ
од на поле',\n [FootballGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð¾Ð»Ñ',\n [FootballGameLogTypes.shot_miss]: 'Ð£Ð´Ð°Ñ Ð¼Ð¸Ð¼Ð¾',\n [FootballGameLogTypes.shot_on_goal]: 'Ð£Ð´Ð°Ñ Ð² ÑÑвоÑ',\n [FootballGameLogTypes.shot_blocked]: 'ÐаблокиÑованнÑй ÑдаÑ',\n [FootballGameLogTypes.goal]: 'Ðол',\n [FootballGameLogTypes.assist]: 'ÐеÑедаÑа',\n [FootballGameLogTypes.penalty_attempt]: 'ÐеналÑÑи пÑомаÑ
',\n [FootballGameLogTypes.penalty_goal]: 'ÐеналÑÑи гол',\n [FootballGameLogTypes.small_penalty_attempt]: '10-меÑÑовÑй пÑомаÑ
',\n [FootballGameLogTypes.small_penalty_goal]: '10-меÑÑовÑй гол',\n [FootballGameLogTypes.block_shot]: 'ÐлокиÑовка ÑдаÑа',\n [FootballGameLogTypes.corner]: 'Угловой',\n [FootballGameLogTypes.free_kick]: 'ШÑÑаÑной ÑдаÑ',\n [FootballGameLogTypes.save]: 'ÐÑÑажен ÑдаÑ',\n [FootballGameLogTypes.penalty_save]: 'ÐÑÑажен пеналÑÑи',\n [FootballGameLogTypes.small_penalty_save]: 'ÐÑÑажен 10 меÑÑовÑй',\n [FootballGameLogTypes.foul]: 'Фол',\n [FootballGameLogTypes.yellow_card]: 'ÐелÑÐ°Ñ ÐºÐ°ÑÑоÑка',\n [FootballGameLogTypes.red_card]: 'ÐÑаÑÐ½Ð°Ñ ÐºÐ°ÑÑоÑка',\n [FootballGameLogTypes.perfect_pass]: 'ÐаÑ',\n [FootballGameLogTypes.loss]: 'ÐоÑеÑÑ',\n [FootballGameLogTypes.steal]: 'ÐеÑеÑ
ваÑ',\n [FootballGameLogTypes.out]: 'ÐÑÑ',\n [FootballGameLogTypes.timeout]: 'ТаймаÑÑ',\n [FootballGameLogTypes.auto_goal]: 'ÐвÑогол'\n};\n","import { HandballGameLogTypes } from '../models/handball-game-log';\n\nexport const HandballGameLogTypeLocalization = {\n [HandballGameLogTypes.enter_game]: 'ÐÑÑ
од на поле',\n [HandballGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð¾Ð»Ñ',\n [HandballGameLogTypes.shot_miss]: 'ÐÑоÑок мимо',\n [HandballGameLogTypes.shot_on_goal]: 'ÐÑоÑок в ÑÑвоÑ',\n [HandballGameLogTypes.shot_blocked]: 'ÐаблокиÑованнÑй бÑоÑок',\n [HandballGameLogTypes.goal]: 'Ðол',\n [HandballGameLogTypes.assist]: 'ÐеÑедаÑа',\n [HandballGameLogTypes.penalty_miss]: '7м пÑомаÑ
',\n [HandballGameLogTypes.penalty_shot_on_goal]: '7м в ÑÑвоÑ',\n [HandballGameLogTypes.penalty_goal]: '7м гол',\n [HandballGameLogTypes.save]: 'СÑйв',\n [HandballGameLogTypes.penalty_save]: 'СÑйв 7м',\n [HandballGameLogTypes.foul]: 'Фол',\n [HandballGameLogTypes.yellow_card]: 'ÐеллÑÐ°Ñ ÐºÐ°ÑÑоÑка',\n [HandballGameLogTypes.red_card]: 'ÐÑаÑÐ½Ð°Ñ ÐºÐ°ÑÑоÑка',\n [HandballGameLogTypes.two_minute_foul]: '2Ñ
минÑÑнÑй ÑÑÑаÑ',\n [HandballGameLogTypes.turnover]: 'ÐоÑеÑÑ',\n [HandballGameLogTypes.steal]: 'ÐеÑеÑ
ваÑ',\n [HandballGameLogTypes.block_shot]: 'Ðлок бÑоÑка',\n [HandballGameLogTypes.timeout]: 'ТаймаÑÑ'\n};\n","import { OvertimeTypes } from '../models/tournament';\n\nexport const OvertimeTypeLocalization = {\n [OvertimeTypes.to_score_diff]: 'Ðо ÑазниÑÑ Ð² N мÑÑей',\n [OvertimeTypes.to_score_total]: 'Ðо N оÑков',\n [OvertimeTypes.time]: 'Ðо вÑемени',\n [OvertimeTypes.without_overtime]: 'Ðез овеÑÑайма',\n [OvertimeTypes.to_first_goal]: 'Ðа N минÑÑ Ð´Ð¾ пеÑвой ÑайбÑ',\n [OvertimeTypes.to_first_goal_and_bullitts]: 'Ðа N минÑÑ Ð´Ð¾ пеÑвой ÑÐ°Ð¹Ð±Ñ + бÑллиÑÑ',\n [OvertimeTypes.bullitts]: 'ÐÑллиÑÑ',\n [OvertimeTypes.penalties]: 'ÐеналÑÑи',\n [OvertimeTypes.time_and_penalties]: 'ÐополниÑелÑное вÑÐµÐ¼Ñ + пеналÑÑи'\n};\n","import { RugbyGameLogTypes } from '../models/rugby-game-log';\n\nexport const RugbyGameLogTypeLocalization = {\n [RugbyGameLogTypes.enter_game]: 'ÐÑÑ
од на плоÑадкÑ',\n [RugbyGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð»Ð¾Ñадки',\n [RugbyGameLogTypes.try]: 'ÐопÑÑка',\n [RugbyGameLogTypes.penalty_try]: 'ШÑÑаÑÐ½Ð°Ñ Ð¿Ð¾Ð¿ÑÑка',\n [RugbyGameLogTypes.conversion_goal]: 'РеализаÑиÑ',\n [RugbyGameLogTypes.conversion_miss]: 'РеализаÑÐ¸Ñ Ð¿ÑомаÑ
',\n [RugbyGameLogTypes.drawing_ball]: 'РозÑгÑÑÑ Ð¼ÑÑа',\n [RugbyGameLogTypes.penalty_miss]: 'ШÑÑаÑной пÑомаÑ
',\n [RugbyGameLogTypes.penalty_goal]: 'ШÑÑаÑной гол',\n [RugbyGameLogTypes.drop_goal]: 'ÐÑоп-гол',\n [RugbyGameLogTypes.drop_goal_miss]: 'ÐÑоп-гол пÑомаÑ
',\n [RugbyGameLogTypes.free_kick]: 'СвободнÑй ÑдаÑ',\n [RugbyGameLogTypes.yellow_card]: 'ÐелÑÐ°Ñ ÐºÐ°ÑÑоÑка',\n [RugbyGameLogTypes.red_card]: 'ÐÑаÑÐ½Ð°Ñ ÐºÐ°ÑÑоÑка',\n [RugbyGameLogTypes.offload]: 'Скидка пÑи завÑ
ваÑе',\n [RugbyGameLogTypes.tackle]: 'УÑпеÑнÑй заÑ
ваÑ',\n [RugbyGameLogTypes.out]: 'ÐÑÑ',\n [RugbyGameLogTypes.handling_error]: 'ÐÑибка пÑиема',\n [RugbyGameLogTypes.carries_other_gainline]: 'ÐÑоÑÑв линии',\n\n [RugbyGameLogTypes.timeout]: 'ТаймаÑÑ',\n [RugbyGameLogTypes.scrum_won]: 'СваÑ
Ñка вÑигÑана',\n [RugbyGameLogTypes.scrum_lose]: 'СÑ
ваÑка пÑоигÑана',\n [RugbyGameLogTypes.scrum_won_free]: 'СÑ
ваÑка вÑигÑана без ÑопÑоÑивлениÑ',\n [RugbyGameLogTypes.lineout_success]: 'ÐоÑÑÐ¸Ð´Ð¾Ñ Ð²ÑигÑано',\n [RugbyGameLogTypes.lineout_loss]: 'ÐоÑÑÐ¸Ð´Ð¾Ñ Ð¿Ð¾ÑеÑÑ',\n [RugbyGameLogTypes.lineout_steal]: 'ÐоÑÑÐ¸Ð´Ð¾Ñ Ð¿ÐµÑеÑ
ваÑ',\n [RugbyGameLogTypes.quick_throw]: 'ÐÑÑÑÑÑй вбÑоÑ',\n [RugbyGameLogTypes.ruck_won]: 'Рак вÑигÑано',\n [RugbyGameLogTypes.ruck_lose]: 'Рак пÑоигÑано',\n [RugbyGameLogTypes.maul_won]: 'Ðол вÑигÑано',\n [RugbyGameLogTypes.maul_lose]: 'Ðол пÑоигÑано',\n [RugbyGameLogTypes.team_foul]: 'Фол',\n};\n","import { TeamUserRole } from '../models/team-user';\n\nexport const TeamUserRoleLocalization = {\n [TeamUserRole.member]: 'ÐолÑзоваÑелÑ',\n [TeamUserRole.moderator]: 'ÐодеÑаÑоÑ',\n [TeamUserRole.admin]: 'ÐладелеÑ',\n [TeamUserRole.coach]: 'ТÑенеÑ',\n [TeamUserRole.head_coach]: 'ÐлавнÑй ÑÑенеÑ',\n [TeamUserRole.playing_coach]: 'ÐгÑаÑÑий ÑÑенеÑ',\n [TeamUserRole.manager]: 'ÐенеджеÑ',\n [TeamUserRole.head_manager]: 'ÐенеÑалÑнÑй менеджеÑ',\n [TeamUserRole.captain]: 'ÐапиÑан',\n [TeamUserRole.assistant]: 'ÐÑÑиÑÑенÑ',\n};\n","import { GameBasketballPosition, WorkHand } from '../models/basketball-profile';\nimport { GameVolleyballPosition, VolleyballWorkHand } from '../models/volleyball-profile';\nimport { GameHockeyPosition } from '../models/hockey-profile';\nimport { FootballWorkFoot, GameFootballPosition } from '../models/football-profile';\nimport { GameHandballPosition } from '../models/handball-profile';\nimport { GameRugbyPosition } from '../models/rugby-profile';\n\nexport const GameBasketballPositionLocalization = {\n [GameBasketballPosition.point_guard]: 'РазÑгÑÑваÑÑий заÑиÑник',\n [GameBasketballPosition.shooting_guard]: 'ÐÑакÑÑÑий заÑиÑник',\n [GameBasketballPosition.small_forward]: 'Ðегкий ÑоÑваÑд',\n [GameBasketballPosition.power_forward]: 'ÐоÑнÑй ÑоÑваÑд',\n [GameBasketballPosition.center]: 'ЦенÑÑовой',\n};\n\nexport const GameBasketballPositionShortLocalization = {\n [GameBasketballPosition.point_guard]: 'PG',\n [GameBasketballPosition.shooting_guard]: 'SG',\n [GameBasketballPosition.small_forward]: 'SF',\n [GameBasketballPosition.power_forward]: 'PF',\n [GameBasketballPosition.center]: 'C',\n};\n\nexport const WorkHandLocalization = {\n [WorkHand.left]: 'ÐеваÑ',\n [WorkHand.right]: 'ÐÑаваÑ'\n};\n\nexport const GameVolleyballPositionLocalization = {\n [GameVolleyballPosition.setter]: 'СвÑзÑÑÑий',\n [GameVolleyballPosition.libero]: 'ÐибеÑо',\n [GameVolleyballPosition.middle_player]: 'ЦенÑÑалÑнÑй блокиÑÑÑÑий',\n [GameVolleyballPosition.receiver_attacker]: 'ÐоигÑовÑик',\n [GameVolleyballPosition.dioganal]: 'ÐиагоналÑнÑй',\n};\n\nexport const GameVolleyballPositionShortLocalization = {\n [GameVolleyballPosition.setter]: 'S',\n [GameVolleyballPosition.libero]: 'L',\n [GameVolleyballPosition.middle_player]: 'MP',\n [GameVolleyballPosition.receiver_attacker]: 'RA',\n [GameVolleyballPosition.dioganal]: 'D',\n};\n\nexport const GameVolleyballPositionShortRuLocalization = {\n [GameVolleyballPosition.setter]: 'ÑвÑз.',\n [GameVolleyballPosition.libero]: 'либеÑо',\n [GameVolleyballPosition.middle_player]: 'блок.',\n [GameVolleyballPosition.receiver_attacker]: 'доигÑ.',\n [GameVolleyballPosition.dioganal]: 'диаг.',\n};\n\nexport const VolleyballWorkHandLocalization = {\n [VolleyballWorkHand.left]: 'ÐеваÑ',\n [VolleyballWorkHand.right]: 'ÐÑаваÑ'\n};\n\nexport const GameHockeyPositionLocalization = {\n [GameHockeyPosition.goaltender]: 'ÐÑаÑаÑÑ',\n [GameHockeyPosition.defensemen]: 'ÐаÑиÑник',\n [GameHockeyPosition.forward]: 'ÐападаÑÑий'\n};\n\nexport const GameFootballPositionLocalization = {\n [GameFootballPosition.goalkeeper]: 'ÐÑаÑаÑÑ',\n [GameFootballPosition.defensemen]: 'ÐаÑиÑник',\n [GameFootballPosition.midfielder]: 'ÐолÑзаÑиÑник',\n [GameFootballPosition.forward]: 'ÐападаÑÑий'\n};\n\nexport const FootballWorkFootLocalization = {\n [FootballWorkFoot.left]: 'ÐеваÑ',\n [FootballWorkFoot.right]: 'ÐÑаваÑ',\n [FootballWorkFoot.both]: 'Ðбе'\n};\n\nexport const GameHandballPositionLocalization = {\n [GameHandballPosition.goalkeeper]: 'ÐÑаÑаÑÑ',\n [GameHandballPosition.winger]: 'ÐÑайний',\n [GameHandballPosition.pivot]: 'ÐинейнÑй',\n [GameHandballPosition.centre_back]: 'ЦенÑÑалÑнÑй',\n [GameHandballPosition.fullback]: 'ÐолÑÑÑедний',\n};\n\nexport const GameRugbyPositionLocalization = {\n [GameRugbyPosition.front_line]: 'ÐадаÑÑий пеÑвой линии',\n [GameRugbyPosition.second_line]: 'ÐападаÑÑий вÑоÑой линии',\n [GameRugbyPosition.back_line]: 'ÐападаÑÑий задней линии',\n [GameRugbyPosition.halfback]: 'ÐолÑзаÑиÑник',\n [GameRugbyPosition.three_quarter]: 'ТÑеÑ
ÑеÑвеÑÑнÑй',\n [GameRugbyPosition.fullback]: 'ÐамÑкаÑÑий'\n};\n\n","import { VolleyballGameLogType } from '../models/volleyball-game-log';\n\nexport const VolleyballGameLogTypeLocalization = {\n [VolleyballGameLogType.enter_game]: 'ÐÑÑ
од на плоÑадкÑ',\n [VolleyballGameLogType.exit_game]: 'УÑ
од Ñ Ð¿Ð»Ð¾Ñадки',\n [VolleyballGameLogType.remove_game]: 'Удаление Ñ Ð¿Ð»Ð¾Ñадки',\n [VolleyballGameLogType.serve_ace]: 'ÐйÑ',\n [VolleyballGameLogType.serve_hit]: 'ÐодаÑа',\n [VolleyballGameLogType.serve_fault]: 'ÐÑибка на подаÑе',\n [VolleyballGameLogType.attack_spike]: 'РезÑлÑÑаÑÐ¸Ð²Ð½Ð°Ñ Ð°Ñака',\n [VolleyballGameLogType.attack_shot]: 'ÐÑака',\n [VolleyballGameLogType.attack_fault]: 'ÐÑибка аÑаки',\n [VolleyballGameLogType.stuff_block]: 'РезÑлÑÑаÑивнÑй блок',\n [VolleyballGameLogType.block_rebound]: 'Ðлок',\n [VolleyballGameLogType.block_fault]: 'ÐÑибка на блоке',\n [VolleyballGameLogType.excellent_receive]: 'ÐÑлиÑнÑй пÑием',\n [VolleyballGameLogType.receive]: 'ÐÑием',\n [VolleyballGameLogType.receive_fault]: 'ÐÑибка на пÑиеме',\n [VolleyballGameLogType.serve_receive]: 'ÐÑием подаÑи',\n [VolleyballGameLogType.excellent_serve_receive]: 'ÐÑлиÑнÑй пÑием подаÑи',\n [VolleyballGameLogType.serve_receive_fault]: 'ÐÑибка пÑиема подаÑи',\n [VolleyballGameLogType.point]: 'ÐÑко',\n [VolleyballGameLogType.fault]: 'ÐÑибка',\n [VolleyballGameLogType.timeout]: 'ТаймаÑÑ',\n [VolleyballGameLogType.yellow_card]: 'ÐÑедÑпÑеждение',\n};\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n files: 'files',\n key_code: 'keyCode',\n },\n relation: {\n files: listField(File)\n }\n})\nexport class LeaguePlaylist extends BaseModel {\n id: number;\n name: string;\n files: File[];\n keyCode: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n overtime_periods: 'overtimePeriods',\n max_game_players: 'maxGamePlayers',\n game_time_type: 'gameTimeType',\n substitute_count: 'substituteCount',\n free_substitute_enabled: 'freeSubstituteEnabled',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class RugbyGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n overtimePeriods: number;\n maxGamePlayers: number;\n gameTimeType: GameTimeTypes;\n substituteCount: number;\n freeSubstituteEnabled: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { Subject } from 'rxjs/internal/Subject';\nimport { ReplaySubject } from 'rxjs/internal/ReplaySubject';\n\nimport * as Centrifuge from 'centrifuge';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ConfigService } from './config.service';\n\ninterface CentrifugoConfig {\n user: string;\n timestamp: string;\n token: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class CentrifugoService {\n private channels$: { [key: string]: Subject<any> } = {};\n private subscriptions: { [key: string]: any } = {};\n private centrifuge;\n private initializeEngineSubject: ReplaySubject<boolean>;\n private connectedSubject = new BehaviorSubject<boolean>(false);\n\n get connected$(): Observable<boolean> {\n return this.connectedSubject;\n }\n\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) { }\n\n listen(channel): Observable<any> {\n if (channel in this.channels$) {\n return this.channels$[channel];\n }\n\n this.channels$[channel] = new Subject<any>();\n const subscription = this.connect().subscribe(connected => {\n this.subscriptions[channel] = this.addEngineSubscription(channel);\n setTimeout(() => {\n subscription.unsubscribe();\n });\n });\n\n return this.channels$[channel];\n }\n\n unsubscribe(channel): void {\n if (this.subscriptions[channel]) {\n this.subscriptions[channel].unsubscribe();\n delete this.subscriptions[channel];\n }\n if (this.channels$[channel]) {\n this.channels$[channel].complete();\n delete this.channels$[channel];\n }\n }\n\n connect(): Observable<boolean> {\n if (!this.initializeEngineSubject) {\n this.initializeEngineSubject = new ReplaySubject(1);\n\n this.httpClient.get<CentrifugoConfig>(`${this.configService.get('apiUrl')}/api/v1/centrifugo/`)\n .subscribe(config => {\n this.initializeEngine({\n url: this.configService.get('centrifugoUrl'),\n user: config.user,\n timestamp: config.timestamp,\n token: config.token,\n transports: ['websocket']\n });\n this.centrifuge.connect();\n this.centrifuge.on('connect', () => {\n this.initializeEngineSubject.next(true);\n this.connectedSubject.next(true);\n });\n this.centrifuge.on('disconnect', () => {\n this.connectedSubject.next(false);\n });\n });\n }\n\n return this.initializeEngineSubject;\n }\n\n publish(channel: string, message: any): Observable<any> {\n return new Observable<any>(observer => {\n this.connect().subscribe(() => {\n if (!this.subscriptions[channel]) {\n this.subscriptions[channel] = this.addEngineSubscription(channel);\n }\n this.subscriptions[channel].publish(message).then(res => {\n observer.next(res);\n observer.complete();\n }, error => {\n throw error;\n });\n });\n });\n }\n\n disconnect(): void {\n this.centrifuge.disconnect();\n this.initializeEngineSubject = undefined;\n this.channels$ = {};\n this.subscriptions = {};\n }\n\n private initializeEngine(config: {\n url: string,\n user: string,\n timestamp: string,\n token: string,\n transports: string[]\n }): void {\n this.centrifuge = new Centrifuge(config);\n }\n\n private addEngineSubscription(channel: string): Observable<any> {\n return this.centrifuge.subscribe(channel, this.resolveMessage.bind(this));\n }\n\n private resolveMessage(response: any): void {\n const channel = response.channel;\n if (!this.channels$[channel]) {\n return;\n }\n\n this.channels$[channel].next(response.data);\n }\n}\n","import { ModelInterface } from '../models/util';\n\nexport class StorageEngineField {\n defaultValue: any;\n\n constructor(defaultValue?: any, protected modelClass?: ModelInterface) {\n this.defaultValue = defaultValue;\n }\n\n toFront(value: any): any {\n if (this.modelClass) {\n return this.modelClass.toFront(value);\n }\n return value;\n }\n\n toBack(value: any): any {\n if (this.modelClass) {\n return this.modelClass.toBack(value);\n }\n return value;\n }\n}\n\nexport abstract class StorageEngine {\n constructor(protected name: string, protected fields: {[key: string]: StorageEngineField}) {\n }\n\n addField(key: string, field: StorageEngineField): void {\n this.fields[key] = field;\n }\n\n save(key: string, value: any): void {\n if (!this.fields[key]) {\n return;\n }\n this.setItem(`${this.name}_${key}`, this.fields[key].toBack(value));\n }\n\n get(key: string): any {\n if (!this.fields[key]) {\n return;\n }\n let value = this.getItem(`${this.name}_${key}`);\n if (value === null) {\n value = this.fields[key].defaultValue;\n }\n if (value === null || value === undefined) {\n return value;\n }\n return this.fields[key].toFront(value);\n }\n\n clear(): void {\n for (const field of Object.keys(this.fields)) {\n this.removeItem(field);\n }\n }\n\n protected getItem(key: string): any {\n throw new Error(`Function getItem for store engine ${typeof this} not implemented`);\n }\n\n protected setItem(key: string, value: any): any {\n throw new Error(`Function setItem for store engine ${typeof this} not implemented`);\n }\n\n protected removeItem(key: string): void {\n throw new Error(`Function deleteItem for store engine ${typeof this} not implemented`);\n }\n}\n","import { StorageEngine } from './storage-engine';\n\nexport class LocalStorageEngine extends StorageEngine {\n protected setItem(key: string, value: any) {\n localStorage.setItem(key, JSON.stringify(value));\n }\n\n protected getItem(key: string): any {\n try {\n return JSON.parse(localStorage.getItem(key));\n } catch (e) {\n return;\n }\n }\n\n protected removeItem(key: string): void {\n localStorage.removeItem(key);\n }\n}\n","export function getCookie(name: string): string {\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) {\n return parts.pop().split(';').shift();\n }\n return null;\n}\n","export interface LinkFavicon {\n rel: string;\n sizes?: string;\n href: string;\n type?: string;\n color?: string;\n}\n\nexport function getIconsData(folder: string): LinkFavicon[] {\n return [\n {rel: 'apple-touch-icon', sizes: '180x180', href: `/assets/favicon/${folder}apple-touch-icon.png`},\n {rel: 'icon', type: 'image/png', sizes: '32x32', href: `/assets/favicon/${folder}favicon-32x32.png`},\n {rel: 'icon', type: 'image/png', sizes: '16x16', href: `/assets/favicon/${folder}favicon-16x16.png`},\n {rel: 'shortcut icon', href: `/assets/favicon/${folder}favicon.ico`},\n {rel: 'manifest', href: `/assets/favicon/${folder}site.webmanifest`},\n {rel: 'mask-icon', href: `/assets/favicon/${folder}safari-pinned-tab.svg`, color: '#ff0000'}\n ];\n}\n\nexport function changeFavicons(document: Document, leagueAlias: string): void {\n let folder = '';\n if (leagueAlias === 'ablmoscow') {\n folder = 'abl/';\n }\n const data = getIconsData(folder);\n for (const item of data) {\n const link = document.createElement('link');\n for (const key of Object.keys(item)) {\n link.setAttribute(key, item[key]);\n }\n document.head.appendChild(link);\n }\n}\n","import { Inject, Injectable, Injector, PLATFORM_ID } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { getCookie } from './utils/cookie';\nimport { isPlatformBrowser } from '@angular/common';\nimport { ConfigService } from './services/config.service';\n\n@Injectable()\nexport class HttpCookieInterceptor implements HttpInterceptor {\n private isBrowser = isPlatformBrowser(this.platformId);\n\n constructor(\n private injector: Injector,\n private configService: ConfigService,\n @Inject(PLATFORM_ID) private platformId: string,\n ) {\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (!this.isBrowser) {\n return next.handle(req);\n }\n const apiUrl = this.configService.get('apiUrl');\n if (apiUrl === req.url.substr(0, apiUrl.length)) {\n req = req.clone({withCredentials: true});\n }\n const csrf = getCookie('csrftoken');\n if (csrf) {\n req = req.clone({\n setHeaders: {'X-CSRFToken': csrf}\n });\n }\n return next.handle(req);\n }\n}\n","import {\n ɵComponentType as ComponentType,\n ɵDirectiveType as DirectiveType,\n ɵComponentDef as ComponentDef,\n ɵDirectiveDef as DirectiveDef\n} from '@angular/core';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { Subject } from 'rxjs/internal/Subject';\n\nexport interface OnDestroyLike {\n ngOnDestroy(): void;\n [key: string]: any;\n}\n\nexport function componentDestroyed(component: OnDestroyLike): Observable<void> {\n if ((component.constructor as any).__componentDestroyed$) {\n return (component.constructor as any).__componentDestroyed$;\n }\n throw new Error('Use @UntilDestroy decorator in class');\n}\n\nexport function UntilDestroy(cmpType: any) {\n const def = getDef(cmpType as any);\n const original = (def as any).onDestroy;\n cmpType.__componentDestroyed$ = new Subject<void>();\n (def as any).onDestroy = function() {\n cmpType.__componentDestroyed$.next();\n cmpType.__componentDestroyed$.complete();\n original.apply(this);\n };\n}\n\nfunction getDef<T>(\n type: DirectiveType<T> | ComponentType<T>\n): DirectiveDef<T> | ComponentDef<T> {\n return (type as ComponentType<T>).ɵcmp || (type as DirectiveType<T>).ɵdir;\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { debounceTime, delay, map, switchMap } from 'rxjs/operators';\nimport { Observable, of } from 'rxjs';\n\nexport interface CheckEmailServiceInterface {\n checkEmail(value: string, selfCheck: boolean): Observable<boolean>;\n}\n\nexport const minLengthArrayValidator = (minLength: number) => {\n return (c: AbstractControl) => {\n return c.value.length < minLength\n ? {minLengthArray: {valid: false}}\n : null;\n };\n};\n\nexport const validatePhone = (control: AbstractControl) => {\n if (!control.value) {\n return null;\n }\n const value = `${control.value}`.replace(/\\D/gi, '');\n return value.length === 11 ? null : {invalidPhone: {valid: false}};\n};\n\nexport const validateDate = (control: AbstractControl) => {\n const re = /\\d{2}\\.\\d{2}\\.\\d{4}/gi;\n if (!control.value || re.test(control.value)) {\n return null;\n }\n return {invalidDate: {valid: false}};\n};\n\nexport const validateEmail = (authService: CheckEmailServiceInterface, selfCheck = true, ignore = []) => {\n const subject = of(null).pipe(\n delay(500)\n );\n return (control: AbstractControl) => {\n if (ignore.indexOf(control.value) > -1) {\n return of(null);\n }\n return subject.pipe(\n switchMap(() => authService.checkEmail(control.value, selfCheck).pipe(\n map(valid => valid ? null : {emailTaken: true})\n ))\n );\n };\n};\n\nexport const validateUrl = (control: AbstractControl) => {\n const re = /^(?:http(s)?:\\/\\/)[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/;\n if (!control.value || re.test(control.value)) {\n return null;\n }\n return {invalidUrl: true};\n};\n\nexport function fileSizeValidator(maxFileSize: number): ValidatorFn {\n return (control: AbstractControl): {[key: string]: any} | null => {\n if (!control.value) {\n return null;\n }\n };\n}\n","export function getEnumOptions(enumClass): number[] {\n return Object.keys(enumClass)\n .map(v => enumClass[v])\n .filter(v => isNaN(+v) === false)\n .map(v => +v);\n}\n\n","import { captureException } from '@sentry/angular';\n\nexport function handleError(error, force = false, production = true) {\n if (!(error && (error.status === 0 || error.status === 404)) || (force && error.status !== 0)) {\n captureException(error);\n }\n\n if (!production) {\n console.error(error);\n }\n}\n","export function isTouchDevice() {\n const prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');\n const mq = (q) => {\n return window.matchMedia(q).matches;\n };\n\n if (('ontouchstart' in window) || (window as any).DocumentTouch && document instanceof (window as any).DocumentTouch) {\n return true;\n }\n\n // include the 'heartz' as a way to have a non matching MQ to help terminate the join\n // https://git.io/vznFH\n const query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\n return mq(query);\n}\n","import { FormGroup } from '@angular/forms';\n\nexport function markFormGroupTouched(formGroup: FormGroup) {\n (Object as any).values(formGroup.controls).forEach(control => {\n control.markAsTouched();\n control.markAsDirty();\n\n if (control instanceof FormGroup) {\n markFormGroupTouched(control);\n } else if (control.controls) {\n control.controls.forEach(c => {\n if (c instanceof FormGroup) {\n markFormGroupTouched(c);\n } else {\n c.markAsTouched();\n c.markAsDirty();\n }\n });\n }\n });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@mtgame/core/localization/hockey-penalty-types.ts","ng://@mtgame/core/models/util.ts","ng://@mtgame/core/models/file.ts","ng://@mtgame/core/models/sport.ts","ng://@mtgame/core/models/basketball-profile.ts","ng://@mtgame/core/models/user-profile.ts","ng://@mtgame/core/models/city.ts","ng://@mtgame/core/models/volleyball-profile.ts","ng://@mtgame/core/models/hockey-profile.ts","ng://@mtgame/core/models/football-profile.ts","ng://@mtgame/core/models/handball-profile.ts","ng://@mtgame/core/models/rugby-profile.ts","ng://@mtgame/core/models/user.ts","ng://@mtgame/core/models/tournament-season.ts","ng://@mtgame/core/models/team.ts","ng://@mtgame/core/models/organization.ts","ng://@mtgame/core/models/league.ts","ng://@mtgame/core/models/tournament.ts","ng://@mtgame/core/models/volleyball-game-config.ts","ng://@mtgame/core/models/basketball-game-config.ts","ng://@mtgame/core/models/playoff.ts","ng://@mtgame/core/models/league-court.ts","ng://@mtgame/core/models/media-item.ts","ng://@mtgame/core/models/hockey-game-config.ts","ng://@mtgame/core/models/football-game-config.ts","ng://@mtgame/core/models/handball-game-config.ts","ng://@mtgame/core/utils/array.ts","ng://@mtgame/core/models/game.ts","ng://@mtgame/core/models/tournament-group.ts","ng://@mtgame/core/utils/data.ts","ng://@mtgame/core/models/team-user.ts","ng://@mtgame/core/storage/store.ts","ng://@mtgame/core/services/base.service.ts","ng://@mtgame/core/services/config.service.ts","ng://@mtgame/core/models/tournament-team.ts","ng://@mtgame/core/models/basketball-game-log.ts","ng://@mtgame/core/models/tournament-disqualification.ts","ng://@mtgame/core/models/league-player.ts","ng://@mtgame/core/models/tournament-team-user.ts","ng://@mtgame/core/models/basketball-statistic.ts","ng://@mtgame/core/models/basketball-game-team-statistic.ts","ng://@mtgame/core/models/basketball-game-statistic.ts","ng://@mtgame/core/models/hockey-game-log.ts","ng://@mtgame/core/models/game-user.ts","ng://@mtgame/core/models/game-user-limitation.ts","ng://@mtgame/core/api/game-base-api.ts","ng://@mtgame/core/api/basketball-game-api.ts","ng://@mtgame/core/models/feedback.ts","ng://@mtgame/core/api/feedback-api.ts","ng://@mtgame/core/api/file-api.ts","ng://@mtgame/core/models/football-game-log.ts","ng://@mtgame/core/models/hockey-game-statistic.ts","ng://@mtgame/core/models/hockey-statistic.ts","ng://@mtgame/core/models/hockey-game-team-statistic.ts","ng://@mtgame/core/api/hockey-game-api.ts","ng://@mtgame/core/models/handball-game-log.ts","ng://@mtgame/core/models/football-game-statistic.ts","ng://@mtgame/core/models/football-statistic.ts","ng://@mtgame/core/models/football-game-team-statistic.ts","ng://@mtgame/core/api/football-game-api.ts","ng://@mtgame/core/models/tournament-stage.ts","ng://@mtgame/core/models/handball-game-statistic.ts","ng://@mtgame/core/models/handball-statistic.ts","ng://@mtgame/core/models/handball-game-team-statistic.ts","ng://@mtgame/core/api/handball-game-api.ts","ng://@mtgame/core/models/tournament-news.ts","ng://@mtgame/core/models/game-timeline-stages.ts","ng://@mtgame/core/models/league-news.ts","ng://@mtgame/core/models/volleyball-statistic.ts","ng://@mtgame/core/models/tournament-stage-team.ts","ng://@mtgame/core/models/tournament-event.ts","ng://@mtgame/core/models/league-user.ts","ng://@mtgame/core/models/rugby-statistic.ts","ng://@mtgame/core/api/tournament-api.ts","ng://@mtgame/core/models/league-banner.ts","ng://@mtgame/core/models/league-partner.ts","ng://@mtgame/core/models/poll.ts","ng://@mtgame/core/models/league-document.ts","ng://@mtgame/core/api/league-api.ts","ng://@mtgame/core/api/league-news-api.ts","ng://@mtgame/core/api/league-player-api.ts","ng://@mtgame/core/api/media-api.ts","ng://@mtgame/core/models/game-invite.ts","ng://@mtgame/core/models/team-invite.ts","ng://@mtgame/core/models/team-event-type.ts","ng://@mtgame/core/models/team-event-invite.ts","ng://@mtgame/core/localization/team-event-type.ts","ng://@mtgame/core/models/team-event.ts","ng://@mtgame/core/models/notification.ts","ng://@mtgame/core/models/tournament-team-user-invite.ts","ng://@mtgame/core/models/tournament-invite.ts","ng://@mtgame/core/models/notification-settings.ts","ng://@mtgame/core/models/rugby-game-log.ts","ng://@mtgame/core/api/notification-base-api.ts","ng://@mtgame/core/api/notification-api.ts","ng://@mtgame/core/api/org-notification-api.ts","ng://@mtgame/core/api/reference-api.ts","ng://@mtgame/core/models/rugby-game-team-statistic.ts","ng://@mtgame/core/models/rugby-game-statistic.ts","ng://@mtgame/core/models/team-permission.ts","ng://@mtgame/core/api/rugby-game-api.ts","ng://@mtgame/core/models/team-invite-external.ts","ng://@mtgame/core/models/user-permission.ts","ng://@mtgame/core/models/team-access.ts","ng://@mtgame/core/api/team-api.ts","ng://@mtgame/core/api/team-event-api.ts","ng://@mtgame/core/models/tournament-join-team.ts","ng://@mtgame/core/api/tournament-join-api.ts","ng://@mtgame/core/api/tournament-season-api.ts","ng://@mtgame/core/api/tournament-stage-api.ts","ng://@mtgame/core/models/user-access.ts","ng://@mtgame/core/models/volleyball-game-log.ts","ng://@mtgame/core/api/user-api.ts","ng://@mtgame/core/models/volleyball-game-team-statistic.ts","ng://@mtgame/core/models/volleyball-game-statistic.ts","ng://@mtgame/core/api/volleyball-game-api.ts","ng://@mtgame/core/api/public-team-api.ts","ng://@mtgame/core/api/public-user-api.ts","ng://@mtgame/core/localization/basketball-game-log-types.ts","ng://@mtgame/core/localization/hockey-game-log-types.ts","ng://@mtgame/core/localization/football-game-log-types.ts","ng://@mtgame/core/localization/handball-game-log-types.ts","ng://@mtgame/core/localization/overtime-types.ts","ng://@mtgame/core/localization/rugby-game-log-types.ts","ng://@mtgame/core/localization/team-user-role.ts","ng://@mtgame/core/localization/user-profile.ts","ng://@mtgame/core/localization/volleyball-game-log-types.ts","ng://@mtgame/core/models/league-playlist.ts","ng://@mtgame/core/models/rugby-game-config.ts","ng://@mtgame/core/services/centrifugo.service.ts","ng://@mtgame/core/storage/storage-engine.ts","ng://@mtgame/core/storage/local-storage-engine.ts","ng://@mtgame/core/utils/cookie.ts","ng://@mtgame/core/utils/favicon.ts","ng://@mtgame/core/http-cookie.interceptor.ts","ng://@mtgame/core/utils/component-destroyed.ts","ng://@mtgame/core/utils/validators.ts","ng://@mtgame/core/utils/enum.ts","ng://@mtgame/core/utils/errors.ts","ng://@mtgame/core/utils/device.ts","ng://@mtgame/core/utils/form.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__values","o","m","__read","ar","error","__spread","concat","HockeyPenaltyTypes","id","code","title","BaseModel","data","_b","keys","_c","toFront","dto","toBack","enumField","enumClass","isNaN","penaltyTypeField","find","item","listField","modelClass","isArray","map","DateField","_super","date","Date","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","toISOString","slice","DateTimeField","ModelInstance","config","mappingFields","relation","path","modelType","instance","backField","frontField","extractValue","undefined","FileEngine","ToFrontHook","descriptor","args","_i","parseMethod","ToBackHook","keyParts","split","keyParts_1","keyParts_1_1","k","SportTypes","File","_originalName","name","resizedPath","_path","filePath","file","original_name","resized_path","mime_type","size","engine","created_at","createdAt","GameBasketballPosition","WorkHand","Sport","isBasketball","basketball","parentId","isClassicBasketball","classic_basketball","isStreetball","streetball","isVolleyball","volleyball","isClassicVolleyball","classic_volleyball","isBeachVolleyball","beach_volleyball","isHockey","hockey","isIceHockey","ice_hockey","isBallHockey","ball_hockey","isFootball","football","isClassicFootball","classic_football","isMiniFootball","mini_football","isHandball","handball","isHandballClassic","handball_classic","isRugby","rugby","isRugby15","rugby15","isRugby7","rugby7","sport","parent_id","sub_sports","UserProfile","user_id","height","weight","City","GameVolleyballPosition","VolleyballWorkHand","BasketballProfile","position","work_hand","workHand","GameHockeyPosition","HockeyWorkHand","VolleyballProfile","GameFootballPosition","FootballWorkFoot","HockeyProfile","GameHandballPosition","FootballProfile","work_foot","workFoot","GameRugbyPosition","HandballProfile","UserGender","RugbyProfile","TournamentSeasonStatuses","User","user","lastName","firstName","filter","join","substr","birthDate","diff","getTime","Math","floor","last_name","first_name","middle_name","email","phone","birth_date","photo","profile","basketball_profile","volleyball_profile","hockey_profile","football_profile","handball_profile","rugby_profile","wizards","city","gender","is_active","basketballProfile","volleyballProfile","hockeyProfile","footballProfile","handballProfile","rugbyProfile","Team","getEmptyLogoClass","classList","team","logo","owner","users_count","won_games_count","games_count","score_sum","closest_game_datetime","closestGameDatetime","Organization","owner_id","League","socialLinks","link","indexOf","contact_email","contact_phone","alias","description","social_links","links","organization","tournaments_count","documents_count","cover","about","TournamentTypes","TournamentStatuses","TournamentGender","BasketballStatisticTypes","VolleyballStatisticTypes","GameTimeTypes","OvertimeTypes","TournamentSeason","preview_image","status","start_date","closed_date","tournaments","previewImage","startDate","closedDate","VolleyballGameTypes","TournamentSettings","age_from","age_to","max_team_players","max_game_players","type","tours_count","periods_count","period_time","overtime_type","overtime_time","overtime_score","game_type","timeout_count","timeout_time","substitute_count","game_up_to_score","volleyball_score_in_set","volleyball_score_in_last_set","manage_team_application","recruitment_is_open","transfer_is_open","basketball_statistic_type","volleyball_statistic_type","shot_clock_enabled","game_time_type","with_result_table","free_substitute_enabled","bonus_points_enabled","basketballStatisticType","volleyballStatisticType","gameTimeType","overtimeType","TournamentTeamWinner","team_id","tournament_id","points","Tournament","location","price","regulation_files","settings","league","teams_count","team_winner","team_second","team_third","season","season_id","regulationFile","teamWinner","teamSecond","teamThird","BasketballGameConfig","overtime_timeout_count","statistic_type","statisticType","PlayoffTypes","VolleyballGameConfig","gameType","best_of_three","getSetMaxScore","set","setsCount","scoreInLastSet","scoreInSet","score_in_set","score_in_last_set","LeagueCourt","address","league_id","MediaItem","Boolean","videoUrl","original_photo","list_photo","detail_photo","game","tournament","game_id","video_url","video_preview","is_live","originalPhoto","listPhoto","detailPhoto","videoPreview","HockeyGameConfig","periodsCount","FootballGameConfig","HandballGameConfig","generateArray","GameStatuses","GameResultTypes","PlayoffSettings","rounds","final_rounds","third_place_rounds","min_player_games_count","min_player_time","Playoff","_this","stages","log","teamsCount","getPlayoffStages","stagesCount","stage","playoffStage","pow","tournament_stage_id","is_official","TournamentGroup","sort","TournamentTeamShort","Game","_basketballGameConfig","gameConfig","_volleyballGameConfig","_hockeyGameConfig","_handballGameConfig","_footballGameConfig","scoreByPeriod","period","teamScore","competitorTeamScore","closed","competitorTeam","teamId","competitorTeamId","tournament_team","tournament_team_id","competitor_team","competitor_tournament_team","competitor_tournament_team_id","competitor_team_id","competitor_team_name","datetime","team_score","competitor_team_score","result_type","playoff_number","tournament_tour","game_config","basketball_game_config","volleyball_game_config","hockey_game_config","football_game_config","handball_game_config","score_by_period","playoff_stage","tournament_playoff_id","tournament_playoff","tournament_court","media_count","media_live_count","media","tournament_group","tournamentTeam","competitorTournamentTeam","resultType","basketballGameConfig","volleyballGameConfig","hockeyGameConfig","footballGameConfig","handballGameConfig","tournamentPlayoff","tournamentCourt","tournamentGroup","updateItemInArray","force","checkFunction","isFunction","updatedAt","updateItemsInArray","items","forEach","addItemInArray","atEnd","addItemsInArray","reverse","deleteItemFromArray","functionToCheck","toString","TeamUserRole","Store","get","getSubject","pipe","save","appendItem","appendItems","prependItem","prependItems","updateItem","updateItems","deleteItem","dispose","complete","clearStorageData","clear","getEngine","BehaviorSubject","BaseService","store","Injectable","providedIn","ConfigService","configData","initialize","_a","Optional","Inject","TournamentTeam","gamesCount","wonGamesCount","group","final_standing","draw_games_count","last_games_count","last_games_won","missed_sum","score_points_sum","missed_points_sum","games","notifications_count","win_normal_time_games_count","lose_normal_time_games_count","win_overtime_games_count","lose_overtime_games_count","last_five_games","lastFiveGames","BasketballGameLogTypes","TeamUser","teamPlayer","role","number","TournamentDisqualification","tournament_team_user_id","date_from","date_to","matches_count","dateFrom","dateTo","LeaguePlayer","middleName","has_changes","rating","TournamentTeamUser","team_user","disqualified","disqualification","league_player","teamUser","leaguePlayer","BasketballStatistic","personalFouls","technicalFouls","unsportsmanlikeFouls","gameTime","tournament_team_user","month","win_lose","two_points_made","three_points_made","free_throws_made","one_points_made","two_point_attempts","three_point_attempts","free_throw_attempts","one_point_attempts","two_point_percent","three_point_percent","free_throw_percent","one_point_percent","assists","blocks","rebounds","offensive_rebounds","defensive_rebounds","steals","turnovers","personal_fouls","technical_fouls","unsportsmanlike_fouls","game_time","newbie","rank","tournamentTeamUser","BasketballGameTeamStatistic","BasketballGameStatistic","gameUserId","game_user_id","updated_at","HockeyGameLogTypes","HockeyAdvantageTypes","BasketballGameLog","active","isPointsType","two_point_made","three_point_made","free_throw_made","one_point_made","logType","isReboundType","rebound","offensive_rebound","defensive_rebound","isFoulType","personal_foul","technical_foul","unsportsmanlike_foul","getScore","compare","model","time","minutes","seconds","unique_id","log_type","is_highlight","GameUser","is_mvp","GameUserLimitationTypes","min_user_games_count","min_user_time","manual","GameUserLimitations","limitations","GameBaseApi","httpClient","configService","getUsers","gameId","toPromise","getMvp","getUsersLimitation","HttpClient","BasketballGameApi","getById","getTeamStatistic","getUserStatistic","getLogs","downloadProtocol","fileType","responseType","downloadFibaProtocol","Feedback","theme","message","files","captcha","FeedbackApi","sendFeedback","post","response","sendLeagueFeedback","leagueId","FileApi","upload","fileData","filename","width","params","HttpParams","formData","FormData","append","createZipArchive","files_1","files_1_1","FootballGameLogTypes","HockeyGameLog","_penalizedGameUserId","isScoreType","goal","shootout_goal","after_game_shootout_goal","isPenaltyType","minor_penalty","major_penalty","misconduct_penalty","game_misconduct_penalty","penalty_shot","match_penalty","isAfter","advantage","advantage_num","is_goalie","penalty_type","penalized_game_user_id","mutual_penalty","penaltyType","HockeyGameStatistic","evShotsOnGoal","ppShotsOnGoal","shShotsOnGoal","evShotsBlocked","ppShotsBlocked","shShotsBlocked","evShotMisses","ppShotMisses","shShotMisses","ppShots","evShots","shShots","shootoutAttempts","shots","ppGoals","shGoals","evGoals","goals","shootoutGoals","ppAssists","evAssists","shAssists","faceOffWins","faceOffLosses","saves","goalsAgainst","shootoutSaves","shootoutGoalsAgainst","shotsAgainst","shootoutShotsAgainst","round","totalShotsAgainst","totalSaves","pp_shot_misses","pp_shots_on_goal","pp_shots_blocked","ev_shot_misses","ev_shots_on_goal","ev_shots_blocked","sh_shot_misses","sh_shots_on_goal","sh_shots_blocked","pp_goals","ev_goals","sh_goals","pp_assists","ev_assists","sh_assists","shootout_attempts","shootout_goals","after_game_shootout_attempts","after_game_shootout_goals","block_shots","face_off_losses","face_off_wins","shootout_save","after_game_shootout_saves","goals_against","shootout_goals_against","after_game_shootout_goals_against","safety_rate","penalty_minutes","plus_minus","HockeyStatistic","lose_games_count","pp_shots","ev_shots","sh_shots","pp_goals_percent","ev_goals_percent","sh_goals_percent","total_goals","shot_misses","shots_on_goal","shots_blocked","total_shots","goals_percent","total_goals_percent","face_offs","face_off_percent","total_saves","shootout_saves","shots_against","shootout_shots_against","total_shots_against","saves_percent","total_saves_percent","total_goals_against","HockeyGameTeamStatistic","HockeyGameApi","format","downloadApplication","HandballGameLogTypes","FootballGameLog","penalty_goal","small_penalty_goal","auto_goal","FootballGameStatistic","shotMisses","shotsOnGoal","shotsBlocked","penaltyGoals","smallPenaltyGoals","totalGoals","penaltyAttempts","penaltyShots","smallPenaltyAttempts","smallPenaltyShots","penaltySaves","penaltyGoalsAgainst","smallPenaltySaves","smallPenaltyGoalsAgainst","autoGoalsAgainst","penaltyShotsAgainst","smallPenaltyShotsAgainst","corners","free_kicks","penalty_goals","penalty_attempts","penalty_goals_against","penalty_saves","small_penalty_goals","small_penalty_attempts","small_penalty_goals_against","small_penalty_saves","fouls","yellow_cards","red_cards","perfect_passes","losses","outs","auto_goals","auto_goals_against","FootballStatistic","drawGamesCount","scoreSum","missedSum","shots_on_goal_percent","penalty_goals_percent","penalty_shots_against","penalty_saves_percent","small_penalty_goals_percent","small_penalty_shots_against","small_penalty_saves_percent","FootballGameTeamStatistic","FootballGameApi","TournamentStageStatuses","HandballGameLog","foul","yellow_card","red_card","HandballGameStatistic","penaltyShotsOnGoal","penaltyMisses","penalty_misses","penalty_shots_on_goal","yellowCards","two_minute_fouls","HandballStatistic","penalty_shots","HandballGameTeamStatistic","HandballGameApi","TournamentNews","picture","text","author","GameTimelineStageItem","stage_id","playoff_stages_count","GameTimelineStages","current_tour","current_playoff_stage","LeagueNewsType","TournamentStage","VolleyballStatistic","receives","excellentReceives","serve_hits","serve_faults","serve_aces","serve_percent","ace_percent","stuff_blocks","block_faults","block_rebounds","block_percent","attack_spikes","attack_faults","attack_shots","attack_percent","receive_faults","excellent_receives","receive_percent","serve_receives","serve_receive_faults","excellent_serve_receives","serve_receive_percent","faults","TournamentStageTeam","received_points","TournamentEventTypes","LeagueNews","preview_text","detail_text","mobile_picture","is_main","video_link","tag","mobilePicture","LeagueUserRoles","LeagueUserPermissions","TournamentEvent","news","event","LeagueUser","_role","permissions","RugbyStatistic","tries","penalty_tries","conversion_goals","conversion_misses","drawing_ball","drop_goals","drop_goal_misses","offloads","tackles","handling_errors","carries_other_gainline","scrums_won","scrum_losses","scrums_won_free","lineouts_success","lineouts_steal","quick_throws","rucks_won","ruck_losses","mauls_won","maul_losses","TournamentApi","tournamentId","getByAlias","getNews","getEvents","page","filters","search","tournamentTour","observe","total","headers","getTournamentStages","getPlayoff","getPlayoffGames","playoffId","playoffNumber","getGamesStages","getGames","applyGamesFilters","getGroups","getTeams","groupId","getStageTeams","getTeamById","tournamentTeamId","getUserById","userId","getUserGames","tournamentUserId","getBasketballStatisticLeaders","applyStatisticLeadersFilters","getVolleyballStatisticLeaders","getHockeyStatisticLeaders","getFootballStatisticLeaders","getHandballStatisticLeaders","getBasketballStatistic","applyStatisticFilters","getVolleyballStatistic","getHockeyStatistic","getFootballStatistic","getHandballStatistic","getRugbyStatistic","getTournamentTeamUsers","myPermission","getTournamentTeamTournaments","getTournamentUserTournaments","tournamentTeamUserId","tournamentIds","tournamentStageId","statuses","tournamentCourtId","leaguePlayerId","query","isPlayoff","per_game","tournament_ids","is_playoff","fields","BannerLocation","LeaguePartner","PollStatuses","LeagueBanner","LeagueDocument","LeagueApi","getByDomain","domain","getTournaments","getTournamentSeasons","getSeasons","notClosed","include","getPartners","getBanners","getCourts","getGraphicSettings","getDocuments","LeagueNewsApi","getLeagueNewsList","getMainLeagueNews","getMainLeagueNewsList","getNewsById","newsId","getTournamentNewsList","LeaguePlayerApi","getTournamentUsers","seasonId","MediaApi","getMedia","mediaId","getTournamentGameMedia","applyGameMediaFilters","getLeagueGameMedia","getLeagueMedia","mediaType","getGameMediaById","getGameMedia","createZip","mediaIds","downloadMedia","mediaCount","GameInviteStatus","PollVariant","uuid","PollAnswer","answer_uuid","poll_id","Poll","variantsWithAnswers","_variants","_answers","calculateAnswersPercentage","variants","answersByVariant","reduce","acc","answerUuid","variant","percent","a","answers","multiple_answer","anonymous","TeamInvite","user_accept","team_accept","updateAt","TeamEventTypes","GameInvite","TeamEventInviteStatuses","TeamEventTypeLocalization","training","other","TeamEvent","eventType","eventCustomName","event_type","event_custom_name","NotificationType","NotificationServiceEnum","TeamEventInvite","team_event_id","team_user_id","TournamentTeamUserInvite","tournament_team_invite_id","accepted","TournamentInvite","teamAccept","organizationAccept","organization_accept","user_invites_count","user_invites","userInvites","NotificationAllowTypes","Notification","initiator","team_invite","poll","game_invite","team_event","team_event_invite","tournament_invite","viewed","protected","service","teamInvite","gameInvite","teamEvent","teamEventInvite","tournamentInvite","RugbyGameLogTypes","NotificationSettings","popup","sound","browser","NotificationBaseApi","getCount","apiUrl","getList","markViewed","notificationId","markAllViewed","getNotificationSettings","updateNotificationSettings","NotificationApi","OrgNotificationApi","ReferenceApi","getCities","getSports","RugbyGameTeamStatistic","RugbyGameStatistic","TeamPermissionTypes","RUGBY_GAME_LOG_TYPE_POINTS","_a$1","penalty_try","try","conversion_goal","drop_goal","RUGBY_TEAM_LOG_TYPES","timeout","scrum_won","scrum_lose","scrum_won_free","lineout_success","lineout_loss","lineout_steal","quick_throw","ruck_won","ruck_lose","maul_won","maul_lose","team_foul","RugbyGameLog","scorePoints","isTeamType","includes","RugbyGameApi","TeamInviteExternal","UserPermissionTypes","TeamPermission","players","statistic","polls","events","TeamAccess","can_edit","can_view_users","can_manage_permission","can_change_owner","can_delete","can_manage_invites","can_view_invites","can_manage_polls","can_view_polls","can_answer_poll","can_manage_games","can_view_games","can_view_statistic","can_promote_users","can_edit_users","can_delete_users","can_view_events","can_manage_events","can_view_tournaments","can_manage_tournaments","TeamApi","sportId","getTeamAccess","update","values","patch","delete","getPermission","updatePermission","permission","updateUserRole","teamUserId","updateUserNumber","gameNumber","deleteUser","changeOwner","getInvites","sendInvite","acceptInvite","invite","declineInvite","resendInvite","getInvitesExternal","sendInviteExternal","deleteInviteExternal","resendInviteExternal","getPolls","archive","createPoll","getUsersStatistic","joinTeam","leaveTeam","createGame","getTeamEvents","createTeamEvent","getTournamentTeams","getTournamentInvites","getTournamentGames","acceptTournamentInvite","inviteId","declineTournamentInvite","registerLazyUser","userData","getLazyUser","updateLazyUser","deleteLazyUser","resendLazyUserEmail","TeamEventApi","getTeamEvent","teamEventId","updateTeamEvent","deleteTeamEvent","getTeamEventInvites","createTeamEventInvite","acceptTeamEventInvite","declineTeamEventInvite","TournamentJoinData","validUsersCount","invalidUsersCount","hasAccess","inviteSent","alreadyInTournament","valid_users_count","invalid_users_count","has_access","invite_sent","already_in_tournament","TournamentJoinTeam","join_data","joinData","TournamentJoinApi","getTeamsForJoin","getTeamUsers","joinTournament","invites","TournamentSeasonApi","short","getPlayoffs","TournamentStageApi","stageId","UserAccess","edit","personal_data","teams","VolleyballGameLogType","UserPermission","personalData","UserApi","getCurrentUser","getAccess","updateUser","updateUserPhoto","changePassword","oldPassword","password","passwordConfirm","payload","old_password","password_confirm","changeEmail","changeEmailConfirm","token","getUserProfile","getBasketballProfile","getVolleyballProfile","updateUserProfile","userProfile","updateUserBasketballProfile","updateUserVolleyballProfile","getUserPermissions","updateUserPermission","getStatistics","getStreetballStatistics","getGameInvites","acceptGameInvite","declineGameInvite","searchUsers","setWizardShowed","wizard","put","VolleyballGameTeamStatistic","VolleyballGameStatistic","attackSpikes","attackShots","stuffBlocks","blockRebounds","SCORE_LOG_TYPES","serve_ace","stuff_block","attack_spike","point","FAULT_LOG_TYPES","serve_fault","attack_fault","block_fault","receive_fault","fault","serve_receive_fault","VolleyballGameLog","rally","isFaultType","isServe","serve_hit","isAttack","attack_shot","isReceive","receive","excellent_receive","isServeReceive","serve_receive","excellent_serve_receive","isBlock","block_rebound","isEnterExit","enter_game","exit_game","isComboType","VolleyballGameApi","downloadProtocolLight","PublicTeamApi","PublicUserApi","getTournamentUser","getLeaguePlayer","BasketballGameLogTypeLocalization","_a$2","remove_game","two_point_attempt","three_point_attempt","free_throw_attempt","one_point_attempt","assist","block","steal","turnover","team_rebound","HockeyGameLogTypeLocalization","_a$3","shot_miss","shot_on_goal","shot_blocked","shootout_attempt","after_game_shootout_attempt","block_shot","face_off_lose","face_off_win","after_game_shootout_save","penalty_start","penalty_end","FootballGameLogTypeLocalization","_a$4","penalty_attempt","small_penalty_attempt","corner","free_kick","penalty_save","small_penalty_save","perfect_pass","loss","out","HandballGameLogTypeLocalization","_a$5","penalty_miss","penalty_shot_on_goal","two_minute_foul","OvertimeTypeLocalization","_a$6","to_score_diff","to_score_total","without_overtime","to_first_goal","to_first_goal_and_bullitts","bullitts","penalties","time_and_penalties","RugbyGameLogTypeLocalization","_a$7","conversion_miss","drop_goal_miss","offload","tackle","handling_error","TeamUserRoleLocalization","_a$8","member","moderator","admin","coach","head_coach","playing_coach","manager","head_manager","captain","assistant","GameBasketballPositionLocalization","_a$9","point_guard","shooting_guard","small_forward","power_forward","center","GameBasketballPositionShortLocalization","WorkHandLocalization","left","right","GameVolleyballPositionLocalization","_d","setter","libero","middle_player","receiver_attacker","dioganal","GameVolleyballPositionShortLocalization","_e","GameVolleyballPositionShortRuLocalization","_f","VolleyballWorkHandLocalization","_g","GameHockeyPositionLocalization","_h","goaltender","defensemen","forward","GameFootballPositionLocalization","_j","goalkeeper","midfielder","FootballWorkFootLocalization","_k","both","GameHandballPositionLocalization","_l","winger","pivot","centre_back","fullback","GameRugbyPositionLocalization","_m","front_line","second_line","back_line","halfback","three_quarter","VolleyballGameLogTypeLocalization","_a$a","LeaguePlaylist","key_code","RugbyGameConfig","overtime_periods","CentrifugoService","channels$","subscriptions","connectedSubject","listen","channel","Subject","subscription","connect","subscribe","connected","addEngineSubscription","setTimeout","unsubscribe","initializeEngineSubject","ReplaySubject","initializeEngine","url","timestamp","transports","centrifuge","on","publish","Observable","observer","res","disconnect","Centrifuge","resolveMessage","bind","StorageEngineField","defaultValue","StorageEngine","addField","field","setItem","getItem","removeItem","Error","LocalStorageEngine","localStorage","JSON","stringify","parse","getCookie","parts","document","cookie","shift","getIconsData","folder","rel","sizes","href","color","HttpCookieInterceptor","injector","platformId","isBrowser","isPlatformBrowser","intercept","req","handle","clone","withCredentials","csrf","setHeaders","X-CSRFToken","Injector","PLATFORM_ID","cmpType","def","ɵcmp","ɵdir","original","onDestroy","__componentDestroyed$","leagueAlias","data_1","data_1_1","createElement","e_2","setAttribute","head","appendChild","component","maxFileSize","control","array","chunks","chunkLength","ceil","production","captureException","console","prefixes","window","DocumentTouch","q","matchMedia","matches","markFormGroupTouched","formGroup","controls","markAsTouched","markAsDirty","FormGroup","minLength","minLengthArray","valid","test","invalidDate","authService","selfCheck","ignore","subject","of","delay","switchMap","checkEmail","emailTaken","replace","invalidPhone","invalidUrl"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export const HockeyPenaltyTypes = [\n {id: 1, code: 'ÐÐÐ ÐС', title: 'ÐгÑеÑÑÐ¾Ñ Ð² дÑаке'},\n {id: 2, code: 'ÐТ-Ð-ÐÐÐ', title: 'ÐÑака в Ð³Ð¾Ð»Ð¾Ð²Ñ Ð¸Ð»Ð¸ ÑеÑ'},\n {id: 3, code: 'ÐТ-ÐÐ ', title: 'ÐÑака вÑаÑаÑÑ'},\n {id: 4, code: 'ÐТ-СÐ', title: 'ÐÑака Ñзади'},\n {id: 5, code: 'ÐÐÐÐ', title: 'ÐлокиÑовка'},\n {id: 6, code: 'ÐÐ -ÐÐ', title: 'ÐÑоÑок клÑÑки'},\n {id: 7, code: 'ÐÐ-ШÐ', title: 'ÐÑбÑÐ¾Ñ ÑайбÑ'},\n {id: 8, code: 'ÐРУÐ', title: 'ÐÑÑбоÑÑÑ'},\n {id: 9, code: 'ÐÐСЦ', title: 'ÐиÑÑиплинаÑнÑй ÑÑÑаÑ'},\n {id: 10, code: 'ÐÐС-ÐÐ', title: 'ÐиÑÑиплинаÑнÑй до конÑа маÑÑа'},\n {id: 11, code: 'ÐÐ ÐÐÐ', title: 'ÐÑака'},\n {id: 12, code: 'ÐÐЧÐÐ', title: 'ÐаÑинÑик дÑаки'},\n {id: 13, code: 'ÐÐ-ÐÐ', title: 'ÐадеÑжка игÑÑ'},\n {id: 14, code: 'ÐÐ-ÐÐ-СÐ', title: 'ÐадеÑжка клÑÑки ÑопеÑника'},\n {id: 15, code: 'ÐÐ-ÐÐ', title: 'ÐадеÑжка клÑÑкой'},\n {id: 16, code: 'ÐÐ-СÐ', title: 'ÐадеÑжка ÑопеÑника'},\n {id: 17, code: 'ÐÐ-ШÐ', title: 'ÐадеÑжка ÑÐ°Ð¹Ð±Ñ ÑÑками'},\n {id: 18, code: 'СÐ-ÐÐ', title: 'ÐгÑа Ñо Ñломанной клÑÑкой'},\n {id: 19, code: 'ÐÐ-ÐÐ', title: 'ÐгÑа вÑÑоко поднÑÑой клÑÑкой'},\n {id: 20, code: 'ÐÐ-УÐ', title: 'ÐолÑÑий ÑдаÑ'},\n {id: 21, code: 'СÐ-ШТ', title: 'ÐалÑй ÑкамееÑнÑй ÑÑÑаÑ'},\n {id: 22, code: 'ÐШ', title: 'ÐаÑÑ-ÑÑÑаÑ'},\n {id: 23, code: 'ÐÐ-ÐТ', title: 'ÐепÑавилÑÐ½Ð°Ñ Ð°Ñака'},\n {id: 24, code: 'ЧС-СТ', title: 'ÐаÑÑÑение ÑиÑленного ÑоÑÑава'},\n {id: 25, code: 'ÐС-ÐÐ', title: 'ÐеÑÑандаÑÑÐ½Ð°Ñ ÐºÐ»ÑÑка'},\n {id: 26, code: 'ÐÐÐ -ÐÐ', title: 'ÐпаÑное ÑнаÑÑжение'},\n {id: 27, code: 'ÐС-ÐÐ', title: 'ÐÑкоÑбление ÑÑдей и неÑпоÑÑивное поведение'},\n {id: 28, code: 'ÐТ-ÐÐ', title: 'ÐÑказ наÑаÑÑ Ð¸Ð³ÑÑ'},\n {id: 29, code: 'ÐТСЧ', title: 'ÐÑÑеÑение'},\n {id: 30, code: 'ÐÐÐÐÐÐ', title: 'Ðлевок'},\n {id: 31, code: 'ÐÐÐÐ', title: 'Ðодножка'},\n {id: 32, code: 'ÐÐÐС', title: 'ÐодÑеÑка'},\n {id: 33, code: 'ÐÐ -ÐÐ', title: 'ÐÑедÑпÑеждение инÑекÑий'},\n {id: 34, code: 'ÐÐ-СÐ', title: 'Ðокидание Ñкамейки во вÑÐµÐ¼Ñ ÐºÐ¾Ð½ÑликÑа'},\n {id: 35, code: 'СÐ-ÐÐ ', title: 'Сдвиг воÑоÑ'},\n {id: 36, code: 'СÐÐ', title: 'СимÑлÑÑиÑ'},\n {id: 37, code: 'ТÐ-ÐÐ ', title: 'ТолÑок на боÑÑ'},\n {id: 38, code: 'ТÐ-ÐÐ', title: 'ТолÑок клÑÑкой'},\n {id: 39, code: 'УÐ-ÐÐÐ', title: 'Ð£Ð´Ð°Ñ Ð³Ð¾Ð»Ð¾Ð²Ð¾Ð¹'},\n {id: 40, code: 'УÐ-ÐÐ', title: 'Ð£Ð´Ð°Ñ ÐºÐ»ÑÑкой'},\n {id: 41, code: 'УÐ-Ð-ÐÐ', title: 'Ð£Ð´Ð°Ñ ÐºÐ¾Ð½Ñом клÑÑки'},\n {id: 42, code: 'УÐ-ÐÐÐ', title: 'Ð£Ð´Ð°Ñ ÐºÐ¾Ð»ÐµÐ½Ð¾Ð¼'},\n {id: 43, code: 'УÐ-ÐÐÐ', title: 'Ð£Ð´Ð°Ñ Ð»Ð¾ÐºÑем'},\n {id: 44, code: 'УÐ-ÐÐ', title: 'Ð£Ð´Ð°Ñ Ð½Ð¾Ð³Ð¾Ð¹'},\n {id: 45, code: 'УÐУС', title: 'УкÑÑ'},\n {id: 46, code: 'ÐÐ-ÐÐ ', title: 'ФизиÑеÑкий конÑÐ°ÐºÑ Ñо зÑиÑелем'},\n {id: 47, code: 'ШТ-ÐÐ ', title: 'ШÑÑÐ°Ñ Ð²ÑаÑаÑÑ'}\n];\n","import { HockeyPenaltyTypes } from '../localization/hockey-penalty-types';\n\nexport const MODEL_MAPPING_FIELDS_KEY = '_mapping_fields_';\nexport const MODEL_RELATION_KEY = '_relation_';\nexport const MODEL_TO_FRONT_KEY = '_to_front_';\nexport const MODEL_TO_BACK_KEY = '_to_back_';\n\ntype ParserInterface = (dto: any, path?: GraphPathInterface) => any;\n\ninterface ModelTypeInterface {\n new(data?: any);\n}\n\nexport interface ModelInterface {\n toFront(dto: any): any;\n toBack(dto: any): any;\n}\n\nexport abstract class BaseModel {\n constructor(data?: {[key: string]: any}) {\n if (data) {\n for (const key of Object.keys(data)) {\n this[key] = data[key];\n }\n }\n }\n\n static toFront(dto: any): any {\n return undefined;\n }\n\n static toBack(dto: any): any {\n return undefined;\n }\n}\n\ninterface GraphPathInterface {\n [key: string]: any;\n}\n\nexport function enumField(enumClass) {\n return {\n toFront: (value) => {\n if (isNaN(+value)) {\n return enumClass[value];\n } else {\n return value;\n }\n },\n toBack: (value) => {\n if (isNaN(+value)) {\n return value;\n } else {\n return enumClass[value];\n }\n }\n };\n}\n\nexport function penaltyTypeField() {\n return {\n toFront: (data) => {\n if (!data) {\n return null;\n }\n if (typeof data === 'object') {\n return data;\n }\n return HockeyPenaltyTypes.find(item => item.id === data);\n },\n toBack: (data) => {\n if (!data) {\n return null;\n }\n if (typeof data === 'object') {\n return data.id;\n }\n return data;\n }\n };\n}\n\nexport function listField(modelClass) {\n return {\n toFront: (value) => {\n if (!Array.isArray(value)) {\n return [];\n }\n return value.map(item => modelClass.toFront(item));\n },\n toBack: (value) => {\n if (!Array.isArray(value)) {\n return [];\n }\n return value.map(item => modelClass.toBack(item));\n }\n };\n}\n\nexport class DateField extends BaseModel {\n static toFront(date: any): any {\n if (date) {\n return new Date(date);\n } else {\n return undefined;\n }\n }\n static toBack(date: Date): any {\n if (date) {\n const dateUtc = new Date(Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds())\n );\n return dateUtc.toISOString().slice(0, 10);\n } else {\n return undefined;\n }\n }\n}\n\nexport class DateTimeField extends BaseModel {\n static toFront(date: any): any {\n if (date) {\n return new Date(date);\n } else {\n return undefined;\n }\n }\n static toBack(date: Date): any {\n if (date) {\n const dateUtc = new Date(Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds())\n );\n return date.toISOString();\n } else {\n return undefined;\n }\n }\n}\n\nexport function ModelInstance(\n config: {\n mappingFields?: { [key: string]: string },\n relation?: { [key: string]: BaseModel }\n }\n) {\n return (target: ModelTypeInterface) => {\n if (config) {\n if (config.mappingFields) {\n target[MODEL_MAPPING_FIELDS_KEY] = config.mappingFields;\n }\n if (config.relation) {\n target[MODEL_RELATION_KEY] = config.relation;\n }\n target[MODEL_TO_FRONT_KEY] = (dto: any, path: GraphPathInterface) => {\n return toFront(target, dto, path);\n };\n target[MODEL_TO_BACK_KEY] = (dto: any, path: GraphPathInterface) => {\n return toBack(target, dto, path);\n };\n }\n };\n}\n\nexport const ToFrontHook = (target: ModelTypeInterface, key: string | symbol, descriptor: TypedPropertyDescriptor<Function>) => {\n return {\n value: (...args: any[]) => {\n const parseMethod = target[MODEL_TO_FRONT_KEY] as ParserInterface;\n if (parseMethod) {\n return parseMethod(args[0], (args.length > 1 ? args[1] : undefined));\n }\n return undefined;\n }\n };\n};\n\nexport const ToBackHook = (target: ModelTypeInterface, key: string | symbol, descriptor: TypedPropertyDescriptor<Function>) => {\n return {\n value: (...args: any[]) => {\n const parseMethod = target[MODEL_TO_BACK_KEY] as ParserInterface;\n if (parseMethod) {\n return parseMethod(args[0]);\n }\n return undefined;\n }\n };\n};\n\nfunction extractValue(key, data) {\n if (!data) {\n return undefined;\n }\n\n const keyParts = key.split('.');\n if (keyParts.length === 1) {\n if (key in data) {\n return data[key];\n } else {\n return undefined;\n }\n }\n\n for (const k of keyParts) {\n if (data && k in data) {\n data = data[k];\n } else {\n return undefined;\n }\n }\n\n return data;\n}\n\nfunction toFront(modelType: ModelTypeInterface, data: any, path?: GraphPathInterface): any {\n // Check if recursion is required\n if (Array.isArray(data)) {\n return data.map(item => {\n return toFront(modelType, item);\n });\n }\n\n const instance = new modelType();\n\n // Mapping fields\n const mappingFields = modelType[MODEL_MAPPING_FIELDS_KEY] as string[];\n const relation = modelType[MODEL_RELATION_KEY] as { [key: string]: ModelInterface };\n if (mappingFields) {\n for (const backField of Object.keys(mappingFields)) {\n const frontField = mappingFields[backField];\n const value = extractValue(backField, data);\n if (relation && relation.hasOwnProperty(frontField)) {\n instance[frontField] = relation[frontField].toFront(value);\n } else {\n instance[frontField] = value;\n }\n }\n }\n\n return instance;\n}\n\nfunction toBack(modelType: ModelTypeInterface, instance: any, path?: GraphPathInterface): any {\n if (!instance) {\n return instance;\n }\n\n // Check if recursion is required\n if (Array.isArray(instance)) {\n return instance.map(item => {\n return toBack(modelType, item);\n });\n }\n\n const data = {};\n const mappingFields = modelType[MODEL_MAPPING_FIELDS_KEY] as string[];\n const relation = modelType[MODEL_RELATION_KEY] as { [key: string]: ModelInterface };\n if (mappingFields) {\n for (const backField of Object.keys(mappingFields)) {\n const frontField = mappingFields[backField];\n if (relation && relation.hasOwnProperty(frontField) && instance[frontField] !== undefined) {\n data[backField] = relation[frontField].toBack(instance[frontField]);\n } else {\n data[backField] = instance[frontField];\n }\n }\n }\n\n return data;\n}\n","import { ModelInstance, ToFrontHook, ToBackHook, enumField, DateTimeField } from './util';\n\nexport enum FileEngine {\n django = 1,\n s3\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n original_name: 'originalName',\n path: 'path',\n resized_path: 'resizedPath',\n mime_type: 'mimeType',\n size: 'size',\n engine: 'engine',\n created_at: 'createdAt',\n },\n relation: {\n engine: enumField(FileEngine),\n createdAt: DateTimeField,\n }\n})\nexport class File {\n id: number;\n name: string;\n _originalName: string;\n _path: string;\n resizedPath: string;\n mimeType: string;\n size: number;\n engine: FileEngine;\n createdAt: Date;\n\n set originalName(name: string) {\n this._originalName = name;\n }\n\n get originalName(): string {\n return this._originalName || this.name;\n }\n\n set path(filePath: string) {\n this._path = filePath;\n }\n\n get path(): string {\n return this.resizedPath || this._path;\n }\n\n @ToFrontHook\n static toFront(data: any): File {\n return null;\n }\n\n @ToBackHook\n static toBack(file: File): any {\n return null;\n }\n}\n","import {ModelInstance, ToFrontHook, ToBackHook, BaseModel} from './util';\n\nexport enum SportTypes {\n basketball = 1,\n volleyball = 2,\n classic_basketball = 3,\n streetball = 4,\n classic_volleyball = 5,\n beach_volleyball = 6,\n hockey = 7,\n ice_hockey = 8,\n ball_hockey = 9,\n football = 10,\n classic_football = 11,\n mini_football = 12,\n handball = 13,\n handball_classic = 14,\n rugby = 15,\n rugby7 = 16,\n rugby15 = 17,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n parent_id: 'parentId',\n sub_sports: 'subSports'\n }\n})\nexport class Sport extends BaseModel {\n id: number;\n name: string;\n parentId: number;\n subSports: Sport[];\n\n isBasketball() {\n return this.id === SportTypes.basketball || this.parentId === SportTypes.basketball;\n }\n\n isClassicBasketball() {\n return this.id === SportTypes.classic_basketball;\n }\n\n isStreetball() {\n return this.id === SportTypes.streetball;\n }\n\n isVolleyball() {\n return this.id === SportTypes.volleyball || this.parentId === SportTypes.volleyball;\n }\n\n isClassicVolleyball() {\n return this.id === SportTypes.classic_volleyball;\n }\n\n isBeachVolleyball() {\n return this.id === SportTypes.beach_volleyball;\n }\n\n isHockey(): boolean {\n return this.id === SportTypes.hockey || this.parentId === SportTypes.hockey;\n }\n\n isIceHockey(): boolean {\n return this.id === SportTypes.ice_hockey;\n }\n\n isBallHockey(): boolean {\n return this.id === SportTypes.ball_hockey;\n }\n\n isFootball() {\n return this.id === SportTypes.football || this.parentId === SportTypes.football;\n }\n\n isClassicFootball() {\n return this.id === SportTypes.classic_football;\n }\n\n isMiniFootball() {\n return this.id === SportTypes.mini_football;\n }\n\n isHandball() {\n return this.id === SportTypes.handball || this.parentId === SportTypes.handball;\n }\n\n isHandballClassic() {\n return this.id === SportTypes.handball_classic;\n }\n\n isRugby() {\n return this.id === SportTypes.rugby || this.parentId === SportTypes.rugby;\n }\n\n isRugby15() {\n return this.id === SportTypes.rugby15;\n }\n\n isRugby7() {\n return this.id === SportTypes.rugby7;\n }\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(sport: Sport): any {\n return null;\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameBasketballPosition {\n point_guard = 1,\n shooting_guard,\n small_forward,\n power_forward,\n center\n}\n\nexport enum WorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameBasketballPosition),\n workHand: enumField(WorkHand)\n }\n})\nexport class BasketballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameBasketballPosition;\n workHand: WorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n height: 'height',\n weight: 'weight'\n }\n})\nexport class UserProfile {\n id: number;\n userId: number;\n height: number;\n weight: number;\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name'\n }\n})\nexport class City extends BaseModel {\n id: number;\n name: string;\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameVolleyballPosition {\n setter = 1,\n libero,\n middle_player,\n receiver_attacker,\n dioganal\n}\n\nexport enum VolleyballWorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameVolleyballPosition),\n workHand: enumField(VolleyballWorkHand)\n }\n})\nexport class VolleyballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameVolleyballPosition;\n workHand: VolleyballWorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameHockeyPosition {\n defensemen = 1,\n forward,\n goaltender\n}\n\nexport enum HockeyWorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameHockeyPosition),\n workHand: enumField(HockeyWorkHand)\n }\n})\nexport class HockeyProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameHockeyPosition;\n workHand: HockeyWorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameFootballPosition {\n defensemen = 1,\n midfielder,\n forward,\n goalkeeper\n}\n\nexport enum FootballWorkFoot {\n left = 1,\n right,\n both\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_foot: 'workFoot'\n },\n relation: {\n position: enumField(GameFootballPosition),\n workFoot: enumField(FootballWorkFoot)\n }\n})\nexport class FootballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameFootballPosition;\n workFoot: FootballWorkFoot;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { WorkHand } from './basketball-profile';\n\nexport enum GameHandballPosition {\n goalkeeper = 1,\n winger,\n pivot,\n centre_back,\n fullback\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameHandballPosition),\n workHand: enumField(WorkHand)\n }\n})\nexport class HandballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameHandballPosition;\n workHand: WorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameRugbyPosition {\n front_line = 1,\n second_line,\n back_line,\n halfback,\n three_quarter,\n fullback,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position'\n },\n relation: {\n position: enumField(GameRugbyPosition),\n }\n})\nexport class RugbyProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameRugbyPosition;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, DateField, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { UserProfile } from './user-profile';\nimport { File } from './file';\nimport { City } from './city';\nimport { BasketballProfile } from './basketball-profile';\nimport { VolleyballProfile } from './volleyball-profile';\nimport { HockeyProfile } from './hockey-profile';\nimport { FootballProfile } from './football-profile';\nimport { HandballProfile } from './handball-profile';\nimport { RugbyProfile } from './rugby-profile';\n\nexport enum UserGender {\n male = 1,\n female\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n last_name: 'lastName',\n first_name: 'firstName',\n middle_name: 'middleName',\n email: 'email',\n phone: 'phone',\n birth_date: 'birthDate',\n photo: 'photo',\n profile: 'profile',\n basketball_profile: 'basketballProfile',\n volleyball_profile: 'volleyballProfile',\n hockey_profile: 'hockeyProfile',\n football_profile: 'footballProfile',\n handball_profile: 'handballProfile',\n rugby_profile: 'rugbyProfile',\n wizards: 'wizards',\n city: 'city',\n gender: 'gender',\n is_active: 'isActive',\n },\n relation: {\n birthDate: DateField,\n photo: File,\n profile: UserProfile,\n basketballProfile: BasketballProfile,\n volleyballProfile: VolleyballProfile,\n hockeyProfile: HockeyProfile,\n footballProfile: FootballProfile,\n handballProfile: HandballProfile,\n rugbyProfile: RugbyProfile,\n city: City,\n gender: enumField(UserGender)\n }\n})\nexport class User extends BaseModel {\n id: number;\n lastName: string;\n firstName: string;\n middleName: string;\n email: string;\n phone: string;\n birthDate: Date;\n profile: UserProfile;\n basketballProfile: BasketballProfile;\n volleyballProfile: VolleyballProfile;\n hockeyProfile: HockeyProfile;\n footballProfile: FootballProfile;\n handballProfile: HandballProfile;\n rugbyProfile: RugbyProfile;\n photo: File;\n wizards: string[];\n city: City;\n gender: UserGender;\n isActive: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(user: User): any {\n return null;\n }\n\n get fullName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get shortName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get initials(): string {\n return [this.lastName, this.firstName].filter(s => s).map(s => s.substr(0, 1)).join('');\n }\n\n get age(): number {\n if (!this.birthDate) {\n return null;\n }\n const diff = (new Date()).getTime() - this.birthDate.getTime();\n return Math.floor(diff / (365 * 86400 * 1000));\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, enumField, DateField } from './util';\nimport { File } from './file';\n\nexport enum TournamentSeasonStatuses {\n open,\n in_progress,\n closed,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n alias: 'alias',\n logo: 'logo',\n cover: 'cover',\n preview_image: 'previewImage',\n status: 'status',\n start_date: 'startDate',\n closed_date: 'closedDate',\n tournaments: 'tournaments',\n },\n relation: {\n logo: File,\n cover: File,\n previewImage: File,\n status: enumField(TournamentSeasonStatuses),\n startDate: DateField,\n closedDate: DateField,\n }\n})\nexport class TournamentSeason extends BaseModel {\n id: number;\n name: string;\n alias: string;\n logo: File;\n cover: File;\n previewImage: File;\n status: TournamentSeasonStatuses;\n startDate: Date;\n closedDate: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateField } from './util';\nimport { File } from './file';\nimport { Sport } from './sport';\nimport { User } from './user';\nimport { City } from './city';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n sport: 'sport',\n logo: 'logo',\n owner: 'owner',\n city: 'city',\n users_count: 'usersCount',\n won_games_count: 'wonGamesCount',\n games_count: 'gamesCount',\n score_sum: 'scoreSum',\n closest_game_datetime: 'closestGameDatetime',\n },\n relation: {\n sport: Sport,\n logo: File,\n owner: User,\n city: City,\n closestGameDatetime: DateField,\n }\n})\nexport class Team extends BaseModel {\n id: number;\n name: string;\n sport: Sport;\n logo: File;\n owner: User;\n city: City;\n usersCount: number;\n wonGamesCount: number;\n gamesCount: number;\n scoreSum: number;\n closestGameDatetime: Date;\n\n getEmptyLogoClass(): string {\n const classList = ['empty-logo'];\n if (this.sport.isBasketball()) {\n classList.push('empty-logo-basketball');\n }\n if (this.sport.isVolleyball()) {\n classList.push('empty-logo-volleyball');\n }\n if (this.sport.isHockey()) {\n classList.push('empty-logo-hockey');\n }\n if (this.sport.isFootball()) {\n classList.push('empty-logo-football');\n }\n if (this.sport.isHandball()) {\n classList.push('empty-logo-handball');\n }\n return classList.join(' ');\n }\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(team: Team): any {\n return null;\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\nimport { User } from './user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n owner_id: 'ownerId',\n owner: 'owner',\n },\n relation: {\n owner: User,\n }\n})\nexport class Organization extends BaseModel {\n id: number;\n ownerId: number;\n owner: User;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField } from './util';\nimport { Organization } from './organization';\nimport { File } from './file';\nimport { Sport } from './sport';\n\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n logo: 'logo',\n contact_email: 'contactEmail',\n contact_phone: 'contactPhone',\n name: 'name',\n alias: 'alias',\n sport: 'sport',\n description: 'description',\n social_links: 'socialLinks',\n links: 'links',\n organization: 'organization',\n tournaments_count: 'tournamentsCount',\n documents_count: 'documentsCount',\n closest_game_datetime: 'closestGameDatetime',\n cover: 'cover',\n about: 'about',\n },\n relation: {\n organization: Organization,\n logo: File,\n cover: File,\n sport: Sport,\n }\n})\nexport class League extends BaseModel {\n id: number;\n logo: File;\n contactEmail: string;\n contactPhone: string;\n name: string;\n alias: string;\n sport: Sport;\n description: string;\n socialLinks: string[];\n links: string[];\n organization: Organization;\n tournamentsCount: number;\n documentsCount: number;\n closestGameDatetime: string;\n cover: File;\n about: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get vkLink(): string {\n return this.socialLinks.find(link => link.indexOf('vk.com/') > -1);\n }\n\n get fbLink(): string {\n return this.socialLinks.find(link => link.indexOf('facebook.com/') > -1);\n }\n\n get instaLink(): string {\n return this.socialLinks.find(link => link.indexOf('instagram.com/') > -1);\n }\n\n get youtubeLink(): string {\n return this.socialLinks.find(link => link.indexOf('youtube.com/') > -1);\n }\n\n get telegramLink(): string {\n return this.socialLinks.find(link =>\n link.substr(0, 13) === 'https://t.me/' ||\n link.substr(0, 17) === 'https://www.t.me/'\n );\n }\n\n get tiktokLink(): string {\n return this.socialLinks.find(link => link.indexOf('tiktok.com/') > -1);\n }\n}\n","import { BaseModel, enumField, ModelInstance, DateTimeField, ToBackHook, ToFrontHook } from './util';\nimport { City } from './city';\nimport { File } from './file';\nimport { League } from './league';\nimport { Sport } from './sport';\nimport { Team } from './team';\nimport { TournamentSeason } from './tournament-season';\n\nexport enum TournamentTypes {\n group = 'group',\n elimination = 'elimination',\n fiba = 'fiba'\n}\n\nexport enum TournamentStatuses {\n open,\n in_progress,\n closed,\n}\n\nexport enum TournamentGender {\n male= 1,\n female,\n all\n}\n\nexport enum BasketballStatisticTypes {\n standard = 1,\n light,\n advanced\n}\n\nexport enum VolleyballStatisticTypes {\n standard = 1,\n light,\n advanced\n}\n\nexport enum GameTimeTypes {\n clean = 1,\n dirty,\n}\n\nexport enum OvertimeTypes {\n to_score_total = 1,\n to_score_diff,\n time,\n without_overtime,\n to_first_goal,\n to_first_goal_and_bullitts,\n bullitts,\n penalties,\n time_and_penalties\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n gender: 'gender',\n age_from: 'ageFrom',\n age_to: 'ageTo',\n max_team_players: 'maxTeamPlayers',\n max_game_players: 'maxGamePlayers',\n type: 'type',\n tours_count: 'toursCount',\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n overtime_score: 'overtimeScore',\n game_type: 'gameType',\n timeout_count: 'timeoutCount',\n timeout_time: 'timeoutTime',\n substitute_count: 'substituteCount',\n game_up_to_score: 'gameUpToScore',\n volleyball_score_in_set: 'volleyballScoreInSet',\n volleyball_score_in_last_set: 'volleyballScoreInLastSet',\n manage_team_application: 'manageTeamApplication',\n recruitment_is_open: 'recruitmentIsOpen',\n transfer_is_open: 'transferIsOpen',\n basketball_statistic_type: 'basketballStatisticType',\n volleyball_statistic_type: 'volleyballStatisticType',\n shot_clock_enabled: 'shotClockEnabled',\n game_time_type: 'gameTimeType',\n with_result_table: 'withResultTable',\n free_substitute_enabled: 'freeSubstituteEnabled',\n bonus_points_enabled: 'bonusPointsEnabled',\n },\n relation: {\n type: enumField(TournamentTypes),\n gender: enumField(TournamentGender),\n basketballStatisticType: enumField(BasketballStatisticTypes),\n volleyballStatisticType: enumField(VolleyballStatisticTypes),\n gameTimeType: enumField(GameTimeTypes),\n overtimeType: enumField(OvertimeTypes),\n }\n})\nexport class TournamentSettings extends BaseModel {\n id: number;\n gender: TournamentGender;\n ageFrom: number;\n ageTo: number;\n maxTeamPlayers: number;\n maxGamePlayers: number;\n type: TournamentTypes;\n toursCount: number;\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n overtimeScore: number;\n gameType: string;\n timeoutCount: number;\n timeoutTime: number;\n substituteCount: number;\n gameUpToScore: number;\n volleyballScoreInSet: number;\n volleyballScoreInLastSet: number;\n manageTeamApplication: boolean;\n recruitmentIsOpen: boolean;\n transferIsOpen: boolean;\n basketballStatisticType: BasketballStatisticTypes;\n volleyballStatisticType: VolleyballStatisticTypes;\n shotClockEnabled: boolean;\n gameTimeType: GameTimeTypes;\n withResultTable: boolean;\n freeSubstituteEnabled: boolean;\n bonusPointsEnabled: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n tournament_id: 'tournamentId',\n name: 'name',\n logo: 'logo',\n team: 'team',\n points: 'points',\n },\n relation: {\n logo: File,\n team: Team,\n }\n})\nexport class TournamentTeamWinner extends BaseModel {\n id: number;\n teamId: number;\n tournamentId: number;\n name: string;\n logo: File;\n team: Team;\n points: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n alias: 'alias',\n logo: 'logo',\n cover: 'cover',\n preview_image: 'previewImage',\n city: 'city',\n sport: 'sport',\n location: 'location',\n description: 'description',\n date: 'date',\n price: 'price',\n regulation_files: 'regulationFiles',\n settings: 'settings',\n league: 'league',\n teams_count: 'teamsCount',\n closest_game_datetime: 'closestGameDatetime',\n status: 'status',\n team_winner: 'teamWinner',\n team_second: 'teamSecond',\n team_third: 'teamThird',\n season: 'season',\n season_id: 'seasonId',\n },\n relation: {\n logo: File,\n cover: File,\n previewImage: File,\n city: City,\n sport: Sport,\n regulationFile: File,\n settings: TournamentSettings,\n date: DateTimeField,\n league: League,\n status: enumField(TournamentStatuses),\n teamWinner: TournamentTeamWinner,\n teamSecond: TournamentTeamWinner,\n teamThird: TournamentTeamWinner,\n season: TournamentSeason,\n }\n})\nexport class Tournament extends BaseModel {\n id: number;\n name: string;\n alias: string;\n logo: File;\n cover: File;\n previewImage: File;\n city: City;\n sport: Sport;\n location: string;\n description: string;\n date: Date;\n price: number;\n regulationFiles: File[];\n settings: TournamentSettings;\n league: League;\n teamsCount: number;\n closestGameDatetime: string;\n status: TournamentStatuses;\n teamWinner: TournamentTeamWinner;\n teamSecond: TournamentTeamWinner;\n teamThird: TournamentTeamWinner;\n season: TournamentSeason;\n seasonId: number;\n\n getEmptyLogoClass(): string {\n const classList = ['empty-logo'];\n if (this.sport.isBasketball()) {\n classList.push('empty-logo-basketball');\n }\n if (this.sport.isVolleyball()) {\n classList.push('empty-logo-volleyball');\n }\n if (this.sport.isHockey()) {\n classList.push('empty-logo-hockey');\n }\n if (this.sport.isFootball()) {\n classList.push('empty-logo-football');\n }\n return classList.join(' ');\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { VolleyballStatisticTypes } from './tournament';\n\nexport enum VolleyballGameTypes {\n best_of_five = 1,\n best_of_three\n}\n\n@ModelInstance({\n mappingFields: {\n game_type: 'gameType',\n timeout_count: 'timeoutCount',\n timeout_time: 'timeoutTime',\n substitute_count: 'substituteCount',\n score_in_set: 'scoreInSet',\n score_in_last_set: 'scoreInLastSet',\n statistic_type: 'statisticType'\n },\n relation: {\n gameType: enumField(VolleyballGameTypes),\n statisticType: enumField(VolleyballStatisticTypes),\n }\n})\nexport class VolleyballGameConfig extends BaseModel {\n gameType: VolleyballGameTypes;\n timeoutCount: number;\n timeoutTime: number;\n substituteCount: number;\n scoreInSet: number;\n scoreInLastSet: number;\n statisticType: VolleyballStatisticTypes;\n\n get setsCount(): number {\n return this.gameType === VolleyballGameTypes.best_of_three ? 3 : 5;\n }\n\n getSetMaxScore(set: number) {\n return set === this.setsCount ? this.scoreInLastSet : this.scoreInSet;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { BasketballStatisticTypes, GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n game_up_to_score: 'gameUpToScore',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n overtime_score: 'overtimeScore',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n statistic_type: 'statisticType',\n shot_clock_enabled: 'shotClockEnabled',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n statisticType: enumField(BasketballStatisticTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class BasketballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n gameUpToScore: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n overtimeScore: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n statisticType: BasketballStatisticTypes;\n shotClockEnabled: boolean;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { generateArray } from '../utils/array';\n\nexport enum PlayoffTypes {\n double_elimination = 'double_elimination',\n elimination = 'elimination'\n}\n\n@ModelInstance({\n mappingFields: {\n rounds: 'rounds',\n final_rounds: 'finalRounds',\n third_place_rounds: 'thirdPlaceRounds',\n teams_count: 'teamsCount',\n type: 'type',\n min_player_games_count: 'minPlayerGamesCount',\n min_player_time: 'minPlayerTime',\n },\n relation: {\n type: enumField(PlayoffTypes)\n }\n})\nexport class PlayoffSettings extends BaseModel {\n rounds: number;\n finalRounds: number;\n thirdPlaceRounds: number;\n teamsCount: number;\n type: PlayoffTypes;\n minPlayerGamesCount: number;\n minPlayerTime: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n settings: 'settings',\n tournament_id: 'tournamentId',\n tournament_stage_id: 'tournamentStageId',\n is_official: 'isOfficial'\n },\n relation: {\n settings: PlayoffSettings\n }\n})\nexport class Playoff extends BaseModel {\n id: number;\n name: string;\n settings: PlayoffSettings;\n tournamentId: number;\n tournamentStageId: number;\n isOfficial: boolean;\n private stages: {title: string, value: number}[] = [];\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get stagesCount(): number {\n return Math.log(this.settings.teamsCount) / Math.log(2);\n }\n\n getPlayoffStages() {\n if (this.stages.length === 0 && this.settings.teamsCount) {\n const stagesCount = Math.log(this.settings.teamsCount) / Math.log(2);\n this.stages = generateArray(stagesCount).map(stage => {\n const playoffStage = this.settings.teamsCount / 2 ** stage;\n let title = '';\n if (playoffStage === 1) {\n title = 'Финал';\n } else {\n title = `1 / ${playoffStage}`;\n }\n return {\n value: stage,\n title\n };\n });\n }\n return this.stages;\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n address: 'address',\n league_id: 'leagueId'\n }\n})\nexport class LeagueCourt extends BaseModel {\n id: number;\n name: string;\n address: string;\n leagueId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n original_photo: 'originalPhoto',\n list_photo: 'listPhoto',\n detail_photo: 'detailPhoto',\n game: 'game',\n tournament: 'tournament',\n game_id: 'gameId',\n tournament_id: 'tournament_id',\n video_url: 'videoUrl',\n video_preview: 'videoPreview',\n is_live: 'isLive',\n },\n relation: {\n originalPhoto: File,\n listPhoto: File,\n detailPhoto: File,\n videoPreview: File\n }\n})\nexport class MediaItem extends BaseModel {\n id: number;\n originalPhoto: File;\n listPhoto: File;\n detailPhoto: File;\n gameId: number;\n tournamentId: number;\n videoUrl: string;\n videoPreview: File;\n isLive: boolean;\n\n get isVideo(): boolean {\n return Boolean(this.videoUrl);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class HockeyGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get overtimePeriod(): number {\n return this.periodsCount + 1;\n }\n\n get bullitsPeriod(): number {\n return this.periodsCount + 2;\n }\n\n get playoffBullitsPeriod(): number {\n return this.periodsCount + 3;\n }\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class FootballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class HandballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","export function generateArray(length: number): number[] {\n if (length <= 0) {\n return [];\n }\n return Array.apply(null, Array(length)).map((_, i) => i + 1);\n}\n\nexport function getArrayChunks(array: any[], length: number): any[][] {\n const chunks = [];\n const chunkLength = Math.ceil(array.length / length);\n if (chunkLength === 0) {\n return [array];\n }\n for (let i = 0; i < chunkLength; i++) {\n chunks.push(array.slice(i * length, (i + 1) * length));\n }\n return chunks;\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField, listField } from './util';\nimport { Team } from './team';\nimport { BasketballGameConfig } from './basketball-game-config';\nimport { VolleyballGameConfig } from './volleyball-game-config';\nimport { LeagueCourt } from './league-court';\nimport { MediaItem } from './media-item';\nimport { HockeyGameConfig } from './hockey-game-config';\nimport { Tournament } from './tournament';\nimport { FootballGameConfig } from './football-game-config';\nimport { HandballGameConfig } from './handball-game-config';\nimport { Playoff } from './playoff';\nimport { TournamentGroup } from './tournament-group';\nimport { File } from './file';\n\nexport enum GameStatuses {\n open = 1,\n in_progress,\n closed,\n archived,\n draft\n}\n\nexport enum GameResultTypes {\n team_won = 1,\n competitor_team_won,\n team_technical_defeat,\n competitor_team_technical_defeat\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n logo: 'logo',\n },\n relation: {\n logo: File\n }\n})\nexport class TournamentTeamShort extends BaseModel {\n id: number;\n name: string;\n logo: File;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n status: 'status',\n team: 'team',\n tournament_team: 'tournamentTeam',\n tournament_team_id: 'tournamentTeamId',\n team_id: 'teamId',\n competitor_team: 'competitorTeam',\n competitor_tournament_team: 'competitorTournamentTeam',\n competitor_tournament_team_id: 'competitorTournamentTeamId',\n competitor_team_id: 'competitorTeamId',\n competitor_team_name: 'competitorTeamName',\n datetime: 'datetime',\n location: 'location',\n team_score: 'teamScore',\n competitor_team_score: 'competitorTeamScore',\n result_type: 'resultType',\n playoff_number: 'playoffNumber',\n tournament_id: 'tournamentId',\n tournament_tour: 'tournamentTour',\n game_config: 'gameConfig',\n basketball_game_config: 'basketballGameConfig',\n volleyball_game_config: 'volleyballGameConfig',\n hockey_game_config: 'hockeyGameConfig',\n football_game_config: 'footballGameConfig',\n handball_game_config: 'handballGameConfig',\n score_by_period: 'scoreByPeriod',\n playoff_stage: 'playoffStage',\n tournament_stage_id: 'tournamentStageId',\n tournament_playoff_id: 'tournamentPlayoffId',\n tournament_playoff: 'tournamentPlayoff',\n tournament_court: 'tournamentCourt',\n media_count: 'mediaCount',\n media_live_count: 'mediaLiveCount',\n media: 'media',\n tournament: 'tournament',\n tournament_group: 'tournamentGroup',\n },\n relation: {\n status: enumField(GameStatuses),\n team: Team,\n tournamentTeam: TournamentTeamShort,\n competitorTeam: Team,\n competitorTournamentTeam: TournamentTeamShort,\n datetime: DateTimeField,\n resultType: enumField(GameResultTypes),\n basketballGameConfig: BasketballGameConfig,\n volleyballGameConfig: VolleyballGameConfig,\n hockeyGameConfig: HockeyGameConfig,\n footballGameConfig: FootballGameConfig,\n handballGameConfig: HandballGameConfig,\n tournamentPlayoff: Playoff,\n tournamentCourt: LeagueCourt,\n media: listField(MediaItem),\n tournament: Tournament,\n tournamentGroup: TournamentGroup,\n }\n})\nexport class Game extends BaseModel {\n private _basketballGameConfig: BasketballGameConfig;\n private _volleyballGameConfig: VolleyballGameConfig;\n private _hockeyGameConfig: HockeyGameConfig;\n private _footballGameConfig: FootballGameConfig;\n private _handballGameConfig: HandballGameConfig;\n\n id: number;\n status: GameStatuses;\n team: Team;\n tournamentTeam: TournamentTeamShort;\n teamId: number;\n tournamentTeamId: number;\n competitorTeam: Team;\n competitorTournamentTeam: TournamentTeamShort;\n competitorTeamId: number;\n competitorTournamentTeamId: number;\n competitorTeamName: string;\n gameConfig: any;\n datetime: Date;\n location: string;\n teamScore: number;\n competitorTeamScore: number;\n resultType: GameResultTypes;\n playoffNumber: string;\n tournamentId: number;\n tournamentTour: number;\n scoreByPeriod: any;\n playoffStage: string;\n tournamentStageId: number;\n tournamentPlayoffId: number;\n tournamentPlayoff: Playoff;\n tournamentCourt: LeagueCourt;\n mediaCount: number;\n mediaLiveCount: number;\n media: MediaItem[];\n tournament: Tournament;\n tournamentGroup: TournamentGroup;\n\n get basketballGameConfig(): BasketballGameConfig {\n if (this._basketballGameConfig && this._basketballGameConfig.periodsCount) {\n return this._basketballGameConfig;\n }\n if (this.gameConfig) {\n this._basketballGameConfig = BasketballGameConfig.toFront(this.gameConfig);\n }\n return this._basketballGameConfig;\n }\n\n set basketballGameConfig(value) {\n this._basketballGameConfig = value;\n }\n\n get volleyballGameConfig(): VolleyballGameConfig {\n if (this._volleyballGameConfig && this._volleyballGameConfig.setsCount) {\n return this._volleyballGameConfig;\n }\n if (this.gameConfig) {\n this._volleyballGameConfig = VolleyballGameConfig.toFront(this.gameConfig);\n }\n return this._volleyballGameConfig;\n }\n\n set volleyballGameConfig(value) {\n this._volleyballGameConfig = value;\n }\n\n get hockeyGameConfig(): HockeyGameConfig {\n if (this._hockeyGameConfig && this._hockeyGameConfig.periodsCount) {\n return this._hockeyGameConfig;\n }\n if (this.gameConfig) {\n this._hockeyGameConfig = HockeyGameConfig.toFront(this.gameConfig);\n }\n return this._hockeyGameConfig;\n }\n\n set hockeyGameConfig(value) {\n this._hockeyGameConfig = value;\n }\n\n get handballGameConfig(): HandballGameConfig {\n if (this._handballGameConfig && this._handballGameConfig.periodsCount) {\n return this._handballGameConfig;\n }\n if (this.gameConfig) {\n this._handballGameConfig = HandballGameConfig.toFront(this.gameConfig);\n }\n return this._handballGameConfig;\n }\n\n set handballGameConfig(value) {\n this._handballGameConfig = value;\n }\n\n get footballGameConfig(): FootballGameConfig {\n if (this._footballGameConfig && this._footballGameConfig.periodsCount) {\n return this._footballGameConfig;\n }\n if (this.gameConfig) {\n this._footballGameConfig = FootballGameConfig.toFront(this.gameConfig);\n }\n return this._footballGameConfig;\n }\n\n set footballGameConfig(value) {\n this._footballGameConfig = value;\n }\n\n get scoreByPeriodList(): {period: number, teamScore: number, competitorTeamScore: number}[] {\n if (!this.scoreByPeriod) {\n return [];\n }\n return Object.keys(this.scoreByPeriod).map(period => ({\n period: +period,\n teamScore: this.scoreByPeriod[period][0],\n competitorTeamScore: this.scoreByPeriod[period][1]\n }));\n }\n\n get isClosed(): boolean {\n return this.status === GameStatuses.closed;\n }\n\n get isTeamWon() {\n return this.teamScore > this.competitorTeamScore;\n }\n\n get isCompetitorTeamWon() {\n return this.competitorTeamScore > this.teamScore;\n }\n\n get teamWinnerId() {\n if (this.status !== GameStatuses.closed) {\n return null;\n }\n if (this.teamScore === this.competitorTeamScore) {\n return null;\n }\n if (this.team.id) {\n return this.teamScore > this.competitorTeamScore ? this.team.id : this.competitorTeam.id;\n } else {\n return this.teamScore > this.competitorTeamScore ? this.teamId : this.competitorTeamId;\n }\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { TournamentTeam } from './tournament-team';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n sort: 'sort',\n tournament_stage_id: 'tournamentStageId'\n }\n})\nexport class TournamentGroup extends BaseModel {\n id: number;\n name: string;\n sort: number;\n tournamentStageId: number;\n teams: TournamentTeam[];\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","export function updateItemInArray(data: any[], item: any, force = false, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return data;\n }\n return data.map(v => {\n if (checkFunction && isFunction(checkFunction)) {\n if (!checkFunction(v)) {\n return v;\n }\n } else if (v.id !== item.id) {\n return v;\n }\n if (v.updatedAt && item.updatedAt && !force) {\n return v.updatedAt > item.updatedAt ? v : item;\n }\n return item;\n });\n}\n\nexport function updateItemsInArray(data: any[], items: any[], force: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n items.forEach(item => {\n data = updateItemInArray(data, item, force, checkFunction);\n });\n return data;\n}\n\nexport function patchItemInArray(data: any[], item: any, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return data;\n }\n return data.map(v => {\n if (checkFunction && isFunction(checkFunction)) {\n if (!checkFunction(v)) {\n return v;\n }\n } else if (v.id !== item.id) {\n return v;\n }\n return Object.assign(v, item);\n });\n}\n\nexport function addItemInArray(data: any[], item: any, atEnd: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return [item];\n }\n if (data.find(i => isFunction(checkFunction) ? checkFunction(i) : i.id === item.id)) {\n return data;\n }\n\n return atEnd\n ? [...data, item]\n : [item, ...data];\n}\n\nexport function addItemsInArray(data: any[], items: any[], atEnd: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n (!atEnd\n ? Object.assign([], items).reverse()\n : items\n ).forEach(item => {\n data = addItemInArray(data, item, atEnd, checkFunction);\n });\n return data;\n}\n\nexport function deleteItemFromArray(data: any[], item: any): any[] {\n if (!Array.isArray(data)) {\n return [];\n }\n if (isFunction(item)) {\n return data.filter(i => !item(i));\n } else {\n return data.filter(v => v.id !== item.id);\n }\n}\n\nfunction isFunction(functionToCheck) {\n return functionToCheck && {}.toString.call(functionToCheck) === '[object Function]';\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { User } from './user';\nimport { Team } from './team';\n\nexport enum TeamUserRole {\n member = 1,\n moderator,\n admin,\n coach,\n head_coach,\n playing_coach,\n manager,\n head_manager,\n captain,\n assistant,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n user: 'user',\n role: 'role',\n number: 'number',\n team: 'team',\n },\n relation: {\n user: User,\n team: Team,\n role: enumField(TeamUserRole)\n }\n})\nexport class TeamUser extends BaseModel {\n id: number;\n teamId: number;\n user: User;\n team: Team;\n number: number;\n role: TeamUserRole;\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(teamPlayer: TeamUser): any {\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { addItemInArray, addItemsInArray, deleteItemFromArray, updateItemInArray, updateItemsInArray } from '../utils/data';\nimport { StorageEngine } from './storage-engine';\n\nexport class Store {\n private data: {[key: string]: BehaviorSubject<any>} = {};\n\n constructor(private engine?: StorageEngine) {\n }\n\n get(key: string): Observable<any> {\n return this.getSubject(key).pipe(filter(item => item !== undefined));\n }\n\n value(key: string): any {\n return this.getSubject(key).value;\n }\n\n save(key: string, value: any): void {\n this.getSubject(key).next(value);\n if (this.engine) {\n this.engine.save(key, value);\n }\n }\n\n appendItem(key: string, value: any, checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemInArray(this.value(key) || [], value, true, checkFunction));\n }\n\n appendItems(key: string, value: any[], checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemsInArray(this.value(key) || [], value, true));\n }\n\n prependItem(key: string, value: any, checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemInArray(this.value(key) || [], value, false, checkFunction));\n }\n\n prependItems(key: string, value: any[], checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemsInArray(this.value(key) || [], value, false, checkFunction));\n }\n\n updateItem(key: string, value: any, force?: boolean, checkFunction?: (item: any) => boolean): void {\n this.save(key, updateItemInArray(this.value(key) || [], value, force, checkFunction));\n }\n\n updateItems(key: string, value: any, force?: boolean, checkFunction?: (item: any) => boolean): void {\n this.save(key, updateItemsInArray(this.value(key) || [], value, force, checkFunction));\n }\n\n deleteItem(key: string, value: any): void {\n this.save(key, deleteItemFromArray(this.value(key) || [], value));\n }\n\n dispose(): void {\n for (const key of Object.keys(this.data)) {\n this.data[key].complete();\n delete this.data[key];\n }\n }\n\n clearStorageData(): void {\n if (this.engine) {\n this.engine.clear();\n }\n }\n\n getEngine(): StorageEngine {\n return this.engine;\n }\n\n private getSubject(key: string): BehaviorSubject<any> {\n if (!this.data[key]) {\n this.data[key] = new BehaviorSubject<any>(this.engine ? this.engine.get(key) : undefined);\n }\n return this.data[key];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '../storage/store';\n\n@Injectable({providedIn: 'root'})\nexport class BaseService {\n protected store = new Store();\n\n dispose(): void {\n this.store.dispose();\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { BaseService } from './base.service';\n\nconst CONFIG_STORE_KEY = 'config';\n\nexport const CONFIG_DATA = 'mtg-core-config-data';\n\n@Injectable({providedIn: 'root'})\nexport class ConfigService extends BaseService {\n constructor(\n @Optional() @Inject(CONFIG_DATA) private configData: any\n ) {\n super();\n if (configData) {\n this.initialize(configData);\n }\n }\n\n get config$() {\n return this.store.get(CONFIG_STORE_KEY);\n }\n\n get config() {\n return this.store.value(CONFIG_STORE_KEY) || {};\n }\n\n initialize(data: any): void {\n this.store.save(CONFIG_STORE_KEY, data);\n }\n\n set(key: string, value: any): void {\n this.store.save(CONFIG_STORE_KEY, {\n ...this.config,\n [key]: value\n });\n }\n\n get(key: string): any {\n return this.store.value(CONFIG_STORE_KEY) && this.store.value(CONFIG_STORE_KEY)[key];\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\nimport { TournamentGroup } from './tournament-group';\nimport { Game } from './game';\nimport { Tournament } from './tournament';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n logo: 'logo',\n team_id: 'teamId',\n tournament_id: 'tournamentId',\n tournament: 'tournament',\n team: 'team',\n group: 'group',\n final_standing: 'finalStanding',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n draw_games_count: 'drawGamesCount',\n last_games_count: 'lastGamesCount',\n last_games_won: 'lastGamesWon',\n score_sum: 'scoreSum',\n missed_sum: 'missedSum',\n score_points_sum: 'scorePointsSum',\n missed_points_sum: 'missedPointsSum',\n points: 'points',\n users_count: 'usersCount',\n games: 'games',\n notifications_count: 'notificationsCount',\n win_normal_time_games_count: 'winNormalTimeGamesCount',\n lose_normal_time_games_count: 'loseNormalTimeGamesCount',\n win_overtime_games_count: 'winOvertimeGamesCount',\n lose_overtime_games_count: 'loseOvertimeGamesCount',\n last_five_games: 'lastFiveGames'\n },\n relation: {\n logo: File,\n tournament: Tournament,\n team: Team,\n group: TournamentGroup,\n games: Game,\n lastFiveGames: Game,\n }\n})\nexport class TournamentTeam extends BaseModel {\n id: number;\n name: string;\n logo: File;\n teamId: number;\n tournamentId: number;\n tournament: Tournament;\n team: Team;\n group: TournamentGroup;\n finalStanding: number;\n gamesCount: number;\n wonGamesCount: number;\n drawGamesCount: number;\n lastGamesCount: number;\n lastGamesWon: number;\n scoreSum: number;\n missedSum: number;\n scorePointsSum: number;\n missedPointsSum: number;\n points: number;\n usersCount: number;\n games: Game[];\n notificationsCount: number;\n winNormalTimeGamesCount: number;\n loseNormalTimeGamesCount: number;\n winOvertimeGamesCount: number;\n loseOvertimeGamesCount: number;\n lastFiveGames: Game[];\n\n get gamesWonPercent(): number {\n if (!this.gamesCount) {\n return 0;\n }\n return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { enumField, ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateTimeField } from './util';\nimport { GameUser } from './game-user';\nimport { GameLogBase } from './game-log-base';\n\nexport enum BasketballGameLogTypes {\n enter_game = 1,\n exit_game,\n remove_game,\n two_point_made,\n three_point_made,\n free_throw_made,\n two_point_attempt,\n three_point_attempt,\n free_throw_attempt,\n assist,\n block,\n rebound,\n offensive_rebound,\n defensive_rebound,\n steal,\n turnover,\n personal_foul,\n technical_foul,\n unsportsmanlike_foul,\n one_point_attempt,\n one_point_made,\n timeout,\n team_rebound,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(BasketballGameLogTypes),\n }\n})\nexport class BasketballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: BasketballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n combined: BasketballGameLog;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n\n isPointsType() {\n return [\n BasketballGameLogTypes.two_point_made,\n BasketballGameLogTypes.three_point_made,\n BasketballGameLogTypes.free_throw_made,\n BasketballGameLogTypes.one_point_made,\n ].indexOf(this.logType) > -1;\n }\n\n isReboundType() {\n return [\n BasketballGameLogTypes.rebound,\n BasketballGameLogTypes.offensive_rebound,\n BasketballGameLogTypes.defensive_rebound\n ].indexOf(this.logType) > -1;\n }\n\n isFoulType() {\n return [\n BasketballGameLogTypes.personal_foul,\n BasketballGameLogTypes.technical_foul,\n BasketballGameLogTypes.unsportsmanlike_foul\n ].indexOf(this.logType) > -1;\n }\n\n getScore() {\n const scoreMapping = {\n [BasketballGameLogTypes.one_point_made]: 1,\n [BasketballGameLogTypes.free_throw_made]: 1,\n [BasketballGameLogTypes.two_point_made]: 2,\n [BasketballGameLogTypes.three_point_made]: 3\n };\n return scoreMapping[this.logType];\n }\n\n compare(model: BasketballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team_user_id: 'tournamentTeamUserId',\n date_from: 'dateFrom',\n date_to: 'dateTo',\n matches_count: 'matchesCount',\n },\n relation: {\n dateFrom: DateField,\n dateTo: DateField,\n }\n})\nexport class TournamentDisqualification extends BaseModel {\n id: number;\n tournamentTeamUserId: number;\n dateFrom: Date;\n dateTo: Date;\n matchesCount: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField } from './util';\nimport { File } from './file';\nimport { User } from './user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n league_id: 'leagueId',\n first_name: 'firstName',\n last_name: 'lastName',\n middle_name: 'middleName',\n birth_date: 'birthDate',\n photo: 'photo',\n user: 'user',\n has_changes: 'hasChanges',\n rating: 'rating',\n },\n relation: {\n birthDate: DateField,\n photo: File,\n user: User,\n }\n})\nexport class LeaguePlayer extends BaseModel {\n id: number;\n userId: number;\n leagueId: number;\n firstName: string;\n lastName: string;\n middleName: string;\n birthDate: Date;\n photo: File;\n user: User;\n hasChanges: boolean;\n rating: number;\n\n get fullName(): string {\n return [this.lastName, this.firstName, this.middleName].filter(s => s).join(' ');\n }\n\n get shortName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get initials(): string {\n return [this.lastName, this.firstName].filter(s => s).map(s => s.substr(0, 1)).join('');\n }\n\n get age(): number {\n if (!this.birthDate) {\n return null;\n }\n const diff = (new Date()).getTime() - this.birthDate.getTime();\n return Math.floor(diff / (365 * 86400 * 1000));\n }\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(data: any): any {\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { TournamentTeam } from './tournament-team';\nimport { TeamUser } from './team-user';\nimport { TournamentDisqualification } from './tournament-disqualification';\nimport { LeaguePlayer } from './league-player';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team: 'tournamentTeam',\n team_user: 'teamUser',\n disqualified: 'disqualified',\n disqualification: 'disqualification',\n league_player: 'leaguePlayer',\n },\n relation: {\n tournamentTeam: TournamentTeam,\n teamUser: TeamUser,\n disqualification: TournamentDisqualification,\n leaguePlayer: LeaguePlayer,\n }\n})\nexport class TournamentTeamUser extends BaseModel {\n id: number;\n tournamentTeam: TournamentTeam;\n teamUser: TeamUser;\n disqualified: boolean;\n disqualification: TournamentDisqualification;\n leaguePlayer: LeaguePlayer;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\nimport { LeaguePlayer } from './league-player';\n\n@ModelInstance({\n mappingFields: {\n league_player: 'leaguePlayer',\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n points: 'points',\n two_points_made: 'twoPointsMade',\n three_points_made: 'threePointsMade',\n free_throws_made: 'freeThrowsMade',\n one_points_made: 'onePointsMade',\n two_point_attempts: 'twoPointAttempts',\n three_point_attempts: 'threePointAttempts',\n free_throw_attempts: 'freeThrowAttempts',\n one_point_attempts: 'onePointAttempts',\n two_point_percent: 'twoPointPercent',\n three_point_percent: 'threePointPercent',\n free_throw_percent: 'freeThrowPercent',\n one_point_percent: 'onePointPercent',\n assists: 'assists',\n blocks: 'blocks',\n rebounds: 'rebounds',\n offensive_rebounds: 'offensiveRebounds',\n defensive_rebounds: 'defensiveRebounds',\n steals: 'steals',\n turnovers: 'turnovers',\n personal_fouls: 'personalFouls',\n technical_fouls: 'technicalFouls',\n unsportsmanlike_fouls: 'unsportsmanlikeFouls',\n game_time: 'gameTime',\n newbie: 'newbie',\n rank: 'rank',\n },\n relation: {\n leaguePlayer: LeaguePlayer,\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class BasketballStatistic extends BaseModel implements BaseStatistic {\n leaguePlayer: LeaguePlayer;\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: WinLoseType;\n gamesCount: number;\n wonGamesCount: number;\n points: number;\n twoPointsMade: number;\n threePointsMade: number;\n freeThrowsMade: number;\n onePointsMade: number;\n twoPointAttempts: number;\n threePointAttempts: number;\n freeThrowAttempts: number;\n onePointAttempts: number;\n twoPointPercent: number;\n threePointPercent: number;\n freeThrowPercent: number;\n onePointPercent: number;\n assists: number;\n blocks: number;\n rebounds: number;\n offensiveRebounds: number;\n defensiveRebounds: number;\n steals: number;\n turnovers: number;\n personalFouls: number;\n technicalFouls: number;\n unsportsmanlikeFouls: number;\n gameTime: number;\n newbie: boolean;\n rank: number;\n\n get totalFouls() {\n return this.personalFouls + this.technicalFouls + this.unsportsmanlikeFouls;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n get tournamentTeamPoints(): number {\n return this.tournamentTeam && this.tournamentTeam.points;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { BasketballStatistic } from './basketball-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: BasketballStatistic,\n competitorTeam: BasketballStatistic\n }\n})\nexport class BasketballGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: BasketballStatistic;\n competitorTeam: BasketballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n points: 'points',\n free_throws_made: 'freeThrowsMade',\n two_points_made: 'twoPointsMade',\n three_points_made: 'threePointsMade',\n one_points_made: 'onePointsMade',\n two_point_attempts: 'twoPointAttempts',\n three_point_attempts: 'threePointAttempts',\n free_throw_attempts: 'freeThrowAttempts',\n one_point_attempts: 'onePointAttempts',\n assists: 'assists',\n blocks: 'blocks',\n rebounds: 'rebounds',\n offensive_rebounds: 'offensiveRebounds',\n defensive_rebounds: 'defensiveRebounds',\n steals: 'steals',\n turnovers: 'turnovers',\n personal_fouls: 'personalFouls',\n technical_fouls: 'technicalFouls',\n unsportsmanlike_fouls: 'unsportsmanlikeFouls',\n updated_at: 'updatedAt',\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class BasketballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n freeThrowsMade: number;\n twoPointsMade: number;\n threePointsMade: number;\n onePointsMade: number;\n twoPointAttempts: number;\n threePointAttempts: number;\n freeThrowAttempts: number;\n onePointAttempts: number;\n assists: number;\n blocks: number;\n rebounds: number;\n offensiveRebounds: number;\n defensiveRebounds: number;\n steals: number;\n turnovers: number;\n personalFouls: number;\n technicalFouls: number;\n unsportsmanlikeFouls: number;\n updatedAt: Date;\n\n get id(): number {\n return this.gameUserId;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get totalFouls(): number {\n return (this.personalFouls || 0) + (this.technicalFouls || 0) + (this.unsportsmanlikeFouls || 0);\n }\n}\n","import { enumField, ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateTimeField, penaltyTypeField } from './util';\nimport { GameUser } from './game-user';\nimport { GameLogBase } from './game-log-base';\n\nexport enum HockeyGameLogTypes {\n enter_game = 1,\n exit_game,\n shot_miss,\n shot_on_goal,\n shot_blocked,\n goal,\n shootout_attempt,\n shootout_goal,\n assist,\n block_shot ,\n minor_penalty ,\n major_penalty ,\n misconduct_penalty ,\n game_misconduct_penalty ,\n match_penalty ,\n penalty_shot ,\n face_off_lose ,\n face_off_win ,\n save ,\n timeout,\n penalty_start,\n penalty_end,\n after_game_shootout_attempt,\n after_game_shootout_goal,\n after_game_shootout_save,\n shootout_save,\n}\n\nexport enum HockeyAdvantageTypes {\n power_play = 1,\n shorthanded,\n even_strength\n}\n\nexport interface PenaltyType {\n id: number;\n code: string;\n title: string;\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n advantage: 'advantage',\n advantage_num: 'advantageNum',\n is_goalie: 'isGoalie',\n penalty_type: 'penaltyType',\n penalized_game_user_id: 'penalizedGameUserId',\n mutual_penalty: 'mutualPenalty',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(HockeyGameLogTypes),\n advantage: enumField(HockeyAdvantageTypes),\n penaltyType: penaltyTypeField()\n }\n})\nexport class HockeyGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: HockeyGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n advantage: HockeyAdvantageTypes;\n advantageNum: number;\n isGoalie: boolean;\n penaltyType: PenaltyType;\n _penalizedGameUserId: number;\n mutualPenalty: boolean;\n\n get penalizedGameUserId(): number {\n if (this._penalizedGameUserId) {\n return this._penalizedGameUserId;\n }\n return this.gameUserId;\n }\n\n set penalizedGameUserId(value: number) {\n this._penalizedGameUserId = value;\n }\n\n compare(model: HockeyGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n isScoreType(): boolean {\n return [HockeyGameLogTypes.goal, HockeyGameLogTypes.shootout_goal, HockeyGameLogTypes.after_game_shootout_goal].indexOf(this.logType) > -1;\n }\n\n isPenaltyType(): boolean {\n return [\n HockeyGameLogTypes.minor_penalty, HockeyGameLogTypes.major_penalty,\n HockeyGameLogTypes.misconduct_penalty, HockeyGameLogTypes.game_misconduct_penalty,\n HockeyGameLogTypes.penalty_shot, HockeyGameLogTypes.match_penalty\n ].indexOf(this.logType) > -1;\n }\n\n isAfter(log: HockeyGameLog): boolean {\n if (this.time === log.time && this.period === log.period) {\n return this.id > log.id;\n }\n if (this.period === log.period) {\n return this.time > log.time;\n }\n return this.period > log.period;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { TeamUser } from './team-user';\nimport { TournamentTeamUser } from './tournament-team-user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n game_id: 'gameId',\n team_user: 'teamUser',\n tournament_team_user: 'tournamentTeamUser',\n is_mvp: 'isMvp',\n updated_at: 'updatedAt'\n },\n relation: {\n teamUser: TeamUser,\n tournamentTeamUser: TournamentTeamUser,\n updatedAt: DateTimeField,\n }\n})\nexport class GameUser extends BaseModel {\n id: number;\n gameId: number;\n teamUser: TeamUser;\n tournamentTeamUser: TournamentTeamUser;\n isMvp: boolean;\n updatedAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField, listField } from './util';\n\ninterface LimitationValue {\n current: number;\n required: number;\n}\n\n@ModelInstance({\n mappingFields: {\n min_user_games_count: 'minUserGamesCount',\n min_user_time: 'minUserTime',\n manual: 'manual',\n },\n})\nexport class GameUserLimitationTypes extends BaseModel {\n minUserGamesCount: LimitationValue;\n minUserTime: LimitationValue;\n manual: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(data: any): any {\n }\n}\n\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user_id: 'tournamentTeamUserId',\n limitations: 'limitations'\n },\n relation: {\n limitations: GameUserLimitationTypes\n }\n})\nexport class GameUserLimitations extends BaseModel {\n tournamentTeamUserId: number;\n limitations: GameUserLimitationTypes;\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(data: any): any {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { GameUser } from '../models/game-user';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\nimport { GameUserLimitations } from '../models/game-user-limitation';\n\n@Injectable({providedIn: 'root'})\nexport class GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService,\n ) {\n }\n\n async getUsers(gameId: number): Promise<GameUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/users/`).pipe(\n map(result => GameUser.toFront(result))\n ).toPromise();\n }\n\n async getMvp(gameId: number): Promise<GameUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/mvp/`).pipe(\n map(result => GameUser.toFront(result))\n ).toPromise();\n }\n\n async getUsersLimitation(gameId: number): Promise<GameUserLimitations[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/users_limitation/`).pipe(\n map(result => GameUserLimitations.toFront(result))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { BasketballGameTeamStatistic } from '../models/basketball-game-team-statistic';\nimport { BasketballGameStatistic } from '../models/basketball-game-statistic';\nimport { BasketballGameLog } from '../models/basketball-game-log';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class BasketballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<BasketballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/team_statistic/`).pipe(\n map(result => BasketballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<BasketballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/user_statistic/`).pipe(\n map(result => BasketballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<BasketballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/logs/`).pipe(\n map(result => BasketballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, fileType: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/game_protocol/?file_type=${fileType}`,\n {responseType: 'blob'}\n )\n .toPromise();\n }\n\n async downloadFibaProtocol(gameId: number, fileType: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/game_protocol_fiba/?file_type=${fileType}`,\n {responseType: 'blob'}\n )\n .toPromise();\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n theme: 'theme',\n message: 'message',\n files: 'files',\n email: 'email',\n captcha: 'captcha',\n },\n relation: {\n files: File\n }\n})\nexport class Feedback {\n id: number;\n theme: string;\n message: string;\n email: string;\n captcha: string;\n files: File[];\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(value: any): any {\n return null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Feedback } from '../models/feedback';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class FeedbackApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async sendFeedback(data: any): Promise<Feedback> {\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/feedback/`, Feedback.toBack(data))\n .pipe(map(response => Feedback.toFront(response)))\n .toPromise();\n }\n\n async sendLeagueFeedback(leagueId: number, data: any): Promise<Feedback> {\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/feedback/`, Feedback.toBack(data))\n .pipe(map(response => Feedback.toFront(response)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { map } from 'rxjs/operators';\nimport { File } from '../models/file';\n\n@Injectable({providedIn: 'root'})\nexport class FileApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async upload(fileData: any, filename?: string, width?: number, height?: number): Promise<File> {\n let params = new HttpParams();\n if (width && height) {\n params = params.set('width', width.toString()).set('height', height.toString());\n }\n\n const formData = new FormData();\n formData.append('file', fileData, filename);\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/file/`, formData, {params})\n .pipe(map(data => File.toFront(data)))\n .toPromise();\n }\n\n async createZipArchive(files: {file: any, filename: string}[]): Promise<any> {\n const formData = new FormData();\n for (const file of files) {\n formData.append('files', file.file, file.filename);\n }\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/file/zip_archive/`, formData, {responseType: 'blob'})\n .toPromise();\n }\n}\n","import { enumField, ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateTimeField, penaltyTypeField } from './util';\nimport { GameUser } from './game-user';\nimport { GameLogBase } from './game-log-base';\n\nexport enum FootballGameLogTypes {\n enter_game = 1,\n exit_game,\n shot_miss,\n shot_on_goal,\n shot_blocked,\n goal,\n penalty_attempt,\n penalty_goal,\n penalty_save,\n small_penalty_attempt,\n small_penalty_goal,\n small_penalty_save,\n assist,\n block_shot,\n corner,\n free_kick,\n foul,\n save,\n yellow_card,\n red_card,\n perfect_pass,\n loss,\n steal,\n out,\n timeout,\n auto_goal,\n}\n\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n is_goalie: 'isGoalie',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(FootballGameLogTypes)\n }\n})\nexport class FootballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: FootballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n isGoalie: boolean;\n\n compare(model: FootballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n isScoreType(): boolean {\n return [\n FootballGameLogTypes.goal,\n FootballGameLogTypes.penalty_goal,\n FootballGameLogTypes.small_penalty_goal,\n FootballGameLogTypes.auto_goal,\n ].indexOf(this.logType) > -1;\n }\n\n isAfter(log: FootballGameLog): boolean {\n if (this.time === log.time && this.period === log.period) {\n return this.id > log.id;\n }\n if (this.period === log.period) {\n return this.time > log.time;\n }\n return this.period > log.period;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n updated_at: 'updatedAt',\n points: 'points',\n pp_shot_misses: 'ppShotMisses',\n pp_shots_on_goal: 'ppShotsOnGoal',\n pp_shots_blocked: 'ppShotsBlocked',\n ev_shot_misses: 'evShotMisses',\n ev_shots_on_goal: 'evShotsOnGoal',\n ev_shots_blocked: 'evShotsBlocked',\n sh_shot_misses: 'shShotMisses',\n sh_shots_on_goal: 'shShotsOnGoal',\n sh_shots_blocked: 'shShotsBlocked',\n pp_goals: 'ppGoals',\n ev_goals: 'evGoals',\n sh_goals: 'shGoals',\n pp_assists: 'ppAssists',\n ev_assists: 'evAssists',\n sh_assists: 'shAssists',\n shootout_attempts: 'shootoutAttempts',\n shootout_goals: 'shootoutGoals',\n after_game_shootout_attempts: 'afterGameShootoutAttempts',\n after_game_shootout_goals: 'afterGameShootoutGoals',\n block_shots: 'blockShots',\n face_off_losses: 'faceOffLosses',\n face_off_wins: 'faceOffWins',\n saves: 'saves',\n shootout_save: 'shootoutSaves',\n after_game_shootout_saves: 'afterGameShootoutSaves',\n goals_against: 'goalsAgainst',\n shootout_goals_against: 'shootoutGoalsAgainst',\n after_game_shootout_goals_against: 'afterGameShootoutGoalsAgainst',\n safety_rate: 'safetyRate',\n penalty_minutes: 'penaltyMinutes',\n game_time: 'gameTime',\n plus_minus: 'plusMinus'\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class HockeyGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n ppShotMisses: number;\n ppShotsOnGoal: number;\n ppShotsBlocked: number;\n evShotMisses: number;\n evShotsOnGoal: number;\n evShotsBlocked: number;\n shShotMisses: number;\n shShotsOnGoal: number;\n shShotsBlocked: number;\n ppGoals: number;\n evGoals: number;\n shGoals: number;\n ppAssists: number;\n evAssists: number;\n shAssists: number;\n shootoutAttempts: number;\n shootoutGoals: number;\n afterGameShootoutAttempts: number;\n afterGameShootoutGoals: number;\n blockShots: number;\n faceOffLosses: number;\n faceOffWins: number;\n saves: number;\n shootoutSaves: number;\n afterGameShootoutSaves: number;\n goalsAgainst: number;\n shootoutGoalsAgainst: number;\n afterGameShootoutGoalsAgainst: number;\n safetyRate: number;\n penaltyMinutes: number;\n gameTime: number;\n plusMinus: number;\n updatedAt: Date;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get shotsOnGoal(): number {\n return (this.evShotsOnGoal || 0) + (this.ppShotsOnGoal || 0) + (this.shShotsOnGoal || 0);\n }\n\n get shotsBlocked(): number {\n return (this.evShotsBlocked || 0) + (this.ppShotsBlocked || 0) + (this.shShotsBlocked || 0);\n }\n\n get shotMisses(): number {\n return (this.evShotMisses || 0) + (this.ppShotMisses || 0) + (this.shShotMisses || 0);\n }\n\n get ppShots(): number {\n return (this.ppShotMisses || 0) + (this.ppShotsOnGoal || 0) + (this.ppShotsBlocked || 0);\n }\n\n get evShots(): number {\n return (this.evShotMisses || 0) + (this.evShotsOnGoal || 0) + (this.evShotsBlocked || 0);\n }\n\n get shShots(): number {\n return (this.shShotMisses || 0) + (this.shShotsOnGoal || 0) + (this.shShotsBlocked || 0);\n }\n\n get shots(): number {\n return this.ppShots + this.evShots + this.shShots + (this.shootoutAttempts || 0);\n }\n\n get totalShots(): number {\n return this.shots + (this.shootoutAttempts || 0);\n }\n\n get goals(): number {\n return (this.ppGoals || 0) + (this.shGoals || 0) + (this.evGoals || 0);\n }\n\n get totalGoals(): number {\n return this.goals + (this.shootoutGoals || 0);\n }\n\n get assists(): number {\n return (this.ppAssists || 0) + (this.evAssists || 0) + (this.shAssists || 0);\n }\n\n get faceOffs(): number {\n return (this.faceOffWins || 0) + (this.faceOffLosses || 0);\n }\n\n get shootOuts(): number {\n return (this.shootoutAttempts || 0) + (this.shootoutGoals || 0);\n }\n\n get shotsAgainst(): number {\n return (this.saves || 0) + (this.goalsAgainst || 0);\n }\n\n get shootoutShotsAgainst(): number {\n return (this.shootoutSaves || 0) + (this.shootoutGoalsAgainst || 0);\n }\n\n get totalShotsAgainst(): number {\n return this.shotsAgainst + this.shootoutShotsAgainst;\n }\n\n get savesPercent(): number {\n if (!this.shotsAgainst || !this.saves) {\n return 0;\n }\n return Math.round(1000 * this.saves / this.shotsAgainst) / 10;\n }\n\n get totalSaves(): number {\n return (this.saves || 0) + (this.shootoutSaves || 0);\n }\n\n get totalSavesPercent(): number {\n if (!this.totalShotsAgainst || !this.totalSaves) {\n return 0;\n }\n return Math.round(1000 * this.totalSaves / this.totalShotsAgainst) / 10;\n }\n\n get totalGoalsAgainst(): number {\n return (this.goalsAgainst || 0) + (this.shootoutGoalsAgainst || 0);\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\nimport { LeaguePlayer } from './league-player';\n\n@ModelInstance({\n mappingFields: {\n league_player: 'leaguePlayer',\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n lose_games_count: 'loseGamesCount',\n points: 'points',\n pp_shots: 'ppShots',\n pp_shot_misses: 'ppShotMisses',\n pp_shots_on_goal: 'ppShotsOnGoal',\n pp_shots_blocked: 'ppShotsBlocked',\n ev_shots: 'evShots',\n ev_shot_misses: 'evShotMisses',\n ev_shots_on_goal: 'evShotsOnGoal',\n ev_shots_blocked: 'evShotsBlocked',\n sh_shots: 'shShots',\n sh_shot_misses: 'shShotMisses',\n sh_shots_on_goal: 'shShotsOnGoal',\n sh_shots_blocked: 'shShotsBlocked',\n pp_goals_percent: 'ppGoalsPercent',\n pp_goals: 'ppGoals',\n ev_goals_percent: 'evGoalsPercent',\n ev_goals: 'evGoals',\n sh_goals_percent: 'shGoalsPercent',\n goals: 'goals',\n total_goals: 'totalGoals',\n sh_goals: 'shGoals',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n shots: 'shots',\n total_shots: 'totalShots',\n goals_percent: 'goalsPercent',\n total_goals_percent: 'totalGoalsPercent',\n pp_assists: 'ppAssists',\n ev_assists: 'evAssists',\n sh_assists: 'shAssists',\n shootout_attempts: 'shootoutAttempts',\n shootout_goals: 'shootoutGoals',\n after_game_shootout_attempts: 'afterGameShootoutAttempts',\n after_game_shootout_goals: 'afterGameShootoutGoals',\n block_shots: 'blockShots',\n face_off_losses: 'faceOffLosses',\n face_off_wins: 'faceOffWins',\n face_offs: 'faceOffs',\n face_off_percent: 'faceOffPercent',\n saves: 'saves',\n total_saves: 'totalSaves',\n shootout_saves: 'shootoutSaves',\n shots_against: 'shotsAgainst',\n shootout_shots_against: 'shootoutShotsAgainst',\n total_shots_against: 'totalShotsAgainst',\n saves_percent: 'savesPercent',\n total_saves_percent: 'totalSavesPercent',\n goals_against: 'goalsAgainst',\n shootout_goals_against: 'shootoutGoalsAgainst',\n total_goals_against: 'totalGoalsAgainst',\n safety_rate: 'safetyRate',\n penalty_minutes: 'penaltyMinutes',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n newbie: 'newbie',\n rank: 'rank',\n },\n relation: {\n leaguePlayer: LeaguePlayer,\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class HockeyStatistic extends BaseModel implements BaseStatistic {\n leaguePlayer: LeaguePlayer;\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: WinLoseType;\n gamesCount: number;\n wonGamesCount: number;\n loseGamesCount: number;\n points: number;\n ppShots: number;\n ppShotMisses: number;\n ppShotsOnGoal: number;\n ppShotsBlocked: number;\n evShots: number;\n evShotMisses: number;\n evShotsOnGoal: number;\n evShotsBlocked: number;\n shShots: number;\n shShotMisses: number;\n shShotsOnGoal: number;\n shShotsBlocked: number;\n ppGoalsPercent: number;\n ppGoals: number;\n evGoalsPercent: number;\n evGoals: number;\n shGoalsPercent: number;\n shGoals: number;\n goals: number;\n totalGoals: number;\n totalGoalsPercent;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n shots: number;\n totalShots: number;\n goalsPercent: number;\n ppAssists: number;\n evAssists: number;\n shAssists: number;\n shootoutAttempts: number;\n shootoutGoals: number;\n afterGameShootoutAttempts: number;\n afterGameShootoutGoals: number;\n blockShots: number;\n faceOffLosses: number;\n faceOffWins: number;\n faceOffs: number;\n faceOffPercent: number;\n savesPercent: number;\n totalSavesPercent: number;\n saves: number;\n shootoutSaves: number;\n totalSaves: number;\n shotsAgainst: number;\n shootoutShotsAgainst: number;\n totalShotsAgainst: number;\n goalsAgainst: number;\n shootoutGoalsAgainst: number;\n totalGoalsAgainst: number;\n safetyRate: number;\n penaltyMinutes: number;\n gameTime: number;\n plusMinus: number;\n newbie: boolean;\n rank: number;\n\n get assists(): number {\n return (this.ppAssists || 0) + (this.shAssists || 0) + (this.evAssists || 0);\n }\n\n get userMinutes(): string {\n if (!this.gameTime) {\n return '00:00';\n }\n const minutes = Math.floor(this.gameTime / 60);\n const seconds = Math.floor(this.gameTime - minutes * 60);\n return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;\n }\n\n get gamesWonPercent(): number {\n if (!this.gamesCount) {\n return 0;\n }\n return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;\n }\n\n get tournamentTeamPoints(): number {\n return this.tournamentTeam && this.tournamentTeam.points;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { HockeyStatistic } from './hockey-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: HockeyStatistic,\n competitorTeam: HockeyStatistic\n }\n})\nexport class HockeyGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: HockeyStatistic;\n competitorTeam: HockeyStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { HockeyGameLog } from '../models/hockey-game-log';\nimport { HockeyGameStatistic } from '../models/hockey-game-statistic';\nimport { HockeyGameTeamStatistic } from '../models/hockey-game-team-statistic';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class HockeyGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<HockeyGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/team_statistic/`).pipe(\n map(result => HockeyGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<HockeyGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/user_statistic/`).pipe(\n map(result => HockeyGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<HockeyGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/logs/`).pipe(\n map(result => HockeyGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadApplication(gameId: number, format: 'pdf' | 'xlsx' | 'html', type: 'game_user'|'tournament_user'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/game_application_file/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { GameLogBase } from './game-log-base';\nimport { GameUser } from './game-user';\n\nexport enum HandballGameLogTypes {\n enter_game = 1,\n exit_game,\n shot_miss,\n shot_on_goal,\n shot_blocked,\n goal,\n assist,\n penalty_miss,\n penalty_shot_on_goal,\n penalty_goal,\n save,\n penalty_save,\n foul,\n yellow_card,\n red_card,\n two_minute_foul,\n turnover,\n steal,\n block_shot,\n timeout\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n is_goalie: 'isGoalie',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(HandballGameLogTypes)\n }\n})\nexport class HandballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: HandballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n isGoalie: boolean;\n\n compare(model: HandballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n isScoreType(): boolean {\n return [HandballGameLogTypes.goal, HandballGameLogTypes.penalty_goal].indexOf(this.logType) > -1;\n }\n\n isAfter(log: HandballGameLog): boolean {\n if (this.time === log.time && this.period === log.period) {\n return this.id > log.id;\n }\n if (this.period === log.period) {\n return this.time > log.time;\n }\n return this.period > log.period;\n }\n\n isFoulType(): boolean {\n return [HandballGameLogTypes.foul, HandballGameLogTypes.yellow_card, HandballGameLogTypes.red_card].indexOf(this.logType) > -1;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n updated_at: 'updatedAt',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n goals: 'goals',\n assists: 'assists',\n corners: 'corners',\n free_kicks: 'freeKicks',\n penalty_goals: 'penaltyGoals',\n penalty_attempts: 'penaltyAttempts',\n penalty_goals_against: 'penaltyGoalsAgainst',\n penalty_saves: 'penaltySaves',\n small_penalty_goals: 'smallPenaltyGoals',\n small_penalty_attempts: 'smallPenaltyAttempts',\n small_penalty_goals_against: 'smallPenaltyGoalsAgainst',\n small_penalty_saves: 'smallPenaltySaves',\n saves: 'saves',\n goals_against: 'goalsAgainst',\n safety_rate: 'safetyRate',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n fouls: 'fouls',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n perfect_passes: 'perfectPasses',\n losses: 'losses',\n steals: 'steals',\n outs: 'outs',\n block_shots: 'blockShots',\n auto_goals: 'autoGoals',\n auto_goals_against: 'autoGoalsAgainst'\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class FootballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n goals: number;\n assists: number;\n blockShots: number;\n corners: number;\n freeKicks: number;\n penaltyGoals: number;\n penaltyAttempts: number;\n penaltyGoalsAgainst: number;\n penaltySaves: number;\n smallPenaltyGoals: number;\n smallPenaltyAttempts: number;\n smallPenaltyGoalsAgainst: number;\n smallPenaltySaves: number;\n saves: number;\n goalsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n perfectPasses: number;\n losses: number;\n steals: number;\n outs: number;\n gameTime: number;\n plusMinus: number;\n updatedAt: Date;\n autoGoals: number;\n autoGoalsAgainst: number;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get shots(): number {\n return (this.shotMisses || 0) + (this.shotsOnGoal || 0) + (this.shotsBlocked || 0);\n }\n\n\n get totalGoals(): number {\n return (this.goals || 0) + (this.penaltyGoals || 0) + (this.smallPenaltyGoals || 0);\n }\n\n get goalsPercent(): number {\n if (!this.shots || !this.totalGoals) {\n return 0;\n }\n return Math.round(1000 * this.totalGoals / this.shots) / 10;\n }\n\n get shotsOnGoalPercent(): number {\n if (!this.shotsOnGoal || !this.shots) {\n return 0;\n }\n return Math.round(1000 * this.shotsOnGoal / this.shots) / 10;\n }\n\n get penalties(): number {\n return (this.penaltyGoals || 0) + (this.penaltyAttempts || 0);\n }\n\n get penaltyGoalsPercent(): number {\n if (!this.penaltyAttempts || !this.penaltyGoals) {\n return 0;\n }\n const penaltyShots = this.penaltyAttempts + this.penaltyGoals;\n return Math.round(1000 * this.penaltyGoals / penaltyShots) / 10;\n }\n\n get smallPenalties(): number {\n return (this.smallPenaltyGoals || 0) + (this.smallPenaltyAttempts || 0);\n }\n\n get smallPenaltyGoalsPercent(): number {\n if (!this.smallPenaltyAttempts || !this.smallPenaltyGoals) {\n return 0;\n }\n const smallPenaltyShots = this.smallPenaltyAttempts + this.smallPenaltyGoals;\n return Math.round(1000 * this.smallPenaltyGoals / smallPenaltyShots) / 10;\n }\n\n get shotsAgainst(): number {\n return (this.saves || 0) + (this.goalsAgainst || 0);\n }\n\n get penaltyShotsAgainst(): number {\n return (this.penaltySaves || 0) + (this.penaltyGoalsAgainst || 0);\n }\n\n get smallPenaltyShotsAgainst(): number {\n return (this.smallPenaltySaves || 0) + (this.smallPenaltyGoalsAgainst || 0);\n }\n\n get totalGoalsAgainst(): number {\n return (this.goalsAgainst || 0) + (this.penaltyGoalsAgainst || 0) + (this.smallPenaltyGoalsAgainst || 0) + (this.autoGoalsAgainst || 0);\n }\n\n\n get totalSaves(): number {\n return (this.saves || 0) + (this.penaltySaves || 0) + (this.smallPenaltySaves || 0);\n }\n\n get savesPercent(): number {\n if (!this.shotsAgainst || !this.saves) {\n return 0;\n }\n return Math.round(1000 * this.saves / this.shotsAgainst) / 10;\n }\n\n get penaltySavesPercent(): number {\n if (!this.penaltyShotsAgainst || !this.penaltySaves) {\n return 0;\n }\n return Math.round(1000 * this.penaltySaves / this.penaltyShotsAgainst) / 10;\n }\n\n get smallPenaltySavesPercent(): number {\n if (!this.smallPenaltyShotsAgainst || !this.smallPenaltySaves) {\n return 0;\n }\n return Math.round(1000 * this.smallPenaltySaves / this.smallPenaltyShotsAgainst) / 10;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\nimport { LeaguePlayer } from './league-player';\n\n@ModelInstance({\n mappingFields: {\n league_player: 'leaguePlayer',\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n shots_on_goal_percent: 'shotsOnGoalPercent',\n shots: 'shots',\n goals: 'goals',\n goals_percent: 'goalsPercent',\n total_goals: 'totalGoals',\n assists: 'assists',\n penalty_goals: 'penaltyGoals',\n penalty_attempts: 'penaltyAttempts',\n penalty_goals_percent: 'penaltyGoalsPercent',\n penalty_saves: 'penaltySaves',\n penalty_goals_against: 'penaltyGoalsAgainst',\n penalty_shots_against: 'penaltyShotsAgainst',\n penalty_saves_percent: 'penaltySavesPercent',\n small_penalty_goals: 'smallPenaltyGoals',\n small_penalty_attempts: 'smallPenaltyAttempts',\n small_penalty_goals_percent: 'smallPenaltyGoalsPercent',\n small_penalty_saves: 'smallPenaltySaves',\n small_penalty_goals_against: 'smallPenaltyGoalsAgainst',\n small_penalty_shots_against: 'smallPenaltyShotsAgainst',\n small_penalty_saves_percent: 'smallPenaltySavesPercent',\n saves: 'saves',\n saves_percent: 'savesPercent',\n total_saves: 'totalSaves',\n goals_against: 'goalsAgainst',\n total_goals_against: 'totalGoalsAgainst',\n shots_against: 'shotsAgainst',\n safety_rate: 'safetyRate',\n fouls: 'fouls',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n perfect_passes: 'perfectPasses',\n losses: 'losses',\n steals: 'steals',\n outs: 'outs',\n block_shots: 'blockShots',\n corners: 'corners',\n free_kicks: 'freeKicks',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n newbie: 'newbie',\n rank: 'rank',\n auto_goals: 'autoGoals',\n auto_goals_against: 'autoGoalsAgainst',\n },\n relation: {\n leaguePlayer: LeaguePlayer,\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class FootballStatistic extends BaseModel implements BaseStatistic {\n leaguePlayer: LeaguePlayer;\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: WinLoseType;\n gamesCount: number;\n wonGamesCount: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n shotsOnGoalPercent: number;\n shots: number;\n goals: number;\n totalGoals: number;\n goalsPercent: number;\n assists: number;\n penaltyGoals: number;\n penaltyAttempts: number;\n penaltyGoalsPercent: number;\n penaltySaves: number;\n penaltyGoalsAgainst: number;\n penaltyShotsAgainst: number;\n penaltySavesPercent: number;\n smallPenaltyGoals: number;\n smallPenaltyAttempts: number;\n smallPenaltyGoalsPercent: number;\n smallPenaltySaves: number;\n smallPenaltyGoalsAgainst: number;\n smallPenaltyShotsAgainst: number;\n smallPenaltySavesPercent: number;\n saves: number;\n savesPercent: number;\n totalSaves: number;\n goalsAgainst: number;\n totalGoalsAgainst: number;\n shotsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n perfectPasses: number;\n losses: number;\n steals: number;\n outs: number;\n gameTime: number;\n plusMinus: number;\n blockShots: number;\n corners: number;\n freeKicks: number;\n newbie: boolean;\n rank: number;\n autoGoals: number;\n autoGoalsAgainst: number;\n\n get userMinutes(): string {\n if (!this.gameTime) {\n return '00:00';\n }\n const minutes = Math.floor(this.gameTime / 60);\n const seconds = Math.floor(this.gameTime - minutes * 60);\n return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;\n }\n\n get tournamentTeamPoints(): number {\n return this.tournamentTeam && this.tournamentTeam.points;\n }\n\n get tournamentTeamGamesCount(): number {\n return this.tournamentTeam && this.tournamentTeam.gamesCount;\n }\n\n get tournamentTeamWonGamesCount(): number {\n return this.tournamentTeam && this.tournamentTeam.wonGamesCount;\n }\n\n get tournamentTeamDrawGamesCount(): number {\n return this.tournamentTeam && this.tournamentTeam.drawGamesCount;\n }\n\n get tournamentTeamLostGamesCount(): number {\n if (!this.tournamentTeam) {\n return null;\n }\n return this.tournamentTeam.gamesCount - this.tournamentTeam.drawGamesCount - this.tournamentTeam.wonGamesCount;\n }\n\n get tournamentTeamScoreSum(): number {\n return this.tournamentTeam && this.tournamentTeam.scoreSum;\n }\n\n get tournamentTeamMissedSum(): number {\n return this.tournamentTeam && this.tournamentTeam.missedSum;\n }\n\n get tournamentTeamPlusMinus(): number {\n if (!this.tournamentTeam) {\n return null;\n }\n return this.tournamentTeam.scoreSum - this.tournamentTeam.missedSum;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { FootballStatistic } from './football-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: FootballStatistic,\n competitorTeam: FootballStatistic\n }\n})\nexport class FootballGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: FootballStatistic;\n competitorTeam: FootballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { FootballGameLog } from '../models/football-game-log';\nimport { FootballGameStatistic } from '../models/football-game-statistic';\nimport { FootballGameTeamStatistic } from '../models/football-game-team-statistic';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class FootballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<FootballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/team_statistic/`).pipe(\n map(result => FootballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<FootballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/user_statistic/`).pipe(\n map(result => FootballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<FootballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/logs/`).pipe(\n map(result => FootballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadApplication(gameId: number, format: 'pdf' | 'xlsx' | 'html', type: 'game_user' | 'tournament_user'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/game_application_file/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField, DateField } from './util';\n\nexport enum TournamentStageStatuses {\n open,\n in_progress,\n closed\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n date: 'date',\n tournament_id: 'tournamentId',\n status: 'status',\n },\n relation: {\n date: DateField,\n status: enumField(TournamentStageStatuses)\n }\n})\nexport class TournamentStage extends BaseModel {\n id: number;\n name: string;\n date: Date;\n tournamentId: number;\n status: TournamentStageStatuses;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n goals: 'goals',\n assists: 'assists',\n penalty_goals: 'penaltyGoals',\n penalty_misses: 'penaltyMisses',\n penalty_shots_on_goal: 'penaltyShotsOnGoal',\n saves: 'saves',\n penalty_saves: 'penaltySaves',\n goals_against: 'goalsAgainst',\n penalty_goals_against: 'penaltyGoalsAgainst',\n safety_rate: 'safetyRate',\n fouls: 'fouls',\n yellowCards: 'yellowCards',\n red_cards: 'redCards',\n two_minute_fouls: 'twoMinuteFouls',\n turnovers: 'turnovers',\n steals: 'steals',\n block_shots: 'blockShots',\n game_time: 'gameTime',\n plus_minus: 'plusMinus'\n }\n})\nexport class HandballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n goals: number;\n assists: number;\n penaltyGoals: number;\n penaltyMisses: number;\n penaltyShotsOnGoal: number;\n saves: number;\n penaltySaves: number;\n goalsAgainst: number;\n penaltyGoalsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n twoMinuteFouls: number;\n turnovers: number;\n steals: number;\n blockShots: number;\n gameTime: number;\n plusMinus: number;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get shots(): number {\n return (this.shotMisses || 0) + (this.shotsOnGoal || 0) + (this.shotsBlocked || 0);\n }\n\n\n get totalGoals(): number {\n return (this.goals || 0) + (this.penaltyGoals || 0);\n }\n\n get goalsPercent(): number {\n if (!this.shots || !this.totalGoals) {\n return 0;\n }\n return Math.round(1000 * this.totalGoals / this.shots) / 10;\n }\n\n get shotsOnGoalPercent(): number {\n if (!this.shotsOnGoal || !this.shots) {\n return 0;\n }\n return Math.round(1000 * this.shotsOnGoal / this.shots) / 10;\n }\n\n get penaltyShots(): number {\n return (this.penaltyShotsOnGoal || 0) + (this.penaltyMisses || 0);\n }\n\n get penaltyGoalsPercent(): number {\n if (!this.penaltyShots || !this.penaltyGoals) {\n return 0;\n }\n return Math.round(1000 * this.penaltyGoals / this.penaltyShots) / 10;\n }\n\n get shotsAgainst(): number {\n return (this.saves || 0) + (this.goalsAgainst || 0);\n }\n\n get penaltyShotsAgainst(): number {\n return (this.penaltySaves || 0) + (this.penaltyGoalsAgainst || 0);\n }\n\n get totalGoalsAgainst(): number {\n return (this.goalsAgainst || 0) + (this.penaltyGoalsAgainst || 0);\n }\n\n get totalSaves(): number {\n return (this.saves || 0) + (this.penaltySaves || 0);\n }\n\n get savesPercent(): number {\n if (!this.shotsAgainst || !this.saves) {\n return 0;\n }\n return Math.round(1000 * this.saves / this.shotsAgainst) / 10;\n }\n\n get penaltySavesPercent(): number {\n if (!this.penaltyShotsAgainst || !this.penaltySaves) {\n return 0;\n }\n return Math.round(1000 * this.penaltySaves / this.penaltyShotsAgainst) / 10;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\nimport { LeaguePlayer } from './league-player';\n\n@ModelInstance({\n mappingFields: {\n league_player: 'leaguePlayer',\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n goals: 'goals',\n assists: 'assists',\n penalty_goals: 'penaltyGoals',\n penalty_misses: 'penaltyMisses',\n penalty_shots_on_goal: 'penaltyShotsOnGoal',\n saves: 'saves',\n penalty_saves: 'penaltySaves',\n goals_against: 'goalsAgainst',\n penalty_goals_against: 'penaltyGoalsAgainst',\n safety_rate: 'safetyRate',\n fouls: 'fouls',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n two_minute_fouls: 'twoMinuteFouls',\n turnovers: 'turnovers',\n steals: 'steals',\n block_shots: 'blockShots',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n shots: 'shots',\n goals_percent: 'goalsPercent',\n penalty_shots: 'penaltyShots',\n penalty_goals_percent: 'penaltyGoalsPercent',\n shots_against: 'shotsAgainst',\n saves_percent: 'savesPercent',\n penalty_shots_against: 'penaltyShotsAgainst',\n penalty_saves_percent: 'penaltySavesPercent',\n total_goals: 'totalGoals',\n total_saves: 'totalSaves',\n total_goals_against: 'totalGoalsAgainst',\n newbie: 'newbie',\n rank: 'rank',\n },\n relation: {\n leaguePlayer: LeaguePlayer,\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class HandballStatistic extends BaseModel implements BaseStatistic {\n leaguePlayer: LeaguePlayer;\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: WinLoseType;\n gamesCount: number;\n wonGamesCount: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n goals: number;\n assists: number;\n penaltyGoals: number;\n penaltyMisses: number;\n penaltyShotsOnGoal: number;\n saves: number;\n penaltySaves: number;\n goalsAgainst: number;\n penaltyGoalsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n twoMinuteFouls: number;\n turnovers: number;\n steals: number;\n blockShots: number;\n gameTime: number;\n plusMinus: number;\n shots: number;\n goalsPercent: number;\n penaltyShots: number;\n penaltyGoalsPercent: number;\n shotsAgainst: number;\n savesPercent: number;\n penaltyShotsAgainst: number;\n penaltySavesPercent: number;\n totalGoals: number;\n totalSaves: number;\n totalGoalsAgainst: number;\n newbie: boolean;\n rank: number;\n\n get userMinutes(): string {\n if (!this.gameTime) {\n return '00:00';\n }\n const minutes = Math.floor(this.gameTime / 60);\n const seconds = Math.floor(this.gameTime - minutes * 60);\n return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;\n }\n\n get tournamentTeamPoints(): number {\n return this.tournamentTeam && this.tournamentTeam.points;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { HandballStatistic } from './handball-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: HandballStatistic,\n competitorTeam: HandballStatistic\n }\n})\nexport class HandballGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: HandballStatistic;\n competitorTeam: HandballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { HandballGameLog } from '../models/handball-game-log';\nimport { HandballGameStatistic } from '../models/handball-game-statistic';\nimport { HandballGameTeamStatistic } from '../models/handball-game-team-statistic';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class HandballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<HandballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/team_statistic/`).pipe(\n map(result => HandballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<HandballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/user_statistic/`).pipe(\n map(result => HandballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<HandballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/logs/`).pipe(\n map(result => HandballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadApplication(gameId: number, format: 'pdf' | 'xlsx' | 'html', type: 'game_user' | 'tournament_user'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/game_application_file/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { File } from './file';\nimport { User } from './user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n picture: 'picture',\n text: 'text',\n author: 'author',\n created_at: 'createdAt',\n },\n relation: {\n picture: File,\n author: User,\n createdAt: DateTimeField,\n }\n})\nexport class TournamentNews extends BaseModel {\n id: number;\n title: string;\n picture: File;\n text: string;\n author: User;\n createdAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField } from './util';\n\n@ModelInstance({\n mappingFields: {\n stage_id: 'stageId',\n tours_count: 'toursCount',\n playoff_stages_count: 'playoffStagesCount',\n }\n})\nexport class GameTimelineStageItem {\n stageId: number;\n toursCount: number;\n playoffStagesCount: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n tours_count: 'toursCount',\n playoff_stages_count: 'playoffStagesCount',\n current_tour: 'currentTour',\n current_playoff_stage: 'currentPlayoffStage',\n stages: 'stages',\n tournament_stage_id: 'tournamentStageId',\n },\n relation: {\n stages: listField(GameTimelineStageItem)\n }\n})\nexport class GameTimelineStages extends BaseModel {\n toursCount: number;\n playoffStagesCount: number;\n currentTour: number;\n currentPlayoffStage: number;\n stages: GameTimelineStageItem[];\n tournamentStageId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField, DateTimeField, enumField } from './util';\nimport { File } from './file';\nimport { Tournament } from './tournament';\n\nexport enum LeagueNewsType {\n text = 1,\n video\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n datetime: 'datetime',\n preview_text: 'previewText',\n detail_text: 'detailText',\n picture: 'picture',\n cover: 'cover',\n mobile_picture: 'mobilePicture',\n is_main: 'isMain',\n tournaments: 'tournaments',\n type: 'type',\n video_link: 'videoLink',\n tag: 'tag',\n },\n relation: {\n datetime: DateTimeField,\n picture: File,\n cover: File,\n mobilePicture: File,\n tournaments: listField(Tournament),\n type: enumField(LeagueNewsType),\n }\n})\nexport class LeagueNews extends BaseModel {\n id: number;\n title: string;\n datetime: Date;\n previewText: string;\n detailText: string;\n picture: File;\n cover: File;\n mobilePicture: File;\n isMain: boolean;\n tournaments: Tournament[];\n type: LeagueNewsType;\n videoLink: string;\n tag: string;\n\n @ToFrontHook\n static toFront(data: any): any {\n return undefined;\n }\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField } from './util';\nimport { Team } from './team';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { TeamUser } from './team-user';\nimport { TournamentTeam } from './tournament-team';\nimport { User } from './user';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\nimport { LeaguePlayer } from './league-player';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n team_user: 'teamUser',\n league_player: 'leaguePlayer',\n tournament_team_user: 'tournamentTeamUser',\n tournament_team: 'tournamentTeam',\n user: 'user',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n serve_hits: 'serveHits',\n serve_faults: 'serveFaults',\n serve_aces: 'serveAces',\n serve_percent: 'servePercent',\n ace_percent: 'acePercent',\n stuff_blocks: 'stuffBlocks',\n block_faults: 'blockFaults',\n block_rebounds: 'blockRebounds',\n block_percent: 'blockPercent',\n attack_spikes: 'attackSpikes',\n attack_faults: 'attackFaults',\n attack_shots: 'attackShots',\n attack_percent: 'attackPercent',\n receives: 'receives',\n receive_faults: 'receiveFaults',\n excellent_receives: 'excellentReceives',\n receive_percent: 'receivePercent',\n serve_receives: 'serveReceives',\n serve_receive_faults: 'serveReceiveFaults',\n excellent_serve_receives: 'excellentServeReceives',\n serve_receive_percent: 'serveReceivePercent',\n points: 'points',\n faults: 'faults',\n newbie: 'newbie',\n rank: 'rank',\n },\n relation: {\n team: Team,\n teamUser: TeamUser,\n leaguePlayer: LeaguePlayer,\n tournamentTeamUser: TournamentTeamUser,\n tournamentTeam: TournamentTeam,\n user: User,\n month: DateField,\n }\n})\nexport class VolleyballStatistic extends BaseModel implements BaseStatistic {\n leaguePlayer: LeaguePlayer;\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: WinLoseType;\n gamesCount: number;\n wonGamesCount: number;\n newbie: boolean;\n rank: number;\n serveHits: number;\n serveFaults: number;\n serveAces: number;\n servePercent: number;\n acePercent: number;\n stuffBlocks: number;\n blockFaults: number;\n blockRebounds: number;\n blockPercent: number;\n attackSpikes: number;\n attackFaults: number;\n attackShots: number;\n attackPercent: number;\n receives: number;\n receiveFaults: number;\n excellentReceives: number;\n receivePercent: number;\n serveReceives: number;\n serveReceiveFaults: number;\n excellentServeReceives: number;\n serveReceivePercent: number;\n points: number;\n faults: number;\n\n get tournamentTeamPoints(): number {\n return this.tournamentTeam && this.tournamentTeam.points;\n }\n\n get totalReceives(): number {\n return this.receives + this.excellentReceives;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { TournamentTeam } from './tournament-team';\nimport { TournamentGroup } from './tournament-group';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team: 'tournamentTeam',\n group: 'group',\n tournament_stage_id: 'tournamentStageId',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n score_sum: 'scoreSum',\n missed_sum: 'missedSum',\n last_games_count: 'lastGamesCount',\n last_games_won: 'lastGamesWon',\n points: 'points',\n final_standing: 'finalStanding',\n received_points: 'receivedPoints',\n },\n relation: {\n tournamentTeam: TournamentTeam,\n group: TournamentGroup\n }\n})\nexport class TournamentStageTeam extends BaseModel {\n id: number;\n tournamentTeam: TournamentTeam;\n group: TournamentGroup;\n tournamentStageId: number;\n gamesCount: number;\n wonGamesCount: number;\n scoreSum: number;\n missedSum: number;\n lastGamesCount: number;\n lastGamesWon: number;\n points: number;\n finalStanding: number;\n receivedPoints: number;\n\n get gamesWonPercent(): number {\n if (!this.gamesCount) {\n return 0;\n }\n return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField, enumField, listField } from './util';\nimport { Game } from './game';\nimport { Tournament } from './tournament';\nimport { League } from './league';\nimport { LeagueNews } from './league-news';\n\nexport enum TournamentEventTypes {\n game_closed = 1,\n media_added,\n news\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n game: 'game',\n news: 'news',\n league: 'league',\n tournaments: 'tournaments',\n event: 'event',\n datetime: 'datetime'\n },\n relation: {\n game: Game,\n news: LeagueNews,\n league: League,\n tournaments: listField(Tournament),\n datetime: DateField,\n event: enumField(TournamentEventTypes)\n }\n})\nexport class TournamentEvent extends BaseModel {\n id: number;\n game: Game;\n news: LeagueNews;\n tournaments: Tournament[];\n event: TournamentEventTypes;\n datetime: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { User } from './user';\nimport { BaseModel, enumField, listField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\n\nexport enum LeagueUserRoles {\n admin = 1,\n moderator,\n game_manager\n}\n\nexport enum LeagueUserPermissions {\n settings = 1,\n users,\n teams,\n media,\n news,\n game_export,\n schedule,\n game_management\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user: 'user',\n role: 'role',\n permissions: 'permissions'\n },\n relation: {\n user: User,\n permissions: listField(enumField(LeagueUserPermissions))\n }\n})\nexport class LeagueUser extends BaseModel {\n id: number;\n user: User;\n _role: LeagueUserRoles;\n permissions: LeagueUserPermissions[];\n\n set role(value: LeagueUserRoles|string) {\n this._role = LeagueUserRoles[value];\n }\n\n get role(): LeagueUserRoles|string {\n return this._role;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n newbie: 'newbie',\n // User statistic\n points: 'points',\n tries: 'tries',\n penalty_tries: 'penaltyTries',\n conversion_goals: 'conversionGoals',\n conversion_misses: 'conversionMisses',\n drawing_ball: 'drawingBall',\n penalty_misses: 'penaltyMisses',\n penalty_goals: 'penaltyGoals',\n drop_goals: 'dropGoals',\n drop_goal_misses: 'dropGoalMisses',\n free_kicks: 'freeKicks',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n offloads: 'offloads',\n tackles: 'tackles',\n outs: 'outs',\n handling_errors: 'handlingErrors',\n carries_other_gainline: 'carriesOtherGainline',\n plus_minus: 'plusMinus',\n game_time: 'gameTime',\n\n // Team statistic\n scrums_won: 'scrumsWon',\n scrum_losses: 'scrumLosses',\n scrums_won_free: 'scrumsWonFree',\n lineouts_success: 'lineoutsSuccess',\n lineouts_steal: 'lineoutsSteal',\n quick_throws: 'quickThrows',\n rucks_won: 'rucksWon',\n ruck_losses: 'ruckLosses',\n mauls_won: 'maulsWon',\n maul_losses: 'maulLosses',\n fouls: 'fouls'\n },\n relation: {\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class RugbyStatistic extends BaseModel {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: boolean;\n gamesCount: number;\n wonGamesCount: number;\n newbie: boolean;\n points: number;\n tries: number;\n penaltyTries: number;\n conversionGoals: number;\n conversionMisses: number;\n drawingBall: number;\n penaltyMisses: number;\n penaltyGoals: number;\n dropGoals: number;\n dropGoalMisses: number;\n freeKicks: number;\n yellowCards: number;\n redCards: number;\n offloads: number;\n tackles: number;\n outs: number;\n handlingErrors: number;\n carriesOtherGainline: number;\n plusMinus: number;\n gameTime: number;\n\n scrumsWon: number;\n scrumLosses: number;\n scrumsWonFree: number;\n lineoutsSuccess: number;\n lineoutsSteal: number;\n quickThrows: number;\n rucksWon: number;\n ruckLosses: number;\n maulsWon: number;\n maulLosses: number;\n fouls: number;\n\n get userMinutes(): string {\n if (!this.gameTime) {\n return '00:00';\n }\n const minutes = Math.floor(this.gameTime / 60);\n const seconds = Math.floor(this.gameTime - minutes * 60);\n return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Tournament } from '../models/tournament';\nimport { map } from 'rxjs/operators';\nimport { TournamentNews } from '../models/tournament-news';\nimport { Game, GameStatuses } from '../models/game';\nimport { GameTimelineStages } from '../models/game-timeline-stages';\nimport { TournamentTeam } from '../models/tournament-team';\nimport { TournamentStage } from '../models/tournament-stage';\nimport { Playoff } from '../models/playoff';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { BasketballStatistic } from '../models/basketball-statistic';\nimport { VolleyballStatistic } from '../models/volleyball-statistic';\nimport { TournamentTeamUser } from '../models/tournament-team-user';\nimport { TournamentStageTeam } from '../models/tournament-stage-team';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { ConfigService } from '../services/config.service';\nimport { HockeyStatistic } from '../models/hockey-statistic';\nimport { FootballStatistic } from '../models/football-statistic';\nimport { LeagueUserPermissions } from '../models/league-user';\nimport { HandballStatistic } from '../models/handball-statistic';\nimport { RugbyStatistic } from '../models/rugby-statistic';\nimport { TournamentGroup } from '../models/tournament-group';\n\nexport interface TournamentGamesFilters {\n tournamentIds?: number[];\n tournamentSeasonId?: number;\n tournamentStageId?: number;\n tournamentTour?: number;\n teamId?: number;\n playoffStage?: number;\n playoffId?: number;\n isPlayoff?: boolean;\n status?: GameStatuses;\n statuses?: GameStatuses[];\n tournamentCourtId?: number;\n leaguePlayerId?: number;\n userId?: number;\n query?: string;\n}\n\nexport type StatisticGroupByTypes = 'team' | 'user' | 'team_user' | 'tournament_team' | 'league_player' | 'tournament_team_user'\n | 'month' | 'win_loses';\n\nexport interface StatisticFilters {\n tournament_id?: number;\n tournament_ids?: number[];\n tournament_season_id?: number;\n tournament_team_id?: number;\n league_player_id?: number;\n tournament_team_user_id?: number;\n team_id?: number;\n team_user_id?: number;\n user_id?: number;\n tournament_stage_id?: number;\n tournament_tour?: number;\n playoff_stage?: number;\n playoff_id?: number;\n is_playoff?: boolean;\n date_from?: string;\n date_to?: string;\n query?: string;\n per_game?: boolean;\n group_by: StatisticGroupByTypes;\n order_by?: string;\n page?: number;\n size?: number;\n}\n\nexport interface StatisticLeadersFilters {\n tournament_id?: number;\n tournament_ids?: number[];\n tournament_season_id?: number;\n tournament_team_id?: number;\n team_id?: number;\n tournament_stage_id?: number;\n tournament_tour?: number;\n playoff_stage?: number;\n playoff_id?: number;\n date_from?: string;\n date_to?: string;\n per_game?: boolean;\n group_by: StatisticGroupByTypes;\n size?: number;\n fields: string[];\n}\n\nexport interface TournamentEventsListFilter {\n event?: TournamentEventTypes;\n search?: string;\n tournamentTour?: number;\n}\n\n@Injectable({providedIn: 'root'})\nexport class TournamentApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getById(tournamentId: number): Promise<Tournament> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/`)\n .pipe(map(result => Tournament.toFront(result)))\n .toPromise();\n }\n\n async getByAlias(leagueId: number, alias: string): Promise<Tournament> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournaments/${alias}/`)\n .pipe(map(result => Tournament.toFront(result)))\n .toPromise();\n }\n\n async getNews(tournamentId: number): Promise<TournamentNews[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/news/`)\n .pipe(map(result => TournamentNews.toFront(result)))\n .toPromise();\n }\n\n async getEvents(tournamentId: number, page: number, size: number, filters?: TournamentEventsListFilter): Promise<PaginatedResponse<TournamentEvent[]>> {\n let params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\n if (filters) {\n if (filters.event) {\n params = params.set('event', TournamentEventTypes[filters.event]);\n }\n if (filters.search) {\n params = params.set('search', filters.search);\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/events/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentEvent.toFront(result.body)\n })))\n .toPromise();\n }\n\n async getTournamentStages(tournamentId: number): Promise<TournamentStage[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/stages/`).pipe(\n map(data => TournamentStage.toFront(data))\n ).toPromise();\n }\n\n async getPlayoff(tournamentId: number): Promise<Playoff[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/playoff/`).pipe(\n map(result => Playoff.toFront(result))\n ).toPromise();\n }\n\n async getPlayoffGames(playoffId: number, playoffNumber?: string): Promise<Game[]> {\n let params = new HttpParams();\n if (playoffNumber) {\n params = params.set('playoff_number', playoffNumber);\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_playoff/${playoffId}/games/`,\n {params}\n ).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getGamesStages(tournamentId: number): Promise<GameTimelineStages> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/games_stages/`)\n .pipe(map(data => GameTimelineStages.toFront(data)))\n .toPromise();\n }\n\n async getGames(tournamentId: number, page: number, size: number, filters: TournamentGamesFilters = {}): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n params = applyGamesFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/games/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: Game.toFront(result.body)\n }))).toPromise();\n }\n\n async getGroups(tournamentId: number): Promise<TournamentGroup[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/groups/`)\n .pipe(map(result => TournamentGroup.toFront(result)))\n .toPromise();\n }\n\n async getTeams(tournamentId: number, groupId?: number): Promise<TournamentTeam[]> {\n let params = new HttpParams();\n if (groupId) {\n params = params.set('group_id', groupId.toString());\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/teams/`, {params})\n .pipe(map(result => TournamentTeam.toFront(result)))\n .toPromise();\n }\n\n async getStageTeams(tournamentId: number): Promise<TournamentStageTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/stage_teams/`)\n .pipe(map(result => TournamentStageTeam.toFront(result)))\n .toPromise();\n }\n\n async getTeamById(tournamentTeamId: number): Promise<TournamentTeam> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/`)\n .pipe(map(result => TournamentTeam.toFront(result)))\n .toPromise();\n }\n\n async getUserById(userId: number): Promise<TournamentTeamUser> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${userId}/`)\n .pipe(map(result => TournamentTeamUser.toFront(result)))\n .toPromise();\n }\n\n async getUserGames(tournamentUserId: number): Promise<Game[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${tournamentUserId}/games/`)\n .pipe(map(result => Game.toFront(result)))\n .toPromise();\n }\n\n async getBasketballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: BasketballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/basketball_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = BasketballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getVolleyballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: VolleyballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/volleyball_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = VolleyballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getHockeyStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: HockeyStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/hockey_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = HockeyStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getFootballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: FootballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/football_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = FootballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getHandballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: HandballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/handball_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = HandballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getBasketballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<BasketballStatistic[]>> {\n let params = new HttpParams();\n params = applyStatisticFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/basketball_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: BasketballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getVolleyballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<VolleyballStatistic[]>> {\n let params = new HttpParams();\n params = applyStatisticFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/volleyball_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: VolleyballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getHockeyStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<HockeyStatistic[]>> {\n let params = new HttpParams();\n params = applyStatisticFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/hockey_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: HockeyStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getFootballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<FootballStatistic[]>> {\n let params = new HttpParams();\n params = applyStatisticFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/football_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: FootballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getHandballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<HandballStatistic[]>> {\n let params = new HttpParams();\n params = applyStatisticFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/handball_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: HandballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getRugbyStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<RugbyStatistic[]>> {\n let params = new HttpParams();\n params = applyStatisticFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/rugby_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: RugbyStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getTournamentTeamUsers(tournamentTeamId: number): Promise<TournamentTeamUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/users/`).pipe(\n map(result => TournamentTeamUser.toFront(result))\n ).toPromise();\n }\n\n async myPermission(tournamentId: number): Promise<LeagueUserPermissions[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/permission/`).pipe(\n map((data: any) => (data.permissions || []).map(item => LeagueUserPermissions[item]))\n ).toPromise();\n }\n\n async getTournamentTeamTournaments(tournamentTeamId: number): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/tournaments/`).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n async getTournamentUserTournaments(tournamentTeamUserId: number): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${tournamentTeamUserId}/tournaments/`).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n}\n\nexport function applyGamesFilters(filters: TournamentGamesFilters, params: HttpParams): HttpParams {\n if (filters.tournamentIds) {\n params = params.set('tournament_ids', filters.tournamentIds.join(','));\n }\n if (filters.tournamentStageId) {\n params = params.set('tournament_stage_id', filters.tournamentStageId.toString());\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n if (filters.playoffStage) {\n params = params.set('playoff_stage', filters.playoffStage.toString());\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n if (filters.status) {\n params = params.set('status', GameStatuses[filters.status]);\n }\n if (filters.statuses) {\n const statuses = filters.statuses.map(i => GameStatuses[i]);\n params = params.set('statuses', statuses.join(','));\n }\n if (filters.tournamentCourtId) {\n params = params.set('tournament_court_id', filters.tournamentCourtId.toString());\n }\n if (filters.leaguePlayerId) {\n params = params.set('league_player_id', filters.leaguePlayerId.toString());\n }\n if (filters.userId) {\n params = params.set('user_id', filters.userId.toString());\n }\n if (filters.query) {\n params = params.set('query', filters.query);\n }\n if (filters.isPlayoff !== undefined && filters.isPlayoff !== null) {\n params = params.set('is_playoff', filters.isPlayoff ? '1' : '0');\n }\n return params;\n}\n\nexport function applyStatisticFilters(filters: StatisticFilters, params: HttpParams): HttpParams {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n\n if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\n }\n\n if (filters.is_playoff !== undefined && filters.is_playoff !== null) {\n params = params.set('is_playoff', filters.is_playoff ? '1' : '0');\n }\n\n return params;\n}\n\nexport function applyStatisticLeadersFilters(filters: StatisticLeadersFilters, params: HttpParams): HttpParams {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n\n if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\n }\n if (filters.fields) {\n params = params.set('fields', filters.fields.join(','));\n }\n return params;\n}\n","import {ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField} from './util';\nimport {File} from './file';\n\nexport enum BannerLocation {\n slider = 'slider',\n central = 'central',\n media = 'media',\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n picture: 'picture',\n link: 'link',\n sort: 'sort',\n location: 'location',\n },\n relation: {\n picture: File,\n location: enumField(BannerLocation),\n }\n})\nexport class LeagueBanner extends BaseModel {\n id: number;\n title: string;\n picture: File;\n link: string;\n sort: number;\n location: BannerLocation;\n\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(data: any): any {\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n picture: 'picture',\n link: 'link',\n sort: 'sort',\n },\n relation: {\n picture: File\n }\n})\nexport class LeaguePartner extends BaseModel {\n id: number;\n title: string;\n picture: File;\n link: string;\n sort: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { User } from './user';\n\nexport enum PollStatuses {\n open = 1,\n closed,\n archived,\n}\n\n@ModelInstance({\n mappingFields: {\n uuid: 'uuid',\n name: 'name'\n }\n})\nexport class PollVariant extends BaseModel {\n uuid: string;\n name: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n answer_uuid: 'answerUuid',\n user: 'user',\n poll_id: 'pollId',\n },\n relation: {\n user: User\n }\n})\nexport class PollAnswer extends BaseModel {\n id: number;\n answerUuid: string;\n user: User;\n pollId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n active: 'active',\n status: 'status',\n team_id: 'teamId',\n name: 'name',\n description: 'description',\n variants: 'variants',\n author: 'author',\n answers: 'answers',\n multiple_answer: 'multipleAnswer',\n anonymous: 'anonymous',\n created_at: 'createdAt'\n },\n relation: {\n status: enumField(PollStatuses),\n variants: PollVariant,\n author: User,\n answers: PollAnswer,\n createdAt: DateTimeField,\n }\n})\nexport class Poll extends BaseModel {\n id: number;\n active: boolean;\n teamId: number;\n status: PollStatuses;\n name: string;\n description: string;\n _variants: PollVariant[];\n author: User;\n _answers: PollAnswer[];\n multipleAnswer: boolean;\n anonymous: boolean;\n createdAt: Date;\n variantsWithAnswers: {variant: PollVariant, percent: number}[] = [];\n\n set variants(value: PollVariant[]) {\n this._variants = value || [];\n if (this._answers) {\n this.calculateAnswersPercentage();\n }\n }\n get variants(): PollVariant[] {\n return this._variants;\n }\n\n set answers(value: PollAnswer[]) {\n this._answers = value || [];\n if (this._variants) {\n this.calculateAnswersPercentage();\n }\n }\n get answers(): PollAnswer[] {\n return this._answers;\n }\n\n calculateAnswersPercentage() {\n if (!this._answers.length) {\n return;\n }\n\n const variants = this._variants.map(v => v.uuid);\n const answersByVariant = this._answers.reduce((acc, item) => {\n if (variants.indexOf(item.answerUuid) < 0) {\n return acc;\n }\n if (!acc[item.answerUuid]) {\n acc[item.answerUuid] = 0;\n }\n acc[item.answerUuid]++;\n return acc;\n }, {});\n this.variantsWithAnswers = this._variants.map(item => ({\n variant: item,\n percent: answersByVariant[item.uuid] ? Math.round(100 * answersByVariant[item.uuid] / this._answers.length) : 0\n }))\n .sort((a, b) => a.percent > b.percent ? -1 : 1);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n file: 'file',\n },\n relation: {\n file: File,\n }\n})\nexport class LeagueDocument extends BaseModel {\n id: number;\n file: File;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { League } from '../models/league';\nimport { map } from 'rxjs/operators';\nimport { Tournament, TournamentStatuses } from '../models/tournament';\nimport { ConfigService } from '../services/config.service';\nimport { applyGamesFilters, TournamentEventsListFilter, TournamentGamesFilters } from './tournament-api';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { GameMediaFilters } from './media-api';\nimport { TournamentSeason } from '../models/tournament-season';\nimport { Game, GameStatuses } from '../models/game';\nimport { LeaguePartner } from '../models/league-partner';\nimport { LeagueCourt } from '../models/league-court';\nimport { BannerLocation, LeagueBanner } from '../models/league-banner';\nimport { LeagueDocument } from '../models/league-document';\n\nexport interface TournamentListFilters {\n statuses: TournamentStatuses[];\n}\n\n@Injectable({providedIn: 'root'})\nexport class LeagueApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\n }\n\n async getByAlias(alias: string): Promise<League> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${alias}/`).pipe(\n map(result => League.toFront(result))\n ).toPromise();\n }\n\n async getByDomain(domain: string): Promise<League> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/by_domain/${domain}/`).pipe(\n map(result => League.toFront(result))\n ).toPromise();\n }\n\n async getTournaments(leagueId: number, filters?: TournamentListFilters): Promise<Tournament[]> {\n let params = new HttpParams();\n if (filters) {\n if (filters.statuses) {\n params = params.set('statuses', filters.statuses.map(s => TournamentStatuses[s]).join(','));\n }\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournaments/`, {params}).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n async getEvents(leagueId: number, page: number, size: number, filters?: TournamentEventsListFilter): Promise<PaginatedResponse<TournamentEvent[]>> {\n let params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\n if (filters) {\n if (filters.event) {\n params = params.set('event', TournamentEventTypes[filters.event]);\n }\n if (filters.search) {\n params = params.set('search', filters.search);\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/events/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentEvent.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getTournamentSeasons(leagueId: number): Promise<TournamentSeason[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournament_seasons/`).pipe(\n map(result => TournamentSeason.toFront(result))\n ).toPromise();\n }\n\n async getGames(leagueId: number, page: number, size: number, filters: TournamentGamesFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n params = applyGamesFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/games/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: Game.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getSeasons(leagueId: number, page = 1, size = 20, notClosed?: boolean, include?: string[]): Promise<PaginatedResponse<TournamentSeason[]>> {\n const params = new HttpParams()\n .set('page', page.toString())\n .set('size', size.toString())\n .set('not_closed', notClosed ? '1' : '')\n .set('include', include ? include.join(',') : '');\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournament_seasons/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentSeason.toFront(result.body)\n })))\n .toPromise();\n }\n\n async getPartners(leagueId: number): Promise<LeaguePartner[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/partners/`).pipe(\n map(result => LeaguePartner.toFront(result))\n ).toPromise();\n }\n\n async getBanners(leagueId: number, location?: BannerLocation): Promise<LeagueBanner[]> {\n const params = location ? new HttpParams().set('location', location) : new HttpParams();\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/banners/`, {params}).pipe(\n map(result => LeagueBanner.toFront(result))\n ).toPromise();\n }\n\n async getCourts(leagueId: number): Promise<LeagueCourt[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/courts/`).pipe(\n map(result => LeagueCourt.toFront(result))\n ).toPromise();\n }\n\n async getGraphicSettings(leagueId: number): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/graphic_settings/`)\n .toPromise();\n }\n\n async getDocuments(leagueId: number): Promise<LeagueDocument[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/documents/`).pipe(\n map(result => LeagueDocument.toFront(result))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { LeagueNews, LeagueNewsType } from '../models/league-news';\nimport { map } from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class LeagueNewsApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\n }\n\n async getLeagueNewsList(leagueId: number, page: number, size: number, type: LeagueNewsType = LeagueNewsType.text): Promise<PaginatedResponse<LeagueNews[]>> {\n const params = new HttpParams().set('page', page.toString())\n .set('size', size.toString())\n .set('type', LeagueNewsType[type]);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/news/`, {params, observe: 'response'})\n .pipe(map(response => ({\n total: +response.headers.get('X-Page-Count'),\n data: LeagueNews.toFront(response.body)\n })))\n .toPromise();\n }\n\n async getMainLeagueNews(leagueId: number): Promise<LeagueNews> {\n return this.httpClient.get<any[]>(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/news/?is_main=true`)\n .pipe(map(response => response && response.length > 0 ? LeagueNews.toFront(response[0]) : null))\n .toPromise();\n }\n\n async getMainLeagueNewsList(leagueId: number): Promise<LeagueNews[]> {\n return this.httpClient.get<any[]>(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/news/?is_main=true`)\n .pipe(map(response => LeagueNews.toFront(response)))\n .toPromise();\n }\n\n async getNewsById(newsId: number): Promise<LeagueNews> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league_news/${newsId}/`)\n .pipe(map(response => LeagueNews.toFront(response)))\n .toPromise();\n }\n\n async getTournamentNewsList(tournamentId: number): Promise<PaginatedResponse<LeagueNews[]>> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/news/`, {observe: 'response'})\n .pipe(map(response => ({\n total: +response.headers.get('X-Page-Count'),\n data: LeagueNews.toFront(response.body)\n })))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { LeaguePlayer } from '../models/league-player';\nimport { map } from 'rxjs/operators';\nimport { TournamentTeamUser } from '../models/tournament-team-user';\n\n@Injectable({providedIn: 'root'})\nexport class LeaguePlayerApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n getById(leaguePlayerId: number): Promise<LeaguePlayer> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league_player/${leaguePlayerId}/`).pipe(\n map(item => LeaguePlayer.toFront(item))\n ).toPromise();\n }\n\n getTournamentUsers(leaguePlayerId: number, seasonId?: number): Promise<TournamentTeamUser[]> {\n let params = new HttpParams();\n if (seasonId) {\n params = params.set('season_id', seasonId.toString());\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league_player/${leaguePlayerId}/tournament_users/`, {params}).pipe(\n map(item => TournamentTeamUser.toFront(item))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { MediaItem } from '../models/media-item';\nimport { Game, GameStatuses } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { ConfigService } from '../services/config.service';\nimport { applyGamesFilters, TournamentGamesFilters } from './tournament-api';\n\nexport interface GameMediaFilters extends TournamentGamesFilters {\n mediaCount?: number;\n}\n\nexport interface MediaFilters {\n mediaType?: 'photo' | 'video' | 'live_video';\n sort?: string;\n teamId?: number;\n}\n\n@Injectable({providedIn: 'root'})\nexport class MediaApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getMedia(mediaId: number): Promise<MediaItem> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/media/${mediaId}/`).pipe(\n map(result => MediaItem.toFront(result))\n ).toPromise();\n }\n\n async getTournamentGameMedia(tournamentId: number, page: number, size: number, filters?: GameMediaFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n params = applyGameMediaFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/game_media/`, {observe: 'response', params}).pipe(\n map(response => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n })\n ).toPromise();\n }\n\n async getLeagueGameMedia(leagueId: number, page: number, size: number, filters?: GameMediaFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n params = applyGameMediaFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/game_media/`, {observe: 'response', params}).pipe(\n map(response => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n })\n ).toPromise();\n }\n\n async getLeagueMedia(leagueId: number, page: number, size: number, filters: MediaFilters = {}): Promise<PaginatedResponse<MediaItem[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n if (filters.mediaType) {\n params = params.set('media_type', filters.mediaType);\n }\n if (filters.sort) {\n params = params.set('sort', filters.sort);\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/media/`, {params, observe: 'response'})\n .pipe(map(response => ({\n total: +response.headers.get('X-Page-Count'),\n data: MediaItem.toFront(response.body)\n }))).toPromise();\n }\n\n async getGameMediaById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/game_media/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getGameMedia(gameId: number): Promise<MediaItem[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/media/?size=1000`).pipe(\n map(result => MediaItem.toFront(result))\n ).toPromise();\n }\n\n async createZip(mediaIds: number[]): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/media/zip/`, mediaIds, { responseType: 'blob' })\n .toPromise();\n }\n\n async downloadMedia(mediaId: number): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/media/${mediaId}/download/`,{responseType: 'blob'})\n .toPromise();\n }\n}\n\nexport function applyGameMediaFilters(filters: GameMediaFilters, params: HttpParams, ): HttpParams {\n if (filters) {\n params = applyGamesFilters(filters, params);\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n if (filters.tournamentStageId) {\n params = params.set('tournament_stage_id', filters.tournamentStageId.toString());\n }\n if (filters.playoffId) {\n params = params.set('playoff_id', filters.playoffId.toString());\n }\n if (filters.playoffStage) {\n params = params.set('playoff_stage', filters.playoffStage.toString());\n }\n if (filters.status) {\n params = params.set('status', GameStatuses[filters.status]);\n }\n if (filters.mediaCount) {\n params = params.set('media_count', filters.mediaCount.toString());\n }\n }\n return params;\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { TeamUser } from './team-user';\nimport { Game } from './game';\n\nexport enum GameInviteStatus {\n accepted = 1,\n declined,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_user: 'teamUser',\n game_id: 'gameId',\n game: 'game',\n status: 'status',\n },\n relation: {\n game: Game,\n teamUser: TeamUser,\n status: enumField(GameInviteStatus),\n }\n})\nexport class GameInvite extends BaseModel {\n id: number;\n teamUser: TeamUser;\n gameId: number;\n game: Game;\n status: GameInviteStatus;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { User } from './user';\nimport { Team } from './team';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n user: 'user',\n team: 'team',\n team_id: 'teamId',\n user_accept: 'userAccept',\n team_accept: 'teamAccept',\n users_count: 'usersCount',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n score_sum: 'scoreSum',\n created_at: 'createdAt',\n updated_at: 'updatedAt',\n },\n relation: {\n user: User,\n team: Team,\n createdAt: DateTimeField,\n updateAt: DateTimeField,\n }\n})\nexport class TeamInvite extends BaseModel {\n id: number;\n userId: number;\n user: User;\n teamId: number;\n team: Team;\n userAccept: boolean;\n teamAccept: boolean;\n usersCount: number;\n gamesCount: number;\n wonGamesCount: number;\n scoreSum: number;\n createdAt: Date;\n updatedAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","export enum TeamEventTypes {\n training = 1,\n other = 2,\n}\n","import { enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum TeamEventInviteStatuses {\n accepted = 1,\n declined = 2\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_event_id: 'teamEventId',\n team_user_id: 'teamUserId',\n status: 'status',\n },\n relation: {\n status: enumField(TeamEventInviteStatuses)\n }\n})\nexport class TeamEventInvite {\n id: number;\n teamEventId: number;\n teamUserId: number;\n status: TeamEventInviteStatuses;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { TeamEventTypes } from '../models/team-event-type';\n\nexport const TeamEventTypeLocalization = {\n [TeamEventTypes.training]: 'ТÑениÑовка',\n [TeamEventTypes.other]: 'ÐÑÑгое'\n};\n","import { BaseModel, enumField, ModelInstance, DateTimeField, ToBackHook, ToFrontHook } from './util';\nimport { Team } from './team';\nimport { TeamEventTypeLocalization } from '../localization/team-event-type';\nimport { TeamEventTypes } from './team-event-type';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n team: 'team',\n event_type: 'eventType',\n event_custom_name: 'eventCustomName',\n description: 'description',\n datetime: 'datetime',\n location: 'location',\n },\n relation: {\n eventType: enumField(TeamEventTypes),\n team: Team,\n datetime: DateTimeField,\n }\n})\nexport class TeamEvent extends BaseModel {\n id: number;\n teamId: number;\n team: Team;\n eventType: TeamEventTypes;\n eventCustomName: string;\n description: string;\n datetime: Date;\n location: string;\n\n get name(): string {\n if (this.eventType === TeamEventTypes.other) {\n return this.eventCustomName;\n }\n return TeamEventTypeLocalization[this.eventType];\n }\n\n get isClosed(): boolean {\n return this.datetime.getTime() < new Date().getTime();\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { Team } from './team';\nimport { Poll } from './poll';\nimport { Game } from './game';\nimport { TeamInvite } from './team-invite';\nimport { TeamUser } from './team-user';\nimport { GameInvite } from './game-invite';\nimport { TeamEvent } from './team-event';\nimport { TeamEventInvite } from './team-event-invite';\nimport { Tournament } from './tournament';\nimport { TournamentInvite } from './tournament-invite';\nimport { TournamentTeam } from './tournament-team';\nimport { User } from './user';\n\nexport enum NotificationType {\n team_updated = 1,\n team_invited,\n team_join_request,\n team_join_declined_by_team,\n team_join_declined_by_user,\n team_join_canceled_by_team,\n team_join_canceled_by_user,\n team_joined_for_user,\n team_joined_for_team,\n team_user_role_changed_for_user,\n team_user_role_changed_for_team,\n team_user_number_changed,\n team_user_deleted_for_user,\n team_user_deleted_for_team,\n team_user_left,\n\n game_updated,\n game_invited,\n game_invite_accepted,\n game_invite_declined,\n game_remind,\n game_won,\n game_losing,\n game_tech_defeat,\n game_tech_victory,\n\n poll_created,\n poll_closed,\n\n team_event_invited,\n team_event_accepted,\n team_event_declined,\n team_event_remind,\n\n tournament_invited,\n tournament_joined,\n tournament_join_declined,\n tournament_join_canceled,\n tournament_user_invited,\n tournament_user_accepted_for_team,\n tournament_user_accepted_for_user,\n tournament_user_added,\n tournament_user_declined_for_team,\n tournament_user_declined_for_user,\n tournament_user_invite_deleted,\n tournament_user_deleted,\n tournament_user_disqualified_for_team,\n tournament_user_disqualified_for_user,\n tournament_user_disqualification_updated_for_team,\n tournament_user_disqualification_updated_for_user,\n tournament_team_deleted,\n\n org_tournament_invite_created,\n org_tournament_invite_declined,\n org_tournament_invite_deleted,\n org_tournament_invite_changed,\n org_tournament_user_deleted,\n org_tournament_user_invited,\n org_tournament_user_has_changes,\n org_tournament_team_leave,\n}\n\nexport enum NotificationServiceEnum {\n public = 1,\n org\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n event_type: 'event',\n data: 'data',\n initiator: 'initiator',\n team: 'team',\n team_invite: 'teamInvite',\n team_user: 'teamUser',\n poll: 'poll',\n game: 'game',\n game_invite: 'gameInvite',\n team_event: 'teamEvent',\n team_event_invite: 'teamEventInvite',\n tournament: 'tournament',\n tournament_invite: 'tournamentInvite',\n tournament_team: 'tournamentTeam',\n viewed: 'viewed',\n protected: 'protected',\n service: 'service',\n created_at: 'createdAt',\n },\n relation: {\n event: enumField(NotificationType),\n initiator: User,\n team: Team,\n teamInvite: TeamInvite,\n teamUser: TeamUser,\n poll: Poll,\n game: Game,\n gameInvite: GameInvite,\n teamEvent: TeamEvent,\n teamEventInvite: TeamEventInvite,\n tournament: Tournament,\n tournamentInvite: TournamentInvite,\n tournamentTeam: TournamentTeam,\n service: enumField(NotificationServiceEnum),\n createdAt: DateTimeField,\n }\n})\nexport class Notification extends BaseModel {\n id: number;\n event: NotificationType;\n data: any;\n initiator: User;\n team: Team;\n teamInvite: TeamInvite;\n teamUser: TeamUser;\n poll: Poll;\n game: Game;\n gameInvite: GameInvite;\n teamEvent: TeamEvent;\n teamEventInvite: TeamEventInvite;\n tournament: Tournament;\n tournamentInvite: TournamentInvite;\n tournamentTeam: TournamentTeam;\n viewed: boolean;\n protected: boolean;\n service: NotificationServiceEnum;\n createdAt: Date;\n\n get important(): boolean {\n return true;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\nimport { TeamUser } from './team-user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team_invite_id: 'tournamentTeamInviteId',\n tournament_team_id: 'tournamentTeamId',\n team_user: 'teamUser',\n accepted: 'accepted'\n },\n relation: {\n teamUser: TeamUser\n }\n})\nexport class TournamentTeamUserInvite extends BaseModel {\n id: number;\n tournamentTeamInviteId: number;\n tournamentTeamId: number;\n teamUser: TeamUser;\n accepted: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\nimport { Tournament } from './tournament';\nimport { TournamentTeamUserInvite } from './tournament-team-user-invite';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team: 'team',\n tournament: 'tournament',\n team_accept: 'teamAccept',\n organization_accept: 'organizationAccept',\n user_invites_count: 'userInvitesCount',\n user_invites: 'userInvites',\n notifications_count: 'notificationsCount',\n },\n relation: {\n team: Team,\n tournament: Tournament,\n userInvites: TournamentTeamUserInvite,\n }\n})\nexport class TournamentInvite extends BaseModel {\n id: number;\n team: Team;\n tournament: Tournament;\n teamAccept: boolean;\n organizationAccept: boolean;\n userInvitesCount: number;\n userInvites: TournamentTeamUserInvite[];\n notificationsCount: number;\n\n get isOpen(): boolean {\n return (this.teamAccept === null || this.organizationAccept === null) && this.teamAccept !== false && this.organizationAccept !== false;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\n\nexport enum NotificationAllowTypes {\n all = 1,\n important,\n none\n}\n\n@ModelInstance({\n mappingFields: {\n user_id: 'userId',\n popup: 'popup',\n sound: 'sound',\n browser: 'browser',\n email: 'email'\n },\n relation: {\n sound: enumField(NotificationAllowTypes),\n browser: enumField(NotificationAllowTypes),\n }\n})\nexport class NotificationSettings extends BaseModel {\n userId: number;\n popup: boolean;\n sound: NotificationAllowTypes;\n browser: NotificationAllowTypes;\n email: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { GameLogBase } from './game-log-base';\nimport { GameUser } from './game-user';\n\nexport enum RugbyGameLogTypes {\n enter_game = 1,\n exit_game,\n try,\n penalty_try,\n conversion_goal,\n conversion_miss,\n drawing_ball,\n penalty_miss,\n penalty_goal,\n drop_goal,\n drop_goal_miss,\n free_kick,\n yellow_card,\n red_card,\n offload,\n tackle,\n out,\n handling_error,\n carries_other_gainline,\n\n // team actions\n timeout,\n scrum_won,\n scrum_lose,\n scrum_won_free,\n lineout_success,\n lineout_loss,\n lineout_steal,\n quick_throw,\n ruck_won,\n ruck_lose,\n maul_won,\n maul_lose,\n team_foul,\n}\n\nexport const RUGBY_GAME_LOG_TYPE_POINTS = {\n [RugbyGameLogTypes.penalty_try]: 7,\n [RugbyGameLogTypes.try]: 5,\n [RugbyGameLogTypes.conversion_goal]: 2,\n [RugbyGameLogTypes.penalty_goal]: 3,\n [RugbyGameLogTypes.drop_goal]: 3\n};\n\nexport const RUGBY_TEAM_LOG_TYPES = [\n RugbyGameLogTypes.timeout, RugbyGameLogTypes.scrum_won, RugbyGameLogTypes.scrum_lose, RugbyGameLogTypes.scrum_won_free,\n RugbyGameLogTypes.lineout_success, RugbyGameLogTypes.lineout_loss, RugbyGameLogTypes.lineout_steal, RugbyGameLogTypes.quick_throw,\n RugbyGameLogTypes.ruck_won, RugbyGameLogTypes.ruck_lose, RugbyGameLogTypes.maul_won, RugbyGameLogTypes.maul_lose,\n RugbyGameLogTypes.team_foul,\n];\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n penalty_type: 'penaltyType',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(RugbyGameLogTypes)\n }\n})\nexport class RugbyGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: RugbyGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n isGoalie: boolean;\n\n compare(model: RugbyGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n isScoreType(): boolean {\n return RUGBY_GAME_LOG_TYPE_POINTS[this.logType] !== undefined;\n }\n\n scorePoints(): number {\n return RUGBY_GAME_LOG_TYPE_POINTS[this.logType];\n }\n\n isAfter(log: RugbyGameLog): boolean {\n if (this.time === log.time && this.period === log.period) {\n return this.id > log.id;\n }\n if (this.period === log.period) {\n return this.time > log.time;\n }\n return this.period > log.period;\n }\n\n isFoulType(): boolean {\n return [RugbyGameLogTypes.team_foul, RugbyGameLogTypes.yellow_card, RugbyGameLogTypes.red_card].indexOf(this.logType) > -1;\n }\n\n isTeamType(): boolean {\n return RUGBY_TEAM_LOG_TYPES.includes(this.logType);\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { Notification } from '../models/notification';\nimport { NotificationSettings } from '../models/notification-settings';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { ConfigService } from '../services/config.service';\n\nexport interface NotificationFilters {\n protected?: boolean;\n not_viewed?: boolean;\n important?: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class NotificationBaseApi {\n protected apiUrl: string;\n\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getCount(): Promise<number> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/count/`)\n .pipe(map(data => +data))\n .toPromise();\n }\n\n async getList(page: number, size: number, filters: NotificationFilters = {}): Promise<PaginatedResponse<Notification[]>> {\n let params = new HttpParams()\n .set('page', page.toString())\n .set('size', size.toString());\n for (const key of Object.keys(filters)) {\n params = params.set(key, filters[key]);\n }\n\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/`, {params, observe: 'response'})\n .pipe(\n map(response => {\n const data: Notification[] = Notification.toFront(response.body);\n return {\n total: +response.headers.get('x-page-count'),\n data\n };\n }),\n ).toPromise();\n }\n\n async markViewed(notificationId: number, viewed: boolean): Promise<Notification> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/${notificationId}/viewed/`, {viewed})\n .pipe(map(data => Notification.toFront(data)))\n .toPromise();\n }\n\n async markAllViewed(): Promise<Notification[]> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/viewed/`, {})\n .pipe(map(data => Notification.toFront(data)))\n .toPromise();\n }\n\n async getNotificationSettings(): Promise<NotificationSettings> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}${this.apiUrl}/notification_settings/`)\n .pipe(map(data => NotificationSettings.toFront(data)))\n .toPromise();\n }\n\n async updateNotificationSettings(data: NotificationSettings): Promise<NotificationSettings> {\n return this.httpClient.post(\n `${this.configService.get('apiUrl')}${this.apiUrl}/notification_settings/`,\n NotificationSettings.toBack(data)\n )\n .pipe(map(result => NotificationSettings.toFront(result)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NotificationBaseApi } from './notification-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class NotificationApi extends NotificationBaseApi {\n protected apiUrl = '/api/v1';\n}\n","import { Injectable } from '@angular/core';\nimport { NotificationBaseApi } from './notification-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class OrgNotificationApi extends NotificationBaseApi {\n protected apiUrl = '/org/api/v1';\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\nimport { City } from '../models/city';\nimport { Sport } from '../models/sport';\n\n@Injectable({providedIn: 'root'})\nexport class ReferenceApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getCities(): Promise<City[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/reference/cities/`)\n .pipe(\n map(data => City.toFront(data))\n ).toPromise();\n }\n\n async getSports(): Promise<Sport[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/sport/`)\n .pipe(\n map(data => Sport.toFront(data))\n ).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { RugbyStatistic } from './rugby-statistic';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: RugbyStatistic,\n competitorTeam: RugbyStatistic\n }\n})\nexport class RugbyGameTeamStatistic extends BaseModel {\n team: RugbyStatistic;\n competitorTeam: RugbyStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n updated_at: 'updatedAt',\n points: 'points',\n tries: 'tries',\n penalty_tries: 'penaltyTries',\n conversion_goals: 'conversionGoals',\n conversion_misses: 'conversionMisses',\n drawing_ball: 'drawingBall',\n penalty_misses: 'penaltyMisses',\n penalty_goals: 'penaltyGoals',\n drop_goals: 'dropGoals',\n drop_goal_misses: 'dropGoalMisses',\n free_kicks: 'freeKicks',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n offloads: 'offloads',\n tackles: 'tackles',\n outs: 'outs',\n handling_errors: 'handlingErrors',\n carries_other_gainline: 'carriesOtherGainline',\n game_time: 'gameTime',\n plus_minus: 'plusMinus'\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class RugbyGameStatistic extends BaseModel {\n gameUserId: number;\n points: number;\n tries: number;\n penaltyTries: number;\n conversionGoals: number;\n conversionMisses: number;\n drawingBall: number;\n penaltyMisses: number;\n penaltyGoals: number;\n dropGoals: number;\n dropGoalMisses: number;\n freeKicks: number;\n yellowCards: number;\n redCards: number;\n offloads: number;\n tackles: number;\n outs: number;\n handlingErrors: number;\n carriesOtherGainline: number;\n gameTime: number;\n plusMinus: number;\n updatedAt: Date;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook, enumField } from './util';\n\nexport enum TeamPermissionTypes {\n for_all = 1,\n for_users,\n for_team\n}\n\n@ModelInstance({\n mappingFields: {\n players: 'players',\n games: 'games',\n statistic: 'statistic',\n polls: 'polls',\n events: 'events'\n },\n relation: {\n players: enumField(TeamPermissionTypes),\n games: enumField(TeamPermissionTypes),\n statistic: enumField(TeamPermissionTypes),\n polls: enumField(TeamPermissionTypes),\n events: enumField(TeamPermissionTypes)\n }\n})\nexport class TeamPermission extends BaseModel {\n players: TeamPermissionTypes;\n games: TeamPermissionTypes;\n statistic: TeamPermissionTypes;\n polls: TeamPermissionTypes;\n events: TeamPermissionTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { BasketballGameTeamStatistic } from '../models/basketball-game-team-statistic';\nimport { BasketballGameStatistic } from '../models/basketball-game-statistic';\nimport { BasketballGameLog } from '../models/basketball-game-log';\nimport { GameBaseApi } from './game-base-api';\nimport { RugbyGameTeamStatistic } from '../models/rugby-game-team-statistic';\nimport { RugbyGameStatistic } from '../models/rugby-game-statistic';\nimport { RugbyGameLog } from '../models/rugby-game-log';\n\n@Injectable({providedIn: 'root'})\nexport class RugbyGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_rugby_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<RugbyGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_rugby_game/${gameId}/team_statistic/`).pipe(\n map(result => RugbyGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<RugbyGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_rugby_game/${gameId}/user_statistic/`).pipe(\n map(result => RugbyGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<RugbyGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_rugby_game/${gameId}/logs/`).pipe(\n map(result => RugbyGameLog.toFront(result))\n ).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n email: 'email',\n first_name: 'firstName',\n last_name: 'lastName',\n },\n})\nexport class TeamInviteExternal extends BaseModel {\n id: number;\n teamId: number;\n email: string;\n firstName: string;\n lastName: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\n\nexport enum UserPermissionTypes {\n denied = 1,\n for_all,\n for_users,\n for_team\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n personal_data: 'personalData',\n games: 'games',\n teams: 'teams',\n statistic: 'statistic'\n },\n relation: {\n personalData: enumField(UserPermissionTypes),\n games: enumField(UserPermissionTypes),\n teams: enumField(UserPermissionTypes),\n statistic: enumField(UserPermissionTypes)\n }\n})\nexport class UserPermission extends BaseModel {\n id: number;\n personalData: UserPermissionTypes;\n games: UserPermissionTypes;\n teams: UserPermissionTypes;\n statistic: UserPermissionTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { TeamUserRole } from './team-user';\n\n@ModelInstance({\n mappingFields: {\n can_edit: 'canEdit',\n can_view_users: 'canViewUsers',\n can_manage_permission: 'canManagePermission',\n can_change_owner: 'canChangeOwner',\n can_delete: 'canDelete',\n can_manage_invites: 'canManageInvites',\n can_view_invites: 'canViewInvites',\n can_manage_polls: 'canManagePolls',\n can_view_polls: 'canViewPolls',\n can_answer_poll: 'canAnswerPoll',\n can_manage_games: 'canManageGames',\n can_view_games: 'canViewGames',\n can_view_statistic: 'canViewStatistic',\n can_promote_users: 'canPromoteUsers',\n can_edit_users: 'canEditUsers',\n can_delete_users: 'canDeleteUsers',\n can_view_events: 'canViewEvents',\n can_manage_events: 'canManageEvents',\n can_view_tournaments: 'canViewTournaments',\n can_manage_tournaments: 'canManageTournaments',\n role: 'role'\n },\n relation: {\n role: enumField(TeamUserRole)\n }\n})\nexport class TeamAccess extends BaseModel {\n canEdit: boolean;\n canViewUsers: boolean;\n canManagePermission: boolean;\n canChangeOwner: boolean;\n canDelete: boolean;\n canManageInvites: boolean;\n canViewInvites: boolean;\n canManagePolls: boolean;\n canViewPolls: boolean;\n canAnswerPoll: boolean;\n canManageGames: boolean;\n canViewGames: boolean;\n canViewStatistic: boolean;\n canPromoteUsers: boolean;\n canEditUsers: boolean;\n canDeleteUsers: boolean;\n canViewEvents: boolean;\n canManageEvents: boolean;\n canViewTournaments: boolean;\n canManageTournaments: boolean;\n role: TeamUserRole;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';\nimport { Team } from '../models/team';\nimport { map } from 'rxjs/operators';\nimport { TeamUser, TeamUserRole } from '../models/team-user';\nimport { User } from '../models/user';\nimport { TeamInvite } from '../models/team-invite';\nimport { TeamInviteExternal } from '../models/team-invite-external';\nimport { Poll } from '../models/poll';\nimport { VolleyballStatistic } from '../models/volleyball-statistic';\nimport { Game } from '../models/game';\nimport { TeamEvent } from '../models/team-event';\nimport { Tournament } from '../models/tournament';\nimport { TournamentTeam } from '../models/tournament-team';\nimport { TournamentInvite } from '../models/tournament-invite';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { BasketballStatistic } from '../models/basketball-statistic';\nimport { TeamPermission } from '../models/team-permission';\nimport { TeamAccess } from '../models/team-access';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TeamApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async search(query: string, sportId?: number): Promise<Team[]> {\n let params = (new HttpParams()).set('search', query);\n if (sportId) {\n params = params.set('sport', sportId.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/`, {params})\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async create(team: Team): Promise<Team> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/`, Team.toBack(team))\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getById(teamId: number): Promise<Team> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/`)\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getTeamAccess(teamId: number): Promise<TeamAccess> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/access/`)\n .pipe(map(data => TeamAccess.toFront(data)))\n .toPromise();\n }\n\n async update(teamId: number, values: any): Promise<Team> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/`, Team.toBack(values))\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async delete(team: Team): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team/${team.id}/`)\n .toPromise();\n }\n\n async getPermission(teamId: number): Promise<TeamPermission> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/permission/`)\n .pipe(map(data => TeamPermission.toFront(data)))\n .toPromise();\n }\n\n async updatePermission(teamId: number, permission: TeamPermission): Promise<TeamPermission> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/permission/`, TeamPermission.toBack(permission))\n .pipe(map(data => TeamPermission.toFront(data)))\n .toPromise();\n }\n\n async getUsers(teamId: number, tournamentId?: number): Promise<TeamUser[]> {\n let params = new HttpParams();\n if (tournamentId) {\n params = params.set('tournament_id', tournamentId.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/`, {params})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateUserRole(teamId: number, teamUserId: number, role: TeamUserRole): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/${teamUserId}/role/`, {role: TeamUserRole[role]})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateUserNumber(teamId: number, teamUserId: number, gameNumber: number): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/${teamUserId}/number/`, {number: gameNumber.toString()})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async deleteUser(teamUser: TeamUser): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team/${teamUser.teamId}/users/${teamUser.id}/`)\n .toPromise();\n }\n\n async changeOwner(teamId: number, user: User): Promise<Team> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/owner/`, {id: user.id})\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getInvites(teamId: number): Promise<TeamInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites/`)\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async sendInvite(teamId: number, user: User): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites/`, {user})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/accept/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async declineInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/decline/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async resendInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/resend/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async getInvitesExternal(teamId: number): Promise<TeamInviteExternal[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites_external/`)\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async sendInviteExternal(teamId: number, invite: TeamInviteExternal): Promise<TeamInviteExternal> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites_external/`, TeamInviteExternal.toBack(invite))\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async deleteInviteExternal(invite: TeamInviteExternal): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/invites_external/${invite.id}/`)\n .toPromise();\n }\n\n async resendInviteExternal(invite: TeamInviteExternal): Promise<TeamInviteExternal> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/invites_external/${invite.id}/resend/`, {})\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async getPolls(teamId: number, archive: boolean = false): Promise<Poll[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/polls/${archive ? '?archive=1' : ''}`)\n .pipe(map(data => Poll.toFront(data)))\n .toPromise();\n }\n\n async createPoll(teamId: number, poll: Poll): Promise<Poll> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/polls/`, Poll.toBack(poll))\n .pipe(map(data => Poll.toFront(data)))\n .toPromise();\n }\n\n async getUsersStatistic(teamId: number): Promise<BasketballStatistic[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/statistics/`)\n .pipe(map(data => BasketballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getVolleyballStatistic(teamId: number): Promise<VolleyballStatistic[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/volleyball_statistics/`)\n .pipe(map(data => VolleyballStatistic.toFront(data)))\n .toPromise();\n }\n\n async joinTeam(teamId: number): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/join/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async leaveTeam(teamId: number): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/leave/`, {})\n .toPromise();\n }\n\n async getGames(teamId: number, archive = false): Promise<Game[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/games/${archive ? '?archive=1' : ''}`)\n .pipe(map(data => Game.toFront(data)))\n .toPromise();\n }\n\n async createGame(teamId: number, game: Game): Promise<Game> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/games/`, Game.toBack(game))\n .pipe(map(data => Game.toFront(data)))\n .toPromise();\n }\n\n async getTeamEvents(teamId: number): Promise<TeamEvent[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/events/`)\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async createTeamEvent(teamId: number, teamEvent: TeamEvent): Promise<TeamEvent> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/events/`, TeamEvent.toBack(teamEvent))\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async getTournaments(teamId: number): Promise<Tournament[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournaments/`)\n .pipe(map(data => Tournament.toFront(data)))\n .toPromise();\n }\n\n async getTournamentTeams(teamId: number): Promise<TournamentTeam[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournament_teams/`)\n .pipe(map(data => TournamentTeam.toFront(data)))\n .toPromise();\n }\n\n async getTournamentInvites(teamId: number): Promise<TournamentInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournament_invites/`)\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async getTournamentGames(teamId: number, tournamentId: number, page: number, size?: number): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournaments/${tournamentId}/games/`, {params, observe: 'response'})\n .pipe(map((response: HttpResponse<any>) => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n }))\n .toPromise();\n }\n\n async acceptTournamentInvite(inviteId: number): Promise<TournamentInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/tournament_invite/${inviteId}/accept/`, {})\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async declineTournamentInvite(inviteId: number): Promise<TournamentInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/tournament_invite/${inviteId}/decline/`, {})\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async registerLazyUser(teamId: number, userData: User): Promise<TeamUser> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/lazy_user/`, {user: User.toBack(userData)})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async getLazyUser(teamUserId: number): Promise<TeamUser> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`)\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateLazyUser(teamUserId: number, userData: User): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`, {user: User.toBack(userData)})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async deleteLazyUser(teamUserId: number): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`)\n .toPromise();\n }\n\n async resendLazyUserEmail(teamUserId: number): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/resend_email/`, {})\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { TeamEvent } from '../models/team-event';\nimport { TeamEventInvite } from '../models/team-event-invite';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TeamEventApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getTeamEvent(teamEventId: number): Promise<TeamEvent> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/`)\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async updateTeamEvent(teamEvent: TeamEvent): Promise<TeamEvent> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEvent.id}/`, TeamEvent.toBack(teamEvent))\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async deleteTeamEvent(teamEventId: number): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/`)\n .toPromise();\n }\n\n async getTeamEventInvites(teamEventId: number): Promise<TeamEventInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/invites/`)\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async createTeamEventInvite(teamEventId: number, teamUserId: number): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/invites/`, {team_user_id: teamUserId})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptTeamEventInvite(teamEventInvite: TeamEventInvite): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event_invite/${teamEventInvite.id}/accept/`, {})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async declineTeamEventInvite(teamEventInvite: TeamEventInvite): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event_invite/${teamEventInvite.id}/decline/`, {})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\n\n@ModelInstance({\n mappingFields: {\n valid_users_count: 'validUsersCount',\n invalid_users_count: 'invalidUsersCount',\n has_access: 'hasAccess',\n invite_sent: 'inviteSent',\n already_in_tournament: 'alreadyInTournament'\n }\n})\nexport class TournamentJoinData extends BaseModel {\n validUsersCount: number;\n invalidUsersCount: number;\n hasAccess: boolean;\n inviteSent: boolean;\n alreadyInTournament: boolean;\n\n get usersCount(): number {\n return this.validUsersCount + this.invalidUsersCount;\n }\n\n get valid() {\n return this.hasAccess && !this.inviteSent && !this.alreadyInTournament;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n join_data: 'joinData'\n },\n relation: {\n team: Team,\n joinData: TournamentJoinData\n }\n})\nexport class TournamentJoinTeam extends BaseModel {\n team: Team;\n joinData: TournamentJoinData;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TournamentJoinTeam } from '../models/tournament-join-team';\nimport { map } from 'rxjs/operators';\nimport { TeamUser } from '../models/team-user';\nimport { TournamentTeamUserInvite } from '../models/tournament-team-user-invite';\nimport { TournamentInvite } from '../models/tournament-invite';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TournamentJoinApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getTeamsForJoin(tournamentId: number): Promise<TournamentJoinTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/teams_for_join/`).pipe(\n map(response => TournamentJoinTeam.toFront(response))\n ).toPromise();\n }\n\n async getTeamUsers(teamId: number): Promise<TeamUser[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/`)\n .pipe(\n map(data => TeamUser.toFront(data))\n ).toPromise();\n }\n\n async joinTournament(tournamentId: number, teamId: number, invites: TournamentTeamUserInvite[]): Promise<TournamentInvite> {\n const body = {\n team: {id: teamId},\n user_invites: TournamentTeamUserInvite.toBack(invites)\n };\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/join/`, body)\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { TournamentSeason } from '../models/tournament-season';\nimport { ConfigService } from '../services/config.service';\nimport { map } from 'rxjs/operators';\nimport { Game, GameStatuses } from '../models/game';\nimport { Tournament } from '../models/tournament';\nimport { applyGamesFilters, TournamentEventsListFilter, TournamentGamesFilters } from './tournament-api';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { applyGameMediaFilters, GameMediaFilters } from './media-api';\nimport { TournamentTeam } from '../models/tournament-team';\nimport { GameTimelineStages } from '../models/game-timeline-stages';\nimport { Playoff } from '../models/playoff';\n\n@Injectable({providedIn: 'root'})\nexport class TournamentSeasonApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getByAlias(leagueId: number, alias: string): Promise<TournamentSeason> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournament_seasons/${alias}/`).pipe(\n map(result => TournamentSeason.toFront(result))\n ).toPromise();\n }\n\n async getTournaments(seasonId: number): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/tournaments/`).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n async getGames(seasonId: number, page: number, size: number, filters: TournamentGamesFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n params = applyGamesFilters(filters, params);\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/games/`,\n {params, observe: 'response'}\n ).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: Game.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getEvents(seasonId: number, page: number, size: number, filters?: TournamentEventsListFilter): Promise<PaginatedResponse<TournamentEvent[]>> {\n let params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\n if (filters) {\n if (filters.event) {\n params = params.set('event', TournamentEventTypes[filters.event]);\n }\n if (filters.search) {\n params = params.set('search', filters.search);\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n }\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/events/`,\n {params, observe: 'response'}\n )\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentEvent.toFront(result.body)\n })))\n .toPromise();\n }\n\n async getGameMedia(seasonId: number, page: number, size: number, filters: GameMediaFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n params = applyGameMediaFilters(filters, params);\n\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/game_media/`,\n {observe: 'response', params})\n .pipe(\n map(response => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n })\n ).toPromise();\n }\n\n async getTeams(seasonId: number, short?: boolean): Promise<TournamentTeam[]> {\n let params = new HttpParams();\n if (short) {\n params = params.set('short', '1');\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/teams/`, {params}).pipe(\n map(result => TournamentTeam.toFront(result))\n ).toPromise();\n }\n\n async getPlayoffs(seasonId: number): Promise<Playoff[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/playoffs/`).pipe(\n map(result => Playoff.toFront(result))\n ).toPromise();\n }\n\n async getGamesStages(seasonId: number): Promise<GameTimelineStages> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/games_stages/`)\n .pipe(map(data => GameTimelineStages.toFront(data)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TournamentStage } from '../models/tournament-stage';\nimport { map } from 'rxjs/operators';\nimport { TournamentGroup } from '../models/tournament-group';\nimport { Playoff } from '../models/playoff';\nimport { TournamentStageTeam } from '../models/tournament-stage-team';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TournamentStageApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getById(id: number): Promise<TournamentStage> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${id}/`)\n .pipe(map(result => TournamentStage.toFront(result)))\n .toPromise();\n }\n\n async getGroups(stageId: number): Promise<TournamentGroup[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/groups/`)\n .pipe(map(result => TournamentGroup.toFront(result)))\n .toPromise();\n }\n\n async getPlayoffs(stageId: number): Promise<Playoff[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/playoff/`)\n .pipe(map(result => Playoff.toFront(result)))\n .toPromise();\n }\n\n async getTeams(stageId: number): Promise<TournamentStageTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/teams/`)\n .pipe(map(result => TournamentStageTeam.toFront(result)))\n .toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n edit: 'edit',\n personal_data: 'personalData',\n teams: 'teams',\n statistic: 'statistic',\n games: 'games'\n }\n})\nexport class UserAccess extends BaseModel {\n edit: boolean;\n personalData: boolean;\n teams: boolean;\n statistic: boolean;\n games: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField, DateTimeField } from './util';\nimport { GameLogBase } from './game-log-base';\nimport { GameUser } from './game-user';\n\nexport enum VolleyballGameLogType {\n enter_game = 1,\n exit_game,\n remove_game,\n serve_hit,\n serve_fault,\n serve_ace,\n stuff_block,\n block_fault,\n block_rebound,\n attack_spike,\n attack_fault,\n attack_shot,\n receive,\n receive_fault,\n excellent_receive,\n point,\n fault,\n serve_receive,\n serve_receive_fault,\n excellent_serve_receive,\n timeout,\n yellow_card,\n}\n\nexport const SCORE_LOG_TYPES = [\n VolleyballGameLogType.serve_ace, VolleyballGameLogType.stuff_block,\n VolleyballGameLogType.attack_spike, VolleyballGameLogType.point\n];\nexport const FAULT_LOG_TYPES = [\n VolleyballGameLogType.serve_fault, VolleyballGameLogType.attack_fault,\n VolleyballGameLogType.block_fault, VolleyballGameLogType.receive_fault,\n VolleyballGameLogType.fault, VolleyballGameLogType.serve_receive_fault\n];\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n log_type: 'logType',\n set: 'set',\n rally: 'rally',\n position: 'position',\n team_id: 'teamId',\n datetime: 'datetime',\n is_highlight: 'isHighlight',\n },\n relation: {\n logType: enumField(VolleyballGameLogType),\n datetime: DateTimeField\n }\n})\nexport class VolleyballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n active = true;\n gameId: number;\n gameUserId: number;\n logType: VolleyballGameLogType;\n set: number;\n rally: number;\n position: number;\n teamId: number;\n datetime: Date;\n isHighlight: boolean;\n gameUser: GameUser;\n\n compare(model: VolleyballGameLog): number {\n if (this.rally === model.rally && this.set === model.set) {\n if (this.datetime && model.datetime) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n } else {\n return this.id < model.id ? 1 : -1;\n }\n }\n if (this.set === model.set) {\n return this.rally < model.rally ? 1 : -1;\n }\n return this.set < model.set ? 1 : -1;\n }\n\n isScoreType() {\n return SCORE_LOG_TYPES.includes(this.logType);\n }\n\n isFaultType() {\n return FAULT_LOG_TYPES.includes(this.logType);\n }\n\n isServe() {\n return [\n VolleyballGameLogType.serve_hit,\n VolleyballGameLogType.serve_ace,\n VolleyballGameLogType.serve_fault\n ].includes(this.logType);\n }\n\n isAttack() {\n return [\n VolleyballGameLogType.attack_fault,\n VolleyballGameLogType.attack_spike,\n VolleyballGameLogType.attack_shot\n ].includes(this.logType);\n }\n\n isReceive() {\n return [\n VolleyballGameLogType.receive_fault,\n VolleyballGameLogType.receive,\n VolleyballGameLogType.excellent_receive\n ].includes(this.logType);\n }\n\n isServeReceive() {\n return [\n VolleyballGameLogType.serve_receive_fault,\n VolleyballGameLogType.serve_receive,\n VolleyballGameLogType.excellent_serve_receive\n ].includes(this.logType);\n }\n\n isBlock() {\n return [\n VolleyballGameLogType.block_fault,\n VolleyballGameLogType.block_rebound,\n VolleyballGameLogType.stuff_block\n ].includes(this.logType);\n }\n\n isEnterExit() {\n return [\n VolleyballGameLogType.enter_game,\n VolleyballGameLogType.exit_game,\n VolleyballGameLogType.timeout\n ].includes(this.logType);\n }\n\n isComboType() {\n return ![\n VolleyballGameLogType.receive,\n VolleyballGameLogType.serve_receive\n ].includes(this.logType);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { User } from '../models/user';\nimport { File } from '../models/file';\nimport { map } from 'rxjs/operators';\nimport { UserProfile } from '../models/user-profile';\nimport { BasketballProfile } from '../models/basketball-profile';\nimport { VolleyballProfile } from '../models/volleyball-profile';\nimport { Team } from '../models/team';\nimport { TeamInvite } from '../models/team-invite';\nimport { BasketballStatistic } from '../models/basketball-statistic';\nimport { VolleyballStatistic } from '../models/volleyball-statistic';\nimport { Game } from '../models/game';\nimport { GameInvite } from '../models/game-invite';\nimport { TeamEvent } from '../models/team-event';\nimport { UserAccess } from '../models/user-access';\nimport { UserPermission } from '../models/user-permission';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class UserApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getCurrentUser(): Promise<User> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/`)\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async getUserById(userId: number): Promise<User> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/`)\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async getAccess(userId?: number): Promise<UserAccess> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/user/${userId || 'current'}/access/`)\n .pipe(map(data => UserAccess.toFront(data)))\n .toPromise();\n }\n\n async updateUser(userId: number, data: any): Promise<User> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/`, User.toBack(data))\n .pipe(map(result => User.toFront(result)))\n .toPromise();\n }\n\n async updateUserPhoto(file: any, filename?: string): Promise<File> {\n const formData = new FormData();\n formData.append('file', file, filename);\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/photo/`, formData)\n .pipe(map(data => File.toFront(data)))\n .toPromise();\n }\n\n async changePassword(userId: number, oldPassword: string, password: string, passwordConfirm: string): Promise<any> {\n const payload = {\n old_password: oldPassword,\n password,\n password_confirm: passwordConfirm\n };\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/change_password/`, payload)\n .toPromise();\n }\n\n async changeEmail(userId: number, email: string, password: string): Promise<any> {\n const payload = {email, password};\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/change_email/`, payload)\n .toPromise();\n }\n\n async changeEmailConfirm(userId, email: string, password: string, token: number): Promise<any> {\n const payload = {email, password, token};\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/change_email_confirm/`, payload)\n .toPromise();\n }\n\n async getUserProfile(userId: number): Promise<UserProfile> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/profile/`)\n .pipe(map(data => UserProfile.toFront(data)))\n .toPromise();\n }\n\n async getBasketballProfile(userId: number): Promise<BasketballProfile> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/basketball_profile/`)\n .pipe(map(data => BasketballProfile.toFront(data)))\n .toPromise();\n }\n\n async getVolleyballProfile(userId: number): Promise<VolleyballProfile> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/volleyball_profile/`)\n .pipe(map(data => VolleyballProfile.toFront(data)))\n .toPromise();\n }\n\n async updateUserProfile(userProfile: UserProfile): Promise<UserProfile> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${userProfile.userId}/profile/`, UserProfile.toBack(userProfile))\n .pipe(map(data => UserProfile.toFront(data)))\n .toPromise();\n }\n\n async updateUserBasketballProfile(basketballProfile: BasketballProfile): Promise<BasketballProfile> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${basketballProfile.userId}/basketball_profile/`, BasketballProfile.toBack(basketballProfile))\n .pipe(map(data => BasketballProfile.toFront(data)))\n .toPromise();\n }\n\n async updateUserVolleyballProfile(volleyballProfile: VolleyballProfile): Promise<VolleyballProfile> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${volleyballProfile.userId}/volleyball_profile/`, VolleyballProfile.toBack(volleyballProfile))\n .pipe(map(data => VolleyballProfile.toFront(data)))\n .toPromise();\n }\n\n async getUserPermissions(userId?: number): Promise<UserPermission> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId || 'current'}/permission/`)\n .pipe(map(data => UserPermission.toFront(data)))\n .toPromise();\n }\n\n async updateUserPermission(data: any): Promise<UserPermission> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/current/permission/`, UserPermission.toBack(data))\n .pipe(map(result => UserPermission.toFront(result)))\n .toPromise();\n }\n\n async getTeams(userId: number): Promise<Team[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/teams/`)\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getInvites(): Promise<TeamInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/invites/`)\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptInvite(inviteId: number): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/invites/${inviteId}/accept/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async declineInvite(inviteId: number): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/invites/${inviteId}/decline/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async getStatistics(userId: number): Promise<BasketballStatistic> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/statistics/`)\n .pipe(map(data => BasketballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getStreetballStatistics(userId: number): Promise<BasketballStatistic> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/streetball_statistics/`)\n .pipe(map(data => BasketballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getVolleyballStatistic(userId: number): Promise<VolleyballStatistic> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/volleyball_statistics/`)\n .pipe(map(data => VolleyballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getGames(userId: number): Promise<Game[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/games/`)\n .pipe(map(data => Game.toFront(data)))\n .toPromise();\n }\n\n async getGameInvites(): Promise<GameInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/game_invites/`)\n .pipe(map(data => GameInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptGameInvite(inviteId: number): Promise<GameInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/game_invites/${inviteId}/accept/`, {})\n .pipe(map(data => GameInvite.toFront(data)))\n .toPromise();\n }\n\n async declineGameInvite(inviteId: number): Promise<GameInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/game_invites/${inviteId}/decline/`, {})\n .pipe(map(data => GameInvite.toFront(data)))\n .toPromise();\n }\n\n async searchUsers(query: string): Promise<User[]> {\n const params = (new HttpParams()).set('search', query);\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/`, {params})\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async setWizardShowed(wizard: string): Promise<User> {\n return this.httpClient\n .put(`${this.configService.get('apiUrl')}/api/v1/user/current/wizards/`, {wizard})\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async getTeamEvents(userId: number): Promise<TeamEvent[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/team_events/`)\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook, BaseModel } from './util';\nimport { VolleyballStatistic } from './volleyball-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam',\n },\n relation: {\n team: VolleyballStatistic,\n competitorTeam: VolleyballStatistic,\n }\n})\nexport class VolleyballGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: VolleyballStatistic;\n competitorTeam: VolleyballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n serve_hits: 'serveHits',\n serve_faults: 'serveFaults',\n serve_aces: 'serveAces',\n stuff_blocks: 'stuffBlocks',\n block_faults: 'blockFaults',\n block_rebounds: 'blockRebounds',\n attack_spikes: 'attackSpikes',\n attack_faults: 'attackFaults',\n attack_shots: 'attackShots',\n receives: 'receives',\n receive_faults: 'receiveFaults',\n excellent_receives: 'excellentReceives',\n serve_receives: 'serveReceives',\n serve_receive_faults: 'serveReceiveFaults',\n excellent_serve_receives: 'excellentServeReceives',\n points: 'points',\n faults: 'faults',\n yellow_cards: 'yellowCards',\n }\n})\nexport class VolleyballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n serveHits: number;\n serveFaults: number;\n serveAces: number;\n stuffBlocks: number;\n blockFaults: number;\n blockRebounds: number;\n attackSpikes: number;\n attackFaults: number;\n attackShots: number;\n receives: number;\n receiveFaults: number;\n excellentReceives: number;\n serveReceives: number;\n serveReceiveFaults: number;\n excellentServeReceives: number;\n points: number;\n faults: number;\n yellowCards: number;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get attacks(): number {\n return this.attackSpikes + this.attackShots;\n }\n\n get blocks(): number {\n return this.stuffBlocks + this.blockRebounds;\n }\n\n get totalReceives(): number {\n return this.receives + this.excellentReceives;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Game } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { VolleyballGameTeamStatistic } from '../models/volleyball-game-team-statistic';\nimport { VolleyballGameStatistic } from '../models/volleyball-game-statistic';\nimport { VolleyballGameLog } from '../models/volleyball-game-log';\nimport { ConfigService } from '../services/config.service';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class VolleyballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<VolleyballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/team_statistic/`).pipe(\n map(result => VolleyballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<VolleyballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/user_statistic/`).pipe(\n map(result => VolleyballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<VolleyballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/logs/`).pipe(\n map(result => VolleyballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocolLight(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/game_protocol_light/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { Team } from '../models/team';\nimport { map } from 'rxjs/operators';\nimport { TournamentTeam } from '../models/tournament-team';\n\n@Injectable({providedIn: 'root'})\nexport class PublicTeamApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n getById(teamId: number): Promise<Team> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_team/${teamId}/`).pipe(\n map(result => Team.toFront(result))\n ).toPromise();\n }\n\n getTournamentTeams(teamId: number, leagueId: number): Promise<TournamentTeam[]> {\n const params = new HttpParams().set('league_id', leagueId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_team/${teamId}/tournament_teams/`, {params}).pipe(\n map(result => TournamentTeam.toFront(result))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { User } from '../models/user';\nimport { map } from 'rxjs/operators';\nimport { Tournament } from '../models/tournament';\nimport { TournamentTeamUser } from '../models/tournament-team-user';\nimport { LeaguePlayer } from '../models/league-player';\n\n@Injectable({providedIn: 'root'})\nexport class PublicUserApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n getById(userId: number): Promise<User> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/`).pipe(\n map(result => User.toFront(result))\n ).toPromise();\n }\n\n getTournaments(userId: number, leagueId: number): Promise<Tournament[]> {\n const params = new HttpParams().set('league_id', leagueId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/tournaments/`, {params}).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n getTournamentUser(userId: number, seasonId: number): Promise<TournamentTeamUser> {\n const params = new HttpParams().set('season_id', seasonId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/tournament_user/`, {params}).pipe(\n map(result => TournamentTeamUser.toFront(result))\n ).toPromise();\n }\n\n getLeaguePlayer(userId: number, leagueId: number): Promise<LeaguePlayer> {\n const params = new HttpParams().set('league_id', leagueId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/league_player/`, {params}).pipe(\n map(result => LeaguePlayer.toFront(result))\n ).toPromise();\n }\n}\n","import { BasketballGameLogTypes } from '../models/basketball-game-log';\n\nexport const BasketballGameLogTypeLocalization = {\n [BasketballGameLogTypes.enter_game]: 'ÐÑÑ
од на плоÑадкÑ',\n [BasketballGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð»Ð¾Ñадки',\n [BasketballGameLogTypes.remove_game]: 'Удаление Ñ Ð¿Ð»Ð¾Ñадки',\n [BasketballGameLogTypes.two_point_attempt]: 'ÐÑоÑок 2 оÑка',\n [BasketballGameLogTypes.three_point_attempt]: 'ÐÑоÑок 3 оÑка',\n [BasketballGameLogTypes.free_throw_attempt]: 'ШÑÑаÑной бÑоÑок',\n [BasketballGameLogTypes.one_point_attempt]: 'ÐÑоÑок 1 оÑко',\n [BasketballGameLogTypes.two_point_made]: '2 оÑка',\n [BasketballGameLogTypes.three_point_made]: '3 оÑка',\n [BasketballGameLogTypes.free_throw_made]: '1 оÑко, ÑÑÑаÑной',\n [BasketballGameLogTypes.one_point_made]: '1 оÑко',\n [BasketballGameLogTypes.assist]: 'ÐеÑедаÑа',\n [BasketballGameLogTypes.block]: 'ÐлокÑоÑ',\n [BasketballGameLogTypes.rebound]: 'ÐодбоÑ',\n [BasketballGameLogTypes.offensive_rebound]: 'ÐÐ¾Ð´Ð±Ð¾Ñ Ð² нападении',\n [BasketballGameLogTypes.defensive_rebound]: 'ÐÐ¾Ð´Ð±Ð¾Ñ Ð² заÑиÑе',\n [BasketballGameLogTypes.steal]: 'ÐеÑеÑ
ваÑ',\n [BasketballGameLogTypes.turnover]: 'ÐоÑеÑÑ',\n [BasketballGameLogTypes.personal_foul]: 'Фол',\n [BasketballGameLogTypes.technical_foul]: 'ТеÑ
ниÑеÑкий Ñол',\n [BasketballGameLogTypes.unsportsmanlike_foul]: 'ÐеÑпоÑÑинÑй Ñол',\n [BasketballGameLogTypes.timeout]: 'ТаймаÑÑ',\n [BasketballGameLogTypes.team_rebound]: 'ÐоманднÑй подбоÑ',\n};\n","import { HockeyGameLogTypes } from '../models/hockey-game-log';\n\nexport const HockeyGameLogTypeLocalization = {\n [HockeyGameLogTypes.enter_game]: 'ÐÑÑ
од на плоÑадкÑ',\n [HockeyGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð»Ð¾Ñадки',\n [HockeyGameLogTypes.shot_miss]: 'ÐÑоÑок мимо',\n [HockeyGameLogTypes.shot_on_goal]: 'ÐÑоÑок по воÑоÑам',\n [HockeyGameLogTypes.shot_blocked]: 'ÐаблокиÑованнÑй бÑоÑок',\n [HockeyGameLogTypes.goal]: 'Ðол',\n [HockeyGameLogTypes.shootout_attempt]: 'ÐÑÐ»Ð»Ð¸Ñ Ð¿ÑомаÑ
',\n [HockeyGameLogTypes.shootout_goal]: 'ÐÑÐ»Ð»Ð¸Ñ Ð³Ð¾Ð»',\n [HockeyGameLogTypes.after_game_shootout_attempt]: 'ÐÑÐ»Ð»Ð¸Ñ Ð¿ÑомаÑ
',\n [HockeyGameLogTypes.after_game_shootout_goal]: 'ÐÑÐ»Ð»Ð¸Ñ Ð³Ð¾Ð»',\n [HockeyGameLogTypes.assist]: 'ÐеÑедаÑа',\n [HockeyGameLogTypes.block_shot]: 'ÐлокиÑовка бÑоÑка',\n [HockeyGameLogTypes.minor_penalty]: 'ÐалÑй ÑÑÑаÑ',\n [HockeyGameLogTypes.major_penalty]: 'ÐолÑÑой ÑÑÑаÑ',\n [HockeyGameLogTypes.misconduct_penalty]: 'ÐиÑÑиплинаÑнÑй ÑÑÑаÑ',\n [HockeyGameLogTypes.game_misconduct_penalty]: 'ÐиÑÑиплинаÑнÑй ÑÑÑÐ°Ñ Ð´Ð¾ конÑа игÑÑ',\n [HockeyGameLogTypes.match_penalty]: 'ÐаÑÑ-ÑÑÑаÑ',\n [HockeyGameLogTypes.penalty_shot]: 'ШÑÑаÑной бÑоÑок',\n [HockeyGameLogTypes.face_off_lose]: 'ÐÑоигÑÑÑ Ð² вбÑаÑÑвании',\n [HockeyGameLogTypes.face_off_win]: 'Ðобеда в вбÑаÑÑвании',\n [HockeyGameLogTypes.save]: 'ÐÑÑажен бÑоÑок',\n [HockeyGameLogTypes.shootout_save]: 'ÐÑÑажен бÑоÑок',\n [HockeyGameLogTypes.after_game_shootout_save]: 'ÐÑÑажен бÑоÑок',\n [HockeyGameLogTypes.timeout]: 'ТаймаÑÑ',\n [HockeyGameLogTypes.penalty_start]: 'ÐаÑало ÑÑÑаÑного вÑемени',\n [HockeyGameLogTypes.penalty_end]: 'ÐÐ¾Ð½ÐµÑ ÑÑÑаÑного вÑемени'\n};\n","import { FootballGameLogTypes } from '../models/football-game-log';\n\nexport const FootballGameLogTypeLocalization = {\n [FootballGameLogTypes.enter_game]: 'ÐÑÑ
од на поле',\n [FootballGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð¾Ð»Ñ',\n [FootballGameLogTypes.shot_miss]: 'Ð£Ð´Ð°Ñ Ð¼Ð¸Ð¼Ð¾',\n [FootballGameLogTypes.shot_on_goal]: 'Ð£Ð´Ð°Ñ Ð² ÑÑвоÑ',\n [FootballGameLogTypes.shot_blocked]: 'ÐаблокиÑованнÑй ÑдаÑ',\n [FootballGameLogTypes.goal]: 'Ðол',\n [FootballGameLogTypes.assist]: 'ÐеÑедаÑа',\n [FootballGameLogTypes.penalty_attempt]: 'ÐеналÑÑи пÑомаÑ
',\n [FootballGameLogTypes.penalty_goal]: 'ÐеналÑÑи гол',\n [FootballGameLogTypes.small_penalty_attempt]: '10-меÑÑовÑй пÑомаÑ
',\n [FootballGameLogTypes.small_penalty_goal]: '10-меÑÑовÑй гол',\n [FootballGameLogTypes.block_shot]: 'ÐлокиÑовка ÑдаÑа',\n [FootballGameLogTypes.corner]: 'Угловой',\n [FootballGameLogTypes.free_kick]: 'ШÑÑаÑной ÑдаÑ',\n [FootballGameLogTypes.save]: 'ÐÑÑажен ÑдаÑ',\n [FootballGameLogTypes.penalty_save]: 'ÐÑÑажен пеналÑÑи',\n [FootballGameLogTypes.small_penalty_save]: 'ÐÑÑажен 10 меÑÑовÑй',\n [FootballGameLogTypes.foul]: 'Фол',\n [FootballGameLogTypes.yellow_card]: 'ÐелÑÐ°Ñ ÐºÐ°ÑÑоÑка',\n [FootballGameLogTypes.red_card]: 'ÐÑаÑÐ½Ð°Ñ ÐºÐ°ÑÑоÑка',\n [FootballGameLogTypes.perfect_pass]: 'ÐаÑ',\n [FootballGameLogTypes.loss]: 'ÐоÑеÑÑ',\n [FootballGameLogTypes.steal]: 'ÐеÑеÑ
ваÑ',\n [FootballGameLogTypes.out]: 'ÐÑÑ',\n [FootballGameLogTypes.timeout]: 'ТаймаÑÑ',\n [FootballGameLogTypes.auto_goal]: 'ÐвÑогол'\n};\n","import { HandballGameLogTypes } from '../models/handball-game-log';\n\nexport const HandballGameLogTypeLocalization = {\n [HandballGameLogTypes.enter_game]: 'ÐÑÑ
од на поле',\n [HandballGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð¾Ð»Ñ',\n [HandballGameLogTypes.shot_miss]: 'ÐÑоÑок мимо',\n [HandballGameLogTypes.shot_on_goal]: 'ÐÑоÑок в ÑÑвоÑ',\n [HandballGameLogTypes.shot_blocked]: 'ÐаблокиÑованнÑй бÑоÑок',\n [HandballGameLogTypes.goal]: 'Ðол',\n [HandballGameLogTypes.assist]: 'ÐеÑедаÑа',\n [HandballGameLogTypes.penalty_miss]: '7м пÑомаÑ
',\n [HandballGameLogTypes.penalty_shot_on_goal]: '7м в ÑÑвоÑ',\n [HandballGameLogTypes.penalty_goal]: '7м гол',\n [HandballGameLogTypes.save]: 'СÑйв',\n [HandballGameLogTypes.penalty_save]: 'СÑйв 7м',\n [HandballGameLogTypes.foul]: 'Фол',\n [HandballGameLogTypes.yellow_card]: 'ÐеллÑÐ°Ñ ÐºÐ°ÑÑоÑка',\n [HandballGameLogTypes.red_card]: 'ÐÑаÑÐ½Ð°Ñ ÐºÐ°ÑÑоÑка',\n [HandballGameLogTypes.two_minute_foul]: '2Ñ
минÑÑнÑй ÑÑÑаÑ',\n [HandballGameLogTypes.turnover]: 'ÐоÑеÑÑ',\n [HandballGameLogTypes.steal]: 'ÐеÑеÑ
ваÑ',\n [HandballGameLogTypes.block_shot]: 'Ðлок бÑоÑка',\n [HandballGameLogTypes.timeout]: 'ТаймаÑÑ'\n};\n","import { OvertimeTypes } from '../models/tournament';\n\nexport const OvertimeTypeLocalization = {\n [OvertimeTypes.to_score_diff]: 'Ðо ÑазниÑÑ Ð² N мÑÑей',\n [OvertimeTypes.to_score_total]: 'Ðо N оÑков',\n [OvertimeTypes.time]: 'Ðо вÑемени',\n [OvertimeTypes.without_overtime]: 'Ðез овеÑÑайма',\n [OvertimeTypes.to_first_goal]: 'Ðа N минÑÑ Ð´Ð¾ пеÑвой ÑайбÑ',\n [OvertimeTypes.to_first_goal_and_bullitts]: 'Ðа N минÑÑ Ð´Ð¾ пеÑвой ÑÐ°Ð¹Ð±Ñ + бÑллиÑÑ',\n [OvertimeTypes.bullitts]: 'ÐÑллиÑÑ',\n [OvertimeTypes.penalties]: 'ÐеналÑÑи',\n [OvertimeTypes.time_and_penalties]: 'ÐополниÑелÑное вÑÐµÐ¼Ñ + пеналÑÑи'\n};\n","import { RugbyGameLogTypes } from '../models/rugby-game-log';\n\nexport const RugbyGameLogTypeLocalization = {\n [RugbyGameLogTypes.enter_game]: 'ÐÑÑ
од на плоÑадкÑ',\n [RugbyGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð»Ð¾Ñадки',\n [RugbyGameLogTypes.try]: 'ÐопÑÑка',\n [RugbyGameLogTypes.penalty_try]: 'ШÑÑаÑÐ½Ð°Ñ Ð¿Ð¾Ð¿ÑÑка',\n [RugbyGameLogTypes.conversion_goal]: 'РеализаÑиÑ',\n [RugbyGameLogTypes.conversion_miss]: 'РеализаÑÐ¸Ñ Ð¿ÑомаÑ
',\n [RugbyGameLogTypes.drawing_ball]: 'РозÑгÑÑÑ Ð¼ÑÑа',\n [RugbyGameLogTypes.penalty_miss]: 'ШÑÑаÑной пÑомаÑ
',\n [RugbyGameLogTypes.penalty_goal]: 'ШÑÑаÑной гол',\n [RugbyGameLogTypes.drop_goal]: 'ÐÑоп-гол',\n [RugbyGameLogTypes.drop_goal_miss]: 'ÐÑоп-гол пÑомаÑ
',\n [RugbyGameLogTypes.free_kick]: 'СвободнÑй ÑдаÑ',\n [RugbyGameLogTypes.yellow_card]: 'ÐелÑÐ°Ñ ÐºÐ°ÑÑоÑка',\n [RugbyGameLogTypes.red_card]: 'ÐÑаÑÐ½Ð°Ñ ÐºÐ°ÑÑоÑка',\n [RugbyGameLogTypes.offload]: 'Скидка пÑи завÑ
ваÑе',\n [RugbyGameLogTypes.tackle]: 'УÑпеÑнÑй заÑ
ваÑ',\n [RugbyGameLogTypes.out]: 'ÐÑÑ',\n [RugbyGameLogTypes.handling_error]: 'ÐÑибка пÑиема',\n [RugbyGameLogTypes.carries_other_gainline]: 'ÐÑоÑÑв линии',\n\n [RugbyGameLogTypes.timeout]: 'ТаймаÑÑ',\n [RugbyGameLogTypes.scrum_won]: 'СваÑ
Ñка вÑигÑана',\n [RugbyGameLogTypes.scrum_lose]: 'СÑ
ваÑка пÑоигÑана',\n [RugbyGameLogTypes.scrum_won_free]: 'СÑ
ваÑка вÑигÑана без ÑопÑоÑивлениÑ',\n [RugbyGameLogTypes.lineout_success]: 'ÐоÑÑÐ¸Ð´Ð¾Ñ Ð²ÑигÑано',\n [RugbyGameLogTypes.lineout_loss]: 'ÐоÑÑÐ¸Ð´Ð¾Ñ Ð¿Ð¾ÑеÑÑ',\n [RugbyGameLogTypes.lineout_steal]: 'ÐоÑÑÐ¸Ð´Ð¾Ñ Ð¿ÐµÑеÑ
ваÑ',\n [RugbyGameLogTypes.quick_throw]: 'ÐÑÑÑÑÑй вбÑоÑ',\n [RugbyGameLogTypes.ruck_won]: 'Рак вÑигÑано',\n [RugbyGameLogTypes.ruck_lose]: 'Рак пÑоигÑано',\n [RugbyGameLogTypes.maul_won]: 'Ðол вÑигÑано',\n [RugbyGameLogTypes.maul_lose]: 'Ðол пÑоигÑано',\n [RugbyGameLogTypes.team_foul]: 'Фол',\n};\n","import { TeamUserRole } from '../models/team-user';\n\nexport const TeamUserRoleLocalization = {\n [TeamUserRole.member]: 'ÐолÑзоваÑелÑ',\n [TeamUserRole.moderator]: 'ÐодеÑаÑоÑ',\n [TeamUserRole.admin]: 'ÐладелеÑ',\n [TeamUserRole.coach]: 'ТÑенеÑ',\n [TeamUserRole.head_coach]: 'ÐлавнÑй ÑÑенеÑ',\n [TeamUserRole.playing_coach]: 'ÐгÑаÑÑий ÑÑенеÑ',\n [TeamUserRole.manager]: 'ÐенеджеÑ',\n [TeamUserRole.head_manager]: 'ÐенеÑалÑнÑй менеджеÑ',\n [TeamUserRole.captain]: 'ÐапиÑан',\n [TeamUserRole.assistant]: 'ÐÑÑиÑÑенÑ',\n};\n","import { GameBasketballPosition, WorkHand } from '../models/basketball-profile';\nimport { GameVolleyballPosition, VolleyballWorkHand } from '../models/volleyball-profile';\nimport { GameHockeyPosition } from '../models/hockey-profile';\nimport { FootballWorkFoot, GameFootballPosition } from '../models/football-profile';\nimport { GameHandballPosition } from '../models/handball-profile';\nimport { GameRugbyPosition } from '../models/rugby-profile';\n\nexport const GameBasketballPositionLocalization = {\n [GameBasketballPosition.point_guard]: 'РазÑгÑÑваÑÑий заÑиÑник',\n [GameBasketballPosition.shooting_guard]: 'ÐÑакÑÑÑий заÑиÑник',\n [GameBasketballPosition.small_forward]: 'Ðегкий ÑоÑваÑд',\n [GameBasketballPosition.power_forward]: 'ÐоÑнÑй ÑоÑваÑд',\n [GameBasketballPosition.center]: 'ЦенÑÑовой',\n};\n\nexport const GameBasketballPositionShortLocalization = {\n [GameBasketballPosition.point_guard]: 'PG',\n [GameBasketballPosition.shooting_guard]: 'SG',\n [GameBasketballPosition.small_forward]: 'SF',\n [GameBasketballPosition.power_forward]: 'PF',\n [GameBasketballPosition.center]: 'C',\n};\n\nexport const WorkHandLocalization = {\n [WorkHand.left]: 'ÐеваÑ',\n [WorkHand.right]: 'ÐÑаваÑ'\n};\n\nexport const GameVolleyballPositionLocalization = {\n [GameVolleyballPosition.setter]: 'СвÑзÑÑÑий',\n [GameVolleyballPosition.libero]: 'ÐибеÑо',\n [GameVolleyballPosition.middle_player]: 'ЦенÑÑалÑнÑй блокиÑÑÑÑий',\n [GameVolleyballPosition.receiver_attacker]: 'ÐоигÑовÑик',\n [GameVolleyballPosition.dioganal]: 'ÐиагоналÑнÑй',\n};\n\nexport const GameVolleyballPositionShortLocalization = {\n [GameVolleyballPosition.setter]: 'S',\n [GameVolleyballPosition.libero]: 'L',\n [GameVolleyballPosition.middle_player]: 'MP',\n [GameVolleyballPosition.receiver_attacker]: 'RA',\n [GameVolleyballPosition.dioganal]: 'D',\n};\n\nexport const GameVolleyballPositionShortRuLocalization = {\n [GameVolleyballPosition.setter]: 'ÑвÑз.',\n [GameVolleyballPosition.libero]: 'либеÑо',\n [GameVolleyballPosition.middle_player]: 'блок.',\n [GameVolleyballPosition.receiver_attacker]: 'доигÑ.',\n [GameVolleyballPosition.dioganal]: 'диаг.',\n};\n\nexport const VolleyballWorkHandLocalization = {\n [VolleyballWorkHand.left]: 'ÐеваÑ',\n [VolleyballWorkHand.right]: 'ÐÑаваÑ'\n};\n\nexport const GameHockeyPositionLocalization = {\n [GameHockeyPosition.goaltender]: 'ÐÑаÑаÑÑ',\n [GameHockeyPosition.defensemen]: 'ÐаÑиÑник',\n [GameHockeyPosition.forward]: 'ÐападаÑÑий'\n};\n\nexport const GameFootballPositionLocalization = {\n [GameFootballPosition.goalkeeper]: 'ÐÑаÑаÑÑ',\n [GameFootballPosition.defensemen]: 'ÐаÑиÑник',\n [GameFootballPosition.midfielder]: 'ÐолÑзаÑиÑник',\n [GameFootballPosition.forward]: 'ÐападаÑÑий'\n};\n\nexport const FootballWorkFootLocalization = {\n [FootballWorkFoot.left]: 'ÐеваÑ',\n [FootballWorkFoot.right]: 'ÐÑаваÑ',\n [FootballWorkFoot.both]: 'Ðбе'\n};\n\nexport const GameHandballPositionLocalization = {\n [GameHandballPosition.goalkeeper]: 'ÐÑаÑаÑÑ',\n [GameHandballPosition.winger]: 'ÐÑайний',\n [GameHandballPosition.pivot]: 'ÐинейнÑй',\n [GameHandballPosition.centre_back]: 'ЦенÑÑалÑнÑй',\n [GameHandballPosition.fullback]: 'ÐолÑÑÑедний',\n};\n\nexport const GameRugbyPositionLocalization = {\n [GameRugbyPosition.front_line]: 'ÐадаÑÑий пеÑвой линии',\n [GameRugbyPosition.second_line]: 'ÐападаÑÑий вÑоÑой линии',\n [GameRugbyPosition.back_line]: 'ÐападаÑÑий задней линии',\n [GameRugbyPosition.halfback]: 'ÐолÑзаÑиÑник',\n [GameRugbyPosition.three_quarter]: 'ТÑеÑ
ÑеÑвеÑÑнÑй',\n [GameRugbyPosition.fullback]: 'ÐамÑкаÑÑий'\n};\n\n","import { VolleyballGameLogType } from '../models/volleyball-game-log';\n\nexport const VolleyballGameLogTypeLocalization = {\n [VolleyballGameLogType.enter_game]: 'ÐÑÑ
од на плоÑадкÑ',\n [VolleyballGameLogType.exit_game]: 'УÑ
од Ñ Ð¿Ð»Ð¾Ñадки',\n [VolleyballGameLogType.remove_game]: 'Удаление Ñ Ð¿Ð»Ð¾Ñадки',\n [VolleyballGameLogType.serve_ace]: 'ÐйÑ',\n [VolleyballGameLogType.serve_hit]: 'ÐодаÑа',\n [VolleyballGameLogType.serve_fault]: 'ÐÑибка на подаÑе',\n [VolleyballGameLogType.attack_spike]: 'РезÑлÑÑаÑÐ¸Ð²Ð½Ð°Ñ Ð°Ñака',\n [VolleyballGameLogType.attack_shot]: 'ÐÑака',\n [VolleyballGameLogType.attack_fault]: 'ÐÑибка аÑаки',\n [VolleyballGameLogType.stuff_block]: 'РезÑлÑÑаÑивнÑй блок',\n [VolleyballGameLogType.block_rebound]: 'Ðлок',\n [VolleyballGameLogType.block_fault]: 'ÐÑибка на блоке',\n [VolleyballGameLogType.excellent_receive]: 'ÐÑлиÑнÑй пÑием',\n [VolleyballGameLogType.receive]: 'ÐÑием',\n [VolleyballGameLogType.receive_fault]: 'ÐÑибка на пÑиеме',\n [VolleyballGameLogType.serve_receive]: 'ÐÑием подаÑи',\n [VolleyballGameLogType.excellent_serve_receive]: 'ÐÑлиÑнÑй пÑием подаÑи',\n [VolleyballGameLogType.serve_receive_fault]: 'ÐÑибка пÑиема подаÑи',\n [VolleyballGameLogType.point]: 'ÐÑко',\n [VolleyballGameLogType.fault]: 'ÐÑибка',\n [VolleyballGameLogType.timeout]: 'ТаймаÑÑ',\n [VolleyballGameLogType.yellow_card]: 'ÐÑедÑпÑеждение',\n};\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n files: 'files',\n key_code: 'keyCode',\n },\n relation: {\n files: listField(File)\n }\n})\nexport class LeaguePlaylist extends BaseModel {\n id: number;\n name: string;\n files: File[];\n keyCode: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n overtime_periods: 'overtimePeriods',\n max_game_players: 'maxGamePlayers',\n game_time_type: 'gameTimeType',\n substitute_count: 'substituteCount',\n free_substitute_enabled: 'freeSubstituteEnabled',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class RugbyGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n overtimePeriods: number;\n maxGamePlayers: number;\n gameTimeType: GameTimeTypes;\n substituteCount: number;\n freeSubstituteEnabled: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { Subject } from 'rxjs/internal/Subject';\nimport { ReplaySubject } from 'rxjs/internal/ReplaySubject';\n\nimport * as Centrifuge from 'centrifuge';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ConfigService } from './config.service';\n\ninterface CentrifugoConfig {\n user: string;\n timestamp: string;\n token: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class CentrifugoService {\n private channels$: { [key: string]: Subject<any> } = {};\n private subscriptions: { [key: string]: any } = {};\n private centrifuge;\n private initializeEngineSubject: ReplaySubject<boolean>;\n private connectedSubject = new BehaviorSubject<boolean>(false);\n\n get connected$(): Observable<boolean> {\n return this.connectedSubject;\n }\n\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) { }\n\n listen(channel): Observable<any> {\n if (channel in this.channels$) {\n return this.channels$[channel];\n }\n\n this.channels$[channel] = new Subject<any>();\n const subscription = this.connect().subscribe(connected => {\n this.subscriptions[channel] = this.addEngineSubscription(channel);\n setTimeout(() => {\n subscription.unsubscribe();\n });\n });\n\n return this.channels$[channel];\n }\n\n unsubscribe(channel): void {\n if (this.subscriptions[channel]) {\n this.subscriptions[channel].unsubscribe();\n delete this.subscriptions[channel];\n }\n if (this.channels$[channel]) {\n this.channels$[channel].complete();\n delete this.channels$[channel];\n }\n }\n\n connect(): Observable<boolean> {\n if (!this.initializeEngineSubject) {\n this.initializeEngineSubject = new ReplaySubject(1);\n\n this.httpClient.get<CentrifugoConfig>(`${this.configService.get('apiUrl')}/api/v1/centrifugo/`)\n .subscribe(config => {\n this.initializeEngine({\n url: this.configService.get('centrifugoUrl'),\n user: config.user,\n timestamp: config.timestamp,\n token: config.token,\n transports: ['websocket']\n });\n this.centrifuge.connect();\n this.centrifuge.on('connect', () => {\n this.initializeEngineSubject.next(true);\n this.connectedSubject.next(true);\n });\n this.centrifuge.on('disconnect', () => {\n this.connectedSubject.next(false);\n });\n });\n }\n\n return this.initializeEngineSubject;\n }\n\n publish(channel: string, message: any): Observable<any> {\n return new Observable<any>(observer => {\n this.connect().subscribe(() => {\n if (!this.subscriptions[channel]) {\n this.subscriptions[channel] = this.addEngineSubscription(channel);\n }\n this.subscriptions[channel].publish(message).then(res => {\n observer.next(res);\n observer.complete();\n }, error => {\n throw error;\n });\n });\n });\n }\n\n disconnect(): void {\n this.centrifuge.disconnect();\n this.initializeEngineSubject = undefined;\n this.channels$ = {};\n this.subscriptions = {};\n }\n\n private initializeEngine(config: {\n url: string,\n user: string,\n timestamp: string,\n token: string,\n transports: string[]\n }): void {\n this.centrifuge = new Centrifuge(config);\n }\n\n private addEngineSubscription(channel: string): Observable<any> {\n return this.centrifuge.subscribe(channel, this.resolveMessage.bind(this));\n }\n\n private resolveMessage(response: any): void {\n const channel = response.channel;\n if (!this.channels$[channel]) {\n return;\n }\n\n this.channels$[channel].next(response.data);\n }\n}\n","import { ModelInterface } from '../models/util';\n\nexport class StorageEngineField {\n defaultValue: any;\n\n constructor(defaultValue?: any, protected modelClass?: ModelInterface) {\n this.defaultValue = defaultValue;\n }\n\n toFront(value: any): any {\n if (this.modelClass) {\n return this.modelClass.toFront(value);\n }\n return value;\n }\n\n toBack(value: any): any {\n if (this.modelClass) {\n return this.modelClass.toBack(value);\n }\n return value;\n }\n}\n\nexport abstract class StorageEngine {\n constructor(protected name: string, protected fields: {[key: string]: StorageEngineField}) {\n }\n\n addField(key: string, field: StorageEngineField): void {\n this.fields[key] = field;\n }\n\n save(key: string, value: any): void {\n if (!this.fields[key]) {\n return;\n }\n this.setItem(`${this.name}_${key}`, this.fields[key].toBack(value));\n }\n\n get(key: string): any {\n if (!this.fields[key]) {\n return;\n }\n let value = this.getItem(`${this.name}_${key}`);\n if (value === null) {\n value = this.fields[key].defaultValue;\n }\n if (value === null || value === undefined) {\n return value;\n }\n return this.fields[key].toFront(value);\n }\n\n clear(): void {\n for (const field of Object.keys(this.fields)) {\n this.removeItem(field);\n }\n }\n\n protected getItem(key: string): any {\n throw new Error(`Function getItem for store engine ${typeof this} not implemented`);\n }\n\n protected setItem(key: string, value: any): any {\n throw new Error(`Function setItem for store engine ${typeof this} not implemented`);\n }\n\n protected removeItem(key: string): void {\n throw new Error(`Function deleteItem for store engine ${typeof this} not implemented`);\n }\n}\n","import { StorageEngine } from './storage-engine';\n\nexport class LocalStorageEngine extends StorageEngine {\n protected setItem(key: string, value: any) {\n localStorage.setItem(key, JSON.stringify(value));\n }\n\n protected getItem(key: string): any {\n try {\n return JSON.parse(localStorage.getItem(key));\n } catch (e) {\n return;\n }\n }\n\n protected removeItem(key: string): void {\n localStorage.removeItem(key);\n }\n}\n","export function getCookie(name: string): string {\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) {\n return parts.pop().split(';').shift();\n }\n return null;\n}\n","export interface LinkFavicon {\n rel: string;\n sizes?: string;\n href: string;\n type?: string;\n color?: string;\n}\n\nexport function getIconsData(folder: string): LinkFavicon[] {\n return [\n {rel: 'apple-touch-icon', sizes: '180x180', href: `/assets/favicon/${folder}apple-touch-icon.png`},\n {rel: 'icon', type: 'image/png', sizes: '32x32', href: `/assets/favicon/${folder}favicon-32x32.png`},\n {rel: 'icon', type: 'image/png', sizes: '16x16', href: `/assets/favicon/${folder}favicon-16x16.png`},\n {rel: 'shortcut icon', href: `/assets/favicon/${folder}favicon.ico`},\n {rel: 'manifest', href: `/assets/favicon/${folder}site.webmanifest`},\n {rel: 'mask-icon', href: `/assets/favicon/${folder}safari-pinned-tab.svg`, color: '#ff0000'}\n ];\n}\n\nexport function changeFavicons(document: Document, leagueAlias: string): void {\n let folder = '';\n if (leagueAlias === 'ablmoscow') {\n folder = 'abl/';\n }\n const data = getIconsData(folder);\n for (const item of data) {\n const link = document.createElement('link');\n for (const key of Object.keys(item)) {\n link.setAttribute(key, item[key]);\n }\n document.head.appendChild(link);\n }\n}\n","import { Inject, Injectable, Injector, PLATFORM_ID } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { getCookie } from './utils/cookie';\nimport { isPlatformBrowser } from '@angular/common';\nimport { ConfigService } from './services/config.service';\n\n@Injectable()\nexport class HttpCookieInterceptor implements HttpInterceptor {\n private isBrowser = isPlatformBrowser(this.platformId);\n\n constructor(\n private injector: Injector,\n private configService: ConfigService,\n @Inject(PLATFORM_ID) private platformId: string,\n ) {\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (!this.isBrowser) {\n return next.handle(req);\n }\n const apiUrl = this.configService.get('apiUrl');\n if (apiUrl === req.url.substr(0, apiUrl.length)) {\n req = req.clone({withCredentials: true});\n }\n const csrf = getCookie('csrftoken');\n if (csrf) {\n req = req.clone({\n setHeaders: {'X-CSRFToken': csrf}\n });\n }\n return next.handle(req);\n }\n}\n","import {\n ɵComponentType as ComponentType,\n ɵDirectiveType as DirectiveType,\n ɵComponentDef as ComponentDef,\n ɵDirectiveDef as DirectiveDef\n} from '@angular/core';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { Subject } from 'rxjs/internal/Subject';\n\nexport interface OnDestroyLike {\n ngOnDestroy(): void;\n [key: string]: any;\n}\n\nexport function componentDestroyed(component: OnDestroyLike): Observable<void> {\n if ((component.constructor as any).__componentDestroyed$) {\n return (component.constructor as any).__componentDestroyed$;\n }\n throw new Error('Use @UntilDestroy decorator in class');\n}\n\nexport function UntilDestroy(cmpType: any) {\n const def = getDef(cmpType as any);\n const original = (def as any).onDestroy;\n cmpType.__componentDestroyed$ = new Subject<void>();\n (def as any).onDestroy = function() {\n cmpType.__componentDestroyed$.next();\n cmpType.__componentDestroyed$.complete();\n original.apply(this);\n };\n}\n\nfunction getDef<T>(\n type: DirectiveType<T> | ComponentType<T>\n): DirectiveDef<T> | ComponentDef<T> {\n return (type as ComponentType<T>).ɵcmp || (type as DirectiveType<T>).ɵdir;\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { debounceTime, delay, map, switchMap } from 'rxjs/operators';\nimport { Observable, of } from 'rxjs';\n\nexport interface CheckEmailServiceInterface {\n checkEmail(value: string, selfCheck: boolean): Observable<boolean>;\n}\n\nexport const minLengthArrayValidator = (minLength: number) => {\n return (c: AbstractControl) => {\n return c.value.length < minLength\n ? {minLengthArray: {valid: false}}\n : null;\n };\n};\n\nexport const validatePhone = (control: AbstractControl) => {\n if (!control.value) {\n return null;\n }\n const value = `${control.value}`.replace(/\\D/gi, '');\n return value.length === 11 ? null : {invalidPhone: {valid: false}};\n};\n\nexport const validateDate = (control: AbstractControl) => {\n const re = /\\d{2}\\.\\d{2}\\.\\d{4}/gi;\n if (!control.value || re.test(control.value)) {\n return null;\n }\n return {invalidDate: {valid: false}};\n};\n\nexport const validateEmail = (authService: CheckEmailServiceInterface, selfCheck = true, ignore = []) => {\n const subject = of(null).pipe(\n delay(500)\n );\n return (control: AbstractControl) => {\n if (ignore.indexOf(control.value) > -1) {\n return of(null);\n }\n return subject.pipe(\n switchMap(() => authService.checkEmail(control.value, selfCheck).pipe(\n map(valid => valid ? null : {emailTaken: true})\n ))\n );\n };\n};\n\nexport const validateUrl = (control: AbstractControl) => {\n const re = /^(?:http(s)?:\\/\\/)[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/;\n if (!control.value || re.test(control.value)) {\n return null;\n }\n return {invalidUrl: true};\n};\n\nexport function fileSizeValidator(maxFileSize: number): ValidatorFn {\n return (control: AbstractControl): {[key: string]: any} | null => {\n if (!control.value) {\n return null;\n }\n };\n}\n","export function getEnumOptions(enumClass): number[] {\n return Object.keys(enumClass)\n .map(v => enumClass[v])\n .filter(v => isNaN(+v) === false)\n .map(v => +v);\n}\n\n","import { captureException } from '@sentry/angular';\n\nexport function handleError(error, force = false, production = true) {\n if (!(error && (error.status === 0 || error.status === 404)) || (force && error.status !== 0)) {\n captureException(error);\n }\n\n if (!production) {\n console.error(error);\n }\n}\n","export function isTouchDevice() {\n const prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');\n const mq = (q) => {\n return window.matchMedia(q).matches;\n };\n\n if (('ontouchstart' in window) || (window as any).DocumentTouch && document instanceof (window as any).DocumentTouch) {\n return true;\n }\n\n // include the 'heartz' as a way to have a non matching MQ to help terminate the join\n // https://git.io/vznFH\n const query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\n return mq(query);\n}\n","import { FormGroup } from '@angular/forms';\n\nexport function markFormGroupTouched(formGroup: FormGroup) {\n (Object as any).values(formGroup.controls).forEach(control => {\n control.markAsTouched();\n control.markAsDirty();\n\n if (control instanceof FormGroup) {\n markFormGroupTouched(control);\n } else if (control.controls) {\n control.controls.forEach(c => {\n if (c instanceof FormGroup) {\n markFormGroupTouched(c);\n } else {\n c.markAsTouched();\n c.markAsDirty();\n }\n });\n }\n });\n}\n"]}
|