{"version":3,"sources":["common-app.js","common-log.js","fmg-app-switch-directive.js","fmg-logi-directive.js","redirectionController.js"],"names":["Message","text","this","String","prototype","startsWith","searchString","position","substr","length","angular","module","config","AnalyticsProvider","GoogleAnalyticsConfig","Account","setAccount","trackPages","run","Analytics","$transitions","$location","onSuccess","transition","trackPage","path","constant","name","factory","logTimeTaken","request","requestTimestamp","Date","getTime","response","responseTimestamp","app_env","$templateCache","templateCache","method","url","indexOf","undefined","get","versionNumber","version","replace","$httpProvider","interceptors","push","provider","activeService","setService","serviceId","serviceName","Id","Name","$get","$mdIconProvider","iconSet","$injector","notificationService","showActionToast","actionText","action","$mdToast","toast","simple","content","highlightAction","hideDelay","show","then","showToast","showTokenTimeoutWarning","showAuthTimeoutMessage","showConnectionError","showAccountLocked","$rootScope","$http","locker","$interval","$state","$window","commonLogService","loginUrl","baseUrl","renewTokenUrl","ntlmUrl","ntlmAuthUrl","gotoLogin","launcherPath","location","pathname","href","protocol","host","authService","login","user","completedCallback","failedLoginCallback","payload","decorateApiPromise","post","data","tkn","JSON","parse","Token","put","ResetPassword","Code","status","loginWithCode","code","failedLogin","errorResponse","ntlmLogin","withCredentials","errResponse","tryPassword","pwd","password","getAuthHeader","internalLogin","pushToken","token","parsedToken","renewToken","isLoggedIn","errorData","dropToken","empty","logout","has","identity","getToken","getRoles","roles","hasRole","targets","some","role","getIdentityName","getAuthHeaderName","getAuthHeaderValue","stringify","headers","warnExpire","expires","untilExpire","expMoment","moment","msToExpire","diff","to","hasExpired","isBefore","expireCheck","res","getTenantId","tok","tenantId","current","screenService","blockScreen","_pageLoad","clearScreen","isBlocked","tenantSetupService","activeSettings","getSettings","getTenantSettings","settingKey","TenantId","authenticationService","$q","orgService","getCurrentUserTenant","getCompany","companyId","getCurrentUserOrg","getProductsOnContract","contractId","getMyOrg","getMyOrgWithChildren","getOrgChildren","orgId","getMyOrgMap","search","fetchPartialTree","rootCompanyId","RootCompanyId","AddCompanyLeaf","knownas","parentCompanyId","KnownAs","ParentCompanyId","list","cache","structure","lookup","id","that","org","find","OrganisationId","OrganisationName","getTopLevelCompanies","orgSettingsService","initDone","init","groupName","onInitPromise","settings","getSetting","key","_","i","Key","controller","$scope","service","organisationService","screenBlockService","env","PAC","activeTenant","activeTenantCompany","activeContract","products","loaded","outputProducts","hasPacLoaded","hasReportClaimsRestrictionRole","userRoles","x","hasUserGotFIMInsurerRole","getCurrentTenant","loadTenantOrganisation","CompanyId","findContractForService","CustomerContracts","c","Service","ServiceId","CustomerContractId","flatternProducts","getPaths","parentPath","product","paths","newParentPath","each","SubProducts","p","map","flatPaths","flattenDeep","flatProducts","completedPAC","pac","IsPacDone","GetProductMap","HasProduct","productFlatPath","contains","HasProductFromArray","uac","requiredRole","r","directive","$animate","PACCheckerService","transclude","priority","terminal","restrict","link","$element","$attr","ctrl","$transclude","block","childScope","$observe","value","$eval","$new","clone","startNode","endNode","document","createComment","rlnRequireRoles","enter","parent","$destroy","leave","getBlockElements","UACService","applyBranding","brand","BrandIdentity","loginLogoUrl","logoUrl","css","envVersion","displayName","groups","require","scope","elem","attrs","ngModel","on","e","files","$setViewValue","fmgApp","appProduct","svc","buildStubLogPayload","eventName","isError","source","application","level","appVersion","eventData","sendEvent","loggingEnabled","resolve","reject","apiPromise","decorateApiFunction","func","sendApiResponseEvent","api","substring","resultCode","responseTime","time","err","window","fmgCommon","productCount","icon","userToken","grp","navigateTo","className","claims","OnInit","autoNavigate","activatedProducts","filter","templateUrl","__reportName","__parameters","__reportId","refresh","autoLoad","renderCompleted","$watch","newValue","report","options","applicationUrl","autoSizing","secureKey","linkParams","EmbeddedReporting","remove","isLoading","create","originalMethod","frameLoaded","$apply","call","autoLoadInterval","target","getElementById","stopInterval","$on","isDefined","cancel","template","go"],"mappings":"AAAA,YAQA,SAASA,SAAQC,GACbC,KAAKD,KAAOA,EARXE,OAAOC,UAAUC,aAClBF,OAAOC,UAAUC,WAAa,SAASC,EAAcC,GAEjD,MADAA,GAAWA,GAAY,EAChBL,KAAKM,OAAOD,EAAUD,EAAaG,UAAYH,IAQ9DI,QACKC,OAAO,mBAAoB,aAAc,aAAc,YAAa,YAAa,iBAAkB,6BACnGC,QAAAA,oBAAAA,wBAAO,SAASC,EAAmBC,GACK,YAAjCA,EAAsBC,SACtBF,EAAkBG,WAAWF,EAAsBC,SAASE,YAAW,MAG9EC,KAAAA,YAAAA,eAAAA,YAIG,SAASC,EAAWC,EAAcC,GAC9BD,EAAaE,aAAc,SAASC,GAChCJ,EAAUK,UAAUH,EAAUI,aAIzCC,SAAS,cACNC,KAAM,WAETC,QAAQ,eAAgB,WACrB,GAAIC,IACAC,QAAS,SAASlB,GAEd,MADAA,GAAOmB,kBAAmB,GAAIC,OAAOC,UAC9BrB,GAEXsB,SAAU,SAASA,GAEf,MADAA,GAAStB,OAAOuB,mBAAoB,GAAIH,OAAOC,UACxCC,GAGf,OAAOL,KAEVD,QAAQ,wBAAA,UAAA,iBAAwB,SAASQ,EAASC,GAC/C,GAAIC,IACAR,QAAS,SAASA,GAEd,GAAuB,QAAnBA,EAAQS,QAAqD,KAAjCT,EAAQU,IAAIC,QAAQ,UAAuDC,SAApCL,EAAeM,IAAIb,EAAQU,KAAoB,CAClH,GAAII,GAAgBR,EAAQS,QAAQC,QAAQ,MAAO,IACnDhB,GAAQU,IAAMV,EAAQU,IAAM,MAAQI,EAGxC,MAAOd,IAGf,OAAOQ,MAEV1B,QAAAA,gBAAO,SAASmC,GACbA,EAAcC,aAAaC,KAAK,gBAChCF,EAAcC,aAAaC,KAAK,2BAEnCC,SAAS,UAAW,WACjB,GAAIC,KAEJjD,MAAKkD,WAAa,SAASC,EAAWC,GAClCH,GACII,GAAIF,EACJG,KAAMF,IAIdpD,KAAKuD,KAAO,WACR,MAAON,MAGdvC,QAAAA,kBAAO,SAAS8C,GAEbA,EACKC,QAAQ,SAAU,uCAAwC,IAC1DA,QAAQ,QAAS,sCAAuC,IACxDA,QAAQ,KAAM,mCAAoC,IAClDA,QAAQ,gBAAiB,8CAA+C,IACxEA,QAAQ,MAAO,oCAAqC,IACpDA,QAAQ,UAAW,wCAAyC,IAC5DA,QAAQ,SAAU,uCAAwC,IAC1DA,QAAQ,SAAU,uCAAwC,IAC1DA,QAAQ,OAAQ,qCAAsC,IACtDA,QAAQ,WAAY,yCAA0C,IAC9DA,QAAQ,QAAS,sCAAuC,IACxDA,QAAQ,QAAS,sCAAuC,IACxDA,QAAQ,OAAQ,qCAAsC,IACtDA,QAAQ,aAAc,2CAA4C,IAClEA,QAAQ,eAAgB,6CAA8C,IACtEA,QAAQ,SAAU,uCAAwC,IAC1DA,QAAQ,OAAQ,qCAAsC,IACtDA,QAAQ,WAAY,yCAA0C,IAC9DA,QAAQ,SAAU,uCAAwC,OAElE/B,QAAQ,uBAAA,YAAuB,SAASgC,GAErC,GAAIC,KA+DJ,OA7DAA,GAAoBC,gBAAkB,SAAS7D,EAAM8D,EAAYC,GAC7D,GAAIC,GAAWL,EAAUjB,IAAI,YACzBuB,EAAQD,EACPE,SACAC,QAAQnE,GACR+D,OAAOD,GACPM,iBAAgB,GAChBC,UAAU,GACV/D,SAAS,YACd0D,GAASM,KAAKL,GAAOM,KAAK,SAAStC,GACf,MAAZA,GACI8B,GACAA,OAQhBH,EAAoBY,UAAY,SAASxE,GACrC,GAAIgE,GAAWL,EAAUjB,IAAI,YACzBuB,EAAQD,EACPE,SACAC,QAAQnE,GACRqE,UAAU,KACV/D,SAAS,YAEd0D,GAASM,KAAKL,IAGlBL,EAAoBa,wBAA0B,SAASV,GACnDH,EAAoBC,gBAAgB,kCAAmC,oBAAqBE,IAGhGH,EAAoBc,uBAAyB,WACzCd,EAAoBY,UAAU,0DAGlCZ,EAAoBe,oBAAsB,WACtC,GAAIX,GAAWL,EAAUjB,IAAI,WAC7BsB,GAASM,KACLN,EACKE,SACAC,QAAQ,sGACR7D,SAAS,aACT+D,UAAU,OAIvBT,EAAoBgB,kBAAoB,WACpC,GAAIZ,GAAWL,EAAUjB,IAAI,WAC7BsB,GAASM,KACLN,EACKE,SACAC,QAAQ,iEACR7D,SAAS,aACT+D,UAAU,OAIhBT,KAEVjC,QAAQ,yBAAA,aAAA,YAAA,UAAA,QAAA,SAAA,YAAA,sBAAA,SAAA,UAAA,mBAAyB,SAC9BkD,EACAzD,EACAe,EACA2C,EACAC,EACAC,EACApB,EACAqB,EACAC,EACAC,GAEA,GAAIC,GAAWjD,EAAQkD,QAAU,gCAC7BC,EAAgBnD,EAAQkD,QAAU,qCAClCE,EAAUpD,EAAQqD,YAAc,QAEhCC,EAAY,WACZ,GAAIC,GAAe,eAEdR,GAAQS,SAASC,SAASxF,WAAWsF,KACtCR,EAAQS,SAASE,KAAOX,EAAQS,SAASG,SAAW,KAAOZ,EAAQS,SAASI,KAAOL,IAIvFM,IA+OJ,OA7OAA,GAAYC,MAAQ,SAASC,EAAMC,EAAmBC,GAClD,GAAIC,GAAUH,CACdG,GAAQ9D,IAAMnB,EAAU2E,OAExBZ,EACKmB,mBAAmBxB,EAAMyB,KAAKnB,EAAUiB,IACxC9B,KAAK,SAAStC,GACX,GAAIuE,GAAOvE,EAASuE,KAChBC,EAAMC,KAAKC,MAAMH,EAAKI,MAC1B7B,GAAO8B,IAAI,QAASJ,GAGpBN,EAAkBK,EAAKM,cAAeN,EAAKO,QARnD5B,SAUW,SAASlD,GACY,MAApBA,EAAS+E,OAELZ,GACAA,GAAoB,GAEG,MAApBnE,EAAS+E,QAChBpD,EAAoBgB,oBAChBwB,GACAA,GAAoB,KAIxBxC,EAAoBe,sBAEhByB,GACAA,GAAoB,OAKxCJ,EAAYiB,cAAgB,SAASC,EAAMf,EAAmBgB,GAC1DhC,EACKmB,mBAAmBxB,EAAMyB,KAAKpE,EAAQkD,QAAU,2BAA6B6B,IAC7E3C,KAAK,SAAStC,GACX,GAAIwE,GAAMC,KAAKC,MAAM1E,EAASuE,KAAKI,MACnC7B,GAAO8B,IAAI,QAASJ,GAEpBN,EAAkBlE,EAASuE,KAAKM,cAAe7E,EAASuE,KAAKO,QANrE5B,SAQW,SAASiC,GACZD,EAAYC,EAAcJ,WAGtChB,EAAYqB,UAAY,SAASlB,EAAmBC,GAChDjB,EACKmB,mBACGxB,EAAMpC,IAAI6C,GACN+B,iBAAiB,KAGxB/C,KAAK,SAAStC,GAEX8C,EAAO8B,IAAI,QAAS5E,EAASuE,MAC7BL,GAAkB,EAAO,QATjChB,SAWW,SAASoC,GAEZnB,OAIZJ,EAAYwB,YAAc,SAASC,GAC/B,GAAIpB,IACAqB,SAAUD,EAEd,OAAO3C,GAAMyB,KAAKpE,EAAQkD,QAAU,4BAA6BgB,EAASL,EAAY2B,kBAG1F3B,EAAY4B,cAAgB,WACxB,GAAInB,GAAM,IACV,OAAO3B,IACHxC,OAAQ,MACRC,IAAKJ,EAAQqD,YAAc,QAC3B8B,iBAAiB,IAClB/C,KACC,SAAStC,GAGL,MAFAwE,GAAMxE,EAASuE,KACfzB,EAAO8B,IAAI,QAASJ,GACbxE,GAEX,SAASmF,GACL,MAAOA,MAKnBpB,EAAY6B,UAAY,SAASC,GAC7B,GAAIC,GAAcrB,KAAKC,MAAMmB,EAC7B/C,GAAO8B,IAAI,QAASkB,IAExB/B,EAAYgC,WAAa,WAErB,MAAIhC,GAAYiC,aACLnD,EAAMpC,IAAI4C,EAAeU,EAAY2B,iBAAiBpD,KACzD,SAAStC,GACL8C,EAAO8B,IAAI,QAAS5E,EAASuE,OAGjC,SAAS0B,GAELtE,EAAoBe,wBARhC,QAaJqB,EAAYmC,UAAY,WACpBpD,EAAOqD,SAGXpC,EAAYqC,OAAS,WACjBrC,EAAYmC,YACZ1C,KAEJO,EAAYiC,WAAa,WACrB,GAAIlD,EAAOuD,IAAI,SAAU,CACrB,GAAI7B,GAAM1B,EAAOrC,IAAI,QACrB,OAAI+D,IAAOA,EAAI8B,UACJ,GAIJ,EAIX,OAAO,GAEXvC,EAAYwC,SAAW,WACnB,MAAIxC,GAAYiC,aACLlD,EAAOrC,IAAI,SAEX,MAGfsD,EAAYyC,SAAW,WACnB,GAAIhC,GAAMT,EAAYwC,UACtB,OAAI/B,IAAOA,EAAIiC,MACJjC,EAAIiC,UAKnB1C,EAAY2C,QAAU,SAASC,GAC3B,MAAO5C,GAAYyC,WAAWI,KAAK,SAASC,GACxC,MAAOF,GAAQpG,QAAQsG,GAAQ,MAGvC9C,EAAY+C,gBAAkB,WAC1B,GAAItC,GAAMT,EAAYwC,UACtB,OAAI/B,IAAOA,EAAI8B,UAAY9B,EAAI8B,SAAS7G,KAC7B+E,EAAI8B,SAAS7G,KAEb,MAGfsE,EAAYgD,kBAAoB,WAC5B,MAAO,uBAEXhD,EAAYiD,mBAAqB,WAC7B,MAAOvC,MAAKwC,UAAUlD,EAAYwC,aAEtCxC,EAAY2B,cAAgB,WACxB,GAAIhH,KAIJ,OAFAA,GAAOwI,WACPxI,EAAOwI,QAAQnD,EAAYgD,qBAAuBhD,EAAYiD,qBACvDtI,GAGXqF,EAAYoD,YAAa,EACzBpD,EAAYqD,QAAU,KAEtBrD,EAAYsD,YAAc,WACtB,GAAItD,EAAYiC,cAAgBjC,EAAYwC,WAAY,CACpD,GAAI/B,GAAMT,EAAYwC,WAElBe,EAAYC,OAAO/C,EAAI4C,SAEvBI,EAAaF,EAAUG,KAAKF,SACf,QAAbC,GAEAzD,EAAYoD,YAAa,EACzBpD,EAAYgC,cAEZhC,EAAYoD,YAAa,EAG7BpD,EAAYqD,QAAUG,SAASG,GAAGJ,GAGtC,MAAO,OAEXvD,EAAY4D,WAAa,WACrB,GAAI5D,EAAYiC,cAAgBjC,EAAYwC,WAAY,CACpD,GAAI/B,GAAMT,EAAYwC,UAEtB,OAAOgB,QAAO/C,EAAI4C,SAASQ,SAASL,UAGxC,MAAO,OAEXxD,EAAY8D,YAAc,WACtB9D,EAAYsD,aAEZ,IAAIS,GAAM/D,EAAY4D,YAClBG,MAAQ,GACR/D,EAAYqC,SACZzE,EAAoBc,yBACpBe,KACe,OAARsE,GAEPtE,KAIRO,EAAYgE,YAAc,WACtB,GAAIhE,EAAYiC,aAAc,CAC1B,GAAIgC,GAAMjE,EAAYwC,UACtB,IAAIyB,EACA,MAAOA,GAAIC,SAInB,MAAO,IAGXlF,EAAU,WACDC,GAAWA,EAAOkF,SAAmC,SAAxBlF,EAAOkF,QAAQzI,MAC7CsE,EAAY8D,eAEjB,KAEI9D,KAEVrE,QAAQ,sBAAA,aAAsB,SAASkD,GACpC,GAAIuF,KAWJ,OAVAA,GAAcC,YAAc,WACxBxF,EAAWyF,WAAY,GAE3BF,EAAcG,YAAc,WACxB1F,EAAWyF,WAAY,GAE3BF,EAAcI,UAAY,WACtB,MAAO3F,GAAWyF,aAAc,GAG7BF,KAEVzI,QAAQ,sBAAA,QAAA,YAAA,UAAA,mBAAsB,SAASmD,EAAO1D,EAAWe,EAASgD,GAE/D,GAAIsF,KAiBJ,OAhBAA,GAAmBC,eAAiB,KACpCD,EAAmBE,YAAc,WAC7B,GAAI5E,GAAO3E,EAAU2E,MACrB,OAAOZ,GAAiBmB,mBAAmBxB,EAAMpC,IAAIP,EAAQkD,QAAU,wCAA0CU,KAErH0E,EAAmBG,kBAAoB,SAASC,GAC5C,GAAIX,GAAWO,EAAmBC,eAAeI,QACjD,OAAOhG,GAAMpC,IACTP,EAAQkD,QACJ,kDACA6E,EACA,sBACAW,EACA,yBAGLJ,KAEV9I,QAAQ,uBAAA,QAAA,UAAA,wBAAA,KAAuB,SAASmD,EAAO3C,EAAS4I,EAAuBC,GAE5E,GAAIC,KAkFJ,OAjFAA,GAAWC,qBAAuB,WAC9B,MAAOpG,GAAMpC,IAAIP,EAAQkD,QAAU,yCAA0C0F,EAAsBpD,kBAEvGsD,EAAWE,WAAa,SAASC,GAC7B,MAAOtG,GAAMpC,IAAIP,EAAQkD,QAAU,sCAAwC+F,EAAWL,EAAsBpD,kBAEhHsD,EAAWI,kBAAoB,WAC3B,MAAOvG,GAAMpC,IAAIP,EAAQkD,QAAU,6BAA8B0F,EAAsBpD,kBAE3FsD,EAAWK,sBAAwB,SAASF,EAAWG,GACnD,MAAOzG,GAAMpC,IACTP,EAAQkD,QAAU,mBAAqB+F,EAAY,cAAgBG,EAAa,YAChFR,EAAsBpD,kBAI9BsD,EAAWO,SAAW,WAClB,MAAO1G,GAAMpC,IAAIP,EAAQkD,QAAU,6BAA8B0F,EAAsBpD,kBAG3FsD,EAAWQ,qBAAuB,WAC9B,MAAO3G,GAAMpC,IAAIP,EAAQkD,QAAU,0CAA2C0F,EAAsBpD,kBAGxGsD,EAAWS,eAAiB,SAASC,GAEjC,MAAO7G,GAAMpC,IAAIP,EAAQkD,QAAU,mBAAqBsG,EAAQ,YAAaZ,EAAsBpD,kBAGvGsD,EAAWW,YAAc,SAASD,GAC9B,MAAO7G,GAAMpC,IAAIP,EAAQkD,QAAU,6CAA8C0F,EAAsBpD,kBAG3GsD,EAAWY,OAAS,SAASnK,GACzB,MAAOoD,GAAMpC,IAAIP,EAAQkD,QAAU,+BAAiC3D,EAAMqJ,EAAsBpD,kBAGpGsD,EAAWa,iBAAmB,SAASpK,EAAMqK,GACzC,GAAI1F,KAIJ,OAHAA,GAAQ9C,KAAO7B,EACf2E,EAAQ2F,cAAgBD,EAEjBjH,EAAMyB,KAAKpE,EAAQkD,QAAU,mCAAoCgB,EAAS0E,EAAsBpD,kBAG3GsD,EAAWgB,eAAiB,SAASvK,EAAMwK,EAASC,GAChD,GAAI9F,KAKJ,OAJAA,GAAQ9C,KAAO7B,EACf2E,EAAQ+F,QAAUF,EAClB7F,EAAQgG,gBAAkBF,EAEnBrH,EAAMyB,KAAKpE,EAAQkD,QAAU,iCAAkCgB,EAAS0E,EAAsBpD,kBAEzGsD,EAAWqB,KAAO,WACd,GAAI3L,GAASoK,EAAsBpD,eAEnC,OADAhH,GAAO4L,OAAQ,EACRzH,EAAMpC,IAAIP,EAAQkD,QAAU,+BAAgC1E,IAEvEsK,EAAWuB,UAAY,WACnB,GAAI7L,GAASoK,EAAsBpD,eAEnC,OADAhH,GAAO4L,OAAQ,EACRzH,EAAMpC,IAAIP,EAAQkD,QAAU,oCAAqC1E,IAE5EsK,EAAWwB,OAAS,SAASC,GACzB,MAAOC,MAAKL,OAAO/H,KAAK,SAAStC,GAC7B,GAAI2K,GAAM3K,EAASuE,KAAKqG,KAAK,SAASD,GAClC,MAAOA,GAAIE,iBAAmBJ,GAElC,OAAQE,GAAaA,EAAIG,iBAAX,QAGtB9B,EAAW+B,qBAAuB,WAC9B,GAAIrM,GAASoK,EAAsBpD,eACnC,OAAO7C,GAAMpC,IAAIP,EAAQkD,QAAU,oCAAqC1E,IAE5EsK,EAAWN,YAAc,WACrB,GAAIhK,GAASoK,EAAsBpD,eAEnC,OADAhH,GAAO4L,OAAQ,EACRzH,EAAMpC,IAAIP,EAAQkD,QAAU,mCAAoC1E,IAGpEsK,KAEVtJ,QAAQ,+BAAA,QAAA,UAAA,wBAA+B,SAASmD,EAAO3C,EAAS4I,GAC7D,GAAIkC,IACAC,UAAU,EAoCd,OAjCAD,GAAmBE,KAAO,SAAS/B,EAAWgC,GAC1CH,EAAmB7B,UAAYA,EAE/B6B,EAAmBI,cAAgBvI,EAC9BpC,IACGP,EAAQkD,QAAU,mBAAqB4H,EAAmB7B,UAAY,aAAegC,EACrFrC,EAAsBpD,iBAEzBpD,KAAK,SAAStC,GACXgL,EAAmBK,SAAWrL,EAASuE,KACvCyG,EAAmBC,UAAW,KAI1CD,EAAmBtC,YAAc,WAC7B,MAAIsC,GAAmBC,SACZD,EAAmBK,SAGnB,MAGfL,EAAmBM,WAAa,SAASC,GACrC,MAAIP,GAAmBC,SACZO,EAAEZ,KAAKI,EAAmBK,SAAU,SAASI,GAChD,MAAOA,GAAEC,KAAOH,IAIb,MAIRP,KAGVW,WAAW,kBAAA,aAAA,SAAA,UAAA,sBAAA,wBAAA,qBAAA,UAAkB,SAAS/I,EAAYgJ,EAAQC,EAASC,EAAqBhD,EAAuBiD,EAAoB7L,GAChI6L,EAAmB3D,cACnBwD,EAAOI,IAAM9L,EAAQT,KAErBmD,EAAWqJ,KACPC,aAAc,KACdC,oBAAqB,KACrBC,eAAgB,KAChBC,YACAC,QAAQ,GAGZV,EAAOW,eAAiB,aAIxBX,EAAOY,aAAe,WAClB,MAAO5J,GAAWqJ,IAAII,SAASC,UAAW,GAK1CxD,EAAsB9C,aAM1B4F,EAAOa,+BAAiC,WACpC,GAAIC,GAAY5D,EAAsBtC,UACtC,OAAiE,iCAA7DkG,EAAU9B,KAAK,SAAA+B,GAAA,MAAU,gCAALA,KAEb,GAEJ,GAGXf,EAAOgB,yBAA2B,WAC9B,GAAIF,GAAY5D,EAAsBtC,UACtC,OAAgD,gBAA5CkG,EAAU9B,KAAK,SAAA+B,GAAA,MAAU,eAALA,KAEb,GAEJ,EAIX,IAAIE,GAAmB,WACnBf,EAAoB7C,uBAAuB3G,KACvC,SAAStC,GACL4C,EAAWqJ,IAAIC,aAAelM,EAASuE,KAEvCuI,KAEJ,SAAS3H,OAKb2H,EAAyB,WACzBhB,EAAoB5C,WAAWtG,EAAWqJ,IAAIC,aAAaa,WAAWzK,KAClE,SAAStC,GACL4C,EAAWqJ,IAAIE,oBAAsBnM,EAASuE,KAE9CyI,KAEJ,SAAS7H,OAKb6H,EAAyB,WACzBpK,EAAWqJ,IAAIG,eAAiBZ,EAAEZ,KAAKhI,EAAWqJ,IAAIE,oBAAoBc,kBAAmB,SAASC,GAClG,MAAOA,GAAEC,QAAQC,YAAcvB,EAAQxK,KAG3CgI,KAEAA,EAAwB,WACxByC,EAAoBzC,sBAAsBzG,EAAWqJ,IAAIC,aAAaa,UAAWnK,EAAWqJ,IAAIG,eAAeiB,oBAAoB/K,KAC/H,SAAStC,GACL4C,EAAWqJ,IAAII,SAAWrM,EAASuE,KACnC+I,IAEA1K,EAAWqJ,IAAII,SAASC,QAAS,GAErC,SAASnH,OAQboI,EAAW,QAAXA,GAAoBC,EAAYC,GAChC,IAAKA,EACD,QAEJ,IAAIC,MACAC,EAAgBH,EAAa,IAAMC,EAAQnM,IAO/C,OANAoM,GAAM3M,KAAK4M,GAEXnC,EAAEoC,KAAKH,EAAQI,YAAa,SAASC,GACjCJ,EAAM3M,KAAKwM,EAASI,EAAeG,MAGhCJ,GAGPJ,EAAmB,WACnB,GAAII,GAAQlC,EAAEuC,IAAInL,EAAWqJ,IAAII,SAAU,SAASZ,GAChD,MAAO8B,GAAS,GAAI9B,KAGpBuC,EAAYxC,EAAEyC,YAAYP,EAE9B9K,GAAWqJ,IAAIiC,aAAeF,EAC9BG,KAEAA,EAAe,WACfpC,EAAmBzD,cAIvBuE,QAEHnN,QAAQ,qBAAA,aAAqB,SAASkD,GACnC,GAAIwL,KAsBJ,OArBAA,GAAIC,UAAY,WACZ,MAAIzL,GAAWqJ,KAAOrJ,EAAWqJ,IAAII,UAAYzJ,EAAWqJ,IAAII,SAAS9N,OAAS,GACvE,GAEA,GAGf6P,EAAIE,cAAgB,WAChB,MAAO1L,GAAWqJ,IAAIiC,cAE1BE,EAAIG,WAAa,SAASC,GAKtB,MAJIJ,GAAIC,eAAgB,EAIjB7C,EAAEiD,SAAS7L,EAAWqJ,IAAIiC,aAAcM,IAEnDJ,EAAIM,oBAAsB,SAAShB,GAC/B,MAAOlC,GAAE5E,KAAK8G,EAAOU,EAAIG,aAGtBH,KAGV1O,QAAQ,cAAA,aAAA,wBAAc,SAASkD,EAAYkG,GACxC,GAAI6F,KAaJ,OAXAA,GAAIjI,QAAU,SAASkI,GACnB,GAAI9F,EAAsB9C,aAAc,CACpC,GAAI2G,GAAInB,EAAE5E,KAAKkC,EAAsBtC,WAAY,SAASqI,GACtD,MAAOA,IAAKD,GAEhB,OAAOjC,GAEP,OAAO,GAIRgC,KAEVG,UAAU,OAAA,WAAA,oBAAO,SAASC,EAAUC,GACjC,OACIC,WAAY,UACZC,SAAU,IACVC,UAAU,EACVC,SAAU,IACVC,KAAM,SAASzD,EAAQ0D,EAAUC,EAAOC,EAAMC,GAC1C,GAAIC,GAAOC,EAAYtD,CAEvBkD,GAAMK,SAAS,MAAO,SAASC,GAC3BxD,EAAWT,EAAOkE,MAAMD,GACpBb,EAAkBN,oBAAoBrC,GACjCsD,IACDA,EAAa/D,EAAOmE,OACpBN,EAAYE,EAAY,SAASK,GAC7BN,GACIO,UAAWD,EAAM,GACjBE,QAAUF,EAAMA,EAAMzR,UAAY4R,SAASC,cAAc,yBAA2Bb,EAAMc,gBAAkB,MAEhHtB,EAASuB,MAAMN,EAAOV,EAASiB,SAAUjB,OAI7CK,IACAA,EAAWa,WACXb,EAAa,MAGbD,IACAX,EAAS0B,MAAMC,iBAAiBhB,IAChCA,EAAQ,cAO/BZ,UAAU,eAAA,WAAA,oBAAe,SAASC,EAAUC,GAEzC,OACIC,WAAY,UACZC,SAAU,IACVC,UAAU,EACVC,SAAU,IACVC,KAAM,SAASzD,EAAQ0D,EAAUC,EAAOC,EAAMC,GAC1C,GAAIC,GAAOC,EAAYtD,CAEvBkD,GAAMK,SAAS,cAAe,SAASC,GACnCxD,EAAWT,EAAOkE,MAAMD,GACpBb,EAAkBN,oBAAoBrC,MAAc,EAC/CsD,IACDA,EAAa/D,EAAOmE,OACpBN,EAAYE,EAAY,SAASK,GAC7BN,GACIO,UAAWD,EAAM,GACjBE,QAAUF,EAAMA,EAAMzR,UAAY4R,SAASC,cAAc,yBAA2Bb,EAAMc,gBAAkB,MAEhHtB,EAASuB,MAAMN,EAAOV,EAASiB,SAAUjB,OAI7CK,IACAA,EAAWa,WACXb,EAAa,MAGbD,IACAX,EAAS0B,MAAMC,iBAAiBhB,IAChCA,EAAQ,cAO/BZ,UAAU,OAAA,WAAA,aAAO,SAASC,EAAU4B,GACjC,OACI1B,WAAY,UACZC,SAAU,IACVC,UAAU,EACVC,SAAU,IACVC,KAAM,SAASzD,EAAQ0D,EAAUC,EAAOC,EAAMC,GAC1C,GAAIC,GAAOC,EAAY9I,CAEvB0I,GAAMK,SAAS,MAAO,SAASC,GAC3BhJ,EAAO+E,EAAOkE,MAAMD,GAChBc,EAAWjK,QAAQG,MAAU,EACxB8I,IACDA,EAAa/D,EAAOmE,OACpBN,EAAYE,EAAY,SAASK,GAC7BN,GACIO,UAAWD,EAAM,GACjBE,QAAUF,EAAMA,EAAMzR,UAAY4R,SAASC,cAAc,yBAA2Bb,EAAMc,gBAAkB,MAEhHtB,EAASuB,MAAMN,EAAOV,EAASiB,SAAUjB,OAI7CK,IACAA,EAAWa,WACXb,EAAa,MAGbD,IACAX,EAAS0B,MAAMC,iBAAiBhB,IAChCA,EAAQ,cAO/B/D,WAAW,mBAAA,SAAA,qBAAA,YAAmB,SAASC,EAAQpD,EAAoBrJ,GAEhE,GAAIyR,GAAgB,WAChB,GAAIC,GAAQrI,EAAmBC,eAAeqI,aAE9ClF,GAAOmF,aAAe,iBAAmBF,EAAQ,kBACjDjF,EAAOoF,QAAU,iBAAmBH,EAAQ,YAC5CjF,EAAOqF,IAAM,OAASJ,EAAQ,OAG9BrI,GAAmBC,eACnBmI,IAEApI,EAAmBE,cAAcpG,KAAK,SAAStC,GAC3CwI,EAAmBC,eAAiBzI,EAASuE,KAC7CqM,SAIXjF,WAAW,kCAAA,SAAA,wBAAA,SAAA,UAAkC,SAASC,EAAQ9C,EAAuB9F,EAAQ9C,IAC1F,WACI0L,EAAOI,IAAM9L,EAAQT,KACrBmM,EAAOsF,WAAahR,EAAQS,WAGhCiL,EAAO7F,WAAa,WAChB+C,EAAsB/C,aAAazD,KAAK,WACpCwG,EAAsBzB,iBAG9BuE,EAAOzE,WAAa,WAChB,MAAO2B,GAAsB3B,YAEjCyE,EAAOvE,YAAc,WACjB,MAAOyB,GAAsB1B,SAEjCwE,EAAO5F,WAAa,WAChB,GAAI8B,GAAMgB,EAAsB9C,YAIhC,OAHI8B,MAAQ,GAAS8D,EAAO/F,QACxB+F,EAAO/F,MAAQ,MAEZiC,GAGX8D,EAAO/F,MAAQ,KACf+F,EAAOuF,YAAc,WAKjB,MAJKvF,GAAO/F,QACR+F,EAAO/F,MAAQiD,EAAsBvC,YAGlCqF,EAAO/F,MAAMS,SAAS6K,aAAevF,EAAO/F,MAAMS,SAAS7G,MAGtEmM,EAAOwF,OAAS,WACZ,MAAOxF,GAAO/F,MAAMY,OAGxBmF,EAAOxF,OAAS,WACZwF,EAAO/F,MAAQ,KACfiD,EAAsB1C,aAG7B0I,UAAU,aAAc,WACrB,OACIuC,QAAS,UACThC,KAAM,SAAkBiC,EAAOC,EAAMC,EAAOC,GACxCF,EAAKG,GAAG,SAAU,SAASC,GACvB,GAAIC,GAAQL,EAAK,GAAGK,KACpBH,GAAQI,cAAcD,SC96B1C,WAGI,GAAIE,GAAStT,QAAQC,OAAO,kBAC5BqT,GAAOpS,QAAQ,oBAAA,aAAA,UAAA,QAAA,KAAA,YAAoB,SAAUqS,EAAY7R,EAAS2C,EAAOkG,EAAI5J,GACzE,GAAI6S,KAmEJ,OAlEAA,GAAIC,oBAAsB,SAASC,EAAWC,GAC5C,OACIC,OAAQ,YACRC,YAAaN,EAAWtS,KACxByS,UAAWA,EACXI,MAAOH,EAAU,QAAU,OAC3BnG,IAAK9L,EAAQT,KACb8S,WAAYrS,EAAQS,QACpB6R,eAGNR,EAAIS,UAAY,SAASrO,GACrB,MAAGlE,GAAQwS,kBAAmB,EACrB7P,EAAMyB,KAAKpE,EAAQkD,QAAU,mBAAoBgB,GAEjD2E,EAAG,SAAS4J,EAASC,GACxBD,OAIVX,EAAI3N,mBAAqB,SAASwO,GAChC,MAAOA,IAUTb,EAAIc,oBAAsB,SAASC,GACjC,MAAOf,GAAI3N,mBAAmB0O,MAEhCf,EAAIgB,qBAAuB,SAAShT,GAElC,IACE,GAAImS,KAAYnS,EAAS+E,QAAU,KAAO/E,EAAS+E,OAAS,KACxDkO,EAAMjT,EAAStB,OAAO4B,IAAIM,QAAQV,EAAQkD,QAAS,IACnDyI,EAAUoH,EAAIC,UAAU,EAAED,EAAI1S,QAAQ,MACtC4S,EAAanT,EAAS+E,OACtBqO,EAAe,EACnB,IAAGpT,EAAStB,OAAOmB,kBAAqBG,EAAStB,OAAOuB,kBAAkB,CACxE,GAAIoT,GAAOrT,EAAStB,OAAOuB,kBAAoBD,EAAStB,OAAOmB,gBAE/DuT,GAAeC,EAGjB,GAAIjP,GAAU4N,EAAIC,oBAAoB,aAAcE,EAQpD,OAPA/N,GAAQoO,UAAU3G,QAAUA,EAC5BzH,EAAQoO,UAAUS,IAAMA,EACxB7O,EAAQoO,UAAU1O,KAAQ3E,EAAU2E,OACpCM,EAAQoO,UAAUW,WAAaA,EAC/B/O,EAAQoO,UAAUY,aAAeA,EAEjCpB,EAAIS,UAAUrO,GACPpE,EAEP,MAAMsT,GAEN,MAAOvK,GAAG,SAAS4J,EAASC,GACxBD,EAAQ3S,OAKTgS,MAEZuB,OAAO/U,SC1EV,SAAWA,GAEP,GAAIgV,GAAYhV,EAAQC,OAAO,kBAE/B+U,GAAU7H,WAAW,sBAAA,SAAA,wBAAA,YAAA,UAAsB,SAAUC,EAAQ9C,EAAuB3J,EAAW8D,GAE3F2I,EAAOX,UAAW,EAClBW,EAAO6H,aAAe,CAEtB,IAAIpH,KACJA,GAAStL,MACDtB,KAAM,+BACNiU,KAAM,qBACNhN,QAAS,SAAUiN,GACf,MAAOnI,GAAE5E,KAAK+M,EAAUlN,MAAO,SAAUmN,GACrC,OAAO,KAIfC,WAAY,WACR5Q,EAAQS,SAASE,KAAOX,EAAQS,SAASG,SAAW,KAAOZ,EAAQS,SAASI,KAAO,kBAI/FuI,EAAStL,MACDtB,KAAM,YACNiU,KAAM,kBACNhN,QAAS,SAAUiN,GACf,MAAOnI,GAAE5E,KAAK+M,EAAUlN,MAAO,SAAUmN,GACrC,MAAe,gBAARA,GAAiC,eAARA,KAGxCC,WAAY,WACR5Q,EAAQS,SAASE,KAAOX,EAAQS,SAASG,SAAW,KAAOZ,EAAQS,SAASI,KAAO,aAI/FuI,EAAStL,MAELtB,KAAM,sBACNqU,UAAY,SACZJ,KAAM,kBACNhN,QAAS,SAAUiN,GACf,MAAOnI,GAAE5E,KAAK+M,EAAUlN,MAAO,SAAUmN,GACrC,MAAe,iBAARA,GAAkC,eAARA,KAGzCC,WAAY,WACR5Q,EAAQS,SAASE,KAAOX,EAAQS,SAASG,SAAW,KAAOZ,EAAQS,SAASI,KAAO,aAI3FuI,EAAStL,MAELtB,KAAM,4BACNqU,UAAY,iBACZJ,KAAM,oBACNhN,QAAS,SAAUiN,GACf,MAAOnI,GAAE5E,KAAK+M,EAAUlN,MAAO,SAAUmN,GACrC,MAAe,mBAARA,KAGfC,WAAY,WACR5Q,EAAQS,SAASE,KAAOX,EAAQS,SAASG,SAAW,KAAOZ,EAAQS,SAASI,KAAO,0BAG3FuI,EAAStL,MACLtB,KAAM,OACNiU,KAAM,kBACNhN,QAAS,SAAUiN,GACf,MAAOnI,GAAE5E,KAAK+M,EAAUlN,MAAO,SAAUmN,GACrC,MAAe,cAARA,GAA+B,iBAARA,GAAkC,gBAARA,GAAiC,gBAARA,GAAiC,gBAARA,KAGlHC,WAAY,WACR5Q,EAAQS,SAASE,KAAOX,EAAQS,SAASG,SAAW,KAAOZ,EAAQS,SAASI,KAAO,aAI3F8H,EAAOmI,OAASjL,EAAsBvC,WAAWE,MAEjDmF,EAAOoI,OAAS,SAAUC,GACtB,GAAIN,GAAY7K,EAAsBvC,UAEtCqF,GAAOsI,kBAAoB1I,EAAE2I,OAAO9H,EAAU,SAAUyB,GACpD,MAAOA,GAAEpH,QAAQiN,KAGrB/H,EAAO6H,aAAe7H,EAAOsI,kBAAkB3V,OAEP,IAApCqN,EAAOsI,kBAAkB3V,OACzBqN,EAAOX,UAAW,EAEyB,IAApCW,EAAOsI,kBAAkB3V,QAE7B0V,KAAiB,EAChBrI,EAAOsI,kBAAkB,GAAGL,aAOhCjI,EAAOX,UAAW,MAM9BuI,EAAU1E,UAAU,eAAgB,WAChC,OACIM,SAAU,IACVkC,SAGA3F,YAAAA,SAAuB,SAAUC,MAGjCwI,YAAa,iCAGtBb,OAAO/U,SCzHV,SAAUA,GAEN,GAAIgV,GAAYhV,EAAQC,OAAO,kBAE/B+U,GAAU1E,UAAU,UAAW,WAC3B,OACIM,SAAU,IACVkC,OACI+C,aAAc,cACdC,aAAc,cACdC,WAAY,YACZvI,IAAK,KACLwI,QAAS,IACTC,SAAU,IACVC,gBAAiB,KAErB/I,YAAAA,SAAAA,UAAAA,YAII,SAASC,EAAQ1L,EAAS6C,GACjB6I,EAAOI,MACRJ,EAAOI,IAAM,cAGjBJ,EAAO+I,OAAO,eAAgB,SAASC,GACnChJ,EAAO4I,WAGX,IAAIK,EAsCJ,IArCAjJ,EAAO4I,QAAU,WACb,GAAK5I,EAAOyI,aAAZ,CAIA,GAAIS,IACAC,eAAgB7U,EAAQ0L,EAAOI,KAC/B6I,OAAQjJ,EAAOyI,aACfW,WAAY,MACZC,UAAW,GACXC,WAAYtJ,EAAO0I,aAIT,OAAVO,GACAM,kBAAkBC,OAAOxJ,EAAO2I,YAGpC3I,EAAOyJ,WAAY,EACnBR,EAASM,kBAAkBG,OAAO1J,EAAO2I,WAAYO,EAErD,IAAIS,GAAiBV,EAAOW,WAG5BX,GAAOW,YAAc,WACb5J,EAAO8I,iBACP9I,EAAO8I,kBAIX9I,EAAO6J,OAAO,WACV7J,EAAOyJ,WAAY,IAEvBE,EAAeG,KAAKb,MAIxBjJ,EAAO6I,YAAa,EACpB,GAAIkB,GAAmB5S,EAAU,WAE7B,GAAI6S,GAASzF,SAAS0F,eAAejK,EAAO2I,WAIxCqB,KACAhK,EAAOkK,eACPlK,EAAO4I,YAEZ,IAGP5I,GAAOmK,IAAI,WAAY,WACnBnK,EAAOkK,eAGHjB,GACAM,kBAAkBC,OAAOxJ,EAAO2I,cAIxC3I,EAAOkK,aAAe,WACdtX,EAAQwX,UAAUL,KAClB5S,EAAUkT,OAAON,GACjBA,EAAmBnV,WAKnC0V,SAAU,yHAGnB3C,OAAO/U,SCrGV,SAAWA,GAEP,GAAIsT,GAAStT,EAAQC,OAAO,kBAK5BqT,GAAOnG,WAAW,yBAAA,SAAA,wBAAA,SAAyB,SAAUC,EAAO9C,EAAsB9F,GAE9E4I,EAAOoI,OAAS,WACTlL,EAAsB9C,gBAAiB,EACtChD,EAAOmT,GAAG,QAEVrN,EAAsB1C,cAInCmN,OAAO/U","file":"im-commonScripts.js","sourcesContent":["//Polyfill startsWith for IE\r\nif (!String.prototype.startsWith) {\r\n String.prototype.startsWith = function(searchString, position) {\r\n position = position || 0;\r\n return this.substr(position, searchString.length) === searchString;\r\n };\r\n}\r\n\r\nfunction Message(text) {\r\n this.text = text;\r\n}\r\n\r\nangular\r\n .module(\"common-services\", [\"ngMaterial\", \"ngMessages\", \"ui.router\", \"ngAnimate\", \"angular-locker\", \"angular-google-analytics\"])\r\n .config(function(AnalyticsProvider, GoogleAnalyticsConfig) {\r\n if (GoogleAnalyticsConfig.Account != \"NOT-USED\") {\r\n AnalyticsProvider.setAccount(GoogleAnalyticsConfig.Account).trackPages(true);\r\n }\r\n })\r\n .run([\r\n \"Analytics\",\r\n \"$transitions\",\r\n \"$location\",\r\n function(Analytics, $transitions, $location) {\r\n $transitions.onSuccess({}, function(transition) {\r\n Analytics.trackPage($location.path());\r\n });\r\n }\r\n ])\r\n .constant(\"appProduct\", {\r\n name: \"common\"\r\n })\r\n .factory(\"logTimeTaken\", function() {\r\n var logTimeTaken = {\r\n request: function(config) {\r\n config.requestTimestamp = new Date().getTime();\r\n return config;\r\n },\r\n response: function(response) {\r\n response.config.responseTimestamp = new Date().getTime();\r\n return response;\r\n }\r\n };\r\n return logTimeTaken;\r\n })\r\n .factory(\"preventTemplateCache\", function(app_env, $templateCache) {\r\n var templateCache = {\r\n request: function(request) {\r\n // If the request is a get and the request url is not in $templateCache\r\n if (request.method === \"GET\" && request.url.indexOf(\".html\") !== -1 && $templateCache.get(request.url) === undefined) {\r\n var versionNumber = app_env.version.replace(/\\./g, \"_\");\r\n request.url = request.url + \"?v=\" + versionNumber;\r\n }\r\n\r\n return request;\r\n }\r\n };\r\n return templateCache;\r\n })\r\n .config(function($httpProvider) {\r\n $httpProvider.interceptors.push(\"logTimeTaken\");\r\n $httpProvider.interceptors.push(\"preventTemplateCache\");\r\n })\r\n .provider(\"service\", function() {\r\n var activeService = {};\r\n\r\n this.setService = function(serviceId, serviceName) {\r\n activeService = {\r\n Id: serviceId,\r\n Name: serviceName\r\n };\r\n };\r\n\r\n this.$get = function() {\r\n return activeService;\r\n };\r\n })\r\n .config(function($mdIconProvider) {\r\n //https://github.com/nkoterba/material-design-iconsets\r\n $mdIconProvider\r\n .iconSet(\"action\", \"../assets/icon-sets/action-icons.svg\", 24)\r\n .iconSet(\"alert\", \"../assets/icon-sets/alert-icons.svg\", 24)\r\n .iconSet(\"av\", \"../assets/icon-sets/av-icons.svg\", 24)\r\n .iconSet(\"communication\", \"../assets/icon-sets/communication-icons.svg\", 24)\r\n .iconSet(\"mdi\", \"../assets/icon-sets/mdi-icons.svg\", 24)\r\n .iconSet(\"content\", \"../assets/icon-sets/content-icons.svg\", 24)\r\n .iconSet(\"device\", \"../assets/icon-sets/device-icons.svg\", 24)\r\n .iconSet(\"editor\", \"../assets/icon-sets/editor-icons.svg\", 24)\r\n .iconSet(\"file\", \"../assets/icon-sets/file-icons.svg\", 24)\r\n .iconSet(\"hardware\", \"../assets/icon-sets/hardware-icons.svg\", 24)\r\n .iconSet(\"icons\", \"../assets/icon-sets/icons-icons.svg\", 24)\r\n .iconSet(\"image\", \"../assets/icon-sets/image-icons.svg\", 24)\r\n .iconSet(\"maps\", \"../assets/icon-sets/maps-icons.svg\", 24)\r\n .iconSet(\"navigation\", \"../assets/icon-sets/navigation-icons.svg\", 24)\r\n .iconSet(\"notification\", \"../assets/icon-sets/notification-icons.svg\", 24)\r\n .iconSet(\"social\", \"../assets/icon-sets/social-icons.svg\", 24)\r\n .iconSet(\"risk\", \"../assets/icon-sets/risk-icons.svg\", 60)\r\n .iconSet(\"document\", \"../assets/icon-sets/document-icons.svg\", 24)\r\n .iconSet(\"toggle\", \"../assets/icon-sets/toggle-icons.svg\", 24);\r\n })\r\n .factory(\"notificationService\", function($injector) {\r\n // $injector is used instead of injecting the $mdToast as this causes a circular reference downstream because $mdToast uses $http (for some bizare reason)\r\n var notificationService = {};\r\n\r\n notificationService.showActionToast = function(text, actionText, action) {\r\n var $mdToast = $injector.get(\"$mdToast\");\r\n var toast = $mdToast\r\n .simple()\r\n .content(text)\r\n .action(actionText)\r\n .highlightAction(false)\r\n .hideDelay(0)\r\n .position(\"top right\");\r\n $mdToast.show(toast).then(function(response) {\r\n if (response == \"ok\") {\r\n if (action) {\r\n action();\r\n }\r\n } else if (response == \"true\") {\r\n //alert('Timeout');\r\n }\r\n });\r\n };\r\n\r\n notificationService.showToast = function(text) {\r\n var $mdToast = $injector.get(\"$mdToast\");\r\n var toast = $mdToast\r\n .simple()\r\n .content(text)\r\n .hideDelay(10 * 1000)\r\n .position(\"top right\");\r\n\r\n $mdToast.show(toast);\r\n };\r\n\r\n notificationService.showTokenTimeoutWarning = function(action) {\r\n notificationService.showActionToast(\"Your session is about to expire\", \"Keep me Logged In\", action);\r\n };\r\n\r\n notificationService.showAuthTimeoutMessage = function() {\r\n notificationService.showToast(\"Your Session has Expired and you have been logged out\");\r\n };\r\n\r\n notificationService.showConnectionError = function() {\r\n var $mdToast = $injector.get(\"$mdToast\");\r\n $mdToast.show(\r\n $mdToast\r\n .simple()\r\n .content(\"There was an error connecting to the server. Please check your internet connection and try again.\")\r\n .position(\"top right\")\r\n .hideDelay(3 * 1000)\r\n );\r\n };\r\n\r\n notificationService.showAccountLocked = function() {\r\n var $mdToast = $injector.get(\"$mdToast\");\r\n $mdToast.show(\r\n $mdToast\r\n .simple()\r\n .content(\"Your user account may be locked out. Please contact support.\")\r\n .position(\"top right\")\r\n .hideDelay(3 * 1000)\r\n );\r\n };\r\n\r\n return notificationService;\r\n })\r\n .factory(\"authenticationService\", function(\r\n $rootScope,\r\n $location,\r\n app_env,\r\n $http,\r\n locker,\r\n $interval,\r\n notificationService,\r\n $state,\r\n $window,\r\n commonLogService\r\n ) {\r\n var loginUrl = app_env.baseUrl + \"AUTH/api/authentication/logon\";\r\n var renewTokenUrl = app_env.baseUrl + \"AUTH/api/authentication/renewtoken\";\r\n var ntlmUrl = app_env.ntlmAuthUrl + \"Logon\";\r\n\r\n var gotoLogin = function() {\r\n var launcherPath = \"/launcher-app\";\r\n\r\n if (!$window.location.pathname.startsWith(launcherPath)) {\r\n $window.location.href = $window.location.protocol + \"//\" + $window.location.host + launcherPath;\r\n }\r\n };\r\n\r\n var authService = {};\r\n\r\n authService.login = function(user, completedCallback, failedLoginCallback) {\r\n var payload = user;\r\n payload.url = $location.host();\r\n\r\n commonLogService\r\n .decorateApiPromise($http.post(loginUrl, payload))\r\n .then(function(response) {\r\n var data = response.data;\r\n var tkn = JSON.parse(data.Token);\r\n locker.put(\"token\", tkn);\r\n\r\n //console.log('login data',data);\r\n completedCallback(data.ResetPassword, data.Code);\r\n })\r\n .catch(function(response) {\r\n if (response.status === 401) {\r\n //Login Failed\r\n if (failedLoginCallback) {\r\n failedLoginCallback(false);\r\n }\r\n } else if (response.status === 418) {\r\n notificationService.showAccountLocked();\r\n if (failedLoginCallback) {\r\n failedLoginCallback(false);\r\n }\r\n } else {\r\n console.log(\"Connection Error\", response);\r\n notificationService.showConnectionError();\r\n\r\n if (failedLoginCallback) {\r\n failedLoginCallback(true);\r\n }\r\n }\r\n });\r\n };\r\n authService.loginWithCode = function(code, completedCallback, failedLogin) {\r\n commonLogService\r\n .decorateApiPromise($http.post(app_env.baseUrl + \"AUTH/v2/logon/code?code=\" + code))\r\n .then(function(response) {\r\n var tkn = JSON.parse(response.data.Token);\r\n locker.put(\"token\", tkn);\r\n\r\n completedCallback(response.data.ResetPassword, response.data.Code);\r\n })\r\n .catch(function(errorResponse) {\r\n failedLogin(errorResponse.status);\r\n });\r\n };\r\n authService.ntlmLogin = function(completedCallback, failedLoginCallback) {\r\n commonLogService\r\n .decorateApiPromise(\r\n $http.get(ntlmUrl, {\r\n withCredentials: true\r\n })\r\n )\r\n .then(function(response) {\r\n console.log(\"Auto Login Response\", response);\r\n locker.put(\"token\", response.data);\r\n completedCallback(false, null);\r\n })\r\n .catch(function(errResponse) {\r\n console.log(\"Auto Login Error Response\", errResponse);\r\n failedLoginCallback();\r\n });\r\n };\r\n\r\n authService.tryPassword = function(pwd) {\r\n var payload = {\r\n password: pwd\r\n };\r\n return $http.post(app_env.baseUrl + \"AUTH/v2/password/validate\", payload, authService.getAuthHeader());\r\n };\r\n\r\n authService.internalLogin = function() {\r\n var tkn = null;\r\n return $http({\r\n method: \"GET\",\r\n url: app_env.ntlmAuthUrl + \"logon\",\r\n withCredentials: true\r\n }).then(\r\n function(response) {\r\n tkn = response.data;\r\n locker.put(\"token\", tkn);\r\n return response;\r\n },\r\n function(errorResponse) {\r\n return errorResponse;\r\n }\r\n );\r\n };\r\n\r\n authService.pushToken = function(token) {\r\n var parsedToken = JSON.parse(token);\r\n locker.put(\"token\", parsedToken);\r\n };\r\n authService.renewToken = function() {\r\n console.log(\"Trying To Renew Token\");\r\n if (authService.isLoggedIn()) {\r\n return $http.get(renewTokenUrl, authService.getAuthHeader()).then(\r\n function(response) {\r\n locker.put(\"token\", response.data);\r\n console.log(\"Token Has been Refreshed\");\r\n },\r\n function(errorData) {\r\n console.log(\"Connection Error\", errorData);\r\n notificationService.showConnectionError();\r\n }\r\n );\r\n }\r\n };\r\n authService.dropToken = function() {\r\n locker.empty();\r\n //locker.forget('token');\r\n };\r\n authService.logout = function() {\r\n authService.dropToken();\r\n gotoLogin();\r\n };\r\n authService.isLoggedIn = function() {\r\n if (locker.has(\"token\")) {\r\n var tkn = locker.get(\"token\");\r\n if (tkn && tkn.identity) {\r\n return true;\r\n }\r\n\r\n console.log(\"isLoggedIn, FALSE\", tkn);\r\n return false;\r\n }\r\n\r\n console.log(\"isLoggedIn, FALSE - No Token In Locker\");\r\n return false;\r\n };\r\n authService.getToken = function() {\r\n if (authService.isLoggedIn()) {\r\n return locker.get(\"token\");\r\n } else {\r\n return null;\r\n }\r\n };\r\n authService.getRoles = function() {\r\n var tkn = authService.getToken();\r\n if (tkn && tkn.roles) {\r\n return tkn.roles;\r\n } else {\r\n return [];\r\n }\r\n };\r\n authService.hasRole = function(targets) {\r\n return authService.getRoles().some(function(role) {\r\n return targets.indexOf(role) > -1;\r\n });\r\n };\r\n authService.getIdentityName = function() {\r\n var tkn = authService.getToken();\r\n if (tkn && tkn.identity && tkn.identity.name) {\r\n return tkn.identity.name;\r\n } else {\r\n return null;\r\n }\r\n };\r\n authService.getAuthHeaderName = function() {\r\n return \"X-FMG-Authorisation\";\r\n };\r\n authService.getAuthHeaderValue = function() {\r\n return JSON.stringify(authService.getToken());\r\n };\r\n authService.getAuthHeader = function() {\r\n var config = {};\r\n\r\n config.headers = {};\r\n config.headers[authService.getAuthHeaderName()] = authService.getAuthHeaderValue();\r\n return config;\r\n };\r\n\r\n authService.warnExpire = false;\r\n authService.expires = null;\r\n\r\n authService.untilExpire = function() {\r\n if (authService.isLoggedIn() && authService.getToken()) {\r\n var tkn = authService.getToken();\r\n\r\n var expMoment = moment(tkn.expires);\r\n\r\n var msToExpire = expMoment.diff(moment());\r\n if (msToExpire < 1000 * 60 * 5 + 200) {\r\n //Add 200 ms so its over 5 mins\r\n authService.warnExpire = true;\r\n authService.renewToken();\r\n } else {\r\n authService.warnExpire = false;\r\n }\r\n //console.log('To Expire (ms)',msToExpire);\r\n authService.expires = moment().to(expMoment);\r\n }\r\n\r\n return null;\r\n };\r\n authService.hasExpired = function() {\r\n if (authService.isLoggedIn() && authService.getToken()) {\r\n var tkn = authService.getToken();\r\n\r\n return moment(tkn.expires).isBefore(moment());\r\n }\r\n\r\n return null;\r\n };\r\n authService.expireCheck = function() {\r\n authService.untilExpire();\r\n\r\n var res = authService.hasExpired();\r\n if (res === true) {\r\n authService.logout();\r\n notificationService.showAuthTimeoutMessage();\r\n gotoLogin();\r\n } else if (res === null) {\r\n //hasExpired will return null if the user is not logged in (i.e. no token)\r\n gotoLogin();\r\n }\r\n };\r\n\r\n authService.getTenantId = function() {\r\n if (authService.isLoggedIn()) {\r\n var tok = authService.getToken();\r\n if (tok) {\r\n return tok.tenantId;\r\n }\r\n }\r\n\r\n return -1;\r\n };\r\n\r\n $interval(function() {\r\n if (!$state || !$state.current || $state.current.name !== \"diag\") {\r\n authService.expireCheck();\r\n }\r\n }, 30 * 1000);\r\n\r\n return authService;\r\n })\r\n .factory(\"screenBlockService\", function($rootScope) {\r\n var screenService = {};\r\n screenService.blockScreen = function() {\r\n $rootScope._pageLoad = true;\r\n };\r\n screenService.clearScreen = function() {\r\n $rootScope._pageLoad = false;\r\n };\r\n screenService.isBlocked = function() {\r\n return $rootScope._pageLoad === true;\r\n };\r\n\r\n return screenService;\r\n })\r\n .factory(\"tenantSetupService\", function($http, $location, app_env, commonLogService) {\r\n //Calls Security Services which don't require authentication\r\n var tenantSetupService = {};\r\n tenantSetupService.activeSettings = null;\r\n tenantSetupService.getSettings = function() {\r\n var host = $location.host();\r\n return commonLogService.decorateApiPromise($http.get(app_env.baseUrl + \"AUTH/v2/subdomains/byweb/?webAddress=\" + host));\r\n };\r\n tenantSetupService.getTenantSettings = function(settingKey) {\r\n var tenantId = tenantSetupService.activeSettings.TenantId;\r\n return $http.get(\r\n app_env.baseUrl +\r\n \"ORG/odata/CompanySettings/?$filter=TenantId eq \" +\r\n tenantId +\r\n \" and GroupName eq '\" +\r\n settingKey +\r\n \"' &$select=Key,Value\"\r\n );\r\n };\r\n return tenantSetupService;\r\n })\r\n .factory(\"organisationService\", function($http, app_env, authenticationService, $q) {\r\n //Calls Security & Organisation Services which DO require authentication\r\n var orgService = {};\r\n orgService.getCurrentUserTenant = function() {\r\n return $http.get(app_env.baseUrl + \"AUTH/api/authentication/tenant/current\", authenticationService.getAuthHeader());\r\n };\r\n orgService.getCompany = function(companyId) {\r\n return $http.get(app_env.baseUrl + \"ORG/api/company/GetCompanyById/?id=\" + companyId, authenticationService.getAuthHeader());\r\n };\r\n orgService.getCurrentUserOrg = function() {\r\n return $http.get(app_env.baseUrl + \"ORG/api/company/current/my\", authenticationService.getAuthHeader());\r\n };\r\n orgService.getProductsOnContract = function(companyId, contractId) {\r\n return $http.get(\r\n app_env.baseUrl + \"ORG/api/company/\" + companyId + \"/contracts/\" + contractId + \"/products\",\r\n authenticationService.getAuthHeader()\r\n );\r\n };\r\n\r\n orgService.getMyOrg = function() {\r\n return $http.get(app_env.baseUrl + \"ORG/api/company/current/my\", authenticationService.getAuthHeader());\r\n };\r\n\r\n orgService.getMyOrgWithChildren = function() {\r\n return $http.get(app_env.baseUrl + \"ORG/api/company/current/my/withchildren\", authenticationService.getAuthHeader());\r\n };\r\n\r\n orgService.getOrgChildren = function(orgId) {\r\n console.log('app_env.baseUrl',app_env.baseUrl+ \"ORG/api/company\");\r\n return $http.get(app_env.baseUrl + \"ORG/api/company/\" + orgId + \"/children\", authenticationService.getAuthHeader());\r\n };\r\n\r\n orgService.getMyOrgMap = function(orgId) {\r\n return $http.get(app_env.baseUrl + \"ORG/api/company/current/my/descendantsfull\", authenticationService.getAuthHeader());\r\n };\r\n\r\n orgService.search = function(name) {\r\n return $http.get(app_env.baseUrl + \"ORG/api/company/search?name=\" + name, authenticationService.getAuthHeader());\r\n };\r\n\r\n orgService.fetchPartialTree = function(name, rootCompanyId) {\r\n var payload = {};\r\n payload.Name = name;\r\n payload.RootCompanyId = rootCompanyId;\r\n\r\n return $http.post(app_env.baseUrl + \"ORG/api/company/fetchPartialTree\", payload, authenticationService.getAuthHeader());\r\n };\r\n\r\n orgService.AddCompanyLeaf = function(name, knownas, parentCompanyId) {\r\n var payload = {};\r\n payload.Name = name;\r\n payload.KnownAs = knownas;\r\n payload.ParentCompanyId = parentCompanyId;\r\n\r\n return $http.post(app_env.baseUrl + \"ORG/api/company/AddCompanyLeaf\", payload, authenticationService.getAuthHeader());\r\n };\r\n orgService.list = function() {\r\n var config = authenticationService.getAuthHeader();\r\n config.cache = true;\r\n return $http.get(app_env.baseUrl + \"RiskID/api/organisation/list\", config);\r\n };\r\n orgService.structure = function() {\r\n var config = authenticationService.getAuthHeader();\r\n config.cache = true;\r\n return $http.get(app_env.baseUrl + \"RiskID/api/organisation/structure\", config);\r\n };\r\n orgService.lookup = function(id) {\r\n return that.list().then(function(response) {\r\n var org = response.data.find(function(org) {\r\n return org.OrganisationId === id;\r\n });\r\n return !org ? null : org.OrganisationName;\r\n });\r\n };\r\n orgService.getTopLevelCompanies = function() {\r\n var config = authenticationService.getAuthHeader();\r\n return $http.get(app_env.baseUrl + \"RiskID/api/organisation/toplevels\", config);\r\n };\r\n orgService.getSettings = function() {\r\n var config = authenticationService.getAuthHeader();\r\n config.cache = true;\r\n return $http.get(app_env.baseUrl + \"RiskID/api/organisation/settings\", config);\r\n };\r\n\r\n return orgService;\r\n })\r\n .factory(\"organisationSettingsService\", function($http, app_env, authenticationService) {\r\n var orgSettingsService = {\r\n initDone: false\r\n };\r\n\r\n orgSettingsService.init = function(companyId, groupName) {\r\n orgSettingsService.companyId = companyId;\r\n\r\n orgSettingsService.onInitPromise = $http\r\n .get(\r\n app_env.baseUrl + \"ORG/api/company/\" + orgSettingsService.companyId + \"/settings/\" + groupName,\r\n authenticationService.getAuthHeader()\r\n )\r\n .then(function(response) {\r\n orgSettingsService.settings = response.data;\r\n orgSettingsService.initDone = true;\r\n });\r\n };\r\n\r\n orgSettingsService.getSettings = function() {\r\n if (orgSettingsService.initDone) {\r\n return orgSettingsService.settings;\r\n } else {\r\n console.log(\"orgSettingsService init failed or not completed\");\r\n return null;\r\n }\r\n };\r\n orgSettingsService.getSetting = function(key) {\r\n if (orgSettingsService.initDone) {\r\n return _.find(orgSettingsService.settings, function(i) {\r\n return i.Key == key;\r\n });\r\n } else {\r\n console.log(\"orgSettingsService init failed or not completed\");\r\n return null;\r\n }\r\n };\r\n\r\n return orgSettingsService;\r\n })\r\n //PAC = Product Activation Checker - Checks Which products a given tenant has\r\n .controller(\"PAC-Controller\", function($rootScope, $scope, service, organisationService, authenticationService, screenBlockService, app_env) {\r\n screenBlockService.blockScreen();\r\n $scope.env = app_env.name;\r\n\r\n $rootScope.PAC = {\r\n activeTenant: null,\r\n activeTenantCompany: null,\r\n activeContract: null,\r\n products: [],\r\n loaded: false\r\n };\r\n\r\n $scope.outputProducts = function() {\r\n console.log(\"PAC\", $rootScope.PAC);\r\n };\r\n\r\n $scope.hasPacLoaded = function() {\r\n return $rootScope.PAC.products.loaded === true;\r\n };\r\n\r\n console.log(\"PAC-Start\");\r\n //Is User Logged In\r\n if (authenticationService.isLoggedIn()) {\r\n console.log(\"PAC-UserIsLoggedIn\");\r\n } else {\r\n console.log(\"PAC-NotLoggedIn\");\r\n }\r\n\r\n $scope.hasReportClaimsRestrictionRole = function() {\r\n var userRoles = authenticationService.getRoles();\r\n if (userRoles.find(x => x == 'IM-REPORT-CLAIMS-RESTRICTION') === 'IM-REPORT-CLAIMS-RESTRICTION')\r\n {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n $scope.hasUserGotFIMInsurerRole = function() {\r\n var userRoles = authenticationService.getRoles(); \r\n if (userRoles.find(x => x == 'FIM-INSURER') === 'FIM-INSURER')\r\n { \r\n return true; \r\n }\r\n return false;\r\n };\r\n\r\n\r\n var getCurrentTenant = function() {\r\n organisationService.getCurrentUserTenant().then(\r\n function(response) {\r\n $rootScope.PAC.activeTenant = response.data;\r\n\r\n loadTenantOrganisation();\r\n },\r\n function(errorResponse) {\r\n console.log(\"PAC-Error-TenantLookup\");\r\n }\r\n );\r\n };\r\n var loadTenantOrganisation = function() {\r\n organisationService.getCompany($rootScope.PAC.activeTenant.CompanyId).then(\r\n function(response) {\r\n $rootScope.PAC.activeTenantCompany = response.data;\r\n\r\n findContractForService();\r\n },\r\n function(errorResponse) {\r\n console.log(\"PAC-Error-TenantCompanyLookup\");\r\n }\r\n );\r\n };\r\n var findContractForService = function() {\r\n $rootScope.PAC.activeContract = _.find($rootScope.PAC.activeTenantCompany.CustomerContracts, function(c) {\r\n return c.Service.ServiceId === service.Id;\r\n });\r\n\r\n getProductsOnContract();\r\n };\r\n var getProductsOnContract = function() {\r\n organisationService.getProductsOnContract($rootScope.PAC.activeTenant.CompanyId, $rootScope.PAC.activeContract.CustomerContractId).then(\r\n function(response) {\r\n $rootScope.PAC.products = response.data;\r\n flatternProducts();\r\n\r\n $rootScope.PAC.products.loaded = true;\r\n },\r\n function(errorResponse) {\r\n console.log(\"PAC-Error-Products\");\r\n }\r\n );\r\n };\r\n\r\n //this is used to Recursivly go through all products and subproducts and produce a /map.\r\n //e.g. /IM/ClaimSummary/Something\r\n var getPaths = function(parentPath, product) {\r\n if (!product) {\r\n return [];\r\n }\r\n var paths = [];\r\n var newParentPath = parentPath + \"/\" + product.Name;\r\n paths.push(newParentPath);\r\n\r\n _.each(product.SubProducts, function(p) {\r\n paths.push(getPaths(newParentPath, p));\r\n });\r\n\r\n return paths;\r\n };\r\n\r\n var flatternProducts = function() {\r\n var paths = _.map($rootScope.PAC.products, function(i) {\r\n return getPaths(\"\", i);\r\n });\r\n\r\n var flatPaths = _.flattenDeep(paths);\r\n\r\n $rootScope.PAC.flatProducts = flatPaths;\r\n completedPAC();\r\n };\r\n var completedPAC = function() {\r\n screenBlockService.clearScreen();\r\n };\r\n\r\n //Start Chain of Events\r\n getCurrentTenant();\r\n })\r\n .factory(\"PACCheckerService\", function($rootScope) {\r\n var pac = {};\r\n pac.IsPacDone = function() {\r\n if ($rootScope.PAC && $rootScope.PAC.products && $rootScope.PAC.products.length > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n pac.GetProductMap = function() {\r\n return $rootScope.PAC.flatProducts;\r\n };\r\n pac.HasProduct = function(productFlatPath) {\r\n if (pac.IsPacDone() === false) {\r\n console.log(\"PAC CHECK PRE-PAC-INIT\");\r\n }\r\n\r\n return _.contains($rootScope.PAC.flatProducts, productFlatPath);\r\n };\r\n pac.HasProductFromArray = function(paths) {\r\n return _.some(paths, pac.HasProduct);\r\n };\r\n\r\n return pac;\r\n })\r\n //UAC = User Access Control - Checks to see if the user has a specific role\r\n .factory(\"UACService\", function($rootScope, authenticationService) {\r\n var uac = {};\r\n\r\n uac.hasRole = function(requiredRole) {\r\n if (authenticationService.isLoggedIn()) {\r\n var x = _.some(authenticationService.getRoles(), function(r) {\r\n return r == requiredRole;\r\n });\r\n return x;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n return uac;\r\n })\r\n .directive(\"pac\", function($animate, PACCheckerService) {\r\n return {\r\n transclude: \"element\",\r\n priority: 600,\r\n terminal: true,\r\n restrict: \"A\",\r\n link: function($scope, $element, $attr, ctrl, $transclude) {\r\n var block, childScope, products;\r\n\r\n $attr.$observe(\"pac\", function(value) {\r\n products = $scope.$eval(value);\r\n if (PACCheckerService.HasProductFromArray(products)) {\r\n if (!childScope) {\r\n childScope = $scope.$new();\r\n $transclude(childScope, function(clone) {\r\n block = {\r\n startNode: clone[0],\r\n endNode: (clone[clone.length++] = document.createComment(\" end rlnRequireRoles: \" + $attr.rlnRequireRoles + \" \"))\r\n };\r\n $animate.enter(clone, $element.parent(), $element);\r\n });\r\n }\r\n } else {\r\n if (childScope) {\r\n childScope.$destroy();\r\n childScope = null;\r\n }\r\n\r\n if (block) {\r\n $animate.leave(getBlockElements(block));\r\n block = null;\r\n }\r\n }\r\n });\r\n }\r\n };\r\n })\r\n .directive(\"invertedPac\", function($animate, PACCheckerService) {\r\n //Hide Element if customer does have product\r\n return {\r\n transclude: \"element\",\r\n priority: 600,\r\n terminal: true,\r\n restrict: \"A\",\r\n link: function($scope, $element, $attr, ctrl, $transclude) {\r\n var block, childScope, products;\r\n\r\n $attr.$observe(\"invertedPac\", function(value) {\r\n products = $scope.$eval(value);\r\n if (PACCheckerService.HasProductFromArray(products) === false) {\r\n if (!childScope) {\r\n childScope = $scope.$new();\r\n $transclude(childScope, function(clone) {\r\n block = {\r\n startNode: clone[0],\r\n endNode: (clone[clone.length++] = document.createComment(\" end rlnRequireRoles: \" + $attr.rlnRequireRoles + \" \"))\r\n };\r\n $animate.enter(clone, $element.parent(), $element);\r\n });\r\n }\r\n } else {\r\n if (childScope) {\r\n childScope.$destroy();\r\n childScope = null;\r\n }\r\n\r\n if (block) {\r\n $animate.leave(getBlockElements(block));\r\n block = null;\r\n }\r\n }\r\n });\r\n }\r\n };\r\n })\r\n .directive(\"uac\", function($animate, UACService) {\r\n return {\r\n transclude: \"element\",\r\n priority: 600,\r\n terminal: true,\r\n restrict: \"A\",\r\n link: function($scope, $element, $attr, ctrl, $transclude) {\r\n var block, childScope, role;\r\n\r\n $attr.$observe(\"uac\", function(value) {\r\n role = $scope.$eval(value);\r\n if (UACService.hasRole(role) === true) {\r\n if (!childScope) {\r\n childScope = $scope.$new();\r\n $transclude(childScope, function(clone) {\r\n block = {\r\n startNode: clone[0],\r\n endNode: (clone[clone.length++] = document.createComment(\" end rlnRequireRoles: \" + $attr.rlnRequireRoles + \" \"))\r\n };\r\n $animate.enter(clone, $element.parent(), $element);\r\n });\r\n }\r\n } else {\r\n if (childScope) {\r\n childScope.$destroy();\r\n childScope = null;\r\n }\r\n\r\n if (block) {\r\n $animate.leave(getBlockElements(block));\r\n block = null;\r\n }\r\n }\r\n });\r\n }\r\n };\r\n })\r\n .controller(\"BrandController\", function($scope, tenantSetupService, $location) {\r\n // {\"TenantId\":1,\"AuthenticationRelay\":null,\"BrandIdentity\":\"fmg\"}\r\n var applyBranding = function() {\r\n var brand = tenantSetupService.activeSettings.BrandIdentity;\r\n\r\n $scope.loginLogoUrl = \"assets/images/\" + brand + \"-login-logo.png\";\r\n $scope.logoUrl = \"assets/images/\" + brand + \"-logo.png\";\r\n $scope.css = \"css/\" + brand + \".css\";\r\n };\r\n\r\n if (tenantSetupService.activeSettings) {\r\n applyBranding();\r\n } else {\r\n tenantSetupService.getSettings().then(function(response) {\r\n tenantSetupService.activeSettings = response.data;\r\n applyBranding();\r\n });\r\n }\r\n })\r\n .controller(\"AuthenticationStatusController\", function($scope, authenticationService, $state, app_env) {\r\n (function oninit() {\r\n $scope.env = app_env.name;\r\n $scope.envVersion = app_env.version;\r\n })();\r\n\r\n $scope.renewToken = function() {\r\n authenticationService.renewToken().then(function() {\r\n authenticationService.untilExpire();\r\n });\r\n };\r\n $scope.warnExpire = function() {\r\n return authenticationService.warnExpire;\r\n };\r\n $scope.untilExpire = function() {\r\n return authenticationService.expires;\r\n };\r\n $scope.isLoggedIn = function() {\r\n var res = authenticationService.isLoggedIn();\r\n if (res === false && $scope.token) {\r\n $scope.token = null;\r\n }\r\n return res;\r\n };\r\n\r\n $scope.token = null;\r\n $scope.displayName = function() {\r\n if (!$scope.token) {\r\n $scope.token = authenticationService.getToken();\r\n }\r\n\r\n return $scope.token.identity.displayName || $scope.token.identity.name;\r\n };\r\n\r\n $scope.groups = function() {\r\n return $scope.token.roles;\r\n };\r\n\r\n $scope.logout = function() {\r\n $scope.token = null;\r\n authenticationService.logout();\r\n };\r\n })\r\n .directive(\"filesInput\", function() {\r\n return {\r\n require: \"ngModel\",\r\n link: function postLink(scope, elem, attrs, ngModel) {\r\n elem.on(\"change\", function(e) {\r\n var files = elem[0].files;\r\n ngModel.$setViewValue(files);\r\n });\r\n }\r\n };\r\n });\r\n","(function () {\r\n 'use strict';\r\n\r\n var fmgApp = angular.module('common-services');\r\n fmgApp.factory('commonLogService', function (appProduct, app_env, $http, $q, $location) {\r\n var svc = {}\r\n svc.buildStubLogPayload = function(eventName, isError){\r\n return {\r\n source: 'ps-client',\r\n application: appProduct.name,\r\n eventName: eventName,\r\n level: isError ? 'error' : 'info',\r\n env: app_env.name,\r\n appVersion: app_env.version,\r\n eventData: {}\r\n }\r\n }\r\n svc.sendEvent = function(payload){\r\n if(app_env.loggingEnabled === true){\r\n return $http.post(app_env.baseUrl + 'LOG/pslogs/event', payload);\r\n }else{\r\n return $q(function(resolve, reject) {\r\n resolve();\r\n });\r\n }\r\n }\r\n svc.decorateApiPromise = function(apiPromise){\r\n return apiPromise; //TODO - The below code will need uncommenting once the Docker services have been fixed.\r\n\r\n // return apiPromise.then(function(res){\r\n // return svc.sendApiResponseEvent(res)\r\n // })\r\n // .catch(function(err){\r\n // svc.sendApiResponseEvent(err)\r\n // throw err;\r\n // })\r\n }\r\n svc.decorateApiFunction = function(func){\r\n return svc.decorateApiPromise(func())\r\n }\r\n svc.sendApiResponseEvent = function(response){\r\n\r\n try {\r\n var isError = !(response.status >= 200 && response.status < 300);\r\n var api = response.config.url.replace(app_env.baseUrl, '')\r\n var service = api.substring(0,api.indexOf('/'))\r\n var resultCode = response.status\r\n var responseTime = -1\r\n if(response.config.requestTimestamp && response.config.responseTimestamp){\r\n var time = response.config.responseTimestamp - response.config.requestTimestamp;\r\n console.log('Time taken ' + (time / 1000) + ' seconds.');\r\n responseTime = time\r\n }\r\n\r\n var payload = svc.buildStubLogPayload('api-invoke', isError)\r\n payload.eventData.service = service,\r\n payload.eventData.api = api,\r\n payload.eventData.host = $location.host(),\r\n payload.eventData.resultCode = resultCode,\r\n payload.eventData.responseTime = responseTime\r\n\r\n svc.sendEvent(payload);\r\n return response;\r\n\r\n } catch(err) {\r\n console.error('Logging Error', err)\r\n return $q(function(resolve, reject) {\r\n resolve(response);\r\n });\r\n }\r\n\r\n }\r\n return svc;\r\n });\r\n})(window.angular);\r\n","(function (angular) {\r\n \"use strict\";\r\n var fmgCommon = angular.module('common-services');\r\n\r\n fmgCommon.controller('ProductsController', function ($scope, authenticationService, $location, $window) {\r\n\r\n $scope.initDone = false;\r\n $scope.productCount = 0;\r\n\r\n var products = [];\r\n products.push({\r\n name: 'User Management Self Service',\r\n icon: 'action:account_box',\r\n hasRole: function (userToken) {\r\n return _.some(userToken.roles, function (grp) {\r\n return false;//Disabled For Now\r\n //return grp === 'ORG-USER-MGR' || grp === 'GLOBAL-USER-MGR';\r\n });\r\n },\r\n navigateTo: function () {\r\n $window.location.href = $window.location.protocol + '//' + $window.location.host + '/usr-mgr-app';\r\n }\r\n }\r\n );\r\n products.push({\r\n name: 'HE Portal',\r\n icon: 'maps:directions',\r\n hasRole: function (userToken) {\r\n return _.some(userToken.roles, function (grp) {\r\n return grp === 'HE-OPERATOR' || grp === 'HE-FINANCE';\r\n });\r\n },\r\n navigateTo: function () {\r\n $window.location.href = $window.location.protocol + '//' + $window.location.host + '/he-app';\r\n }\r\n }\r\n );\r\n products.push(\r\n {\r\n name: 'Incident Management',\r\n className : 'imProd',\r\n icon: 'image:transform',\r\n hasRole: function (userToken) {\r\n return _.some(userToken.roles, function (grp) {\r\n return grp === 'FIM-OPERATOR' || grp === 'FIM-CLIENT';\r\n });\r\n },\r\n navigateTo: function () {\r\n $window.location.href = $window.location.protocol + '//' + $window.location.host + '/im-app';\r\n }\r\n }\r\n );\r\n products.push(\r\n {\r\n name: 'Customer Portal Reporting',\r\n className : 'custPortalProd',\r\n icon: 'action:assessment',\r\n hasRole: function (userToken) {\r\n return _.some(userToken.roles, function (grp) {\r\n return grp === 'FIM-TAM-REPORT';\r\n });\r\n },\r\n navigateTo: function () {\r\n $window.location.href = $window.location.protocol + '//' + $window.location.host + '/customer-portal-app';\r\n }\r\n });\r\n products.push({\r\n name: 'RISK',\r\n icon: 'action:timeline',\r\n hasRole: function (userToken) {\r\n return _.some(userToken.roles, function (grp) {\r\n return grp === 'ID-DRIVER' || grp === 'ID-FLEET-MGR' || grp === 'ID-INTERNAL' || grp === 'ID-SUPPLIER' || grp === 'ID-OPERATOR';\r\n });\r\n },\r\n navigateTo: function () {\r\n $window.location.href = $window.location.protocol + '//' + $window.location.host + '/id-app';\r\n }\r\n });\r\n\r\n $scope.claims = authenticationService.getToken().roles;\r\n\r\n $scope.OnInit = function (autoNavigate) {\r\n var userToken = authenticationService.getToken();\r\n\r\n $scope.activatedProducts = _.filter(products, function (p) {\r\n return p.hasRole(userToken);\r\n });\r\n\r\n $scope.productCount = $scope.activatedProducts.length;\r\n\r\n if ($scope.activatedProducts.length === 0) {\r\n $scope.initDone = true;\r\n //Should not happen\r\n } else if ($scope.activatedProducts.length === 1) {\r\n //Only Single Product - Navigate to it\r\n if(autoNavigate === true){\r\n $scope.activatedProducts[0].navigateTo();\r\n }else{\r\n $scope.initDone = true;\r\n }\r\n\r\n }else{\r\n //Only mark init as done, if we are not going to auto redirect\r\n $scope.initDone = true;\r\n\r\n }\r\n };\r\n });\r\n\r\n fmgCommon.directive('fmgAppSwitch', function () {\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n\r\n },\r\n controller: ['$scope', function ($scope) {\r\n\r\n }],\r\n templateUrl: 'common-app/_appSwitch.html'\r\n };\r\n });\r\n})(window.angular);","(function(angular) {\r\n \"use strict\";\r\n var fmgCommon = angular.module(\"common-services\");\r\n\r\n fmgCommon.directive(\"fmgLogi\", function() {\r\n return {\r\n restrict: \"E\",\r\n scope: {\r\n __reportName: \"=reportName\",\r\n __parameters: \"=parameters\",\r\n __reportId: \"=reportId\",\r\n env: \"=?\",\r\n refresh: \"=\",\r\n autoLoad: \"=\",\r\n renderCompleted: \"=\"\r\n },\r\n controller: [\r\n \"$scope\",\r\n \"app_env\",\r\n \"$interval\",\r\n function($scope, app_env, $interval) {\r\n if (!$scope.env) {\r\n $scope.env = \"reportsUrl\";\r\n }\r\n\r\n $scope.$watch(\"__reportName\", function(newValue) {\r\n $scope.refresh();\r\n });\r\n\r\n var report;\r\n $scope.refresh = function() {\r\n if (!$scope.__reportName) {\r\n return;\r\n }\r\n\r\n var options = {\r\n applicationUrl: app_env[$scope.env],\r\n report: $scope.__reportName,\r\n autoSizing: \"all\",\r\n secureKey: \"\",\r\n linkParams: $scope.__parameters\r\n };\r\n\r\n console.log(\"Loading Report \" + $scope.__reportName, $scope.__parameters);\r\n if (report != null) {\r\n EmbeddedReporting.remove($scope.__reportId);\r\n }\r\n\r\n $scope.isLoading = true;\r\n report = EmbeddedReporting.create($scope.__reportId, options);\r\n\r\n var originalMethod = report.frameLoaded;\r\n\r\n //Wrap frameLoaded so we can be notified when the frame has finished loading\r\n report.frameLoaded = function() {\r\n if ($scope.renderCompleted) {\r\n $scope.renderCompleted();\r\n }\r\n\r\n //This is a nasty hack because Logi is blocking the digest cycle doing a sync XHR\r\n $scope.$apply(function() {\r\n $scope.isLoading = false;\r\n });\r\n originalMethod.call(report); //Use .call(report) syntax as EmbeddedReporting object does not play nice and assumes what 'this' means\r\n };\r\n };\r\n\r\n if ($scope.autoLoad === true) {\r\n var autoLoadInterval = $interval(function() {\r\n //Does Id Exist\r\n var target = document.getElementById($scope.__reportId);\r\n\r\n //Yes - render Report, & kill interval\r\n\r\n if (target) {\r\n $scope.stopInterval();\r\n $scope.refresh();\r\n }\r\n }, 1 * 1000);\r\n }\r\n\r\n $scope.$on(\"$destroy\", function() {\r\n $scope.stopInterval();\r\n\r\n //Clean Up report\r\n if (report) {\r\n EmbeddedReporting.remove($scope.__reportId);\r\n }\r\n });\r\n\r\n $scope.stopInterval = function() {\r\n if (angular.isDefined(autoLoadInterval)) {\r\n $interval.cancel(autoLoadInterval);\r\n autoLoadInterval = undefined;\r\n }\r\n };\r\n }\r\n ],\r\n template: '
'\r\n };\r\n });\r\n})(window.angular);\r\n","(function (angular) {\r\n \"use strict\";\r\n var fmgApp = angular.module('common-services');\r\n\r\n //This controller handles redirection if you land at the root of the site. e.g. http://productsuite.com/\r\n //and takes you to the LauncherApp - if logged in, you go to the Product List Page, if not logged in, logout is called\r\n //to ensure no invalid token has been saved, and then auto redirect you to the Loginpage.\r\n fmgApp.controller('RedirectionController', function ($scope,authenticationService,$state) {\r\n\r\n $scope.OnInit = function(){\r\n if(authenticationService.isLoggedIn() === true){\r\n $state.go('list');\r\n }else{\r\n authenticationService.logout();\r\n }\r\n };\r\n });\r\n})(window.angular);"],"sourceRoot":"/source/"}