@mtgame/core 0.0.58 → 0.0.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@mtgame/core/localization/hockey-penalty-types.ts","ng://@mtgame/core/models/util.ts","ng://@mtgame/core/models/file.ts","ng://@mtgame/core/models/sport.ts","ng://@mtgame/core/models/basketball-profile.ts","ng://@mtgame/core/models/user-profile.ts","ng://@mtgame/core/models/city.ts","ng://@mtgame/core/models/volleyball-profile.ts","ng://@mtgame/core/models/hockey-profile.ts","ng://@mtgame/core/models/football-profile.ts","ng://@mtgame/core/models/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/football-game-config.ts","ng://@mtgame/core/utils/data.ts","ng://@mtgame/core/models/team-user.ts","ng://@mtgame/core/storage/store.ts","ng://@mtgame/core/services/base.service.ts","ng://@mtgame/core/services/config.service.ts","ng://@mtgame/core/models/tournament-group.ts","ng://@mtgame/core/models/tournament-team.ts","ng://@mtgame/core/models/basketball-game-log.ts","ng://@mtgame/core/models/tournament-disqualification.ts","ng://@mtgame/core/models/tournament-team-user.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/models/game-user.ts","ng://@mtgame/core/api/game-base-api.ts","ng://@mtgame/core/api/basketball-game-api.ts","ng://@mtgame/core/models/feedback.ts","ng://@mtgame/core/api/feedback-api.ts","ng://@mtgame/core/api/file-api.ts","ng://@mtgame/core/models/football-game-log.ts","ng://@mtgame/core/models/hockey-game-statistic.ts","ng://@mtgame/core/models/hockey-statistic.ts","ng://@mtgame/core/models/hockey-game-team-statistic.ts","ng://@mtgame/core/api/hockey-game-api.ts","ng://@mtgame/core/models/tournament-stage.ts","ng://@mtgame/core/models/football-game-statistic.ts","ng://@mtgame/core/models/football-statistic.ts","ng://@mtgame/core/models/football-game-team-statistic.ts","ng://@mtgame/core/api/football-game-api.ts","ng://@mtgame/core/models/tournament-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-news.ts","ng://@mtgame/core/models/volleyball-statistic.ts","ng://@mtgame/core/models/tournament-stage-team.ts","ng://@mtgame/core/models/tournament-event.ts","ng://@mtgame/core/models/league-user.ts","ng://@mtgame/core/api/tournament-api.ts","ng://@mtgame/core/models/league-banner.ts","ng://@mtgame/core/models/league-partner.ts","ng://@mtgame/core/models/poll.ts","ng://@mtgame/core/api/league-api.ts","ng://@mtgame/core/api/league-news-api.ts","ng://@mtgame/core/api/media-api.ts","ng://@mtgame/core/models/game-invite.ts","ng://@mtgame/core/models/team-invite.ts","ng://@mtgame/core/models/team-event-type.ts","ng://@mtgame/core/models/team-event-invite.ts","ng://@mtgame/core/localization/team-event-type.ts","ng://@mtgame/core/models/team-event.ts","ng://@mtgame/core/models/notification.ts","ng://@mtgame/core/models/tournament-team-user-invite.ts","ng://@mtgame/core/models/tournament-invite.ts","ng://@mtgame/core/models/notification-settings.ts","ng://@mtgame/core/models/team-permission.ts","ng://@mtgame/core/api/notification-base-api.ts","ng://@mtgame/core/api/notification-api.ts","ng://@mtgame/core/api/org-notification-api.ts","ng://@mtgame/core/api/reference-api.ts","ng://@mtgame/core/models/team-invite-external.ts","ng://@mtgame/core/models/user-permission.ts","ng://@mtgame/core/models/team-access.ts","ng://@mtgame/core/api/team-api.ts","ng://@mtgame/core/api/team-event-api.ts","ng://@mtgame/core/models/tournament-join-team.ts","ng://@mtgame/core/api/tournament-join-api.ts","ng://@mtgame/core/api/tournament-season-api.ts","ng://@mtgame/core/api/tournament-stage-api.ts","ng://@mtgame/core/models/user-access.ts","ng://@mtgame/core/models/volleyball-game-log.ts","ng://@mtgame/core/api/user-api.ts","ng://@mtgame/core/models/volleyball-game-team-statistic.ts","ng://@mtgame/core/models/volleyball-game-statistic.ts","ng://@mtgame/core/api/volleyball-game-api.ts","ng://@mtgame/core/api/public-team-api.ts","ng://@mtgame/core/api/public-user-api.ts","ng://@mtgame/core/localization/basketball-game-log-types.ts","ng://@mtgame/core/localization/hockey-game-log-types.ts","ng://@mtgame/core/localization/football-game-log-types.ts","ng://@mtgame/core/localization/overtime-types.ts","ng://@mtgame/core/localization/team-user-role.ts","ng://@mtgame/core/localization/user-profile.ts","ng://@mtgame/core/localization/volleyball-game-log-types.ts","ng://@mtgame/core/models/league-playlist.ts","ng://@mtgame/core/services/centrifugo.service.ts","ng://@mtgame/core/storage/storage-engine.ts","ng://@mtgame/core/storage/local-storage-engine.ts","ng://@mtgame/core/utils/cookie.ts","ng://@mtgame/core/utils/favicon.ts","ng://@mtgame/core/http-cookie.interceptor.ts","ng://@mtgame/core/utils/component-destroyed.ts","ng://@mtgame/core/utils/validators.ts","ng://@mtgame/core/utils/enum.ts","ng://@mtgame/core/utils/errors.ts","ng://@mtgame/core/utils/device.ts","ng://@mtgame/core/utils/form.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__values","o","m","__read","ar","error","__spread","concat","HockeyPenaltyTypes","id","code","title","BaseModel","data","_b","keys","_c","toFront","dto","toBack","enumField","enumClass","isNaN","penaltyTypeField","find","item","listField","modelClass","isArray","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","isFootball","football","isClassicFootball","classic_football","isMiniFootball","mini_football","sport","parent_id","sub_sports","UserProfile","user_id","height","weight","City","GameVolleyballPosition","VolleyballWorkHand","BasketballProfile","position","work_hand","workHand","GameHockeyPosition","HockeyWorkHand","VolleyballProfile","GameFootballPosition","FootballWorkFoot","HockeyProfile","UserGender","FootballProfile","work_foot","workFoot","TournamentSeasonStatuses","User","user","lastName","firstName","filter","join","substr","birthDate","diff","getTime","Math","floor","last_name","first_name","middle_name","email","phone","birth_date","photo","profile","basketball_profile","volleyball_profile","hockey_profile","football_profile","wizards","city","gender","is_active","basketballProfile","volleyballProfile","hockeyProfile","footballProfile","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","start_date","closed_date","previewImage","startDate","closedDate","VolleyballGameTypes","TournamentSettings","age_from","age_to","max_team_players","max_game_players","type","tours_count","periods_count","period_time","overtime_type","overtime_time","overtime_score","game_type","timeout_count","timeout_time","substitute_count","game_up_to_score","volleyball_score_in_set","volleyball_score_in_last_set","manage_team_application","recruitment_is_open","transfer_is_open","basketball_statistic_type","volleyball_statistic_type","shot_clock_enabled","game_time_type","with_result_table","basketballStatisticType","volleyballStatisticType","gameTimeType","overtimeType","TournamentTeamWinner","team_id","tournament_id","points","Tournament","location","price","regulation_files","settings","league","teams_count","team_winner","team_second","team_third","season","season_id","regulationFile","teamWinner","teamSecond","teamThird","BasketballGameConfig","overtime_timeout_count","statistic_type","statisticType","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","is_live","originalPhoto","listPhoto","detailPhoto","videoPreview","HockeyGameConfig","FootballGameConfig","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","football_game_config","score_by_period","playoff_stage","tournament_stage_id","tournament_playoff_id","tournament_court","media_count","media_live_count","media","resultType","basketballGameConfig","volleyballGameConfig","hockeyGameConfig","footballGameConfig","tournamentCourt","updateItemInArray","force","checkFunction","isFunction","updatedAt","updateItemsInArray","items","forEach","addItemInArray","atEnd","addItemsInArray","reverse","deleteItemFromArray","functionToCheck","toString","TeamUserRole","Store","get","getSubject","pipe","save","appendItem","appendItems","prependItem","prependItems","updateItem","updateItems","deleteItem","dispose","complete","clearStorageData","clear","getEngine","BehaviorSubject","BaseService","store","Injectable","providedIn","ConfigService","configData","initialize","_a","Optional","Inject","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","BasketballGameLogTypes","TeamUser","teamPlayer","role","number","TournamentDisqualification","tournament_team_user_id","date_from","date_to","matches_count","dateFrom","dateTo","TournamentTeamUser","middleName","tournament_team","team_user","disqualified","disqualification","has_changes","rating","tournamentTeam","teamUser","BasketballStatistic","personalFouls","technicalFouls","unsportsmanlikeFouls","tournament_team_user","month","win_lose","two_points_made","three_points_made","free_throws_made","one_points_made","two_point_attempts","three_point_attempts","free_throw_attempts","one_point_attempts","two_point_percent","three_point_percent","free_throw_percent","one_point_percent","assists","blocks","rebounds","offensive_rebounds","defensive_rebounds","steals","turnovers","personal_fouls","technical_fouls","unsportsmanlike_fouls","newbie","tournamentTeamUser","BaseStatistic","BasketballGameTeamStatistic","BasketballGameStatistic","gameUserId","game_user_id","updated_at","HockeyGameLogTypes","HockeyAdvantageTypes","BasketballGameLog","active","isPointsType","two_point_made","three_point_made","free_throw_made","one_point_made","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","GameUser","is_mvp","GameBaseApi","httpClient","configService","getUsers","gameId","toPromise","getMvp","HttpClient","BasketballGameApi","getById","getTeamStatistic","getUserStatistic","getLogs","downloadProtocol","fileType","responseType","downloadFibaProtocol","Feedback","theme","message","files","captcha","FeedbackApi","sendFeedback","post","response","sendLeagueFeedback","leagueId","FileApi","upload","fileData","filename","formData","FormData","append","createZipArchive","files_1","files_1_1","FootballGameLogTypes","HockeyGameLog","_penalizedGameUserId","isScoreType","goal","shootout_goal","isPenaltyType","minor_penalty","major_penalty","misconduct_penalty","game_misconduct_penalty","penalty_shot","match_penalty","isAfter","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","gameTime","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","lose_games_count","pp_shots","ev_shots","sh_shots","pp_goals_percent","ev_goals_percent","sh_goals_percent","goals","shot_misses","shots_on_goal","shots_blocked","shots","goals_percent","shots_against","saves_percent","face_offs","face_off_percent","HockeyGameTeamStatistic","HockeyGameApi","format","params","HttpParams","downloadApplication","TournamentStageStatuses","FootballGameLog","penalty_goal","small_penalty_goal","FootballGameStatistic","shotMisses","shotsOnGoal","shotsBlocked","penaltyGoals","smallPenaltyGoals","totalGoals","penaltyAttempts","smallPenaltyAttempts","penaltySaves","penaltyGoalsAgainst","smallPenaltySaves","smallPenaltyGoalsAgainst","penaltyShotsAgainst","smallPenaltyShotsAgainst","corners","free_kicks","penalty_goals","penalty_attempts","penalty_goals_against","penalty_saves","small_penalty_goals","small_penalty_attempts","small_penalty_goals_against","small_penalty_saves","fouls","yellow_cards","red_cards","perfect_passes","losses","outs","FootballStatistic","shots_on_goal_percent","total_goals","penalty_goals_percent","penalty_shots_against","penalty_saves_percent","small_penalty_goals_percent","small_penalty_shots_against","small_penalty_saves_percent","total_saves","total_goals_against","FootballGameTeamStatistic","FootballGameApi","TournamentNews","picture","text","author","created_at","createdAt","GameTimelineStageItem","stage_id","playoff_stages_count","GameTimelineStages","current_tour","current_playoff_stage","stages","PlayoffTypes","TournamentStage","generateArray","LeagueNewsType","PlayoffSettings","rounds","final_rounds","third_place_rounds","Playoff","teamsCount","getPlayoffStages","stagesCount","stage","playoffStage","pow","is_official","VolleyballStatistic","serve_hits","serve_faults","serve_aces","serve_percent","ace_percent","stuff_blocks","block_faults","block_rebounds","block_percent","attack_spikes","attack_faults","attack_shots","attack_percent","receives","receive_faults","excellent_receives","receive_percent","serve_receives","serve_receive_faults","excellent_serve_receives","serve_receive_percent","faults","TournamentStageTeam","received_points","TournamentEventTypes","LeagueNews","preview_text","detail_text","mobile_picture","is_main","tournaments","video_link","tag","mobilePicture","LeagueUserRoles","LeagueUserPermissions","TournamentEvent","news","event","LeagueUser","_role","permissions","TournamentApi","tournamentId","getByAlias","getNews","getEvents","page","filters","search","tournamentTour","observe","total","headers","getTournamentStages","getPlayoff","getPlayoffGames","playoffId","getGamesStages","getGames","applyGamesFilters","getTeams","getStageTeams","getTeamById","tournamentTeamId","getUserById","userId","getUserGames","tournamentUserId","getBasketballStatistic","per_game","tournament_ids","getVolleyballStatistic","getHockeyStatistic","getFootballStatistic","getTournamentTeamUsers","myPermission","getTournamentTeamTournaments","getTournamentUserTournaments","tournamentTeamUserId","tournamentIds","tournamentStageId","statuses","tournamentCourtId","BannerLocation","LeaguePartner","sort","PollStatuses","LeagueBanner","LeagueApi","getByDomain","domain","getTournaments","getTournamentSeasons","getSeasons","notClosed","getPartners","getBanners","getCourts","LeagueNewsApi","getLeagueNewsList","getMainLeagueNews","getMainLeagueNewsList","getNewsById","newsId","getTournamentNewsList","MediaApi","getMedia","mediaId","getTournamentGameMedia","getLeagueGameMedia","getLeagueMedia","mediaType","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","answers","multiple_answer","anonymous","TeamInvite","user_accept","team_accept","updateAt","TeamEventTypes","GameInvite","TeamEventInviteStatuses","TeamEventTypeLocalization","training","other","TeamEvent","eventType","eventCustomName","event_type","event_custom_name","NotificationType","NotificationServiceEnum","TeamEventInvite","team_event_id","team_user_id","TournamentTeamUserInvite","tournament_team_invite_id","accepted","TournamentInvite","teamAccept","organizationAccept","organization_accept","user_invites_count","user_invites","userInvites","NotificationAllowTypes","Notification","initiator","team_invite","poll","game_invite","team_event","team_event_invite","tournament_invite","viewed","protected","service","teamInvite","gameInvite","teamEvent","teamEventInvite","tournamentInvite","TeamPermissionTypes","NotificationSettings","popup","sound","browser","NotificationBaseApi","getCount","apiUrl","getList","markViewed","notificationId","markAllViewed","getNotificationSettings","updateNotificationSettings","NotificationApi","OrgNotificationApi","ReferenceApi","getCities","getSports","TeamInviteExternal","UserPermissionTypes","TeamPermission","players","statistic","polls","events","TeamAccess","can_edit","can_view_users","can_manage_permission","can_change_owner","can_delete","can_manage_invites","can_view_invites","can_manage_polls","can_view_polls","can_answer_poll","can_manage_games","can_view_games","can_view_statistic","can_promote_users","can_edit_users","can_delete_users","can_view_events","can_manage_events","can_view_tournaments","can_manage_tournaments","TeamApi","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","joinTeam","leaveTeam","createGame","getTeamEvents","createTeamEvent","getTournamentTeams","getTournamentInvites","getTournamentGames","acceptTournamentInvite","inviteId","declineTournamentInvite","registerLazyUser","userData","getLazyUser","updateLazyUser","deleteLazyUser","resendLazyUserEmail","TeamEventApi","getTeamEvent","teamEventId","updateTeamEvent","deleteTeamEvent","getTeamEventInvites","createTeamEventInvite","acceptTeamEventInvite","declineTeamEventInvite","TournamentJoinData","validUsersCount","invalidUsersCount","hasAccess","inviteSent","alreadyInTournament","valid_users_count","invalid_users_count","has_access","invite_sent","already_in_tournament","TournamentJoinTeam","join_data","joinData","TournamentJoinApi","getTeamsForJoin","getTeamUsers","joinTournament","invites","TournamentSeasonApi","seasonId","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","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","PublicTeamApi","PublicUserApi","getTournamentUser","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","FootballGameLogTypeLocalization","_a$3","penalty_attempt","small_penalty_attempt","corner","free_kick","penalty_save","small_penalty_save","foul","yellow_card","red_card","perfect_pass","loss","out","OvertimeTypeLocalization","_a$4","to_score_diff","to_score_total","without_overtime","to_first_goal","to_first_goal_and_bullitts","bullitts","penalties","time_and_penalties","TeamUserRoleLocalization","_a$5","moderator","member","admin","GameBasketballPositionLocalization","_a$6","point_guard","shooting_guard","small_forward","power_forward","center","GameBasketballPositionShortLocalization","WorkHandLocalization","left","right","GameVolleyballPositionLocalization","_d","setter","libero","middle_player","receiver_attacker","dioganal","GameVolleyballPositionShortLocalization","_e","GameVolleyballPositionShortRuLocalization","_f","VolleyballWorkHandLocalization","_g","GameHockeyPositionLocalization","_h","goaltender","defensemen","forward","GameFootballPositionLocalization","_j","goalkeeper","midfielder","FootballWorkFootLocalization","_k","both","VolleyballGameLogTypeLocalization","_a$7","LeaguePlaylist","key_code","CentrifugoService","channels$","subscriptions","connectedSubject","listen","channel","Subject","subscription","connect","subscribe","connected","addEngineSubscription","setTimeout","unsubscribe","initializeEngineSubject","ReplaySubject","initializeEngine","url","timestamp","transports","centrifuge","on","publish","Observable","observer","res","disconnect","Centrifuge","resolveMessage","bind","StorageEngineField","defaultValue","StorageEngine","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 football = 10,\n classic_football = 11,\n mini_football = 12\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n parent_id: 'parentId',\n sub_sports: 'subSports'\n }\n})\nexport class Sport extends BaseModel {\n id: number;\n name: string;\n parentId: number;\n subSports: Sport[];\n\n isBasketball() {\n return this.id === SportTypes.basketball || this.parentId === SportTypes.basketball;\n }\n\n isClassicBasketball() {\n return this.id === SportTypes.classic_basketball;\n }\n\n isStreetball() {\n return this.id === SportTypes.streetball;\n }\n\n isVolleyball() {\n return this.id === SportTypes.volleyball || this.parentId === SportTypes.volleyball;\n }\n\n isClassicVolleyball() {\n return this.id === SportTypes.classic_volleyball;\n }\n\n isBeachVolleyball() {\n return this.id === SportTypes.beach_volleyball;\n }\n\n isHockey(): boolean {\n return this.id === SportTypes.hockey || this.parentId === SportTypes.hockey;\n }\n\n isIceHockey(): boolean {\n return this.id === SportTypes.ice_hockey;\n }\n\n isBallHockey(): boolean {\n return this.id === SportTypes.ball_hockey;\n }\n\n isFootball() {\n return this.id === SportTypes.football || this.parentId === SportTypes.football;\n }\n\n isClassicFootball() {\n return this.id === SportTypes.classic_football;\n }\n\n isMiniFootball() {\n return this.id === SportTypes.mini_football;\n }\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(sport: Sport): any {\n return null;\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameBasketballPosition {\n point_guard = 1,\n shooting_guard,\n small_forward,\n power_forward,\n center\n}\n\nexport enum WorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameBasketballPosition),\n workHand: enumField(WorkHand)\n }\n})\nexport class BasketballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameBasketballPosition;\n workHand: WorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n height: 'height',\n weight: 'weight'\n }\n})\nexport class UserProfile {\n id: number;\n userId: number;\n height: number;\n weight: number;\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name'\n }\n})\nexport class City extends BaseModel {\n id: number;\n name: string;\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameVolleyballPosition {\n setter = 1,\n libero,\n middle_player,\n receiver_attacker,\n dioganal\n}\n\nexport enum VolleyballWorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameVolleyballPosition),\n workHand: enumField(VolleyballWorkHand)\n }\n})\nexport class VolleyballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameVolleyballPosition;\n workHand: VolleyballWorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameHockeyPosition {\n defensemen = 1,\n forward,\n goaltender\n}\n\nexport enum HockeyWorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameHockeyPosition),\n workHand: enumField(HockeyWorkHand)\n }\n})\nexport class HockeyProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameHockeyPosition;\n workHand: HockeyWorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameFootballPosition {\n defensemen = 1,\n midfielder,\n forward,\n goalkeeper\n}\n\nexport enum FootballWorkFoot {\n left = 1,\n right,\n both\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_foot: 'workFoot'\n },\n relation: {\n position: enumField(GameFootballPosition),\n workFoot: enumField(FootballWorkFoot)\n }\n})\nexport class FootballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameFootballPosition;\n workFoot: FootballWorkFoot;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, DateField, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { UserProfile } from './user-profile';\nimport { File } from './file';\nimport { City } from './city';\nimport { BasketballProfile } from './basketball-profile';\nimport { VolleyballProfile } from './volleyball-profile';\nimport { HockeyProfile } from './hockey-profile';\nimport { FootballProfile } from './football-profile';\n\nexport enum UserGender {\n male = 1,\n female\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n last_name: 'lastName',\n first_name: 'firstName',\n middle_name: 'middleName',\n email: 'email',\n phone: 'phone',\n birth_date: 'birthDate',\n photo: 'photo',\n profile: 'profile',\n basketball_profile: 'basketballProfile',\n volleyball_profile: 'volleyballProfile',\n hockey_profile: 'hockeyProfile',\n football_profile: 'footballProfile',\n wizards: 'wizards',\n city: 'city',\n gender: 'gender',\n is_active: 'isActive',\n },\n relation: {\n birthDate: DateField,\n photo: File,\n profile: UserProfile,\n basketballProfile: BasketballProfile,\n volleyballProfile: VolleyballProfile,\n hockeyProfile: HockeyProfile,\n footballProfile: FootballProfile,\n city: City,\n gender: enumField(UserGender)\n }\n})\nexport class User extends BaseModel {\n id: number;\n lastName: string;\n firstName: string;\n middleName: string;\n email: string;\n phone: string;\n birthDate: Date;\n profile: UserProfile;\n basketballProfile: BasketballProfile;\n volleyballProfile: VolleyballProfile;\n hockeyProfile: HockeyProfile;\n footballProfile: FootballProfile;\n photo: File;\n wizards: string[];\n city: City;\n gender: UserGender;\n isActive: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(user: User): any {\n return null;\n }\n\n get fullName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get shortName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get initials(): string {\n return [this.lastName, this.firstName].filter(s => s).map(s => s.substr(0, 1)).join('');\n }\n\n get age(): number {\n if (!this.birthDate) {\n return null;\n }\n const diff = (new Date()).getTime() - this.birthDate.getTime();\n return Math.floor(diff / (365 * 86400 * 1000));\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, enumField, DateField } from './util';\nimport { File } from './file';\n\nexport enum TournamentSeasonStatuses {\n open,\n in_progress,\n closed,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n alias: 'alias',\n logo: 'logo',\n cover: 'cover',\n preview_image: 'previewImage',\n status: 'status',\n start_date: 'startDate',\n closed_date: 'closedDate',\n },\n relation: {\n logo: File,\n cover: File,\n previewImage: File,\n status: enumField(TournamentSeasonStatuses),\n startDate: DateField,\n closedDate: DateField,\n }\n})\nexport class TournamentSeason extends BaseModel {\n id: number;\n name: string;\n alias: string;\n logo: File;\n cover: File;\n previewImage: File;\n status: TournamentSeasonStatuses;\n startDate: Date;\n closedDate: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateField } from './util';\nimport { File } from './file';\nimport { Sport } from './sport';\nimport { User } from './user';\nimport { City } from './city';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n sport: 'sport',\n logo: 'logo',\n owner: 'owner',\n city: 'city',\n users_count: 'usersCount',\n won_games_count: 'wonGamesCount',\n games_count: 'gamesCount',\n score_sum: 'scoreSum',\n closest_game_datetime: 'closestGameDatetime',\n },\n relation: {\n sport: Sport,\n logo: File,\n owner: User,\n city: City,\n closestGameDatetime: DateField,\n }\n})\nexport class Team extends BaseModel {\n id: number;\n name: string;\n sport: Sport;\n logo: File;\n owner: User;\n city: City;\n usersCount: number;\n wonGamesCount: number;\n gamesCount: number;\n scoreSum: number;\n closestGameDatetime: Date;\n\n getEmptyLogoClass(): string {\n const classList = ['empty-logo'];\n if (this.sport.isBasketball()) {\n classList.push('empty-logo-basketball');\n }\n if (this.sport.isVolleyball()) {\n classList.push('empty-logo-volleyball');\n }\n if (this.sport.isHockey()) {\n classList.push('empty-logo-hockey');\n }\n if (this.sport.isFootball()) {\n classList.push('empty-logo-football');\n }\n 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 penalties,\n time_and_penalties\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n gender: 'gender',\n age_from: 'ageFrom',\n age_to: 'ageTo',\n max_team_players: 'maxTeamPlayers',\n max_game_players: 'maxGamePlayers',\n type: 'type',\n tours_count: 'toursCount',\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n overtime_score: 'overtimeScore',\n game_type: 'gameType',\n timeout_count: 'timeoutCount',\n timeout_time: 'timeoutTime',\n substitute_count: 'substituteCount',\n game_up_to_score: 'gameUpToScore',\n volleyball_score_in_set: 'volleyballScoreInSet',\n volleyball_score_in_last_set: 'volleyballScoreInLastSet',\n manage_team_application: 'manageTeamApplication',\n recruitment_is_open: 'recruitmentIsOpen',\n transfer_is_open: 'transferIsOpen',\n basketball_statistic_type: 'basketballStatisticType',\n volleyball_statistic_type: 'volleyballStatisticType',\n shot_clock_enabled: 'shotClockEnabled',\n game_time_type: 'gameTimeType',\n with_result_table: 'withResultTable'\n },\n relation: {\n type: enumField(TournamentTypes),\n gender: enumField(TournamentGender),\n basketballStatisticType: enumField(BasketballStatisticTypes),\n volleyballStatisticType: enumField(VolleyballStatisticTypes),\n gameTimeType: enumField(GameTimeTypes),\n overtimeType: enumField(OvertimeTypes),\n }\n})\nexport class TournamentSettings extends BaseModel {\n id: number;\n gender: TournamentGender;\n ageFrom: number;\n ageTo: number;\n maxTeamPlayers: number;\n maxGamePlayers: number;\n type: TournamentTypes;\n toursCount: number;\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n overtimeScore: number;\n gameType: string;\n timeoutCount: number;\n timeoutTime: number;\n substituteCount: number;\n gameUpToScore: number;\n volleyballScoreInSet: number;\n volleyballScoreInLastSet: number;\n manageTeamApplication: boolean;\n recruitmentIsOpen: boolean;\n transferIsOpen: boolean;\n basketballStatisticType: BasketballStatisticTypes;\n volleyballStatisticType: VolleyballStatisticTypes;\n shotClockEnabled: boolean;\n gameTimeType: GameTimeTypes;\n withResultTable: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n tournament_id: 'tournamentId',\n team: 'team',\n points: 'points',\n },\n relation: {\n team: Team,\n }\n})\nexport class TournamentTeamWinner extends BaseModel {\n id: number;\n teamId: number;\n tournamentId: number;\n team: Team;\n points: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n alias: 'alias',\n logo: 'logo',\n cover: 'cover',\n preview_image: 'previewImage',\n city: 'city',\n sport: 'sport',\n location: 'location',\n description: 'description',\n date: 'date',\n price: 'price',\n regulation_files: 'regulationFiles',\n settings: 'settings',\n league: 'league',\n teams_count: 'teamsCount',\n closest_game_datetime: 'closestGameDatetime',\n status: 'status',\n team_winner: 'teamWinner',\n team_second: 'teamSecond',\n team_third: 'teamThird',\n season: 'season',\n season_id: 'seasonId',\n },\n relation: {\n logo: File,\n cover: File,\n previewImage: File,\n city: City,\n sport: Sport,\n regulationFile: File,\n settings: TournamentSettings,\n date: DateTimeField,\n league: League,\n status: enumField(TournamentStatuses),\n teamWinner: TournamentTeamWinner,\n teamSecond: TournamentTeamWinner,\n teamThird: TournamentTeamWinner,\n season: TournamentSeason,\n }\n})\nexport class Tournament extends BaseModel {\n id: number;\n name: string;\n alias: string;\n logo: File;\n cover: File;\n previewImage: File;\n city: City;\n sport: Sport;\n location: string;\n description: string;\n date: Date;\n price: number;\n regulationFiles: File[];\n settings: TournamentSettings;\n league: League;\n teamsCount: number;\n closestGameDatetime: string;\n status: TournamentStatuses;\n teamWinner: TournamentTeamWinner;\n teamSecond: TournamentTeamWinner;\n teamThird: TournamentTeamWinner;\n season: TournamentSeason;\n seasonId: number;\n\n getEmptyLogoClass(): string {\n const classList = ['empty-logo'];\n if (this.sport.isBasketball()) {\n classList.push('empty-logo-basketball');\n }\n if (this.sport.isVolleyball()) {\n classList.push('empty-logo-volleyball');\n }\n if (this.sport.isHockey()) {\n classList.push('empty-logo-hockey');\n }\n if (this.sport.isFootball()) {\n classList.push('empty-logo-football');\n }\n return classList.join(' ');\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { VolleyballStatisticTypes } from './tournament';\n\nexport enum VolleyballGameTypes {\n best_of_five = 1,\n best_of_three\n}\n\n@ModelInstance({\n mappingFields: {\n game_type: 'gameType',\n timeout_count: 'timeoutCount',\n timeout_time: 'timeoutTime',\n substitute_count: 'substituteCount',\n score_in_set: 'scoreInSet',\n score_in_last_set: 'scoreInLastSet',\n statistic_type: 'statisticType'\n },\n relation: {\n gameType: enumField(VolleyballGameTypes),\n statisticType: enumField(VolleyballStatisticTypes),\n }\n})\nexport class VolleyballGameConfig extends BaseModel {\n gameType: VolleyballGameTypes;\n timeoutCount: number;\n timeoutTime: number;\n substituteCount: number;\n scoreInSet: number;\n scoreInLastSet: number;\n statisticType: VolleyballStatisticTypes;\n\n get setsCount(): number {\n return this.gameType === VolleyballGameTypes.best_of_three ? 3 : 5;\n }\n\n getSetMaxScore(set: number) {\n return set === this.setsCount ? this.scoreInLastSet : this.scoreInSet;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { BasketballStatisticTypes, GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n game_up_to_score: 'gameUpToScore',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n overtime_score: 'overtimeScore',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n statistic_type: 'statisticType',\n shot_clock_enabled: 'shotClockEnabled',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n statisticType: enumField(BasketballStatisticTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class BasketballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n gameUpToScore: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n overtimeScore: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n statisticType: BasketballStatisticTypes;\n shotClockEnabled: boolean;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField, listField } from './util';\nimport { Team } from './team';\nimport { BasketballGameConfig } from './basketball-game-config';\nimport { VolleyballGameConfig } from './volleyball-game-config';\nimport { LeagueCourt } from './league-court';\nimport { MediaItem } from './media-item';\nimport { HockeyGameConfig } from './hockey-game-config';\nimport { Tournament } from './tournament';\nimport { FootballGameConfig } from './football-game-config';\n\nexport enum GameStatuses {\n open = 1,\n in_progress,\n closed,\n archived,\n draft\n}\n\nexport enum GameResultTypes {\n team_won = 1,\n competitor_team_won,\n team_technical_defeat,\n competitor_team_technical_defeat\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n status: 'status',\n team: 'team',\n tournament_team_id: 'tournamentTeamId',\n team_id: 'teamId',\n competitor_team: 'competitorTeam',\n competitor_tournament_team_id: 'competitorTournamentTeamId',\n competitor_team_id: 'competitorTeamId',\n competitor_team_name: 'competitorTeamName',\n datetime: 'datetime',\n location: 'location',\n team_score: 'teamScore',\n competitor_team_score: 'competitorTeamScore',\n result_type: 'resultType',\n playoff_number: 'playoffNumber',\n tournament_id: 'tournamentId',\n tournament_tour: 'tournamentTour',\n basketball_game_config: 'basketballGameConfig',\n volleyball_game_config: 'volleyballGameConfig',\n hockey_game_config: 'hockeyGameConfig',\n football_game_config: 'footballGameConfig',\n 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_live_count: 'mediaLiveCount',\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 footballGameConfig: FootballGameConfig,\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 footballGameConfig: FootballGameConfig;\n scoreByPeriod: any;\n playoffStage: string;\n tournamentStageId: number;\n tournamentPlayoffId: number;\n tournamentCourt: LeagueCourt;\n mediaCount: number;\n mediaLiveCount: 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 is_live: 'isLive',\n },\n relation: {\n originalPhoto: File,\n listPhoto: File,\n detailPhoto: File,\n videoPreview: File\n }\n})\nexport class MediaItem extends BaseModel {\n id: number;\n originalPhoto: File;\n listPhoto: File;\n detailPhoto: File;\n gameId: number;\n tournamentId: number;\n videoUrl: string;\n videoPreview: File;\n isLive: boolean;\n\n get isVideo(): boolean {\n return Boolean(this.videoUrl);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class HockeyGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class FootballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","export function updateItemInArray(data: any[], item: any, force = false, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return data;\n }\n return data.map(v => {\n if (checkFunction && isFunction(checkFunction)) {\n if (!checkFunction(v)) {\n return v;\n }\n } else if (v.id !== item.id) {\n return v;\n }\n if (v.updatedAt && item.updatedAt && !force) {\n return v.updatedAt > item.updatedAt ? v : item;\n }\n return item;\n });\n}\n\nexport function updateItemsInArray(data: any[], items: any[], force: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n items.forEach(item => {\n data = updateItemInArray(data, item, force, checkFunction);\n });\n return data;\n}\n\nexport function patchItemInArray(data: any[], item: any, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return data;\n }\n return data.map(v => {\n if (checkFunction && isFunction(checkFunction)) {\n if (!checkFunction(v)) {\n return v;\n }\n } else if (v.id !== item.id) {\n return v;\n }\n return Object.assign(v, item);\n });\n}\n\nexport function addItemInArray(data: any[], item: any, atEnd: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return [item];\n }\n if (data.find(i => isFunction(checkFunction) ? checkFunction(i) : i.id === item.id)) {\n return data;\n }\n\n return atEnd\n ? [...data, item]\n : [item, ...data];\n}\n\nexport function addItemsInArray(data: any[], items: any[], atEnd: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n (!atEnd\n ? Object.assign([], items).reverse()\n : items\n ).forEach(item => {\n data = addItemInArray(data, item, atEnd, checkFunction);\n });\n return data;\n}\n\nexport function deleteItemFromArray(data: any[], item: any): any[] {\n if (!Array.isArray(data)) {\n return [];\n }\n if (isFunction(item)) {\n return data.filter(i => !item(i));\n } else {\n return data.filter(v => v.id !== item.id);\n }\n}\n\nfunction isFunction(functionToCheck) {\n return functionToCheck && {}.toString.call(functionToCheck) === '[object Function]';\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { User } from './user';\nimport { Team } from './team';\n\nexport enum TeamUserRole {\n member = 1,\n moderator,\n admin,\n}\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 { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { addItemInArray, addItemsInArray, deleteItemFromArray, updateItemInArray, updateItemsInArray } from '../utils/data';\nimport { StorageEngine } from './storage-engine';\n\nexport class Store {\n private data: {[key: string]: BehaviorSubject<any>} = {};\n\n constructor(private engine?: StorageEngine) {\n }\n\n get(key: string): Observable<any> {\n return this.getSubject(key).pipe(filter(item => item !== undefined));\n }\n\n value(key: string): any {\n return this.getSubject(key).value;\n }\n\n save(key: string, value: any): void {\n this.getSubject(key).next(value);\n if (this.engine) {\n this.engine.save(key, value);\n }\n }\n\n appendItem(key: string, value: any, checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemInArray(this.value(key) || [], value, true, checkFunction));\n }\n\n appendItems(key: string, value: any[], checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemsInArray(this.value(key) || [], value, true));\n }\n\n prependItem(key: string, value: any, checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemInArray(this.value(key) || [], value, false, checkFunction));\n }\n\n prependItems(key: string, value: any[], checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemsInArray(this.value(key) || [], value, false, checkFunction));\n }\n\n updateItem(key: string, value: any, force?: boolean, checkFunction?: (item: any) => boolean): void {\n this.save(key, updateItemInArray(this.value(key) || [], value, force, checkFunction));\n }\n\n updateItems(key: string, value: any, force?: boolean, checkFunction?: (item: any) => boolean): void {\n this.save(key, updateItemsInArray(this.value(key) || [], value, force, checkFunction));\n }\n\n deleteItem(key: string, value: any): void {\n this.save(key, deleteItemFromArray(this.value(key) || [], value));\n }\n\n dispose(): void {\n for (const key of Object.keys(this.data)) {\n this.data[key].complete();\n delete this.data[key];\n }\n }\n\n clearStorageData(): void {\n if (this.engine) {\n this.engine.clear();\n }\n }\n\n getEngine(): StorageEngine {\n return this.engine;\n }\n\n private getSubject(key: string): BehaviorSubject<any> {\n if (!this.data[key]) {\n this.data[key] = new BehaviorSubject<any>(this.engine ? this.engine.get(key) : undefined);\n }\n return this.data[key];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '../storage/store';\n\n@Injectable({providedIn: 'root'})\nexport class BaseService {\n protected store = new Store();\n\n dispose(): void {\n this.store.dispose();\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { BaseService } from './base.service';\n\nconst CONFIG_STORE_KEY = 'config';\n\nexport const CONFIG_DATA = 'mtg-core-config-data';\n\n@Injectable({providedIn: 'root'})\nexport class ConfigService extends BaseService {\n constructor(\n @Optional() @Inject(CONFIG_DATA) private configData: any\n ) {\n super();\n if (configData) {\n this.initialize(configData);\n }\n }\n\n get config$() {\n return this.store.get(CONFIG_STORE_KEY);\n }\n\n get config() {\n return this.store.value(CONFIG_STORE_KEY) || {};\n }\n\n initialize(data: any): void {\n this.store.save(CONFIG_STORE_KEY, data);\n }\n\n set(key: string, value: any): void {\n this.store.save(CONFIG_STORE_KEY, {\n ...this.config,\n [key]: value\n });\n }\n\n get(key: string): any {\n return this.store.value(CONFIG_STORE_KEY) && this.store.value(CONFIG_STORE_KEY)[key];\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { 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 { 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 { 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 rating: 'rating'\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 rating: number;\n\n get fullName(): string {\n return [this.lastName, this.firstName, this.middleName].filter(s => s).join(' ');\n }\n\n get shortName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get initials(): string {\n return [this.lastName, this.firstName].filter(s => s).map(s => s.substr(0, 1)).join('');\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\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 { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { TeamUser } from './team-user';\nimport { TournamentTeamUser } from './tournament-team-user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n game_id: 'gameId',\n team_user: 'teamUser',\n tournament_team_user: 'tournamentTeamUser',\n is_mvp: 'isMvp',\n updated_at: 'updatedAt'\n },\n relation: {\n teamUser: TeamUser,\n tournamentTeamUser: TournamentTeamUser,\n updatedAt: DateTimeField,\n }\n})\nexport class GameUser extends BaseModel {\n id: number;\n gameId: number;\n teamUser: TeamUser;\n tournamentTeamUser: TournamentTeamUser;\n isMvp: boolean;\n updatedAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { GameUser } from '../models/game-user';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService,\n ) {\n }\n\n async getUsers(gameId: number): Promise<GameUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/users/`).pipe(\n map(result => GameUser.toFront(result))\n ).toPromise();\n }\n\n async getMvp(gameId: number): Promise<GameUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/mvp/`).pipe(\n map(result => GameUser.toFront(result))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { BasketballGameTeamStatistic } from '../models/basketball-game-team-statistic';\nimport { BasketballGameStatistic } from '../models/basketball-game-statistic';\nimport { BasketballGameLog } from '../models/basketball-game-log';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class BasketballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<BasketballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/team_statistic/`).pipe(\n map(result => BasketballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<BasketballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/user_statistic/`).pipe(\n map(result => BasketballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<BasketballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/logs/`).pipe(\n map(result => BasketballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, fileType: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/game_protocol/?file_type=${fileType}`,\n {responseType: 'blob'}\n )\n .toPromise();\n }\n\n async downloadFibaProtocol(gameId: number, fileType: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/game_protocol_fiba/?file_type=${fileType}`,\n {responseType: 'blob'}\n )\n .toPromise();\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n theme: 'theme',\n message: 'message',\n files: 'files',\n email: 'email',\n captcha: 'captcha',\n },\n relation: {\n files: File\n }\n})\nexport class Feedback {\n id: number;\n theme: string;\n message: string;\n email: string;\n captcha: string;\n files: File[];\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(value: any): any {\n return null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Feedback } from '../models/feedback';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class FeedbackApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async sendFeedback(data: any): Promise<Feedback> {\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/feedback/`, Feedback.toBack(data))\n .pipe(map(response => Feedback.toFront(response)))\n .toPromise();\n }\n\n async sendLeagueFeedback(leagueId: number, data: any): Promise<Feedback> {\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/feedback/`, Feedback.toBack(data))\n .pipe(map(response => Feedback.toFront(response)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } 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 { enumField, ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateTimeField, penaltyTypeField } from './util';\nimport { GameUser } from './game-user';\nimport { GameLogBase } from './game-log-base';\n\nexport enum FootballGameLogTypes {\n enter_game = 1,\n exit_game,\n shot_miss,\n shot_on_goal,\n shot_blocked,\n goal,\n penalty_attempt,\n penalty_goal,\n penalty_save,\n small_penalty_attempt,\n small_penalty_goal,\n small_penalty_save,\n assist,\n block_shot,\n corner,\n free_kick,\n foul,\n save,\n yellow_card,\n red_card,\n perfect_pass,\n loss,\n steal,\n out,\n timeout,\n}\n\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n is_goalie: 'isGoalie',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(FootballGameLogTypes)\n }\n})\nexport class FootballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: FootballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n isGoalie: boolean;\n\n compare(model: FootballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n isScoreType(): boolean {\n return [FootballGameLogTypes.goal, FootballGameLogTypes.penalty_goal, FootballGameLogTypes.small_penalty_goal].indexOf(this.logType) > -1;\n }\n\n isAfter(log: FootballGameLog): boolean {\n if (this.time === log.time && this.period === log.period) {\n return this.id > log.id;\n }\n if (this.period === log.period) {\n return this.time > log.time;\n }\n return this.period > log.period;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n updated_at: 'updatedAt',\n points: 'points',\n pp_shot_misses: 'ppShotMisses',\n pp_shots_on_goal: 'ppShotsOnGoal',\n pp_shots_blocked: 'ppShotsBlocked',\n ev_shot_misses: 'evShotMisses',\n ev_shots_on_goal: 'evShotsOnGoal',\n ev_shots_blocked: 'evShotsBlocked',\n sh_shot_misses: 'shShotMisses',\n sh_shots_on_goal: 'shShotsOnGoal',\n sh_shots_blocked: 'shShotsBlocked',\n pp_goals: 'ppGoals',\n ev_goals: 'evGoals',\n sh_goals: 'shGoals',\n pp_assists: 'ppAssists',\n ev_assists: 'evAssists',\n sh_assists: 'shAssists',\n shootout_attempts: 'shootoutAttempts',\n shootout_goals: 'shootoutGoals',\n block_shots: 'blockShots',\n face_off_losses: 'faceOffLosses',\n face_off_wins: 'faceOffWins',\n saves: 'saves',\n goals_against: 'goalsAgainst',\n safety_rate: 'safetyRate',\n penalty_minutes: 'penaltyMinutes',\n game_time: 'gameTime',\n plus_minus: 'plusMinus'\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class HockeyGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n ppShotMisses: number;\n ppShotsOnGoal: number;\n ppShotsBlocked: number;\n evShotMisses: number;\n evShotsOnGoal: number;\n evShotsBlocked: number;\n shShotMisses: number;\n shShotsOnGoal: number;\n shShotsBlocked: number;\n ppGoals: number;\n evGoals: number;\n shGoals: number;\n ppAssists: number;\n evAssists: number;\n shAssists: number;\n shootoutAttempts: number;\n shootoutGoals: number;\n blockShots: number;\n faceOffLosses: number;\n faceOffWins: number;\n saves: number;\n goalsAgainst: number;\n safetyRate: number;\n penaltyMinutes: number;\n gameTime: number;\n plusMinus: number;\n updatedAt: Date;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get shotsOnGoal(): number {\n return (this.evShotsOnGoal || 0) + (this.ppShotsOnGoal || 0) + (this.shShotsOnGoal || 0);\n }\n\n get shotsBlocked(): number {\n return (this.evShotsBlocked || 0) + (this.ppShotsBlocked || 0) + (this.shShotsBlocked || 0);\n }\n\n get shotMisses(): number {\n return (this.evShotMisses || 0) + (this.ppShotMisses || 0) + (this.shShotMisses || 0);\n }\n\n get ppShots(): number {\n return (this.ppShotMisses || 0) + (this.ppShotsOnGoal || 0) + (this.ppShotsBlocked || 0);\n }\n\n get evShots(): number {\n return (this.evShotMisses || 0) + (this.evShotsOnGoal || 0) + (this.evShotsBlocked || 0);\n }\n\n get shShots(): number {\n return (this.shShotMisses || 0) + (this.shShotsOnGoal || 0) + (this.shShotsBlocked || 0);\n }\n\n get shots(): number {\n return this.ppShots + this.evShots + this.shShots;\n }\n\n get goals(): number {\n return (this.ppGoals || 0) + (this.shGoals || 0) + (this.evGoals || 0);\n }\n\n get assists(): number {\n return (this.ppAssists || 0) + (this.evAssists || 0) + (this.shAssists || 0);\n }\n\n get faceOffs(): number {\n return (this.faceOffWins || 0) + (this.faceOffLosses || 0);\n }\n\n get shootOuts(): number {\n return (this.shootoutAttempts || 0) + (this.shootoutGoals || 0);\n }\n\n get shotsAgainst(): number {\n return (this.saves || 0) + (this.goalsAgainst || 0);\n }\n\n get savesPercent(): number {\n if (!this.shotsAgainst || !this.saves) {\n return 0;\n }\n return Math.round(1000 * this.saves / this.shotsAgainst) / 10;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n lose_games_count: 'loseGamesCount',\n points: 'points',\n pp_shots: 'ppShots',\n pp_shot_misses: 'ppShotMisses',\n pp_shots_on_goal: 'ppShotsOnGoal',\n pp_shots_blocked: 'ppShotsBlocked',\n ev_shots: 'evShots',\n ev_shot_misses: 'evShotMisses',\n ev_shots_on_goal: 'evShotsOnGoal',\n ev_shots_blocked: 'evShotsBlocked',\n sh_shots: 'shShots',\n sh_shot_misses: 'shShotMisses',\n sh_shots_on_goal: 'shShotsOnGoal',\n sh_shots_blocked: 'shShotsBlocked',\n pp_goals_percent: 'ppGoalsPercent',\n pp_goals: 'ppGoals',\n ev_goals_percent: 'evGoalsPercent',\n ev_goals: 'evGoals',\n sh_goals_percent: 'shGoalsPercent',\n goals: 'goals',\n sh_goals: 'shGoals',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n shots: 'shots',\n goals_percent: 'goalsPercent',\n shots_against: 'shotsAgainst',\n saves_percent: 'savesPercent',\n pp_assists: 'ppAssists',\n ev_assists: 'evAssists',\n sh_assists: 'shAssists',\n shootout_attempts: 'shootoutAttempts',\n shootout_goals: 'shootoutGoals',\n block_shots: 'blockShots',\n face_off_losses: 'faceOffLosses',\n face_off_wins: 'faceOffWins',\n face_offs: 'faceOffs',\n face_off_percent: 'faceOffPercent',\n saves: 'saves',\n goals_against: 'goalsAgainst',\n safety_rate: 'safetyRate',\n penalty_minutes: 'penaltyMinutes',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n newbie: 'newbie',\n },\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 loseGamesCount: number;\n points: number;\n ppShots: number;\n ppShotMisses: number;\n ppShotsOnGoal: number;\n ppShotsBlocked: number;\n evShots: number;\n evShotMisses: number;\n evShotsOnGoal: number;\n evShotsBlocked: number;\n shShots: number;\n shShotMisses: number;\n shShotsOnGoal: number;\n shShotsBlocked: number;\n ppGoalsPercent: number;\n ppGoals: number;\n evGoalsPercent: number;\n evGoals: number;\n shGoalsPercent: number;\n shGoals: number;\n goals: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n shots: number;\n goalsPercent: number;\n ppAssists: number;\n evAssists: number;\n shAssists: number;\n shootoutAttempts: number;\n shootoutGoals: number;\n blockShots: number;\n faceOffLosses: number;\n faceOffWins: number;\n faceOffs: number;\n faceOffPercent: number;\n savesPercent: number;\n saves: number;\n shotsAgainst: number;\n goalsAgainst: number;\n safetyRate: number;\n penaltyMinutes: number;\n gameTime: number;\n plusMinus: number;\n newbie: boolean;\n\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 get gamesWonPercent(): number {\n if (!this.gamesCount) {\n return 0;\n }\n return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { HockeyStatistic } from './hockey-statistic';\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 { ConfigService } from '../services/config.service';\nimport { HockeyGameLog } from '../models/hockey-game-log';\nimport { HockeyGameStatistic } from '../models/hockey-game-statistic';\nimport { HockeyGameTeamStatistic } from '../models/hockey-game-team-statistic';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class HockeyGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<HockeyGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/team_statistic/`).pipe(\n map(result => HockeyGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<HockeyGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/user_statistic/`).pipe(\n map(result => HockeyGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<HockeyGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/logs/`).pipe(\n map(result => HockeyGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadApplication(gameId: number, format: 'pdf' | 'xlsx' | 'html', type: 'game_user'|'tournament_user'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/game_application_file/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, 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, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n updated_at: 'updatedAt',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n goals: 'goals',\n assists: 'assists',\n corners: 'corners',\n free_kicks: 'freeKicks',\n penalty_goals: 'penaltyGoals',\n penalty_attempts: 'penaltyAttempts',\n penalty_goals_against: 'penaltyGoalsAgainst',\n penalty_saves: 'penaltySaves',\n small_penalty_goals: 'smallPenaltyGoals',\n small_penalty_attempts: 'smallPenaltyAttempts',\n small_penalty_goals_against: 'smallPenaltyGoalsAgainst',\n small_penalty_saves: 'smallPenaltySaves',\n saves: 'saves',\n goals_against: 'goalsAgainst',\n safety_rate: 'safetyRate',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n fouls: 'fouls',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n perfect_passes: 'perfectPasses',\n losses: 'losses',\n steals: 'steals',\n outs: 'outs',\n block_shots: 'blockShots'\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class FootballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n goals: number;\n assists: number;\n blockShots: number;\n corners: number;\n freeKicks: number;\n penaltyGoals: number;\n penaltyAttempts: number;\n penaltyGoalsAgainst: number;\n penaltySaves: number;\n smallPenaltyGoals: number;\n smallPenaltyAttempts: number;\n smallPenaltyGoalsAgainst: number;\n smallPenaltySaves: number;\n saves: number;\n goalsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n perfectPasses: number;\n losses: number;\n steals: number;\n outs: number;\n gameTime: number;\n plusMinus: number;\n updatedAt: Date;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get shots(): number {\n return (this.shotMisses || 0) + (this.shotsOnGoal || 0) + (this.shotsBlocked || 0);\n }\n\n\n get totalGoals(): number {\n return (this.goals || 0) + (this.penaltyGoals || 0) + (this.smallPenaltyGoals || 0);\n }\n\n get goalsPercent(): number {\n if (!this.shots || !this.totalGoals) {\n return 0;\n }\n return Math.round(1000 * this.totalGoals / this.shots) / 10;\n }\n\n get shotsOnGoalPercent(): number {\n if (!this.shotsOnGoal || !this.shots) {\n return 0;\n }\n return Math.round(1000 * this.shotsOnGoal / this.shots) / 10;\n }\n\n get penalties(): number {\n return (this.penaltyGoals || 0) + (this.penaltyAttempts || 0);\n }\n\n get penaltyGoalsPercent(): number {\n if (!this.penaltyAttempts || !this.penaltyGoals) {\n return 0;\n }\n return Math.round(1000 * this.penaltyGoals / this.penaltyAttempts) / 10;\n }\n\n get smallPenalties(): number {\n return (this.smallPenaltyGoals || 0) + (this.smallPenaltyAttempts || 0);\n }\n\n get smallPenaltyGoalsPercent(): number {\n if (!this.smallPenaltyAttempts || !this.smallPenaltyGoals) {\n return 0;\n }\n return Math.round(1000 * this.smallPenaltyGoals / this.smallPenaltyAttempts) / 10;\n }\n\n get shotsAgainst(): number {\n return (this.saves || 0) + (this.goalsAgainst || 0);\n }\n\n get penaltyShotsAgainst(): number {\n return (this.penaltySaves || 0) + (this.penaltyGoalsAgainst || 0);\n }\n\n get smallPenaltyShotsAgainst(): number {\n return (this.smallPenaltySaves || 0) + (this.smallPenaltyGoalsAgainst || 0);\n }\n\n get totalGoalsAgainst(): number {\n return (this.goalsAgainst || 0) + (this.penaltyGoalsAgainst || 0) + (this.smallPenaltyGoalsAgainst || 0);\n }\n\n\n get totalSaves(): number {\n return (this.saves || 0) + (this.penaltySaves || 0) + (this.smallPenaltySaves || 0);\n }\n\n get savesPercent(): number {\n if (!this.shotsAgainst || !this.saves) {\n return 0;\n }\n return Math.round(1000 * this.saves / this.shotsAgainst) / 10;\n }\n\n get penaltySavesPercent(): number {\n if (!this.penaltyShotsAgainst || !this.penaltySaves) {\n return 0;\n }\n return Math.round(1000 * this.penaltySaves / this.penaltyShotsAgainst) / 10;\n }\n\n get smallPenaltySavesPercent(): number {\n if (!this.smallPenaltyShotsAgainst || !this.smallPenaltySaves) {\n return 0;\n }\n return Math.round(1000 * this.smallPenaltySaves / this.smallPenaltyShotsAgainst) / 10;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n shots_on_goal_percent: 'shotsOnGoalPercent',\n shots: 'shots',\n goals: 'goals',\n goals_percent: 'goalsPercent',\n total_goals: 'totalGoals',\n assists: 'assists',\n penalty_goals: 'penaltyGoals',\n penalty_attempts: 'penaltyAttempts',\n penalty_goals_percent: 'penaltyGoalsPercent',\n penalty_saves: 'penaltySaves',\n penalty_goals_against: 'penaltyGoalsAgainst',\n penalty_shots_against: 'penaltyShotsAgainst',\n penalty_saves_percent: 'penaltySavesPercent',\n small_penalty_goals: 'smallPenaltyGoals',\n small_penalty_attempts: 'smallPenaltyAttempts',\n small_penalty_goals_percent: 'smallPenaltyGoalsPercent',\n small_penalty_saves: 'smallPenaltySaves',\n small_penalty_goals_against: 'smallPenaltyGoalsAgainst',\n small_penalty_shots_against: 'smallPenaltyShotsAgainst',\n small_penalty_saves_percent: 'smallPenaltySavesPercent',\n saves: 'saves',\n saves_percent: 'savesPercent',\n total_saves: 'totalSaves',\n goals_against: 'goalsAgainst',\n total_goals_against: 'totalGoalsAgainst',\n shots_against: 'shotsAgainst',\n safety_rate: 'safetyRate',\n fouls: 'fouls',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n perfect_passes: 'perfectPasses',\n losses: 'losses',\n steals: 'steals',\n outs: 'outs',\n block_shots: 'blockShots',\n corners: 'corners',\n free_kicks: 'freeKicks',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n newbie: 'newbie'\n },\n relation: {\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class FootballStatistic extends 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 shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n shotsOnGoalPercent: number;\n shots: number;\n goals: number;\n totalGoals: number;\n goalsPercent: number;\n assists: number;\n penaltyGoals: number;\n penaltyAttempts: number;\n penaltyGoalsPercent: number;\n penaltySaves: number;\n penaltyGoalsAgainst: number;\n penaltyShotsAgainst: number;\n penaltySavesPercent: number;\n smallPenaltyGoals: number;\n smallPenaltyAttempts: number;\n smallPenaltyGoalsPercent: number;\n smallPenaltySaves: number;\n smallPenaltyGoalsAgainst: number;\n smallPenaltyShotsAgainst: number;\n smallPenaltySavesPercent: number;\n saves: number;\n savesPercent: number;\n totalSaves: number;\n goalsAgainst: number;\n totalGoalsAgainst: number;\n shotsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n perfectPasses: number;\n losses: number;\n steals: number;\n outs: number;\n gameTime: number;\n plusMinus: number;\n blockShots: number;\n corners: number;\n freeKicks: number;\n newbie: boolean;\n\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 { FootballStatistic } from './football-statistic';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: FootballStatistic,\n competitorTeam: FootballStatistic\n }\n})\nexport class FootballGameTeamStatistic extends BaseModel {\n team: FootballStatistic;\n competitorTeam: FootballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { FootballGameLog } from '../models/football-game-log';\nimport { FootballGameStatistic } from '../models/football-game-statistic';\nimport { FootballGameTeamStatistic } from '../models/football-game-team-statistic';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class FootballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<FootballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/team_statistic/`).pipe(\n map(result => FootballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<FootballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/user_statistic/`).pipe(\n map(result => FootballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<FootballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/logs/`).pipe(\n map(result => FootballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadApplication(gameId: number, format: 'pdf' | 'xlsx' | 'html', type: 'game_user' | 'tournament_user'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/game_application_file/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { 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 { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField, DateTimeField, enumField } from './util';\nimport { File } from './file';\nimport { Tournament } from './tournament';\n\nexport enum LeagueNewsType {\n text = 1,\n video\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n datetime: 'datetime',\n preview_text: 'previewText',\n detail_text: 'detailText',\n picture: 'picture',\n cover: 'cover',\n mobile_picture: 'mobilePicture',\n is_main: 'isMain',\n tournaments: 'tournaments',\n type: 'type',\n video_link: 'videoLink',\n tag: 'tag',\n },\n relation: {\n datetime: DateTimeField,\n picture: File,\n cover: File,\n mobilePicture: File,\n tournaments: listField(Tournament),\n type: enumField(LeagueNewsType),\n }\n})\nexport class LeagueNews extends BaseModel {\n id: number;\n title: string;\n datetime: Date;\n previewText: string;\n detailText: string;\n picture: File;\n cover: File;\n mobilePicture: File;\n isMain: boolean;\n tournaments: Tournament[];\n type: LeagueNewsType;\n videoLink: string;\n tag: string;\n\n @ToFrontHook\n static toFront(data: any): any {\n return undefined;\n }\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField } from './util';\nimport { Team } from './team';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { TeamUser } from './team-user';\nimport { TournamentTeam } from './tournament-team';\nimport { User } from './user';\nimport { BaseStatistic } 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 } from './util';\nimport { TournamentTeam } from './tournament-team';\nimport { TournamentGroup } from './tournament-group';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team: 'tournamentTeam',\n group: 'group',\n tournament_stage_id: 'tournamentStageId',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n score_sum: 'scoreSum',\n missed_sum: 'missedSum',\n last_games_count: 'lastGamesCount',\n last_games_won: 'lastGamesWon',\n points: 'points',\n final_standing: 'finalStanding',\n received_points: 'receivedPoints',\n },\n relation: {\n tournamentTeam: TournamentTeam,\n group: TournamentGroup\n }\n})\nexport class TournamentStageTeam extends BaseModel {\n id: number;\n tournamentTeam: TournamentTeam;\n group: TournamentGroup;\n tournamentStageId: number;\n gamesCount: number;\n wonGamesCount: number;\n scoreSum: number;\n missedSum: number;\n lastGamesCount: number;\n lastGamesWon: number;\n points: number;\n finalStanding: number;\n receivedPoints: number;\n\n get gamesWonPercent(): number {\n if (!this.gamesCount) {\n return 0;\n }\n return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField, enumField, listField } from './util';\nimport { Game } from './game';\nimport { Tournament } from './tournament';\nimport { League } from './league';\nimport { LeagueNews } from './league-news';\n\nexport enum TournamentEventTypes {\n game_closed = 1,\n media_added,\n news\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n game: 'game',\n news: 'news',\n league: 'league',\n tournaments: 'tournaments',\n event: 'event',\n datetime: 'datetime'\n },\n relation: {\n game: Game,\n news: LeagueNews,\n league: League,\n tournaments: listField(Tournament),\n datetime: DateField,\n event: enumField(TournamentEventTypes)\n }\n})\nexport class TournamentEvent extends BaseModel {\n id: number;\n game: Game;\n news: LeagueNews;\n tournaments: Tournament[];\n event: TournamentEventTypes;\n datetime: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { User } from './user';\nimport { BaseModel, enumField, listField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\n\nexport enum LeagueUserRoles {\n admin = 1,\n moderator,\n game_manager\n}\n\nexport enum LeagueUserPermissions {\n settings = 1,\n users,\n teams,\n media,\n news,\n game_export,\n schedule,\n game_management\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user: 'user',\n role: 'role',\n permissions: 'permissions'\n },\n relation: {\n user: User,\n permissions: listField(enumField(LeagueUserPermissions))\n }\n})\nexport class LeagueUser extends BaseModel {\n id: number;\n user: User;\n _role: LeagueUserRoles;\n permissions: LeagueUserPermissions[];\n\n set role(value: LeagueUserRoles|string) {\n this._role = LeagueUserRoles[value];\n }\n\n get role(): LeagueUserRoles|string {\n return this._role;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Tournament } from '../models/tournament';\nimport { map } from 'rxjs/operators';\nimport { TournamentNews } from '../models/tournament-news';\nimport { Game, GameStatuses } from '../models/game';\nimport { GameTimelineStages } from '../models/game-timeline-stages';\nimport { TournamentTeam } from '../models/tournament-team';\nimport { TournamentStage } from '../models/tournament-stage';\nimport { Playoff } from '../models/playoff';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { BasketballStatistic } from '../models/basketball-statistic';\nimport { VolleyballStatistic } from '../models/volleyball-statistic';\nimport { TournamentTeamUser } from '../models/tournament-team-user';\nimport { TournamentStageTeam } from '../models/tournament-stage-team';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { ConfigService } from '../services/config.service';\nimport { HockeyStatistic } from '../models/hockey-statistic';\nimport { FootballStatistic } from '../models/football-statistic';\nimport { LeagueUserPermissions } from '../models/league-user';\n\nexport interface TournamentGamesFilters {\n tournamentIds?: number[];\n tournamentSeasonId?: number;\n tournamentStageId?: number;\n tournamentTour?: number;\n teamId?: number;\n playoffStage?: number;\n playoffId?: number;\n status?: GameStatuses;\n statuses?: GameStatuses[];\n tournamentCourtId?: number;\n userId?: number;\n}\n\nexport type StatisticGroupByTypes = 'team' | 'user' | 'team_user' | 'tournament_team' | 'tournament_team_user' | 'month' | 'win_loses';\n\nexport interface StatisticFilters {\n tournament_id?: number;\n tournament_ids?: number[];\n tournament_season_id?: number;\n tournament_team_id?: number;\n tournament_team_user_id?: number;\n team_id?: number;\n team_user_id?: number;\n user_id?: number;\n tournament_stage_id?: number;\n tournament_tour?: number;\n playoff_stage?: number;\n playoff_id?: number;\n 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 getById(tournamentId: number): Promise<Tournament> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/`)\n .pipe(map(result => Tournament.toFront(result)))\n .toPromise();\n }\n\n async getByAlias(leagueId: number, alias: string): Promise<Tournament> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournaments/${alias}/`)\n .pipe(map(result => Tournament.toFront(result)))\n .toPromise();\n }\n\n async getNews(tournamentId: number): Promise<TournamentNews[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/news/`)\n .pipe(map(result => TournamentNews.toFront(result)))\n .toPromise();\n }\n\n async getEvents(tournamentId: number, page: number, size: number, filters?: TournamentEventsListFilter): Promise<PaginatedResponse<TournamentEvent[]>> {\n let params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\n if (filters) {\n if (filters.event) {\n params = params.set('event', TournamentEventTypes[filters.event]);\n }\n if (filters.search) {\n params = params.set('search', filters.search);\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/events/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentEvent.toFront(result.body)\n })))\n .toPromise();\n }\n\n async getTournamentStages(tournamentId: number): Promise<TournamentStage[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/stages/`).pipe(\n map(data => TournamentStage.toFront(data))\n ).toPromise();\n }\n\n async getPlayoff(tournamentId: number): Promise<Playoff[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/playoff/`).pipe(\n map(result => Playoff.toFront(result))\n ).toPromise();\n }\n\n async getPlayoffGames(playoffId: number): 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 params = applyGamesFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/games/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: Game.toFront(result.body)\n }))).toPromise();\n }\n\n async getTeams(tournamentId: number): Promise<TournamentTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/teams/`)\n .pipe(map(result => TournamentTeam.toFront(result)))\n .toPromise();\n }\n\n async getStageTeams(tournamentId: number): Promise<TournamentStageTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/stage_teams/`)\n .pipe(map(result => TournamentStageTeam.toFront(result)))\n .toPromise();\n }\n\n async getTeamById(tournamentTeamId: number): Promise<TournamentTeam> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/`)\n .pipe(map(result => TournamentTeam.toFront(result)))\n .toPromise();\n }\n\n async getUserById(userId: number): Promise<TournamentTeamUser> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${userId}/`)\n .pipe(map(result => TournamentTeamUser.toFront(result)))\n .toPromise();\n }\n\n async getUserGames(tournamentUserId: number): Promise<Game[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${tournamentUserId}/games/`)\n .pipe(map(result => Game.toFront(result)))\n .toPromise();\n }\n\n async 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 if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\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 if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\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 if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\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 getFootballStatistic(filters?: StatisticFilters): Promise<FootballStatistic[]> {\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 if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\n }\n }\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/football_statistic/`, {params}).pipe(\n map(result => FootballStatistic.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 async getTournamentTeamTournaments(tournamentTeamId: number): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/tournaments/`).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n async getTournamentUserTournaments(tournamentTeamUserId: number): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${tournamentTeamUserId}/tournaments/`).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n}\n\nexport function applyGamesFilters(filters: TournamentGamesFilters, params: HttpParams): HttpParams {\n if (filters.tournamentIds) {\n params = params.set('tournament_ids', filters.tournamentIds.join(','));\n }\n if (filters.tournamentStageId) {\n params = params.set('tournament_stage_id', filters.tournamentStageId.toString());\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n if (filters.playoffStage) {\n params = params.set('playoff_stage', filters.playoffStage.toString());\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n if (filters.status) {\n params = params.set('status', GameStatuses[filters.status]);\n }\n if (filters.statuses) {\n const statuses = filters.statuses.map(i => GameStatuses[i]);\n params = params.set('statuses', statuses.join(','));\n }\n if (filters.tournamentCourtId) {\n params = params.set('tournament_court_id', filters.tournamentCourtId.toString());\n }\n if (filters.userId) {\n params = params.set('user_id', filters.userId.toString());\n }\n return params;\n}\n","import {ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField} from './util';\nimport {File} from './file';\n\nexport enum BannerLocation {\n slider = 'slider',\n central = 'central',\n media = 'media',\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n picture: 'picture',\n link: 'link',\n sort: 'sort',\n location: 'location',\n },\n relation: {\n picture: File,\n location: enumField(BannerLocation),\n }\n})\nexport class LeagueBanner extends BaseModel {\n id: number;\n title: string;\n picture: File;\n link: string;\n sort: number;\n location: BannerLocation;\n\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(data: any): any {\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n picture: 'picture',\n link: 'link',\n sort: 'sort',\n },\n relation: {\n picture: File\n }\n})\nexport class LeaguePartner extends BaseModel {\n id: number;\n title: string;\n picture: File;\n link: string;\n sort: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { User } from './user';\n\nexport enum PollStatuses {\n open = 1,\n closed,\n archived,\n}\n\n@ModelInstance({\n mappingFields: {\n uuid: 'uuid',\n name: 'name'\n }\n})\nexport class PollVariant extends BaseModel {\n uuid: string;\n name: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n answer_uuid: 'answerUuid',\n user: 'user',\n poll_id: 'pollId',\n },\n relation: {\n user: User\n }\n})\nexport class PollAnswer extends BaseModel {\n id: number;\n answerUuid: string;\n user: User;\n pollId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n active: 'active',\n status: 'status',\n team_id: 'teamId',\n name: 'name',\n description: 'description',\n variants: 'variants',\n author: 'author',\n answers: 'answers',\n multiple_answer: 'multipleAnswer',\n anonymous: 'anonymous',\n created_at: 'createdAt'\n },\n relation: {\n status: enumField(PollStatuses),\n variants: PollVariant,\n author: User,\n answers: PollAnswer,\n createdAt: DateTimeField,\n }\n})\nexport class Poll extends BaseModel {\n id: number;\n active: boolean;\n teamId: number;\n status: PollStatuses;\n name: string;\n description: string;\n _variants: PollVariant[];\n author: User;\n _answers: PollAnswer[];\n multipleAnswer: boolean;\n anonymous: boolean;\n createdAt: Date;\n variantsWithAnswers: {variant: PollVariant, percent: number}[] = [];\n\n set variants(value: PollVariant[]) {\n this._variants = value || [];\n if (this._answers) {\n this.calculateAnswersPercentage();\n }\n }\n get variants(): PollVariant[] {\n return this._variants;\n }\n\n set answers(value: PollAnswer[]) {\n this._answers = value || [];\n if (this._variants) {\n this.calculateAnswersPercentage();\n }\n }\n get answers(): PollAnswer[] {\n return this._answers;\n }\n\n calculateAnswersPercentage() {\n if (!this._answers.length) {\n return;\n }\n\n const variants = this._variants.map(v => v.uuid);\n const answersByVariant = this._answers.reduce((acc, item) => {\n if (variants.indexOf(item.answerUuid) < 0) {\n return acc;\n }\n if (!acc[item.answerUuid]) {\n acc[item.answerUuid] = 0;\n }\n acc[item.answerUuid]++;\n return acc;\n }, {});\n this.variantsWithAnswers = this._variants.map(item => ({\n variant: item,\n percent: answersByVariant[item.uuid] ? Math.round(100 * answersByVariant[item.uuid] / this._answers.length) : 0\n }))\n .sort((a, b) => a.percent > b.percent ? -1 : 1);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { 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 { applyGamesFilters, TournamentEventsListFilter, TournamentGamesFilters } from './tournament-api';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { GameMediaFilters } from './media-api';\nimport { TournamentSeason } from '../models/tournament-season';\nimport { Game, GameStatuses } from '../models/game';\nimport { LeaguePartner } from '../models/league-partner';\nimport { LeagueCourt } from '../models/league-court';\nimport { BannerLocation, LeagueBanner } from '../models/league-banner';\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 params = applyGamesFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/games/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: Game.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getSeasons(leagueId: number, 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 async getPartners(leagueId: number): Promise<LeaguePartner[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/partners/`).pipe(\n map(result => LeaguePartner.toFront(result))\n ).toPromise();\n }\n\n async getBanners(leagueId: number, location?: BannerLocation): Promise<LeagueBanner[]> {\n const params = location ? new HttpParams().set('location', location) : new HttpParams();\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/banners/`, {params}).pipe(\n map(result => LeagueBanner.toFront(result))\n ).toPromise();\n }\n\n async getCourts(leagueId: number): Promise<LeagueCourt[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/courts/`).pipe(\n map(result => LeagueCourt.toFront(result))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { LeagueNews, LeagueNewsType } from '../models/league-news';\nimport { map } from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class LeagueNewsApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\n }\n\n async getLeagueNewsList(leagueId: number, page: number, size: number, type: LeagueNewsType = LeagueNewsType.text): Promise<PaginatedResponse<LeagueNews[]>> {\n const params = new HttpParams().set('page', page.toString())\n .set('size', size.toString())\n .set('type', LeagueNewsType[type]);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/news/`, {params, observe: 'response'})\n .pipe(map(response => ({\n total: +response.headers.get('X-Page-Count'),\n data: LeagueNews.toFront(response.body)\n })))\n .toPromise();\n }\n\n async getMainLeagueNews(leagueId: number): Promise<LeagueNews> {\n return this.httpClient.get<any[]>(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/news/?is_main=true`)\n .pipe(map(response => response && response.length > 0 ? LeagueNews.toFront(response[0]) : null))\n .toPromise();\n }\n\n async getMainLeagueNewsList(leagueId: number): Promise<LeagueNews[]> {\n return this.httpClient.get<any[]>(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/news/?is_main=true`)\n .pipe(map(response => LeagueNews.toFront(response)))\n .toPromise();\n }\n\n async getNewsById(newsId: number): Promise<LeagueNews> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league_news/${newsId}/`)\n .pipe(map(response => LeagueNews.toFront(response)))\n .toPromise();\n }\n\n async getTournamentNewsList(tournamentId: number): Promise<PaginatedResponse<LeagueNews[]>> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/news/`, {observe: 'response'})\n .pipe(map(response => ({\n total: +response.headers.get('X-Page-Count'),\n data: LeagueNews.toFront(response.body)\n })))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { MediaItem } from '../models/media-item';\nimport { Game, GameStatuses } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { ConfigService } from '../services/config.service';\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, enumField } from './util';\n\nexport enum UserPermissionTypes {\n denied = 1,\n for_all,\n for_users,\n for_team\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n personal_data: 'personalData',\n games: 'games',\n teams: 'teams',\n statistic: 'statistic'\n },\n relation: {\n personalData: enumField(UserPermissionTypes),\n games: enumField(UserPermissionTypes),\n teams: enumField(UserPermissionTypes),\n statistic: enumField(UserPermissionTypes)\n }\n})\nexport class UserPermission extends BaseModel {\n id: number;\n personalData: UserPermissionTypes;\n games: UserPermissionTypes;\n teams: UserPermissionTypes;\n statistic: UserPermissionTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { TeamUserRole } from './team-user';\n\n@ModelInstance({\n mappingFields: {\n can_edit: 'canEdit',\n can_view_users: 'canViewUsers',\n can_manage_permission: 'canManagePermission',\n can_change_owner: 'canChangeOwner',\n can_delete: 'canDelete',\n can_manage_invites: 'canManageInvites',\n can_view_invites: 'canViewInvites',\n can_manage_polls: 'canManagePolls',\n can_view_polls: 'canViewPolls',\n can_answer_poll: 'canAnswerPoll',\n can_manage_games: 'canManageGames',\n can_view_games: 'canViewGames',\n can_view_statistic: 'canViewStatistic',\n can_promote_users: 'canPromoteUsers',\n can_edit_users: 'canEditUsers',\n can_delete_users: 'canDeleteUsers',\n can_view_events: 'canViewEvents',\n can_manage_events: 'canManageEvents',\n can_view_tournaments: 'canViewTournaments',\n can_manage_tournaments: 'canManageTournaments',\n role: 'role'\n },\n relation: {\n role: enumField(TeamUserRole)\n }\n})\nexport class TeamAccess extends BaseModel {\n canEdit: boolean;\n canViewUsers: boolean;\n canManagePermission: boolean;\n canChangeOwner: boolean;\n canDelete: boolean;\n canManageInvites: boolean;\n canViewInvites: boolean;\n canManagePolls: boolean;\n canViewPolls: boolean;\n canAnswerPoll: boolean;\n canManageGames: boolean;\n canViewGames: boolean;\n canViewStatistic: boolean;\n canPromoteUsers: boolean;\n canEditUsers: boolean;\n canDeleteUsers: boolean;\n canViewEvents: boolean;\n canManageEvents: boolean;\n canViewTournaments: boolean;\n canManageTournaments: boolean;\n role: TeamUserRole;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';\nimport { Team } from '../models/team';\nimport { map } from 'rxjs/operators';\nimport { TeamUser, TeamUserRole } from '../models/team-user';\nimport { User } from '../models/user';\nimport { TeamInvite } from '../models/team-invite';\nimport { TeamInviteExternal } from '../models/team-invite-external';\nimport { Poll } from '../models/poll';\nimport { VolleyballStatistic } from '../models/volleyball-statistic';\nimport { Game } from '../models/game';\nimport { TeamEvent } from '../models/team-event';\nimport { Tournament } from '../models/tournament';\nimport { TournamentTeam } from '../models/tournament-team';\nimport { TournamentInvite } from '../models/tournament-invite';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { BasketballStatistic } from '../models/basketball-statistic';\nimport { TeamPermission } from '../models/team-permission';\nimport { TeamAccess } from '../models/team-access';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TeamApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async search(query: string, sportId?: number): Promise<Team[]> {\n let params = (new HttpParams()).set('search', query);\n if (sportId) {\n params = params.set('sport', sportId.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/`, {params})\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async create(team: Team): Promise<Team> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/`, Team.toBack(team))\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getById(teamId: number): Promise<Team> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/`)\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getTeamAccess(teamId: number): Promise<TeamAccess> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/access/`)\n .pipe(map(data => TeamAccess.toFront(data)))\n .toPromise();\n }\n\n async update(teamId: number, values: any): Promise<Team> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/`, Team.toBack(values))\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async delete(team: Team): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team/${team.id}/`)\n .toPromise();\n }\n\n async getPermission(teamId: number): Promise<TeamPermission> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/permission/`)\n .pipe(map(data => TeamPermission.toFront(data)))\n .toPromise();\n }\n\n async updatePermission(teamId: number, permission: TeamPermission): Promise<TeamPermission> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/permission/`, TeamPermission.toBack(permission))\n .pipe(map(data => TeamPermission.toFront(data)))\n .toPromise();\n }\n\n async getUsers(teamId: number, tournamentId?: number): Promise<TeamUser[]> {\n let params = new HttpParams();\n if (tournamentId) {\n params = params.set('tournament_id', tournamentId.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/`, {params})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateUserRole(teamId: number, teamUserId: number, role: TeamUserRole): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/${teamUserId}/role/`, {role: TeamUserRole[role]})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateUserNumber(teamId: number, teamUserId: number, gameNumber: number): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/${teamUserId}/number/`, {number: gameNumber.toString()})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async deleteUser(teamUser: TeamUser): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team/${teamUser.teamId}/users/${teamUser.id}/`)\n .toPromise();\n }\n\n async changeOwner(teamId: number, user: User): Promise<Team> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/owner/`, {id: user.id})\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getInvites(teamId: number): Promise<TeamInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites/`)\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async sendInvite(teamId: number, user: User): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites/`, {user})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/accept/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async declineInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/decline/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async resendInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/resend/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async getInvitesExternal(teamId: number): Promise<TeamInviteExternal[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites_external/`)\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async sendInviteExternal(teamId: number, invite: TeamInviteExternal): Promise<TeamInviteExternal> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites_external/`, TeamInviteExternal.toBack(invite))\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async deleteInviteExternal(invite: TeamInviteExternal): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/invites_external/${invite.id}/`)\n .toPromise();\n }\n\n async resendInviteExternal(invite: TeamInviteExternal): Promise<TeamInviteExternal> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/invites_external/${invite.id}/resend/`, {})\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async getPolls(teamId: number, archive: boolean = false): Promise<Poll[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/polls/${archive ? '?archive=1' : ''}`)\n .pipe(map(data => Poll.toFront(data)))\n .toPromise();\n }\n\n async createPoll(teamId: number, poll: Poll): Promise<Poll> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/polls/`, Poll.toBack(poll))\n .pipe(map(data => Poll.toFront(data)))\n .toPromise();\n }\n\n async getUsersStatistic(teamId: number): Promise<BasketballStatistic[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/statistics/`)\n .pipe(map(data => BasketballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getVolleyballStatistic(teamId: number): Promise<VolleyballStatistic[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/volleyball_statistics/`)\n .pipe(map(data => VolleyballStatistic.toFront(data)))\n .toPromise();\n }\n\n async joinTeam(teamId: number): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/join/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async leaveTeam(teamId: number): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/leave/`, {})\n .toPromise();\n }\n\n async getGames(teamId: number, archive = false): Promise<Game[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/games/${archive ? '?archive=1' : ''}`)\n .pipe(map(data => Game.toFront(data)))\n .toPromise();\n }\n\n async createGame(teamId: number, game: Game): Promise<Game> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/games/`, Game.toBack(game))\n .pipe(map(data => Game.toFront(data)))\n .toPromise();\n }\n\n async getTeamEvents(teamId: number): Promise<TeamEvent[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/events/`)\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async createTeamEvent(teamId: number, teamEvent: TeamEvent): Promise<TeamEvent> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/events/`, TeamEvent.toBack(teamEvent))\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async getTournaments(teamId: number): Promise<Tournament[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournaments/`)\n .pipe(map(data => Tournament.toFront(data)))\n .toPromise();\n }\n\n async getTournamentTeams(teamId: number): Promise<TournamentTeam[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournament_teams/`)\n .pipe(map(data => TournamentTeam.toFront(data)))\n .toPromise();\n }\n\n async getTournamentInvites(teamId: number): Promise<TournamentInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournament_invites/`)\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async getTournamentGames(teamId: number, tournamentId: number, page: number, size?: number): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournaments/${tournamentId}/games/`, {params, observe: 'response'})\n .pipe(map((response: HttpResponse<any>) => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n }))\n .toPromise();\n }\n\n async acceptTournamentInvite(inviteId: number): Promise<TournamentInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/tournament_invite/${inviteId}/accept/`, {})\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async declineTournamentInvite(inviteId: number): Promise<TournamentInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/tournament_invite/${inviteId}/decline/`, {})\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async registerLazyUser(teamId: number, userData: User): Promise<TeamUser> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/lazy_user/`, {user: User.toBack(userData)})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async getLazyUser(teamUserId: number): Promise<TeamUser> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`)\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateLazyUser(teamUserId: number, userData: User): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`, {user: User.toBack(userData)})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async deleteLazyUser(teamUserId: number): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`)\n .toPromise();\n }\n\n async resendLazyUserEmail(teamUserId: number): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/resend_email/`, {})\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { TeamEvent } from '../models/team-event';\nimport { TeamEventInvite } from '../models/team-event-invite';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TeamEventApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getTeamEvent(teamEventId: number): Promise<TeamEvent> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/`)\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async updateTeamEvent(teamEvent: TeamEvent): Promise<TeamEvent> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEvent.id}/`, TeamEvent.toBack(teamEvent))\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async deleteTeamEvent(teamEventId: number): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/`)\n .toPromise();\n }\n\n async getTeamEventInvites(teamEventId: number): Promise<TeamEventInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/invites/`)\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async createTeamEventInvite(teamEventId: number, teamUserId: number): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/invites/`, {team_user_id: teamUserId})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptTeamEventInvite(teamEventInvite: TeamEventInvite): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event_invite/${teamEventInvite.id}/accept/`, {})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async declineTeamEventInvite(teamEventInvite: TeamEventInvite): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event_invite/${teamEventInvite.id}/decline/`, {})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\n\n@ModelInstance({\n mappingFields: {\n valid_users_count: 'validUsersCount',\n invalid_users_count: 'invalidUsersCount',\n has_access: 'hasAccess',\n invite_sent: 'inviteSent',\n already_in_tournament: 'alreadyInTournament'\n }\n})\nexport class TournamentJoinData extends BaseModel {\n validUsersCount: number;\n invalidUsersCount: number;\n hasAccess: boolean;\n inviteSent: boolean;\n alreadyInTournament: boolean;\n\n get usersCount(): number {\n return this.validUsersCount + this.invalidUsersCount;\n }\n\n get valid() {\n return this.hasAccess && !this.inviteSent && !this.alreadyInTournament;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n join_data: 'joinData'\n },\n relation: {\n team: Team,\n joinData: TournamentJoinData\n }\n})\nexport class TournamentJoinTeam extends BaseModel {\n team: Team;\n joinData: TournamentJoinData;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TournamentJoinTeam } from '../models/tournament-join-team';\nimport { map } from 'rxjs/operators';\nimport { TeamUser } from '../models/team-user';\nimport { TournamentTeamUserInvite } from '../models/tournament-team-user-invite';\nimport { TournamentInvite } from '../models/tournament-invite';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TournamentJoinApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getTeamsForJoin(tournamentId: number): Promise<TournamentJoinTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/teams_for_join/`).pipe(\n map(response => TournamentJoinTeam.toFront(response))\n ).toPromise();\n }\n\n async getTeamUsers(teamId: number): Promise<TeamUser[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/`)\n .pipe(\n map(data => TeamUser.toFront(data))\n ).toPromise();\n }\n\n async joinTournament(tournamentId: number, teamId: number, invites: TournamentTeamUserInvite[]): Promise<TournamentInvite> {\n const body = {\n team: {id: teamId},\n user_invites: TournamentTeamUserInvite.toBack(invites)\n };\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/join/`, body)\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { TournamentSeason } from '../models/tournament-season';\nimport { ConfigService } from '../services/config.service';\nimport { map } from 'rxjs/operators';\nimport { Game, GameStatuses } from '../models/game';\nimport { Tournament } from '../models/tournament';\nimport { applyGamesFilters, TournamentEventsListFilter, TournamentGamesFilters } from './tournament-api';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { 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 params = applyGamesFilters(filters, params);\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/games/`,\n {params, observe: 'response'}\n ).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: Game.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getEvents(seasonId: number, page: number, size: number, filters?: TournamentEventsListFilter): Promise<PaginatedResponse<TournamentEvent[]>> {\n let params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\n if (filters) {\n if (filters.event) {\n params = params.set('event', TournamentEventTypes[filters.event]);\n }\n if (filters.search) {\n params = params.set('search', filters.search);\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n }\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/events/`,\n {params, observe: 'response'}\n )\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentEvent.toFront(result.body)\n })))\n .toPromise();\n }\n\n async getGameMedia(seasonId: number, page: number, size: number, filters: GameMediaFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n 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, HttpParams } from '@angular/common/http';\nimport { Game } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { VolleyballGameTeamStatistic } from '../models/volleyball-game-team-statistic';\nimport { VolleyballGameStatistic } from '../models/volleyball-game-statistic';\nimport { VolleyballGameLog } from '../models/volleyball-game-log';\nimport { ConfigService } from '../services/config.service';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class VolleyballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<VolleyballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/team_statistic/`).pipe(\n map(result => VolleyballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<VolleyballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/user_statistic/`).pipe(\n map(result => VolleyballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<VolleyballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/logs/`).pipe(\n map(result => VolleyballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { Team } from '../models/team';\nimport { map } from 'rxjs/operators';\nimport { TournamentTeam } from '../models/tournament-team';\n\n@Injectable({providedIn: 'root'})\nexport class PublicTeamApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n getById(teamId: number): Promise<Team> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_team/${teamId}/`).pipe(\n map(result => Team.toFront(result))\n ).toPromise();\n }\n\n getTournamentTeams(teamId: number, leagueId: number): Promise<TournamentTeam[]> {\n const params = new HttpParams().set('league_id', leagueId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_team/${teamId}/tournament_teams/`, {params}).pipe(\n map(result => TournamentTeam.toFront(result))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { User } from '../models/user';\nimport { map } from 'rxjs/operators';\nimport { Tournament } from '../models/tournament';\nimport { TournamentTeamUser } from '../models/tournament-team-user';\n\n@Injectable({providedIn: 'root'})\nexport class PublicUserApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n getById(userId: number): Promise<User> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/`).pipe(\n map(result => User.toFront(result))\n ).toPromise();\n }\n\n getTournaments(userId: number, leagueId: number): Promise<Tournament[]> {\n const params = new HttpParams().set('league_id', leagueId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/tournaments/`, {params}).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n getTournamentUser(userId: number, seasonId: number): Promise<TournamentTeamUser> {\n const params = new HttpParams().set('season_id', seasonId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/tournament_user/`, {params}).pipe(\n map(result => TournamentTeamUser.toFront(result))\n ).toPromise();\n }\n}\n","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 { FootballGameLogTypes } from '../models/football-game-log';\n\nexport const FootballGameLogTypeLocalization = {\n [FootballGameLogTypes.enter_game]: 'Выход на поле',\n [FootballGameLogTypes.exit_game]: 'Ушел с поля',\n [FootballGameLogTypes.shot_miss]: 'Удар мимо',\n [FootballGameLogTypes.shot_on_goal]: 'Удар в створ',\n [FootballGameLogTypes.shot_blocked]: 'Заблокированный удар',\n [FootballGameLogTypes.goal]: 'Гол',\n [FootballGameLogTypes.assist]: 'Передача',\n [FootballGameLogTypes.penalty_attempt]: 'Пенальти промах',\n [FootballGameLogTypes.penalty_goal]: 'Пенальти гол',\n [FootballGameLogTypes.small_penalty_attempt]: '10-метровый промах',\n [FootballGameLogTypes.small_penalty_goal]: '10-метровый гол',\n [FootballGameLogTypes.block_shot]: 'Блокировка удара',\n [FootballGameLogTypes.corner]: 'Угловой',\n [FootballGameLogTypes.free_kick]: 'Штрафной удар',\n [FootballGameLogTypes.save]: 'Отражен удар',\n [FootballGameLogTypes.penalty_save]: 'Отражен пенальти',\n [FootballGameLogTypes.small_penalty_save]: 'Отражен 10 метровый',\n [FootballGameLogTypes.foul]: 'Фол',\n [FootballGameLogTypes.yellow_card]: 'Желтая карточка',\n [FootballGameLogTypes.red_card]: 'Красная карточка',\n [FootballGameLogTypes.perfect_pass]: 'Пас',\n [FootballGameLogTypes.loss]: 'Потеря',\n [FootballGameLogTypes.steal]: 'Перехват',\n [FootballGameLogTypes.out]: 'Аут',\n [FootballGameLogTypes.timeout]: 'Таймаут'\n};\n","import { OvertimeTypes } from '../models/tournament';\n\nexport const OvertimeTypeLocalization = {\n [OvertimeTypes.to_score_diff]: 'До разницы в N мячей',\n [OvertimeTypes.to_score_total]: 'До N очков',\n [OvertimeTypes.time]: 'По времени',\n [OvertimeTypes.without_overtime]: 'Без овертайма',\n [OvertimeTypes.to_first_goal]: 'На N минут до первой шайбы',\n [OvertimeTypes.to_first_goal_and_bullitts]: 'На N минут до первой шайбы + буллиты',\n [OvertimeTypes.bullitts]: 'Буллиты',\n [OvertimeTypes.penalties]: 'Пенальти',\n [OvertimeTypes.time_and_penalties]: 'Дополнительное время + пенальти'\n};\n","import { TeamUserRole } from '../models/team-user';\n\nexport const TeamUserRoleLocalization = {\n [TeamUserRole.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';\nimport { FootballWorkFoot, GameFootballPosition } from '../models/football-profile';\n\nexport const GameBasketballPositionLocalization = {\n [GameBasketballPosition.point_guard]: 'Разыгрывающий защитник',\n [GameBasketballPosition.shooting_guard]: 'Атакующий защитник',\n [GameBasketballPosition.small_forward]: 'Легкий форвард',\n [GameBasketballPosition.power_forward]: 'Мощный форвард',\n [GameBasketballPosition.center]: 'Центровой',\n};\n\nexport const GameBasketballPositionShortLocalization = {\n [GameBasketballPosition.point_guard]: 'PG',\n [GameBasketballPosition.shooting_guard]: 'SG',\n [GameBasketballPosition.small_forward]: 'SF',\n [GameBasketballPosition.power_forward]: 'PF',\n [GameBasketballPosition.center]: 'C',\n};\n\nexport const WorkHandLocalization = {\n [WorkHand.left]: 'Левая',\n [WorkHand.right]: 'Правая'\n};\n\nexport const GameVolleyballPositionLocalization = {\n [GameVolleyballPosition.setter]: 'Связующий',\n [GameVolleyballPosition.libero]: 'Либеро',\n [GameVolleyballPosition.middle_player]: 'Центральный блокирующий',\n [GameVolleyballPosition.receiver_attacker]: 'Доигровщик',\n [GameVolleyballPosition.dioganal]: 'Диагональный',\n};\n\nexport const GameVolleyballPositionShortLocalization = {\n [GameVolleyballPosition.setter]: 'S',\n [GameVolleyballPosition.libero]: 'L',\n [GameVolleyballPosition.middle_player]: 'MP',\n [GameVolleyballPosition.receiver_attacker]: 'RA',\n [GameVolleyballPosition.dioganal]: 'D',\n};\n\nexport const GameVolleyballPositionShortRuLocalization = {\n [GameVolleyballPosition.setter]: 'связ.',\n [GameVolleyballPosition.libero]: 'либеро',\n [GameVolleyballPosition.middle_player]: 'блок.',\n [GameVolleyballPosition.receiver_attacker]: 'доигр.',\n [GameVolleyballPosition.dioganal]: 'диаг.',\n};\n\nexport const VolleyballWorkHandLocalization = {\n [VolleyballWorkHand.left]: 'Левая',\n [VolleyballWorkHand.right]: 'Правая'\n};\n\nexport const GameHockeyPositionLocalization = {\n [GameHockeyPosition.goaltender]: 'Вратарь',\n [GameHockeyPosition.defensemen]: 'Защитник',\n [GameHockeyPosition.forward]: 'Нападающий'\n};\n\nexport const GameFootballPositionLocalization = {\n [GameFootballPosition.goalkeeper]: 'Вратарь',\n [GameFootballPosition.defensemen]: 'Защитник',\n [GameFootballPosition.midfielder]: 'Полузащитник',\n [GameFootballPosition.forward]: 'Нападающий'\n};\n\nexport const FootballWorkFootLocalization = {\n [FootballWorkFoot.left]: 'Левая',\n [FootballWorkFoot.right]: 'Правая',\n [FootballWorkFoot.both]: 'Обе'\n};\n","import { VolleyballGameLogType } from '../models/volleyball-game-log';\n\nexport const VolleyballGameLogTypeLocalization = {\n [VolleyballGameLogType.enter_game]: 'Выход на площадку',\n [VolleyballGameLogType.exit_game]: 'Уход с площадки',\n [VolleyballGameLogType.remove_game]: 'Удаление с площадки',\n [VolleyballGameLogType.serve_ace]: 'Эйс',\n [VolleyballGameLogType.serve_hit]: 'Подача',\n [VolleyballGameLogType.serve_fault]: 'Ошибка на подаче',\n [VolleyballGameLogType.attack_spike]: 'Результативная атака',\n [VolleyballGameLogType.attack_shot]: 'Успешная атака',\n [VolleyballGameLogType.attack_fault]: 'Ошибка атаки',\n [VolleyballGameLogType.stuff_block]: 'Результативный блок',\n [VolleyballGameLogType.block_rebound]: 'Успешный блок',\n [VolleyballGameLogType.block_fault]: 'Ошибка на блоке',\n [VolleyballGameLogType.excellent_receive]: 'Отличный прием',\n [VolleyballGameLogType.receive]: 'Прием',\n [VolleyballGameLogType.receive_fault]: 'Ошибка на приеме',\n [VolleyballGameLogType.serve_receive]: 'Прием подачи',\n [VolleyballGameLogType.excellent_serve_receive]: 'Отличный прием подачи',\n [VolleyballGameLogType.serve_receive_fault]: 'Ошибка приема подачи',\n [VolleyballGameLogType.point]: 'Очко',\n [VolleyballGameLogType.fault]: 'Ошибка',\n [VolleyballGameLogType.timeout]: 'Таймаут',\n [VolleyballGameLogType.yellow_card]: 'Предупреждение',\n};\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n files: 'files',\n key_code: 'keyCode',\n },\n relation: {\n files: listField(File)\n }\n})\nexport class LeaguePlaylist extends BaseModel {\n id: number;\n name: string;\n files: File[];\n keyCode: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { Subject } from 'rxjs/internal/Subject';\nimport { ReplaySubject } from 'rxjs/internal/ReplaySubject';\n\nimport * as Centrifuge from 'centrifuge';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ConfigService } from './config.service';\n\ninterface CentrifugoConfig {\n user: string;\n timestamp: string;\n token: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class CentrifugoService {\n private channels$: { [key: string]: Subject<any> } = {};\n private subscriptions: { [key: string]: any } = {};\n private centrifuge;\n private initializeEngineSubject: ReplaySubject<boolean>;\n private connectedSubject = new BehaviorSubject<boolean>(false);\n\n get connected$(): Observable<boolean> {\n return this.connectedSubject;\n }\n\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) { }\n\n listen(channel): Observable<any> {\n if (channel in this.channels$) {\n return this.channels$[channel];\n }\n\n this.channels$[channel] = new Subject<any>();\n const subscription = this.connect().subscribe(connected => {\n this.subscriptions[channel] = this.addEngineSubscription(channel);\n setTimeout(() => {\n subscription.unsubscribe();\n });\n });\n\n return this.channels$[channel];\n }\n\n unsubscribe(channel): void {\n if (this.subscriptions[channel]) {\n this.subscriptions[channel].unsubscribe();\n delete this.subscriptions[channel];\n }\n if (this.channels$[channel]) {\n this.channels$[channel].complete();\n delete this.channels$[channel];\n }\n }\n\n connect(): Observable<boolean> {\n if (!this.initializeEngineSubject) {\n this.initializeEngineSubject = new ReplaySubject(1);\n\n this.httpClient.get<CentrifugoConfig>(`${this.configService.get('apiUrl')}/api/v1/centrifugo/`)\n .subscribe(config => {\n this.initializeEngine({\n url: this.configService.get('centrifugoUrl'),\n user: config.user,\n timestamp: config.timestamp,\n token: config.token,\n transports: ['websocket']\n });\n this.centrifuge.connect();\n this.centrifuge.on('connect', () => {\n this.initializeEngineSubject.next(true);\n this.connectedSubject.next(true);\n });\n this.centrifuge.on('disconnect', () => {\n this.connectedSubject.next(false);\n });\n });\n }\n\n return this.initializeEngineSubject;\n }\n\n publish(channel: string, message: any): Observable<any> {\n return new Observable<any>(observer => {\n this.connect().subscribe(() => {\n if (!this.subscriptions[channel]) {\n this.subscriptions[channel] = this.addEngineSubscription(channel);\n }\n this.subscriptions[channel].publish(message).then(res => {\n observer.next(res);\n observer.complete();\n }, error => {\n throw error;\n });\n });\n });\n }\n\n disconnect(): void {\n this.centrifuge.disconnect();\n this.initializeEngineSubject = undefined;\n this.channels$ = {};\n this.subscriptions = {};\n }\n\n private initializeEngine(config: {\n url: string,\n user: string,\n timestamp: string,\n token: string,\n transports: string[]\n }): void {\n this.centrifuge = new Centrifuge(config);\n }\n\n private addEngineSubscription(channel: string): Observable<any> {\n return this.centrifuge.subscribe(channel, this.resolveMessage.bind(this));\n }\n\n private resolveMessage(response: any): void {\n const channel = response.channel;\n if (!this.channels$[channel]) {\n return;\n }\n\n this.channels$[channel].next(response.data);\n }\n}\n","import { ModelInterface } from '../models/util';\n\nexport class StorageEngineField {\n defaultValue: any;\n\n constructor(defaultValue?: any, protected modelClass?: ModelInterface) {\n this.defaultValue = defaultValue;\n }\n\n toFront(value: any): any {\n if (this.modelClass) {\n return this.modelClass.toFront(value);\n }\n return value;\n }\n\n toBack(value: any): any {\n if (this.modelClass) {\n return this.modelClass.toBack(value);\n }\n return value;\n }\n}\n\nexport abstract class StorageEngine {\n constructor(protected name: string, protected fields: {[key: string]: StorageEngineField}) {\n }\n\n addField(key: string, field: StorageEngineField): void {\n this.fields[key] = field;\n }\n\n save(key: string, value: any): void {\n if (!this.fields[key]) {\n return;\n }\n this.setItem(`${this.name}_${key}`, this.fields[key].toBack(value));\n }\n\n get(key: string): any {\n if (!this.fields[key]) {\n return;\n }\n let value = this.getItem(`${this.name}_${key}`);\n if (value === null) {\n value = this.fields[key].defaultValue;\n }\n if (value === null || value === undefined) {\n return value;\n }\n return this.fields[key].toFront(value);\n }\n\n clear(): void {\n for (const field of Object.keys(this.fields)) {\n this.removeItem(field);\n }\n }\n\n protected getItem(key: string): any {\n throw new Error(`Function getItem for store engine ${typeof this} not implemented`);\n }\n\n protected setItem(key: string, value: any): any {\n throw new Error(`Function setItem for store engine ${typeof this} not implemented`);\n }\n\n protected removeItem(key: string): void {\n throw new Error(`Function deleteItem for store engine ${typeof this} not implemented`);\n }\n}\n","import { StorageEngine } from './storage-engine';\n\nexport class LocalStorageEngine extends StorageEngine {\n protected setItem(key: string, value: any) {\n localStorage.setItem(key, JSON.stringify(value));\n }\n\n protected getItem(key: string): any {\n try {\n return JSON.parse(localStorage.getItem(key));\n } catch (e) {\n return;\n }\n }\n\n protected removeItem(key: string): void {\n localStorage.removeItem(key);\n }\n}\n","export function getCookie(name: string): string {\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) {\n return parts.pop().split(';').shift();\n }\n return null;\n}\n","export interface LinkFavicon {\n rel: string;\n sizes?: string;\n href: string;\n type?: string;\n color?: string;\n}\n\nexport function getIconsData(folder: string): LinkFavicon[] {\n return [\n {rel: 'apple-touch-icon', sizes: '180x180', href: `/assets/favicon/${folder}apple-touch-icon.png`},\n {rel: 'icon', type: 'image/png', sizes: '32x32', href: `/assets/favicon/${folder}favicon-32x32.png`},\n {rel: 'icon', type: 'image/png', sizes: '16x16', href: `/assets/favicon/${folder}favicon-16x16.png`},\n {rel: 'shortcut icon', href: `/assets/favicon/${folder}favicon.ico`},\n {rel: 'manifest', href: `/assets/favicon/${folder}site.webmanifest`},\n {rel: 'mask-icon', href: `/assets/favicon/${folder}safari-pinned-tab.svg`, color: '#ff0000'}\n ];\n}\n\nexport function changeFavicons(document: Document, leagueAlias: string): void {\n let folder = '';\n if (leagueAlias === 'ablmoscow') {\n folder = 'abl/';\n }\n const data = getIconsData(folder);\n for (const item of data) {\n const link = document.createElement('link');\n for (const key of Object.keys(item)) {\n link.setAttribute(key, item[key]);\n }\n document.head.appendChild(link);\n }\n}\n","import { Inject, Injectable, Injector, PLATFORM_ID } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { getCookie } from './utils/cookie';\nimport { isPlatformBrowser } from '@angular/common';\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/football-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/football-game-config.ts","ng://@mtgame/core/utils/data.ts","ng://@mtgame/core/models/team-user.ts","ng://@mtgame/core/storage/store.ts","ng://@mtgame/core/services/base.service.ts","ng://@mtgame/core/services/config.service.ts","ng://@mtgame/core/models/tournament-group.ts","ng://@mtgame/core/models/tournament-team.ts","ng://@mtgame/core/models/basketball-game-log.ts","ng://@mtgame/core/models/tournament-disqualification.ts","ng://@mtgame/core/models/tournament-team-user.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/models/game-user.ts","ng://@mtgame/core/api/game-base-api.ts","ng://@mtgame/core/api/basketball-game-api.ts","ng://@mtgame/core/models/feedback.ts","ng://@mtgame/core/api/feedback-api.ts","ng://@mtgame/core/api/file-api.ts","ng://@mtgame/core/models/football-game-log.ts","ng://@mtgame/core/models/hockey-game-statistic.ts","ng://@mtgame/core/models/hockey-statistic.ts","ng://@mtgame/core/models/hockey-game-team-statistic.ts","ng://@mtgame/core/api/hockey-game-api.ts","ng://@mtgame/core/models/tournament-stage.ts","ng://@mtgame/core/models/football-game-statistic.ts","ng://@mtgame/core/models/football-statistic.ts","ng://@mtgame/core/models/football-game-team-statistic.ts","ng://@mtgame/core/api/football-game-api.ts","ng://@mtgame/core/models/tournament-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-news.ts","ng://@mtgame/core/models/volleyball-statistic.ts","ng://@mtgame/core/models/tournament-stage-team.ts","ng://@mtgame/core/models/tournament-event.ts","ng://@mtgame/core/models/league-user.ts","ng://@mtgame/core/api/tournament-api.ts","ng://@mtgame/core/models/league-banner.ts","ng://@mtgame/core/models/league-partner.ts","ng://@mtgame/core/models/poll.ts","ng://@mtgame/core/api/league-api.ts","ng://@mtgame/core/api/league-news-api.ts","ng://@mtgame/core/api/media-api.ts","ng://@mtgame/core/models/game-invite.ts","ng://@mtgame/core/models/team-invite.ts","ng://@mtgame/core/models/team-event-type.ts","ng://@mtgame/core/models/team-event-invite.ts","ng://@mtgame/core/localization/team-event-type.ts","ng://@mtgame/core/models/team-event.ts","ng://@mtgame/core/models/notification.ts","ng://@mtgame/core/models/tournament-team-user-invite.ts","ng://@mtgame/core/models/tournament-invite.ts","ng://@mtgame/core/models/notification-settings.ts","ng://@mtgame/core/models/team-permission.ts","ng://@mtgame/core/api/notification-base-api.ts","ng://@mtgame/core/api/notification-api.ts","ng://@mtgame/core/api/org-notification-api.ts","ng://@mtgame/core/api/reference-api.ts","ng://@mtgame/core/models/team-invite-external.ts","ng://@mtgame/core/models/user-permission.ts","ng://@mtgame/core/models/team-access.ts","ng://@mtgame/core/api/team-api.ts","ng://@mtgame/core/api/team-event-api.ts","ng://@mtgame/core/models/tournament-join-team.ts","ng://@mtgame/core/api/tournament-join-api.ts","ng://@mtgame/core/api/tournament-season-api.ts","ng://@mtgame/core/api/tournament-stage-api.ts","ng://@mtgame/core/models/user-access.ts","ng://@mtgame/core/models/volleyball-game-log.ts","ng://@mtgame/core/api/user-api.ts","ng://@mtgame/core/models/volleyball-game-team-statistic.ts","ng://@mtgame/core/models/volleyball-game-statistic.ts","ng://@mtgame/core/api/volleyball-game-api.ts","ng://@mtgame/core/api/public-team-api.ts","ng://@mtgame/core/api/public-user-api.ts","ng://@mtgame/core/localization/basketball-game-log-types.ts","ng://@mtgame/core/localization/hockey-game-log-types.ts","ng://@mtgame/core/localization/football-game-log-types.ts","ng://@mtgame/core/localization/overtime-types.ts","ng://@mtgame/core/localization/team-user-role.ts","ng://@mtgame/core/localization/user-profile.ts","ng://@mtgame/core/localization/volleyball-game-log-types.ts","ng://@mtgame/core/models/league-playlist.ts","ng://@mtgame/core/services/centrifugo.service.ts","ng://@mtgame/core/storage/storage-engine.ts","ng://@mtgame/core/storage/local-storage-engine.ts","ng://@mtgame/core/utils/cookie.ts","ng://@mtgame/core/utils/favicon.ts","ng://@mtgame/core/http-cookie.interceptor.ts","ng://@mtgame/core/utils/component-destroyed.ts","ng://@mtgame/core/utils/validators.ts","ng://@mtgame/core/utils/enum.ts","ng://@mtgame/core/utils/errors.ts","ng://@mtgame/core/utils/device.ts","ng://@mtgame/core/utils/form.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__values","o","m","__read","ar","error","__spread","concat","HockeyPenaltyTypes","id","code","title","BaseModel","data","_b","keys","_c","toFront","dto","toBack","enumField","enumClass","isNaN","penaltyTypeField","find","item","listField","modelClass","isArray","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","isFootball","football","isClassicFootball","classic_football","isMiniFootball","mini_football","sport","parent_id","sub_sports","UserProfile","user_id","height","weight","City","GameVolleyballPosition","VolleyballWorkHand","BasketballProfile","position","work_hand","workHand","GameHockeyPosition","HockeyWorkHand","VolleyballProfile","GameFootballPosition","FootballWorkFoot","HockeyProfile","UserGender","FootballProfile","work_foot","workFoot","TournamentSeasonStatuses","User","user","lastName","firstName","filter","join","substr","birthDate","diff","getTime","Math","floor","last_name","first_name","middle_name","email","phone","birth_date","photo","profile","basketball_profile","volleyball_profile","hockey_profile","football_profile","wizards","city","gender","is_active","basketballProfile","volleyballProfile","hockeyProfile","footballProfile","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","start_date","closed_date","previewImage","startDate","closedDate","VolleyballGameTypes","TournamentSettings","age_from","age_to","max_team_players","max_game_players","type","tours_count","periods_count","period_time","overtime_type","overtime_time","overtime_score","game_type","timeout_count","timeout_time","substitute_count","game_up_to_score","volleyball_score_in_set","volleyball_score_in_last_set","manage_team_application","recruitment_is_open","transfer_is_open","basketball_statistic_type","volleyball_statistic_type","shot_clock_enabled","game_time_type","with_result_table","basketballStatisticType","volleyballStatisticType","gameTimeType","overtimeType","TournamentTeamWinner","team_id","tournament_id","points","Tournament","location","price","regulation_files","settings","league","teams_count","team_winner","team_second","team_third","season","season_id","regulationFile","teamWinner","teamSecond","teamThird","BasketballGameConfig","overtime_timeout_count","statistic_type","statisticType","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","is_live","originalPhoto","listPhoto","detailPhoto","videoPreview","HockeyGameConfig","FootballGameConfig","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","football_game_config","score_by_period","playoff_stage","tournament_stage_id","tournament_playoff_id","tournament_court","media_count","media_live_count","media","resultType","basketballGameConfig","volleyballGameConfig","hockeyGameConfig","footballGameConfig","tournamentCourt","updateItemInArray","force","checkFunction","isFunction","updatedAt","updateItemsInArray","items","forEach","addItemInArray","atEnd","addItemsInArray","reverse","deleteItemFromArray","functionToCheck","toString","TeamUserRole","Store","get","getSubject","pipe","save","appendItem","appendItems","prependItem","prependItems","updateItem","updateItems","deleteItem","dispose","complete","clearStorageData","clear","getEngine","BehaviorSubject","BaseService","store","Injectable","providedIn","ConfigService","configData","initialize","_a","Optional","Inject","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","BasketballGameLogTypes","TeamUser","teamPlayer","role","number","TournamentDisqualification","tournament_team_user_id","date_from","date_to","matches_count","dateFrom","dateTo","TournamentTeamUser","middleName","tournament_team","team_user","disqualified","disqualification","has_changes","rating","tournamentTeam","teamUser","BasketballStatistic","personalFouls","technicalFouls","unsportsmanlikeFouls","tournament_team_user","month","win_lose","two_points_made","three_points_made","free_throws_made","one_points_made","two_point_attempts","three_point_attempts","free_throw_attempts","one_point_attempts","two_point_percent","three_point_percent","free_throw_percent","one_point_percent","assists","blocks","rebounds","offensive_rebounds","defensive_rebounds","steals","turnovers","personal_fouls","technical_fouls","unsportsmanlike_fouls","newbie","tournamentTeamUser","BaseStatistic","BasketballGameTeamStatistic","BasketballGameStatistic","gameUserId","game_user_id","updated_at","HockeyGameLogTypes","HockeyAdvantageTypes","BasketballGameLog","active","isPointsType","two_point_made","three_point_made","free_throw_made","one_point_made","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","GameUser","is_mvp","GameBaseApi","httpClient","configService","getUsers","gameId","toPromise","getMvp","HttpClient","BasketballGameApi","getById","getTeamStatistic","getUserStatistic","getLogs","downloadProtocol","fileType","responseType","downloadFibaProtocol","Feedback","theme","message","files","captcha","FeedbackApi","sendFeedback","post","response","sendLeagueFeedback","leagueId","FileApi","upload","fileData","filename","formData","FormData","append","createZipArchive","files_1","files_1_1","FootballGameLogTypes","HockeyGameLog","_penalizedGameUserId","isScoreType","goal","shootout_goal","isPenaltyType","minor_penalty","major_penalty","misconduct_penalty","game_misconduct_penalty","penalty_shot","match_penalty","isAfter","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","gameTime","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","lose_games_count","pp_shots","ev_shots","sh_shots","pp_goals_percent","ev_goals_percent","sh_goals_percent","goals","shot_misses","shots_on_goal","shots_blocked","shots","goals_percent","shots_against","saves_percent","face_offs","face_off_percent","HockeyGameTeamStatistic","HockeyGameApi","format","params","HttpParams","downloadApplication","TournamentStageStatuses","FootballGameLog","penalty_goal","small_penalty_goal","FootballGameStatistic","shotMisses","shotsOnGoal","shotsBlocked","penaltyGoals","smallPenaltyGoals","totalGoals","penaltyAttempts","smallPenaltyAttempts","penaltySaves","penaltyGoalsAgainst","smallPenaltySaves","smallPenaltyGoalsAgainst","penaltyShotsAgainst","smallPenaltyShotsAgainst","corners","free_kicks","penalty_goals","penalty_attempts","penalty_goals_against","penalty_saves","small_penalty_goals","small_penalty_attempts","small_penalty_goals_against","small_penalty_saves","fouls","yellow_cards","red_cards","perfect_passes","losses","outs","FootballStatistic","shots_on_goal_percent","total_goals","penalty_goals_percent","penalty_shots_against","penalty_saves_percent","small_penalty_goals_percent","small_penalty_shots_against","small_penalty_saves_percent","total_saves","total_goals_against","FootballGameTeamStatistic","FootballGameApi","TournamentNews","picture","text","author","created_at","createdAt","GameTimelineStageItem","stage_id","playoff_stages_count","GameTimelineStages","current_tour","current_playoff_stage","stages","PlayoffTypes","TournamentStage","generateArray","LeagueNewsType","PlayoffSettings","rounds","final_rounds","third_place_rounds","Playoff","teamsCount","getPlayoffStages","stagesCount","stage","playoffStage","pow","is_official","VolleyballStatistic","serve_hits","serve_faults","serve_aces","serve_percent","ace_percent","stuff_blocks","block_faults","block_rebounds","block_percent","attack_spikes","attack_faults","attack_shots","attack_percent","receives","receive_faults","excellent_receives","receive_percent","serve_receives","serve_receive_faults","excellent_serve_receives","serve_receive_percent","faults","TournamentStageTeam","received_points","TournamentEventTypes","LeagueNews","preview_text","detail_text","mobile_picture","is_main","tournaments","video_link","tag","mobilePicture","LeagueUserRoles","LeagueUserPermissions","TournamentEvent","news","event","LeagueUser","_role","permissions","TournamentApi","tournamentId","getByAlias","getNews","getEvents","page","filters","search","tournamentTour","observe","total","headers","getTournamentStages","getPlayoff","getPlayoffGames","playoffId","getGamesStages","getGames","applyGamesFilters","getTeams","getStageTeams","getTeamById","tournamentTeamId","getUserById","userId","getUserGames","tournamentUserId","getBasketballStatistic","per_game","tournament_ids","getVolleyballStatistic","getHockeyStatistic","getFootballStatistic","getTournamentTeamUsers","myPermission","getTournamentTeamTournaments","getTournamentUserTournaments","tournamentTeamUserId","tournamentIds","tournamentStageId","statuses","tournamentCourtId","BannerLocation","LeaguePartner","sort","PollStatuses","LeagueBanner","LeagueApi","getByDomain","domain","getTournaments","getTournamentSeasons","getSeasons","notClosed","getPartners","getBanners","getCourts","LeagueNewsApi","getLeagueNewsList","getMainLeagueNews","getMainLeagueNewsList","getNewsById","newsId","getTournamentNewsList","MediaApi","getMedia","mediaId","getTournamentGameMedia","getLeagueGameMedia","getLeagueMedia","mediaType","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","answers","multiple_answer","anonymous","TeamInvite","user_accept","team_accept","updateAt","TeamEventTypes","GameInvite","TeamEventInviteStatuses","TeamEventTypeLocalization","training","other","TeamEvent","eventType","eventCustomName","event_type","event_custom_name","NotificationType","NotificationServiceEnum","TeamEventInvite","team_event_id","team_user_id","TournamentTeamUserInvite","tournament_team_invite_id","accepted","TournamentInvite","teamAccept","organizationAccept","organization_accept","user_invites_count","user_invites","userInvites","NotificationAllowTypes","Notification","initiator","team_invite","poll","game_invite","team_event","team_event_invite","tournament_invite","viewed","protected","service","teamInvite","gameInvite","teamEvent","teamEventInvite","tournamentInvite","TeamPermissionTypes","NotificationSettings","popup","sound","browser","NotificationBaseApi","getCount","apiUrl","getList","markViewed","notificationId","markAllViewed","getNotificationSettings","updateNotificationSettings","NotificationApi","OrgNotificationApi","ReferenceApi","getCities","getSports","TeamInviteExternal","UserPermissionTypes","TeamPermission","players","statistic","polls","events","TeamAccess","can_edit","can_view_users","can_manage_permission","can_change_owner","can_delete","can_manage_invites","can_view_invites","can_manage_polls","can_view_polls","can_answer_poll","can_manage_games","can_view_games","can_view_statistic","can_promote_users","can_edit_users","can_delete_users","can_view_events","can_manage_events","can_view_tournaments","can_manage_tournaments","TeamApi","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","joinTeam","leaveTeam","createGame","getTeamEvents","createTeamEvent","getTournamentTeams","getTournamentInvites","getTournamentGames","acceptTournamentInvite","inviteId","declineTournamentInvite","registerLazyUser","userData","getLazyUser","updateLazyUser","deleteLazyUser","resendLazyUserEmail","TeamEventApi","getTeamEvent","teamEventId","updateTeamEvent","deleteTeamEvent","getTeamEventInvites","createTeamEventInvite","acceptTeamEventInvite","declineTeamEventInvite","TournamentJoinData","validUsersCount","invalidUsersCount","hasAccess","inviteSent","alreadyInTournament","valid_users_count","invalid_users_count","has_access","invite_sent","already_in_tournament","TournamentJoinTeam","join_data","joinData","TournamentJoinApi","getTeamsForJoin","getTeamUsers","joinTournament","invites","TournamentSeasonApi","seasonId","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","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","PublicTeamApi","PublicUserApi","getTournamentUser","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","FootballGameLogTypeLocalization","_a$3","penalty_attempt","small_penalty_attempt","corner","free_kick","penalty_save","small_penalty_save","foul","yellow_card","red_card","perfect_pass","loss","out","OvertimeTypeLocalization","_a$4","to_score_diff","to_score_total","without_overtime","to_first_goal","to_first_goal_and_bullitts","bullitts","penalties","time_and_penalties","TeamUserRoleLocalization","_a$5","member","moderator","admin","coach","head_coach","playing_coach","manager","head_manager","captain","assistant","GameBasketballPositionLocalization","_a$6","point_guard","shooting_guard","small_forward","power_forward","center","GameBasketballPositionShortLocalization","WorkHandLocalization","left","right","GameVolleyballPositionLocalization","_d","setter","libero","middle_player","receiver_attacker","dioganal","GameVolleyballPositionShortLocalization","_e","GameVolleyballPositionShortRuLocalization","_f","VolleyballWorkHandLocalization","_g","GameHockeyPositionLocalization","_h","goaltender","defensemen","forward","GameFootballPositionLocalization","_j","goalkeeper","midfielder","FootballWorkFootLocalization","_k","both","VolleyballGameLogTypeLocalization","_a$7","LeaguePlaylist","key_code","CentrifugoService","channels$","subscriptions","connectedSubject","listen","channel","Subject","subscription","connect","subscribe","connected","addEngineSubscription","setTimeout","unsubscribe","initializeEngineSubject","ReplaySubject","initializeEngine","url","timestamp","transports","centrifuge","on","publish","Observable","observer","res","disconnect","Centrifuge","resolveMessage","bind","StorageEngineField","defaultValue","StorageEngine","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 football = 10,\n classic_football = 11,\n mini_football = 12\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n parent_id: 'parentId',\n sub_sports: 'subSports'\n }\n})\nexport class Sport extends BaseModel {\n id: number;\n name: string;\n parentId: number;\n subSports: Sport[];\n\n isBasketball() {\n return this.id === SportTypes.basketball || this.parentId === SportTypes.basketball;\n }\n\n isClassicBasketball() {\n return this.id === SportTypes.classic_basketball;\n }\n\n isStreetball() {\n return this.id === SportTypes.streetball;\n }\n\n isVolleyball() {\n return this.id === SportTypes.volleyball || this.parentId === SportTypes.volleyball;\n }\n\n isClassicVolleyball() {\n return this.id === SportTypes.classic_volleyball;\n }\n\n isBeachVolleyball() {\n return this.id === SportTypes.beach_volleyball;\n }\n\n isHockey(): boolean {\n return this.id === SportTypes.hockey || this.parentId === SportTypes.hockey;\n }\n\n isIceHockey(): boolean {\n return this.id === SportTypes.ice_hockey;\n }\n\n isBallHockey(): boolean {\n return this.id === SportTypes.ball_hockey;\n }\n\n isFootball() {\n return this.id === SportTypes.football || this.parentId === SportTypes.football;\n }\n\n isClassicFootball() {\n return this.id === SportTypes.classic_football;\n }\n\n isMiniFootball() {\n return this.id === SportTypes.mini_football;\n }\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(sport: Sport): any {\n return null;\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameBasketballPosition {\n point_guard = 1,\n shooting_guard,\n small_forward,\n power_forward,\n center\n}\n\nexport enum WorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameBasketballPosition),\n workHand: enumField(WorkHand)\n }\n})\nexport class BasketballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameBasketballPosition;\n workHand: WorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n height: 'height',\n weight: 'weight'\n }\n})\nexport class UserProfile {\n id: number;\n userId: number;\n height: number;\n weight: number;\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name'\n }\n})\nexport class City extends BaseModel {\n id: number;\n name: string;\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameVolleyballPosition {\n setter = 1,\n libero,\n middle_player,\n receiver_attacker,\n dioganal\n}\n\nexport enum VolleyballWorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameVolleyballPosition),\n workHand: enumField(VolleyballWorkHand)\n }\n})\nexport class VolleyballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameVolleyballPosition;\n workHand: VolleyballWorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameHockeyPosition {\n defensemen = 1,\n forward,\n goaltender\n}\n\nexport enum HockeyWorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameHockeyPosition),\n workHand: enumField(HockeyWorkHand)\n }\n})\nexport class HockeyProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameHockeyPosition;\n workHand: HockeyWorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameFootballPosition {\n defensemen = 1,\n midfielder,\n forward,\n goalkeeper\n}\n\nexport enum FootballWorkFoot {\n left = 1,\n right,\n both\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_foot: 'workFoot'\n },\n relation: {\n position: enumField(GameFootballPosition),\n workFoot: enumField(FootballWorkFoot)\n }\n})\nexport class FootballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameFootballPosition;\n workFoot: FootballWorkFoot;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, DateField, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { UserProfile } from './user-profile';\nimport { File } from './file';\nimport { City } from './city';\nimport { BasketballProfile } from './basketball-profile';\nimport { VolleyballProfile } from './volleyball-profile';\nimport { HockeyProfile } from './hockey-profile';\nimport { FootballProfile } from './football-profile';\n\nexport enum UserGender {\n male = 1,\n female\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n last_name: 'lastName',\n first_name: 'firstName',\n middle_name: 'middleName',\n email: 'email',\n phone: 'phone',\n birth_date: 'birthDate',\n photo: 'photo',\n profile: 'profile',\n basketball_profile: 'basketballProfile',\n volleyball_profile: 'volleyballProfile',\n hockey_profile: 'hockeyProfile',\n football_profile: 'footballProfile',\n wizards: 'wizards',\n city: 'city',\n gender: 'gender',\n is_active: 'isActive',\n },\n relation: {\n birthDate: DateField,\n photo: File,\n profile: UserProfile,\n basketballProfile: BasketballProfile,\n volleyballProfile: VolleyballProfile,\n hockeyProfile: HockeyProfile,\n footballProfile: FootballProfile,\n city: City,\n gender: enumField(UserGender)\n }\n})\nexport class User extends BaseModel {\n id: number;\n lastName: string;\n firstName: string;\n middleName: string;\n email: string;\n phone: string;\n birthDate: Date;\n profile: UserProfile;\n basketballProfile: BasketballProfile;\n volleyballProfile: VolleyballProfile;\n hockeyProfile: HockeyProfile;\n footballProfile: FootballProfile;\n photo: File;\n wizards: string[];\n city: City;\n gender: UserGender;\n isActive: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(user: User): any {\n return null;\n }\n\n get fullName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get shortName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get initials(): string {\n return [this.lastName, this.firstName].filter(s => s).map(s => s.substr(0, 1)).join('');\n }\n\n get age(): number {\n if (!this.birthDate) {\n return null;\n }\n const diff = (new Date()).getTime() - this.birthDate.getTime();\n return Math.floor(diff / (365 * 86400 * 1000));\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, enumField, DateField } from './util';\nimport { File } from './file';\n\nexport enum TournamentSeasonStatuses {\n open,\n in_progress,\n closed,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n alias: 'alias',\n logo: 'logo',\n cover: 'cover',\n preview_image: 'previewImage',\n status: 'status',\n start_date: 'startDate',\n closed_date: 'closedDate',\n },\n relation: {\n logo: File,\n cover: File,\n previewImage: File,\n status: enumField(TournamentSeasonStatuses),\n startDate: DateField,\n closedDate: DateField,\n }\n})\nexport class TournamentSeason extends BaseModel {\n id: number;\n name: string;\n alias: string;\n logo: File;\n cover: File;\n previewImage: File;\n status: TournamentSeasonStatuses;\n startDate: Date;\n closedDate: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateField } from './util';\nimport { File } from './file';\nimport { Sport } from './sport';\nimport { User } from './user';\nimport { City } from './city';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n sport: 'sport',\n logo: 'logo',\n owner: 'owner',\n city: 'city',\n users_count: 'usersCount',\n won_games_count: 'wonGamesCount',\n games_count: 'gamesCount',\n score_sum: 'scoreSum',\n closest_game_datetime: 'closestGameDatetime',\n },\n relation: {\n sport: Sport,\n logo: File,\n owner: User,\n city: City,\n closestGameDatetime: DateField,\n }\n})\nexport class Team extends BaseModel {\n id: number;\n name: string;\n sport: Sport;\n logo: File;\n owner: User;\n city: City;\n usersCount: number;\n wonGamesCount: number;\n gamesCount: number;\n scoreSum: number;\n closestGameDatetime: Date;\n\n getEmptyLogoClass(): string {\n const classList = ['empty-logo'];\n if (this.sport.isBasketball()) {\n classList.push('empty-logo-basketball');\n }\n if (this.sport.isVolleyball()) {\n classList.push('empty-logo-volleyball');\n }\n if (this.sport.isHockey()) {\n classList.push('empty-logo-hockey');\n }\n if (this.sport.isFootball()) {\n classList.push('empty-logo-football');\n }\n 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 penalties,\n time_and_penalties\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n gender: 'gender',\n age_from: 'ageFrom',\n age_to: 'ageTo',\n max_team_players: 'maxTeamPlayers',\n max_game_players: 'maxGamePlayers',\n type: 'type',\n tours_count: 'toursCount',\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n overtime_score: 'overtimeScore',\n game_type: 'gameType',\n timeout_count: 'timeoutCount',\n timeout_time: 'timeoutTime',\n substitute_count: 'substituteCount',\n game_up_to_score: 'gameUpToScore',\n volleyball_score_in_set: 'volleyballScoreInSet',\n volleyball_score_in_last_set: 'volleyballScoreInLastSet',\n manage_team_application: 'manageTeamApplication',\n recruitment_is_open: 'recruitmentIsOpen',\n transfer_is_open: 'transferIsOpen',\n basketball_statistic_type: 'basketballStatisticType',\n volleyball_statistic_type: 'volleyballStatisticType',\n shot_clock_enabled: 'shotClockEnabled',\n game_time_type: 'gameTimeType',\n with_result_table: 'withResultTable'\n },\n relation: {\n type: enumField(TournamentTypes),\n gender: enumField(TournamentGender),\n basketballStatisticType: enumField(BasketballStatisticTypes),\n volleyballStatisticType: enumField(VolleyballStatisticTypes),\n gameTimeType: enumField(GameTimeTypes),\n overtimeType: enumField(OvertimeTypes),\n }\n})\nexport class TournamentSettings extends BaseModel {\n id: number;\n gender: TournamentGender;\n ageFrom: number;\n ageTo: number;\n maxTeamPlayers: number;\n maxGamePlayers: number;\n type: TournamentTypes;\n toursCount: number;\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n overtimeScore: number;\n gameType: string;\n timeoutCount: number;\n timeoutTime: number;\n substituteCount: number;\n gameUpToScore: number;\n volleyballScoreInSet: number;\n volleyballScoreInLastSet: number;\n manageTeamApplication: boolean;\n recruitmentIsOpen: boolean;\n transferIsOpen: boolean;\n basketballStatisticType: BasketballStatisticTypes;\n volleyballStatisticType: VolleyballStatisticTypes;\n shotClockEnabled: boolean;\n gameTimeType: GameTimeTypes;\n withResultTable: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n tournament_id: 'tournamentId',\n team: 'team',\n points: 'points',\n },\n relation: {\n team: Team,\n }\n})\nexport class TournamentTeamWinner extends BaseModel {\n id: number;\n teamId: number;\n tournamentId: number;\n team: Team;\n points: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n alias: 'alias',\n logo: 'logo',\n cover: 'cover',\n preview_image: 'previewImage',\n city: 'city',\n sport: 'sport',\n location: 'location',\n description: 'description',\n date: 'date',\n price: 'price',\n regulation_files: 'regulationFiles',\n settings: 'settings',\n league: 'league',\n teams_count: 'teamsCount',\n closest_game_datetime: 'closestGameDatetime',\n status: 'status',\n team_winner: 'teamWinner',\n team_second: 'teamSecond',\n team_third: 'teamThird',\n season: 'season',\n season_id: 'seasonId',\n },\n relation: {\n logo: File,\n cover: File,\n previewImage: File,\n city: City,\n sport: Sport,\n regulationFile: File,\n settings: TournamentSettings,\n date: DateTimeField,\n league: League,\n status: enumField(TournamentStatuses),\n teamWinner: TournamentTeamWinner,\n teamSecond: TournamentTeamWinner,\n teamThird: TournamentTeamWinner,\n season: TournamentSeason,\n }\n})\nexport class Tournament extends BaseModel {\n id: number;\n name: string;\n alias: string;\n logo: File;\n cover: File;\n previewImage: File;\n city: City;\n sport: Sport;\n location: string;\n description: string;\n date: Date;\n price: number;\n regulationFiles: File[];\n settings: TournamentSettings;\n league: League;\n teamsCount: number;\n closestGameDatetime: string;\n status: TournamentStatuses;\n teamWinner: TournamentTeamWinner;\n teamSecond: TournamentTeamWinner;\n teamThird: TournamentTeamWinner;\n season: TournamentSeason;\n seasonId: number;\n\n getEmptyLogoClass(): string {\n const classList = ['empty-logo'];\n if (this.sport.isBasketball()) {\n classList.push('empty-logo-basketball');\n }\n if (this.sport.isVolleyball()) {\n classList.push('empty-logo-volleyball');\n }\n if (this.sport.isHockey()) {\n classList.push('empty-logo-hockey');\n }\n if (this.sport.isFootball()) {\n classList.push('empty-logo-football');\n }\n return classList.join(' ');\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { VolleyballStatisticTypes } from './tournament';\n\nexport enum VolleyballGameTypes {\n best_of_five = 1,\n best_of_three\n}\n\n@ModelInstance({\n mappingFields: {\n game_type: 'gameType',\n timeout_count: 'timeoutCount',\n timeout_time: 'timeoutTime',\n substitute_count: 'substituteCount',\n score_in_set: 'scoreInSet',\n score_in_last_set: 'scoreInLastSet',\n statistic_type: 'statisticType'\n },\n relation: {\n gameType: enumField(VolleyballGameTypes),\n statisticType: enumField(VolleyballStatisticTypes),\n }\n})\nexport class VolleyballGameConfig extends BaseModel {\n gameType: VolleyballGameTypes;\n timeoutCount: number;\n timeoutTime: number;\n substituteCount: number;\n scoreInSet: number;\n scoreInLastSet: number;\n statisticType: VolleyballStatisticTypes;\n\n get setsCount(): number {\n return this.gameType === VolleyballGameTypes.best_of_three ? 3 : 5;\n }\n\n getSetMaxScore(set: number) {\n return set === this.setsCount ? this.scoreInLastSet : this.scoreInSet;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { BasketballStatisticTypes, GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n game_up_to_score: 'gameUpToScore',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n overtime_score: 'overtimeScore',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n statistic_type: 'statisticType',\n shot_clock_enabled: 'shotClockEnabled',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n statisticType: enumField(BasketballStatisticTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class BasketballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n gameUpToScore: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n overtimeScore: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n statisticType: BasketballStatisticTypes;\n shotClockEnabled: boolean;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField, listField } from './util';\nimport { Team } from './team';\nimport { BasketballGameConfig } from './basketball-game-config';\nimport { VolleyballGameConfig } from './volleyball-game-config';\nimport { LeagueCourt } from './league-court';\nimport { MediaItem } from './media-item';\nimport { HockeyGameConfig } from './hockey-game-config';\nimport { Tournament } from './tournament';\nimport { FootballGameConfig } from './football-game-config';\n\nexport enum GameStatuses {\n open = 1,\n in_progress,\n closed,\n archived,\n draft\n}\n\nexport enum GameResultTypes {\n team_won = 1,\n competitor_team_won,\n team_technical_defeat,\n competitor_team_technical_defeat\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n status: 'status',\n team: 'team',\n tournament_team_id: 'tournamentTeamId',\n team_id: 'teamId',\n competitor_team: 'competitorTeam',\n competitor_tournament_team_id: 'competitorTournamentTeamId',\n competitor_team_id: 'competitorTeamId',\n competitor_team_name: 'competitorTeamName',\n datetime: 'datetime',\n location: 'location',\n team_score: 'teamScore',\n competitor_team_score: 'competitorTeamScore',\n result_type: 'resultType',\n playoff_number: 'playoffNumber',\n tournament_id: 'tournamentId',\n tournament_tour: 'tournamentTour',\n basketball_game_config: 'basketballGameConfig',\n volleyball_game_config: 'volleyballGameConfig',\n hockey_game_config: 'hockeyGameConfig',\n football_game_config: 'footballGameConfig',\n 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_live_count: 'mediaLiveCount',\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 footballGameConfig: FootballGameConfig,\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 footballGameConfig: FootballGameConfig;\n scoreByPeriod: any;\n playoffStage: string;\n tournamentStageId: number;\n tournamentPlayoffId: number;\n tournamentCourt: LeagueCourt;\n mediaCount: number;\n mediaLiveCount: 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 is_live: 'isLive',\n },\n relation: {\n originalPhoto: File,\n listPhoto: File,\n detailPhoto: File,\n videoPreview: File\n }\n})\nexport class MediaItem extends BaseModel {\n id: number;\n originalPhoto: File;\n listPhoto: File;\n detailPhoto: File;\n gameId: number;\n tournamentId: number;\n videoUrl: string;\n videoPreview: File;\n isLive: boolean;\n\n get isVideo(): boolean {\n return Boolean(this.videoUrl);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class HockeyGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class FootballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","export function updateItemInArray(data: any[], item: any, force = false, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return data;\n }\n return data.map(v => {\n if (checkFunction && isFunction(checkFunction)) {\n if (!checkFunction(v)) {\n return v;\n }\n } else if (v.id !== item.id) {\n return v;\n }\n if (v.updatedAt && item.updatedAt && !force) {\n return v.updatedAt > item.updatedAt ? v : item;\n }\n return item;\n });\n}\n\nexport function updateItemsInArray(data: any[], items: any[], force: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n items.forEach(item => {\n data = updateItemInArray(data, item, force, checkFunction);\n });\n return data;\n}\n\nexport function patchItemInArray(data: any[], item: any, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return data;\n }\n return data.map(v => {\n if (checkFunction && isFunction(checkFunction)) {\n if (!checkFunction(v)) {\n return v;\n }\n } else if (v.id !== item.id) {\n return v;\n }\n return Object.assign(v, item);\n });\n}\n\nexport function addItemInArray(data: any[], item: any, atEnd: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return [item];\n }\n if (data.find(i => isFunction(checkFunction) ? checkFunction(i) : i.id === item.id)) {\n return data;\n }\n\n return atEnd\n ? [...data, item]\n : [item, ...data];\n}\n\nexport function addItemsInArray(data: any[], items: any[], atEnd: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n (!atEnd\n ? Object.assign([], items).reverse()\n : items\n ).forEach(item => {\n data = addItemInArray(data, item, atEnd, checkFunction);\n });\n return data;\n}\n\nexport function deleteItemFromArray(data: any[], item: any): any[] {\n if (!Array.isArray(data)) {\n return [];\n }\n if (isFunction(item)) {\n return data.filter(i => !item(i));\n } else {\n return data.filter(v => v.id !== item.id);\n }\n}\n\nfunction isFunction(functionToCheck) {\n return functionToCheck && {}.toString.call(functionToCheck) === '[object Function]';\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { User } from './user';\nimport { Team } from './team';\n\nexport enum TeamUserRole {\n member = 1,\n moderator,\n admin,\n coach,\n head_coach,\n playing_coach,\n manager,\n head_manager,\n captain,\n assistant,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n user: 'user',\n role: 'role',\n number: 'number',\n team: 'team',\n },\n relation: {\n user: User,\n team: Team,\n role: enumField(TeamUserRole)\n }\n})\nexport class TeamUser extends BaseModel {\n id: number;\n teamId: number;\n user: User;\n team: Team;\n number: number;\n role: TeamUserRole;\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(teamPlayer: TeamUser): any {\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { addItemInArray, addItemsInArray, deleteItemFromArray, updateItemInArray, updateItemsInArray } from '../utils/data';\nimport { StorageEngine } from './storage-engine';\n\nexport class Store {\n private data: {[key: string]: BehaviorSubject<any>} = {};\n\n constructor(private engine?: StorageEngine) {\n }\n\n get(key: string): Observable<any> {\n return this.getSubject(key).pipe(filter(item => item !== undefined));\n }\n\n value(key: string): any {\n return this.getSubject(key).value;\n }\n\n save(key: string, value: any): void {\n this.getSubject(key).next(value);\n if (this.engine) {\n this.engine.save(key, value);\n }\n }\n\n appendItem(key: string, value: any, checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemInArray(this.value(key) || [], value, true, checkFunction));\n }\n\n appendItems(key: string, value: any[], checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemsInArray(this.value(key) || [], value, true));\n }\n\n prependItem(key: string, value: any, checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemInArray(this.value(key) || [], value, false, checkFunction));\n }\n\n prependItems(key: string, value: any[], checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemsInArray(this.value(key) || [], value, false, checkFunction));\n }\n\n updateItem(key: string, value: any, force?: boolean, checkFunction?: (item: any) => boolean): void {\n this.save(key, updateItemInArray(this.value(key) || [], value, force, checkFunction));\n }\n\n updateItems(key: string, value: any, force?: boolean, checkFunction?: (item: any) => boolean): void {\n this.save(key, updateItemsInArray(this.value(key) || [], value, force, checkFunction));\n }\n\n deleteItem(key: string, value: any): void {\n this.save(key, deleteItemFromArray(this.value(key) || [], value));\n }\n\n dispose(): void {\n for (const key of Object.keys(this.data)) {\n this.data[key].complete();\n delete this.data[key];\n }\n }\n\n clearStorageData(): void {\n if (this.engine) {\n this.engine.clear();\n }\n }\n\n getEngine(): StorageEngine {\n return this.engine;\n }\n\n private getSubject(key: string): BehaviorSubject<any> {\n if (!this.data[key]) {\n this.data[key] = new BehaviorSubject<any>(this.engine ? this.engine.get(key) : undefined);\n }\n return this.data[key];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '../storage/store';\n\n@Injectable({providedIn: 'root'})\nexport class BaseService {\n protected store = new Store();\n\n dispose(): void {\n this.store.dispose();\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { BaseService } from './base.service';\n\nconst CONFIG_STORE_KEY = 'config';\n\nexport const CONFIG_DATA = 'mtg-core-config-data';\n\n@Injectable({providedIn: 'root'})\nexport class ConfigService extends BaseService {\n constructor(\n @Optional() @Inject(CONFIG_DATA) private configData: any\n ) {\n super();\n if (configData) {\n this.initialize(configData);\n }\n }\n\n get config$() {\n return this.store.get(CONFIG_STORE_KEY);\n }\n\n get config() {\n return this.store.value(CONFIG_STORE_KEY) || {};\n }\n\n initialize(data: any): void {\n this.store.save(CONFIG_STORE_KEY, data);\n }\n\n set(key: string, value: any): void {\n this.store.save(CONFIG_STORE_KEY, {\n ...this.config,\n [key]: value\n });\n }\n\n get(key: string): any {\n return this.store.value(CONFIG_STORE_KEY) && this.store.value(CONFIG_STORE_KEY)[key];\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { 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 { 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 { 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 rating: 'rating'\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 rating: number;\n\n get fullName(): string {\n return [this.lastName, this.firstName, this.middleName].filter(s => s).join(' ');\n }\n\n get shortName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get initials(): string {\n return [this.lastName, this.firstName].filter(s => s).map(s => s.substr(0, 1)).join('');\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\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 { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { TeamUser } from './team-user';\nimport { TournamentTeamUser } from './tournament-team-user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n game_id: 'gameId',\n team_user: 'teamUser',\n tournament_team_user: 'tournamentTeamUser',\n is_mvp: 'isMvp',\n updated_at: 'updatedAt'\n },\n relation: {\n teamUser: TeamUser,\n tournamentTeamUser: TournamentTeamUser,\n updatedAt: DateTimeField,\n }\n})\nexport class GameUser extends BaseModel {\n id: number;\n gameId: number;\n teamUser: TeamUser;\n tournamentTeamUser: TournamentTeamUser;\n isMvp: boolean;\n updatedAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { GameUser } from '../models/game-user';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService,\n ) {\n }\n\n async getUsers(gameId: number): Promise<GameUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/users/`).pipe(\n map(result => GameUser.toFront(result))\n ).toPromise();\n }\n\n async getMvp(gameId: number): Promise<GameUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/mvp/`).pipe(\n map(result => GameUser.toFront(result))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { BasketballGameTeamStatistic } from '../models/basketball-game-team-statistic';\nimport { BasketballGameStatistic } from '../models/basketball-game-statistic';\nimport { BasketballGameLog } from '../models/basketball-game-log';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class BasketballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<BasketballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/team_statistic/`).pipe(\n map(result => BasketballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<BasketballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/user_statistic/`).pipe(\n map(result => BasketballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<BasketballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/logs/`).pipe(\n map(result => BasketballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, fileType: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/game_protocol/?file_type=${fileType}`,\n {responseType: 'blob'}\n )\n .toPromise();\n }\n\n async downloadFibaProtocol(gameId: number, fileType: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/game_protocol_fiba/?file_type=${fileType}`,\n {responseType: 'blob'}\n )\n .toPromise();\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n theme: 'theme',\n message: 'message',\n files: 'files',\n email: 'email',\n captcha: 'captcha',\n },\n relation: {\n files: File\n }\n})\nexport class Feedback {\n id: number;\n theme: string;\n message: string;\n email: string;\n captcha: string;\n files: File[];\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(value: any): any {\n return null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Feedback } from '../models/feedback';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class FeedbackApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async sendFeedback(data: any): Promise<Feedback> {\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/feedback/`, Feedback.toBack(data))\n .pipe(map(response => Feedback.toFront(response)))\n .toPromise();\n }\n\n async sendLeagueFeedback(leagueId: number, data: any): Promise<Feedback> {\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/feedback/`, Feedback.toBack(data))\n .pipe(map(response => Feedback.toFront(response)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } 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 { enumField, ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateTimeField, penaltyTypeField } from './util';\nimport { GameUser } from './game-user';\nimport { GameLogBase } from './game-log-base';\n\nexport enum FootballGameLogTypes {\n enter_game = 1,\n exit_game,\n shot_miss,\n shot_on_goal,\n shot_blocked,\n goal,\n penalty_attempt,\n penalty_goal,\n penalty_save,\n small_penalty_attempt,\n small_penalty_goal,\n small_penalty_save,\n assist,\n block_shot,\n corner,\n free_kick,\n foul,\n save,\n yellow_card,\n red_card,\n perfect_pass,\n loss,\n steal,\n out,\n timeout,\n}\n\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n is_goalie: 'isGoalie',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(FootballGameLogTypes)\n }\n})\nexport class FootballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: FootballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n isGoalie: boolean;\n\n compare(model: FootballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n isScoreType(): boolean {\n return [FootballGameLogTypes.goal, FootballGameLogTypes.penalty_goal, FootballGameLogTypes.small_penalty_goal].indexOf(this.logType) > -1;\n }\n\n isAfter(log: FootballGameLog): boolean {\n if (this.time === log.time && this.period === log.period) {\n return this.id > log.id;\n }\n if (this.period === log.period) {\n return this.time > log.time;\n }\n return this.period > log.period;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n updated_at: 'updatedAt',\n points: 'points',\n pp_shot_misses: 'ppShotMisses',\n pp_shots_on_goal: 'ppShotsOnGoal',\n pp_shots_blocked: 'ppShotsBlocked',\n ev_shot_misses: 'evShotMisses',\n ev_shots_on_goal: 'evShotsOnGoal',\n ev_shots_blocked: 'evShotsBlocked',\n sh_shot_misses: 'shShotMisses',\n sh_shots_on_goal: 'shShotsOnGoal',\n sh_shots_blocked: 'shShotsBlocked',\n pp_goals: 'ppGoals',\n ev_goals: 'evGoals',\n sh_goals: 'shGoals',\n pp_assists: 'ppAssists',\n ev_assists: 'evAssists',\n sh_assists: 'shAssists',\n shootout_attempts: 'shootoutAttempts',\n shootout_goals: 'shootoutGoals',\n block_shots: 'blockShots',\n face_off_losses: 'faceOffLosses',\n face_off_wins: 'faceOffWins',\n saves: 'saves',\n goals_against: 'goalsAgainst',\n safety_rate: 'safetyRate',\n penalty_minutes: 'penaltyMinutes',\n game_time: 'gameTime',\n plus_minus: 'plusMinus'\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class HockeyGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n ppShotMisses: number;\n ppShotsOnGoal: number;\n ppShotsBlocked: number;\n evShotMisses: number;\n evShotsOnGoal: number;\n evShotsBlocked: number;\n shShotMisses: number;\n shShotsOnGoal: number;\n shShotsBlocked: number;\n ppGoals: number;\n evGoals: number;\n shGoals: number;\n ppAssists: number;\n evAssists: number;\n shAssists: number;\n shootoutAttempts: number;\n shootoutGoals: number;\n blockShots: number;\n faceOffLosses: number;\n faceOffWins: number;\n saves: number;\n goalsAgainst: number;\n safetyRate: number;\n penaltyMinutes: number;\n gameTime: number;\n plusMinus: number;\n updatedAt: Date;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get shotsOnGoal(): number {\n return (this.evShotsOnGoal || 0) + (this.ppShotsOnGoal || 0) + (this.shShotsOnGoal || 0);\n }\n\n get shotsBlocked(): number {\n return (this.evShotsBlocked || 0) + (this.ppShotsBlocked || 0) + (this.shShotsBlocked || 0);\n }\n\n get shotMisses(): number {\n return (this.evShotMisses || 0) + (this.ppShotMisses || 0) + (this.shShotMisses || 0);\n }\n\n get ppShots(): number {\n return (this.ppShotMisses || 0) + (this.ppShotsOnGoal || 0) + (this.ppShotsBlocked || 0);\n }\n\n get evShots(): number {\n return (this.evShotMisses || 0) + (this.evShotsOnGoal || 0) + (this.evShotsBlocked || 0);\n }\n\n get shShots(): number {\n return (this.shShotMisses || 0) + (this.shShotsOnGoal || 0) + (this.shShotsBlocked || 0);\n }\n\n get shots(): number {\n return this.ppShots + this.evShots + this.shShots;\n }\n\n get goals(): number {\n return (this.ppGoals || 0) + (this.shGoals || 0) + (this.evGoals || 0);\n }\n\n get assists(): number {\n return (this.ppAssists || 0) + (this.evAssists || 0) + (this.shAssists || 0);\n }\n\n get faceOffs(): number {\n return (this.faceOffWins || 0) + (this.faceOffLosses || 0);\n }\n\n get shootOuts(): number {\n return (this.shootoutAttempts || 0) + (this.shootoutGoals || 0);\n }\n\n get shotsAgainst(): number {\n return (this.saves || 0) + (this.goalsAgainst || 0);\n }\n\n get savesPercent(): number {\n if (!this.shotsAgainst || !this.saves) {\n return 0;\n }\n return Math.round(1000 * this.saves / this.shotsAgainst) / 10;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n lose_games_count: 'loseGamesCount',\n points: 'points',\n pp_shots: 'ppShots',\n pp_shot_misses: 'ppShotMisses',\n pp_shots_on_goal: 'ppShotsOnGoal',\n pp_shots_blocked: 'ppShotsBlocked',\n ev_shots: 'evShots',\n ev_shot_misses: 'evShotMisses',\n ev_shots_on_goal: 'evShotsOnGoal',\n ev_shots_blocked: 'evShotsBlocked',\n sh_shots: 'shShots',\n sh_shot_misses: 'shShotMisses',\n sh_shots_on_goal: 'shShotsOnGoal',\n sh_shots_blocked: 'shShotsBlocked',\n pp_goals_percent: 'ppGoalsPercent',\n pp_goals: 'ppGoals',\n ev_goals_percent: 'evGoalsPercent',\n ev_goals: 'evGoals',\n sh_goals_percent: 'shGoalsPercent',\n goals: 'goals',\n sh_goals: 'shGoals',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n shots: 'shots',\n goals_percent: 'goalsPercent',\n shots_against: 'shotsAgainst',\n saves_percent: 'savesPercent',\n pp_assists: 'ppAssists',\n ev_assists: 'evAssists',\n sh_assists: 'shAssists',\n shootout_attempts: 'shootoutAttempts',\n shootout_goals: 'shootoutGoals',\n block_shots: 'blockShots',\n face_off_losses: 'faceOffLosses',\n face_off_wins: 'faceOffWins',\n face_offs: 'faceOffs',\n face_off_percent: 'faceOffPercent',\n saves: 'saves',\n goals_against: 'goalsAgainst',\n safety_rate: 'safetyRate',\n penalty_minutes: 'penaltyMinutes',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n newbie: 'newbie',\n },\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 loseGamesCount: number;\n points: number;\n ppShots: number;\n ppShotMisses: number;\n ppShotsOnGoal: number;\n ppShotsBlocked: number;\n evShots: number;\n evShotMisses: number;\n evShotsOnGoal: number;\n evShotsBlocked: number;\n shShots: number;\n shShotMisses: number;\n shShotsOnGoal: number;\n shShotsBlocked: number;\n ppGoalsPercent: number;\n ppGoals: number;\n evGoalsPercent: number;\n evGoals: number;\n shGoalsPercent: number;\n shGoals: number;\n goals: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n shots: number;\n goalsPercent: number;\n ppAssists: number;\n evAssists: number;\n shAssists: number;\n shootoutAttempts: number;\n shootoutGoals: number;\n blockShots: number;\n faceOffLosses: number;\n faceOffWins: number;\n faceOffs: number;\n faceOffPercent: number;\n savesPercent: number;\n saves: number;\n shotsAgainst: number;\n goalsAgainst: number;\n safetyRate: number;\n penaltyMinutes: number;\n gameTime: number;\n plusMinus: number;\n newbie: boolean;\n\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 get gamesWonPercent(): number {\n if (!this.gamesCount) {\n return 0;\n }\n return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { HockeyStatistic } from './hockey-statistic';\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 { ConfigService } from '../services/config.service';\nimport { HockeyGameLog } from '../models/hockey-game-log';\nimport { HockeyGameStatistic } from '../models/hockey-game-statistic';\nimport { HockeyGameTeamStatistic } from '../models/hockey-game-team-statistic';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class HockeyGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<HockeyGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/team_statistic/`).pipe(\n map(result => HockeyGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<HockeyGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/user_statistic/`).pipe(\n map(result => HockeyGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<HockeyGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/logs/`).pipe(\n map(result => HockeyGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadApplication(gameId: number, format: 'pdf' | 'xlsx' | 'html', type: 'game_user'|'tournament_user'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/game_application_file/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, 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, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n updated_at: 'updatedAt',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n goals: 'goals',\n assists: 'assists',\n corners: 'corners',\n free_kicks: 'freeKicks',\n penalty_goals: 'penaltyGoals',\n penalty_attempts: 'penaltyAttempts',\n penalty_goals_against: 'penaltyGoalsAgainst',\n penalty_saves: 'penaltySaves',\n small_penalty_goals: 'smallPenaltyGoals',\n small_penalty_attempts: 'smallPenaltyAttempts',\n small_penalty_goals_against: 'smallPenaltyGoalsAgainst',\n small_penalty_saves: 'smallPenaltySaves',\n saves: 'saves',\n goals_against: 'goalsAgainst',\n safety_rate: 'safetyRate',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n fouls: 'fouls',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n perfect_passes: 'perfectPasses',\n losses: 'losses',\n steals: 'steals',\n outs: 'outs',\n block_shots: 'blockShots'\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class FootballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n goals: number;\n assists: number;\n blockShots: number;\n corners: number;\n freeKicks: number;\n penaltyGoals: number;\n penaltyAttempts: number;\n penaltyGoalsAgainst: number;\n penaltySaves: number;\n smallPenaltyGoals: number;\n smallPenaltyAttempts: number;\n smallPenaltyGoalsAgainst: number;\n smallPenaltySaves: number;\n saves: number;\n goalsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n perfectPasses: number;\n losses: number;\n steals: number;\n outs: number;\n gameTime: number;\n plusMinus: number;\n updatedAt: Date;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get shots(): number {\n return (this.shotMisses || 0) + (this.shotsOnGoal || 0) + (this.shotsBlocked || 0);\n }\n\n\n get totalGoals(): number {\n return (this.goals || 0) + (this.penaltyGoals || 0) + (this.smallPenaltyGoals || 0);\n }\n\n get goalsPercent(): number {\n if (!this.shots || !this.totalGoals) {\n return 0;\n }\n return Math.round(1000 * this.totalGoals / this.shots) / 10;\n }\n\n get shotsOnGoalPercent(): number {\n if (!this.shotsOnGoal || !this.shots) {\n return 0;\n }\n return Math.round(1000 * this.shotsOnGoal / this.shots) / 10;\n }\n\n get penalties(): number {\n return (this.penaltyGoals || 0) + (this.penaltyAttempts || 0);\n }\n\n get penaltyGoalsPercent(): number {\n if (!this.penaltyAttempts || !this.penaltyGoals) {\n return 0;\n }\n return Math.round(1000 * this.penaltyGoals / this.penaltyAttempts) / 10;\n }\n\n get smallPenalties(): number {\n return (this.smallPenaltyGoals || 0) + (this.smallPenaltyAttempts || 0);\n }\n\n get smallPenaltyGoalsPercent(): number {\n if (!this.smallPenaltyAttempts || !this.smallPenaltyGoals) {\n return 0;\n }\n return Math.round(1000 * this.smallPenaltyGoals / this.smallPenaltyAttempts) / 10;\n }\n\n get shotsAgainst(): number {\n return (this.saves || 0) + (this.goalsAgainst || 0);\n }\n\n get penaltyShotsAgainst(): number {\n return (this.penaltySaves || 0) + (this.penaltyGoalsAgainst || 0);\n }\n\n get smallPenaltyShotsAgainst(): number {\n return (this.smallPenaltySaves || 0) + (this.smallPenaltyGoalsAgainst || 0);\n }\n\n get totalGoalsAgainst(): number {\n return (this.goalsAgainst || 0) + (this.penaltyGoalsAgainst || 0) + (this.smallPenaltyGoalsAgainst || 0);\n }\n\n\n get totalSaves(): number {\n return (this.saves || 0) + (this.penaltySaves || 0) + (this.smallPenaltySaves || 0);\n }\n\n get savesPercent(): number {\n if (!this.shotsAgainst || !this.saves) {\n return 0;\n }\n return Math.round(1000 * this.saves / this.shotsAgainst) / 10;\n }\n\n get penaltySavesPercent(): number {\n if (!this.penaltyShotsAgainst || !this.penaltySaves) {\n return 0;\n }\n return Math.round(1000 * this.penaltySaves / this.penaltyShotsAgainst) / 10;\n }\n\n get smallPenaltySavesPercent(): number {\n if (!this.smallPenaltyShotsAgainst || !this.smallPenaltySaves) {\n return 0;\n }\n return Math.round(1000 * this.smallPenaltySaves / this.smallPenaltyShotsAgainst) / 10;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n shots_on_goal_percent: 'shotsOnGoalPercent',\n shots: 'shots',\n goals: 'goals',\n goals_percent: 'goalsPercent',\n total_goals: 'totalGoals',\n assists: 'assists',\n penalty_goals: 'penaltyGoals',\n penalty_attempts: 'penaltyAttempts',\n penalty_goals_percent: 'penaltyGoalsPercent',\n penalty_saves: 'penaltySaves',\n penalty_goals_against: 'penaltyGoalsAgainst',\n penalty_shots_against: 'penaltyShotsAgainst',\n penalty_saves_percent: 'penaltySavesPercent',\n small_penalty_goals: 'smallPenaltyGoals',\n small_penalty_attempts: 'smallPenaltyAttempts',\n small_penalty_goals_percent: 'smallPenaltyGoalsPercent',\n small_penalty_saves: 'smallPenaltySaves',\n small_penalty_goals_against: 'smallPenaltyGoalsAgainst',\n small_penalty_shots_against: 'smallPenaltyShotsAgainst',\n small_penalty_saves_percent: 'smallPenaltySavesPercent',\n saves: 'saves',\n saves_percent: 'savesPercent',\n total_saves: 'totalSaves',\n goals_against: 'goalsAgainst',\n total_goals_against: 'totalGoalsAgainst',\n shots_against: 'shotsAgainst',\n safety_rate: 'safetyRate',\n fouls: 'fouls',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n perfect_passes: 'perfectPasses',\n losses: 'losses',\n steals: 'steals',\n outs: 'outs',\n block_shots: 'blockShots',\n corners: 'corners',\n free_kicks: 'freeKicks',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n newbie: 'newbie'\n },\n relation: {\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class FootballStatistic extends 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 shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n shotsOnGoalPercent: number;\n shots: number;\n goals: number;\n totalGoals: number;\n goalsPercent: number;\n assists: number;\n penaltyGoals: number;\n penaltyAttempts: number;\n penaltyGoalsPercent: number;\n penaltySaves: number;\n penaltyGoalsAgainst: number;\n penaltyShotsAgainst: number;\n penaltySavesPercent: number;\n smallPenaltyGoals: number;\n smallPenaltyAttempts: number;\n smallPenaltyGoalsPercent: number;\n smallPenaltySaves: number;\n smallPenaltyGoalsAgainst: number;\n smallPenaltyShotsAgainst: number;\n smallPenaltySavesPercent: number;\n saves: number;\n savesPercent: number;\n totalSaves: number;\n goalsAgainst: number;\n totalGoalsAgainst: number;\n shotsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n perfectPasses: number;\n losses: number;\n steals: number;\n outs: number;\n gameTime: number;\n plusMinus: number;\n blockShots: number;\n corners: number;\n freeKicks: number;\n newbie: boolean;\n\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 { FootballStatistic } from './football-statistic';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: FootballStatistic,\n competitorTeam: FootballStatistic\n }\n})\nexport class FootballGameTeamStatistic extends BaseModel {\n team: FootballStatistic;\n competitorTeam: FootballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { FootballGameLog } from '../models/football-game-log';\nimport { FootballGameStatistic } from '../models/football-game-statistic';\nimport { FootballGameTeamStatistic } from '../models/football-game-team-statistic';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class FootballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<FootballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/team_statistic/`).pipe(\n map(result => FootballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<FootballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/user_statistic/`).pipe(\n map(result => FootballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<FootballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/logs/`).pipe(\n map(result => FootballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadApplication(gameId: number, format: 'pdf' | 'xlsx' | 'html', type: 'game_user' | 'tournament_user'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/game_application_file/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { 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 { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField, DateTimeField, enumField } from './util';\nimport { File } from './file';\nimport { Tournament } from './tournament';\n\nexport enum LeagueNewsType {\n text = 1,\n video\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n datetime: 'datetime',\n preview_text: 'previewText',\n detail_text: 'detailText',\n picture: 'picture',\n cover: 'cover',\n mobile_picture: 'mobilePicture',\n is_main: 'isMain',\n tournaments: 'tournaments',\n type: 'type',\n video_link: 'videoLink',\n tag: 'tag',\n },\n relation: {\n datetime: DateTimeField,\n picture: File,\n cover: File,\n mobilePicture: File,\n tournaments: listField(Tournament),\n type: enumField(LeagueNewsType),\n }\n})\nexport class LeagueNews extends BaseModel {\n id: number;\n title: string;\n datetime: Date;\n previewText: string;\n detailText: string;\n picture: File;\n cover: File;\n mobilePicture: File;\n isMain: boolean;\n tournaments: Tournament[];\n type: LeagueNewsType;\n videoLink: string;\n tag: string;\n\n @ToFrontHook\n static toFront(data: any): any {\n return undefined;\n }\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField } from './util';\nimport { Team } from './team';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { TeamUser } from './team-user';\nimport { TournamentTeam } from './tournament-team';\nimport { User } from './user';\nimport { BaseStatistic } 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 } from './util';\nimport { TournamentTeam } from './tournament-team';\nimport { TournamentGroup } from './tournament-group';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team: 'tournamentTeam',\n group: 'group',\n tournament_stage_id: 'tournamentStageId',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n score_sum: 'scoreSum',\n missed_sum: 'missedSum',\n last_games_count: 'lastGamesCount',\n last_games_won: 'lastGamesWon',\n points: 'points',\n final_standing: 'finalStanding',\n received_points: 'receivedPoints',\n },\n relation: {\n tournamentTeam: TournamentTeam,\n group: TournamentGroup\n }\n})\nexport class TournamentStageTeam extends BaseModel {\n id: number;\n tournamentTeam: TournamentTeam;\n group: TournamentGroup;\n tournamentStageId: number;\n gamesCount: number;\n wonGamesCount: number;\n scoreSum: number;\n missedSum: number;\n lastGamesCount: number;\n lastGamesWon: number;\n points: number;\n finalStanding: number;\n receivedPoints: number;\n\n get gamesWonPercent(): number {\n if (!this.gamesCount) {\n return 0;\n }\n return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField, enumField, listField } from './util';\nimport { Game } from './game';\nimport { Tournament } from './tournament';\nimport { League } from './league';\nimport { LeagueNews } from './league-news';\n\nexport enum TournamentEventTypes {\n game_closed = 1,\n media_added,\n news\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n game: 'game',\n news: 'news',\n league: 'league',\n tournaments: 'tournaments',\n event: 'event',\n datetime: 'datetime'\n },\n relation: {\n game: Game,\n news: LeagueNews,\n league: League,\n tournaments: listField(Tournament),\n datetime: DateField,\n event: enumField(TournamentEventTypes)\n }\n})\nexport class TournamentEvent extends BaseModel {\n id: number;\n game: Game;\n news: LeagueNews;\n tournaments: Tournament[];\n event: TournamentEventTypes;\n datetime: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { User } from './user';\nimport { BaseModel, enumField, listField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\n\nexport enum LeagueUserRoles {\n admin = 1,\n moderator,\n game_manager\n}\n\nexport enum LeagueUserPermissions {\n settings = 1,\n users,\n teams,\n media,\n news,\n game_export,\n schedule,\n game_management\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user: 'user',\n role: 'role',\n permissions: 'permissions'\n },\n relation: {\n user: User,\n permissions: listField(enumField(LeagueUserPermissions))\n }\n})\nexport class LeagueUser extends BaseModel {\n id: number;\n user: User;\n _role: LeagueUserRoles;\n permissions: LeagueUserPermissions[];\n\n set role(value: LeagueUserRoles|string) {\n this._role = LeagueUserRoles[value];\n }\n\n get role(): LeagueUserRoles|string {\n return this._role;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Tournament } from '../models/tournament';\nimport { map } from 'rxjs/operators';\nimport { TournamentNews } from '../models/tournament-news';\nimport { Game, GameStatuses } from '../models/game';\nimport { GameTimelineStages } from '../models/game-timeline-stages';\nimport { TournamentTeam } from '../models/tournament-team';\nimport { TournamentStage } from '../models/tournament-stage';\nimport { Playoff } from '../models/playoff';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { BasketballStatistic } from '../models/basketball-statistic';\nimport { VolleyballStatistic } from '../models/volleyball-statistic';\nimport { TournamentTeamUser } from '../models/tournament-team-user';\nimport { TournamentStageTeam } from '../models/tournament-stage-team';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { ConfigService } from '../services/config.service';\nimport { HockeyStatistic } from '../models/hockey-statistic';\nimport { FootballStatistic } from '../models/football-statistic';\nimport { LeagueUserPermissions } from '../models/league-user';\n\nexport interface TournamentGamesFilters {\n tournamentIds?: number[];\n tournamentSeasonId?: number;\n tournamentStageId?: number;\n tournamentTour?: number;\n teamId?: number;\n playoffStage?: number;\n playoffId?: number;\n status?: GameStatuses;\n statuses?: GameStatuses[];\n tournamentCourtId?: number;\n userId?: number;\n}\n\nexport type StatisticGroupByTypes = 'team' | 'user' | 'team_user' | 'tournament_team' | 'tournament_team_user' | 'month' | 'win_loses';\n\nexport interface StatisticFilters {\n tournament_id?: number;\n tournament_ids?: number[];\n tournament_season_id?: number;\n tournament_team_id?: number;\n tournament_team_user_id?: number;\n team_id?: number;\n team_user_id?: number;\n user_id?: number;\n tournament_stage_id?: number;\n tournament_tour?: number;\n playoff_stage?: number;\n playoff_id?: number;\n 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 getById(tournamentId: number): Promise<Tournament> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/`)\n .pipe(map(result => Tournament.toFront(result)))\n .toPromise();\n }\n\n async getByAlias(leagueId: number, alias: string): Promise<Tournament> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournaments/${alias}/`)\n .pipe(map(result => Tournament.toFront(result)))\n .toPromise();\n }\n\n async getNews(tournamentId: number): Promise<TournamentNews[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/news/`)\n .pipe(map(result => TournamentNews.toFront(result)))\n .toPromise();\n }\n\n async getEvents(tournamentId: number, page: number, size: number, filters?: TournamentEventsListFilter): Promise<PaginatedResponse<TournamentEvent[]>> {\n let params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\n if (filters) {\n if (filters.event) {\n params = params.set('event', TournamentEventTypes[filters.event]);\n }\n if (filters.search) {\n params = params.set('search', filters.search);\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/events/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentEvent.toFront(result.body)\n })))\n .toPromise();\n }\n\n async getTournamentStages(tournamentId: number): Promise<TournamentStage[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/stages/`).pipe(\n map(data => TournamentStage.toFront(data))\n ).toPromise();\n }\n\n async getPlayoff(tournamentId: number): Promise<Playoff[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/playoff/`).pipe(\n map(result => Playoff.toFront(result))\n ).toPromise();\n }\n\n async getPlayoffGames(playoffId: number): 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 params = applyGamesFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/games/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: Game.toFront(result.body)\n }))).toPromise();\n }\n\n async getTeams(tournamentId: number): Promise<TournamentTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/teams/`)\n .pipe(map(result => TournamentTeam.toFront(result)))\n .toPromise();\n }\n\n async getStageTeams(tournamentId: number): Promise<TournamentStageTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/stage_teams/`)\n .pipe(map(result => TournamentStageTeam.toFront(result)))\n .toPromise();\n }\n\n async getTeamById(tournamentTeamId: number): Promise<TournamentTeam> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/`)\n .pipe(map(result => TournamentTeam.toFront(result)))\n .toPromise();\n }\n\n async getUserById(userId: number): Promise<TournamentTeamUser> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${userId}/`)\n .pipe(map(result => TournamentTeamUser.toFront(result)))\n .toPromise();\n }\n\n async getUserGames(tournamentUserId: number): Promise<Game[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${tournamentUserId}/games/`)\n .pipe(map(result => Game.toFront(result)))\n .toPromise();\n }\n\n async 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 if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\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 if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\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 if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\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 getFootballStatistic(filters?: StatisticFilters): Promise<FootballStatistic[]> {\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 if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\n }\n }\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/football_statistic/`, {params}).pipe(\n map(result => FootballStatistic.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 async getTournamentTeamTournaments(tournamentTeamId: number): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/tournaments/`).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n async getTournamentUserTournaments(tournamentTeamUserId: number): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${tournamentTeamUserId}/tournaments/`).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n}\n\nexport function applyGamesFilters(filters: TournamentGamesFilters, params: HttpParams): HttpParams {\n if (filters.tournamentIds) {\n params = params.set('tournament_ids', filters.tournamentIds.join(','));\n }\n if (filters.tournamentStageId) {\n params = params.set('tournament_stage_id', filters.tournamentStageId.toString());\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n if (filters.playoffStage) {\n params = params.set('playoff_stage', filters.playoffStage.toString());\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n if (filters.status) {\n params = params.set('status', GameStatuses[filters.status]);\n }\n if (filters.statuses) {\n const statuses = filters.statuses.map(i => GameStatuses[i]);\n params = params.set('statuses', statuses.join(','));\n }\n if (filters.tournamentCourtId) {\n params = params.set('tournament_court_id', filters.tournamentCourtId.toString());\n }\n if (filters.userId) {\n params = params.set('user_id', filters.userId.toString());\n }\n return params;\n}\n","import {ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField} from './util';\nimport {File} from './file';\n\nexport enum BannerLocation {\n slider = 'slider',\n central = 'central',\n media = 'media',\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n picture: 'picture',\n link: 'link',\n sort: 'sort',\n location: 'location',\n },\n relation: {\n picture: File,\n location: enumField(BannerLocation),\n }\n})\nexport class LeagueBanner extends BaseModel {\n id: number;\n title: string;\n picture: File;\n link: string;\n sort: number;\n location: BannerLocation;\n\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(data: any): any {\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n picture: 'picture',\n link: 'link',\n sort: 'sort',\n },\n relation: {\n picture: File\n }\n})\nexport class LeaguePartner extends BaseModel {\n id: number;\n title: string;\n picture: File;\n link: string;\n sort: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { User } from './user';\n\nexport enum PollStatuses {\n open = 1,\n closed,\n archived,\n}\n\n@ModelInstance({\n mappingFields: {\n uuid: 'uuid',\n name: 'name'\n }\n})\nexport class PollVariant extends BaseModel {\n uuid: string;\n name: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n answer_uuid: 'answerUuid',\n user: 'user',\n poll_id: 'pollId',\n },\n relation: {\n user: User\n }\n})\nexport class PollAnswer extends BaseModel {\n id: number;\n answerUuid: string;\n user: User;\n pollId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n active: 'active',\n status: 'status',\n team_id: 'teamId',\n name: 'name',\n description: 'description',\n variants: 'variants',\n author: 'author',\n answers: 'answers',\n multiple_answer: 'multipleAnswer',\n anonymous: 'anonymous',\n created_at: 'createdAt'\n },\n relation: {\n status: enumField(PollStatuses),\n variants: PollVariant,\n author: User,\n answers: PollAnswer,\n createdAt: DateTimeField,\n }\n})\nexport class Poll extends BaseModel {\n id: number;\n active: boolean;\n teamId: number;\n status: PollStatuses;\n name: string;\n description: string;\n _variants: PollVariant[];\n author: User;\n _answers: PollAnswer[];\n multipleAnswer: boolean;\n anonymous: boolean;\n createdAt: Date;\n variantsWithAnswers: {variant: PollVariant, percent: number}[] = [];\n\n set variants(value: PollVariant[]) {\n this._variants = value || [];\n if (this._answers) {\n this.calculateAnswersPercentage();\n }\n }\n get variants(): PollVariant[] {\n return this._variants;\n }\n\n set answers(value: PollAnswer[]) {\n this._answers = value || [];\n if (this._variants) {\n this.calculateAnswersPercentage();\n }\n }\n get answers(): PollAnswer[] {\n return this._answers;\n }\n\n calculateAnswersPercentage() {\n if (!this._answers.length) {\n return;\n }\n\n const variants = this._variants.map(v => v.uuid);\n const answersByVariant = this._answers.reduce((acc, item) => {\n if (variants.indexOf(item.answerUuid) < 0) {\n return acc;\n }\n if (!acc[item.answerUuid]) {\n acc[item.answerUuid] = 0;\n }\n acc[item.answerUuid]++;\n return acc;\n }, {});\n this.variantsWithAnswers = this._variants.map(item => ({\n variant: item,\n percent: answersByVariant[item.uuid] ? Math.round(100 * answersByVariant[item.uuid] / this._answers.length) : 0\n }))\n .sort((a, b) => a.percent > b.percent ? -1 : 1);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { 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 { applyGamesFilters, TournamentEventsListFilter, TournamentGamesFilters } from './tournament-api';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { GameMediaFilters } from './media-api';\nimport { TournamentSeason } from '../models/tournament-season';\nimport { Game, GameStatuses } from '../models/game';\nimport { LeaguePartner } from '../models/league-partner';\nimport { LeagueCourt } from '../models/league-court';\nimport { BannerLocation, LeagueBanner } from '../models/league-banner';\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 params = applyGamesFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/games/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: Game.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getSeasons(leagueId: number, 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 async getPartners(leagueId: number): Promise<LeaguePartner[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/partners/`).pipe(\n map(result => LeaguePartner.toFront(result))\n ).toPromise();\n }\n\n async getBanners(leagueId: number, location?: BannerLocation): Promise<LeagueBanner[]> {\n const params = location ? new HttpParams().set('location', location) : new HttpParams();\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/banners/`, {params}).pipe(\n map(result => LeagueBanner.toFront(result))\n ).toPromise();\n }\n\n async getCourts(leagueId: number): Promise<LeagueCourt[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/courts/`).pipe(\n map(result => LeagueCourt.toFront(result))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { LeagueNews, LeagueNewsType } from '../models/league-news';\nimport { map } from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class LeagueNewsApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\n }\n\n async getLeagueNewsList(leagueId: number, page: number, size: number, type: LeagueNewsType = LeagueNewsType.text): Promise<PaginatedResponse<LeagueNews[]>> {\n const params = new HttpParams().set('page', page.toString())\n .set('size', size.toString())\n .set('type', LeagueNewsType[type]);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/news/`, {params, observe: 'response'})\n .pipe(map(response => ({\n total: +response.headers.get('X-Page-Count'),\n data: LeagueNews.toFront(response.body)\n })))\n .toPromise();\n }\n\n async getMainLeagueNews(leagueId: number): Promise<LeagueNews> {\n return this.httpClient.get<any[]>(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/news/?is_main=true`)\n .pipe(map(response => response && response.length > 0 ? LeagueNews.toFront(response[0]) : null))\n .toPromise();\n }\n\n async getMainLeagueNewsList(leagueId: number): Promise<LeagueNews[]> {\n return this.httpClient.get<any[]>(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/news/?is_main=true`)\n .pipe(map(response => LeagueNews.toFront(response)))\n .toPromise();\n }\n\n async getNewsById(newsId: number): Promise<LeagueNews> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league_news/${newsId}/`)\n .pipe(map(response => LeagueNews.toFront(response)))\n .toPromise();\n }\n\n async getTournamentNewsList(tournamentId: number): Promise<PaginatedResponse<LeagueNews[]>> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/news/`, {observe: 'response'})\n .pipe(map(response => ({\n total: +response.headers.get('X-Page-Count'),\n data: LeagueNews.toFront(response.body)\n })))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { MediaItem } from '../models/media-item';\nimport { Game, GameStatuses } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { ConfigService } from '../services/config.service';\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, enumField } from './util';\n\nexport enum UserPermissionTypes {\n denied = 1,\n for_all,\n for_users,\n for_team\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n personal_data: 'personalData',\n games: 'games',\n teams: 'teams',\n statistic: 'statistic'\n },\n relation: {\n personalData: enumField(UserPermissionTypes),\n games: enumField(UserPermissionTypes),\n teams: enumField(UserPermissionTypes),\n statistic: enumField(UserPermissionTypes)\n }\n})\nexport class UserPermission extends BaseModel {\n id: number;\n personalData: UserPermissionTypes;\n games: UserPermissionTypes;\n teams: UserPermissionTypes;\n statistic: UserPermissionTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { TeamUserRole } from './team-user';\n\n@ModelInstance({\n mappingFields: {\n can_edit: 'canEdit',\n can_view_users: 'canViewUsers',\n can_manage_permission: 'canManagePermission',\n can_change_owner: 'canChangeOwner',\n can_delete: 'canDelete',\n can_manage_invites: 'canManageInvites',\n can_view_invites: 'canViewInvites',\n can_manage_polls: 'canManagePolls',\n can_view_polls: 'canViewPolls',\n can_answer_poll: 'canAnswerPoll',\n can_manage_games: 'canManageGames',\n can_view_games: 'canViewGames',\n can_view_statistic: 'canViewStatistic',\n can_promote_users: 'canPromoteUsers',\n can_edit_users: 'canEditUsers',\n can_delete_users: 'canDeleteUsers',\n can_view_events: 'canViewEvents',\n can_manage_events: 'canManageEvents',\n can_view_tournaments: 'canViewTournaments',\n can_manage_tournaments: 'canManageTournaments',\n role: 'role'\n },\n relation: {\n role: enumField(TeamUserRole)\n }\n})\nexport class TeamAccess extends BaseModel {\n canEdit: boolean;\n canViewUsers: boolean;\n canManagePermission: boolean;\n canChangeOwner: boolean;\n canDelete: boolean;\n canManageInvites: boolean;\n canViewInvites: boolean;\n canManagePolls: boolean;\n canViewPolls: boolean;\n canAnswerPoll: boolean;\n canManageGames: boolean;\n canViewGames: boolean;\n canViewStatistic: boolean;\n canPromoteUsers: boolean;\n canEditUsers: boolean;\n canDeleteUsers: boolean;\n canViewEvents: boolean;\n canManageEvents: boolean;\n canViewTournaments: boolean;\n canManageTournaments: boolean;\n role: TeamUserRole;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';\nimport { Team } from '../models/team';\nimport { map } from 'rxjs/operators';\nimport { TeamUser, TeamUserRole } from '../models/team-user';\nimport { User } from '../models/user';\nimport { TeamInvite } from '../models/team-invite';\nimport { TeamInviteExternal } from '../models/team-invite-external';\nimport { Poll } from '../models/poll';\nimport { VolleyballStatistic } from '../models/volleyball-statistic';\nimport { Game } from '../models/game';\nimport { TeamEvent } from '../models/team-event';\nimport { Tournament } from '../models/tournament';\nimport { TournamentTeam } from '../models/tournament-team';\nimport { TournamentInvite } from '../models/tournament-invite';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { BasketballStatistic } from '../models/basketball-statistic';\nimport { TeamPermission } from '../models/team-permission';\nimport { TeamAccess } from '../models/team-access';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TeamApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async search(query: string, sportId?: number): Promise<Team[]> {\n let params = (new HttpParams()).set('search', query);\n if (sportId) {\n params = params.set('sport', sportId.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/`, {params})\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async create(team: Team): Promise<Team> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/`, Team.toBack(team))\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getById(teamId: number): Promise<Team> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/`)\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getTeamAccess(teamId: number): Promise<TeamAccess> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/access/`)\n .pipe(map(data => TeamAccess.toFront(data)))\n .toPromise();\n }\n\n async update(teamId: number, values: any): Promise<Team> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/`, Team.toBack(values))\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async delete(team: Team): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team/${team.id}/`)\n .toPromise();\n }\n\n async getPermission(teamId: number): Promise<TeamPermission> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/permission/`)\n .pipe(map(data => TeamPermission.toFront(data)))\n .toPromise();\n }\n\n async updatePermission(teamId: number, permission: TeamPermission): Promise<TeamPermission> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/permission/`, TeamPermission.toBack(permission))\n .pipe(map(data => TeamPermission.toFront(data)))\n .toPromise();\n }\n\n async getUsers(teamId: number, tournamentId?: number): Promise<TeamUser[]> {\n let params = new HttpParams();\n if (tournamentId) {\n params = params.set('tournament_id', tournamentId.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/`, {params})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateUserRole(teamId: number, teamUserId: number, role: TeamUserRole): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/${teamUserId}/role/`, {role: TeamUserRole[role]})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateUserNumber(teamId: number, teamUserId: number, gameNumber: number): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/${teamUserId}/number/`, {number: gameNumber.toString()})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async deleteUser(teamUser: TeamUser): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team/${teamUser.teamId}/users/${teamUser.id}/`)\n .toPromise();\n }\n\n async changeOwner(teamId: number, user: User): Promise<Team> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/owner/`, {id: user.id})\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getInvites(teamId: number): Promise<TeamInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites/`)\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async sendInvite(teamId: number, user: User): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites/`, {user})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/accept/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async declineInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/decline/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async resendInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/resend/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async getInvitesExternal(teamId: number): Promise<TeamInviteExternal[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites_external/`)\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async sendInviteExternal(teamId: number, invite: TeamInviteExternal): Promise<TeamInviteExternal> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites_external/`, TeamInviteExternal.toBack(invite))\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async deleteInviteExternal(invite: TeamInviteExternal): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/invites_external/${invite.id}/`)\n .toPromise();\n }\n\n async resendInviteExternal(invite: TeamInviteExternal): Promise<TeamInviteExternal> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/invites_external/${invite.id}/resend/`, {})\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async getPolls(teamId: number, archive: boolean = false): Promise<Poll[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/polls/${archive ? '?archive=1' : ''}`)\n .pipe(map(data => Poll.toFront(data)))\n .toPromise();\n }\n\n async createPoll(teamId: number, poll: Poll): Promise<Poll> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/polls/`, Poll.toBack(poll))\n .pipe(map(data => Poll.toFront(data)))\n .toPromise();\n }\n\n async getUsersStatistic(teamId: number): Promise<BasketballStatistic[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/statistics/`)\n .pipe(map(data => BasketballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getVolleyballStatistic(teamId: number): Promise<VolleyballStatistic[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/volleyball_statistics/`)\n .pipe(map(data => VolleyballStatistic.toFront(data)))\n .toPromise();\n }\n\n async joinTeam(teamId: number): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/join/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async leaveTeam(teamId: number): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/leave/`, {})\n .toPromise();\n }\n\n async getGames(teamId: number, archive = false): Promise<Game[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/games/${archive ? '?archive=1' : ''}`)\n .pipe(map(data => Game.toFront(data)))\n .toPromise();\n }\n\n async createGame(teamId: number, game: Game): Promise<Game> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/games/`, Game.toBack(game))\n .pipe(map(data => Game.toFront(data)))\n .toPromise();\n }\n\n async getTeamEvents(teamId: number): Promise<TeamEvent[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/events/`)\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async createTeamEvent(teamId: number, teamEvent: TeamEvent): Promise<TeamEvent> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/events/`, TeamEvent.toBack(teamEvent))\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async getTournaments(teamId: number): Promise<Tournament[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournaments/`)\n .pipe(map(data => Tournament.toFront(data)))\n .toPromise();\n }\n\n async getTournamentTeams(teamId: number): Promise<TournamentTeam[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournament_teams/`)\n .pipe(map(data => TournamentTeam.toFront(data)))\n .toPromise();\n }\n\n async getTournamentInvites(teamId: number): Promise<TournamentInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournament_invites/`)\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async getTournamentGames(teamId: number, tournamentId: number, page: number, size?: number): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournaments/${tournamentId}/games/`, {params, observe: 'response'})\n .pipe(map((response: HttpResponse<any>) => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n }))\n .toPromise();\n }\n\n async acceptTournamentInvite(inviteId: number): Promise<TournamentInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/tournament_invite/${inviteId}/accept/`, {})\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async declineTournamentInvite(inviteId: number): Promise<TournamentInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/tournament_invite/${inviteId}/decline/`, {})\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async registerLazyUser(teamId: number, userData: User): Promise<TeamUser> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/lazy_user/`, {user: User.toBack(userData)})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async getLazyUser(teamUserId: number): Promise<TeamUser> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`)\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateLazyUser(teamUserId: number, userData: User): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`, {user: User.toBack(userData)})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async deleteLazyUser(teamUserId: number): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`)\n .toPromise();\n }\n\n async resendLazyUserEmail(teamUserId: number): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/resend_email/`, {})\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { TeamEvent } from '../models/team-event';\nimport { TeamEventInvite } from '../models/team-event-invite';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TeamEventApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getTeamEvent(teamEventId: number): Promise<TeamEvent> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/`)\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async updateTeamEvent(teamEvent: TeamEvent): Promise<TeamEvent> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEvent.id}/`, TeamEvent.toBack(teamEvent))\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async deleteTeamEvent(teamEventId: number): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/`)\n .toPromise();\n }\n\n async getTeamEventInvites(teamEventId: number): Promise<TeamEventInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/invites/`)\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async createTeamEventInvite(teamEventId: number, teamUserId: number): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/invites/`, {team_user_id: teamUserId})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptTeamEventInvite(teamEventInvite: TeamEventInvite): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event_invite/${teamEventInvite.id}/accept/`, {})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async declineTeamEventInvite(teamEventInvite: TeamEventInvite): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event_invite/${teamEventInvite.id}/decline/`, {})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\n\n@ModelInstance({\n mappingFields: {\n valid_users_count: 'validUsersCount',\n invalid_users_count: 'invalidUsersCount',\n has_access: 'hasAccess',\n invite_sent: 'inviteSent',\n already_in_tournament: 'alreadyInTournament'\n }\n})\nexport class TournamentJoinData extends BaseModel {\n validUsersCount: number;\n invalidUsersCount: number;\n hasAccess: boolean;\n inviteSent: boolean;\n alreadyInTournament: boolean;\n\n get usersCount(): number {\n return this.validUsersCount + this.invalidUsersCount;\n }\n\n get valid() {\n return this.hasAccess && !this.inviteSent && !this.alreadyInTournament;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n join_data: 'joinData'\n },\n relation: {\n team: Team,\n joinData: TournamentJoinData\n }\n})\nexport class TournamentJoinTeam extends BaseModel {\n team: Team;\n joinData: TournamentJoinData;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TournamentJoinTeam } from '../models/tournament-join-team';\nimport { map } from 'rxjs/operators';\nimport { TeamUser } from '../models/team-user';\nimport { TournamentTeamUserInvite } from '../models/tournament-team-user-invite';\nimport { TournamentInvite } from '../models/tournament-invite';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TournamentJoinApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getTeamsForJoin(tournamentId: number): Promise<TournamentJoinTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/teams_for_join/`).pipe(\n map(response => TournamentJoinTeam.toFront(response))\n ).toPromise();\n }\n\n async getTeamUsers(teamId: number): Promise<TeamUser[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/`)\n .pipe(\n map(data => TeamUser.toFront(data))\n ).toPromise();\n }\n\n async joinTournament(tournamentId: number, teamId: number, invites: TournamentTeamUserInvite[]): Promise<TournamentInvite> {\n const body = {\n team: {id: teamId},\n user_invites: TournamentTeamUserInvite.toBack(invites)\n };\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/join/`, body)\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { TournamentSeason } from '../models/tournament-season';\nimport { ConfigService } from '../services/config.service';\nimport { map } from 'rxjs/operators';\nimport { Game, GameStatuses } from '../models/game';\nimport { Tournament } from '../models/tournament';\nimport { applyGamesFilters, TournamentEventsListFilter, TournamentGamesFilters } from './tournament-api';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { 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 params = applyGamesFilters(filters, params);\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/games/`,\n {params, observe: 'response'}\n ).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: Game.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getEvents(seasonId: number, page: number, size: number, filters?: TournamentEventsListFilter): Promise<PaginatedResponse<TournamentEvent[]>> {\n let params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\n if (filters) {\n if (filters.event) {\n params = params.set('event', TournamentEventTypes[filters.event]);\n }\n if (filters.search) {\n params = params.set('search', filters.search);\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n }\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/events/`,\n {params, observe: 'response'}\n )\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentEvent.toFront(result.body)\n })))\n .toPromise();\n }\n\n async getGameMedia(seasonId: number, page: number, size: number, filters: GameMediaFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n 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, HttpParams } from '@angular/common/http';\nimport { Game } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { VolleyballGameTeamStatistic } from '../models/volleyball-game-team-statistic';\nimport { VolleyballGameStatistic } from '../models/volleyball-game-statistic';\nimport { VolleyballGameLog } from '../models/volleyball-game-log';\nimport { ConfigService } from '../services/config.service';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class VolleyballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<VolleyballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/team_statistic/`).pipe(\n map(result => VolleyballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<VolleyballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/user_statistic/`).pipe(\n map(result => VolleyballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<VolleyballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/logs/`).pipe(\n map(result => VolleyballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { Team } from '../models/team';\nimport { map } from 'rxjs/operators';\nimport { TournamentTeam } from '../models/tournament-team';\n\n@Injectable({providedIn: 'root'})\nexport class PublicTeamApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n getById(teamId: number): Promise<Team> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_team/${teamId}/`).pipe(\n map(result => Team.toFront(result))\n ).toPromise();\n }\n\n getTournamentTeams(teamId: number, leagueId: number): Promise<TournamentTeam[]> {\n const params = new HttpParams().set('league_id', leagueId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_team/${teamId}/tournament_teams/`, {params}).pipe(\n map(result => TournamentTeam.toFront(result))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { User } from '../models/user';\nimport { map } from 'rxjs/operators';\nimport { Tournament } from '../models/tournament';\nimport { TournamentTeamUser } from '../models/tournament-team-user';\n\n@Injectable({providedIn: 'root'})\nexport class PublicUserApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n getById(userId: number): Promise<User> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/`).pipe(\n map(result => User.toFront(result))\n ).toPromise();\n }\n\n getTournaments(userId: number, leagueId: number): Promise<Tournament[]> {\n const params = new HttpParams().set('league_id', leagueId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/tournaments/`, {params}).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n getTournamentUser(userId: number, seasonId: number): Promise<TournamentTeamUser> {\n const params = new HttpParams().set('season_id', seasonId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/tournament_user/`, {params}).pipe(\n map(result => TournamentTeamUser.toFront(result))\n ).toPromise();\n }\n}\n","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 { FootballGameLogTypes } from '../models/football-game-log';\n\nexport const FootballGameLogTypeLocalization = {\n [FootballGameLogTypes.enter_game]: 'Выход на поле',\n [FootballGameLogTypes.exit_game]: 'Ушел с поля',\n [FootballGameLogTypes.shot_miss]: 'Удар мимо',\n [FootballGameLogTypes.shot_on_goal]: 'Удар в створ',\n [FootballGameLogTypes.shot_blocked]: 'Заблокированный удар',\n [FootballGameLogTypes.goal]: 'Гол',\n [FootballGameLogTypes.assist]: 'Передача',\n [FootballGameLogTypes.penalty_attempt]: 'Пенальти промах',\n [FootballGameLogTypes.penalty_goal]: 'Пенальти гол',\n [FootballGameLogTypes.small_penalty_attempt]: '10-метровый промах',\n [FootballGameLogTypes.small_penalty_goal]: '10-метровый гол',\n [FootballGameLogTypes.block_shot]: 'Блокировка удара',\n [FootballGameLogTypes.corner]: 'Угловой',\n [FootballGameLogTypes.free_kick]: 'Штрафной удар',\n [FootballGameLogTypes.save]: 'Отражен удар',\n [FootballGameLogTypes.penalty_save]: 'Отражен пенальти',\n [FootballGameLogTypes.small_penalty_save]: 'Отражен 10 метровый',\n [FootballGameLogTypes.foul]: 'Фол',\n [FootballGameLogTypes.yellow_card]: 'Желтая карточка',\n [FootballGameLogTypes.red_card]: 'Красная карточка',\n [FootballGameLogTypes.perfect_pass]: 'Пас',\n [FootballGameLogTypes.loss]: 'Потеря',\n [FootballGameLogTypes.steal]: 'Перехват',\n [FootballGameLogTypes.out]: 'Аут',\n [FootballGameLogTypes.timeout]: 'Таймаут'\n};\n","import { OvertimeTypes } from '../models/tournament';\n\nexport const OvertimeTypeLocalization = {\n [OvertimeTypes.to_score_diff]: 'До разницы в N мячей',\n [OvertimeTypes.to_score_total]: 'До N очков',\n [OvertimeTypes.time]: 'По времени',\n [OvertimeTypes.without_overtime]: 'Без овертайма',\n [OvertimeTypes.to_first_goal]: 'На N минут до первой шайбы',\n [OvertimeTypes.to_first_goal_and_bullitts]: 'На N минут до первой шайбы + буллиты',\n [OvertimeTypes.bullitts]: 'Буллиты',\n [OvertimeTypes.penalties]: 'Пенальти',\n [OvertimeTypes.time_and_penalties]: 'Дополнительное время + пенальти'\n};\n","import { TeamUserRole } from '../models/team-user';\n\nexport const TeamUserRoleLocalization = {\n [TeamUserRole.member]: 'Пользователь',\n [TeamUserRole.moderator]: 'Модератор',\n [TeamUserRole.admin]: 'Владелец',\n [TeamUserRole.coach]: 'Тренер',\n [TeamUserRole.head_coach]: 'Главный тренер',\n [TeamUserRole.playing_coach]: 'Играющий тренер',\n [TeamUserRole.manager]: 'Менеджер',\n [TeamUserRole.head_manager]: 'Генеральный менеджер',\n [TeamUserRole.captain]: 'Капитан',\n [TeamUserRole.assistant]: 'Ассистент',\n};\n","import { GameBasketballPosition, WorkHand } from '../models/basketball-profile';\nimport { GameVolleyballPosition, VolleyballWorkHand } from '../models/volleyball-profile';\nimport { GameHockeyPosition } from '../models/hockey-profile';\nimport { FootballWorkFoot, GameFootballPosition } from '../models/football-profile';\n\nexport const GameBasketballPositionLocalization = {\n [GameBasketballPosition.point_guard]: 'Разыгрывающий защитник',\n [GameBasketballPosition.shooting_guard]: 'Атакующий защитник',\n [GameBasketballPosition.small_forward]: 'Легкий форвард',\n [GameBasketballPosition.power_forward]: 'Мощный форвард',\n [GameBasketballPosition.center]: 'Центровой',\n};\n\nexport const GameBasketballPositionShortLocalization = {\n [GameBasketballPosition.point_guard]: 'PG',\n [GameBasketballPosition.shooting_guard]: 'SG',\n [GameBasketballPosition.small_forward]: 'SF',\n [GameBasketballPosition.power_forward]: 'PF',\n [GameBasketballPosition.center]: 'C',\n};\n\nexport const WorkHandLocalization = {\n [WorkHand.left]: 'Левая',\n [WorkHand.right]: 'Правая'\n};\n\nexport const GameVolleyballPositionLocalization = {\n [GameVolleyballPosition.setter]: 'Связующий',\n [GameVolleyballPosition.libero]: 'Либеро',\n [GameVolleyballPosition.middle_player]: 'Центральный блокирующий',\n [GameVolleyballPosition.receiver_attacker]: 'Доигровщик',\n [GameVolleyballPosition.dioganal]: 'Диагональный',\n};\n\nexport const GameVolleyballPositionShortLocalization = {\n [GameVolleyballPosition.setter]: 'S',\n [GameVolleyballPosition.libero]: 'L',\n [GameVolleyballPosition.middle_player]: 'MP',\n [GameVolleyballPosition.receiver_attacker]: 'RA',\n [GameVolleyballPosition.dioganal]: 'D',\n};\n\nexport const GameVolleyballPositionShortRuLocalization = {\n [GameVolleyballPosition.setter]: 'связ.',\n [GameVolleyballPosition.libero]: 'либеро',\n [GameVolleyballPosition.middle_player]: 'блок.',\n [GameVolleyballPosition.receiver_attacker]: 'доигр.',\n [GameVolleyballPosition.dioganal]: 'диаг.',\n};\n\nexport const VolleyballWorkHandLocalization = {\n [VolleyballWorkHand.left]: 'Левая',\n [VolleyballWorkHand.right]: 'Правая'\n};\n\nexport const GameHockeyPositionLocalization = {\n [GameHockeyPosition.goaltender]: 'Вратарь',\n [GameHockeyPosition.defensemen]: 'Защитник',\n [GameHockeyPosition.forward]: 'Нападающий'\n};\n\nexport const GameFootballPositionLocalization = {\n [GameFootballPosition.goalkeeper]: 'Вратарь',\n [GameFootballPosition.defensemen]: 'Защитник',\n [GameFootballPosition.midfielder]: 'Полузащитник',\n [GameFootballPosition.forward]: 'Нападающий'\n};\n\nexport const FootballWorkFootLocalization = {\n [FootballWorkFoot.left]: 'Левая',\n [FootballWorkFoot.right]: 'Правая',\n [FootballWorkFoot.both]: 'Обе'\n};\n","import { VolleyballGameLogType } from '../models/volleyball-game-log';\n\nexport const VolleyballGameLogTypeLocalization = {\n [VolleyballGameLogType.enter_game]: 'Выход на площадку',\n [VolleyballGameLogType.exit_game]: 'Уход с площадки',\n [VolleyballGameLogType.remove_game]: 'Удаление с площадки',\n [VolleyballGameLogType.serve_ace]: 'Эйс',\n [VolleyballGameLogType.serve_hit]: 'Подача',\n [VolleyballGameLogType.serve_fault]: 'Ошибка на подаче',\n [VolleyballGameLogType.attack_spike]: 'Результативная атака',\n [VolleyballGameLogType.attack_shot]: 'Атака',\n [VolleyballGameLogType.attack_fault]: 'Ошибка атаки',\n [VolleyballGameLogType.stuff_block]: 'Результативный блок',\n [VolleyballGameLogType.block_rebound]: 'Блок',\n [VolleyballGameLogType.block_fault]: 'Ошибка на блоке',\n [VolleyballGameLogType.excellent_receive]: 'Отличный прием',\n [VolleyballGameLogType.receive]: 'Прием',\n [VolleyballGameLogType.receive_fault]: 'Ошибка на приеме',\n [VolleyballGameLogType.serve_receive]: 'Прием подачи',\n [VolleyballGameLogType.excellent_serve_receive]: 'Отличный прием подачи',\n [VolleyballGameLogType.serve_receive_fault]: 'Ошибка приема подачи',\n [VolleyballGameLogType.point]: 'Очко',\n [VolleyballGameLogType.fault]: 'Ошибка',\n [VolleyballGameLogType.timeout]: 'Таймаут',\n [VolleyballGameLogType.yellow_card]: 'Предупреждение',\n};\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n files: 'files',\n key_code: 'keyCode',\n },\n relation: {\n files: listField(File)\n }\n})\nexport class LeaguePlaylist extends BaseModel {\n id: number;\n name: string;\n files: File[];\n keyCode: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { Subject } from 'rxjs/internal/Subject';\nimport { ReplaySubject } from 'rxjs/internal/ReplaySubject';\n\nimport * as Centrifuge from 'centrifuge';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ConfigService } from './config.service';\n\ninterface CentrifugoConfig {\n user: string;\n timestamp: string;\n token: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class CentrifugoService {\n private channels$: { [key: string]: Subject<any> } = {};\n private subscriptions: { [key: string]: any } = {};\n private centrifuge;\n private initializeEngineSubject: ReplaySubject<boolean>;\n private connectedSubject = new BehaviorSubject<boolean>(false);\n\n get connected$(): Observable<boolean> {\n return this.connectedSubject;\n }\n\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) { }\n\n listen(channel): Observable<any> {\n if (channel in this.channels$) {\n return this.channels$[channel];\n }\n\n this.channels$[channel] = new Subject<any>();\n const subscription = this.connect().subscribe(connected => {\n this.subscriptions[channel] = this.addEngineSubscription(channel);\n setTimeout(() => {\n subscription.unsubscribe();\n });\n });\n\n return this.channels$[channel];\n }\n\n unsubscribe(channel): void {\n if (this.subscriptions[channel]) {\n this.subscriptions[channel].unsubscribe();\n delete this.subscriptions[channel];\n }\n if (this.channels$[channel]) {\n this.channels$[channel].complete();\n delete this.channels$[channel];\n }\n }\n\n connect(): Observable<boolean> {\n if (!this.initializeEngineSubject) {\n this.initializeEngineSubject = new ReplaySubject(1);\n\n this.httpClient.get<CentrifugoConfig>(`${this.configService.get('apiUrl')}/api/v1/centrifugo/`)\n .subscribe(config => {\n this.initializeEngine({\n url: this.configService.get('centrifugoUrl'),\n user: config.user,\n timestamp: config.timestamp,\n token: config.token,\n transports: ['websocket']\n });\n this.centrifuge.connect();\n this.centrifuge.on('connect', () => {\n this.initializeEngineSubject.next(true);\n this.connectedSubject.next(true);\n });\n this.centrifuge.on('disconnect', () => {\n this.connectedSubject.next(false);\n });\n });\n }\n\n return this.initializeEngineSubject;\n }\n\n publish(channel: string, message: any): Observable<any> {\n return new Observable<any>(observer => {\n this.connect().subscribe(() => {\n if (!this.subscriptions[channel]) {\n this.subscriptions[channel] = this.addEngineSubscription(channel);\n }\n this.subscriptions[channel].publish(message).then(res => {\n observer.next(res);\n observer.complete();\n }, error => {\n throw error;\n });\n });\n });\n }\n\n disconnect(): void {\n this.centrifuge.disconnect();\n this.initializeEngineSubject = undefined;\n this.channels$ = {};\n this.subscriptions = {};\n }\n\n private initializeEngine(config: {\n url: string,\n user: string,\n timestamp: string,\n token: string,\n transports: string[]\n }): void {\n this.centrifuge = new Centrifuge(config);\n }\n\n private addEngineSubscription(channel: string): Observable<any> {\n return this.centrifuge.subscribe(channel, this.resolveMessage.bind(this));\n }\n\n private resolveMessage(response: any): void {\n const channel = response.channel;\n if (!this.channels$[channel]) {\n return;\n }\n\n this.channels$[channel].next(response.data);\n }\n}\n","import { ModelInterface } from '../models/util';\n\nexport class StorageEngineField {\n defaultValue: any;\n\n constructor(defaultValue?: any, protected modelClass?: ModelInterface) {\n this.defaultValue = defaultValue;\n }\n\n toFront(value: any): any {\n if (this.modelClass) {\n return this.modelClass.toFront(value);\n }\n return value;\n }\n\n toBack(value: any): any {\n if (this.modelClass) {\n return this.modelClass.toBack(value);\n }\n return value;\n }\n}\n\nexport abstract class StorageEngine {\n constructor(protected name: string, protected fields: {[key: string]: StorageEngineField}) {\n }\n\n addField(key: string, field: StorageEngineField): void {\n this.fields[key] = field;\n }\n\n save(key: string, value: any): void {\n if (!this.fields[key]) {\n return;\n }\n this.setItem(`${this.name}_${key}`, this.fields[key].toBack(value));\n }\n\n get(key: string): any {\n if (!this.fields[key]) {\n return;\n }\n let value = this.getItem(`${this.name}_${key}`);\n if (value === null) {\n value = this.fields[key].defaultValue;\n }\n if (value === null || value === undefined) {\n return value;\n }\n return this.fields[key].toFront(value);\n }\n\n clear(): void {\n for (const field of Object.keys(this.fields)) {\n this.removeItem(field);\n }\n }\n\n protected getItem(key: string): any {\n throw new Error(`Function getItem for store engine ${typeof this} not implemented`);\n }\n\n protected setItem(key: string, value: any): any {\n throw new Error(`Function setItem for store engine ${typeof this} not implemented`);\n }\n\n protected removeItem(key: string): void {\n throw new Error(`Function deleteItem for store engine ${typeof this} not implemented`);\n }\n}\n","import { StorageEngine } from './storage-engine';\n\nexport class LocalStorageEngine extends StorageEngine {\n protected setItem(key: string, value: any) {\n localStorage.setItem(key, JSON.stringify(value));\n }\n\n protected getItem(key: string): any {\n try {\n return JSON.parse(localStorage.getItem(key));\n } catch (e) {\n return;\n }\n }\n\n protected removeItem(key: string): void {\n localStorage.removeItem(key);\n }\n}\n","export function getCookie(name: string): string {\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) {\n return parts.pop().split(';').shift();\n }\n return null;\n}\n","export interface LinkFavicon {\n rel: string;\n sizes?: string;\n href: string;\n type?: string;\n color?: string;\n}\n\nexport function getIconsData(folder: string): LinkFavicon[] {\n return [\n {rel: 'apple-touch-icon', sizes: '180x180', href: `/assets/favicon/${folder}apple-touch-icon.png`},\n {rel: 'icon', type: 'image/png', sizes: '32x32', href: `/assets/favicon/${folder}favicon-32x32.png`},\n {rel: 'icon', type: 'image/png', sizes: '16x16', href: `/assets/favicon/${folder}favicon-16x16.png`},\n {rel: 'shortcut icon', href: `/assets/favicon/${folder}favicon.ico`},\n {rel: 'manifest', href: `/assets/favicon/${folder}site.webmanifest`},\n {rel: 'mask-icon', href: `/assets/favicon/${folder}safari-pinned-tab.svg`, color: '#ff0000'}\n ];\n}\n\nexport function changeFavicons(document: Document, leagueAlias: string): void {\n let folder = '';\n if (leagueAlias === 'ablmoscow') {\n folder = 'abl/';\n }\n const data = getIconsData(folder);\n for (const item of data) {\n const link = document.createElement('link');\n for (const key of Object.keys(item)) {\n link.setAttribute(key, item[key]);\n }\n document.head.appendChild(link);\n }\n}\n","import { Inject, Injectable, Injector, PLATFORM_ID } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { getCookie } from './utils/cookie';\nimport { isPlatformBrowser } from '@angular/common';\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"]}