@mtgame/core 0.0.14 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/mtgame-core.umd.js +5 -0
- package/bundles/mtgame-core.umd.js.map +1 -1
- package/bundles/mtgame-core.umd.min.js +1 -1
- package/bundles/mtgame-core.umd.min.js.map +1 -1
- package/esm2015/models/tournament-team.js +6 -1
- package/esm5/models/tournament-team.js +6 -1
- package/fesm2015/mtgame-core.js +5 -0
- package/fesm2015/mtgame-core.js.map +1 -1
- package/fesm5/mtgame-core.js +5 -0
- package/fesm5/mtgame-core.js.map +1 -1
- package/models/tournament-team.d.ts +5 -0
- package/mtgame-core.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@mtgame/core/models/util.ts","ng://@mtgame/core/models/file.ts","ng://@mtgame/core/models/sport.ts","ng://@mtgame/core/models/basketball-profile.ts","ng://@mtgame/core/models/user-profile.ts","ng://@mtgame/core/models/city.ts","ng://@mtgame/core/models/volleyball-profile.ts","ng://@mtgame/core/models/hockey-profile.ts","ng://@mtgame/core/models/user.ts","ng://@mtgame/core/models/tournament.ts","ng://@mtgame/core/models/team.ts","ng://@mtgame/core/models/organization.ts","ng://@mtgame/core/models/league.ts","ng://@mtgame/core/models/volleyball-game-config.ts","ng://@mtgame/core/models/basketball-game-config.ts","ng://@mtgame/core/models/game.ts","ng://@mtgame/core/models/league-court.ts","ng://@mtgame/core/models/media-item.ts","ng://@mtgame/core/models/hockey-game-config.ts","ng://@mtgame/core/models/team-user.ts","ng://@mtgame/core/models/tournament-group.ts","ng://@mtgame/core/models/tournament-team.ts","ng://@mtgame/core/models/tournament-disqualification.ts","ng://@mtgame/core/models/tournament-team-user.ts","ng://@mtgame/core/models/game-user.ts","ng://@mtgame/core/utils/data.ts","ng://@mtgame/core/models/basketball-game-log.ts","ng://@mtgame/core/storage/store.ts","ng://@mtgame/core/services/base.service.ts","ng://@mtgame/core/services/config.service.ts","ng://@mtgame/core/models/base-statistic.ts","ng://@mtgame/core/models/basketball-statistic.ts","ng://@mtgame/core/models/basketball-game-team-statistic.ts","ng://@mtgame/core/models/basketball-game-statistic.ts","ng://@mtgame/core/models/hockey-game-log.ts","ng://@mtgame/core/api/basketball-game-api.ts","ng://@mtgame/core/models/feedback.ts","ng://@mtgame/core/api/feedback-api.ts","ng://@mtgame/core/api/file-api.ts","ng://@mtgame/core/models/tournament-event.ts","ng://@mtgame/core/models/hockey-game-statistic.ts","ng://@mtgame/core/models/hockey-statistic.ts","ng://@mtgame/core/models/hockey-game-team-statistic.ts","ng://@mtgame/core/api/hockey-game-api.ts","ng://@mtgame/core/models/league-news.ts","ng://@mtgame/core/models/poll.ts","ng://@mtgame/core/api/league-api.ts","ng://@mtgame/core/api/league-news-api.ts","ng://@mtgame/core/api/media-api.ts","ng://@mtgame/core/models/game-invite.ts","ng://@mtgame/core/models/team-invite.ts","ng://@mtgame/core/models/team-event-type.ts","ng://@mtgame/core/models/team-event-invite.ts","ng://@mtgame/core/localization/team-event-type.ts","ng://@mtgame/core/models/team-event.ts","ng://@mtgame/core/models/notification.ts","ng://@mtgame/core/models/tournament-team-user-invite.ts","ng://@mtgame/core/models/tournament-invite.ts","ng://@mtgame/core/models/notification-settings.ts","ng://@mtgame/core/models/team-permission.ts","ng://@mtgame/core/api/notification-base-api.ts","ng://@mtgame/core/api/notification-api.ts","ng://@mtgame/core/api/org-notification-api.ts","ng://@mtgame/core/api/reference-api.ts","ng://@mtgame/core/models/team-invite-external.ts","ng://@mtgame/core/models/volleyball-statistic.ts","ng://@mtgame/core/models/tournament-stage.ts","ng://@mtgame/core/models/team-access.ts","ng://@mtgame/core/api/team-api.ts","ng://@mtgame/core/api/team-event-api.ts","ng://@mtgame/core/models/tournament-news.ts","ng://@mtgame/core/models/game-timeline-stages.ts","ng://@mtgame/core/models/playoff.ts","ng://@mtgame/core/utils/array.ts","ng://@mtgame/core/models/user-permission.ts","ng://@mtgame/core/models/tournament-stage-team.ts","ng://@mtgame/core/api/tournament-api.ts","ng://@mtgame/core/models/tournament-join-team.ts","ng://@mtgame/core/api/tournament-join-api.ts","ng://@mtgame/core/api/tournament-stage-api.ts","ng://@mtgame/core/models/user-access.ts","ng://@mtgame/core/models/volleyball-game-log.ts","ng://@mtgame/core/api/user-api.ts","ng://@mtgame/core/models/volleyball-game-team-statistic.ts","ng://@mtgame/core/models/volleyball-game-statistic.ts","ng://@mtgame/core/api/volleyball-game-api.ts","ng://@mtgame/core/localization/basketball-game-log-types.ts","ng://@mtgame/core/localization/hockey-game-log-types.ts","ng://@mtgame/core/localization/overtime-types.ts","ng://@mtgame/core/localization/team-user-role.ts","ng://@mtgame/core/localization/user-profile.ts","ng://@mtgame/core/localization/volleyball-game-log-types.ts","ng://@mtgame/core/services/centrifugo.service.ts","ng://@mtgame/core/storage/storage-engine.ts","ng://@mtgame/core/storage/local-storage-engine.ts","ng://@mtgame/core/utils/cookie.ts","ng://@mtgame/core/utils/favicon.ts","ng://@mtgame/core/http-cookie.interceptor.ts","ng://@mtgame/core/utils/component-destroyed.ts","ng://@mtgame/core/utils/validators.ts","ng://@mtgame/core/utils/enum.ts","ng://@mtgame/core/utils/errors.ts","ng://@mtgame/core/utils/device.ts","ng://@mtgame/core/utils/form.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__values","o","m","__read","ar","error","__spread","concat","BaseModel","data","_b","keys","_c","toFront","dto","toBack","enumField","enumClass","isNaN","listField","modelClass","isArray","DateField","_super","date","Date","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","toISOString","slice","DateTimeField","ModelInstance","config","mappingFields","relation","path","modelType","map","item","instance","backField","frontField","extractValue","undefined","FileEngine","ToFrontHook","descriptor","args","_i","parseMethod","ToBackHook","keyParts","split","keyParts_1","keyParts_1_1","k","SportTypes","File","file","id","name","mime_type","size","engine","GameBasketballPosition","WorkHand","Sport","isBasketball","basketball","parentId","isClassicBasketball","classic_basketball","isStreetball","streetball","isVolleyball","volleyball","isClassicVolleyball","classic_volleyball","isBeachVolleyball","beach_volleyball","isHockey","hockey","isIceHockey","ice_hockey","isBallHockey","ball_hockey","sport","parent_id","sub_sports","UserProfile","user_id","height","weight","City","GameVolleyballPosition","VolleyballWorkHand","BasketballProfile","position","work_hand","workHand","GameHockeyPosition","HockeyWorkHand","VolleyballProfile","UserGender","HockeyProfile","TournamentTypes","TournamentStatuses","TournamentGender","BasketballStatisticTypes","GameTimeTypes","OvertimeTypes","User","user","lastName","firstName","filter","join","substr","birthDate","diff","getTime","Math","floor","last_name","first_name","middle_name","email","phone","birth_date","photo","profile","basketball_profile","volleyball_profile","hockey_profile","wizards","city","gender","is_active","basketballProfile","volleyballProfile","hockeyProfile","Team","getEmptyLogoClass","classList","team","logo","owner","users_count","won_games_count","games_count","score_sum","closest_game_datetime","closestGameDatetime","Organization","owner_id","League","socialLinks","find","link","contact_email","contact_phone","alias","description","social_links","links","organization","tournaments_count","cover","about","VolleyballGameTypes","TournamentSettings","age_from","age_to","max_team_players","max_game_players","type","tours_count","periods_count","period_time","overtime_type","overtime_time","overtime_score","game_type","timeout_count","timeout_time","substitute_count","game_up_to_score","volleyball_score_in_set","volleyball_score_in_last_set","manage_team_application","recruitment_is_open","transfer_is_open","basketball_statistic_type","shot_clock_enabled","game_time_type","basketballStatisticType","gameTimeType","overtimeType","TournamentTeamWinner","team_id","tournament_id","points","Tournament","preview_image","location","price","regulation_files","settings","league","teams_count","status","team_winner","previewImage","regulationFile","teamWinner","BasketballGameConfig","overtime_timeout_count","statistic_type","statisticType","GameStatuses","GameResultTypes","VolleyballGameConfig","gameType","best_of_three","getSetMaxScore","set","setsCount","scoreInLastSet","scoreInSet","score_in_set","score_in_last_set","LeagueCourt","address","league_id","MediaItem","Boolean","videoUrl","original_photo","list_photo","detail_photo","game","tournament","game_id","video_url","video_preview","originalPhoto","listPhoto","detailPhoto","videoPreview","HockeyGameConfig","TeamUserRole","Game","_this","scoreByPeriod","period","teamScore","competitorTeamScore","closed","competitorTeam","teamId","competitorTeamId","tournament_team_id","competitor_team","competitor_tournament_team_id","competitor_team_id","competitor_team_name","datetime","team_score","competitor_team_score","result_type","playoff_number","tournament_tour","basketball_game_config","volleyball_game_config","hockey_game_config","score_by_period","playoff_stage","tournament_stage_id","tournament_playoff_id","tournament_court","media_count","media","resultType","basketballGameConfig","volleyballGameConfig","hockeyGameConfig","tournamentCourt","TeamUser","teamPlayer","role","number","TournamentGroup","TournamentTeam","gamesCount","wonGamesCount","group","last_games_count","last_games_won","missed_sum","score_points_sum","missed_points_sum","games","notifications_count","TournamentDisqualification","tournament_team_user_id","date_from","date_to","matches_count","dateFrom","dateTo","TournamentTeamUser","middleName","tournament_team","team_user","disqualified","disqualification","has_changes","tournamentTeam","teamUser","GameUser","tournament_team_user","updated_at","tournamentTeamUser","updatedAt","updateItemInArray","force","checkFunction","isFunction","updateItemsInArray","items","forEach","addItemInArray","atEnd","addItemsInArray","reverse","deleteItemFromArray","functionToCheck","toString","BasketballGameLogTypes","Store","get","getSubject","pipe","save","appendItem","appendItems","prependItem","prependItems","updateItem","updateItems","deleteItem","dispose","complete","clearStorageData","clear","getEngine","BehaviorSubject","BaseService","store","Injectable","providedIn","ConfigService","configData","initialize","_a","Optional","Inject","BasketballStatistic","personalFouls","technicalFouls","unsportsmanlikeFouls","month","win_lose","two_points_made","three_points_made","free_throws_made","one_points_made","two_point_attempts","three_point_attempts","free_throw_attempts","one_point_attempts","two_point_percent","three_point_percent","free_throw_percent","one_point_percent","assists","blocks","rebounds","offensive_rebounds","defensive_rebounds","steals","turnovers","personal_fouls","technical_fouls","unsportsmanlike_fouls","newbie","BaseStatistic","BasketballGameTeamStatistic","BasketballGameStatistic","gameUserId","game_user_id","HockeyGameLogTypes","HockeyAdvantageTypes","BasketballGameLog","active","isPointsType","two_point_made","three_point_made","free_throw_made","one_point_made","indexOf","logType","isReboundType","rebound","offensive_rebound","defensive_rebound","isFoulType","personal_foul","technical_foul","unsportsmanlike_foul","getScore","compare","model","time","minutes","seconds","unique_id","log_type","is_highlight","BasketballGameApi","httpClient","configService","getById","gameId","toPromise","getUsers","getTeamStatistic","getUserStatistic","getLogs","HttpClient","Feedback","theme","message","files","FeedbackApi","sendFeedback","post","response","FileApi","upload","fileData","filename","formData","FormData","append","createZipArchive","files_1","files_1_1","responseType","TournamentEventTypes","HockeyGameLog","isScoreType","goal","shootout_goal","advantage","is_goalie","HockeyGameStatistic","ppShotMisses","ppShotsOnGoal","ppShotsBlocked","evShotMisses","evShotsOnGoal","evShotsBlocked","shShotMisses","shShotsOnGoal","shShotsBlocked","goals","ppShots","evShots","shShots","ppGoals","shGoals","evGoals","ppAssists","evAssists","shAssists","faceOffWins","faceOffLosses","shootoutAttempts","shootoutGoals","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","saves","goals_against","safety_rate","penalty_minutes","game_time","plus_minus","HockeyStatistic","pp_shots","ev_shots","sh_shots","pp_goals_percent","ev_goals_percent","sh_goals_percent","shot_misses","shots_on_goal","shots_blocked","shots","goals_percent","shots_against","saves_percent","face_offs","face_off_percent","HockeyGameTeamStatistic","HockeyGameApi","LeagueNews","title","preview_text","detail_text","picture","is_main","tournaments","PollStatuses","TournamentEvent","news","event","LeagueApi","getByAlias","getByDomain","domain","getTournaments","leagueId","getEvents","page","filters","params","HttpParams","search","observe","total","headers","LeagueNewsApi","getLeagueNewsList","getMainLeagueNews","getNewsById","newsId","getTournamentNewsList","tournamentId","MediaApi","getMedia","mediaId","getTournamentGameMedia","tournamentTour","tournamentStageId","playoffId","playoffStage","getLeagueGameMedia","getGameMediaById","getGameMedia","createZip","mediaIds","downloadMedia","GameInviteStatus","PollVariant","uuid","PollAnswer","answer_uuid","poll_id","Poll","variantsWithAnswers","_variants","_answers","calculateAnswersPercentage","variants","answersByVariant","reduce","acc","answerUuid","variant","percent","round","sort","a","author","answers","multiple_answer","anonymous","created_at","createdAt","TeamInvite","user_accept","team_accept","updateAt","TeamEventTypes","GameInvite","TeamEventInviteStatuses","TeamEventTypeLocalization","training","other","TeamEvent","eventType","eventCustomName","event_type","event_custom_name","NotificationType","NotificationServiceEnum","TeamEventInvite","team_event_id","team_user_id","TournamentTeamUserInvite","tournament_team_invite_id","accepted","TournamentInvite","teamAccept","organizationAccept","organization_accept","user_invites_count","user_invites","userInvites","NotificationAllowTypes","Notification","initiator","team_invite","poll","game_invite","team_event","team_event_invite","tournament_invite","viewed","protected","service","teamInvite","gameInvite","teamEvent","teamEventInvite","tournamentInvite","TeamPermissionTypes","NotificationSettings","popup","sound","browser","NotificationBaseApi","getCount","apiUrl","getList","markViewed","notificationId","markAllViewed","getNotificationSettings","updateNotificationSettings","NotificationApi","OrgNotificationApi","ReferenceApi","getCities","getSports","TeamInviteExternal","VolleyballStatistic","serve_hits","serve_faults","serve_aces","serve_percent","ace_percent","stuff_blocks","block_faults","block_rebounds","block_percent","attack_spikes","attack_faults","attack_shots","attack_percent","receives","receive_faults","excellent_receives","receive_percent","serve_receives","serve_receive_faults","excellent_serve_receives","serve_receive_percent","faults","TournamentStageStatuses","TeamPermission","players","statistic","polls","events","TeamAccess","can_edit","can_view_users","can_manage_permission","can_change_owner","can_delete","can_manage_invites","can_view_invites","can_manage_polls","can_view_polls","can_answer_poll","can_manage_games","can_view_games","can_view_statistic","can_promote_users","can_edit_users","can_delete_users","can_view_events","can_manage_events","can_view_tournaments","can_manage_tournaments","TeamApi","query","sportId","getTeamAccess","update","values","patch","delete","getPermission","updatePermission","permission","updateUserRole","teamUserId","updateUserNumber","gameNumber","deleteUser","changeOwner","getInvites","sendInvite","acceptInvite","invite","declineInvite","resendInvite","getInvitesExternal","sendInviteExternal","deleteInviteExternal","resendInviteExternal","getPolls","archive","createPoll","getUsersStatistic","getVolleyballStatistic","joinTeam","leaveTeam","getGames","createGame","getTeamEvents","createTeamEvent","getTournamentTeams","getTournamentInvites","getTournamentGames","acceptTournamentInvite","inviteId","declineTournamentInvite","registerLazyUser","userData","getLazyUser","updateLazyUser","deleteLazyUser","resendLazyUserEmail","TeamEventApi","getTeamEvent","teamEventId","updateTeamEvent","deleteTeamEvent","getTeamEventInvites","createTeamEventInvite","acceptTeamEventInvite","declineTeamEventInvite","TournamentNews","text","GameTimelineStageItem","stage_id","playoff_stages_count","GameTimelineStages","current_tour","current_playoff_stage","stages","PlayoffTypes","TournamentStage","generateArray","UserPermissionTypes","PlayoffSettings","rounds","final_rounds","third_place_rounds","Playoff","log","teamsCount","getPlayoffStages","stagesCount","stage","pow","is_official","TournamentStageTeam","final_standing","received_points","TournamentApi","getNews","getTournamentStages","getPlayoff","getPlayoffGames","getGamesStages","getTeams","getStageTeams","getTeamById","tournamentTeamId","getUserById","userId","getUserGames","tournamentUserId","getBasketballStatistic","per_game","getHockeyStatistic","TournamentJoinData","validUsersCount","invalidUsersCount","hasAccess","inviteSent","alreadyInTournament","valid_users_count","invalid_users_count","has_access","invite_sent","already_in_tournament","TournamentJoinTeam","join_data","joinData","TournamentJoinApi","getTeamsForJoin","getTeamUsers","joinTournament","invites","TournamentStageApi","getGroups","stageId","getPlayoffs","UserAccess","edit","personal_data","teams","VolleyballGameLogType","UserPermission","personalData","UserApi","getCurrentUser","getAccess","updateUser","updateUserPhoto","changePassword","oldPassword","password","passwordConfirm","payload","old_password","password_confirm","changeEmail","changeEmailConfirm","token","getUserProfile","getBasketballProfile","getVolleyballProfile","updateUserProfile","userProfile","updateUserBasketballProfile","updateUserVolleyballProfile","getUserPermissions","updateUserPermission","getStatistics","getStreetballStatistics","getGameInvites","acceptGameInvite","declineGameInvite","searchUsers","setWizardShowed","wizard","put","VolleyballGameTeamStatistic","VolleyballGameStatistic","attackSpikes","attackShots","stuffBlocks","blockRebounds","excellentReceives","SCORE_LOG_TYPES","serve_ace","stuff_block","attack_spike","point","FAULT_LOG_TYPES","serve_fault","attack_fault","block_fault","receive_fault","fault","serve_receive_fault","VolleyballGameLog","rally","includes","isFaultType","isServe","serve_hit","isAttack","attack_shot","isReceive","receive","excellent_receive","isServeReceive","serve_receive","excellent_serve_receive","isBlock","block_rebound","isEnterExit","enter_game","exit_game","timeout","isComboType","VolleyballGameApi","BasketballGameLogTypeLocalization","_a$1","remove_game","two_point_attempt","three_point_attempt","free_throw_attempt","one_point_attempt","assist","block","steal","turnover","HockeyGameLogTypeLocalization","_a$2","shot_miss","shot_on_goal","shot_blocked","shootout_attempt","block_shot","minor_penalty","major_penalty","misconduct_penalty","game_misconduct_penalty","match_penalty","penalty_shot","face_off_lose","face_off_win","OvertimeTypeLocalization","_a$3","to_score_diff","to_score_total","without_overtime","to_first_goal","to_first_goal_and_bullitts","bullitts","TeamUserRoleLocalization","_a$4","moderator","member","admin","GameBasketballPositionLocalization","_a$5","point_guard","shooting_guard","small_forward","power_forward","center","GameBasketballPositionShortLocalization","WorkHandLocalization","left","right","GameVolleyballPositionLocalization","_d","setter","libero","middle_player","receiver_attacker","dioganal","GameVolleyballPositionShortLocalization","_e","GameVolleyballPositionShortRuLocalization","_f","VolleyballWorkHandLocalization","_g","GameHockeyPositionLocalization","_h","goaltender","defensemen","forward","VolleyballGameLogTypeLocalization","_a$6","CentrifugoService","channels$","subscriptions","listen","channel","Subject","subscription","connect","subscribe","connected","addEngineSubscription","setTimeout","unsubscribe","initializeEngineSubject","ReplaySubject","initializeEngine","url","timestamp","transports","centrifuge","on","publish","Observable","observer","res","disconnect","Centrifuge","resolveMessage","bind","StorageEngineField","defaultValue","StorageEngine","fields","addField","field","setItem","getItem","removeItem","Error","LocalStorageEngine","localStorage","JSON","stringify","parse","getCookie","parts","document","cookie","shift","getIconsData","folder","rel","sizes","href","color","HttpCookieInterceptor","injector","platformId","isBrowser","isPlatformBrowser","intercept","req","handle","clone","withCredentials","csrf","setHeaders","X-CSRFToken","Injector","PLATFORM_ID","cmpType","def","ɵcmp","ɵdir","original","onDestroy","__componentDestroyed$","leagueAlias","data_1","data_1_1","createElement","e_2","setAttribute","head","appendChild","component","maxFileSize","control","array","chunks","chunkLength","ceil","production","captureException","console","prefixes","window","DocumentTouch","q","matchMedia","matches","markFormGroupTouched","formGroup","controls","markAsTouched","markAsDirty","FormGroup","minLength","minLengthArray","valid","test","invalidDate","authService","selfCheck","ignore","subject","of","delay","switchMap","checkEmail","emailTaken","replace","invalidPhone","invalidUrl"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export const 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 listField(modelClass) {\n return {\n toFront: (value) => {\n if (!Array.isArray(value)) {\n return [];\n }\n return modelClass.toFront(value);\n },\n toBack: (value) => {\n if (!Array.isArray(value)) {\n return [];\n }\n return modelClass.toBack(value);\n }\n };\n}\n\nexport class DateField extends BaseModel {\n static toFront(date: any): any {\n if (date) {\n return new Date(date);\n } else {\n return undefined;\n }\n }\n static toBack(date: Date): any {\n if (date) {\n const dateUtc = new Date(Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds())\n );\n return dateUtc.toISOString().slice(0, 10);\n } else {\n return undefined;\n }\n }\n}\n\nexport class DateTimeField extends BaseModel {\n static toFront(date: any): any {\n if (date) {\n return new Date(date);\n } else {\n return undefined;\n }\n }\n static toBack(date: Date): any {\n if (date) {\n const dateUtc = new Date(Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds())\n );\n return date.toISOString();\n } else {\n return undefined;\n }\n }\n}\n\nexport function ModelInstance(\n config: {\n mappingFields?: { [key: string]: string },\n relation?: { [key: string]: BaseModel }\n }\n) {\n return (target: ModelTypeInterface) => {\n if (config) {\n if (config.mappingFields) {\n target[MODEL_MAPPING_FIELDS_KEY] = config.mappingFields;\n }\n if (config.relation) {\n target[MODEL_RELATION_KEY] = config.relation;\n }\n target[MODEL_TO_FRONT_KEY] = (dto: any, path: GraphPathInterface) => {\n return toFront(target, dto, path);\n };\n target[MODEL_TO_BACK_KEY] = (dto: any, path: GraphPathInterface) => {\n return toBack(target, dto, path);\n };\n }\n };\n}\n\nexport const ToFrontHook = (target: ModelTypeInterface, key: string | symbol, descriptor: TypedPropertyDescriptor<Function>) => {\n return {\n value: (...args: any[]) => {\n const parseMethod = target[MODEL_TO_FRONT_KEY] as ParserInterface;\n if (parseMethod) {\n return parseMethod(args[0], (args.length > 1 ? args[1] : undefined));\n }\n return undefined;\n }\n };\n};\n\nexport const ToBackHook = (target: ModelTypeInterface, key: string | symbol, descriptor: TypedPropertyDescriptor<Function>) => {\n return {\n value: (...args: any[]) => {\n const parseMethod = target[MODEL_TO_BACK_KEY] as ParserInterface;\n if (parseMethod) {\n return parseMethod(args[0]);\n }\n return undefined;\n }\n };\n};\n\nfunction extractValue(key, data) {\n if (!data) {\n return undefined;\n }\n\n const keyParts = key.split('.');\n if (keyParts.length === 1) {\n if (key in data) {\n return data[key];\n } else {\n return undefined;\n }\n }\n\n for (const k of keyParts) {\n if (data && k in data) {\n data = data[k];\n } else {\n return undefined;\n }\n }\n\n return data;\n}\n\nfunction toFront(modelType: ModelTypeInterface, data: any, path?: GraphPathInterface): any {\n // Check if recursion is required\n if (Array.isArray(data)) {\n return data.map(item => {\n return toFront(modelType, item);\n });\n }\n\n const instance = new modelType();\n\n // Mapping fields\n const mappingFields = modelType[MODEL_MAPPING_FIELDS_KEY] as string[];\n const relation = modelType[MODEL_RELATION_KEY] as { [key: string]: ModelInterface };\n if (mappingFields) {\n for (const backField of Object.keys(mappingFields)) {\n const frontField = mappingFields[backField];\n const value = extractValue(backField, data);\n if (relation && relation.hasOwnProperty(frontField)) {\n instance[frontField] = relation[frontField].toFront(value);\n } else {\n instance[frontField] = value;\n }\n }\n }\n\n return instance;\n}\n\nfunction toBack(modelType: ModelTypeInterface, instance: any, path?: GraphPathInterface): any {\n if (!instance) {\n return instance;\n }\n\n // Check if recursion is required\n if (Array.isArray(instance)) {\n return instance.map(item => {\n return toBack(modelType, item);\n });\n }\n\n const data = {};\n const mappingFields = modelType[MODEL_MAPPING_FIELDS_KEY] as string[];\n const relation = modelType[MODEL_RELATION_KEY] as { [key: string]: ModelInterface };\n if (mappingFields) {\n for (const backField of Object.keys(mappingFields)) {\n const frontField = mappingFields[backField];\n if (relation && relation.hasOwnProperty(frontField) && instance[frontField] !== undefined) {\n data[backField] = relation[frontField].toBack(instance[frontField]);\n } else {\n data[backField] = instance[frontField];\n }\n }\n }\n\n return data;\n}\n","import { ModelInstance, ToFrontHook, ToBackHook, enumField } from './util';\n\nexport enum FileEngine {\n django = 1,\n s3\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n path: 'path',\n mime_type: 'mimeType',\n size: 'size',\n engine: 'engine',\n },\n relation: {\n engine: enumField(FileEngine)\n }\n})\nexport class File {\n id: number;\n name: string;\n path: string;\n mimeType: string;\n size: string;\n engine: FileEngine;\n\n @ToFrontHook\n static toFront(data: any): File {\n return null;\n }\n\n @ToBackHook\n static toBack(file: File): any {\n return null;\n }\n}\n","import {ModelInstance, ToFrontHook, ToBackHook, BaseModel} from './util';\n\nexport enum SportTypes {\n basketball = 1,\n volleyball = 2,\n classic_basketball = 3,\n streetball = 4,\n classic_volleyball = 5,\n beach_volleyball = 6,\n hockey = 7,\n ice_hockey = 8,\n ball_hockey = 9\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n parent_id: 'parentId',\n sub_sports: 'subSports'\n }\n})\nexport class Sport extends BaseModel {\n id: number;\n name: string;\n parentId: number;\n subSports: Sport[];\n\n isBasketball() {\n return this.id === SportTypes.basketball || this.parentId === SportTypes.basketball;\n }\n\n isClassicBasketball() {\n return this.id === SportTypes.classic_basketball;\n }\n\n isStreetball() {\n return this.id === SportTypes.streetball;\n }\n\n isVolleyball() {\n return this.id === SportTypes.volleyball || this.parentId === SportTypes.volleyball;\n }\n\n isClassicVolleyball() {\n return this.id === SportTypes.classic_volleyball;\n }\n\n isBeachVolleyball() {\n return this.id === SportTypes.beach_volleyball;\n }\n\n isHockey(): boolean {\n return this.id === SportTypes.hockey || this.parentId === SportTypes.hockey;\n }\n\n isIceHockey(): boolean {\n return this.id === SportTypes.ice_hockey;\n }\n\n isBallHockey(): boolean {\n return this.id === SportTypes.ball_hockey;\n }\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(sport: Sport): any {\n return null;\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameBasketballPosition {\n point_guard = 1,\n shooting_guard,\n small_forward,\n power_forward,\n center\n}\n\nexport enum WorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameBasketballPosition),\n workHand: enumField(WorkHand)\n }\n})\nexport class BasketballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameBasketballPosition;\n workHand: WorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n height: 'height',\n weight: 'weight'\n }\n})\nexport class UserProfile {\n id: number;\n userId: number;\n height: number;\n weight: number;\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name'\n }\n})\nexport class City extends BaseModel {\n id: number;\n name: string;\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameVolleyballPosition {\n setter = 1,\n libero,\n middle_player,\n receiver_attacker,\n dioganal\n}\n\nexport enum VolleyballWorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameVolleyballPosition),\n workHand: enumField(VolleyballWorkHand)\n }\n})\nexport class VolleyballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameVolleyballPosition;\n workHand: VolleyballWorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameHockeyPosition {\n defensemen = 1,\n forward,\n goaltender\n}\n\nexport enum HockeyWorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameHockeyPosition),\n workHand: enumField(HockeyWorkHand)\n }\n})\nexport class HockeyProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameHockeyPosition;\n workHand: HockeyWorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, DateField, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { UserProfile } from './user-profile';\nimport { File } from './file';\nimport { City } from './city';\nimport { BasketballProfile } from './basketball-profile';\nimport { VolleyballProfile } from './volleyball-profile';\nimport { HockeyProfile } from './hockey-profile';\n\nexport enum UserGender {\n male = 1,\n female\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n last_name: 'lastName',\n first_name: 'firstName',\n middle_name: 'middleName',\n email: 'email',\n phone: 'phone',\n birth_date: 'birthDate',\n photo: 'photo',\n profile: 'profile',\n basketball_profile: 'basketballProfile',\n volleyball_profile: 'volleyballProfile',\n hockey_profile: 'hockeyProfile',\n wizards: 'wizards',\n city: 'city',\n gender: 'gender',\n is_active: 'isActive',\n },\n relation: {\n birthDate: DateField,\n photo: File,\n profile: UserProfile,\n basketballProfile: BasketballProfile,\n volleyballProfile: VolleyballProfile,\n hockeyProfile: HockeyProfile,\n city: City,\n gender: enumField(UserGender)\n }\n})\nexport class User extends BaseModel {\n id: number;\n lastName: string;\n firstName: string;\n middleName: string;\n email: string;\n phone: string;\n birthDate: Date;\n profile: UserProfile;\n basketballProfile: BasketballProfile;\n volleyballProfile: VolleyballProfile;\n hockeyProfile: HockeyProfile;\n photo: File;\n wizards: string[];\n city: City;\n gender: UserGender;\n isActive: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(user: User): any {\n return null;\n }\n\n get fullName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get shortName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get initials(): string {\n return [this.lastName, this.firstName].filter(s => s).map(s => s.substr(0, 1)).join('');\n }\n\n get age(): number {\n if (!this.birthDate) {\n return null;\n }\n const diff = (new Date()).getTime() - this.birthDate.getTime();\n return Math.floor(diff / (365 * 86400 * 1000));\n }\n}\n","import { BaseModel, enumField, ModelInstance, DateTimeField, ToBackHook, ToFrontHook } from './util';\nimport { City } from './city';\nimport { File } from './file';\nimport { League } from './league';\nimport { Sport } from './sport';\nimport { Team } from './team';\n\nexport enum TournamentTypes {\n group = 'group',\n elimination = 'elimination',\n fiba = 'fiba'\n}\n\nexport enum TournamentStatuses {\n open,\n in_progress,\n closed,\n}\n\nexport enum TournamentGender {\n male= 1,\n female,\n all\n}\n\nexport enum BasketballStatisticTypes {\n standard = 1,\n light,\n advanced\n}\n\nexport enum GameTimeTypes {\n clean = 1,\n dirty,\n}\n\nexport enum OvertimeTypes {\n to_score_total = 1,\n to_score_diff,\n time,\n without_overtime,\n to_first_goal,\n to_first_goal_and_bullitts,\n bullitts\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n gender: 'gender',\n age_from: 'ageFrom',\n age_to: 'ageTo',\n max_team_players: 'maxTeamPlayers',\n max_game_players: 'maxGamePlayers',\n type: 'type',\n tours_count: 'toursCount',\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n overtime_score: 'overtimeScore',\n game_type: 'gameType',\n timeout_count: 'timeoutCount',\n timeout_time: 'timeoutTime',\n substitute_count: 'substituteCount',\n game_up_to_score: 'gameUpToScore',\n volleyball_score_in_set: 'volleyballScoreInSet',\n volleyball_score_in_last_set: 'volleyballScoreInLastSet',\n manage_team_application: 'manageTeamApplication',\n recruitment_is_open: 'recruitmentIsOpen',\n transfer_is_open: 'transferIsOpen',\n basketball_statistic_type: 'basketballStatisticType',\n shot_clock_enabled: 'shotClockEnabled',\n game_time_type: 'gameTimeType',\n },\n relation: {\n type: enumField(TournamentTypes),\n gender: enumField(TournamentGender),\n basketballStatisticType: enumField(BasketballStatisticTypes),\n 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 shotClockEnabled: boolean;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n tournament_id: 'tournamentId',\n team: 'team',\n points: 'points',\n },\n relation: {\n team: Team,\n }\n})\nexport class TournamentTeamWinner extends BaseModel {\n id: number;\n teamId: number;\n tournamentId: number;\n team: Team;\n points: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n alias: 'alias',\n logo: 'logo',\n cover: 'cover',\n preview_image: 'previewImage',\n city: 'city',\n sport: 'sport',\n location: 'location',\n description: 'description',\n date: 'date',\n price: 'price',\n regulation_files: 'regulationFiles',\n settings: 'settings',\n league: 'league',\n teams_count: 'teamsCount',\n closest_game_datetime: 'closestGameDatetime',\n status: 'status',\n team_winner: 'teamWinner'\n },\n relation: {\n logo: File,\n cover: File,\n previewImage: File,\n city: City,\n sport: Sport,\n regulationFile: File,\n settings: TournamentSettings,\n date: DateTimeField,\n league: League,\n status: enumField(TournamentStatuses),\n teamWinner: TournamentTeamWinner\n }\n})\nexport class Tournament extends BaseModel {\n id: number;\n name: string;\n alias: string;\n logo: File;\n cover: File;\n previewImage: File;\n city: City;\n sport: Sport;\n location: string;\n description: string;\n date: Date;\n price: number;\n regulationFiles: File[];\n settings: TournamentSettings;\n league: League;\n teamsCount: number;\n closestGameDatetime: string;\n status: TournamentStatuses;\n teamWinner: TournamentTeamWinner;\n\n getEmptyLogoClass(): string {\n const classList = ['empty-logo'];\n if (this.sport.isBasketball()) {\n classList.push('empty-logo-basketball');\n }\n if (this.sport.isVolleyball()) {\n classList.push('empty-logo-volleyball');\n }\n return classList.join(' ');\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateField } from './util';\nimport { File } from './file';\nimport { Sport } from './sport';\nimport { User } from './user';\nimport { City } from './city';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n sport: 'sport',\n logo: 'logo',\n owner: 'owner',\n city: 'city',\n users_count: 'usersCount',\n won_games_count: 'wonGamesCount',\n games_count: 'gamesCount',\n score_sum: 'scoreSum',\n closest_game_datetime: 'closestGameDatetime',\n },\n relation: {\n sport: Sport,\n logo: File,\n owner: User,\n city: City,\n closestGameDatetime: DateField,\n }\n})\nexport class Team extends BaseModel {\n id: number;\n name: string;\n sport: Sport;\n logo: File;\n owner: User;\n city: City;\n usersCount: number;\n wonGamesCount: number;\n gamesCount: number;\n scoreSum: number;\n closestGameDatetime: Date;\n\n getEmptyLogoClass(): string {\n const classList = ['empty-logo'];\n if (this.sport.isBasketball()) {\n classList.push('empty-logo-basketball');\n }\n if (this.sport.isVolleyball()) {\n classList.push('empty-logo-volleyball');\n }\n return classList.join(' ');\n }\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(team: Team): any {\n return null;\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\nimport { User } from './user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n owner_id: 'ownerId',\n owner: 'owner',\n },\n relation: {\n owner: User,\n }\n})\nexport class Organization extends BaseModel {\n id: number;\n ownerId: number;\n owner: User;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Organization } from './organization';\nimport { File } from './file';\nimport { Sport } from './sport';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n logo: 'logo',\n contact_email: 'contactEmail',\n contact_phone: 'contactPhone',\n name: 'name',\n alias: 'alias',\n sport: 'sport',\n description: 'description',\n social_links: 'socialLinks',\n links: 'links',\n organization: 'organization',\n tournaments_count: 'tournamentsCount',\n closest_game_datetime: 'closestGameDatetime',\n cover: 'cover',\n about: 'about',\n },\n relation: {\n organization: Organization,\n logo: File,\n cover: File,\n sport: Sport\n }\n})\nexport class League extends BaseModel {\n id: number;\n logo: File;\n contactEmail: string;\n contactPhone: string;\n name: string;\n alias: string;\n sport: Sport;\n description: string;\n socialLinks: string[];\n links: string[];\n organization: Organization;\n tournamentsCount: number;\n closestGameDatetime: string;\n cover: File;\n about: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get vkLink(): string {\n return this.socialLinks.find(link => link.substr(0, 15) === 'https://vk.com/');\n }\n\n get fbLink(): string {\n return this.socialLinks.find(link => link.substr(0, 25) === 'https://www.facebook.com/');\n }\n\n get instaLink(): string {\n return this.socialLinks.find(link => link.substr(0, 25) === 'https://www.instagram.com');\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\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 },\n relation: {\n gameType: enumField(VolleyballGameTypes)\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\n get setsCount(): number {\n return this.gameType === VolleyballGameTypes.best_of_three ? 3 : 5;\n }\n\n getSetMaxScore(set: number) {\n return set === this.setsCount ? this.scoreInLastSet : this.scoreInSet;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { BasketballStatisticTypes, GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n game_up_to_score: 'gameUpToScore',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n overtime_score: 'overtimeScore',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n statistic_type: 'statisticType',\n shot_clock_enabled: 'shotClockEnabled',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n statisticType: enumField(BasketballStatisticTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class BasketballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n gameUpToScore: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n overtimeScore: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n statisticType: BasketballStatisticTypes;\n shotClockEnabled: boolean;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField, listField } from './util';\nimport { Team } from './team';\nimport { BasketballGameConfig } from './basketball-game-config';\nimport { VolleyballGameConfig } from './volleyball-game-config';\nimport { LeagueCourt } from './league-court';\nimport { MediaItem } from './media-item';\nimport { HockeyGameConfig } from './hockey-game-config';\n\nexport enum GameStatuses {\n open = 1,\n in_progress,\n closed,\n archived,\n draft\n}\n\nexport enum GameResultTypes {\n team_won = 1,\n competitor_team_won,\n team_technical_defeat,\n competitor_team_technical_defeat\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n status: 'status',\n team: 'team',\n tournament_team_id: 'tournamentTeamId',\n team_id: 'teamId',\n competitor_team: 'competitorTeam',\n competitor_tournament_team_id: 'competitorTournamentTeamId',\n competitor_team_id: 'competitorTeamId',\n competitor_team_name: 'competitorTeamName',\n datetime: 'datetime',\n location: 'location',\n team_score: 'teamScore',\n competitor_team_score: 'competitorTeamScore',\n result_type: 'resultType',\n playoff_number: 'playoffNumber',\n tournament_id: 'tournamentId',\n tournament_tour: 'tournamentTour',\n basketball_game_config: 'basketballGameConfig',\n volleyball_game_config: 'volleyballGameConfig',\n hockey_game_config: 'hockeyGameConfig',\n score_by_period: 'scoreByPeriod',\n playoff_stage: 'playoffStage',\n tournament_stage_id: 'tournamentStageId',\n tournament_playoff_id: 'tournamentPlayoffId',\n tournament_court: 'tournamentCourt',\n media_count: 'mediaCount',\n media: 'media',\n },\n relation: {\n status: enumField(GameStatuses),\n team: Team,\n competitorTeam: Team,\n datetime: DateTimeField,\n resultType: enumField(GameResultTypes),\n basketballGameConfig: BasketballGameConfig,\n volleyballGameConfig: VolleyballGameConfig,\n hockeyGameConfig: HockeyGameConfig,\n tournamentCourt: LeagueCourt,\n media: listField(MediaItem),\n }\n})\nexport class Game extends BaseModel {\n id: number;\n status: GameStatuses;\n team: Team;\n teamId: number;\n tournamentTeamId: number;\n competitorTeam: Team;\n competitorTeamId: number;\n competitorTournamentTeamId: number;\n competitorTeamName: string;\n datetime: Date;\n location: string;\n teamScore: number;\n competitorTeamScore: number;\n archive: boolean;\n playoffNumber: string;\n tournamentId: number;\n tournamentTour: number;\n basketballGameConfig: BasketballGameConfig;\n volleyballGameConfig: VolleyballGameConfig;\n hockeyGameConfig: HockeyGameConfig;\n scoreByPeriod: any;\n playoffStage: string;\n tournamentStageId: number;\n tournamentPlayoffId: number;\n tournamentCourt: LeagueCourt;\n mediaCount: number;\n media: MediaItem[];\n\n get scoreByPeriodList(): {period: number, teamScore: number, competitorTeamScore: number}[] {\n if (!this.scoreByPeriod) {\n return [];\n }\n return Object.keys(this.scoreByPeriod).map(period => ({\n period: +period,\n teamScore: this.scoreByPeriod[period][0],\n competitorTeamScore: this.scoreByPeriod[period][1]\n }));\n }\n\n get isClosed(): boolean {\n return this.status === GameStatuses.closed;\n }\n\n get isTeamWon() {\n return this.teamScore > this.competitorTeamScore;\n }\n\n get isCompetitorTeamWon() {\n return this.competitorTeamScore > this.teamScore;\n }\n\n get teamWinnerId() {\n if (this.status !== GameStatuses.closed) {\n return null;\n }\n if (this.teamScore === this.competitorTeamScore) {\n return null;\n }\n if (this.team.id) {\n return this.teamScore > this.competitorTeamScore ? this.team.id : this.competitorTeam.id;\n } else {\n return this.teamScore > this.competitorTeamScore ? this.teamId : this.competitorTeamId;\n }\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n address: 'address',\n league_id: 'leagueId'\n }\n})\nexport class LeagueCourt extends BaseModel {\n id: number;\n name: string;\n address: string;\n leagueId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n original_photo: 'originalPhoto',\n list_photo: 'listPhoto',\n detail_photo: 'detailPhoto',\n game: 'game',\n tournament: 'tournament',\n game_id: 'gameId',\n tournament_id: 'tournament_id',\n video_url: 'videoUrl',\n video_preview: 'videoPreview',\n },\n relation: {\n originalPhoto: File,\n listPhoto: File,\n detailPhoto: File,\n videoPreview: File\n }\n})\nexport class MediaItem extends BaseModel {\n id: number;\n originalPhoto: File;\n listPhoto: File;\n detailPhoto: File;\n gameId: number;\n tournamentId: number;\n videoUrl: string;\n videoPreview: File;\n\n get isVideo(): boolean {\n return Boolean(this.videoUrl);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class HockeyGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { User } from './user';\nimport { Team } from './team';\n\nexport enum TeamUserRole {\n member = 1,\n moderator,\n admin,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n user: 'user',\n role: 'role',\n number: 'number',\n team: 'team',\n },\n relation: {\n user: User,\n team: Team,\n role: enumField(TeamUserRole)\n }\n})\nexport class TeamUser extends BaseModel {\n id: number;\n teamId: number;\n user: User;\n team: Team;\n number: number;\n role: TeamUserRole;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(teamPlayer: TeamUser): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { TournamentTeam } from './tournament-team';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n tournament_stage_id: 'tournamentStageId'\n }\n})\nexport class TournamentGroup extends BaseModel {\n id: number;\n name: string;\n tournamentStageId: number;\n teams: TournamentTeam[];\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\nimport { TournamentGroup } from './tournament-group';\nimport { Game } from './game';\nimport { Tournament } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n tournament_id: 'tournamentId',\n tournament: 'tournament',\n team: 'team',\n group: 'group',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n 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 },\n relation: {\n tournament: Tournament,\n team: Team,\n group: TournamentGroup,\n games: Game,\n }\n})\nexport class TournamentTeam extends BaseModel {\n id: number;\n teamId: number;\n tournamentId: number;\n tournament: Tournament;\n team: Team;\n group: TournamentGroup;\n gamesCount: number;\n wonGamesCount: number;\n 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\n get gamesWonPercent(): number {\n if (!this.gamesCount) {\n return 0;\n }\n return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team_user_id: 'tournamentTeamUserId',\n date_from: 'dateFrom',\n date_to: 'dateTo',\n matches_count: 'matchesCount',\n },\n relation: {\n dateFrom: DateField,\n dateTo: DateField,\n }\n})\nexport class TournamentDisqualification extends BaseModel {\n id: number;\n tournamentTeamUserId: number;\n dateFrom: Date;\n dateTo: Date;\n matchesCount: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { TournamentTeam } from './tournament-team';\nimport { TeamUser } from './team-user';\nimport { File } from './file';\nimport { TournamentDisqualification } from './tournament-disqualification';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team: 'tournamentTeam',\n team_user: 'teamUser',\n disqualified: 'disqualified',\n first_name: 'firstName',\n last_name: 'lastName',\n middle_name: 'middleName',\n photo: 'photo',\n disqualification: 'disqualification',\n has_changes: 'hasChanges',\n },\n relation: {\n tournamentTeam: TournamentTeam,\n teamUser: TeamUser,\n photo: File,\n disqualification: TournamentDisqualification,\n }\n})\nexport class TournamentTeamUser extends BaseModel {\n id: number;\n tournamentTeam: TournamentTeam;\n teamUser: TeamUser;\n disqualified: boolean;\n firstName: string;\n lastName: string;\n middleName: string;\n photo: File; disqualification: TournamentDisqualification;\n hasChanges: boolean;\n\n get fullName(): string {\n return [this.lastName, this.firstName, this.middleName].filter(s => s).join(' ');\n }\n\n get shortName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get initials(): string {\n return [this.lastName, this.firstName].filter(s => s).map(s => s.substr(0, 1)).join('');\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { TeamUser } from './team-user';\nimport { TournamentTeamUser } from './tournament-team-user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n game_id: 'gameId',\n team_user: 'teamUser',\n tournament_team_user: 'tournamentTeamUser',\n updated_at: 'updatedAt'\n },\n relation: {\n teamUser: TeamUser,\n tournamentTeamUser: TournamentTeamUser,\n updatedAt: DateTimeField,\n }\n})\nexport class GameUser extends BaseModel {\n id: number;\n gameId: number;\n teamUser: TeamUser;\n tournamentTeamUser: TournamentTeamUser;\n updatedAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","export function updateItemInArray(data: any[], item: any, force = false, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return data;\n }\n return data.map(v => {\n if (checkFunction && isFunction(checkFunction)) {\n if (!checkFunction(v)) {\n return v;\n }\n } else if (v.id !== item.id) {\n return v;\n }\n if (v.updatedAt && item.updatedAt && !force) {\n return v.updatedAt > item.updatedAt ? v : item;\n }\n return item;\n });\n}\n\nexport function updateItemsInArray(data: any[], items: any[], force: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n items.forEach(item => {\n data = updateItemInArray(data, item, force, checkFunction);\n });\n return data;\n}\n\nexport function patchItemInArray(data: any[], item: any, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return data;\n }\n return data.map(v => {\n if (checkFunction && isFunction(checkFunction)) {\n if (!checkFunction(v)) {\n return v;\n }\n } else if (v.id !== item.id) {\n return v;\n }\n return Object.assign(v, item);\n });\n}\n\nexport function addItemInArray(data: any[], item: any, atEnd: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return [item];\n }\n if (data.find(i => isFunction(checkFunction) ? checkFunction(i) : i.id === item.id)) {\n return data;\n }\n\n return atEnd\n ? [...data, item]\n : [item, ...data];\n}\n\nexport function addItemsInArray(data: any[], items: any[], atEnd: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n (!atEnd\n ? Object.assign([], items).reverse()\n : items\n ).forEach(item => {\n data = addItemInArray(data, item, atEnd, checkFunction);\n });\n return data;\n}\n\nexport function deleteItemFromArray(data: any[], item: any): any[] {\n if (!Array.isArray(data)) {\n return [];\n }\n if (isFunction(item)) {\n return data.filter(i => !item(i));\n } else {\n return data.filter(v => v.id !== item.id);\n }\n}\n\nfunction isFunction(functionToCheck) {\n return functionToCheck && {}.toString.call(functionToCheck) === '[object Function]';\n}\n","import { enumField, ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateTimeField } from './util';\nimport { GameUser } from './game-user';\nimport { GameLogBase } from './game-log-base';\n\nexport enum BasketballGameLogTypes {\n enter_game = 1,\n exit_game,\n remove_game,\n two_point_made,\n three_point_made,\n free_throw_made,\n two_point_attempt,\n three_point_attempt,\n free_throw_attempt,\n assist,\n block,\n rebound,\n offensive_rebound,\n defensive_rebound,\n steal,\n turnover,\n personal_foul,\n technical_foul,\n unsportsmanlike_foul,\n one_point_attempt,\n one_point_made,\n timeout,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(BasketballGameLogTypes),\n }\n})\nexport class BasketballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: BasketballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n combined: BasketballGameLog;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n\n isPointsType() {\n return [\n BasketballGameLogTypes.two_point_made,\n BasketballGameLogTypes.three_point_made,\n BasketballGameLogTypes.free_throw_made,\n BasketballGameLogTypes.one_point_made,\n ].indexOf(this.logType) > -1;\n }\n\n isReboundType() {\n return [\n BasketballGameLogTypes.rebound,\n BasketballGameLogTypes.offensive_rebound,\n BasketballGameLogTypes.defensive_rebound\n ].indexOf(this.logType) > -1;\n }\n\n isFoulType() {\n return [\n BasketballGameLogTypes.personal_foul,\n BasketballGameLogTypes.technical_foul,\n BasketballGameLogTypes.unsportsmanlike_foul\n ].indexOf(this.logType) > -1;\n }\n\n getScore() {\n const scoreMapping = {\n [BasketballGameLogTypes.one_point_made]: 1,\n [BasketballGameLogTypes.free_throw_made]: 1,\n [BasketballGameLogTypes.two_point_made]: 2,\n [BasketballGameLogTypes.three_point_made]: 3\n };\n return scoreMapping[this.logType];\n }\n\n compare(model: BasketballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { addItemInArray, addItemsInArray, deleteItemFromArray, updateItemInArray, updateItemsInArray } from '../utils/data';\nimport { StorageEngine } from './storage-engine';\n\nexport class Store {\n private data: {[key: string]: BehaviorSubject<any>} = {};\n\n constructor(private engine?: StorageEngine) {\n }\n\n get(key: string): Observable<any> {\n return this.getSubject(key).pipe(filter(item => item !== undefined));\n }\n\n value(key: string): any {\n return this.getSubject(key).value;\n }\n\n save(key: string, value: any): void {\n this.getSubject(key).next(value);\n if (this.engine) {\n this.engine.save(key, value);\n }\n }\n\n appendItem(key: string, value: any, checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemInArray(this.value(key) || [], value, true, checkFunction));\n }\n\n appendItems(key: string, value: any[], checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemsInArray(this.value(key) || [], value, true));\n }\n\n prependItem(key: string, value: any, checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemInArray(this.value(key) || [], value, false, checkFunction));\n }\n\n prependItems(key: string, value: any[], checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemsInArray(this.value(key) || [], value, false, checkFunction));\n }\n\n updateItem(key: string, value: any, force?: boolean, checkFunction?: (item: any) => boolean): void {\n this.save(key, updateItemInArray(this.value(key) || [], value, force, checkFunction));\n }\n\n updateItems(key: string, value: any, force?: boolean, checkFunction?: (item: any) => boolean): void {\n this.save(key, updateItemsInArray(this.value(key) || [], value, force, checkFunction));\n }\n\n deleteItem(key: string, value: any): void {\n this.save(key, deleteItemFromArray(this.value(key) || [], value));\n }\n\n dispose(): void {\n for (const key of Object.keys(this.data)) {\n this.data[key].complete();\n delete this.data[key];\n }\n }\n\n clearStorageData(): void {\n if (this.engine) {\n this.engine.clear();\n }\n }\n\n getEngine(): StorageEngine {\n return this.engine;\n }\n\n private getSubject(key: string): BehaviorSubject<any> {\n if (!this.data[key]) {\n this.data[key] = new BehaviorSubject<any>(this.engine ? this.engine.get(key) : undefined);\n }\n return this.data[key];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '../storage/store';\n\n@Injectable({providedIn: 'root'})\nexport class BaseService {\n protected store = new Store();\n\n dispose(): void {\n this.store.dispose();\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { BaseService } from './base.service';\n\nconst CONFIG_STORE_KEY = 'config';\n\nexport const CONFIG_DATA = 'mtg-core-config-data';\n\n@Injectable({providedIn: 'root'})\nexport class ConfigService extends BaseService {\n constructor(\n @Optional() @Inject(CONFIG_DATA) private configData: any\n ) {\n super();\n if (configData) {\n this.initialize(configData);\n }\n }\n\n get config$() {\n return this.store.get(CONFIG_STORE_KEY);\n }\n\n get config() {\n return this.store.value(CONFIG_STORE_KEY) || {};\n }\n\n initialize(data: any): void {\n this.store.save(CONFIG_STORE_KEY, data);\n }\n\n set(key: string, value: any): void {\n this.store.save(CONFIG_STORE_KEY, {\n ...this.config,\n [key]: value\n });\n }\n\n get(key: string): any {\n return this.store.value(CONFIG_STORE_KEY) && this.store.value(CONFIG_STORE_KEY)[key];\n }\n}\n","import { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\n\nexport class BaseStatistic {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: boolean;\n gamesCount: number;\n wonGamesCount: number;\n newbie: boolean;\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n points: 'points',\n two_points_made: 'twoPointsMade',\n three_points_made: 'threePointsMade',\n free_throws_made: 'freeThrowsMade',\n one_points_made: 'onePointsMade',\n two_point_attempts: 'twoPointAttempts',\n three_point_attempts: 'threePointAttempts',\n free_throw_attempts: 'freeThrowAttempts',\n one_point_attempts: 'onePointAttempts',\n two_point_percent: 'twoPointPercent',\n three_point_percent: 'threePointPercent',\n free_throw_percent: 'freeThrowPercent',\n one_point_percent: 'onePointPercent',\n assists: 'assists',\n blocks: 'blocks',\n rebounds: 'rebounds',\n offensive_rebounds: 'offensiveRebounds',\n defensive_rebounds: 'defensiveRebounds',\n steals: 'steals',\n turnovers: 'turnovers',\n personal_fouls: 'personalFouls',\n technical_fouls: 'technicalFouls',\n unsportsmanlike_fouls: 'unsportsmanlikeFouls',\n newbie: 'newbie',\n },\n relation: {\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class BasketballStatistic extends BaseStatistic {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: boolean;\n gamesCount: number;\n wonGamesCount: number;\n points: number;\n twoPointsMade: number;\n threePointsMade: number;\n freeThrowsMade: number;\n onePointsMade: number;\n twoPointAttempts: number;\n threePointAttempts: number;\n freeThrowAttempts: number;\n onePointAttempts: number;\n twoPointPercent: number;\n threePointPercent: number;\n freeThrowPercent: number;\n onePointPercent: number;\n assists: number;\n blocks: number;\n rebounds: number;\n offensiveRebounds: number;\n defensiveRebounds: number;\n steals: number;\n turnovers: number;\n personalFouls: number;\n technicalFouls: number;\n unsportsmanlikeFouls: number;\n newbie: boolean;\n\n get totalFouls() {\n return this.personalFouls + this.technicalFouls + this.unsportsmanlikeFouls;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { BasketballStatistic } from './basketball-statistic';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: BasketballStatistic,\n competitorTeam: BasketballStatistic\n }\n})\nexport class BasketballGameTeamStatistic extends BaseModel {\n team: BasketballStatistic;\n competitorTeam: BasketballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n points: 'points',\n free_throws_made: 'freeThrowsMade',\n two_points_made: 'twoPointsMade',\n three_points_made: 'threePointsMade',\n one_points_made: 'onePointsMade',\n two_point_attempts: 'twoPointAttempts',\n three_point_attempts: 'threePointAttempts',\n free_throw_attempts: 'freeThrowAttempts',\n one_point_attempts: 'onePointAttempts',\n assists: 'assists',\n blocks: 'blocks',\n rebounds: 'rebounds',\n offensive_rebounds: 'offensiveRebounds',\n defensive_rebounds: 'defensiveRebounds',\n steals: 'steals',\n turnovers: 'turnovers',\n personal_fouls: 'personalFouls',\n technical_fouls: 'technicalFouls',\n unsportsmanlike_fouls: 'unsportsmanlikeFouls',\n updated_at: 'updatedAt',\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class BasketballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n freeThrowsMade: number;\n twoPointsMade: number;\n threePointsMade: number;\n onePointsMade: number;\n twoPointAttempts: number;\n threePointAttempts: number;\n freeThrowAttempts: number;\n onePointAttempts: number;\n assists: number;\n blocks: number;\n rebounds: number;\n offensiveRebounds: number;\n defensiveRebounds: number;\n steals: number;\n turnovers: number;\n personalFouls: number;\n technicalFouls: number;\n unsportsmanlikeFouls: number;\n updatedAt: Date;\n\n get id(): number {\n return this.gameUserId;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get totalFouls(): number {\n return (this.personalFouls || 0) + (this.technicalFouls || 0) + (this.unsportsmanlikeFouls || 0);\n }\n}\n","import { enumField, ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateTimeField } 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}\n\nexport enum HockeyAdvantageTypes {\n power_play = 1,\n shorthanded,\n even_strength\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 is_goalie: 'isGoalie',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(HockeyGameLogTypes),\n advantage: enumField(HockeyAdvantageTypes),\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 isGoalie: boolean;\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 @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { GameUser } from '../models/game-user';\nimport { ConfigService } from '../services/config.service';\nimport { BasketballGameTeamStatistic } from '../models/basketball-game-team-statistic';\nimport { BasketballGameStatistic } from '../models/basketball-game-statistic';\nimport { BasketballGameLog } from '../models/basketball-game-log';\n\n@Injectable({providedIn: 'root'})\nexport class BasketballGameApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getUsers(gameId: number): Promise<GameUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/users/`).pipe(\n map(result => GameUser.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<BasketballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/team_statistic/`).pipe(\n map(result => BasketballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<BasketballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/user_statistic/`).pipe(\n map(result => BasketballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<BasketballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/logs/`).pipe(\n map(result => BasketballGameLog.toFront(result))\n ).toPromise();\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n theme: 'theme',\n message: 'message',\n files: 'files',\n },\n relation: {\n files: File\n }\n})\nexport class Feedback {\n id: number;\n theme: string;\n message: string;\n files: File[];\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(value: any): any {\n return null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Feedback } from '../models/feedback';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class FeedbackApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async sendFeedback(data: any): Promise<Feedback> {\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/feedback/`, Feedback.toBack(data))\n .pipe(map(response => Feedback.toFront(response)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { map } from 'rxjs/operators';\nimport { File } from '../models/file';\n\n@Injectable({providedIn: 'root'})\nexport class FileApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async upload(fileData: any, filename?: string): Promise<File> {\n const formData = new FormData();\n formData.append('file', fileData, filename);\n\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/file/`, formData)\n .pipe(map(data => File.toFront(data)))\n .toPromise();\n }\n\n async createZipArchive(files: {file: any, filename: string}[]): Promise<any> {\n const formData = new FormData();\n for (const file of files) {\n formData.append('files', file.file, file.filename);\n }\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/file/zip_archive/`, formData, {responseType: 'blob'})\n .toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField, enumField, listField } from './util';\nimport { Game } from './game';\nimport { Tournament } from './tournament';\nimport { League } from './league';\nimport { LeagueNews } from './league-news';\n\nexport enum TournamentEventTypes {\n game_closed = 1,\n media_added,\n news\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n game: 'game',\n news: 'news',\n league: 'league',\n tournaments: 'tournaments',\n event: 'event',\n datetime: 'datetime'\n },\n relation: {\n game: Game,\n news: LeagueNews,\n league: League,\n tournaments: listField(Tournament),\n datetime: DateField,\n event: enumField(TournamentEventTypes)\n }\n})\nexport class TournamentEvent extends BaseModel {\n id: number;\n game: Game;\n news: LeagueNews;\n tournaments: Tournament[];\n event: TournamentEventTypes;\n datetime: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n updated_at: 'updatedAt',\n points: 'points',\n pp_shot_misses: 'ppShotMisses',\n pp_shots_on_goal: 'ppShotsOnGoal',\n pp_shots_blocked: 'ppShotsBlocked',\n ev_shot_misses: 'evShotMisses',\n ev_shots_on_goal: 'evShotsOnGoal',\n ev_shots_blocked: 'evShotsBlocked',\n sh_shot_misses: 'shShotMisses',\n sh_shots_on_goal: 'shShotsOnGoal',\n sh_shots_blocked: 'shShotsBlocked',\n pp_goals: 'ppGoals',\n ev_goals: 'evGoals',\n sh_goals: 'shGoals',\n pp_assists: 'ppAssists',\n ev_assists: 'evAssists',\n sh_assists: 'shAssists',\n shootout_attempts: 'shootoutAttempts',\n shootout_goals: 'shootoutGoals',\n block_shots: 'blockShots',\n face_off_losses: 'faceOffLosses',\n face_off_wins: 'faceOffWins',\n saves: 'saves',\n goals_against: 'goalsAgainst',\n safety_rate: 'safetyRate',\n penalty_minutes: 'penaltyMinutes',\n game_time: 'gameTime',\n plus_minus: 'plusMinus'\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class HockeyGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n ppShotMisses: number;\n ppShotsOnGoal: number;\n ppShotsBlocked: number;\n evShotMisses: number;\n evShotsOnGoal: number;\n evShotsBlocked: number;\n shShotMisses: number;\n shShotsOnGoal: number;\n shShotsBlocked: number;\n ppGoals: number;\n evGoals: number;\n shGoals: number;\n ppAssists: number;\n evAssists: number;\n shAssists: number;\n shootoutAttempts: number;\n shootoutGoals: number;\n blockShots: number;\n faceOffLosses: number;\n faceOffWins: number;\n saves: number;\n goalsAgainst: number;\n safetyRate: number;\n penaltyMinutes: number;\n gameTime: number;\n plusMinus: number;\n updatedAt: Date;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get 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.goals + 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 @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n points: 'points',\n pp_shots: 'ppShots',\n pp_shot_misses: 'ppShotMisses',\n pp_shots_on_goal: 'ppShotsOnGoal',\n pp_shots_blocked: 'ppShotsBlocked',\n ev_shots: 'evShots',\n ev_shot_misses: 'evShotMisses',\n ev_shots_on_goal: 'evShotsOnGoal',\n ev_shots_blocked: 'evShotsBlocked',\n sh_shots: 'shShots',\n sh_shot_misses: 'shShotMisses',\n sh_shots_on_goal: 'shShotsOnGoal',\n sh_shots_blocked: 'shShotsBlocked',\n pp_goals_percent: 'ppGoalsPercent',\n pp_goals: 'ppGoals',\n ev_goals_percent: 'evGoalsPercent',\n ev_goals: 'evGoals',\n sh_goals_percent: 'shGoalsPercent',\n goals: 'goals',\n sh_goals: 'shGoals',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n shots: 'shots',\n goals_percent: 'goalsPercent',\n shots_against: 'shotsAgainst',\n saves_percent: 'savesPercent',\n pp_assists: 'ppAssists',\n ev_assists: 'evAssists',\n sh_assists: 'shAssists',\n shootout_attempts: 'shootoutAttempts',\n shootout_goals: 'shootoutGoals',\n block_shots: 'blockShots',\n face_off_losses: 'faceOffLosses',\n face_off_wins: 'faceOffWins',\n face_offs: 'faceOffs',\n face_off_percent: 'faceOffPercent',\n saves: 'saves',\n goals_against: 'goalsAgainst',\n safety_rate: 'safetyRate',\n penalty_minutes: 'penaltyMinutes',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n newbie: 'newbie',\n },\n relation: {\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class HockeyStatistic extends BaseStatistic {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: boolean;\n gamesCount: number;\n wonGamesCount: number;\n points: number;\n ppShots: number;\n ppShotMisses: number;\n ppShotsOnGoal: number;\n ppShotsBlocked: number;\n evShots: number;\n evShotMisses: number;\n evShotsOnGoal: number;\n evShotsBlocked: number;\n shShots: number;\n shShotMisses: number;\n shShotsOnGoal: number;\n shShotsBlocked: number;\n ppGoalsPercent: number;\n ppGoals: number;\n evGoalsPercent: number;\n evGoals: number;\n shGoalsPercent: number;\n shGoals: number;\n goals: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n shots: number;\n goalsPercent: number;\n ppAssists: number;\n evAssists: number;\n shAssists: number;\n shootoutAttempts: number;\n shootoutGoals: number;\n blockShots: number;\n faceOffLosses: number;\n faceOffWins: number;\n faceOffs: number;\n faceOffPercent: number;\n savesPercent: number;\n saves: number;\n shotsAgainst: number;\n goalsAgainst: number;\n safetyRate: number;\n penaltyMinutes: number;\n gameTime: number;\n plusMinus: number;\n newbie: boolean;\n\n get assists(): number {\n return (this.ppAssists || 0) + (this.shAssists || 0) + (this.evAssists || 0);\n }\n\n @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 } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { GameUser } from '../models/game-user';\nimport { ConfigService } from '../services/config.service';\nimport { HockeyGameLog } from '../models/hockey-game-log';\nimport { HockeyGameStatistic } from '../models/hockey-game-statistic';\nimport { HockeyGameTeamStatistic } from '../models/hockey-game-team-statistic';\n\n@Injectable({providedIn: 'root'})\nexport class HockeyGameApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getUsers(gameId: number): Promise<GameUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/users/`).pipe(\n map(result => GameUser.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<HockeyGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/team_statistic/`).pipe(\n map(result => HockeyGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<HockeyGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/user_statistic/`).pipe(\n map(result => HockeyGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<HockeyGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/logs/`).pipe(\n map(result => HockeyGameLog.toFront(result))\n ).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField, DateTimeField } from './util';\nimport { File } from './file';\nimport { Tournament } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n datetime: 'datetime',\n preview_text: 'previewText',\n detail_text: 'detailText',\n picture: 'picture',\n cover: 'cover',\n is_main: 'isMain',\n tournaments: 'tournaments',\n },\n relation: {\n datetime: DateTimeField,\n picture: File,\n cover: File,\n tournaments: listField(Tournament)\n }\n})\nexport class LeagueNews extends BaseModel {\n id: number;\n title: string;\n datetime: Date;\n previewText: string;\n detailText: string;\n picture: File;\n cover: File;\n isMain: boolean;\n tournaments: Tournament[];\n\n @ToFrontHook\n static toFront(data: any): any {\n return undefined;\n }\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { User } from './user';\n\nexport enum PollStatuses {\n open = 1,\n closed,\n archived,\n}\n\n@ModelInstance({\n mappingFields: {\n uuid: 'uuid',\n name: 'name'\n }\n})\nexport class PollVariant extends BaseModel {\n uuid: string;\n name: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n answer_uuid: 'answerUuid',\n user: 'user',\n poll_id: 'pollId',\n },\n relation: {\n user: User\n }\n})\nexport class PollAnswer extends BaseModel {\n id: number;\n answerUuid: string;\n user: User;\n pollId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n active: 'active',\n status: 'status',\n team_id: 'teamId',\n name: 'name',\n description: 'description',\n variants: 'variants',\n author: 'author',\n answers: 'answers',\n multiple_answer: 'multipleAnswer',\n anonymous: 'anonymous',\n created_at: 'createdAt'\n },\n relation: {\n status: enumField(PollStatuses),\n variants: PollVariant,\n author: User,\n answers: PollAnswer,\n createdAt: DateTimeField,\n }\n})\nexport class Poll extends BaseModel {\n id: number;\n active: boolean;\n teamId: number;\n status: PollStatuses;\n name: string;\n description: string;\n _variants: PollVariant[];\n author: User;\n _answers: PollAnswer[];\n multipleAnswer: boolean;\n anonymous: boolean;\n createdAt: Date;\n variantsWithAnswers: {variant: PollVariant, percent: number}[] = [];\n\n set variants(value: PollVariant[]) {\n this._variants = value || [];\n if (this._answers) {\n this.calculateAnswersPercentage();\n }\n }\n get variants(): PollVariant[] {\n return this._variants;\n }\n\n set answers(value: PollAnswer[]) {\n this._answers = value || [];\n if (this._variants) {\n this.calculateAnswersPercentage();\n }\n }\n get answers(): PollAnswer[] {\n return this._answers;\n }\n\n calculateAnswersPercentage() {\n if (!this._answers.length) {\n return;\n }\n\n const variants = this._variants.map(v => v.uuid);\n const answersByVariant = this._answers.reduce((acc, item) => {\n if (variants.indexOf(item.answerUuid) < 0) {\n return acc;\n }\n if (!acc[item.answerUuid]) {\n acc[item.answerUuid] = 0;\n }\n acc[item.answerUuid]++;\n return acc;\n }, {});\n this.variantsWithAnswers = this._variants.map(item => ({\n variant: item,\n percent: answersByVariant[item.uuid] ? Math.round(100 * answersByVariant[item.uuid] / this._answers.length) : 0\n }))\n .sort((a, b) => a.percent > b.percent ? -1 : 1);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { League } from '../models/league';\nimport { map } from 'rxjs/operators';\nimport { Tournament } from '../models/tournament';\nimport { ConfigService } from '../services/config.service';\nimport { TournamentEventsListFilter } from './tournament-api';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { GameMediaFilters } from './media-api';\n\n@Injectable({providedIn: 'root'})\nexport class LeagueApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\n }\n\n async getByAlias(alias: string): Promise<League> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${alias}/`).pipe(\n map(result => League.toFront(result))\n ).toPromise();\n }\n\n async getByDomain(domain: string): Promise<League> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/by_domain/${domain}/`).pipe(\n map(result => League.toFront(result))\n ).toPromise();\n }\n\n async getTournaments(leagueId: number): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournaments/`).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n async getEvents(leagueId: number, page: number, size: number, filters?: TournamentEventsListFilter): Promise<PaginatedResponse<TournamentEvent[]>> {\n let params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\n if (filters) {\n if (filters.event) {\n params = params.set('event', TournamentEventTypes[filters.event]);\n }\n if (filters.search) {\n params = params.set('search', filters.search);\n }\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/events/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentEvent.toFront(result.body)\n }))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { LeagueNews } from '../models/league-news';\nimport { map } from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class LeagueNewsApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\n }\n\n async getLeagueNewsList(leagueId: number): Promise<PaginatedResponse<LeagueNews[]>> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/news/`, {observe: 'response'})\n .pipe(map(response => ({\n total: +response.headers.get('X-Page-Count'),\n data: LeagueNews.toFront(response.body)\n })))\n .toPromise();\n }\n\n async getMainLeagueNews(leagueId: number): Promise<LeagueNews> {\n return this.httpClient.get<any[]>(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/news/?is_main=true`)\n .pipe(map(response => response && response.length > 0 ? LeagueNews.toFront(response[0]) : null))\n .toPromise();\n }\n\n async getNewsById(newsId: number): Promise<LeagueNews> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league_news/${newsId}/`)\n .pipe(map(response => LeagueNews.toFront(response)))\n .toPromise();\n }\n\n async getTournamentNewsList(tournamentId: number): Promise<PaginatedResponse<LeagueNews[]>> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/news/`, {observe: 'response'})\n .pipe(map(response => ({\n total: +response.headers.get('X-Page-Count'),\n data: LeagueNews.toFront(response.body)\n })))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { MediaItem } from '../models/media-item';\nimport { Game, GameStatuses } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { ConfigService } from '../services/config.service';\n\nexport interface GameMediaFilters {\n tournamentStageId?: number;\n tournamentTour?: number;\n teamId?: number;\n playoffStage?: number;\n playoffId?: number;\n status?: GameStatuses;\n}\n\n@Injectable({providedIn: 'root'})\nexport class MediaApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getMedia(mediaId: number): Promise<MediaItem> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/media/${mediaId}/`).pipe(\n map(result => MediaItem.toFront(result))\n ).toPromise();\n }\n\n async getTournamentGameMedia(tournamentId: number, page: number, size: number, filters?: GameMediaFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n if (filters) {\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n if (filters.tournamentStageId) {\n params = params.set('tournament_stage_id', filters.tournamentStageId.toString());\n }\n if (filters.playoffId) {\n params = params.set('playoff_id', filters.playoffId.toString());\n }\n if (filters.playoffStage) {\n params = params.set('playoff_stage', filters.playoffStage.toString());\n }\n if (filters.status) {\n params = params.set('status', GameStatuses[filters.status]);\n }\n }\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/game_media/`, {observe: 'response', params}).pipe(\n map(response => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n })\n ).toPromise();\n }\n\n async getLeagueGameMedia(leagueId: number, page: number, size: number, filters?: GameMediaFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n if (filters) {\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n if (filters.tournamentStageId) {\n params = params.set('tournament_stage_id', filters.tournamentStageId.toString());\n }\n if (filters.playoffId) {\n params = params.set('playoff_id', filters.playoffId.toString());\n }\n if (filters.playoffStage) {\n params = params.set('playoff_stage', filters.playoffStage.toString());\n }\n if (filters.status) {\n params = params.set('status', GameStatuses[filters.status]);\n }\n }\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/game_media/`, {observe: 'response', params}).pipe(\n map(response => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n })\n ).toPromise();\n }\n\n async getGameMediaById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/game_media/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getGameMedia(gameId: number): Promise<MediaItem[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/media/`).pipe(\n map(result => MediaItem.toFront(result))\n ).toPromise();\n }\n\n async createZip(mediaIds: number[]): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/media/zip/`, mediaIds, { responseType: 'blob' })\n .toPromise();\n }\n\n async downloadMedia(mediaId: number): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/media/${mediaId}/download/`,{responseType: 'blob'})\n .toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { TeamUser } from './team-user';\nimport { Game } from './game';\n\nexport enum GameInviteStatus {\n accepted = 1,\n declined,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_user: 'teamUser',\n game_id: 'gameId',\n game: 'game',\n status: 'status',\n },\n relation: {\n game: Game,\n teamUser: TeamUser,\n status: enumField(GameInviteStatus),\n }\n})\nexport class GameInvite extends BaseModel {\n id: number;\n teamUser: TeamUser;\n gameId: number;\n game: Game;\n status: GameInviteStatus;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { User } from './user';\nimport { Team } from './team';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n user: 'user',\n team: 'team',\n team_id: 'teamId',\n user_accept: 'userAccept',\n team_accept: 'teamAccept',\n users_count: 'usersCount',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n score_sum: 'scoreSum',\n created_at: 'createdAt',\n updated_at: 'updatedAt',\n },\n relation: {\n user: User,\n team: Team,\n createdAt: DateTimeField,\n updateAt: DateTimeField,\n }\n})\nexport class TeamInvite extends BaseModel {\n id: number;\n userId: number;\n user: User;\n teamId: number;\n team: Team;\n userAccept: boolean;\n teamAccept: boolean;\n usersCount: number;\n gamesCount: number;\n wonGamesCount: number;\n scoreSum: number;\n createdAt: Date;\n updatedAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","export enum TeamEventTypes {\n training = 1,\n other = 2,\n}\n","import { enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum TeamEventInviteStatuses {\n accepted = 1,\n declined = 2\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_event_id: 'teamEventId',\n team_user_id: 'teamUserId',\n status: 'status',\n },\n relation: {\n status: enumField(TeamEventInviteStatuses)\n }\n})\nexport class TeamEventInvite {\n id: number;\n teamEventId: number;\n teamUserId: number;\n status: TeamEventInviteStatuses;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { TeamEventTypes } from '../models/team-event-type';\n\nexport const TeamEventTypeLocalization = {\n [TeamEventTypes.training]: 'Тренировка',\n [TeamEventTypes.other]: 'Другое'\n};\n","import { BaseModel, enumField, ModelInstance, DateTimeField, ToBackHook, ToFrontHook } from './util';\nimport { Team } from './team';\nimport { TeamEventTypeLocalization } from '../localization/team-event-type';\nimport { TeamEventTypes } from './team-event-type';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n team: 'team',\n event_type: 'eventType',\n event_custom_name: 'eventCustomName',\n description: 'description',\n datetime: 'datetime',\n location: 'location',\n },\n relation: {\n eventType: enumField(TeamEventTypes),\n team: Team,\n datetime: DateTimeField,\n }\n})\nexport class TeamEvent extends BaseModel {\n id: number;\n teamId: number;\n team: Team;\n eventType: TeamEventTypes;\n eventCustomName: string;\n description: string;\n datetime: Date;\n location: string;\n\n get name(): string {\n if (this.eventType === TeamEventTypes.other) {\n return this.eventCustomName;\n }\n return TeamEventTypeLocalization[this.eventType];\n }\n\n get isClosed(): boolean {\n return this.datetime.getTime() < new Date().getTime();\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { Team } from './team';\nimport { Poll } from './poll';\nimport { Game } from './game';\nimport { TeamInvite } from './team-invite';\nimport { TeamUser } from './team-user';\nimport { GameInvite } from './game-invite';\nimport { TeamEvent } from './team-event';\nimport { TeamEventInvite } from './team-event-invite';\nimport { Tournament } from './tournament';\nimport { TournamentInvite } from './tournament-invite';\nimport { TournamentTeam } from './tournament-team';\nimport { User } from './user';\n\nexport enum NotificationType {\n team_updated = 1,\n team_invited,\n team_join_request,\n team_join_declined_by_team,\n team_join_declined_by_user,\n team_join_canceled_by_team,\n team_join_canceled_by_user,\n team_joined_for_user,\n team_joined_for_team,\n team_user_role_changed_for_user,\n team_user_role_changed_for_team,\n team_user_number_changed,\n team_user_deleted_for_user,\n team_user_deleted_for_team,\n team_user_left,\n\n game_updated,\n game_invited,\n game_invite_accepted,\n game_invite_declined,\n game_remind,\n game_won,\n game_losing,\n game_tech_defeat,\n game_tech_victory,\n\n poll_created,\n poll_closed,\n\n team_event_invited,\n team_event_accepted,\n team_event_declined,\n team_event_remind,\n\n tournament_invited,\n tournament_joined,\n tournament_join_declined,\n tournament_join_canceled,\n tournament_user_invited,\n tournament_user_accepted_for_team,\n tournament_user_accepted_for_user,\n tournament_user_added,\n tournament_user_declined_for_team,\n tournament_user_declined_for_user,\n tournament_user_invite_deleted,\n tournament_user_deleted,\n tournament_user_disqualified_for_team,\n tournament_user_disqualified_for_user,\n tournament_user_disqualification_updated_for_team,\n tournament_user_disqualification_updated_for_user,\n tournament_team_deleted,\n\n org_tournament_invite_created,\n org_tournament_invite_declined,\n org_tournament_invite_deleted,\n org_tournament_invite_changed,\n org_tournament_user_deleted,\n org_tournament_user_invited,\n org_tournament_user_has_changes,\n org_tournament_team_leave,\n}\n\nexport enum NotificationServiceEnum {\n public = 1,\n org\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n event_type: 'event',\n data: 'data',\n initiator: 'initiator',\n team: 'team',\n team_invite: 'teamInvite',\n team_user: 'teamUser',\n poll: 'poll',\n game: 'game',\n game_invite: 'gameInvite',\n team_event: 'teamEvent',\n team_event_invite: 'teamEventInvite',\n tournament: 'tournament',\n tournament_invite: 'tournamentInvite',\n tournament_team: 'tournamentTeam',\n viewed: 'viewed',\n protected: 'protected',\n service: 'service',\n created_at: 'createdAt',\n },\n relation: {\n event: enumField(NotificationType),\n initiator: User,\n team: Team,\n teamInvite: TeamInvite,\n teamUser: TeamUser,\n poll: Poll,\n game: Game,\n gameInvite: GameInvite,\n teamEvent: TeamEvent,\n teamEventInvite: TeamEventInvite,\n tournament: Tournament,\n tournamentInvite: TournamentInvite,\n tournamentTeam: TournamentTeam,\n service: enumField(NotificationServiceEnum),\n createdAt: DateTimeField,\n }\n})\nexport class Notification extends BaseModel {\n id: number;\n event: NotificationType;\n data: any;\n initiator: User;\n team: Team;\n teamInvite: TeamInvite;\n teamUser: TeamUser;\n poll: Poll;\n game: Game;\n gameInvite: GameInvite;\n teamEvent: TeamEvent;\n teamEventInvite: TeamEventInvite;\n tournament: Tournament;\n tournamentInvite: TournamentInvite;\n tournamentTeam: TournamentTeam;\n viewed: boolean;\n protected: boolean;\n service: NotificationServiceEnum;\n createdAt: Date;\n\n get important(): boolean {\n return true;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\nimport { TeamUser } from './team-user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team_invite_id: 'tournamentTeamInviteId',\n tournament_team_id: 'tournamentTeamId',\n team_user: 'teamUser',\n accepted: 'accepted'\n },\n relation: {\n teamUser: TeamUser\n }\n})\nexport class TournamentTeamUserInvite extends BaseModel {\n id: number;\n tournamentTeamInviteId: number;\n tournamentTeamId: number;\n teamUser: TeamUser;\n accepted: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\nimport { Tournament } from './tournament';\nimport { TournamentTeamUserInvite } from './tournament-team-user-invite';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team: 'team',\n tournament: 'tournament',\n team_accept: 'teamAccept',\n organization_accept: 'organizationAccept',\n user_invites_count: 'userInvitesCount',\n user_invites: 'userInvites',\n notifications_count: 'notificationsCount',\n },\n relation: {\n team: Team,\n tournament: Tournament,\n userInvites: TournamentTeamUserInvite,\n }\n})\nexport class TournamentInvite extends BaseModel {\n id: number;\n team: Team;\n tournament: Tournament;\n teamAccept: boolean;\n organizationAccept: boolean;\n userInvitesCount: number;\n userInvites: TournamentTeamUserInvite[];\n notificationsCount: number;\n\n get isOpen(): boolean {\n return (this.teamAccept === null || this.organizationAccept === null) && this.teamAccept !== false && this.organizationAccept !== false;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\n\nexport enum NotificationAllowTypes {\n all = 1,\n important,\n none\n}\n\n@ModelInstance({\n mappingFields: {\n user_id: 'userId',\n popup: 'popup',\n sound: 'sound',\n browser: 'browser',\n email: 'email'\n },\n relation: {\n sound: enumField(NotificationAllowTypes),\n browser: enumField(NotificationAllowTypes),\n }\n})\nexport class NotificationSettings extends BaseModel {\n userId: number;\n popup: boolean;\n sound: NotificationAllowTypes;\n browser: NotificationAllowTypes;\n email: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook, enumField } from './util';\n\nexport enum TeamPermissionTypes {\n for_all = 1,\n for_users,\n for_team\n}\n\n@ModelInstance({\n mappingFields: {\n players: 'players',\n games: 'games',\n statistic: 'statistic',\n polls: 'polls',\n events: 'events'\n },\n relation: {\n players: enumField(TeamPermissionTypes),\n games: enumField(TeamPermissionTypes),\n statistic: enumField(TeamPermissionTypes),\n polls: enumField(TeamPermissionTypes),\n events: enumField(TeamPermissionTypes)\n }\n})\nexport class TeamPermission extends BaseModel {\n players: TeamPermissionTypes;\n games: TeamPermissionTypes;\n statistic: TeamPermissionTypes;\n polls: TeamPermissionTypes;\n events: TeamPermissionTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { Notification } from '../models/notification';\nimport { NotificationSettings } from '../models/notification-settings';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { ConfigService } from '../services/config.service';\n\nexport interface NotificationFilters {\n protected?: boolean;\n not_viewed?: boolean;\n important?: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class NotificationBaseApi {\n protected apiUrl: string;\n\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getCount(): Promise<number> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/count/`)\n .pipe(map(data => +data))\n .toPromise();\n }\n\n async getList(page: number, size: number, filters: NotificationFilters = {}): Promise<PaginatedResponse<Notification[]>> {\n let params = new HttpParams()\n .set('page', page.toString())\n .set('size', size.toString());\n for (const key of Object.keys(filters)) {\n params = params.set(key, filters[key]);\n }\n\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/`, {params, observe: 'response'})\n .pipe(\n map(response => {\n const data: Notification[] = Notification.toFront(response.body);\n return {\n total: +response.headers.get('x-page-count'),\n data\n };\n }),\n ).toPromise();\n }\n\n async markViewed(notificationId: number, viewed: boolean): Promise<Notification> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/${notificationId}/viewed/`, {viewed})\n .pipe(map(data => Notification.toFront(data)))\n .toPromise();\n }\n\n async markAllViewed(): Promise<Notification[]> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/viewed/`, {})\n .pipe(map(data => Notification.toFront(data)))\n .toPromise();\n }\n\n async getNotificationSettings(): Promise<NotificationSettings> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}${this.apiUrl}/notification_settings/`)\n .pipe(map(data => NotificationSettings.toFront(data)))\n .toPromise();\n }\n\n async updateNotificationSettings(data: NotificationSettings): Promise<NotificationSettings> {\n return this.httpClient.post(\n `${this.configService.get('apiUrl')}${this.apiUrl}/notification_settings/`,\n NotificationSettings.toBack(data)\n )\n .pipe(map(result => NotificationSettings.toFront(result)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NotificationBaseApi } from './notification-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class NotificationApi extends NotificationBaseApi {\n protected apiUrl = '/api/v1';\n}\n","import { Injectable } from '@angular/core';\nimport { NotificationBaseApi } from './notification-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class OrgNotificationApi extends NotificationBaseApi {\n protected apiUrl = '/org/api/v1';\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\nimport { City } from '../models/city';\nimport { Sport } from '../models/sport';\n\n@Injectable({providedIn: 'root'})\nexport class ReferenceApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getCities(): Promise<City[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/reference/cities/`)\n .pipe(\n map(data => City.toFront(data))\n ).toPromise();\n }\n\n async getSports(): Promise<Sport[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/sport/`)\n .pipe(\n map(data => Sport.toFront(data))\n ).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n email: 'email',\n first_name: 'firstName',\n last_name: 'lastName',\n },\n})\nexport class TeamInviteExternal extends BaseModel {\n id: number;\n teamId: number;\n email: string;\n firstName: string;\n lastName: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField } from './util';\nimport { Team } from './team';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { TeamUser } from './team-user';\nimport { TournamentTeam } from './tournament-team';\nimport { User } from './user';\nimport { BaseStatistic } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n team_user: 'teamUser',\n tournament_team_user: 'tournamentTeamUser',\n tournament_team: 'tournamentTeam',\n user: 'user',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n serve_hits: 'serveHits',\n serve_faults: 'serveFaults',\n serve_aces: 'serveAces',\n serve_percent: 'servePercent',\n ace_percent: 'acePercent',\n stuff_blocks: 'stuffBlocks',\n block_faults: 'blockFaults',\n block_rebounds: 'blockRebounds',\n block_percent: 'blockPercent',\n attack_spikes: 'attackSpikes',\n attack_faults: 'attackFaults',\n attack_shots: 'attackShots',\n attack_percent: 'attackPercent',\n receives: 'receives',\n receive_faults: 'receiveFaults',\n excellent_receives: 'excellentReceives',\n receive_percent: 'receivePercent',\n serve_receives: 'serveReceives',\n serve_receive_faults: 'serveReceiveFaults',\n excellent_serve_receives: 'excellentServeReceives',\n serve_receive_percent: 'serveReceivePercent',\n points: 'points',\n faults: 'faults',\n newbie: 'newbie',\n },\n relation: {\n team: Team,\n teamUser: TeamUser,\n tournamentTeamUser: TournamentTeamUser,\n tournamentTeam: TournamentTeam,\n user: User,\n month: DateField,\n }\n})\nexport class VolleyballStatistic extends BaseStatistic {\n serveHits: number;\n serveFaults: number;\n serveAces: number;\n servePercent: number;\n acePercent: number;\n stuffBlocks: number;\n blockFaults: number;\n blockRebounds: number;\n blockPercent: number;\n attackSpikes: number;\n attackFaults: number;\n attackShots: number;\n attackPercent: number;\n receives: number;\n receiveFaults: number;\n excellentReceives: number;\n receivePercent: number;\n serveReceives: number;\n serveReceiveFaults: number;\n excellentServeReceives: number;\n serveReceivePercent: number;\n points: number;\n faults: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField, DateField } from './util';\n\nexport enum TournamentStageStatuses {\n open,\n in_progress,\n closed\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n date: 'date',\n tournament_id: 'tournamentId',\n status: 'status',\n },\n relation: {\n date: DateField,\n status: enumField(TournamentStageStatuses)\n }\n})\nexport class TournamentStage extends BaseModel {\n id: number;\n name: string;\n date: Date;\n tournamentId: number;\n status: TournamentStageStatuses;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { TeamUserRole } from './team-user';\n\n@ModelInstance({\n mappingFields: {\n can_edit: 'canEdit',\n can_view_users: 'canViewUsers',\n can_manage_permission: 'canManagePermission',\n can_change_owner: 'canChangeOwner',\n can_delete: 'canDelete',\n can_manage_invites: 'canManageInvites',\n can_view_invites: 'canViewInvites',\n can_manage_polls: 'canManagePolls',\n can_view_polls: 'canViewPolls',\n can_answer_poll: 'canAnswerPoll',\n can_manage_games: 'canManageGames',\n can_view_games: 'canViewGames',\n can_view_statistic: 'canViewStatistic',\n can_promote_users: 'canPromoteUsers',\n can_edit_users: 'canEditUsers',\n can_delete_users: 'canDeleteUsers',\n can_view_events: 'canViewEvents',\n can_manage_events: 'canManageEvents',\n can_view_tournaments: 'canViewTournaments',\n can_manage_tournaments: 'canManageTournaments',\n role: 'role'\n },\n relation: {\n role: enumField(TeamUserRole)\n }\n})\nexport class TeamAccess extends BaseModel {\n canEdit: boolean;\n canViewUsers: boolean;\n canManagePermission: boolean;\n canChangeOwner: boolean;\n canDelete: boolean;\n canManageInvites: boolean;\n canViewInvites: boolean;\n canManagePolls: boolean;\n canViewPolls: boolean;\n canAnswerPoll: boolean;\n canManageGames: boolean;\n canViewGames: boolean;\n canViewStatistic: boolean;\n canPromoteUsers: boolean;\n canEditUsers: boolean;\n canDeleteUsers: boolean;\n canViewEvents: boolean;\n canManageEvents: boolean;\n canViewTournaments: boolean;\n canManageTournaments: boolean;\n role: TeamUserRole;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';\nimport { Team } from '../models/team';\nimport { map } from 'rxjs/operators';\nimport { TeamUser, TeamUserRole } from '../models/team-user';\nimport { User } from '../models/user';\nimport { TeamInvite } from '../models/team-invite';\nimport { TeamInviteExternal } from '../models/team-invite-external';\nimport { Poll } from '../models/poll';\nimport { VolleyballStatistic } from '../models/volleyball-statistic';\nimport { Game } from '../models/game';\nimport { TeamEvent } from '../models/team-event';\nimport { Tournament } from '../models/tournament';\nimport { TournamentTeam } from '../models/tournament-team';\nimport { TournamentInvite } from '../models/tournament-invite';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { BasketballStatistic } from '../models/basketball-statistic';\nimport { TeamPermission } from '../models/team-permission';\nimport { TeamAccess } from '../models/team-access';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TeamApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async search(query: string, sportId?: number): Promise<Team[]> {\n let params = (new HttpParams()).set('search', query);\n if (sportId) {\n params = params.set('sport', sportId.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/`, {params})\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async create(team: Team): Promise<Team> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/`, Team.toBack(team))\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getById(teamId: number): Promise<Team> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/`)\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getTeamAccess(teamId: number): Promise<TeamAccess> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/access/`)\n .pipe(map(data => TeamAccess.toFront(data)))\n .toPromise();\n }\n\n async update(teamId: number, values: any): Promise<Team> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/`, Team.toBack(values))\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async delete(team: Team): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team/${team.id}/`)\n .toPromise();\n }\n\n async getPermission(teamId: number): Promise<TeamPermission> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/permission/`)\n .pipe(map(data => TeamPermission.toFront(data)))\n .toPromise();\n }\n\n async updatePermission(teamId: number, permission: TeamPermission): Promise<TeamPermission> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/permission/`, TeamPermission.toBack(permission))\n .pipe(map(data => TeamPermission.toFront(data)))\n .toPromise();\n }\n\n async getUsers(teamId: number, tournamentId?: number): Promise<TeamUser[]> {\n let params = new HttpParams();\n if (tournamentId) {\n params = params.set('tournament_id', tournamentId.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/`, {params})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateUserRole(teamId: number, teamUserId: number, role: TeamUserRole): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/${teamUserId}/role/`, {role: TeamUserRole[role]})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateUserNumber(teamId: number, teamUserId: number, gameNumber: number): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/${teamUserId}/number/`, {number: gameNumber.toString()})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async deleteUser(teamUser: TeamUser): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team/${teamUser.teamId}/users/${teamUser.id}/`)\n .toPromise();\n }\n\n async changeOwner(teamId: number, user: User): Promise<Team> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/owner/`, {id: user.id})\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getInvites(teamId: number): Promise<TeamInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites/`)\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async sendInvite(teamId: number, user: User): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites/`, {user})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/accept/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async declineInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/decline/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async resendInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/resend/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async getInvitesExternal(teamId: number): Promise<TeamInviteExternal[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites_external/`)\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async sendInviteExternal(teamId: number, invite: TeamInviteExternal): Promise<TeamInviteExternal> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites_external/`, TeamInviteExternal.toBack(invite))\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async deleteInviteExternal(invite: TeamInviteExternal): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/invites_external/${invite.id}/`)\n .toPromise();\n }\n\n async resendInviteExternal(invite: TeamInviteExternal): Promise<TeamInviteExternal> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/invites_external/${invite.id}/resend/`, {})\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async getPolls(teamId: number, archive: boolean = false): Promise<Poll[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/polls/${archive ? '?archive=1' : ''}`)\n .pipe(map(data => Poll.toFront(data)))\n .toPromise();\n }\n\n async createPoll(teamId: number, poll: Poll): Promise<Poll> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/polls/`, Poll.toBack(poll))\n .pipe(map(data => Poll.toFront(data)))\n .toPromise();\n }\n\n async getUsersStatistic(teamId: number): Promise<BasketballStatistic[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/statistics/`)\n .pipe(map(data => BasketballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getVolleyballStatistic(teamId: number): Promise<VolleyballStatistic[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/volleyball_statistics/`)\n .pipe(map(data => VolleyballStatistic.toFront(data)))\n .toPromise();\n }\n\n async joinTeam(teamId: number): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/join/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async leaveTeam(teamId: number): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/leave/`, {})\n .toPromise();\n }\n\n async getGames(teamId: number, archive = false): Promise<Game[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/games/${archive ? '?archive=1' : ''}`)\n .pipe(map(data => Game.toFront(data)))\n .toPromise();\n }\n\n async createGame(teamId: number, game: Game): Promise<Game> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/games/`, Game.toBack(game))\n .pipe(map(data => Game.toFront(data)))\n .toPromise();\n }\n\n async getTeamEvents(teamId: number): Promise<TeamEvent[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/events/`)\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async createTeamEvent(teamId: number, teamEvent: TeamEvent): Promise<TeamEvent> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/events/`, TeamEvent.toBack(teamEvent))\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async getTournaments(teamId: number): Promise<Tournament[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournaments/`)\n .pipe(map(data => Tournament.toFront(data)))\n .toPromise();\n }\n\n async getTournamentTeams(teamId: number): Promise<TournamentTeam[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournament_teams/`)\n .pipe(map(data => TournamentTeam.toFront(data)))\n .toPromise();\n }\n\n async getTournamentInvites(teamId: number): Promise<TournamentInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournament_invites/`)\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async getTournamentGames(teamId: number, tournamentId: number, page: number, size?: number): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournaments/${tournamentId}/games/`, {params, observe: 'response'})\n .pipe(map((response: HttpResponse<any>) => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n }))\n .toPromise();\n }\n\n async acceptTournamentInvite(inviteId: number): Promise<TournamentInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/tournament_invite/${inviteId}/accept/`, {})\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async declineTournamentInvite(inviteId: number): Promise<TournamentInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/tournament_invite/${inviteId}/decline/`, {})\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async registerLazyUser(teamId: number, userData: User): Promise<TeamUser> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/lazy_user/`, {user: User.toBack(userData)})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async getLazyUser(teamUserId: number): Promise<TeamUser> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`)\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateLazyUser(teamUserId: number, userData: User): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`, {user: User.toBack(userData)})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async deleteLazyUser(teamUserId: number): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`)\n .toPromise();\n }\n\n async resendLazyUserEmail(teamUserId: number): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/resend_email/`, {})\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { TeamEvent } from '../models/team-event';\nimport { TeamEventInvite } from '../models/team-event-invite';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TeamEventApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getTeamEvent(teamEventId: number): Promise<TeamEvent> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/`)\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async updateTeamEvent(teamEvent: TeamEvent): Promise<TeamEvent> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEvent.id}/`, TeamEvent.toBack(teamEvent))\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async deleteTeamEvent(teamEventId: number): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/`)\n .toPromise();\n }\n\n async getTeamEventInvites(teamEventId: number): Promise<TeamEventInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/invites/`)\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async createTeamEventInvite(teamEventId: number, teamUserId: number): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/invites/`, {team_user_id: teamUserId})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptTeamEventInvite(teamEventInvite: TeamEventInvite): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event_invite/${teamEventInvite.id}/accept/`, {})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async declineTeamEventInvite(teamEventInvite: TeamEventInvite): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event_invite/${teamEventInvite.id}/decline/`, {})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { File } from './file';\nimport { User } from './user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n picture: 'picture',\n text: 'text',\n author: 'author',\n created_at: 'createdAt',\n },\n relation: {\n picture: File,\n author: User,\n createdAt: DateTimeField,\n }\n})\nexport class TournamentNews extends BaseModel {\n id: number;\n title: string;\n picture: File;\n text: string;\n author: User;\n createdAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField } from './util';\n\n@ModelInstance({\n mappingFields: {\n stage_id: 'stageId',\n tours_count: 'toursCount',\n playoff_stages_count: 'playoffStagesCount',\n }\n})\nexport class GameTimelineStageItem {\n stageId: number;\n toursCount: number;\n playoffStagesCount: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n tours_count: 'toursCount',\n playoff_stages_count: 'playoffStagesCount',\n current_tour: 'currentTour',\n current_playoff_stage: 'currentPlayoffStage',\n stages: 'stages',\n tournament_stage_id: 'tournamentStageId',\n },\n relation: {\n stages: listField(GameTimelineStageItem)\n }\n})\nexport class GameTimelineStages extends BaseModel {\n toursCount: number;\n playoffStagesCount: number;\n currentTour: number;\n currentPlayoffStage: number;\n stages: GameTimelineStageItem[];\n tournamentStageId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { generateArray } from '../utils/array';\n\nexport enum PlayoffTypes {\n double_elimination = 'double_elimination',\n elimination = 'elimination'\n}\n\n@ModelInstance({\n mappingFields: {\n rounds: 'rounds',\n final_rounds: 'finalRounds',\n third_place_rounds: 'thirdPlaceRounds',\n teams_count: 'teamsCount',\n type: 'type',\n },\n relation: {\n type: enumField(PlayoffTypes)\n }\n})\nexport class PlayoffSettings extends BaseModel {\n rounds: number;\n finalRounds: number;\n thirdPlaceRounds: number;\n teamsCount: number;\n type: PlayoffTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n settings: 'settings',\n tournament_id: 'tournamentId',\n tournament_stage_id: 'tournamentStageId',\n is_official: 'isOfficial'\n },\n relation: {\n settings: PlayoffSettings\n }\n})\nexport class Playoff extends BaseModel {\n id: number;\n name: string;\n settings: PlayoffSettings;\n tournamentId: number;\n tournamentStageId: number;\n isOfficial: boolean;\n private stages: {title: string, value: number}[] = [];\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get stagesCount(): number {\n return Math.log(this.settings.teamsCount) / Math.log(2);\n }\n\n getPlayoffStages() {\n if (this.stages.length === 0 && this.settings.teamsCount) {\n const stagesCount = Math.log(this.settings.teamsCount) / Math.log(2);\n this.stages = generateArray(stagesCount).map(stage => {\n const playoffStage = this.settings.teamsCount / 2 ** stage;\n let title = '';\n if (playoffStage === 1) {\n title = 'Финал';\n } else {\n title = `1 / ${playoffStage}`;\n }\n return {\n value: stage,\n title\n };\n });\n }\n return this.stages;\n }\n}\n","export function generateArray(length: number): number[] {\n if (length <= 0) {\n return [];\n }\n return Array.apply(null, Array(length)).map((_, i) => i + 1);\n}\n\nexport function getArrayChunks(array: any[], length: number): any[][] {\n const chunks = [];\n const chunkLength = Math.ceil(array.length / length);\n if (chunkLength === 0) {\n return [array];\n }\n for (let i = 0; i < chunkLength; i++) {\n chunks.push(array.slice(i * length, (i + 1) * length));\n }\n return chunks;\n}\n","import { 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 } 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 { 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';\n\nexport interface TournamentGamesFilters {\n tournamentStageId?: number;\n tournamentTour?: number;\n teamId?: number;\n playoffStage?: number;\n playoffId?: number;\n status?: GameStatuses;\n}\n\nexport type StatisticGroupByTypes = 'team' | 'user' | 'team_user' | 'tournament_team' | 'tournament_team_user' | 'month' | 'win_loses';\n\nexport interface StatisticFilters {\n tournament_id?: number;\n tournament_team_id?: number;\n tournament_team_user_id?: number;\n team_id?: number;\n team_user_id?: number;\n user_id?: number;\n tournament_stage_id?: number;\n tournament_tour?: number;\n playoff_stage?: number;\n playoff_id?: number;\n date_from?: string;\n date_to?: string;\n per_game?: boolean;\n group_by: StatisticGroupByTypes;\n}\n\nexport interface TournamentEventsListFilter {\n event?: TournamentEventTypes;\n search?: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class TournamentApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getByAlias(alias: string): Promise<Tournament> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${alias}/`)\n .pipe(map(result => Tournament.toFront(result)))\n .toPromise();\n }\n\n async getNews(tournamentId: number): Promise<TournamentNews[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/news/`)\n .pipe(map(result => TournamentNews.toFront(result)))\n .toPromise();\n }\n\n async getEvents(tournamentId: number, page: number, size: number, filters?: TournamentEventsListFilter): Promise<PaginatedResponse<TournamentEvent[]>> {\n let params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\n if (filters) {\n if (filters.event) {\n params = params.set('event', TournamentEventTypes[filters.event]);\n }\n if (filters.search) {\n params = params.set('search', filters.search);\n }\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/events/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentEvent.toFront(result.body)\n })))\n .toPromise();\n }\n\n async getTournamentStages(tournamentId: number): Promise<TournamentStage[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/stages/`).pipe(\n map(data => TournamentStage.toFront(data))\n ).toPromise();\n }\n\n async getPlayoff(tournamentId: number): Promise<Playoff[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/playoff/`).pipe(\n map(result => Playoff.toFront(result))\n ).toPromise();\n }\n\n async getPlayoffGames(playoffId: number): Promise<Game[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_playoff/${playoffId}/games/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getGamesStages(tournamentId: number): Promise<GameTimelineStages> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/games_stages/`)\n .pipe(map(data => GameTimelineStages.toFront(data)))\n .toPromise();\n }\n\n async getGames(tournamentId: number, page: number, size: number, filters: TournamentGamesFilters = {}): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n if (filters.tournamentStageId) {\n params = params.set('tournament_stage_id', filters.tournamentStageId.toString());\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n if (filters.playoffStage) {\n params = params.set('playoff_stage', filters.playoffStage.toString());\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n if (filters.status) {\n params = params.set('status', GameStatuses[filters.status]);\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/games/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: Game.toFront(result.body)\n }))).toPromise();\n }\n\n async getTeams(tournamentId: number): Promise<TournamentTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/teams/`)\n .pipe(map(result => TournamentTeam.toFront(result)))\n .toPromise();\n }\n\n async getStageTeams(tournamentId: number): Promise<TournamentStageTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/stage_teams/`)\n .pipe(map(result => TournamentStageTeam.toFront(result)))\n .toPromise();\n }\n\n async getTeamById(tournamentTeamId: number): Promise<TournamentTeam> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/`)\n .pipe(map(result => TournamentTeam.toFront(result)))\n .toPromise();\n }\n\n async getUserById(userId: number): Promise<TournamentTeamUser> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${userId}/`)\n .pipe(map(result => TournamentTeamUser.toFront(result)))\n .toPromise();\n }\n\n async getUserGames(tournamentUserId: number): Promise<Game[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${tournamentUserId}/games/`)\n .pipe(map(result => Game.toFront(result)))\n .toPromise();\n }\n\n async getBasketballStatistic(filters?: StatisticFilters): Promise<BasketballStatistic[]> {\n let params = new HttpParams();\n if (filters) {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n }\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/basketball_statistic/`, {params}).pipe(\n map(result => BasketballStatistic.toFront(result))\n ).toPromise();\n }\n\n async getVolleyballStatistic(filters?: StatisticFilters): Promise<VolleyballStatistic[]> {\n let params = new HttpParams();\n if (filters) {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n }\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/volleyball_statistic/`, {params}).pipe(\n map(result => VolleyballStatistic.toFront(result))\n ).toPromise();\n }\n\n async getHockeyStatistic(filters?: StatisticFilters): Promise<HockeyStatistic[]> {\n let params = new HttpParams();\n if (filters) {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n }\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/hockey_statistic/`, {params}).pipe(\n map(result => HockeyStatistic.toFront(result))\n ).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\n\n@ModelInstance({\n mappingFields: {\n valid_users_count: 'validUsersCount',\n invalid_users_count: 'invalidUsersCount',\n has_access: 'hasAccess',\n invite_sent: 'inviteSent',\n already_in_tournament: 'alreadyInTournament'\n }\n})\nexport class TournamentJoinData extends BaseModel {\n validUsersCount: number;\n invalidUsersCount: number;\n hasAccess: boolean;\n inviteSent: boolean;\n alreadyInTournament: boolean;\n\n get usersCount(): number {\n return this.validUsersCount + this.invalidUsersCount;\n }\n\n get valid() {\n return this.hasAccess && !this.inviteSent && !this.alreadyInTournament;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n join_data: 'joinData'\n },\n relation: {\n team: Team,\n joinData: TournamentJoinData\n }\n})\nexport class TournamentJoinTeam extends BaseModel {\n team: Team;\n joinData: TournamentJoinData;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TournamentJoinTeam } from '../models/tournament-join-team';\nimport { map } from 'rxjs/operators';\nimport { TeamUser } from '../models/team-user';\nimport { TournamentTeamUserInvite } from '../models/tournament-team-user-invite';\nimport { TournamentInvite } from '../models/tournament-invite';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TournamentJoinApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getTeamsForJoin(tournamentId: number): Promise<TournamentJoinTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/teams_for_join/`).pipe(\n map(response => TournamentJoinTeam.toFront(response))\n ).toPromise();\n }\n\n async getTeamUsers(teamId: number): Promise<TeamUser[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/`)\n .pipe(\n map(data => TeamUser.toFront(data))\n ).toPromise();\n }\n\n async joinTournament(tournamentId: number, teamId: number, invites: TournamentTeamUserInvite[]): Promise<TournamentInvite> {\n const body = {\n team: {id: teamId},\n user_invites: TournamentTeamUserInvite.toBack(invites)\n };\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/join/`, body)\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TournamentStage } from '../models/tournament-stage';\nimport { map } from 'rxjs/operators';\nimport { TournamentGroup } from '../models/tournament-group';\nimport { Playoff } from '../models/playoff';\nimport { TournamentStageTeam } from '../models/tournament-stage-team';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TournamentStageApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getById(id: number): Promise<TournamentStage> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${id}/`)\n .pipe(map(result => TournamentStage.toFront(result)))\n .toPromise();\n }\n\n async getGroups(stageId: number): Promise<TournamentGroup[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/groups/`)\n .pipe(map(result => TournamentGroup.toFront(result)))\n .toPromise();\n }\n\n async getPlayoffs(stageId: number): Promise<Playoff[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/playoff/`)\n .pipe(map(result => Playoff.toFront(result)))\n .toPromise();\n }\n\n async getTeams(stageId: number): Promise<TournamentStageTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/teams/`)\n .pipe(map(result => TournamentStageTeam.toFront(result)))\n .toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n edit: 'edit',\n personal_data: 'personalData',\n teams: 'teams',\n statistic: 'statistic',\n games: 'games'\n }\n})\nexport class UserAccess extends BaseModel {\n edit: boolean;\n personalData: boolean;\n teams: boolean;\n statistic: boolean;\n games: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField, DateTimeField } from './util';\nimport { GameLogBase } from './game-log-base';\nimport { GameUser } from './game-user';\n\nexport enum VolleyballGameLogType {\n enter_game = 1,\n exit_game,\n remove_game,\n serve_hit,\n serve_fault,\n serve_ace,\n stuff_block,\n block_fault,\n block_rebound,\n attack_spike,\n attack_fault,\n attack_shot,\n receive,\n receive_fault,\n excellent_receive,\n point,\n fault,\n serve_receive,\n serve_receive_fault,\n excellent_serve_receive,\n timeout,\n}\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 }\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\n get id(): number {\n return this.gameUserId;\n }\n\n get attacks(): number {\n return this.attackSpikes + this.attackShots;\n }\n\n get blocks(): number {\n return this.stuffBlocks + this.blockRebounds;\n }\n\n get totalReceives(): number {\n return this.receives + this.excellentReceives;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Game } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { GameUser } from '../models/game-user';\nimport { VolleyballGameTeamStatistic } from '../models/volleyball-game-team-statistic';\nimport { VolleyballGameStatistic } from '../models/volleyball-game-statistic';\nimport { VolleyballGameLog } from '../models/volleyball-game-log';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class VolleyballGameApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getUsers(gameId: number): Promise<GameUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/users/`).pipe(\n map(result => GameUser.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<VolleyballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/team_statistic/`).pipe(\n map(result => VolleyballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<VolleyballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/user_statistic/`).pipe(\n map(result => VolleyballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<VolleyballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/logs/`).pipe(\n map(result => VolleyballGameLog.toFront(result))\n ).toPromise();\n }\n}\n","import { BasketballGameLogTypes } from '../models/basketball-game-log';\n\nexport const BasketballGameLogTypeLocalization = {\n [BasketballGameLogTypes.enter_game]: 'Выход на площадку',\n [BasketballGameLogTypes.exit_game]: 'Ушел с площадки',\n [BasketballGameLogTypes.remove_game]: 'Удаление с площадки',\n [BasketballGameLogTypes.two_point_attempt]: 'Бросок 2 очка',\n [BasketballGameLogTypes.three_point_attempt]: 'Бросок 3 очка',\n [BasketballGameLogTypes.free_throw_attempt]: 'Штрафной бросок',\n [BasketballGameLogTypes.one_point_attempt]: 'Бросок 1 очко',\n [BasketballGameLogTypes.two_point_made]: '2 очка',\n [BasketballGameLogTypes.three_point_made]: '3 очка',\n [BasketballGameLogTypes.free_throw_made]: '1 очко, штрафной',\n [BasketballGameLogTypes.one_point_made]: '1 очко',\n [BasketballGameLogTypes.assist]: 'Передача',\n [BasketballGameLogTypes.block]: 'Блокшот',\n [BasketballGameLogTypes.rebound]: 'Подбор',\n [BasketballGameLogTypes.offensive_rebound]: 'Подбор в нападении',\n [BasketballGameLogTypes.defensive_rebound]: 'Подбор в защите',\n [BasketballGameLogTypes.steal]: 'Перехват',\n [BasketballGameLogTypes.turnover]: 'Потеря',\n [BasketballGameLogTypes.personal_foul]: 'Фол',\n [BasketballGameLogTypes.technical_foul]: 'Технический фол',\n [BasketballGameLogTypes.unsportsmanlike_foul]: 'Неспортиный фол',\n [BasketballGameLogTypes.timeout]: 'Таймаут',\n};\n","import { HockeyGameLogTypes } from '../models/hockey-game-log';\n\nexport const HockeyGameLogTypeLocalization = {\n [HockeyGameLogTypes.enter_game]: 'Выход на площадку',\n [HockeyGameLogTypes.exit_game]: 'Ушел с площадки',\n [HockeyGameLogTypes.shot_miss]: 'Бросок мимо',\n [HockeyGameLogTypes.shot_on_goal]: 'Бросок по воротам',\n [HockeyGameLogTypes.shot_blocked]: 'Заблокированный бросок',\n [HockeyGameLogTypes.goal]: 'Гол',\n [HockeyGameLogTypes.shootout_attempt]: 'Булит промах',\n [HockeyGameLogTypes.shootout_goal]: 'Булит гол',\n [HockeyGameLogTypes.assist]: 'Передача',\n [HockeyGameLogTypes.block_shot]: 'Блокировка броска',\n [HockeyGameLogTypes.minor_penalty]: 'Малый штраф',\n [HockeyGameLogTypes.major_penalty]: 'Большой штраф',\n [HockeyGameLogTypes.misconduct_penalty]: 'Дисциплинарный штраф',\n [HockeyGameLogTypes.game_misconduct_penalty]: 'Дисциплинарный штраф до конца игры',\n [HockeyGameLogTypes.match_penalty]: 'Матч-штраф',\n [HockeyGameLogTypes.penalty_shot]: 'Штрафной бросок',\n [HockeyGameLogTypes.face_off_lose]: 'Проирыш в вбрасывании',\n [HockeyGameLogTypes.face_off_win]: 'Победа в вбрасывании',\n [HockeyGameLogTypes.save]: 'Отражен бросок',\n [HockeyGameLogTypes.timeout]: 'Таймаут'\n};\n","import { OvertimeTypes } from '../models/tournament';\n\nexport const OvertimeTypeLocalization = {\n [OvertimeTypes.to_score_diff]: 'До разницы в N мячей',\n [OvertimeTypes.to_score_total]: 'До N очков',\n [OvertimeTypes.time]: 'По времени',\n [OvertimeTypes.without_overtime]: 'Без овертайма',\n [OvertimeTypes.to_first_goal]: 'На N минут до первой шайбы',\n [OvertimeTypes.to_first_goal_and_bullitts]: 'На N минут до первой шайбы + буллиты',\n [OvertimeTypes.bullitts]: 'Буллиты'\n};\n","import { TeamUserRole } from '../models/team-user';\n\nexport const TeamUserRoleLocalization = {\n [TeamUserRole.moderator]: 'Модератор',\n [TeamUserRole.member]: 'Пользователь',\n [TeamUserRole.admin]: 'Владелец',\n};\n","import { GameBasketballPosition, WorkHand } from '../models/basketball-profile';\nimport { GameVolleyballPosition, VolleyballWorkHand } from '../models/volleyball-profile';\nimport { GameHockeyPosition } from '../models/hockey-profile';\n\nexport const GameBasketballPositionLocalization = {\n [GameBasketballPosition.point_guard]: 'Разыгрывающий защитник',\n [GameBasketballPosition.shooting_guard]: 'Атакующий защитник',\n [GameBasketballPosition.small_forward]: 'Легкий форвард',\n [GameBasketballPosition.power_forward]: 'Мощный форвард',\n [GameBasketballPosition.center]: 'Центровой',\n};\n\nexport const GameBasketballPositionShortLocalization = {\n [GameBasketballPosition.point_guard]: 'PG',\n [GameBasketballPosition.shooting_guard]: 'SG',\n [GameBasketballPosition.small_forward]: 'SF',\n [GameBasketballPosition.power_forward]: 'PF',\n [GameBasketballPosition.center]: 'C',\n};\n\nexport const WorkHandLocalization = {\n [WorkHand.left]: 'Левая',\n [WorkHand.right]: 'Правая'\n};\n\nexport const GameVolleyballPositionLocalization = {\n [GameVolleyballPosition.setter]: 'Связующий',\n [GameVolleyballPosition.libero]: 'Либеро',\n [GameVolleyballPosition.middle_player]: 'Центральный блокирующий',\n [GameVolleyballPosition.receiver_attacker]: 'Доигровщик',\n [GameVolleyballPosition.dioganal]: 'Диагональный',\n};\n\nexport const GameVolleyballPositionShortLocalization = {\n [GameVolleyballPosition.setter]: 'S',\n [GameVolleyballPosition.libero]: 'L',\n [GameVolleyballPosition.middle_player]: 'MP',\n [GameVolleyballPosition.receiver_attacker]: 'RA',\n [GameVolleyballPosition.dioganal]: 'D',\n};\n\nexport const GameVolleyballPositionShortRuLocalization = {\n [GameVolleyballPosition.setter]: 'связ.',\n [GameVolleyballPosition.libero]: 'либеро',\n [GameVolleyballPosition.middle_player]: 'блок.',\n [GameVolleyballPosition.receiver_attacker]: 'доигр.',\n [GameVolleyballPosition.dioganal]: 'диаг.',\n};\n\nexport const VolleyballWorkHandLocalization = {\n [VolleyballWorkHand.left]: 'Левая',\n [VolleyballWorkHand.right]: 'Правая'\n};\n\nexport const GameHockeyPositionLocalization = {\n [GameHockeyPosition.goaltender]: 'Вратарь',\n [GameHockeyPosition.defensemen]: 'Защитник',\n [GameHockeyPosition.forward]: 'Нападающий'\n};\n","import { VolleyballGameLogType } from '../models/volleyball-game-log';\n\nexport const VolleyballGameLogTypeLocalization = {\n [VolleyballGameLogType.enter_game]: 'Выход на площадку',\n [VolleyballGameLogType.exit_game]: 'Уход с площадки',\n [VolleyballGameLogType.remove_game]: 'Удаление с площадки',\n [VolleyballGameLogType.serve_ace]: 'Эйс',\n [VolleyballGameLogType.serve_hit]: 'Подача',\n [VolleyballGameLogType.serve_fault]: 'Ошибка на подаче',\n [VolleyballGameLogType.attack_spike]: 'Результативная атака',\n [VolleyballGameLogType.attack_shot]: 'Успешная атака',\n [VolleyballGameLogType.attack_fault]: 'Ошибка атаки',\n [VolleyballGameLogType.stuff_block]: 'Результативный блок',\n [VolleyballGameLogType.block_rebound]: 'Успешный блок',\n [VolleyballGameLogType.block_fault]: 'Ошибка на блоке',\n [VolleyballGameLogType.excellent_receive]: 'Отличный прием',\n [VolleyballGameLogType.receive]: 'Прием',\n [VolleyballGameLogType.receive_fault]: 'Ошибка на приеме',\n [VolleyballGameLogType.serve_receive]: 'Прием подачи',\n [VolleyballGameLogType.excellent_serve_receive]: 'Отличный прием подачи',\n [VolleyballGameLogType.serve_receive_fault]: 'Ошибка приема подачи',\n [VolleyballGameLogType.point]: 'Очко',\n [VolleyballGameLogType.fault]: 'Ошибка',\n [VolleyballGameLogType.timeout]: 'Таймаут',\n};\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { Subject } from 'rxjs/internal/Subject';\nimport { ReplaySubject } from 'rxjs/internal/ReplaySubject';\n\nimport * as Centrifuge from 'centrifuge';\nimport { Observable } from 'rxjs';\nimport { ConfigService } from './config.service';\n\ninterface CentrifugoConfig {\n user: string;\n timestamp: string;\n token: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class CentrifugoService {\n private channels$: { [key: string]: Subject<any> } = {};\n private subscriptions: { [key: string]: any } = {};\n private centrifuge;\n private initializeEngineSubject: ReplaySubject<boolean>;\n\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) { }\n\n listen(channel): Observable<any> {\n if (channel in this.channels$) {\n return this.channels$[channel];\n }\n\n this.channels$[channel] = new Subject<any>();\n const subscription = this.connect().subscribe(connected => {\n this.subscriptions[channel] = this.addEngineSubscription(channel);\n setTimeout(() => {\n subscription.unsubscribe();\n });\n });\n\n return this.channels$[channel];\n }\n\n unsubscribe(channel): void {\n if (this.subscriptions[channel]) {\n this.subscriptions[channel].unsubscribe();\n delete this.subscriptions[channel];\n }\n if (this.channels$[channel]) {\n this.channels$[channel].complete();\n delete this.channels$[channel];\n }\n }\n\n connect(): Observable<boolean> {\n if (!this.initializeEngineSubject) {\n this.initializeEngineSubject = new ReplaySubject(1);\n\n this.httpClient.get<CentrifugoConfig>(`${this.configService.get('apiUrl')}/api/v1/centrifugo/`)\n .subscribe(config => {\n this.initializeEngine({\n url: this.configService.get('centrifugoUrl'),\n user: config.user,\n timestamp: config.timestamp,\n token: config.token,\n transports: ['websocket']\n });\n this.centrifuge.connect();\n this.centrifuge.on('connect', () => {\n this.initializeEngineSubject.next(true);\n });\n });\n }\n\n return this.initializeEngineSubject;\n }\n\n publish(channel: string, message: any): Observable<any> {\n return new Observable<any>(observer => {\n this.connect().subscribe(() => {\n if (!this.subscriptions[channel]) {\n this.subscriptions[channel] = this.addEngineSubscription(channel);\n }\n this.subscriptions[channel].publish(message).then(res => {\n observer.next(res);\n observer.complete();\n }, error => {\n throw error;\n });\n });\n });\n }\n\n disconnect(): void {\n this.centrifuge.disconnect();\n this.initializeEngineSubject = undefined;\n this.channels$ = {};\n this.subscriptions = {};\n }\n\n private initializeEngine(config: {\n url: string,\n user: string,\n timestamp: string,\n token: string,\n transports: string[]\n }): void {\n this.centrifuge = new Centrifuge(config);\n }\n\n private addEngineSubscription(channel: string): Observable<any> {\n return this.centrifuge.subscribe(channel, this.resolveMessage.bind(this));\n }\n\n private resolveMessage(response: any): void {\n const channel = response.channel;\n if (!this.channels$[channel]) {\n return;\n }\n\n this.channels$[channel].next(response.data);\n }\n}\n","import { ModelInterface } from '../models/util';\n\nexport class StorageEngineField {\n defaultValue: any;\n\n constructor(defaultValue?: any, protected modelClass?: ModelInterface) {\n this.defaultValue = defaultValue;\n }\n\n toFront(value: any): any {\n if (this.modelClass) {\n return this.modelClass.toFront(value);\n }\n return value;\n }\n\n toBack(value: any): any {\n if (this.modelClass) {\n return this.modelClass.toBack(value);\n }\n return value;\n }\n}\n\nexport abstract class StorageEngine {\n constructor(protected name: string, protected fields: {[key: string]: StorageEngineField}) {\n }\n\n addField(key: string, field: StorageEngineField): void {\n this.fields[key] = field;\n }\n\n save(key: string, value: any): void {\n if (!this.fields[key]) {\n return;\n }\n this.setItem(`${this.name}_${key}`, this.fields[key].toBack(value));\n }\n\n get(key: string): any {\n if (!this.fields[key]) {\n return;\n }\n let value = this.getItem(`${this.name}_${key}`);\n if (value === null) {\n value = this.fields[key].defaultValue;\n }\n if (value === null || value === undefined) {\n return value;\n }\n return this.fields[key].toFront(value);\n }\n\n clear(): void {\n for (const field of Object.keys(this.fields)) {\n this.removeItem(field);\n }\n }\n\n protected getItem(key: string): any {\n throw new Error(`Function getItem for store engine ${typeof this} not implemented`);\n }\n\n protected setItem(key: string, value: any): any {\n throw new Error(`Function setItem for store engine ${typeof this} not implemented`);\n }\n\n protected removeItem(key: string): void {\n throw new Error(`Function deleteItem for store engine ${typeof this} not implemented`);\n }\n}\n","import { StorageEngine } from './storage-engine';\n\nexport class LocalStorageEngine extends StorageEngine {\n protected setItem(key: string, value: any) {\n localStorage.setItem(key, JSON.stringify(value));\n }\n\n protected getItem(key: string): any {\n try {\n return JSON.parse(localStorage.getItem(key));\n } catch (e) {\n return;\n }\n }\n\n protected removeItem(key: string): void {\n localStorage.removeItem(key);\n }\n}\n","export function getCookie(name: string): string {\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) {\n return parts.pop().split(';').shift();\n }\n return null;\n}\n","export interface LinkFavicon {\n rel: string;\n sizes?: string;\n href: string;\n type?: string;\n color?: string;\n}\n\nexport function getIconsData(folder: string): LinkFavicon[] {\n return [\n {rel: 'apple-touch-icon', sizes: '180x180', href: `/assets/favicon/${folder}apple-touch-icon.png`},\n {rel: 'icon', type: 'image/png', sizes: '32x32', href: `/assets/favicon/${folder}favicon-32x32.png`},\n {rel: 'icon', type: 'image/png', sizes: '16x16', href: `/assets/favicon/${folder}favicon-16x16.png`},\n {rel: 'shortcut icon', href: `/assets/favicon/${folder}favicon.ico`},\n {rel: 'manifest', href: `/assets/favicon/${folder}site.webmanifest`},\n {rel: 'mask-icon', href: `/assets/favicon/${folder}safari-pinned-tab.svg`, color: '#ff0000'}\n ];\n}\n\nexport function changeFavicons(document: Document, leagueAlias: string): void {\n let folder = '';\n if (leagueAlias === 'ablmoscow') {\n folder = 'abl/';\n }\n const data = getIconsData(folder);\n for (const item of data) {\n const link = document.createElement('link');\n for (const key of Object.keys(item)) {\n link.setAttribute(key, item[key]);\n }\n document.head.appendChild(link);\n }\n}\n","import { Inject, Injectable, Injector, PLATFORM_ID } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { getCookie } from './utils/cookie';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Injectable()\nexport class HttpCookieInterceptor implements HttpInterceptor {\n private isBrowser = isPlatformBrowser(this.platformId);\n\n constructor(\n private injector: Injector,\n @Inject(PLATFORM_ID) private platformId: string,\n ) {\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (!this.isBrowser) {\n return next.handle(req);\n }\n req = req.clone({withCredentials: true});\n const csrf = getCookie('csrftoken');\n if (csrf) {\n req = req.clone({\n setHeaders: {'X-CSRFToken': csrf}\n });\n }\n return next.handle(req);\n }\n}\n","import {\n ɵComponentType as ComponentType,\n ɵDirectiveType as DirectiveType,\n ɵComponentDef as ComponentDef,\n ɵDirectiveDef as DirectiveDef\n} from '@angular/core';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { Subject } from 'rxjs/internal/Subject';\n\nexport interface OnDestroyLike {\n ngOnDestroy(): void;\n [key: string]: any;\n}\n\nexport function componentDestroyed(component: OnDestroyLike): Observable<void> {\n if ((component.constructor as any).__componentDestroyed$) {\n return (component.constructor as any).__componentDestroyed$;\n }\n throw new Error('Use @UntilDestroy decorator in class');\n}\n\nexport function UntilDestroy(cmpType: any) {\n const def = getDef(cmpType as any);\n const original = (def as any).onDestroy;\n cmpType.__componentDestroyed$ = new Subject<void>();\n (def as any).onDestroy = function() {\n cmpType.__componentDestroyed$.next();\n cmpType.__componentDestroyed$.complete();\n original.apply(this);\n };\n}\n\nfunction getDef<T>(\n type: DirectiveType<T> | ComponentType<T>\n): DirectiveDef<T> | ComponentDef<T> {\n return (type as ComponentType<T>).ɵcmp || (type as DirectiveType<T>).ɵdir;\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { debounceTime, delay, map, switchMap } from 'rxjs/operators';\nimport { Observable, of } from 'rxjs';\n\nexport interface CheckEmailServiceInterface {\n checkEmail(value: string, selfCheck: boolean): Observable<boolean>;\n}\n\nexport const minLengthArrayValidator = (minLength: number) => {\n return (c: AbstractControl) => {\n return c.value.length < minLength\n ? {minLengthArray: {valid: false}}\n : null;\n };\n};\n\nexport const validatePhone = (control: AbstractControl) => {\n if (!control.value) {\n return null;\n }\n const value = `${control.value}`.replace(/\\D/gi, '');\n return value.length === 11 ? null : {invalidPhone: {valid: false}};\n};\n\nexport const validateDate = (control: AbstractControl) => {\n const re = /\\d{2}\\.\\d{2}\\.\\d{4}/gi;\n if (!control.value || re.test(control.value)) {\n return null;\n }\n return {invalidDate: {valid: false}};\n};\n\nexport const validateEmail = (authService: CheckEmailServiceInterface, selfCheck = true, ignore = []) => {\n const subject = of(null).pipe(\n delay(500)\n );\n return (control: AbstractControl) => {\n if (ignore.indexOf(control.value) > -1) {\n return of(null);\n }\n return subject.pipe(\n switchMap(() => authService.checkEmail(control.value, selfCheck).pipe(\n map(valid => valid ? null : {emailTaken: true})\n ))\n );\n };\n};\n\nexport const validateUrl = (control: AbstractControl) => {\n const re = /^(?:http(s)?:\\/\\/)[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/;\n if (!control.value || re.test(control.value)) {\n return null;\n }\n return {invalidUrl: true};\n};\n\nexport function fileSizeValidator(maxFileSize: number): ValidatorFn {\n return (control: AbstractControl): {[key: string]: any} | null => {\n if (!control.value) {\n return null;\n }\n };\n}\n","export function getEnumOptions(enumClass): number[] {\n return Object.keys(enumClass)\n .map(v => enumClass[v])\n .filter(v => isNaN(+v) === false)\n .map(v => +v);\n}\n\n","import { captureException } from '@sentry/browser';\n\nexport function handleError(error, force = false, production = true) {\n if (!(error && (error.status === 0 || error.status === 404)) || (force && error.status !== 0)) {\n captureException(error);\n }\n\n if (!production) {\n console.error(error);\n }\n}\n","export function isTouchDevice() {\n const prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');\n const mq = (q) => {\n return window.matchMedia(q).matches;\n };\n\n if (('ontouchstart' in window) || (window as any).DocumentTouch && document instanceof (window as any).DocumentTouch) {\n return true;\n }\n\n // include the 'heartz' as a way to have a non matching MQ to help terminate the join\n // https://git.io/vznFH\n const query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\n return mq(query);\n}\n","import { FormGroup } from '@angular/forms';\n\nexport function markFormGroupTouched(formGroup: FormGroup) {\n (Object as any).values(formGroup.controls).forEach(control => {\n control.markAsTouched();\n control.markAsDirty();\n\n if (control instanceof FormGroup) {\n markFormGroupTouched(control);\n } else if (control.controls) {\n control.controls.forEach(c => {\n if (c instanceof FormGroup) {\n markFormGroupTouched(c);\n } else {\n c.markAsTouched();\n c.markAsDirty();\n }\n });\n }\n });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@mtgame/core/models/util.ts","ng://@mtgame/core/models/file.ts","ng://@mtgame/core/models/sport.ts","ng://@mtgame/core/models/basketball-profile.ts","ng://@mtgame/core/models/user-profile.ts","ng://@mtgame/core/models/city.ts","ng://@mtgame/core/models/volleyball-profile.ts","ng://@mtgame/core/models/hockey-profile.ts","ng://@mtgame/core/models/user.ts","ng://@mtgame/core/models/tournament.ts","ng://@mtgame/core/models/team.ts","ng://@mtgame/core/models/organization.ts","ng://@mtgame/core/models/league.ts","ng://@mtgame/core/models/volleyball-game-config.ts","ng://@mtgame/core/models/basketball-game-config.ts","ng://@mtgame/core/models/game.ts","ng://@mtgame/core/models/league-court.ts","ng://@mtgame/core/models/media-item.ts","ng://@mtgame/core/models/hockey-game-config.ts","ng://@mtgame/core/models/team-user.ts","ng://@mtgame/core/models/tournament-group.ts","ng://@mtgame/core/models/tournament-team.ts","ng://@mtgame/core/models/tournament-disqualification.ts","ng://@mtgame/core/models/tournament-team-user.ts","ng://@mtgame/core/models/game-user.ts","ng://@mtgame/core/utils/data.ts","ng://@mtgame/core/models/basketball-game-log.ts","ng://@mtgame/core/storage/store.ts","ng://@mtgame/core/services/base.service.ts","ng://@mtgame/core/services/config.service.ts","ng://@mtgame/core/models/base-statistic.ts","ng://@mtgame/core/models/basketball-statistic.ts","ng://@mtgame/core/models/basketball-game-team-statistic.ts","ng://@mtgame/core/models/basketball-game-statistic.ts","ng://@mtgame/core/models/hockey-game-log.ts","ng://@mtgame/core/api/basketball-game-api.ts","ng://@mtgame/core/models/feedback.ts","ng://@mtgame/core/api/feedback-api.ts","ng://@mtgame/core/api/file-api.ts","ng://@mtgame/core/models/tournament-event.ts","ng://@mtgame/core/models/hockey-game-statistic.ts","ng://@mtgame/core/models/hockey-statistic.ts","ng://@mtgame/core/models/hockey-game-team-statistic.ts","ng://@mtgame/core/api/hockey-game-api.ts","ng://@mtgame/core/models/league-news.ts","ng://@mtgame/core/models/poll.ts","ng://@mtgame/core/api/league-api.ts","ng://@mtgame/core/api/league-news-api.ts","ng://@mtgame/core/api/media-api.ts","ng://@mtgame/core/models/game-invite.ts","ng://@mtgame/core/models/team-invite.ts","ng://@mtgame/core/models/team-event-type.ts","ng://@mtgame/core/models/team-event-invite.ts","ng://@mtgame/core/localization/team-event-type.ts","ng://@mtgame/core/models/team-event.ts","ng://@mtgame/core/models/notification.ts","ng://@mtgame/core/models/tournament-team-user-invite.ts","ng://@mtgame/core/models/tournament-invite.ts","ng://@mtgame/core/models/notification-settings.ts","ng://@mtgame/core/models/team-permission.ts","ng://@mtgame/core/api/notification-base-api.ts","ng://@mtgame/core/api/notification-api.ts","ng://@mtgame/core/api/org-notification-api.ts","ng://@mtgame/core/api/reference-api.ts","ng://@mtgame/core/models/team-invite-external.ts","ng://@mtgame/core/models/volleyball-statistic.ts","ng://@mtgame/core/models/tournament-stage.ts","ng://@mtgame/core/models/team-access.ts","ng://@mtgame/core/api/team-api.ts","ng://@mtgame/core/api/team-event-api.ts","ng://@mtgame/core/models/tournament-news.ts","ng://@mtgame/core/models/game-timeline-stages.ts","ng://@mtgame/core/models/playoff.ts","ng://@mtgame/core/utils/array.ts","ng://@mtgame/core/models/user-permission.ts","ng://@mtgame/core/models/tournament-stage-team.ts","ng://@mtgame/core/api/tournament-api.ts","ng://@mtgame/core/models/tournament-join-team.ts","ng://@mtgame/core/api/tournament-join-api.ts","ng://@mtgame/core/api/tournament-stage-api.ts","ng://@mtgame/core/models/user-access.ts","ng://@mtgame/core/models/volleyball-game-log.ts","ng://@mtgame/core/api/user-api.ts","ng://@mtgame/core/models/volleyball-game-team-statistic.ts","ng://@mtgame/core/models/volleyball-game-statistic.ts","ng://@mtgame/core/api/volleyball-game-api.ts","ng://@mtgame/core/localization/basketball-game-log-types.ts","ng://@mtgame/core/localization/hockey-game-log-types.ts","ng://@mtgame/core/localization/overtime-types.ts","ng://@mtgame/core/localization/team-user-role.ts","ng://@mtgame/core/localization/user-profile.ts","ng://@mtgame/core/localization/volleyball-game-log-types.ts","ng://@mtgame/core/services/centrifugo.service.ts","ng://@mtgame/core/storage/storage-engine.ts","ng://@mtgame/core/storage/local-storage-engine.ts","ng://@mtgame/core/utils/cookie.ts","ng://@mtgame/core/utils/favicon.ts","ng://@mtgame/core/http-cookie.interceptor.ts","ng://@mtgame/core/utils/component-destroyed.ts","ng://@mtgame/core/utils/validators.ts","ng://@mtgame/core/utils/enum.ts","ng://@mtgame/core/utils/errors.ts","ng://@mtgame/core/utils/device.ts","ng://@mtgame/core/utils/form.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__values","o","m","__read","ar","error","__spread","concat","BaseModel","data","_b","keys","_c","toFront","dto","toBack","enumField","enumClass","isNaN","listField","modelClass","isArray","DateField","_super","date","Date","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","toISOString","slice","DateTimeField","ModelInstance","config","mappingFields","relation","path","modelType","map","item","instance","backField","frontField","extractValue","undefined","FileEngine","ToFrontHook","descriptor","args","_i","parseMethod","ToBackHook","keyParts","split","keyParts_1","keyParts_1_1","k","SportTypes","File","file","id","name","mime_type","size","engine","GameBasketballPosition","WorkHand","Sport","isBasketball","basketball","parentId","isClassicBasketball","classic_basketball","isStreetball","streetball","isVolleyball","volleyball","isClassicVolleyball","classic_volleyball","isBeachVolleyball","beach_volleyball","isHockey","hockey","isIceHockey","ice_hockey","isBallHockey","ball_hockey","sport","parent_id","sub_sports","UserProfile","user_id","height","weight","City","GameVolleyballPosition","VolleyballWorkHand","BasketballProfile","position","work_hand","workHand","GameHockeyPosition","HockeyWorkHand","VolleyballProfile","UserGender","HockeyProfile","TournamentTypes","TournamentStatuses","TournamentGender","BasketballStatisticTypes","GameTimeTypes","OvertimeTypes","User","user","lastName","firstName","filter","join","substr","birthDate","diff","getTime","Math","floor","last_name","first_name","middle_name","email","phone","birth_date","photo","profile","basketball_profile","volleyball_profile","hockey_profile","wizards","city","gender","is_active","basketballProfile","volleyballProfile","hockeyProfile","Team","getEmptyLogoClass","classList","team","logo","owner","users_count","won_games_count","games_count","score_sum","closest_game_datetime","closestGameDatetime","Organization","owner_id","League","socialLinks","find","link","contact_email","contact_phone","alias","description","social_links","links","organization","tournaments_count","cover","about","VolleyballGameTypes","TournamentSettings","age_from","age_to","max_team_players","max_game_players","type","tours_count","periods_count","period_time","overtime_type","overtime_time","overtime_score","game_type","timeout_count","timeout_time","substitute_count","game_up_to_score","volleyball_score_in_set","volleyball_score_in_last_set","manage_team_application","recruitment_is_open","transfer_is_open","basketball_statistic_type","shot_clock_enabled","game_time_type","basketballStatisticType","gameTimeType","overtimeType","TournamentTeamWinner","team_id","tournament_id","points","Tournament","preview_image","location","price","regulation_files","settings","league","teams_count","status","team_winner","previewImage","regulationFile","teamWinner","BasketballGameConfig","overtime_timeout_count","statistic_type","statisticType","GameStatuses","GameResultTypes","VolleyballGameConfig","gameType","best_of_three","getSetMaxScore","set","setsCount","scoreInLastSet","scoreInSet","score_in_set","score_in_last_set","LeagueCourt","address","league_id","MediaItem","Boolean","videoUrl","original_photo","list_photo","detail_photo","game","tournament","game_id","video_url","video_preview","originalPhoto","listPhoto","detailPhoto","videoPreview","HockeyGameConfig","TeamUserRole","Game","_this","scoreByPeriod","period","teamScore","competitorTeamScore","closed","competitorTeam","teamId","competitorTeamId","tournament_team_id","competitor_team","competitor_tournament_team_id","competitor_team_id","competitor_team_name","datetime","team_score","competitor_team_score","result_type","playoff_number","tournament_tour","basketball_game_config","volleyball_game_config","hockey_game_config","score_by_period","playoff_stage","tournament_stage_id","tournament_playoff_id","tournament_court","media_count","media","resultType","basketballGameConfig","volleyballGameConfig","hockeyGameConfig","tournamentCourt","TeamUser","teamPlayer","role","number","TournamentGroup","TournamentTeam","gamesCount","wonGamesCount","group","draw_games_count","last_games_count","last_games_won","missed_sum","score_points_sum","missed_points_sum","games","notifications_count","win_normal_time_games_count","lose_normal_time_games_count","win_overtime_games_count","lose_overtime_games_count","TournamentDisqualification","tournament_team_user_id","date_from","date_to","matches_count","dateFrom","dateTo","TournamentTeamUser","middleName","tournament_team","team_user","disqualified","disqualification","has_changes","tournamentTeam","teamUser","GameUser","tournament_team_user","updated_at","tournamentTeamUser","updatedAt","updateItemInArray","force","checkFunction","isFunction","updateItemsInArray","items","forEach","addItemInArray","atEnd","addItemsInArray","reverse","deleteItemFromArray","functionToCheck","toString","BasketballGameLogTypes","Store","get","getSubject","pipe","save","appendItem","appendItems","prependItem","prependItems","updateItem","updateItems","deleteItem","dispose","complete","clearStorageData","clear","getEngine","BehaviorSubject","BaseService","store","Injectable","providedIn","ConfigService","configData","initialize","_a","Optional","Inject","BasketballStatistic","personalFouls","technicalFouls","unsportsmanlikeFouls","month","win_lose","two_points_made","three_points_made","free_throws_made","one_points_made","two_point_attempts","three_point_attempts","free_throw_attempts","one_point_attempts","two_point_percent","three_point_percent","free_throw_percent","one_point_percent","assists","blocks","rebounds","offensive_rebounds","defensive_rebounds","steals","turnovers","personal_fouls","technical_fouls","unsportsmanlike_fouls","newbie","BaseStatistic","BasketballGameTeamStatistic","BasketballGameStatistic","gameUserId","game_user_id","HockeyGameLogTypes","HockeyAdvantageTypes","BasketballGameLog","active","isPointsType","two_point_made","three_point_made","free_throw_made","one_point_made","indexOf","logType","isReboundType","rebound","offensive_rebound","defensive_rebound","isFoulType","personal_foul","technical_foul","unsportsmanlike_foul","getScore","compare","model","time","minutes","seconds","unique_id","log_type","is_highlight","BasketballGameApi","httpClient","configService","getById","gameId","toPromise","getUsers","getTeamStatistic","getUserStatistic","getLogs","HttpClient","Feedback","theme","message","files","FeedbackApi","sendFeedback","post","response","FileApi","upload","fileData","filename","formData","FormData","append","createZipArchive","files_1","files_1_1","responseType","TournamentEventTypes","HockeyGameLog","isScoreType","goal","shootout_goal","advantage","is_goalie","HockeyGameStatistic","ppShotMisses","ppShotsOnGoal","ppShotsBlocked","evShotMisses","evShotsOnGoal","evShotsBlocked","shShotMisses","shShotsOnGoal","shShotsBlocked","goals","ppShots","evShots","shShots","ppGoals","shGoals","evGoals","ppAssists","evAssists","shAssists","faceOffWins","faceOffLosses","shootoutAttempts","shootoutGoals","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","saves","goals_against","safety_rate","penalty_minutes","game_time","plus_minus","HockeyStatistic","pp_shots","ev_shots","sh_shots","pp_goals_percent","ev_goals_percent","sh_goals_percent","shot_misses","shots_on_goal","shots_blocked","shots","goals_percent","shots_against","saves_percent","face_offs","face_off_percent","HockeyGameTeamStatistic","HockeyGameApi","LeagueNews","title","preview_text","detail_text","picture","is_main","tournaments","PollStatuses","TournamentEvent","news","event","LeagueApi","getByAlias","getByDomain","domain","getTournaments","leagueId","getEvents","page","filters","params","HttpParams","search","observe","total","headers","LeagueNewsApi","getLeagueNewsList","getMainLeagueNews","getNewsById","newsId","getTournamentNewsList","tournamentId","MediaApi","getMedia","mediaId","getTournamentGameMedia","tournamentTour","tournamentStageId","playoffId","playoffStage","getLeagueGameMedia","getGameMediaById","getGameMedia","createZip","mediaIds","downloadMedia","GameInviteStatus","PollVariant","uuid","PollAnswer","answer_uuid","poll_id","Poll","variantsWithAnswers","_variants","_answers","calculateAnswersPercentage","variants","answersByVariant","reduce","acc","answerUuid","variant","percent","round","sort","a","author","answers","multiple_answer","anonymous","created_at","createdAt","TeamInvite","user_accept","team_accept","updateAt","TeamEventTypes","GameInvite","TeamEventInviteStatuses","TeamEventTypeLocalization","training","other","TeamEvent","eventType","eventCustomName","event_type","event_custom_name","NotificationType","NotificationServiceEnum","TeamEventInvite","team_event_id","team_user_id","TournamentTeamUserInvite","tournament_team_invite_id","accepted","TournamentInvite","teamAccept","organizationAccept","organization_accept","user_invites_count","user_invites","userInvites","NotificationAllowTypes","Notification","initiator","team_invite","poll","game_invite","team_event","team_event_invite","tournament_invite","viewed","protected","service","teamInvite","gameInvite","teamEvent","teamEventInvite","tournamentInvite","TeamPermissionTypes","NotificationSettings","popup","sound","browser","NotificationBaseApi","getCount","apiUrl","getList","markViewed","notificationId","markAllViewed","getNotificationSettings","updateNotificationSettings","NotificationApi","OrgNotificationApi","ReferenceApi","getCities","getSports","TeamInviteExternal","VolleyballStatistic","serve_hits","serve_faults","serve_aces","serve_percent","ace_percent","stuff_blocks","block_faults","block_rebounds","block_percent","attack_spikes","attack_faults","attack_shots","attack_percent","receives","receive_faults","excellent_receives","receive_percent","serve_receives","serve_receive_faults","excellent_serve_receives","serve_receive_percent","faults","TournamentStageStatuses","TeamPermission","players","statistic","polls","events","TeamAccess","can_edit","can_view_users","can_manage_permission","can_change_owner","can_delete","can_manage_invites","can_view_invites","can_manage_polls","can_view_polls","can_answer_poll","can_manage_games","can_view_games","can_view_statistic","can_promote_users","can_edit_users","can_delete_users","can_view_events","can_manage_events","can_view_tournaments","can_manage_tournaments","TeamApi","query","sportId","getTeamAccess","update","values","patch","delete","getPermission","updatePermission","permission","updateUserRole","teamUserId","updateUserNumber","gameNumber","deleteUser","changeOwner","getInvites","sendInvite","acceptInvite","invite","declineInvite","resendInvite","getInvitesExternal","sendInviteExternal","deleteInviteExternal","resendInviteExternal","getPolls","archive","createPoll","getUsersStatistic","getVolleyballStatistic","joinTeam","leaveTeam","getGames","createGame","getTeamEvents","createTeamEvent","getTournamentTeams","getTournamentInvites","getTournamentGames","acceptTournamentInvite","inviteId","declineTournamentInvite","registerLazyUser","userData","getLazyUser","updateLazyUser","deleteLazyUser","resendLazyUserEmail","TeamEventApi","getTeamEvent","teamEventId","updateTeamEvent","deleteTeamEvent","getTeamEventInvites","createTeamEventInvite","acceptTeamEventInvite","declineTeamEventInvite","TournamentNews","text","GameTimelineStageItem","stage_id","playoff_stages_count","GameTimelineStages","current_tour","current_playoff_stage","stages","PlayoffTypes","TournamentStage","generateArray","UserPermissionTypes","PlayoffSettings","rounds","final_rounds","third_place_rounds","Playoff","log","teamsCount","getPlayoffStages","stagesCount","stage","pow","is_official","TournamentStageTeam","final_standing","received_points","TournamentApi","getNews","getTournamentStages","getPlayoff","getPlayoffGames","getGamesStages","getTeams","getStageTeams","getTeamById","tournamentTeamId","getUserById","userId","getUserGames","tournamentUserId","getBasketballStatistic","per_game","getHockeyStatistic","TournamentJoinData","validUsersCount","invalidUsersCount","hasAccess","inviteSent","alreadyInTournament","valid_users_count","invalid_users_count","has_access","invite_sent","already_in_tournament","TournamentJoinTeam","join_data","joinData","TournamentJoinApi","getTeamsForJoin","getTeamUsers","joinTournament","invites","TournamentStageApi","getGroups","stageId","getPlayoffs","UserAccess","edit","personal_data","teams","VolleyballGameLogType","UserPermission","personalData","UserApi","getCurrentUser","getAccess","updateUser","updateUserPhoto","changePassword","oldPassword","password","passwordConfirm","payload","old_password","password_confirm","changeEmail","changeEmailConfirm","token","getUserProfile","getBasketballProfile","getVolleyballProfile","updateUserProfile","userProfile","updateUserBasketballProfile","updateUserVolleyballProfile","getUserPermissions","updateUserPermission","getStatistics","getStreetballStatistics","getGameInvites","acceptGameInvite","declineGameInvite","searchUsers","setWizardShowed","wizard","put","VolleyballGameTeamStatistic","VolleyballGameStatistic","attackSpikes","attackShots","stuffBlocks","blockRebounds","excellentReceives","SCORE_LOG_TYPES","serve_ace","stuff_block","attack_spike","point","FAULT_LOG_TYPES","serve_fault","attack_fault","block_fault","receive_fault","fault","serve_receive_fault","VolleyballGameLog","rally","includes","isFaultType","isServe","serve_hit","isAttack","attack_shot","isReceive","receive","excellent_receive","isServeReceive","serve_receive","excellent_serve_receive","isBlock","block_rebound","isEnterExit","enter_game","exit_game","timeout","isComboType","VolleyballGameApi","BasketballGameLogTypeLocalization","_a$1","remove_game","two_point_attempt","three_point_attempt","free_throw_attempt","one_point_attempt","assist","block","steal","turnover","HockeyGameLogTypeLocalization","_a$2","shot_miss","shot_on_goal","shot_blocked","shootout_attempt","block_shot","minor_penalty","major_penalty","misconduct_penalty","game_misconduct_penalty","match_penalty","penalty_shot","face_off_lose","face_off_win","OvertimeTypeLocalization","_a$3","to_score_diff","to_score_total","without_overtime","to_first_goal","to_first_goal_and_bullitts","bullitts","TeamUserRoleLocalization","_a$4","moderator","member","admin","GameBasketballPositionLocalization","_a$5","point_guard","shooting_guard","small_forward","power_forward","center","GameBasketballPositionShortLocalization","WorkHandLocalization","left","right","GameVolleyballPositionLocalization","_d","setter","libero","middle_player","receiver_attacker","dioganal","GameVolleyballPositionShortLocalization","_e","GameVolleyballPositionShortRuLocalization","_f","VolleyballWorkHandLocalization","_g","GameHockeyPositionLocalization","_h","goaltender","defensemen","forward","VolleyballGameLogTypeLocalization","_a$6","CentrifugoService","channels$","subscriptions","listen","channel","Subject","subscription","connect","subscribe","connected","addEngineSubscription","setTimeout","unsubscribe","initializeEngineSubject","ReplaySubject","initializeEngine","url","timestamp","transports","centrifuge","on","publish","Observable","observer","res","disconnect","Centrifuge","resolveMessage","bind","StorageEngineField","defaultValue","StorageEngine","fields","addField","field","setItem","getItem","removeItem","Error","LocalStorageEngine","localStorage","JSON","stringify","parse","getCookie","parts","document","cookie","shift","getIconsData","folder","rel","sizes","href","color","HttpCookieInterceptor","injector","platformId","isBrowser","isPlatformBrowser","intercept","req","handle","clone","withCredentials","csrf","setHeaders","X-CSRFToken","Injector","PLATFORM_ID","cmpType","def","ɵcmp","ɵdir","original","onDestroy","__componentDestroyed$","leagueAlias","data_1","data_1_1","createElement","e_2","setAttribute","head","appendChild","component","maxFileSize","control","array","chunks","chunkLength","ceil","production","captureException","console","prefixes","window","DocumentTouch","q","matchMedia","matches","markFormGroupTouched","formGroup","controls","markAsTouched","markAsDirty","FormGroup","minLength","minLengthArray","valid","test","invalidDate","authService","selfCheck","ignore","subject","of","delay","switchMap","checkEmail","emailTaken","replace","invalidPhone","invalidUrl"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export const 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 listField(modelClass) {\n return {\n toFront: (value) => {\n if (!Array.isArray(value)) {\n return [];\n }\n return modelClass.toFront(value);\n },\n toBack: (value) => {\n if (!Array.isArray(value)) {\n return [];\n }\n return modelClass.toBack(value);\n }\n };\n}\n\nexport class DateField extends BaseModel {\n static toFront(date: any): any {\n if (date) {\n return new Date(date);\n } else {\n return undefined;\n }\n }\n static toBack(date: Date): any {\n if (date) {\n const dateUtc = new Date(Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds())\n );\n return dateUtc.toISOString().slice(0, 10);\n } else {\n return undefined;\n }\n }\n}\n\nexport class DateTimeField extends BaseModel {\n static toFront(date: any): any {\n if (date) {\n return new Date(date);\n } else {\n return undefined;\n }\n }\n static toBack(date: Date): any {\n if (date) {\n const dateUtc = new Date(Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds())\n );\n return date.toISOString();\n } else {\n return undefined;\n }\n }\n}\n\nexport function ModelInstance(\n config: {\n mappingFields?: { [key: string]: string },\n relation?: { [key: string]: BaseModel }\n }\n) {\n return (target: ModelTypeInterface) => {\n if (config) {\n if (config.mappingFields) {\n target[MODEL_MAPPING_FIELDS_KEY] = config.mappingFields;\n }\n if (config.relation) {\n target[MODEL_RELATION_KEY] = config.relation;\n }\n target[MODEL_TO_FRONT_KEY] = (dto: any, path: GraphPathInterface) => {\n return toFront(target, dto, path);\n };\n target[MODEL_TO_BACK_KEY] = (dto: any, path: GraphPathInterface) => {\n return toBack(target, dto, path);\n };\n }\n };\n}\n\nexport const ToFrontHook = (target: ModelTypeInterface, key: string | symbol, descriptor: TypedPropertyDescriptor<Function>) => {\n return {\n value: (...args: any[]) => {\n const parseMethod = target[MODEL_TO_FRONT_KEY] as ParserInterface;\n if (parseMethod) {\n return parseMethod(args[0], (args.length > 1 ? args[1] : undefined));\n }\n return undefined;\n }\n };\n};\n\nexport const ToBackHook = (target: ModelTypeInterface, key: string | symbol, descriptor: TypedPropertyDescriptor<Function>) => {\n return {\n value: (...args: any[]) => {\n const parseMethod = target[MODEL_TO_BACK_KEY] as ParserInterface;\n if (parseMethod) {\n return parseMethod(args[0]);\n }\n return undefined;\n }\n };\n};\n\nfunction extractValue(key, data) {\n if (!data) {\n return undefined;\n }\n\n const keyParts = key.split('.');\n if (keyParts.length === 1) {\n if (key in data) {\n return data[key];\n } else {\n return undefined;\n }\n }\n\n for (const k of keyParts) {\n if (data && k in data) {\n data = data[k];\n } else {\n return undefined;\n }\n }\n\n return data;\n}\n\nfunction toFront(modelType: ModelTypeInterface, data: any, path?: GraphPathInterface): any {\n // Check if recursion is required\n if (Array.isArray(data)) {\n return data.map(item => {\n return toFront(modelType, item);\n });\n }\n\n const instance = new modelType();\n\n // Mapping fields\n const mappingFields = modelType[MODEL_MAPPING_FIELDS_KEY] as string[];\n const relation = modelType[MODEL_RELATION_KEY] as { [key: string]: ModelInterface };\n if (mappingFields) {\n for (const backField of Object.keys(mappingFields)) {\n const frontField = mappingFields[backField];\n const value = extractValue(backField, data);\n if (relation && relation.hasOwnProperty(frontField)) {\n instance[frontField] = relation[frontField].toFront(value);\n } else {\n instance[frontField] = value;\n }\n }\n }\n\n return instance;\n}\n\nfunction toBack(modelType: ModelTypeInterface, instance: any, path?: GraphPathInterface): any {\n if (!instance) {\n return instance;\n }\n\n // Check if recursion is required\n if (Array.isArray(instance)) {\n return instance.map(item => {\n return toBack(modelType, item);\n });\n }\n\n const data = {};\n const mappingFields = modelType[MODEL_MAPPING_FIELDS_KEY] as string[];\n const relation = modelType[MODEL_RELATION_KEY] as { [key: string]: ModelInterface };\n if (mappingFields) {\n for (const backField of Object.keys(mappingFields)) {\n const frontField = mappingFields[backField];\n if (relation && relation.hasOwnProperty(frontField) && instance[frontField] !== undefined) {\n data[backField] = relation[frontField].toBack(instance[frontField]);\n } else {\n data[backField] = instance[frontField];\n }\n }\n }\n\n return data;\n}\n","import { ModelInstance, ToFrontHook, ToBackHook, enumField } from './util';\n\nexport enum FileEngine {\n django = 1,\n s3\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n path: 'path',\n mime_type: 'mimeType',\n size: 'size',\n engine: 'engine',\n },\n relation: {\n engine: enumField(FileEngine)\n }\n})\nexport class File {\n id: number;\n name: string;\n path: string;\n mimeType: string;\n size: string;\n engine: FileEngine;\n\n @ToFrontHook\n static toFront(data: any): File {\n return null;\n }\n\n @ToBackHook\n static toBack(file: File): any {\n return null;\n }\n}\n","import {ModelInstance, ToFrontHook, ToBackHook, BaseModel} from './util';\n\nexport enum SportTypes {\n basketball = 1,\n volleyball = 2,\n classic_basketball = 3,\n streetball = 4,\n classic_volleyball = 5,\n beach_volleyball = 6,\n hockey = 7,\n ice_hockey = 8,\n ball_hockey = 9\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n parent_id: 'parentId',\n sub_sports: 'subSports'\n }\n})\nexport class Sport extends BaseModel {\n id: number;\n name: string;\n parentId: number;\n subSports: Sport[];\n\n isBasketball() {\n return this.id === SportTypes.basketball || this.parentId === SportTypes.basketball;\n }\n\n isClassicBasketball() {\n return this.id === SportTypes.classic_basketball;\n }\n\n isStreetball() {\n return this.id === SportTypes.streetball;\n }\n\n isVolleyball() {\n return this.id === SportTypes.volleyball || this.parentId === SportTypes.volleyball;\n }\n\n isClassicVolleyball() {\n return this.id === SportTypes.classic_volleyball;\n }\n\n isBeachVolleyball() {\n return this.id === SportTypes.beach_volleyball;\n }\n\n isHockey(): boolean {\n return this.id === SportTypes.hockey || this.parentId === SportTypes.hockey;\n }\n\n isIceHockey(): boolean {\n return this.id === SportTypes.ice_hockey;\n }\n\n isBallHockey(): boolean {\n return this.id === SportTypes.ball_hockey;\n }\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(sport: Sport): any {\n return null;\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameBasketballPosition {\n point_guard = 1,\n shooting_guard,\n small_forward,\n power_forward,\n center\n}\n\nexport enum WorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameBasketballPosition),\n workHand: enumField(WorkHand)\n }\n})\nexport class BasketballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameBasketballPosition;\n workHand: WorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n height: 'height',\n weight: 'weight'\n }\n})\nexport class UserProfile {\n id: number;\n userId: number;\n height: number;\n weight: number;\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name'\n }\n})\nexport class City extends BaseModel {\n id: number;\n name: string;\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameVolleyballPosition {\n setter = 1,\n libero,\n middle_player,\n receiver_attacker,\n dioganal\n}\n\nexport enum VolleyballWorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameVolleyballPosition),\n workHand: enumField(VolleyballWorkHand)\n }\n})\nexport class VolleyballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameVolleyballPosition;\n workHand: VolleyballWorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameHockeyPosition {\n defensemen = 1,\n forward,\n goaltender\n}\n\nexport enum HockeyWorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameHockeyPosition),\n workHand: enumField(HockeyWorkHand)\n }\n})\nexport class HockeyProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameHockeyPosition;\n workHand: HockeyWorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, DateField, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { UserProfile } from './user-profile';\nimport { File } from './file';\nimport { City } from './city';\nimport { BasketballProfile } from './basketball-profile';\nimport { VolleyballProfile } from './volleyball-profile';\nimport { HockeyProfile } from './hockey-profile';\n\nexport enum UserGender {\n male = 1,\n female\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n last_name: 'lastName',\n first_name: 'firstName',\n middle_name: 'middleName',\n email: 'email',\n phone: 'phone',\n birth_date: 'birthDate',\n photo: 'photo',\n profile: 'profile',\n basketball_profile: 'basketballProfile',\n volleyball_profile: 'volleyballProfile',\n hockey_profile: 'hockeyProfile',\n wizards: 'wizards',\n city: 'city',\n gender: 'gender',\n is_active: 'isActive',\n },\n relation: {\n birthDate: DateField,\n photo: File,\n profile: UserProfile,\n basketballProfile: BasketballProfile,\n volleyballProfile: VolleyballProfile,\n hockeyProfile: HockeyProfile,\n city: City,\n gender: enumField(UserGender)\n }\n})\nexport class User extends BaseModel {\n id: number;\n lastName: string;\n firstName: string;\n middleName: string;\n email: string;\n phone: string;\n birthDate: Date;\n profile: UserProfile;\n basketballProfile: BasketballProfile;\n volleyballProfile: VolleyballProfile;\n hockeyProfile: HockeyProfile;\n photo: File;\n wizards: string[];\n city: City;\n gender: UserGender;\n isActive: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(user: User): any {\n return null;\n }\n\n get fullName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get shortName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get initials(): string {\n return [this.lastName, this.firstName].filter(s => s).map(s => s.substr(0, 1)).join('');\n }\n\n get age(): number {\n if (!this.birthDate) {\n return null;\n }\n const diff = (new Date()).getTime() - this.birthDate.getTime();\n return Math.floor(diff / (365 * 86400 * 1000));\n }\n}\n","import { BaseModel, enumField, ModelInstance, DateTimeField, ToBackHook, ToFrontHook } from './util';\nimport { City } from './city';\nimport { File } from './file';\nimport { League } from './league';\nimport { Sport } from './sport';\nimport { Team } from './team';\n\nexport enum TournamentTypes {\n group = 'group',\n elimination = 'elimination',\n fiba = 'fiba'\n}\n\nexport enum TournamentStatuses {\n open,\n in_progress,\n closed,\n}\n\nexport enum TournamentGender {\n male= 1,\n female,\n all\n}\n\nexport enum BasketballStatisticTypes {\n standard = 1,\n light,\n advanced\n}\n\nexport enum GameTimeTypes {\n clean = 1,\n dirty,\n}\n\nexport enum OvertimeTypes {\n to_score_total = 1,\n to_score_diff,\n time,\n without_overtime,\n to_first_goal,\n to_first_goal_and_bullitts,\n bullitts\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n gender: 'gender',\n age_from: 'ageFrom',\n age_to: 'ageTo',\n max_team_players: 'maxTeamPlayers',\n max_game_players: 'maxGamePlayers',\n type: 'type',\n tours_count: 'toursCount',\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n overtime_score: 'overtimeScore',\n game_type: 'gameType',\n timeout_count: 'timeoutCount',\n timeout_time: 'timeoutTime',\n substitute_count: 'substituteCount',\n game_up_to_score: 'gameUpToScore',\n volleyball_score_in_set: 'volleyballScoreInSet',\n volleyball_score_in_last_set: 'volleyballScoreInLastSet',\n manage_team_application: 'manageTeamApplication',\n recruitment_is_open: 'recruitmentIsOpen',\n transfer_is_open: 'transferIsOpen',\n basketball_statistic_type: 'basketballStatisticType',\n shot_clock_enabled: 'shotClockEnabled',\n game_time_type: 'gameTimeType',\n },\n relation: {\n type: enumField(TournamentTypes),\n gender: enumField(TournamentGender),\n basketballStatisticType: enumField(BasketballStatisticTypes),\n 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 shotClockEnabled: boolean;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n tournament_id: 'tournamentId',\n team: 'team',\n points: 'points',\n },\n relation: {\n team: Team,\n }\n})\nexport class TournamentTeamWinner extends BaseModel {\n id: number;\n teamId: number;\n tournamentId: number;\n team: Team;\n points: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n alias: 'alias',\n logo: 'logo',\n cover: 'cover',\n preview_image: 'previewImage',\n city: 'city',\n sport: 'sport',\n location: 'location',\n description: 'description',\n date: 'date',\n price: 'price',\n regulation_files: 'regulationFiles',\n settings: 'settings',\n league: 'league',\n teams_count: 'teamsCount',\n closest_game_datetime: 'closestGameDatetime',\n status: 'status',\n team_winner: 'teamWinner'\n },\n relation: {\n logo: File,\n cover: File,\n previewImage: File,\n city: City,\n sport: Sport,\n regulationFile: File,\n settings: TournamentSettings,\n date: DateTimeField,\n league: League,\n status: enumField(TournamentStatuses),\n teamWinner: TournamentTeamWinner\n }\n})\nexport class Tournament extends BaseModel {\n id: number;\n name: string;\n alias: string;\n logo: File;\n cover: File;\n previewImage: File;\n city: City;\n sport: Sport;\n location: string;\n description: string;\n date: Date;\n price: number;\n regulationFiles: File[];\n settings: TournamentSettings;\n league: League;\n teamsCount: number;\n closestGameDatetime: string;\n status: TournamentStatuses;\n teamWinner: TournamentTeamWinner;\n\n getEmptyLogoClass(): string {\n const classList = ['empty-logo'];\n if (this.sport.isBasketball()) {\n classList.push('empty-logo-basketball');\n }\n if (this.sport.isVolleyball()) {\n classList.push('empty-logo-volleyball');\n }\n return classList.join(' ');\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateField } from './util';\nimport { File } from './file';\nimport { Sport } from './sport';\nimport { User } from './user';\nimport { City } from './city';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n sport: 'sport',\n logo: 'logo',\n owner: 'owner',\n city: 'city',\n users_count: 'usersCount',\n won_games_count: 'wonGamesCount',\n games_count: 'gamesCount',\n score_sum: 'scoreSum',\n closest_game_datetime: 'closestGameDatetime',\n },\n relation: {\n sport: Sport,\n logo: File,\n owner: User,\n city: City,\n closestGameDatetime: DateField,\n }\n})\nexport class Team extends BaseModel {\n id: number;\n name: string;\n sport: Sport;\n logo: File;\n owner: User;\n city: City;\n usersCount: number;\n wonGamesCount: number;\n gamesCount: number;\n scoreSum: number;\n closestGameDatetime: Date;\n\n getEmptyLogoClass(): string {\n const classList = ['empty-logo'];\n if (this.sport.isBasketball()) {\n classList.push('empty-logo-basketball');\n }\n if (this.sport.isVolleyball()) {\n classList.push('empty-logo-volleyball');\n }\n return classList.join(' ');\n }\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(team: Team): any {\n return null;\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\nimport { User } from './user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n owner_id: 'ownerId',\n owner: 'owner',\n },\n relation: {\n owner: User,\n }\n})\nexport class Organization extends BaseModel {\n id: number;\n ownerId: number;\n owner: User;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Organization } from './organization';\nimport { File } from './file';\nimport { Sport } from './sport';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n logo: 'logo',\n contact_email: 'contactEmail',\n contact_phone: 'contactPhone',\n name: 'name',\n alias: 'alias',\n sport: 'sport',\n description: 'description',\n social_links: 'socialLinks',\n links: 'links',\n organization: 'organization',\n tournaments_count: 'tournamentsCount',\n closest_game_datetime: 'closestGameDatetime',\n cover: 'cover',\n about: 'about',\n },\n relation: {\n organization: Organization,\n logo: File,\n cover: File,\n sport: Sport\n }\n})\nexport class League extends BaseModel {\n id: number;\n logo: File;\n contactEmail: string;\n contactPhone: string;\n name: string;\n alias: string;\n sport: Sport;\n description: string;\n socialLinks: string[];\n links: string[];\n organization: Organization;\n tournamentsCount: number;\n closestGameDatetime: string;\n cover: File;\n about: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get vkLink(): string {\n return this.socialLinks.find(link => link.substr(0, 15) === 'https://vk.com/');\n }\n\n get fbLink(): string {\n return this.socialLinks.find(link => link.substr(0, 25) === 'https://www.facebook.com/');\n }\n\n get instaLink(): string {\n return this.socialLinks.find(link => link.substr(0, 25) === 'https://www.instagram.com');\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\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 },\n relation: {\n gameType: enumField(VolleyballGameTypes)\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\n get setsCount(): number {\n return this.gameType === VolleyballGameTypes.best_of_three ? 3 : 5;\n }\n\n getSetMaxScore(set: number) {\n return set === this.setsCount ? this.scoreInLastSet : this.scoreInSet;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { BasketballStatisticTypes, GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n game_up_to_score: 'gameUpToScore',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n overtime_score: 'overtimeScore',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n statistic_type: 'statisticType',\n shot_clock_enabled: 'shotClockEnabled',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n statisticType: enumField(BasketballStatisticTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class BasketballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n gameUpToScore: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n overtimeScore: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n statisticType: BasketballStatisticTypes;\n shotClockEnabled: boolean;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField, listField } from './util';\nimport { Team } from './team';\nimport { BasketballGameConfig } from './basketball-game-config';\nimport { VolleyballGameConfig } from './volleyball-game-config';\nimport { LeagueCourt } from './league-court';\nimport { MediaItem } from './media-item';\nimport { HockeyGameConfig } from './hockey-game-config';\n\nexport enum GameStatuses {\n open = 1,\n in_progress,\n closed,\n archived,\n draft\n}\n\nexport enum GameResultTypes {\n team_won = 1,\n competitor_team_won,\n team_technical_defeat,\n competitor_team_technical_defeat\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n status: 'status',\n team: 'team',\n tournament_team_id: 'tournamentTeamId',\n team_id: 'teamId',\n competitor_team: 'competitorTeam',\n competitor_tournament_team_id: 'competitorTournamentTeamId',\n competitor_team_id: 'competitorTeamId',\n competitor_team_name: 'competitorTeamName',\n datetime: 'datetime',\n location: 'location',\n team_score: 'teamScore',\n competitor_team_score: 'competitorTeamScore',\n result_type: 'resultType',\n playoff_number: 'playoffNumber',\n tournament_id: 'tournamentId',\n tournament_tour: 'tournamentTour',\n basketball_game_config: 'basketballGameConfig',\n volleyball_game_config: 'volleyballGameConfig',\n hockey_game_config: 'hockeyGameConfig',\n score_by_period: 'scoreByPeriod',\n playoff_stage: 'playoffStage',\n tournament_stage_id: 'tournamentStageId',\n tournament_playoff_id: 'tournamentPlayoffId',\n tournament_court: 'tournamentCourt',\n media_count: 'mediaCount',\n media: 'media',\n },\n relation: {\n status: enumField(GameStatuses),\n team: Team,\n competitorTeam: Team,\n datetime: DateTimeField,\n resultType: enumField(GameResultTypes),\n basketballGameConfig: BasketballGameConfig,\n volleyballGameConfig: VolleyballGameConfig,\n hockeyGameConfig: HockeyGameConfig,\n tournamentCourt: LeagueCourt,\n media: listField(MediaItem),\n }\n})\nexport class Game extends BaseModel {\n id: number;\n status: GameStatuses;\n team: Team;\n teamId: number;\n tournamentTeamId: number;\n competitorTeam: Team;\n competitorTeamId: number;\n competitorTournamentTeamId: number;\n competitorTeamName: string;\n datetime: Date;\n location: string;\n teamScore: number;\n competitorTeamScore: number;\n archive: boolean;\n playoffNumber: string;\n tournamentId: number;\n tournamentTour: number;\n basketballGameConfig: BasketballGameConfig;\n volleyballGameConfig: VolleyballGameConfig;\n hockeyGameConfig: HockeyGameConfig;\n scoreByPeriod: any;\n playoffStage: string;\n tournamentStageId: number;\n tournamentPlayoffId: number;\n tournamentCourt: LeagueCourt;\n mediaCount: number;\n media: MediaItem[];\n\n get scoreByPeriodList(): {period: number, teamScore: number, competitorTeamScore: number}[] {\n if (!this.scoreByPeriod) {\n return [];\n }\n return Object.keys(this.scoreByPeriod).map(period => ({\n period: +period,\n teamScore: this.scoreByPeriod[period][0],\n competitorTeamScore: this.scoreByPeriod[period][1]\n }));\n }\n\n get isClosed(): boolean {\n return this.status === GameStatuses.closed;\n }\n\n get isTeamWon() {\n return this.teamScore > this.competitorTeamScore;\n }\n\n get isCompetitorTeamWon() {\n return this.competitorTeamScore > this.teamScore;\n }\n\n get teamWinnerId() {\n if (this.status !== GameStatuses.closed) {\n return null;\n }\n if (this.teamScore === this.competitorTeamScore) {\n return null;\n }\n if (this.team.id) {\n return this.teamScore > this.competitorTeamScore ? this.team.id : this.competitorTeam.id;\n } else {\n return this.teamScore > this.competitorTeamScore ? this.teamId : this.competitorTeamId;\n }\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n address: 'address',\n league_id: 'leagueId'\n }\n})\nexport class LeagueCourt extends BaseModel {\n id: number;\n name: string;\n address: string;\n leagueId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n original_photo: 'originalPhoto',\n list_photo: 'listPhoto',\n detail_photo: 'detailPhoto',\n game: 'game',\n tournament: 'tournament',\n game_id: 'gameId',\n tournament_id: 'tournament_id',\n video_url: 'videoUrl',\n video_preview: 'videoPreview',\n },\n relation: {\n originalPhoto: File,\n listPhoto: File,\n detailPhoto: File,\n videoPreview: File\n }\n})\nexport class MediaItem extends BaseModel {\n id: number;\n originalPhoto: File;\n listPhoto: File;\n detailPhoto: File;\n gameId: number;\n tournamentId: number;\n videoUrl: string;\n videoPreview: File;\n\n get isVideo(): boolean {\n return Boolean(this.videoUrl);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class HockeyGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { User } from './user';\nimport { Team } from './team';\n\nexport enum TeamUserRole {\n member = 1,\n moderator,\n admin,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n user: 'user',\n role: 'role',\n number: 'number',\n team: 'team',\n },\n relation: {\n user: User,\n team: Team,\n role: enumField(TeamUserRole)\n }\n})\nexport class TeamUser extends BaseModel {\n id: number;\n teamId: number;\n user: User;\n team: Team;\n number: number;\n role: TeamUserRole;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(teamPlayer: TeamUser): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { TournamentTeam } from './tournament-team';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n tournament_stage_id: 'tournamentStageId'\n }\n})\nexport class TournamentGroup extends BaseModel {\n id: number;\n name: string;\n tournamentStageId: number;\n teams: TournamentTeam[];\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\nimport { TournamentGroup } from './tournament-group';\nimport { Game } from './game';\nimport { Tournament } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n tournament_id: 'tournamentId',\n tournament: 'tournament',\n team: 'team',\n group: 'group',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n draw_games_count: 'drawGamesCount',\n last_games_count: 'lastGamesCount',\n last_games_won: 'lastGamesWon',\n score_sum: 'scoreSum',\n missed_sum: 'missedSum',\n score_points_sum: 'scorePointsSum',\n missed_points_sum: 'missedPointsSum',\n points: 'points',\n users_count: 'usersCount',\n games: 'games',\n notifications_count: 'notificationsCount',\n win_normal_time_games_count: 'winNormalTimeGamesCount',\n lose_normal_time_games_count: 'loseNormalTimeGamesCount',\n win_overtime_games_count: 'winOvertimeGamesCount',\n lose_overtime_games_count: 'loseOvertimeGamesCount',\n },\n relation: {\n tournament: Tournament,\n team: Team,\n group: TournamentGroup,\n games: Game,\n }\n})\nexport class TournamentTeam extends BaseModel {\n id: number;\n teamId: number;\n tournamentId: number;\n tournament: Tournament;\n team: Team;\n group: TournamentGroup;\n gamesCount: number;\n wonGamesCount: number;\n drawGamesCount: number;\n lastGamesCount: number;\n lastGamesWon: number;\n scoreSum: number;\n missedSum: number;\n scorePointsSum: number;\n missedPointsSum: number;\n points: number;\n usersCount: number;\n games: Game[];\n notificationsCount: number;\n winNormalTimeGamesCount: number;\n loseNormalTimeGamesCount: number;\n winOvertimeGamesCount: number;\n loseOvertimeGamesCount: number;\n\n get gamesWonPercent(): number {\n if (!this.gamesCount) {\n return 0;\n }\n return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team_user_id: 'tournamentTeamUserId',\n date_from: 'dateFrom',\n date_to: 'dateTo',\n matches_count: 'matchesCount',\n },\n relation: {\n dateFrom: DateField,\n dateTo: DateField,\n }\n})\nexport class TournamentDisqualification extends BaseModel {\n id: number;\n tournamentTeamUserId: number;\n dateFrom: Date;\n dateTo: Date;\n matchesCount: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { TournamentTeam } from './tournament-team';\nimport { TeamUser } from './team-user';\nimport { File } from './file';\nimport { TournamentDisqualification } from './tournament-disqualification';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team: 'tournamentTeam',\n team_user: 'teamUser',\n disqualified: 'disqualified',\n first_name: 'firstName',\n last_name: 'lastName',\n middle_name: 'middleName',\n photo: 'photo',\n disqualification: 'disqualification',\n has_changes: 'hasChanges',\n },\n relation: {\n tournamentTeam: TournamentTeam,\n teamUser: TeamUser,\n photo: File,\n disqualification: TournamentDisqualification,\n }\n})\nexport class TournamentTeamUser extends BaseModel {\n id: number;\n tournamentTeam: TournamentTeam;\n teamUser: TeamUser;\n disqualified: boolean;\n firstName: string;\n lastName: string;\n middleName: string;\n photo: File; disqualification: TournamentDisqualification;\n hasChanges: boolean;\n\n get fullName(): string {\n return [this.lastName, this.firstName, this.middleName].filter(s => s).join(' ');\n }\n\n get shortName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get initials(): string {\n return [this.lastName, this.firstName].filter(s => s).map(s => s.substr(0, 1)).join('');\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { TeamUser } from './team-user';\nimport { TournamentTeamUser } from './tournament-team-user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n game_id: 'gameId',\n team_user: 'teamUser',\n tournament_team_user: 'tournamentTeamUser',\n updated_at: 'updatedAt'\n },\n relation: {\n teamUser: TeamUser,\n tournamentTeamUser: TournamentTeamUser,\n updatedAt: DateTimeField,\n }\n})\nexport class GameUser extends BaseModel {\n id: number;\n gameId: number;\n teamUser: TeamUser;\n tournamentTeamUser: TournamentTeamUser;\n updatedAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","export function updateItemInArray(data: any[], item: any, force = false, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return data;\n }\n return data.map(v => {\n if (checkFunction && isFunction(checkFunction)) {\n if (!checkFunction(v)) {\n return v;\n }\n } else if (v.id !== item.id) {\n return v;\n }\n if (v.updatedAt && item.updatedAt && !force) {\n return v.updatedAt > item.updatedAt ? v : item;\n }\n return item;\n });\n}\n\nexport function updateItemsInArray(data: any[], items: any[], force: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n items.forEach(item => {\n data = updateItemInArray(data, item, force, checkFunction);\n });\n return data;\n}\n\nexport function patchItemInArray(data: any[], item: any, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return data;\n }\n return data.map(v => {\n if (checkFunction && isFunction(checkFunction)) {\n if (!checkFunction(v)) {\n return v;\n }\n } else if (v.id !== item.id) {\n return v;\n }\n return Object.assign(v, item);\n });\n}\n\nexport function addItemInArray(data: any[], item: any, atEnd: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return [item];\n }\n if (data.find(i => isFunction(checkFunction) ? checkFunction(i) : i.id === item.id)) {\n return data;\n }\n\n return atEnd\n ? [...data, item]\n : [item, ...data];\n}\n\nexport function addItemsInArray(data: any[], items: any[], atEnd: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n (!atEnd\n ? Object.assign([], items).reverse()\n : items\n ).forEach(item => {\n data = addItemInArray(data, item, atEnd, checkFunction);\n });\n return data;\n}\n\nexport function deleteItemFromArray(data: any[], item: any): any[] {\n if (!Array.isArray(data)) {\n return [];\n }\n if (isFunction(item)) {\n return data.filter(i => !item(i));\n } else {\n return data.filter(v => v.id !== item.id);\n }\n}\n\nfunction isFunction(functionToCheck) {\n return functionToCheck && {}.toString.call(functionToCheck) === '[object Function]';\n}\n","import { enumField, ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateTimeField } from './util';\nimport { GameUser } from './game-user';\nimport { GameLogBase } from './game-log-base';\n\nexport enum BasketballGameLogTypes {\n enter_game = 1,\n exit_game,\n remove_game,\n two_point_made,\n three_point_made,\n free_throw_made,\n two_point_attempt,\n three_point_attempt,\n free_throw_attempt,\n assist,\n block,\n rebound,\n offensive_rebound,\n defensive_rebound,\n steal,\n turnover,\n personal_foul,\n technical_foul,\n unsportsmanlike_foul,\n one_point_attempt,\n one_point_made,\n timeout,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(BasketballGameLogTypes),\n }\n})\nexport class BasketballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: BasketballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n combined: BasketballGameLog;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n\n isPointsType() {\n return [\n BasketballGameLogTypes.two_point_made,\n BasketballGameLogTypes.three_point_made,\n BasketballGameLogTypes.free_throw_made,\n BasketballGameLogTypes.one_point_made,\n ].indexOf(this.logType) > -1;\n }\n\n isReboundType() {\n return [\n BasketballGameLogTypes.rebound,\n BasketballGameLogTypes.offensive_rebound,\n BasketballGameLogTypes.defensive_rebound\n ].indexOf(this.logType) > -1;\n }\n\n isFoulType() {\n return [\n BasketballGameLogTypes.personal_foul,\n BasketballGameLogTypes.technical_foul,\n BasketballGameLogTypes.unsportsmanlike_foul\n ].indexOf(this.logType) > -1;\n }\n\n getScore() {\n const scoreMapping = {\n [BasketballGameLogTypes.one_point_made]: 1,\n [BasketballGameLogTypes.free_throw_made]: 1,\n [BasketballGameLogTypes.two_point_made]: 2,\n [BasketballGameLogTypes.three_point_made]: 3\n };\n return scoreMapping[this.logType];\n }\n\n compare(model: BasketballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { addItemInArray, addItemsInArray, deleteItemFromArray, updateItemInArray, updateItemsInArray } from '../utils/data';\nimport { StorageEngine } from './storage-engine';\n\nexport class Store {\n private data: {[key: string]: BehaviorSubject<any>} = {};\n\n constructor(private engine?: StorageEngine) {\n }\n\n get(key: string): Observable<any> {\n return this.getSubject(key).pipe(filter(item => item !== undefined));\n }\n\n value(key: string): any {\n return this.getSubject(key).value;\n }\n\n save(key: string, value: any): void {\n this.getSubject(key).next(value);\n if (this.engine) {\n this.engine.save(key, value);\n }\n }\n\n appendItem(key: string, value: any, checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemInArray(this.value(key) || [], value, true, checkFunction));\n }\n\n appendItems(key: string, value: any[], checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemsInArray(this.value(key) || [], value, true));\n }\n\n prependItem(key: string, value: any, checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemInArray(this.value(key) || [], value, false, checkFunction));\n }\n\n prependItems(key: string, value: any[], checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemsInArray(this.value(key) || [], value, false, checkFunction));\n }\n\n updateItem(key: string, value: any, force?: boolean, checkFunction?: (item: any) => boolean): void {\n this.save(key, updateItemInArray(this.value(key) || [], value, force, checkFunction));\n }\n\n updateItems(key: string, value: any, force?: boolean, checkFunction?: (item: any) => boolean): void {\n this.save(key, updateItemsInArray(this.value(key) || [], value, force, checkFunction));\n }\n\n deleteItem(key: string, value: any): void {\n this.save(key, deleteItemFromArray(this.value(key) || [], value));\n }\n\n dispose(): void {\n for (const key of Object.keys(this.data)) {\n this.data[key].complete();\n delete this.data[key];\n }\n }\n\n clearStorageData(): void {\n if (this.engine) {\n this.engine.clear();\n }\n }\n\n getEngine(): StorageEngine {\n return this.engine;\n }\n\n private getSubject(key: string): BehaviorSubject<any> {\n if (!this.data[key]) {\n this.data[key] = new BehaviorSubject<any>(this.engine ? this.engine.get(key) : undefined);\n }\n return this.data[key];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '../storage/store';\n\n@Injectable({providedIn: 'root'})\nexport class BaseService {\n protected store = new Store();\n\n dispose(): void {\n this.store.dispose();\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { BaseService } from './base.service';\n\nconst CONFIG_STORE_KEY = 'config';\n\nexport const CONFIG_DATA = 'mtg-core-config-data';\n\n@Injectable({providedIn: 'root'})\nexport class ConfigService extends BaseService {\n constructor(\n @Optional() @Inject(CONFIG_DATA) private configData: any\n ) {\n super();\n if (configData) {\n this.initialize(configData);\n }\n }\n\n get config$() {\n return this.store.get(CONFIG_STORE_KEY);\n }\n\n get config() {\n return this.store.value(CONFIG_STORE_KEY) || {};\n }\n\n initialize(data: any): void {\n this.store.save(CONFIG_STORE_KEY, data);\n }\n\n set(key: string, value: any): void {\n this.store.save(CONFIG_STORE_KEY, {\n ...this.config,\n [key]: value\n });\n }\n\n get(key: string): any {\n return this.store.value(CONFIG_STORE_KEY) && this.store.value(CONFIG_STORE_KEY)[key];\n }\n}\n","import { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\n\nexport class BaseStatistic {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: boolean;\n gamesCount: number;\n wonGamesCount: number;\n newbie: boolean;\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n points: 'points',\n two_points_made: 'twoPointsMade',\n three_points_made: 'threePointsMade',\n free_throws_made: 'freeThrowsMade',\n one_points_made: 'onePointsMade',\n two_point_attempts: 'twoPointAttempts',\n three_point_attempts: 'threePointAttempts',\n free_throw_attempts: 'freeThrowAttempts',\n one_point_attempts: 'onePointAttempts',\n two_point_percent: 'twoPointPercent',\n three_point_percent: 'threePointPercent',\n free_throw_percent: 'freeThrowPercent',\n one_point_percent: 'onePointPercent',\n assists: 'assists',\n blocks: 'blocks',\n rebounds: 'rebounds',\n offensive_rebounds: 'offensiveRebounds',\n defensive_rebounds: 'defensiveRebounds',\n steals: 'steals',\n turnovers: 'turnovers',\n personal_fouls: 'personalFouls',\n technical_fouls: 'technicalFouls',\n unsportsmanlike_fouls: 'unsportsmanlikeFouls',\n newbie: 'newbie',\n },\n relation: {\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class BasketballStatistic extends BaseStatistic {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: boolean;\n gamesCount: number;\n wonGamesCount: number;\n points: number;\n twoPointsMade: number;\n threePointsMade: number;\n freeThrowsMade: number;\n onePointsMade: number;\n twoPointAttempts: number;\n threePointAttempts: number;\n freeThrowAttempts: number;\n onePointAttempts: number;\n twoPointPercent: number;\n threePointPercent: number;\n freeThrowPercent: number;\n onePointPercent: number;\n assists: number;\n blocks: number;\n rebounds: number;\n offensiveRebounds: number;\n defensiveRebounds: number;\n steals: number;\n turnovers: number;\n personalFouls: number;\n technicalFouls: number;\n unsportsmanlikeFouls: number;\n newbie: boolean;\n\n get totalFouls() {\n return this.personalFouls + this.technicalFouls + this.unsportsmanlikeFouls;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { BasketballStatistic } from './basketball-statistic';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: BasketballStatistic,\n competitorTeam: BasketballStatistic\n }\n})\nexport class BasketballGameTeamStatistic extends BaseModel {\n team: BasketballStatistic;\n competitorTeam: BasketballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n points: 'points',\n free_throws_made: 'freeThrowsMade',\n two_points_made: 'twoPointsMade',\n three_points_made: 'threePointsMade',\n one_points_made: 'onePointsMade',\n two_point_attempts: 'twoPointAttempts',\n three_point_attempts: 'threePointAttempts',\n free_throw_attempts: 'freeThrowAttempts',\n one_point_attempts: 'onePointAttempts',\n assists: 'assists',\n blocks: 'blocks',\n rebounds: 'rebounds',\n offensive_rebounds: 'offensiveRebounds',\n defensive_rebounds: 'defensiveRebounds',\n steals: 'steals',\n turnovers: 'turnovers',\n personal_fouls: 'personalFouls',\n technical_fouls: 'technicalFouls',\n unsportsmanlike_fouls: 'unsportsmanlikeFouls',\n updated_at: 'updatedAt',\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class BasketballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n freeThrowsMade: number;\n twoPointsMade: number;\n threePointsMade: number;\n onePointsMade: number;\n twoPointAttempts: number;\n threePointAttempts: number;\n freeThrowAttempts: number;\n onePointAttempts: number;\n assists: number;\n blocks: number;\n rebounds: number;\n offensiveRebounds: number;\n defensiveRebounds: number;\n steals: number;\n turnovers: number;\n personalFouls: number;\n technicalFouls: number;\n unsportsmanlikeFouls: number;\n updatedAt: Date;\n\n get id(): number {\n return this.gameUserId;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get totalFouls(): number {\n return (this.personalFouls || 0) + (this.technicalFouls || 0) + (this.unsportsmanlikeFouls || 0);\n }\n}\n","import { enumField, ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateTimeField } 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}\n\nexport enum HockeyAdvantageTypes {\n power_play = 1,\n shorthanded,\n even_strength\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 is_goalie: 'isGoalie',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(HockeyGameLogTypes),\n advantage: enumField(HockeyAdvantageTypes),\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 isGoalie: boolean;\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 @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { GameUser } from '../models/game-user';\nimport { ConfigService } from '../services/config.service';\nimport { BasketballGameTeamStatistic } from '../models/basketball-game-team-statistic';\nimport { BasketballGameStatistic } from '../models/basketball-game-statistic';\nimport { BasketballGameLog } from '../models/basketball-game-log';\n\n@Injectable({providedIn: 'root'})\nexport class BasketballGameApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getUsers(gameId: number): Promise<GameUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/users/`).pipe(\n map(result => GameUser.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<BasketballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/team_statistic/`).pipe(\n map(result => BasketballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<BasketballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/user_statistic/`).pipe(\n map(result => BasketballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<BasketballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/logs/`).pipe(\n map(result => BasketballGameLog.toFront(result))\n ).toPromise();\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n theme: 'theme',\n message: 'message',\n files: 'files',\n },\n relation: {\n files: File\n }\n})\nexport class Feedback {\n id: number;\n theme: string;\n message: string;\n files: File[];\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(value: any): any {\n return null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Feedback } from '../models/feedback';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class FeedbackApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async sendFeedback(data: any): Promise<Feedback> {\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/feedback/`, Feedback.toBack(data))\n .pipe(map(response => Feedback.toFront(response)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { map } from 'rxjs/operators';\nimport { File } from '../models/file';\n\n@Injectable({providedIn: 'root'})\nexport class FileApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async upload(fileData: any, filename?: string): Promise<File> {\n const formData = new FormData();\n formData.append('file', fileData, filename);\n\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/file/`, formData)\n .pipe(map(data => File.toFront(data)))\n .toPromise();\n }\n\n async createZipArchive(files: {file: any, filename: string}[]): Promise<any> {\n const formData = new FormData();\n for (const file of files) {\n formData.append('files', file.file, file.filename);\n }\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/file/zip_archive/`, formData, {responseType: 'blob'})\n .toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField, enumField, listField } from './util';\nimport { Game } from './game';\nimport { Tournament } from './tournament';\nimport { League } from './league';\nimport { LeagueNews } from './league-news';\n\nexport enum TournamentEventTypes {\n game_closed = 1,\n media_added,\n news\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n game: 'game',\n news: 'news',\n league: 'league',\n tournaments: 'tournaments',\n event: 'event',\n datetime: 'datetime'\n },\n relation: {\n game: Game,\n news: LeagueNews,\n league: League,\n tournaments: listField(Tournament),\n datetime: DateField,\n event: enumField(TournamentEventTypes)\n }\n})\nexport class TournamentEvent extends BaseModel {\n id: number;\n game: Game;\n news: LeagueNews;\n tournaments: Tournament[];\n event: TournamentEventTypes;\n datetime: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n updated_at: 'updatedAt',\n points: 'points',\n pp_shot_misses: 'ppShotMisses',\n pp_shots_on_goal: 'ppShotsOnGoal',\n pp_shots_blocked: 'ppShotsBlocked',\n ev_shot_misses: 'evShotMisses',\n ev_shots_on_goal: 'evShotsOnGoal',\n ev_shots_blocked: 'evShotsBlocked',\n sh_shot_misses: 'shShotMisses',\n sh_shots_on_goal: 'shShotsOnGoal',\n sh_shots_blocked: 'shShotsBlocked',\n pp_goals: 'ppGoals',\n ev_goals: 'evGoals',\n sh_goals: 'shGoals',\n pp_assists: 'ppAssists',\n ev_assists: 'evAssists',\n sh_assists: 'shAssists',\n shootout_attempts: 'shootoutAttempts',\n shootout_goals: 'shootoutGoals',\n block_shots: 'blockShots',\n face_off_losses: 'faceOffLosses',\n face_off_wins: 'faceOffWins',\n saves: 'saves',\n goals_against: 'goalsAgainst',\n safety_rate: 'safetyRate',\n penalty_minutes: 'penaltyMinutes',\n game_time: 'gameTime',\n plus_minus: 'plusMinus'\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class HockeyGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n ppShotMisses: number;\n ppShotsOnGoal: number;\n ppShotsBlocked: number;\n evShotMisses: number;\n evShotsOnGoal: number;\n evShotsBlocked: number;\n shShotMisses: number;\n shShotsOnGoal: number;\n shShotsBlocked: number;\n ppGoals: number;\n evGoals: number;\n shGoals: number;\n ppAssists: number;\n evAssists: number;\n shAssists: number;\n shootoutAttempts: number;\n shootoutGoals: number;\n blockShots: number;\n faceOffLosses: number;\n faceOffWins: number;\n saves: number;\n goalsAgainst: number;\n safetyRate: number;\n penaltyMinutes: number;\n gameTime: number;\n plusMinus: number;\n updatedAt: Date;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get 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.goals + 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 @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n points: 'points',\n pp_shots: 'ppShots',\n pp_shot_misses: 'ppShotMisses',\n pp_shots_on_goal: 'ppShotsOnGoal',\n pp_shots_blocked: 'ppShotsBlocked',\n ev_shots: 'evShots',\n ev_shot_misses: 'evShotMisses',\n ev_shots_on_goal: 'evShotsOnGoal',\n ev_shots_blocked: 'evShotsBlocked',\n sh_shots: 'shShots',\n sh_shot_misses: 'shShotMisses',\n sh_shots_on_goal: 'shShotsOnGoal',\n sh_shots_blocked: 'shShotsBlocked',\n pp_goals_percent: 'ppGoalsPercent',\n pp_goals: 'ppGoals',\n ev_goals_percent: 'evGoalsPercent',\n ev_goals: 'evGoals',\n sh_goals_percent: 'shGoalsPercent',\n goals: 'goals',\n sh_goals: 'shGoals',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n shots: 'shots',\n goals_percent: 'goalsPercent',\n shots_against: 'shotsAgainst',\n saves_percent: 'savesPercent',\n pp_assists: 'ppAssists',\n ev_assists: 'evAssists',\n sh_assists: 'shAssists',\n shootout_attempts: 'shootoutAttempts',\n shootout_goals: 'shootoutGoals',\n block_shots: 'blockShots',\n face_off_losses: 'faceOffLosses',\n face_off_wins: 'faceOffWins',\n face_offs: 'faceOffs',\n face_off_percent: 'faceOffPercent',\n saves: 'saves',\n goals_against: 'goalsAgainst',\n safety_rate: 'safetyRate',\n penalty_minutes: 'penaltyMinutes',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n newbie: 'newbie',\n },\n relation: {\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class HockeyStatistic extends BaseStatistic {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: boolean;\n gamesCount: number;\n wonGamesCount: number;\n points: number;\n ppShots: number;\n ppShotMisses: number;\n ppShotsOnGoal: number;\n ppShotsBlocked: number;\n evShots: number;\n evShotMisses: number;\n evShotsOnGoal: number;\n evShotsBlocked: number;\n shShots: number;\n shShotMisses: number;\n shShotsOnGoal: number;\n shShotsBlocked: number;\n ppGoalsPercent: number;\n ppGoals: number;\n evGoalsPercent: number;\n evGoals: number;\n shGoalsPercent: number;\n shGoals: number;\n goals: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n shots: number;\n goalsPercent: number;\n ppAssists: number;\n evAssists: number;\n shAssists: number;\n shootoutAttempts: number;\n shootoutGoals: number;\n blockShots: number;\n faceOffLosses: number;\n faceOffWins: number;\n faceOffs: number;\n faceOffPercent: number;\n savesPercent: number;\n saves: number;\n shotsAgainst: number;\n goalsAgainst: number;\n safetyRate: number;\n penaltyMinutes: number;\n gameTime: number;\n plusMinus: number;\n newbie: boolean;\n\n get assists(): number {\n return (this.ppAssists || 0) + (this.shAssists || 0) + (this.evAssists || 0);\n }\n\n @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 } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { GameUser } from '../models/game-user';\nimport { ConfigService } from '../services/config.service';\nimport { HockeyGameLog } from '../models/hockey-game-log';\nimport { HockeyGameStatistic } from '../models/hockey-game-statistic';\nimport { HockeyGameTeamStatistic } from '../models/hockey-game-team-statistic';\n\n@Injectable({providedIn: 'root'})\nexport class HockeyGameApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getUsers(gameId: number): Promise<GameUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/users/`).pipe(\n map(result => GameUser.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<HockeyGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/team_statistic/`).pipe(\n map(result => HockeyGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<HockeyGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/user_statistic/`).pipe(\n map(result => HockeyGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<HockeyGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/logs/`).pipe(\n map(result => HockeyGameLog.toFront(result))\n ).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField, DateTimeField } from './util';\nimport { File } from './file';\nimport { Tournament } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n datetime: 'datetime',\n preview_text: 'previewText',\n detail_text: 'detailText',\n picture: 'picture',\n cover: 'cover',\n is_main: 'isMain',\n tournaments: 'tournaments',\n },\n relation: {\n datetime: DateTimeField,\n picture: File,\n cover: File,\n tournaments: listField(Tournament)\n }\n})\nexport class LeagueNews extends BaseModel {\n id: number;\n title: string;\n datetime: Date;\n previewText: string;\n detailText: string;\n picture: File;\n cover: File;\n isMain: boolean;\n tournaments: Tournament[];\n\n @ToFrontHook\n static toFront(data: any): any {\n return undefined;\n }\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { User } from './user';\n\nexport enum PollStatuses {\n open = 1,\n closed,\n archived,\n}\n\n@ModelInstance({\n mappingFields: {\n uuid: 'uuid',\n name: 'name'\n }\n})\nexport class PollVariant extends BaseModel {\n uuid: string;\n name: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n answer_uuid: 'answerUuid',\n user: 'user',\n poll_id: 'pollId',\n },\n relation: {\n user: User\n }\n})\nexport class PollAnswer extends BaseModel {\n id: number;\n answerUuid: string;\n user: User;\n pollId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n active: 'active',\n status: 'status',\n team_id: 'teamId',\n name: 'name',\n description: 'description',\n variants: 'variants',\n author: 'author',\n answers: 'answers',\n multiple_answer: 'multipleAnswer',\n anonymous: 'anonymous',\n created_at: 'createdAt'\n },\n relation: {\n status: enumField(PollStatuses),\n variants: PollVariant,\n author: User,\n answers: PollAnswer,\n createdAt: DateTimeField,\n }\n})\nexport class Poll extends BaseModel {\n id: number;\n active: boolean;\n teamId: number;\n status: PollStatuses;\n name: string;\n description: string;\n _variants: PollVariant[];\n author: User;\n _answers: PollAnswer[];\n multipleAnswer: boolean;\n anonymous: boolean;\n createdAt: Date;\n variantsWithAnswers: {variant: PollVariant, percent: number}[] = [];\n\n set variants(value: PollVariant[]) {\n this._variants = value || [];\n if (this._answers) {\n this.calculateAnswersPercentage();\n }\n }\n get variants(): PollVariant[] {\n return this._variants;\n }\n\n set answers(value: PollAnswer[]) {\n this._answers = value || [];\n if (this._variants) {\n this.calculateAnswersPercentage();\n }\n }\n get answers(): PollAnswer[] {\n return this._answers;\n }\n\n calculateAnswersPercentage() {\n if (!this._answers.length) {\n return;\n }\n\n const variants = this._variants.map(v => v.uuid);\n const answersByVariant = this._answers.reduce((acc, item) => {\n if (variants.indexOf(item.answerUuid) < 0) {\n return acc;\n }\n if (!acc[item.answerUuid]) {\n acc[item.answerUuid] = 0;\n }\n acc[item.answerUuid]++;\n return acc;\n }, {});\n this.variantsWithAnswers = this._variants.map(item => ({\n variant: item,\n percent: answersByVariant[item.uuid] ? Math.round(100 * answersByVariant[item.uuid] / this._answers.length) : 0\n }))\n .sort((a, b) => a.percent > b.percent ? -1 : 1);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { League } from '../models/league';\nimport { map } from 'rxjs/operators';\nimport { Tournament } from '../models/tournament';\nimport { ConfigService } from '../services/config.service';\nimport { TournamentEventsListFilter } from './tournament-api';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { GameMediaFilters } from './media-api';\n\n@Injectable({providedIn: 'root'})\nexport class LeagueApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\n }\n\n async getByAlias(alias: string): Promise<League> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${alias}/`).pipe(\n map(result => League.toFront(result))\n ).toPromise();\n }\n\n async getByDomain(domain: string): Promise<League> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/by_domain/${domain}/`).pipe(\n map(result => League.toFront(result))\n ).toPromise();\n }\n\n async getTournaments(leagueId: number): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournaments/`).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n async getEvents(leagueId: number, page: number, size: number, filters?: TournamentEventsListFilter): Promise<PaginatedResponse<TournamentEvent[]>> {\n let params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\n if (filters) {\n if (filters.event) {\n params = params.set('event', TournamentEventTypes[filters.event]);\n }\n if (filters.search) {\n params = params.set('search', filters.search);\n }\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/events/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentEvent.toFront(result.body)\n }))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { LeagueNews } from '../models/league-news';\nimport { map } from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class LeagueNewsApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\n }\n\n async getLeagueNewsList(leagueId: number): Promise<PaginatedResponse<LeagueNews[]>> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/news/`, {observe: 'response'})\n .pipe(map(response => ({\n total: +response.headers.get('X-Page-Count'),\n data: LeagueNews.toFront(response.body)\n })))\n .toPromise();\n }\n\n async getMainLeagueNews(leagueId: number): Promise<LeagueNews> {\n return this.httpClient.get<any[]>(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/news/?is_main=true`)\n .pipe(map(response => response && response.length > 0 ? LeagueNews.toFront(response[0]) : null))\n .toPromise();\n }\n\n async getNewsById(newsId: number): Promise<LeagueNews> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league_news/${newsId}/`)\n .pipe(map(response => LeagueNews.toFront(response)))\n .toPromise();\n }\n\n async getTournamentNewsList(tournamentId: number): Promise<PaginatedResponse<LeagueNews[]>> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/news/`, {observe: 'response'})\n .pipe(map(response => ({\n total: +response.headers.get('X-Page-Count'),\n data: LeagueNews.toFront(response.body)\n })))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { MediaItem } from '../models/media-item';\nimport { Game, GameStatuses } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { ConfigService } from '../services/config.service';\n\nexport interface GameMediaFilters {\n tournamentStageId?: number;\n tournamentTour?: number;\n teamId?: number;\n playoffStage?: number;\n playoffId?: number;\n status?: GameStatuses;\n}\n\n@Injectable({providedIn: 'root'})\nexport class MediaApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getMedia(mediaId: number): Promise<MediaItem> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/media/${mediaId}/`).pipe(\n map(result => MediaItem.toFront(result))\n ).toPromise();\n }\n\n async getTournamentGameMedia(tournamentId: number, page: number, size: number, filters?: GameMediaFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n if (filters) {\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n if (filters.tournamentStageId) {\n params = params.set('tournament_stage_id', filters.tournamentStageId.toString());\n }\n if (filters.playoffId) {\n params = params.set('playoff_id', filters.playoffId.toString());\n }\n if (filters.playoffStage) {\n params = params.set('playoff_stage', filters.playoffStage.toString());\n }\n if (filters.status) {\n params = params.set('status', GameStatuses[filters.status]);\n }\n }\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/game_media/`, {observe: 'response', params}).pipe(\n map(response => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n })\n ).toPromise();\n }\n\n async getLeagueGameMedia(leagueId: number, page: number, size: number, filters?: GameMediaFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n if (filters) {\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n if (filters.tournamentStageId) {\n params = params.set('tournament_stage_id', filters.tournamentStageId.toString());\n }\n if (filters.playoffId) {\n params = params.set('playoff_id', filters.playoffId.toString());\n }\n if (filters.playoffStage) {\n params = params.set('playoff_stage', filters.playoffStage.toString());\n }\n if (filters.status) {\n params = params.set('status', GameStatuses[filters.status]);\n }\n }\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/game_media/`, {observe: 'response', params}).pipe(\n map(response => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n })\n ).toPromise();\n }\n\n async getGameMediaById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/game_media/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getGameMedia(gameId: number): Promise<MediaItem[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/media/`).pipe(\n map(result => MediaItem.toFront(result))\n ).toPromise();\n }\n\n async createZip(mediaIds: number[]): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/media/zip/`, mediaIds, { responseType: 'blob' })\n .toPromise();\n }\n\n async downloadMedia(mediaId: number): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/media/${mediaId}/download/`,{responseType: 'blob'})\n .toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { TeamUser } from './team-user';\nimport { Game } from './game';\n\nexport enum GameInviteStatus {\n accepted = 1,\n declined,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_user: 'teamUser',\n game_id: 'gameId',\n game: 'game',\n status: 'status',\n },\n relation: {\n game: Game,\n teamUser: TeamUser,\n status: enumField(GameInviteStatus),\n }\n})\nexport class GameInvite extends BaseModel {\n id: number;\n teamUser: TeamUser;\n gameId: number;\n game: Game;\n status: GameInviteStatus;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { User } from './user';\nimport { Team } from './team';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n user: 'user',\n team: 'team',\n team_id: 'teamId',\n user_accept: 'userAccept',\n team_accept: 'teamAccept',\n users_count: 'usersCount',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n score_sum: 'scoreSum',\n created_at: 'createdAt',\n updated_at: 'updatedAt',\n },\n relation: {\n user: User,\n team: Team,\n createdAt: DateTimeField,\n updateAt: DateTimeField,\n }\n})\nexport class TeamInvite extends BaseModel {\n id: number;\n userId: number;\n user: User;\n teamId: number;\n team: Team;\n userAccept: boolean;\n teamAccept: boolean;\n usersCount: number;\n gamesCount: number;\n wonGamesCount: number;\n scoreSum: number;\n createdAt: Date;\n updatedAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","export enum TeamEventTypes {\n training = 1,\n other = 2,\n}\n","import { enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum TeamEventInviteStatuses {\n accepted = 1,\n declined = 2\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_event_id: 'teamEventId',\n team_user_id: 'teamUserId',\n status: 'status',\n },\n relation: {\n status: enumField(TeamEventInviteStatuses)\n }\n})\nexport class TeamEventInvite {\n id: number;\n teamEventId: number;\n teamUserId: number;\n status: TeamEventInviteStatuses;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { TeamEventTypes } from '../models/team-event-type';\n\nexport const TeamEventTypeLocalization = {\n [TeamEventTypes.training]: 'Тренировка',\n [TeamEventTypes.other]: 'Другое'\n};\n","import { BaseModel, enumField, ModelInstance, DateTimeField, ToBackHook, ToFrontHook } from './util';\nimport { Team } from './team';\nimport { TeamEventTypeLocalization } from '../localization/team-event-type';\nimport { TeamEventTypes } from './team-event-type';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n team: 'team',\n event_type: 'eventType',\n event_custom_name: 'eventCustomName',\n description: 'description',\n datetime: 'datetime',\n location: 'location',\n },\n relation: {\n eventType: enumField(TeamEventTypes),\n team: Team,\n datetime: DateTimeField,\n }\n})\nexport class TeamEvent extends BaseModel {\n id: number;\n teamId: number;\n team: Team;\n eventType: TeamEventTypes;\n eventCustomName: string;\n description: string;\n datetime: Date;\n location: string;\n\n get name(): string {\n if (this.eventType === TeamEventTypes.other) {\n return this.eventCustomName;\n }\n return TeamEventTypeLocalization[this.eventType];\n }\n\n get isClosed(): boolean {\n return this.datetime.getTime() < new Date().getTime();\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { Team } from './team';\nimport { Poll } from './poll';\nimport { Game } from './game';\nimport { TeamInvite } from './team-invite';\nimport { TeamUser } from './team-user';\nimport { GameInvite } from './game-invite';\nimport { TeamEvent } from './team-event';\nimport { TeamEventInvite } from './team-event-invite';\nimport { Tournament } from './tournament';\nimport { TournamentInvite } from './tournament-invite';\nimport { TournamentTeam } from './tournament-team';\nimport { User } from './user';\n\nexport enum NotificationType {\n team_updated = 1,\n team_invited,\n team_join_request,\n team_join_declined_by_team,\n team_join_declined_by_user,\n team_join_canceled_by_team,\n team_join_canceled_by_user,\n team_joined_for_user,\n team_joined_for_team,\n team_user_role_changed_for_user,\n team_user_role_changed_for_team,\n team_user_number_changed,\n team_user_deleted_for_user,\n team_user_deleted_for_team,\n team_user_left,\n\n game_updated,\n game_invited,\n game_invite_accepted,\n game_invite_declined,\n game_remind,\n game_won,\n game_losing,\n game_tech_defeat,\n game_tech_victory,\n\n poll_created,\n poll_closed,\n\n team_event_invited,\n team_event_accepted,\n team_event_declined,\n team_event_remind,\n\n tournament_invited,\n tournament_joined,\n tournament_join_declined,\n tournament_join_canceled,\n tournament_user_invited,\n tournament_user_accepted_for_team,\n tournament_user_accepted_for_user,\n tournament_user_added,\n tournament_user_declined_for_team,\n tournament_user_declined_for_user,\n tournament_user_invite_deleted,\n tournament_user_deleted,\n tournament_user_disqualified_for_team,\n tournament_user_disqualified_for_user,\n tournament_user_disqualification_updated_for_team,\n tournament_user_disqualification_updated_for_user,\n tournament_team_deleted,\n\n org_tournament_invite_created,\n org_tournament_invite_declined,\n org_tournament_invite_deleted,\n org_tournament_invite_changed,\n org_tournament_user_deleted,\n org_tournament_user_invited,\n org_tournament_user_has_changes,\n org_tournament_team_leave,\n}\n\nexport enum NotificationServiceEnum {\n public = 1,\n org\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n event_type: 'event',\n data: 'data',\n initiator: 'initiator',\n team: 'team',\n team_invite: 'teamInvite',\n team_user: 'teamUser',\n poll: 'poll',\n game: 'game',\n game_invite: 'gameInvite',\n team_event: 'teamEvent',\n team_event_invite: 'teamEventInvite',\n tournament: 'tournament',\n tournament_invite: 'tournamentInvite',\n tournament_team: 'tournamentTeam',\n viewed: 'viewed',\n protected: 'protected',\n service: 'service',\n created_at: 'createdAt',\n },\n relation: {\n event: enumField(NotificationType),\n initiator: User,\n team: Team,\n teamInvite: TeamInvite,\n teamUser: TeamUser,\n poll: Poll,\n game: Game,\n gameInvite: GameInvite,\n teamEvent: TeamEvent,\n teamEventInvite: TeamEventInvite,\n tournament: Tournament,\n tournamentInvite: TournamentInvite,\n tournamentTeam: TournamentTeam,\n service: enumField(NotificationServiceEnum),\n createdAt: DateTimeField,\n }\n})\nexport class Notification extends BaseModel {\n id: number;\n event: NotificationType;\n data: any;\n initiator: User;\n team: Team;\n teamInvite: TeamInvite;\n teamUser: TeamUser;\n poll: Poll;\n game: Game;\n gameInvite: GameInvite;\n teamEvent: TeamEvent;\n teamEventInvite: TeamEventInvite;\n tournament: Tournament;\n tournamentInvite: TournamentInvite;\n tournamentTeam: TournamentTeam;\n viewed: boolean;\n protected: boolean;\n service: NotificationServiceEnum;\n createdAt: Date;\n\n get important(): boolean {\n return true;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\nimport { TeamUser } from './team-user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team_invite_id: 'tournamentTeamInviteId',\n tournament_team_id: 'tournamentTeamId',\n team_user: 'teamUser',\n accepted: 'accepted'\n },\n relation: {\n teamUser: TeamUser\n }\n})\nexport class TournamentTeamUserInvite extends BaseModel {\n id: number;\n tournamentTeamInviteId: number;\n tournamentTeamId: number;\n teamUser: TeamUser;\n accepted: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\nimport { Tournament } from './tournament';\nimport { TournamentTeamUserInvite } from './tournament-team-user-invite';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team: 'team',\n tournament: 'tournament',\n team_accept: 'teamAccept',\n organization_accept: 'organizationAccept',\n user_invites_count: 'userInvitesCount',\n user_invites: 'userInvites',\n notifications_count: 'notificationsCount',\n },\n relation: {\n team: Team,\n tournament: Tournament,\n userInvites: TournamentTeamUserInvite,\n }\n})\nexport class TournamentInvite extends BaseModel {\n id: number;\n team: Team;\n tournament: Tournament;\n teamAccept: boolean;\n organizationAccept: boolean;\n userInvitesCount: number;\n userInvites: TournamentTeamUserInvite[];\n notificationsCount: number;\n\n get isOpen(): boolean {\n return (this.teamAccept === null || this.organizationAccept === null) && this.teamAccept !== false && this.organizationAccept !== false;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\n\nexport enum NotificationAllowTypes {\n all = 1,\n important,\n none\n}\n\n@ModelInstance({\n mappingFields: {\n user_id: 'userId',\n popup: 'popup',\n sound: 'sound',\n browser: 'browser',\n email: 'email'\n },\n relation: {\n sound: enumField(NotificationAllowTypes),\n browser: enumField(NotificationAllowTypes),\n }\n})\nexport class NotificationSettings extends BaseModel {\n userId: number;\n popup: boolean;\n sound: NotificationAllowTypes;\n browser: NotificationAllowTypes;\n email: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook, enumField } from './util';\n\nexport enum TeamPermissionTypes {\n for_all = 1,\n for_users,\n for_team\n}\n\n@ModelInstance({\n mappingFields: {\n players: 'players',\n games: 'games',\n statistic: 'statistic',\n polls: 'polls',\n events: 'events'\n },\n relation: {\n players: enumField(TeamPermissionTypes),\n games: enumField(TeamPermissionTypes),\n statistic: enumField(TeamPermissionTypes),\n polls: enumField(TeamPermissionTypes),\n events: enumField(TeamPermissionTypes)\n }\n})\nexport class TeamPermission extends BaseModel {\n players: TeamPermissionTypes;\n games: TeamPermissionTypes;\n statistic: TeamPermissionTypes;\n polls: TeamPermissionTypes;\n events: TeamPermissionTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { Notification } from '../models/notification';\nimport { NotificationSettings } from '../models/notification-settings';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { ConfigService } from '../services/config.service';\n\nexport interface NotificationFilters {\n protected?: boolean;\n not_viewed?: boolean;\n important?: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class NotificationBaseApi {\n protected apiUrl: string;\n\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getCount(): Promise<number> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/count/`)\n .pipe(map(data => +data))\n .toPromise();\n }\n\n async getList(page: number, size: number, filters: NotificationFilters = {}): Promise<PaginatedResponse<Notification[]>> {\n let params = new HttpParams()\n .set('page', page.toString())\n .set('size', size.toString());\n for (const key of Object.keys(filters)) {\n params = params.set(key, filters[key]);\n }\n\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/`, {params, observe: 'response'})\n .pipe(\n map(response => {\n const data: Notification[] = Notification.toFront(response.body);\n return {\n total: +response.headers.get('x-page-count'),\n data\n };\n }),\n ).toPromise();\n }\n\n async markViewed(notificationId: number, viewed: boolean): Promise<Notification> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/${notificationId}/viewed/`, {viewed})\n .pipe(map(data => Notification.toFront(data)))\n .toPromise();\n }\n\n async markAllViewed(): Promise<Notification[]> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/viewed/`, {})\n .pipe(map(data => Notification.toFront(data)))\n .toPromise();\n }\n\n async getNotificationSettings(): Promise<NotificationSettings> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}${this.apiUrl}/notification_settings/`)\n .pipe(map(data => NotificationSettings.toFront(data)))\n .toPromise();\n }\n\n async updateNotificationSettings(data: NotificationSettings): Promise<NotificationSettings> {\n return this.httpClient.post(\n `${this.configService.get('apiUrl')}${this.apiUrl}/notification_settings/`,\n NotificationSettings.toBack(data)\n )\n .pipe(map(result => NotificationSettings.toFront(result)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NotificationBaseApi } from './notification-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class NotificationApi extends NotificationBaseApi {\n protected apiUrl = '/api/v1';\n}\n","import { Injectable } from '@angular/core';\nimport { NotificationBaseApi } from './notification-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class OrgNotificationApi extends NotificationBaseApi {\n protected apiUrl = '/org/api/v1';\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\nimport { City } from '../models/city';\nimport { Sport } from '../models/sport';\n\n@Injectable({providedIn: 'root'})\nexport class ReferenceApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getCities(): Promise<City[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/reference/cities/`)\n .pipe(\n map(data => City.toFront(data))\n ).toPromise();\n }\n\n async getSports(): Promise<Sport[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/sport/`)\n .pipe(\n map(data => Sport.toFront(data))\n ).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n email: 'email',\n first_name: 'firstName',\n last_name: 'lastName',\n },\n})\nexport class TeamInviteExternal extends BaseModel {\n id: number;\n teamId: number;\n email: string;\n firstName: string;\n lastName: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField } from './util';\nimport { Team } from './team';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { TeamUser } from './team-user';\nimport { TournamentTeam } from './tournament-team';\nimport { User } from './user';\nimport { BaseStatistic } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n team_user: 'teamUser',\n tournament_team_user: 'tournamentTeamUser',\n tournament_team: 'tournamentTeam',\n user: 'user',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n serve_hits: 'serveHits',\n serve_faults: 'serveFaults',\n serve_aces: 'serveAces',\n serve_percent: 'servePercent',\n ace_percent: 'acePercent',\n stuff_blocks: 'stuffBlocks',\n block_faults: 'blockFaults',\n block_rebounds: 'blockRebounds',\n block_percent: 'blockPercent',\n attack_spikes: 'attackSpikes',\n attack_faults: 'attackFaults',\n attack_shots: 'attackShots',\n attack_percent: 'attackPercent',\n receives: 'receives',\n receive_faults: 'receiveFaults',\n excellent_receives: 'excellentReceives',\n receive_percent: 'receivePercent',\n serve_receives: 'serveReceives',\n serve_receive_faults: 'serveReceiveFaults',\n excellent_serve_receives: 'excellentServeReceives',\n serve_receive_percent: 'serveReceivePercent',\n points: 'points',\n faults: 'faults',\n newbie: 'newbie',\n },\n relation: {\n team: Team,\n teamUser: TeamUser,\n tournamentTeamUser: TournamentTeamUser,\n tournamentTeam: TournamentTeam,\n user: User,\n month: DateField,\n }\n})\nexport class VolleyballStatistic extends BaseStatistic {\n serveHits: number;\n serveFaults: number;\n serveAces: number;\n servePercent: number;\n acePercent: number;\n stuffBlocks: number;\n blockFaults: number;\n blockRebounds: number;\n blockPercent: number;\n attackSpikes: number;\n attackFaults: number;\n attackShots: number;\n attackPercent: number;\n receives: number;\n receiveFaults: number;\n excellentReceives: number;\n receivePercent: number;\n serveReceives: number;\n serveReceiveFaults: number;\n excellentServeReceives: number;\n serveReceivePercent: number;\n points: number;\n faults: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField, DateField } from './util';\n\nexport enum TournamentStageStatuses {\n open,\n in_progress,\n closed\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n date: 'date',\n tournament_id: 'tournamentId',\n status: 'status',\n },\n relation: {\n date: DateField,\n status: enumField(TournamentStageStatuses)\n }\n})\nexport class TournamentStage extends BaseModel {\n id: number;\n name: string;\n date: Date;\n tournamentId: number;\n status: TournamentStageStatuses;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { TeamUserRole } from './team-user';\n\n@ModelInstance({\n mappingFields: {\n can_edit: 'canEdit',\n can_view_users: 'canViewUsers',\n can_manage_permission: 'canManagePermission',\n can_change_owner: 'canChangeOwner',\n can_delete: 'canDelete',\n can_manage_invites: 'canManageInvites',\n can_view_invites: 'canViewInvites',\n can_manage_polls: 'canManagePolls',\n can_view_polls: 'canViewPolls',\n can_answer_poll: 'canAnswerPoll',\n can_manage_games: 'canManageGames',\n can_view_games: 'canViewGames',\n can_view_statistic: 'canViewStatistic',\n can_promote_users: 'canPromoteUsers',\n can_edit_users: 'canEditUsers',\n can_delete_users: 'canDeleteUsers',\n can_view_events: 'canViewEvents',\n can_manage_events: 'canManageEvents',\n can_view_tournaments: 'canViewTournaments',\n can_manage_tournaments: 'canManageTournaments',\n role: 'role'\n },\n relation: {\n role: enumField(TeamUserRole)\n }\n})\nexport class TeamAccess extends BaseModel {\n canEdit: boolean;\n canViewUsers: boolean;\n canManagePermission: boolean;\n canChangeOwner: boolean;\n canDelete: boolean;\n canManageInvites: boolean;\n canViewInvites: boolean;\n canManagePolls: boolean;\n canViewPolls: boolean;\n canAnswerPoll: boolean;\n canManageGames: boolean;\n canViewGames: boolean;\n canViewStatistic: boolean;\n canPromoteUsers: boolean;\n canEditUsers: boolean;\n canDeleteUsers: boolean;\n canViewEvents: boolean;\n canManageEvents: boolean;\n canViewTournaments: boolean;\n canManageTournaments: boolean;\n role: TeamUserRole;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';\nimport { Team } from '../models/team';\nimport { map } from 'rxjs/operators';\nimport { TeamUser, TeamUserRole } from '../models/team-user';\nimport { User } from '../models/user';\nimport { TeamInvite } from '../models/team-invite';\nimport { TeamInviteExternal } from '../models/team-invite-external';\nimport { Poll } from '../models/poll';\nimport { VolleyballStatistic } from '../models/volleyball-statistic';\nimport { Game } from '../models/game';\nimport { TeamEvent } from '../models/team-event';\nimport { Tournament } from '../models/tournament';\nimport { TournamentTeam } from '../models/tournament-team';\nimport { TournamentInvite } from '../models/tournament-invite';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { BasketballStatistic } from '../models/basketball-statistic';\nimport { TeamPermission } from '../models/team-permission';\nimport { TeamAccess } from '../models/team-access';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TeamApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async search(query: string, sportId?: number): Promise<Team[]> {\n let params = (new HttpParams()).set('search', query);\n if (sportId) {\n params = params.set('sport', sportId.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/`, {params})\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async create(team: Team): Promise<Team> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/`, Team.toBack(team))\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getById(teamId: number): Promise<Team> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/`)\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getTeamAccess(teamId: number): Promise<TeamAccess> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/access/`)\n .pipe(map(data => TeamAccess.toFront(data)))\n .toPromise();\n }\n\n async update(teamId: number, values: any): Promise<Team> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/`, Team.toBack(values))\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async delete(team: Team): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team/${team.id}/`)\n .toPromise();\n }\n\n async getPermission(teamId: number): Promise<TeamPermission> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/permission/`)\n .pipe(map(data => TeamPermission.toFront(data)))\n .toPromise();\n }\n\n async updatePermission(teamId: number, permission: TeamPermission): Promise<TeamPermission> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/permission/`, TeamPermission.toBack(permission))\n .pipe(map(data => TeamPermission.toFront(data)))\n .toPromise();\n }\n\n async getUsers(teamId: number, tournamentId?: number): Promise<TeamUser[]> {\n let params = new HttpParams();\n if (tournamentId) {\n params = params.set('tournament_id', tournamentId.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/`, {params})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateUserRole(teamId: number, teamUserId: number, role: TeamUserRole): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/${teamUserId}/role/`, {role: TeamUserRole[role]})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateUserNumber(teamId: number, teamUserId: number, gameNumber: number): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/${teamUserId}/number/`, {number: gameNumber.toString()})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async deleteUser(teamUser: TeamUser): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team/${teamUser.teamId}/users/${teamUser.id}/`)\n .toPromise();\n }\n\n async changeOwner(teamId: number, user: User): Promise<Team> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/owner/`, {id: user.id})\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getInvites(teamId: number): Promise<TeamInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites/`)\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async sendInvite(teamId: number, user: User): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites/`, {user})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/accept/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async declineInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/decline/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async resendInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/resend/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async getInvitesExternal(teamId: number): Promise<TeamInviteExternal[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites_external/`)\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async sendInviteExternal(teamId: number, invite: TeamInviteExternal): Promise<TeamInviteExternal> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites_external/`, TeamInviteExternal.toBack(invite))\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async deleteInviteExternal(invite: TeamInviteExternal): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/invites_external/${invite.id}/`)\n .toPromise();\n }\n\n async resendInviteExternal(invite: TeamInviteExternal): Promise<TeamInviteExternal> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/invites_external/${invite.id}/resend/`, {})\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async getPolls(teamId: number, archive: boolean = false): Promise<Poll[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/polls/${archive ? '?archive=1' : ''}`)\n .pipe(map(data => Poll.toFront(data)))\n .toPromise();\n }\n\n async createPoll(teamId: number, poll: Poll): Promise<Poll> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/polls/`, Poll.toBack(poll))\n .pipe(map(data => Poll.toFront(data)))\n .toPromise();\n }\n\n async getUsersStatistic(teamId: number): Promise<BasketballStatistic[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/statistics/`)\n .pipe(map(data => BasketballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getVolleyballStatistic(teamId: number): Promise<VolleyballStatistic[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/volleyball_statistics/`)\n .pipe(map(data => VolleyballStatistic.toFront(data)))\n .toPromise();\n }\n\n async joinTeam(teamId: number): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/join/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async leaveTeam(teamId: number): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/leave/`, {})\n .toPromise();\n }\n\n async getGames(teamId: number, archive = false): Promise<Game[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/games/${archive ? '?archive=1' : ''}`)\n .pipe(map(data => Game.toFront(data)))\n .toPromise();\n }\n\n async createGame(teamId: number, game: Game): Promise<Game> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/games/`, Game.toBack(game))\n .pipe(map(data => Game.toFront(data)))\n .toPromise();\n }\n\n async getTeamEvents(teamId: number): Promise<TeamEvent[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/events/`)\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async createTeamEvent(teamId: number, teamEvent: TeamEvent): Promise<TeamEvent> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/events/`, TeamEvent.toBack(teamEvent))\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async getTournaments(teamId: number): Promise<Tournament[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournaments/`)\n .pipe(map(data => Tournament.toFront(data)))\n .toPromise();\n }\n\n async getTournamentTeams(teamId: number): Promise<TournamentTeam[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournament_teams/`)\n .pipe(map(data => TournamentTeam.toFront(data)))\n .toPromise();\n }\n\n async getTournamentInvites(teamId: number): Promise<TournamentInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournament_invites/`)\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async getTournamentGames(teamId: number, tournamentId: number, page: number, size?: number): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournaments/${tournamentId}/games/`, {params, observe: 'response'})\n .pipe(map((response: HttpResponse<any>) => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n }))\n .toPromise();\n }\n\n async acceptTournamentInvite(inviteId: number): Promise<TournamentInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/tournament_invite/${inviteId}/accept/`, {})\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async declineTournamentInvite(inviteId: number): Promise<TournamentInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/tournament_invite/${inviteId}/decline/`, {})\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async registerLazyUser(teamId: number, userData: User): Promise<TeamUser> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/lazy_user/`, {user: User.toBack(userData)})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async getLazyUser(teamUserId: number): Promise<TeamUser> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`)\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateLazyUser(teamUserId: number, userData: User): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`, {user: User.toBack(userData)})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async deleteLazyUser(teamUserId: number): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`)\n .toPromise();\n }\n\n async resendLazyUserEmail(teamUserId: number): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/resend_email/`, {})\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { TeamEvent } from '../models/team-event';\nimport { TeamEventInvite } from '../models/team-event-invite';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TeamEventApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getTeamEvent(teamEventId: number): Promise<TeamEvent> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/`)\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async updateTeamEvent(teamEvent: TeamEvent): Promise<TeamEvent> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEvent.id}/`, TeamEvent.toBack(teamEvent))\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async deleteTeamEvent(teamEventId: number): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/`)\n .toPromise();\n }\n\n async getTeamEventInvites(teamEventId: number): Promise<TeamEventInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/invites/`)\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async createTeamEventInvite(teamEventId: number, teamUserId: number): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/invites/`, {team_user_id: teamUserId})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptTeamEventInvite(teamEventInvite: TeamEventInvite): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event_invite/${teamEventInvite.id}/accept/`, {})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async declineTeamEventInvite(teamEventInvite: TeamEventInvite): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event_invite/${teamEventInvite.id}/decline/`, {})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { File } from './file';\nimport { User } from './user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n picture: 'picture',\n text: 'text',\n author: 'author',\n created_at: 'createdAt',\n },\n relation: {\n picture: File,\n author: User,\n createdAt: DateTimeField,\n }\n})\nexport class TournamentNews extends BaseModel {\n id: number;\n title: string;\n picture: File;\n text: string;\n author: User;\n createdAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField } from './util';\n\n@ModelInstance({\n mappingFields: {\n stage_id: 'stageId',\n tours_count: 'toursCount',\n playoff_stages_count: 'playoffStagesCount',\n }\n})\nexport class GameTimelineStageItem {\n stageId: number;\n toursCount: number;\n playoffStagesCount: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n tours_count: 'toursCount',\n playoff_stages_count: 'playoffStagesCount',\n current_tour: 'currentTour',\n current_playoff_stage: 'currentPlayoffStage',\n stages: 'stages',\n tournament_stage_id: 'tournamentStageId',\n },\n relation: {\n stages: listField(GameTimelineStageItem)\n }\n})\nexport class GameTimelineStages extends BaseModel {\n toursCount: number;\n playoffStagesCount: number;\n currentTour: number;\n currentPlayoffStage: number;\n stages: GameTimelineStageItem[];\n tournamentStageId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { generateArray } from '../utils/array';\n\nexport enum PlayoffTypes {\n double_elimination = 'double_elimination',\n elimination = 'elimination'\n}\n\n@ModelInstance({\n mappingFields: {\n rounds: 'rounds',\n final_rounds: 'finalRounds',\n third_place_rounds: 'thirdPlaceRounds',\n teams_count: 'teamsCount',\n type: 'type',\n },\n relation: {\n type: enumField(PlayoffTypes)\n }\n})\nexport class PlayoffSettings extends BaseModel {\n rounds: number;\n finalRounds: number;\n thirdPlaceRounds: number;\n teamsCount: number;\n type: PlayoffTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n settings: 'settings',\n tournament_id: 'tournamentId',\n tournament_stage_id: 'tournamentStageId',\n is_official: 'isOfficial'\n },\n relation: {\n settings: PlayoffSettings\n }\n})\nexport class Playoff extends BaseModel {\n id: number;\n name: string;\n settings: PlayoffSettings;\n tournamentId: number;\n tournamentStageId: number;\n isOfficial: boolean;\n private stages: {title: string, value: number}[] = [];\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get stagesCount(): number {\n return Math.log(this.settings.teamsCount) / Math.log(2);\n }\n\n getPlayoffStages() {\n if (this.stages.length === 0 && this.settings.teamsCount) {\n const stagesCount = Math.log(this.settings.teamsCount) / Math.log(2);\n this.stages = generateArray(stagesCount).map(stage => {\n const playoffStage = this.settings.teamsCount / 2 ** stage;\n let title = '';\n if (playoffStage === 1) {\n title = 'Финал';\n } else {\n title = `1 / ${playoffStage}`;\n }\n return {\n value: stage,\n title\n };\n });\n }\n return this.stages;\n }\n}\n","export function generateArray(length: number): number[] {\n if (length <= 0) {\n return [];\n }\n return Array.apply(null, Array(length)).map((_, i) => i + 1);\n}\n\nexport function getArrayChunks(array: any[], length: number): any[][] {\n const chunks = [];\n const chunkLength = Math.ceil(array.length / length);\n if (chunkLength === 0) {\n return [array];\n }\n for (let i = 0; i < chunkLength; i++) {\n chunks.push(array.slice(i * length, (i + 1) * length));\n }\n return chunks;\n}\n","import { 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 } 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 { 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';\n\nexport interface TournamentGamesFilters {\n tournamentStageId?: number;\n tournamentTour?: number;\n teamId?: number;\n playoffStage?: number;\n playoffId?: number;\n status?: GameStatuses;\n}\n\nexport type StatisticGroupByTypes = 'team' | 'user' | 'team_user' | 'tournament_team' | 'tournament_team_user' | 'month' | 'win_loses';\n\nexport interface StatisticFilters {\n tournament_id?: number;\n tournament_team_id?: number;\n tournament_team_user_id?: number;\n team_id?: number;\n team_user_id?: number;\n user_id?: number;\n tournament_stage_id?: number;\n tournament_tour?: number;\n playoff_stage?: number;\n playoff_id?: number;\n date_from?: string;\n date_to?: string;\n per_game?: boolean;\n group_by: StatisticGroupByTypes;\n}\n\nexport interface TournamentEventsListFilter {\n event?: TournamentEventTypes;\n search?: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class TournamentApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getByAlias(alias: string): Promise<Tournament> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${alias}/`)\n .pipe(map(result => Tournament.toFront(result)))\n .toPromise();\n }\n\n async getNews(tournamentId: number): Promise<TournamentNews[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/news/`)\n .pipe(map(result => TournamentNews.toFront(result)))\n .toPromise();\n }\n\n async getEvents(tournamentId: number, page: number, size: number, filters?: TournamentEventsListFilter): Promise<PaginatedResponse<TournamentEvent[]>> {\n let params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\n if (filters) {\n if (filters.event) {\n params = params.set('event', TournamentEventTypes[filters.event]);\n }\n if (filters.search) {\n params = params.set('search', filters.search);\n }\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/events/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentEvent.toFront(result.body)\n })))\n .toPromise();\n }\n\n async getTournamentStages(tournamentId: number): Promise<TournamentStage[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/stages/`).pipe(\n map(data => TournamentStage.toFront(data))\n ).toPromise();\n }\n\n async getPlayoff(tournamentId: number): Promise<Playoff[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/playoff/`).pipe(\n map(result => Playoff.toFront(result))\n ).toPromise();\n }\n\n async getPlayoffGames(playoffId: number): Promise<Game[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_playoff/${playoffId}/games/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getGamesStages(tournamentId: number): Promise<GameTimelineStages> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/games_stages/`)\n .pipe(map(data => GameTimelineStages.toFront(data)))\n .toPromise();\n }\n\n async getGames(tournamentId: number, page: number, size: number, filters: TournamentGamesFilters = {}): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n if (filters.tournamentStageId) {\n params = params.set('tournament_stage_id', filters.tournamentStageId.toString());\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n if (filters.playoffStage) {\n params = params.set('playoff_stage', filters.playoffStage.toString());\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n if (filters.status) {\n params = params.set('status', GameStatuses[filters.status]);\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/games/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: Game.toFront(result.body)\n }))).toPromise();\n }\n\n async getTeams(tournamentId: number): Promise<TournamentTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/teams/`)\n .pipe(map(result => TournamentTeam.toFront(result)))\n .toPromise();\n }\n\n async getStageTeams(tournamentId: number): Promise<TournamentStageTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/stage_teams/`)\n .pipe(map(result => TournamentStageTeam.toFront(result)))\n .toPromise();\n }\n\n async getTeamById(tournamentTeamId: number): Promise<TournamentTeam> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/`)\n .pipe(map(result => TournamentTeam.toFront(result)))\n .toPromise();\n }\n\n async getUserById(userId: number): Promise<TournamentTeamUser> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${userId}/`)\n .pipe(map(result => TournamentTeamUser.toFront(result)))\n .toPromise();\n }\n\n async getUserGames(tournamentUserId: number): Promise<Game[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${tournamentUserId}/games/`)\n .pipe(map(result => Game.toFront(result)))\n .toPromise();\n }\n\n async getBasketballStatistic(filters?: StatisticFilters): Promise<BasketballStatistic[]> {\n let params = new HttpParams();\n if (filters) {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n }\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/basketball_statistic/`, {params}).pipe(\n map(result => BasketballStatistic.toFront(result))\n ).toPromise();\n }\n\n async getVolleyballStatistic(filters?: StatisticFilters): Promise<VolleyballStatistic[]> {\n let params = new HttpParams();\n if (filters) {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n }\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/volleyball_statistic/`, {params}).pipe(\n map(result => VolleyballStatistic.toFront(result))\n ).toPromise();\n }\n\n async getHockeyStatistic(filters?: StatisticFilters): Promise<HockeyStatistic[]> {\n let params = new HttpParams();\n if (filters) {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n }\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/hockey_statistic/`, {params}).pipe(\n map(result => HockeyStatistic.toFront(result))\n ).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\n\n@ModelInstance({\n mappingFields: {\n valid_users_count: 'validUsersCount',\n invalid_users_count: 'invalidUsersCount',\n has_access: 'hasAccess',\n invite_sent: 'inviteSent',\n already_in_tournament: 'alreadyInTournament'\n }\n})\nexport class TournamentJoinData extends BaseModel {\n validUsersCount: number;\n invalidUsersCount: number;\n hasAccess: boolean;\n inviteSent: boolean;\n alreadyInTournament: boolean;\n\n get usersCount(): number {\n return this.validUsersCount + this.invalidUsersCount;\n }\n\n get valid() {\n return this.hasAccess && !this.inviteSent && !this.alreadyInTournament;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n join_data: 'joinData'\n },\n relation: {\n team: Team,\n joinData: TournamentJoinData\n }\n})\nexport class TournamentJoinTeam extends BaseModel {\n team: Team;\n joinData: TournamentJoinData;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TournamentJoinTeam } from '../models/tournament-join-team';\nimport { map } from 'rxjs/operators';\nimport { TeamUser } from '../models/team-user';\nimport { TournamentTeamUserInvite } from '../models/tournament-team-user-invite';\nimport { TournamentInvite } from '../models/tournament-invite';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TournamentJoinApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getTeamsForJoin(tournamentId: number): Promise<TournamentJoinTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/teams_for_join/`).pipe(\n map(response => TournamentJoinTeam.toFront(response))\n ).toPromise();\n }\n\n async getTeamUsers(teamId: number): Promise<TeamUser[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/`)\n .pipe(\n map(data => TeamUser.toFront(data))\n ).toPromise();\n }\n\n async joinTournament(tournamentId: number, teamId: number, invites: TournamentTeamUserInvite[]): Promise<TournamentInvite> {\n const body = {\n team: {id: teamId},\n user_invites: TournamentTeamUserInvite.toBack(invites)\n };\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/join/`, body)\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TournamentStage } from '../models/tournament-stage';\nimport { map } from 'rxjs/operators';\nimport { TournamentGroup } from '../models/tournament-group';\nimport { Playoff } from '../models/playoff';\nimport { TournamentStageTeam } from '../models/tournament-stage-team';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TournamentStageApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getById(id: number): Promise<TournamentStage> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${id}/`)\n .pipe(map(result => TournamentStage.toFront(result)))\n .toPromise();\n }\n\n async getGroups(stageId: number): Promise<TournamentGroup[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/groups/`)\n .pipe(map(result => TournamentGroup.toFront(result)))\n .toPromise();\n }\n\n async getPlayoffs(stageId: number): Promise<Playoff[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/playoff/`)\n .pipe(map(result => Playoff.toFront(result)))\n .toPromise();\n }\n\n async getTeams(stageId: number): Promise<TournamentStageTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/teams/`)\n .pipe(map(result => TournamentStageTeam.toFront(result)))\n .toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n edit: 'edit',\n personal_data: 'personalData',\n teams: 'teams',\n statistic: 'statistic',\n games: 'games'\n }\n})\nexport class UserAccess extends BaseModel {\n edit: boolean;\n personalData: boolean;\n teams: boolean;\n statistic: boolean;\n games: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField, DateTimeField } from './util';\nimport { GameLogBase } from './game-log-base';\nimport { GameUser } from './game-user';\n\nexport enum VolleyballGameLogType {\n enter_game = 1,\n exit_game,\n remove_game,\n serve_hit,\n serve_fault,\n serve_ace,\n stuff_block,\n block_fault,\n block_rebound,\n attack_spike,\n attack_fault,\n attack_shot,\n receive,\n receive_fault,\n excellent_receive,\n point,\n fault,\n serve_receive,\n serve_receive_fault,\n excellent_serve_receive,\n timeout,\n}\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 }\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\n get id(): number {\n return this.gameUserId;\n }\n\n get attacks(): number {\n return this.attackSpikes + this.attackShots;\n }\n\n get blocks(): number {\n return this.stuffBlocks + this.blockRebounds;\n }\n\n get totalReceives(): number {\n return this.receives + this.excellentReceives;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Game } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { GameUser } from '../models/game-user';\nimport { VolleyballGameTeamStatistic } from '../models/volleyball-game-team-statistic';\nimport { VolleyballGameStatistic } from '../models/volleyball-game-statistic';\nimport { VolleyballGameLog } from '../models/volleyball-game-log';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class VolleyballGameApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getUsers(gameId: number): Promise<GameUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/users/`).pipe(\n map(result => GameUser.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<VolleyballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/team_statistic/`).pipe(\n map(result => VolleyballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<VolleyballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/user_statistic/`).pipe(\n map(result => VolleyballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<VolleyballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/logs/`).pipe(\n map(result => VolleyballGameLog.toFront(result))\n ).toPromise();\n }\n}\n","import { BasketballGameLogTypes } from '../models/basketball-game-log';\n\nexport const BasketballGameLogTypeLocalization = {\n [BasketballGameLogTypes.enter_game]: 'Выход на площадку',\n [BasketballGameLogTypes.exit_game]: 'Ушел с площадки',\n [BasketballGameLogTypes.remove_game]: 'Удаление с площадки',\n [BasketballGameLogTypes.two_point_attempt]: 'Бросок 2 очка',\n [BasketballGameLogTypes.three_point_attempt]: 'Бросок 3 очка',\n [BasketballGameLogTypes.free_throw_attempt]: 'Штрафной бросок',\n [BasketballGameLogTypes.one_point_attempt]: 'Бросок 1 очко',\n [BasketballGameLogTypes.two_point_made]: '2 очка',\n [BasketballGameLogTypes.three_point_made]: '3 очка',\n [BasketballGameLogTypes.free_throw_made]: '1 очко, штрафной',\n [BasketballGameLogTypes.one_point_made]: '1 очко',\n [BasketballGameLogTypes.assist]: 'Передача',\n [BasketballGameLogTypes.block]: 'Блокшот',\n [BasketballGameLogTypes.rebound]: 'Подбор',\n [BasketballGameLogTypes.offensive_rebound]: 'Подбор в нападении',\n [BasketballGameLogTypes.defensive_rebound]: 'Подбор в защите',\n [BasketballGameLogTypes.steal]: 'Перехват',\n [BasketballGameLogTypes.turnover]: 'Потеря',\n [BasketballGameLogTypes.personal_foul]: 'Фол',\n [BasketballGameLogTypes.technical_foul]: 'Технический фол',\n [BasketballGameLogTypes.unsportsmanlike_foul]: 'Неспортиный фол',\n [BasketballGameLogTypes.timeout]: 'Таймаут',\n};\n","import { HockeyGameLogTypes } from '../models/hockey-game-log';\n\nexport const HockeyGameLogTypeLocalization = {\n [HockeyGameLogTypes.enter_game]: 'Выход на площадку',\n [HockeyGameLogTypes.exit_game]: 'Ушел с площадки',\n [HockeyGameLogTypes.shot_miss]: 'Бросок мимо',\n [HockeyGameLogTypes.shot_on_goal]: 'Бросок по воротам',\n [HockeyGameLogTypes.shot_blocked]: 'Заблокированный бросок',\n [HockeyGameLogTypes.goal]: 'Гол',\n [HockeyGameLogTypes.shootout_attempt]: 'Булит промах',\n [HockeyGameLogTypes.shootout_goal]: 'Булит гол',\n [HockeyGameLogTypes.assist]: 'Передача',\n [HockeyGameLogTypes.block_shot]: 'Блокировка броска',\n [HockeyGameLogTypes.minor_penalty]: 'Малый штраф',\n [HockeyGameLogTypes.major_penalty]: 'Большой штраф',\n [HockeyGameLogTypes.misconduct_penalty]: 'Дисциплинарный штраф',\n [HockeyGameLogTypes.game_misconduct_penalty]: 'Дисциплинарный штраф до конца игры',\n [HockeyGameLogTypes.match_penalty]: 'Матч-штраф',\n [HockeyGameLogTypes.penalty_shot]: 'Штрафной бросок',\n [HockeyGameLogTypes.face_off_lose]: 'Проирыш в вбрасывании',\n [HockeyGameLogTypes.face_off_win]: 'Победа в вбрасывании',\n [HockeyGameLogTypes.save]: 'Отражен бросок',\n [HockeyGameLogTypes.timeout]: 'Таймаут'\n};\n","import { OvertimeTypes } from '../models/tournament';\n\nexport const OvertimeTypeLocalization = {\n [OvertimeTypes.to_score_diff]: 'До разницы в N мячей',\n [OvertimeTypes.to_score_total]: 'До N очков',\n [OvertimeTypes.time]: 'По времени',\n [OvertimeTypes.without_overtime]: 'Без овертайма',\n [OvertimeTypes.to_first_goal]: 'На N минут до первой шайбы',\n [OvertimeTypes.to_first_goal_and_bullitts]: 'На N минут до первой шайбы + буллиты',\n [OvertimeTypes.bullitts]: 'Буллиты'\n};\n","import { TeamUserRole } from '../models/team-user';\n\nexport const TeamUserRoleLocalization = {\n [TeamUserRole.moderator]: 'Модератор',\n [TeamUserRole.member]: 'Пользователь',\n [TeamUserRole.admin]: 'Владелец',\n};\n","import { GameBasketballPosition, WorkHand } from '../models/basketball-profile';\nimport { GameVolleyballPosition, VolleyballWorkHand } from '../models/volleyball-profile';\nimport { GameHockeyPosition } from '../models/hockey-profile';\n\nexport const GameBasketballPositionLocalization = {\n [GameBasketballPosition.point_guard]: 'Разыгрывающий защитник',\n [GameBasketballPosition.shooting_guard]: 'Атакующий защитник',\n [GameBasketballPosition.small_forward]: 'Легкий форвард',\n [GameBasketballPosition.power_forward]: 'Мощный форвард',\n [GameBasketballPosition.center]: 'Центровой',\n};\n\nexport const GameBasketballPositionShortLocalization = {\n [GameBasketballPosition.point_guard]: 'PG',\n [GameBasketballPosition.shooting_guard]: 'SG',\n [GameBasketballPosition.small_forward]: 'SF',\n [GameBasketballPosition.power_forward]: 'PF',\n [GameBasketballPosition.center]: 'C',\n};\n\nexport const WorkHandLocalization = {\n [WorkHand.left]: 'Левая',\n [WorkHand.right]: 'Правая'\n};\n\nexport const GameVolleyballPositionLocalization = {\n [GameVolleyballPosition.setter]: 'Связующий',\n [GameVolleyballPosition.libero]: 'Либеро',\n [GameVolleyballPosition.middle_player]: 'Центральный блокирующий',\n [GameVolleyballPosition.receiver_attacker]: 'Доигровщик',\n [GameVolleyballPosition.dioganal]: 'Диагональный',\n};\n\nexport const GameVolleyballPositionShortLocalization = {\n [GameVolleyballPosition.setter]: 'S',\n [GameVolleyballPosition.libero]: 'L',\n [GameVolleyballPosition.middle_player]: 'MP',\n [GameVolleyballPosition.receiver_attacker]: 'RA',\n [GameVolleyballPosition.dioganal]: 'D',\n};\n\nexport const GameVolleyballPositionShortRuLocalization = {\n [GameVolleyballPosition.setter]: 'связ.',\n [GameVolleyballPosition.libero]: 'либеро',\n [GameVolleyballPosition.middle_player]: 'блок.',\n [GameVolleyballPosition.receiver_attacker]: 'доигр.',\n [GameVolleyballPosition.dioganal]: 'диаг.',\n};\n\nexport const VolleyballWorkHandLocalization = {\n [VolleyballWorkHand.left]: 'Левая',\n [VolleyballWorkHand.right]: 'Правая'\n};\n\nexport const GameHockeyPositionLocalization = {\n [GameHockeyPosition.goaltender]: 'Вратарь',\n [GameHockeyPosition.defensemen]: 'Защитник',\n [GameHockeyPosition.forward]: 'Нападающий'\n};\n","import { VolleyballGameLogType } from '../models/volleyball-game-log';\n\nexport const VolleyballGameLogTypeLocalization = {\n [VolleyballGameLogType.enter_game]: 'Выход на площадку',\n [VolleyballGameLogType.exit_game]: 'Уход с площадки',\n [VolleyballGameLogType.remove_game]: 'Удаление с площадки',\n [VolleyballGameLogType.serve_ace]: 'Эйс',\n [VolleyballGameLogType.serve_hit]: 'Подача',\n [VolleyballGameLogType.serve_fault]: 'Ошибка на подаче',\n [VolleyballGameLogType.attack_spike]: 'Результативная атака',\n [VolleyballGameLogType.attack_shot]: 'Успешная атака',\n [VolleyballGameLogType.attack_fault]: 'Ошибка атаки',\n [VolleyballGameLogType.stuff_block]: 'Результативный блок',\n [VolleyballGameLogType.block_rebound]: 'Успешный блок',\n [VolleyballGameLogType.block_fault]: 'Ошибка на блоке',\n [VolleyballGameLogType.excellent_receive]: 'Отличный прием',\n [VolleyballGameLogType.receive]: 'Прием',\n [VolleyballGameLogType.receive_fault]: 'Ошибка на приеме',\n [VolleyballGameLogType.serve_receive]: 'Прием подачи',\n [VolleyballGameLogType.excellent_serve_receive]: 'Отличный прием подачи',\n [VolleyballGameLogType.serve_receive_fault]: 'Ошибка приема подачи',\n [VolleyballGameLogType.point]: 'Очко',\n [VolleyballGameLogType.fault]: 'Ошибка',\n [VolleyballGameLogType.timeout]: 'Таймаут',\n};\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { Subject } from 'rxjs/internal/Subject';\nimport { ReplaySubject } from 'rxjs/internal/ReplaySubject';\n\nimport * as Centrifuge from 'centrifuge';\nimport { Observable } from 'rxjs';\nimport { ConfigService } from './config.service';\n\ninterface CentrifugoConfig {\n user: string;\n timestamp: string;\n token: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class CentrifugoService {\n private channels$: { [key: string]: Subject<any> } = {};\n private subscriptions: { [key: string]: any } = {};\n private centrifuge;\n private initializeEngineSubject: ReplaySubject<boolean>;\n\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) { }\n\n listen(channel): Observable<any> {\n if (channel in this.channels$) {\n return this.channels$[channel];\n }\n\n this.channels$[channel] = new Subject<any>();\n const subscription = this.connect().subscribe(connected => {\n this.subscriptions[channel] = this.addEngineSubscription(channel);\n setTimeout(() => {\n subscription.unsubscribe();\n });\n });\n\n return this.channels$[channel];\n }\n\n unsubscribe(channel): void {\n if (this.subscriptions[channel]) {\n this.subscriptions[channel].unsubscribe();\n delete this.subscriptions[channel];\n }\n if (this.channels$[channel]) {\n this.channels$[channel].complete();\n delete this.channels$[channel];\n }\n }\n\n connect(): Observable<boolean> {\n if (!this.initializeEngineSubject) {\n this.initializeEngineSubject = new ReplaySubject(1);\n\n this.httpClient.get<CentrifugoConfig>(`${this.configService.get('apiUrl')}/api/v1/centrifugo/`)\n .subscribe(config => {\n this.initializeEngine({\n url: this.configService.get('centrifugoUrl'),\n user: config.user,\n timestamp: config.timestamp,\n token: config.token,\n transports: ['websocket']\n });\n this.centrifuge.connect();\n this.centrifuge.on('connect', () => {\n this.initializeEngineSubject.next(true);\n });\n });\n }\n\n return this.initializeEngineSubject;\n }\n\n publish(channel: string, message: any): Observable<any> {\n return new Observable<any>(observer => {\n this.connect().subscribe(() => {\n if (!this.subscriptions[channel]) {\n this.subscriptions[channel] = this.addEngineSubscription(channel);\n }\n this.subscriptions[channel].publish(message).then(res => {\n observer.next(res);\n observer.complete();\n }, error => {\n throw error;\n });\n });\n });\n }\n\n disconnect(): void {\n this.centrifuge.disconnect();\n this.initializeEngineSubject = undefined;\n this.channels$ = {};\n this.subscriptions = {};\n }\n\n private initializeEngine(config: {\n url: string,\n user: string,\n timestamp: string,\n token: string,\n transports: string[]\n }): void {\n this.centrifuge = new Centrifuge(config);\n }\n\n private addEngineSubscription(channel: string): Observable<any> {\n return this.centrifuge.subscribe(channel, this.resolveMessage.bind(this));\n }\n\n private resolveMessage(response: any): void {\n const channel = response.channel;\n if (!this.channels$[channel]) {\n return;\n }\n\n this.channels$[channel].next(response.data);\n }\n}\n","import { ModelInterface } from '../models/util';\n\nexport class StorageEngineField {\n defaultValue: any;\n\n constructor(defaultValue?: any, protected modelClass?: ModelInterface) {\n this.defaultValue = defaultValue;\n }\n\n toFront(value: any): any {\n if (this.modelClass) {\n return this.modelClass.toFront(value);\n }\n return value;\n }\n\n toBack(value: any): any {\n if (this.modelClass) {\n return this.modelClass.toBack(value);\n }\n return value;\n }\n}\n\nexport abstract class StorageEngine {\n constructor(protected name: string, protected fields: {[key: string]: StorageEngineField}) {\n }\n\n addField(key: string, field: StorageEngineField): void {\n this.fields[key] = field;\n }\n\n save(key: string, value: any): void {\n if (!this.fields[key]) {\n return;\n }\n this.setItem(`${this.name}_${key}`, this.fields[key].toBack(value));\n }\n\n get(key: string): any {\n if (!this.fields[key]) {\n return;\n }\n let value = this.getItem(`${this.name}_${key}`);\n if (value === null) {\n value = this.fields[key].defaultValue;\n }\n if (value === null || value === undefined) {\n return value;\n }\n return this.fields[key].toFront(value);\n }\n\n clear(): void {\n for (const field of Object.keys(this.fields)) {\n this.removeItem(field);\n }\n }\n\n protected getItem(key: string): any {\n throw new Error(`Function getItem for store engine ${typeof this} not implemented`);\n }\n\n protected setItem(key: string, value: any): any {\n throw new Error(`Function setItem for store engine ${typeof this} not implemented`);\n }\n\n protected removeItem(key: string): void {\n throw new Error(`Function deleteItem for store engine ${typeof this} not implemented`);\n }\n}\n","import { StorageEngine } from './storage-engine';\n\nexport class LocalStorageEngine extends StorageEngine {\n protected setItem(key: string, value: any) {\n localStorage.setItem(key, JSON.stringify(value));\n }\n\n protected getItem(key: string): any {\n try {\n return JSON.parse(localStorage.getItem(key));\n } catch (e) {\n return;\n }\n }\n\n protected removeItem(key: string): void {\n localStorage.removeItem(key);\n }\n}\n","export function getCookie(name: string): string {\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) {\n return parts.pop().split(';').shift();\n }\n return null;\n}\n","export interface LinkFavicon {\n rel: string;\n sizes?: string;\n href: string;\n type?: string;\n color?: string;\n}\n\nexport function getIconsData(folder: string): LinkFavicon[] {\n return [\n {rel: 'apple-touch-icon', sizes: '180x180', href: `/assets/favicon/${folder}apple-touch-icon.png`},\n {rel: 'icon', type: 'image/png', sizes: '32x32', href: `/assets/favicon/${folder}favicon-32x32.png`},\n {rel: 'icon', type: 'image/png', sizes: '16x16', href: `/assets/favicon/${folder}favicon-16x16.png`},\n {rel: 'shortcut icon', href: `/assets/favicon/${folder}favicon.ico`},\n {rel: 'manifest', href: `/assets/favicon/${folder}site.webmanifest`},\n {rel: 'mask-icon', href: `/assets/favicon/${folder}safari-pinned-tab.svg`, color: '#ff0000'}\n ];\n}\n\nexport function changeFavicons(document: Document, leagueAlias: string): void {\n let folder = '';\n if (leagueAlias === 'ablmoscow') {\n folder = 'abl/';\n }\n const data = getIconsData(folder);\n for (const item of data) {\n const link = document.createElement('link');\n for (const key of Object.keys(item)) {\n link.setAttribute(key, item[key]);\n }\n document.head.appendChild(link);\n }\n}\n","import { Inject, Injectable, Injector, PLATFORM_ID } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { getCookie } from './utils/cookie';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Injectable()\nexport class HttpCookieInterceptor implements HttpInterceptor {\n private isBrowser = isPlatformBrowser(this.platformId);\n\n constructor(\n private injector: Injector,\n @Inject(PLATFORM_ID) private platformId: string,\n ) {\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (!this.isBrowser) {\n return next.handle(req);\n }\n req = req.clone({withCredentials: true});\n const csrf = getCookie('csrftoken');\n if (csrf) {\n req = req.clone({\n setHeaders: {'X-CSRFToken': csrf}\n });\n }\n return next.handle(req);\n }\n}\n","import {\n ɵComponentType as ComponentType,\n ɵDirectiveType as DirectiveType,\n ɵComponentDef as ComponentDef,\n ɵDirectiveDef as DirectiveDef\n} from '@angular/core';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { Subject } from 'rxjs/internal/Subject';\n\nexport interface OnDestroyLike {\n ngOnDestroy(): void;\n [key: string]: any;\n}\n\nexport function componentDestroyed(component: OnDestroyLike): Observable<void> {\n if ((component.constructor as any).__componentDestroyed$) {\n return (component.constructor as any).__componentDestroyed$;\n }\n throw new Error('Use @UntilDestroy decorator in class');\n}\n\nexport function UntilDestroy(cmpType: any) {\n const def = getDef(cmpType as any);\n const original = (def as any).onDestroy;\n cmpType.__componentDestroyed$ = new Subject<void>();\n (def as any).onDestroy = function() {\n cmpType.__componentDestroyed$.next();\n cmpType.__componentDestroyed$.complete();\n original.apply(this);\n };\n}\n\nfunction getDef<T>(\n type: DirectiveType<T> | ComponentType<T>\n): DirectiveDef<T> | ComponentDef<T> {\n return (type as ComponentType<T>).ɵcmp || (type as DirectiveType<T>).ɵdir;\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { debounceTime, delay, map, switchMap } from 'rxjs/operators';\nimport { Observable, of } from 'rxjs';\n\nexport interface CheckEmailServiceInterface {\n checkEmail(value: string, selfCheck: boolean): Observable<boolean>;\n}\n\nexport const minLengthArrayValidator = (minLength: number) => {\n return (c: AbstractControl) => {\n return c.value.length < minLength\n ? {minLengthArray: {valid: false}}\n : null;\n };\n};\n\nexport const validatePhone = (control: AbstractControl) => {\n if (!control.value) {\n return null;\n }\n const value = `${control.value}`.replace(/\\D/gi, '');\n return value.length === 11 ? null : {invalidPhone: {valid: false}};\n};\n\nexport const validateDate = (control: AbstractControl) => {\n const re = /\\d{2}\\.\\d{2}\\.\\d{4}/gi;\n if (!control.value || re.test(control.value)) {\n return null;\n }\n return {invalidDate: {valid: false}};\n};\n\nexport const validateEmail = (authService: CheckEmailServiceInterface, selfCheck = true, ignore = []) => {\n const subject = of(null).pipe(\n delay(500)\n );\n return (control: AbstractControl) => {\n if (ignore.indexOf(control.value) > -1) {\n return of(null);\n }\n return subject.pipe(\n switchMap(() => authService.checkEmail(control.value, selfCheck).pipe(\n map(valid => valid ? null : {emailTaken: true})\n ))\n );\n };\n};\n\nexport const validateUrl = (control: AbstractControl) => {\n const re = /^(?:http(s)?:\\/\\/)[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/;\n if (!control.value || re.test(control.value)) {\n return null;\n }\n return {invalidUrl: true};\n};\n\nexport function fileSizeValidator(maxFileSize: number): ValidatorFn {\n return (control: AbstractControl): {[key: string]: any} | null => {\n if (!control.value) {\n return null;\n }\n };\n}\n","export function getEnumOptions(enumClass): number[] {\n return Object.keys(enumClass)\n .map(v => enumClass[v])\n .filter(v => isNaN(+v) === false)\n .map(v => +v);\n}\n\n","import { captureException } from '@sentry/browser';\n\nexport function handleError(error, force = false, production = true) {\n if (!(error && (error.status === 0 || error.status === 404)) || (force && error.status !== 0)) {\n captureException(error);\n }\n\n if (!production) {\n console.error(error);\n }\n}\n","export function isTouchDevice() {\n const prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');\n const mq = (q) => {\n return window.matchMedia(q).matches;\n };\n\n if (('ontouchstart' in window) || (window as any).DocumentTouch && document instanceof (window as any).DocumentTouch) {\n return true;\n }\n\n // include the 'heartz' as a way to have a non matching MQ to help terminate the join\n // https://git.io/vznFH\n const query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\n return mq(query);\n}\n","import { FormGroup } from '@angular/forms';\n\nexport function markFormGroupTouched(formGroup: FormGroup) {\n (Object as any).values(formGroup.controls).forEach(control => {\n control.markAsTouched();\n control.markAsDirty();\n\n if (control instanceof FormGroup) {\n markFormGroupTouched(control);\n } else if (control.controls) {\n control.controls.forEach(c => {\n if (c instanceof FormGroup) {\n markFormGroupTouched(c);\n } else {\n c.markAsTouched();\n c.markAsDirty();\n }\n });\n }\n });\n}\n"]}
|