@mtgame/core 0.0.67 → 0.0.68

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.
Files changed (58) hide show
  1. package/api/handball-game-api.d.ts +18 -0
  2. package/api/public-api.d.ts +1 -0
  3. package/api/tournament-api.d.ts +2 -0
  4. package/bundles/mtgame-core.umd.js +650 -54
  5. package/bundles/mtgame-core.umd.js.map +1 -1
  6. package/bundles/mtgame-core.umd.min.js +2 -2
  7. package/bundles/mtgame-core.umd.min.js.map +1 -1
  8. package/esm2015/api/handball-game-api.js +66 -0
  9. package/esm2015/api/public-api.js +2 -1
  10. package/esm2015/api/tournament-api.js +21 -1
  11. package/esm2015/localization/handball-game-log-types.js +24 -0
  12. package/esm2015/localization/public-api.js +2 -1
  13. package/esm2015/localization/user-profile.js +9 -1
  14. package/esm2015/models/game.js +4 -1
  15. package/esm2015/models/handball-game-config.js +34 -0
  16. package/esm2015/models/handball-game-log.js +92 -0
  17. package/esm2015/models/handball-game-statistic.js +101 -0
  18. package/esm2015/models/handball-game-team-statistic.js +27 -0
  19. package/esm2015/models/handball-profile.js +39 -0
  20. package/esm2015/models/handball-statistic.js +86 -0
  21. package/esm2015/models/public-api.js +7 -1
  22. package/esm2015/models/sport.js +9 -1
  23. package/esm2015/models/user.js +4 -1
  24. package/esm5/api/handball-game-api.js +81 -0
  25. package/esm5/api/public-api.js +2 -1
  26. package/esm5/api/tournament-api.js +35 -1
  27. package/esm5/localization/handball-game-log-types.js +25 -0
  28. package/esm5/localization/public-api.js +2 -1
  29. package/esm5/localization/user-profile.js +10 -2
  30. package/esm5/models/game.js +4 -1
  31. package/esm5/models/handball-game-config.js +39 -0
  32. package/esm5/models/handball-game-log.js +99 -0
  33. package/esm5/models/handball-game-statistic.js +162 -0
  34. package/esm5/models/handball-game-team-statistic.js +32 -0
  35. package/esm5/models/handball-profile.js +44 -0
  36. package/esm5/models/handball-statistic.js +95 -0
  37. package/esm5/models/public-api.js +7 -1
  38. package/esm5/models/sport.js +9 -1
  39. package/esm5/models/user.js +4 -1
  40. package/fesm2015/mtgame-core.js +466 -1
  41. package/fesm2015/mtgame-core.js.map +1 -1
  42. package/fesm5/mtgame-core.js +641 -54
  43. package/fesm5/mtgame-core.js.map +1 -1
  44. package/localization/handball-game-log-types.d.ts +23 -0
  45. package/localization/public-api.d.ts +1 -0
  46. package/localization/user-profile.d.ts +8 -0
  47. package/models/game.d.ts +2 -0
  48. package/models/handball-game-config.d.ts +15 -0
  49. package/models/handball-game-log.d.ts +49 -0
  50. package/models/handball-game-statistic.d.ts +44 -0
  51. package/models/handball-game-team-statistic.d.ts +8 -0
  52. package/models/handball-profile.d.ts +17 -0
  53. package/models/handball-statistic.d.ts +55 -0
  54. package/models/public-api.d.ts +6 -0
  55. package/models/sport.d.ts +5 -1
  56. package/models/user.d.ts +2 -0
  57. package/mtgame-core.metadata.json +1 -1
  58. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@mtgame/core/localization/hockey-penalty-types.ts","ng://@mtgame/core/models/util.ts","ng://@mtgame/core/models/file.ts","ng://@mtgame/core/models/sport.ts","ng://@mtgame/core/models/basketball-profile.ts","ng://@mtgame/core/models/user-profile.ts","ng://@mtgame/core/models/city.ts","ng://@mtgame/core/models/volleyball-profile.ts","ng://@mtgame/core/models/hockey-profile.ts","ng://@mtgame/core/models/football-profile.ts","ng://@mtgame/core/models/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","_originalName","name","file","original_name","mime_type","size","engine","created_at","createdAt","GameBasketballPosition","WorkHand","Sport","isBasketball","basketball","parentId","isClassicBasketball","classic_basketball","isStreetball","streetball","isVolleyball","volleyball","isClassicVolleyball","classic_volleyball","isBeachVolleyball","beach_volleyball","isHockey","hockey","isIceHockey","ice_hockey","isBallHockey","ball_hockey","isFootball","football","isClassicFootball","classic_football","isMiniFootball","mini_football","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","_this","documents","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","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","gameTime","tournament_team_user","month","win_lose","two_points_made","three_points_made","free_throws_made","one_points_made","two_point_attempts","three_point_attempts","free_throw_attempts","one_point_attempts","two_point_percent","three_point_percent","free_throw_percent","one_point_percent","assists","blocks","rebounds","offensive_rebounds","defensive_rebounds","steals","turnovers","personal_fouls","technical_fouls","unsportsmanlike_fouls","game_time","newbie","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","pp_shot_misses","pp_shots_on_goal","pp_shots_blocked","ev_shot_misses","ev_shots_on_goal","ev_shots_blocked","sh_shot_misses","sh_shots_on_goal","sh_shots_blocked","pp_goals","ev_goals","sh_goals","pp_assists","ev_assists","sh_assists","shootout_attempts","shootout_goals","block_shots","face_off_losses","face_off_wins","goals_against","safety_rate","penalty_minutes","plus_minus","HockeyStatistic","lose_games_count","pp_shots","ev_shots","sh_shots","pp_goals_percent","ev_goals_percent","sh_goals_percent","goals","shot_misses","shots_on_goal","shots_blocked","shots","goals_percent","shots_against","saves_percent","face_offs","face_off_percent","HockeyGameTeamStatistic","HockeyGameApi","format","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","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","withCredentials","clone","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, DateTimeField } from './util';\n\nexport enum FileEngine {\n django = 1,\n s3\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n original_name: 'originalName',\n path: 'path',\n mime_type: 'mimeType',\n size: 'size',\n engine: 'engine',\n created_at: 'createdAt',\n },\n relation: {\n engine: enumField(FileEngine),\n createdAt: DateTimeField,\n }\n})\nexport class File {\n id: number;\n name: string;\n _originalName: string;\n path: string;\n mimeType: string;\n size: number;\n engine: FileEngine;\n createdAt: Date;\n\n set originalName(name: string) {\n this._originalName = name;\n }\n\n get originalName(): string {\n return this._originalName || this.name;\n }\n\n @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, listField } from './util';\nimport { Organization } from './organization';\nimport { File } from './file';\nimport { Sport } from './sport';\n\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n logo: 'logo',\n contact_email: 'contactEmail',\n contact_phone: 'contactPhone',\n name: 'name',\n alias: 'alias',\n sport: 'sport',\n description: 'description',\n social_links: 'socialLinks',\n links: 'links',\n organization: 'organization',\n tournaments_count: 'tournamentsCount',\n closest_game_datetime: 'closestGameDatetime',\n cover: 'cover',\n about: 'about',\n documents: 'documents',\n },\n relation: {\n organization: Organization,\n logo: File,\n cover: File,\n sport: Sport,\n documents: listField(File),\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 documents: File[] = [];\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 game_time: 'gameTime',\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 gameTime: number;\n newbie: boolean;\n\n get totalFouls() {\n return this.personalFouls + this.technicalFouls + this.unsportsmanlikeFouls;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { BasketballStatistic } from './basketball-statistic';\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 if (!this.gameTime) {\n return '00:00';\n }\n const minutes = Math.floor(this.gameTime / 60);\n const seconds = Math.floor(this.gameTime - minutes * 60);\n return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;\n }\n\n get gamesWonPercent(): number {\n if (!this.gamesCount) {\n return 0;\n }\n return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { HockeyStatistic } from './hockey-statistic';\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 if (!this.gameTime) {\n return '00:00';\n }\n const minutes = Math.floor(this.gameTime / 60);\n const seconds = Math.floor(this.gameTime - minutes * 60);\n return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { FootballStatistic } from './football-statistic';\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 if (req.withCredentials !== false) {\n req = req.clone({withCredentials: true});\n }\n const csrf = getCookie('csrftoken');\n if (csrf) {\n req = req.clone({\n setHeaders: {'X-CSRFToken': csrf}\n });\n }\n return next.handle(req);\n }\n}\n","import {\n ɵComponentType as ComponentType,\n ɵDirectiveType as DirectiveType,\n ɵComponentDef as ComponentDef,\n ɵDirectiveDef as DirectiveDef\n} from '@angular/core';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { Subject } from 'rxjs/internal/Subject';\n\nexport interface OnDestroyLike {\n ngOnDestroy(): void;\n [key: string]: any;\n}\n\nexport function componentDestroyed(component: OnDestroyLike): Observable<void> {\n if ((component.constructor as any).__componentDestroyed$) {\n return (component.constructor as any).__componentDestroyed$;\n }\n throw new Error('Use @UntilDestroy decorator in class');\n}\n\nexport function UntilDestroy(cmpType: any) {\n const def = getDef(cmpType as any);\n const original = (def as any).onDestroy;\n cmpType.__componentDestroyed$ = new Subject<void>();\n (def as any).onDestroy = function() {\n cmpType.__componentDestroyed$.next();\n cmpType.__componentDestroyed$.complete();\n original.apply(this);\n };\n}\n\nfunction getDef<T>(\n type: DirectiveType<T> | ComponentType<T>\n): DirectiveDef<T> | ComponentDef<T> {\n return (type as ComponentType<T>).ɵcmp || (type as DirectiveType<T>).ɵdir;\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { debounceTime, delay, map, switchMap } from 'rxjs/operators';\nimport { Observable, of } from 'rxjs';\n\nexport interface CheckEmailServiceInterface {\n checkEmail(value: string, selfCheck: boolean): Observable<boolean>;\n}\n\nexport const minLengthArrayValidator = (minLength: number) => {\n return (c: AbstractControl) => {\n return c.value.length < minLength\n ? {minLengthArray: {valid: false}}\n : null;\n };\n};\n\nexport const validatePhone = (control: AbstractControl) => {\n if (!control.value) {\n return null;\n }\n const value = `${control.value}`.replace(/\\D/gi, '');\n return value.length === 11 ? null : {invalidPhone: {valid: false}};\n};\n\nexport const validateDate = (control: AbstractControl) => {\n const re = /\\d{2}\\.\\d{2}\\.\\d{4}/gi;\n if (!control.value || re.test(control.value)) {\n return null;\n }\n return {invalidDate: {valid: false}};\n};\n\nexport const validateEmail = (authService: CheckEmailServiceInterface, selfCheck = true, ignore = []) => {\n const subject = of(null).pipe(\n delay(500)\n );\n return (control: AbstractControl) => {\n if (ignore.indexOf(control.value) > -1) {\n return of(null);\n }\n return subject.pipe(\n switchMap(() => authService.checkEmail(control.value, selfCheck).pipe(\n map(valid => valid ? null : {emailTaken: true})\n ))\n );\n };\n};\n\nexport const validateUrl = (control: AbstractControl) => {\n const re = /^(?:http(s)?:\\/\\/)[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/;\n if (!control.value || re.test(control.value)) {\n return null;\n }\n return {invalidUrl: true};\n};\n\nexport function fileSizeValidator(maxFileSize: number): ValidatorFn {\n return (control: AbstractControl): {[key: string]: any} | null => {\n if (!control.value) {\n return null;\n }\n };\n}\n","export function getEnumOptions(enumClass): number[] {\n return Object.keys(enumClass)\n .map(v => enumClass[v])\n .filter(v => isNaN(+v) === false)\n .map(v => +v);\n}\n\n","import { captureException } from '@sentry/browser';\n\nexport function handleError(error, force = false, production = true) {\n if (!(error && (error.status === 0 || error.status === 404)) || (force && error.status !== 0)) {\n captureException(error);\n }\n\n if (!production) {\n console.error(error);\n }\n}\n","export function isTouchDevice() {\n const prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');\n const mq = (q) => {\n return window.matchMedia(q).matches;\n };\n\n if (('ontouchstart' in window) || (window as any).DocumentTouch && document instanceof (window as any).DocumentTouch) {\n return true;\n }\n\n // include the 'heartz' as a way to have a non matching MQ to help terminate the join\n // https://git.io/vznFH\n const query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\n return mq(query);\n}\n","import { FormGroup } from '@angular/forms';\n\nexport function markFormGroupTouched(formGroup: FormGroup) {\n (Object as any).values(formGroup.controls).forEach(control => {\n control.markAsTouched();\n control.markAsDirty();\n\n if (control instanceof FormGroup) {\n markFormGroupTouched(control);\n } else if (control.controls) {\n control.controls.forEach(c => {\n if (c instanceof FormGroup) {\n markFormGroupTouched(c);\n } else {\n c.markAsTouched();\n c.markAsDirty();\n }\n });\n }\n });\n}\n"]}
