{"version":3,"sources":["App/base.js","App/common.js","App/dialogs.js","App/numbersEditor.js","App/common/Directives/pageFooter.js","App/common/factories/appInfoFactory.js","App/common/factories/authFactory.js","App/dialogs/Controllers/confirmDialogCtrl.js","App/dialogs/Controllers/confirmResultsDialogCtrl.js","App/dialogs/Controllers/drawApprovalDialogCtrl.js","App/dialogs/Controllers/eventInfoDialogCtrl.js","App/dialogs/Controllers/informationDialogCtrl.js","App/dialogs/Controllers/preDrawCertificateDialogCtrl.js","App/dialogs/Controllers/releaseTimeDialogCtrl.js","App/dialogs/Factories/dialogFactory.js","App/numbersEditor/controllers/EventController.js","App/numbersEditor/controllers/FooterController.js","App/numbersEditor/controllers/GameController.js","App/numbersEditor/controllers/GameEditController.js","App/numbersEditor/controllers/HomeController.js","App/numbersEditor/controllers/LoginController.js","App/numbersEditor/controllers/MasterController.js","App/numbersEditor/controllers/NewAdhocController.js","App/numbersEditor/controllers/NewGameController.js","App/numbersEditor/controllers/postDrawCertificateController.js","App/numbersEditor/controllers/PostDrawWeightController.js","App/numbersEditor/controllers/preDrawCertificateController.js","App/numbersEditor/controllers/PreDrawWeightController.js","App/numbersEditor/controllers/PublishResultsController.js","App/numbersEditor/controllers/SearchController.js","App/numbersEditor/controllers/SettingsController.js","App/numbersEditor/controllers/SetupSportCodeController.js","App/numbersEditor/controllers/SportCodeEditController.js","App/numbersEditor/Directives/manufacturerWeightValidate.js","App/numbersEditor/Directives/numbersTimePicker.js","App/numbersEditor/Factories/AuthInterceptorFactory.js","App/numbersEditor/Factories/EventFactory.js","App/numbersEditor/Factories/GameFactory.js","App/numbersEditor/Factories/HomeFactory.js","App/numbersEditor/Factories/NewAdhocGameFactory.js","App/numbersEditor/Factories/NewGameFactory.js","App/numbersEditor/Factories/PublishGameFactory.js","App/numbersEditor/Factories/SearchFactory.js","App/numbersEditor/Factories/SettingFactory.js","App/numbersEditor/Factories/SportCodeFactory.js","App/numbersEditor/Filters/sportCodeDesc.js","App/numbersEditor/Filters/toEventDesc.js","App/numbersEditor/Filters/toGameDesc.js","App/numbersEditor/Filters/toPublishDateTime.js","App/numbersEditor/Services/gameService.js","App/numbersEditor/Services/localStorageService.js","App/numbersEditor/Services/newAdhocService.js","App/numbersEditor/Services/sentryService.js","App/numbersEditor/Services/sportCodeService.js"],"names":["$","message","text","type","undefined","noty","timeout","layout","MessageText","GameSuccessfullySaved","GameSuccessfullyUpdated","GameSuccessfullyDeleted","GameSuccessfullyCancelled","GameSuccessfullyVoided","GameSuccessfullyPublished","GameSuccessfullyUnCancelled","GameSuccessfullyCreated","EventSuccessfullySaved","EventSuccessfullyUpdated","EventSuccessfullyDeleted","EventSuccessfullyReleased","EventSuccessfullyActivated","EventSuccessfullyCancelled","EventSuccessfullyStarted","EventSuccessfullyEnded","EventSuccessfullyVoided","EventSuccessfullySuspended","EventSuccessfullyChangePending","ResultSuccessfullySaved","ResultSuccessfullyPublished","EventExtraInfoSuccessfullySaved","EventPreDrawCertificateSaved","SettingSuccessfullySaved","SettingSuccessfullyUpdated","SportCodeSuccessfullySaved","SportCodeSuccessfullyDeleted","MessageType","Success","Error","Info","Warning","IsStepByStepOn","authenticationData","JSON","parse","localStorage","getItem","sportCode","steps","common","angular","module","run","sentryService","init","dialogs","NumbersEditor","config","$routeProvider","when","controller","templateUrl","otherwise","redirectTo","$httpProvider","interceptors","push","$rootScope","SetAppTitle","mainTitle","subtitle","title","directive","restrict","replace","template","factory","$http","AppInfoFactory","self","this","_http","_baseUrl","prototype","getDateTime","get","getApplicationInfo","getSentryInfo","authFactory","logOut","clear","login","credentials","post","getUser","token","headers","Authorization","getUserWithCreds","Credentials","getCreds","authenticationRefreshData","CredsKey","credsKey","GetAuthenticationData","init2ndFactor","verify2ndFactor","getTwoFactorConfig","$scope","$modalInstance","header","msg","onYesClick","isDefined","no","dismiss","yes","close","hasBonusNumber","drawResults","console","log","$routeParams","gameFactory","GetdrawApprovalDetails","gameId","success","drawApproval","DrawApproval","error","ExceptionMessage","SiSTechApprove","result","SisApproved","AdjudicatorApprove","AdjudicatorApproved","eventFactory","SportCode","GetEventExtraInfo","eventId","data","EventExtraInfo","SelectedBallSet","parseInt","SetOfBalls","Save","SaveEventExtraInfo","Cancel","UpdateBallSet","selectedBallSet","$location","DisplayContinueToPublishResultButton","ContinueToPublishResult","path","search","startDate","appInfoFactory","newPreDrawCertificate","PreDrawCertificate","AdjudicatorName","InitialsForQ1","InitialsForQ2","InitialsForQ3","InitialsForQ4","InitialsForQ5","InitialsForQ6","InitialsForQ7","Q8DrawFirst","Q8DrawSecond","Q8DrawThrird","Q8DrawFourth","Q8DrawFifth","Q8DrawSixth","Q8DrawBooster","Q8DrawHour","Q8DrawMinute","Q8DrawSeconds","InitialsForQ9","Q10Comments","SignedForDeloitte","SignedForSis","InitialsForQ3B","dateTime","today","Date","CertificationDate","mapPreDrawCertificate","preDrawCertificate","slice","getPreDrawCertificate","GetPreDrawCertificate","setFormScope","scope","formScope","SavePreDrawCertificate","event","ModelState","stringify","$dialogs","$route","$timeout","moment","setReleaseTimeScope","releaseTime","trim","releasedTime","hours","minutes","seconds","releasedTimeAry","split","val","Release","dialog","releasetime","setHours","setMinutes","setSeconds","scheduled","getMinutes","getTimezoneOffset","scheduledTime","getTime","actualTime","confirm","then","btn","releaseTimeDate","tz","guess","set","valueOf","reload","ResetReleaseTime","releasetimeForm","$setPristine","$modal","open","resolve","copy","EventInfo","Information","ReleaseTime","confirmResults","$filter","setDatesForAuthorization","Event","eventStartDate","EventTime","EventStartDate","Today","tomorrow","setDate","getDate","Tomorrow","yesterday","Yesterday","daybeforeyesterday","DayBeforeYesterday","isTomorrowGame","isTodayGame","isYesterdayGame","isDayBeforeYesterday","generateDrawNumberList","drawNumberList","Enumerable","From","ResultPlaces","OrderBy","x","DrawnOrder","Select","Drawn","ToArray","getEvent","GetEvent","bindDefaultResultPlaces","setupNavPills","IsValid","getSubTitle","length","i","Game","resultPlace","BonusNumber","bonusResultPlace","NavPills","Array","lightWeightEvents","LightWeightEvents","sort","a","b","Id","active","eventName","Title","navPill","EventId","EventName","URL","CssClass","manageEvent","date","Description","isTodayOrYesterdayGame","isBroadcastNotStarted","BroadcastStatus","isBroadcasting","isAdmin","isTechSuper","DisplayEventInfoButton","GetPreDrawValidation","preDrawValidation","DisplayNavigateToPublishResultPageButton","HasResulted","HasResultPublished","HasPreDrawWeightCompleted","HasPreDrawCertificateCompleted","Active","dlg","Status","statusMessage","CanActive","CanRelease","CanStartBroadcast","allowedToStartStatusCodes","indexOf","CanEndBroadcast","StartBroadcast","EndBroadcast","CanCancel","Suspend","CanSuspend","ChangePending","CanChangePending","Void","CanVoid","SaveResult","drawNumbers","GameId","CanResult","validate","k","notNullResultPlaces","Where","ErrorMessage","isNaN","drawNumber","Minima","Maxima","resultPlaces","j","GoHome","ShowEventInfoModal","ShowReleaseTimeModal","ShowPreDrawCertificateModal","GoToPublishResult","VersionInfo","newGameFactory","publishGameFactory","gameService","getGame","game","convertUtcDateToLocalDate","newDate","offset","getHours","setItem","PublishGame","publishGame","IsPublished","PublicationStamp","CancelGame","CanCancelGame","activeEvents","Events","Count","UnCancelGame","CanUnCancelGame","VoidGame","CanVoidGame","eventCount","suspendedEventCount","changePendingEventCount","CanEditGame","DeleteGame","EditGame","AddEvent","newEvent","DeleteEvent","index","id","splice","Delete","SaveEvent","eventTime","eTime","eventDtoAdd","RefId","UpdateEvent","Update","SaveGame","saveGame","ex","PublishResult","TwoDrawApprovedButtons","CanPublishResult","preResulted","Any","go","view","number","CanAccessTheEvent","DisplayPublishResultButton","$document","setMinMaxDates","StartDate","GameEdit","setDatePicker","maxDate","setMonth","getMonth","SaveGameEdit","eDate","toString","toISOString","Message","CancelGameEdit","$watch","opened","bind","$event","which","click","disabled","mode","closemodal","preventDefault","stopPropagation","homeFactory","getTodaysGames","err","logError","appInfo","Environment","AllGameMode","minDate","fromMinDate","fromMaxDate","toMinDate","toMaxDate","homeFilterData","getHomeFilterData","FromDate","ToDate","games","todaysGame","jsDate","getFullYear","Games","upcomingGames","UpcomingGames","LoadingUpcomingGames","filterData","setHomeFilterData","fromDate","toDate","deleteGame","canDelete","SaveAndPublish","Publish","CanPublishGame","HasCompleted","fromOpened","toOpened","FilterUpcoming","closemodals","fromOpen","toOpen","localStorageService","$window","LoginController","window","userName","password","btnText","btnDisabled","maskedNumber","code","twoFactorOn","action","loadTwoFactorConfig","response","onError","errMsg","username","access_token","res","storeUserData","IsAdmin","IsTechSuper","location","href","error_description","setInterval","checkForRefreshToken","startClock","setTime","clock","tickSeconds","tickedSeconds","getSeconds","authRefresh","activityData","authRefreshData","expiresin","expires_in","timestamp","currenttime","secondspassed","timeleft","hasactivity","activityDate","activitysecondspassed","renewToken","credresponse","newAdhocGameFactory","newAdhocService","getNewAdhocGame","newAdhoc","IsAdhoc","Object","EventDisplayTime","NewAdhoc","saveValidate","validationPassed","each","key","updateEventTimes","events","isSubmitting","AddAdhocEvent","DeleteAdhocEvent","SaveAdhocGame","insertGame","gameid","dateSelection","alert","SportCodes","newGame","todaysDate","searchGamesByDate","checkGameByDate","selectGame","AddGame","Class","BindEvents","eventsArray","EventNumber","sportcode","CanPublish","ManageGame","eventNo","draw","SavePostDrawCertificate","PostDrawWeight","PreDrawWeight","Adjudicator","FirstName","LastName","adjudicatorFirstName","adjudicatorLasttName","GoToManageGame","RandomResultChallenge","ChallengeOneDrawPosition","ChallengeOneDrawResult","ChallengeTwoDrawPosition","ChallengeTwoDrawResult","ChallengeThreeDrawPosition","ChallengeThreeDrawResult","GetDrawApprovalDto","RandomResults","PublishResultWithRandomResultChallenge","BackToDraw","GoToPostDrawBallWeight","searchFactory","searchDate","initWatch","searchGames","searchGame","settingFactory","getSettings","GetAll","settings","Settings","NewSetting","Key","Value","Type","form","NewSettingSave","UpdateSetting","setting","Validate","SettingsForm","$invalid","scheduledDate","setMilliseconds","sportCodeFactory","sportCodeService","ShowAddButton","getSportCodes","getAvailableSportCodeList","sportCodes","getSportCode","SportCodeList","EditSportCode","AddSportCode","DeleteSportCode","deleteSportCode","ForNew","MinimaIsValid","MaximaIsValid","ResultPlacesIsValid","item","SportCodeDesc","value","desc","validateField","_errorMessage","_isValid","valueNumber","validateMinimaMaxima","validateResultPlaces","setIsValid","validateMinima","MinimaErrorMessage","validateMaxima","MaximaErrorMessage","ResultPlacesErrorMessage","SaveSportCode","saveSportCode","CancelSaveSportCode","require","link","elem","attr","ctrl","$on","args","manufacturerBalls","ManufacturerBallSets","Name","BallNumber","manufacturerweight","parseFloat","ManufacturerWeight","maxValue","minValue","$viewValue","$setValidity","$parsers","unshift","$formatters","dateFilter","hh","mm","timeHours","timeminutes","cssClass","$q","authInterceptorServiceFactory","request","authData","assign","responseError","rejection","status","removeItem","reject","urlBase","put","FortynineDefaultEvents","sixteenFortyNine","seventeenFortyNine","getDay","IrishLotteryDefaultEvents","resultDtoAdd","eventExtraInfoDto","ballSetId","randomResultChallenge","encodeURIComponent","fromDateParam","toDateString","toDateParam","getUpcomingGames","newGameDto","eventLen","IsDefault","HasLastWeekGameCompleted","zeroPad","num","places","zero","join","param","GetById","getAll","filter","input","service","_publishGameFactory","_newGameFactory","_gameFactory","_$q","utcOffset","deferred","defer","et","dateAndTime","hoursAndMinutes","format","promise","body","document","getElementsByTagName","addEventListener","setTimeout","buttons","getElementsByClassName","parentElement","classList","contains","style","display","LocalStorageService","authentication","authenticationRefresh","authorizationData","_newAdhocGameFactory","$log","SentryService","_appInfoFactory","_$log","Raven","DSN","release","Version","install","_sportCodeFactory"],"mappings":"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","file":"main-04f2b12cb4.js","sourcesContent":["\r\n$.message = function (text, type) {\r\n if (text === undefined || text === null || text === '') {\r\n text = 'An error occured. Could be network related. Please check your network connection.'\r\n }\r\n\r\n if (type == \"error\") {\r\n noty({ text: ' ' + text + '

', type: type, timeout: 2000, layout: 'bottom' });\r\n } else {\r\n noty({ text: ' ' + text, type: type, timeout: 2000, layout: 'bottom' });\r\n }\r\n};\r\n\r\nvar MessageText = {\r\n GameSuccessfullySaved: 'Game saved successfully.',\r\n GameSuccessfullyUpdated: 'Game updated successfully.',\r\n GameSuccessfullyDeleted: 'Game is now deleted.',\r\n GameSuccessfullyCancelled: 'Game is now cancelled.',\r\n GameSuccessfullyVoided: 'Game is void.',\r\n GameSuccessfullyPublished: 'Game is published.',\r\n GameSuccessfullyUnCancelled: 'Game is now un-cancelled.',\r\n GameSuccessfullyCreated: 'Game created successfully.',\r\n\r\n EventSuccessfullySaved: 'Event saved successfully.',\r\n EventSuccessfullyUpdated: 'Event updated successfully.',\r\n EventSuccessfullyDeleted: 'Event is now deleted.',\r\n EventSuccessfullyReleased: 'Event is released.',\r\n EventSuccessfullyActivated: 'Event is active.',\r\n EventSuccessfullyCancelled: 'Event is cancelled.',\r\n EventSuccessfullyStarted: 'Event is started.',\r\n EventSuccessfullyEnded: 'Event has ended.',\r\n EventSuccessfullyVoided: 'Event is void.',\r\n EventSuccessfullySuspended: 'Event suspended.',\r\n EventSuccessfullyChangePending: 'Event change pending.',\r\n\r\n ResultSuccessfullySaved: 'Result saved successfully.',\r\n ResultSuccessfullyPublished: 'Result Published successfully.',\r\n\r\n EventExtraInfoSuccessfullySaved: \"Event Info saved successfully.\",\r\n EventPreDrawCertificateSaved: \"Pre-Draw Certificate saved successfully.\",\r\n\r\n SettingSuccessfullySaved: 'Setting saved successfully.',\r\n SettingSuccessfullyUpdated: 'Setting updated successfully.',\r\n\r\n SportCodeSuccessfullySaved: 'Sport Code saved successfully.',\r\n SportCodeSuccessfullyDeleted: 'Sport Code deleted successfully.'\r\n};\r\n\r\nvar MessageType = {\r\n Success: \"success\",\r\n Error: \"error\",\r\n Info: \"information\",\r\n Warning: \"warning\"\r\n};\r\n\r\n$.IsStepByStepOn = function() {\r\n var authenticationData = JSON.parse(localStorage.getItem(\"authenticationData\"));\r\n var sportCode = localStorage.getItem(\"sportCode\");\r\n\r\n if (authenticationData === null || authenticationData === undefined) return false;\r\n if (sportCode === null || sportCode === undefined) return false;\r\n\r\n if (sportCode === \"IL\") return false;\r\n if (authenticationData.steps === true) return true;\r\n\r\n else return false;\r\n}; \r\n","var common = angular.module(\"common\", []);\r\n\r\ncommon.run(['sentryService', function (sentryService) {\r\n sentryService.init();\r\n}]);\r\n","var dialogs = angular.module('dialogs', ['ui.bootstrap.modal']);\r\n\r\n\r\n\r\n\r\n","var NumbersEditor = angular.module(\"NumbersEditor\", ['common', 'ngRoute', 'ngAnimate', 'ngLocale', 'ngResource', 'ngAnimate', 'ui.bootstrap', 'dialogs', 'angular-loading-bar', 'angularMoment']);\r\n\r\nNumbersEditor.config(['$routeProvider', function ($routeProvider) {\r\n $routeProvider\r\n .when(\"/\",\r\n {\r\n controller: \"HomeController\",\r\n templateUrl: \"/Partials/home.html?v=20200826\"\r\n })\r\n .when(\"/game/:gameId\",\r\n {\r\n controller: \"GameController\",\r\n templateUrl: \"/Partials/game.html?v=20200804\"\r\n })\r\n .when(\"/event/:eventId\",\r\n {\r\n controller: \"EventController\",\r\n templateUrl: \"/Partials/event.html?v=20200916\"\r\n })\r\n .when(\"/add\",\r\n {\r\n controller: \"NewGameController\",\r\n templateUrl: \"/Partials/add.html?v=20200722\"\r\n })\r\n .when(\"/add/:date\",\r\n {\r\n controller: \"NewGameController\",\r\n templateUrl: \"/Partials/add.html\"\r\n })\r\n .when(\"/search\",\r\n {\r\n controller: \"SearchController\",\r\n templateUrl: \"/Partials/search.html?v=20200722\"\r\n })\r\n .when(\"/settings\",\r\n {\r\n controller: \"SettingsController\",\r\n templateUrl: \"/Partials/settings.html\"\r\n })\r\n .when(\"/certificate/:eventId\",\r\n {\r\n controller: \"preDrawCertificateController\",\r\n templateUrl: \"/Partials/preDrawCertificate.html\"\r\n })\r\n .when(\"/postdrawcertificate/:eventId\",\r\n {\r\n controller: \"postDrawCertificateController\",\r\n templateUrl: \"/Partials/postDrawCertificate.html\"\r\n })\r\n .when(\"/predrawweight/:eventId\",\r\n {\r\n controller: \"PreDrawWeightController\",\r\n templateUrl: \"/Partials/preDrawWeight.html\"\r\n })\r\n .when(\"/postdrawweight/:eventId\",\r\n {\r\n controller: \"PostDrawWeightController\",\r\n templateUrl: \"/Partials/postDrawWeight.html\"\r\n })\r\n .when(\"/publishresults/:eventId\",\r\n {\r\n controller: \"PublishResultsController\",\r\n templateUrl: \"/Partials/publishresults.html\"\r\n })\r\n .when(\"/newadhoc\",\r\n {\r\n controller: \"NewAdhocController\",\r\n templateUrl: \"/Partials/newAdhoc.html?v=20200812\"\r\n })\r\n .when(\"/gameedit/:gameId\",\r\n {\r\n controller: \"GameEditController\",\r\n templateUrl: \"/Partials/gameEdit.html?v=20200804\"\r\n })\r\n .when(\"/setupsportcodes\",\r\n {\r\n controller: \"SetupSportCodeController\",\r\n templateUrl: \"/Partials/setupSportCode.html\"\r\n })\r\n .when(\"/sportcodeedit/:sportCode\",\r\n {\r\n controller: \"SportCodeEditController\",\r\n templateUrl: \"/Partials/sportCodeEdit.html?v=20201008\"\r\n })\r\n .when(\"/sportcodeadd\",\r\n {\r\n controller: \"SportCodeEditController\",\r\n templateUrl: \"/Partials/sportCodeEdit.html?v=20201008\"\r\n })\r\n .otherwise({ redirectTo: \"/\" });\r\n}]);\r\n\r\nNumbersEditor.config(['$httpProvider', function ($httpProvider) {\r\n $httpProvider.interceptors.push('AuthInterceptorFactory');\r\n}]);\r\n\r\nNumbersEditor.run(['$rootScope', function ($rootScope) {\r\n $rootScope.SetAppTitle = function (mainTitle, subtitle) {\r\n $rootScope.title = \"Numbers Editor - \" + mainTitle;\r\n $rootScope.subtitle = subtitle;\r\n };\r\n}]);\r\n","angular.module(\"common\").directive('pageFooter', function () {\r\n return {\r\n restrict: 'E',\r\n replace: 'true',\r\n template: '

{{VersionInfo.Product}} v.{{VersionInfo.Version}} ' +\r\n '
© {{VersionInfo.Year}} {{VersionInfo.Company}}.
All rights reserved.
'\r\n }\r\n});","angular.module('common')\r\n .factory('appInfoFactory', ['$http', function ($http) {\r\n function AppInfoFactory($http) {\r\n var self = this;\r\n self._http = $http;\r\n self._baseUrl = '/api/appinfo';\r\n };\r\n\r\n AppInfoFactory.prototype.getDateTime = function() {\r\n var self = this;\r\n return self._http.get(self._baseUrl + \"/today\");\r\n };\r\n\r\n AppInfoFactory.prototype.getApplicationInfo = function () {\r\n var self = this;\r\n return self._http.get(self._baseUrl);\r\n };\r\n\r\n AppInfoFactory.prototype.getSentryInfo = function () {\r\n var self = this;\r\n return self._http.get(self._baseUrl + \"/sentryInfo\");\r\n };\r\n\r\n return new AppInfoFactory($http);\r\n }]);","angular.module('common')\r\n .factory('authFactory',['$http', function($http) {\r\n var authFactory = {};\r\n\r\n authFactory.logOut = function() {\r\n localStorage.clear();\r\n };\r\n\r\n authFactory.login = function (credentials) {\r\n return $http.post('/token', credentials);\r\n }\r\n\r\n authFactory.getUser = function(token) {\r\n return $http.get('/api/user/',\r\n {\r\n headers: {\r\n 'Authorization': 'Bearer ' + token\r\n }\r\n });\r\n };\r\n\r\n authFactory.getUserWithCreds = function (token, credentials) {\r\n return $http.post('/api/userwithcreds/', { Credentials: credentials },\r\n {\r\n headers: {\r\n 'Authorization': 'Bearer ' + token\r\n }\r\n });\r\n };\r\n\r\n authFactory.getCreds = function () {\r\n var authenticationRefreshData = localStorage.getItem(\"authenticationRefreshData\");\r\n if (authenticationRefreshData != null) {\r\n return $http.post('/api/getcreds', { CredsKey: JSON.parse(authenticationRefreshData).credsKey });\r\n }\r\n };\r\n\r\n authFactory.GetAuthenticationData = function() {\r\n var authenticationData = localStorage.getItem(\"authenticationData\");\r\n return JSON.parse(authenticationData);\r\n }\r\n\r\n authFactory.init2ndFactor = function(credentials) {\r\n return $http.post('/api/login/init', credentials);\r\n }\r\n\r\n authFactory.verify2ndFactor = function (credentials) {\r\n return $http.post('/api/login/verify', credentials);\r\n }\r\n\r\n authFactory.getTwoFactorConfig = function () {\r\n return $http.get('/api/login/twofactor');\r\n }\r\n\r\n return authFactory;\r\n }\r\n ]);","angular.module('dialogs')\r\n .controller('confirmDialogCtrl',\r\n [\r\n '$scope', '$modalInstance', 'header', 'msg', 'onYesClick',\r\n function ($scope, $modalInstance, header, msg, onYesClick) {\r\n\r\n $scope.header = (angular.isDefined(header)) ? header : 'Confirmation';\r\n $scope.msg = (angular.isDefined(msg)) ? msg : 'Confirmation required.';\r\n\r\n $scope.no = function () {\r\n $modalInstance.dismiss('no');\r\n };\r\n\r\n $scope.yes = function () {\r\n if (onYesClick)\r\n onYesClick();\r\n $modalInstance.close('yes');\r\n };\r\n }\r\n ]);","angular.module('dialogs')\r\n .controller('confirmResultsDialogCtrl',\r\n [\r\n '$scope', '$modalInstance', 'header', 'msg', 'hasBonusNumber', function ($scope, $modalInstance, header, msg, hasBonusNumber) {\r\n\r\n $scope.header = (angular.isDefined(header)) ? header : 'Confirmation';\r\n $scope.drawResults = msg;\r\n $scope.hasBonusNumber = hasBonusNumber;\r\n console.log($scope.hasBonusNumber);\r\n\r\n $scope.no = function() {\r\n $modalInstance.dismiss('no');\r\n };\r\n\r\n $scope.yes = function() {\r\n $modalInstance.close('yes');\r\n };\r\n }\r\n ]);","angular.module('dialogs')\r\n .controller('DrawApprovalDialogCtrl',\r\n [\r\n '$scope', '$modalInstance', '$routeParams', 'GameFactory',\r\n function ($scope, $modalInstance, $routeParams, gameFactory) {\r\n\r\n init();\r\n\r\n function init() {\r\n gameFactory.GetdrawApprovalDetails($routeParams.gameId)\r\n .success(function (drawApproval) {\r\n $scope.DrawApproval = drawApproval;\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.SiSTechApprove = function () {\r\n gameFactory.SiSTechApprove($routeParams.gameId)\r\n .success(function (result) {\r\n $scope.DrawApproval.SisApproved = result;\r\n\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.AdjudicatorApprove = function () {\r\n gameFactory.AdjudicatorApprove($routeParams.gameId)\r\n .success(function (result) {\r\n $scope.DrawApproval.AdjudicatorApproved = result;\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.no = function () {\r\n $modalInstance.dismiss('no');\r\n };\r\n\r\n $scope.yes = function () {\r\n $modalInstance.close('yes');\r\n };\r\n }\r\n ]);","angular.module('dialogs')\r\n .controller('EventInfoDialogCtrl',\r\n [\r\n '$scope', '$modalInstance', '$routeParams', 'EventFactory', 'sportCode',\r\n function ($scope, $modalInstance, $routeParams, eventFactory, sportCode) {\r\n\r\n init();\r\n\r\n function init() {\r\n $scope.SportCode = sportCode === \"49\" ? \"49\" : \"Irish Lottery\";\r\n eventFactory.GetEventExtraInfo($routeParams.eventId, 0)\r\n .success(function (data) {\r\n $scope.EventExtraInfo = data;\r\n $scope.SelectedBallSet = parseInt(data.SetOfBalls);\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.Save = function () {\r\n eventFactory.SaveEventExtraInfo($routeParams.eventId, $scope.EventExtraInfo)\r\n .success(function () {\r\n $modalInstance.close('yes');\r\n $.message(MessageText.EventExtraInfoSuccessfullySaved, MessageType.Success);\r\n })\r\n .error(function (error) {\r\n $modalInstance.close('yes');\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.no = function () {\r\n $modalInstance.dismiss('no');\r\n };\r\n\r\n $scope.Cancel = function () {\r\n $modalInstance.close('yes');\r\n };\r\n\r\n $scope.UpdateBallSet = function (selectedBallSet) {\r\n eventFactory.GetEventExtraInfo($routeParams.eventId, parseInt(selectedBallSet))\r\n .success(function (data) {\r\n $scope.EventExtraInfo = data;\r\n $scope.SelectedBallSet = selectedBallSet;\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n }\r\n ]);","angular.module('dialogs')\r\n .controller('InformationDialogCtrl',\r\n [\r\n '$scope', '$modalInstance', 'eventId', '$location', 'gameId', '$routeParams',\r\n function ($scope, $modalInstance, eventId, $location, gameId, $routeParams) {\r\n\r\n $scope.DisplayContinueToPublishResultButton = $.IsStepByStepOn();\r\n\r\n $scope.ContinueToPublishResult = function () {\r\n $modalInstance.dismiss('no');\r\n $location.path(\"publishresults/\" + eventId)\r\n .search({\r\n sportCode: $routeParams.sportCode,\r\n startDate: $routeParams.startDate,\r\n gameId: gameId,\r\n no: $routeParams.no\r\n });\r\n };\r\n\r\n $scope.no = function () {\r\n $modalInstance.dismiss('no');\r\n };\r\n }\r\n ]);","angular.module('dialogs')\r\n .controller('PreDrawCertificateDialogCtrl',\r\n [\r\n '$scope', '$modalInstance', '$routeParams', 'EventFactory', 'appInfoFactory',\r\n function ($scope, $modalInstance, $routeParams, eventFactory, appInfoFactory) {\r\n\r\n function newPreDrawCertificate() {\r\n $scope.PreDrawCertificate = {\r\n AdjudicatorName: \"\",\r\n InitialsForQ1: \"\",\r\n InitialsForQ2: \"\",\r\n InitialsForQ3: \"\",\r\n InitialsForQ4: \"\",\r\n InitialsForQ5: \"\",\r\n InitialsForQ6: \"AUTO\",\r\n InitialsForQ7: \"\",\r\n Q8DrawFirst: \"\",\r\n Q8DrawSecond: \"\",\r\n Q8DrawThrird: \"\",\r\n Q8DrawFourth: \"\",\r\n Q8DrawFifth: \"\",\r\n Q8DrawSixth: \"\",\r\n Q8DrawBooster: \"\",\r\n Q8DrawHour: \"\",\r\n Q8DrawMinute: \"\",\r\n Q8DrawSeconds: \"\",\r\n InitialsForQ9: \"\",\r\n Q10Comments: \"\",\r\n SignedForDeloitte: \"\",\r\n SignedForSis: \"\",\r\n InitialsForQ3B: \"\"\r\n }\r\n\r\n appInfoFactory.getDateTime()\r\n .success(function (dateTime) {\r\n var today = new Date(JSON.parse(dateTime));\r\n $scope.PreDrawCertificate.CertificationDate = today;\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n }\r\n\r\n function mapPreDrawCertificate(preDrawCertificate) {\r\n $scope.PreDrawCertificate = {\r\n AdjudicatorName: preDrawCertificate.AdjudicatorName,\r\n CertificationDate: preDrawCertificate.CertificationDate,\r\n InitialsForQ1: preDrawCertificate.InitialsForQ1,\r\n InitialsForQ2: preDrawCertificate.InitialsForQ2,\r\n InitialsForQ3: preDrawCertificate.InitialsForQ3,\r\n InitialsForQ4: preDrawCertificate.InitialsForQ4,\r\n InitialsForQ5: preDrawCertificate.InitialsForQ5,\r\n InitialsForQ6: preDrawCertificate.InitialsForQ6,\r\n InitialsForQ7: preDrawCertificate.InitialsForQ7,\r\n Q8DrawFirst: preDrawCertificate.Q8DrawFirst,\r\n Q8DrawSecond: preDrawCertificate.Q8DrawSecond,\r\n Q8DrawThrird: preDrawCertificate.Q8DrawThrird,\r\n Q8DrawFourth: preDrawCertificate.Q8DrawFourth,\r\n Q8DrawFifth: preDrawCertificate.Q8DrawFifth,\r\n Q8DrawSixth: preDrawCertificate.Q8DrawSixth,\r\n Q8DrawBooster: preDrawCertificate.Q8DrawBooster,\r\n Q8DrawHour: preDrawCertificate.Q8DrawHour,\r\n Q8DrawMinute: (\"0\" + preDrawCertificate.Q8DrawMinute).slice(-2),\r\n Q8DrawSeconds: (\"0\" + preDrawCertificate.Q8DrawSeconds).slice(-2),\r\n InitialsForQ9: preDrawCertificate.InitialsForQ9,\r\n Q10Comments: preDrawCertificate.Q10Comments,\r\n SignedForDeloitte: preDrawCertificate.SignedForDeloitte,\r\n SignedForSis: preDrawCertificate.SignedForSis,\r\n InitialsForQ3B: preDrawCertificate.InitialsForQ3B\r\n }\r\n }\r\n\r\n function getPreDrawCertificate() {\r\n eventFactory.GetPreDrawCertificate($routeParams.eventId)\r\n .success(function (preDrawCertificate) {\r\n if (preDrawCertificate === \"null\")\r\n newPreDrawCertificate();\r\n else\r\n mapPreDrawCertificate(preDrawCertificate);\r\n })\r\n .error(function (error) { $.message(error.ExceptionMessage, MessageType.Error); });\r\n }\r\n\r\n function init() {\r\n getPreDrawCertificate();\r\n }\r\n\r\n init();\r\n\r\n $scope.no = function () {\r\n $modalInstance.dismiss('no');\r\n };\r\n\r\n $scope.setFormScope = function (scope) {\r\n this.formScope = scope;\r\n }\r\n\r\n $scope.SavePreDrawCertificate = function () {\r\n eventFactory.SavePreDrawCertificate($routeParams.eventId, $scope.PreDrawCertificate)\r\n .success(function (event) {\r\n $modalInstance.dismiss('no');\r\n $.message(MessageText.EventPreDrawCertificateSaved, MessageType.Success);\r\n })\r\n .error(function (error) {\r\n if (error.ModelState) $.message(JSON.stringify(error.ModelState), MessageType.Error);\r\n else $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n }\r\n }\r\n ]);","angular.module('dialogs')\r\n .controller('ReleaseTimeDialogCtrl',\r\n [\r\n '$scope', '$modalInstance', '$dialogs', '$routeParams', \"EventFactory\", \"$route\", \"$timeout\", \"appInfoFactory\", 'moment',\r\n function ($scope, $modalInstance, $dialogs, $routeParams, eventFactory, $route, $timeout, appInfoFactory, moment) {\r\n\r\n var sportcode = $(\"#sportcode\").val();\r\n\r\n //function convertUtcDateToLocalDate(date) {\r\n // var newDate = new Date(date.getTime() + date.getTimezoneOffset() * 60 * 1000);\r\n\r\n // var offset = date.getTimezoneOffset() / 60;\r\n // var hours = date.getHours();\r\n\r\n // newDate.setHours(hours - offset);\r\n\r\n // return newDate;\r\n //};\r\n\r\n function setReleaseTimeScope() {\r\n var releaseTime = $(\"#event-release-time\").text().trim();\r\n if (releaseTime === \"00:00:00\") {\r\n $scope.releasedTime = {\r\n hours: \"\",\r\n minutes: \"\",\r\n seconds: \"\"\r\n }\r\n } else {\r\n var releasedTimeAry = releaseTime.split(\":\");\r\n\r\n $scope.releasedTime = {\r\n hours: releasedTimeAry[0],\r\n minutes: releasedTimeAry[1],\r\n seconds: releasedTimeAry[2]\r\n }\r\n }\r\n }\r\n\r\n setReleaseTimeScope();\r\n\r\n $scope.Release = function () {\r\n $modalInstance.dismiss('no');\r\n var releasetime = $scope.releasedTime.hours +\r\n \":\" +\r\n $scope.releasedTime.minutes +\r\n \":\" +\r\n $scope.releasedTime.seconds;\r\n var dialog;\r\n\r\n appInfoFactory.getDateTime()\r\n .success(function (dateTime) {\r\n var today = new Date(JSON.parse(dateTime));\r\n today.setHours($scope.releasedTime.hours);\r\n today.setMinutes($scope.releasedTime.minutes);\r\n today.setSeconds($scope.releasedTime.seconds);\r\n\r\n var scheduled = new Date(Date.parse($(\"#hdnEventTime\").val()));\r\n scheduled.setMinutes(scheduled.getMinutes() + scheduled.getTimezoneOffset());\r\n\r\n var scheduledTime = scheduled.getTime();\r\n var actualTime = today.getTime();\r\n\r\n if (actualTime < scheduledTime)\r\n dialog = $dialogs.confirm('Please Confirm',\r\n 'Are you sure you want to release this event at ' +\r\n releasetime +\r\n ', before the scheduled release time?');\r\n else\r\n dialog = $dialogs.confirm('Please Confirm',\r\n 'Release Time ' + releasetime + ' Are you sure?');\r\n\r\n dialog.result.then(function (btn) {\r\n\r\n const releaseTimeDate = moment.tz(moment.tz.guess());\r\n releaseTimeDate.set('hour', parseInt($scope.releasedTime.hours));\r\n releaseTimeDate.set('minute', parseInt($scope.releasedTime.minutes));\r\n releaseTimeDate.set('second', parseInt($scope.releasedTime.seconds));\r\n\r\n //var date = new Date(1970,\r\n // 00,\r\n // 01,\r\n // $scope.releasedTime.hours,\r\n // $scope.releasedTime.minutes,\r\n // $scope.releasedTime.seconds);\r\n\r\n debugger;\r\n //var x = convertUtcDateToLocalDate(date);\r\n\r\n //eventFactory.Release($routeParams.eventId, date.getTime())\r\n eventFactory.Release($routeParams.eventId, releaseTimeDate.valueOf())\r\n .success(function (event) {\r\n $route.reload();\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n });\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.ResetReleaseTime = function () {\r\n setReleaseTimeScope();\r\n this.formScope.releasetimeForm.$setPristine();\r\n };\r\n\r\n $scope.no = function () {\r\n $modalInstance.dismiss('no');\r\n };\r\n\r\n $scope.setFormScope = function (scope) {\r\n this.formScope = scope;\r\n }\r\n }\r\n ]);","angular.module('dialogs')\r\n .factory('$dialogs',\r\n [\r\n '$modal', function($modal) {\r\n\r\n var $dialogs = {};\r\n\r\n $dialogs.confirm = function(header, msg, onYesClick) {\r\n return $modal.open({\r\n templateUrl: '/dialogs/confirmDialog.html',\r\n controller: 'confirmDialogCtrl',\r\n resolve: {\r\n header: function() { return angular.copy(header); },\r\n msg: function() { return angular.copy(msg); },\r\n onYesClick: function() { return angular.copy(onYesClick); }\r\n }\r\n });\r\n };\r\n\r\n $dialogs.EventInfo = function(sportCode) {\r\n return $modal.open({\r\n templateUrl: '/dialogs/EventInfoDialog.html',\r\n controller: 'EventInfoDialogCtrl',\r\n resolve: {\r\n sportCode: function() { return angular.copy(sportCode); }\r\n }\r\n });\r\n };\r\n\r\n $dialogs.DrawApproval = function() {\r\n return $modal.open({\r\n templateUrl: '/dialogs/DrawApprovalDialog.html',\r\n controller: 'DrawApprovalDialogCtrl'\r\n });\r\n };\r\n\r\n $dialogs.Information = function(eventId, gameId) {\r\n return $modal.open({\r\n templateUrl: '/dialogs/InfomationDialog.html',\r\n controller: 'InformationDialogCtrl',\r\n resolve: {\r\n eventId: function() { return angular.copy(eventId); },\r\n gameId: function() { return angular.copy(gameId); }\r\n }\r\n });\r\n };\r\n\r\n $dialogs.ReleaseTime = function() {\r\n return $modal.open({\r\n templateUrl: \"/dialogs/ReleaseTimeDialog.html\",\r\n controller: \"ReleaseTimeDialogCtrl\"\r\n });\r\n };\r\n\r\n $dialogs.PreDrawCertificate = function() {\r\n return $modal.open({\r\n templateUrl: '/dialogs/PreDrawCertificateDialog.html',\r\n controller: 'PreDrawCertificateDialogCtrl'\r\n });\r\n };\r\n\r\n $dialogs.confirmResults = function(header, msg, hasBonusNumber) {\r\n return $modal.open({\r\n templateUrl: '/dialogs/confirmResultsDialog.html?v=20200820',\r\n controller: 'confirmResultsDialogCtrl',\r\n resolve: {\r\n header: function() { return angular.copy(header); },\r\n msg: function () { return angular.copy(msg); },\r\n hasBonusNumber: function () { return angular.copy(hasBonusNumber); }\r\n }\r\n });\r\n };\r\n\r\n return $dialogs;\r\n }\r\n ]);\r\n","angular.module('NumbersEditor').controller('EventController', [\r\n '$scope', 'EventFactory', '$routeParams', '$rootScope', '$filter', '$dialogs', 'authFactory', 'GameFactory', '$location', 'appInfoFactory',\r\n function ($scope, eventFactory, $routeParams, $rootScope, $filter, $dialogs, authFactory, gameFactory, $location, appInfoFactory) {\r\n\r\n function setDatesForAuthorization() {\r\n if ($scope.Event == null) return;\r\n\r\n var eventStartDate = new Date($scope.Event.EventTime);\r\n eventStartDate.setHours(0, 0, 0, 0);\r\n $scope.EventStartDate = eventStartDate;\r\n\r\n appInfoFactory.getDateTime().success(function (dateTime) {\r\n var today = new Date(JSON.parse(dateTime));\r\n today.setHours(0, 0, 0, 0);\r\n $scope.Today = today;\r\n\r\n var tomorrow = new Date(today.getTime());\r\n tomorrow.setDate(tomorrow.getDate() + 1);\r\n tomorrow.setHours(0, 0, 0, 0);\r\n $scope.Tomorrow = tomorrow;\r\n\r\n var yesterday = new Date(today.getTime());\r\n yesterday.setDate(yesterday.getDate() - 1);\r\n yesterday.setHours(0, 0, 0, 0);\r\n $scope.Yesterday = yesterday;\r\n\r\n var daybeforeyesterday = new Date(today.getTime());\r\n daybeforeyesterday.setDate(daybeforeyesterday.getDate() - 2);\r\n daybeforeyesterday.setHours(0, 0, 0, 0);\r\n $scope.DayBeforeYesterday = daybeforeyesterday;\r\n }).error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n function isTomorrowGame() {\r\n return $scope.Tomorrow && $scope.EventStartDate.valueOf() >= $scope.Tomorrow.valueOf();\r\n }\r\n\r\n function isTodayGame() {\r\n return $scope.Today && $scope.EventStartDate.valueOf() == $scope.Today.valueOf();\r\n };\r\n\r\n function isYesterdayGame() {\r\n return $scope.Yesterday && $scope.EventStartDate.valueOf() == $scope.Yesterday.valueOf();\r\n };\r\n\r\n function isDayBeforeYesterday() {\r\n return $scope.DayBeforeYesterday && $scope.EventStartDate.valueOf() <= $scope.DayBeforeYesterday.valueOf();\r\n };\r\n\r\n function generateDrawNumberList() {\r\n\r\n var drawNumberList = Enumerable.From($scope.Event.ResultPlaces)\r\n //.Where(function (x) { return x.BonusNumber == \"N\"; })\r\n .OrderBy(function (x) { return x.DrawnOrder; })\r\n .Select(function (x) { return x.Drawn; }).ToArray();\r\n return drawNumberList;\r\n\r\n /*var bonusNumber = Enumerable.From($scope.Event.ResultPlaces)\r\n .Where(function (x) { return x.BonusNumber == \"Y\"; })\r\n .Select(function (x) { return x.Drawn; }).ToArray();\r\n\r\n return drawNumberList.toString() + \" Bonus \" + bonusNumber.toString();*/\r\n };\r\n\r\n function getEvent() {\r\n eventFactory.GetEvent($routeParams.eventId)\r\n .success(function (event) {\r\n $scope.Event = event;\r\n bindDefaultResultPlaces();\r\n setupNavPills();\r\n $scope.Event.ResultPlaces.IsValid = true;\r\n setDatesForAuthorization();\r\n $rootScope.SetAppTitle(\"Event\", getSubTitle());\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n }\r\n\r\n function bindDefaultResultPlaces() {\r\n\r\n if ($scope.Event.ResultPlaces.length == 0) {\r\n for (var i = 0; i < $scope.Event.Game.ResultPlaces; i++) {\r\n var resultPlace = {\r\n DrawnOrder: i + 1,\r\n Drawn: null,\r\n BonusNumber: \"N\",\r\n IsValid: true\r\n };\r\n $scope.Event.ResultPlaces.push(resultPlace);\r\n\r\n }\r\n if ($scope.Event.BonusNumber === 'Y') {\r\n var bonusResultPlace = {\r\n DrawnOrder: 0,\r\n Drawn: null,\r\n BonusNumber: \"Y\",\r\n IsValid: true\r\n };\r\n $scope.Event.ResultPlaces.push(bonusResultPlace);\r\n }\r\n }\r\n };\r\n\r\n function setupNavPills() {\r\n\r\n $scope.NavPills = new Array();\r\n var lightWeightEvents = $scope.Event.LightWeightEvents;\r\n\r\n if ($scope.Event.SportCode === \"IL\") {\r\n lightWeightEvents.sort(function (a, b) { return b.Id - a.Id; });\r\n }\r\n\r\n for (var i = 0; i < lightWeightEvents.length; i++) {\r\n var active = \"\";\r\n if (lightWeightEvents[i].Id === parseInt($routeParams.eventId))\r\n active = \"event-navigation__pill--active active\";\r\n\r\n var eventName = lightWeightEvents[i].Title === null ? \"Event \" + (i + 1) : lightWeightEvents[i].Title;\r\n if ($scope.Event.SportCode === \"49\" && i === 0) {\r\n eventName = \"Lunch Time\";\r\n } else if ($scope.Event.SportCode === \"49\" && i === 1) {\r\n eventName = \"Tea Time\";\r\n }\r\n\r\n var navPill = {\r\n EventId: lightWeightEvents[i].Id,\r\n EventName: eventName,\r\n URL: \"#event/\" + lightWeightEvents[i].Id + \"?sportCode=\" + $routeParams.sportCode + \"&startDate=\" + $routeParams.startDate + \"&no=\" + (i + 1),\r\n CssClass: active\r\n }\r\n $scope.NavPills.push(navPill);\r\n }\r\n };\r\n\r\n function getSubTitle() {\r\n var manageEvent = \"Manage Event\";\r\n var date = $filter(\"date\")($scope.Event.EventTime, \"fullDate\");\r\n\r\n return $scope.Event.Game.Description + \" - \" + manageEvent + \" (\" + date + \")\";\r\n }\r\n\r\n function isTodayOrYesterdayGame() {\r\n return $scope.Event != null\r\n && !isTomorrowGame()\r\n && !isDayBeforeYesterday()\r\n && (isTodayGame() || isYesterdayGame())\r\n }\r\n\r\n function isBroadcastNotStarted() {\r\n return $scope.Event.BroadcastStatus == null\r\n }\r\n\r\n function isBroadcasting() {\r\n return $scope.Event.BroadcastStatus == \"S\"\r\n }\r\n\r\n function init() {\r\n $scope.releasedTime = {\r\n hours: \"\",\r\n minutes: \"\",\r\n seconds: \"\"\r\n }\r\n $scope.isAdmin = authFactory.GetAuthenticationData().isAdmin;\r\n $scope.isTechSuper = authFactory.GetAuthenticationData().isTechSuper;\r\n getEvent();\r\n }\r\n\r\n $scope.IsStepByStepOn = $.IsStepByStepOn();\r\n $scope.DisplayEventInfoButton = $scope.IsStepByStepOn === false;\r\n\r\n if ($scope.IsStepByStepOn) {\r\n eventFactory.GetPreDrawValidation($routeParams.eventId)\r\n .success(function (preDrawValidation) {\r\n $scope.DisplayNavigateToPublishResultPageButton = preDrawValidation.HasResulted || preDrawValidation.HasResultPublished;\r\n if (preDrawValidation.HasPreDrawWeightCompleted === false) {\r\n $location.path(\"/predrawweight/\" + $routeParams.eventId);\r\n } else if (preDrawValidation.HasPreDrawWeightCompleted === true && preDrawValidation.HasPreDrawCertificateCompleted === false) {\r\n $location.path(\"/certificate/\" + $routeParams.eventId);\r\n } else if (preDrawValidation.HasPreDrawWeightCompleted === true && preDrawValidation.HasPreDrawCertificateCompleted === true) {\r\n init();\r\n }\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n } else {\r\n init();\r\n }\r\n\r\n\r\n $scope.Active = function () {\r\n var dlg = $dialogs.confirm('Please Confirm', 'Are you sure you want to Active this event?');\r\n dlg.result.then(function (btn) {\r\n eventFactory.Active($routeParams.eventId)\r\n .success(function () {\r\n $scope.Event.ReleaseTime = null;\r\n $scope.Event.Status = \"A\";\r\n $scope.Event.statusMessage = \"Active\";\r\n $.message(MessageText.EventSuccessfullyActivated, MessageType.Success);\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n });\r\n };\r\n $scope.CanActive = function () {\r\n if ($scope.Event == null) return false;\r\n return ($scope.Event.Status == \"I\" || $scope.Event.Status == \"C\" || $scope.Event.Status == \"O\" || $scope.Event.Status == \"S\");\r\n };\r\n\r\n $scope.CanRelease = function () {\r\n if (isTodayOrYesterdayGame()) {\r\n if ($scope.Event.Status === \"I\" || $scope.Event.Status === \"R\" || $scope.Event.Status === \"V\" || $scope.Event.Status === \"C\") {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n $scope.CanStartBroadcast = function () {\r\n const allowedToStartStatusCodes = [\"I\", \"A\", \"O\"]\r\n return isTodayOrYesterdayGame()\r\n && allowedToStartStatusCodes.indexOf($scope.Event.Status) != -1\r\n && isBroadcastNotStarted()\r\n };\r\n\r\n $scope.CanEndBroadcast = function () {\r\n return isTodayOrYesterdayGame() && isBroadcasting()\r\n };\r\n\r\n $scope.StartBroadcast = function () {\r\n eventFactory.StartBroadcast($routeParams.eventId)\r\n .success(function () {\r\n $scope.Event.BroadcastStatus = \"S\";\r\n $.message(MessageText.EventSuccessfullyStarted, MessageType.Success);\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.EndBroadcast = function () {\r\n eventFactory.EndBroadcast($routeParams.eventId)\r\n .success(function () {\r\n $scope.Event.BroadcastStatus = \"C\";\r\n $.message(MessageText.EventSuccessfullyEnded, MessageType.Success);\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.Cancel = function () {\r\n var dlg = $dialogs.confirm('Please Confirm', 'Are you sure you want to cancel this event?');\r\n dlg.result.then(function (btn) {\r\n eventFactory.Cancel($routeParams.eventId)\r\n .success(function () {\r\n $scope.Event.Status = \"C\";\r\n $scope.Event.statusMessage = \"Cancelled\";\r\n $.message(MessageText.EventSuccessfullyCancelled, MessageType.Success);\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n });\r\n\r\n };\r\n $scope.CanCancel = function () {\r\n if ($scope.Event == null) return false;\r\n if (isDayBeforeYesterday()) return false;\r\n\r\n if (isTodayGame() || isYesterdayGame() || isTomorrowGame()) {\r\n return ($scope.Event.Status == \"A\");\r\n }\r\n\r\n return false;\r\n\r\n };\r\n\r\n $scope.Suspend = function () {\r\n var dlg = $dialogs.confirm('Please Confirm', 'Are you sure you want to suspend this event?');\r\n dlg.result.then(function (btn) {\r\n eventFactory.Suspend($routeParams.eventId)\r\n .success(function () {\r\n $scope.Event.Status = \"S\";\r\n $scope.Event.statusMessage = \"Suspended\";\r\n $scope.Event.ReleaseTime = null;\r\n $.message(MessageText.EventSuccessfullySuspended, MessageType.Success);\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n });\r\n };\r\n $scope.CanSuspend = function () {\r\n if ($scope.Event == null) return false;\r\n if (isTomorrowGame()) return false;\r\n if (isTodayGame() || isYesterdayGame()) {\r\n return ($scope.Event.Status == \"O\");\r\n }\r\n if (isDayBeforeYesterday() && $scope.isAdmin) {\r\n return ($scope.Event.Status == \"O\");\r\n }\r\n\r\n return false;\r\n };\r\n\r\n $scope.ChangePending = function () {\r\n var dlg = $dialogs.confirm('Please Confirm', 'Are you sure you want to change the status of this event to Change Pending?');\r\n dlg.result.then(function (btn) {\r\n eventFactory.ChangePending($routeParams.eventId)\r\n .success(function () {\r\n $scope.DisplayNavigateToPublishResultPageButton = false;\r\n $scope.Event.Status = \"P\";\r\n $scope.Event.statusMessage = \"Change Pending\";\r\n $.message(MessageText.EventSuccessfullyChangePending, MessageType.Success);\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n });\r\n };\r\n $scope.CanChangePending = function () {\r\n if ($scope.Event == null) return false;\r\n if (isTomorrowGame()) return false;\r\n\r\n if (isTodayGame() || isYesterdayGame()) {\r\n return ($scope.Event.Status == \"R\");\r\n }\r\n\r\n if (isDayBeforeYesterday() && $scope.isAdmin) {\r\n return ($scope.Event.Status == \"R\");\r\n }\r\n\r\n return false;\r\n\r\n };\r\n\r\n $scope.Void = function () {\r\n var dlg = $dialogs.confirm('Please Confirm', 'Are you sure you want to void this event?');\r\n dlg.result.then(function (btn) {\r\n eventFactory.Void($routeParams.eventId)\r\n .success(function () {\r\n $scope.Event.Status = \"V\";\r\n $scope.Event.statusMessage = \"Void\";\r\n $.message(MessageText.EventSuccessfullyVoided, MessageType.Success);\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n });\r\n };\r\n $scope.CanVoid = function () {\r\n if ($scope.Event == null) return false;\r\n if (isTomorrowGame()) return false;\r\n if ($scope.isAdmin === false) return false;\r\n\r\n if (isTodayGame() || isYesterdayGame() || isDayBeforeYesterday()) {\r\n return ($scope.Event.Status === \"A\" || $scope.Event.Status === \"P\" || $scope.Event.Status === \"S\");\r\n }\r\n\r\n return false;\r\n };\r\n\r\n $scope.SaveResult = function () {\r\n var drawNumbers = generateDrawNumberList();\r\n var dlg = $dialogs.confirmResults('Please Confirm', drawNumbers, $scope.Event.BonusNumber);\r\n\r\n dlg.result.then(function (btn) {\r\n eventFactory.SaveResult($routeParams.eventId, $scope.Event.ResultPlaces)\r\n .success(function (event) {\r\n $scope.Event = event;\r\n $scope.Event.ResultPlaces.IsValid = true;\r\n $dialogs.Information($routeParams.eventId, $scope.Event.GameId);\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n });\r\n };\r\n $scope.CanResult = function () {\r\n if ($scope.Event == null) return false;\r\n if (isTomorrowGame()) return false;\r\n\r\n if (isTodayGame() || isYesterdayGame()) {\r\n return ($scope.Event.Status == \"O\" || $scope.Event.Status == \"P\" || $scope.Event.Status == \"X\");\r\n }\r\n if (isDayBeforeYesterday() && $scope.isAdmin) {\r\n return ($scope.Event.Status == \"O\" || $scope.Event.Status == \"P\");\r\n }\r\n return false;\r\n\r\n }\r\n\r\n $scope.validate = function () {\r\n\r\n $scope.Event.ResultPlaces.IsValid = true;\r\n for (var k = 0; k < $scope.Event.ResultPlaces.length; k++) {\r\n $scope.Event.ResultPlaces[k].IsValid = true;\r\n }\r\n\r\n var notNullResultPlaces = Enumerable.From($scope.Event.ResultPlaces)\r\n .Where(function (x) { return x.Drawn != null; })\r\n .ToArray();\r\n\r\n for (var i = 0; i < notNullResultPlaces.length; i++) {\r\n\r\n var resultPlace = notNullResultPlaces[i];\r\n resultPlace.ErrorMessage = \"\";\r\n resultPlace.IsValid = true;\r\n\r\n if (isNaN(resultPlace.Drawn) === true) {\r\n resultPlace.ErrorMessage = \"Result is not a number\";\r\n resultPlace.IsValid = false;\r\n $scope.Event.ResultPlaces.IsValid = false;\r\n }\r\n\r\n var drawNumber = parseInt(resultPlace.Drawn);\r\n if (drawNumber < $scope.Event.Minima || drawNumber > $scope.Event.Maxima) {\r\n resultPlace.ErrorMessage = \"Result not in the expected range\";\r\n resultPlace.IsValid = false;\r\n $scope.Event.ResultPlaces.IsValid = false;\r\n }\r\n\r\n var resultPlaces = Enumerable.From($scope.Event.ResultPlaces)\r\n .Where(function (x) { return x.DrawnOrder != resultPlace.DrawnOrder && x.Drawn != null; })\r\n .ToArray();\r\n\r\n for (var j = 0; j < resultPlaces.length; j++) {\r\n if (resultPlaces[j].Drawn == drawNumber) {\r\n resultPlace.ErrorMessage = \"Duplicate result places are not allowed\";\r\n resultPlace.IsValid = false;\r\n $scope.Event.ResultPlaces.IsValid = false;\r\n }\r\n }\r\n }\r\n };\r\n $scope.GoHome = function () {\r\n $location.path(\"game/\" + $scope.Event.GameId).search({ sportCode: $scope.Event.SportCode, startDate: $scope.Event.EventTime });\r\n };\r\n\r\n $scope.ShowEventInfoModal = function () {\r\n $dialogs.EventInfo($scope.Event.SportCode);\r\n };\r\n\r\n $scope.ShowReleaseTimeModal = function () {\r\n $dialogs.ReleaseTime();\r\n };\r\n\r\n $scope.ShowPreDrawCertificateModal = function () {\r\n $dialogs.PreDrawCertificate();\r\n }\r\n\r\n $scope.GoToPublishResult = function () {\r\n $location.path(\"publishresults/\" + $routeParams.eventId).search({ sportCode: $routeParams.sportCode, startDate: $routeParams.startDate, gameId: $routeParams.gameId, no: $routeParams.no });\r\n }\r\n\r\n\r\n }\r\n]);","angular.module('common').controller('FooterController', ['$scope', 'appInfoFactory',\r\n function ($scope, appInfoFactory) {\r\n\r\n appInfoFactory.getApplicationInfo()\r\n .success(function (result) {\r\n $scope.VersionInfo = result;\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n }\r\n]); ","angular.module('NumbersEditor').controller('GameController', [\r\n '$scope', '$routeParams', 'GameFactory', '$location', '$rootScope', '$filter', 'NewGameFactory', 'EventFactory', 'PublishGameFactory', '$dialogs', 'authFactory', '$route', 'gameService',\r\n function ($scope, $routeParams, gameFactory, $location, $rootScope, $filter, newGameFactory, eventFactory, publishGameFactory, $dialogs, authFactory, $route, gameService) {\r\n\r\n function getGame(gameId, sportCode, startDate) {\r\n gameService.getGame(gameId, sportCode, startDate)\r\n .then(function (game) {\r\n $scope.Game = game;\r\n console.log(game);\r\n })\r\n .catch(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n function convertUtcDateToLocalDate(date) {\r\n var newDate = new Date(date.getTime() + date.getTimezoneOffset() * 60 * 1000);\r\n\r\n var offset = date.getTimezoneOffset() / 60;\r\n var hours = date.getHours();\r\n\r\n newDate.setHours(hours - offset);\r\n\r\n return newDate;\r\n };\r\n\r\n function hasLunchTimeDrawCompletedFor49S(id, number) {\r\n if ($routeParams.sportCode === \"49\" && number === 2) { // user trying to access tea time draw for 49.\r\n // Lunch time draw must be completed\r\n var lunchTimeDrawStatus = $scope.Game.Events[0].Status;\r\n if (lunchTimeDrawStatus === \"A\" || lunchTimeDrawStatus === \"P\" || lunchTimeDrawStatus === \"O\" || lunchTimeDrawStatus === \"X\")\r\n return false; // Active / Pending Changes/ Offed/ Resulted but not yet publish\r\n }\r\n return true;\r\n }\r\n\r\n function init() {\r\n $rootScope.SetAppTitle(\"Game\", \"Manage Game\");\r\n $scope.isAdmin = authFactory.GetAuthenticationData().isAdmin;\r\n $scope.isTechSuper = authFactory.GetAuthenticationData().isTechSuper;\r\n getGame($routeParams.gameId, $routeParams.sportCode, $routeParams.startDate);\r\n localStorage.setItem(\"GameId\", $routeParams.gameId);\r\n localStorage.setItem(\"sportCode\", $routeParams.sportCode);\r\n };\r\n\r\n init();\r\n\r\n $scope.PublishGame = function () {\r\n gameService.publishGame($routeParams.gameId)\r\n .success(function (game) {\r\n $.message(MessageText.GameSuccessfullyPublished, MessageType.Success);\r\n $scope.Game = game;\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n $scope.IsPublished = function () {\r\n if ($scope.Game == null) return false;\r\n return !($scope.Game.PublicationStamp == null);\r\n };\r\n\r\n $scope.CancelGame = function () {\r\n var dlg = $dialogs.confirm('Please Confirm', 'Are you sure you want to cancel this game?');\r\n dlg.result.then(function (btn) {\r\n gameFactory.CancelGame($routeParams.gameId)\r\n .success(function (game) {\r\n $scope.Game = game;\r\n $.message(MessageText.GameSuccessfullyCancelled, MessageType.Success);\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n });\r\n\r\n };\r\n $scope.CanCancelGame = function () {\r\n if ($scope.Game == null) return false;\r\n\r\n var activeEvents = Enumerable.From($scope.Game.Events)\r\n .Where(function (x) { return x.Status == \"A\"; })\r\n .Count();\r\n\r\n if ($scope.Game.Status == \"O\" && $scope.Game.Events.length == activeEvents) return true;\r\n return false;\r\n };\r\n\r\n $scope.UnCancelGame = function () {\r\n gameFactory.UnCancelGame($routeParams.gameId)\r\n .success(function (game) {\r\n $scope.Game = game;\r\n $.message(MessageText.GameSuccessfullyUnCancelled, MessageType.Success);\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n $scope.CanUnCancelGame = function () {\r\n if ($scope.Game == null) return false;\r\n if ($scope.Game.Status === \"C\") return true;\r\n return false;\r\n };\r\n\r\n $scope.VoidGame = function () {\r\n var dlg = $dialogs.confirm('Please Confirm', 'Are you sure you want to void this game?');\r\n dlg.result.then(function (btn) {\r\n gameFactory.VoidGame($routeParams.gameId)\r\n .success(function (game) {\r\n $scope.Game = game;\r\n $.message(MessageText.GameSuccessfullyVoided, MessageType.Success);\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n });\r\n };\r\n $scope.CanVoidGame = function () {\r\n\r\n if ($scope.Game == null) return false;\r\n if ($scope.isAdmin === false) return false;\r\n\r\n var eventCount = $scope.Game.Events.length;\r\n var suspendedEventCount = Enumerable.From($scope.Game.Events)\r\n .Where(function (x) { return x.Status === \"S\"; })\r\n .Count();\r\n var changePendingEventCount = Enumerable.From($scope.Game.Events)\r\n .Where(function (x) { return x.Status === \"P\"; })\r\n .Count();\r\n\r\n if (eventCount === suspendedEventCount || eventCount === changePendingEventCount)\r\n return true;\r\n\r\n return false;\r\n };\r\n\r\n $scope.CanEditGame = function () {\r\n if ($scope.Game == null) return false;\r\n if ($scope.isAdmin === false) return false;\r\n return !$scope.IsPublished();\r\n };\r\n\r\n $scope.DeleteGame = function () {\r\n var dlg = $dialogs.confirm('Please Confirm', 'Are you sure you want to delete this game?');\r\n dlg.result.then(function (btn) {\r\n gameFactory.DeleteGame($routeParams.gameId)\r\n .success(function () {\r\n $.message(MessageText.GameSuccessfullyDeleted, MessageType.Success);\r\n $location.path('/');\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n });\r\n };\r\n\r\n $scope.EditGame = function () {\r\n $location.path(\"gameedit/\" + $routeParams.gameId).search({ sportCode: $routeParams.sportCode, startDate: $routeParams.startDate });\r\n };\r\n\r\n $scope.AddEvent = function () {\r\n var newEvent = newGameFactory.AddEvent($scope.Game.Events.length);\r\n $scope.Game.Events.push(newEvent);\r\n };\r\n $scope.DeleteEvent = function (index, id) {\r\n var dlg = $dialogs.confirm('Please Confirm', 'Are you sure you want to delete this event?');\r\n dlg.result.then(function (btn) {\r\n if (id == 0) {\r\n $scope.Game.Events.splice(index, 1);\r\n } else {\r\n eventFactory.Delete(id)\r\n .success(function (success) {\r\n $route.reload();\r\n $.message(MessageText.EventSuccessfullyDeleted, MessageType.Success);\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n }\r\n });\r\n };\r\n $scope.SaveEvent = function (eventTime) {\r\n var eTime = new Date(1970, 0, 1);\r\n eTime.setHours(eventTime.split(\":\")[0]);\r\n eTime.setMinutes(eventTime.split(\":\")[1]);\r\n eTime.setSeconds(\"00\");\r\n var x = convertUtcDateToLocalDate(eTime);\r\n\r\n var eventDtoAdd = { RefId: $routeParams.gameId, EventTime: x.getTime() };\r\n eventFactory.Save(eventDtoAdd)\r\n .success(function (game) {\r\n $route.reload();\r\n //$scope.Game = game;\r\n $.message(MessageText.EventSuccessfullySaved, MessageType.Success);\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n $scope.UpdateEvent = function (eventId, eventTime) {\r\n var eTime = new Date(1970, 0, 1);\r\n eTime.setHours(eventTime.split(\":\")[0]);\r\n eTime.setMinutes(eventTime.split(\":\")[1]);\r\n eTime.setSeconds(\"00\");\r\n var x = convertUtcDateToLocalDate(eTime);\r\n\r\n var eventDtoAdd = { RefId: eventId, EventTime: x.getTime() };\r\n eventFactory.Update(eventId, eventDtoAdd)\r\n .success(function (game) {\r\n $.message(MessageText.EventSuccessfullySaved, MessageType.Success);\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n $scope.SaveGame = function () {\r\n gameService.saveGame($scope.Game)\r\n .success(function (gameId) {\r\n $location.path(\"game/\" + gameId).search({ sportCode: $routeParams.sportCode, startDate: $routeParams.startDate });\r\n $.message(MessageText.GameSuccessfullySaved, MessageType.Success);\r\n })\r\n .error(function (ex) {\r\n $.message(ex.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.PublishResult = function () {\r\n var dialog;\r\n\r\n gameFactory.TwoDrawApprovedButtons()\r\n .success(function (result) {\r\n if ($scope.Game.SportCode === \"49\" && JSON.parse(result)) {\r\n dialog = $dialogs.DrawApproval();\r\n } else {\r\n dialog = $dialogs.confirm('Please Confirm', \"Are you sure you want to publish the results?\");\r\n }\r\n\r\n dialog.result.then(function (btn) {\r\n gameFactory.PublishResult($routeParams.gameId)\r\n .success(function (game) {\r\n $.message(MessageText.ResultSuccessfullyPublished, MessageType.Success);\r\n $scope.Game = game;\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n });\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n $scope.CanPublishResult = function () {\r\n if ($scope.Game == null) return false;\r\n\r\n var preResulted = Enumerable.From($scope.Game.Events)\r\n .Any(function (x) { return x.Status == \"X\" || x.Status == \"P\"; });\r\n return preResulted;\r\n\r\n };\r\n\r\n\r\n $scope.go = function (view, id, number) {\r\n eventFactory.CanAccessTheEvent(id)\r\n .success(function (result) {\r\n if (result === \"true\") {\r\n $location.path(view + '/' + id).search({ sportCode: $routeParams.sportCode, startDate: $routeParams.startDate, no: number });\r\n } else {\r\n $.message(\"You must complete the lunch time draw in order to access the tea time draw. Please contact admin for more details\", MessageType.Info);\r\n }\r\n })\r\n .error(function (error) {\r\n $.message(\"You can't access the draw at the moment. Check your internet connection and please refresh the page.\", MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.DisplayPublishResultButton = function () {\r\n if ($scope.IsPublished() && $.IsStepByStepOn() === false) return true;\r\n else return false;\r\n }\r\n }\r\n]);","angular.module('NumbersEditor')\r\n .controller('GameEditController', [\r\n '$scope', 'GameFactory', 'appInfoFactory', '$location', '$rootScope', '$routeParams', '$dialogs', '$document', 'gameService',\r\n function ($scope, gameFactory, appInfoFactory, $location, $rootScope, $routeParams, $dialogs, $document, gameService) {\r\n\r\n init();\r\n\r\n function init() {\r\n $rootScope.SetAppTitle(\"Edit Game\", \"Edit Game\");\r\n getGame();\r\n setMinMaxDates();\r\n };\r\n\r\n function getGame() {\r\n gameService.getGame($routeParams.gameId, $routeParams.sportCode, $routeParams.startDate)\r\n .then(function (game) {\r\n game.StartDate = new Date(game.StartDate);\r\n $scope.GameEdit = game;\r\n gameService.setDatePicker($scope);\r\n })\r\n .catch(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n function setMinMaxDates() {\r\n appInfoFactory.getDateTime()\r\n .success(function (dateTime) {\r\n var today = new Date(JSON.parse(dateTime));\r\n var maxDate = new Date(today.setMonth(today.getMonth() + 3));\r\n $scope.maxDate = new Date(maxDate.setDate(today.getDate() - 1));\r\n }).error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n }\r\n\r\n $scope.SaveGameEdit = function () {\r\n var game = $scope.GameEdit;\r\n var eDate = new Date(game.StartDate);\r\n eDate.setHours(\"12\");\r\n game.StartDate = eDate;\r\n\r\n gameFactory.saveGame(game)\r\n .success(function () {\r\n $.message(MessageText.GameSuccessfullySaved, MessageType.Success);\r\n $location.path('game/' + $routeParams.gameId.toString()).search({ sportCode: $scope.GameEdit.SportCode.toString(), startDate: $scope.GameEdit.StartDate.toISOString() });\r\n })\r\n .error(function (error) {\r\n $.message(error.Message, MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.CancelGameEdit = function () {\r\n $location.path('game/' + $routeParams.gameId.toString()).search({ sportCode: $routeParams.sportCode, startDate: $routeParams.startDate });\r\n };\r\n\r\n $scope.$watch('GameEdit.StartDate', function () {\r\n $scope.opened = false;\r\n });\r\n\r\n $document.bind('keypress', function ($event) {\r\n if ($event.which === 13) {\r\n $(\"#btnstartdate\").click();\r\n }\r\n });\r\n\r\n // disabled the Christmas day in the calendar\r\n $scope.disabled = function (date, mode) {\r\n if (date.getMonth() == 11 && date.getDate() == \"25\") return true;\r\n else return false;\r\n\r\n };\r\n\r\n $scope.closemodal = function ($event) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n $scope.opened = false;\r\n };\r\n\r\n $scope.open = function ($event) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n $scope.opened = true;\r\n };\r\n }\r\n ]);","angular.module('NumbersEditor')\r\n .controller('HomeController', [\r\n '$scope', 'HomeFactory', '$location', '$rootScope', 'PublishGameFactory', '$dialogs', 'gameService', 'appInfoFactory', 'authFactory', '$route',\r\n function ($scope, homeFactory, $location, $rootScope, publishGameFactory, $dialogs, gameService, appInfoFactory, authFactory, $route) {\r\n\r\n init();\r\n\r\n $scope.LoadingUpcomingGames = false;\r\n\r\n function init() {\r\n $rootScope.SetAppTitle(\"Home\", \"Today's Games\");\r\n $scope.isTechSuper = authFactory.GetAuthenticationData().isTechSuper;\r\n appInfoFactory.getDateTime()\r\n .success(function (today) {\r\n $scope.Today = new Date(JSON.parse(today));\r\n getTodaysGames();\r\n }).error(function (err) {\r\n logError(err);\r\n });\r\n appInfoFactory.getApplicationInfo()\r\n .success(function (appInfo) {\r\n $scope.Environment = appInfo.Environment;\r\n $scope.AllGameMode = appInfo.AllGameMode;\r\n }).error(function (err) {\r\n logError(err);\r\n });\r\n setMinMaxDates();\r\n }\r\n\r\n function setMinMaxDates() {\r\n var minDate = new Date();\r\n var maxDate = new Date();\r\n var maxDate = new Date(maxDate.setMonth(maxDate.getMonth() + 3));\r\n $scope.fromMinDate = new Date(minDate.setDate(minDate.getDate() + 1));\r\n $scope.fromMaxDate = new Date(maxDate.setDate(maxDate.getDate() - 1));\r\n $scope.toMinDate = $scope.fromMinDate;\r\n $scope.toMaxDate = $scope.fromMaxDate;\r\n }\r\n\r\n function getTodaysGames() {\r\n var homeFilterData = getHomeFilterData();\r\n homeFactory.getTodaysGames(homeFilterData.FromDate, homeFilterData.ToDate)\r\n .success(function (games) {\r\n var todaysGame = Enumerable.From(games)\r\n .Where(function (x) {\r\n var jsDate = new Date(x.StartDate);\r\n var today = $scope.Today;\r\n return jsDate.getFullYear() + \"/\" + (jsDate.getMonth() + 1) + \"/\" + jsDate.getDate() === today.getFullYear() + \"/\" + (today.getMonth() + 1) + \"/\" + today.getDate();\r\n })\r\n .ToArray();\r\n $scope.Games = todaysGame;\r\n var upcomingGames = Enumerable.From(games)\r\n .Where(function (x) {\r\n var jsDate = new Date(x.StartDate);\r\n var today = $scope.Today;\r\n return jsDate.getFullYear() + \"/\" + (jsDate.getMonth() + 1) + \"/\" + jsDate.getDate() !== today.getFullYear() + \"/\" + (today.getMonth() + 1) + \"/\" + today.getDate();\r\n })\r\n .ToArray();\r\n\r\n upcomingGames.FromDate = homeFilterData.FromDate;\r\n upcomingGames.ToDate = homeFilterData.ToDate;\r\n $scope.UpcomingGames = upcomingGames;\r\n gameService.setDatePicker($scope);\r\n $scope.LoadingUpcomingGames = false;\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n function getHomeFilterData() {\r\n var filterData = localStorage.getItem(\"homeFilterData\");\r\n if (filterData === null) {\r\n var minDate = new Date();\r\n var maxDate = new Date();\r\n filterData = setHomeFilterData(\r\n new Date(minDate.setDate(minDate.getDate() + 1)),\r\n new Date(maxDate.setDate(maxDate.getDate() + 7))\r\n );\r\n } else {\r\n filterData = JSON.parse(filterData)\r\n }\r\n return filterData;\r\n }\r\n\r\n function setHomeFilterData(fromDate, toDate) {\r\n if (fromDate !== undefined && toDate !== undefined) {\r\n var filterData = {\r\n FromDate: fromDate.toISOString(),\r\n ToDate: toDate.toISOString()\r\n };\r\n localStorage.setItem(\"homeFilterData\", JSON.stringify(filterData));\r\n return filterData;\r\n }\r\n }\r\n\r\n $scope.deleteGame = function (game, $event) {\r\n $event.stopPropagation();\r\n $dialogs.confirm('Please Confirm', 'Are you sure you want to delete this game?').result.then(function () {\r\n gameService.deleteGame(game).success(function () {\r\n $route.reload();\r\n }).error(function (err) {\r\n logError(err);\r\n });\r\n });\r\n }\r\n\r\n $scope.canDelete = function (game) {\r\n if (!$scope.AllGameMode || game.Status === \"I\") return false;\r\n return true;\r\n }\r\n\r\n $scope.go = function (view, id, sportCode, startDate) {\r\n $location.path(view + '/' + id).search({ sportCode: sportCode, startDate: startDate });\r\n };\r\n\r\n $scope.SaveAndPublish = function (game) {\r\n gameService.getGame(game.Id, game.SportCode, game.StartDate).then(function (getGame) {\r\n gameService.saveGame(getGame).success(function (id) {\r\n gameService.publishGame(id).success(function (data) {\r\n $.message(MessageText.GameSuccessfullyPublished, MessageType.Success);\r\n game.PublicationStamp = data.PublicationStamp;\r\n game.Id = id;\r\n })\r\n .error(function (error) {\r\n logError(error);\r\n });\r\n })\r\n .error(function (error) {\r\n logError(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n logError(error);\r\n });\r\n };\r\n\r\n $scope.Publish = function (game) {\r\n gameService.getGame(game.Id, game.SportCode, game.StartDate).then(function (getGame) {\r\n gameService.publishGame(game.Id).success(function (data) {\r\n $.message(MessageText.GameSuccessfullyPublished, MessageType.Success);\r\n game.PublicationStamp = data.PublicationStamp;\r\n })\r\n .error(function (error) {\r\n logError(error);\r\n });\r\n }).catch(function (error) {\r\n logError(error);\r\n });\r\n };\r\n\r\n\r\n function logError(error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n }\r\n\r\n $scope.PublishGame = function (game) {\r\n var dlg = $dialogs.confirm('Please Confirm', 'Are you sure you want to publish this game?');\r\n dlg.result.then(function (btn) {\r\n publishGameFactory.PublishGame(game.Id)\r\n .success(function (data) {\r\n $.message(MessageText.GameSuccessfullyPublished, MessageType.Success);\r\n game.PublicationStamp = data.PublicationStamp;\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n });\r\n };\r\n $scope.CanPublishGame = function (game) {\r\n if (game.HasCompleted == true && game.PublicationStamp == null) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n $scope.$watch('UpcomingGames.FromDate', function () {\r\n $scope.fromOpened = false;\r\n if ($scope.UpcomingGames !== undefined) {\r\n $scope.toMinDate = new Date($scope.UpcomingGames.FromDate);\r\n }\r\n });\r\n\r\n $scope.$watch('UpcomingGames.ToDate', function () {\r\n $scope.toOpened = false;\r\n if ($scope.UpcomingGames !== undefined) {\r\n $scope.fromMaxDate = new Date($scope.UpcomingGames.ToDate);\r\n }\r\n });\r\n\r\n $scope.FilterUpcoming = function () {\r\n setHomeFilterData(new Date($scope.UpcomingGames.FromDate), new Date($scope.UpcomingGames.ToDate));\r\n $scope.LoadingUpcomingGames = true;\r\n getTodaysGames();\r\n }\r\n\r\n $scope.closemodals = function ($event) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n $scope.fromOpened = false;\r\n $scope.toOpened = false;\r\n };\r\n\r\n $scope.fromOpen = function ($event) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n $scope.fromOpened = true;\r\n $scope.toOpened = false;\r\n };\r\n\r\n $scope.toOpen = function ($event) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n $scope.toOpened = true;\r\n $scope.fromOpened = false;\r\n };\r\n }\r\n ]);","angular.module('common')\r\n .controller(\"loginController\", ['authFactory', 'localStorageService', '$window', function (authFactory, localStorageService, $window) {\r\n function LoginController(authFactory, localStorageService, $window) {\r\n var self = this;\r\n self.window = $window;\r\n self.authFactory = authFactory;\r\n self.localStorageService = localStorageService;\r\n self.userName = null;\r\n self.password = null;\r\n self.btnText = \"Login\";\r\n self.btnDisabled = false;\r\n self.maskedNumber = null;\r\n self.code = null;\r\n self.twoFactorOn = null;\r\n self.action = self.init2ndFactor;\r\n self.loadTwoFactorConfig();\r\n }\r\n\r\n LoginController.prototype.loadTwoFactorConfig = function () {\r\n var self = this;\r\n self.authFactory.getTwoFactorConfig()\r\n .success(function (response) {\r\n self.twoFactorOn = response === \"true\";\r\n }).error(function (err) {\r\n self.onError(err.ExceptionMessage, \"Login\");\r\n });\r\n }\r\n\r\n LoginController.prototype.onError = function (errMsg, btnText) {\r\n var self = this;\r\n self.btnDisabled = false;\r\n self.btnText = btnText;\r\n $.message(errMsg, MessageType.Error);\r\n }\r\n\r\n LoginController.prototype.init2ndFactor = function () {\r\n var self = this;\r\n self.btnDisabled = true;\r\n self.btnText = \"Connecting, please wait...\";\r\n self.authFactory.init2ndFactor({ username: self.userName, password: self.password })\r\n .success(function (response) {\r\n self.btnDisabled = false;\r\n self.btnText = \"Verify Code\";\r\n self.maskedNumber = JSON.parse(response).replace(/\\\"/g, \"\");\r\n self.action = self.verify2ndFactor;\r\n }).error(function (err) {\r\n self.onError(JSON.parse(err).replace(/\\\"/g, \"\"), \"Login\");\r\n });\r\n }\r\n\r\n LoginController.prototype.verify2ndFactor = function () {\r\n var self = this;\r\n self.btnDisabled = true;\r\n self.btnText = \"Connecting, please wait...\";\r\n self.authFactory.verify2ndFactor({ username: self.userName, password: self.password, code: self.code })\r\n .success(function (response) {\r\n self.login();\r\n }).error(function (err) {\r\n self.onError(JSON.parse(err).replace(/\\\"/g, \"\"), \"Verify Code\");\r\n });\r\n }\r\n\r\n LoginController.prototype.login = function () {\r\n var self = this;\r\n var credentials = \"grant_type=password&username=\" + self.userName + \"&password=\" + self.password;\r\n self.btnText = \"Connecting, please wait...\";\r\n self.btnDisabled = true;\r\n self.authFactory.login(credentials)\r\n .success(function (response) {\r\n self.authFactory.getUserWithCreds(response.access_token, credentials)\r\n .success(function (res) {\r\n self.localStorageService.storeUserData(response, self.userName, res.IsAdmin, res.IsTechSuper, res.CredsKey);\r\n self.window.location.href = \"/\";\r\n })\r\n .error(function (err) {\r\n self.onError(err.error_description, \"Login\");\r\n });\r\n\r\n }).error(function (err) {\r\n self.onError(err.error_description, \"Login\");\r\n });\r\n };\r\n\r\n return new LoginController(authFactory, localStorageService, $window);\r\n }]);\r\n","NumbersEditor.controller('MasterController', [\r\n '$scope', '$location', 'authFactory', '$http', '$timeout', 'appInfoFactory', 'localStorageService',\r\n function ($scope, $location, authFactory, $http, $timeout, appInfoFactory, localStorageService) {\r\n\r\n var authenticationData = authFactory.GetAuthenticationData();\r\n if (authenticationData) {\r\n $scope.username = authenticationData.username;\r\n $scope.isAdmin = authenticationData.isAdmin;\r\n }\r\n\r\n window.setInterval(function () {\r\n checkForRefreshToken();\r\n }, 30000);\r\n\r\n $scope.logOut = function () {\r\n authFactory.logOut();\r\n $location.path('login');\r\n };\r\n\r\n $scope.startClock = function () {\r\n var setTime = function () {\r\n appInfoFactory.getDateTime()\r\n .success(function (today) {\r\n $scope.clock = new Date(JSON.parse(today));\r\n $timeout(function () { tickSeconds(1) }, 1000);\r\n }).error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n }\r\n\r\n var tickSeconds = function (tickedSeconds) {\r\n if (tickedSeconds > 9) {\r\n setTime();\r\n } else {\r\n $scope.clock.setSeconds($scope.clock.getSeconds() + 1);\r\n $timeout(function () { tickSeconds(tickedSeconds + 1) }, 1000);\r\n }\r\n }\r\n\r\n $scope.clock = \"Loading the clock...\";\r\n setTime();\r\n }\r\n\r\n checkForRefreshToken = function () {\r\n var authRefresh = localStorage.getItem(\"authenticationRefreshData\");\r\n var activityData = localStorage.getItem(\"activity\");\r\n if (authRefresh != null) {\r\n var authRefreshData = JSON.parse(authRefresh);\r\n var expiresin = parseInt(authRefreshData.expires_in);\r\n var timestamp = new Date(authRefreshData.timestamp);\r\n var currenttime = new Date();\r\n var secondspassed = (currenttime.getTime() - timestamp.getTime()) / 1000;\r\n var timeleft = expiresin - secondspassed;\r\n\r\n if (timeleft < 120) { // If there's only 2 minutes left, renew the token\r\n // Check if there's activity\r\n var hasactivity = false;\r\n if (activityData != null) {\r\n var activityDate = new Date(activityData);\r\n var activitysecondspassed = (currenttime.getTime() - activityDate.getTime()) / 1000;\r\n if (activitysecondspassed < expiresin - 30) {\r\n hasactivity = true\r\n }\r\n }\r\n if (hasactivity) {\r\n renewToken();\r\n }\r\n }\r\n }\r\n }\r\n\r\n renewToken = function () {\r\n authFactory.getCreds()\r\n .success(function (credresponse) {\r\n authFactory.login(credresponse.Credentials)\r\n .success(function (response) {\r\n authFactory.getUserWithCreds(response.access_token, credresponse.Credentials)\r\n .success(function (res) {\r\n localStorageService.storeUserData(response, self.userName, res.IsAdmin, res.IsTechSuper, res.CredsKey);\r\n })\r\n .error(function (err) {\r\n $.message(\"Could not renew login token\", MessageType.Error);\r\n });\r\n\r\n }).error(function (err) {\r\n $.message(\"Could not renew login token\", MessageType.Error);\r\n });\r\n }).error(function (err) {\r\n $.message(\"Could not renew login token\", MessageType.Error);\r\n });\r\n }\r\n }\r\n]);","angular.module('NumbersEditor')\r\n .controller('NewAdhocController', [\r\n '$scope', 'NewAdhocGameFactory', 'GameFactory', 'appInfoFactory', '$location', '$rootScope', '$routeParams', '$dialogs', '$document', 'newAdhocService', 'gameService',\r\n function ($scope, newAdhocGameFactory, gameFactory, appInfoFactory, $location, $rootScope, $routeParams, $dialogs, $document, newAdhocService, gameService) {\r\n\r\n init();\r\n\r\n $scope.isSubmitting = false;\r\n\r\n function init() {\r\n $rootScope.SetAppTitle(\"New\", \"New Adhoc Game\");\r\n getNewAdhocGame();\r\n setMinMaxDates();\r\n };\r\n\r\n function getNewAdhocGame() {\r\n newAdhocService.getNewAdhocGame()\r\n .then(function (newAdhoc) {\r\n newAdhoc.StartDate = new Date(newAdhoc.StartDate);\r\n newAdhoc.IsAdhoc = 'Y';\r\n newAdhoc.Events = [];\r\n newAdhoc.Events.push(new Object({ EventDisplayTime: '' }));\r\n $scope.NewAdhoc = newAdhoc;\r\n gameService.setDatePicker($scope);\r\n })\r\n .catch(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n function setMinMaxDates() {\r\n appInfoFactory.getDateTime()\r\n .success(function (dateTime) {\r\n var today = new Date(JSON.parse(dateTime));\r\n var maxDate = new Date(today.setMonth(today.getMonth() + 3));\r\n $scope.maxDate = new Date(maxDate.setDate(today.getDate() - 1));\r\n }).error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n }\r\n\r\n $scope.AddAdhocEvent = function () {\r\n $scope.NewAdhoc.Events.push(new Object({ EventDisplayTime: '' }));\r\n }\r\n\r\n $scope.DeleteAdhocEvent = function (index) {\r\n if ($scope.NewAdhoc.Events.length === 1) {\r\n $.message('You must have at least 1 Event', MessageType.Error);\r\n return;\r\n }\r\n $scope.NewAdhoc.Events.splice(index, 1);\r\n }\r\n\r\n $scope.SaveAdhocGame = function () {\r\n var game = $scope.NewAdhoc;\r\n var eDate = new Date(game.StartDate);\r\n eDate.setHours(\"12\");\r\n game.StartDate = eDate;\r\n\r\n if (!saveValidate(game)) {\r\n return;\r\n }\r\n\r\n updateEventTimes(game);\r\n\r\n $scope.isSubmitting = true;\r\n gameFactory.insertGame(game)\r\n .success(function (gameid) {\r\n $.message(MessageText.GameSuccessfullyCreated, MessageType.Success);\r\n $location.path('game/' + gameid.toString()).search({ sportCode: $scope.NewAdhoc.SportCode.toString(), startDate: $scope.NewAdhoc.StartDate.toISOString() });\r\n })\r\n .error(function (error) {\r\n $.message(error.Message, MessageType.Error);\r\n $scope.isSubmitting = false;\r\n });\r\n };\r\n\r\n function saveValidate(game) {\r\n var validationPassed = true;\r\n $.each(game.Events, function (key, event) {\r\n if (event.EventDisplayTime === '') {\r\n $.message('Not all the events have a time', MessageType.Error);\r\n validationPassed = false;\r\n }\r\n });\r\n return validationPassed;\r\n }\r\n\r\n function updateEventTimes(game) {\r\n var events = []\r\n $.each(game.Events, function (key, event) {\r\n var eTime = new Date(1970, 0, 1);\r\n eTime.setHours(event.EventDisplayTime.split(\":\")[0]);\r\n eTime.setMinutes(event.EventDisplayTime.split(\":\")[1]);\r\n eTime.setSeconds(\"00\");\r\n var x = convertUtcDateToLocalDate(eTime);\r\n events.push(new Object({ EventDisplayTime: event.EventDisplayTime, EventTime: x.getTime() }));\r\n });\r\n game.Events = events;\r\n }\r\n\r\n function convertUtcDateToLocalDate(date) {\r\n var newDate = new Date(date.getTime() + date.getTimezoneOffset() * 60 * 1000);\r\n\r\n var offset = date.getTimezoneOffset() / 60;\r\n var hours = date.getHours();\r\n\r\n newDate.setHours(hours - offset);\r\n\r\n return newDate;\r\n };\r\n\r\n $scope.$watch('NewAdhoc.StartDate', function () {\r\n $scope.opened = false;\r\n });\r\n\r\n $document.bind('keypress', function ($event) {\r\n if ($event.which === 13) {\r\n $(\"#btnstartdate\").click();\r\n }\r\n });\r\n\r\n // disabled the Christmas day in the calendar\r\n $scope.disabled = function (date, mode) {\r\n if (date.getMonth() == 11 && date.getDate() == \"25\") return true;\r\n else return false;\r\n\r\n };\r\n\r\n $scope.closemodal = function ($event) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n $scope.opened = false;\r\n };\r\n\r\n $scope.open = function ($event) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n $scope.opened = true;\r\n };\r\n\r\n $document.bind('click', function ($event) {\r\n $scope.opened = false;\r\n });\r\n\r\n $scope.dateSelection = function () {\r\n alert('selection');\r\n }\r\n }\r\n ]);","angular.module('NumbersEditor').controller('NewGameController', [\r\n '$scope', 'NewGameFactory', '$location', '$rootScope', 'PublishGameFactory', 'authFactory', '$document', '$routeParams', '$dialogs', '$modal', 'appInfoFactory',\r\n function ($scope, newGameFactory, $location, $rootScope, publishGameFactory, authFactory, $document, $routeParams, $dialogs, $modal, appInfoFactory) {\r\n\r\n function init() {\r\n $rootScope.SetAppTitle(\"New Game\", \"Add Games\");\r\n $scope.isAdmin = authFactory.GetAuthenticationData().isAdmin;\r\n $scope.SportCodes = undefined;\r\n\r\n appInfoFactory.getDateTime()\r\n .success(function (dateTime) {\r\n var today = new Date(JSON.parse(dateTime));\r\n $scope.newGame = {\r\n StartDate: $routeParams.date == undefined ? today : new Date($routeParams.date),\r\n SportCode: undefined\r\n };\r\n $scope.minDate = new Date(today.getTime());\r\n if ($scope.isAdmin === false) {\r\n var todaysDate = new Date(today.getTime());\r\n $scope.maxDate = today;\r\n $scope.maxDate.setDate(todaysDate.getDate() + 8);\r\n }\r\n }).error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n function searchGamesByDate() {\r\n $scope.SportCodes = undefined;\r\n $scope.newGame.SportCode = undefined;\r\n newGameFactory.checkGameByDate($scope.newGame.StartDate)\r\n .success(function (data) {\r\n for (var i = 0; i < data.length; i++) {\r\n data[i][\"Class\"] = \"list-group-item Game-\" + data[i].Status;\r\n }\r\n $scope.SportCodes = data;\r\n $scope.selectGame($scope.SportCodes[0]);\r\n })\r\n .error(function (ex) {\r\n $.message(ex.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n init();\r\n\r\n $scope.AddEvent = function () {\r\n var newEvent = newGameFactory.AddEvent($scope.newGame.Events.length);\r\n $scope.newGame.Events.push(newEvent);\r\n };\r\n\r\n $scope.DeleteEvent = function (index) {\r\n $scope.newGame.Events.splice(index, 1);\r\n };\r\n\r\n $scope.AddGame = function () {\r\n for (var i = 0; i < $scope.newGame.Events.length; i++) {\r\n\r\n var eTime = new Date(1970, 0, 1);\r\n eTime.setHours($scope.newGame.Events[i].EventTime.split(\":\")[0]);\r\n eTime.setMinutes($scope.newGame.Events[i].EventTime.split(\":\")[1]);\r\n eTime.setSeconds(\"00\");\r\n $scope.newGame.Events[i].EventTime = eTime.getTime();\r\n }\r\n\r\n newGameFactory.insertGame($scope.newGame)\r\n .success(function () {\r\n $.message(MessageText.GameSuccessfullySaved, MessageType.Success);\r\n searchGamesByDate();\r\n })\r\n .error(function (ex) {\r\n $.message(ex.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.$watch('newGame.StartDate', function () {\r\n searchGamesByDate();\r\n });\r\n\r\n $scope.selectGame = function (sportCode) {\r\n\r\n for (var i = 0; i < $scope.SportCodes.length; i++) {\r\n if ($scope.SportCodes[i].SportCode != sportCode.SportCode) {\r\n $scope.SportCodes[i].Class = \"list-group-item Game-\" + $scope.SportCodes[i].Status;\r\n }\r\n }\r\n\r\n if (sportCode.Status == \"Available\") {\r\n $scope.newGame.SportCode = sportCode.SportCode;\r\n sportCode.Class += \" active\";\r\n $scope.BindEvents();\r\n }\r\n };\r\n\r\n $scope.BindEvents = function () {\r\n newGameFactory.newGame($scope.newGame.SportCode, $scope.newGame.StartDate)\r\n .success(function (events) {\r\n var eventsArray = [];\r\n for (var i = 0; i < events.length; i++) {\r\n var eTime = new Date(1970, 0, 1);\r\n eTime.setTime(events[i].EventTime);\r\n\r\n eventsArray.push({\r\n EventNumber: events[i].RefId,\r\n EventTime: eTime.getHours() + ':' + eTime.getMinutes(),\r\n Status: \"I\"\r\n });\r\n }\r\n $scope.newGame.Events = eventsArray;\r\n })\r\n .error(function (ex) {\r\n $.message(ex.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.PublishGame = function (sportcode) {\r\n publishGameFactory.PublishGame(sportcode.Id)\r\n .success(function (game) {\r\n $.message(MessageText.GameSuccessfullyPublished, MessageType.Success);\r\n sportcode.PublicationStamp = game.PublicationStamp;\r\n sportcode.CanPublish = game.CanPublish;\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.ManageGame = function (sportcode) {\r\n $location.path('game/' + sportcode.Id);\r\n };\r\n\r\n $document.bind('keypress', function ($event) {\r\n if ($event.which === 13) {\r\n $(\"#btnnewgamedate\").click();\r\n }\r\n });\r\n\r\n // disabled the Christmas day in the calendar\r\n $scope.disabled = function (date, mode) {\r\n if (date.getMonth() == 11 && date.getDate() == \"25\") return true;\r\n else return false;\r\n\r\n };\r\n\r\n $scope.open = function ($event) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n $scope.opened = true;\r\n };\r\n }\r\n]);","angular.module('NumbersEditor').controller('postDrawCertificateController', [\r\n '$scope', '$routeParams', '$rootScope', 'EventFactory', '$location', '$filter', 'appInfoFactory',\r\n function ($scope, $routeParams, $rootScope, eventFactory, $location, $filter, appInfoFactory) {\r\n\r\n function getSubTitle() {\r\n var sportCode = $routeParams.sportCode === \"49\" ? \"49\" : \"Irish Lottery\";\r\n var eventNo = parseInt($routeParams.no);\r\n var draw = \"\";\r\n if (sportCode === \"49\" && eventNo === 1)\r\n draw = \"Lunch Time\";\r\n else if (sportCode === \"49\" && eventNo === 2)\r\n draw = \"Tea Time\";\r\n var date = $filter(\"date\")($routeParams.startDate, \"fullDate\");\r\n\r\n return sportCode + \" - \" + draw + \" - (\" + date + \")\";\r\n }\r\n\r\n function newPreDrawCertificate() {\r\n $scope.PreDrawCertificate = {\r\n AdjudicatorName: \"\",\r\n InitialsForQ1: \"\",\r\n InitialsForQ2: \"\",\r\n InitialsForQ3: \"\",\r\n InitialsForQ4: \"\",\r\n InitialsForQ5: \"\",\r\n InitialsForQ6: \"\",\r\n InitialsForQ7: \"\",\r\n Q8DrawFirst: \"\",\r\n Q8DrawSecond: \"\",\r\n Q8DrawThrird: \"\",\r\n Q8DrawFourth: \"\",\r\n Q8DrawFifth: \"\",\r\n Q8DrawSixth: \"\",\r\n Q8DrawBooster: \"\",\r\n Q8DrawHour: \"\",\r\n Q8DrawMinute: \"\",\r\n Q8DrawSeconds: \"\",\r\n InitialsForQ9: \"\",\r\n Q10Comments: \"\",\r\n SignedForDeloitte: \"\",\r\n SignedForSis: \"\",\r\n InitialsForQ3B: \"\"\r\n }\r\n\r\n appInfoFactory.getDateTime()\r\n .success(function (dateTime) {\r\n var today = new Date(JSON.parse(dateTime));\r\n $scope.PreDrawCertificate.CertificationDate = today;\r\n }).error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n }\r\n\r\n function mapPreDrawCertificate(preDrawCertificate) {\r\n $scope.PreDrawCertificate = {\r\n AdjudicatorName: preDrawCertificate.AdjudicatorName,\r\n CertificationDate: preDrawCertificate.CertificationDate,\r\n InitialsForQ1: preDrawCertificate.InitialsForQ1,\r\n InitialsForQ2: preDrawCertificate.InitialsForQ2,\r\n InitialsForQ3: preDrawCertificate.InitialsForQ3,\r\n InitialsForQ4: preDrawCertificate.InitialsForQ4,\r\n InitialsForQ5: preDrawCertificate.InitialsForQ5,\r\n InitialsForQ6: preDrawCertificate.InitialsForQ6,\r\n InitialsForQ7: preDrawCertificate.InitialsForQ7,\r\n Q8DrawFirst: preDrawCertificate.Q8DrawFirst,\r\n Q8DrawSecond: preDrawCertificate.Q8DrawSecond,\r\n Q8DrawThrird: preDrawCertificate.Q8DrawThrird,\r\n Q8DrawFourth: preDrawCertificate.Q8DrawFourth,\r\n Q8DrawFifth: preDrawCertificate.Q8DrawFifth,\r\n Q8DrawSixth: preDrawCertificate.Q8DrawSixth,\r\n Q8DrawBooster: preDrawCertificate.Q8DrawBooster,\r\n Q8DrawHour: preDrawCertificate.Q8DrawHour,\r\n Q8DrawMinute: (\"0\" + preDrawCertificate.Q8DrawMinute).slice(-2),\r\n Q8DrawSeconds: (\"0\" + preDrawCertificate.Q8DrawSeconds).slice(-2),\r\n InitialsForQ9: preDrawCertificate.InitialsForQ9,\r\n Q10Comments: preDrawCertificate.Q10Comments,\r\n SignedForDeloitte: preDrawCertificate.SignedForDeloitte,\r\n SignedForSis: preDrawCertificate.SignedForSis,\r\n InitialsForQ3B: preDrawCertificate.InitialsForQ3B\r\n }\r\n }\r\n\r\n function getPreDrawCertificate() {\r\n eventFactory.GetPreDrawCertificate($routeParams.eventId)\r\n .success(function (preDrawCertificate) {\r\n if (preDrawCertificate === \"null\")\r\n newPreDrawCertificate();\r\n else\r\n mapPreDrawCertificate(preDrawCertificate);\r\n })\r\n .error(function (error) { $.message(error.ExceptionMessage, MessageType.Error); });\r\n }\r\n\r\n function init() {\r\n $rootScope.SetAppTitle(\"Certificate\", getSubTitle());\r\n getPreDrawCertificate();\r\n }\r\n\r\n\r\n\r\n init();\r\n\r\n $scope.SavePostDrawCertificate = function () {\r\n eventFactory.SavePreDrawCertificate($routeParams.eventId, $scope.PreDrawCertificate)\r\n .success(function (event) {\r\n $.message(\"Draw is now completed\", MessageType.Success);\r\n $location.path(\"/\");\r\n })\r\n .error(function (error) {\r\n if (error.ModelState) $.message(JSON.stringify(error.ModelState), MessageType.Error);\r\n else $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n }\r\n\r\n $scope.PostDrawWeight = function () {\r\n $location.path(\"/postdrawweight/\" + $routeParams.eventId);\r\n }\r\n }\r\n]);","angular.module('NumbersEditor').controller('PostDrawWeightController', [\r\n '$scope', '$routeParams', '$rootScope', 'EventFactory', '$filter', '$location', '$dialogs',\r\n function ($scope, $routeParams, $rootScope, eventFactory, $filter, $location, $dialogs) {\r\n\r\n function init() {\r\n $scope.SportCode = $routeParams.sportCode === \"49\" ? \"49\" : \"Irish Lottery\";\r\n eventFactory.GetEventExtraInfo($routeParams.eventId, 0)\r\n .success(function (data) {\r\n $scope.EventExtraInfo = data;\r\n $scope.SelectedBallSet = parseInt(data.SetOfBalls);\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n function getSubTitle() {\r\n var sportCode = $routeParams.sportCode === \"49\" ? \"49\" : \"Irish Lottery\";\r\n var eventNo = parseInt($routeParams.no);\r\n var draw = \"\";\r\n if (sportCode === \"49\" && eventNo === 1)\r\n draw = \"Lunch Time\";\r\n else if (sportCode === \"49\" && eventNo === 2)\r\n draw = \"Tea Time\";\r\n var date = $filter(\"date\")($routeParams.startDate, \"fullDate\");\r\n\r\n return sportCode + \" - \" + draw + \" - (\" + date + \")\";\r\n }\r\n\r\n $rootScope.SetAppTitle(\"Post Draw Weight\", getSubTitle());\r\n\r\n init();\r\n\r\n $scope.Save = function () {\r\n eventFactory.SaveEventExtraInfo($routeParams.eventId, $scope.EventExtraInfo)\r\n .success(function () {\r\n $.message(MessageText.EventExtraInfoSuccessfullySaved, MessageType.Success);\r\n $location.path(\"/postdrawcertificate/\" + $routeParams.eventId);\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.GoToPublishResult = function () {\r\n $dialogs.confirm('Please Confirm', 'Changes will be lost, are you sure?')\r\n .result.then(function () {\r\n $location.path(\"publishresults/\" + $routeParams.eventId)\r\n .search({\r\n sportCode: $routeParams.sportCode,\r\n startDate: $routeParams.startDate,\r\n gameId: $routeParams.gameId,\r\n no: $routeParams.no\r\n });\r\n });\r\n };\r\n }\r\n]);","angular.module('NumbersEditor').controller('preDrawCertificateController', [\r\n '$scope', '$routeParams', '$rootScope', 'EventFactory', '$location', '$filter', 'appInfoFactory',\r\n function ($scope, $routeParams, $rootScope, eventFactory, $location, $filter, appInfoFactory) {\r\n\r\n function getSubTitle() {\r\n var sportCode = $routeParams.sportCode === \"49\" ? \"49\" : \"Irish Lottery\";\r\n var eventNo = parseInt($routeParams.no);\r\n var draw = \"\";\r\n if (sportCode === \"49\" && eventNo === 1)\r\n draw = \"Lunch Time\";\r\n else if (sportCode === \"49\" && eventNo === 2)\r\n draw = \"Tea Time\";\r\n var date = $filter(\"date\")($routeParams.startDate, \"fullDate\");\r\n\r\n return sportCode + \" - \" + draw + \" - (\" + date + \")\";\r\n }\r\n\r\n function newPreDrawCertificate() {\r\n $scope.PreDrawCertificate = {\r\n AdjudicatorName: \"\",\r\n InitialsForQ1: \"\",\r\n InitialsForQ2: \"\",\r\n InitialsForQ3: \"\",\r\n InitialsForQ4: \"\",\r\n InitialsForQ5: \"\",\r\n InitialsForQ6: \"AUTO\",\r\n InitialsForQ7: \"\",\r\n Q8DrawFirst: \"\",\r\n Q8DrawSecond: \"\",\r\n Q8DrawThrird: \"\",\r\n Q8DrawFourth: \"\",\r\n Q8DrawFifth: \"\",\r\n Q8DrawSixth: \"\",\r\n Q8DrawBooster: \"\",\r\n Q8DrawHour: \"\",\r\n Q8DrawMinute: \"\",\r\n Q8DrawSeconds: \"\",\r\n InitialsForQ9: \"\",\r\n Q10Comments: \"\",\r\n SignedForDeloitte: \"\",\r\n SignedForSis: \"\",\r\n InitialsForQ3B: \"\"\r\n }\r\n\r\n appInfoFactory.getDateTime()\r\n .success(function (dateTime) {\r\n var today = new Date(JSON.parse(dateTime));\r\n $scope.PreDrawCertificate.CertificationDate = today;\r\n }).error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n }\r\n\r\n function mapPreDrawCertificate(preDrawCertificate) {\r\n $scope.PreDrawCertificate = {\r\n AdjudicatorName: preDrawCertificate.AdjudicatorName,\r\n CertificationDate: preDrawCertificate.CertificationDate,\r\n InitialsForQ1: preDrawCertificate.InitialsForQ1,\r\n InitialsForQ2: preDrawCertificate.InitialsForQ2,\r\n InitialsForQ3: preDrawCertificate.InitialsForQ3,\r\n InitialsForQ4: preDrawCertificate.InitialsForQ4,\r\n InitialsForQ5: preDrawCertificate.InitialsForQ5,\r\n InitialsForQ6: preDrawCertificate.InitialsForQ6,\r\n InitialsForQ7: preDrawCertificate.InitialsForQ7,\r\n InitialsForQ9: preDrawCertificate.InitialsForQ9,\r\n Q10Comments: preDrawCertificate.Q10Comments,\r\n SignedForDeloitte: preDrawCertificate.SignedForDeloitte,\r\n SignedForSis: preDrawCertificate.SignedForSis,\r\n InitialsForQ3B: preDrawCertificate.InitialsForQ3B\r\n }\r\n }\r\n\r\n function getPreDrawCertificate() {\r\n eventFactory.GetPreDrawCertificate($routeParams.eventId)\r\n .success(function (preDrawCertificate) {\r\n if (preDrawCertificate === \"null\")\r\n newPreDrawCertificate();\r\n else\r\n mapPreDrawCertificate(preDrawCertificate);\r\n })\r\n .error(function (error) { $.message(error.ExceptionMessage, MessageType.Error); });\r\n }\r\n\r\n function init() {\r\n $rootScope.SetAppTitle(\"Certificate\", getSubTitle());\r\n getPreDrawCertificate();\r\n }\r\n\r\n\r\n\r\n init();\r\n\r\n $scope.SavePreDrawCertificate = function () {\r\n eventFactory.SavePreDrawCertificate($routeParams.eventId, $scope.PreDrawCertificate)\r\n .success(function (event) {\r\n $.message(MessageText.EventPreDrawCertificateSaved, MessageType.Success);\r\n $location.path(\"/event/\" + $routeParams.eventId);\r\n\r\n })\r\n .error(function (error) {\r\n if (error.ModelState) $.message(JSON.stringify(error.ModelState), MessageType.Error);\r\n else $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n }\r\n\r\n $scope.PreDrawWeight = function () {\r\n $location.path(\"/predrawweight/\" + $routeParams.eventId);\r\n }\r\n }\r\n]);","angular.module('NumbersEditor').controller('PreDrawWeightController', [\r\n '$scope', '$routeParams', '$rootScope', 'EventFactory', '$location', '$filter', '$dialogs',\r\n function ($scope, $routeParams, $rootScope, eventFactory, $location, $filter, $dialogs) {\r\n function init() {\r\n $scope.SportCode = $routeParams.sportCode === \"49\" ? \"49\" : \"Irish Lottery\";\r\n $scope.Adjudicator = {\r\n FirstName: \"\",\r\n LastName: \"\"\r\n }\r\n eventFactory.GetEventExtraInfo($routeParams.eventId, 0)\r\n .success(function (data) {\r\n $scope.EventExtraInfo = data;\r\n $scope.SelectedBallSet = parseInt(data.SetOfBalls);\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n function getSubTitle() {\r\n var sportCode = $routeParams.sportCode === \"49\" ? \"49\" : \"Irish Lottery\";\r\n var eventNo = parseInt($routeParams.no);\r\n var draw = \"\";\r\n if (sportCode === \"49\" && eventNo === 1)\r\n draw = \"Lunch Time\";\r\n else if (sportCode === \"49\" && eventNo === 2)\r\n draw = \"Tea Time\";\r\n var date = $filter(\"date\")($routeParams.startDate, \"fullDate\");\r\n\r\n return sportCode + \" - \" + draw + \" - (\" + date + \")\";\r\n }\r\n\r\n $rootScope.SetAppTitle(\"Pre-Draw\", getSubTitle());\r\n\r\n init();\r\n\r\n $scope.Save = function () {\r\n var adjudicatorFirstName = $scope.Adjudicator.FirstName.trim();\r\n var adjudicatorLasttName = $scope.Adjudicator.LastName.trim();\r\n $scope.EventExtraInfo.AdjudicatorName = adjudicatorFirstName + \" \" + adjudicatorLasttName;\r\n eventFactory.SaveEventExtraInfo($routeParams.eventId, $scope.EventExtraInfo)\r\n .success(function () {\r\n $.message(MessageText.EventExtraInfoSuccessfullySaved, MessageType.Success);\r\n $location.path(\"/certificate/\" + $routeParams.eventId);\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.UpdateBallSet = function (selectedBallSet) {\r\n eventFactory.GetEventExtraInfo($routeParams.eventId, parseInt(selectedBallSet))\r\n .success(function (data) {\r\n $scope.EventExtraInfo = data;\r\n $scope.SelectedBallSet = selectedBallSet;\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.GoToManageGame = function () {\r\n $dialogs.confirm(\"Changes will be lost\",\r\n \"Are you sure?\",\r\n function () {\r\n $location.path(\"game/\" + localStorage.getItem(\"GameId\"))\r\n .search({ sportCode: $routeParams.sportCode, startDate: $routeParams.startDate });\r\n });\r\n };\r\n }\r\n]);","angular.module('NumbersEditor').controller('PublishResultsController', [\r\n '$scope', '$routeParams', '$rootScope', 'EventFactory', '$filter', 'GameFactory', '$location', '$route',\r\n function ($scope, $routeParams, $rootScope, eventFactory, $filter, gameFactory, $location, $route) {\r\n\r\n function getSubTitle() {\r\n var sportCode = $routeParams.sportCode === \"49\" ? \"49\" : \"Irish Lottery\";\r\n var eventNo = parseInt($routeParams.no);\r\n var draw = \"\";\r\n if (sportCode === \"49\" && eventNo === 1)\r\n draw = \"Lunch Time\";\r\n else if (sportCode === \"49\" && eventNo === 2)\r\n draw = \"Tea Time\";\r\n var date = $filter(\"date\")($routeParams.startDate, \"fullDate\");\r\n\r\n return sportCode + \" - \" + draw + \" - (\" + date + \")\";\r\n }\r\n\r\n function init() {\r\n $scope.RandomResultChallenge = {\r\n ChallengeOneDrawPosition: \"\",\r\n ChallengeOneDrawResult: \"\",\r\n ChallengeTwoDrawPosition: \"\",\r\n ChallengeTwoDrawResult: \"\",\r\n ChallengeThreeDrawPosition: \"\",\r\n ChallengeThreeDrawResult: \"\"\r\n };\r\n\r\n eventFactory.GetDrawApprovalDto($routeParams.eventId)\r\n .success(function (drawApproval) {\r\n $scope.RandomResultChallenge.ChallengeOneDrawPosition = drawApproval.RandomResults[0];\r\n $scope.RandomResultChallenge.ChallengeTwoDrawPosition = drawApproval.RandomResults[1];\r\n $scope.RandomResultChallenge.ChallengeThreeDrawPosition = drawApproval.RandomResults[2];\r\n\r\n $scope.DrawApproval = drawApproval;\r\n $scope.CanPublish = $scope.DrawApproval.IsPublished === false && ($scope.DrawApproval.SisApproved && $scope.DrawApproval.AdjudicatorApproved);\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n $rootScope.SetAppTitle(\"Publish Result\", getSubTitle());\r\n\r\n init();\r\n\r\n $scope.SiSTechApprove = function () {\r\n gameFactory.SiSTechApprove($routeParams.gameId)\r\n .success(function (result) {\r\n $scope.DrawApproval.SisApproved = result;\r\n $scope.CanPublish = $scope.DrawApproval.SisApproved && $scope.DrawApproval.AdjudicatorApproved;\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.AdjudicatorApprove = function () {\r\n gameFactory.AdjudicatorApprove($routeParams.gameId)\r\n .success(function (result) {\r\n $scope.DrawApproval.AdjudicatorApproved = result;\r\n $scope.CanPublish = $scope.DrawApproval.SisApproved && $scope.DrawApproval.AdjudicatorApproved;\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.PublishResult = function () {\r\n eventFactory.PublishResultWithRandomResultChallenge($routeParams.eventId, $scope.RandomResultChallenge)\r\n .success(function () {\r\n $.message(MessageText.ResultSuccessfullyPublished, MessageType.Success);\r\n $route.reload();\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.BackToDraw = function () {\r\n $location.path(\"event/\" + $routeParams.eventId).search({ sportCode: $routeParams.sportCode, startDate: $routeParams.startDate, gameId: $routeParams.gameId, no: $routeParams.no });\r\n };\r\n\r\n $scope.GoToPostDrawBallWeight = function () {\r\n $location.path(\"postdrawweight/\" + $routeParams.eventId).search({ sportCode: $routeParams.sportCode, startDate: $routeParams.startDate, gameId: $routeParams.gameId, no: $routeParams.no });\r\n }\r\n }\r\n]);","angular.module('NumbersEditor')\r\n .controller('SearchController', [\r\n '$scope', 'SearchFactory', '$location', '$rootScope', '$routeParams', '$document', 'appInfoFactory',\r\n function ($scope, searchFactory, $location, $rootScope, $routeParams, $document, appInfoFactory) {\r\n\r\n init();\r\n\r\n function init() {\r\n $rootScope.SetAppTitle(\"Search\", \"Search Games\");\r\n $scope.Games = undefined;\r\n\r\n appInfoFactory.getDateTime()\r\n .success(function (dateTime) {\r\n var today = new Date(JSON.parse(dateTime));\r\n $scope.searchDate = today.getFullYear() + \"-\" + (today.getMonth() + 1) + \"-\" + today.getDate();\r\n initWatch();\r\n }).error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n\r\n\r\n $scope.opened = false;\r\n };\r\n\r\n function initWatch() {\r\n $scope.$watch('searchDate', function () {\r\n $scope.Games = undefined;\r\n searchGames();\r\n });\r\n }\r\n\r\n function searchGames() {\r\n searchFactory.searchGame(new Date($scope.searchDate))\r\n .success(function (games) {\r\n $scope.Games = games;\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n }\r\n\r\n $document.bind('keypress', function ($event) {\r\n if ($event.which === 13) {\r\n $(\"#btnsearchdate\").click();\r\n }\r\n });\r\n\r\n $scope.go = function (view, id, sportCode, startDate) {\r\n $location.path(view + '/' + id).search({ sportCode: sportCode, startDate: startDate });\r\n };\r\n\r\n $scope.open = function ($event) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n $scope.opened = true;\r\n };\r\n }\r\n ]);","angular.module('NumbersEditor')\r\n .controller('SettingsController', [\r\n '$scope', 'SettingFactory', '$rootScope', '$route', 'appInfoFactory',\r\n function ($scope, settingFactory, $rootScope, $route, appInfoFactory) {\r\n\r\n function getSettings() {\r\n settingFactory.GetAll()\r\n .success(function (settings) {\r\n $scope.Settings = settings;\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n }\r\n\r\n function init() {\r\n $rootScope.SetAppTitle(\"Settings\", \"Settings\");\r\n getSettings();\r\n $scope.NewSetting = {\r\n Key: \"\",\r\n Value: \"\",\r\n Type: \"DATETIME\"\r\n }\r\n };\r\n\r\n init();\r\n $scope.form = {};\r\n\r\n $scope.NewSettingSave = function () {\r\n settingFactory.Save($scope.NewSetting)\r\n .success(function () {\r\n $route.reload();\r\n $.message(MessageText.SettingSuccessfullySaved, MessageType.Success);\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.UpdateSetting = function (setting) {\r\n settingFactory.Update(setting)\r\n .success(function () {\r\n $route.reload();\r\n $.message(MessageText.SettingSuccessfullyUpdated, MessageType.Success);\r\n })\r\n .error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.Validate = function (key) {\r\n $scope.form.SettingsForm.$invalid = false;\r\n var x = Enumerable.From($scope.Settings)\r\n .Where(function (x) {\r\n return x.Key === key;\r\n })\r\n .ToArray();\r\n if (x[0].Value !== undefined) {\r\n var scheduledDate = new Date(x[0].Value);\r\n\r\n appInfoFactory.getDateTime()\r\n .success(function (dateTime) {\r\n var today = new Date(JSON.parse(dateTime));\r\n today.setHours(0);\r\n today.setMinutes(0);\r\n today.setSeconds(0);\r\n today.setMilliseconds(0);\r\n if (scheduledDate < today) {\r\n $scope.form.SettingsForm.$invalid = true;\r\n }\r\n }).error(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n }\r\n };\r\n }\r\n ]);","angular.module('NumbersEditor')\n .controller('SetupSportCodeController', [\n '$scope', 'SportCodeFactory', 'authFactory', '$location', '$rootScope', '$dialogs', '$document', '$route', 'sportCodeService',\n function ($scope, sportCodeFactory, authFactory, $location, $rootScope, $dialogs, $document, $route, sportCodeService) {\n\n init();\n\n function init() {\n $scope.ShowAddButton = false;\n if (authFactory.GetAuthenticationData().isAdmin) {\n $rootScope.SetAppTitle(\"Setup Sport Codes\", \"Setup Sport Codes\");\n getSportCodes();\n getAvailableSportCodeList();\n } else {\n $location.path(\"\");\n }\n };\n\n function getSportCodes() {\n sportCodeService.getSportCodes()\n .then(function (sportCodes) {\n $scope.SportCodes = sportCodes;\n })\n .catch(function (error) {\n $.message(error.ExceptionMessage, MessageType.Error);\n });\n };\n\n $scope.EditSportCode = function (sportCode) {\n $location.path(\"sportcodeedit/\" + sportCode);\n };\n\n $scope.AddSportCode = function () {\n $location.path(\"sportcodeadd\");\n };\n\n $scope.DeleteSportCode = function (sportCode) {\n var dlg = $dialogs.confirm('Please Confirm', 'Are you sure you want to delete this sport code?');\n dlg.result.then(function (btn) {\n sportCodeFactory.deleteSportCode(sportCode)\n .success(function () {\n $route.reload();\n $.message(MessageText.SportCodeSuccessfullyDeleted, MessageType.Success);\n })\n .error(function (error) {\n $.message(error.ExceptionMessage, MessageType.Error);\n });\n });\n };\n\n function getAvailableSportCodeList() {\n sportCodeService.getSportCode('0')\n .then(function (sportCodes) {\n if (sportCodes.SportCodeList.length > 0) {\n $scope.ShowAddButton = true;\r\n }\n })\n .catch(function (error) {\n $.message(error.ExceptionMessage, MessageType.Error);\n });\n };\n }\n ]);","angular.module('NumbersEditor')\r\n .controller('SportCodeEditController', [\r\n '$scope', '$routeParams', 'SportCodeFactory', 'authFactory', '$location', '$rootScope', '$dialogs', '$document', 'sportCodeService',\r\n function ($scope, $routeParams, sportCodeFactory, authFactory, $location, $rootScope, $dialogs, $document, sportCodeService) {\r\n\r\n init();\r\n\r\n $scope.isSubmitting = false;\r\n var _isValid = true;\r\n var _errorMessage = \"\";\r\n\r\n function init() {\r\n if (authFactory.GetAuthenticationData().isAdmin) {\r\n $scope.ForNew = $routeParams.sportCode === undefined;\r\n var title = ($scope.ForNew ? \"Add\" : \"Edit\") + \" Sport Code\";\r\n $rootScope.SetAppTitle(title, title);\r\n getSportCode();\r\n } else {\r\n $location.path(\"\");\r\n }\r\n };\r\n\r\n function getSportCode() {\r\n sportCodeService.getSportCode($scope.ForNew ? '0' : $routeParams.sportCode)\r\n .then(function (sportCodes) {\r\n $scope.SportCode = sportCodes;\r\n $scope.SportCode.IsValid = true;\r\n $scope.SportCode.MinimaIsValid = true;\r\n $scope.SportCode.MaximaIsValid = true;\r\n $scope.SportCode.ResultPlacesIsValid = true;\r\n\r\n for (x in $scope.SportCode.SportCodeList) {\r\n var item = $scope.SportCode.SportCodeList[x];\r\n if (item.SportCode === $scope.SportCode.SportCode) {\r\n $scope.SportCode.SportCodeDesc = item.Description;\r\n }\r\n }\r\n })\r\n .catch(function (error) {\r\n $.message(error.ExceptionMessage, MessageType.Error);\r\n });\r\n };\r\n\r\n $scope.validateMinima = function () {\r\n validate($scope.SportCode.Minima, 'Minima', validateMinimaMaxima);\r\n $scope.SportCode.MinimaIsValid = _isValid;\r\n $scope.SportCode.MinimaErrorMessage = _errorMessage;\r\n setIsValid();\r\n }\r\n\r\n $scope.validateMaxima = function () {\r\n validate($scope.SportCode.Maxima, 'Maxima', validateMinimaMaxima);\r\n $scope.SportCode.MaximaIsValid = _isValid;\r\n $scope.SportCode.MaximaErrorMessage = _errorMessage;\r\n setIsValid();\r\n }\r\n\r\n $scope.validateResultPlaces = function () {\r\n validate($scope.SportCode.ResultPlaces, 'Number of balls drawn', validateResultPlaces);\r\n $scope.SportCode.ResultPlacesIsValid = _isValid;\r\n $scope.SportCode.ResultPlacesErrorMessage = _errorMessage;\r\n setIsValid();\r\n }\r\n\r\n function validate(value, desc, validateField) {\r\n _errorMessage = \"\";\r\n _isValid = true;\r\n\r\n if (isNaN(value) === true) {\r\n _errorMessage = desc + \" is not a number\";\r\n _isValid = false;\r\n }\r\n\r\n if (value % 1 != 0) {\r\n _errorMessage = desc + \" cannot be a decimal number\";\r\n _isValid = false;\r\n }\r\n\r\n var valueNumber = parseInt(value, desc);\r\n validateField(valueNumber, desc);\r\n }\r\n\r\n function validateMinimaMaxima(valueNumber, desc) {\r\n if (valueNumber < 1 || valueNumber >= 1000) {\r\n _errorMessage = desc + \" must be in the range 1 to 999\";\r\n _isValid = false;\r\n }\r\n }\r\n\r\n function validateResultPlaces(valueNumber, desc) {\r\n if (valueNumber < 1 || valueNumber > 100) {\r\n _errorMessage = desc + \" must be in the range 1 to 100\";\r\n _isValid = false;\r\n }\r\n\r\n // Check that it's not more than the Maxima minus the Minima\r\n if (valueNumber > ($scope.SportCode.Maxima - $scope.SportCode.Minima + 1)) {\r\n _errorMessage = desc + \" is greater than the ball range (maxima minus minima)\";\r\n _isValid = false;\r\n }\r\n }\r\n\r\n function setIsValid() {\r\n $scope.SportCode.IsValid = $scope.SportCode.MinimaIsValid && $scope.SportCode.MaximaIsValid && $scope.SportCode.ResultPlacesIsValid;\r\n }\r\n\r\n $scope.SaveSportCode = function () {\r\n if (saveValidate()) {\r\n $scope.isSubmitting = true;\r\n sportCodeFactory.saveSportCode($scope.SportCode)\r\n .success(function () {\r\n $.message(MessageText.SportCodeSuccessfullySaved, MessageType.Success);\r\n $location.path('setupsportcodes');\r\n })\r\n .error(function (error) {\r\n $.message(error.Message, MessageType.Error);\r\n $scope.isSubmitting = false;\r\n });\r\n }\r\n }\r\n\r\n function saveValidate() {\r\n var sportCode = $scope.SportCode;\r\n var validationPassed = true;\r\n if (sportCode.Minima < 1 || sportCode.Minima >= 1000) {\r\n $.message('The Minima must be in the range 1 to 999', MessageType.Error);\r\n validationPassed = false;\r\n };\r\n if (sportCode.Maxima < 1 || sportCode.Maxima >= 1000) {\r\n $.message('The Maxima must be in the range 1 to 999', MessageType.Error);\r\n validationPassed = false;\r\n };\r\n if (sportCode.ResultPlaces < 1 || sportCode.ResultPlaces >= 1000) {\r\n $.message('The Number of balls drawn must be in the range 1 to 100', MessageType.Error);\r\n validationPassed = false;\r\n };\r\n if (sportCode.Minima >= sportCode.Maxima) {\r\n $.message('The Maxima must be greater than the Minima', MessageType.Error);\r\n validationPassed = false;\r\n };\r\n if (sportCode.ResultPlaces > (sportCode.Maxima - sportCode.Minima + 1)) {\r\n $.message('The number of balls is greater than the ball range (maxima minus minima)', MessageType.Error);\r\n validationPassed = false;\r\n };\r\n return validationPassed;\r\n }\r\n\r\n $scope.CancelSaveSportCode = function () {\r\n $location.path(\"setupsportcodes\");\r\n }\r\n }\r\n ]);","angular.module('NumbersEditor').directive('manufacturerWeightValidate', function () {\r\n return {\r\n // restrict to an attribute type.\r\n restrict: 'A',\r\n\r\n // element must have ng-model attribute.\r\n require: 'ngModel',\r\n\r\n // scope = the parent scope\r\n // elem = the element the directive is on\r\n // attr = a dictionary of attributes on the element\r\n // ctrl = the controller for ngModel.\r\n link: function (scope, elem, attr, ctrl) {\r\n\r\n scope.$on(\"kickOffValidations\", function (event, args) {\r\n\r\n var manufacturerBalls = Enumerable.From(scope.EventExtraInfo.ManufacturerBallSets)\r\n .Where(function (i) {\r\n return i.Name === scope.SelectedBallSet;\r\n })\r\n .Select(\"$.ManufacturerBalls\")\r\n .ToArray()[0];\r\n\r\n var x = Enumerable.From(manufacturerBalls)\r\n .Where(function (i) {\r\n return i.BallNumber === parseInt(attr.id);\r\n }).ToArray();\r\n\r\n if (x.length === 1) {\r\n var manufacturerweight = parseFloat(x[0].ManufacturerWeight);\r\n var maxValue = manufacturerweight + 0.5;\r\n var minValue = manufacturerweight - 0.5;\r\n var value = ctrl.$viewValue;\r\n\r\n if (parseFloat(value) < minValue) {\r\n ctrl.$setValidity(\"min\", false);\r\n } else {\r\n ctrl.$setValidity(\"min\", true);\r\n }\r\n\r\n if (parseFloat(value) > maxValue) {\r\n ctrl.$setValidity(\"max\", false);\r\n }\r\n else {\r\n ctrl.$setValidity(\"max\", true);\r\n }\r\n $(\"#\" + attr.id).attr(\"min\", minValue);\r\n $(\"#\" + attr.id).attr(\"max\", maxValue);\r\n }\r\n });\r\n\r\n\r\n\r\n // add a parser that will process each time the value is \r\n // parsed into the model when the user updates it.\r\n ctrl.$parsers.unshift(function (value) {\r\n /* var manufacturerBalls = Enumerable.From(scope.EventExtraInfo.ManufacturerBallSets)\r\n .Where(function (i) {\r\n return i.Name === scope.SelectedBallSet;\r\n })\r\n .Select(\"$.ManufacturerBalls\")\r\n .ToArray()[0];\r\n \r\n var x = Enumerable.From(manufacturerBalls)\r\n .Where(function (i) {\r\n return i.BallNumber === parseInt(attr.id);\r\n }).ToArray();\r\n \r\n if (x.length === 1) {\r\n var manufacturerweight = parseFloat(x[0].ManufacturerWeight);\r\n var maxValue = manufacturerweight + 0.5;\r\n var minValue = manufacturerweight - 0.5;\r\n \r\n if (parseFloat(value) < minValue) {\r\n ctrl.$setValidity(\"min\", false);\r\n } else {\r\n ctrl.$setValidity(\"min\", true);\r\n }\r\n \r\n if (parseFloat(value) > maxValue) {\r\n ctrl.$setValidity(\"max\", false);\r\n }\r\n else {\r\n ctrl.$setValidity(\"max\", true);\r\n }\r\n $(\"#\" + attr.id).attr(\"min\", minValue);\r\n $(\"#\" + attr.id).attr(\"max\", maxValue);\r\n }*/\r\n return value;\r\n });\r\n\r\n // add a formatter that will process each time the value \r\n // is updated on the DOM element.\r\n ctrl.$formatters.unshift(function (value) {\r\n // validate.\r\n //ctrl.$setValidity('regexValidate', regex.test(value));\r\n /*if (isNaN(value)) {\r\n ctrl.$setValidity('manufacturerweight', false);\r\n }*/\r\n\r\n\r\n\r\n /*ctrl.$setValidity(\"manufacturerweight\", true);\r\n if (isNaN(value) === true) {\r\n ctrl.$setValidity(\"manufacturerweight\", false);\r\n }*/\r\n\r\n\r\n\r\n // return the value or nothing will be written to the DOM.\r\n return value;\r\n });\r\n }\r\n };\r\n});","angular.module('NumbersEditor').directive('numbersTimePicker', ['dateFilter', function (dateFilter) {\r\n return {\r\n restrict: 'E',\r\n replace: 'true',\r\n template: '
' +\r\n '' +\r\n ':' +\r\n '' +\r\n ':00' +\r\n '
',\r\n scope: {\r\n eventTime: '=?',\r\n },\r\n link: function (scope) {\r\n if (scope.eventTime == undefined) scope.eventTime = new Date(1970, 00, 01);\r\n var hh = dateFilter(scope.eventTime, \"HH\");\r\n var mm = dateFilter(scope.eventTime, \"mm\");\r\n scope.timeHours = hh == \"00\" ? '' : hh;\r\n scope.timeminutes = mm == \"00\" ? '' : mm;\r\n scope.cssClass = \"input-group input-group-sm timepicker-sm\";\r\n\r\n scope.hours = ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23'];\r\n scope.minutes = ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19',\r\n '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39',\r\n '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59'];\r\n\r\n scope.$watch('timeHours', function () {\r\n if (scope.timeHours != undefined) {\r\n scope.eventTime = new Date(1970, 00, 01, scope.timeHours, scope.timeminutes).getTime();\r\n scope.cssClass = \"input-group input-group-sm timepicker-sm\";\r\n } else {\r\n scope.cssClass = \"input-group input-group-sm timepicker-sm has-error\";\r\n }\r\n });\r\n\r\n scope.$watch('timeminutes', function () {\r\n if (scope.timeminutes != undefined) {\r\n scope.eventTime = new Date(1970, 00, 01, scope.timeHours, scope.timeminutes).getTime();\r\n scope.cssClass = \"input-group input-group-sm timepicker-sm\";\r\n } else {\r\n scope.cssClass = \"input-group input-group-sm timepicker-sm has-error\";\r\n }\r\n });\r\n }\r\n };\r\n}]);","angular.module('NumbersEditor').\r\n factory('AuthInterceptorFactory', [\r\n '$q', '$location', function ($q, $location) {\r\n\r\n var authInterceptorServiceFactory = {};\r\n\r\n authInterceptorServiceFactory.request = function (config) {\r\n config.headers = config.headers || {};\r\n var authData = localStorage.getItem(\"authorizationData\");\r\n\r\n localStorage.setItem(\"activity\", (new Date()).toISOString());\r\n \r\n if (authData != null) {\r\n config.headers.Authorization = 'Bearer ' + JSON.parse(authData).token;\r\n } else {\r\n window.location.assign('login.html');\r\n }\r\n\r\n return config;\r\n }\r\n\r\n authInterceptorServiceFactory.responseError = function (rejection) {\r\n if (rejection.status === 401) {\r\n localStorage.removeItem(\"authorizationData\");\r\n localStorage.removeItem(\"authenticationData\");\r\n localStorage.removeItem(\"authenticationRefreshData\");\r\n localStorage.removeItem(\"activity\");\r\n localStorage.removeItem(\"homeFilterData\");\r\n //$location.path('/login');\r\n window.location = \"/login.html\";\r\n return;\r\n }\r\n \r\n return $q.reject(rejection);\r\n }\r\n\r\n return authInterceptorServiceFactory;\r\n }\r\n ]);","angular.module('NumbersEditor')\r\n .factory('EventFactory', [\r\n '$http', function($http) {\r\n\r\n var urlBase = '/api/Event';\r\n var eventFactory = {};\r\n\r\n eventFactory.GetEvent = function(id) {\r\n return $http.get(urlBase + '/' + id);\r\n };\r\n\r\n eventFactory.Save = function(event) {\r\n return $http.post(urlBase, event);\r\n };\r\n\r\n eventFactory.Update = function(id, event) {\r\n return $http.put(urlBase + '/' + id, event);\r\n };\r\n\r\n eventFactory.Delete = function(id) {\r\n return $http.delete(urlBase + '/' + id);\r\n };\r\n\r\n eventFactory.Active = function(id) {\r\n return $http.post(urlBase + '/' + id + '/active');\r\n };\r\n\r\n eventFactory.StartBroadcast = function(id) {\r\n return $http.post(urlBase + '/' + id + '/startBroadcast');\r\n };\r\n\r\n eventFactory.EndBroadcast = function(id) {\r\n return $http.post(urlBase + '/' + id + '/endBroadcast');\r\n };\r\n\r\n eventFactory.Release = function(id, releasedTime) {\r\n var eventDtoAdd = { RefId: id, EventTime: releasedTime };\r\n return $http.post(urlBase + '/' + id + '/release', eventDtoAdd);\r\n };\r\n\r\n eventFactory.Cancel = function(id) {\r\n return $http.post(urlBase + '/' + id + '/cancel');\r\n };\r\n\r\n eventFactory.Suspend = function(id) {\r\n return $http.post(urlBase + '/' + id + '/suspend');\r\n };\r\n\r\n eventFactory.ChangePending = function(id) {\r\n return $http.post(urlBase + '/' + id + '/changePending');\r\n };\r\n\r\n eventFactory.Void = function(id) {\r\n return $http.post(urlBase + '/' + id + '/void');\r\n };\r\n\r\n eventFactory.FortynineDefaultEvents = function(startDate) {\r\n var sixteenFortyNine = 60540000; // 1970-01-01:16:49:00 \r\n var seventeenFortyNine = 64140000; // 1970-01-01:17:49:00\r\n var eventTime = undefined;\r\n\r\n if (startDate.getDay() == 0) {\r\n eventTime = sixteenFortyNine;\r\n } else {\r\n eventTime = seventeenFortyNine;\r\n }\r\n\r\n var events =\r\n [\r\n {\r\n EventNumber: 1,\r\n EventTime: 46140000,\r\n Status: \"I\",\r\n },\r\n {\r\n EventNumber: 2,\r\n EventTime: eventTime,\r\n Status: \"I\",\r\n }\r\n ];\r\n\r\n return events;\r\n };\r\n\r\n eventFactory.IrishLotteryDefaultEvents = function() {\r\n var events =\r\n [\r\n {\r\n EventNumber: 1,\r\n EventTime: 71100000,\r\n Status: \"I\",\r\n },\r\n {\r\n EventNumber: 2,\r\n EventTime: 71100000,\r\n Status: \"I\",\r\n },\r\n {\r\n EventNumber: 3,\r\n EventTime: 71100000,\r\n Status: \"I\",\r\n }\r\n ];\r\n\r\n return events;\r\n };\r\n\r\n eventFactory.SaveResult = function(id, resultPlaces) {\r\n var resultDtoAdd = { EventId: id, ResultPlaces: resultPlaces };\r\n return $http.post(urlBase + '/' + id + '/addResult', resultDtoAdd);\r\n };\r\n\r\n eventFactory.SaveEventExtraInfo = function(id, eventExtraInfoDto) {\r\n return $http.post(urlBase + '/' + id + '/SaveEventExtraInfo', eventExtraInfoDto);\r\n };\r\n\r\n eventFactory.GetEventExtraInfo = function(id, ballSetId) {\r\n return $http.get(urlBase + '/' + id + '/GetEventExtraInfo?ballSetId=' + ballSetId);\r\n };\r\n\r\n eventFactory.SavePreDrawCertificate = function(id, preDrawCertificate) {\r\n return $http.post(urlBase + '/' + id + '/SavePreDrawCertificate', preDrawCertificate);\r\n };\r\n\r\n eventFactory.GetPreDrawCertificate = function (id) {\r\n return $http.get(urlBase + '/' + id + '/GetPreDrawCertificate');\r\n };\r\n\r\n eventFactory.GetPreDrawValidation = function (id) {\r\n return $http.get(urlBase + '/' + id + '/GetPreDrawValidation');\r\n };\r\n\r\n eventFactory.GetDrawApprovalDto = function (id) {\r\n return $http.get(urlBase + '/' + id + '/GetDrawApprovalDto');\r\n };\r\n\r\n eventFactory.PublishResultWithRandomResultChallenge = function (id, randomResultChallenge) {\r\n return $http.post(urlBase + '/' + id + '/PublishResultWithRandomResultChallenge', randomResultChallenge);\r\n };\r\n\r\n eventFactory.CanAccessTheEvent = function(id) {\r\n return $http.get(urlBase + '/' + id + '/CanAccessTheEvent');\r\n };\r\n\r\n return eventFactory;\r\n }\r\n ]);","angular.module('NumbersEditor')\r\n .factory('GameFactory', [\r\n '$http', 'EventFactory', function($http, eventFactory) {\r\n\r\n var urlBase = '/api/Game';\r\n var gameFactory = {};\r\n\r\n gameFactory.getGame = function (id, sportCode, startDate) {\r\n return $http.get(urlBase + '/' + id + \"?sportCode=\" + sportCode + \"&startDate=\" + encodeURIComponent(startDate));\r\n };\r\n\r\n gameFactory.insertGame = function(game) {\r\n return $http.post(urlBase, game);\r\n };\r\n\r\n gameFactory.saveGame = function (game) {\r\n return $http.post(urlBase + '/' + game.id + '/save', game);\r\n };\r\n\r\n gameFactory.deleteGame = function(id) {\r\n return $http.delete(urlBase + '/' + id);\r\n };\r\n\r\n gameFactory.DeleteGame = function (id) {\r\n return $http.delete(urlBase + '/' + id);\r\n }\r\n\r\n gameFactory.CancelGame = function(id) {\r\n return $http.post(urlBase + '/' + id + '/cancel');\r\n };\r\n\r\n gameFactory.VoidGame = function(id) {\r\n return $http.post(urlBase + '/' + id + '/void');\r\n };\r\n\r\n gameFactory.UnCancelGame = function(id) {\r\n return $http.post(urlBase + '/' + id + '/uncancel');\r\n };\r\n\r\n gameFactory.newGame = function(sportCode, startDate) {\r\n var events;\r\n\r\n if (sportCode == \"49\")\r\n events = eventFactory.FortynineDefaultEvents();\r\n else\r\n events = eventFactory.IrishLotteryDefaultEvents();\r\n\r\n var game =\r\n {\r\n StartDate: startDate,\r\n SportCode: sportCode,\r\n Events: events\r\n };\r\n return game;\r\n };\r\n\r\n gameFactory.TwoDrawApprovedButtons = function () {\r\n return $http.get(urlBase + \"/TwoDrawApprovedButtons\");\r\n };\r\n\r\n gameFactory.GetdrawApprovalDetails = function (id) {\r\n return $http.get(urlBase + '/' + id + '/GetdrawApprovalDetails');\r\n };\r\n\r\n gameFactory.SiSTechApprove = function (id) {\r\n return $http.post(urlBase + '/' + id + '/SiSTechApprove');\r\n };\r\n\r\n gameFactory.AdjudicatorApprove = function (id) {\r\n return $http.post(urlBase + '/' + id + '/AdjudicatorApprove');\r\n };\r\n \r\n gameFactory.PublishResult = function (id) {\r\n return $http.post(urlBase + '/' + id + '/publishresult');\r\n };\r\n return gameFactory;\r\n }\r\n ]);","angular.module('NumbersEditor')\r\n .factory('HomeFactory', [\r\n '$http', function($http) {\r\n\r\n var urlBase = '/api/home';\r\n var homeFactory = {};\r\n\r\n homeFactory.getTodaysGames = function (fromDate, toDate) {\r\n var fromDateParam = new Date(fromDate).toDateString();\r\n var toDateParam = new Date(toDate).toDateString();\r\n return $http.get(urlBase + '/getWithFilter?fromDate=' + fromDateParam + '&toDate=' + toDateParam);\r\n };\r\n\r\n homeFactory.getUpcomingGames = function() {\r\n return $http.get(urlBase + '/upcoming');\r\n };\r\n\r\n return homeFactory;\r\n }\r\n ]);","angular.module('NumbersEditor')\r\n .factory('NewAdhocGameFactory', [\r\n '$http', function ($http) {\r\n\r\n var urlBase = '/api/Game';\r\n var newAdhocGameFactory = {};\r\n\r\n newAdhocGameFactory.getNewAdhocGame = function () {\r\n return $http.get(urlBase + \"/NewAdhocGame\");\r\n };\r\n return newAdhocGameFactory;\r\n }\r\n ]);","angular.module('NumbersEditor')\r\n .factory('NewGameFactory', [\r\n '$http', function($http) {\r\n\r\n var urlBase = '/api/Game';\r\n var gameFactory = {};\r\n\r\n gameFactory.checkGameByDate = function (date) {\r\n return $http.post(urlBase + '/checkGame', date);\r\n };\r\n\r\n gameFactory.insertGame = function(game) {\r\n return $http.post(urlBase, game);\r\n };\r\n\r\n gameFactory.newGame = function(sportCode, startDate) {\r\n var newGameDto = { SportCode: sportCode, StartDate: startDate };\r\n return $http.post(urlBase + '/newGame', newGameDto);\r\n };\r\n\r\n gameFactory.AddEvent = function(eventLen) {\r\n var event = {\r\n Id: 0,\r\n EventNumber: eventLen + 1,\r\n EventTime: null,\r\n Status: \"I\",\r\n IsDefault: false\r\n }\r\n\r\n return event;\r\n };\r\n\r\n return gameFactory;\r\n }\r\n ]);","angular.module('NumbersEditor')\r\n .factory('PublishGameFactory', [\r\n '$http', function($http) {\r\n\r\n var urlBase = '/api/Game';\r\n var publishGameFactory = {};\r\n\r\n publishGameFactory.PublishGame = function(id) {\r\n return $http.post(urlBase + '/' + id + '/publish');\r\n };\r\n\r\n publishGameFactory.HasLastWeekGameCompleted = function(id) {\r\n return $http.get(urlBase + '/' + id + '/haslastweekgamecompleted');\r\n };\r\n\r\n \r\n\r\n return publishGameFactory;\r\n }\r\n ]);","angular.module('NumbersEditor')\r\n .factory('SearchFactory', [\r\n '$http', function ($http) {\r\n\r\n var urlBase = '/api/home';\r\n var searchFactory = {};\r\n\r\n searchFactory.searchGame = function (date) {\r\n var param = zeroPad(date.getDate(), 2) + \"\" +\r\n zeroPad(date.getMonth() + 1, 2) + \"\" +\r\n date.getFullYear();\r\n return $http.post(urlBase + '/search/' + param);\r\n };\r\n\r\n function zeroPad(num, places) {\r\n var zero = places - num.toString().length + 1;\r\n return Array(+(zero > 0 && zero)).join(\"0\") + num;\r\n }\r\n\r\n return searchFactory;\r\n }\r\n ]);","angular.module('NumbersEditor')\r\n .factory('SettingFactory', [\r\n '$http', function($http) {\r\n\r\n var urlBase = '/api/Setting';\r\n var settingFactory = {};\r\n\r\n settingFactory.GetAll = function() {\r\n return $http.get(urlBase);\r\n };\r\n\r\n settingFactory.GetById = function(id) {\r\n return $http.get(urlBase + \"/\" + id);\r\n };\r\n\r\n settingFactory.Save = function (setting) {\r\n return $http.post(urlBase ,setting);\r\n };\r\n\r\n settingFactory.Update = function (setting) {\r\n return $http.put(urlBase,setting );\r\n };\r\n\r\n return settingFactory;\r\n }\r\n ]);","angular.module('NumbersEditor')\r\n .factory('SportCodeFactory', [\r\n '$http', function ($http) {\r\n\r\n var urlBase = '/api/SportCode';\r\n var sportCodeFactory = {};\r\n\r\n sportCodeFactory.getAll = function () {\r\n return $http.get(urlBase);\r\n };\r\n\r\n sportCodeFactory.get = function (sportCode) {\r\n return $http.get(urlBase + \"/\" + sportCode);\r\n };\r\n\r\n sportCodeFactory.saveSportCode = function (sportCode) {\r\n return $http.post(urlBase + \"/save\", sportCode);\r\n };\r\n\r\n sportCodeFactory.deleteSportCode = function (sportCode) {\r\n return $http.delete(urlBase + \"/\" + sportCode);\r\n };\r\n\r\n return sportCodeFactory;\r\n }\r\n ]);","//angular.module(\"NumbersEditor\").filter('sportCodeDesc', function () {\r\n// return function (input) {\r\n// switch (input) {\r\n// case \"49\":\r\n// return \"49\";\r\n// case \"IL\":\r\n// return \"Irish Lottery\";\r\n// default:\r\n// return input;\r\n// }\r\n// }\r\n//});","angular.module(\"NumbersEditor\").filter('ToEventDesc', function () {\r\n return function (input) {\r\n switch (input) {\r\n case \"I\":\r\n return \"Initial\";\r\n case \"A\":\r\n return \"Active\";\r\n case \"O\":\r\n return \"Released\";\r\n case \"R\":\r\n return \"Resulted\";\r\n case \"S\":\r\n return \"Suspended\";\r\n case \"P\":\r\n return \"Change Pending\";\r\n case \"V\":\r\n return \"Void\";\r\n case \"C\":\r\n return \"Cancelled\";\r\n case \"X\":\r\n return \"Resulted\"; //Pre-Resulted\r\n default:\r\n return \"STATUS DESC NOT FOUND\";\r\n }\r\n };\r\n});","angular.module(\"NumbersEditor\").filter('ToGameDesc', function () {\r\n return function (input) {\r\n switch (input) {\r\n case \"I\":\r\n return \"Initial\";\r\n case \"O\":\r\n return \"On\";\r\n case \"V\":\r\n return \"Void\";\r\n case \"C\":\r\n return \"Cancelled\";\r\n default:\r\n return \"STATUS DESC NOT FOUND\";\r\n }\r\n };\r\n});","angular.module(\"NumbersEditor\").filter('ToPublishDateTime', ['$filter', function ($filter) {\r\n return function (input) {\r\n\r\n if (input == null)\r\n return \"00:00:00\";\r\n return $filter(\"date\")(input, \"HH:mm:ss, dd/MM/yyyy\");\r\n }\r\n}]);","angular.module('NumbersEditor')\r\n .service('gameService', ['PublishGameFactory','NewGameFactory','GameFactory','$q', 'moment', function (publishGameFactory, newGameFactory, gameFactory, $q, moment) {\r\n function gameService(publishGameFactory, newGameFactory, gameFactory, $q) {\r\n var self = this;\r\n self._publishGameFactory = publishGameFactory;\r\n self._newGameFactory = newGameFactory;\r\n self._gameFactory = gameFactory;\r\n self._$q = $q;\r\n };\r\n\r\n gameService.prototype.deleteGame = function(game) {\r\n var self = this;\r\n return self._gameFactory.deleteGame(game.Id);\r\n }\r\n\r\n gameService.prototype.saveGame = function (game) {\r\n var self = this;\r\n\r\n for (var i = 0; i < game.Events.length; i++) {\r\n \r\n const hours = parseInt(game.Events[i].EventTime.split(':')[0], 10);\r\n const minutes = parseInt(game.Events[i].EventTime.split(':')[1], 10);\r\n\r\n const eventTime = moment.tz(moment.tz.guess());\r\n const offset = eventTime.utcOffset() / 60;\r\n eventTime.set('hour', hours + offset);\r\n eventTime.set('minute', minutes);\r\n eventTime.set('second', 00);\r\n \r\n game.Events[i].EventTime = eventTime.valueOf();\r\n }\r\n\r\n return self._newGameFactory.insertGame(game);\r\n };\r\n\r\n gameService.prototype.getGame = function(gameId, sportCode, startDate) {\r\n var self = this;\r\n var deferred = self._$q.defer();\r\n self._gameFactory.getGame(gameId, sportCode, startDate)\r\n .success(function(game) {\r\n for (var i = 0; i < game.Events.length; i++) {\r\n\r\n const et = moment.tz(moment.tz.guess());\r\n \r\n var dateAndTime = game.Events[i].EventTime.split('T');\r\n var eventTime = dateAndTime[1];\r\n var hoursAndMinutes = eventTime.split(':');\r\n\r\n et.set('hour', hoursAndMinutes[0]);\r\n et.set('minute', hoursAndMinutes[1]);\r\n \r\n //console.log(et.format('HH:mm'));\r\n //console.log(et.format().substring(0, et.format() - 6) + 'Z');\r\n\r\n game.Events[i].EventTime = et.format('HH:mm'); // hoursAndMinutes[0] + ':' + hoursAndMinutes[1];\r\n //game.Events[i].EventTimeDisplay = et.format(); //.substring(0, et.format()-6) + 'Z'; // hoursAndMinutes[0] + ':' + hoursAndMinutes[1];\r\n }\r\n deferred.resolve(game);\r\n })\r\n .error(function(error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n gameService.prototype.publishGame = function(gameId) {\r\n var self = this;\r\n return self._publishGameFactory.PublishGame(gameId);\r\n }\r\n\r\n gameService.prototype.setDatePicker = function ($scope) {\r\n var body = document.getElementsByTagName(\"body\")[0];\r\n body.addEventListener(\"click\", function () {\r\n $scope.opened = false;\r\n });\r\n\r\n window.setTimeout(function () {\r\n // Remove the close button on the date picker as it causes the dialog not to open\r\n var buttons = document.getElementsByClassName(\"btn-success\");\r\n for (var i = 0; i < buttons.length; i++) {\r\n if (buttons[i].parentElement.parentElement.classList.contains(\"dropdown-menu\")) {\r\n buttons[i].style.display = 'none';\r\n }\r\n }\r\n }, 200);\r\n }\r\n\r\n return new gameService(publishGameFactory, newGameFactory, gameFactory, $q);\r\n }]);","angular.module('common')\r\n .service('localStorageService', [function () {\r\n function LocalStorageService() {\r\n };\r\n\r\n LocalStorageService.prototype.storeUserData = function (response, userName, isAdmin, isTechSuper, credsKey) {\r\n var authentication = {\r\n username: userName,\r\n isAdmin: isAdmin,\r\n steps: !(isAdmin || isTechSuper),\r\n isTechSuper: isTechSuper\r\n };\r\n\r\n var authenticationRefresh = {\r\n credsKey: credsKey,\r\n expires_in: response.expires_in,\r\n timestamp: (new Date()).toISOString()\r\n };\r\n\r\n var authorizationData = JSON.stringify({ token: response.access_token, username: userName });\r\n var authenticationData = JSON.stringify(authentication);\r\n var authenticationRefreshData = JSON.stringify(authenticationRefresh);\r\n\r\n localStorage.setItem(\"authorizationData\", authorizationData);\r\n localStorage.setItem(\"authenticationData\", authenticationData);\r\n localStorage.setItem(\"authenticationRefreshData\", authenticationRefreshData);\r\n };\r\n\r\n return new LocalStorageService();\r\n }]);","angular.module('NumbersEditor')\r\n .service('newAdhocService', ['NewAdhocGameFactory', '$q', function (newAdhocGameFactory, $q) {\r\n function newAdhocService(newAdhocGameFactory, $q) {\r\n var self = this;\r\n self._newAdhocGameFactory = newAdhocGameFactory;\r\n self._$q = $q;\r\n };\r\n\r\n newAdhocService.prototype.getNewAdhocGame = function () {\r\n var self = this;\r\n var deferred = self._$q.defer();\r\n self._newAdhocGameFactory.getNewAdhocGame()\r\n .success(function (newAdhoc) {\r\n deferred.resolve(newAdhoc);\r\n })\r\n .error(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n return new newAdhocService(newAdhocGameFactory, $q);\r\n }]);","angular.module('common')\r\n .service('sentryService', ['appInfoFactory', '$log', function (appInfoFactory, $log) {\r\n function SentryService(appInfoFactory) {\r\n var self = this;\r\n self._appInfoFactory = appInfoFactory;\r\n self._$log = $log;\r\n };\r\n\r\n SentryService.prototype.init = function() {\r\n var self = this;\r\n self._appInfoFactory.getSentryInfo()\r\n .success(function(result) {\r\n Raven.config(result.DSN, {\r\n release : result.Version\r\n }).install();\r\n }).error(function() {\r\n self._$log.error('Failed to initialise Raven/Sentry config');\r\n });\r\n };\r\n\r\n return new SentryService(appInfoFactory);\r\n }]);","angular.module('NumbersEditor')\r\n .service('sportCodeService', ['SportCodeFactory', '$q', 'moment', function (sportCodeFactory, $q, moment) {\r\n function sportCodeService(sportCodeFactory, $q) {\r\n var self = this;\r\n self._sportCodeFactory = sportCodeFactory;\r\n self._$q = $q;\r\n };\r\n\r\n sportCodeService.prototype.getSportCodes = function () {\r\n var self = this;\r\n var deferred = self._$q.defer();\r\n self._sportCodeFactory.getAll()\r\n .success(function (sportCodes) {\r\n deferred.resolve(sportCodes);\r\n })\r\n .error(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n sportCodeService.prototype.getSportCode = function (sportCode) {\r\n var self = this;\r\n var deferred = self._$q.defer();\r\n self._sportCodeFactory.get(sportCode)\r\n .success(function (sportCodes) {\r\n deferred.resolve(sportCodes);\r\n })\r\n .error(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n return new sportCodeService(sportCodeFactory, $q);\r\n }]);"],"sourceRoot":"/source/"}