@mtgame/core 0.0.37 → 0.0.39
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/basketball-game-api.d.ts +1 -0
- package/api/league-api.d.ts +6 -1
- package/api/league-news-api.d.ts +2 -1
- package/api/media-api.d.ts +5 -0
- package/api/public-api.d.ts +1 -0
- package/api/tournament-api.d.ts +4 -1
- package/api/tournament-season-api.d.ts +23 -0
- package/bundles/mtgame-core.umd.js +302 -7
- 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/basketball-game-api.js +7 -1
- package/esm2015/api/league-api.js +50 -1
- package/esm2015/api/league-news-api.js +13 -4
- package/esm2015/api/media-api.js +17 -1
- package/esm2015/api/public-api.js +2 -1
- package/esm2015/api/tournament-api.js +10 -3
- package/esm2015/api/tournament-season-api.js +138 -0
- package/esm2015/models/game.js +4 -1
- package/esm2015/models/public-api.js +2 -1
- package/esm2015/models/tournament-season.js +40 -0
- package/esm2015/models/tournament-team.js +2 -1
- package/esm2015/models/tournament.js +10 -3
- package/esm5/api/basketball-game-api.js +9 -1
- package/esm5/api/league-api.js +58 -1
- package/esm5/api/league-news-api.js +16 -4
- package/esm5/api/media-api.js +21 -1
- package/esm5/api/public-api.js +2 -1
- package/esm5/api/tournament-api.js +11 -4
- package/esm5/api/tournament-season-api.js +156 -0
- package/esm5/models/game.js +4 -1
- package/esm5/models/public-api.js +2 -1
- package/esm5/models/tournament-season.js +45 -0
- package/esm5/models/tournament-team.js +2 -1
- package/esm5/models/tournament.js +10 -3
- package/fesm2015/mtgame-core.js +260 -7
- package/fesm2015/mtgame-core.js.map +1 -1
- package/fesm5/mtgame-core.js +301 -8
- package/fesm5/mtgame-core.js.map +1 -1
- package/models/game.d.ts +2 -0
- package/models/public-api.d.ts +1 -0
- package/models/tournament-season.d.ts +18 -0
- package/models/tournament-team.d.ts +1 -0
- package/models/tournament.d.ts +4 -0
- 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/user.ts","ng://@mtgame/core/models/tournament.ts","ng://@mtgame/core/models/team.ts","ng://@mtgame/core/models/organization.ts","ng://@mtgame/core/models/league.ts","ng://@mtgame/core/models/volleyball-game-config.ts","ng://@mtgame/core/models/basketball-game-config.ts","ng://@mtgame/core/models/game.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/team-user.ts","ng://@mtgame/core/models/tournament-group.ts","ng://@mtgame/core/models/tournament-team.ts","ng://@mtgame/core/models/tournament-disqualification.ts","ng://@mtgame/core/models/tournament-team-user.ts","ng://@mtgame/core/models/game-user.ts","ng://@mtgame/core/utils/data.ts","ng://@mtgame/core/models/basketball-game-log.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/base-statistic.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/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/tournament-event.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/league-news.ts","ng://@mtgame/core/models/poll.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/volleyball-statistic.ts","ng://@mtgame/core/models/tournament-stage.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-news.ts","ng://@mtgame/core/models/game-timeline-stages.ts","ng://@mtgame/core/models/playoff.ts","ng://@mtgame/core/utils/array.ts","ng://@mtgame/core/models/league-user.ts","ng://@mtgame/core/models/tournament-stage-team.ts","ng://@mtgame/core/models/user-permission.ts","ng://@mtgame/core/api/tournament-api.ts","ng://@mtgame/core/models/tournament-join-team.ts","ng://@mtgame/core/api/tournament-join-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/localization/basketball-game-log-types.ts","ng://@mtgame/core/localization/hockey-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/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","DateField","_super","date","Date","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","toISOString","slice","DateTimeField","ModelInstance","config","mappingFields","relation","path","modelType","map","instance","backField","frontField","extractValue","undefined","FileEngine","ToFrontHook","descriptor","args","_i","parseMethod","ToBackHook","keyParts","split","keyParts_1","keyParts_1_1","k","SportTypes","File","file","name","mime_type","size","engine","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","sport","parent_id","sub_sports","UserProfile","user_id","height","weight","City","GameVolleyballPosition","VolleyballWorkHand","BasketballProfile","position","work_hand","workHand","GameHockeyPosition","HockeyWorkHand","VolleyballProfile","UserGender","HockeyProfile","TournamentTypes","TournamentStatuses","TournamentGender","BasketballStatisticTypes","VolleyballStatisticTypes","GameTimeTypes","OvertimeTypes","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","wizards","city","gender","is_active","basketballProfile","volleyballProfile","hockeyProfile","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","contact_email","contact_phone","alias","description","social_links","links","organization","tournaments_count","cover","about","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","basketballStatisticType","volleyballStatisticType","gameTimeType","overtimeType","TournamentTeamWinner","team_id","tournament_id","points","Tournament","preview_image","location","price","regulation_files","settings","league","teams_count","status","team_winner","previewImage","regulationFile","teamWinner","BasketballGameConfig","overtime_timeout_count","statistic_type","statisticType","GameStatuses","GameResultTypes","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","originalPhoto","listPhoto","detailPhoto","videoPreview","HockeyGameConfig","TeamUserRole","Game","_this","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","score_by_period","playoff_stage","tournament_stage_id","tournament_playoff_id","tournament_court","media_count","media","resultType","basketballGameConfig","volleyballGameConfig","hockeyGameConfig","tournamentCourt","TeamUser","teamPlayer","role","number","TournamentGroup","TournamentTeam","gamesCount","wonGamesCount","group","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","TournamentDisqualification","tournament_team_user_id","date_from","date_to","matches_count","dateFrom","dateTo","TournamentTeamUser","middleName","tournament_team","team_user","disqualified","disqualification","has_changes","tournamentTeam","teamUser","GameUser","tournament_team_user","updated_at","tournamentTeamUser","updatedAt","updateItemInArray","force","checkFunction","isFunction","updateItemsInArray","items","forEach","addItemInArray","atEnd","addItemsInArray","reverse","deleteItemFromArray","functionToCheck","toString","BasketballGameLogTypes","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","BasketballStatistic","personalFouls","technicalFouls","unsportsmanlikeFouls","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","newbie","BaseStatistic","BasketballGameTeamStatistic","BasketballGameStatistic","gameUserId","game_user_id","HockeyGameLogTypes","HockeyAdvantageTypes","BasketballGameLog","active","isPointsType","two_point_made","three_point_made","free_throw_made","one_point_made","indexOf","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","BasketballGameApi","httpClient","configService","getById","gameId","toPromise","getUsers","getTeamStatistic","getUserStatistic","getLogs","downloadProtocol","fileType","responseType","HttpClient","Feedback","theme","message","files","FeedbackApi","sendFeedback","post","response","FileApi","upload","fileData","filename","formData","FormData","append","createZipArchive","files_1","files_1_1","TournamentEventTypes","HockeyGameLog","_penalizedGameUserId","isScoreType","goal","shootout_goal","isPenaltyType","minor_penalty","major_penalty","misconduct_penalty","game_misconduct_penalty","penalty_shot","match_penalty","isAfter","log","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","game_time","plus_minus","HockeyStatistic","gameTime","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","params","HttpParams","downloadApplication","LeagueNews","preview_text","detail_text","picture","is_main","tournaments","PollStatuses","TournamentEvent","news","event","LeagueApi","getByAlias","getByDomain","domain","getTournaments","leagueId","getEvents","page","filters","search","observe","total","headers","LeagueNewsApi","getLeagueNewsList","getMainLeagueNews","getNewsById","newsId","getTournamentNewsList","tournamentId","MediaApi","getMedia","mediaId","getTournamentGameMedia","tournamentTour","tournamentStageId","playoffId","playoffStage","getLeagueGameMedia","getGameMediaById","getGameMedia","createZip","mediaIds","downloadMedia","GameInviteStatus","PollVariant","uuid","PollAnswer","answer_uuid","poll_id","Poll","variantsWithAnswers","_variants","_answers","calculateAnswersPercentage","variants","answersByVariant","reduce","acc","answerUuid","variant","percent","sort","a","author","answers","multiple_answer","anonymous","created_at","createdAt","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","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","TournamentStageStatuses","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","query","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","getVolleyballStatistic","joinTeam","leaveTeam","getGames","createGame","getTeamEvents","createTeamEvent","getTournamentTeams","getTournamentInvites","getTournamentGames","acceptTournamentInvite","inviteId","declineTournamentInvite","registerLazyUser","userData","getLazyUser","updateLazyUser","deleteLazyUser","resendLazyUserEmail","TeamEventApi","getTeamEvent","teamEventId","updateTeamEvent","deleteTeamEvent","getTeamEventInvites","createTeamEventInvite","acceptTeamEventInvite","declineTeamEventInvite","TournamentNews","text","GameTimelineStageItem","stage_id","playoff_stages_count","GameTimelineStages","current_tour","current_playoff_stage","stages","PlayoffTypes","TournamentStage","generateArray","LeagueUserRoles","LeagueUserPermissions","PlayoffSettings","rounds","final_rounds","third_place_rounds","Playoff","teamsCount","getPlayoffStages","stagesCount","stage","pow","is_official","TournamentStageTeam","final_standing","received_points","LeagueUser","_role","permissions","UserPermissionTypes","TournamentApi","getNews","getTournamentStages","getPlayoff","getPlayoffGames","getGamesStages","getTeams","getStageTeams","getTeamById","tournamentTeamId","getUserById","userId","getUserGames","tournamentUserId","getBasketballStatistic","per_game","getHockeyStatistic","getTournamentTeamUsers","myPermission","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","TournamentStageApi","getGroups","stageId","getPlayoffs","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","yellow_cards","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","BasketballGameLogTypeLocalization","_a$1","remove_game","two_point_attempt","three_point_attempt","free_throw_attempt","one_point_attempt","assist","block","steal","turnover","HockeyGameLogTypeLocalization","_a$2","shot_miss","shot_on_goal","shot_blocked","shootout_attempt","block_shot","face_off_lose","face_off_win","penalty_start","penalty_end","OvertimeTypeLocalization","_a$3","to_score_diff","to_score_total","without_overtime","to_first_goal","to_first_goal_and_bullitts","bullitts","TeamUserRoleLocalization","_a$4","moderator","member","admin","GameBasketballPositionLocalization","_a$5","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","VolleyballGameLogTypeLocalization","_a$6","yellow_card","CentrifugoService","channels$","subscriptions","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","fields","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 modelClass.toFront(value);\n },\n toBack: (value) => {\n if (!Array.isArray(value)) {\n return [];\n }\n return modelClass.toBack(value);\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 } from './util';\n\nexport enum FileEngine {\n django = 1,\n s3\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n path: 'path',\n mime_type: 'mimeType',\n size: 'size',\n engine: 'engine',\n },\n relation: {\n engine: enumField(FileEngine)\n }\n})\nexport class File {\n id: number;\n name: string;\n path: string;\n mimeType: string;\n size: string;\n engine: FileEngine;\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}\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 @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, 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';\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 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 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 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, 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';\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}\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 },\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\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 },\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 }\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\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 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, 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 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 } from './util';\nimport { Organization } from './organization';\nimport { File } from './file';\nimport { Sport } from './sport';\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 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 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.substr(0, 15) === 'https://vk.com/');\n }\n\n get fbLink(): string {\n return this.socialLinks.find(link => link.substr(0, 25) === 'https://www.facebook.com/');\n }\n\n get instaLink(): string {\n return this.socialLinks.find(link => link.substr(0, 25) === 'https://www.instagram.com');\n }\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, 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';\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 score_by_period: 'scoreByPeriod',\n playoff_stage: 'playoffStage',\n tournament_stage_id: 'tournamentStageId',\n tournament_playoff_id: 'tournamentPlayoffId',\n tournament_court: 'tournamentCourt',\n media_count: 'mediaCount',\n media: 'media',\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 tournamentCourt: LeagueCourt,\n media: listField(MediaItem),\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 archive: boolean;\n playoffNumber: string;\n tournamentId: number;\n tournamentTour: number;\n basketballGameConfig: BasketballGameConfig;\n volleyballGameConfig: VolleyballGameConfig;\n hockeyGameConfig: HockeyGameConfig;\n scoreByPeriod: any;\n playoffStage: string;\n tournamentStageId: number;\n tournamentPlayoffId: number;\n tournamentCourt: LeagueCourt;\n mediaCount: number;\n media: MediaItem[];\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';\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 },\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\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\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}\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 @ToBackHook\n static toBack(teamPlayer: TeamUser): 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 tournament_stage_id: 'tournamentStageId'\n }\n})\nexport class TournamentGroup extends BaseModel {\n id: number;\n name: string;\n tournamentStageId: number;\n teams: TournamentTeam[];\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { 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 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 },\n relation: {\n tournament: Tournament,\n team: Team,\n group: TournamentGroup,\n games: 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 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\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 } 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 { TournamentTeam } from './tournament-team';\nimport { TeamUser } from './team-user';\nimport { File } from './file';\nimport { TournamentDisqualification } from './tournament-disqualification';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team: 'tournamentTeam',\n team_user: 'teamUser',\n disqualified: 'disqualified',\n first_name: 'firstName',\n last_name: 'lastName',\n middle_name: 'middleName',\n photo: 'photo',\n disqualification: 'disqualification',\n has_changes: 'hasChanges',\n },\n relation: {\n tournamentTeam: TournamentTeam,\n teamUser: TeamUser,\n photo: File,\n disqualification: TournamentDisqualification,\n }\n})\nexport class TournamentTeamUser extends BaseModel {\n id: number;\n tournamentTeam: TournamentTeam;\n teamUser: TeamUser;\n disqualified: boolean;\n firstName: string;\n lastName: string;\n middleName: string;\n photo: File; disqualification: TournamentDisqualification;\n hasChanges: boolean;\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 @ToBackHook\n static toBack(data: 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 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 updatedAt: Date;\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 { 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}\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 { 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 { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\n\nexport class BaseStatistic {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: boolean;\n gamesCount: number;\n wonGamesCount: number;\n newbie: boolean;\n}\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 } 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 newbie: 'newbie',\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 BaseStatistic {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: boolean;\n gamesCount: number;\n wonGamesCount: number;\n 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 newbie: boolean;\n\n get totalFouls() {\n return this.personalFouls + this.technicalFouls + this.unsportsmanlikeFouls;\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';\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 {\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 { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { GameUser } from '../models/game-user';\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';\n\n@Injectable({providedIn: 'root'})\nexport class BasketballGameApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\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 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 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: 'xlsx' | 'pdf'): 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","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 },\n relation: {\n files: File\n }\n})\nexport class Feedback {\n id: number;\n theme: string;\n message: 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","import { Injectable } from '@angular/core';\nimport { HttpClient } 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): Promise<File> {\n const formData = new FormData();\n formData.append('file', fileData, filename);\n\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/file/`, formData)\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 { 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 { 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 @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 } 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 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 },\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 BaseStatistic {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: boolean;\n gamesCount: number;\n wonGamesCount: number;\n 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\n get assists(): number {\n return (this.ppAssists || 0) + (this.shAssists || 0) + (this.evAssists || 0);\n }\n\n get userMinutes(): string {\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 { HockeyStatistic } from './hockey-statistic';\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 {\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 { GameUser } from '../models/game-user';\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';\n\n@Injectable({providedIn: 'root'})\nexport class HockeyGameApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\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 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 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'): 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', 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, listField, DateTimeField } from './util';\nimport { File } from './file';\nimport { Tournament } from './tournament';\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 is_main: 'isMain',\n tournaments: 'tournaments',\n },\n relation: {\n datetime: DateTimeField,\n picture: File,\n cover: File,\n tournaments: listField(Tournament)\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 isMain: boolean;\n tournaments: Tournament[];\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, 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 { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { League } from '../models/league';\nimport { map } from 'rxjs/operators';\nimport { Tournament } from '../models/tournament';\nimport { ConfigService } from '../services/config.service';\nimport { TournamentEventsListFilter } from './tournament-api';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { GameMediaFilters } from './media-api';\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): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournaments/`).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 }\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","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { LeagueNews } 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): Promise<PaginatedResponse<LeagueNews[]>> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/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 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 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';\n\nexport interface GameMediaFilters {\n tournamentStageId?: number;\n tournamentTour?: number;\n teamId?: number;\n playoffStage?: number;\n playoffId?: number;\n status?: GameStatuses;\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 if (filters) {\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 }\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 if (filters) {\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 }\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 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/`).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","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, 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 } 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 },\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 BaseStatistic {\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, 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, 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 { 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, 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 },\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\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","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 { 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 { 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, 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 { 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 { LeagueUserPermissions } from '../models/league-user';\n\nexport interface TournamentGamesFilters {\n tournamentStageId?: number;\n tournamentTour?: number;\n teamId?: number;\n playoffStage?: number;\n playoffId?: number;\n status?: GameStatuses;\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_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 date_from?: string;\n date_to?: string;\n per_game?: boolean;\n group_by: StatisticGroupByTypes;\n}\n\nexport interface TournamentEventsListFilter {\n event?: TournamentEventTypes;\n search?: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class TournamentApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getByAlias(alias: string): Promise<Tournament> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${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 }\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): Promise<Game[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_playoff/${playoffId}/games/`).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 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 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 getBasketballStatistic(filters?: StatisticFilters): Promise<BasketballStatistic[]> {\n let params = new HttpParams();\n if (filters) {\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\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/basketball_statistic/`, {params}).pipe(\n map(result => BasketballStatistic.toFront(result))\n ).toPromise();\n }\n\n async getVolleyballStatistic(filters?: StatisticFilters): Promise<VolleyballStatistic[]> {\n let params = new HttpParams();\n if (filters) {\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\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/volleyball_statistic/`, {params}).pipe(\n map(result => VolleyballStatistic.toFront(result))\n ).toPromise();\n }\n\n async getHockeyStatistic(filters?: StatisticFilters): Promise<HockeyStatistic[]> {\n let params = new HttpParams();\n if (filters) {\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\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/hockey_statistic/`, {params}).pipe(\n map(result => HockeyStatistic.toFront(result))\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","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 } 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 },\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 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';\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 {\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 } from '@angular/common/http';\nimport { Game } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { GameUser } from '../models/game-user';\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';\n\n@Injectable({providedIn: 'root'})\nexport class VolleyballGameApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\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 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 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","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};\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 { 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};\n","import { TeamUserRole } from '../models/team-user';\n\nexport const TeamUserRoleLocalization = {\n [TeamUserRole.moderator]: 'Модератор',\n [TeamUserRole.member]: 'Пользователь',\n [TeamUserRole.admin]: 'Владелец',\n};\n","import { GameBasketballPosition, WorkHand } from '../models/basketball-profile';\nimport { GameVolleyballPosition, VolleyballWorkHand } from '../models/volleyball-profile';\nimport { GameHockeyPosition } from '../models/hockey-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","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 { 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 { 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\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 });\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';\n\n@Injectable()\nexport class HttpCookieInterceptor implements HttpInterceptor {\n private isBrowser = isPlatformBrowser(this.platformId);\n\n constructor(\n private injector: Injector,\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 req = req.clone({withCredentials: true});\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/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/game.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/team-user.ts","ng://@mtgame/core/models/tournament-group.ts","ng://@mtgame/core/models/tournament-team.ts","ng://@mtgame/core/models/tournament-disqualification.ts","ng://@mtgame/core/models/tournament-team-user.ts","ng://@mtgame/core/models/game-user.ts","ng://@mtgame/core/utils/data.ts","ng://@mtgame/core/models/basketball-game-log.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/base-statistic.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/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/tournament-event.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/league-news.ts","ng://@mtgame/core/models/poll.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/volleyball-statistic.ts","ng://@mtgame/core/models/tournament-stage.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-news.ts","ng://@mtgame/core/models/game-timeline-stages.ts","ng://@mtgame/core/models/playoff.ts","ng://@mtgame/core/utils/array.ts","ng://@mtgame/core/models/league-user.ts","ng://@mtgame/core/models/tournament-stage-team.ts","ng://@mtgame/core/models/user-permission.ts","ng://@mtgame/core/api/tournament-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/localization/basketball-game-log-types.ts","ng://@mtgame/core/localization/hockey-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/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","DateField","_super","date","Date","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","toISOString","slice","DateTimeField","ModelInstance","config","mappingFields","relation","path","modelType","map","instance","backField","frontField","extractValue","undefined","FileEngine","ToFrontHook","descriptor","args","_i","parseMethod","ToBackHook","keyParts","split","keyParts_1","keyParts_1_1","k","SportTypes","File","file","name","mime_type","size","engine","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","sport","parent_id","sub_sports","UserProfile","user_id","height","weight","City","GameVolleyballPosition","VolleyballWorkHand","BasketballProfile","position","work_hand","workHand","GameHockeyPosition","HockeyWorkHand","VolleyballProfile","UserGender","HockeyProfile","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","wizards","city","gender","is_active","basketballProfile","volleyballProfile","hockeyProfile","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","contact_email","contact_phone","alias","description","social_links","links","organization","tournaments_count","cover","about","TournamentTypes","TournamentStatuses","TournamentGender","BasketballStatisticTypes","VolleyballStatisticTypes","GameTimeTypes","OvertimeTypes","TournamentSeason","preview_image","status","previewImage","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","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","regulationFile","teamWinner","teamSecond","teamThird","BasketballGameConfig","overtime_timeout_count","statistic_type","statisticType","GameStatuses","GameResultTypes","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","originalPhoto","listPhoto","detailPhoto","videoPreview","HockeyGameConfig","TeamUserRole","Game","_this","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","score_by_period","playoff_stage","tournament_stage_id","tournament_playoff_id","tournament_court","media_count","media","resultType","basketballGameConfig","volleyballGameConfig","hockeyGameConfig","tournamentCourt","TeamUser","teamPlayer","role","number","TournamentGroup","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","TournamentDisqualification","tournament_team_user_id","date_from","date_to","matches_count","dateFrom","dateTo","TournamentTeamUser","middleName","tournament_team","team_user","disqualified","disqualification","has_changes","tournamentTeam","teamUser","GameUser","tournament_team_user","updated_at","tournamentTeamUser","updatedAt","updateItemInArray","force","checkFunction","isFunction","updateItemsInArray","items","forEach","addItemInArray","atEnd","addItemsInArray","reverse","deleteItemFromArray","functionToCheck","toString","BasketballGameLogTypes","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","BasketballStatistic","personalFouls","technicalFouls","unsportsmanlikeFouls","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","newbie","BaseStatistic","BasketballGameTeamStatistic","BasketballGameStatistic","gameUserId","game_user_id","HockeyGameLogTypes","HockeyAdvantageTypes","BasketballGameLog","active","isPointsType","two_point_made","three_point_made","free_throw_made","one_point_made","indexOf","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","BasketballGameApi","httpClient","configService","getById","gameId","toPromise","getUsers","getTeamStatistic","getUserStatistic","getLogs","downloadProtocol","fileType","responseType","downloadFibaProtocol","HttpClient","Feedback","theme","message","files","FeedbackApi","sendFeedback","post","response","FileApi","upload","fileData","filename","formData","FormData","append","createZipArchive","files_1","files_1_1","TournamentEventTypes","HockeyGameLog","_penalizedGameUserId","isScoreType","goal","shootout_goal","isPenaltyType","minor_penalty","major_penalty","misconduct_penalty","game_misconduct_penalty","penalty_shot","match_penalty","isAfter","log","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","game_time","plus_minus","HockeyStatistic","gameTime","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","params","HttpParams","downloadApplication","LeagueNews","preview_text","detail_text","picture","is_main","tournaments","PollStatuses","TournamentEvent","news","event","LeagueApi","getByAlias","getByDomain","domain","getTournaments","leagueId","getEvents","page","filters","search","tournamentTour","observe","total","headers","getTournamentSeasons","getGames","tournamentStageId","playoffStage","statuses","getSeasons","notClosed","LeagueNewsApi","getLeagueNewsList","getMainLeagueNews","getMainLeagueNewsList","getNewsById","newsId","getTournamentNewsList","tournamentId","MediaApi","getMedia","mediaId","getTournamentGameMedia","playoffId","getLeagueGameMedia","getLeagueMedia","mediaType","sort","getGameMediaById","getGameMedia","createZip","mediaIds","downloadMedia","GameInviteStatus","PollVariant","uuid","PollAnswer","answer_uuid","poll_id","Poll","variantsWithAnswers","_variants","_answers","calculateAnswersPercentage","variants","answersByVariant","reduce","acc","answerUuid","variant","percent","a","author","answers","multiple_answer","anonymous","created_at","createdAt","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","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","TournamentStageStatuses","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","query","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","getVolleyballStatistic","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","TournamentNews","text","GameTimelineStageItem","stage_id","playoff_stages_count","GameTimelineStages","current_tour","current_playoff_stage","stages","PlayoffTypes","TournamentStage","generateArray","LeagueUserRoles","LeagueUserPermissions","PlayoffSettings","rounds","final_rounds","third_place_rounds","Playoff","teamsCount","getPlayoffStages","stagesCount","stage","pow","is_official","TournamentStageTeam","received_points","LeagueUser","_role","permissions","UserPermissionTypes","TournamentApi","getNews","getTournamentStages","getPlayoff","getPlayoffGames","getGamesStages","getTeams","getStageTeams","getTeamById","tournamentTeamId","getUserById","userId","getUserGames","tournamentUserId","getBasketballStatistic","per_game","getHockeyStatistic","getTournamentTeamUsers","myPermission","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","TournamentStageApi","getGroups","stageId","getPlayoffs","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","yellow_cards","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","BasketballGameLogTypeLocalization","_a$1","remove_game","two_point_attempt","three_point_attempt","free_throw_attempt","one_point_attempt","assist","block","steal","turnover","HockeyGameLogTypeLocalization","_a$2","shot_miss","shot_on_goal","shot_blocked","shootout_attempt","block_shot","face_off_lose","face_off_win","penalty_start","penalty_end","OvertimeTypeLocalization","_a$3","to_score_diff","to_score_total","without_overtime","to_first_goal","to_first_goal_and_bullitts","bullitts","TeamUserRoleLocalization","_a$4","moderator","member","admin","GameBasketballPositionLocalization","_a$5","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","VolleyballGameLogTypeLocalization","_a$6","yellow_card","CentrifugoService","channels$","subscriptions","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","fields","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 modelClass.toFront(value);\n },\n toBack: (value) => {\n if (!Array.isArray(value)) {\n return [];\n }\n return modelClass.toBack(value);\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 } from './util';\n\nexport enum FileEngine {\n django = 1,\n s3\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n path: 'path',\n mime_type: 'mimeType',\n size: 'size',\n engine: 'engine',\n },\n relation: {\n engine: enumField(FileEngine)\n }\n})\nexport class File {\n id: number;\n name: string;\n path: string;\n mimeType: string;\n size: string;\n engine: FileEngine;\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}\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 @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, 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';\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 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 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 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 } 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 },\n relation: {\n logo: File,\n cover: File,\n previewImage: File,\n status: enumField(TournamentSeasonStatuses),\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\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 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 } from './util';\nimport { Organization } from './organization';\nimport { File } from './file';\nimport { Sport } from './sport';\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 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 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.substr(0, 15) === 'https://vk.com/');\n }\n\n get fbLink(): string {\n return this.socialLinks.find(link => link.substr(0, 25) === 'https://www.facebook.com/');\n }\n\n get instaLink(): string {\n return this.socialLinks.find(link => link.substr(0, 25) === 'https://www.instagram.com');\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}\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 },\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\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 },\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\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 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, 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';\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 score_by_period: 'scoreByPeriod',\n playoff_stage: 'playoffStage',\n tournament_stage_id: 'tournamentStageId',\n tournament_playoff_id: 'tournamentPlayoffId',\n tournament_court: 'tournamentCourt',\n media_count: 'mediaCount',\n media: 'media',\n tournament: 'tournament',\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 tournamentCourt: LeagueCourt,\n media: listField(MediaItem),\n tournament: Tournament,\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 archive: boolean;\n playoffNumber: string;\n tournamentId: number;\n tournamentTour: number;\n basketballGameConfig: BasketballGameConfig;\n volleyballGameConfig: VolleyballGameConfig;\n hockeyGameConfig: HockeyGameConfig;\n scoreByPeriod: any;\n playoffStage: string;\n tournamentStageId: number;\n tournamentPlayoffId: number;\n tournamentCourt: LeagueCourt;\n mediaCount: number;\n media: MediaItem[];\n tournament: Tournament;\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';\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 },\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\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\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}\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 @ToBackHook\n static toBack(teamPlayer: TeamUser): 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 tournament_stage_id: 'tournamentStageId'\n }\n})\nexport class TournamentGroup extends BaseModel {\n id: number;\n name: string;\n tournamentStageId: number;\n teams: TournamentTeam[];\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { 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 },\n relation: {\n tournament: Tournament,\n team: Team,\n group: TournamentGroup,\n games: 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\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 } 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 { TournamentTeam } from './tournament-team';\nimport { TeamUser } from './team-user';\nimport { File } from './file';\nimport { TournamentDisqualification } from './tournament-disqualification';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team: 'tournamentTeam',\n team_user: 'teamUser',\n disqualified: 'disqualified',\n first_name: 'firstName',\n last_name: 'lastName',\n middle_name: 'middleName',\n photo: 'photo',\n disqualification: 'disqualification',\n has_changes: 'hasChanges',\n },\n relation: {\n tournamentTeam: TournamentTeam,\n teamUser: TeamUser,\n photo: File,\n disqualification: TournamentDisqualification,\n }\n})\nexport class TournamentTeamUser extends BaseModel {\n id: number;\n tournamentTeam: TournamentTeam;\n teamUser: TeamUser;\n disqualified: boolean;\n firstName: string;\n lastName: string;\n middleName: string;\n photo: File; disqualification: TournamentDisqualification;\n hasChanges: boolean;\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 @ToBackHook\n static toBack(data: 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 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 updatedAt: Date;\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 { 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}\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 { 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 { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\n\nexport class BaseStatistic {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: boolean;\n gamesCount: number;\n wonGamesCount: number;\n newbie: boolean;\n}\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 } 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 newbie: 'newbie',\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 BaseStatistic {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: boolean;\n gamesCount: number;\n wonGamesCount: number;\n 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 newbie: boolean;\n\n get totalFouls() {\n return this.personalFouls + this.technicalFouls + this.unsportsmanlikeFouls;\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';\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 {\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 { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { GameUser } from '../models/game-user';\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';\n\n@Injectable({providedIn: 'root'})\nexport class BasketballGameApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\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 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 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: 'xlsx' | 'pdf'): 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: 'xlsx' | 'pdf'): 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 },\n relation: {\n files: File\n }\n})\nexport class Feedback {\n id: number;\n theme: string;\n message: 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","import { Injectable } from '@angular/core';\nimport { HttpClient } 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): Promise<File> {\n const formData = new FormData();\n formData.append('file', fileData, filename);\n\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/file/`, formData)\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 { 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 { 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 @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 } 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 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 },\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 BaseStatistic {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: boolean;\n gamesCount: number;\n wonGamesCount: number;\n 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\n get assists(): number {\n return (this.ppAssists || 0) + (this.shAssists || 0) + (this.evAssists || 0);\n }\n\n get userMinutes(): string {\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 { HockeyStatistic } from './hockey-statistic';\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 {\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 { GameUser } from '../models/game-user';\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';\n\n@Injectable({providedIn: 'root'})\nexport class HockeyGameApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\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 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 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'): 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', 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, listField, DateTimeField } from './util';\nimport { File } from './file';\nimport { Tournament } from './tournament';\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 is_main: 'isMain',\n tournaments: 'tournaments',\n },\n relation: {\n datetime: DateTimeField,\n picture: File,\n cover: File,\n tournaments: listField(Tournament)\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 isMain: boolean;\n tournaments: Tournament[];\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, 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 { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { League } from '../models/league';\nimport { map } from 'rxjs/operators';\nimport { Tournament } from '../models/tournament';\nimport { ConfigService } from '../services/config.service';\nimport { 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';\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): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournaments/`).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 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 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, notClosed?: boolean): Promise<TournamentSeason[]> {\n const params = new HttpParams().set('not_closed', notClosed ? '1' : '');\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournament_seasons/`, {params})\n .pipe(map(result => TournamentSeason.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 } 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): Promise<PaginatedResponse<LeagueNews[]>> {\n const params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\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';\n\nexport interface GameMediaFilters {\n tournamentStageId?: number;\n tournamentTour?: number;\n teamId?: number;\n playoffStage?: number;\n playoffId?: number;\n status?: GameStatuses;\n}\n\nexport interface MediaFilters {\n mediaType?: 'photo' | 'video' | 'live_video';\n sort?: string;\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 if (filters) {\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 }\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 if (filters) {\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 }\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 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/`).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","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, 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 } 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 },\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 BaseStatistic {\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, 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, 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 { 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, 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 },\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\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","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 { 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 { 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, 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 { 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 { LeagueUserPermissions } from '../models/league-user';\n\nexport interface TournamentGamesFilters {\n tournamentStageId?: number;\n tournamentTour?: number;\n teamId?: number;\n playoffStage?: number;\n playoffId?: number;\n status?: GameStatuses;\n statuses?: GameStatuses[];\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_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 date_from?: string;\n date_to?: string;\n per_game?: boolean;\n group_by: StatisticGroupByTypes;\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 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): Promise<Game[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_playoff/${playoffId}/games/`).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 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 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 getBasketballStatistic(filters?: StatisticFilters): Promise<BasketballStatistic[]> {\n let params = new HttpParams();\n if (filters) {\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\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/basketball_statistic/`, {params}).pipe(\n map(result => BasketballStatistic.toFront(result))\n ).toPromise();\n }\n\n async getVolleyballStatistic(filters?: StatisticFilters): Promise<VolleyballStatistic[]> {\n let params = new HttpParams();\n if (filters) {\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\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/volleyball_statistic/`, {params}).pipe(\n map(result => VolleyballStatistic.toFront(result))\n ).toPromise();\n }\n\n async getHockeyStatistic(filters?: StatisticFilters): Promise<HockeyStatistic[]> {\n let params = new HttpParams();\n if (filters) {\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\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/hockey_statistic/`, {params}).pipe(\n map(result => HockeyStatistic.toFront(result))\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","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 { TournamentEventsListFilter, TournamentGamesFilters } from './tournament-api';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { GameMediaFilters } from './media-api';\nimport { TournamentTeam } from '../models/tournament-team';\nimport { GameTimelineStages } from '../models/game-timeline-stages';\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 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 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 if (filters) {\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 }\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 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 },\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 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';\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 {\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 } from '@angular/common/http';\nimport { Game } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { GameUser } from '../models/game-user';\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';\n\n@Injectable({providedIn: 'root'})\nexport class VolleyballGameApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\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 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 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","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};\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 { 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};\n","import { TeamUserRole } from '../models/team-user';\n\nexport const TeamUserRoleLocalization = {\n [TeamUserRole.moderator]: 'Модератор',\n [TeamUserRole.member]: 'Пользователь',\n [TeamUserRole.admin]: 'Владелец',\n};\n","import { GameBasketballPosition, WorkHand } from '../models/basketball-profile';\nimport { GameVolleyballPosition, VolleyballWorkHand } from '../models/volleyball-profile';\nimport { GameHockeyPosition } from '../models/hockey-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","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 { 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 { 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\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 });\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';\n\n@Injectable()\nexport class HttpCookieInterceptor implements HttpInterceptor {\n private isBrowser = isPlatformBrowser(this.platformId);\n\n constructor(\n private injector: Injector,\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 req = req.clone({withCredentials: true});\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"]}
|