1
+ {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@mtgame/core/localization/hockey-penalty-types.ts","ng://@mtgame/core/models/util.ts","ng://@mtgame/core/models/file.ts","ng://@mtgame/core/models/sport.ts","ng://@mtgame/core/models/basketball-profile.ts","ng://@mtgame/core/models/user-profile.ts","ng://@mtgame/core/models/city.ts","ng://@mtgame/core/models/volleyball-profile.ts","ng://@mtgame/core/models/hockey-profile.ts","ng://@mtgame/core/models/football-profile.ts","ng://@mtgame/core/models/handball-profile.ts","ng://@mtgame/core/models/user.ts","ng://@mtgame/core/models/tournament-season.ts","ng://@mtgame/core/models/team.ts","ng://@mtgame/core/models/organization.ts","ng://@mtgame/core/models/league.ts","ng://@mtgame/core/models/tournament.ts","ng://@mtgame/core/models/volleyball-game-config.ts","ng://@mtgame/core/models/basketball-game-config.ts","ng://@mtgame/core/models/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/models/handball-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/handball-game-log.ts","ng://@mtgame/core/models/football-game-statistic.ts","ng://@mtgame/core/models/football-statistic.ts","ng://@mtgame/core/models/football-game-team-statistic.ts","ng://@mtgame/core/api/football-game-api.ts","ng://@mtgame/core/models/tournament-stage.ts","ng://@mtgame/core/models/handball-game-statistic.ts","ng://@mtgame/core/models/handball-statistic.ts","ng://@mtgame/core/models/handball-game-team-statistic.ts","ng://@mtgame/core/api/handball-game-api.ts","ng://@mtgame/core/models/tournament-news.ts","ng://@mtgame/core/models/game-timeline-stages.ts","ng://@mtgame/core/models/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/handball-game-log-types.ts","ng://@mtgame/core/localization/overtime-types.ts","ng://@mtgame/core/localization/team-user-role.ts","ng://@mtgame/core/localization/user-profile.ts","ng://@mtgame/core/localization/volleyball-game-log-types.ts","ng://@mtgame/core/models/league-playlist.ts","ng://@mtgame/core/services/centrifugo.service.ts","ng://@mtgame/core/storage/storage-engine.ts","ng://@mtgame/core/storage/local-storage-engine.ts","ng://@mtgame/core/utils/cookie.ts","ng://@mtgame/core/utils/favicon.ts","ng://@mtgame/core/http-cookie.interceptor.ts","ng://@mtgame/core/utils/component-destroyed.ts","ng://@mtgame/core/utils/validators.ts","ng://@mtgame/core/utils/enum.ts","ng://@mtgame/core/utils/errors.ts","ng://@mtgame/core/utils/device.ts","ng://@mtgame/core/utils/form.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__values","o","m","__read","ar","error","__spread","concat","HockeyPenaltyTypes","id","code","title","BaseModel","data","_b","keys","_c","toFront","dto","toBack","enumField","enumClass","isNaN","penaltyTypeField","find","item","listField","modelClass","isArray","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","_originalName","name","file","original_name","mime_type","size","engine","created_at","createdAt","GameBasketballPosition","WorkHand","Sport","isBasketball","basketball","parentId","isClassicBasketball","classic_basketball","isStreetball","streetball","isVolleyball","volleyball","isClassicVolleyball","classic_volleyball","isBeachVolleyball","beach_volleyball","isHockey","hockey","isIceHockey","ice_hockey","isBallHockey","ball_hockey","isFootball","football","isClassicFootball","classic_football","isMiniFootball","mini_football","isHandball","handball","isHandballClassic","handball_classic","sport","parent_id","sub_sports","UserProfile","user_id","height","weight","City","GameVolleyballPosition","VolleyballWorkHand","BasketballProfile","position","work_hand","workHand","GameHockeyPosition","HockeyWorkHand","VolleyballProfile","GameFootballPosition","FootballWorkFoot","HockeyProfile","GameHandballPosition","FootballProfile","work_foot","workFoot","UserGender","HandballProfile","TournamentSeasonStatuses","User","user","lastName","firstName","filter","join","substr","birthDate","diff","getTime","Math","floor","last_name","first_name","middle_name","email","phone","birth_date","photo","profile","basketball_profile","volleyball_profile","hockey_profile","football_profile","handball_profile","wizards","city","gender","is_active","basketballProfile","volleyballProfile","hockeyProfile","footballProfile","handballProfile","Team","getEmptyLogoClass","classList","team","logo","owner","users_count","won_games_count","games_count","score_sum","closest_game_datetime","closestGameDatetime","Organization","owner_id","League","_this","documents","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","HandballGameConfig","Game","scoreByPeriod","period","teamScore","competitorTeamScore","closed","competitorTeam","teamId","competitorTeamId","tournament_team_id","competitor_team","competitor_tournament_team_id","competitor_team_id","competitor_team_name","datetime","team_score","competitor_team_score","result_type","playoff_number","tournament_tour","basketball_game_config","volleyball_game_config","hockey_game_config","football_game_config","handball_game_config","score_by_period","playoff_stage","tournament_stage_id","tournament_playoff_id","tournament_court","media_count","media_live_count","media","resultType","basketballGameConfig","volleyballGameConfig","hockeyGameConfig","footballGameConfig","handballGameConfig","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","gameTime","tournament_team_user","month","win_lose","two_points_made","three_points_made","free_throws_made","one_points_made","two_point_attempts","three_point_attempts","free_throw_attempts","one_point_attempts","two_point_percent","three_point_percent","free_throw_percent","one_point_percent","assists","blocks","rebounds","offensive_rebounds","defensive_rebounds","steals","turnovers","personal_fouls","technical_fouls","unsportsmanlike_fouls","game_time","newbie","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","pp_shot_misses","pp_shots_on_goal","pp_shots_blocked","ev_shot_misses","ev_shots_on_goal","ev_shots_blocked","sh_shot_misses","sh_shots_on_goal","sh_shots_blocked","pp_goals","ev_goals","sh_goals","pp_assists","ev_assists","sh_assists","shootout_attempts","shootout_goals","block_shots","face_off_losses","face_off_wins","goals_against","safety_rate","penalty_minutes","plus_minus","HockeyStatistic","lose_games_count","pp_shots","ev_shots","sh_shots","pp_goals_percent","ev_goals_percent","sh_goals_percent","goals","shot_misses","shots_on_goal","shots_blocked","shots","goals_percent","shots_against","saves_percent","face_offs","face_off_percent","HockeyGameTeamStatistic","HockeyGameApi","format","params","HttpParams","downloadApplication","HandballGameLogTypes","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","TournamentStageStatuses","HandballGameLog","foul","yellow_card","red_card","HandballGameStatistic","penaltyShotsOnGoal","penaltyMisses","penaltyShots","penalty_misses","penalty_shots_on_goal","yellowCards","two_minute_fouls","HandballStatistic","penalty_shots","HandballGameTeamStatistic","HandballGameApi","TournamentNews","picture","text","author","GameTimelineStageItem","stage_id","playoff_stages_count","GameTimelineStages","current_tour","current_playoff_stage","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","getHandballStatistic","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","perfect_pass","loss","out","HandballGameLogTypeLocalization","_a$4","penalty_miss","penalty_shot_on_goal","two_minute_foul","OvertimeTypeLocalization","_a$5","to_score_diff","to_score_total","without_overtime","to_first_goal","to_first_goal_and_bullitts","bullitts","penalties","time_and_penalties","TeamUserRoleLocalization","_a$6","member","moderator","admin","coach","head_coach","playing_coach","manager","head_manager","captain","assistant","GameBasketballPositionLocalization","_a$7","point_guard","shooting_guard","small_forward","power_forward","center","GameBasketballPositionShortLocalization","WorkHandLocalization","left","right","GameVolleyballPositionLocalization","_d","setter","libero","middle_player","receiver_attacker","dioganal","GameVolleyballPositionShortLocalization","_e","GameVolleyballPositionShortRuLocalization","_f","VolleyballWorkHandLocalization","_g","GameHockeyPositionLocalization","_h","goaltender","defensemen","forward","GameFootballPositionLocalization","_j","goalkeeper","midfielder","FootballWorkFootLocalization","_k","both","GameHandballPositionLocalization","_l","winger","pivot","centre_back","fullback","VolleyballGameLogTypeLocalization","_a$8","LeaguePlaylist","key_code","CentrifugoService","channels$","subscriptions","connectedSubject","listen","channel","Subject","subscription","connect","subscribe","connected","addEngineSubscription","setTimeout","unsubscribe","initializeEngineSubject","ReplaySubject","initializeEngine","url","timestamp","transports","centrifuge","on","publish","Observable","observer","res","disconnect","Centrifuge","resolveMessage","bind","StorageEngineField","defaultValue","StorageEngine","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","withCredentials","clone","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, DateTimeField } from './util';\n\nexport enum FileEngine {\n django = 1,\n s3\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n original_name: 'originalName',\n path: 'path',\n mime_type: 'mimeType',\n size: 'size',\n engine: 'engine',\n created_at: 'createdAt',\n },\n relation: {\n engine: enumField(FileEngine),\n createdAt: DateTimeField,\n }\n})\nexport class File {\n id: number;\n name: string;\n _originalName: string;\n path: string;\n mimeType: string;\n size: number;\n engine: FileEngine;\n createdAt: Date;\n\n set originalName(name: string) {\n this._originalName = name;\n }\n\n get originalName(): string {\n return this._originalName || this.name;\n }\n\n @ToFrontHook\n static toFront(data: any): File {\n return null;\n }\n\n @ToBackHook\n static toBack(file: File): any {\n return null;\n }\n}\n","import {ModelInstance, ToFrontHook, ToBackHook, BaseModel} from './util';\n\nexport enum SportTypes {\n basketball = 1,\n volleyball = 2,\n classic_basketball = 3,\n streetball = 4,\n classic_volleyball = 5,\n beach_volleyball = 6,\n hockey = 7,\n ice_hockey = 8,\n ball_hockey = 9,\n football = 10,\n classic_football = 11,\n mini_football = 12,\n handball = 13,\n handball_classic = 14\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n parent_id: 'parentId',\n sub_sports: 'subSports'\n }\n})\nexport class Sport extends BaseModel {\n id: number;\n name: string;\n parentId: number;\n subSports: Sport[];\n\n isBasketball() {\n return this.id === SportTypes.basketball || this.parentId === SportTypes.basketball;\n }\n\n isClassicBasketball() {\n return this.id === SportTypes.classic_basketball;\n }\n\n isStreetball() {\n return this.id === SportTypes.streetball;\n }\n\n isVolleyball() {\n return this.id === SportTypes.volleyball || this.parentId === SportTypes.volleyball;\n }\n\n isClassicVolleyball() {\n return this.id === SportTypes.classic_volleyball;\n }\n\n isBeachVolleyball() {\n return this.id === SportTypes.beach_volleyball;\n }\n\n isHockey(): boolean {\n return this.id === SportTypes.hockey || this.parentId === SportTypes.hockey;\n }\n\n isIceHockey(): boolean {\n return this.id === SportTypes.ice_hockey;\n }\n\n isBallHockey(): boolean {\n return this.id === SportTypes.ball_hockey;\n }\n\n isFootball() {\n return this.id === SportTypes.football || this.parentId === SportTypes.football;\n }\n\n isClassicFootball() {\n return this.id === SportTypes.classic_football;\n }\n\n isMiniFootball() {\n return this.id === SportTypes.mini_football;\n }\n\n isHandball() {\n return this.id === SportTypes.handball || this.parentId === SportTypes.handball;\n }\n\n isHandballClassic() {\n return this.id === SportTypes.handball_classic;\n }\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(sport: Sport): any {\n return null;\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameBasketballPosition {\n point_guard = 1,\n shooting_guard,\n small_forward,\n power_forward,\n center\n}\n\nexport enum WorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameBasketballPosition),\n workHand: enumField(WorkHand)\n }\n})\nexport class BasketballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameBasketballPosition;\n workHand: WorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n height: 'height',\n weight: 'weight'\n }\n})\nexport class UserProfile {\n id: number;\n userId: number;\n height: number;\n weight: number;\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name'\n }\n})\nexport class City extends BaseModel {\n id: number;\n name: string;\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameVolleyballPosition {\n setter = 1,\n libero,\n middle_player,\n receiver_attacker,\n dioganal\n}\n\nexport enum VolleyballWorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameVolleyballPosition),\n workHand: enumField(VolleyballWorkHand)\n }\n})\nexport class VolleyballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameVolleyballPosition;\n workHand: VolleyballWorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameHockeyPosition {\n defensemen = 1,\n forward,\n goaltender\n}\n\nexport enum HockeyWorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameHockeyPosition),\n workHand: enumField(HockeyWorkHand)\n }\n})\nexport class HockeyProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameHockeyPosition;\n workHand: HockeyWorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameFootballPosition {\n defensemen = 1,\n midfielder,\n forward,\n goalkeeper\n}\n\nexport enum FootballWorkFoot {\n left = 1,\n right,\n both\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_foot: 'workFoot'\n },\n relation: {\n position: enumField(GameFootballPosition),\n workFoot: enumField(FootballWorkFoot)\n }\n})\nexport class FootballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameFootballPosition;\n workFoot: FootballWorkFoot;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { WorkHand } from './basketball-profile';\n\nexport enum GameHandballPosition {\n goalkeeper = 1,\n winger,\n pivot,\n centre_back,\n fullback\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameHandballPosition),\n workHand: enumField(WorkHand)\n }\n})\nexport class HandballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameHandballPosition;\n workHand: WorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, DateField, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { UserProfile } from './user-profile';\nimport { File } from './file';\nimport { City } from './city';\nimport { BasketballProfile } from './basketball-profile';\nimport { VolleyballProfile } from './volleyball-profile';\nimport { HockeyProfile } from './hockey-profile';\nimport { FootballProfile } from './football-profile';\nimport { HandballProfile } from './handball-profile';\n\nexport enum UserGender {\n male = 1,\n female\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n last_name: 'lastName',\n first_name: 'firstName',\n middle_name: 'middleName',\n email: 'email',\n phone: 'phone',\n birth_date: 'birthDate',\n photo: 'photo',\n profile: 'profile',\n basketball_profile: 'basketballProfile',\n volleyball_profile: 'volleyballProfile',\n hockey_profile: 'hockeyProfile',\n football_profile: 'footballProfile',\n handball_profile: 'handballProfile',\n wizards: 'wizards',\n city: 'city',\n gender: 'gender',\n is_active: 'isActive',\n },\n relation: {\n birthDate: DateField,\n photo: File,\n profile: UserProfile,\n basketballProfile: BasketballProfile,\n volleyballProfile: VolleyballProfile,\n hockeyProfile: HockeyProfile,\n footballProfile: FootballProfile,\n handballProfile: HandballProfile,\n city: City,\n gender: enumField(UserGender)\n }\n})\nexport class User extends BaseModel {\n id: number;\n lastName: string;\n firstName: string;\n middleName: string;\n email: string;\n phone: string;\n birthDate: Date;\n profile: UserProfile;\n basketballProfile: BasketballProfile;\n volleyballProfile: VolleyballProfile;\n hockeyProfile: HockeyProfile;\n footballProfile: FootballProfile;\n handballProfile: HandballProfile;\n photo: File;\n wizards: string[];\n city: City;\n gender: UserGender;\n isActive: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(user: User): any {\n return null;\n }\n\n get fullName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get shortName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get initials(): string {\n return [this.lastName, this.firstName].filter(s => s).map(s => s.substr(0, 1)).join('');\n }\n\n get age(): number {\n if (!this.birthDate) {\n return null;\n }\n const diff = (new Date()).getTime() - this.birthDate.getTime();\n return Math.floor(diff / (365 * 86400 * 1000));\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, enumField, DateField } from './util';\nimport { File } from './file';\n\nexport enum TournamentSeasonStatuses {\n open,\n in_progress,\n closed,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n alias: 'alias',\n logo: 'logo',\n cover: 'cover',\n preview_image: 'previewImage',\n status: 'status',\n start_date: 'startDate',\n closed_date: 'closedDate',\n },\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, listField } from './util';\nimport { Organization } from './organization';\nimport { File } from './file';\nimport { Sport } from './sport';\n\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n logo: 'logo',\n contact_email: 'contactEmail',\n contact_phone: 'contactPhone',\n name: 'name',\n alias: 'alias',\n sport: 'sport',\n description: 'description',\n social_links: 'socialLinks',\n links: 'links',\n organization: 'organization',\n tournaments_count: 'tournamentsCount',\n closest_game_datetime: 'closestGameDatetime',\n cover: 'cover',\n about: 'about',\n documents: 'documents',\n },\n relation: {\n organization: Organization,\n logo: File,\n cover: File,\n sport: Sport,\n documents: listField(File),\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 documents: File[] = [];\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';\nimport { HandballGameConfig } from './handball-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 handball_game_config: 'handballGameConfig',\n score_by_period: 'scoreByPeriod',\n playoff_stage: 'playoffStage',\n tournament_stage_id: 'tournamentStageId',\n tournament_playoff_id: 'tournamentPlayoffId',\n tournament_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 handballGameConfig: HandballGameConfig,\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 handballGameConfig: HandballGameConfig;\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","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class HandballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","export function 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 game_time: 'gameTime',\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 gameTime: number;\n newbie: boolean;\n\n get totalFouls() {\n return this.personalFouls + this.technicalFouls + this.unsportsmanlikeFouls;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { BasketballStatistic } from './basketball-statistic';\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 if (!this.gameTime) {\n return '00:00';\n }\n const minutes = Math.floor(this.gameTime / 60);\n const seconds = Math.floor(this.gameTime - minutes * 60);\n return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;\n }\n\n get gamesWonPercent(): number {\n if (!this.gamesCount) {\n return 0;\n }\n return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { HockeyStatistic } from './hockey-statistic';\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, DateTimeField, enumField } from './util';\nimport { GameLogBase } from './game-log-base';\nimport { GameUser } from './game-user';\n\nexport enum HandballGameLogTypes {\n enter_game = 1,\n exit_game,\n shot_miss,\n shot_on_goal,\n shot_blocked,\n goal,\n assist,\n penalty_miss,\n penalty_shot_on_goal,\n penalty_goal,\n save,\n penalty_save,\n foul,\n yellow_card,\n red_card,\n two_minute_foul,\n turnover,\n steal,\n block_shot,\n timeout\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n is_goalie: 'isGoalie',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(HandballGameLogTypes)\n }\n})\nexport class HandballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: HandballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n isGoalie: boolean;\n\n compare(model: HandballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n isScoreType(): boolean {\n return [HandballGameLogTypes.goal, HandballGameLogTypes.penalty_goal].indexOf(this.logType) > -1;\n }\n\n isAfter(log: HandballGameLog): boolean {\n if (this.time === log.time && this.period === log.period) {\n return this.id > log.id;\n }\n if (this.period === log.period) {\n return this.time > log.time;\n }\n return this.period > log.period;\n }\n\n isFoulType(): boolean {\n return [HandballGameLogTypes.foul, HandballGameLogTypes.yellow_card, HandballGameLogTypes.red_card].indexOf(this.logType) > -1;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n updated_at: 'updatedAt',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n goals: 'goals',\n assists: 'assists',\n corners: 'corners',\n free_kicks: 'freeKicks',\n penalty_goals: 'penaltyGoals',\n penalty_attempts: 'penaltyAttempts',\n penalty_goals_against: 'penaltyGoalsAgainst',\n penalty_saves: 'penaltySaves',\n small_penalty_goals: 'smallPenaltyGoals',\n small_penalty_attempts: 'smallPenaltyAttempts',\n small_penalty_goals_against: 'smallPenaltyGoalsAgainst',\n small_penalty_saves: 'smallPenaltySaves',\n saves: 'saves',\n goals_against: 'goalsAgainst',\n safety_rate: 'safetyRate',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n fouls: 'fouls',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n perfect_passes: 'perfectPasses',\n losses: 'losses',\n steals: 'steals',\n outs: 'outs',\n block_shots: 'blockShots'\n },\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 if (!this.gameTime) {\n return '00:00';\n }\n const minutes = Math.floor(this.gameTime / 60);\n const seconds = Math.floor(this.gameTime - minutes * 60);\n return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { FootballStatistic } from './football-statistic';\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 { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField, DateField } from './util';\n\nexport enum TournamentStageStatuses {\n open,\n in_progress,\n closed\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n date: 'date',\n tournament_id: 'tournamentId',\n status: 'status',\n },\n relation: {\n date: DateField,\n status: enumField(TournamentStageStatuses)\n }\n})\nexport class TournamentStage extends BaseModel {\n id: number;\n name: string;\n date: Date;\n tournamentId: number;\n status: TournamentStageStatuses;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n goals: 'goals',\n assists: 'assists',\n penalty_goals: 'penaltyGoals',\n penalty_misses: 'penaltyMisses',\n penalty_shots_on_goal: 'penaltyShotsOnGoal',\n saves: 'saves',\n penalty_saves: 'penaltySaves',\n goals_against: 'goalsAgainst',\n penalty_goals_against: 'penaltyGoalsAgainst',\n safety_rate: 'safetyRate',\n fouls: 'fouls',\n yellowCards: 'yellowCards',\n red_cards: 'redCards',\n two_minute_fouls: 'twoMinuteFouls',\n turnovers: 'turnovers',\n steals: 'steals',\n block_shots: 'blockShots',\n game_time: 'gameTime',\n plus_minus: 'plusMinus'\n }\n})\nexport class HandballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n goals: number;\n assists: number;\n penaltyGoals: number;\n penaltyMisses: number;\n penaltyShotsOnGoal: number;\n saves: number;\n penaltySaves: number;\n goalsAgainst: number;\n penaltyGoalsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n twoMinuteFouls: number;\n turnovers: number;\n steals: number;\n blockShots: number;\n gameTime: number;\n plusMinus: number;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get shots(): number {\n return (this.shotMisses || 0) + (this.shotsOnGoal || 0) + (this.shotsBlocked || 0);\n }\n\n\n get totalGoals(): number {\n return (this.goals || 0) + (this.penaltyGoals || 0);\n }\n\n get goalsPercent(): number {\n if (!this.shots || !this.totalGoals) {\n return 0;\n }\n return Math.round(1000 * this.totalGoals / this.shots) / 10;\n }\n\n get shotsOnGoalPercent(): number {\n if (!this.shotsOnGoal || !this.shots) {\n return 0;\n }\n return Math.round(1000 * this.shotsOnGoal / this.shots) / 10;\n }\n\n get penaltyShots(): number {\n return (this.penaltyShotsOnGoal || 0) + (this.penaltyMisses || 0);\n }\n\n get penaltyGoalsPercent(): number {\n if (!this.penaltyShots || !this.penaltyGoals) {\n return 0;\n }\n return Math.round(1000 * this.penaltyGoals / this.penaltyShots) / 10;\n }\n\n get shotsAgainst(): number {\n return (this.saves || 0) + (this.goalsAgainst || 0);\n }\n\n get penaltyShotsAgainst(): number {\n return (this.penaltySaves || 0) + (this.penaltyGoalsAgainst || 0);\n }\n\n get totalGoalsAgainst(): number {\n return (this.goalsAgainst || 0) + (this.penaltyGoalsAgainst || 0);\n }\n\n get totalSaves(): number {\n return (this.saves || 0) + (this.penaltySaves || 0);\n }\n\n get savesPercent(): number {\n if (!this.shotsAgainst || !this.saves) {\n return 0;\n }\n return Math.round(1000 * this.saves / this.shotsAgainst) / 10;\n }\n\n get penaltySavesPercent(): number {\n if (!this.penaltyShotsAgainst || !this.penaltySaves) {\n return 0;\n }\n return Math.round(1000 * this.penaltySaves / this.penaltyShotsAgainst) / 10;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n goals: 'goals',\n assists: 'assists',\n penalty_goals: 'penaltyGoals',\n penalty_misses: 'penaltyMisses',\n penalty_shots_on_goal: 'penaltyShotsOnGoal',\n saves: 'saves',\n penalty_saves: 'penaltySaves',\n goals_against: 'goalsAgainst',\n penalty_goals_against: 'penaltyGoalsAgainst',\n safety_rate: 'safetyRate',\n fouls: 'fouls',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n two_minute_fouls: 'twoMinuteFouls',\n turnovers: 'turnovers',\n steals: 'steals',\n block_shots: 'blockShots',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n shots: 'shots',\n goals_percent: 'goalsPercent',\n penalty_shots: 'penaltyShots',\n penalty_goals_percent: 'penaltyGoalsPercent',\n shots_against: 'shotsAgainst',\n saves_percent: 'savesPercent',\n penalty_shots_against: 'penaltyShotsAgainst',\n penalty_saves_percent: 'penaltySavesPercent',\n total_goals: 'totalGoals',\n total_saves: 'totalSaves',\n total_goals_against: 'totalGoalsAgainst',\n newbie: 'newbie'\n },\n relation: {\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class HandballStatistic extends 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 goals: number;\n assists: number;\n penaltyGoals: number;\n penaltyMisses: number;\n penaltyShotsOnGoal: number;\n saves: number;\n penaltySaves: number;\n goalsAgainst: number;\n penaltyGoalsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n twoMinuteFouls: number;\n turnovers: number;\n steals: number;\n blockShots: number;\n gameTime: number;\n plusMinus: number;\n shots: number;\n goalsPercent: number;\n penaltyShots: number;\n penaltyGoalsPercent: number;\n shotsAgainst: number;\n savesPercent: number;\n penaltyShotsAgainst: number;\n penaltySavesPercent: number;\n totalGoals: number;\n totalSaves: number;\n totalGoalsAgainst: number;\n newbie: boolean;\n\n get userMinutes(): string {\n if (!this.gameTime) {\n return '00:00';\n }\n const minutes = Math.floor(this.gameTime / 60);\n const seconds = Math.floor(this.gameTime - minutes * 60);\n return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { HandballStatistic } from './handball-statistic';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: HandballStatistic,\n competitorTeam: HandballStatistic\n }\n})\nexport class HandballGameTeamStatistic extends BaseModel {\n team: HandballStatistic;\n competitorTeam: HandballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { HandballGameLog } from '../models/handball-game-log';\nimport { HandballGameStatistic } from '../models/handball-game-statistic';\nimport { HandballGameTeamStatistic } from '../models/handball-game-team-statistic';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class HandballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<HandballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/team_statistic/`).pipe(\n map(result => HandballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<HandballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/user_statistic/`).pipe(\n map(result => HandballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<HandballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/logs/`).pipe(\n map(result => HandballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadApplication(gameId: number, format: 'pdf' | 'xlsx' | 'html', type: 'game_user' | 'tournament_user'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/game_application_file/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { File } from './file';\nimport { User } from './user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n picture: 'picture',\n text: 'text',\n author: 'author',\n created_at: 'createdAt',\n },\n relation: {\n picture: File,\n author: User,\n createdAt: DateTimeField,\n }\n})\nexport class TournamentNews extends BaseModel {\n id: number;\n title: string;\n picture: File;\n text: string;\n author: User;\n createdAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField } from './util';\n\n@ModelInstance({\n mappingFields: {\n stage_id: 'stageId',\n tours_count: 'toursCount',\n playoff_stages_count: 'playoffStagesCount',\n }\n})\nexport class GameTimelineStageItem {\n stageId: number;\n toursCount: number;\n playoffStagesCount: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n tours_count: 'toursCount',\n playoff_stages_count: 'playoffStagesCount',\n current_tour: 'currentTour',\n current_playoff_stage: 'currentPlayoffStage',\n stages: 'stages',\n tournament_stage_id: 'tournamentStageId',\n },\n relation: {\n stages: listField(GameTimelineStageItem)\n }\n})\nexport class GameTimelineStages extends BaseModel {\n toursCount: number;\n playoffStagesCount: number;\n currentTour: number;\n currentPlayoffStage: number;\n stages: GameTimelineStageItem[];\n tournamentStageId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, 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';\nimport { HandballStatistic } from '../models/handball-statistic';\n\nexport interface TournamentGamesFilters {\n tournamentIds?: number[];\n tournamentSeasonId?: number;\n tournamentStageId?: number;\n tournamentTour?: number;\n teamId?: number;\n playoffStage?: number;\n playoffId?: number;\n 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 getHandballStatistic(filters?: StatisticFilters): Promise<HandballStatistic[]> {\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/handball_statistic/`, {params}).pipe(\n map(result => HandballStatistic.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 { HandballGameLogTypes } from '../models/handball-game-log';\n\nexport const HandballGameLogTypeLocalization = {\n [HandballGameLogTypes.enter_game]: 'Выход на поле',\n [HandballGameLogTypes.exit_game]: 'Ушел с поля',\n [HandballGameLogTypes.shot_miss]: 'Бросок мимо',\n [HandballGameLogTypes.shot_on_goal]: 'Бросок в створ',\n [HandballGameLogTypes.shot_blocked]: 'Заблокированный бросок',\n [HandballGameLogTypes.goal]: 'Гол',\n [HandballGameLogTypes.assist]: 'Передача',\n [HandballGameLogTypes.penalty_miss]: 'Пенальти промах',\n [HandballGameLogTypes.penalty_shot_on_goal]: 'Пенальти в створ',\n [HandballGameLogTypes.penalty_goal]: 'Гол с пенальти',\n [HandballGameLogTypes.save]: 'Сэйв',\n [HandballGameLogTypes.penalty_save]: 'Сэйв пенальти',\n [HandballGameLogTypes.foul]: 'Фол',\n [HandballGameLogTypes.yellow_card]: 'Желлтая карточка',\n [HandballGameLogTypes.red_card]: 'Красная карточка',\n [HandballGameLogTypes.two_minute_foul]: '2х минутный штраф',\n [HandballGameLogTypes.turnover]: 'Потеря',\n [HandballGameLogTypes.steal]: 'Перехват',\n [HandballGameLogTypes.block_shot]: 'Блок броска',\n [HandballGameLogTypes.timeout]: 'Таймаут'\n};\n","import { OvertimeTypes } from '../models/tournament';\n\nexport const OvertimeTypeLocalization = {\n [OvertimeTypes.to_score_diff]: 'До разницы в N мячей',\n [OvertimeTypes.to_score_total]: 'До N очков',\n [OvertimeTypes.time]: 'По времени',\n [OvertimeTypes.without_overtime]: 'Без овертайма',\n [OvertimeTypes.to_first_goal]: 'На N минут до первой шайбы',\n [OvertimeTypes.to_first_goal_and_bullitts]: 'На N минут до первой шайбы + буллиты',\n [OvertimeTypes.bullitts]: 'Буллиты',\n [OvertimeTypes.penalties]: 'Пенальти',\n [OvertimeTypes.time_and_penalties]: 'Дополнительное время + пенальти'\n};\n","import { TeamUserRole } from '../models/team-user';\n\nexport const TeamUserRoleLocalization = {\n [TeamUserRole.member]: 'Пользователь',\n [TeamUserRole.moderator]: 'Модератор',\n [TeamUserRole.admin]: 'Владелец',\n [TeamUserRole.coach]: 'Тренер',\n [TeamUserRole.head_coach]: 'Главный тренер',\n [TeamUserRole.playing_coach]: 'Играющий тренер',\n [TeamUserRole.manager]: 'Менеджер',\n [TeamUserRole.head_manager]: 'Генеральный менеджер',\n [TeamUserRole.captain]: 'Капитан',\n [TeamUserRole.assistant]: 'Ассистент',\n};\n","import { GameBasketballPosition, WorkHand } from '../models/basketball-profile';\nimport { GameVolleyballPosition, VolleyballWorkHand } from '../models/volleyball-profile';\nimport { GameHockeyPosition } from '../models/hockey-profile';\nimport { FootballWorkFoot, GameFootballPosition } from '../models/football-profile';\nimport { GameHandballPosition } from '../models/handball-profile';\n\nexport const GameBasketballPositionLocalization = {\n [GameBasketballPosition.point_guard]: 'Разыгрывающий защитник',\n [GameBasketballPosition.shooting_guard]: 'Атакующий защитник',\n [GameBasketballPosition.small_forward]: 'Легкий форвард',\n [GameBasketballPosition.power_forward]: 'Мощный форвард',\n [GameBasketballPosition.center]: 'Центровой',\n};\n\nexport const GameBasketballPositionShortLocalization = {\n [GameBasketballPosition.point_guard]: 'PG',\n [GameBasketballPosition.shooting_guard]: 'SG',\n [GameBasketballPosition.small_forward]: 'SF',\n [GameBasketballPosition.power_forward]: 'PF',\n [GameBasketballPosition.center]: 'C',\n};\n\nexport const WorkHandLocalization = {\n [WorkHand.left]: 'Левая',\n [WorkHand.right]: 'Правая'\n};\n\nexport const GameVolleyballPositionLocalization = {\n [GameVolleyballPosition.setter]: 'Связующий',\n [GameVolleyballPosition.libero]: 'Либеро',\n [GameVolleyballPosition.middle_player]: 'Центральный блокирующий',\n [GameVolleyballPosition.receiver_attacker]: 'Доигровщик',\n [GameVolleyballPosition.dioganal]: 'Диагональный',\n};\n\nexport const GameVolleyballPositionShortLocalization = {\n [GameVolleyballPosition.setter]: 'S',\n [GameVolleyballPosition.libero]: 'L',\n [GameVolleyballPosition.middle_player]: 'MP',\n [GameVolleyballPosition.receiver_attacker]: 'RA',\n [GameVolleyballPosition.dioganal]: 'D',\n};\n\nexport const GameVolleyballPositionShortRuLocalization = {\n [GameVolleyballPosition.setter]: 'связ.',\n [GameVolleyballPosition.libero]: 'либеро',\n [GameVolleyballPosition.middle_player]: 'блок.',\n [GameVolleyballPosition.receiver_attacker]: 'доигр.',\n [GameVolleyballPosition.dioganal]: 'диаг.',\n};\n\nexport const VolleyballWorkHandLocalization = {\n [VolleyballWorkHand.left]: 'Левая',\n [VolleyballWorkHand.right]: 'Правая'\n};\n\nexport const GameHockeyPositionLocalization = {\n [GameHockeyPosition.goaltender]: 'Вратарь',\n [GameHockeyPosition.defensemen]: 'Защитник',\n [GameHockeyPosition.forward]: 'Нападающий'\n};\n\nexport const GameFootballPositionLocalization = {\n [GameFootballPosition.goalkeeper]: 'Вратарь',\n [GameFootballPosition.defensemen]: 'Защитник',\n [GameFootballPosition.midfielder]: 'Полузащитник',\n [GameFootballPosition.forward]: 'Нападающий'\n};\n\nexport const FootballWorkFootLocalization = {\n [FootballWorkFoot.left]: 'Левая',\n [FootballWorkFoot.right]: 'Правая',\n [FootballWorkFoot.both]: 'Обе'\n};\n\nexport const GameHandballPositionLocalization = {\n [GameHandballPosition.goalkeeper]: 'Вратарь',\n [GameHandballPosition.winger]: 'Крайний',\n [GameHandballPosition.pivot]: 'Линейный',\n [GameHandballPosition.centre_back]: 'Центральный',\n [GameHandballPosition.fullback]: 'Полусредний',\n};\n","import { VolleyballGameLogType } from '../models/volleyball-game-log';\n\nexport const VolleyballGameLogTypeLocalization = {\n [VolleyballGameLogType.enter_game]: 'Выход на площадку',\n [VolleyballGameLogType.exit_game]: 'Уход с площадки',\n [VolleyballGameLogType.remove_game]: 'Удаление с площадки',\n [VolleyballGameLogType.serve_ace]: 'Эйс',\n [VolleyballGameLogType.serve_hit]: 'Подача',\n [VolleyballGameLogType.serve_fault]: 'Ошибка на подаче',\n [VolleyballGameLogType.attack_spike]: 'Результативная атака',\n [VolleyballGameLogType.attack_shot]: 'Атака',\n [VolleyballGameLogType.attack_fault]: 'Ошибка атаки',\n [VolleyballGameLogType.stuff_block]: 'Результативный блок',\n [VolleyballGameLogType.block_rebound]: 'Блок',\n [VolleyballGameLogType.block_fault]: 'Ошибка на блоке',\n [VolleyballGameLogType.excellent_receive]: 'Отличный прием',\n [VolleyballGameLogType.receive]: 'Прием',\n [VolleyballGameLogType.receive_fault]: 'Ошибка на приеме',\n [VolleyballGameLogType.serve_receive]: 'Прием подачи',\n [VolleyballGameLogType.excellent_serve_receive]: 'Отличный прием подачи',\n [VolleyballGameLogType.serve_receive_fault]: 'Ошибка приема подачи',\n [VolleyballGameLogType.point]: 'Очко',\n [VolleyballGameLogType.fault]: 'Ошибка',\n [VolleyballGameLogType.timeout]: 'Таймаут',\n [VolleyballGameLogType.yellow_card]: 'Предупреждение',\n};\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n files: 'files',\n key_code: 'keyCode',\n },\n relation: {\n files: listField(File)\n }\n})\nexport class LeaguePlaylist extends BaseModel {\n id: number;\n name: string;\n files: File[];\n keyCode: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { Subject } from 'rxjs/internal/Subject';\nimport { ReplaySubject } from 'rxjs/internal/ReplaySubject';\n\nimport * as Centrifuge from 'centrifuge';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ConfigService } from './config.service';\n\ninterface CentrifugoConfig {\n user: string;\n timestamp: string;\n token: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class CentrifugoService {\n private channels$: { [key: string]: Subject<any> } = {};\n private subscriptions: { [key: string]: any } = {};\n private centrifuge;\n private initializeEngineSubject: ReplaySubject<boolean>;\n private connectedSubject = new BehaviorSubject<boolean>(false);\n\n get connected$(): Observable<boolean> {\n return this.connectedSubject;\n }\n\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) { }\n\n listen(channel): Observable<any> {\n if (channel in this.channels$) {\n return this.channels$[channel];\n }\n\n this.channels$[channel] = new Subject<any>();\n const subscription = this.connect().subscribe(connected => {\n this.subscriptions[channel] = this.addEngineSubscription(channel);\n setTimeout(() => {\n subscription.unsubscribe();\n });\n });\n\n return this.channels$[channel];\n }\n\n unsubscribe(channel): void {\n if (this.subscriptions[channel]) {\n this.subscriptions[channel].unsubscribe();\n delete this.subscriptions[channel];\n }\n if (this.channels$[channel]) {\n this.channels$[channel].complete();\n delete this.channels$[channel];\n }\n }\n\n connect(): Observable<boolean> {\n if (!this.initializeEngineSubject) {\n this.initializeEngineSubject = new ReplaySubject(1);\n\n this.httpClient.get<CentrifugoConfig>(`${this.configService.get('apiUrl')}/api/v1/centrifugo/`)\n .subscribe(config => {\n this.initializeEngine({\n url: this.configService.get('centrifugoUrl'),\n user: config.user,\n timestamp: config.timestamp,\n token: config.token,\n transports: ['websocket']\n });\n this.centrifuge.connect();\n this.centrifuge.on('connect', () => {\n this.initializeEngineSubject.next(true);\n this.connectedSubject.next(true);\n });\n this.centrifuge.on('disconnect', () => {\n this.connectedSubject.next(false);\n });\n });\n }\n\n return this.initializeEngineSubject;\n }\n\n publish(channel: string, message: any): Observable<any> {\n return new Observable<any>(observer => {\n this.connect().subscribe(() => {\n if (!this.subscriptions[channel]) {\n this.subscriptions[channel] = this.addEngineSubscription(channel);\n }\n this.subscriptions[channel].publish(message).then(res => {\n observer.next(res);\n observer.complete();\n }, error => {\n throw error;\n });\n });\n });\n }\n\n disconnect(): void {\n this.centrifuge.disconnect();\n this.initializeEngineSubject = undefined;\n this.channels$ = {};\n this.subscriptions = {};\n }\n\n private initializeEngine(config: {\n url: string,\n user: string,\n timestamp: string,\n token: string,\n transports: string[]\n }): void {\n this.centrifuge = new Centrifuge(config);\n }\n\n private addEngineSubscription(channel: string): Observable<any> {\n return this.centrifuge.subscribe(channel, this.resolveMessage.bind(this));\n }\n\n private resolveMessage(response: any): void {\n const channel = response.channel;\n if (!this.channels$[channel]) {\n return;\n }\n\n this.channels$[channel].next(response.data);\n }\n}\n","import { ModelInterface } from '../models/util';\n\nexport class StorageEngineField {\n defaultValue: any;\n\n constructor(defaultValue?: any, protected modelClass?: ModelInterface) {\n this.defaultValue = defaultValue;\n }\n\n toFront(value: any): any {\n if (this.modelClass) {\n return this.modelClass.toFront(value);\n }\n return value;\n }\n\n toBack(value: any): any {\n if (this.modelClass) {\n return this.modelClass.toBack(value);\n }\n return value;\n }\n}\n\nexport abstract class StorageEngine {\n constructor(protected name: string, protected fields: {[key: string]: StorageEngineField}) {\n }\n\n addField(key: string, field: StorageEngineField): void {\n this.fields[key] = field;\n }\n\n save(key: string, value: any): void {\n if (!this.fields[key]) {\n return;\n }\n this.setItem(`${this.name}_${key}`, this.fields[key].toBack(value));\n }\n\n get(key: string): any {\n if (!this.fields[key]) {\n return;\n }\n let value = this.getItem(`${this.name}_${key}`);\n if (value === null) {\n value = this.fields[key].defaultValue;\n }\n if (value === null || value === undefined) {\n return value;\n }\n return this.fields[key].toFront(value);\n }\n\n clear(): void {\n for (const field of Object.keys(this.fields)) {\n this.removeItem(field);\n }\n }\n\n protected getItem(key: string): any {\n throw new Error(`Function getItem for store engine ${typeof this} not implemented`);\n }\n\n protected setItem(key: string, value: any): any {\n throw new Error(`Function setItem for store engine ${typeof this} not implemented`);\n }\n\n protected removeItem(key: string): void {\n throw new Error(`Function deleteItem for store engine ${typeof this} not implemented`);\n }\n}\n","import { StorageEngine } from './storage-engine';\n\nexport class LocalStorageEngine extends StorageEngine {\n protected setItem(key: string, value: any) {\n localStorage.setItem(key, JSON.stringify(value));\n }\n\n protected getItem(key: string): any {\n try {\n return JSON.parse(localStorage.getItem(key));\n } catch (e) {\n return;\n }\n }\n\n protected removeItem(key: string): void {\n localStorage.removeItem(key);\n }\n}\n","export function getCookie(name: string): string {\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) {\n return parts.pop().split(';').shift();\n }\n return null;\n}\n","export interface LinkFavicon {\n rel: string;\n sizes?: string;\n href: string;\n type?: string;\n color?: string;\n}\n\nexport function getIconsData(folder: string): LinkFavicon[] {\n return [\n {rel: 'apple-touch-icon', sizes: '180x180', href: `/assets/favicon/${folder}apple-touch-icon.png`},\n {rel: 'icon', type: 'image/png', sizes: '32x32', href: `/assets/favicon/${folder}favicon-32x32.png`},\n {rel: 'icon', type: 'image/png', sizes: '16x16', href: `/assets/favicon/${folder}favicon-16x16.png`},\n {rel: 'shortcut icon', href: `/assets/favicon/${folder}favicon.ico`},\n {rel: 'manifest', href: `/assets/favicon/${folder}site.webmanifest`},\n {rel: 'mask-icon', href: `/assets/favicon/${folder}safari-pinned-tab.svg`, color: '#ff0000'}\n ];\n}\n\nexport function changeFavicons(document: Document, leagueAlias: string): void {\n let folder = '';\n if (leagueAlias === 'ablmoscow') {\n folder = 'abl/';\n }\n const data = getIconsData(folder);\n for (const item of data) {\n const link = document.createElement('link');\n for (const key of Object.keys(item)) {\n link.setAttribute(key, item[key]);\n }\n document.head.appendChild(link);\n }\n}\n","import { Inject, Injectable, Injector, PLATFORM_ID } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { getCookie } from './utils/cookie';\nimport { isPlatformBrowser } from '@angular/common';\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 if (req.withCredentials !== false) {\n req = req.clone({withCredentials: true});\n }\n const csrf = getCookie('csrftoken');\n if (csrf) {\n req = req.clone({\n setHeaders: {'X-CSRFToken': csrf}\n });\n }\n return next.handle(req);\n }\n}\n","import {\n ɵComponentType as ComponentType,\n ɵDirectiveType as DirectiveType,\n ɵComponentDef as ComponentDef,\n ɵDirectiveDef as DirectiveDef\n} from '@angular/core';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { Subject } from 'rxjs/internal/Subject';\n\nexport interface OnDestroyLike {\n ngOnDestroy(): void;\n [key: string]: any;\n}\n\nexport function componentDestroyed(component: OnDestroyLike): Observable<void> {\n if ((component.constructor as any).__componentDestroyed$) {\n return (component.constructor as any).__componentDestroyed$;\n }\n throw new Error('Use @UntilDestroy decorator in class');\n}\n\nexport function UntilDestroy(cmpType: any) {\n const def = getDef(cmpType as any);\n const original = (def as any).onDestroy;\n cmpType.__componentDestroyed$ = new Subject<void>();\n (def as any).onDestroy = function() {\n cmpType.__componentDestroyed$.next();\n cmpType.__componentDestroyed$.complete();\n original.apply(this);\n };\n}\n\nfunction getDef<T>(\n type: DirectiveType<T> | ComponentType<T>\n): DirectiveDef<T> | ComponentDef<T> {\n return (type as ComponentType<T>).ɵcmp || (type as DirectiveType<T>).ɵdir;\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { debounceTime, delay, map, switchMap } from 'rxjs/operators';\nimport { Observable, of } from 'rxjs';\n\nexport interface CheckEmailServiceInterface {\n checkEmail(value: string, selfCheck: boolean): Observable<boolean>;\n}\n\nexport const minLengthArrayValidator = (minLength: number) => {\n return (c: AbstractControl) => {\n return c.value.length < minLength\n ? {minLengthArray: {valid: false}}\n : null;\n };\n};\n\nexport const validatePhone = (control: AbstractControl) => {\n if (!control.value) {\n return null;\n }\n const value = `${control.value}`.replace(/\\D/gi, '');\n return value.length === 11 ? null : {invalidPhone: {valid: false}};\n};\n\nexport const validateDate = (control: AbstractControl) => {\n const re = /\\d{2}\\.\\d{2}\\.\\d{4}/gi;\n if (!control.value || re.test(control.value)) {\n return null;\n }\n return {invalidDate: {valid: false}};\n};\n\nexport const validateEmail = (authService: CheckEmailServiceInterface, selfCheck = true, ignore = []) => {\n const subject = of(null).pipe(\n delay(500)\n );\n return (control: AbstractControl) => {\n if (ignore.indexOf(control.value) > -1) {\n return of(null);\n }\n return subject.pipe(\n switchMap(() => authService.checkEmail(control.value, selfCheck).pipe(\n map(valid => valid ? null : {emailTaken: true})\n ))\n );\n };\n};\n\nexport const validateUrl = (control: AbstractControl) => {\n const re = /^(?:http(s)?:\\/\\/)[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/;\n if (!control.value || re.test(control.value)) {\n return null;\n }\n return {invalidUrl: true};\n};\n\nexport function fileSizeValidator(maxFileSize: number): ValidatorFn {\n return (control: AbstractControl): {[key: string]: any} | null => {\n if (!control.value) {\n return null;\n }\n };\n}\n","export function getEnumOptions(enumClass): number[] {\n return Object.keys(enumClass)\n .map(v => enumClass[v])\n .filter(v => isNaN(+v) === false)\n .map(v => +v);\n}\n\n","import { captureException } from '@sentry/browser';\n\nexport function handleError(error, force = false, production = true) {\n if (!(error && (error.status === 0 || error.status === 404)) || (force && error.status !== 0)) {\n captureException(error);\n }\n\n if (!production) {\n console.error(error);\n }\n}\n","export function isTouchDevice() {\n const prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');\n const mq = (q) => {\n return window.matchMedia(q).matches;\n };\n\n if (('ontouchstart' in window) || (window as any).DocumentTouch && document instanceof (window as any).DocumentTouch) {\n return true;\n }\n\n // include the 'heartz' as a way to have a non matching MQ to help terminate the join\n // https://git.io/vznFH\n const query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\n return mq(query);\n}\n","import { FormGroup } from '@angular/forms';\n\nexport function markFormGroupTouched(formGroup: FormGroup) {\n (Object as any).values(formGroup.controls).forEach(control => {\n control.markAsTouched();\n control.markAsDirty();\n\n if (control instanceof FormGroup) {\n markFormGroupTouched(control);\n } else if (control.controls) {\n control.controls.forEach(c => {\n if (c instanceof FormGroup) {\n markFormGroupTouched(c);\n } else {\n c.markAsTouched();\n c.markAsDirty();\n }\n });\n }\n });\n}\n"]}