@mtgame/core 0.1.54 → 0.1.56

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.
@@ -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/models/rugby-game-config.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-foul-type.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/rugby-game-log.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-foul-sanction.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/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","RugbyStatisticTypes","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","libero_user_ids","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","time_and_penalties","overtimePeriods","overtime_periods","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","RugbyGameConfig","TournamentTeamShort","Game","_basketballGameConfig","gameConfig","_volleyballGameConfig","_hockeyGameConfig","_handballGameConfig","_footballGameConfig","_rugbyGameConfig","scoreByPeriod","period","teamScore","competitorTeamScore","closed","team_won","competitor_team_technical_defeat","includes","resultType","competitor_team_won","team_technical_defeat","isClosed","isTeamWon","teamId","isCompetitorTeamWon","competitorTeam","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","rugby_game_config","score_by_period","playoff_stage","playoff_round","tournament_playoff_id","tournament_playoff","tournament_court","media_count","media_live_count","media","tournament_group","tournamentTeam","competitorTournamentTeam","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","lose_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","tries_scored","tries_missed","attack_bonuses","defense_bonuses","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","downloadApplication","format","params","HttpParams","responseType","HttpClient","BasketballGameApi","getById","getTeamStatistic","getUserStatistic","getLogs","downloadProtocol","fileType","downloadFibaProtocol","Feedback","theme","message","files","captcha","FeedbackApi","sendFeedback","post","response","sendLeagueFeedback","leagueId","FileApi","upload","fileData","filename","width","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","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","HandballGameLogTypes","FootballGameLog","penalty_goal","small_penalty_goal","auto_goal","end_game_penalty_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","end_game_penalty_goals","end_game_penalty_misses","end_game_penalty_saves","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","playoff_teams_count","GameTimelineStages","current_tour","current_playoff_stage","current_playoff_round","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_kicks","conversion_goals","conversion_misses","conversion_goals_percent","penalties","penalty_kicks_on_goal","tap_penalties","penalty_kicks_to_touch","drop_goal_kicks","drop_goals","drop_goal_misses","drop_goals_percent","offloads","tackles","handling_errors","carries_over_gainline","scrums","scrums_won","scrums_lost","scrums_won_percent","scrums_won_free","opponent_scrums_won","opponent_scrums_lost","lineouts","lineouts_won","lineouts_lost","lineouts_steal","opponent_lineouts_lost","quick_throws","rucks","rucks_won","rucks_lost","rucks_won_percent","opponent_rucks_won","opponent_rucks_lost","mauls","mauls_won","mauls_lost","mauls_won_percent","opponent_mauls_won","opponent_mauls_lost","team_fouls","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","playoffRound","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","RugbyFoulSanctions","NotificationSettings","popup","sound","browser","NotificationBaseApi","getCount","apiUrl","getList","markViewed","notificationId","markAllViewed","getNotificationSettings","updateNotificationSettings","NotificationApi","OrgNotificationApi","ReferenceApi","getCities","getSports","RugbyGameTeamStatistic","RugbyGameStatistic","RugbyGameLogTypes","RugbyFoulType","sanction","TeamPermissionTypes","RUGBY_GAME_LOG_TYPE_POINTS","_a$1","penalty_try","try","conversion_goal","drop_goal","RUGBY_TEAM_LOG_TYPES","timeout","scrum_won","scrum_lost","scrum_won_free","lineout_won","lineout_lost","quick_throw","ruck_won","ruck_lost","maul_won","maul_lost","team_foul","penalty_kick_to_touch","tap_penalty","RugbyGameLog","scorePoints","isTeamType","foul_type","foul_sanction","foulType","foulSanction","RugbyGameApi","getFoulTypes","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","end_game_penalty_miss","end_game_penalty_save","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","RugbyFoulSanctionLocalization","_a$7","scrum","lineout","RugbyGameLogTypeLocalization","_a$8","conversion_miss","drop_goal_miss","offload","tackle","handling_error","bleeding_injury","head_injury","TeamUserRoleLocalization","_a$9","member","moderator","admin","coach","head_coach","playing_coach","manager","head_manager","captain","assistant","GameBasketballPositionLocalization","_a$a","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$b","LeaguePlaylist","key_code","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 RugbyStatisticTypes {\n light = 1,\n standard,\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 libero_user_ids: 'liberoUserIds',\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 liberoUserIds: number[];\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 overtime_periods: 'overtimePeriods',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\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 FootballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n overtimePeriods: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n substituteCount: number;\n freeSubstituteEnabled: boolean;\n\n get penaltyPeriod(): number {\n if (this.overtimeType !== OvertimeTypes.time_and_penalties) {\n return +this.periodsCount + 1;\n }\n return +this.periodsCount + this.overtimePeriods + 1;\n }\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';\nimport { RugbyGameConfig } from \"./rugby-game-config\";\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 rugby_game_config: 'rugbyGameConfig',\n score_by_period: 'scoreByPeriod',\n playoff_stage: 'playoffStage',\n playoff_round: 'playoffRound',\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 private _rugbyGameConfig: RugbyGameConfig;\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 playoffRound: number;\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 rugbyGameConfig(): RugbyGameConfig {\n if (this._rugbyGameConfig && this._rugbyGameConfig.periodsCount) {\n return this._rugbyGameConfig;\n }\n if (this.gameConfig) {\n this._rugbyGameConfig = RugbyGameConfig.toFront(this.gameConfig);\n }\n return this._rugbyGameConfig;\n }\n\n set rugbyGameConfig(value) {\n this._rugbyGameConfig = 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 [GameResultTypes.team_won, GameResultTypes.competitor_team_technical_defeat].includes(this.resultType);\n }\n\n get isCompetitorTeamWon() {\n return [GameResultTypes.competitor_team_won, GameResultTypes.team_technical_defeat].includes(this.resultType);\n }\n\n get teamWinnerId() {\n if (!this.isClosed) {\n return null;\n }\n if (this.isTeamWon) {\n return this.team.id || this.teamId;\n }\n if (this.isCompetitorTeamWon) {\n return this.competitorTeam.id || this.competitorTeamId;\n }\n return null;\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","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } 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 get penaltyPeriod(): number {\n if (this.overtimeType !== OvertimeTypes.time_and_penalties) {\n return +this.periodsCount + 1;\n }\n return +this.periodsCount + this.overtimePeriods + 1;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\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 lose_games_count: 'loseGamesCount',\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 tries_scored: 'triesScored',\n tries_missed: 'triesMissed',\n attack_bonuses: 'attackBonuses',\n defense_bonuses: 'defenseBonuses',\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 loseGamesCount: 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 triesScored: number;\n triesMissed: number;\n attackBonuses: number;\n defenseBonuses: 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 { 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, HttpParams } 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 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_game/${gameId}/game_application/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\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 end_game_penalty_miss,\n end_game_penalty_goal,\n end_game_penalty_save\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 FootballGameLogTypes.end_game_penalty_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 end_game_penalty_goals: 'endGamePenaltyGoals',\n end_game_penalty_misses: 'endGamePenaltyMisses',\n end_game_penalty_saves: 'endGamePenaltySaves'\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 endGamePenaltyGoals: number;\n endGamePenaltyMisses: number;\n endGamePenaltySaves: 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 end_game_penalty_goals: 'endGamePenaltyGoals',\n end_game_penalty_misses: 'endGamePenaltyMisses',\n end_game_penalty_saves: 'endGamePenaltySaves'\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 endGamePenaltyGoals: number;\n endGamePenaltyMisses: number;\n endGamePenaltySaves: 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 playoff_teams_count: 'playoffTeamsCount',\n }\n})\nexport class GameTimelineStageItem {\n stageId: number;\n toursCount: number;\n playoffStagesCount: number;\n playoffTeamsCount: 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 playoff_teams_count: 'playoffTeamsCount',\n current_tour: 'currentTour',\n current_playoff_stage: 'currentPlayoffStage',\n current_playoff_round: 'currentPlayoffRound',\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 playoffTeamsCount: number;\n currentTour: number;\n currentPlayoffStage: number;\n currentPlayoffRound: 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';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\nimport { LeaguePlayer } from './league-player';\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 lose_games_count: 'loseGamesCount',\n draw_games_count: 'drawGamesCount',\n newbie: 'newbie',\n // User statistic\n points: 'points',\n tries: 'tries',\n penalty_tries: 'penaltyTries',\n conversion_kicks: 'conversionKicks',\n conversion_goals: 'conversionGoals',\n conversion_misses: 'conversionMisses',\n conversion_goals_percent: 'conversionGoalsPercent',\n penalties: 'penalties',\n penalty_kicks_on_goal: 'penaltyKicksOnGoal',\n penalty_misses: 'penaltyMisses',\n penalty_goals: 'penaltyGoals',\n tap_penalties: 'tapPenalties',\n penalty_kicks_to_touch: 'penaltyKicksToTouch',\n penalty_goals_percent: 'penaltyGoalsPercent',\n drop_goal_kicks: 'dropGoalKicks',\n drop_goals: 'dropGoals',\n drop_goal_misses: 'dropGoalMisses',\n drop_goals_percent: 'dropGoalsPercent',\n free_kicks: 'freeKicks',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n offloads: 'offloads',\n tackles: 'tackles',\n handling_errors: 'handlingErrors',\n carries_over_gainline: 'carriesOverGainline',\n plus_minus: 'plusMinus',\n game_time: 'gameTime',\n\n // Team statistic\n scrums: 'scrums',\n scrums_won: 'scrumsWon',\n scrums_lost: 'scrumsLost',\n scrums_won_percent: 'scrumsWonPercent',\n scrums_won_free: 'scrumsWonFree',\n opponent_scrums_won: 'opponentScrumsWon',\n opponent_scrums_lost: 'opponentScrumsLost',\n lineouts: 'lineouts',\n lineouts_won: 'lineoutsWon',\n lineouts_lost: 'lineoutsLost',\n lineouts_steal: 'lineoutsSteal',\n opponent_lineouts_lost: 'opponentLineoutsLost',\n quick_throws: 'quickThrows',\n rucks: 'rucks',\n rucks_won: 'rucksWon',\n rucks_lost: 'rucksLost',\n rucks_won_percent: 'rucksWonPercent',\n opponent_rucks_won: 'opponentRucksWon',\n opponent_rucks_lost: 'opponentRucksLost',\n mauls: 'mauls',\n mauls_won: 'maulsWon',\n mauls_lost: 'maulsLost',\n mauls_won_percent: 'maulWonPercent',\n opponent_mauls_won: 'opponentMaulsWon',\n opponent_mauls_lost: 'opponentMaulsLost',\n fouls: 'fouls',\n team_fouls: 'teamFouls',\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 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 drawGamesCount: number;\n tournamentTeamPoints: number;\n newbie: boolean;\n rank: number;\n points: number;\n tries: number;\n penaltyTries: number;\n conversionKicks: number;\n conversionGoals: number;\n conversionMisses: number;\n conversionGoalsPercent: number;\n penalties: number;\n penaltyKicksOnGoal: number;\n penaltyMisses: number;\n penaltyGoals: number;\n penaltyGoalsPercent: number;\n tapPenalties: number;\n penaltyKicksToTouch: number;\n dropGoalKicks: number;\n dropGoals: number;\n dropGoalMisses: number;\n dropGoalsPercent: number;\n freeKicks: number;\n yellowCards: number;\n redCards: number;\n offloads: number;\n tackles: number;\n handlingErrors: number;\n carriesOverGainline: number;\n plusMinus: number;\n gameTime: number;\n\n scrums: number;\n scrumsWon: number;\n scrumsLost: number;\n scrumsWonPercent: number;\n scrumsWonFree: number;\n opponentScrumsWon: number;\n opponentScrumsLost: number;\n lineouts: number;\n lineoutsWon: number;\n lineoutsLost: number;\n lineoutsSteal: number;\n opponentLineoutsLost: number;\n quickThrows: number;\n rucks: number;\n rucksWon: number;\n rucksLost: number;\n rucksWonPercent: number;\n opponentRucksWon: number;\n opponentRucksLost: number;\n mauls: number;\n maulsWon: number;\n maulsLost: number;\n maulWonPercent: number;\n opponentMaulsWon: number;\n opponentMaulsLost: number;\n fouls: number;\n teamFouls: 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 playoffRound?: 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_round?: 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.playoffRound) {\n params = params.set('playoff_round', filters.playoffRound.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.playoffRound) {\n params = params.set('playoff_round', filters.playoffRound.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 { BaseModel, ModelInstance, ToFrontHook, ToBackHook, listField, enumField } from './util';\n\nexport enum RugbyFoulSanctions {\n scrum = 1,\n lineout,\n free_kick,\n penalty_shot,\n yellow_card,\n red_card,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n sanction: 'sanction',\n },\n relation: {\n sanction: listField(enumField(RugbyFoulSanctions))\n }\n})\nexport class RugbyFoulType extends BaseModel {\n id: number;\n name: string;\n sanction: RugbyFoulSanctions[];\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 { 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';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\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 implements GameTeamStatisticBase {\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';\nimport { GameStatisticBase } from './game-statistic-base';\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 conversion_kicks: 'conversionKicks',\n conversion_goals_percent: 'conversionGoalsPercent',\n penalty_misses: 'penaltyMisses',\n penalty_goals: 'penaltyGoals',\n penalty_kicks_on_goal: 'penaltyKicksOnGoal',\n penalty_goals_percent: 'penaltyGoalsPercent',\n drop_goals: 'dropGoals',\n drop_goal_misses: 'dropGoalMisses',\n drop_goal_kicks: 'dropGoalKicks',\n drop_goals_percent: 'dropGoalsPercent',\n free_kicks: 'freeKicks',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n offloads: 'offloads',\n tackles: 'tackles',\n handling_errors: 'handlingErrors',\n carries_over_gainline: 'carriesOverGainline',\n game_time: 'gameTime',\n plus_minus: 'plusMinus'\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class RugbyGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n tries: number;\n penaltyTries: number;\n conversionKicks: number;\n conversionGoals: number;\n conversionMisses: number;\n conversionGoalsPercent: number;\n penaltyMisses: number;\n penaltyGoals: number;\n penaltyKicksOnGoal: number;\n penaltyGoalsPercent: number;\n dropGoals: number;\n dropGoalMisses: number;\n dropGoalKicks: number;\n dropGoalsPercent: number;\n freeKicks: number;\n yellowCards: number;\n redCards: number;\n offloads: number;\n tackles: number;\n handlingErrors: number;\n carriesOverGainline: 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, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { GameLogBase } from './game-log-base';\nimport { GameUser } from './game-user';\nimport { RugbyFoulSanctions, RugbyFoulType } from './rugby-foul-type';\n\nexport enum RugbyGameLogTypes {\n enter_game = 1,\n exit_game,\n try,\n penalty_try,\n conversion_goal,\n conversion_miss,\n penalty_miss,\n penalty_goal,\n drop_goal,\n drop_goal_miss,\n free_kick,\n foul,\n yellow_card,\n red_card,\n offload,\n tackle,\n handling_error,\n carries_over_gainline,\n bleeding_injury,\n head_injury,\n end_game_penalty_miss,\n end_game_penalty_goal,\n\n // team actions\n timeout,\n tap_penalty,\n penalty_kick_to_touch,\n scrum_won,\n scrum_lost,\n scrum_won_free,\n lineout_won,\n lineout_lost,\n quick_throw,\n ruck_won,\n ruck_lost,\n maul_won,\n maul_lost,\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 [RugbyGameLogTypes.end_game_penalty_goal]: 1, // Не влияет на общий счет\n};\n\nexport const RUGBY_TEAM_LOG_TYPES = [\n RugbyGameLogTypes.timeout, RugbyGameLogTypes.scrum_won, RugbyGameLogTypes.scrum_lost, RugbyGameLogTypes.scrum_won_free,\n RugbyGameLogTypes.lineout_won, RugbyGameLogTypes.lineout_lost,\n RugbyGameLogTypes.quick_throw, RugbyGameLogTypes.ruck_won, RugbyGameLogTypes.ruck_lost,\n RugbyGameLogTypes.maul_won, RugbyGameLogTypes.maul_lost, RugbyGameLogTypes.team_foul,\n RugbyGameLogTypes.penalty_kick_to_touch, RugbyGameLogTypes.tap_penalty,\n];\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n group: 'group',\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 foul_type: 'foulType',\n foul_sanction: 'foulSanction',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(RugbyGameLogTypes),\n foulType: RugbyFoulType,\n foulSanction: enumField(RugbyFoulSanctions),\n }\n})\nexport class RugbyGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n group: 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 foulType: RugbyFoulType;\n foulSanction: RugbyFoulSanctions;\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.foul].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 { 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, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\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';\nimport { RugbyFoulType } from '../models/rugby-foul-type';\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 async getFoulTypes(): Promise<RugbyFoulType> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_rugby_game/foul_types/`).pipe(\n map(result => RugbyFoulType.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_rugby_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', 'pdf'),\n responseType: 'blob'\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 group: 'group',\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 group: string;\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 [FootballGameLogTypes.end_game_penalty_goal]: 'Пенальти гол',\n [FootballGameLogTypes.end_game_penalty_miss]: 'Пенальти промах',\n [FootballGameLogTypes.end_game_penalty_save]: 'Отражен пенальти',\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 { RugbyFoulSanctions } from '../models/rugby-foul-type';\n\nexport const RugbyFoulSanctionLocalization = {\n [RugbyFoulSanctions.scrum]: 'Схватка',\n [RugbyFoulSanctions.lineout]: 'Корридор',\n [RugbyFoulSanctions.free_kick]: 'Свободный удар',\n [RugbyFoulSanctions.penalty_shot]: 'Штрафной удар',\n [RugbyFoulSanctions.yellow_card]: 'Желтая карточка',\n [RugbyFoulSanctions.red_card]: 'Красная карточка',\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.penalty_miss]: 'Штрафной промах',\n [RugbyGameLogTypes.penalty_goal]: 'Штрафной гол',\n [RugbyGameLogTypes.penalty_kick_to_touch]: 'Штрафной в аут',\n [RugbyGameLogTypes.tap_penalty]: 'Штрафной розыгран',\n [RugbyGameLogTypes.drop_goal]: 'Дроп-гол',\n [RugbyGameLogTypes.drop_goal_miss]: 'Дроп-гол промах',\n [RugbyGameLogTypes.free_kick]: 'Свободный удар',\n [RugbyGameLogTypes.foul]: 'Фол',\n [RugbyGameLogTypes.yellow_card]: 'Желтая карточка',\n [RugbyGameLogTypes.red_card]: 'Красная карточка',\n [RugbyGameLogTypes.offload]: 'Скидка при завхвате',\n [RugbyGameLogTypes.tackle]: 'Успешный захват',\n [RugbyGameLogTypes.handling_error]: 'Ошибка приема',\n [RugbyGameLogTypes.carries_over_gainline]: 'Прорыв линии',\n [RugbyGameLogTypes.bleeding_injury]: 'Кровоточащая травма',\n [RugbyGameLogTypes.head_injury]: 'Травма головы',\n [RugbyGameLogTypes.end_game_penalty_miss]: 'Штрафной промах',\n [RugbyGameLogTypes.end_game_penalty_goal]: 'Штрафной гол',\n\n [RugbyGameLogTypes.timeout]: 'Таймаут',\n [RugbyGameLogTypes.scrum_won]: 'Схватка выиграна',\n [RugbyGameLogTypes.scrum_lost]: 'Схватка проиграна',\n [RugbyGameLogTypes.scrum_won_free]: 'Схватка выиграна без сопротивления',\n [RugbyGameLogTypes.lineout_won]: 'Корридор выиграно',\n [RugbyGameLogTypes.lineout_lost]: 'Корридор проиграно',\n [RugbyGameLogTypes.quick_throw]: 'Быстрый вброс',\n [RugbyGameLogTypes.ruck_won]: 'Рак выиграно',\n [RugbyGameLogTypes.ruck_lost]: 'Рак проиграно',\n [RugbyGameLogTypes.maul_won]: 'Мол выиграно',\n [RugbyGameLogTypes.maul_lost]: 'Мол проиграно',\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 { 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/models/rugby-game-config.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-foul-type.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/rugby-game-log.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-foul-sanction.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/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","RugbyStatisticTypes","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","substitute_manage_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","libero_user_ids","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","time_and_penalties","overtimePeriods","overtime_periods","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","RugbyGameConfig","TournamentTeamShort","Game","_basketballGameConfig","gameConfig","_volleyballGameConfig","_hockeyGameConfig","_handballGameConfig","_footballGameConfig","_rugbyGameConfig","scoreByPeriod","period","teamScore","competitorTeamScore","closed","team_won","competitor_team_technical_defeat","includes","resultType","competitor_team_won","team_technical_defeat","isClosed","isTeamWon","teamId","isCompetitorTeamWon","competitorTeam","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","rugby_game_config","score_by_period","playoff_stage","playoff_round","tournament_playoff_id","tournament_playoff","tournament_court","media_count","media_live_count","media","tournament_group","tournamentTeam","competitorTournamentTeam","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","lose_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","tries_scored","tries_missed","attack_bonuses","defense_bonuses","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","downloadApplication","format","params","HttpParams","responseType","HttpClient","BasketballGameApi","getById","getTeamStatistic","getUserStatistic","getLogs","downloadProtocol","fileType","downloadFibaProtocol","Feedback","theme","message","files","captcha","FeedbackApi","sendFeedback","post","response","sendLeagueFeedback","leagueId","FileApi","upload","fileData","filename","width","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","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","HandballGameLogTypes","FootballGameLog","penalty_goal","small_penalty_goal","auto_goal","end_game_penalty_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","end_game_penalty_goals","end_game_penalty_misses","end_game_penalty_saves","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","playoff_teams_count","GameTimelineStages","current_tour","current_playoff_stage","current_playoff_round","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_kicks","conversion_goals","conversion_misses","conversion_goals_percent","penalties","penalty_kicks_on_goal","tap_penalties","penalty_kicks_to_touch","drop_goal_kicks","drop_goals","drop_goal_misses","drop_goals_percent","offloads","tackles","handling_errors","carries_over_gainline","scrums","scrums_won","scrums_lost","scrums_won_percent","scrums_won_free","opponent_scrums_won","opponent_scrums_lost","lineouts","lineouts_won","lineouts_lost","lineouts_steal","opponent_lineouts_lost","quick_throws","rucks","rucks_won","rucks_lost","rucks_won_percent","opponent_rucks_won","opponent_rucks_lost","mauls","mauls_won","mauls_lost","mauls_won_percent","opponent_mauls_won","opponent_mauls_lost","team_fouls","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","playoffRound","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","RugbyFoulSanctions","NotificationSettings","popup","sound","browser","NotificationBaseApi","getCount","apiUrl","getList","markViewed","notificationId","markAllViewed","getNotificationSettings","updateNotificationSettings","NotificationApi","OrgNotificationApi","ReferenceApi","getCities","getSports","RugbyGameTeamStatistic","RugbyGameStatistic","RugbyGameLogTypes","RugbyFoulType","sanction","TeamPermissionTypes","RUGBY_GAME_LOG_TYPE_POINTS","_a$1","penalty_try","try","conversion_goal","drop_goal","RUGBY_TEAM_LOG_TYPES","timeout","scrum_won","scrum_lost","scrum_won_free","lineout_won","lineout_lost","quick_throw","ruck_won","ruck_lost","maul_won","maul_lost","team_foul","penalty_kick_to_touch","tap_penalty","RugbyGameLog","scorePoints","isTeamType","foul_type","foul_sanction","foulType","foulSanction","RugbyGameApi","getFoulTypes","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","end_game_penalty_miss","end_game_penalty_save","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","RugbyFoulSanctionLocalization","_a$7","scrum","lineout","RugbyGameLogTypeLocalization","_a$8","conversion_miss","drop_goal_miss","offload","tackle","handling_error","bleeding_injury","head_injury","TeamUserRoleLocalization","_a$9","member","moderator","admin","coach","head_coach","playing_coach","manager","head_manager","captain","assistant","GameBasketballPositionLocalization","_a$a","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$b","LeaguePlaylist","key_code","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 RugbyStatisticTypes {\n light = 1,\n standard,\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 substitute_manage_enabled: 'substituteManageEnabled',\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 substituteManageEnabled: 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 libero_user_ids: 'liberoUserIds',\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 liberoUserIds: number[];\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 substitute_manage_enabled: 'substituteManageEnabled',\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 substituteManageEnabled: boolean;\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 overtime_periods: 'overtimePeriods',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n substitute_count: 'substituteCount',\n free_substitute_enabled: 'freeSubstituteEnabled',\n substitute_manage_enabled: 'substituteManageEnabled',\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 overtimePeriods: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n substituteCount: number;\n freeSubstituteEnabled: boolean;\n substituteManageEnabled: boolean;\n\n get penaltyPeriod(): number {\n if (this.overtimeType !== OvertimeTypes.time_and_penalties) {\n return +this.periodsCount + 1;\n }\n return +this.periodsCount + this.overtimePeriods + 1;\n }\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';\nimport { RugbyGameConfig } from \"./rugby-game-config\";\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 rugby_game_config: 'rugbyGameConfig',\n score_by_period: 'scoreByPeriod',\n playoff_stage: 'playoffStage',\n playoff_round: 'playoffRound',\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 private _rugbyGameConfig: RugbyGameConfig;\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 playoffRound: number;\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 rugbyGameConfig(): RugbyGameConfig {\n if (this._rugbyGameConfig && this._rugbyGameConfig.periodsCount) {\n return this._rugbyGameConfig;\n }\n if (this.gameConfig) {\n this._rugbyGameConfig = RugbyGameConfig.toFront(this.gameConfig);\n }\n return this._rugbyGameConfig;\n }\n\n set rugbyGameConfig(value) {\n this._rugbyGameConfig = 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 [GameResultTypes.team_won, GameResultTypes.competitor_team_technical_defeat].includes(this.resultType);\n }\n\n get isCompetitorTeamWon() {\n return [GameResultTypes.competitor_team_won, GameResultTypes.team_technical_defeat].includes(this.resultType);\n }\n\n get teamWinnerId() {\n if (!this.isClosed) {\n return null;\n }\n if (this.isTeamWon) {\n return this.team.id || this.teamId;\n }\n if (this.isCompetitorTeamWon) {\n return this.competitorTeam.id || this.competitorTeamId;\n }\n return null;\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","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { GameTimeTypes, OvertimeTypes, RugbyStatisticTypes } 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 statistic_type: 'statisticType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n statisticType: enumField(RugbyStatisticTypes),\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 statisticType: RugbyStatisticTypes;\n\n get penaltyPeriod(): number {\n if (this.overtimeType !== OvertimeTypes.time_and_penalties) {\n return +this.periodsCount + 1;\n }\n return +this.periodsCount + this.overtimePeriods + 1;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\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 lose_games_count: 'loseGamesCount',\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 tries_scored: 'triesScored',\n tries_missed: 'triesMissed',\n attack_bonuses: 'attackBonuses',\n defense_bonuses: 'defenseBonuses',\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 loseGamesCount: 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 triesScored: number;\n triesMissed: number;\n attackBonuses: number;\n defenseBonuses: 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 { 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, HttpParams } 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 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_game/${gameId}/game_application/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\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 end_game_penalty_miss,\n end_game_penalty_goal,\n end_game_penalty_save\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 FootballGameLogTypes.end_game_penalty_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 end_game_penalty_goals: 'endGamePenaltyGoals',\n end_game_penalty_misses: 'endGamePenaltyMisses',\n end_game_penalty_saves: 'endGamePenaltySaves'\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 endGamePenaltyGoals: number;\n endGamePenaltyMisses: number;\n endGamePenaltySaves: 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 end_game_penalty_goals: 'endGamePenaltyGoals',\n end_game_penalty_misses: 'endGamePenaltyMisses',\n end_game_penalty_saves: 'endGamePenaltySaves'\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 endGamePenaltyGoals: number;\n endGamePenaltyMisses: number;\n endGamePenaltySaves: 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 playoff_teams_count: 'playoffTeamsCount',\n }\n})\nexport class GameTimelineStageItem {\n stageId: number;\n toursCount: number;\n playoffStagesCount: number;\n playoffTeamsCount: 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 playoff_teams_count: 'playoffTeamsCount',\n current_tour: 'currentTour',\n current_playoff_stage: 'currentPlayoffStage',\n current_playoff_round: 'currentPlayoffRound',\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 playoffTeamsCount: number;\n currentTour: number;\n currentPlayoffStage: number;\n currentPlayoffRound: 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';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\nimport { LeaguePlayer } from './league-player';\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 lose_games_count: 'loseGamesCount',\n draw_games_count: 'drawGamesCount',\n newbie: 'newbie',\n // User statistic\n points: 'points',\n tries: 'tries',\n penalty_tries: 'penaltyTries',\n conversion_kicks: 'conversionKicks',\n conversion_goals: 'conversionGoals',\n conversion_misses: 'conversionMisses',\n conversion_goals_percent: 'conversionGoalsPercent',\n penalties: 'penalties',\n penalty_kicks_on_goal: 'penaltyKicksOnGoal',\n penalty_misses: 'penaltyMisses',\n penalty_goals: 'penaltyGoals',\n tap_penalties: 'tapPenalties',\n penalty_kicks_to_touch: 'penaltyKicksToTouch',\n penalty_goals_percent: 'penaltyGoalsPercent',\n drop_goal_kicks: 'dropGoalKicks',\n drop_goals: 'dropGoals',\n drop_goal_misses: 'dropGoalMisses',\n drop_goals_percent: 'dropGoalsPercent',\n free_kicks: 'freeKicks',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n offloads: 'offloads',\n tackles: 'tackles',\n handling_errors: 'handlingErrors',\n carries_over_gainline: 'carriesOverGainline',\n plus_minus: 'plusMinus',\n game_time: 'gameTime',\n\n // Team statistic\n scrums: 'scrums',\n scrums_won: 'scrumsWon',\n scrums_lost: 'scrumsLost',\n scrums_won_percent: 'scrumsWonPercent',\n scrums_won_free: 'scrumsWonFree',\n opponent_scrums_won: 'opponentScrumsWon',\n opponent_scrums_lost: 'opponentScrumsLost',\n lineouts: 'lineouts',\n lineouts_won: 'lineoutsWon',\n lineouts_lost: 'lineoutsLost',\n lineouts_steal: 'lineoutsSteal',\n opponent_lineouts_lost: 'opponentLineoutsLost',\n quick_throws: 'quickThrows',\n rucks: 'rucks',\n rucks_won: 'rucksWon',\n rucks_lost: 'rucksLost',\n rucks_won_percent: 'rucksWonPercent',\n opponent_rucks_won: 'opponentRucksWon',\n opponent_rucks_lost: 'opponentRucksLost',\n mauls: 'mauls',\n mauls_won: 'maulsWon',\n mauls_lost: 'maulsLost',\n mauls_won_percent: 'maulWonPercent',\n opponent_mauls_won: 'opponentMaulsWon',\n opponent_mauls_lost: 'opponentMaulsLost',\n fouls: 'fouls',\n team_fouls: 'teamFouls',\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 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 drawGamesCount: number;\n tournamentTeamPoints: number;\n newbie: boolean;\n rank: number;\n points: number;\n tries: number;\n penaltyTries: number;\n conversionKicks: number;\n conversionGoals: number;\n conversionMisses: number;\n conversionGoalsPercent: number;\n penalties: number;\n penaltyKicksOnGoal: number;\n penaltyMisses: number;\n penaltyGoals: number;\n penaltyGoalsPercent: number;\n tapPenalties: number;\n penaltyKicksToTouch: number;\n dropGoalKicks: number;\n dropGoals: number;\n dropGoalMisses: number;\n dropGoalsPercent: number;\n freeKicks: number;\n yellowCards: number;\n redCards: number;\n offloads: number;\n tackles: number;\n handlingErrors: number;\n carriesOverGainline: number;\n plusMinus: number;\n gameTime: number;\n\n scrums: number;\n scrumsWon: number;\n scrumsLost: number;\n scrumsWonPercent: number;\n scrumsWonFree: number;\n opponentScrumsWon: number;\n opponentScrumsLost: number;\n lineouts: number;\n lineoutsWon: number;\n lineoutsLost: number;\n lineoutsSteal: number;\n opponentLineoutsLost: number;\n quickThrows: number;\n rucks: number;\n rucksWon: number;\n rucksLost: number;\n rucksWonPercent: number;\n opponentRucksWon: number;\n opponentRucksLost: number;\n mauls: number;\n maulsWon: number;\n maulsLost: number;\n maulWonPercent: number;\n opponentMaulsWon: number;\n opponentMaulsLost: number;\n fouls: number;\n teamFouls: 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 playoffRound?: 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_round?: 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.playoffRound) {\n params = params.set('playoff_round', filters.playoffRound.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.playoffRound) {\n params = params.set('playoff_round', filters.playoffRound.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 { BaseModel, ModelInstance, ToFrontHook, ToBackHook, listField, enumField } from './util';\n\nexport enum RugbyFoulSanctions {\n scrum = 1,\n lineout,\n free_kick,\n penalty_shot,\n yellow_card,\n red_card,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n sanction: 'sanction',\n },\n relation: {\n sanction: listField(enumField(RugbyFoulSanctions))\n }\n})\nexport class RugbyFoulType extends BaseModel {\n id: number;\n name: string;\n sanction: RugbyFoulSanctions[];\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 { 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';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\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 implements GameTeamStatisticBase {\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';\nimport { GameStatisticBase } from './game-statistic-base';\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 conversion_kicks: 'conversionKicks',\n conversion_goals_percent: 'conversionGoalsPercent',\n penalty_misses: 'penaltyMisses',\n penalty_goals: 'penaltyGoals',\n penalty_kicks_on_goal: 'penaltyKicksOnGoal',\n penalty_goals_percent: 'penaltyGoalsPercent',\n drop_goals: 'dropGoals',\n drop_goal_misses: 'dropGoalMisses',\n drop_goal_kicks: 'dropGoalKicks',\n drop_goals_percent: 'dropGoalsPercent',\n free_kicks: 'freeKicks',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n offloads: 'offloads',\n tackles: 'tackles',\n handling_errors: 'handlingErrors',\n carries_over_gainline: 'carriesOverGainline',\n game_time: 'gameTime',\n plus_minus: 'plusMinus'\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class RugbyGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n tries: number;\n penaltyTries: number;\n conversionKicks: number;\n conversionGoals: number;\n conversionMisses: number;\n conversionGoalsPercent: number;\n penaltyMisses: number;\n penaltyGoals: number;\n penaltyKicksOnGoal: number;\n penaltyGoalsPercent: number;\n dropGoals: number;\n dropGoalMisses: number;\n dropGoalKicks: number;\n dropGoalsPercent: number;\n freeKicks: number;\n yellowCards: number;\n redCards: number;\n offloads: number;\n tackles: number;\n handlingErrors: number;\n carriesOverGainline: 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, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { GameLogBase } from './game-log-base';\nimport { GameUser } from './game-user';\nimport { RugbyFoulSanctions, RugbyFoulType } from './rugby-foul-type';\n\nexport enum RugbyGameLogTypes {\n enter_game = 1,\n exit_game,\n try,\n penalty_try,\n conversion_goal,\n conversion_miss,\n penalty_miss,\n penalty_goal,\n drop_goal,\n drop_goal_miss,\n free_kick,\n foul,\n yellow_card,\n red_card,\n offload,\n tackle,\n handling_error,\n carries_over_gainline,\n bleeding_injury,\n head_injury,\n end_game_penalty_miss,\n end_game_penalty_goal,\n\n // team actions\n timeout,\n tap_penalty,\n penalty_kick_to_touch,\n scrum_won,\n scrum_lost,\n scrum_won_free,\n lineout_won,\n lineout_lost,\n quick_throw,\n ruck_won,\n ruck_lost,\n maul_won,\n maul_lost,\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 [RugbyGameLogTypes.end_game_penalty_goal]: 1, // Не влияет на общий счет\n};\n\nexport const RUGBY_TEAM_LOG_TYPES = [\n RugbyGameLogTypes.timeout, RugbyGameLogTypes.scrum_won, RugbyGameLogTypes.scrum_lost, RugbyGameLogTypes.scrum_won_free,\n RugbyGameLogTypes.lineout_won, RugbyGameLogTypes.lineout_lost,\n RugbyGameLogTypes.quick_throw, RugbyGameLogTypes.ruck_won, RugbyGameLogTypes.ruck_lost,\n RugbyGameLogTypes.maul_won, RugbyGameLogTypes.maul_lost, RugbyGameLogTypes.team_foul,\n RugbyGameLogTypes.penalty_kick_to_touch, RugbyGameLogTypes.tap_penalty,\n];\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n group: 'group',\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 foul_type: 'foulType',\n foul_sanction: 'foulSanction',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(RugbyGameLogTypes),\n foulType: RugbyFoulType,\n foulSanction: enumField(RugbyFoulSanctions),\n }\n})\nexport class RugbyGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n group: 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 foulType: RugbyFoulType;\n foulSanction: RugbyFoulSanctions;\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.foul].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 { 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, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\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';\nimport { RugbyFoulType } from '../models/rugby-foul-type';\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 async getFoulTypes(): Promise<RugbyFoulType> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_rugby_game/foul_types/`).pipe(\n map(result => RugbyFoulType.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_rugby_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', 'pdf'),\n responseType: 'blob'\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 group: 'group',\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 group: string;\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 [FootballGameLogTypes.end_game_penalty_goal]: 'Пенальти гол',\n [FootballGameLogTypes.end_game_penalty_miss]: 'Пенальти промах',\n [FootballGameLogTypes.end_game_penalty_save]: 'Отражен пенальти',\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 { RugbyFoulSanctions } from '../models/rugby-foul-type';\n\nexport const RugbyFoulSanctionLocalization = {\n [RugbyFoulSanctions.scrum]: 'Схватка',\n [RugbyFoulSanctions.lineout]: 'Корридор',\n [RugbyFoulSanctions.free_kick]: 'Свободный удар',\n [RugbyFoulSanctions.penalty_shot]: 'Штрафной удар',\n [RugbyFoulSanctions.yellow_card]: 'Желтая карточка',\n [RugbyFoulSanctions.red_card]: 'Красная карточка',\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.penalty_miss]: 'Штрафной промах',\n [RugbyGameLogTypes.penalty_goal]: 'Штрафной гол',\n [RugbyGameLogTypes.penalty_kick_to_touch]: 'Штрафной в аут',\n [RugbyGameLogTypes.tap_penalty]: 'Штрафной розыгран',\n [RugbyGameLogTypes.drop_goal]: 'Дроп-гол',\n [RugbyGameLogTypes.drop_goal_miss]: 'Дроп-гол промах',\n [RugbyGameLogTypes.free_kick]: 'Свободный удар',\n [RugbyGameLogTypes.foul]: 'Фол',\n [RugbyGameLogTypes.yellow_card]: 'Желтая карточка',\n [RugbyGameLogTypes.red_card]: 'Красная карточка',\n [RugbyGameLogTypes.offload]: 'Скидка при завхвате',\n [RugbyGameLogTypes.tackle]: 'Успешный захват',\n [RugbyGameLogTypes.handling_error]: 'Ошибка приема',\n [RugbyGameLogTypes.carries_over_gainline]: 'Прорыв линии',\n [RugbyGameLogTypes.bleeding_injury]: 'Кровоточащая травма',\n [RugbyGameLogTypes.head_injury]: 'Травма головы',\n [RugbyGameLogTypes.end_game_penalty_miss]: 'Штрафной промах',\n [RugbyGameLogTypes.end_game_penalty_goal]: 'Штрафной гол',\n\n [RugbyGameLogTypes.timeout]: 'Таймаут',\n [RugbyGameLogTypes.scrum_won]: 'Схватка выиграна',\n [RugbyGameLogTypes.scrum_lost]: 'Схватка проиграна',\n [RugbyGameLogTypes.scrum_won_free]: 'Схватка выиграна без сопротивления',\n [RugbyGameLogTypes.lineout_won]: 'Корридор выиграно',\n [RugbyGameLogTypes.lineout_lost]: 'Корридор проиграно',\n [RugbyGameLogTypes.quick_throw]: 'Быстрый вброс',\n [RugbyGameLogTypes.ruck_won]: 'Рак выиграно',\n [RugbyGameLogTypes.ruck_lost]: 'Рак проиграно',\n [RugbyGameLogTypes.maul_won]: 'Мол выиграно',\n [RugbyGameLogTypes.maul_lost]: 'Мол проиграно',\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 { 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"]}