@mtgame/core 0.1.25 → 0.1.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/league-player-api.d.ts +11 -0
- package/api/public-api.d.ts +1 -0
- package/api/tournament-api.d.ts +2 -1
- package/bundles/mtgame-core.umd.js +104 -0
- package/bundles/mtgame-core.umd.js.map +1 -1
- package/bundles/mtgame-core.umd.min.js +1 -1
- package/bundles/mtgame-core.umd.min.js.map +1 -1
- package/esm2015/api/league-player-api.js +32 -0
- package/esm2015/api/public-api.js +2 -1
- package/esm2015/api/tournament-api.js +1 -1
- package/esm2015/models/game.js +62 -1
- package/esm5/api/league-player-api.js +33 -0
- package/esm5/api/public-api.js +2 -1
- package/esm5/api/tournament-api.js +1 -1
- package/esm5/models/game.js +82 -1
- package/fesm2015/mtgame-core.js +83 -1
- package/fesm2015/mtgame-core.js.map +1 -1
- package/fesm5/mtgame-core.js +104 -1
- package/fesm5/mtgame-core.js.map +1 -1
- package/models/game.d.ts +16 -5
- package/mtgame-core.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@mtgame/core/localization/hockey-penalty-types.ts","ng://@mtgame/core/models/util.ts","ng://@mtgame/core/models/file.ts","ng://@mtgame/core/models/sport.ts","ng://@mtgame/core/models/basketball-profile.ts","ng://@mtgame/core/models/user-profile.ts","ng://@mtgame/core/models/city.ts","ng://@mtgame/core/models/volleyball-profile.ts","ng://@mtgame/core/models/hockey-profile.ts","ng://@mtgame/core/models/football-profile.ts","ng://@mtgame/core/models/handball-profile.ts","ng://@mtgame/core/models/user.ts","ng://@mtgame/core/models/tournament-season.ts","ng://@mtgame/core/models/team.ts","ng://@mtgame/core/models/organization.ts","ng://@mtgame/core/models/league.ts","ng://@mtgame/core/models/tournament.ts","ng://@mtgame/core/models/volleyball-game-config.ts","ng://@mtgame/core/models/basketball-game-config.ts","ng://@mtgame/core/models/playoff.ts","ng://@mtgame/core/models/league-court.ts","ng://@mtgame/core/models/media-item.ts","ng://@mtgame/core/models/hockey-game-config.ts","ng://@mtgame/core/models/football-game-config.ts","ng://@mtgame/core/models/handball-game-config.ts","ng://@mtgame/core/utils/array.ts","ng://@mtgame/core/models/game.ts","ng://@mtgame/core/models/tournament-group.ts","ng://@mtgame/core/utils/data.ts","ng://@mtgame/core/models/team-user.ts","ng://@mtgame/core/storage/store.ts","ng://@mtgame/core/services/base.service.ts","ng://@mtgame/core/services/config.service.ts","ng://@mtgame/core/models/tournament-team.ts","ng://@mtgame/core/models/basketball-game-log.ts","ng://@mtgame/core/models/tournament-disqualification.ts","ng://@mtgame/core/models/league-player.ts","ng://@mtgame/core/models/tournament-team-user.ts","ng://@mtgame/core/models/basketball-statistic.ts","ng://@mtgame/core/models/basketball-game-team-statistic.ts","ng://@mtgame/core/models/basketball-game-statistic.ts","ng://@mtgame/core/models/hockey-game-log.ts","ng://@mtgame/core/models/game-user.ts","ng://@mtgame/core/models/game-user-limitation.ts","ng://@mtgame/core/api/game-base-api.ts","ng://@mtgame/core/api/basketball-game-api.ts","ng://@mtgame/core/models/feedback.ts","ng://@mtgame/core/api/feedback-api.ts","ng://@mtgame/core/api/file-api.ts","ng://@mtgame/core/models/football-game-log.ts","ng://@mtgame/core/models/hockey-game-statistic.ts","ng://@mtgame/core/models/hockey-statistic.ts","ng://@mtgame/core/models/hockey-game-team-statistic.ts","ng://@mtgame/core/api/hockey-game-api.ts","ng://@mtgame/core/models/handball-game-log.ts","ng://@mtgame/core/models/football-game-statistic.ts","ng://@mtgame/core/models/football-statistic.ts","ng://@mtgame/core/models/football-game-team-statistic.ts","ng://@mtgame/core/api/football-game-api.ts","ng://@mtgame/core/models/tournament-stage.ts","ng://@mtgame/core/models/handball-game-statistic.ts","ng://@mtgame/core/models/handball-statistic.ts","ng://@mtgame/core/models/handball-game-team-statistic.ts","ng://@mtgame/core/api/handball-game-api.ts","ng://@mtgame/core/models/tournament-news.ts","ng://@mtgame/core/models/game-timeline-stages.ts","ng://@mtgame/core/models/league-news.ts","ng://@mtgame/core/models/volleyball-statistic.ts","ng://@mtgame/core/models/tournament-stage-team.ts","ng://@mtgame/core/models/tournament-event.ts","ng://@mtgame/core/models/league-user.ts","ng://@mtgame/core/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/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/team-permission.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/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/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","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","UserGender","HandballProfile","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","wizards","city","gender","is_active","basketballProfile","volleyballProfile","hockeyProfile","footballProfile","handballProfile","Team","getEmptyLogoClass","classList","team","logo","owner","users_count","won_games_count","games_count","score_sum","closest_game_datetime","closestGameDatetime","Organization","owner_id","League","socialLinks","link","indexOf","contact_email","contact_phone","alias","description","social_links","links","organization","tournaments_count","documents_count","cover","about","TournamentTypes","TournamentStatuses","TournamentGender","BasketballStatisticTypes","VolleyballStatisticTypes","GameTimeTypes","OvertimeTypes","TournamentSeason","preview_image","status","start_date","closed_date","tournaments","previewImage","startDate","closedDate","VolleyballGameTypes","TournamentSettings","age_from","age_to","max_team_players","max_game_players","type","tours_count","periods_count","period_time","overtime_type","overtime_time","overtime_score","game_type","timeout_count","timeout_time","substitute_count","game_up_to_score","volleyball_score_in_set","volleyball_score_in_last_set","manage_team_application","recruitment_is_open","transfer_is_open","basketball_statistic_type","volleyball_statistic_type","shot_clock_enabled","game_time_type","with_result_table","basketballStatisticType","volleyballStatisticType","gameTimeType","overtimeType","TournamentTeamWinner","team_id","tournament_id","points","Tournament","location","price","regulation_files","settings","league","teams_count","team_winner","team_second","team_third","season","season_id","regulationFile","teamWinner","teamSecond","teamThird","BasketballGameConfig","overtime_timeout_count","statistic_type","statisticType","PlayoffTypes","VolleyballGameConfig","gameType","best_of_three","getSetMaxScore","set","setsCount","scoreInLastSet","scoreInSet","score_in_set","score_in_last_set","LeagueCourt","address","league_id","MediaItem","Boolean","videoUrl","original_photo","list_photo","detail_photo","game","tournament","game_id","video_url","video_preview","is_live","originalPhoto","listPhoto","detailPhoto","videoPreview","HockeyGameConfig","periodsCount","FootballGameConfig","HandballGameConfig","generateArray","GameStatuses","GameResultTypes","PlayoffSettings","rounds","final_rounds","third_place_rounds","min_player_games_count","min_player_time","Playoff","_this","stages","log","teamsCount","getPlayoffStages","stagesCount","stage","playoffStage","pow","tournament_stage_id","is_official","TournamentGroup","sort","Game","scoreByPeriod","period","teamScore","competitorTeamScore","closed","competitorTeam","teamId","competitorTeamId","tournament_team_id","competitor_team","competitor_tournament_team_id","competitor_team_id","competitor_team_name","datetime","team_score","competitor_team_score","result_type","playoff_number","tournament_tour","basketball_game_config","volleyball_game_config","hockey_game_config","football_game_config","handball_game_config","score_by_period","playoff_stage","tournament_playoff_id","tournament_playoff","tournament_court","media_count","media_live_count","media","tournament_group","resultType","basketballGameConfig","volleyballGameConfig","hockeyGameConfig","footballGameConfig","handballGameConfig","tournamentPlayoff","tournamentCourt","tournamentGroup","updateItemInArray","force","checkFunction","isFunction","updatedAt","updateItemsInArray","items","forEach","addItemInArray","atEnd","addItemsInArray","reverse","deleteItemFromArray","functionToCheck","toString","TeamUserRole","Store","get","getSubject","pipe","save","appendItem","appendItems","prependItem","prependItems","updateItem","updateItems","deleteItem","dispose","complete","clearStorageData","clear","getEngine","BehaviorSubject","BaseService","store","Injectable","providedIn","ConfigService","configData","initialize","_a","Optional","Inject","TournamentTeam","gamesCount","wonGamesCount","group","final_standing","draw_games_count","last_games_count","last_games_won","missed_sum","score_points_sum","missed_points_sum","games","notifications_count","win_normal_time_games_count","lose_normal_time_games_count","win_overtime_games_count","lose_overtime_games_count","last_five_games","lastFiveGames","BasketballGameLogTypes","TeamUser","teamPlayer","role","number","TournamentDisqualification","tournament_team_user_id","date_from","date_to","matches_count","dateFrom","dateTo","LeaguePlayer","middleName","has_changes","rating","TournamentTeamUser","tournament_team","team_user","disqualified","disqualification","league_player","tournamentTeam","teamUser","leaguePlayer","BasketballStatistic","personalFouls","technicalFouls","unsportsmanlikeFouls","gameTime","tournament_team_user","month","win_lose","two_points_made","three_points_made","free_throws_made","one_points_made","two_point_attempts","three_point_attempts","free_throw_attempts","one_point_attempts","two_point_percent","three_point_percent","free_throw_percent","one_point_percent","assists","blocks","rebounds","offensive_rebounds","defensive_rebounds","steals","turnovers","personal_fouls","technical_fouls","unsportsmanlike_fouls","game_time","newbie","rank","tournamentTeamUser","BasketballGameTeamStatistic","BasketballGameStatistic","gameUserId","game_user_id","updated_at","HockeyGameLogTypes","HockeyAdvantageTypes","BasketballGameLog","active","isPointsType","two_point_made","three_point_made","free_throw_made","one_point_made","logType","isReboundType","rebound","offensive_rebound","defensive_rebound","isFoulType","personal_foul","technical_foul","unsportsmanlike_foul","getScore","compare","model","time","minutes","seconds","unique_id","log_type","is_highlight","GameUser","is_mvp","GameUserLimitationTypes","min_user_games_count","min_user_time","manual","GameUserLimitations","limitations","GameBaseApi","httpClient","configService","getUsers","gameId","toPromise","getMvp","getUsersLimitation","HttpClient","BasketballGameApi","getById","getTeamStatistic","getUserStatistic","getLogs","downloadProtocol","fileType","responseType","downloadFibaProtocol","Feedback","theme","message","files","captcha","FeedbackApi","sendFeedback","post","response","sendLeagueFeedback","leagueId","FileApi","upload","fileData","filename","width","params","HttpParams","formData","FormData","append","createZipArchive","files_1","files_1_1","FootballGameLogTypes","HockeyGameLog","_penalizedGameUserId","isScoreType","goal","shootout_goal","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","ppGoals","shGoals","evGoals","ppAssists","evAssists","shAssists","faceOffWins","faceOffLosses","shootoutAttempts","shootoutGoals","saves","goalsAgainst","shotsAgainst","round","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","block_shots","face_off_losses","face_off_wins","goals_against","safety_rate","penalty_minutes","plus_minus","HockeyStatistic","lose_games_count","pp_shots","ev_shots","sh_shots","pp_goals_percent","ev_goals_percent","sh_goals_percent","goals","shot_misses","shots_on_goal","shots_blocked","shots","goals_percent","shots_against","saves_percent","face_offs","face_off_percent","HockeyGameTeamStatistic","HockeyGameApi","format","downloadApplication","HandballGameLogTypes","FootballGameLog","penalty_goal","small_penalty_goal","FootballGameStatistic","shotMisses","shotsOnGoal","shotsBlocked","penaltyGoals","smallPenaltyGoals","totalGoals","penaltyAttempts","smallPenaltyAttempts","penaltySaves","penaltyGoalsAgainst","smallPenaltySaves","smallPenaltyGoalsAgainst","autoGoalsAgainst","penaltyShotsAgainst","smallPenaltyShotsAgainst","corners","free_kicks","penalty_goals","penalty_attempts","penalty_goals_against","penalty_saves","small_penalty_goals","small_penalty_attempts","small_penalty_goals_against","small_penalty_saves","fouls","yellow_cards","red_cards","perfect_passes","losses","outs","auto_goals","auto_goals_against","FootballStatistic","shots_on_goal_percent","total_goals","penalty_goals_percent","penalty_shots_against","penalty_saves_percent","small_penalty_goals_percent","small_penalty_shots_against","small_penalty_saves_percent","total_saves","total_goals_against","FootballGameTeamStatistic","FootballGameApi","TournamentStageStatuses","HandballGameLog","foul","yellow_card","red_card","HandballGameStatistic","penaltyShotsOnGoal","penaltyMisses","penaltyShots","penalty_misses","penalty_shots_on_goal","yellowCards","two_minute_fouls","HandballStatistic","penalty_shots","HandballGameTeamStatistic","HandballGameApi","TournamentNews","picture","text","author","GameTimelineStageItem","stage_id","playoff_stages_count","GameTimelineStages","current_tour","current_playoff_stage","LeagueNewsType","TournamentStage","VolleyballStatistic","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","receives","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","TournamentApi","tournamentId","getByAlias","getNews","getEvents","page","filters","search","tournamentTour","observe","total","headers","getTournamentStages","getPlayoff","getPlayoffGames","playoffId","playoffNumber","getGamesStages","getGames","applyGamesFilters","getTeams","getStageTeams","getTeamById","tournamentTeamId","getUserById","userId","getUserGames","tournamentUserId","getBasketballStatisticLeaders","applyStatisticLeadersFilters","getVolleyballStatisticLeaders","getHockeyStatisticLeaders","getFootballStatisticLeaders","getHandballStatisticLeaders","getBasketballStatistic","applyStatisticFilters","getVolleyballStatistic","getHockeyStatistic","getFootballStatistic","getHandballStatistic","getTournamentTeamUsers","myPermission","getTournamentTeamTournaments","getTournamentUserTournaments","tournamentTeamUserId","tournamentIds","tournamentStageId","statuses","tournamentCourtId","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","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","TeamPermissionTypes","NotificationSettings","popup","sound","browser","NotificationBaseApi","getCount","apiUrl","getList","markViewed","notificationId","markAllViewed","getNotificationSettings","updateNotificationSettings","NotificationApi","OrgNotificationApi","ReferenceApi","getCities","getSports","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","seasonId","getPlayoffs","TournamentStageApi","getGroups","stageId","UserAccess","edit","personal_data","teams","VolleyballGameLogType","UserPermission","personalData","UserApi","getCurrentUser","getAccess","updateUser","updateUserPhoto","changePassword","oldPassword","password","passwordConfirm","payload","old_password","password_confirm","changeEmail","changeEmailConfirm","token","getUserProfile","getBasketballProfile","getVolleyballProfile","updateUserProfile","userProfile","updateUserBasketballProfile","updateUserVolleyballProfile","getUserPermissions","updateUserPermission","getStatistics","getStreetballStatistics","getGameInvites","acceptGameInvite","declineGameInvite","searchUsers","setWizardShowed","wizard","put","VolleyballGameTeamStatistic","VolleyballGameStatistic","attackSpikes","attackShots","stuffBlocks","blockRebounds","excellentReceives","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","includes","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","timeout","isComboType","VolleyballGameApi","downloadProtocolLight","PublicTeamApi","PublicUserApi","getTournamentUser","getLeaguePlayer","BasketballGameLogTypeLocalization","_a$1","remove_game","two_point_attempt","three_point_attempt","free_throw_attempt","one_point_attempt","assist","block","steal","turnover","team_rebound","HockeyGameLogTypeLocalization","_a$2","shot_miss","shot_on_goal","shot_blocked","shootout_attempt","block_shot","face_off_lose","face_off_win","penalty_start","penalty_end","FootballGameLogTypeLocalization","_a$3","penalty_attempt","small_penalty_attempt","corner","free_kick","penalty_save","small_penalty_save","perfect_pass","loss","out","auto_goal","HandballGameLogTypeLocalization","_a$4","penalty_miss","penalty_shot_on_goal","two_minute_foul","OvertimeTypeLocalization","_a$5","to_score_diff","to_score_total","without_overtime","to_first_goal","to_first_goal_and_bullitts","bullitts","penalties","time_and_penalties","TeamUserRoleLocalization","_a$6","member","moderator","admin","coach","head_coach","playing_coach","manager","head_manager","captain","assistant","GameBasketballPositionLocalization","_a$7","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","VolleyballGameLogTypeLocalization","_a$8","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}\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 @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, 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';\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 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 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 photo: File;\n wizards: string[];\n city: City;\n gender: UserGender;\n isActive: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(user: User): any {\n return null;\n }\n\n get fullName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get shortName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get initials(): string {\n return [this.lastName, this.firstName].filter(s => s).map(s => s.substr(0, 1)).join('');\n }\n\n get age(): number {\n if (!this.birthDate) {\n return null;\n }\n const diff = (new Date()).getTime() - this.birthDate.getTime();\n return Math.floor(diff / (365 * 86400 * 1000));\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, enumField, DateField } from './util';\nimport { File } from './file';\n\nexport enum TournamentSeasonStatuses {\n open,\n in_progress,\n closed,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n alias: 'alias',\n logo: 'logo',\n cover: 'cover',\n preview_image: 'previewImage',\n status: 'status',\n start_date: 'startDate',\n closed_date: 'closedDate',\n tournaments: 'tournaments',\n },\n relation: {\n logo: File,\n cover: File,\n previewImage: File,\n status: enumField(TournamentSeasonStatuses),\n startDate: DateField,\n closedDate: DateField,\n }\n})\nexport class TournamentSeason extends BaseModel {\n id: number;\n name: string;\n alias: string;\n logo: File;\n cover: File;\n previewImage: File;\n status: TournamentSeasonStatuses;\n startDate: Date;\n closedDate: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateField } from './util';\nimport { File } from './file';\nimport { Sport } from './sport';\nimport { User } from './user';\nimport { City } from './city';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n sport: 'sport',\n logo: 'logo',\n owner: 'owner',\n city: 'city',\n users_count: 'usersCount',\n won_games_count: 'wonGamesCount',\n games_count: 'gamesCount',\n score_sum: 'scoreSum',\n closest_game_datetime: 'closestGameDatetime',\n },\n relation: {\n sport: Sport,\n logo: File,\n owner: User,\n city: City,\n closestGameDatetime: DateField,\n }\n})\nexport class Team extends BaseModel {\n id: number;\n name: string;\n sport: Sport;\n logo: File;\n owner: User;\n city: City;\n usersCount: number;\n wonGamesCount: number;\n gamesCount: number;\n scoreSum: number;\n closestGameDatetime: Date;\n\n getEmptyLogoClass(): string {\n const classList = ['empty-logo'];\n if (this.sport.isBasketball()) {\n classList.push('empty-logo-basketball');\n }\n if (this.sport.isVolleyball()) {\n classList.push('empty-logo-volleyball');\n }\n if (this.sport.isHockey()) {\n classList.push('empty-logo-hockey');\n }\n if (this.sport.isFootball()) {\n classList.push('empty-logo-football');\n }\n if (this.sport.isHandball()) {\n classList.push('empty-logo-handball');\n }\n return classList.join(' ');\n }\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(team: Team): any {\n return null;\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\nimport { User } from './user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n owner_id: 'ownerId',\n owner: 'owner',\n },\n relation: {\n owner: User,\n }\n})\nexport class Organization extends BaseModel {\n id: number;\n ownerId: number;\n owner: User;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField } from './util';\nimport { Organization } from './organization';\nimport { File } from './file';\nimport { Sport } from './sport';\n\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n logo: 'logo',\n contact_email: 'contactEmail',\n contact_phone: 'contactPhone',\n name: 'name',\n alias: 'alias',\n sport: 'sport',\n description: 'description',\n social_links: 'socialLinks',\n links: 'links',\n organization: 'organization',\n tournaments_count: 'tournamentsCount',\n documents_count: 'documentsCount',\n closest_game_datetime: 'closestGameDatetime',\n cover: 'cover',\n about: 'about',\n },\n relation: {\n organization: Organization,\n logo: File,\n cover: File,\n sport: Sport,\n }\n})\nexport class League extends BaseModel {\n id: number;\n logo: File;\n contactEmail: string;\n contactPhone: string;\n name: string;\n alias: string;\n sport: Sport;\n description: string;\n socialLinks: string[];\n links: string[];\n organization: Organization;\n tournamentsCount: number;\n documentsCount: number;\n closestGameDatetime: string;\n cover: File;\n about: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get vkLink(): string {\n return this.socialLinks.find(link => link.indexOf('vk.com/') > -1);\n }\n\n get fbLink(): string {\n return this.socialLinks.find(link => link.indexOf('facebook.com/') > -1);\n }\n\n get instaLink(): string {\n return this.socialLinks.find(link => link.indexOf('instagram.com/') > -1);\n }\n\n get youtubeLink(): string {\n return this.socialLinks.find(link => link.indexOf('youtube.com/') > -1);\n }\n\n get telegramLink(): string {\n return this.socialLinks.find(link =>\n link.substr(0, 13) === 'https://t.me/' ||\n link.substr(0, 17) === 'https://www.t.me/'\n );\n }\n\n get tiktokLink(): string {\n return this.socialLinks.find(link => link.indexOf('tiktok.com/') > -1);\n }\n}\n","import { BaseModel, enumField, ModelInstance, DateTimeField, ToBackHook, ToFrontHook } from './util';\nimport { City } from './city';\nimport { File } from './file';\nimport { League } from './league';\nimport { Sport } from './sport';\nimport { Team } from './team';\nimport { TournamentSeason } from './tournament-season';\n\nexport enum TournamentTypes {\n group = 'group',\n elimination = 'elimination',\n fiba = 'fiba'\n}\n\nexport enum TournamentStatuses {\n open,\n in_progress,\n closed,\n}\n\nexport enum TournamentGender {\n male= 1,\n female,\n all\n}\n\nexport enum BasketballStatisticTypes {\n standard = 1,\n light,\n advanced\n}\n\nexport enum VolleyballStatisticTypes {\n standard = 1,\n light,\n advanced\n}\n\nexport enum GameTimeTypes {\n clean = 1,\n dirty,\n}\n\nexport enum OvertimeTypes {\n to_score_total = 1,\n to_score_diff,\n time,\n without_overtime,\n to_first_goal,\n to_first_goal_and_bullitts,\n bullitts,\n penalties,\n time_and_penalties\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n gender: 'gender',\n age_from: 'ageFrom',\n age_to: 'ageTo',\n max_team_players: 'maxTeamPlayers',\n max_game_players: 'maxGamePlayers',\n type: 'type',\n tours_count: 'toursCount',\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n overtime_score: 'overtimeScore',\n game_type: 'gameType',\n timeout_count: 'timeoutCount',\n timeout_time: 'timeoutTime',\n substitute_count: 'substituteCount',\n game_up_to_score: 'gameUpToScore',\n volleyball_score_in_set: 'volleyballScoreInSet',\n volleyball_score_in_last_set: 'volleyballScoreInLastSet',\n manage_team_application: 'manageTeamApplication',\n recruitment_is_open: 'recruitmentIsOpen',\n transfer_is_open: 'transferIsOpen',\n basketball_statistic_type: 'basketballStatisticType',\n volleyball_statistic_type: 'volleyballStatisticType',\n shot_clock_enabled: 'shotClockEnabled',\n game_time_type: 'gameTimeType',\n with_result_table: 'withResultTable'\n },\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\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 team: 'team',\n points: 'points',\n },\n relation: {\n team: Team,\n }\n})\nexport class TournamentTeamWinner extends BaseModel {\n id: number;\n teamId: number;\n tournamentId: number;\n team: Team;\n points: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n alias: 'alias',\n logo: 'logo',\n cover: 'cover',\n preview_image: 'previewImage',\n city: 'city',\n sport: 'sport',\n location: 'location',\n description: 'description',\n date: 'date',\n price: 'price',\n regulation_files: 'regulationFiles',\n settings: 'settings',\n league: 'league',\n teams_count: 'teamsCount',\n closest_game_datetime: 'closestGameDatetime',\n status: 'status',\n team_winner: 'teamWinner',\n team_second: 'teamSecond',\n team_third: 'teamThird',\n season: 'season',\n season_id: 'seasonId',\n },\n relation: {\n logo: File,\n cover: File,\n previewImage: File,\n city: City,\n sport: Sport,\n regulationFile: File,\n settings: TournamentSettings,\n date: DateTimeField,\n league: League,\n status: enumField(TournamentStatuses),\n teamWinner: TournamentTeamWinner,\n teamSecond: TournamentTeamWinner,\n teamThird: TournamentTeamWinner,\n season: TournamentSeason,\n }\n})\nexport class Tournament extends BaseModel {\n id: number;\n name: string;\n alias: string;\n logo: File;\n cover: File;\n previewImage: File;\n city: City;\n sport: Sport;\n location: string;\n description: string;\n date: Date;\n price: number;\n regulationFiles: File[];\n settings: TournamentSettings;\n league: League;\n teamsCount: number;\n closestGameDatetime: string;\n status: TournamentStatuses;\n teamWinner: TournamentTeamWinner;\n teamSecond: TournamentTeamWinner;\n teamThird: TournamentTeamWinner;\n season: TournamentSeason;\n seasonId: number;\n\n getEmptyLogoClass(): string {\n const classList = ['empty-logo'];\n if (this.sport.isBasketball()) {\n classList.push('empty-logo-basketball');\n }\n if (this.sport.isVolleyball()) {\n classList.push('empty-logo-volleyball');\n }\n if (this.sport.isHockey()) {\n classList.push('empty-logo-hockey');\n }\n if (this.sport.isFootball()) {\n classList.push('empty-logo-football');\n }\n return classList.join(' ');\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { VolleyballStatisticTypes } from './tournament';\n\nexport enum VolleyballGameTypes {\n best_of_five = 1,\n best_of_three\n}\n\n@ModelInstance({\n mappingFields: {\n game_type: 'gameType',\n timeout_count: 'timeoutCount',\n timeout_time: 'timeoutTime',\n substitute_count: 'substituteCount',\n score_in_set: 'scoreInSet',\n score_in_last_set: 'scoreInLastSet',\n statistic_type: 'statisticType'\n },\n relation: {\n gameType: enumField(VolleyballGameTypes),\n statisticType: enumField(VolleyballStatisticTypes),\n }\n})\nexport class VolleyballGameConfig extends BaseModel {\n gameType: VolleyballGameTypes;\n timeoutCount: number;\n timeoutTime: number;\n substituteCount: number;\n scoreInSet: number;\n scoreInLastSet: number;\n statisticType: VolleyballStatisticTypes;\n\n get setsCount(): number {\n return this.gameType === VolleyballGameTypes.best_of_three ? 3 : 5;\n }\n\n getSetMaxScore(set: number) {\n return set === this.setsCount ? this.scoreInLastSet : this.scoreInSet;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { BasketballStatisticTypes, GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n game_up_to_score: 'gameUpToScore',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n overtime_score: 'overtimeScore',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n statistic_type: 'statisticType',\n shot_clock_enabled: 'shotClockEnabled',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n statisticType: enumField(BasketballStatisticTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class BasketballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n gameUpToScore: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n overtimeScore: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n statisticType: BasketballStatisticTypes;\n shotClockEnabled: boolean;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { generateArray } from '../utils/array';\n\nexport enum PlayoffTypes {\n double_elimination = 'double_elimination',\n elimination = 'elimination'\n}\n\n@ModelInstance({\n mappingFields: {\n rounds: 'rounds',\n final_rounds: 'finalRounds',\n third_place_rounds: 'thirdPlaceRounds',\n teams_count: 'teamsCount',\n type: 'type',\n min_player_games_count: 'minPlayerGamesCount',\n min_player_time: 'minPlayerTime',\n },\n relation: {\n type: enumField(PlayoffTypes)\n }\n})\nexport class PlayoffSettings extends BaseModel {\n rounds: number;\n finalRounds: number;\n thirdPlaceRounds: number;\n teamsCount: number;\n type: PlayoffTypes;\n minPlayerGamesCount: number;\n minPlayerTime: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n settings: 'settings',\n tournament_id: 'tournamentId',\n tournament_stage_id: 'tournamentStageId',\n is_official: 'isOfficial'\n },\n relation: {\n settings: PlayoffSettings\n }\n})\nexport class Playoff extends BaseModel {\n id: number;\n name: string;\n settings: PlayoffSettings;\n tournamentId: number;\n tournamentStageId: number;\n isOfficial: boolean;\n private stages: {title: string, value: number}[] = [];\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get stagesCount(): number {\n return Math.log(this.settings.teamsCount) / Math.log(2);\n }\n\n getPlayoffStages() {\n if (this.stages.length === 0 && this.settings.teamsCount) {\n const stagesCount = Math.log(this.settings.teamsCount) / Math.log(2);\n this.stages = generateArray(stagesCount).map(stage => {\n const playoffStage = this.settings.teamsCount / 2 ** stage;\n let title = '';\n if (playoffStage === 1) {\n title = 'Финал';\n } else {\n title = `1 / ${playoffStage}`;\n }\n return {\n value: stage,\n title\n };\n });\n }\n return this.stages;\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n address: 'address',\n league_id: 'leagueId'\n }\n})\nexport class LeagueCourt extends BaseModel {\n id: number;\n name: string;\n address: string;\n leagueId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n original_photo: 'originalPhoto',\n list_photo: 'listPhoto',\n detail_photo: 'detailPhoto',\n game: 'game',\n tournament: 'tournament',\n game_id: 'gameId',\n tournament_id: 'tournament_id',\n video_url: 'videoUrl',\n video_preview: 'videoPreview',\n is_live: 'isLive',\n },\n relation: {\n originalPhoto: File,\n listPhoto: File,\n detailPhoto: File,\n videoPreview: File\n }\n})\nexport class MediaItem extends BaseModel {\n id: number;\n originalPhoto: File;\n listPhoto: File;\n detailPhoto: File;\n gameId: number;\n tournamentId: number;\n videoUrl: string;\n videoPreview: File;\n isLive: boolean;\n\n get isVideo(): boolean {\n return Boolean(this.videoUrl);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class HockeyGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get overtimePeriod(): number {\n return this.periodsCount + 1;\n }\n\n get bullitsPeriod(): number {\n return this.periodsCount + 2;\n }\n\n get playoffBullitsPeriod(): number {\n return this.periodsCount + 3;\n }\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class FootballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class HandballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","export function generateArray(length: number): number[] {\n if (length <= 0) {\n return [];\n }\n return Array.apply(null, Array(length)).map((_, i) => i + 1);\n}\n\nexport function getArrayChunks(array: any[], length: number): any[][] {\n const chunks = [];\n const chunkLength = Math.ceil(array.length / length);\n if (chunkLength === 0) {\n return [array];\n }\n for (let i = 0; i < chunkLength; i++) {\n chunks.push(array.slice(i * length, (i + 1) * length));\n }\n return chunks;\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField, listField } from './util';\nimport { Team } from './team';\nimport { BasketballGameConfig } from './basketball-game-config';\nimport { VolleyballGameConfig } from './volleyball-game-config';\nimport { LeagueCourt } from './league-court';\nimport { MediaItem } from './media-item';\nimport { HockeyGameConfig } from './hockey-game-config';\nimport { Tournament } from './tournament';\nimport { FootballGameConfig } from './football-game-config';\nimport { HandballGameConfig } from './handball-game-config';\nimport { Playoff } from './playoff';\nimport { TournamentGroup } from './tournament-group';\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 status: 'status',\n team: 'team',\n tournament_team_id: 'tournamentTeamId',\n team_id: 'teamId',\n competitor_team: 'competitorTeam',\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 basketball_game_config: 'basketballGameConfig',\n volleyball_game_config: 'volleyballGameConfig',\n hockey_game_config: 'hockeyGameConfig',\n football_game_config: 'footballGameConfig',\n handball_game_config: 'handballGameConfig',\n score_by_period: 'scoreByPeriod',\n playoff_stage: 'playoffStage',\n tournament_stage_id: 'tournamentStageId',\n tournament_playoff_id: 'tournamentPlayoffId',\n tournament_playoff: 'tournamentPlayoff',\n tournament_court: 'tournamentCourt',\n media_count: 'mediaCount',\n media_live_count: 'mediaLiveCount',\n media: 'media',\n tournament: 'tournament',\n tournament_group: 'tournamentGroup',\n },\n relation: {\n status: enumField(GameStatuses),\n team: Team,\n competitorTeam: Team,\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 id: number;\n status: GameStatuses;\n team: Team;\n teamId: number;\n tournamentTeamId: number;\n competitorTeam: Team;\n competitorTeamId: number;\n competitorTournamentTeamId: number;\n competitorTeamName: string;\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 basketballGameConfig: BasketballGameConfig;\n volleyballGameConfig: VolleyballGameConfig;\n hockeyGameConfig: HockeyGameConfig;\n footballGameConfig: FootballGameConfig;\n handballGameConfig: HandballGameConfig;\n scoreByPeriod: any;\n playoffStage: string;\n tournamentStageId: number;\n tournamentPlayoffId: number;\n tournamentPlayoff: Playoff;\n tournamentCourt: LeagueCourt;\n mediaCount: number;\n mediaLiveCount: number;\n media: MediaItem[];\n tournament: Tournament;\n tournamentGroup: TournamentGroup;\n\n get scoreByPeriodList(): {period: number, teamScore: number, competitorTeamScore: number}[] {\n if (!this.scoreByPeriod) {\n return [];\n }\n return Object.keys(this.scoreByPeriod).map(period => ({\n period: +period,\n teamScore: this.scoreByPeriod[period][0],\n competitorTeamScore: this.scoreByPeriod[period][1]\n }));\n }\n\n get isClosed(): boolean {\n return this.status === GameStatuses.closed;\n }\n\n get isTeamWon() {\n return this.teamScore > this.competitorTeamScore;\n }\n\n get isCompetitorTeamWon() {\n return this.competitorTeamScore > this.teamScore;\n }\n\n get teamWinnerId() {\n if (this.status !== GameStatuses.closed) {\n return null;\n }\n if (this.teamScore === this.competitorTeamScore) {\n return null;\n }\n if (this.team.id) {\n return this.teamScore > this.competitorTeamScore ? this.team.id : this.competitorTeam.id;\n } else {\n return this.teamScore > this.competitorTeamScore ? this.teamId : this.competitorTeamId;\n }\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { TournamentTeam } from './tournament-team';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n sort: 'sort',\n tournament_stage_id: 'tournamentStageId'\n }\n})\nexport class TournamentGroup extends BaseModel {\n id: number;\n name: string;\n sort: number;\n tournamentStageId: number;\n teams: TournamentTeam[];\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","export function updateItemInArray(data: any[], item: any, force = false, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return data;\n }\n return data.map(v => {\n if (checkFunction && isFunction(checkFunction)) {\n if (!checkFunction(v)) {\n return v;\n }\n } else if (v.id !== item.id) {\n return v;\n }\n if (v.updatedAt && item.updatedAt && !force) {\n return v.updatedAt > item.updatedAt ? v : item;\n }\n return item;\n });\n}\n\nexport function updateItemsInArray(data: any[], items: any[], force: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n items.forEach(item => {\n data = updateItemInArray(data, item, force, checkFunction);\n });\n return data;\n}\n\nexport function patchItemInArray(data: any[], item: any, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return data;\n }\n return data.map(v => {\n if (checkFunction && isFunction(checkFunction)) {\n if (!checkFunction(v)) {\n return v;\n }\n } else if (v.id !== item.id) {\n return v;\n }\n return Object.assign(v, item);\n });\n}\n\nexport function addItemInArray(data: any[], item: any, atEnd: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return [item];\n }\n if (data.find(i => isFunction(checkFunction) ? checkFunction(i) : i.id === item.id)) {\n return data;\n }\n\n return atEnd\n ? [...data, item]\n : [item, ...data];\n}\n\nexport function addItemsInArray(data: any[], items: any[], atEnd: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n (!atEnd\n ? Object.assign([], items).reverse()\n : items\n ).forEach(item => {\n data = addItemInArray(data, item, atEnd, checkFunction);\n });\n return data;\n}\n\nexport function deleteItemFromArray(data: any[], item: any): any[] {\n if (!Array.isArray(data)) {\n return [];\n }\n if (isFunction(item)) {\n return data.filter(i => !item(i));\n } else {\n return data.filter(v => v.id !== item.id);\n }\n}\n\nfunction isFunction(functionToCheck) {\n return functionToCheck && {}.toString.call(functionToCheck) === '[object Function]';\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { User } from './user';\nimport { Team } from './team';\n\nexport enum TeamUserRole {\n member = 1,\n moderator,\n admin,\n coach,\n head_coach,\n playing_coach,\n manager,\n head_manager,\n captain,\n assistant,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n user: 'user',\n role: 'role',\n number: 'number',\n team: 'team',\n },\n relation: {\n user: User,\n team: Team,\n role: enumField(TeamUserRole)\n }\n})\nexport class TeamUser extends BaseModel {\n id: number;\n teamId: number;\n user: User;\n team: Team;\n number: number;\n role: TeamUserRole;\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(teamPlayer: TeamUser): any {\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { addItemInArray, addItemsInArray, deleteItemFromArray, updateItemInArray, updateItemsInArray } from '../utils/data';\nimport { StorageEngine } from './storage-engine';\n\nexport class Store {\n private data: {[key: string]: BehaviorSubject<any>} = {};\n\n constructor(private engine?: StorageEngine) {\n }\n\n get(key: string): Observable<any> {\n return this.getSubject(key).pipe(filter(item => item !== undefined));\n }\n\n value(key: string): any {\n return this.getSubject(key).value;\n }\n\n save(key: string, value: any): void {\n this.getSubject(key).next(value);\n if (this.engine) {\n this.engine.save(key, value);\n }\n }\n\n appendItem(key: string, value: any, checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemInArray(this.value(key) || [], value, true, checkFunction));\n }\n\n appendItems(key: string, value: any[], checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemsInArray(this.value(key) || [], value, true));\n }\n\n prependItem(key: string, value: any, checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemInArray(this.value(key) || [], value, false, checkFunction));\n }\n\n prependItems(key: string, value: any[], checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemsInArray(this.value(key) || [], value, false, checkFunction));\n }\n\n updateItem(key: string, value: any, force?: boolean, checkFunction?: (item: any) => boolean): void {\n this.save(key, updateItemInArray(this.value(key) || [], value, force, checkFunction));\n }\n\n updateItems(key: string, value: any, force?: boolean, checkFunction?: (item: any) => boolean): void {\n this.save(key, updateItemsInArray(this.value(key) || [], value, force, checkFunction));\n }\n\n deleteItem(key: string, value: any): void {\n this.save(key, deleteItemFromArray(this.value(key) || [], value));\n }\n\n dispose(): void {\n for (const key of Object.keys(this.data)) {\n this.data[key].complete();\n delete this.data[key];\n }\n }\n\n clearStorageData(): void {\n if (this.engine) {\n this.engine.clear();\n }\n }\n\n getEngine(): StorageEngine {\n return this.engine;\n }\n\n private getSubject(key: string): BehaviorSubject<any> {\n if (!this.data[key]) {\n this.data[key] = new BehaviorSubject<any>(this.engine ? this.engine.get(key) : undefined);\n }\n return this.data[key];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '../storage/store';\n\n@Injectable({providedIn: 'root'})\nexport class BaseService {\n protected store = new Store();\n\n dispose(): void {\n this.store.dispose();\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { BaseService } from './base.service';\n\nconst CONFIG_STORE_KEY = 'config';\n\nexport const CONFIG_DATA = 'mtg-core-config-data';\n\n@Injectable({providedIn: 'root'})\nexport class ConfigService extends BaseService {\n constructor(\n @Optional() @Inject(CONFIG_DATA) private configData: any\n ) {\n super();\n if (configData) {\n this.initialize(configData);\n }\n }\n\n get config$() {\n return this.store.get(CONFIG_STORE_KEY);\n }\n\n get config() {\n return this.store.value(CONFIG_STORE_KEY) || {};\n }\n\n initialize(data: any): void {\n this.store.save(CONFIG_STORE_KEY, data);\n }\n\n set(key: string, value: any): void {\n this.store.save(CONFIG_STORE_KEY, {\n ...this.config,\n [key]: value\n });\n }\n\n get(key: string): any {\n return this.store.value(CONFIG_STORE_KEY) && this.store.value(CONFIG_STORE_KEY)[key];\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\nimport { TournamentGroup } from './tournament-group';\nimport { Game } from './game';\nimport { Tournament } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n tournament_id: 'tournamentId',\n tournament: 'tournament',\n team: 'team',\n group: 'group',\n final_standing: 'finalStanding',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n draw_games_count: 'drawGamesCount',\n last_games_count: 'lastGamesCount',\n last_games_won: 'lastGamesWon',\n score_sum: 'scoreSum',\n missed_sum: 'missedSum',\n score_points_sum: 'scorePointsSum',\n missed_points_sum: 'missedPointsSum',\n points: 'points',\n users_count: 'usersCount',\n games: 'games',\n notifications_count: 'notificationsCount',\n win_normal_time_games_count: 'winNormalTimeGamesCount',\n lose_normal_time_games_count: 'loseNormalTimeGamesCount',\n win_overtime_games_count: 'winOvertimeGamesCount',\n lose_overtime_games_count: 'loseOvertimeGamesCount',\n last_five_games: 'lastFiveGames'\n },\n relation: {\n 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 teamId: number;\n tournamentId: number;\n tournament: Tournament;\n team: Team;\n group: TournamentGroup;\n finalStanding: number;\n gamesCount: number;\n wonGamesCount: number;\n drawGamesCount: number;\n lastGamesCount: number;\n lastGamesWon: number;\n scoreSum: number;\n missedSum: number;\n scorePointsSum: number;\n missedPointsSum: number;\n points: number;\n usersCount: number;\n games: Game[];\n notificationsCount: number;\n winNormalTimeGamesCount: number;\n loseNormalTimeGamesCount: number;\n winOvertimeGamesCount: number;\n loseOvertimeGamesCount: number;\n lastFiveGames: Game[];\n\n get gamesWonPercent(): number {\n if (!this.gamesCount) {\n return 0;\n }\n return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { enumField, ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateTimeField } from './util';\nimport { GameUser } from './game-user';\nimport { GameLogBase } from './game-log-base';\n\nexport enum BasketballGameLogTypes {\n enter_game = 1,\n exit_game,\n remove_game,\n two_point_made,\n three_point_made,\n free_throw_made,\n two_point_attempt,\n three_point_attempt,\n free_throw_attempt,\n assist,\n block,\n rebound,\n offensive_rebound,\n defensive_rebound,\n steal,\n turnover,\n personal_foul,\n technical_foul,\n unsportsmanlike_foul,\n one_point_attempt,\n one_point_made,\n timeout,\n team_rebound,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(BasketballGameLogTypes),\n }\n})\nexport class BasketballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: BasketballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n combined: BasketballGameLog;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n\n isPointsType() {\n return [\n BasketballGameLogTypes.two_point_made,\n BasketballGameLogTypes.three_point_made,\n BasketballGameLogTypes.free_throw_made,\n BasketballGameLogTypes.one_point_made,\n ].indexOf(this.logType) > -1;\n }\n\n isReboundType() {\n return [\n BasketballGameLogTypes.rebound,\n BasketballGameLogTypes.offensive_rebound,\n BasketballGameLogTypes.defensive_rebound\n ].indexOf(this.logType) > -1;\n }\n\n isFoulType() {\n return [\n BasketballGameLogTypes.personal_foul,\n BasketballGameLogTypes.technical_foul,\n BasketballGameLogTypes.unsportsmanlike_foul\n ].indexOf(this.logType) > -1;\n }\n\n getScore() {\n const scoreMapping = {\n [BasketballGameLogTypes.one_point_made]: 1,\n [BasketballGameLogTypes.free_throw_made]: 1,\n [BasketballGameLogTypes.two_point_made]: 2,\n [BasketballGameLogTypes.three_point_made]: 3\n };\n return scoreMapping[this.logType];\n }\n\n compare(model: BasketballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team_user_id: 'tournamentTeamUserId',\n date_from: 'dateFrom',\n date_to: 'dateTo',\n matches_count: 'matchesCount',\n },\n relation: {\n dateFrom: DateField,\n dateTo: DateField,\n }\n})\nexport class TournamentDisqualification extends BaseModel {\n id: number;\n tournamentTeamUserId: number;\n dateFrom: Date;\n dateTo: Date;\n matchesCount: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { File } from './file';\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 photo: 'photo',\n has_changes: 'hasChanges',\n rating: 'rating'\n },\n relation: {\n photo: File,\n }\n})\nexport class LeaguePlayer extends BaseModel {\n\n id: number;\n userId: number;\n leagueId: number;\n firstName: string;\n lastName: string;\n middleName: string;\n photo: File;\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 @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';\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 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 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 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 @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}\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].indexOf(this.logType) > -1;\n }\n\n isPenaltyType(): boolean {\n return [\n HockeyGameLogTypes.minor_penalty, HockeyGameLogTypes.major_penalty,\n HockeyGameLogTypes.misconduct_penalty, HockeyGameLogTypes.game_misconduct_penalty,\n HockeyGameLogTypes.penalty_shot, HockeyGameLogTypes.match_penalty\n ].indexOf(this.logType) > -1;\n }\n\n isAfter(log: HockeyGameLog): boolean {\n if (this.time === log.time && this.period === log.period) {\n return this.id > log.id;\n }\n if (this.period === log.period) {\n return this.time > log.time;\n }\n return this.period > log.period;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { TeamUser } from './team-user';\nimport { TournamentTeamUser } from './tournament-team-user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n game_id: 'gameId',\n team_user: 'teamUser',\n tournament_team_user: 'tournamentTeamUser',\n is_mvp: 'isMvp',\n updated_at: 'updatedAt'\n },\n relation: {\n teamUser: TeamUser,\n tournamentTeamUser: TournamentTeamUser,\n updatedAt: DateTimeField,\n }\n})\nexport class GameUser extends BaseModel {\n id: number;\n gameId: number;\n teamUser: TeamUser;\n tournamentTeamUser: TournamentTeamUser;\n isMvp: boolean;\n updatedAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField, listField } from './util';\n\ninterface LimitationValue {\n current: number;\n required: number;\n}\n\n@ModelInstance({\n mappingFields: {\n min_user_games_count: 'minUserGamesCount',\n min_user_time: 'minUserTime',\n manual: 'manual',\n },\n})\nexport class GameUserLimitationTypes extends BaseModel {\n minUserGamesCount: LimitationValue;\n minUserTime: LimitationValue;\n manual: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(data: any): any {\n }\n}\n\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user_id: 'tournamentTeamUserId',\n limitations: 'limitations'\n },\n relation: {\n limitations: GameUserLimitationTypes\n }\n})\nexport class GameUserLimitations extends BaseModel {\n tournamentTeamUserId: number;\n limitations: GameUserLimitationTypes;\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(data: any): any {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { GameUser } from '../models/game-user';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\nimport { GameUserLimitations } from '../models/game-user-limitation';\n\n@Injectable({providedIn: 'root'})\nexport class GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService,\n ) {\n }\n\n async getUsers(gameId: number): Promise<GameUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/users/`).pipe(\n map(result => GameUser.toFront(result))\n ).toPromise();\n }\n\n async getMvp(gameId: number): Promise<GameUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/mvp/`).pipe(\n map(result => GameUser.toFront(result))\n ).toPromise();\n }\n\n async getUsersLimitation(gameId: number): Promise<GameUserLimitations[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/users_limitation/`).pipe(\n map(result => GameUserLimitations.toFront(result))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { BasketballGameTeamStatistic } from '../models/basketball-game-team-statistic';\nimport { BasketballGameStatistic } from '../models/basketball-game-statistic';\nimport { BasketballGameLog } from '../models/basketball-game-log';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class BasketballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<BasketballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/team_statistic/`).pipe(\n map(result => BasketballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<BasketballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/user_statistic/`).pipe(\n map(result => BasketballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<BasketballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/logs/`).pipe(\n map(result => BasketballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, fileType: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/game_protocol/?file_type=${fileType}`,\n {responseType: 'blob'}\n )\n .toPromise();\n }\n\n async downloadFibaProtocol(gameId: number, fileType: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/game_protocol_fiba/?file_type=${fileType}`,\n {responseType: 'blob'}\n )\n .toPromise();\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n theme: 'theme',\n message: 'message',\n files: 'files',\n email: 'email',\n captcha: 'captcha',\n },\n relation: {\n files: File\n }\n})\nexport class Feedback {\n id: number;\n theme: string;\n message: string;\n email: string;\n captcha: string;\n files: File[];\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(value: any): any {\n return null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Feedback } from '../models/feedback';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class FeedbackApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async sendFeedback(data: any): Promise<Feedback> {\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/feedback/`, Feedback.toBack(data))\n .pipe(map(response => Feedback.toFront(response)))\n .toPromise();\n }\n\n async sendLeagueFeedback(leagueId: number, data: any): Promise<Feedback> {\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/feedback/`, Feedback.toBack(data))\n .pipe(map(response => Feedback.toFront(response)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { map } from 'rxjs/operators';\nimport { File } from '../models/file';\n\n@Injectable({providedIn: 'root'})\nexport class FileApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async upload(fileData: any, filename?: string, width?: number, height?: number): Promise<File> {\n let params = new HttpParams();\n if (width && height) {\n params = params.set('width', width.toString()).set('height', height.toString());\n }\n\n const formData = new FormData();\n formData.append('file', fileData, filename);\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/file/`, formData, {params})\n .pipe(map(data => File.toFront(data)))\n .toPromise();\n }\n\n async createZipArchive(files: {file: any, filename: string}[]): Promise<any> {\n const formData = new FormData();\n for (const file of files) {\n formData.append('files', file.file, file.filename);\n }\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/file/zip_archive/`, formData, {responseType: 'blob'})\n .toPromise();\n }\n}\n","import { enumField, ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateTimeField, penaltyTypeField } from './util';\nimport { GameUser } from './game-user';\nimport { GameLogBase } from './game-log-base';\n\nexport enum FootballGameLogTypes {\n enter_game = 1,\n exit_game,\n shot_miss,\n shot_on_goal,\n shot_blocked,\n goal,\n penalty_attempt,\n penalty_goal,\n penalty_save,\n small_penalty_attempt,\n small_penalty_goal,\n small_penalty_save,\n assist,\n block_shot,\n corner,\n free_kick,\n foul,\n save,\n yellow_card,\n red_card,\n perfect_pass,\n loss,\n steal,\n out,\n timeout,\n auto_goal,\n}\n\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n is_goalie: 'isGoalie',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(FootballGameLogTypes)\n }\n})\nexport class FootballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: FootballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n isGoalie: boolean;\n\n compare(model: FootballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n isScoreType(): boolean {\n return [FootballGameLogTypes.goal, FootballGameLogTypes.penalty_goal, FootballGameLogTypes.small_penalty_goal].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 block_shots: 'blockShots',\n face_off_losses: 'faceOffLosses',\n face_off_wins: 'faceOffWins',\n saves: 'saves',\n goals_against: 'goalsAgainst',\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 blockShots: number;\n faceOffLosses: number;\n faceOffWins: number;\n saves: number;\n goalsAgainst: 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;\n }\n\n get goals(): number {\n return (this.ppGoals || 0) + (this.shGoals || 0) + (this.evGoals || 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 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 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';\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 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 sh_goals: 'shGoals',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n shots: 'shots',\n goals_percent: 'goalsPercent',\n shots_against: 'shotsAgainst',\n saves_percent: 'savesPercent',\n pp_assists: 'ppAssists',\n ev_assists: 'evAssists',\n sh_assists: 'shAssists',\n shootout_attempts: 'shootoutAttempts',\n shootout_goals: 'shootoutGoals',\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 goals_against: 'goalsAgainst',\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 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 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 shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n shots: number;\n goalsPercent: number;\n ppAssists: number;\n evAssists: number;\n shAssists: number;\n shootoutAttempts: number;\n shootoutGoals: number;\n blockShots: number;\n faceOffLosses: number;\n faceOffWins: number;\n faceOffs: number;\n faceOffPercent: number;\n savesPercent: number;\n saves: number;\n shotsAgainst: number;\n goalsAgainst: 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 @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { HockeyStatistic } from './hockey-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: HockeyStatistic,\n competitorTeam: HockeyStatistic\n }\n})\nexport class HockeyGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: HockeyStatistic;\n competitorTeam: HockeyStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { HockeyGameLog } from '../models/hockey-game-log';\nimport { HockeyGameStatistic } from '../models/hockey-game-statistic';\nimport { HockeyGameTeamStatistic } from '../models/hockey-game-team-statistic';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class HockeyGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<HockeyGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/team_statistic/`).pipe(\n map(result => HockeyGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<HockeyGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/user_statistic/`).pipe(\n map(result => HockeyGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<HockeyGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/logs/`).pipe(\n map(result => HockeyGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadApplication(gameId: number, format: 'pdf' | 'xlsx' | 'html', type: 'game_user'|'tournament_user'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/game_application_file/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { GameLogBase } from './game-log-base';\nimport { GameUser } from './game-user';\n\nexport enum HandballGameLogTypes {\n enter_game = 1,\n exit_game,\n shot_miss,\n shot_on_goal,\n shot_blocked,\n goal,\n assist,\n penalty_miss,\n penalty_shot_on_goal,\n penalty_goal,\n save,\n penalty_save,\n foul,\n yellow_card,\n red_card,\n two_minute_foul,\n turnover,\n steal,\n block_shot,\n timeout\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n is_goalie: 'isGoalie',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(HandballGameLogTypes)\n }\n})\nexport class HandballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: HandballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n isGoalie: boolean;\n\n compare(model: HandballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n isScoreType(): boolean {\n return [HandballGameLogTypes.goal, HandballGameLogTypes.penalty_goal].indexOf(this.logType) > -1;\n }\n\n isAfter(log: HandballGameLog): boolean {\n if (this.time === log.time && this.period === log.period) {\n return this.id > log.id;\n }\n if (this.period === log.period) {\n return this.time > log.time;\n }\n return this.period > log.period;\n }\n\n isFoulType(): boolean {\n return [HandballGameLogTypes.foul, HandballGameLogTypes.yellow_card, HandballGameLogTypes.red_card].indexOf(this.logType) > -1;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n updated_at: 'updatedAt',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n goals: 'goals',\n assists: 'assists',\n corners: 'corners',\n free_kicks: 'freeKicks',\n penalty_goals: 'penaltyGoals',\n penalty_attempts: 'penaltyAttempts',\n penalty_goals_against: 'penaltyGoalsAgainst',\n penalty_saves: 'penaltySaves',\n small_penalty_goals: 'smallPenaltyGoals',\n small_penalty_attempts: 'smallPenaltyAttempts',\n small_penalty_goals_against: 'smallPenaltyGoalsAgainst',\n small_penalty_saves: 'smallPenaltySaves',\n saves: 'saves',\n goals_against: 'goalsAgainst',\n safety_rate: 'safetyRate',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n fouls: 'fouls',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n perfect_passes: 'perfectPasses',\n losses: 'losses',\n steals: 'steals',\n outs: 'outs',\n block_shots: 'blockShots',\n auto_goals: 'autoGoals',\n auto_goals_against: 'autoGoalsAgainst'\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class FootballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n goals: number;\n assists: number;\n blockShots: number;\n corners: number;\n freeKicks: number;\n penaltyGoals: number;\n penaltyAttempts: number;\n penaltyGoalsAgainst: number;\n penaltySaves: number;\n smallPenaltyGoals: number;\n smallPenaltyAttempts: number;\n smallPenaltyGoalsAgainst: number;\n smallPenaltySaves: number;\n saves: number;\n goalsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n perfectPasses: number;\n losses: number;\n steals: number;\n outs: number;\n gameTime: number;\n plusMinus: number;\n updatedAt: Date;\n autoGoals: number;\n autoGoalsAgainst: number;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get shots(): number {\n return (this.shotMisses || 0) + (this.shotsOnGoal || 0) + (this.shotsBlocked || 0);\n }\n\n\n get totalGoals(): number {\n return (this.goals || 0) + (this.penaltyGoals || 0) + (this.smallPenaltyGoals || 0);\n }\n\n get goalsPercent(): number {\n if (!this.shots || !this.totalGoals) {\n return 0;\n }\n return Math.round(1000 * this.totalGoals / this.shots) / 10;\n }\n\n get shotsOnGoalPercent(): number {\n if (!this.shotsOnGoal || !this.shots) {\n return 0;\n }\n return Math.round(1000 * this.shotsOnGoal / this.shots) / 10;\n }\n\n get penalties(): number {\n return (this.penaltyGoals || 0) + (this.penaltyAttempts || 0);\n }\n\n get penaltyGoalsPercent(): number {\n if (!this.penaltyAttempts || !this.penaltyGoals) {\n return 0;\n }\n return Math.round(1000 * this.penaltyGoals / this.penaltyAttempts) / 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 return Math.round(1000 * this.smallPenaltyGoals / this.smallPenaltyAttempts) / 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';\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 points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n shots_on_goal_percent: 'shotsOnGoalPercent',\n shots: 'shots',\n goals: 'goals',\n goals_percent: 'goalsPercent',\n total_goals: 'totalGoals',\n assists: 'assists',\n penalty_goals: 'penaltyGoals',\n penalty_attempts: 'penaltyAttempts',\n penalty_goals_percent: 'penaltyGoalsPercent',\n penalty_saves: 'penaltySaves',\n penalty_goals_against: 'penaltyGoalsAgainst',\n penalty_shots_against: 'penaltyShotsAgainst',\n penalty_saves_percent: 'penaltySavesPercent',\n small_penalty_goals: 'smallPenaltyGoals',\n small_penalty_attempts: 'smallPenaltyAttempts',\n small_penalty_goals_percent: 'smallPenaltyGoalsPercent',\n small_penalty_saves: 'smallPenaltySaves',\n small_penalty_goals_against: 'smallPenaltyGoalsAgainst',\n small_penalty_shots_against: 'smallPenaltyShotsAgainst',\n small_penalty_saves_percent: 'smallPenaltySavesPercent',\n saves: 'saves',\n saves_percent: 'savesPercent',\n total_saves: 'totalSaves',\n goals_against: 'goalsAgainst',\n total_goals_against: 'totalGoalsAgainst',\n shots_against: 'shotsAgainst',\n safety_rate: 'safetyRate',\n fouls: 'fouls',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n perfect_passes: 'perfectPasses',\n losses: 'losses',\n steals: 'steals',\n outs: 'outs',\n block_shots: 'blockShots',\n corners: 'corners',\n free_kicks: 'freeKicks',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n newbie: 'newbie',\n rank: 'rank',\n auto_goals: 'autoGoals',\n auto_goals_against: 'autoGoalsAgainst',\n },\n relation: {\n 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 tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: WinLoseType;\n gamesCount: number;\n wonGamesCount: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n shotsOnGoalPercent: number;\n shots: number;\n goals: number;\n totalGoals: number;\n goalsPercent: number;\n assists: number;\n penaltyGoals: number;\n penaltyAttempts: number;\n penaltyGoalsPercent: number;\n penaltySaves: number;\n penaltyGoalsAgainst: number;\n penaltyShotsAgainst: number;\n penaltySavesPercent: number;\n smallPenaltyGoals: number;\n smallPenaltyAttempts: number;\n smallPenaltyGoalsPercent: number;\n smallPenaltySaves: number;\n smallPenaltyGoalsAgainst: number;\n smallPenaltyShotsAgainst: number;\n smallPenaltySavesPercent: number;\n saves: number;\n savesPercent: number;\n totalSaves: number;\n goalsAgainst: number;\n totalGoalsAgainst: number;\n shotsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n perfectPasses: number;\n losses: number;\n steals: number;\n outs: number;\n gameTime: number;\n plusMinus: number;\n blockShots: number;\n corners: number;\n freeKicks: number;\n newbie: boolean;\n rank: number;\n autoGoals: number;\n autoGoalsAgainst: number;\n\n get userMinutes(): string {\n if (!this.gameTime) {\n return '00:00';\n }\n const minutes = Math.floor(this.gameTime / 60);\n const seconds = Math.floor(this.gameTime - minutes * 60);\n return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;\n }\n\n @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';\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 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 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 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 @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { HandballStatistic } from './handball-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: HandballStatistic,\n competitorTeam: HandballStatistic\n }\n})\nexport class HandballGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: HandballStatistic;\n competitorTeam: HandballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { HandballGameLog } from '../models/handball-game-log';\nimport { HandballGameStatistic } from '../models/handball-game-statistic';\nimport { HandballGameTeamStatistic } from '../models/handball-game-team-statistic';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class HandballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<HandballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/team_statistic/`).pipe(\n map(result => HandballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<HandballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/user_statistic/`).pipe(\n map(result => HandballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<HandballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/logs/`).pipe(\n map(result => HandballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadApplication(gameId: number, format: 'pdf' | 'xlsx' | 'html', type: 'game_user' | 'tournament_user'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/game_application_file/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { File } from './file';\nimport { User } from './user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n picture: 'picture',\n text: 'text',\n author: 'author',\n created_at: 'createdAt',\n },\n relation: {\n picture: File,\n author: User,\n createdAt: DateTimeField,\n }\n})\nexport class TournamentNews extends BaseModel {\n id: number;\n title: string;\n picture: File;\n text: string;\n author: User;\n createdAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField } from './util';\n\n@ModelInstance({\n mappingFields: {\n stage_id: 'stageId',\n tours_count: 'toursCount',\n playoff_stages_count: 'playoffStagesCount',\n }\n})\nexport class GameTimelineStageItem {\n stageId: number;\n toursCount: number;\n playoffStagesCount: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n tours_count: 'toursCount',\n playoff_stages_count: 'playoffStagesCount',\n current_tour: 'currentTour',\n current_playoff_stage: 'currentPlayoffStage',\n stages: 'stages',\n tournament_stage_id: 'tournamentStageId',\n },\n relation: {\n stages: listField(GameTimelineStageItem)\n }\n})\nexport class GameTimelineStages extends BaseModel {\n toursCount: number;\n playoffStagesCount: number;\n currentTour: number;\n currentPlayoffStage: number;\n stages: GameTimelineStageItem[];\n tournamentStageId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField, DateTimeField, enumField } from './util';\nimport { File } from './file';\nimport { Tournament } from './tournament';\n\nexport enum LeagueNewsType {\n text = 1,\n video\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n datetime: 'datetime',\n preview_text: 'previewText',\n detail_text: 'detailText',\n picture: 'picture',\n cover: 'cover',\n mobile_picture: 'mobilePicture',\n is_main: 'isMain',\n tournaments: 'tournaments',\n type: 'type',\n video_link: 'videoLink',\n tag: 'tag',\n },\n relation: {\n datetime: DateTimeField,\n picture: File,\n cover: File,\n mobilePicture: File,\n tournaments: listField(Tournament),\n type: enumField(LeagueNewsType),\n }\n})\nexport class LeagueNews extends BaseModel {\n id: number;\n title: string;\n datetime: Date;\n previewText: string;\n detailText: string;\n picture: File;\n cover: File;\n mobilePicture: File;\n isMain: boolean;\n tournaments: Tournament[];\n type: LeagueNewsType;\n videoLink: string;\n tag: string;\n\n @ToFrontHook\n static toFront(data: any): any {\n return undefined;\n }\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField } from './util';\nimport { Team } from './team';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { TeamUser } from './team-user';\nimport { TournamentTeam } from './tournament-team';\nimport { User } from './user';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n team_user: 'teamUser',\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 tournamentTeamUser: TournamentTeamUser,\n tournamentTeam: TournamentTeam,\n user: User,\n month: DateField,\n }\n})\nexport class VolleyballStatistic extends BaseModel implements BaseStatistic {\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 @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 { 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';\n\nexport interface TournamentGamesFilters {\n tournamentIds?: number[];\n tournamentSeasonId?: number;\n tournamentStageId?: number;\n tournamentTour?: number;\n teamId?: number;\n playoffStage?: number;\n playoffId?: number;\n isPlayoff?: boolean;\n status?: GameStatuses;\n statuses?: GameStatuses[];\n tournamentCourtId?: number;\n userId?: number;\n query?: string;\n}\n\nexport type StatisticGroupByTypes = 'team' | 'user' | 'team_user' | 'tournament_team' | 'tournament_team_user' | '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 tournament_team_user_id?: number;\n team_id?: number;\n team_user_id?: number;\n user_id?: number;\n tournament_stage_id?: number;\n tournament_tour?: number;\n playoff_stage?: number;\n playoff_id?: number;\n is_playoff?: boolean;\n date_from?: string;\n date_to?: string;\n query?: string;\n per_game?: boolean;\n group_by: StatisticGroupByTypes;\n order_by?: string;\n page?: number;\n size?: number;\n}\n\nexport interface StatisticLeadersFilters {\n tournament_id?: number;\n tournament_ids?: number[];\n tournament_season_id?: number;\n tournament_team_id?: number;\n team_id?: number;\n tournament_stage_id?: number;\n tournament_tour?: number;\n playoff_stage?: number;\n playoff_id?: number;\n date_from?: string;\n date_to?: string;\n per_game?: boolean;\n group_by: StatisticGroupByTypes;\n size?: number;\n fields: string[];\n}\n\nexport interface TournamentEventsListFilter {\n event?: TournamentEventTypes;\n search?: string;\n tournamentTour?: number;\n}\n\n@Injectable({providedIn: 'root'})\nexport class TournamentApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getById(tournamentId: number): Promise<Tournament> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/`)\n .pipe(map(result => Tournament.toFront(result)))\n .toPromise();\n }\n\n async getByAlias(leagueId: number, alias: string): Promise<Tournament> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournaments/${alias}/`)\n .pipe(map(result => Tournament.toFront(result)))\n .toPromise();\n }\n\n async getNews(tournamentId: number): Promise<TournamentNews[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/news/`)\n .pipe(map(result => TournamentNews.toFront(result)))\n .toPromise();\n }\n\n async getEvents(tournamentId: number, page: number, size: number, filters?: TournamentEventsListFilter): Promise<PaginatedResponse<TournamentEvent[]>> {\n let params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\n if (filters) {\n if (filters.event) {\n params = params.set('event', TournamentEventTypes[filters.event]);\n }\n if (filters.search) {\n params = params.set('search', filters.search);\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/events/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentEvent.toFront(result.body)\n })))\n .toPromise();\n }\n\n async getTournamentStages(tournamentId: number): Promise<TournamentStage[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/stages/`).pipe(\n map(data => TournamentStage.toFront(data))\n ).toPromise();\n }\n\n async getPlayoff(tournamentId: number): Promise<Playoff[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/playoff/`).pipe(\n map(result => Playoff.toFront(result))\n ).toPromise();\n }\n\n async getPlayoffGames(playoffId: number, playoffNumber?: string): Promise<Game[]> {\n let params = new HttpParams();\n if (playoffNumber) {\n params = params.set('playoff_number', playoffNumber);\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_playoff/${playoffId}/games/`,\n {params}\n ).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getGamesStages(tournamentId: number): Promise<GameTimelineStages> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/games_stages/`)\n .pipe(map(data => GameTimelineStages.toFront(data)))\n .toPromise();\n }\n\n async getGames(tournamentId: number, page: number, size: number, filters: TournamentGamesFilters = {}): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n params = applyGamesFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/games/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: Game.toFront(result.body)\n }))).toPromise();\n }\n\n async getTeams(tournamentId: number): Promise<TournamentTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/teams/`)\n .pipe(map(result => TournamentTeam.toFront(result)))\n .toPromise();\n }\n\n async getStageTeams(tournamentId: number): Promise<TournamentStageTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/stage_teams/`)\n .pipe(map(result => TournamentStageTeam.toFront(result)))\n .toPromise();\n }\n\n async getTeamById(tournamentTeamId: number): Promise<TournamentTeam> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/`)\n .pipe(map(result => TournamentTeam.toFront(result)))\n .toPromise();\n }\n\n async getUserById(userId: number): Promise<TournamentTeamUser> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${userId}/`)\n .pipe(map(result => TournamentTeamUser.toFront(result)))\n .toPromise();\n }\n\n async getUserGames(tournamentUserId: number): Promise<Game[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${tournamentUserId}/games/`)\n .pipe(map(result => Game.toFront(result)))\n .toPromise();\n }\n\n async getBasketballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: BasketballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/basketball_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = BasketballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getVolleyballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: VolleyballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/volleyball_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = VolleyballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getHockeyStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: HockeyStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/hockey_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = HockeyStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getFootballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: FootballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/football_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = FootballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getHandballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: HandballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/handball_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = HandballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getBasketballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<BasketballStatistic[]>> {\n let params = new HttpParams();\n params = applyStatisticFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/basketball_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: BasketballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getVolleyballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<VolleyballStatistic[]>> {\n let params = new HttpParams();\n params = applyStatisticFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/volleyball_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: VolleyballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getHockeyStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<HockeyStatistic[]>> {\n let params = new HttpParams();\n params = applyStatisticFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/hockey_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: HockeyStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getFootballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<FootballStatistic[]>> {\n let params = new HttpParams();\n params = applyStatisticFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/football_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: FootballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getHandballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<HandballStatistic[]>> {\n let params = new HttpParams();\n params = applyStatisticFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/handball_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: HandballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getTournamentTeamUsers(tournamentTeamId: number): Promise<TournamentTeamUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/users/`).pipe(\n map(result => TournamentTeamUser.toFront(result))\n ).toPromise();\n }\n\n async myPermission(tournamentId: number): Promise<LeagueUserPermissions[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/permission/`).pipe(\n map((data: any) => (data.permissions || []).map(item => LeagueUserPermissions[item]))\n ).toPromise();\n }\n\n async getTournamentTeamTournaments(tournamentTeamId: number): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/tournaments/`).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n async getTournamentUserTournaments(tournamentTeamUserId: number): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${tournamentTeamUserId}/tournaments/`).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n}\n\nexport function applyGamesFilters(filters: TournamentGamesFilters, params: HttpParams): HttpParams {\n if (filters.tournamentIds) {\n params = params.set('tournament_ids', filters.tournamentIds.join(','));\n }\n if (filters.tournamentStageId) {\n params = params.set('tournament_stage_id', filters.tournamentStageId.toString());\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n if (filters.playoffStage) {\n params = params.set('playoff_stage', filters.playoffStage.toString());\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n if (filters.status) {\n params = params.set('status', GameStatuses[filters.status]);\n }\n if (filters.statuses) {\n const statuses = filters.statuses.map(i => GameStatuses[i]);\n params = params.set('statuses', statuses.join(','));\n }\n if (filters.tournamentCourtId) {\n params = params.set('tournament_court_id', filters.tournamentCourtId.toString());\n }\n if (filters.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 { MediaItem } from '../models/media-item';\nimport { Game, GameStatuses } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { ConfigService } from '../services/config.service';\nimport { applyGamesFilters, TournamentGamesFilters } from './tournament-api';\n\nexport interface GameMediaFilters extends TournamentGamesFilters {\n mediaCount?: number;\n}\n\nexport interface MediaFilters {\n mediaType?: 'photo' | 'video' | 'live_video';\n sort?: string;\n teamId?: number;\n}\n\n@Injectable({providedIn: 'root'})\nexport class MediaApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getMedia(mediaId: number): Promise<MediaItem> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/media/${mediaId}/`).pipe(\n map(result => MediaItem.toFront(result))\n ).toPromise();\n }\n\n async getTournamentGameMedia(tournamentId: number, page: number, size: number, filters?: GameMediaFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n params = applyGameMediaFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/game_media/`, {observe: 'response', params}).pipe(\n map(response => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n })\n ).toPromise();\n }\n\n async getLeagueGameMedia(leagueId: number, page: number, size: number, filters?: GameMediaFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n params = applyGameMediaFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/game_media/`, {observe: 'response', params}).pipe(\n map(response => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n })\n ).toPromise();\n }\n\n async getLeagueMedia(leagueId: number, page: number, size: number, filters: MediaFilters = {}): Promise<PaginatedResponse<MediaItem[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n if (filters.mediaType) {\n params = params.set('media_type', filters.mediaType);\n }\n if (filters.sort) {\n params = params.set('sort', filters.sort);\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/media/`, {params, observe: 'response'})\n .pipe(map(response => ({\n total: +response.headers.get('X-Page-Count'),\n data: MediaItem.toFront(response.body)\n }))).toPromise();\n }\n\n async getGameMediaById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/game_media/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getGameMedia(gameId: number): Promise<MediaItem[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/media/?size=1000`).pipe(\n map(result => MediaItem.toFront(result))\n ).toPromise();\n }\n\n async createZip(mediaIds: number[]): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/media/zip/`, mediaIds, { responseType: 'blob' })\n .toPromise();\n }\n\n async downloadMedia(mediaId: number): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/media/${mediaId}/download/`,{responseType: 'blob'})\n .toPromise();\n }\n}\n\nexport function applyGameMediaFilters(filters: GameMediaFilters, params: HttpParams, ): HttpParams {\n if (filters) {\n params = applyGamesFilters(filters, params);\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n if (filters.tournamentStageId) {\n params = params.set('tournament_stage_id', filters.tournamentStageId.toString());\n }\n if (filters.playoffId) {\n params = params.set('playoff_id', filters.playoffId.toString());\n }\n if (filters.playoffStage) {\n params = params.set('playoff_stage', filters.playoffStage.toString());\n }\n if (filters.status) {\n params = params.set('status', GameStatuses[filters.status]);\n }\n if (filters.mediaCount) {\n params = params.set('media_count', filters.mediaCount.toString());\n }\n }\n return params;\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { TeamUser } from './team-user';\nimport { Game } from './game';\n\nexport enum GameInviteStatus {\n accepted = 1,\n declined,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_user: 'teamUser',\n game_id: 'gameId',\n game: 'game',\n status: 'status',\n },\n relation: {\n game: Game,\n teamUser: TeamUser,\n status: enumField(GameInviteStatus),\n }\n})\nexport class GameInvite extends BaseModel {\n id: number;\n teamUser: TeamUser;\n gameId: number;\n game: Game;\n status: GameInviteStatus;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { User } from './user';\nimport { Team } from './team';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n user: 'user',\n team: 'team',\n team_id: 'teamId',\n user_accept: 'userAccept',\n team_accept: 'teamAccept',\n users_count: 'usersCount',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n score_sum: 'scoreSum',\n created_at: 'createdAt',\n updated_at: 'updatedAt',\n },\n relation: {\n user: User,\n team: Team,\n createdAt: DateTimeField,\n updateAt: DateTimeField,\n }\n})\nexport class TeamInvite extends BaseModel {\n id: number;\n userId: number;\n user: User;\n teamId: number;\n team: Team;\n userAccept: boolean;\n teamAccept: boolean;\n usersCount: number;\n gamesCount: number;\n wonGamesCount: number;\n scoreSum: number;\n createdAt: Date;\n updatedAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","export enum TeamEventTypes {\n training = 1,\n other = 2,\n}\n","import { enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum TeamEventInviteStatuses {\n accepted = 1,\n declined = 2\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_event_id: 'teamEventId',\n team_user_id: 'teamUserId',\n status: 'status',\n },\n relation: {\n status: enumField(TeamEventInviteStatuses)\n }\n})\nexport class TeamEventInvite {\n id: number;\n teamEventId: number;\n teamUserId: number;\n status: TeamEventInviteStatuses;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { TeamEventTypes } from '../models/team-event-type';\n\nexport const TeamEventTypeLocalization = {\n [TeamEventTypes.training]: 'ТÑениÑовка',\n [TeamEventTypes.other]: 'ÐÑÑгое'\n};\n","import { BaseModel, enumField, ModelInstance, DateTimeField, ToBackHook, ToFrontHook } from './util';\nimport { Team } from './team';\nimport { TeamEventTypeLocalization } from '../localization/team-event-type';\nimport { TeamEventTypes } from './team-event-type';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n team: 'team',\n event_type: 'eventType',\n event_custom_name: 'eventCustomName',\n description: 'description',\n datetime: 'datetime',\n location: 'location',\n },\n relation: {\n eventType: enumField(TeamEventTypes),\n team: Team,\n datetime: DateTimeField,\n }\n})\nexport class TeamEvent extends BaseModel {\n id: number;\n teamId: number;\n team: Team;\n eventType: TeamEventTypes;\n eventCustomName: string;\n description: string;\n datetime: Date;\n location: string;\n\n get name(): string {\n if (this.eventType === TeamEventTypes.other) {\n return this.eventCustomName;\n }\n return TeamEventTypeLocalization[this.eventType];\n }\n\n get isClosed(): boolean {\n return this.datetime.getTime() < new Date().getTime();\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { Team } from './team';\nimport { Poll } from './poll';\nimport { Game } from './game';\nimport { TeamInvite } from './team-invite';\nimport { TeamUser } from './team-user';\nimport { GameInvite } from './game-invite';\nimport { TeamEvent } from './team-event';\nimport { TeamEventInvite } from './team-event-invite';\nimport { Tournament } from './tournament';\nimport { TournamentInvite } from './tournament-invite';\nimport { TournamentTeam } from './tournament-team';\nimport { User } from './user';\n\nexport enum NotificationType {\n team_updated = 1,\n team_invited,\n team_join_request,\n team_join_declined_by_team,\n team_join_declined_by_user,\n team_join_canceled_by_team,\n team_join_canceled_by_user,\n team_joined_for_user,\n team_joined_for_team,\n team_user_role_changed_for_user,\n team_user_role_changed_for_team,\n team_user_number_changed,\n team_user_deleted_for_user,\n team_user_deleted_for_team,\n team_user_left,\n\n game_updated,\n game_invited,\n game_invite_accepted,\n game_invite_declined,\n game_remind,\n game_won,\n game_losing,\n game_tech_defeat,\n game_tech_victory,\n\n poll_created,\n poll_closed,\n\n team_event_invited,\n team_event_accepted,\n team_event_declined,\n team_event_remind,\n\n tournament_invited,\n tournament_joined,\n tournament_join_declined,\n tournament_join_canceled,\n tournament_user_invited,\n tournament_user_accepted_for_team,\n tournament_user_accepted_for_user,\n tournament_user_added,\n tournament_user_declined_for_team,\n tournament_user_declined_for_user,\n tournament_user_invite_deleted,\n tournament_user_deleted,\n tournament_user_disqualified_for_team,\n tournament_user_disqualified_for_user,\n tournament_user_disqualification_updated_for_team,\n tournament_user_disqualification_updated_for_user,\n tournament_team_deleted,\n\n org_tournament_invite_created,\n org_tournament_invite_declined,\n org_tournament_invite_deleted,\n org_tournament_invite_changed,\n org_tournament_user_deleted,\n org_tournament_user_invited,\n org_tournament_user_has_changes,\n org_tournament_team_leave,\n}\n\nexport enum NotificationServiceEnum {\n public = 1,\n org\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n event_type: 'event',\n data: 'data',\n initiator: 'initiator',\n team: 'team',\n team_invite: 'teamInvite',\n team_user: 'teamUser',\n poll: 'poll',\n game: 'game',\n game_invite: 'gameInvite',\n team_event: 'teamEvent',\n team_event_invite: 'teamEventInvite',\n tournament: 'tournament',\n tournament_invite: 'tournamentInvite',\n tournament_team: 'tournamentTeam',\n viewed: 'viewed',\n protected: 'protected',\n service: 'service',\n created_at: 'createdAt',\n },\n relation: {\n event: enumField(NotificationType),\n initiator: User,\n team: Team,\n teamInvite: TeamInvite,\n teamUser: TeamUser,\n poll: Poll,\n game: Game,\n gameInvite: GameInvite,\n teamEvent: TeamEvent,\n teamEventInvite: TeamEventInvite,\n tournament: Tournament,\n tournamentInvite: TournamentInvite,\n tournamentTeam: TournamentTeam,\n service: enumField(NotificationServiceEnum),\n createdAt: DateTimeField,\n }\n})\nexport class Notification extends BaseModel {\n id: number;\n event: NotificationType;\n data: any;\n initiator: User;\n team: Team;\n teamInvite: TeamInvite;\n teamUser: TeamUser;\n poll: Poll;\n game: Game;\n gameInvite: GameInvite;\n teamEvent: TeamEvent;\n teamEventInvite: TeamEventInvite;\n tournament: Tournament;\n tournamentInvite: TournamentInvite;\n tournamentTeam: TournamentTeam;\n viewed: boolean;\n protected: boolean;\n service: NotificationServiceEnum;\n createdAt: Date;\n\n get important(): boolean {\n return true;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\nimport { TeamUser } from './team-user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team_invite_id: 'tournamentTeamInviteId',\n tournament_team_id: 'tournamentTeamId',\n team_user: 'teamUser',\n accepted: 'accepted'\n },\n relation: {\n teamUser: TeamUser\n }\n})\nexport class TournamentTeamUserInvite extends BaseModel {\n id: number;\n tournamentTeamInviteId: number;\n tournamentTeamId: number;\n teamUser: TeamUser;\n accepted: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\nimport { Tournament } from './tournament';\nimport { TournamentTeamUserInvite } from './tournament-team-user-invite';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team: 'team',\n tournament: 'tournament',\n team_accept: 'teamAccept',\n organization_accept: 'organizationAccept',\n user_invites_count: 'userInvitesCount',\n user_invites: 'userInvites',\n notifications_count: 'notificationsCount',\n },\n relation: {\n team: Team,\n tournament: Tournament,\n userInvites: TournamentTeamUserInvite,\n }\n})\nexport class TournamentInvite extends BaseModel {\n id: number;\n team: Team;\n tournament: Tournament;\n teamAccept: boolean;\n organizationAccept: boolean;\n userInvitesCount: number;\n userInvites: TournamentTeamUserInvite[];\n notificationsCount: number;\n\n get isOpen(): boolean {\n return (this.teamAccept === null || this.organizationAccept === null) && this.teamAccept !== false && this.organizationAccept !== false;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\n\nexport enum NotificationAllowTypes {\n all = 1,\n important,\n none\n}\n\n@ModelInstance({\n mappingFields: {\n user_id: 'userId',\n popup: 'popup',\n sound: 'sound',\n browser: 'browser',\n email: 'email'\n },\n relation: {\n sound: enumField(NotificationAllowTypes),\n browser: enumField(NotificationAllowTypes),\n }\n})\nexport class NotificationSettings extends BaseModel {\n userId: number;\n popup: boolean;\n sound: NotificationAllowTypes;\n browser: NotificationAllowTypes;\n email: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, 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 { 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, 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): Promise<TournamentTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/teams/`).pipe(\n map(result => TournamentTeam.toFront(result))\n ).toPromise();\n }\n\n async getPlayoffs(seasonId: number): Promise<Playoff[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/playoffs/`).pipe(\n map(result => Playoff.toFront(result))\n ).toPromise();\n }\n\n async getGamesStages(seasonId: number): Promise<GameTimelineStages> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/games_stages/`)\n .pipe(map(data => GameTimelineStages.toFront(data)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TournamentStage } from '../models/tournament-stage';\nimport { map } from 'rxjs/operators';\nimport { TournamentGroup } from '../models/tournament-group';\nimport { Playoff } from '../models/playoff';\nimport { TournamentStageTeam } from '../models/tournament-stage-team';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TournamentStageApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getById(id: number): Promise<TournamentStage> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${id}/`)\n .pipe(map(result => TournamentStage.toFront(result)))\n .toPromise();\n }\n\n async getGroups(stageId: number): Promise<TournamentGroup[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/groups/`)\n .pipe(map(result => TournamentGroup.toFront(result)))\n .toPromise();\n }\n\n async getPlayoffs(stageId: number): Promise<Playoff[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/playoff/`)\n .pipe(map(result => Playoff.toFront(result)))\n .toPromise();\n }\n\n async getTeams(stageId: number): Promise<TournamentStageTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/teams/`)\n .pipe(map(result => TournamentStageTeam.toFront(result)))\n .toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n edit: 'edit',\n personal_data: 'personalData',\n teams: 'teams',\n statistic: 'statistic',\n games: 'games'\n }\n})\nexport class UserAccess extends BaseModel {\n edit: boolean;\n personalData: boolean;\n teams: boolean;\n statistic: boolean;\n games: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField, DateTimeField } from './util';\nimport { GameLogBase } from './game-log-base';\nimport { GameUser } from './game-user';\n\nexport enum VolleyballGameLogType {\n enter_game = 1,\n exit_game,\n remove_game,\n serve_hit,\n serve_fault,\n serve_ace,\n stuff_block,\n block_fault,\n block_rebound,\n attack_spike,\n attack_fault,\n attack_shot,\n receive,\n receive_fault,\n excellent_receive,\n point,\n fault,\n serve_receive,\n serve_receive_fault,\n excellent_serve_receive,\n timeout,\n yellow_card,\n}\n\nexport const SCORE_LOG_TYPES = [\n VolleyballGameLogType.serve_ace, VolleyballGameLogType.stuff_block,\n VolleyballGameLogType.attack_spike, VolleyballGameLogType.point\n];\nexport const FAULT_LOG_TYPES = [\n VolleyballGameLogType.serve_fault, VolleyballGameLogType.attack_fault,\n VolleyballGameLogType.block_fault, VolleyballGameLogType.receive_fault,\n VolleyballGameLogType.fault, VolleyballGameLogType.serve_receive_fault\n];\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n log_type: 'logType',\n set: 'set',\n rally: 'rally',\n position: 'position',\n team_id: 'teamId',\n datetime: 'datetime',\n is_highlight: 'isHighlight',\n },\n relation: {\n logType: enumField(VolleyballGameLogType),\n datetime: DateTimeField\n }\n})\nexport class VolleyballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n active = true;\n gameId: number;\n gameUserId: number;\n logType: VolleyballGameLogType;\n set: number;\n rally: number;\n position: number;\n teamId: number;\n datetime: Date;\n isHighlight: boolean;\n gameUser: GameUser;\n\n compare(model: VolleyballGameLog): number {\n if (this.rally === model.rally && this.set === model.set) {\n if (this.datetime && model.datetime) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n } else {\n return this.id < model.id ? 1 : -1;\n }\n }\n if (this.set === model.set) {\n return this.rally < model.rally ? 1 : -1;\n }\n return this.set < model.set ? 1 : -1;\n }\n\n isScoreType() {\n return SCORE_LOG_TYPES.includes(this.logType);\n }\n\n isFaultType() {\n return FAULT_LOG_TYPES.includes(this.logType);\n }\n\n isServe() {\n return [\n VolleyballGameLogType.serve_hit,\n VolleyballGameLogType.serve_ace,\n VolleyballGameLogType.serve_fault\n ].includes(this.logType);\n }\n\n isAttack() {\n return [\n VolleyballGameLogType.attack_fault,\n VolleyballGameLogType.attack_spike,\n VolleyballGameLogType.attack_shot\n ].includes(this.logType);\n }\n\n isReceive() {\n return [\n VolleyballGameLogType.receive_fault,\n VolleyballGameLogType.receive,\n VolleyballGameLogType.excellent_receive\n ].includes(this.logType);\n }\n\n isServeReceive() {\n return [\n VolleyballGameLogType.serve_receive_fault,\n VolleyballGameLogType.serve_receive,\n VolleyballGameLogType.excellent_serve_receive\n ].includes(this.logType);\n }\n\n isBlock() {\n return [\n VolleyballGameLogType.block_fault,\n VolleyballGameLogType.block_rebound,\n VolleyballGameLogType.stuff_block\n ].includes(this.logType);\n }\n\n isEnterExit() {\n return [\n VolleyballGameLogType.enter_game,\n VolleyballGameLogType.exit_game,\n VolleyballGameLogType.timeout\n ].includes(this.logType);\n }\n\n isComboType() {\n return ![\n VolleyballGameLogType.receive,\n VolleyballGameLogType.serve_receive\n ].includes(this.logType);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { User } from '../models/user';\nimport { File } from '../models/file';\nimport { map } from 'rxjs/operators';\nimport { UserProfile } from '../models/user-profile';\nimport { BasketballProfile } from '../models/basketball-profile';\nimport { VolleyballProfile } from '../models/volleyball-profile';\nimport { Team } from '../models/team';\nimport { TeamInvite } from '../models/team-invite';\nimport { BasketballStatistic } from '../models/basketball-statistic';\nimport { VolleyballStatistic } from '../models/volleyball-statistic';\nimport { Game } from '../models/game';\nimport { GameInvite } from '../models/game-invite';\nimport { TeamEvent } from '../models/team-event';\nimport { UserAccess } from '../models/user-access';\nimport { UserPermission } from '../models/user-permission';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class UserApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getCurrentUser(): Promise<User> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/`)\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async getUserById(userId: number): Promise<User> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/`)\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async getAccess(userId?: number): Promise<UserAccess> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/user/${userId || 'current'}/access/`)\n .pipe(map(data => UserAccess.toFront(data)))\n .toPromise();\n }\n\n async updateUser(userId: number, data: any): Promise<User> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/`, User.toBack(data))\n .pipe(map(result => User.toFront(result)))\n .toPromise();\n }\n\n async updateUserPhoto(file: any, filename?: string): Promise<File> {\n const formData = new FormData();\n formData.append('file', file, filename);\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/photo/`, formData)\n .pipe(map(data => File.toFront(data)))\n .toPromise();\n }\n\n async changePassword(userId: number, oldPassword: string, password: string, passwordConfirm: string): Promise<any> {\n const payload = {\n old_password: oldPassword,\n password,\n password_confirm: passwordConfirm\n };\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/change_password/`, payload)\n .toPromise();\n }\n\n async changeEmail(userId: number, email: string, password: string): Promise<any> {\n const payload = {email, password};\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/change_email/`, payload)\n .toPromise();\n }\n\n async changeEmailConfirm(userId, email: string, password: string, token: number): Promise<any> {\n const payload = {email, password, token};\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/change_email_confirm/`, payload)\n .toPromise();\n }\n\n async getUserProfile(userId: number): Promise<UserProfile> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/profile/`)\n .pipe(map(data => UserProfile.toFront(data)))\n .toPromise();\n }\n\n async getBasketballProfile(userId: number): Promise<BasketballProfile> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/basketball_profile/`)\n .pipe(map(data => BasketballProfile.toFront(data)))\n .toPromise();\n }\n\n async getVolleyballProfile(userId: number): Promise<VolleyballProfile> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/volleyball_profile/`)\n .pipe(map(data => VolleyballProfile.toFront(data)))\n .toPromise();\n }\n\n async updateUserProfile(userProfile: UserProfile): Promise<UserProfile> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${userProfile.userId}/profile/`, UserProfile.toBack(userProfile))\n .pipe(map(data => UserProfile.toFront(data)))\n .toPromise();\n }\n\n async updateUserBasketballProfile(basketballProfile: BasketballProfile): Promise<BasketballProfile> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${basketballProfile.userId}/basketball_profile/`, BasketballProfile.toBack(basketballProfile))\n .pipe(map(data => BasketballProfile.toFront(data)))\n .toPromise();\n }\n\n async updateUserVolleyballProfile(volleyballProfile: VolleyballProfile): Promise<VolleyballProfile> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${volleyballProfile.userId}/volleyball_profile/`, VolleyballProfile.toBack(volleyballProfile))\n .pipe(map(data => VolleyballProfile.toFront(data)))\n .toPromise();\n }\n\n async getUserPermissions(userId?: number): Promise<UserPermission> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId || 'current'}/permission/`)\n .pipe(map(data => UserPermission.toFront(data)))\n .toPromise();\n }\n\n async updateUserPermission(data: any): Promise<UserPermission> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/current/permission/`, UserPermission.toBack(data))\n .pipe(map(result => UserPermission.toFront(result)))\n .toPromise();\n }\n\n async getTeams(userId: number): Promise<Team[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/teams/`)\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getInvites(): Promise<TeamInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/invites/`)\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptInvite(inviteId: number): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/invites/${inviteId}/accept/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async declineInvite(inviteId: number): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/invites/${inviteId}/decline/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async getStatistics(userId: number): Promise<BasketballStatistic> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/statistics/`)\n .pipe(map(data => BasketballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getStreetballStatistics(userId: number): Promise<BasketballStatistic> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/streetball_statistics/`)\n .pipe(map(data => BasketballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getVolleyballStatistic(userId: number): Promise<VolleyballStatistic> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/volleyball_statistics/`)\n .pipe(map(data => VolleyballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getGames(userId: number): Promise<Game[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/games/`)\n .pipe(map(data => Game.toFront(data)))\n .toPromise();\n }\n\n async getGameInvites(): Promise<GameInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/game_invites/`)\n .pipe(map(data => GameInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptGameInvite(inviteId: number): Promise<GameInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/game_invites/${inviteId}/accept/`, {})\n .pipe(map(data => GameInvite.toFront(data)))\n .toPromise();\n }\n\n async declineGameInvite(inviteId: number): Promise<GameInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/game_invites/${inviteId}/decline/`, {})\n .pipe(map(data => GameInvite.toFront(data)))\n .toPromise();\n }\n\n async searchUsers(query: string): Promise<User[]> {\n const params = (new HttpParams()).set('search', query);\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/`, {params})\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async setWizardShowed(wizard: string): Promise<User> {\n return this.httpClient\n .put(`${this.configService.get('apiUrl')}/api/v1/user/current/wizards/`, {wizard})\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async getTeamEvents(userId: number): Promise<TeamEvent[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/team_events/`)\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook, BaseModel } from './util';\nimport { VolleyballStatistic } from './volleyball-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam',\n },\n relation: {\n team: VolleyballStatistic,\n competitorTeam: VolleyballStatistic,\n }\n})\nexport class VolleyballGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: VolleyballStatistic;\n competitorTeam: VolleyballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n serve_hits: 'serveHits',\n serve_faults: 'serveFaults',\n serve_aces: 'serveAces',\n stuff_blocks: 'stuffBlocks',\n block_faults: 'blockFaults',\n block_rebounds: 'blockRebounds',\n attack_spikes: 'attackSpikes',\n attack_faults: 'attackFaults',\n attack_shots: 'attackShots',\n receives: 'receives',\n receive_faults: 'receiveFaults',\n excellent_receives: 'excellentReceives',\n serve_receives: 'serveReceives',\n serve_receive_faults: 'serveReceiveFaults',\n excellent_serve_receives: 'excellentServeReceives',\n points: 'points',\n faults: 'faults',\n yellow_cards: 'yellowCards',\n }\n})\nexport class VolleyballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n serveHits: number;\n serveFaults: number;\n serveAces: number;\n stuffBlocks: number;\n blockFaults: number;\n blockRebounds: number;\n attackSpikes: number;\n attackFaults: number;\n attackShots: number;\n receives: number;\n receiveFaults: number;\n excellentReceives: number;\n serveReceives: number;\n serveReceiveFaults: number;\n excellentServeReceives: number;\n points: number;\n faults: number;\n yellowCards: number;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get attacks(): number {\n return this.attackSpikes + this.attackShots;\n }\n\n get blocks(): number {\n return this.stuffBlocks + this.blockRebounds;\n }\n\n get totalReceives(): number {\n return this.receives + this.excellentReceives;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Game } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { VolleyballGameTeamStatistic } from '../models/volleyball-game-team-statistic';\nimport { VolleyballGameStatistic } from '../models/volleyball-game-statistic';\nimport { VolleyballGameLog } from '../models/volleyball-game-log';\nimport { ConfigService } from '../services/config.service';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class VolleyballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<VolleyballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/team_statistic/`).pipe(\n map(result => VolleyballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<VolleyballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/user_statistic/`).pipe(\n map(result => VolleyballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<VolleyballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/logs/`).pipe(\n map(result => VolleyballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocolLight(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/game_protocol_light/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { Team } from '../models/team';\nimport { map } from 'rxjs/operators';\nimport { TournamentTeam } from '../models/tournament-team';\n\n@Injectable({providedIn: 'root'})\nexport class PublicTeamApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n getById(teamId: number): Promise<Team> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_team/${teamId}/`).pipe(\n map(result => Team.toFront(result))\n ).toPromise();\n }\n\n getTournamentTeams(teamId: number, leagueId: number): Promise<TournamentTeam[]> {\n const params = new HttpParams().set('league_id', leagueId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_team/${teamId}/tournament_teams/`, {params}).pipe(\n map(result => TournamentTeam.toFront(result))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { User } from '../models/user';\nimport { map } from 'rxjs/operators';\nimport { Tournament } from '../models/tournament';\nimport { TournamentTeamUser } from '../models/tournament-team-user';\nimport { LeaguePlayer } from '../models/league-player';\n\n@Injectable({providedIn: 'root'})\nexport class PublicUserApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n getById(userId: number): Promise<User> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/`).pipe(\n map(result => User.toFront(result))\n ).toPromise();\n }\n\n getTournaments(userId: number, leagueId: number): Promise<Tournament[]> {\n const params = new HttpParams().set('league_id', leagueId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/tournaments/`, {params}).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n getTournamentUser(userId: number, seasonId: number): Promise<TournamentTeamUser> {\n const params = new HttpParams().set('season_id', seasonId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/tournament_user/`, {params}).pipe(\n map(result => TournamentTeamUser.toFront(result))\n ).toPromise();\n }\n\n getLeaguePlayer(userId: number, leagueId: number): Promise<LeaguePlayer> {\n const params = new HttpParams().set('league_id', leagueId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/league_player/`, {params}).pipe(\n map(result => LeaguePlayer.toFront(result))\n ).toPromise();\n }\n}\n","import { BasketballGameLogTypes } from '../models/basketball-game-log';\n\nexport const BasketballGameLogTypeLocalization = {\n [BasketballGameLogTypes.enter_game]: 'ÐÑÑ
од на плоÑадкÑ',\n [BasketballGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð»Ð¾Ñадки',\n [BasketballGameLogTypes.remove_game]: 'Удаление Ñ Ð¿Ð»Ð¾Ñадки',\n [BasketballGameLogTypes.two_point_attempt]: 'ÐÑоÑок 2 оÑка',\n [BasketballGameLogTypes.three_point_attempt]: 'ÐÑоÑок 3 оÑка',\n [BasketballGameLogTypes.free_throw_attempt]: 'ШÑÑаÑной бÑоÑок',\n [BasketballGameLogTypes.one_point_attempt]: 'ÐÑоÑок 1 оÑко',\n [BasketballGameLogTypes.two_point_made]: '2 оÑка',\n [BasketballGameLogTypes.three_point_made]: '3 оÑка',\n [BasketballGameLogTypes.free_throw_made]: '1 оÑко, ÑÑÑаÑной',\n [BasketballGameLogTypes.one_point_made]: '1 оÑко',\n [BasketballGameLogTypes.assist]: 'ÐеÑедаÑа',\n [BasketballGameLogTypes.block]: 'ÐлокÑоÑ',\n [BasketballGameLogTypes.rebound]: 'ÐодбоÑ',\n [BasketballGameLogTypes.offensive_rebound]: 'ÐÐ¾Ð´Ð±Ð¾Ñ Ð² нападении',\n [BasketballGameLogTypes.defensive_rebound]: 'ÐÐ¾Ð´Ð±Ð¾Ñ Ð² заÑиÑе',\n [BasketballGameLogTypes.steal]: 'ÐеÑеÑ
ваÑ',\n [BasketballGameLogTypes.turnover]: 'ÐоÑеÑÑ',\n [BasketballGameLogTypes.personal_foul]: 'Фол',\n [BasketballGameLogTypes.technical_foul]: 'ТеÑ
ниÑеÑкий Ñол',\n [BasketballGameLogTypes.unsportsmanlike_foul]: 'ÐеÑпоÑÑинÑй Ñол',\n [BasketballGameLogTypes.timeout]: 'ТаймаÑÑ',\n [BasketballGameLogTypes.team_rebound]: 'ÐоманднÑй подбоÑ',\n};\n","import { HockeyGameLogTypes } from '../models/hockey-game-log';\n\nexport const HockeyGameLogTypeLocalization = {\n [HockeyGameLogTypes.enter_game]: 'ÐÑÑ
од на плоÑадкÑ',\n [HockeyGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð»Ð¾Ñадки',\n [HockeyGameLogTypes.shot_miss]: 'ÐÑоÑок мимо',\n [HockeyGameLogTypes.shot_on_goal]: 'ÐÑоÑок по воÑоÑам',\n [HockeyGameLogTypes.shot_blocked]: 'ÐаблокиÑованнÑй бÑоÑок',\n [HockeyGameLogTypes.goal]: 'Ðол',\n [HockeyGameLogTypes.shootout_attempt]: 'ÐÑÐ»Ð¸Ñ Ð¿ÑомаÑ
',\n [HockeyGameLogTypes.shootout_goal]: 'ÐÑÐ»Ð¸Ñ Ð³Ð¾Ð»',\n [HockeyGameLogTypes.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.timeout]: 'ТаймаÑÑ',\n [HockeyGameLogTypes.penalty_start]: 'ÐаÑало ÑÑÑаÑного вÑемени',\n [HockeyGameLogTypes.penalty_end]: 'ÐÐ¾Ð½ÐµÑ ÑÑÑаÑного вÑемени'\n};\n","import { FootballGameLogTypes } from '../models/football-game-log';\n\nexport const FootballGameLogTypeLocalization = {\n [FootballGameLogTypes.enter_game]: 'ÐÑÑ
од на поле',\n [FootballGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð¾Ð»Ñ',\n [FootballGameLogTypes.shot_miss]: 'Ð£Ð´Ð°Ñ Ð¼Ð¸Ð¼Ð¾',\n [FootballGameLogTypes.shot_on_goal]: 'Ð£Ð´Ð°Ñ Ð² ÑÑвоÑ',\n [FootballGameLogTypes.shot_blocked]: 'ÐаблокиÑованнÑй ÑдаÑ',\n [FootballGameLogTypes.goal]: 'Ðол',\n [FootballGameLogTypes.assist]: 'ÐеÑедаÑа',\n [FootballGameLogTypes.penalty_attempt]: 'ÐеналÑÑи пÑомаÑ
',\n [FootballGameLogTypes.penalty_goal]: 'ÐеналÑÑи гол',\n [FootballGameLogTypes.small_penalty_attempt]: '10-меÑÑовÑй пÑомаÑ
',\n [FootballGameLogTypes.small_penalty_goal]: '10-меÑÑовÑй гол',\n [FootballGameLogTypes.block_shot]: 'ÐлокиÑовка ÑдаÑа',\n [FootballGameLogTypes.corner]: 'Угловой',\n [FootballGameLogTypes.free_kick]: 'ШÑÑаÑной ÑдаÑ',\n [FootballGameLogTypes.save]: 'ÐÑÑажен ÑдаÑ',\n [FootballGameLogTypes.penalty_save]: 'ÐÑÑажен пеналÑÑи',\n [FootballGameLogTypes.small_penalty_save]: 'ÐÑÑажен 10 меÑÑовÑй',\n [FootballGameLogTypes.foul]: 'Фол',\n [FootballGameLogTypes.yellow_card]: 'ÐелÑÐ°Ñ ÐºÐ°ÑÑоÑка',\n [FootballGameLogTypes.red_card]: 'ÐÑаÑÐ½Ð°Ñ ÐºÐ°ÑÑоÑка',\n [FootballGameLogTypes.perfect_pass]: 'ÐаÑ',\n [FootballGameLogTypes.loss]: 'ÐоÑеÑÑ',\n [FootballGameLogTypes.steal]: 'ÐеÑеÑ
ваÑ',\n [FootballGameLogTypes.out]: 'ÐÑÑ',\n [FootballGameLogTypes.timeout]: 'ТаймаÑÑ',\n [FootballGameLogTypes.auto_goal]: 'ÐвÑогол'\n};\n","import { HandballGameLogTypes } from '../models/handball-game-log';\n\nexport const HandballGameLogTypeLocalization = {\n [HandballGameLogTypes.enter_game]: 'ÐÑÑ
од на поле',\n [HandballGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð¾Ð»Ñ',\n [HandballGameLogTypes.shot_miss]: 'ÐÑоÑок мимо',\n [HandballGameLogTypes.shot_on_goal]: 'ÐÑоÑок в ÑÑвоÑ',\n [HandballGameLogTypes.shot_blocked]: 'ÐаблокиÑованнÑй бÑоÑок',\n [HandballGameLogTypes.goal]: 'Ðол',\n [HandballGameLogTypes.assist]: 'ÐеÑедаÑа',\n [HandballGameLogTypes.penalty_miss]: '7м пÑомаÑ
',\n [HandballGameLogTypes.penalty_shot_on_goal]: '7м в ÑÑвоÑ',\n [HandballGameLogTypes.penalty_goal]: '7м гол',\n [HandballGameLogTypes.save]: 'СÑйв',\n [HandballGameLogTypes.penalty_save]: 'СÑйв 7м',\n [HandballGameLogTypes.foul]: 'Фол',\n [HandballGameLogTypes.yellow_card]: 'ÐеллÑÐ°Ñ ÐºÐ°ÑÑоÑка',\n [HandballGameLogTypes.red_card]: 'ÐÑаÑÐ½Ð°Ñ ÐºÐ°ÑÑоÑка',\n [HandballGameLogTypes.two_minute_foul]: '2Ñ
минÑÑнÑй ÑÑÑаÑ',\n [HandballGameLogTypes.turnover]: 'ÐоÑеÑÑ',\n [HandballGameLogTypes.steal]: 'ÐеÑеÑ
ваÑ',\n [HandballGameLogTypes.block_shot]: 'Ðлок бÑоÑка',\n [HandballGameLogTypes.timeout]: 'ТаймаÑÑ'\n};\n","import { OvertimeTypes } from '../models/tournament';\n\nexport const OvertimeTypeLocalization = {\n [OvertimeTypes.to_score_diff]: 'Ðо ÑазниÑÑ Ð² N мÑÑей',\n [OvertimeTypes.to_score_total]: 'Ðо N оÑков',\n [OvertimeTypes.time]: 'Ðо вÑемени',\n [OvertimeTypes.without_overtime]: 'Ðез овеÑÑайма',\n [OvertimeTypes.to_first_goal]: 'Ðа N минÑÑ Ð´Ð¾ пеÑвой ÑайбÑ',\n [OvertimeTypes.to_first_goal_and_bullitts]: 'Ðа N минÑÑ Ð´Ð¾ пеÑвой ÑÐ°Ð¹Ð±Ñ + бÑллиÑÑ',\n [OvertimeTypes.bullitts]: 'ÐÑллиÑÑ',\n [OvertimeTypes.penalties]: 'ÐеналÑÑи',\n [OvertimeTypes.time_and_penalties]: 'ÐополниÑелÑное вÑÐµÐ¼Ñ + пеналÑÑи'\n};\n","import { 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';\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","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/browser';\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/user.ts","ng://@mtgame/core/models/tournament-season.ts","ng://@mtgame/core/models/team.ts","ng://@mtgame/core/models/organization.ts","ng://@mtgame/core/models/league.ts","ng://@mtgame/core/models/tournament.ts","ng://@mtgame/core/models/volleyball-game-config.ts","ng://@mtgame/core/models/basketball-game-config.ts","ng://@mtgame/core/models/playoff.ts","ng://@mtgame/core/models/league-court.ts","ng://@mtgame/core/models/media-item.ts","ng://@mtgame/core/models/hockey-game-config.ts","ng://@mtgame/core/models/football-game-config.ts","ng://@mtgame/core/models/handball-game-config.ts","ng://@mtgame/core/utils/array.ts","ng://@mtgame/core/models/game.ts","ng://@mtgame/core/models/tournament-group.ts","ng://@mtgame/core/utils/data.ts","ng://@mtgame/core/models/team-user.ts","ng://@mtgame/core/storage/store.ts","ng://@mtgame/core/services/base.service.ts","ng://@mtgame/core/services/config.service.ts","ng://@mtgame/core/models/tournament-team.ts","ng://@mtgame/core/models/basketball-game-log.ts","ng://@mtgame/core/models/tournament-disqualification.ts","ng://@mtgame/core/models/league-player.ts","ng://@mtgame/core/models/tournament-team-user.ts","ng://@mtgame/core/models/basketball-statistic.ts","ng://@mtgame/core/models/basketball-game-team-statistic.ts","ng://@mtgame/core/models/basketball-game-statistic.ts","ng://@mtgame/core/models/hockey-game-log.ts","ng://@mtgame/core/models/game-user.ts","ng://@mtgame/core/models/game-user-limitation.ts","ng://@mtgame/core/api/game-base-api.ts","ng://@mtgame/core/api/basketball-game-api.ts","ng://@mtgame/core/models/feedback.ts","ng://@mtgame/core/api/feedback-api.ts","ng://@mtgame/core/api/file-api.ts","ng://@mtgame/core/models/football-game-log.ts","ng://@mtgame/core/models/hockey-game-statistic.ts","ng://@mtgame/core/models/hockey-statistic.ts","ng://@mtgame/core/models/hockey-game-team-statistic.ts","ng://@mtgame/core/api/hockey-game-api.ts","ng://@mtgame/core/models/handball-game-log.ts","ng://@mtgame/core/models/football-game-statistic.ts","ng://@mtgame/core/models/football-statistic.ts","ng://@mtgame/core/models/football-game-team-statistic.ts","ng://@mtgame/core/api/football-game-api.ts","ng://@mtgame/core/models/tournament-stage.ts","ng://@mtgame/core/models/handball-game-statistic.ts","ng://@mtgame/core/models/handball-statistic.ts","ng://@mtgame/core/models/handball-game-team-statistic.ts","ng://@mtgame/core/api/handball-game-api.ts","ng://@mtgame/core/models/tournament-news.ts","ng://@mtgame/core/models/game-timeline-stages.ts","ng://@mtgame/core/models/league-news.ts","ng://@mtgame/core/models/volleyball-statistic.ts","ng://@mtgame/core/models/tournament-stage-team.ts","ng://@mtgame/core/models/tournament-event.ts","ng://@mtgame/core/models/league-user.ts","ng://@mtgame/core/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/team-permission.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/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/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","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","UserGender","HandballProfile","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","wizards","city","gender","is_active","basketballProfile","volleyballProfile","hockeyProfile","footballProfile","handballProfile","Team","getEmptyLogoClass","classList","team","logo","owner","users_count","won_games_count","games_count","score_sum","closest_game_datetime","closestGameDatetime","Organization","owner_id","League","socialLinks","link","indexOf","contact_email","contact_phone","alias","description","social_links","links","organization","tournaments_count","documents_count","cover","about","TournamentTypes","TournamentStatuses","TournamentGender","BasketballStatisticTypes","VolleyballStatisticTypes","GameTimeTypes","OvertimeTypes","TournamentSeason","preview_image","status","start_date","closed_date","tournaments","previewImage","startDate","closedDate","VolleyballGameTypes","TournamentSettings","age_from","age_to","max_team_players","max_game_players","type","tours_count","periods_count","period_time","overtime_type","overtime_time","overtime_score","game_type","timeout_count","timeout_time","substitute_count","game_up_to_score","volleyball_score_in_set","volleyball_score_in_last_set","manage_team_application","recruitment_is_open","transfer_is_open","basketball_statistic_type","volleyball_statistic_type","shot_clock_enabled","game_time_type","with_result_table","basketballStatisticType","volleyballStatisticType","gameTimeType","overtimeType","TournamentTeamWinner","team_id","tournament_id","points","Tournament","location","price","regulation_files","settings","league","teams_count","team_winner","team_second","team_third","season","season_id","regulationFile","teamWinner","teamSecond","teamThird","BasketballGameConfig","overtime_timeout_count","statistic_type","statisticType","PlayoffTypes","VolleyballGameConfig","gameType","best_of_three","getSetMaxScore","set","setsCount","scoreInLastSet","scoreInSet","score_in_set","score_in_last_set","LeagueCourt","address","league_id","MediaItem","Boolean","videoUrl","original_photo","list_photo","detail_photo","game","tournament","game_id","video_url","video_preview","is_live","originalPhoto","listPhoto","detailPhoto","videoPreview","HockeyGameConfig","periodsCount","FootballGameConfig","HandballGameConfig","generateArray","GameStatuses","GameResultTypes","PlayoffSettings","rounds","final_rounds","third_place_rounds","min_player_games_count","min_player_time","Playoff","_this","stages","log","teamsCount","getPlayoffStages","stagesCount","stage","playoffStage","pow","tournament_stage_id","is_official","TournamentGroup","sort","Game","_basketballGameConfig","gameConfig","_volleyballGameConfig","_hockeyGameConfig","_handballGameConfig","_footballGameConfig","scoreByPeriod","period","teamScore","competitorTeamScore","closed","competitorTeam","teamId","competitorTeamId","tournament_team_id","competitor_team","competitor_tournament_team_id","competitor_team_id","competitor_team_name","datetime","team_score","competitor_team_score","result_type","playoff_number","tournament_tour","game_config","basketball_game_config","volleyball_game_config","hockey_game_config","football_game_config","handball_game_config","score_by_period","playoff_stage","tournament_playoff_id","tournament_playoff","tournament_court","media_count","media_live_count","media","tournament_group","resultType","basketballGameConfig","volleyballGameConfig","hockeyGameConfig","footballGameConfig","handballGameConfig","tournamentPlayoff","tournamentCourt","tournamentGroup","updateItemInArray","force","checkFunction","isFunction","updatedAt","updateItemsInArray","items","forEach","addItemInArray","atEnd","addItemsInArray","reverse","deleteItemFromArray","functionToCheck","toString","TeamUserRole","Store","get","getSubject","pipe","save","appendItem","appendItems","prependItem","prependItems","updateItem","updateItems","deleteItem","dispose","complete","clearStorageData","clear","getEngine","BehaviorSubject","BaseService","store","Injectable","providedIn","ConfigService","configData","initialize","_a","Optional","Inject","TournamentTeam","gamesCount","wonGamesCount","group","final_standing","draw_games_count","last_games_count","last_games_won","missed_sum","score_points_sum","missed_points_sum","games","notifications_count","win_normal_time_games_count","lose_normal_time_games_count","win_overtime_games_count","lose_overtime_games_count","last_five_games","lastFiveGames","BasketballGameLogTypes","TeamUser","teamPlayer","role","number","TournamentDisqualification","tournament_team_user_id","date_from","date_to","matches_count","dateFrom","dateTo","LeaguePlayer","middleName","has_changes","rating","TournamentTeamUser","tournament_team","team_user","disqualified","disqualification","league_player","tournamentTeam","teamUser","leaguePlayer","BasketballStatistic","personalFouls","technicalFouls","unsportsmanlikeFouls","gameTime","tournament_team_user","month","win_lose","two_points_made","three_points_made","free_throws_made","one_points_made","two_point_attempts","three_point_attempts","free_throw_attempts","one_point_attempts","two_point_percent","three_point_percent","free_throw_percent","one_point_percent","assists","blocks","rebounds","offensive_rebounds","defensive_rebounds","steals","turnovers","personal_fouls","technical_fouls","unsportsmanlike_fouls","game_time","newbie","rank","tournamentTeamUser","BasketballGameTeamStatistic","BasketballGameStatistic","gameUserId","game_user_id","updated_at","HockeyGameLogTypes","HockeyAdvantageTypes","BasketballGameLog","active","isPointsType","two_point_made","three_point_made","free_throw_made","one_point_made","logType","isReboundType","rebound","offensive_rebound","defensive_rebound","isFoulType","personal_foul","technical_foul","unsportsmanlike_foul","getScore","compare","model","time","minutes","seconds","unique_id","log_type","is_highlight","GameUser","is_mvp","GameUserLimitationTypes","min_user_games_count","min_user_time","manual","GameUserLimitations","limitations","GameBaseApi","httpClient","configService","getUsers","gameId","toPromise","getMvp","getUsersLimitation","HttpClient","BasketballGameApi","getById","getTeamStatistic","getUserStatistic","getLogs","downloadProtocol","fileType","responseType","downloadFibaProtocol","Feedback","theme","message","files","captcha","FeedbackApi","sendFeedback","post","response","sendLeagueFeedback","leagueId","FileApi","upload","fileData","filename","width","params","HttpParams","formData","FormData","append","createZipArchive","files_1","files_1_1","FootballGameLogTypes","HockeyGameLog","_penalizedGameUserId","isScoreType","goal","shootout_goal","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","ppGoals","shGoals","evGoals","ppAssists","evAssists","shAssists","faceOffWins","faceOffLosses","shootoutAttempts","shootoutGoals","saves","goalsAgainst","shotsAgainst","round","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","block_shots","face_off_losses","face_off_wins","goals_against","safety_rate","penalty_minutes","plus_minus","HockeyStatistic","lose_games_count","pp_shots","ev_shots","sh_shots","pp_goals_percent","ev_goals_percent","sh_goals_percent","goals","shot_misses","shots_on_goal","shots_blocked","shots","goals_percent","shots_against","saves_percent","face_offs","face_off_percent","HockeyGameTeamStatistic","HockeyGameApi","format","downloadApplication","HandballGameLogTypes","FootballGameLog","penalty_goal","small_penalty_goal","FootballGameStatistic","shotMisses","shotsOnGoal","shotsBlocked","penaltyGoals","smallPenaltyGoals","totalGoals","penaltyAttempts","smallPenaltyAttempts","penaltySaves","penaltyGoalsAgainst","smallPenaltySaves","smallPenaltyGoalsAgainst","autoGoalsAgainst","penaltyShotsAgainst","smallPenaltyShotsAgainst","corners","free_kicks","penalty_goals","penalty_attempts","penalty_goals_against","penalty_saves","small_penalty_goals","small_penalty_attempts","small_penalty_goals_against","small_penalty_saves","fouls","yellow_cards","red_cards","perfect_passes","losses","outs","auto_goals","auto_goals_against","FootballStatistic","shots_on_goal_percent","total_goals","penalty_goals_percent","penalty_shots_against","penalty_saves_percent","small_penalty_goals_percent","small_penalty_shots_against","small_penalty_saves_percent","total_saves","total_goals_against","FootballGameTeamStatistic","FootballGameApi","TournamentStageStatuses","HandballGameLog","foul","yellow_card","red_card","HandballGameStatistic","penaltyShotsOnGoal","penaltyMisses","penaltyShots","penalty_misses","penalty_shots_on_goal","yellowCards","two_minute_fouls","HandballStatistic","penalty_shots","HandballGameTeamStatistic","HandballGameApi","TournamentNews","picture","text","author","GameTimelineStageItem","stage_id","playoff_stages_count","GameTimelineStages","current_tour","current_playoff_stage","LeagueNewsType","TournamentStage","VolleyballStatistic","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","receives","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","TournamentApi","tournamentId","getByAlias","getNews","getEvents","page","filters","search","tournamentTour","observe","total","headers","getTournamentStages","getPlayoff","getPlayoffGames","playoffId","playoffNumber","getGamesStages","getGames","applyGamesFilters","getTeams","getStageTeams","getTeamById","tournamentTeamId","getUserById","userId","getUserGames","tournamentUserId","getBasketballStatisticLeaders","applyStatisticLeadersFilters","getVolleyballStatisticLeaders","getHockeyStatisticLeaders","getFootballStatisticLeaders","getHandballStatisticLeaders","getBasketballStatistic","applyStatisticFilters","getVolleyballStatistic","getHockeyStatistic","getFootballStatistic","getHandballStatistic","getTournamentTeamUsers","myPermission","getTournamentTeamTournaments","getTournamentUserTournaments","tournamentTeamUserId","tournamentIds","tournamentStageId","statuses","tournamentCourtId","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","leaguePlayerId","getTournamentUsers","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","TeamPermissionTypes","NotificationSettings","popup","sound","browser","NotificationBaseApi","getCount","apiUrl","getList","markViewed","notificationId","markAllViewed","getNotificationSettings","updateNotificationSettings","NotificationApi","OrgNotificationApi","ReferenceApi","getCities","getSports","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","seasonId","getPlayoffs","TournamentStageApi","getGroups","stageId","UserAccess","edit","personal_data","teams","VolleyballGameLogType","UserPermission","personalData","UserApi","getCurrentUser","getAccess","updateUser","updateUserPhoto","changePassword","oldPassword","password","passwordConfirm","payload","old_password","password_confirm","changeEmail","changeEmailConfirm","token","getUserProfile","getBasketballProfile","getVolleyballProfile","updateUserProfile","userProfile","updateUserBasketballProfile","updateUserVolleyballProfile","getUserPermissions","updateUserPermission","getStatistics","getStreetballStatistics","getGameInvites","acceptGameInvite","declineGameInvite","searchUsers","setWizardShowed","wizard","put","VolleyballGameTeamStatistic","VolleyballGameStatistic","attackSpikes","attackShots","stuffBlocks","blockRebounds","excellentReceives","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","includes","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","timeout","isComboType","VolleyballGameApi","downloadProtocolLight","PublicTeamApi","PublicUserApi","getTournamentUser","getLeaguePlayer","BasketballGameLogTypeLocalization","_a$1","remove_game","two_point_attempt","three_point_attempt","free_throw_attempt","one_point_attempt","assist","block","steal","turnover","team_rebound","HockeyGameLogTypeLocalization","_a$2","shot_miss","shot_on_goal","shot_blocked","shootout_attempt","block_shot","face_off_lose","face_off_win","penalty_start","penalty_end","FootballGameLogTypeLocalization","_a$3","penalty_attempt","small_penalty_attempt","corner","free_kick","penalty_save","small_penalty_save","perfect_pass","loss","out","auto_goal","HandballGameLogTypeLocalization","_a$4","penalty_miss","penalty_shot_on_goal","two_minute_foul","OvertimeTypeLocalization","_a$5","to_score_diff","to_score_total","without_overtime","to_first_goal","to_first_goal_and_bullitts","bullitts","penalties","time_and_penalties","TeamUserRoleLocalization","_a$6","member","moderator","admin","coach","head_coach","playing_coach","manager","head_manager","captain","assistant","GameBasketballPositionLocalization","_a$7","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","VolleyballGameLogTypeLocalization","_a$8","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}\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 @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, 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';\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 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 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 photo: File;\n wizards: string[];\n city: City;\n gender: UserGender;\n isActive: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(user: User): any {\n return null;\n }\n\n get fullName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get shortName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get initials(): string {\n return [this.lastName, this.firstName].filter(s => s).map(s => s.substr(0, 1)).join('');\n }\n\n get age(): number {\n if (!this.birthDate) {\n return null;\n }\n const diff = (new Date()).getTime() - this.birthDate.getTime();\n return Math.floor(diff / (365 * 86400 * 1000));\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, enumField, DateField } from './util';\nimport { File } from './file';\n\nexport enum TournamentSeasonStatuses {\n open,\n in_progress,\n closed,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n alias: 'alias',\n logo: 'logo',\n cover: 'cover',\n preview_image: 'previewImage',\n status: 'status',\n start_date: 'startDate',\n closed_date: 'closedDate',\n tournaments: 'tournaments',\n },\n relation: {\n logo: File,\n cover: File,\n previewImage: File,\n status: enumField(TournamentSeasonStatuses),\n startDate: DateField,\n closedDate: DateField,\n }\n})\nexport class TournamentSeason extends BaseModel {\n id: number;\n name: string;\n alias: string;\n logo: File;\n cover: File;\n previewImage: File;\n status: TournamentSeasonStatuses;\n startDate: Date;\n closedDate: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateField } from './util';\nimport { File } from './file';\nimport { Sport } from './sport';\nimport { User } from './user';\nimport { City } from './city';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n sport: 'sport',\n logo: 'logo',\n owner: 'owner',\n city: 'city',\n users_count: 'usersCount',\n won_games_count: 'wonGamesCount',\n games_count: 'gamesCount',\n score_sum: 'scoreSum',\n closest_game_datetime: 'closestGameDatetime',\n },\n relation: {\n sport: Sport,\n logo: File,\n owner: User,\n city: City,\n closestGameDatetime: DateField,\n }\n})\nexport class Team extends BaseModel {\n id: number;\n name: string;\n sport: Sport;\n logo: File;\n owner: User;\n city: City;\n usersCount: number;\n wonGamesCount: number;\n gamesCount: number;\n scoreSum: number;\n closestGameDatetime: Date;\n\n getEmptyLogoClass(): string {\n const classList = ['empty-logo'];\n if (this.sport.isBasketball()) {\n classList.push('empty-logo-basketball');\n }\n if (this.sport.isVolleyball()) {\n classList.push('empty-logo-volleyball');\n }\n if (this.sport.isHockey()) {\n classList.push('empty-logo-hockey');\n }\n if (this.sport.isFootball()) {\n classList.push('empty-logo-football');\n }\n if (this.sport.isHandball()) {\n classList.push('empty-logo-handball');\n }\n return classList.join(' ');\n }\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(team: Team): any {\n return null;\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\nimport { User } from './user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n owner_id: 'ownerId',\n owner: 'owner',\n },\n relation: {\n owner: User,\n }\n})\nexport class Organization extends BaseModel {\n id: number;\n ownerId: number;\n owner: User;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField } from './util';\nimport { Organization } from './organization';\nimport { File } from './file';\nimport { Sport } from './sport';\n\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n logo: 'logo',\n contact_email: 'contactEmail',\n contact_phone: 'contactPhone',\n name: 'name',\n alias: 'alias',\n sport: 'sport',\n description: 'description',\n social_links: 'socialLinks',\n links: 'links',\n organization: 'organization',\n tournaments_count: 'tournamentsCount',\n documents_count: 'documentsCount',\n closest_game_datetime: 'closestGameDatetime',\n cover: 'cover',\n about: 'about',\n },\n relation: {\n organization: Organization,\n logo: File,\n cover: File,\n sport: Sport,\n }\n})\nexport class League extends BaseModel {\n id: number;\n logo: File;\n contactEmail: string;\n contactPhone: string;\n name: string;\n alias: string;\n sport: Sport;\n description: string;\n socialLinks: string[];\n links: string[];\n organization: Organization;\n tournamentsCount: number;\n documentsCount: number;\n closestGameDatetime: string;\n cover: File;\n about: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get vkLink(): string {\n return this.socialLinks.find(link => link.indexOf('vk.com/') > -1);\n }\n\n get fbLink(): string {\n return this.socialLinks.find(link => link.indexOf('facebook.com/') > -1);\n }\n\n get instaLink(): string {\n return this.socialLinks.find(link => link.indexOf('instagram.com/') > -1);\n }\n\n get youtubeLink(): string {\n return this.socialLinks.find(link => link.indexOf('youtube.com/') > -1);\n }\n\n get telegramLink(): string {\n return this.socialLinks.find(link =>\n link.substr(0, 13) === 'https://t.me/' ||\n link.substr(0, 17) === 'https://www.t.me/'\n );\n }\n\n get tiktokLink(): string {\n return this.socialLinks.find(link => link.indexOf('tiktok.com/') > -1);\n }\n}\n","import { BaseModel, enumField, ModelInstance, DateTimeField, ToBackHook, ToFrontHook } from './util';\nimport { City } from './city';\nimport { File } from './file';\nimport { League } from './league';\nimport { Sport } from './sport';\nimport { Team } from './team';\nimport { TournamentSeason } from './tournament-season';\n\nexport enum TournamentTypes {\n group = 'group',\n elimination = 'elimination',\n fiba = 'fiba'\n}\n\nexport enum TournamentStatuses {\n open,\n in_progress,\n closed,\n}\n\nexport enum TournamentGender {\n male= 1,\n female,\n all\n}\n\nexport enum BasketballStatisticTypes {\n standard = 1,\n light,\n advanced\n}\n\nexport enum VolleyballStatisticTypes {\n standard = 1,\n light,\n advanced\n}\n\nexport enum GameTimeTypes {\n clean = 1,\n dirty,\n}\n\nexport enum OvertimeTypes {\n to_score_total = 1,\n to_score_diff,\n time,\n without_overtime,\n to_first_goal,\n to_first_goal_and_bullitts,\n bullitts,\n penalties,\n time_and_penalties\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n gender: 'gender',\n age_from: 'ageFrom',\n age_to: 'ageTo',\n max_team_players: 'maxTeamPlayers',\n max_game_players: 'maxGamePlayers',\n type: 'type',\n tours_count: 'toursCount',\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n overtime_score: 'overtimeScore',\n game_type: 'gameType',\n timeout_count: 'timeoutCount',\n timeout_time: 'timeoutTime',\n substitute_count: 'substituteCount',\n game_up_to_score: 'gameUpToScore',\n volleyball_score_in_set: 'volleyballScoreInSet',\n volleyball_score_in_last_set: 'volleyballScoreInLastSet',\n manage_team_application: 'manageTeamApplication',\n recruitment_is_open: 'recruitmentIsOpen',\n transfer_is_open: 'transferIsOpen',\n basketball_statistic_type: 'basketballStatisticType',\n volleyball_statistic_type: 'volleyballStatisticType',\n shot_clock_enabled: 'shotClockEnabled',\n game_time_type: 'gameTimeType',\n with_result_table: 'withResultTable'\n },\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\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 team: 'team',\n points: 'points',\n },\n relation: {\n team: Team,\n }\n})\nexport class TournamentTeamWinner extends BaseModel {\n id: number;\n teamId: number;\n tournamentId: number;\n team: Team;\n points: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n alias: 'alias',\n logo: 'logo',\n cover: 'cover',\n preview_image: 'previewImage',\n city: 'city',\n sport: 'sport',\n location: 'location',\n description: 'description',\n date: 'date',\n price: 'price',\n regulation_files: 'regulationFiles',\n settings: 'settings',\n league: 'league',\n teams_count: 'teamsCount',\n closest_game_datetime: 'closestGameDatetime',\n status: 'status',\n team_winner: 'teamWinner',\n team_second: 'teamSecond',\n team_third: 'teamThird',\n season: 'season',\n season_id: 'seasonId',\n },\n relation: {\n logo: File,\n cover: File,\n previewImage: File,\n city: City,\n sport: Sport,\n regulationFile: File,\n settings: TournamentSettings,\n date: DateTimeField,\n league: League,\n status: enumField(TournamentStatuses),\n teamWinner: TournamentTeamWinner,\n teamSecond: TournamentTeamWinner,\n teamThird: TournamentTeamWinner,\n season: TournamentSeason,\n }\n})\nexport class Tournament extends BaseModel {\n id: number;\n name: string;\n alias: string;\n logo: File;\n cover: File;\n previewImage: File;\n city: City;\n sport: Sport;\n location: string;\n description: string;\n date: Date;\n price: number;\n regulationFiles: File[];\n settings: TournamentSettings;\n league: League;\n teamsCount: number;\n closestGameDatetime: string;\n status: TournamentStatuses;\n teamWinner: TournamentTeamWinner;\n teamSecond: TournamentTeamWinner;\n teamThird: TournamentTeamWinner;\n season: TournamentSeason;\n seasonId: number;\n\n getEmptyLogoClass(): string {\n const classList = ['empty-logo'];\n if (this.sport.isBasketball()) {\n classList.push('empty-logo-basketball');\n }\n if (this.sport.isVolleyball()) {\n classList.push('empty-logo-volleyball');\n }\n if (this.sport.isHockey()) {\n classList.push('empty-logo-hockey');\n }\n if (this.sport.isFootball()) {\n classList.push('empty-logo-football');\n }\n return classList.join(' ');\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { VolleyballStatisticTypes } from './tournament';\n\nexport enum VolleyballGameTypes {\n best_of_five = 1,\n best_of_three\n}\n\n@ModelInstance({\n mappingFields: {\n game_type: 'gameType',\n timeout_count: 'timeoutCount',\n timeout_time: 'timeoutTime',\n substitute_count: 'substituteCount',\n score_in_set: 'scoreInSet',\n score_in_last_set: 'scoreInLastSet',\n statistic_type: 'statisticType'\n },\n relation: {\n gameType: enumField(VolleyballGameTypes),\n statisticType: enumField(VolleyballStatisticTypes),\n }\n})\nexport class VolleyballGameConfig extends BaseModel {\n gameType: VolleyballGameTypes;\n timeoutCount: number;\n timeoutTime: number;\n substituteCount: number;\n scoreInSet: number;\n scoreInLastSet: number;\n statisticType: VolleyballStatisticTypes;\n\n get setsCount(): number {\n return this.gameType === VolleyballGameTypes.best_of_three ? 3 : 5;\n }\n\n getSetMaxScore(set: number) {\n return set === this.setsCount ? this.scoreInLastSet : this.scoreInSet;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { BasketballStatisticTypes, GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n game_up_to_score: 'gameUpToScore',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n overtime_score: 'overtimeScore',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n statistic_type: 'statisticType',\n shot_clock_enabled: 'shotClockEnabled',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n statisticType: enumField(BasketballStatisticTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class BasketballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n gameUpToScore: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n overtimeScore: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n statisticType: BasketballStatisticTypes;\n shotClockEnabled: boolean;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { generateArray } from '../utils/array';\n\nexport enum PlayoffTypes {\n double_elimination = 'double_elimination',\n elimination = 'elimination'\n}\n\n@ModelInstance({\n mappingFields: {\n rounds: 'rounds',\n final_rounds: 'finalRounds',\n third_place_rounds: 'thirdPlaceRounds',\n teams_count: 'teamsCount',\n type: 'type',\n min_player_games_count: 'minPlayerGamesCount',\n min_player_time: 'minPlayerTime',\n },\n relation: {\n type: enumField(PlayoffTypes)\n }\n})\nexport class PlayoffSettings extends BaseModel {\n rounds: number;\n finalRounds: number;\n thirdPlaceRounds: number;\n teamsCount: number;\n type: PlayoffTypes;\n minPlayerGamesCount: number;\n minPlayerTime: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n settings: 'settings',\n tournament_id: 'tournamentId',\n tournament_stage_id: 'tournamentStageId',\n is_official: 'isOfficial'\n },\n relation: {\n settings: PlayoffSettings\n }\n})\nexport class Playoff extends BaseModel {\n id: number;\n name: string;\n settings: PlayoffSettings;\n tournamentId: number;\n tournamentStageId: number;\n isOfficial: boolean;\n private stages: {title: string, value: number}[] = [];\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get stagesCount(): number {\n return Math.log(this.settings.teamsCount) / Math.log(2);\n }\n\n getPlayoffStages() {\n if (this.stages.length === 0 && this.settings.teamsCount) {\n const stagesCount = Math.log(this.settings.teamsCount) / Math.log(2);\n this.stages = generateArray(stagesCount).map(stage => {\n const playoffStage = this.settings.teamsCount / 2 ** stage;\n let title = '';\n if (playoffStage === 1) {\n title = 'Финал';\n } else {\n title = `1 / ${playoffStage}`;\n }\n return {\n value: stage,\n title\n };\n });\n }\n return this.stages;\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n address: 'address',\n league_id: 'leagueId'\n }\n})\nexport class LeagueCourt extends BaseModel {\n id: number;\n name: string;\n address: string;\n leagueId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n original_photo: 'originalPhoto',\n list_photo: 'listPhoto',\n detail_photo: 'detailPhoto',\n game: 'game',\n tournament: 'tournament',\n game_id: 'gameId',\n tournament_id: 'tournament_id',\n video_url: 'videoUrl',\n video_preview: 'videoPreview',\n is_live: 'isLive',\n },\n relation: {\n originalPhoto: File,\n listPhoto: File,\n detailPhoto: File,\n videoPreview: File\n }\n})\nexport class MediaItem extends BaseModel {\n id: number;\n originalPhoto: File;\n listPhoto: File;\n detailPhoto: File;\n gameId: number;\n tournamentId: number;\n videoUrl: string;\n videoPreview: File;\n isLive: boolean;\n\n get isVideo(): boolean {\n return Boolean(this.videoUrl);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class HockeyGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get overtimePeriod(): number {\n return this.periodsCount + 1;\n }\n\n get bullitsPeriod(): number {\n return this.periodsCount + 2;\n }\n\n get playoffBullitsPeriod(): number {\n return this.periodsCount + 3;\n }\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class FootballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class HandballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","export function generateArray(length: number): number[] {\n if (length <= 0) {\n return [];\n }\n return Array.apply(null, Array(length)).map((_, i) => i + 1);\n}\n\nexport function getArrayChunks(array: any[], length: number): any[][] {\n const chunks = [];\n const chunkLength = Math.ceil(array.length / length);\n if (chunkLength === 0) {\n return [array];\n }\n for (let i = 0; i < chunkLength; i++) {\n chunks.push(array.slice(i * length, (i + 1) * length));\n }\n return chunks;\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField, listField } from './util';\nimport { Team } from './team';\nimport { BasketballGameConfig } from './basketball-game-config';\nimport { VolleyballGameConfig } from './volleyball-game-config';\nimport { LeagueCourt } from './league-court';\nimport { MediaItem } from './media-item';\nimport { HockeyGameConfig } from './hockey-game-config';\nimport { Tournament } from './tournament';\nimport { FootballGameConfig } from './football-game-config';\nimport { HandballGameConfig } from './handball-game-config';\nimport { Playoff } from './playoff';\nimport { TournamentGroup } from './tournament-group';\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 status: 'status',\n team: 'team',\n tournament_team_id: 'tournamentTeamId',\n team_id: 'teamId',\n competitor_team: 'competitorTeam',\n competitor_tournament_team_id: 'competitorTournamentTeamId',\n competitor_team_id: 'competitorTeamId',\n competitor_team_name: 'competitorTeamName',\n datetime: 'datetime',\n location: 'location',\n team_score: 'teamScore',\n competitor_team_score: 'competitorTeamScore',\n result_type: 'resultType',\n playoff_number: 'playoffNumber',\n tournament_id: 'tournamentId',\n tournament_tour: 'tournamentTour',\n game_config: 'gameConfig',\n basketball_game_config: 'basketballGameConfig',\n volleyball_game_config: 'volleyballGameConfig',\n hockey_game_config: 'hockeyGameConfig',\n football_game_config: 'footballGameConfig',\n handball_game_config: 'handballGameConfig',\n score_by_period: 'scoreByPeriod',\n playoff_stage: 'playoffStage',\n tournament_stage_id: 'tournamentStageId',\n tournament_playoff_id: 'tournamentPlayoffId',\n tournament_playoff: 'tournamentPlayoff',\n tournament_court: 'tournamentCourt',\n media_count: 'mediaCount',\n media_live_count: 'mediaLiveCount',\n media: 'media',\n tournament: 'tournament',\n tournament_group: 'tournamentGroup',\n },\n relation: {\n status: enumField(GameStatuses),\n team: Team,\n competitorTeam: Team,\n datetime: DateTimeField,\n resultType: enumField(GameResultTypes),\n basketballGameConfig: BasketballGameConfig,\n volleyballGameConfig: VolleyballGameConfig,\n hockeyGameConfig: HockeyGameConfig,\n footballGameConfig: FootballGameConfig,\n handballGameConfig: HandballGameConfig,\n tournamentPlayoff: Playoff,\n tournamentCourt: LeagueCourt,\n media: listField(MediaItem),\n tournament: Tournament,\n tournamentGroup: TournamentGroup,\n }\n})\nexport class Game extends BaseModel {\n private _basketballGameConfig: BasketballGameConfig;\n private _volleyballGameConfig: VolleyballGameConfig;\n private _hockeyGameConfig: HockeyGameConfig;\n private _footballGameConfig: FootballGameConfig;\n private _handballGameConfig: HandballGameConfig;\n\n id: number;\n status: GameStatuses;\n team: Team;\n teamId: number;\n tournamentTeamId: number;\n competitorTeam: Team;\n competitorTeamId: number;\n competitorTournamentTeamId: number;\n competitorTeamName: string;\n gameConfig: any;\n datetime: Date;\n location: string;\n teamScore: number;\n competitorTeamScore: number;\n resultType: GameResultTypes;\n playoffNumber: string;\n tournamentId: number;\n tournamentTour: number;\n scoreByPeriod: any;\n playoffStage: string;\n tournamentStageId: number;\n tournamentPlayoffId: number;\n tournamentPlayoff: Playoff;\n tournamentCourt: LeagueCourt;\n mediaCount: number;\n mediaLiveCount: number;\n media: MediaItem[];\n tournament: Tournament;\n tournamentGroup: TournamentGroup;\n\n get basketballGameConfig(): BasketballGameConfig {\n if (this._basketballGameConfig && this._basketballGameConfig.periodsCount) {\n return this._basketballGameConfig;\n }\n if (this.gameConfig) {\n this._basketballGameConfig = BasketballGameConfig.toFront(this.gameConfig);\n }\n return this._basketballGameConfig;\n }\n\n set basketballGameConfig(value) {\n this._basketballGameConfig = value;\n }\n\n get volleyballGameConfig(): VolleyballGameConfig {\n if (this._volleyballGameConfig && this._volleyballGameConfig.setsCount) {\n return this._volleyballGameConfig;\n }\n if (this.gameConfig) {\n this._volleyballGameConfig = VolleyballGameConfig.toFront(this.gameConfig);\n }\n return this._volleyballGameConfig;\n }\n\n set volleyballGameConfig(value) {\n this._volleyballGameConfig = value;\n }\n\n get hockeyGameConfig(): HockeyGameConfig {\n if (this._hockeyGameConfig && this._hockeyGameConfig.periodsCount) {\n return this._hockeyGameConfig;\n }\n if (this.gameConfig) {\n this._hockeyGameConfig = HockeyGameConfig.toFront(this.gameConfig);\n }\n return this._hockeyGameConfig;\n }\n\n set hockeyGameConfig(value) {\n this._hockeyGameConfig = value;\n }\n\n get handballGameConfig(): HandballGameConfig {\n if (this._handballGameConfig && this._handballGameConfig.periodsCount) {\n return this._handballGameConfig;\n }\n if (this.gameConfig) {\n this._handballGameConfig = HandballGameConfig.toFront(this.gameConfig);\n }\n return this._handballGameConfig;\n }\n\n set handballGameConfig(value) {\n this._handballGameConfig = value;\n }\n\n get footballGameConfig(): FootballGameConfig {\n if (this._footballGameConfig && this._footballGameConfig.periodsCount) {\n return this._footballGameConfig;\n }\n if (this.gameConfig) {\n this._footballGameConfig = FootballGameConfig.toFront(this.gameConfig);\n }\n return this._footballGameConfig;\n }\n\n set footballGameConfig(value) {\n this._footballGameConfig = value;\n }\n\n get scoreByPeriodList(): {period: number, teamScore: number, competitorTeamScore: number}[] {\n if (!this.scoreByPeriod) {\n return [];\n }\n return Object.keys(this.scoreByPeriod).map(period => ({\n period: +period,\n teamScore: this.scoreByPeriod[period][0],\n competitorTeamScore: this.scoreByPeriod[period][1]\n }));\n }\n\n get isClosed(): boolean {\n return this.status === GameStatuses.closed;\n }\n\n get isTeamWon() {\n return this.teamScore > this.competitorTeamScore;\n }\n\n get isCompetitorTeamWon() {\n return this.competitorTeamScore > this.teamScore;\n }\n\n get teamWinnerId() {\n if (this.status !== GameStatuses.closed) {\n return null;\n }\n if (this.teamScore === this.competitorTeamScore) {\n return null;\n }\n if (this.team.id) {\n return this.teamScore > this.competitorTeamScore ? this.team.id : this.competitorTeam.id;\n } else {\n return this.teamScore > this.competitorTeamScore ? this.teamId : this.competitorTeamId;\n }\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { TournamentTeam } from './tournament-team';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n sort: 'sort',\n tournament_stage_id: 'tournamentStageId'\n }\n})\nexport class TournamentGroup extends BaseModel {\n id: number;\n name: string;\n sort: number;\n tournamentStageId: number;\n teams: TournamentTeam[];\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","export function updateItemInArray(data: any[], item: any, force = false, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return data;\n }\n return data.map(v => {\n if (checkFunction && isFunction(checkFunction)) {\n if (!checkFunction(v)) {\n return v;\n }\n } else if (v.id !== item.id) {\n return v;\n }\n if (v.updatedAt && item.updatedAt && !force) {\n return v.updatedAt > item.updatedAt ? v : item;\n }\n return item;\n });\n}\n\nexport function updateItemsInArray(data: any[], items: any[], force: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n items.forEach(item => {\n data = updateItemInArray(data, item, force, checkFunction);\n });\n return data;\n}\n\nexport function patchItemInArray(data: any[], item: any, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return data;\n }\n return data.map(v => {\n if (checkFunction && isFunction(checkFunction)) {\n if (!checkFunction(v)) {\n return v;\n }\n } else if (v.id !== item.id) {\n return v;\n }\n return Object.assign(v, item);\n });\n}\n\nexport function addItemInArray(data: any[], item: any, atEnd: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return [item];\n }\n if (data.find(i => isFunction(checkFunction) ? checkFunction(i) : i.id === item.id)) {\n return data;\n }\n\n return atEnd\n ? [...data, item]\n : [item, ...data];\n}\n\nexport function addItemsInArray(data: any[], items: any[], atEnd: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n (!atEnd\n ? Object.assign([], items).reverse()\n : items\n ).forEach(item => {\n data = addItemInArray(data, item, atEnd, checkFunction);\n });\n return data;\n}\n\nexport function deleteItemFromArray(data: any[], item: any): any[] {\n if (!Array.isArray(data)) {\n return [];\n }\n if (isFunction(item)) {\n return data.filter(i => !item(i));\n } else {\n return data.filter(v => v.id !== item.id);\n }\n}\n\nfunction isFunction(functionToCheck) {\n return functionToCheck && {}.toString.call(functionToCheck) === '[object Function]';\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { User } from './user';\nimport { Team } from './team';\n\nexport enum TeamUserRole {\n member = 1,\n moderator,\n admin,\n coach,\n head_coach,\n playing_coach,\n manager,\n head_manager,\n captain,\n assistant,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n user: 'user',\n role: 'role',\n number: 'number',\n team: 'team',\n },\n relation: {\n user: User,\n team: Team,\n role: enumField(TeamUserRole)\n }\n})\nexport class TeamUser extends BaseModel {\n id: number;\n teamId: number;\n user: User;\n team: Team;\n number: number;\n role: TeamUserRole;\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(teamPlayer: TeamUser): any {\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { addItemInArray, addItemsInArray, deleteItemFromArray, updateItemInArray, updateItemsInArray } from '../utils/data';\nimport { StorageEngine } from './storage-engine';\n\nexport class Store {\n private data: {[key: string]: BehaviorSubject<any>} = {};\n\n constructor(private engine?: StorageEngine) {\n }\n\n get(key: string): Observable<any> {\n return this.getSubject(key).pipe(filter(item => item !== undefined));\n }\n\n value(key: string): any {\n return this.getSubject(key).value;\n }\n\n save(key: string, value: any): void {\n this.getSubject(key).next(value);\n if (this.engine) {\n this.engine.save(key, value);\n }\n }\n\n appendItem(key: string, value: any, checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemInArray(this.value(key) || [], value, true, checkFunction));\n }\n\n appendItems(key: string, value: any[], checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemsInArray(this.value(key) || [], value, true));\n }\n\n prependItem(key: string, value: any, checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemInArray(this.value(key) || [], value, false, checkFunction));\n }\n\n prependItems(key: string, value: any[], checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemsInArray(this.value(key) || [], value, false, checkFunction));\n }\n\n updateItem(key: string, value: any, force?: boolean, checkFunction?: (item: any) => boolean): void {\n this.save(key, updateItemInArray(this.value(key) || [], value, force, checkFunction));\n }\n\n updateItems(key: string, value: any, force?: boolean, checkFunction?: (item: any) => boolean): void {\n this.save(key, updateItemsInArray(this.value(key) || [], value, force, checkFunction));\n }\n\n deleteItem(key: string, value: any): void {\n this.save(key, deleteItemFromArray(this.value(key) || [], value));\n }\n\n dispose(): void {\n for (const key of Object.keys(this.data)) {\n this.data[key].complete();\n delete this.data[key];\n }\n }\n\n clearStorageData(): void {\n if (this.engine) {\n this.engine.clear();\n }\n }\n\n getEngine(): StorageEngine {\n return this.engine;\n }\n\n private getSubject(key: string): BehaviorSubject<any> {\n if (!this.data[key]) {\n this.data[key] = new BehaviorSubject<any>(this.engine ? this.engine.get(key) : undefined);\n }\n return this.data[key];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '../storage/store';\n\n@Injectable({providedIn: 'root'})\nexport class BaseService {\n protected store = new Store();\n\n dispose(): void {\n this.store.dispose();\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { BaseService } from './base.service';\n\nconst CONFIG_STORE_KEY = 'config';\n\nexport const CONFIG_DATA = 'mtg-core-config-data';\n\n@Injectable({providedIn: 'root'})\nexport class ConfigService extends BaseService {\n constructor(\n @Optional() @Inject(CONFIG_DATA) private configData: any\n ) {\n super();\n if (configData) {\n this.initialize(configData);\n }\n }\n\n get config$() {\n return this.store.get(CONFIG_STORE_KEY);\n }\n\n get config() {\n return this.store.value(CONFIG_STORE_KEY) || {};\n }\n\n initialize(data: any): void {\n this.store.save(CONFIG_STORE_KEY, data);\n }\n\n set(key: string, value: any): void {\n this.store.save(CONFIG_STORE_KEY, {\n ...this.config,\n [key]: value\n });\n }\n\n get(key: string): any {\n return this.store.value(CONFIG_STORE_KEY) && this.store.value(CONFIG_STORE_KEY)[key];\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\nimport { TournamentGroup } from './tournament-group';\nimport { Game } from './game';\nimport { Tournament } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n tournament_id: 'tournamentId',\n tournament: 'tournament',\n team: 'team',\n group: 'group',\n final_standing: 'finalStanding',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n draw_games_count: 'drawGamesCount',\n last_games_count: 'lastGamesCount',\n last_games_won: 'lastGamesWon',\n score_sum: 'scoreSum',\n missed_sum: 'missedSum',\n score_points_sum: 'scorePointsSum',\n missed_points_sum: 'missedPointsSum',\n points: 'points',\n users_count: 'usersCount',\n games: 'games',\n notifications_count: 'notificationsCount',\n win_normal_time_games_count: 'winNormalTimeGamesCount',\n lose_normal_time_games_count: 'loseNormalTimeGamesCount',\n win_overtime_games_count: 'winOvertimeGamesCount',\n lose_overtime_games_count: 'loseOvertimeGamesCount',\n last_five_games: 'lastFiveGames'\n },\n relation: {\n 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 teamId: number;\n tournamentId: number;\n tournament: Tournament;\n team: Team;\n group: TournamentGroup;\n finalStanding: number;\n gamesCount: number;\n wonGamesCount: number;\n drawGamesCount: number;\n lastGamesCount: number;\n lastGamesWon: number;\n scoreSum: number;\n missedSum: number;\n scorePointsSum: number;\n missedPointsSum: number;\n points: number;\n usersCount: number;\n games: Game[];\n notificationsCount: number;\n winNormalTimeGamesCount: number;\n loseNormalTimeGamesCount: number;\n winOvertimeGamesCount: number;\n loseOvertimeGamesCount: number;\n lastFiveGames: Game[];\n\n get gamesWonPercent(): number {\n if (!this.gamesCount) {\n return 0;\n }\n return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { enumField, ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateTimeField } from './util';\nimport { GameUser } from './game-user';\nimport { GameLogBase } from './game-log-base';\n\nexport enum BasketballGameLogTypes {\n enter_game = 1,\n exit_game,\n remove_game,\n two_point_made,\n three_point_made,\n free_throw_made,\n two_point_attempt,\n three_point_attempt,\n free_throw_attempt,\n assist,\n block,\n rebound,\n offensive_rebound,\n defensive_rebound,\n steal,\n turnover,\n personal_foul,\n technical_foul,\n unsportsmanlike_foul,\n one_point_attempt,\n one_point_made,\n timeout,\n team_rebound,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(BasketballGameLogTypes),\n }\n})\nexport class BasketballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: BasketballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n combined: BasketballGameLog;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n\n isPointsType() {\n return [\n BasketballGameLogTypes.two_point_made,\n BasketballGameLogTypes.three_point_made,\n BasketballGameLogTypes.free_throw_made,\n BasketballGameLogTypes.one_point_made,\n ].indexOf(this.logType) > -1;\n }\n\n isReboundType() {\n return [\n BasketballGameLogTypes.rebound,\n BasketballGameLogTypes.offensive_rebound,\n BasketballGameLogTypes.defensive_rebound\n ].indexOf(this.logType) > -1;\n }\n\n isFoulType() {\n return [\n BasketballGameLogTypes.personal_foul,\n BasketballGameLogTypes.technical_foul,\n BasketballGameLogTypes.unsportsmanlike_foul\n ].indexOf(this.logType) > -1;\n }\n\n getScore() {\n const scoreMapping = {\n [BasketballGameLogTypes.one_point_made]: 1,\n [BasketballGameLogTypes.free_throw_made]: 1,\n [BasketballGameLogTypes.two_point_made]: 2,\n [BasketballGameLogTypes.three_point_made]: 3\n };\n return scoreMapping[this.logType];\n }\n\n compare(model: BasketballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team_user_id: 'tournamentTeamUserId',\n date_from: 'dateFrom',\n date_to: 'dateTo',\n matches_count: 'matchesCount',\n },\n relation: {\n dateFrom: DateField,\n dateTo: DateField,\n }\n})\nexport class TournamentDisqualification extends BaseModel {\n id: number;\n tournamentTeamUserId: number;\n dateFrom: Date;\n dateTo: Date;\n matchesCount: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { File } from './file';\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 photo: 'photo',\n has_changes: 'hasChanges',\n rating: 'rating'\n },\n relation: {\n photo: File,\n }\n})\nexport class LeaguePlayer extends BaseModel {\n\n id: number;\n userId: number;\n leagueId: number;\n firstName: string;\n lastName: string;\n middleName: string;\n photo: File;\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 @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';\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 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 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 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 @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}\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].indexOf(this.logType) > -1;\n }\n\n isPenaltyType(): boolean {\n return [\n HockeyGameLogTypes.minor_penalty, HockeyGameLogTypes.major_penalty,\n HockeyGameLogTypes.misconduct_penalty, HockeyGameLogTypes.game_misconduct_penalty,\n HockeyGameLogTypes.penalty_shot, HockeyGameLogTypes.match_penalty\n ].indexOf(this.logType) > -1;\n }\n\n isAfter(log: HockeyGameLog): boolean {\n if (this.time === log.time && this.period === log.period) {\n return this.id > log.id;\n }\n if (this.period === log.period) {\n return this.time > log.time;\n }\n return this.period > log.period;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { TeamUser } from './team-user';\nimport { TournamentTeamUser } from './tournament-team-user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n game_id: 'gameId',\n team_user: 'teamUser',\n tournament_team_user: 'tournamentTeamUser',\n is_mvp: 'isMvp',\n updated_at: 'updatedAt'\n },\n relation: {\n teamUser: TeamUser,\n tournamentTeamUser: TournamentTeamUser,\n updatedAt: DateTimeField,\n }\n})\nexport class GameUser extends BaseModel {\n id: number;\n gameId: number;\n teamUser: TeamUser;\n tournamentTeamUser: TournamentTeamUser;\n isMvp: boolean;\n updatedAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField, listField } from './util';\n\ninterface LimitationValue {\n current: number;\n required: number;\n}\n\n@ModelInstance({\n mappingFields: {\n min_user_games_count: 'minUserGamesCount',\n min_user_time: 'minUserTime',\n manual: 'manual',\n },\n})\nexport class GameUserLimitationTypes extends BaseModel {\n minUserGamesCount: LimitationValue;\n minUserTime: LimitationValue;\n manual: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(data: any): any {\n }\n}\n\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user_id: 'tournamentTeamUserId',\n limitations: 'limitations'\n },\n relation: {\n limitations: GameUserLimitationTypes\n }\n})\nexport class GameUserLimitations extends BaseModel {\n tournamentTeamUserId: number;\n limitations: GameUserLimitationTypes;\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(data: any): any {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { GameUser } from '../models/game-user';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\nimport { GameUserLimitations } from '../models/game-user-limitation';\n\n@Injectable({providedIn: 'root'})\nexport class GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService,\n ) {\n }\n\n async getUsers(gameId: number): Promise<GameUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/users/`).pipe(\n map(result => GameUser.toFront(result))\n ).toPromise();\n }\n\n async getMvp(gameId: number): Promise<GameUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/mvp/`).pipe(\n map(result => GameUser.toFront(result))\n ).toPromise();\n }\n\n async getUsersLimitation(gameId: number): Promise<GameUserLimitations[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/users_limitation/`).pipe(\n map(result => GameUserLimitations.toFront(result))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { BasketballGameTeamStatistic } from '../models/basketball-game-team-statistic';\nimport { BasketballGameStatistic } from '../models/basketball-game-statistic';\nimport { BasketballGameLog } from '../models/basketball-game-log';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class BasketballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<BasketballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/team_statistic/`).pipe(\n map(result => BasketballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<BasketballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/user_statistic/`).pipe(\n map(result => BasketballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<BasketballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/logs/`).pipe(\n map(result => BasketballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, fileType: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/game_protocol/?file_type=${fileType}`,\n {responseType: 'blob'}\n )\n .toPromise();\n }\n\n async downloadFibaProtocol(gameId: number, fileType: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/game_protocol_fiba/?file_type=${fileType}`,\n {responseType: 'blob'}\n )\n .toPromise();\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n theme: 'theme',\n message: 'message',\n files: 'files',\n email: 'email',\n captcha: 'captcha',\n },\n relation: {\n files: File\n }\n})\nexport class Feedback {\n id: number;\n theme: string;\n message: string;\n email: string;\n captcha: string;\n files: File[];\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(value: any): any {\n return null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Feedback } from '../models/feedback';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class FeedbackApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async sendFeedback(data: any): Promise<Feedback> {\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/feedback/`, Feedback.toBack(data))\n .pipe(map(response => Feedback.toFront(response)))\n .toPromise();\n }\n\n async sendLeagueFeedback(leagueId: number, data: any): Promise<Feedback> {\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/feedback/`, Feedback.toBack(data))\n .pipe(map(response => Feedback.toFront(response)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { map } from 'rxjs/operators';\nimport { File } from '../models/file';\n\n@Injectable({providedIn: 'root'})\nexport class FileApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async upload(fileData: any, filename?: string, width?: number, height?: number): Promise<File> {\n let params = new HttpParams();\n if (width && height) {\n params = params.set('width', width.toString()).set('height', height.toString());\n }\n\n const formData = new FormData();\n formData.append('file', fileData, filename);\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/file/`, formData, {params})\n .pipe(map(data => File.toFront(data)))\n .toPromise();\n }\n\n async createZipArchive(files: {file: any, filename: string}[]): Promise<any> {\n const formData = new FormData();\n for (const file of files) {\n formData.append('files', file.file, file.filename);\n }\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/file/zip_archive/`, formData, {responseType: 'blob'})\n .toPromise();\n }\n}\n","import { enumField, ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateTimeField, penaltyTypeField } from './util';\nimport { GameUser } from './game-user';\nimport { GameLogBase } from './game-log-base';\n\nexport enum FootballGameLogTypes {\n enter_game = 1,\n exit_game,\n shot_miss,\n shot_on_goal,\n shot_blocked,\n goal,\n penalty_attempt,\n penalty_goal,\n penalty_save,\n small_penalty_attempt,\n small_penalty_goal,\n small_penalty_save,\n assist,\n block_shot,\n corner,\n free_kick,\n foul,\n save,\n yellow_card,\n red_card,\n perfect_pass,\n loss,\n steal,\n out,\n timeout,\n auto_goal,\n}\n\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n is_goalie: 'isGoalie',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(FootballGameLogTypes)\n }\n})\nexport class FootballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: FootballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n isGoalie: boolean;\n\n compare(model: FootballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n isScoreType(): boolean {\n return [FootballGameLogTypes.goal, FootballGameLogTypes.penalty_goal, FootballGameLogTypes.small_penalty_goal].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 block_shots: 'blockShots',\n face_off_losses: 'faceOffLosses',\n face_off_wins: 'faceOffWins',\n saves: 'saves',\n goals_against: 'goalsAgainst',\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 blockShots: number;\n faceOffLosses: number;\n faceOffWins: number;\n saves: number;\n goalsAgainst: 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;\n }\n\n get goals(): number {\n return (this.ppGoals || 0) + (this.shGoals || 0) + (this.evGoals || 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 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 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';\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 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 sh_goals: 'shGoals',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n shots: 'shots',\n goals_percent: 'goalsPercent',\n shots_against: 'shotsAgainst',\n saves_percent: 'savesPercent',\n pp_assists: 'ppAssists',\n ev_assists: 'evAssists',\n sh_assists: 'shAssists',\n shootout_attempts: 'shootoutAttempts',\n shootout_goals: 'shootoutGoals',\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 goals_against: 'goalsAgainst',\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 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 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 shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n shots: number;\n goalsPercent: number;\n ppAssists: number;\n evAssists: number;\n shAssists: number;\n shootoutAttempts: number;\n shootoutGoals: number;\n blockShots: number;\n faceOffLosses: number;\n faceOffWins: number;\n faceOffs: number;\n faceOffPercent: number;\n savesPercent: number;\n saves: number;\n shotsAgainst: number;\n goalsAgainst: 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 @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { HockeyStatistic } from './hockey-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: HockeyStatistic,\n competitorTeam: HockeyStatistic\n }\n})\nexport class HockeyGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: HockeyStatistic;\n competitorTeam: HockeyStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { HockeyGameLog } from '../models/hockey-game-log';\nimport { HockeyGameStatistic } from '../models/hockey-game-statistic';\nimport { HockeyGameTeamStatistic } from '../models/hockey-game-team-statistic';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class HockeyGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<HockeyGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/team_statistic/`).pipe(\n map(result => HockeyGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<HockeyGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/user_statistic/`).pipe(\n map(result => HockeyGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<HockeyGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/logs/`).pipe(\n map(result => HockeyGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadApplication(gameId: number, format: 'pdf' | 'xlsx' | 'html', type: 'game_user'|'tournament_user'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/game_application_file/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { GameLogBase } from './game-log-base';\nimport { GameUser } from './game-user';\n\nexport enum HandballGameLogTypes {\n enter_game = 1,\n exit_game,\n shot_miss,\n shot_on_goal,\n shot_blocked,\n goal,\n assist,\n penalty_miss,\n penalty_shot_on_goal,\n penalty_goal,\n save,\n penalty_save,\n foul,\n yellow_card,\n red_card,\n two_minute_foul,\n turnover,\n steal,\n block_shot,\n timeout\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n is_goalie: 'isGoalie',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(HandballGameLogTypes)\n }\n})\nexport class HandballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: HandballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n isGoalie: boolean;\n\n compare(model: HandballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n isScoreType(): boolean {\n return [HandballGameLogTypes.goal, HandballGameLogTypes.penalty_goal].indexOf(this.logType) > -1;\n }\n\n isAfter(log: HandballGameLog): boolean {\n if (this.time === log.time && this.period === log.period) {\n return this.id > log.id;\n }\n if (this.period === log.period) {\n return this.time > log.time;\n }\n return this.period > log.period;\n }\n\n isFoulType(): boolean {\n return [HandballGameLogTypes.foul, HandballGameLogTypes.yellow_card, HandballGameLogTypes.red_card].indexOf(this.logType) > -1;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n updated_at: 'updatedAt',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n goals: 'goals',\n assists: 'assists',\n corners: 'corners',\n free_kicks: 'freeKicks',\n penalty_goals: 'penaltyGoals',\n penalty_attempts: 'penaltyAttempts',\n penalty_goals_against: 'penaltyGoalsAgainst',\n penalty_saves: 'penaltySaves',\n small_penalty_goals: 'smallPenaltyGoals',\n small_penalty_attempts: 'smallPenaltyAttempts',\n small_penalty_goals_against: 'smallPenaltyGoalsAgainst',\n small_penalty_saves: 'smallPenaltySaves',\n saves: 'saves',\n goals_against: 'goalsAgainst',\n safety_rate: 'safetyRate',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n fouls: 'fouls',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n perfect_passes: 'perfectPasses',\n losses: 'losses',\n steals: 'steals',\n outs: 'outs',\n block_shots: 'blockShots',\n auto_goals: 'autoGoals',\n auto_goals_against: 'autoGoalsAgainst'\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class FootballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n goals: number;\n assists: number;\n blockShots: number;\n corners: number;\n freeKicks: number;\n penaltyGoals: number;\n penaltyAttempts: number;\n penaltyGoalsAgainst: number;\n penaltySaves: number;\n smallPenaltyGoals: number;\n smallPenaltyAttempts: number;\n smallPenaltyGoalsAgainst: number;\n smallPenaltySaves: number;\n saves: number;\n goalsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n perfectPasses: number;\n losses: number;\n steals: number;\n outs: number;\n gameTime: number;\n plusMinus: number;\n updatedAt: Date;\n autoGoals: number;\n autoGoalsAgainst: number;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get shots(): number {\n return (this.shotMisses || 0) + (this.shotsOnGoal || 0) + (this.shotsBlocked || 0);\n }\n\n\n get totalGoals(): number {\n return (this.goals || 0) + (this.penaltyGoals || 0) + (this.smallPenaltyGoals || 0);\n }\n\n get goalsPercent(): number {\n if (!this.shots || !this.totalGoals) {\n return 0;\n }\n return Math.round(1000 * this.totalGoals / this.shots) / 10;\n }\n\n get shotsOnGoalPercent(): number {\n if (!this.shotsOnGoal || !this.shots) {\n return 0;\n }\n return Math.round(1000 * this.shotsOnGoal / this.shots) / 10;\n }\n\n get penalties(): number {\n return (this.penaltyGoals || 0) + (this.penaltyAttempts || 0);\n }\n\n get penaltyGoalsPercent(): number {\n if (!this.penaltyAttempts || !this.penaltyGoals) {\n return 0;\n }\n return Math.round(1000 * this.penaltyGoals / this.penaltyAttempts) / 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 return Math.round(1000 * this.smallPenaltyGoals / this.smallPenaltyAttempts) / 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';\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 points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n shots_on_goal_percent: 'shotsOnGoalPercent',\n shots: 'shots',\n goals: 'goals',\n goals_percent: 'goalsPercent',\n total_goals: 'totalGoals',\n assists: 'assists',\n penalty_goals: 'penaltyGoals',\n penalty_attempts: 'penaltyAttempts',\n penalty_goals_percent: 'penaltyGoalsPercent',\n penalty_saves: 'penaltySaves',\n penalty_goals_against: 'penaltyGoalsAgainst',\n penalty_shots_against: 'penaltyShotsAgainst',\n penalty_saves_percent: 'penaltySavesPercent',\n small_penalty_goals: 'smallPenaltyGoals',\n small_penalty_attempts: 'smallPenaltyAttempts',\n small_penalty_goals_percent: 'smallPenaltyGoalsPercent',\n small_penalty_saves: 'smallPenaltySaves',\n small_penalty_goals_against: 'smallPenaltyGoalsAgainst',\n small_penalty_shots_against: 'smallPenaltyShotsAgainst',\n small_penalty_saves_percent: 'smallPenaltySavesPercent',\n saves: 'saves',\n saves_percent: 'savesPercent',\n total_saves: 'totalSaves',\n goals_against: 'goalsAgainst',\n total_goals_against: 'totalGoalsAgainst',\n shots_against: 'shotsAgainst',\n safety_rate: 'safetyRate',\n fouls: 'fouls',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n perfect_passes: 'perfectPasses',\n losses: 'losses',\n steals: 'steals',\n outs: 'outs',\n block_shots: 'blockShots',\n corners: 'corners',\n free_kicks: 'freeKicks',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n newbie: 'newbie',\n rank: 'rank',\n auto_goals: 'autoGoals',\n auto_goals_against: 'autoGoalsAgainst',\n },\n relation: {\n 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 tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: WinLoseType;\n gamesCount: number;\n wonGamesCount: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n shotsOnGoalPercent: number;\n shots: number;\n goals: number;\n totalGoals: number;\n goalsPercent: number;\n assists: number;\n penaltyGoals: number;\n penaltyAttempts: number;\n penaltyGoalsPercent: number;\n penaltySaves: number;\n penaltyGoalsAgainst: number;\n penaltyShotsAgainst: number;\n penaltySavesPercent: number;\n smallPenaltyGoals: number;\n smallPenaltyAttempts: number;\n smallPenaltyGoalsPercent: number;\n smallPenaltySaves: number;\n smallPenaltyGoalsAgainst: number;\n smallPenaltyShotsAgainst: number;\n smallPenaltySavesPercent: number;\n saves: number;\n savesPercent: number;\n totalSaves: number;\n goalsAgainst: number;\n totalGoalsAgainst: number;\n shotsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n perfectPasses: number;\n losses: number;\n steals: number;\n outs: number;\n gameTime: number;\n plusMinus: number;\n blockShots: number;\n corners: number;\n freeKicks: number;\n newbie: boolean;\n rank: number;\n autoGoals: number;\n autoGoalsAgainst: number;\n\n get userMinutes(): string {\n if (!this.gameTime) {\n return '00:00';\n }\n const minutes = Math.floor(this.gameTime / 60);\n const seconds = Math.floor(this.gameTime - minutes * 60);\n return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;\n }\n\n @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';\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 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 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 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 @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { HandballStatistic } from './handball-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: HandballStatistic,\n competitorTeam: HandballStatistic\n }\n})\nexport class HandballGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: HandballStatistic;\n competitorTeam: HandballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { HandballGameLog } from '../models/handball-game-log';\nimport { HandballGameStatistic } from '../models/handball-game-statistic';\nimport { HandballGameTeamStatistic } from '../models/handball-game-team-statistic';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class HandballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<HandballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/team_statistic/`).pipe(\n map(result => HandballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<HandballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/user_statistic/`).pipe(\n map(result => HandballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<HandballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/logs/`).pipe(\n map(result => HandballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadApplication(gameId: number, format: 'pdf' | 'xlsx' | 'html', type: 'game_user' | 'tournament_user'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/game_application_file/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { File } from './file';\nimport { User } from './user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n picture: 'picture',\n text: 'text',\n author: 'author',\n created_at: 'createdAt',\n },\n relation: {\n picture: File,\n author: User,\n createdAt: DateTimeField,\n }\n})\nexport class TournamentNews extends BaseModel {\n id: number;\n title: string;\n picture: File;\n text: string;\n author: User;\n createdAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField } from './util';\n\n@ModelInstance({\n mappingFields: {\n stage_id: 'stageId',\n tours_count: 'toursCount',\n playoff_stages_count: 'playoffStagesCount',\n }\n})\nexport class GameTimelineStageItem {\n stageId: number;\n toursCount: number;\n playoffStagesCount: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n tours_count: 'toursCount',\n playoff_stages_count: 'playoffStagesCount',\n current_tour: 'currentTour',\n current_playoff_stage: 'currentPlayoffStage',\n stages: 'stages',\n tournament_stage_id: 'tournamentStageId',\n },\n relation: {\n stages: listField(GameTimelineStageItem)\n }\n})\nexport class GameTimelineStages extends BaseModel {\n toursCount: number;\n playoffStagesCount: number;\n currentTour: number;\n currentPlayoffStage: number;\n stages: GameTimelineStageItem[];\n tournamentStageId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField, DateTimeField, enumField } from './util';\nimport { File } from './file';\nimport { Tournament } from './tournament';\n\nexport enum LeagueNewsType {\n text = 1,\n video\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n datetime: 'datetime',\n preview_text: 'previewText',\n detail_text: 'detailText',\n picture: 'picture',\n cover: 'cover',\n mobile_picture: 'mobilePicture',\n is_main: 'isMain',\n tournaments: 'tournaments',\n type: 'type',\n video_link: 'videoLink',\n tag: 'tag',\n },\n relation: {\n datetime: DateTimeField,\n picture: File,\n cover: File,\n mobilePicture: File,\n tournaments: listField(Tournament),\n type: enumField(LeagueNewsType),\n }\n})\nexport class LeagueNews extends BaseModel {\n id: number;\n title: string;\n datetime: Date;\n previewText: string;\n detailText: string;\n picture: File;\n cover: File;\n mobilePicture: File;\n isMain: boolean;\n tournaments: Tournament[];\n type: LeagueNewsType;\n videoLink: string;\n tag: string;\n\n @ToFrontHook\n static toFront(data: any): any {\n return undefined;\n }\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField } from './util';\nimport { Team } from './team';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { TeamUser } from './team-user';\nimport { TournamentTeam } from './tournament-team';\nimport { User } from './user';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n team_user: 'teamUser',\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 tournamentTeamUser: TournamentTeamUser,\n tournamentTeam: TournamentTeam,\n user: User,\n month: DateField,\n }\n})\nexport class VolleyballStatistic extends BaseModel implements BaseStatistic {\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 @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 { 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';\n\nexport interface TournamentGamesFilters {\n tournamentIds?: number[];\n tournamentSeasonId?: number;\n tournamentStageId?: number;\n tournamentTour?: number;\n teamId?: number;\n playoffStage?: number;\n playoffId?: number;\n isPlayoff?: boolean;\n status?: GameStatuses;\n statuses?: GameStatuses[];\n tournamentCourtId?: number;\n userId?: number;\n query?: string;\n}\n\nexport type StatisticGroupByTypes = 'team' | 'user' | 'team_user' | 'tournament_team' | 'league_player' | 'tournament_team_user'\n | 'month' | 'win_loses';\n\nexport interface StatisticFilters {\n tournament_id?: number;\n tournament_ids?: number[];\n tournament_season_id?: number;\n tournament_team_id?: number;\n league_player_id?: number;\n tournament_team_user_id?: number;\n team_id?: number;\n team_user_id?: number;\n user_id?: number;\n tournament_stage_id?: number;\n tournament_tour?: number;\n playoff_stage?: number;\n playoff_id?: number;\n is_playoff?: boolean;\n date_from?: string;\n date_to?: string;\n query?: string;\n per_game?: boolean;\n group_by: StatisticGroupByTypes;\n order_by?: string;\n page?: number;\n size?: number;\n}\n\nexport interface StatisticLeadersFilters {\n tournament_id?: number;\n tournament_ids?: number[];\n tournament_season_id?: number;\n tournament_team_id?: number;\n team_id?: number;\n tournament_stage_id?: number;\n tournament_tour?: number;\n playoff_stage?: number;\n playoff_id?: number;\n date_from?: string;\n date_to?: string;\n per_game?: boolean;\n group_by: StatisticGroupByTypes;\n size?: number;\n fields: string[];\n}\n\nexport interface TournamentEventsListFilter {\n event?: TournamentEventTypes;\n search?: string;\n tournamentTour?: number;\n}\n\n@Injectable({providedIn: 'root'})\nexport class TournamentApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getById(tournamentId: number): Promise<Tournament> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/`)\n .pipe(map(result => Tournament.toFront(result)))\n .toPromise();\n }\n\n async getByAlias(leagueId: number, alias: string): Promise<Tournament> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournaments/${alias}/`)\n .pipe(map(result => Tournament.toFront(result)))\n .toPromise();\n }\n\n async getNews(tournamentId: number): Promise<TournamentNews[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/news/`)\n .pipe(map(result => TournamentNews.toFront(result)))\n .toPromise();\n }\n\n async getEvents(tournamentId: number, page: number, size: number, filters?: TournamentEventsListFilter): Promise<PaginatedResponse<TournamentEvent[]>> {\n let params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\n if (filters) {\n if (filters.event) {\n params = params.set('event', TournamentEventTypes[filters.event]);\n }\n if (filters.search) {\n params = params.set('search', filters.search);\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/events/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentEvent.toFront(result.body)\n })))\n .toPromise();\n }\n\n async getTournamentStages(tournamentId: number): Promise<TournamentStage[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/stages/`).pipe(\n map(data => TournamentStage.toFront(data))\n ).toPromise();\n }\n\n async getPlayoff(tournamentId: number): Promise<Playoff[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/playoff/`).pipe(\n map(result => Playoff.toFront(result))\n ).toPromise();\n }\n\n async getPlayoffGames(playoffId: number, playoffNumber?: string): Promise<Game[]> {\n let params = new HttpParams();\n if (playoffNumber) {\n params = params.set('playoff_number', playoffNumber);\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_playoff/${playoffId}/games/`,\n {params}\n ).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getGamesStages(tournamentId: number): Promise<GameTimelineStages> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/games_stages/`)\n .pipe(map(data => GameTimelineStages.toFront(data)))\n .toPromise();\n }\n\n async getGames(tournamentId: number, page: number, size: number, filters: TournamentGamesFilters = {}): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n params = applyGamesFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/games/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: Game.toFront(result.body)\n }))).toPromise();\n }\n\n async getTeams(tournamentId: number): Promise<TournamentTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/teams/`)\n .pipe(map(result => TournamentTeam.toFront(result)))\n .toPromise();\n }\n\n async getStageTeams(tournamentId: number): Promise<TournamentStageTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/stage_teams/`)\n .pipe(map(result => TournamentStageTeam.toFront(result)))\n .toPromise();\n }\n\n async getTeamById(tournamentTeamId: number): Promise<TournamentTeam> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/`)\n .pipe(map(result => TournamentTeam.toFront(result)))\n .toPromise();\n }\n\n async getUserById(userId: number): Promise<TournamentTeamUser> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${userId}/`)\n .pipe(map(result => TournamentTeamUser.toFront(result)))\n .toPromise();\n }\n\n async getUserGames(tournamentUserId: number): Promise<Game[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${tournamentUserId}/games/`)\n .pipe(map(result => Game.toFront(result)))\n .toPromise();\n }\n\n async getBasketballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: BasketballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/basketball_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = BasketballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getVolleyballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: VolleyballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/volleyball_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = VolleyballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getHockeyStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: HockeyStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/hockey_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = HockeyStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getFootballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: FootballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/football_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = FootballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getHandballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: HandballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/handball_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = HandballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getBasketballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<BasketballStatistic[]>> {\n let params = new HttpParams();\n params = applyStatisticFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/basketball_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: BasketballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getVolleyballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<VolleyballStatistic[]>> {\n let params = new HttpParams();\n params = applyStatisticFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/volleyball_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: VolleyballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getHockeyStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<HockeyStatistic[]>> {\n let params = new HttpParams();\n params = applyStatisticFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/hockey_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: HockeyStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getFootballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<FootballStatistic[]>> {\n let params = new HttpParams();\n params = applyStatisticFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/football_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: FootballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getHandballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<HandballStatistic[]>> {\n let params = new HttpParams();\n params = applyStatisticFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/handball_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: HandballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getTournamentTeamUsers(tournamentTeamId: number): Promise<TournamentTeamUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/users/`).pipe(\n map(result => TournamentTeamUser.toFront(result))\n ).toPromise();\n }\n\n async myPermission(tournamentId: number): Promise<LeagueUserPermissions[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/permission/`).pipe(\n map((data: any) => (data.permissions || []).map(item => LeagueUserPermissions[item]))\n ).toPromise();\n }\n\n async getTournamentTeamTournaments(tournamentTeamId: number): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/tournaments/`).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n async getTournamentUserTournaments(tournamentTeamUserId: number): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${tournamentTeamUserId}/tournaments/`).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n}\n\nexport function applyGamesFilters(filters: TournamentGamesFilters, params: HttpParams): HttpParams {\n if (filters.tournamentIds) {\n params = params.set('tournament_ids', filters.tournamentIds.join(','));\n }\n if (filters.tournamentStageId) {\n params = params.set('tournament_stage_id', filters.tournamentStageId.toString());\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n if (filters.playoffStage) {\n params = params.set('playoff_stage', filters.playoffStage.toString());\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n if (filters.status) {\n params = params.set('status', GameStatuses[filters.status]);\n }\n if (filters.statuses) {\n const statuses = filters.statuses.map(i => GameStatuses[i]);\n params = params.set('statuses', statuses.join(','));\n }\n if (filters.tournamentCourtId) {\n params = params.set('tournament_court_id', filters.tournamentCourtId.toString());\n }\n if (filters.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 } 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): Promise<TournamentTeamUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league_player/${leaguePlayerId}/tournament_users/`).pipe(\n map(item => TournamentTeamUser.toFront(item))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { MediaItem } from '../models/media-item';\nimport { Game, GameStatuses } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { ConfigService } from '../services/config.service';\nimport { applyGamesFilters, TournamentGamesFilters } from './tournament-api';\n\nexport interface GameMediaFilters extends TournamentGamesFilters {\n mediaCount?: number;\n}\n\nexport interface MediaFilters {\n mediaType?: 'photo' | 'video' | 'live_video';\n sort?: string;\n teamId?: number;\n}\n\n@Injectable({providedIn: 'root'})\nexport class MediaApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getMedia(mediaId: number): Promise<MediaItem> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/media/${mediaId}/`).pipe(\n map(result => MediaItem.toFront(result))\n ).toPromise();\n }\n\n async getTournamentGameMedia(tournamentId: number, page: number, size: number, filters?: GameMediaFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n params = applyGameMediaFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/game_media/`, {observe: 'response', params}).pipe(\n map(response => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n })\n ).toPromise();\n }\n\n async getLeagueGameMedia(leagueId: number, page: number, size: number, filters?: GameMediaFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n params = applyGameMediaFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/game_media/`, {observe: 'response', params}).pipe(\n map(response => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n })\n ).toPromise();\n }\n\n async getLeagueMedia(leagueId: number, page: number, size: number, filters: MediaFilters = {}): Promise<PaginatedResponse<MediaItem[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n if (filters.mediaType) {\n params = params.set('media_type', filters.mediaType);\n }\n if (filters.sort) {\n params = params.set('sort', filters.sort);\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/media/`, {params, observe: 'response'})\n .pipe(map(response => ({\n total: +response.headers.get('X-Page-Count'),\n data: MediaItem.toFront(response.body)\n }))).toPromise();\n }\n\n async getGameMediaById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/game_media/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getGameMedia(gameId: number): Promise<MediaItem[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/media/?size=1000`).pipe(\n map(result => MediaItem.toFront(result))\n ).toPromise();\n }\n\n async createZip(mediaIds: number[]): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/media/zip/`, mediaIds, { responseType: 'blob' })\n .toPromise();\n }\n\n async downloadMedia(mediaId: number): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/media/${mediaId}/download/`,{responseType: 'blob'})\n .toPromise();\n }\n}\n\nexport function applyGameMediaFilters(filters: GameMediaFilters, params: HttpParams, ): HttpParams {\n if (filters) {\n params = applyGamesFilters(filters, params);\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n if (filters.tournamentStageId) {\n params = params.set('tournament_stage_id', filters.tournamentStageId.toString());\n }\n if (filters.playoffId) {\n params = params.set('playoff_id', filters.playoffId.toString());\n }\n if (filters.playoffStage) {\n params = params.set('playoff_stage', filters.playoffStage.toString());\n }\n if (filters.status) {\n params = params.set('status', GameStatuses[filters.status]);\n }\n if (filters.mediaCount) {\n params = params.set('media_count', filters.mediaCount.toString());\n }\n }\n return params;\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { TeamUser } from './team-user';\nimport { Game } from './game';\n\nexport enum GameInviteStatus {\n accepted = 1,\n declined,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_user: 'teamUser',\n game_id: 'gameId',\n game: 'game',\n status: 'status',\n },\n relation: {\n game: Game,\n teamUser: TeamUser,\n status: enumField(GameInviteStatus),\n }\n})\nexport class GameInvite extends BaseModel {\n id: number;\n teamUser: TeamUser;\n gameId: number;\n game: Game;\n status: GameInviteStatus;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { User } from './user';\nimport { Team } from './team';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n user: 'user',\n team: 'team',\n team_id: 'teamId',\n user_accept: 'userAccept',\n team_accept: 'teamAccept',\n users_count: 'usersCount',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n score_sum: 'scoreSum',\n created_at: 'createdAt',\n updated_at: 'updatedAt',\n },\n relation: {\n user: User,\n team: Team,\n createdAt: DateTimeField,\n updateAt: DateTimeField,\n }\n})\nexport class TeamInvite extends BaseModel {\n id: number;\n userId: number;\n user: User;\n teamId: number;\n team: Team;\n userAccept: boolean;\n teamAccept: boolean;\n usersCount: number;\n gamesCount: number;\n wonGamesCount: number;\n scoreSum: number;\n createdAt: Date;\n updatedAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","export enum TeamEventTypes {\n training = 1,\n other = 2,\n}\n","import { enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum TeamEventInviteStatuses {\n accepted = 1,\n declined = 2\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_event_id: 'teamEventId',\n team_user_id: 'teamUserId',\n status: 'status',\n },\n relation: {\n status: enumField(TeamEventInviteStatuses)\n }\n})\nexport class TeamEventInvite {\n id: number;\n teamEventId: number;\n teamUserId: number;\n status: TeamEventInviteStatuses;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { TeamEventTypes } from '../models/team-event-type';\n\nexport const TeamEventTypeLocalization = {\n [TeamEventTypes.training]: 'ТÑениÑовка',\n [TeamEventTypes.other]: 'ÐÑÑгое'\n};\n","import { BaseModel, enumField, ModelInstance, DateTimeField, ToBackHook, ToFrontHook } from './util';\nimport { Team } from './team';\nimport { TeamEventTypeLocalization } from '../localization/team-event-type';\nimport { TeamEventTypes } from './team-event-type';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n team: 'team',\n event_type: 'eventType',\n event_custom_name: 'eventCustomName',\n description: 'description',\n datetime: 'datetime',\n location: 'location',\n },\n relation: {\n eventType: enumField(TeamEventTypes),\n team: Team,\n datetime: DateTimeField,\n }\n})\nexport class TeamEvent extends BaseModel {\n id: number;\n teamId: number;\n team: Team;\n eventType: TeamEventTypes;\n eventCustomName: string;\n description: string;\n datetime: Date;\n location: string;\n\n get name(): string {\n if (this.eventType === TeamEventTypes.other) {\n return this.eventCustomName;\n }\n return TeamEventTypeLocalization[this.eventType];\n }\n\n get isClosed(): boolean {\n return this.datetime.getTime() < new Date().getTime();\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { Team } from './team';\nimport { Poll } from './poll';\nimport { Game } from './game';\nimport { TeamInvite } from './team-invite';\nimport { TeamUser } from './team-user';\nimport { GameInvite } from './game-invite';\nimport { TeamEvent } from './team-event';\nimport { TeamEventInvite } from './team-event-invite';\nimport { Tournament } from './tournament';\nimport { TournamentInvite } from './tournament-invite';\nimport { TournamentTeam } from './tournament-team';\nimport { User } from './user';\n\nexport enum NotificationType {\n team_updated = 1,\n team_invited,\n team_join_request,\n team_join_declined_by_team,\n team_join_declined_by_user,\n team_join_canceled_by_team,\n team_join_canceled_by_user,\n team_joined_for_user,\n team_joined_for_team,\n team_user_role_changed_for_user,\n team_user_role_changed_for_team,\n team_user_number_changed,\n team_user_deleted_for_user,\n team_user_deleted_for_team,\n team_user_left,\n\n game_updated,\n game_invited,\n game_invite_accepted,\n game_invite_declined,\n game_remind,\n game_won,\n game_losing,\n game_tech_defeat,\n game_tech_victory,\n\n poll_created,\n poll_closed,\n\n team_event_invited,\n team_event_accepted,\n team_event_declined,\n team_event_remind,\n\n tournament_invited,\n tournament_joined,\n tournament_join_declined,\n tournament_join_canceled,\n tournament_user_invited,\n tournament_user_accepted_for_team,\n tournament_user_accepted_for_user,\n tournament_user_added,\n tournament_user_declined_for_team,\n tournament_user_declined_for_user,\n tournament_user_invite_deleted,\n tournament_user_deleted,\n tournament_user_disqualified_for_team,\n tournament_user_disqualified_for_user,\n tournament_user_disqualification_updated_for_team,\n tournament_user_disqualification_updated_for_user,\n tournament_team_deleted,\n\n org_tournament_invite_created,\n org_tournament_invite_declined,\n org_tournament_invite_deleted,\n org_tournament_invite_changed,\n org_tournament_user_deleted,\n org_tournament_user_invited,\n org_tournament_user_has_changes,\n org_tournament_team_leave,\n}\n\nexport enum NotificationServiceEnum {\n public = 1,\n org\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n event_type: 'event',\n data: 'data',\n initiator: 'initiator',\n team: 'team',\n team_invite: 'teamInvite',\n team_user: 'teamUser',\n poll: 'poll',\n game: 'game',\n game_invite: 'gameInvite',\n team_event: 'teamEvent',\n team_event_invite: 'teamEventInvite',\n tournament: 'tournament',\n tournament_invite: 'tournamentInvite',\n tournament_team: 'tournamentTeam',\n viewed: 'viewed',\n protected: 'protected',\n service: 'service',\n created_at: 'createdAt',\n },\n relation: {\n event: enumField(NotificationType),\n initiator: User,\n team: Team,\n teamInvite: TeamInvite,\n teamUser: TeamUser,\n poll: Poll,\n game: Game,\n gameInvite: GameInvite,\n teamEvent: TeamEvent,\n teamEventInvite: TeamEventInvite,\n tournament: Tournament,\n tournamentInvite: TournamentInvite,\n tournamentTeam: TournamentTeam,\n service: enumField(NotificationServiceEnum),\n createdAt: DateTimeField,\n }\n})\nexport class Notification extends BaseModel {\n id: number;\n event: NotificationType;\n data: any;\n initiator: User;\n team: Team;\n teamInvite: TeamInvite;\n teamUser: TeamUser;\n poll: Poll;\n game: Game;\n gameInvite: GameInvite;\n teamEvent: TeamEvent;\n teamEventInvite: TeamEventInvite;\n tournament: Tournament;\n tournamentInvite: TournamentInvite;\n tournamentTeam: TournamentTeam;\n viewed: boolean;\n protected: boolean;\n service: NotificationServiceEnum;\n createdAt: Date;\n\n get important(): boolean {\n return true;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\nimport { TeamUser } from './team-user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team_invite_id: 'tournamentTeamInviteId',\n tournament_team_id: 'tournamentTeamId',\n team_user: 'teamUser',\n accepted: 'accepted'\n },\n relation: {\n teamUser: TeamUser\n }\n})\nexport class TournamentTeamUserInvite extends BaseModel {\n id: number;\n tournamentTeamInviteId: number;\n tournamentTeamId: number;\n teamUser: TeamUser;\n accepted: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\nimport { Tournament } from './tournament';\nimport { TournamentTeamUserInvite } from './tournament-team-user-invite';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team: 'team',\n tournament: 'tournament',\n team_accept: 'teamAccept',\n organization_accept: 'organizationAccept',\n user_invites_count: 'userInvitesCount',\n user_invites: 'userInvites',\n notifications_count: 'notificationsCount',\n },\n relation: {\n team: Team,\n tournament: Tournament,\n userInvites: TournamentTeamUserInvite,\n }\n})\nexport class TournamentInvite extends BaseModel {\n id: number;\n team: Team;\n tournament: Tournament;\n teamAccept: boolean;\n organizationAccept: boolean;\n userInvitesCount: number;\n userInvites: TournamentTeamUserInvite[];\n notificationsCount: number;\n\n get isOpen(): boolean {\n return (this.teamAccept === null || this.organizationAccept === null) && this.teamAccept !== false && this.organizationAccept !== false;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\n\nexport enum NotificationAllowTypes {\n all = 1,\n important,\n none\n}\n\n@ModelInstance({\n mappingFields: {\n user_id: 'userId',\n popup: 'popup',\n sound: 'sound',\n browser: 'browser',\n email: 'email'\n },\n relation: {\n sound: enumField(NotificationAllowTypes),\n browser: enumField(NotificationAllowTypes),\n }\n})\nexport class NotificationSettings extends BaseModel {\n userId: number;\n popup: boolean;\n sound: NotificationAllowTypes;\n browser: NotificationAllowTypes;\n email: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, 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 { 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, 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): Promise<TournamentTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/teams/`).pipe(\n map(result => TournamentTeam.toFront(result))\n ).toPromise();\n }\n\n async getPlayoffs(seasonId: number): Promise<Playoff[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/playoffs/`).pipe(\n map(result => Playoff.toFront(result))\n ).toPromise();\n }\n\n async getGamesStages(seasonId: number): Promise<GameTimelineStages> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/games_stages/`)\n .pipe(map(data => GameTimelineStages.toFront(data)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TournamentStage } from '../models/tournament-stage';\nimport { map } from 'rxjs/operators';\nimport { TournamentGroup } from '../models/tournament-group';\nimport { Playoff } from '../models/playoff';\nimport { TournamentStageTeam } from '../models/tournament-stage-team';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TournamentStageApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getById(id: number): Promise<TournamentStage> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${id}/`)\n .pipe(map(result => TournamentStage.toFront(result)))\n .toPromise();\n }\n\n async getGroups(stageId: number): Promise<TournamentGroup[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/groups/`)\n .pipe(map(result => TournamentGroup.toFront(result)))\n .toPromise();\n }\n\n async getPlayoffs(stageId: number): Promise<Playoff[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/playoff/`)\n .pipe(map(result => Playoff.toFront(result)))\n .toPromise();\n }\n\n async getTeams(stageId: number): Promise<TournamentStageTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/teams/`)\n .pipe(map(result => TournamentStageTeam.toFront(result)))\n .toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n edit: 'edit',\n personal_data: 'personalData',\n teams: 'teams',\n statistic: 'statistic',\n games: 'games'\n }\n})\nexport class UserAccess extends BaseModel {\n edit: boolean;\n personalData: boolean;\n teams: boolean;\n statistic: boolean;\n games: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField, DateTimeField } from './util';\nimport { GameLogBase } from './game-log-base';\nimport { GameUser } from './game-user';\n\nexport enum VolleyballGameLogType {\n enter_game = 1,\n exit_game,\n remove_game,\n serve_hit,\n serve_fault,\n serve_ace,\n stuff_block,\n block_fault,\n block_rebound,\n attack_spike,\n attack_fault,\n attack_shot,\n receive,\n receive_fault,\n excellent_receive,\n point,\n fault,\n serve_receive,\n serve_receive_fault,\n excellent_serve_receive,\n timeout,\n yellow_card,\n}\n\nexport const SCORE_LOG_TYPES = [\n VolleyballGameLogType.serve_ace, VolleyballGameLogType.stuff_block,\n VolleyballGameLogType.attack_spike, VolleyballGameLogType.point\n];\nexport const FAULT_LOG_TYPES = [\n VolleyballGameLogType.serve_fault, VolleyballGameLogType.attack_fault,\n VolleyballGameLogType.block_fault, VolleyballGameLogType.receive_fault,\n VolleyballGameLogType.fault, VolleyballGameLogType.serve_receive_fault\n];\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n log_type: 'logType',\n set: 'set',\n rally: 'rally',\n position: 'position',\n team_id: 'teamId',\n datetime: 'datetime',\n is_highlight: 'isHighlight',\n },\n relation: {\n logType: enumField(VolleyballGameLogType),\n datetime: DateTimeField\n }\n})\nexport class VolleyballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n active = true;\n gameId: number;\n gameUserId: number;\n logType: VolleyballGameLogType;\n set: number;\n rally: number;\n position: number;\n teamId: number;\n datetime: Date;\n isHighlight: boolean;\n gameUser: GameUser;\n\n compare(model: VolleyballGameLog): number {\n if (this.rally === model.rally && this.set === model.set) {\n if (this.datetime && model.datetime) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n } else {\n return this.id < model.id ? 1 : -1;\n }\n }\n if (this.set === model.set) {\n return this.rally < model.rally ? 1 : -1;\n }\n return this.set < model.set ? 1 : -1;\n }\n\n isScoreType() {\n return SCORE_LOG_TYPES.includes(this.logType);\n }\n\n isFaultType() {\n return FAULT_LOG_TYPES.includes(this.logType);\n }\n\n isServe() {\n return [\n VolleyballGameLogType.serve_hit,\n VolleyballGameLogType.serve_ace,\n VolleyballGameLogType.serve_fault\n ].includes(this.logType);\n }\n\n isAttack() {\n return [\n VolleyballGameLogType.attack_fault,\n VolleyballGameLogType.attack_spike,\n VolleyballGameLogType.attack_shot\n ].includes(this.logType);\n }\n\n isReceive() {\n return [\n VolleyballGameLogType.receive_fault,\n VolleyballGameLogType.receive,\n VolleyballGameLogType.excellent_receive\n ].includes(this.logType);\n }\n\n isServeReceive() {\n return [\n VolleyballGameLogType.serve_receive_fault,\n VolleyballGameLogType.serve_receive,\n VolleyballGameLogType.excellent_serve_receive\n ].includes(this.logType);\n }\n\n isBlock() {\n return [\n VolleyballGameLogType.block_fault,\n VolleyballGameLogType.block_rebound,\n VolleyballGameLogType.stuff_block\n ].includes(this.logType);\n }\n\n isEnterExit() {\n return [\n VolleyballGameLogType.enter_game,\n VolleyballGameLogType.exit_game,\n VolleyballGameLogType.timeout\n ].includes(this.logType);\n }\n\n isComboType() {\n return ![\n VolleyballGameLogType.receive,\n VolleyballGameLogType.serve_receive\n ].includes(this.logType);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { User } from '../models/user';\nimport { File } from '../models/file';\nimport { map } from 'rxjs/operators';\nimport { UserProfile } from '../models/user-profile';\nimport { BasketballProfile } from '../models/basketball-profile';\nimport { VolleyballProfile } from '../models/volleyball-profile';\nimport { Team } from '../models/team';\nimport { TeamInvite } from '../models/team-invite';\nimport { BasketballStatistic } from '../models/basketball-statistic';\nimport { VolleyballStatistic } from '../models/volleyball-statistic';\nimport { Game } from '../models/game';\nimport { GameInvite } from '../models/game-invite';\nimport { TeamEvent } from '../models/team-event';\nimport { UserAccess } from '../models/user-access';\nimport { UserPermission } from '../models/user-permission';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class UserApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getCurrentUser(): Promise<User> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/`)\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async getUserById(userId: number): Promise<User> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/`)\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async getAccess(userId?: number): Promise<UserAccess> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/user/${userId || 'current'}/access/`)\n .pipe(map(data => UserAccess.toFront(data)))\n .toPromise();\n }\n\n async updateUser(userId: number, data: any): Promise<User> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/`, User.toBack(data))\n .pipe(map(result => User.toFront(result)))\n .toPromise();\n }\n\n async updateUserPhoto(file: any, filename?: string): Promise<File> {\n const formData = new FormData();\n formData.append('file', file, filename);\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/photo/`, formData)\n .pipe(map(data => File.toFront(data)))\n .toPromise();\n }\n\n async changePassword(userId: number, oldPassword: string, password: string, passwordConfirm: string): Promise<any> {\n const payload = {\n old_password: oldPassword,\n password,\n password_confirm: passwordConfirm\n };\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/change_password/`, payload)\n .toPromise();\n }\n\n async changeEmail(userId: number, email: string, password: string): Promise<any> {\n const payload = {email, password};\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/change_email/`, payload)\n .toPromise();\n }\n\n async changeEmailConfirm(userId, email: string, password: string, token: number): Promise<any> {\n const payload = {email, password, token};\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/change_email_confirm/`, payload)\n .toPromise();\n }\n\n async getUserProfile(userId: number): Promise<UserProfile> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/profile/`)\n .pipe(map(data => UserProfile.toFront(data)))\n .toPromise();\n }\n\n async getBasketballProfile(userId: number): Promise<BasketballProfile> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/basketball_profile/`)\n .pipe(map(data => BasketballProfile.toFront(data)))\n .toPromise();\n }\n\n async getVolleyballProfile(userId: number): Promise<VolleyballProfile> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/volleyball_profile/`)\n .pipe(map(data => VolleyballProfile.toFront(data)))\n .toPromise();\n }\n\n async updateUserProfile(userProfile: UserProfile): Promise<UserProfile> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${userProfile.userId}/profile/`, UserProfile.toBack(userProfile))\n .pipe(map(data => UserProfile.toFront(data)))\n .toPromise();\n }\n\n async updateUserBasketballProfile(basketballProfile: BasketballProfile): Promise<BasketballProfile> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${basketballProfile.userId}/basketball_profile/`, BasketballProfile.toBack(basketballProfile))\n .pipe(map(data => BasketballProfile.toFront(data)))\n .toPromise();\n }\n\n async updateUserVolleyballProfile(volleyballProfile: VolleyballProfile): Promise<VolleyballProfile> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${volleyballProfile.userId}/volleyball_profile/`, VolleyballProfile.toBack(volleyballProfile))\n .pipe(map(data => VolleyballProfile.toFront(data)))\n .toPromise();\n }\n\n async getUserPermissions(userId?: number): Promise<UserPermission> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId || 'current'}/permission/`)\n .pipe(map(data => UserPermission.toFront(data)))\n .toPromise();\n }\n\n async updateUserPermission(data: any): Promise<UserPermission> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/current/permission/`, UserPermission.toBack(data))\n .pipe(map(result => UserPermission.toFront(result)))\n .toPromise();\n }\n\n async getTeams(userId: number): Promise<Team[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/teams/`)\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getInvites(): Promise<TeamInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/invites/`)\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptInvite(inviteId: number): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/invites/${inviteId}/accept/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async declineInvite(inviteId: number): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/invites/${inviteId}/decline/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async getStatistics(userId: number): Promise<BasketballStatistic> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/statistics/`)\n .pipe(map(data => BasketballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getStreetballStatistics(userId: number): Promise<BasketballStatistic> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/streetball_statistics/`)\n .pipe(map(data => BasketballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getVolleyballStatistic(userId: number): Promise<VolleyballStatistic> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/volleyball_statistics/`)\n .pipe(map(data => VolleyballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getGames(userId: number): Promise<Game[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/games/`)\n .pipe(map(data => Game.toFront(data)))\n .toPromise();\n }\n\n async getGameInvites(): Promise<GameInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/game_invites/`)\n .pipe(map(data => GameInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptGameInvite(inviteId: number): Promise<GameInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/game_invites/${inviteId}/accept/`, {})\n .pipe(map(data => GameInvite.toFront(data)))\n .toPromise();\n }\n\n async declineGameInvite(inviteId: number): Promise<GameInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/game_invites/${inviteId}/decline/`, {})\n .pipe(map(data => GameInvite.toFront(data)))\n .toPromise();\n }\n\n async searchUsers(query: string): Promise<User[]> {\n const params = (new HttpParams()).set('search', query);\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/`, {params})\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async setWizardShowed(wizard: string): Promise<User> {\n return this.httpClient\n .put(`${this.configService.get('apiUrl')}/api/v1/user/current/wizards/`, {wizard})\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async getTeamEvents(userId: number): Promise<TeamEvent[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/team_events/`)\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook, BaseModel } from './util';\nimport { VolleyballStatistic } from './volleyball-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam',\n },\n relation: {\n team: VolleyballStatistic,\n competitorTeam: VolleyballStatistic,\n }\n})\nexport class VolleyballGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: VolleyballStatistic;\n competitorTeam: VolleyballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n serve_hits: 'serveHits',\n serve_faults: 'serveFaults',\n serve_aces: 'serveAces',\n stuff_blocks: 'stuffBlocks',\n block_faults: 'blockFaults',\n block_rebounds: 'blockRebounds',\n attack_spikes: 'attackSpikes',\n attack_faults: 'attackFaults',\n attack_shots: 'attackShots',\n receives: 'receives',\n receive_faults: 'receiveFaults',\n excellent_receives: 'excellentReceives',\n serve_receives: 'serveReceives',\n serve_receive_faults: 'serveReceiveFaults',\n excellent_serve_receives: 'excellentServeReceives',\n points: 'points',\n faults: 'faults',\n yellow_cards: 'yellowCards',\n }\n})\nexport class VolleyballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n serveHits: number;\n serveFaults: number;\n serveAces: number;\n stuffBlocks: number;\n blockFaults: number;\n blockRebounds: number;\n attackSpikes: number;\n attackFaults: number;\n attackShots: number;\n receives: number;\n receiveFaults: number;\n excellentReceives: number;\n serveReceives: number;\n serveReceiveFaults: number;\n excellentServeReceives: number;\n points: number;\n faults: number;\n yellowCards: number;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get attacks(): number {\n return this.attackSpikes + this.attackShots;\n }\n\n get blocks(): number {\n return this.stuffBlocks + this.blockRebounds;\n }\n\n get totalReceives(): number {\n return this.receives + this.excellentReceives;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Game } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { VolleyballGameTeamStatistic } from '../models/volleyball-game-team-statistic';\nimport { VolleyballGameStatistic } from '../models/volleyball-game-statistic';\nimport { VolleyballGameLog } from '../models/volleyball-game-log';\nimport { ConfigService } from '../services/config.service';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class VolleyballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<VolleyballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/team_statistic/`).pipe(\n map(result => VolleyballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<VolleyballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/user_statistic/`).pipe(\n map(result => VolleyballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<VolleyballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/logs/`).pipe(\n map(result => VolleyballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocolLight(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/game_protocol_light/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { Team } from '../models/team';\nimport { map } from 'rxjs/operators';\nimport { TournamentTeam } from '../models/tournament-team';\n\n@Injectable({providedIn: 'root'})\nexport class PublicTeamApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n getById(teamId: number): Promise<Team> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_team/${teamId}/`).pipe(\n map(result => Team.toFront(result))\n ).toPromise();\n }\n\n getTournamentTeams(teamId: number, leagueId: number): Promise<TournamentTeam[]> {\n const params = new HttpParams().set('league_id', leagueId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_team/${teamId}/tournament_teams/`, {params}).pipe(\n map(result => TournamentTeam.toFront(result))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { User } from '../models/user';\nimport { map } from 'rxjs/operators';\nimport { Tournament } from '../models/tournament';\nimport { TournamentTeamUser } from '../models/tournament-team-user';\nimport { LeaguePlayer } from '../models/league-player';\n\n@Injectable({providedIn: 'root'})\nexport class PublicUserApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n getById(userId: number): Promise<User> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/`).pipe(\n map(result => User.toFront(result))\n ).toPromise();\n }\n\n getTournaments(userId: number, leagueId: number): Promise<Tournament[]> {\n const params = new HttpParams().set('league_id', leagueId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/tournaments/`, {params}).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n getTournamentUser(userId: number, seasonId: number): Promise<TournamentTeamUser> {\n const params = new HttpParams().set('season_id', seasonId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/tournament_user/`, {params}).pipe(\n map(result => TournamentTeamUser.toFront(result))\n ).toPromise();\n }\n\n getLeaguePlayer(userId: number, leagueId: number): Promise<LeaguePlayer> {\n const params = new HttpParams().set('league_id', leagueId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/league_player/`, {params}).pipe(\n map(result => LeaguePlayer.toFront(result))\n ).toPromise();\n }\n}\n","import { BasketballGameLogTypes } from '../models/basketball-game-log';\n\nexport const BasketballGameLogTypeLocalization = {\n [BasketballGameLogTypes.enter_game]: 'ÐÑÑ
од на плоÑадкÑ',\n [BasketballGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð»Ð¾Ñадки',\n [BasketballGameLogTypes.remove_game]: 'Удаление Ñ Ð¿Ð»Ð¾Ñадки',\n [BasketballGameLogTypes.two_point_attempt]: 'ÐÑоÑок 2 оÑка',\n [BasketballGameLogTypes.three_point_attempt]: 'ÐÑоÑок 3 оÑка',\n [BasketballGameLogTypes.free_throw_attempt]: 'ШÑÑаÑной бÑоÑок',\n [BasketballGameLogTypes.one_point_attempt]: 'ÐÑоÑок 1 оÑко',\n [BasketballGameLogTypes.two_point_made]: '2 оÑка',\n [BasketballGameLogTypes.three_point_made]: '3 оÑка',\n [BasketballGameLogTypes.free_throw_made]: '1 оÑко, ÑÑÑаÑной',\n [BasketballGameLogTypes.one_point_made]: '1 оÑко',\n [BasketballGameLogTypes.assist]: 'ÐеÑедаÑа',\n [BasketballGameLogTypes.block]: 'ÐлокÑоÑ',\n [BasketballGameLogTypes.rebound]: 'ÐодбоÑ',\n [BasketballGameLogTypes.offensive_rebound]: 'ÐÐ¾Ð´Ð±Ð¾Ñ Ð² нападении',\n [BasketballGameLogTypes.defensive_rebound]: 'ÐÐ¾Ð´Ð±Ð¾Ñ Ð² заÑиÑе',\n [BasketballGameLogTypes.steal]: 'ÐеÑеÑ
ваÑ',\n [BasketballGameLogTypes.turnover]: 'ÐоÑеÑÑ',\n [BasketballGameLogTypes.personal_foul]: 'Фол',\n [BasketballGameLogTypes.technical_foul]: 'ТеÑ
ниÑеÑкий Ñол',\n [BasketballGameLogTypes.unsportsmanlike_foul]: 'ÐеÑпоÑÑинÑй Ñол',\n [BasketballGameLogTypes.timeout]: 'ТаймаÑÑ',\n [BasketballGameLogTypes.team_rebound]: 'ÐоманднÑй подбоÑ',\n};\n","import { HockeyGameLogTypes } from '../models/hockey-game-log';\n\nexport const HockeyGameLogTypeLocalization = {\n [HockeyGameLogTypes.enter_game]: 'ÐÑÑ
од на плоÑадкÑ',\n [HockeyGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð»Ð¾Ñадки',\n [HockeyGameLogTypes.shot_miss]: 'ÐÑоÑок мимо',\n [HockeyGameLogTypes.shot_on_goal]: 'ÐÑоÑок по воÑоÑам',\n [HockeyGameLogTypes.shot_blocked]: 'ÐаблокиÑованнÑй бÑоÑок',\n [HockeyGameLogTypes.goal]: 'Ðол',\n [HockeyGameLogTypes.shootout_attempt]: 'ÐÑÐ»Ð¸Ñ Ð¿ÑомаÑ
',\n [HockeyGameLogTypes.shootout_goal]: 'ÐÑÐ»Ð¸Ñ Ð³Ð¾Ð»',\n [HockeyGameLogTypes.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.timeout]: 'ТаймаÑÑ',\n [HockeyGameLogTypes.penalty_start]: 'ÐаÑало ÑÑÑаÑного вÑемени',\n [HockeyGameLogTypes.penalty_end]: 'ÐÐ¾Ð½ÐµÑ ÑÑÑаÑного вÑемени'\n};\n","import { FootballGameLogTypes } from '../models/football-game-log';\n\nexport const FootballGameLogTypeLocalization = {\n [FootballGameLogTypes.enter_game]: 'ÐÑÑ
од на поле',\n [FootballGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð¾Ð»Ñ',\n [FootballGameLogTypes.shot_miss]: 'Ð£Ð´Ð°Ñ Ð¼Ð¸Ð¼Ð¾',\n [FootballGameLogTypes.shot_on_goal]: 'Ð£Ð´Ð°Ñ Ð² ÑÑвоÑ',\n [FootballGameLogTypes.shot_blocked]: 'ÐаблокиÑованнÑй ÑдаÑ',\n [FootballGameLogTypes.goal]: 'Ðол',\n [FootballGameLogTypes.assist]: 'ÐеÑедаÑа',\n [FootballGameLogTypes.penalty_attempt]: 'ÐеналÑÑи пÑомаÑ
',\n [FootballGameLogTypes.penalty_goal]: 'ÐеналÑÑи гол',\n [FootballGameLogTypes.small_penalty_attempt]: '10-меÑÑовÑй пÑомаÑ
',\n [FootballGameLogTypes.small_penalty_goal]: '10-меÑÑовÑй гол',\n [FootballGameLogTypes.block_shot]: 'ÐлокиÑовка ÑдаÑа',\n [FootballGameLogTypes.corner]: 'Угловой',\n [FootballGameLogTypes.free_kick]: 'ШÑÑаÑной ÑдаÑ',\n [FootballGameLogTypes.save]: 'ÐÑÑажен ÑдаÑ',\n [FootballGameLogTypes.penalty_save]: 'ÐÑÑажен пеналÑÑи',\n [FootballGameLogTypes.small_penalty_save]: 'ÐÑÑажен 10 меÑÑовÑй',\n [FootballGameLogTypes.foul]: 'Фол',\n [FootballGameLogTypes.yellow_card]: 'ÐелÑÐ°Ñ ÐºÐ°ÑÑоÑка',\n [FootballGameLogTypes.red_card]: 'ÐÑаÑÐ½Ð°Ñ ÐºÐ°ÑÑоÑка',\n [FootballGameLogTypes.perfect_pass]: 'ÐаÑ',\n [FootballGameLogTypes.loss]: 'ÐоÑеÑÑ',\n [FootballGameLogTypes.steal]: 'ÐеÑеÑ
ваÑ',\n [FootballGameLogTypes.out]: 'ÐÑÑ',\n [FootballGameLogTypes.timeout]: 'ТаймаÑÑ',\n [FootballGameLogTypes.auto_goal]: 'ÐвÑогол'\n};\n","import { HandballGameLogTypes } from '../models/handball-game-log';\n\nexport const HandballGameLogTypeLocalization = {\n [HandballGameLogTypes.enter_game]: 'ÐÑÑ
од на поле',\n [HandballGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð¾Ð»Ñ',\n [HandballGameLogTypes.shot_miss]: 'ÐÑоÑок мимо',\n [HandballGameLogTypes.shot_on_goal]: 'ÐÑоÑок в ÑÑвоÑ',\n [HandballGameLogTypes.shot_blocked]: 'ÐаблокиÑованнÑй бÑоÑок',\n [HandballGameLogTypes.goal]: 'Ðол',\n [HandballGameLogTypes.assist]: 'ÐеÑедаÑа',\n [HandballGameLogTypes.penalty_miss]: '7м пÑомаÑ
',\n [HandballGameLogTypes.penalty_shot_on_goal]: '7м в ÑÑвоÑ',\n [HandballGameLogTypes.penalty_goal]: '7м гол',\n [HandballGameLogTypes.save]: 'СÑйв',\n [HandballGameLogTypes.penalty_save]: 'СÑйв 7м',\n [HandballGameLogTypes.foul]: 'Фол',\n [HandballGameLogTypes.yellow_card]: 'ÐеллÑÐ°Ñ ÐºÐ°ÑÑоÑка',\n [HandballGameLogTypes.red_card]: 'ÐÑаÑÐ½Ð°Ñ ÐºÐ°ÑÑоÑка',\n [HandballGameLogTypes.two_minute_foul]: '2Ñ
минÑÑнÑй ÑÑÑаÑ',\n [HandballGameLogTypes.turnover]: 'ÐоÑеÑÑ',\n [HandballGameLogTypes.steal]: 'ÐеÑеÑ
ваÑ',\n [HandballGameLogTypes.block_shot]: 'Ðлок бÑоÑка',\n [HandballGameLogTypes.timeout]: 'ТаймаÑÑ'\n};\n","import { OvertimeTypes } from '../models/tournament';\n\nexport const OvertimeTypeLocalization = {\n [OvertimeTypes.to_score_diff]: 'Ðо ÑазниÑÑ Ð² N мÑÑей',\n [OvertimeTypes.to_score_total]: 'Ðо N оÑков',\n [OvertimeTypes.time]: 'Ðо вÑемени',\n [OvertimeTypes.without_overtime]: 'Ðез овеÑÑайма',\n [OvertimeTypes.to_first_goal]: 'Ðа N минÑÑ Ð´Ð¾ пеÑвой ÑайбÑ',\n [OvertimeTypes.to_first_goal_and_bullitts]: 'Ðа N минÑÑ Ð´Ð¾ пеÑвой ÑÐ°Ð¹Ð±Ñ + бÑллиÑÑ',\n [OvertimeTypes.bullitts]: 'ÐÑллиÑÑ',\n [OvertimeTypes.penalties]: 'ÐеналÑÑи',\n [OvertimeTypes.time_and_penalties]: 'ÐополниÑелÑное вÑÐµÐ¼Ñ + пеналÑÑи'\n};\n","import { 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';\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","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/browser';\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"]}
|