{"version":3,"sources":["dist/ts/ts.system.modules.js"],"names":["multiselect","MultiSelectButtonCtrl","s","e","$inject","MultiSelectButton","$compile","filterFilter","$rootScope","_this","this","restrict","require","replace","scope","items","selectedItems","required","mapValue","mapSelected","isDropDown","label","listFilter","controller","link","a","c","_self","options","JSON","parse","item","name","showAll","internalSelectedItems","notReady","levels1","filteredLevels1","levels2","filteredLevels2","searchPhrase","selectedInfo","$validators","mv","v","length","$watch","n","o","doPrepareLevel1","doPrepareLevel2","onSearchPhraseChanged","doFilter","angular","forEach","k","_level","expanded","selected","filteredItems","_search","toLowerCase","indexOf","buildList","msGroup","msGroupName","undefined","_selectedItems_1","i","value","isSelected","isElementSelectedByDefault","push","slice","_selectedItems","_","map","$setValidity","addToSelected","removeFromSelected","_idx","splice","_resetListener","$on","event","args","clearAll","toggleItem","group","g","toggleAll","toggleExpand","isDropDownVisible","toggleDropDown","isItemSelected","defaultSelectedItems","defaultSelectedItemsInited","template","Factory","dir","systemAdmin","SystemPanelDirective","templateUrl","user","requestId","isAdmin","partner","settings","d","SystemPanelProcessStatusChangeListCtrl","$scope","SystemPanelProcessStatusChangeListDirective","process","SystemPanelProcessPartnerChangeListCtrl","SystemPanelProcessPartnerChangeListDirective","SystemPanelAdminHelperSrv","currentFilter","setCurrentFilter","filter","stringify","getCurrentFilter","SystemPanelReportCtrl","$window","GenerateProcessWorksheetByCurrentFilter","filterJson","open","GenerateProcessWorksheet","ProcessTypeNameDir","type","elem","attr","SystemFraudSrv","$http","$q","getData","id","url","get","sendData","put","request","checkData","SystemFraudCtrl","service","toaster","$timeout","refresh","processId","then","data","Result","sendAgain","pop","checkAgain","SystemFraudDirective","SystemOfferNoteSrv","listAll","saveData","post","updateData","Guid","SystemOfferNoteCtrl","$modal","OfferClientResonse_Guid","Notes","AddNote","offerId","modalInstance","animation","resolve","OfferGuid","Item","PartnerName","Partner","result","EditNote","SystemOfferNoteDirective","SystemPanelOfferPaymentConfirmationSrv","getPayments","checkPayment","confirmationId","SystemPanelOfferPaymentConfirmationCtrl","paymentConfirmations","SystemPanelOfferPaymentConfirmationDirective","SystemPanelUserAuditSrv","getUserAudits","SystemPanelUserAuditCtrl","userAudits","SystemPanelUserAuditDirective","SystemPanelClientCommunicationHistorySrv","getHistory","SystemPanelClientCommunicationHistoryCtrl","history","SystemPanelPanelClientCommunicationHistoryDirective","SystemLoginPanelCtrl","currentView","changeViewToResetPasswordForm","changeViewToLoginForm","SystemLoginAuthPanelCtrl","$location","login","password","headers","headerName","token","ChangePasswordOnLogon","$parent","top","location","href","showLogin","toggleLoginHelp","showPassword","togglePasswordHelp","SystemLoginChangePasswordPanelCtrl","CurrentPassword","Password","PasswordConfirm","saveNewPassword","ChangePaswordOnLogon","cancel","SystemLoginResetPasswordPanelCtrl","Login","Channel","resetPassword","parseInt","SystemLoginAuthPanelDirective","SystemLoginChangePasswordPanelDirective","SystemLoginResetPasswordPanelDirective","SystemLoginPanelDirective","okMessage","failMessage","console","log","SystemScoringOutputSrv","getScoring","SystemScoringOutputCtrl","$service","rules","refreshRules","DecisionEngineResponseAsObject","OutputRulesAsObject","SystemScoringOutputDirective","ResetPasswordLinkDirective","ChangePasswordExternalLinkDirective","$el","script","document","createElement","src","append","element","SignUpExternalLinkDirective","module","directive","systemCategoryProducts","ProductSrv","ProductsCtrl","currentPartnerGuid","currentPartner","Key","filteredList","search","ProductName","ProductModels","filterRequest","_v0","_v1","_v2","ProductId","_v3","ProductCode","_v4","ProductCategory","Refresh","DeleteProduct","productPartner","confirm","toString","AddProduct","dataForNewProduct","ProductAmortizationRate","EditProduct","dataForEditProduct","f","h","setAsDefault","productId","partnerId","AddProductModalCtrl","$modalInstance","ok","close","dismiss","EditProductModalCtrl","systemProcess","AddressFormCtrl","streetPrefixes","AddressFormDirective","address","isRequired","hideSpecificPlace","isFormValidated","PersonFormDirective","PersonFormCtrl","person","system","PartnersCtrl","FileUploader","PartnerFunc","PartnersModels","config","itemsPerPage","maxPages","fillLastPage","Name","logoTimeStamp","Date","getTime","showPartnerData","addNewPartner","backToPartners","DeletePartner","partnerName","UploadPartnerProducts","Partner_Guid","uploader","method","queueLimit","onErrorItem","fileItem","response","status","onSuccessItem","complete","onCompleteItem","onBeforeUploadItem","formData","partnerData","oID","queue","onCompleteAll","uploadAll","PartnerCtrl","ContactPersonModels","ContactPeopleList","BankAccountModels","BankAccountsList","PartnerTypes","key","saveEditedPartner","CaptchaImage","CaptchaData","Status","ShouldDownloadRegistryData","error","downloadRegistryDataAgain","FirstName","LastName","Email","searchBankAccount","bankAccountFilterRequest","RefreshContactPeople","RefreshBankAccounts","AddContactPerson","dataForNewContactPerson","PartnerID","PhoneNumber","EditContactPerson","contactPerson","dataForEditContactPerson","DeleteContactPerson","AddBankAccount","dataForNewBankAccount","IBAN","BankAccountStatus","EditBankAccount","bankAccount","dataForEditBankAccount","DeleteBankAccount","PartnerProductUploadModalCtrl","AddContactPersonModalCtrl","EditContactPersonCtrl","AddBankAccountModalCtrl","EditBankAccountModalCtrl","CaptchaNeededModalCtrl","PartnerProductCtrl","PartnerProductSrv","currentPartnerProductTab","PartnerSystemProductsCtrl","Product","listSystemProducts","Product_Guid","obj","Included","updatePartnerSystemProduct","LeaselinkProductsMainCtrl","ProductFunc","ProductsList","FinancialProductName","showItem","EditMode","Validfrom","Validto","Procestill","addItem","deleteItem","showChildren","currentParent","backToFinancialProducts","$broadcast","LeaselinkProductCtrl","editItem","saveItem","LeaselinkChildProductCtrl","LeaselinkProductChildrenCtrl","ProductChildrenList","ParentGuid","NetValueMin","NetValueMax","GrossValueMin","GrossValueMax","EntryPaymentMin","EntryPaymentMax","AdminPaymentMin","AdminPaymentMax","NumberOfRatesMin","NumberOfRatesMax","ClosingPaymentMin","ClosingPaymentMax","MarginMin","MarginMax","UsersCtrl","SystemDataHelper","chunk","arr","size","newArr","UsersModels","Phrase","ExternalId","PartnerSupervisors","Partners","PartnerUrl","Roles","FullName","showUserData","Id","currentUser","UserFunc","changePasswordItem","addNewUser","backToUsers","saveEditedUser","model","searchStatuses","AllStatuses","chunkStatuses","filterRequestStatuses","filteredStatusesList","chunkedStatuses","updateSelection","$event","checkbox","target","action","checked","updateSelected","DefaultStatuses","UserCtrl","AccessAPI","AccessKalkSklep","AccessOpenKlient","AccessOpenPartner","UserPasswordCtrl","passwordModel","PasswordRepeat","UserId","LlUserHierarchyDirective","currentUserGuid","usersList","findSubordinates","list","supervisorGuid","PartnerSupervisor_Guid","makeNode","subordinates","current","findWhere","nodeUser","toggle","clientConsents","ClientConsentsSrv","getConsentList","processStage","getProcessConsents","orderId","ClientConsentsCtrl","formRequest","stage","step","consents","AggragatedCalulationId","processConsents","initCheckbox","consentGuid","consentInitialValue","Requestors","Consents","_processConsent","Agreed","isCollapsed","keys","Object","consent","found","j","_consent","consentsModel","_key","checkAll","selectAll","ClientConsentsDir","simpleForm","ClientConsentsNewDir","ClientConsentsInnerDir","ClientConsentsInfoDir","clientDirectives","ngProcessMultiStepsCtrl","numberOfSteps","userLogged","currentStep","isVisible","partnerPosition","position","ngProcessMultiSteps","ngProcessSideDrawerCtrl","showDrawer","isDrawerVisible","closeDrawer","isDrawerAvaiable","ngProcessSideDrawer","ngCreateOfferCartCtrl","ngCreateOfferCart","ngCreateOfferCartStationaryCtrl","ngCreateOfferCartStationary","ngCreateOfferClientDataCtrl","ngCreateOfferClientData","ngClientDataCtrl","editData","isEdited","onSave","ngClientData","isEditable","ngClientAddressDataCtrl","RequestorAddresses","Confirmed","Required","ngClientAddressData","ngClientDocumentsDataSrv","getDocuments","sendConfirmation","fileIds","ngClientDocumentsDataCtrl","Documents","evt","showDocument","fileId","window","sendMessageToLeaseLink","RequestId","confirmDocument","params","_params","Role","callBack","showRequest","confirmDocumentWithNoReaload","doc","FileId","ngClientDocumentsData","ngClientDeliveryDataCtrl","RequestorDeliveryAddress","copy","ngClientDeliveryData","ngClientCollectDataCtrl","RequestorCollectAddress","TypeOfItemCollect","RequestorSelfCollectAddress","ngClientCollectData","ngClientSelfCollectDataCtrl","ngClientSelfCollectData","ngClientSelfCollectDataListCtrl","selectedAddress","getExternalStoreAddresses","ADDRESSES","mapRequestModelToFormModel","mapFormModelToRequestModel","PostalCode","postcode","District","voivodeship","City","city","ShopName","Street","street","requestModel","formModel","ngClientSelfCollectDataList","ngClientSelfCollectDataSrv","ngProductDeliveryAddressCtrl","categoryFilter","ProductTypeName","ngProductDeliveryAddress","ngServiceDeliveryAddressCtrl","ngServiceDeliveryAddress","AddressNewFormCtrl","_isFormValidated","isAutoCompleteDisabled","setTimeout","AddressNewFormDirective","liteForm","AddressNewFormLiteDirective","FrontFooterDirective","FrontHelpDirective","$sce","el","attrs","html","toLocaleLowerCase","renderHelpFromBackend","trustAsHtml","paymentType","processType","logged","ngShowHeader","ngClientInfoMessageService","prototype","showInfoMessage","showMessage","ShowMessage","messageBody","MessageBody","messageShown","sessionStorage","getItem","infoMessage","setItem","ClientInfoMessageDirective","ClientInfoMessageCtrl"],"mappings":"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","file":"ts.system.modules.min.js","sourcesContent":["var multiselect;\n(function (multiselect) {\n var MultiSelectButtonCtrl = (function () {\n function MultiSelectButtonCtrl(s, e) {\n }\n MultiSelectButtonCtrl.$inject = ['$scope', '$element'];\n return MultiSelectButtonCtrl;\n }());\n multiselect.MultiSelectButtonCtrl = MultiSelectButtonCtrl;\n var MultiSelectButton = (function () {\n function MultiSelectButton($compile, filterFilter, $rootScope) {\n var _this = this;\n this.$compile = $compile;\n this.filterFilter = filterFilter;\n this.$rootScope = $rootScope;\n this.restrict = 'AE';\n this.require = 'ngModel';\n this.replace = true;\n this.scope = {\n items: \"=ngItems\",\n selectedItems: \"=ngModel\",\n required: \"=ngRequired\",\n mapValue: \"@ngMapValue\",\n mapSelected: \"@ngMapSelected\",\n isDropDown: \"@ngIsDropDown\",\n label: \"@ngLabel\",\n listFilter: \"@ngMultiselectFilter\"\n };\n this.controller = MultiSelectButtonCtrl;\n this.link = function (s, e, a, c) {\n var _self = _this;\n var options = JSON.parse(a[\"ngMultiSelectButton\"] || \"{}\");\n if (!s.listFilter) {\n s.listFilter = function (item) { return item.name; };\n }\n // pokazanie tylko listy wartości\n s.showAll = options.showAll || false;\n s.internalSelectedItems = [];\n s.notReady = true;\n s.levels1 = [];\n s.filteredLevels1 = [];\n s.levels2 = {};\n s.filteredLevels2 = {};\n s.searchPhrase = \"\";\n //s.selectedItems = [];\n s.selectedInfo = (s.label ? s.label : \"wszystkie\");\n // walidotor reuire\n if (s.required) {\n c.$validators.required = function (mv, v) {\n return (s.selectedItems.length > 0);\n };\n }\n // fraza\n s.$watch(\"searchPhrase\", function (n, o) {\n if (n !== o) {\n s.doPrepareLevel1();\n s.doPrepareLevel2();\n }\n });\n // listener\n s.onSearchPhraseChanged = function (searchPhrase) {\n s.searchPhrase = searchPhrase;\n };\n // przygotowanie poziom 1\n s.doPrepareLevel1 = function () {\n s.filteredLevels1 = [];\n s.filteredLevels1 = _self.filterFilter(s.levels1, s.doFilter);\n };\n // przygotowanie poziom 2\n s.doPrepareLevel2 = function () {\n angular.forEach(s.levels2, function (v, k) {\n var _level = s.filteredLevels2[k];\n if (!_level)\n _level = { expanded: v.expanded, selected: v.selected, filteredItems: [] };\n _level.filteredItems = _self.filterFilter(v.items, s.doFilter);\n s.filteredLevels2[k] = _level;\n });\n };\n // filter\n s.doFilter = function (item) {\n var _search = (s.searchPhrase || \"\").toLowerCase();\n if ((item.name || \"\").toLowerCase().indexOf(_search) === -1)\n return false;\n return true;\n };\n // zbudowanie listy\n s.buildList = function (items) {\n /*\n if (typeof s.mapSelected === 'string')\n s.internalSelectedItems = _.filter(s.filteredItems, function (i) {\n return (i[s.mapSelected] == true);\n });\n else\n s.internalSelectedItems = [];\n */\n // jak sa elementy\n if (items.length >= 0) {\n // pepare temaplte\n var _html = \"\";\n var msGroup = false;\n var msGroupName = undefined;\n s.notReady = false;\n s.levels1 = [];\n s.levels2 = {};\n var _selectedItems_1 = [];\n angular.forEach(items, function (i) {\n if (i.msGroup === true && typeof i.name !== \"undefined\") {\n // otwarcie grupy\n msGroup = true;\n msGroupName = i.name;\n if (!s.levels2[msGroupName])\n s.levels2[msGroupName] = { expanded: false, selected: false, items: [], filteredItems: [] };\n }\n else if (msGroup === true && i.msGroup === false) {\n // zamkniecie grupy\n msGroup = false;\n msGroupName = undefined;\n }\n else if (msGroup == true && typeof i.value !== \"undefined\" && typeof i.name !== \"undefined\") {\n // dodawanie elementow w grupie\n var isSelected = s.isElementSelectedByDefault(i);\n var item = { name: i.name, value: i.value, selected: isSelected };\n s.levels2[msGroupName].items.push(item);\n if (item.selected === true)\n _selectedItems_1.push(item);\n }\n else if (msGroup === false && typeof i.value !== \"undefined\" && typeof i.name !== \"undefined\") {\n // dodawanie elementow\n var isSelected = s.isElementSelectedByDefault(i);\n var item = { name: i.name, value: i.value, selected: isSelected };\n s.levels1.push(item);\n if (item.selected === true)\n _selectedItems_1.push(item);\n }\n });\n // jak zaznaczone\n s.internalSelectedItems = (_selectedItems_1 || []).slice();\n }\n };\n // poziom 1\n s.$watch('levels1', function () {\n s.doPrepareLevel1();\n });\n // poziom 2\n s.$watch('levels2', function () {\n s.doPrepareLevel2();\n });\n // obiekty zewnetrzne\n s.$watch(\"items\", function () {\n s.buildList(s.items);\n });\n // obiekty wewnetrzne\n s.$watch(\"internalSelectedItems\", function (n, o) {\n if (n !== o) {\n var _selectedItems = [];\n if (typeof s.mapValue === 'string')\n _selectedItems = _.map(s.internalSelectedItems, function (i) {\n return i[s.mapValue];\n });\n else\n _selectedItems = s.internalSelectedItems;\n // zbadanie co jest a co nie\n s.selectedItems = _selectedItems;\n // wymagalnosc\n if (s.required && c) {\n c.$setValidity('required', (s.selectedItems.length > 0));\n }\n // napis na wyswietlaczu\n s.selectedInfo = (s.selectedItems.length > 0 ? (\"zaznaczono \" + s.selectedItems.length) : (s.label ? s.label : \"wszystkie\"));\n }\n }, true);\n // zaznaczenie itema\n s.addToSelected = function (item) {\n var _self = this;\n s.internalSelectedItems = s.internalSelectedItems || [];\n if (s.internalSelectedItems.indexOf(item) === -1) {\n s.internalSelectedItems.push(item);\n }\n };\n // odznaczenie itema\n s.removeFromSelected = function (item) {\n var _self = this;\n s.internalSelectedItems = s.internalSelectedItems || [];\n var _idx = s.internalSelectedItems.indexOf(item);\n if (_idx !== -1)\n s.internalSelectedItems.splice(_idx, 1);\n };\n // reagowanie na button \"reset\" z innego kontekstu\n var _resetListener = _this.$rootScope.$on('multiselect::reset', function (event, args) {\n s.clearAll();\n });\n s.$on('$destroy', _resetListener);\n // klikanie po elementach\n s.toggleItem = function (item, group) {\n if (item.selected === true) {\n item.selected = !item.selected;\n s.removeFromSelected(item);\n }\n else {\n item.selected = !item.selected;\n s.addToSelected(item);\n }\n // jak grupa\n if (group && item.selected === false) {\n var g = s.filteredLevels2[group] || { expanded: true, selected: true, items: [], filteredItems: [] };\n g.selected = false;\n }\n };\n // zaznaczenie grupu\n s.toggleAll = function (group) {\n var g = s.filteredLevels2[group] || { expanded: true, selected: true, items: [], filteredItems: [] };\n angular.forEach(g.filteredItems, function (i) {\n i.selected = g.selected;\n s.toggleItem(i);\n });\n g.selected = !g.selected;\n };\n // rozwijanie\n s.toggleExpand = function (group) {\n var g = s.filteredLevels2[group] || { expanded: true, selected: true, items: [] };\n g.expanded = !g.expanded;\n };\n // rozwijanie dropdown\n s.isDropDownVisible = false;\n s.toggleDropDown = function () {\n s.isDropDownVisible = !s.isDropDownVisible;\n };\n // zaznaczenie\n s.isItemSelected = function (item) {\n return item.selected;\n };\n // wyczyszczenia\n s.clearAll = function () {\n var _selectedItems = s.internalSelectedItems;\n for (var i = _selectedItems.length - 1; i >= 0; i--) {\n s.toggleItem(_selectedItems[i]);\n }\n };\n // pierwsze zaldowanie\n s.defaultSelectedItems = [];\n s.defaultSelectedItemsInited = false;\n s.$watch(\"defaultSelectedItems\", function () {\n s.buildList(s.items);\n });\n s.$watch(\"selectedItems\", function () {\n if (s.defaultSelectedItemsInited === false) {\n s.defaultSelectedItems = (s.selectedItems || []).slice();\n s.defaultSelectedItemsInited = true;\n }\n });\n // sprawdzenie czy zaznaczony domyslnie\n s.isElementSelectedByDefault = function (item) {\n if (typeof s.mapValue === \"string\") {\n if (s.defaultSelectedItems.indexOf(item[s.mapValue]) !== -1)\n return true;\n }\n return (s.defaultSelectedItems.indexOf(item) !== -1);\n };\n };\n this.template = \"\\n
\\n ...\\n \\n \\n
\\n\\n \\n
\\n
\\n \\n
\\n
\\n \\n\\n \\n
\\n
\\n \\n X\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n
{{i.name}}
\\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
{{k}} ({{ v.filteredItems.length }})
\\n
\\n
\\n\\n
\\n
\\n
{{i.name}}
\\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n \\n \\n
\\n \\n\\n
\\n \\n
\\n \";\n }\n MultiSelectButton.Factory = function () {\n var dir = function ($compile, filterFilter, $rootScope) {\n return new MultiSelectButton($compile, filterFilter, $rootScope);\n };\n dir['$inject'] = ['$compile', 'filterFilter', '$rootScope'\n ];\n return dir;\n };\n ;\n ;\n return MultiSelectButton;\n }());\n multiselect.MultiSelectButton = MultiSelectButton;\n ;\n})(multiselect || (multiselect = {}));\nvar systemAdmin;\n(function (systemAdmin) {\n // główny panel administracyjny\n var SystemPanelDirective = (function () {\n function SystemPanelDirective() {\n this.templateUrl = '/WWW/partials/modules/admin/system.panel.html';\n this.controller = \"SystemCtrl\";\n this.scope = {\n user: \"=\",\n requestId: \"=\",\n isAdmin: \"=\",\n partner: \"=\",\n settings: \"=\"\n };\n }\n ;\n SystemPanelDirective.Factory = function () {\n var d = function () { return new SystemPanelDirective(); };\n d['$inject'] = [];\n return d;\n };\n return SystemPanelDirective;\n }());\n systemAdmin.SystemPanelDirective = SystemPanelDirective;\n // lista statusow\n var SystemPanelProcessStatusChangeListCtrl = (function () {\n function SystemPanelProcessStatusChangeListCtrl($scope) {\n }\n SystemPanelProcessStatusChangeListCtrl.$inject = ['$scope'];\n return SystemPanelProcessStatusChangeListCtrl;\n }());\n var SystemPanelProcessStatusChangeListDirective = (function () {\n function SystemPanelProcessStatusChangeListDirective() {\n this.template = \"\\n
\\n

Lista zmian status\\u00F3w

\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Zmieni\\u0142Poprzedni statusStatus po zmianieData zmiany
{{statusChange.ChangedBy | Empty}}{{statusChange.FromStatus | ProcessStatusFilter | Empty}}{{statusChange.CurrentStatus | ProcessStatusFilter | Empty}}{{statusChange.WhenChanged | AspDateTime | Empty}}
\\n
\\n \";\n this.controller = SystemPanelProcessStatusChangeListCtrl;\n this.scope = {\n process: \"=\"\n };\n }\n ;\n SystemPanelProcessStatusChangeListDirective.Factory = function () {\n var d = function () { return new SystemPanelProcessStatusChangeListDirective(); };\n d['$inject'] = [];\n return d;\n };\n return SystemPanelProcessStatusChangeListDirective;\n }());\n systemAdmin.SystemPanelProcessStatusChangeListDirective = SystemPanelProcessStatusChangeListDirective;\n var SystemPanelProcessPartnerChangeListCtrl = (function () {\n function SystemPanelProcessPartnerChangeListCtrl($scope) {\n }\n SystemPanelProcessPartnerChangeListCtrl.$inject = ['$scope'];\n return SystemPanelProcessPartnerChangeListCtrl;\n }());\n var SystemPanelProcessPartnerChangeListDirective = (function () {\n function SystemPanelProcessPartnerChangeListDirective() {\n this.template = \"\\n
\\n

Lista zmian partner\\u00F3w

\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Zmieni\\u0142Poprzedni partnerPartner po zmianieData zmiany
{{operatorChange.ChangedBy | Empty}}{{operatorChange.PreviousOperatorPartner}}{{operatorChange.NewOperatorPartner}}{{operatorChange.DateModified | AspDateTime | Empty}}
\\n
\\n \";\n this.controller = SystemPanelProcessPartnerChangeListCtrl;\n this.scope = {\n process: \"=\"\n };\n }\n ;\n SystemPanelProcessPartnerChangeListDirective.Factory = function () {\n var d = function () { return new SystemPanelProcessPartnerChangeListDirective(); };\n d['$inject'] = [];\n return d;\n };\n return SystemPanelProcessPartnerChangeListDirective;\n }());\n systemAdmin.SystemPanelProcessPartnerChangeListDirective = SystemPanelProcessPartnerChangeListDirective;\n // pomocnik\n var SystemPanelAdminHelperSrv = (function () {\n function SystemPanelAdminHelperSrv() {\n var _this = this;\n this.currentFilter = undefined;\n this.setCurrentFilter = function (filter) {\n var _self = _this;\n _self.currentFilter = JSON.stringify(filter);\n };\n this.getCurrentFilter = function () {\n var _self = _this;\n return _self.currentFilter;\n };\n }\n ;\n SystemPanelAdminHelperSrv.$inject = [];\n return SystemPanelAdminHelperSrv;\n }());\n systemAdmin.SystemPanelAdminHelperSrv = SystemPanelAdminHelperSrv;\n // kontroller do raportow\n var SystemPanelReportCtrl = (function () {\n function SystemPanelReportCtrl($scope, $window, SystemPanelAdminHelperSrv) {\n // pobranie raportu wg filtrow\n $scope.GenerateProcessWorksheetByCurrentFilter = function () {\n var filterJson = SystemPanelAdminHelperSrv.getCurrentFilter();\n $window.open('/File/GenerateWorksheetSummaryByCurrentFilter?filterJson=' + filterJson);\n };\n // pobranie zetsawienia\n $scope.GenerateProcessWorksheet = function () {\n var filterJson = SystemPanelAdminHelperSrv.getCurrentFilter();\n $window.open('/File/GenerateWorksheetSummary?filterJson=' + filterJson);\n };\n }\n SystemPanelReportCtrl.$inject = ['$scope', '$window', 'SystemPanelAdminHelperSrv'];\n return SystemPanelReportCtrl;\n }());\n systemAdmin.SystemPanelReportCtrl = SystemPanelReportCtrl;\n var ProcessTypeNameDir = (function () {\n function ProcessTypeNameDir() {\n this.scope = {\n type: \"=\"\n };\n this.restrict = 'E';\n this.template = \"\\n
\\n \\n l.operacyjny\\n po\\u017Cyczka / l.finansowy\\n inne\\n
\\n \";\n this.link = function (scope, elem, attr) {\n };\n }\n ProcessTypeNameDir.Factory = function () {\n var d = function () { return new ProcessTypeNameDir(); };\n return d;\n };\n return ProcessTypeNameDir;\n }());\n systemAdmin.ProcessTypeNameDir = ProcessTypeNameDir;\n // dodanie informacji o fraud\n var SystemFraudSrv = (function () {\n function SystemFraudSrv($http, $q) {\n var _this = this;\n this.$http = $http;\n this.$q = $q;\n this.getData = function (id) {\n var url = '/api/OfferFraudReport/' + id;\n return _this.$http.get(url);\n };\n this.sendData = function (id) {\n var url = '/api/OfferFraudReport/' + id;\n return _this.$http.put(url, { id: id, request: \"send\" });\n };\n this.checkData = function (id) {\n var url = '/api/OfferFraudReport/' + id;\n return _this.$http.put(url, { id: id, request: \"check\" });\n };\n }\n SystemFraudSrv.$inject = ['$http', '$q'];\n return SystemFraudSrv;\n }());\n systemAdmin.SystemFraudSrv = SystemFraudSrv;\n var SystemFraudCtrl = (function () {\n function SystemFraudCtrl($scope, service, toaster, $timeout) {\n this.$scope = $scope;\n this.service = service;\n this.toaster = toaster;\n this.$timeout = $timeout;\n // pobranie informacji\n $scope.refresh = function () {\n service.getData($scope.processId).then(function (d) {\n $scope.items = d.data.Result || [];\n });\n };\n // wyslanie ponownie\n $scope.sendAgain = function () {\n service.sendData($scope.processId).then(function (d) {\n toaster.pop('success', 'Operacja powiodła się');\n $timeout(function () {\n $scope.refresh();\n }, 2000);\n });\n };\n // sprawdzenie ponownie\n $scope.checkAgain = function () {\n service.checkData($scope.processId).then(function (d) {\n toaster.pop('success', 'Operacja powiodła się');\n $scope.refresh();\n });\n };\n //\n $scope.items = [];\n $scope.refresh();\n }\n SystemFraudCtrl.$inject = ['$scope', 'SystemFraudSrv', 'toaster', '$timeout'];\n return SystemFraudCtrl;\n }());\n var SystemFraudDirective = (function () {\n function SystemFraudDirective() {\n this.controller = SystemFraudCtrl;\n this.restrict = 'AE';\n this.template = \"\\n
\\n\\n
\\n\\n\\n
\\n\\n
\\n\\n\\n\\n\\n\\n\\n\\n
{{item.fraudstatus}}{{item.description}}{{item.timestamp | AspDateTime}}
\\n\\n\\n\\n
\\n \";\n this.scope = {\n processId: \"=\"\n };\n }\n SystemFraudDirective.Factory = function () {\n var d = function () { return new SystemFraudDirective(); };\n return d;\n };\n return SystemFraudDirective;\n }());\n systemAdmin.SystemFraudDirective = SystemFraudDirective;\n // notatki do oferty\n var SystemOfferNoteSrv = (function () {\n function SystemOfferNoteSrv($http, $q) {\n var _this = this;\n this.$http = $http;\n this.$q = $q;\n this.listAll = function (processId) {\n var url = '/api/OfferNotes?offerGuid=' + processId;\n return _this.$http.get(url);\n };\n this.getData = function (id) {\n var url = '/api/OfferFraudReport/' + id;\n return _this.$http.get(url);\n };\n this.saveData = function (item) {\n var url = '/api/OfferNotes';\n return _this.$http.post(url, item);\n };\n this.updateData = function (item) {\n var url = '/api/OfferNotes/' + item.Guid;\n return _this.$http.put(url, item);\n };\n }\n SystemOfferNoteSrv.$inject = ['$http', '$q'];\n return SystemOfferNoteSrv;\n }());\n systemAdmin.SystemOfferNoteSrv = SystemOfferNoteSrv;\n var SystemOfferNoteCtrl = (function () {\n function SystemOfferNoteCtrl($scope, service, toaster, $modal) {\n this.$scope = $scope;\n this.service = service;\n this.toaster = toaster;\n this.$modal = $modal;\n // pobranie informacji\n $scope.refresh = function () {\n service.listAll($scope.process.OfferClientResonse_Guid).then(function (d) {\n $scope.Notes = d.data.Result || [];\n });\n };\n // dodanie notatki\n $scope.AddNote = function () {\n var offerId = $scope.process.OfferClientResonse_Guid;\n var modalInstance = $modal.open({\n animation: true,\n templateUrl: '/WWW/partials/noteForm.html',\n controller: 'NoteFormCtrl',\n resolve: {\n OfferGuid: function () {\n return offerId;\n },\n Item: function () {\n return \"\";\n },\n PartnerName: function () {\n return $scope.user.Partner;\n }\n }\n });\n modalInstance.result.then(function (item) {\n service.saveData(item).then(function (d) {\n toaster.pop('success', 'Operacja powiodła się');\n $scope.refresh();\n });\n });\n };\n // edycja notatki\n $scope.EditNote = function (item) {\n var offerId = $scope.process.OfferClientResonse_Guid;\n var modalInstance = $modal.open({\n animation: true,\n templateUrl: '/WWW/partials/noteForm.html',\n controller: 'NoteFormCtrl',\n resolve: {\n OfferGuid: function () {\n return offerId;\n },\n Item: function () {\n return item;\n },\n PartnerName: function () {\n return $scope.user.Partner;\n }\n }\n });\n modalInstance.result.then(function (item) {\n service.updateData(item).then(function (d) {\n toaster.pop('success', 'Operacja powiodła się');\n $scope.refresh();\n });\n });\n };\n //\n $scope.Notes = [];\n $scope.refresh();\n }\n SystemOfferNoteCtrl.$inject = ['$scope', 'SystemOfferNoteSrv', 'toaster', '$modal'];\n return SystemOfferNoteCtrl;\n }());\n var SystemOfferNoteDirective = (function () {\n function SystemOfferNoteDirective() {\n this.controller = SystemOfferNoteCtrl;\n this.restrict = 'AE';\n this.templateUrl = '/WWW/partials/request/requestOfferNotesList.html';\n this.scope = {\n process: \"=\",\n user: \"=\"\n };\n }\n SystemOfferNoteDirective.Factory = function () {\n var d = function () { return new SystemOfferNoteDirective(); };\n return d;\n };\n return SystemOfferNoteDirective;\n }());\n systemAdmin.SystemOfferNoteDirective = SystemOfferNoteDirective;\n // serwis do pobierania i sprawdzania potwierdzen transakcji DotPay\n var SystemPanelOfferPaymentConfirmationSrv = (function () {\n function SystemPanelOfferPaymentConfirmationSrv($http, $q) {\n var _this = this;\n this.$http = $http;\n this.$q = $q;\n // pobranie potwierdzen\n this.getPayments = function (id) {\n var url = '/api/BusinessProcessPaymentConfirmation/' + id;\n return _this.$http.get(url);\n };\n // sprawdzenie potwierdzenia\n this.checkPayment = function (id, confirmationId) {\n var url = '/api/BusinessProcessPaymentConfirmation/' + id;\n return _this.$http.put(url, { confirmationId: confirmationId });\n };\n }\n SystemPanelOfferPaymentConfirmationSrv.$inject = ['$http', '$q'];\n return SystemPanelOfferPaymentConfirmationSrv;\n }());\n systemAdmin.SystemPanelOfferPaymentConfirmationSrv = SystemPanelOfferPaymentConfirmationSrv;\n // kontroler do pobierania i sprawdzania potwierdzen transakcji DotPay\n var SystemPanelOfferPaymentConfirmationCtrl = (function () {\n function SystemPanelOfferPaymentConfirmationCtrl($scope, service, toaster) {\n this.$scope = $scope;\n this.service = service;\n this.toaster = toaster;\n // model\n $scope.paymentConfirmations = [];\n // pobranie potwierdzen\n $scope.getPayments = function () {\n service.getPayments($scope.offerId)\n .then(function (d) {\n $scope.paymentConfirmations = d.data.Result || [];\n });\n };\n // sprawdzenie potwierdzenia\n $scope.checkPayment = function (confirmationId) {\n service.checkPayment($scope.offerId, confirmationId)\n .then(function (d) {\n toaster.pop('success', 'Operacja powiodła się');\n $scope.getPayments();\n });\n };\n // pobierz potwierdzenia\n $scope.getPayments();\n }\n SystemPanelOfferPaymentConfirmationCtrl.$inject = ['$scope', 'SystemPanelOfferPaymentConfirmationSrv', 'toaster'];\n return SystemPanelOfferPaymentConfirmationCtrl;\n }());\n // dyrektywa do wyswietlania i zarzadzania potwierdzeniami transakcji DotPay\n var SystemPanelOfferPaymentConfirmationDirective = (function () {\n function SystemPanelOfferPaymentConfirmationDirective() {\n this.template = \"\\n \\n

Lista transakcji

\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Numer transakcjiData/czas transakcjiKwotaStatusAkcja
\\n {{ payment.t_id | Empty }}
\\n {{ payment.description }}\\n
{{ payment.t_date | Empty }}{{ payment.orginal_amount | Empty }}{{ payment.t_status_desc | Empty }}\\n \\n
\\n \";\n this.controller = SystemPanelOfferPaymentConfirmationCtrl;\n this.scope = {\n offerId: \"=\"\n };\n }\n ;\n SystemPanelOfferPaymentConfirmationDirective.Factory = function () {\n var d = function () { return new SystemPanelOfferPaymentConfirmationDirective(); };\n d['$inject'] = [];\n return d;\n };\n return SystemPanelOfferPaymentConfirmationDirective;\n }());\n systemAdmin.SystemPanelOfferPaymentConfirmationDirective = SystemPanelOfferPaymentConfirmationDirective;\n // rekordy audytowe\n var SystemPanelUserAuditSrv = (function () {\n function SystemPanelUserAuditSrv($http, $q) {\n var _this = this;\n this.$http = $http;\n this.$q = $q;\n // pobranie potwierdzen\n this.getUserAudits = function (id) {\n var url = '/api/BusinessProcessUserAudit/' + id;\n return _this.$http.get(url);\n };\n }\n SystemPanelUserAuditSrv.$inject = ['$http', '$q'];\n return SystemPanelUserAuditSrv;\n }());\n systemAdmin.SystemPanelUserAuditSrv = SystemPanelUserAuditSrv;\n var SystemPanelUserAuditCtrl = (function () {\n function SystemPanelUserAuditCtrl($scope, service, toaster) {\n this.$scope = $scope;\n this.service = service;\n this.toaster = toaster;\n // model\n $scope.userAudits = [];\n // pobranie potwierdzen\n $scope.getUserAudits = function () {\n service.getUserAudits($scope.process.OfferClientResonse_Guid)\n .then(function (d) {\n $scope.userAudits = d.data.Result || [];\n });\n };\n // pobierz potwierdzenia\n $scope.getUserAudits();\n }\n SystemPanelUserAuditCtrl.$inject = ['$scope', 'SystemPanelUserAuditSrv', 'toaster'];\n return SystemPanelUserAuditCtrl;\n }());\n var SystemPanelUserAuditDirective = (function () {\n function SystemPanelUserAuditDirective() {\n this.template = \"\\n\\n

Lista akcji logowanych klienta

\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
AkcjaAgentIPZmieni\\u0142Data zmiany
{{audit.UserAction | Empty}}{{audit.UserAgent | Empty}}{{audit.UserIP | Empty}}{{audit.ChangedBy | Empty}}{{audit.WhenChanged | AspDateTime | Empty}}
\\n \";\n this.controller = SystemPanelUserAuditCtrl;\n this.scope = {\n process: \"=\",\n user: \"=\"\n };\n }\n ;\n SystemPanelUserAuditDirective.Factory = function () {\n var d = function () { return new SystemPanelUserAuditDirective(); };\n d['$inject'] = [];\n return d;\n };\n return SystemPanelUserAuditDirective;\n }());\n systemAdmin.SystemPanelUserAuditDirective = SystemPanelUserAuditDirective;\n // komunikaty\n var SystemPanelClientCommunicationHistorySrv = (function () {\n function SystemPanelClientCommunicationHistorySrv($http, $q) {\n var _this = this;\n this.$http = $http;\n this.$q = $q;\n // pobranie komunikatow\n this.getHistory = function (id) {\n var url = '/api/ClientCommunicationHistory/' + id;\n return _this.$http.get(url);\n };\n }\n SystemPanelClientCommunicationHistorySrv.$inject = ['$http', '$q'];\n return SystemPanelClientCommunicationHistorySrv;\n }());\n systemAdmin.SystemPanelClientCommunicationHistorySrv = SystemPanelClientCommunicationHistorySrv;\n var SystemPanelClientCommunicationHistoryCtrl = (function () {\n function SystemPanelClientCommunicationHistoryCtrl($scope, service, toaster) {\n this.$scope = $scope;\n this.service = service;\n this.toaster = toaster;\n // model\n $scope.history = [];\n // pobranie komunikatow\n $scope.getHistory = function () {\n service.getHistory($scope.process.OfferClientResonse_Guid)\n .then(function (d) {\n $scope.history = d.data.Result || [];\n });\n };\n // pobierz komunikatow\n $scope.getHistory();\n }\n SystemPanelClientCommunicationHistoryCtrl.$inject = ['$scope', 'SystemPanelClientCommunicationHistorySrv', 'toaster'];\n return SystemPanelClientCommunicationHistoryCtrl;\n }());\n var SystemPanelPanelClientCommunicationHistoryDirective = (function () {\n function SystemPanelPanelClientCommunicationHistoryDirective() {\n this.template = \"\\n

Lista SMS\\u00F3w wys\\u0142anych do klienta

\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
OdbiorcaSprawaData wys\\u0142ania
{{sms.Recipient | Empty}}{{sms.Subject | Empty}}{{sms.DateSent | AspDateTime | Empty}}
\\n\\n\\n

Lista e-maili wys\\u0142anych do klienta

\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
OdbiorcaTematData wys\\u0142ania
{{mail.Recipient | Empty}}{{mail.Subject | Empty}}{{mail.DateSent | AspDateTime | Empty}}
\";\n this.controller = SystemPanelClientCommunicationHistoryCtrl;\n this.scope = {\n process: \"=\"\n };\n }\n ;\n SystemPanelPanelClientCommunicationHistoryDirective.Factory = function () {\n var d = function () { return new SystemPanelPanelClientCommunicationHistoryDirective(); };\n d['$inject'] = [];\n return d;\n };\n return SystemPanelPanelClientCommunicationHistoryDirective;\n }());\n systemAdmin.SystemPanelPanelClientCommunicationHistoryDirective = SystemPanelPanelClientCommunicationHistoryDirective;\n // logowanie i zmiana hasła\n var SystemLoginPanelCtrl = (function () {\n function SystemLoginPanelCtrl($scope) {\n // view domyślny\n $scope.currentView = 'LOGIN_FORM';\n // zmień na formatkę do zmiany hasła\n $scope.changeViewToResetPasswordForm = function () {\n $scope.currentView = 'RESET_PASSWORD_FORM';\n };\n // ustaw domyślne\n $scope.changeViewToLoginForm = function () {\n $scope.currentView = 'LOGIN_FORM';\n };\n }\n SystemLoginPanelCtrl.$inject = ['$scope'];\n return SystemLoginPanelCtrl;\n }());\n var SystemLoginAuthPanelCtrl = (function () {\n function SystemLoginAuthPanelCtrl($scope, $location, $http, toaster) {\n $scope.user = {\n login: \"\",\n password: \"\"\n };\n $scope.login = function () {\n $http.get(\"/system/login/af-token\").then(function (result) {\n var headers = {};\n headers[result.data.headerName] = result.data.token;\n $http.post(\"/system/partner/login\", $scope.user, {\n headers: headers\n }).then(function (d) {\n if (d.data.ChangePasswordOnLogon === true) {\n toaster.pop('sucess', \"Logowanie\", \"Witamy w systemie LeaseLink. Twoje konto użytkownika ma ustawione wymuszenie zmiany hasła przy logowaniu.\");\n $scope.$parent.currentView = 'CHANGE_PASSWORD_FORM';\n }\n else {\n toaster.pop('sucess', \"Logowanie\", \"Witamy w systemie LeaseLink\");\n top.location.href = \"/system/index\";\n }\n }, function (e) {\n toaster.pop('error', \"Logowanie\", \"Podane dane nie są poprawne.\");\n });\n }, function (e) {\n toaster.pop('error', \"Logowanie\", \"Podane dane nie są poprawne.\");\n });\n };\n $scope.showLogin = false;\n $scope.toggleLoginHelp = function () {\n $scope.showLogin = !$scope.showLogin;\n };\n $scope.showPassword = false;\n $scope.togglePasswordHelp = function () {\n $scope.showPassword = !$scope.showPassword;\n };\n }\n ;\n SystemLoginAuthPanelCtrl.$inject = ['$scope', '$location', '$http', 'toaster'];\n return SystemLoginAuthPanelCtrl;\n }());\n var SystemLoginChangePasswordPanelCtrl = (function () {\n function SystemLoginChangePasswordPanelCtrl($scope, $location, $http, toaster) {\n $scope.item = {\n CurrentPassword: \"\",\n Password: \"\",\n PasswordConfirm: \"\"\n };\n // oddanie danych\n $scope.saveNewPassword = function () {\n $http.post(\"/system/password-reset-confirm\", {\n CurrentPassword: $scope.CurrentPassword,\n Password: $scope.Password,\n PasswordConfirm: $scope.PasswordConfirm,\n ChangePaswordOnLogon: false\n }).then(function (d) {\n toaster.pop('success', \"Użytkownicy\", \"Poprawnie zmieniono hasło\");\n $scope.cancel();\n }, function (e) {\n toaster.pop('error', \"Użytkownicy\", \"Zmiana hasła nie powiodła się\");\n });\n };\n // zamkniecie\n $scope.cancel = function () {\n $scope.$parent.currentView = 'LOGIN_FORM';\n };\n }\n ;\n SystemLoginChangePasswordPanelCtrl.$inject = ['$scope', '$location', '$http', 'toaster'];\n return SystemLoginChangePasswordPanelCtrl;\n }());\n // formatka do resetu hasła\n var SystemLoginResetPasswordPanelCtrl = (function () {\n function SystemLoginResetPasswordPanelCtrl($scope, $location, $http, toaster) {\n $scope.item = {\n Login: \"\",\n Channel: null\n };\n // oddanie danych\n $scope.resetPassword = function () {\n // póki nie ma podziału na SMS i email, na sztywno wybranie kanału 0 (email)\n $scope.Channel = 0;\n $http.post(\"/system/password-reset\", {\n Login: $scope.Login,\n Channel: parseInt($scope.Channel)\n }).then(function (d) {\n if ($scope.Channel === 0) {\n toaster.pop('success', \"Użytkownicy\", \"Jeżeli podany login jest poprawny, na e-mail przypisany do konta otrzymasz wiadomość z nowym hasłem.\");\n }\n else if ($scope.Channel === 1) {\n toaster.pop('success', \"Użytkownicy\", \"Jeżeli podany login jest poprawny, na numer telefonu przypisany do konta otrzymasz wiadomość z nowym hasłem.\");\n }\n $scope.cancel();\n }, function (e) {\n toaster.pop('error', \"Użytkownicy\", \"Resetowanie hasła nie powiodło się\");\n });\n };\n // zamkniecie\n $scope.cancel = function () {\n $scope.$parent.currentView = 'LOGIN_FORM';\n };\n }\n ;\n SystemLoginResetPasswordPanelCtrl.$inject = ['$scope', '$location', '$http', 'toaster'];\n return SystemLoginResetPasswordPanelCtrl;\n }());\n // komponent logowania\n var SystemLoginAuthPanelDirective = (function () {\n function SystemLoginAuthPanelDirective() {\n this.templateUrl = '/WWW/partials/loginForm.html';\n this.controller = SystemLoginAuthPanelCtrl;\n }\n ;\n SystemLoginAuthPanelDirective.Factory = function () {\n var d = function () { return new SystemLoginAuthPanelDirective(); };\n d['$inject'] = [];\n return d;\n };\n return SystemLoginAuthPanelDirective;\n }());\n systemAdmin.SystemLoginAuthPanelDirective = SystemLoginAuthPanelDirective;\n // komponent zmiany hasła\n var SystemLoginChangePasswordPanelDirective = (function () {\n function SystemLoginChangePasswordPanelDirective() {\n this.templateUrl = '/WWW/partials/modules/users/changePassword.html';\n this.controller = SystemLoginChangePasswordPanelCtrl;\n }\n ;\n SystemLoginChangePasswordPanelDirective.Factory = function () {\n var d = function () { return new SystemLoginChangePasswordPanelDirective(); };\n d['$inject'] = [];\n return d;\n };\n return SystemLoginChangePasswordPanelDirective;\n }());\n systemAdmin.SystemLoginChangePasswordPanelDirective = SystemLoginChangePasswordPanelDirective;\n // komponent resetu hasła\n var SystemLoginResetPasswordPanelDirective = (function () {\n function SystemLoginResetPasswordPanelDirective() {\n this.templateUrl = '/WWW/partials/modules/users/resetPassword.html';\n this.controller = SystemLoginResetPasswordPanelCtrl;\n }\n ;\n SystemLoginResetPasswordPanelDirective.Factory = function () {\n var d = function () { return new SystemLoginResetPasswordPanelDirective(); };\n d['$inject'] = [];\n return d;\n };\n return SystemLoginResetPasswordPanelDirective;\n }());\n systemAdmin.SystemLoginResetPasswordPanelDirective = SystemLoginResetPasswordPanelDirective;\n // komponent autoryzacji\n var SystemLoginPanelDirective = (function () {\n function SystemLoginPanelDirective() {\n this.templateUrl = \"/WWW/partials/modules/admin/system.panel.login.html\";\n this.controller = SystemLoginPanelCtrl;\n this.scope = {\n okMessage: \"@\",\n failMessage: \"@\"\n };\n console.log(top.location.href);\n }\n ;\n SystemLoginPanelDirective.Factory = function () {\n var d = function () { return new SystemLoginPanelDirective(); };\n d['$inject'] = [];\n return d;\n };\n return SystemLoginPanelDirective;\n }());\n systemAdmin.SystemLoginPanelDirective = SystemLoginPanelDirective;\n // koponoent pokazywania skoringu\n var SystemScoringOutputSrv = (function () {\n function SystemScoringOutputSrv($http, $q) {\n var _this = this;\n this.$http = $http;\n this.$q = $q;\n // pobranie komunikatow\n this.getScoring = function (id) {\n var url = '/api/BusinessProcessScoring/' + id;\n return _this.$http.get(url);\n };\n }\n SystemScoringOutputSrv.$inject = ['$http', '$q'];\n return SystemScoringOutputSrv;\n }());\n systemAdmin.SystemScoringOutputSrv = SystemScoringOutputSrv;\n var SystemScoringOutputCtrl = (function () {\n function SystemScoringOutputCtrl($scope, $service) {\n var _this = this;\n this.$service = $service;\n //\n $scope.rules = [];\n $scope.processId = $scope.process.OfferClientResonse_Guid;\n //\n $scope.refreshRules = function () {\n _this\n .$service\n .getScoring($scope.processId)\n .then(function (d) {\n var result = d.data.Result;\n var DecisionEngineResponseAsObject = result.DecisionEngineResponseAsObject;\n if (DecisionEngineResponseAsObject) {\n $scope.rules = DecisionEngineResponseAsObject.OutputRulesAsObject;\n }\n });\n };\n //\n $scope.refreshRules();\n }\n SystemScoringOutputCtrl.$inject = ['$scope', 'SystemScoringOutputSrv'];\n return SystemScoringOutputCtrl;\n }());\n var SystemScoringOutputDirective = (function () {\n function SystemScoringOutputDirective() {\n this.template = \"\\n
\\n

Wynik : {{process.ScoringOutput}}

\\n

Sprawdzone regu\\u0142y

\\n \\n \\n \\n \\n \\n
{{rule.klucz}}{{rule.value}}
\\n
\";\n this.controller = SystemScoringOutputCtrl;\n this.scope = {\n process: \"=\",\n };\n }\n ;\n SystemScoringOutputDirective.Factory = function () {\n var d = function () { return new SystemScoringOutputDirective(); };\n d['$inject'] = [];\n return d;\n };\n return SystemScoringOutputDirective;\n }());\n systemAdmin.SystemScoringOutputDirective = SystemScoringOutputDirective;\n // dyrektywa z linkiem do przełączenia ekrany na formatkę zmiany hasła\n var ResetPasswordLinkDirective = (function () {\n function ResetPasswordLinkDirective() {\n this.template = \"\\n resetuj has\\u0142o\\n \";\n }\n ;\n ResetPasswordLinkDirective.Factory = function () {\n var d = function () { return new ResetPasswordLinkDirective(); };\n d['$inject'] = [];\n return d;\n };\n return ResetPasswordLinkDirective;\n }());\n systemAdmin.ResetPasswordLinkDirective = ResetPasswordLinkDirective;\n // nieużywana dyrektywa\n var ChangePasswordExternalLinkDirective = (function () {\n function ChangePasswordExternalLinkDirective() {\n this.template = \"\\n popro\\u015B o nowe has\\u0142o\\n \\n \";\n this.link = function ($scope, $el) {\n var script = document.createElement('script');\n script.src = 'https://leaselink.pl/repository/partner_js_form.js';\n $el.append(angular.element(script));\n };\n }\n ;\n ChangePasswordExternalLinkDirective.Factory = function () {\n var d = function () { return new ChangePasswordExternalLinkDirective(); };\n d['$inject'] = [];\n return d;\n };\n return ChangePasswordExternalLinkDirective;\n }());\n systemAdmin.ChangePasswordExternalLinkDirective = ChangePasswordExternalLinkDirective;\n var SignUpExternalLinkDirective = (function () {\n function SignUpExternalLinkDirective() {\n this.template = \"\\n zosta\\u0144 naszym partnerem\\n \\n \";\n this.link = function ($scope, $el) {\n var script = document.createElement('script');\n script.src = 'https://leaselink.pl/repository/partner_js_form2.js';\n $el.append(angular.element(script));\n };\n }\n ;\n SignUpExternalLinkDirective.Factory = function () {\n var d = function () { return new SignUpExternalLinkDirective(); };\n d['$inject'] = [];\n return d;\n };\n return SignUpExternalLinkDirective;\n }());\n systemAdmin.SignUpExternalLinkDirective = SignUpExternalLinkDirective;\n})(systemAdmin || (systemAdmin = {}));\n// rejestracja\nangular.module('ll.system.admin', ['ngSanitize'])\n .directive('llSystemPanel', systemAdmin.SystemPanelDirective.Factory())\n .directive('llProcessType', systemAdmin.ProcessTypeNameDir.Factory())\n .directive('llSystemFraud', systemAdmin.SystemFraudDirective.Factory())\n .directive('llProcessStatusChangesList', systemAdmin.SystemPanelProcessStatusChangeListDirective.Factory())\n .directive('llProcessPartnerChangesList', systemAdmin.SystemPanelProcessPartnerChangeListDirective.Factory())\n .controller('SystemPanelReportCtrl', systemAdmin.SystemPanelReportCtrl)\n .service('SystemPanelAdminHelperSrv', systemAdmin.SystemPanelAdminHelperSrv)\n .service('SystemFraudSrv', systemAdmin.SystemFraudSrv)\n .directive('llUserAudit', systemAdmin.SystemPanelUserAuditDirective.Factory())\n .service('SystemPanelUserAuditSrv', systemAdmin.SystemPanelUserAuditSrv)\n .directive('llSystemOfferNotes', systemAdmin.SystemOfferNoteDirective.Factory())\n .service('SystemOfferNoteSrv', systemAdmin.SystemOfferNoteSrv)\n .directive('llOfferPaymentConfirmation', systemAdmin.SystemPanelOfferPaymentConfirmationDirective.Factory())\n .service('SystemPanelOfferPaymentConfirmationSrv', systemAdmin.SystemPanelOfferPaymentConfirmationSrv)\n .directive('llClientCommunicationHistory', systemAdmin.SystemPanelPanelClientCommunicationHistoryDirective.Factory())\n .service('SystemPanelClientCommunicationHistorySrv', systemAdmin.SystemPanelClientCommunicationHistorySrv)\n .directive('llSystemLogin', systemAdmin.SystemLoginPanelDirective.Factory())\n .directive('llSystemLoginAuth', systemAdmin.SystemLoginAuthPanelDirective.Factory())\n .directive('llSystemLoginChangePassword', systemAdmin.SystemLoginChangePasswordPanelDirective.Factory())\n .directive('llSystemLoginResetPassword', systemAdmin.SystemLoginResetPasswordPanelDirective.Factory())\n .directive('llSignUpExternalLink', systemAdmin.SignUpExternalLinkDirective.Factory())\n .directive('llChangePasswordExternalLink', systemAdmin.ChangePasswordExternalLinkDirective.Factory())\n .directive('llResetPasswordLink', systemAdmin.ResetPasswordLinkDirective.Factory())\n .directive('llScoringOutput', systemAdmin.SystemScoringOutputDirective.Factory())\n .service('SystemScoringOutputSrv', systemAdmin.SystemScoringOutputSrv);\n// zarzadzanie kategoriami / produktami \nvar systemCategoryProducts;\n(function (systemCategoryProducts) {\n // serwis produktow\n var ProductSrv = (function () {\n function ProductSrv($http) {\n this.$http = $http;\n }\n ProductSrv.$inject = ['$http'];\n return ProductSrv;\n }());\n systemCategoryProducts.ProductSrv = ProductSrv;\n var ProductsCtrl = (function () {\n function ProductsCtrl($scope, $http, $modal, toaster, filterFilter, $rootScope) {\n // opracowanie guida partnera\n $scope.currentPartnerGuid = ($scope.currentPartner ? $scope.currentPartner.Key : \"\");\n $scope.filteredList = [];\n $scope.search = {\n ProductName: \"\"\n };\n $scope.ProductModels = [];\n // filtr\n $scope.filterRequest = function (item) {\n if ($scope.search.ProductName) {\n var _v0 = ($scope.search.ProductName || \"\").toLowerCase();\n var _v1 = (item.ProductName + \"\" || \"\").toLowerCase();\n var _v2 = (item.ProductId + \"\" || \"\").toLowerCase();\n var _v3 = (item.ProductCode + \"\" || \"\").toLowerCase();\n var _v4 = (item.ProductCategory + \"\" || \"\").toLowerCase();\n if (_v1.indexOf(_v0) == -1\n && _v2.indexOf(_v0) == -1\n && _v3.indexOf(_v0) == -1\n && _v4.indexOf(_v0) == -1)\n return false;\n }\n return true;\n };\n // obserwowanie filtra i glownego zbioru danych\n $scope.$watch('search', function () {\n $scope.filteredList = filterFilter($scope.ProductModels, $scope.filterRequest);\n }, true);\n $scope.$watch('ProductModels', function () {\n $scope.filteredList = filterFilter($scope.ProductModels, $scope.filterRequest);\n }, true);\n // pobieranie danych\n $scope.Refresh = function () {\n $http.get('/api/Product?Partner_Guid=' + $scope.currentPartnerGuid).then(function (d) {\n $scope.ProductModels = d.data.Result;\n }, function (e) {\n toaster.pop('error', 'Pobieranie danych nie powiodło się');\n });\n };\n // usuanie produktu\n $scope.DeleteProduct = function (id, productPartner) {\n if (confirm(\"Czy na pewno chcesz usunąć produkt?\")) {\n $http.delete('/api/Product/' + '?id=' + id.toString() + '&productPartner=' + productPartner.toString()).then(function (d) {\n toaster.pop('success', 'Operacja powiodła się');\n $scope.Refresh();\n }, function (e) {\n toaster.pop('error', 'Operacja nie powiodła się');\n });\n }\n ;\n };\n $scope.AddProduct = function () {\n $scope.dataForNewProduct = {\n ProductId: \"\",\n ProductName: \"\",\n ProductCode: \"\",\n ProductCategory: \"\",\n ProductAmortizationRate: 0.0,\n Partner: $scope.currentPartnerGuid\n };\n var modalInstance = $modal.open({\n animation: true,\n templateUrl: '/WWW/partials/modules/category.products/addProductModal.html',\n controller: 'AddProductModalCtrl',\n scope: $scope,\n resolve: {\n dataForNewProduct: function () {\n return $scope.dataForNewProduct;\n }\n }\n });\n modalInstance.result.then(function (dataForNewProduct) {\n $http.post('/api/Product/', dataForNewProduct).then(function (d) {\n $scope.Refresh();\n toaster.pop('success', 'Pomyślnie dodano nowy produkt');\n }, function (e) {\n toaster.pop('error', 'Błąd podczas dodawania nowego produktu');\n });\n }, function (e) { });\n };\n $scope.EditProduct = function (id) {\n $scope.dataForEditProduct = {\n ProductId: \"\",\n ProductName: \"\",\n ProductCode: \"\",\n ProductCategory: \"\",\n ProductAmortizationRate: 0.0\n };\n $http.get('/api/Product/' + id).then(function (d) {\n $scope.dataForEditProduct = d.data.Result;\n var modalInstance = $modal.open({\n animation: true,\n templateUrl: '/WWW/partials/modules/category.products/editProductModal.html',\n controller: 'EditProductModalCtrl',\n scope: $scope,\n resolve: {\n dataForEditProduct: function () {\n return $scope.dataForEditProduct;\n }\n }\n });\n modalInstance.result.then(function (dataForEditProduct) {\n $http.put('/api/Product/' + dataForEditProduct.Guid, dataForEditProduct).then(function (f) {\n $scope.Refresh();\n toaster.pop('success', 'Pomyślnie zaktualizowano dane produktu');\n }, function (g) {\n toaster.pop('error', 'Błąd podczas aktualizacji danych produktu');\n });\n }, function (h) { });\n }, function (i) { });\n };\n $scope.setAsDefault = function (productId, partnerId) {\n $http.put('/api/Product/' + '?id=' + productId + '&productPartner=' + partnerId).then(function (d) {\n $scope.Refresh();\n }, function (e) {\n toaster.pop('error', 'Pobieranie danych nie powiodło się');\n });\n };\n // pobranie danych na wejsciu\n $scope.Refresh();\n }\n ;\n ProductsCtrl.$inject = ['$scope', '$http', '$modal', 'toaster', 'filterFilter', '$rootScope'];\n return ProductsCtrl;\n }());\n systemCategoryProducts.ProductsCtrl = ProductsCtrl;\n var AddProductModalCtrl = (function () {\n function AddProductModalCtrl($scope, $modalInstance, dataForNewProduct) {\n $scope.dataForNewProduct = dataForNewProduct;\n $scope.ok = function () {\n $modalInstance.close($scope.dataForNewProduct);\n };\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n }\n ;\n AddProductModalCtrl.$inject = ['$scope', '$modalInstance', 'dataForNewProduct'];\n return AddProductModalCtrl;\n }());\n systemCategoryProducts.AddProductModalCtrl = AddProductModalCtrl;\n var EditProductModalCtrl = (function () {\n function EditProductModalCtrl($scope, $modalInstance, dataForEditProduct) {\n $scope.dataForEditProduct = dataForEditProduct;\n $scope.ok = function () {\n $modalInstance.close($scope.dataForEditProduct);\n };\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n }\n EditProductModalCtrl.$inject = ['$scope', '$modalInstance', 'dataForEditProduct'];\n return EditProductModalCtrl;\n }());\n systemCategoryProducts.EditProductModalCtrl = EditProductModalCtrl;\n})(systemCategoryProducts || (systemCategoryProducts = {}));\n// nowy modlu claego wniosku\nvar systemProcess;\n(function (systemProcess) {\n var AddressFormCtrl = (function () {\n function AddressFormCtrl($scope) {\n // lista prefixow\n $scope.streetPrefixes = [\n 'AL.',\n 'BULW.',\n 'DROGA',\n 'INNE',\n 'OGRÓD',\n 'OS.',\n 'PARK',\n 'PL.',\n 'RONDO',\n 'RYNEK',\n 'SKWER',\n 'SZOSA',\n 'UL.',\n 'WYB.',\n 'WYSPA'\n ];\n }\n AddressFormCtrl.$inject = ['$scope'];\n return AddressFormCtrl;\n }());\n var AddressFormDirective = (function () {\n function AddressFormDirective() {\n this.controller = AddressFormCtrl;\n this.templateUrl = \"/WWW/partials/addressForm.html\";\n this.restrict = \"AE\";\n this.scope = {\n address: \"=\",\n isRequired: \"=\",\n hideSpecificPlace: \"=\",\n isFormValidated: \"=\"\n };\n }\n AddressFormDirective.Factory = function () {\n var d = function () { return new AddressFormDirective(); };\n d['$inject'] = [];\n return d;\n };\n return AddressFormDirective;\n }());\n systemProcess.AddressFormDirective = AddressFormDirective;\n var PersonFormCtrl = (function () {\n function PersonFormCtrl($scope) {\n }\n PersonFormCtrl.$inject = ['$scope'];\n return PersonFormCtrl;\n }());\n var PersonFormDirective = (function () {\n function PersonFormDirective() {\n this.controller = AddressFormCtrl;\n this.templateUrl = \"/WWW/partials/personForm.html\";\n this.restrict = \"AE\";\n this.scope = {\n person: \"=\",\n isRequired: \"=\",\n isFormValidated: \"=\"\n };\n }\n PersonFormDirective.Factory = function () {\n var d = function () { return new PersonFormDirective(); };\n d['$inject'] = [];\n return d;\n };\n return PersonFormDirective;\n }());\n systemProcess.PersonFormDirective = PersonFormDirective;\n})(systemProcess || (systemProcess = {}));\nangular.module(\"ll.system.process\", ['ngSanitize'])\n .directive(\"llAddressForm\", systemProcess.AddressFormDirective.Factory())\n .directive(\"llPersonForm\", systemProcess.PersonFormDirective.Factory());\n/*\nzarządzanie partnerai\n*/\nvar system;\n(function (system) {\n /* partnerzy */\n var PartnersCtrl = (function () {\n function PartnersCtrl($scope, $http, $modal, toaster, FileUploader, filterFilter) {\n $scope.PartnerFunc = \"Default\";\n $scope.PartnersModels = [];\n $scope.filteredList = [];\n $scope.search = {\n PartnerName: \"\"\n };\n $scope.config = {\n itemsPerPage: 10,\n maxPages: 10,\n fillLastPage: 'yes'\n };\n // filtr\n $scope.filterRequest = function (item) {\n // jak wypelnione to szukamy po nazwie\n if ($scope.search.PartnerName && item.Name && item.Name.toLowerCase().indexOf($scope.search.PartnerName.toLowerCase()) === -1)\n return false;\n return true;\n };\n // obserwowanie filtra i glownego zbioru danych\n $scope.$watch('search', function () {\n $scope.filteredList = filterFilter($scope.PartnersModels, $scope.filterRequest);\n }, true);\n $scope.$watch('PartnersModels', function () {\n $scope.filteredList = filterFilter($scope.PartnersModels, $scope.filterRequest);\n }, true);\n $scope.Refresh = function () {\n $http.get('/api/Partner').then(function (d) {\n $scope.logoTimeStamp = new Date().getTime();\n $scope.PartnersModels = d.data.Result;\n }, function (e) {\n toaster.pop('error', 'Pobieranie danych nie powiodło się');\n });\n };\n $scope.Refresh();\n /* //zmienione na inny kontroler\n $scope.EditPartner = function (id) {\n var url = '/File/Upload';\n \n $scope.uploader = new FileUploader({\n url: url,\n method: 'PUT',\n queueLimit: 1\n });\n $scope.uploader.onErrorItem = function (fileItem, response, status, headers) {\n toaster.pop('error', 'Błąd podczas zapisywania pliku');\n };\n $scope.uploader.onSuccessItem = function (fileItem, response, status, headers) {\n fileItem.complete = true;\n toaster.pop('success', 'Plik zapisano poprawnie');\n $scope.Refresh();\n };\n $scope.uploader.onCompleteItem = function (fileItem, response, status, headers) {\n fileItem.complete = true;\n toaster.pop('info', 'Przesył pliku zakończony poprawnie');\n };\n $scope.uploader.onBeforeUploadItem = function (fileItem) {\n fileItem.formData = $scope.uploader.formData;\n };\n \n $scope.dataForEditPartner = {\n Guid: \"\",\n Name: \"\",\n PartnerUrl: \"\"\n };\n \n $http.get('/api/Partner/' + id).then(\n function (d) {\n $scope.dataForEditPartner = d.data.Result;\n \n var modalInstance = $modal.open({\n animation: true,\n templateUrl: '/WWW/partials/modules/partners/form.html',\n controller: 'EditPartnerModalCtrl',\n resolve: {\n dataForEditPartner: function () {\n return $scope.dataForEditPartner;\n },\n uploader: function () {\n return $scope.uploader;\n }\n }\n });\n \n modalInstance.result.then(\n function (dataForEditPartner) {\n $http.put('/api/Partner/' + dataForEditPartner.Guid, dataForEditPartner).then(\n function (f) {\n $scope.uploader.formData.push({ type: 'PARTNER' });\n $scope.uploader.formData.push({ oID: f.data.Result.Guid });\n if ($scope.uploader.queue.length == 0) $scope.Refresh();\n $scope.uploader.uploadAll();\n toaster.pop('success', 'Pomyślnie zaktualizowano dane partnera');\n $scope.Refresh();\n },\n function (g) {\n toaster.pop('error', 'Błąd podczas aktualizacji danych partnera');\n });\n },\n function (h) { }\n );\n },\n function (i) { }\n );\n };\n */\n $scope.showPartnerData = function (item) {\n $scope.currentPartner = item;\n $scope.PartnerFunc = \"EditPartner\";\n };\n $scope.addNewPartner = function () {\n $scope.currentPartner = {};\n $scope.PartnerFunc = \"EditPartner\";\n };\n // powrót do widoku partnerów\n $scope.backToPartners = function () {\n $scope.PartnerFunc = \"Default\";\n $scope.Refresh();\n };\n $scope.DeletePartner = function (id, partnerName) {\n if (confirm(\"Czy na pewno chcesz usunąć partnera?\")) {\n $http.delete('/api/Partner' + '?id=' + id.toString() + '&partnerName=' + partnerName.toString()).then(function (d) {\n toaster.pop('success', 'Operacja powiodła się');\n $scope.Refresh();\n }, function (e) {\n toaster.pop('error', 'Operacja nie powiodła się');\n });\n }\n };\n // aktualizacjia bazy produktowej\n $scope.UploadPartnerProducts = function (Partner_Guid) {\n var url = '/File/Upload';\n $scope.uploader = new FileUploader({\n url: url,\n method: 'PUT',\n queueLimit: 1\n });\n $scope.uploader.onErrorItem = function (fileItem, response, status, headers) {\n toaster.pop('error', 'Błąd podczas zapisywania pliku');\n };\n $scope.uploader.onSuccessItem = function (fileItem, response, status, headers) {\n fileItem.complete = true;\n toaster.pop('success', 'Plik zapisano poprawnie');\n };\n $scope.uploader.onCompleteItem = function (fileItem, response, status, headers) {\n fileItem.complete = true;\n toaster.pop('info', 'Przesył pliku zakończony poprawnie');\n };\n $scope.uploader.onBeforeUploadItem = function (fileItem) {\n fileItem.formData = $scope.uploader.formData;\n };\n $scope.partnerData = {\n Partner_Guid: Partner_Guid,\n };\n var modalInstance = $modal.open({\n animation: true,\n templateUrl: '/WWW/partials/modules/partners/product.upload.html',\n controller: 'PartnerProductUploadModalCtrl',\n resolve: {\n uploader: function () {\n return $scope.uploader;\n },\n partnerData: function () {\n return $scope.partnerData;\n }\n }\n });\n modalInstance.result.then(function (partnerData) {\n $scope.uploader.formData.push({ type: 'PARTNER_PRODUCT' });\n $scope.uploader.formData.push({ oID: $scope.partnerData.Partner_Guid });\n if ($scope.uploader.queue.length == 0)\n $scope.Refresh();\n $scope.uploader.onCompleteAll = function () {\n toaster.pop('success', 'Pomyślnie zaktualizowano dane produktowe partnera');\n };\n $scope.uploader.uploadAll();\n }, function (h) { });\n };\n }\n PartnersCtrl.$inject = ['$scope', '$http', '$modal', 'toaster', 'FileUploader', 'filterFilter'];\n return PartnersCtrl;\n }());\n system.PartnersCtrl = PartnersCtrl;\n ;\n /* edycja partnera */\n var PartnerCtrl = (function () {\n function PartnerCtrl($scope, $http, $modal, FileUploader, toaster, filterFilter) {\n $scope.uploader = new FileUploader();\n $scope.ContactPersonModels = [];\n $scope.ContactPeopleList = [];\n $scope.BankAccountModels = [];\n $scope.BankAccountsList = [];\n $scope.PartnerTypes = [\n { key: 1, value: \"Sklep\" },\n { key: 2, value: \"Pośrednik\" }\n ];\n var url = '/File/Upload';\n $scope.uploader = new FileUploader({\n url: url,\n method: 'PUT',\n queueLimit: 1\n });\n $scope.uploader.onErrorItem = function (fileItem, response, status, headers) {\n toaster.pop('error', 'Błąd podczas zapisywania pliku');\n };\n $scope.uploader.onSuccessItem = function (fileItem, response, status, headers) {\n fileItem.complete = true;\n toaster.pop('success', 'Plik zapisano poprawnie');\n };\n $scope.uploader.onCompleteItem = function (fileItem, response, status, headers) {\n fileItem.complete = true;\n toaster.pop('info', 'Przesył pliku zakończony poprawnie');\n };\n $scope.uploader.onBeforeUploadItem = function (fileItem) {\n fileItem.formData = $scope.uploader.formData;\n };\n $scope.saveEditedPartner = function () {\n if ($scope.currentPartner.Guid) {\n $http.put('/api/Partner/' + $scope.currentPartner.Guid, $scope.currentPartner).then(function (d) {\n $scope.uploader.formData.push({ type: 'PARTNER' });\n $scope.uploader.formData.push({ oID: d.data.Result.Guid });\n if ($scope.uploader.queue.length > 0)\n $scope.uploader.uploadAll();\n $scope.currentPartner = d.data.Result;\n toaster.pop('success', \"Partner\", \"Edycja partnera przebiegła poprawnie\");\n if ($scope.currentPartner.CaptchaImage) {\n $scope.CaptchaData = {\n CaptchaImage: $scope.currentPartner.CaptchaImage,\n };\n var modalInstance = $modal.open({\n animation: true,\n templateUrl: '/WWW/partials/modules/partners/CaptchaNeededModal.html',\n controller: 'CaptchaNeededModalCtrl',\n resolve: {\n CaptchaData: function () {\n return $scope.CaptchaData;\n }\n }\n });\n modalInstance.result.then(function (CaptchaData) {\n $http.post(\"/offer/SetRegonCaptcha\", { token: CaptchaData }).then(function (d) {\n if (d.data.Status) {\n $scope.currentPartner.ShouldDownloadRegistryData = true;\n $http.put('/api/Partner/' + $scope.currentPartner.Guid, $scope.currentPartner).then(function (d) {\n $scope.currentPartner = d.data.Result;\n toaster.pop('success', \"Partner\", \"Edycja partnera przebiegła poprawnie\");\n $scope.currentPartner.ShouldDownloadRegistryData = false;\n }, function (e) {\n console.error(e);\n toaster.pop('error', \"Partner\", \"Błąd przy edycji partnera\");\n });\n }\n //else\n }, function (e) {\n toaster.pop('error', \"Pobieranie partnera\", \"Wystąpił błąd podczas przysłania kodu captcha.\");\n });\n toaster.pop('success', 'Pomyślnie zaktualizowano dane produktowe partnera');\n }, function (h) { });\n }\n }, function (e) {\n console.error(e);\n toaster.pop('error', \"Partner\", \"Błąd przy edycji partnera\");\n });\n }\n else {\n $http.post('/api/Partner/', $scope.currentPartner).then(function (d) {\n $scope.uploader.formData.push({ type: 'PARTNER' });\n $scope.uploader.formData.push({ oID: d.data.Result.Guid });\n if ($scope.uploader.queue.length > 0)\n $scope.uploader.uploadAll();\n $scope.currentPartner = d.data.Result;\n toaster.pop('success', \"Partner\", \"Dodanie partnera przebiegło poprawnie\");\n if ($scope.currentPartner.CaptchaImage) {\n $scope.CaptchaData = {\n CaptchaImage: $scope.currentPartner.CaptchaImage,\n };\n var modalInstance = $modal.open({\n animation: true,\n templateUrl: '/WWW/partials/modules/partners/CaptchaNeededModal.html',\n controller: 'CaptchaNeededModalCtrl',\n resolve: {\n CaptchaData: function () {\n return $scope.CaptchaData;\n }\n }\n });\n modalInstance.result.then(function (CaptchaData) {\n $http.post(\"/offer/SetRegonCaptcha\", { token: CaptchaData }).then(function (d) {\n if (d.data.Status) {\n $scope.currentPartner.ShouldDownloadRegistryData = true;\n $http.put('/api/Partner/' + $scope.currentPartner.Guid, $scope.currentPartner).then(function (d) {\n $scope.currentPartner = d.data.Result;\n toaster.pop('success', \"Partner\", \"Edycja partnera przebiegła poprawnie\");\n $scope.currentPartner.ShouldDownloadRegistryData = false;\n }, function (e) {\n console.error(e);\n toaster.pop('error', \"Partner\", \"Błąd przy edycji partnera\");\n });\n }\n //else\n }, function (e) {\n toaster.pop('error', \"Pobieranie partnera\", \"Wystąpił błąd podczas przysłania kodu captcha.\");\n });\n toaster.pop('success', 'Pomyślnie zaktualizowano dane produktowe partnera');\n }, function (h) { });\n }\n }, function (e) {\n console.error(e);\n toaster.pop('error', \"Partner\", \"Błąd przy dodaniu partnera\");\n });\n }\n };\n $scope.downloadRegistryDataAgain = function () {\n $scope.currentPartner.ShouldDownloadRegistryData = true;\n $scope.saveEditedPartner();\n };\n $scope.search = {\n FirstName: \"\",\n LastName: \"\",\n Email: \"\"\n };\n $scope.searchBankAccount = {\n Name: \"\"\n };\n // filtr osoby kontaktowe\n $scope.filterRequest = function (item) {\n // jak wypelnione to szukamy po nazwie\n //if ($scope.search.LastName && item.LastName && item.LastName.toLowerCase().indexOf($scope.search.LastName.toLowerCase()) === -1) return false;\n if ($scope.search.FirstName) {\n var _v0 = ($scope.search.FirstName || \"\").toLowerCase();\n var _v1 = (item.FirstName + \"\" || \"\").toLowerCase();\n if (_v1.indexOf(_v0) == -1)\n return false;\n }\n if ($scope.search.LastName) {\n var _v0 = ($scope.search.LastName || \"\").toLowerCase();\n var _v1 = (item.LastName + \"\" || \"\").toLowerCase();\n if (_v1.indexOf(_v0) == -1)\n return false;\n }\n if ($scope.search.Email) {\n var _v0 = ($scope.search.Email || \"\").toLowerCase();\n var _v1 = (item.Email + \"\" || \"\").toLowerCase();\n if (_v1.indexOf(_v0) == -1)\n return false;\n }\n return true;\n };\n // filtr rachunki bankowe\n $scope.bankAccountFilterRequest = function (item) {\n // jak wypelnione to szukamy po nazwie\n //if ($scope.search.LastName && item.LastName && item.LastName.toLowerCase().indexOf($scope.search.LastName.toLowerCase()) === -1) return false;\n if ($scope.searchBankAccount.Name) {\n var _v0 = ($scope.searchBankAccount.Name || \"\").toLowerCase();\n var _v1 = (item.Name + \"\" || \"\").toLowerCase();\n if (_v1.indexOf(_v0) == -1)\n return false;\n }\n return true;\n };\n // obserwowanie filtra i glownego zbioru danych (osoby kontaktowe)\n $scope.$watch('search', function () {\n $scope.ContactPeopleList = filterFilter($scope.ContactPersonModels, $scope.filterRequest);\n }, true);\n $scope.$watch('ContactPersonModels', function () {\n $scope.ContactPeopleList = filterFilter($scope.ContactPersonModels, $scope.filterRequest);\n }, true);\n // obserwowanie filtra i glownego zbioru danych (rachunki bankowe)\n $scope.$watch('searchBankAccount', function () {\n $scope.BankAccountsList = filterFilter($scope.BankAccountModels, $scope.bankAccountFilterRequest);\n }, true);\n $scope.$watch('BankAccountModels', function () {\n $scope.BankAccountsList = filterFilter($scope.BankAccountModels, $scope.bankAccountFilterRequest);\n }, true);\n $scope.RefreshContactPeople = function () {\n $http.get('/api/ContactPerson' + '?partitionKey=' + $scope.currentPartner.Guid).then(function (d) {\n $scope.ContactPersonModels = d.data.Result;\n }, function (e) {\n toaster.pop('error', 'Pobieranie danych nie powiodło się');\n });\n };\n $scope.RefreshContactPeople();\n $scope.RefreshBankAccounts = function () {\n $http.get('/api/BankAccount' + '?partitionKey=' + $scope.currentPartner.Guid).then(function (d) {\n $scope.BankAccountModels = d.data.Result;\n }, function (e) {\n toaster.pop('error', 'Pobieranie danych nie powiodło się');\n });\n };\n $scope.RefreshBankAccounts();\n // operacje na osobach kontaktowych\n $scope.AddContactPerson = function () {\n $scope.dataForNewContactPerson = {\n PartnerID: $scope.currentPartner.Guid,\n FirstName: \"\",\n LastName: \"\",\n Email: \"\",\n PhoneNumber: \"\"\n };\n var modalInstance = $modal.open({\n animation: true,\n templateUrl: '/WWW/partials/addContactPersonModal.html',\n controller: 'AddContactPersonModalCtrl',\n scope: $scope,\n resolve: {\n dataForNewContactPerson: function () {\n return $scope.dataForNewContactPerson;\n }\n }\n });\n modalInstance.result.then(function (dataForNewContactPerson) {\n $http.post('/api/ContactPerson/', dataForNewContactPerson).then(function (d) {\n $scope.RefreshContactPeople();\n toaster.pop('success', 'Pomyślnie dodano nową osobę kontaktową');\n }, function (e) {\n toaster.pop('error', 'Błąd podczas dodawania osoby kontaktowej');\n });\n }, function (e) { });\n };\n $scope.EditContactPerson = function (contactPerson) {\n $scope.dataForEditContactPerson = contactPerson;\n var modalInstance = $modal.open({\n animation: true,\n templateUrl: '/WWW/partials/editContactPersonModal.html',\n controller: 'EditContactPersonCtrl',\n scope: $scope,\n resolve: {\n dataForEditContactPerson: function () {\n return $scope.dataForEditContactPerson;\n }\n }\n });\n modalInstance.result.then(function (dataForEditContactPerson) {\n $http.put('/api/ContactPerson/' + dataForEditContactPerson.Guid, dataForEditContactPerson).then(function (f) {\n $scope.RefreshContactPeople();\n toaster.pop('success', 'Pomyślnie zaktualizowano dane osoby kontaktowej');\n }, function (g) {\n toaster.pop('error', 'Błąd podczas aktualizacji danych osoby kontaktowej');\n });\n }, function (h) { });\n };\n $scope.DeleteContactPerson = function (id) {\n if (confirm(\"Czy na pewno chcesz usunąć osobę kontaktową?\")) {\n $http.delete('/api/ContactPerson' + '?id=' + id.toString()).then(function (d) {\n toaster.pop('success', 'Operacja powiodła się');\n $scope.RefreshContactPeople();\n }, function (e) {\n toaster.pop('error', 'Operacja nie powiodła się');\n });\n }\n };\n // operacje na rachunkach bankowych\n $scope.AddBankAccount = function () {\n $scope.dataForNewBankAccount = {\n PartnerID: $scope.currentPartner.Guid,\n Name: \"\",\n IBAN: \"\",\n BankAccountStatus: \"Aktywny\"\n };\n var modalInstance = $modal.open({\n animation: true,\n templateUrl: '/WWW/partials/addBankAccountModal.html',\n controller: 'AddBankAccountModalCtrl',\n scope: $scope,\n resolve: {\n dataForNewBankAccount: function () {\n return $scope.dataForNewBankAccount;\n }\n }\n });\n modalInstance.result.then(function (dataForNewBankAccount) {\n $http.post('/api/BankAccount/', dataForNewBankAccount).then(function (d) {\n $scope.RefreshBankAccounts();\n toaster.pop('success', 'Pomyślnie dodano nowy rachunek bankowy');\n }, function (e) {\n toaster.pop('error', 'Błąd podczas dodawania rachunku bankowego');\n });\n }, function (e) { });\n };\n $scope.EditBankAccount = function (bankAccount) {\n $scope.dataForEditBankAccount = bankAccount;\n var modalInstance = $modal.open({\n animation: true,\n templateUrl: '/WWW/partials/editBankAccountModal.html',\n controller: 'EditBankAccountModalCtrl',\n scope: $scope,\n resolve: {\n dataForEditBankAccount: function () {\n return $scope.dataForEditBankAccount;\n }\n }\n });\n modalInstance.result.then(function (dataForEditBankAccount) {\n $http.put('/api/BankAccount/' + dataForEditBankAccount.Guid, dataForEditBankAccount).then(function (f) {\n $scope.RefreshBankAccounts();\n toaster.pop('success', 'Pomyślnie zaktualizowano dane rachunku bankowego');\n }, function (g) {\n toaster.pop('error', 'Błąd podczas aktualizacji danych rachunku bankowego');\n });\n }, function (h) { });\n };\n $scope.DeleteBankAccount = function (bankAccount) {\n //$scope.dataForDeleteBankAccount = bankAccount;\n bankAccount.BankAccountStatus = \"Historyczny\";\n if (confirm(\"Czy na pewno chcesz usunąć rachunek bankowy?\")) {\n $http.put('/api/BankAccount/' + bankAccount.Guid, bankAccount).then(function (d) {\n $scope.RefreshBankAccounts();\n toaster.pop('success', \"Rachunek bankowy\", \"Status rachunku zmieniony na 'Historyczny'\");\n }, function (e) {\n console.error(e);\n toaster.pop('error', \"Rachunek bankowy\", \"Błąd przy usuwaniu rachunku bankowego\");\n });\n }\n };\n }\n PartnerCtrl.$inject = ['$scope', '$http', '$modal', 'FileUploader', 'toaster', 'filterFilter'];\n return PartnerCtrl;\n }());\n system.PartnerCtrl = PartnerCtrl;\n /* ladowanie produktow dla prartnerow */\n var PartnerProductUploadModalCtrl = (function () {\n function PartnerProductUploadModalCtrl($scope, $modalInstance, uploader, partnerData) {\n $scope.uploader = uploader;\n $scope.partnerData = partnerData;\n $scope.ok = function () {\n $modalInstance.close($scope.partnerData);\n };\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n }\n PartnerProductUploadModalCtrl.$inject = ['$scope', '$modalInstance', 'uploader', 'partnerData'];\n return PartnerProductUploadModalCtrl;\n }());\n system.PartnerProductUploadModalCtrl = PartnerProductUploadModalCtrl;\n ;\n /* dodawanie osoby kontaktowej */\n var AddContactPersonModalCtrl = (function () {\n function AddContactPersonModalCtrl($scope, $modalInstance, dataForNewContactPerson) {\n $scope.dataForNewContactPerson = dataForNewContactPerson;\n $scope.ok = function () {\n $modalInstance.close($scope.dataForNewContactPerson);\n };\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n }\n AddContactPersonModalCtrl.$inject = ['$scope', '$modalInstance', 'dataForNewContactPerson'];\n return AddContactPersonModalCtrl;\n }());\n system.AddContactPersonModalCtrl = AddContactPersonModalCtrl;\n ;\n var EditContactPersonCtrl = (function () {\n function EditContactPersonCtrl($scope, $modalInstance, dataForEditContactPerson) {\n $scope.dataForEditContactPerson = dataForEditContactPerson;\n $scope.ok = function () {\n $modalInstance.close($scope.dataForEditContactPerson);\n };\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n $scope.RefreshContactPeople();\n };\n }\n EditContactPersonCtrl.$inject = ['$scope', '$modalInstance', 'dataForEditContactPerson'];\n return EditContactPersonCtrl;\n }());\n system.EditContactPersonCtrl = EditContactPersonCtrl;\n ;\n /* dodawanie rachunku bankowego */\n var AddBankAccountModalCtrl = (function () {\n function AddBankAccountModalCtrl($scope, $modalInstance, dataForNewBankAccount) {\n $scope.dataForNewBankAccount = dataForNewBankAccount;\n $scope.ok = function () {\n $modalInstance.close($scope.dataForNewBankAccount);\n };\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n }\n AddBankAccountModalCtrl.$inject = ['$scope', '$modalInstance', 'dataForNewBankAccount'];\n return AddBankAccountModalCtrl;\n }());\n system.AddBankAccountModalCtrl = AddBankAccountModalCtrl;\n ;\n var EditBankAccountModalCtrl = (function () {\n function EditBankAccountModalCtrl($scope, $modalInstance, dataForEditBankAccount) {\n $scope.dataForEditBankAccount = dataForEditBankAccount;\n $scope.ok = function () {\n $modalInstance.close($scope.dataForEditBankAccount);\n };\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n $scope.RefreshBankAccounts();\n };\n }\n EditBankAccountModalCtrl.$inject = ['$scope', '$modalInstance', 'dataForEditBankAccount'];\n return EditBankAccountModalCtrl;\n }());\n system.EditBankAccountModalCtrl = EditBankAccountModalCtrl;\n ;\n var CaptchaNeededModalCtrl = (function () {\n function CaptchaNeededModalCtrl($scope, $modalInstance, CaptchaData) {\n $scope.CaptchaData = CaptchaData;\n $scope.ok = function () {\n $modalInstance.close($scope.CaptchaData);\n };\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n }\n CaptchaNeededModalCtrl.$inject = ['$scope', '$modalInstance', 'CaptchaData'];\n return CaptchaNeededModalCtrl;\n }());\n system.CaptchaNeededModalCtrl = CaptchaNeededModalCtrl;\n ;\n // kontroller produktow partnera\n var PartnerProductCtrl = (function () {\n function PartnerProductCtrl($scope, PartnerProductSrv) {\n // domyslana zakladka\n $scope.currentPartnerProductTab = '';\n }\n PartnerProductCtrl.$inject = ['$scope', 'PartnerProductSrv'];\n return PartnerProductCtrl;\n }());\n system.PartnerProductCtrl = PartnerProductCtrl;\n var PartnerSystemProductsCtrl = (function () {\n function PartnerSystemProductsCtrl($scope, $http, toaster, filterFilter, PartnerProductSrv, $rootScope) {\n // opracowanie guida partnera\n $scope.currentPartnerGuid = ($scope.currentPartner ? $scope.currentPartner.Key : \"\");\n $scope.filteredList = [];\n $scope.search = {\n ProductName: \"\"\n };\n $scope.ProductModels = [];\n // filtr\n $scope.filterRequest = function (item) {\n if ($scope.search.ProductName) {\n var _v0 = ($scope.search.ProductName || \"\").toLowerCase();\n var _v1 = (item.Product.ProductName + \"\" || \"\").toLowerCase();\n var _v2 = (item.Product.ProductId + \"\" || \"\").toLowerCase();\n var _v3 = (item.Product.ProductCode + \"\" || \"\").toLowerCase();\n var _v4 = (item.Product.ProductCategory + \"\" || \"\").toLowerCase();\n if (_v1.indexOf(_v0) == -1\n && _v2.indexOf(_v0) == -1\n && _v3.indexOf(_v0) == -1\n && _v4.indexOf(_v0) == -1)\n return false;\n }\n return true;\n };\n // obserwowanie filtra i glownego zbioru danych\n $scope.$watch('search', function () {\n $scope.filteredList = filterFilter($scope.ProductModels, $scope.filterRequest);\n }, true);\n $scope.$watch('ProductModels', function () {\n $scope.filteredList = filterFilter($scope.ProductModels, $scope.filterRequest);\n }, true);\n // pobieranie danych\n $scope.Refresh = function () {\n PartnerProductSrv.listSystemProducts($scope.currentPartnerGuid).then(function (d) {\n $scope.ProductModels = d.data.Result;\n }, function (e) {\n toaster.pop('error', 'Pobieranie danych nie powiodło się');\n });\n };\n $scope.AddProduct = function (Product_Guid) {\n var obj = {\n Product_Guid: Product_Guid,\n Partner_Guid: $scope.currentPartnerGuid,\n Included: true\n };\n PartnerProductSrv.updatePartnerSystemProduct(obj).then(function (d) {\n $scope.Refresh();\n }, function (e) {\n toaster.pop('error', 'Zapisywanie danych nie powiodło się');\n });\n };\n $scope.DeleteProduct = function (Product_Guid) {\n var obj = {\n Product_Guid: Product_Guid,\n Partner_Guid: $scope.currentPartnerGuid,\n Included: false\n };\n PartnerProductSrv.updatePartnerSystemProduct(obj).then(function (d) {\n $scope.Refresh();\n }, function (e) {\n toaster.pop('error', 'Zapisywanie danych nie powiodło się');\n });\n };\n $scope.setAsDefault = function (productId, partnerId) {\n $http.put('/api/PartnerSystemProduct/' + '?id=' + productId + '&productPartner=' + partnerId).then(function (d) {\n $scope.Refresh();\n }, function (e) {\n toaster.pop('error', 'Pobieranie danych nie powiodło się');\n });\n };\n // domyslnie pobranie\n $scope.Refresh();\n }\n PartnerSystemProductsCtrl.$inject = ['$scope', '$http', 'toaster', 'filterFilter', 'PartnerProductSrv', '$rootScope'];\n return PartnerSystemProductsCtrl;\n }());\n system.PartnerSystemProductsCtrl = PartnerSystemProductsCtrl;\n // serwis produktow partnera\n var PartnerProductSrv = (function () {\n function PartnerProductSrv($http) {\n var _this = this;\n this.$http = $http;\n this.listSystemProducts = function (Partner_Guid) {\n return _this.$http.get('/api/PartnerSystemProduct?Partner_Guid=' + Partner_Guid);\n };\n this.updatePartnerSystemProduct = function (obj) {\n return _this.$http.post('/api/PartnerSystemProduct', obj);\n };\n }\n PartnerProductSrv.$inject = ['$http'];\n return PartnerProductSrv;\n }());\n system.PartnerProductSrv = PartnerProductSrv;\n})(system || (system = {}));\nvar system;\n(function (system) {\n // produkty\n var LeaselinkProductsMainCtrl = (function () {\n function LeaselinkProductsMainCtrl($rootScope, $scope, $location, $http, toaster, $modal, filterFilter) {\n $scope.ProductFunc = \"Parents\";\n $scope.ProductsList = [];\n $scope.filteredList = [];\n $scope.config = {\n itemsPerPage: 10,\n maxPages: 10,\n fillLastPage: 'yes'\n };\n $scope.search = {\n Product: \"\"\n };\n // filtr\n $scope.filterRequest = function (item) {\n if ($scope.search.Product) {\n var _v0 = ($scope.search.Product || \"\").toLowerCase();\n var _v1 = (item.FinancialProductName || \"\").toLowerCase();\n // sprawdzanie czy się zawiera\n if (!~_v1.indexOf(_v0))\n return false;\n }\n return true;\n };\n // obserwowanie filtra i glownego zbioru danych\n $scope.$watch('search', function () {\n $scope.filteredList = filterFilter($scope.ProductsList, $scope.filterRequest);\n }, true);\n $scope.$watch('ProductsList', function () {\n $scope.filteredList = filterFilter($scope.ProductsList, $scope.filterRequest);\n }, true);\n $scope.Refresh = function () {\n $http.get('/api/LeaselinkProduct').then(function (d) {\n $scope.ProductsList = d.data.Result;\n }, function (e) {\n toaster.pop('error', 'Pobieranie danych nie powiodło się');\n });\n };\n $scope.Refresh();\n // pokazanie elementów\n $scope.showItem = function (item) {\n item.EditMode = false;\n item.Validfrom = new Date(item.Validfrom) || null;\n item.Validto = new Date(item.Validto) || null;\n item.Procestill = new Date(item.Procestill) || null;\n var modalInstance = $modal.open({\n animation: true,\n templateUrl: '/WWW/partials/modules/products/form.html',\n controller: 'LeaselinkProductCtrl',\n resolve: {\n item: function () {\n return item;\n }\n }\n });\n modalInstance.result.then(function (item) {\n //$scope.item = item;\n $scope.Refresh();\n }, function () { });\n };\n $scope.addItem = function () {\n var item = {\n EditMode: true\n };\n $scope.showItem(item);\n };\n $scope.deleteItem = function (item) {\n if (confirm(\"Czy na pewno chcesz usunąć pozycję ?\")) {\n $http.delete('/api/LeaselinkProduct/' + item.Guid).then(function (d) {\n toaster.pop('success', \"Produkty\", \"Dane usunięto poprawnie.\");\n $scope.Refresh();\n }, function (e) {\n toaster.pop('error', \"Produkty\", \"Wystąpił bład podczas usuwania danych.\");\n });\n }\n };\n // $scope.ProductFunc = \"Parents\";\n $scope.showChildren = function (item) {\n $scope.currentParent = item;\n $scope.ProductFunc = \"Children\";\n };\n // event powrotu do produktów finansowych (button)\n $scope.backToFinancialProducts = function () {\n $scope.ProductFunc = \"Parents\";\n $rootScope.$broadcast('back-to-financial-products');\n };\n // powrot do produktów finansowych (zakładka)\n $scope.$on('current-productFunc-Parents', function (event, args) {\n $scope.ProductFunc = \"Parents\";\n });\n }\n LeaselinkProductsMainCtrl.$inject = ['$rootScope', '$scope', '$location', '$http', 'toaster', '$modal', 'filterFilter'];\n return LeaselinkProductsMainCtrl;\n }());\n system.LeaselinkProductsMainCtrl = LeaselinkProductsMainCtrl;\n var LeaselinkProductCtrl = (function () {\n function LeaselinkProductCtrl($rootScope, $scope, $modalInstance, toaster, $http, item) {\n $scope.item = item;\n $scope.editItem = function () {\n // pokazanie danych\n $scope.item.EditMode = true;\n };\n // oddanie danych\n $scope.saveItem = function () {\n if (!item.Guid) {\n $http.post(\"/api/LeaselinkProduct\", $scope.item).then(function (d) {\n $scope.item = d.data;\n $modalInstance.close($scope.item);\n }, function (e) {\n console.error(e);\n toaster.pop('error', \"Produkty\", \"Błąd przy dodawaniu produktu\");\n });\n }\n else {\n $http.put(\"/api/LeaselinkProduct/\" + item.Guid, $scope.item).then(function (d) {\n $scope.item = d.data;\n $modalInstance.close($scope.item);\n }, function (e) {\n console.error(e);\n toaster.pop('error', \"Produkty\", \"Błąd przy dodawaniu produktu\");\n });\n }\n };\n // zamkniecie\n $scope.cancel = function () {\n $scope.item.EditMode = false;\n $modalInstance.dismiss('cancel');\n };\n }\n LeaselinkProductCtrl.$inject = ['$rootScope', '$scope', '$modalInstance', 'toaster', '$http', 'item'];\n return LeaselinkProductCtrl;\n }());\n system.LeaselinkProductCtrl = LeaselinkProductCtrl;\n var LeaselinkChildProductCtrl = (function () {\n function LeaselinkChildProductCtrl($rootScope, $scope, $modalInstance, toaster, $http, item) {\n $scope.item = item;\n $scope.editItem = function () {\n // pokazanie danych\n $scope.item.EditMode = true;\n };\n // oddanie danych\n $scope.saveItem = function () {\n if (!item.Guid) {\n $http.post(\"/api/LeaselinkSubProduct\", $scope.item).then(function (d) {\n $scope.item = d.data;\n $modalInstance.close($scope.item);\n }, function (e) {\n console.error(e);\n toaster.pop('error', \"Produkty\", \"Błąd przy dodawaniu produktu\");\n });\n }\n else {\n $http.put(\"/api/LeaselinkSubProduct/\" + item.Guid, $scope.item).then(function (d) {\n $scope.item = d.data;\n $modalInstance.close($scope.item);\n }, function (e) {\n console.error(e);\n toaster.pop('error', \"Produkty\", \"Błąd przy dodawaniu produktu\");\n });\n }\n };\n // zamkniecie\n $scope.cancel = function () {\n $scope.item.EditMode = false;\n $modalInstance.dismiss('cancel');\n };\n }\n LeaselinkChildProductCtrl.$inject = ['$rootScope', '$scope', '$modalInstance', 'toaster', '$http', 'item'];\n return LeaselinkChildProductCtrl;\n }());\n system.LeaselinkChildProductCtrl = LeaselinkChildProductCtrl;\n var LeaselinkProductChildrenCtrl = (function () {\n function LeaselinkProductChildrenCtrl($rootScope, $scope, $location, $http, toaster, $modal, filterFilter) {\n $scope.ProductChildrenList = [];\n $scope.filteredList = [];\n $scope.config = {\n itemsPerPage: 10,\n maxPages: 10,\n fillLastPage: 'yes'\n };\n $scope.search = {\n Product: \"\"\n };\n // filtr\n $scope.filterRequest = function (item) {\n if ($scope.search.Product) {\n var _v0 = ($scope.search.Product || \"\").toLowerCase();\n var _v1 = (item.FinancialProductName || \"\").toLowerCase();\n // sprawdzanie czy się zawiera\n if (!~_v1.indexOf(_v0))\n return false;\n }\n return true;\n };\n // obserwowanie filtra i glownego zbioru danych\n $scope.$watch('search', function () {\n $scope.filteredList = filterFilter($scope.ProductChildrenList, $scope.filterRequest);\n }, true);\n $scope.$watch('ProductChildrenList', function () {\n $scope.filteredList = filterFilter($scope.ProductChildrenList, $scope.filterRequest);\n }, true);\n $scope.Refresh = function () {\n $http.get('/api/LeaselinkSubProduct?partitionKey=' + $scope.currentParent.Guid).then(function (d) {\n $scope.ProductChildrenList = d.data.Result;\n }, function (e) {\n toaster.pop('error', 'Pobieranie danych nie powiodło się');\n });\n };\n $scope.Refresh();\n // pokazanie elementów\n $scope.showItem = function (item) {\n item.EditMode = item.EditMode || false;\n var modalInstance = $modal.open({\n animation: true,\n templateUrl: '/WWW/partials/modules/products/childrenForm.html',\n controller: 'LeaselinkChildProductCtrl',\n resolve: {\n item: function () {\n return item;\n }\n }\n });\n modalInstance.result.then(function (item) {\n //$scope.item = item;\n $scope.Refresh();\n }, function () { });\n };\n $scope.addItem = function () {\n var item = {\n EditMode: true,\n ParentGuid: $scope.currentParent.Guid,\n NetValueMin: $scope.currentParent.NetValueMin,\n NetValueMax: $scope.currentParent.NetValueMax,\n GrossValueMin: $scope.currentParent.GrossValueMin,\n GrossValueMax: $scope.currentParent.GrossValueMax,\n EntryPaymentMin: $scope.currentParent.EntryPaymentMin,\n EntryPaymentMax: $scope.currentParent.EntryPaymentMax,\n AdminPaymentMin: $scope.currentParent.AdminPaymentMin,\n AdminPaymentMax: $scope.currentParent.AdminPaymentMax,\n NumberOfRatesMin: $scope.currentParent.NumberOfRatesMin,\n NumberOfRatesMax: $scope.currentParent.NumberOfRatesMax,\n ClosingPaymentMin: $scope.currentParent.ClosingPaymentMin,\n ClosingPaymentMax: $scope.currentParent.ClosingPaymentMax,\n MarginMin: $scope.currentParent.MarginMin,\n MarginMax: $scope.currentParent.MarginMax\n };\n $scope.showItem(item);\n };\n $scope.deleteItem = function (item) {\n if (confirm(\"Czy na pewno chcesz usunąć pozycję ?\")) {\n $http.delete('/api/LeaselinkSubProduct/' + item.Guid).then(function (d) {\n toaster.pop('success', \"Produkty\", \"Dane usunięto poprawnie.\");\n $scope.Refresh();\n }, function (e) {\n toaster.pop('error', \"Produkty\", \"Wystąpił bład podczas usuwania danych.\");\n });\n }\n };\n }\n LeaselinkProductChildrenCtrl.$inject = ['$rootScope', '$scope', '$location', '$http', 'toaster', '$modal', 'filterFilter'];\n return LeaselinkProductChildrenCtrl;\n }());\n system.LeaselinkProductChildrenCtrl = LeaselinkProductChildrenCtrl;\n})(system || (system = {}));\n/*\nmoduł zarzadzania użytkownikami\n*/\n//import \"../commons/filters/system_filters\";\nvar system;\n(function (system) {\n /* uzytkownicy */\n var UsersCtrl = (function () {\n function UsersCtrl($rootScope, $scope, $location, $http, toaster, $modal, filterFilter, SystemDataHelper) {\n $scope.UsersModels = [];\n $scope.filteredList = [];\n $scope.config = {\n itemsPerPage: 10,\n maxPages: 10,\n fillLastPage: \"yes\",\n };\n $scope.search = {\n Phrase: \"\",\n Partner: \"\",\n };\n // filtr\n $scope.filterRequest = function (item) {\n if ($scope.search.Phrase) {\n var _v0 = ($scope.search.Phrase || \"\").toLowerCase();\n var _v1 = (item.Login + \"\" || \"\").toLowerCase();\n var _v2 = (item.FirstName + \"\" || \"\").toLowerCase();\n var _v3 = (item.LastName + \"\" || \"\").toLowerCase();\n var _v4 = (item.ExternalId + \"\" || \"\").toLowerCase();\n if (_v1.indexOf(_v0) == -1 &&\n _v2.indexOf(_v0) == -1 &&\n _v3.indexOf(_v0) == -1 &&\n _v4.indexOf(_v0) == -1)\n return false;\n }\n if ($scope.search.Partner) {\n var _v0 = ($scope.search.Partner || \"\").toLowerCase();\n var _v1 = (item.Partner + \"\" || \"\").toLowerCase();\n if (_v1 !== _v0)\n return false;\n }\n return true;\n };\n // obserwowanie filtra i glownego zbioru danych\n $scope.$watch(\"search\", function () {\n $scope.filteredList = filterFilter($scope.UsersModels, $scope.filterRequest);\n }, true);\n $scope.$watch(\"UsersModels\", function () {\n $scope.filteredList = filterFilter($scope.UsersModels, $scope.filterRequest);\n }, true);\n $scope.PartnerSupervisors = [];\n $scope.Partners = [];\n // pobranie partnerow\n $http.get(\"/offerbusinessdata/getpartnersbase\").then(function (d) {\n $scope.Partners = [];\n $scope.Partners = _.map(d.data, function (i) {\n return { k: i.Key, v: i.Name, url: i.PartnerUrl };\n });\n }, function (e) {\n console.error(e);\n });\n $scope.Roles = [\n {\n k: \"PARTNER_OPERATOR\",\n v: \"Konsultant Partnera\",\n },\n {\n k: \"WWW_OPERATOR\",\n v: \"Użytkownik internetowy\",\n },\n ];\n $scope.refresh = function () {\n $http.get(\"/api/PartnerUser\").then(function (d) {\n $scope.UsersModels = d.data.Result;\n $scope.PartnerSupervisors = $scope.UsersModels.map(function (item) {\n return {\n Guid: item.Guid,\n FullName: item.LastName +\n \", \" +\n item.FirstName +\n \" [\" +\n item.Partner +\n \"]\",\n };\n });\n }, function (e) {\n toaster.pop(\"error\", \"Użytkownicy\", \"Pobieranie danych nie powiodło się\");\n });\n };\n $scope.refresh();\n // pokazanie elementów\n $scope.showItem = function (item) {\n item.EditMode = false;\n var modalInstance = $modal.open({\n animation: true,\n templateUrl: \"/WWW/partials/modules/users/form.html\",\n controller: \"UserCtrl\",\n resolve: {\n item: function () {\n return item;\n },\n PartnerSupervisors: function () {\n return $scope.PartnerSupervisors;\n },\n Roles: function () {\n return $scope.Roles;\n },\n },\n });\n modalInstance.result.then(function (item) {\n //$scope.item = item;\n $scope.refresh();\n }, function () { });\n };\n // pokazanie szczegolow uzytkownika\n $scope.showUserData = function (item) {\n $http.get(\"/api/PartnerUser?userId=\" + item.Id).then(function (d) {\n $scope.currentUser = d.data.Result;\n $scope.currentUser.EditMode = false;\n $scope.UserFunc = \"EditUser\";\n }, function (e) {\n toaster.pop(\"error\", \"Użytkownicy\", \"Wystąpił bład podczas pobierania danych.\");\n });\n };\n // zmiana hasła przez admina\n $scope.changePasswordItem = function (item) {\n item.EditMode = false;\n var modalInstance = $modal.open({\n animation: true,\n templateUrl: \"/WWW/partials/modules/users/partnerUserChangePassword.html\",\n controller: \"UserPasswordCtrl\",\n resolve: {\n item: function () {\n return item;\n },\n },\n });\n modalInstance.result.then(function (item) { }, function () { });\n };\n // dodanie nowego\n $scope.addNewUser = function () {\n $scope.currentUser = {};\n $scope.currentUser.EditMode = true;\n $scope.UserFunc = \"EditUser\";\n };\n $scope.backToUsers = function () {\n $scope.currentUser.EditMode = false;\n $scope.UserFunc = \"Default\";\n $scope.refresh();\n };\n $scope.addItem = function () {\n var item = {\n EditMode: true,\n Roles: [],\n };\n $scope.showItem(item);\n };\n $scope.deleteItem = function (item) {\n if (confirm(\"Czy na pewno chcesz usunąć pozycję ?\")) {\n $http.delete(\"/api/PartnerUser?userId=\" + item.Id).then(function (d) {\n toaster.pop(\"success\", \"Użytkownicy\", \"Dane usunięto poprawnie.\");\n $scope.refresh();\n }, function (e) {\n toaster.pop(\"error\", \"Użytkownicy\", \"Wystąpił bład podczas usuwania danych.\");\n });\n }\n };\n $scope.editItem = function () {\n // pokazanie danych\n $scope.currentUser.EditMode = true;\n };\n // oddanie danych\n $scope.saveEditedUser = function () {\n //LL-1671 schowanie loginu, login ma być taki sam jak e-mail\n var model = $scope.currentUser;\n model.Login = model.Email;\n $http.put(\"/api/PartnerUser\", model).then(function (d) {\n if (d.data.Result == null) {\n toaster.pop(\"error\", \"Użytkownicy\", \"Użytkownik o podanym loginie już istnieje\");\n $scope.backToUsers();\n }\n $scope.currentUser = d.data.Result;\n $scope.currentUser.EditMode = false;\n $rootScope.$broadcast(\"update-statuses-filter\");\n $scope.backToUsers();\n toaster.pop(\"success\", \"Użytkownicy\", \"Użytkownik dodany/edytowany poprawnie\");\n }, function (e) {\n toaster.pop(\"error\", \"Użytkownicy\", \"Użytkownik o podanym loginie już istnieje\");\n });\n };\n $scope.searchStatuses = {\n name: \"\",\n };\n $scope.AllStatuses = [\n {\n name: \"Anulowany\",\n value: -1,\n },\n {\n name: \"Nowy\",\n value: 0,\n },\n {\n name: \"Wysłano link do klienta\",\n value: 10,\n },\n {\n name: \"Otwarty przez klienta\",\n value: 20,\n },\n {\n name: \"Wybór wniosku do realizacji\",\n value: 21,\n },\n {\n name: \"Uzupełniony przez klienta\",\n value: 30,\n },\n {\n name: \"Opłata weryfikacyjna do zapłaty\",\n value: 32,\n },\n {\n name: \"Zapłacony przez klienta\",\n value: 40,\n },\n {\n name: \"Ponów płatność 1 PLN\",\n value: 41,\n },\n {\n name: \"Odrzucony przez klienta\",\n value: 50,\n },\n {\n name: \"Prośba o uzupełnienie wymaganych dokumentów\",\n value: 55,\n },\n {\n name: \"Wstępna decyzja kredytowa\",\n value: 52,\n },\n {\n name: \"Prośba o uzupełnienie wymaganych dokumentów finansowych (VAT-owiec)\",\n value: 53,\n },\n {\n name: \"Prośba o uzupełnienie wymaganych dokumentów finansowych (nie-VAT-owiec)\",\n value: 54,\n },\n {\n name: \"Do weryfikacji BO / Przekaż do Ryzyka\",\n value: 60,\n },\n {\n name: \"Automat scoringowy - oczekiwanie na odpowiedź\",\n value: 61,\n },\n {\n name: \"Automat scoringowy - odpowiedź gotowa\",\n value: 62,\n },\n {\n name: \"Analiza ryzyka\",\n value: 63,\n },\n {\n name: \"Błąd identyfikacji tożsamości\",\n value: 67,\n },\n {\n name: \"Umowa wstepna przygotowana\",\n value: 70,\n },\n {\n name: \"Konieczność opłaty WOL (uzupełnienie danych)\",\n value: 71,\n },\n {\n name: \"WOL opłacony\",\n value: 72,\n },\n {\n name: \"Konieczność opłaty WOL (wybór płatności)\",\n value: 73,\n },\n {\n name: \"Ponów płatność WOL\",\n value: 74,\n },\n {\n name: \"Weryfikacja podpisu kwalifikowanego\",\n value: 76,\n },\n {\n name: \"Akceptacja\",\n value: 80,\n },\n {\n name: \"Akceptacja z warunkami\",\n value: 90,\n },\n {\n name: \"Do zmiany przez operatora\",\n value: 91,\n },\n {\n name: \"Zmiana formy finansowania\",\n value: 92,\n },\n {\n name: \"Zmiana zamówienia przez Klienta\",\n value: 95,\n },\n {\n name: \"Rolnik\",\n value: 98,\n },\n {\n name: \"Odrzucenie\",\n value: 100,\n },\n {\n name: \"Akceptacja nowych warunków\",\n value: 103,\n },\n {\n name: \"Umowa przygotowana\",\n value: 105,\n },\n {\n name: \"Umowa zawiera niepoprawne dane\",\n value: 106,\n },\n {\n name: \"Umowa jest poprawna\",\n value: 107,\n },\n {\n name: \"Umowa przekazana do klienta\",\n value: 110,\n },\n {\n name: \"Umowa u kuriera\",\n value: 111,\n },\n {\n name: \"Umowa zaakceptowana przez klienta\",\n value: 120,\n },\n {\n name: \"Zapłacone częściowo\",\n value: 124,\n },\n {\n name: \"Płatność do dostawcy\",\n value: 125,\n },\n {\n name: \"EDEN umowa potwierdzona\",\n value: 127,\n },\n {\n name: \"Płatność do dostawcy - oczekiwanie\",\n value: 128,\n },\n {\n name: \"Umowa odrzucona przez klienta\",\n value: 130,\n },\n {\n name: \"mSzafir - manualny proces zawarcia umowy\",\n value: 131,\n },\n {\n name: \"mSzafir - oczekiwanie na podpisanie dokumentu\",\n value: 132,\n },\n {\n name: \"Umowa podpisana. Towar do wydania\",\n value: 140,\n },\n {\n name: \"Czekamy na spłatę w terminie odroczenia\",\n value: 141,\n },\n {\n name: \"Umowa spłacona w terminie odroczenia\",\n value: 142,\n },\n {\n name: \"Zamówienie zostało rozłożone na raty\",\n value: 143,\n },\n {\n name: \"Umowa ramowa - oczekuje na zawarcie umowy\",\n value: 151,\n },\n {\n name: \"Umowa ramowa - uruchomiona\",\n value: 153,\n },\n {\n name: \"Umowa ramowa - wypowiedziana\",\n value: 155,\n },\n {\n name: \"Umowa ramowa - do płatności\",\n value: 157,\n },\n {\n name: \"Umowa potwierdzona - wyślij towar\",\n value: 200,\n },\n {\n name: \"Karencja - iPhone 15\",\n value: 201,\n },\n {\n name: \"Towar u kuriera\",\n value: 210,\n },\n {\n name: \"Towar odebrany\",\n value: 220,\n },\n {\n name: \"Towar odebrany przez klienta\",\n value: 310,\n },\n {\n name: \"Oczekiwanie na zamówienie\",\n value: 398,\n },\n {\n name: \"Brak IBAN\",\n value: 399,\n },\n {\n name: \"Korekta danych BR (AML)\",\n value: 442,\n },\n {\n name: \"Wymaga uzupełnienia danych przez sklep\",\n value: 500,\n },\n {\n name: \"Nie wymaga uzupełnienia danych przez sklep\",\n value: 505,\n },\n {\n name: \"Podpisanie umowy oraz odbiór towaru w punkcie sprzedaży\",\n value: 507,\n },\n {\n name: \"Umowa uzupełniona przez sklep\",\n value: 510,\n },\n {\n name: \"Ostateczne sprawdzenie poprawności\",\n value: 600,\n },\n {\n name: \"Automat - pobieranie danych dostawcy\",\n value: 663,\n },\n {\n name: \"Automat - oczekiwanie na dane dostawców\",\n value: 664,\n },\n {\n name: \"Automat - weryfikacja dostawców\",\n value: 665,\n },\n {\n name: \"Cesja Zaakceptowana\",\n value: 700,\n },\n {\n name: \"Wniosek zakończony\",\n value: 701,\n },\n {\n name: \"Cesja zaakceptowana z poręczeniem\",\n value: 702,\n },\n {\n name: \"(Cesja) Dokumenty wysłane do Klienta\",\n value: 703,\n },\n {\n name: \"(Cesja) Dokumenty błędnie podpisane\",\n value: 704,\n },\n {\n name: \"Cesja wprowadzona\",\n value: 705,\n },\n {\n name: \"Cesja anulowana\",\n value: 706,\n },\n {\n name: \"Obsługa rezygnacji\",\n value: 800,\n },\n {\n name: \"Obsługa anulacji\",\n value: 801,\n },\n {\n name: \"Proces zakończony\",\n value: 1000,\n },\n ];\n $scope.chunkStatuses = chunk($scope.AllStatuses, 3);\n $scope.filterRequestStatuses = function (item) {\n if ($scope.searchStatuses.name) {\n var _v0 = ($scope.searchStatuses.name || \"\").toLowerCase();\n var _v1 = (item.name + \"\" || \"\").toLowerCase();\n if (_v1.indexOf(_v0) == -1)\n return false;\n }\n return true;\n };\n // funkcja do dzielenia na kolumny\n function chunk(arr, size) {\n var newArr = [];\n for (var i = 0; i < arr.length; i += size) {\n newArr.push(arr.slice(i, i + size));\n }\n return newArr;\n }\n $scope.$watch(\"searchStatuses\", function () {\n $scope.filteredStatusesList = filterFilter($scope.AllStatuses, $scope.filterRequestStatuses);\n $scope.chunkedStatuses = chunk($scope.filteredStatusesList, 3);\n }, true);\n $scope.updateSelection = function ($event, value) {\n var checkbox = $event.target;\n var action = checkbox.checked ? \"add\" : \"remove\";\n updateSelected(action, value);\n };\n var updateSelected = function (action, value) {\n if (action === \"add\" &&\n $scope.currentUser.DefaultStatuses.indexOf(value) === -1) {\n $scope.currentUser.DefaultStatuses.push(value);\n }\n if (action === \"remove\" &&\n $scope.currentUser.DefaultStatuses.indexOf(value) !== -1) {\n $scope.currentUser.DefaultStatuses.splice($scope.currentUser.DefaultStatuses.indexOf(value), 1);\n }\n };\n $scope.isSelected = function (value) {\n return $scope.currentUser.DefaultStatuses.indexOf(value) >= 0;\n };\n }\n UsersCtrl.$inject = [\n \"$rootScope\",\n \"$scope\",\n \"$location\",\n \"$http\",\n \"toaster\",\n \"$modal\",\n \"filterFilter\",\n \"SystemDataHelper\",\n ];\n return UsersCtrl;\n }());\n system.UsersCtrl = UsersCtrl;\n /* dane uzytkownika */ // przeniesione z modala na stronę - do kontrolera UsersCtrl\n var UserCtrl = (function () {\n function UserCtrl($rootScope, $scope, $modalInstance, toaster, $http, item, PartnerSupervisors, Roles) {\n item.AccessAPI = item.Roles.indexOf(\"AccessAPI\") > -1;\n item.AccessKalkSklep = item.Roles.indexOf(\"RateCalculator\") > -1;\n item.AccessOpenKlient = item.Roles.indexOf(\"SecuredMakeNew\") > -1;\n item.AccessOpenPartner = item.Roles.indexOf(\"ProcessOfferByPartner\") > -1;\n $scope.item = item;\n $scope.PartnerSupervisors = PartnerSupervisors;\n $scope.Partners = [];\n $scope.Roles = Roles;\n // pobranie partnerow\n $http.get(\"/offerbusinessdata/getpartnersbase\").then(function (d) {\n $scope.Partners = [];\n $scope.Partners = _.map(d.data, function (i) {\n return { k: i.Key, v: i.Name, url: i.PartnerUrl };\n });\n }, function (e) {\n console.error(e);\n });\n // oddanie danych\n $scope.saveItem = function () {\n $http.post(\"/api/User\", $scope.item).then(function (d) {\n $scope.item = d.data.Result;\n $modalInstance.close($scope.item);\n }, function (e) {\n console.error(e);\n toaster.pop(\"error\", \"Użytkownicy\", \"Użytkownik o podanym EXTERNAL ID już istnieje\");\n });\n };\n // zamkniecie\n $scope.cancel = function () {\n $scope.item.EditMode = false;\n $modalInstance.dismiss(\"cancel\");\n };\n }\n UserCtrl.$inject = [\n \"$rootScope\",\n \"$scope\",\n \"$modalInstance\",\n \"toaster\",\n \"$http\",\n \"item\",\n \"PartnerSupervisors\",\n \"Roles\",\n ];\n return UserCtrl;\n }());\n system.UserCtrl = UserCtrl;\n /* haslo uzytkownika */\n var UserPasswordCtrl = (function () {\n function UserPasswordCtrl($scope, $modalInstance, $http, item, toaster) {\n $scope.passwordModel = {\n Password: \"\",\n PasswordRepeat: \"\",\n };\n // oddanie danych\n $scope.saveItem = function () {\n $http\n .post(\"/api/PartnerUserSetPassword/\", {\n UserId: item.Id,\n Password: $scope.passwordModel.Password,\n PasswordRepeat: $scope.passwordModel.PasswordRepeat,\n })\n .then(function (d) {\n $modalInstance.close($scope.item);\n toaster.pop(\"success\", \"Użytkownicy\", \"Hasło zostało zmienione\");\n }, function (e) {\n toaster.pop(\"error\", \"Użytkownicy\", \"Zmiana hasła nie powiodła się\");\n });\n };\n // zamkniecie\n $scope.cancel = function () {\n $modalInstance.dismiss(\"cancel\");\n };\n }\n UserPasswordCtrl.$inject = [\"$scope\", \"$modalInstance\", \"$http\", \"item\", \"toaster\"];\n return UserPasswordCtrl;\n }());\n system.UserPasswordCtrl = UserPasswordCtrl;\n var LlUserHierarchyDirective = (function () {\n function LlUserHierarchyDirective(toaster, $http, $modal) {\n this.toaster = toaster;\n this.$http = $http;\n this.$modal = $modal;\n this.restrict = \"AE\";\n this.scope = {\n currentUserGuid: \"=\",\n usersList: \"=\",\n };\n this.templateUrl = \"/WWW/partials/modules/user.hierarchy.html\";\n this.link = function (scope, elem, attr) {\n scope.findSubordinates = function (list, supervisorGuid) {\n return _.filter(list, function (user) {\n return user.PartnerSupervisor_Guid === supervisorGuid;\n });\n };\n scope.makeNode = function (supervisorGuid) {\n var subordinates = scope.findSubordinates(scope.usersList, supervisorGuid);\n var current = _.findWhere(scope.usersList, {\n Guid: supervisorGuid,\n });\n var nodeUser = {};\n if (current) {\n nodeUser = {\n FirstName: current.FirstName,\n LastName: current.LastName,\n Email: current.Email,\n Partner: current.Partner,\n subordinates: _.map(subordinates, function (user) {\n return scope.makeNode(user.Guid);\n }),\n };\n }\n return nodeUser;\n };\n scope.toggle = function (s) {\n s.toggle();\n };\n scope.currentUser = scope.makeNode(scope.currentUserGuid);\n };\n }\n LlUserHierarchyDirective.Factory = function () {\n var dir = function (toaster, $http, $modal) {\n return new LlUserHierarchyDirective(toaster, $http, $modal);\n };\n dir[\"$inject\"] = [\"toaster\", \"$http\", \"$modal\"];\n return dir;\n };\n return LlUserHierarchyDirective;\n }());\n system.LlUserHierarchyDirective = LlUserHierarchyDirective;\n})(system || (system = {}));\nvar clientConsents;\n(function (clientConsents) {\n var ClientConsentsSrv = (function () {\n function ClientConsentsSrv($http) {\n var _this = this;\n this.$http = $http;\n // pobranie zestawu zgod\n this.getConsentList = function (partner, processStage) {\n var url = '/api/RodoConstent?type=';\n if (partner) {\n url += '&partner=' + (partner);\n }\n if (processStage) {\n url += '&processStage=' + (processStage);\n }\n return _this.$http.get(url);\n };\n // pobranie zgod na procesie\n this.getProcessConsents = function (orderId) {\n var url = '/api/get-rodo-consent-for-offer?orderId=' + orderId;\n return _this.$http.get(url);\n };\n }\n ClientConsentsSrv.$inject = ['$http'];\n return ClientConsentsSrv;\n }());\n clientConsents.ClientConsentsSrv = ClientConsentsSrv;\n var ClientConsentsCtrl = (function () {\n function ClientConsentsCtrl($scope, $service) {\n var _this = this;\n this.$service = $service;\n // pobranie danych\n $scope.refresh = function () {\n // pobranie stage\n var partner = $scope.formRequest.PartnerName || 'LEASELINK';\n // // chwilowa klazula na wyłączność\n // if (['BOSBANK', 'ING-BANK'].indexOf(partner.toUpperCase()) === -1) {\n // partner = 'LEASELINK';\n // }\n //const partner = 'LEASELINK';\n var stage = $scope.step;\n _this.$service.getConsentList(partner, stage).then(function (d) {\n $scope.consents = d.data.Result;\n }, function (e) { });\n // pobranie zgód rodo \n _this.$service.getProcessConsents($scope.formRequest.AggragatedCalulationId).then(function (d) {\n $scope.processConsents = d.data.Result;\n }, function (e) { });\n };\n $scope.initCheckbox = function (consentGuid) {\n var consentInitialValue = false;\n for (var i = 0; i <= $scope.formRequest.Requestors[0].Consents.length - 1; i++) {\n var _processConsent = $scope.formRequest.Requestors[0].Consents[i];\n if (_processConsent.Guid === consentGuid) {\n if (_processConsent.Agreed) {\n consentInitialValue = true;\n }\n else {\n consentInitialValue = false;\n }\n }\n }\n return { Agreed: consentInitialValue, isCollapsed: false };\n };\n // obserwacja zmian\n $scope.$watch('consentsModel', function (n, o) {\n var keys = Object.keys(n);\n for (var i = 0; i <= keys.length - 1; i++) {\n var key = keys[i];\n var consent = n[key];\n var found = false;\n for (var j = 0; j <= $scope.formRequest.Requestors[0].Consents.length - 1; j++) {\n var _consent = $scope.formRequest.Requestors[0].Consents[j];\n if (_consent.Guid === key) {\n _consent.Agreed = consent.Agreed;\n found = true;\n break;\n }\n }\n if (found !== true) {\n $scope.formRequest.Requestors[0].Consents.push({\n Guid: key,\n Agreed: consent.Agreed\n });\n }\n }\n }, true);\n // obserwacja forma\n $scope.$watch('formRequest', function () {\n if ($scope.formRequest && $scope.formRequest.Requestors && $scope.formRequest.Requestors.length > 0) {\n $scope.formRequest.Requestors[0].Consents = $scope.formRequest.Requestors[0].Consents || [];\n $scope.refresh();\n }\n });\n // zmiana check all\n $scope.$watch('checkAll', function () {\n var keys = Object.keys($scope.consentsModel);\n for (var i = 0; i <= keys.length - 1; i++) {\n var _key = keys[i];\n $scope.consentsModel[_key].Agreed = ($scope.checkAll === true);\n }\n });\n // zmiana check all\n $scope.$watch('selectAll', function () {\n var keys = Object.keys($scope.consentsModel);\n for (var i = 0; i <= keys.length - 1; i++) {\n var _key = keys[i];\n $scope.consentsModel[_key].Agreed = ($scope.selectAll === true);\n }\n });\n // lista zgód\n $scope.consents = [];\n $scope.processConsents = [];\n $scope.consentsModel = {};\n $scope.selectAll = false;\n }\n ClientConsentsCtrl.$inject = ['$scope', 'ClientConsentsSrv'];\n return ClientConsentsCtrl;\n }());\n clientConsents.ClientConsentsCtrl = ClientConsentsCtrl;\n var ClientConsentsDir = (function () {\n function ClientConsentsDir() {\n this.restrict = \"AE\";\n this.template = \"\\n
0\\\" class=\\\"client-consents-container\\\">\\n \\n \\n \\n \\n
\\n
1\\\">\\n \\n
\\n\\n \\n\\n
\\n
*Prosimy o wyra\\u017Cenie zg\\u00F3d na kontakt niezb\\u0119dnych dla realizacji Twojej oferty. Ze wzgl\\u0119du na ca\\u0142kowicie on-lineowy charakter naszego procesu, od poznania oferty, a\\u017C po zawarcie transakcji, brak Twojej zgody uniemo\\u017Cliwi nam spe\\u0142nienie Twoich potrzeb w ci\\u0105gu kilku minut, 24/7/365. Podanie numeru NIP, numeru telefonu oraz adresu e-mail nie jest wymogiem ustawowym, jednak\\u017Ce jest wymagane je\\u015Bli chc\\u0105 Pa\\u0144stwo skorzysta\\u0107 z naszych us\\u0142ug.
\\n
\\n \";\n this.controller = ClientConsentsCtrl;\n this.scope = {\n step: \"@\",\n formRequest: \"=\",\n checkAll: \"=\",\n simpleForm: \"=\" // ukrywa napis pod zgodami\n };\n }\n ClientConsentsDir.Factory = function () {\n var d = function () { return new ClientConsentsDir(); };\n d['$inject'] = [];\n return d;\n };\n return ClientConsentsDir;\n }());\n clientConsents.ClientConsentsDir = ClientConsentsDir;\n var ClientConsentsNewDir = (function () {\n function ClientConsentsNewDir() {\n this.restrict = \"AE\";\n this.template = \"\\n
\\n \\n \\n \\n \\n
\\n\\n \\n\\n \\n\\n
\\n
*Prosimy o wyra\\u017Cenie zg\\u00F3d na kontakt niezb\\u0119dnych dla realizacji oferty Klienta. Ze wzgl\\u0119du na ca\\u0142kowicie on-lineowy charakter naszego procesu, od poznania oferty, a\\u017C po zawarcie transakcji, brak zgody uniemo\\u017Cliwi nam spe\\u0142nienie jego potrzeb w ci\\u0105gu kilku minut, 24/7/365. Podanie numeru NIP, numeru telefonu oraz adresu e-mail nie jest wymogiem ustawowym, jednak\\u017Ce jest wymagane je\\u015Bli chc\\u0105 Pa\\u0144stwo skorzysta\\u0107 z naszych us\\u0142ug. Klient w dowolnej chwili mo\\u017Ce usun\\u0105\\u0107 swoje zgody.
\\n\\n
\\n \";\n this.controller = ClientConsentsCtrl;\n this.scope = {\n step: \"@\",\n formRequest: \"=\",\n checkAll: \"=\"\n };\n }\n ClientConsentsNewDir.Factory = function () {\n var d = function () { return new ClientConsentsNewDir(); };\n d['$inject'] = [];\n return d;\n };\n return ClientConsentsNewDir;\n }());\n clientConsents.ClientConsentsNewDir = ClientConsentsNewDir;\n var ClientConsentsInnerDir = (function () {\n function ClientConsentsInnerDir() {\n this.restrict = \"AE\";\n this.template = \"\\n\\n \\n\\n\\n \";\n this.controller = ClientConsentsCtrl;\n this.scope = {\n step: \"@\",\n formRequest: \"=\",\n checkAll: \"=\"\n };\n }\n ClientConsentsInnerDir.Factory = function () {\n var d = function () { return new ClientConsentsInnerDir(); };\n d['$inject'] = [];\n return d;\n };\n return ClientConsentsInnerDir;\n }());\n clientConsents.ClientConsentsInnerDir = ClientConsentsInnerDir;\n var ClientConsentsInfoDir = (function () {\n function ClientConsentsInfoDir() {\n this.template = \"\\n
\\n
\\n RODO - Obowi\\u0105zek informacyjny.\\n
\\n
\\n \";\n }\n ClientConsentsInfoDir.Factory = function () {\n var d = function () { return new ClientConsentsInfoDir(); };\n d['$inject'] = [];\n return d;\n };\n return ClientConsentsInfoDir;\n }());\n clientConsents.ClientConsentsInfoDir = ClientConsentsInfoDir;\n})(clientConsents || (clientConsents = {}));\nangular.module(\"ll.client.consents\", ['ngSanitize'])\n .directive(\"llClientConsents\", clientConsents.ClientConsentsDir.Factory())\n .directive(\"llClientConsentsNew\", clientConsents.ClientConsentsNewDir.Factory())\n .directive(\"llClientConsentsInner\", clientConsents.ClientConsentsInnerDir.Factory())\n .directive(\"llClientConsentsInfo\", clientConsents.ClientConsentsInfoDir.Factory())\n .service(\"ClientConsentsSrv\", clientConsents.ClientConsentsSrv);\nvar clientDirectives;\n(function (clientDirectives) {\n /** process stage */\n var ngProcessMultiStepsCtrl = (function () {\n function ngProcessMultiStepsCtrl($scope) {\n //zmienne\n $scope.numberOfSteps = ($scope.partner && $scope.userLogged) ? 6 : 5;\n $scope.currentStep = 0;\n $scope.isVisible = false;\n $scope.partnerPosition = (($scope.partner && $scope.userLogged) ? 'top' : 'bottom');\n if ($scope.position && $scope.position == $scope.partnerPosition) {\n $scope.isVisible = true;\n }\n else if (!$scope.position) {\n $scope.isVisible = true;\n }\n else {\n $scope.isVisible = false;\n }\n // przemapowanie krokow\n switch ($scope.step) {\n case \"step0\":\n $scope.currentStep = 0;\n break;\n case \"step1\":\n $scope.currentStep = 1;\n break;\n case \"step2\":\n $scope.currentStep = 2;\n break;\n case \"step3\":\n $scope.currentStep = 3;\n break;\n case \"step4\":\n $scope.currentStep = 4;\n break;\n case \"step5\":\n $scope.currentStep = 5;\n break;\n }\n }\n ngProcessMultiStepsCtrl.$inject = ['$scope'];\n return ngProcessMultiStepsCtrl;\n }());\n var ngProcessMultiSteps = (function () {\n function ngProcessMultiSteps() {\n this.controller = ngProcessMultiStepsCtrl;\n this.restrict = \"AE\";\n this.scope = {\n step: \"@\",\n partner: \"=\",\n position: \"@\",\n userLogged: \"=\"\n };\n this.templateUrl = \"/WWW/partials/process.steps.directive.html\";\n }\n ngProcessMultiSteps.Factory = function () {\n var dir = function () { return new ngProcessMultiSteps(); };\n dir['$inject'] = [];\n return dir;\n };\n return ngProcessMultiSteps;\n }());\n clientDirectives.ngProcessMultiSteps = ngProcessMultiSteps;\n /** side up drawer */\n var ngProcessSideDrawerCtrl = (function () {\n function ngProcessSideDrawerCtrl($scope) {\n $scope.showDrawer = function () {\n $scope.isDrawerVisible = true;\n };\n $scope.closeDrawer = function () {\n $scope.isDrawerVisible = false;\n };\n // zmienne\n $scope.isDrawerVisible = false;\n // czy wogole dostepy\n $scope.isDrawerAvaiable = ($scope.userLogged && $scope.partner) || false; // ['MEDMRK'].indexOf($scope.partner) !== -1;\n }\n ngProcessSideDrawerCtrl.$inject = ['$scope'];\n return ngProcessSideDrawerCtrl;\n }());\n var ngProcessSideDrawer = (function () {\n function ngProcessSideDrawer() {\n this.controller = ngProcessSideDrawerCtrl;\n this.restrict = \"AE\";\n this.replace = true;\n this.scope = {\n step: \"@\",\n partner: \"=\",\n userLogged: \"=\"\n };\n this.templateUrl = \"/WWW/partials/modules/process.drawer.directive.html\";\n }\n ngProcessSideDrawer.Factory = function () {\n var dir = function () { return new ngProcessSideDrawer(); };\n dir['$inject'] = [];\n return dir;\n };\n return ngProcessSideDrawer;\n }());\n clientDirectives.ngProcessSideDrawer = ngProcessSideDrawer;\n /** koszyk na createoffer */\n var ngCreateOfferCartCtrl = (function () {\n function ngCreateOfferCartCtrl($scope) {\n }\n ngCreateOfferCartCtrl.$inject = ['$scope'];\n return ngCreateOfferCartCtrl;\n }());\n var ngCreateOfferCart = (function () {\n function ngCreateOfferCart() {\n this.controller = ngCreateOfferCartCtrl;\n this.restrict = \"AE\";\n this.templateUrl = \"/WWW/partials/modules/client.offer/create.offer.cart.html\";\n }\n ngCreateOfferCart.Factory = function () {\n var dir = function () { return new ngCreateOfferCart(); };\n dir['$inject'] = [];\n return dir;\n };\n return ngCreateOfferCart;\n }());\n clientDirectives.ngCreateOfferCart = ngCreateOfferCart;\n /** koszyk stacjonarny na createoffer */\n var ngCreateOfferCartStationaryCtrl = (function () {\n function ngCreateOfferCartStationaryCtrl($scope) {\n }\n ngCreateOfferCartStationaryCtrl.$inject = ['$scope'];\n return ngCreateOfferCartStationaryCtrl;\n }());\n var ngCreateOfferCartStationary = (function () {\n function ngCreateOfferCartStationary() {\n this.controller = ngCreateOfferCartStationaryCtrl;\n this.restrict = \"AE\";\n this.templateUrl = \"/WWW/partials/modules/client.offer/create.offer.cart.stationary.html\";\n }\n ngCreateOfferCartStationary.Factory = function () {\n var dir = function () { return new ngCreateOfferCartStationary(); };\n dir['$inject'] = [];\n return dir;\n };\n return ngCreateOfferCartStationary;\n }());\n clientDirectives.ngCreateOfferCartStationary = ngCreateOfferCartStationary;\n /** dane klienta na createOffer */\n var ngCreateOfferClientDataCtrl = (function () {\n function ngCreateOfferClientDataCtrl($scope) {\n }\n ngCreateOfferClientDataCtrl.$inject = ['$scope'];\n return ngCreateOfferClientDataCtrl;\n }());\n var ngCreateOfferClientData = (function () {\n function ngCreateOfferClientData() {\n this.controller = ngCreateOfferClientDataCtrl;\n this.restrict = \"AE\";\n this.templateUrl = \"/WWW/partials/modules/client.offer/create.offer.client.data.html\";\n }\n ngCreateOfferClientData.Factory = function () {\n var dir = function () { return new ngCreateOfferClientData(); };\n dir['$inject'] = [];\n return dir;\n };\n return ngCreateOfferClientData;\n }());\n clientDirectives.ngCreateOfferClientData = ngCreateOfferClientData;\n /** edycja elementow */\n /** edycja dnaych klienta*/\n var ngClientDataCtrl = (function () {\n function ngClientDataCtrl($scope) {\n //metody\n $scope.editData = function () {\n $scope.isEdited = true;\n };\n $scope.saveData = function () {\n $scope.isEdited = false;\n if (typeof $scope.onSave === \"function\") {\n $scope.onSave($scope.request);\n }\n };\n // zmienne\n $scope.isEdited = false;\n }\n ngClientDataCtrl.$inject = ['$scope'];\n return ngClientDataCtrl;\n }());\n var ngClientData = (function () {\n function ngClientData() {\n this.controller = ngClientDataCtrl;\n this.restrict = \"AE\";\n this.scope = {\n request: \"=\",\n isEditable: \"@\",\n onSave: \"=\"\n };\n this.templateUrl = \"/WWW/partials/modules/request.client.data.html\";\n }\n ngClientData.Factory = function () {\n var d = function () { return new ngClientData(); };\n d['$inject'] = [];\n return d;\n };\n return ngClientData;\n }());\n clientDirectives.ngClientData = ngClientData;\n /** edycja danych adresowych klienta*/\n var ngClientAddressDataCtrl = (function () {\n function ngClientAddressDataCtrl($scope) {\n //metody\n $scope.editData = function () {\n $scope.isEdited = true;\n $scope.request.RequestorAddresses[0].Confirmed = false;\n };\n $scope.confirm = function () {\n $scope.request.RequestorAddresses[0].Confirmed = true;\n };\n // ustawienie informacji o adresie korespondecyjnym \n $scope.request.RequestorAddresses[0].Required = true;\n // zapisanie danych\n $scope.saveData = function () {\n $scope.isEdited = false;\n // ustawienie informacji o adresie korespondecyjnym \n $scope.request.RequestorAddresses[0].Required = true;\n // zapisanie danych\n if (typeof $scope.onSave === \"function\") {\n $scope.onSave($scope.request);\n }\n };\n // zmienne\n $scope.isEdited = false;\n }\n ngClientAddressDataCtrl.$inject = ['$scope'];\n return ngClientAddressDataCtrl;\n }());\n var ngClientAddressData = (function () {\n function ngClientAddressData() {\n this.controller = ngClientAddressDataCtrl;\n this.restrict = \"AE\";\n this.scope = {\n request: \"=\",\n isEditable: \"@\",\n onSave: \"=\"\n };\n this.templateUrl = \"/WWW/partials/modules/request.client.address.data.html\";\n }\n ngClientAddressData.Factory = function () {\n var d = function () { return new ngClientAddressData(); };\n d['$inject'] = [];\n return d;\n };\n return ngClientAddressData;\n }());\n clientDirectives.ngClientAddressData = ngClientAddressData;\n var ngClientDocumentsDataSrv = (function () {\n function ngClientDocumentsDataSrv($http, $q) {\n var _this = this;\n this.$http = $http;\n this.$q = $q;\n this.getDocuments = function (id, type) {\n var url = '/api/SecuredBusinessProcessDocumentsForUser/' + id + '?type=' + type;\n return _this.$http.get(url);\n };\n this.sendConfirmation = function (id, fileIds) {\n var url = \"/document/confirm/\" + id;\n return _this.$http.post(url, fileIds);\n };\n }\n ngClientDocumentsDataSrv.$inject = ['$http', '$q'];\n return ngClientDocumentsDataSrv;\n }());\n clientDirectives.ngClientDocumentsDataSrv = ngClientDocumentsDataSrv;\n /** wyswietlanie dokumentow */\n var ngClientDocumentsDataCtrl = (function () {\n function ngClientDocumentsDataCtrl($rootScope, $scope, service, toaster) {\n this.$scope = $scope;\n this.service = service;\n this.toaster = toaster;\n $scope.Documents = [];\n $scope.$on('selfsevice::refresh', function (evt) {\n $scope.getDocuments();\n });\n $scope.getDocuments = function () {\n service.getDocuments($scope.request.AggragatedCalulationId, 'AGREEMENTS')\n .then(function (d) {\n $scope.Documents = d.data.Result || [];\n });\n };\n $scope.showDocument = function (fileId) {\n window.open(\"/Message/ShowDocument?fileId=\" + fileId);\n };\n // wyslanie wiadomosci\n $scope.sendMessageToLeaseLink = function () {\n $rootScope.$broadcast(\"send::messageToLeaselink\", { RequestId: $scope.request.AggragatedCalulationId });\n };\n $scope.confirmDocument = function (fileId, params) {\n var _params = params || {};\n var id = $scope.request.AggragatedCalulationId;\n var fileIds = [];\n fileIds.push(fileId);\n if ($scope.user.Role === '' || confirm(\"Czy na pewno chcesz potwierdzić zapoznanie się z dokumentem?\")) {\n service.sendConfirmation(id, fileIds).then(function (d) {\n toaster.pop('success', \"Potwierdzanie dokumentu\", \"Dokument potwierdzono poprawnie.\");\n if (_params && typeof _params.callBack === \"function\") {\n _params.callBack();\n }\n else {\n // pokazanie zapytania\n $scope.showRequest(id);\n }\n }, function (e) {\n toaster.pop('error', \"Potwierdzanie dokumentu\", \"Wystąpił błąd podczas potwierdzania dokumentu.\");\n });\n }\n };\n $scope.confirmDocumentWithNoReaload = function (doc) {\n $scope.confirmDocument(doc.FileId, { callBack: function () { doc.Confirmed = true; } });\n };\n $scope.getDocuments();\n }\n ;\n ngClientDocumentsDataCtrl.$inject = ['$rootScope', '$scope', 'ngClientDocumentsDataSrv', 'toaster'];\n return ngClientDocumentsDataCtrl;\n }());\n var ngClientDocumentsData = (function () {\n function ngClientDocumentsData($rootScope) {\n this.$rootScope = $rootScope;\n this.controller = ngClientDocumentsDataCtrl;\n this.restrict = \"AE\";\n this.scope = {\n request: \"=\",\n user: \"=\",\n };\n this.link = function (scope, elem, attr) {\n };\n this.templateUrl = \"/WWW/partials/modules/request.client.documents.data.html\";\n }\n ngClientDocumentsData.Factory = function () {\n var d = function ($rootScope) { return new ngClientDocumentsData($rootScope); };\n d['$inject'] = ['$rootScope'];\n return d;\n };\n return ngClientDocumentsData;\n }());\n clientDirectives.ngClientDocumentsData = ngClientDocumentsData;\n /** edycja danych adresowych podpisania umowy*/\n var ngClientDeliveryDataCtrl = (function () {\n function ngClientDeliveryDataCtrl($scope) {\n //metody\n $scope.editData = function () {\n $scope.isEdited = true;\n $scope.request.RequestorDeliveryAddress.Confirmed = false;\n };\n $scope.confirm = function () {\n $scope.request.RequestorDeliveryAddress.Confirmed = true;\n };\n $scope.copy = function () {\n var address = JSON.parse(JSON.stringify($scope.request.RequestorAddresses[0]));\n address.Confirmed = false;\n $scope.request.RequestorDeliveryAddress = address;\n };\n // dodanie informacji o zmianie adresu\n $scope.request.RequestorDeliveryAddress.Required = true;\n // zapisanie \n $scope.saveData = function () {\n $scope.isEdited = false;\n // dodanie informacji o zmianie adresu\n $scope.request.RequestorDeliveryAddress.Required = true;\n // zapisanie \n if (typeof $scope.onSave === \"function\") {\n $scope.onSave($scope.request);\n }\n };\n }\n ngClientDeliveryDataCtrl.$inject = ['$scope'];\n return ngClientDeliveryDataCtrl;\n }());\n var ngClientDeliveryData = (function () {\n function ngClientDeliveryData() {\n this.controller = ngClientDeliveryDataCtrl;\n this.restrict = \"AE\";\n this.scope = {\n request: \"=\",\n isEditable: \"@\",\n onSave: \"=\"\n };\n this.templateUrl = \"/WWW/partials/modules/request.client.delivery.data.html\";\n }\n ngClientDeliveryData.Factory = function () {\n var d = function () { return new ngClientDeliveryData(); };\n d['$inject'] = [];\n return d;\n };\n return ngClientDeliveryData;\n }());\n clientDirectives.ngClientDeliveryData = ngClientDeliveryData;\n /** edycja danych adresowych odbioru sprzętu*/\n var ngClientCollectDataCtrl = (function () {\n function ngClientCollectDataCtrl($scope) {\n //metody\n $scope.editData = function () {\n $scope.isEdited = true;\n $scope.request.RequestorCollectAddress.Confirmed = false;\n };\n $scope.confirm = function () {\n if ($scope.request.TypeOfItemCollect === 1) {\n $scope.request.RequestorCollectAddress.Required = true;\n $scope.request.RequestorSelfCollectAddress.Required = false;\n }\n $scope.request.RequestorCollectAddress.Confirmed = true;\n };\n $scope.copy = function () {\n var address = JSON.parse(JSON.stringify($scope.request.RequestorAddresses[0]));\n address.Confirmed = false;\n $scope.request.RequestorCollectAddress = address;\n };\n // dodanie informacji o zmianie adresu\n $scope.request.RequestorCollectAddress.Required = true;\n // zapisanie \n $scope.saveData = function () {\n $scope.isEdited = false;\n // dodanie informacji o zmianie adresu\n $scope.request.RequestorCollectAddress.Required = true;\n $scope.request.RequestorSelfCollectAddress.Required = false;\n // zapisanie \n if (typeof $scope.onSave === \"function\") {\n $scope.onSave($scope.request);\n }\n };\n }\n ngClientCollectDataCtrl.$inject = ['$scope'];\n return ngClientCollectDataCtrl;\n }());\n var ngClientCollectData = (function () {\n function ngClientCollectData() {\n this.controller = ngClientCollectDataCtrl;\n this.restrict = \"AE\";\n this.scope = {\n request: \"=\",\n isEditable: \"@\",\n onSave: \"=\"\n };\n this.templateUrl = \"/WWW/partials/modules/request.client.collect.adress.data.html\";\n }\n ngClientCollectData.Factory = function () {\n var d = function () { return new ngClientCollectData(); };\n d['$inject'] = [];\n return d;\n };\n return ngClientCollectData;\n }());\n clientDirectives.ngClientCollectData = ngClientCollectData;\n /** edycja danych adresowych odbioru sprzętu*/\n var ngClientSelfCollectDataCtrl = (function () {\n function ngClientSelfCollectDataCtrl($scope) {\n //metody\n $scope.editData = function () {\n $scope.isEdited = true;\n $scope.request.RequestorSelfCollectAddress.Confirmed = false;\n };\n $scope.confirm = function () {\n if ($scope.request.TypeOfItemCollect === 0) {\n $scope.request.RequestorCollectAddress.Required = false;\n $scope.request.RequestorSelfCollectAddress.Required = true;\n }\n $scope.request.RequestorSelfCollectAddress.Confirmed = true;\n };\n // dodanie informacji o zmianie adresu\n $scope.request.RequestorSelfCollectAddress.Required = true;\n // zapisanie \n $scope.saveData = function () {\n $scope.isEdited = false;\n // dodanie informacji o zmianie adresu\n $scope.request.RequestorSelfCollectAddress.Required = true;\n $scope.request.RequestorCollectAddress.Required = false;\n // zapisanie \n if (typeof $scope.onSave === \"function\") {\n $scope.onSave($scope.request);\n }\n };\n }\n ngClientSelfCollectDataCtrl.$inject = ['$scope'];\n return ngClientSelfCollectDataCtrl;\n }());\n var ngClientSelfCollectData = (function () {\n function ngClientSelfCollectData() {\n this.controller = ngClientSelfCollectDataCtrl;\n this.restrict = \"AE\";\n this.scope = {\n request: \"=\",\n isEditable: \"@\",\n onSave: \"=\"\n };\n this.templateUrl = \"/WWW/partials/modules/request.client.self.collect.adress.data.html\";\n }\n ngClientSelfCollectData.Factory = function () {\n var d = function () { return new ngClientSelfCollectData(); };\n d['$inject'] = [];\n return d;\n };\n return ngClientSelfCollectData;\n }());\n clientDirectives.ngClientSelfCollectData = ngClientSelfCollectData;\n /** edycja danych adresowych odbioru sprzętu*/\n var ngClientSelfCollectDataListCtrl = (function () {\n function ngClientSelfCollectDataListCtrl($scope, service) {\n this.service = service;\n //metody\n $scope.selectedAddress = {};\n service.getExternalStoreAddresses($scope.request.PartnerName)\n .then(function (d) {\n $scope.ADDRESSES = d.data;\n $scope.selectedAddress.address = $scope.mapRequestModelToFormModel($scope.request.RequestorSelfCollectAddress);\n });\n $scope.editData = function () {\n $scope.isEdited = true;\n $scope.request.RequestorSelfCollectAddress.Confirmed = false;\n };\n $scope.confirm = function () {\n if ($scope.request.TypeOfItemCollect === 0) {\n $scope.request.RequestorCollectAddress.Required = false;\n $scope.request.RequestorSelfCollectAddress.Required = true;\n }\n $scope.request.RequestorSelfCollectAddress.Confirmed = true;\n };\n $scope.mapFormModelToRequestModel = function () {\n $scope.request.RequestorSelfCollectAddress.PostalCode = $scope.selectedAddress.address.postcode;\n $scope.request.RequestorSelfCollectAddress.District = $scope.selectedAddress.address.voivodeship;\n $scope.request.RequestorSelfCollectAddress.City = $scope.selectedAddress.address.city;\n $scope.request.RequestorSelfCollectAddress.ShopName = $scope.selectedAddress.address.name;\n $scope.request.RequestorSelfCollectAddress.Street = $scope.selectedAddress.address.street;\n $scope.request.RequestorSelfCollectAddress.Confirmed = false;\n };\n $scope.mapRequestModelToFormModel = function (requestModel) {\n var formModel = {\n postcode: requestModel.PostalCode,\n voivodeship: requestModel.District,\n city: requestModel.City,\n name: requestModel.ShopName,\n street: requestModel.Street\n };\n return formModel;\n };\n // dodanie informacji o zmianie adresu\n $scope.request.RequestorSelfCollectAddress.Required = true;\n // zapisanie \n $scope.saveData = function () {\n $scope.isEdited = false;\n // dodanie informacji o zmianie adresu\n $scope.request.RequestorSelfCollectAddress.Required = true;\n $scope.request.RequestorCollectAddress.Required = false;\n // zapisanie \n if (typeof $scope.onSave === \"function\") {\n $scope.onSave($scope.request);\n }\n };\n }\n ngClientSelfCollectDataListCtrl.$inject = ['$scope', 'ngClientSelfCollectDataSrv'];\n return ngClientSelfCollectDataListCtrl;\n }());\n var ngClientSelfCollectDataList = (function () {\n function ngClientSelfCollectDataList() {\n this.controller = ngClientSelfCollectDataListCtrl;\n this.restrict = \"AE\";\n this.scope = {\n request: \"=\",\n isEditable: \"@\",\n onSave: \"=\"\n };\n this.templateUrl = \"/WWW/partials/modules/request.client.self.collect.adress.data.list.html\";\n }\n ngClientSelfCollectDataList.Factory = function () {\n var d = function () { return new ngClientSelfCollectDataList(); };\n d['$inject'] = [];\n return d;\n };\n return ngClientSelfCollectDataList;\n }());\n clientDirectives.ngClientSelfCollectDataList = ngClientSelfCollectDataList;\n var ngClientSelfCollectDataSrv = (function () {\n function ngClientSelfCollectDataSrv($http, $q) {\n var _this = this;\n this.$http = $http;\n this.$q = $q;\n this.getExternalStoreAddresses = function (partnerName) {\n var url = '/offerBusinessData/GetExternalStoreAddresses?storeName=' + partnerName;\n return _this.$http.get(url);\n };\n }\n ngClientSelfCollectDataSrv.$inject = ['$http', '$q'];\n return ngClientSelfCollectDataSrv;\n }());\n clientDirectives.ngClientSelfCollectDataSrv = ngClientSelfCollectDataSrv;\n /** edycja adresów dostaw produktów (EDEN)*/\n var ngProductDeliveryAddressCtrl = (function () {\n function ngProductDeliveryAddressCtrl($scope) {\n //metody\n $scope.editData = function () {\n };\n $scope.cancel = function () {\n };\n $scope.saveData = function () {\n // dodanie informacji o zmianie adresu\n //$scope.request.ProductDeliveryAddress.Required = true;\n // zapisanie \n if (typeof $scope.onSave === \"function\") {\n $scope.onSave($scope.request);\n }\n };\n $scope.categoryFilter = function (item) {\n return (item.ProductTypeName == \"FILTR DO WODY\" || item.ProductTypeName == \"EXPRESS\");\n };\n }\n ngProductDeliveryAddressCtrl.$inject = ['$scope'];\n return ngProductDeliveryAddressCtrl;\n }());\n var ngProductDeliveryAddress = (function () {\n function ngProductDeliveryAddress() {\n this.controller = ngProductDeliveryAddressCtrl;\n this.restrict = \"AE\";\n this.scope = {\n request: \"=\",\n isEditable: \"@\",\n onSave: \"=\"\n };\n this.templateUrl = \"/WWW/partials/modules/request.product.delivery.address.html\";\n }\n ngProductDeliveryAddress.Factory = function () {\n var d = function () { return new ngProductDeliveryAddress(); };\n d['$inject'] = [];\n return d;\n };\n return ngProductDeliveryAddress;\n }());\n clientDirectives.ngProductDeliveryAddress = ngProductDeliveryAddress;\n /** edycja adresów instalacji do umowy serwisowej (EDEN)*/\n var ngServiceDeliveryAddressCtrl = (function () {\n function ngServiceDeliveryAddressCtrl($scope) {\n //metody\n $scope.editData = function () {\n };\n $scope.cancel = function () {\n };\n $scope.saveData = function () {\n // dodanie informacji o zmianie adresu\n //$scope.request.ProductDeliveryAddress.Required = true;\n // zapisanie \n if (typeof $scope.onSave === \"function\") {\n $scope.onSave($scope.request);\n }\n };\n $scope.categoryFilter = function (item) {\n return (item.ProductTypeName == \"SERWIS\");\n };\n }\n ngServiceDeliveryAddressCtrl.$inject = ['$scope'];\n return ngServiceDeliveryAddressCtrl;\n }());\n var ngServiceDeliveryAddress = (function () {\n function ngServiceDeliveryAddress() {\n this.controller = ngServiceDeliveryAddressCtrl;\n this.restrict = \"AE\";\n this.scope = {\n request: \"=\",\n isEditable: \"@\",\n onSave: \"=\"\n };\n this.templateUrl = \"/WWW/partials/modules/request.service.delivery.address.html\";\n }\n ngServiceDeliveryAddress.Factory = function () {\n var d = function () { return new ngServiceDeliveryAddress(); };\n d['$inject'] = [];\n return d;\n };\n return ngServiceDeliveryAddress;\n }());\n clientDirectives.ngServiceDeliveryAddress = ngServiceDeliveryAddress;\n /** dyrektywa edycji adresu*/\n var AddressNewFormCtrl = (function () {\n function AddressNewFormCtrl($scope) {\n // lista prefixow\n $scope.streetPrefixes = [\n 'AL.',\n 'BULW.',\n 'DROGA',\n 'INNE',\n 'OGRÓD',\n 'OS.',\n 'PARK',\n 'PL.',\n 'RONDO',\n 'RYNEK',\n 'SKWER',\n 'SZOSA',\n 'UL.',\n 'WYB.',\n 'WYSPA'\n ];\n // to musi tak byc poniewaz watcher a autocomplete za pozno sie inicjuje\n $scope._isFormValidated = false;\n $scope.isAutoCompleteDisabled = function () {\n return $scope._isFormValidated;\n };\n $scope.$watch('isFormValidated', function () {\n if ($scope.isFormValidated !== $scope._isFormValidated) {\n setTimeout(function () {\n $scope._isFormValidated = $scope.isFormValidated;\n }, 100);\n }\n });\n }\n AddressNewFormCtrl.$inject = ['$scope'];\n return AddressNewFormCtrl;\n }());\n var AddressNewFormDirective = (function () {\n function AddressNewFormDirective() {\n this.controller = AddressNewFormCtrl;\n this.templateUrl = \"/WWW/partials/addressNewForm.html\";\n this.restrict = \"AE\";\n this.scope = {\n address: \"=\",\n isRequired: \"=\",\n hideSpecificPlace: \"=\",\n isFormValidated: \"=\",\n liteForm: \"=\"\n };\n }\n AddressNewFormDirective.Factory = function () {\n var d = function () { return new AddressNewFormDirective(); };\n d['$inject'] = [];\n return d;\n };\n return AddressNewFormDirective;\n }());\n clientDirectives.AddressNewFormDirective = AddressNewFormDirective;\n var AddressNewFormLiteDirective = (function () {\n function AddressNewFormLiteDirective() {\n this.controller = AddressNewFormCtrl;\n this.templateUrl = \"/WWW/partials/addressNewFormLite.html\";\n this.restrict = \"AE\";\n this.scope = {\n address: \"=\",\n isRequired: \"=\",\n hideSpecificPlace: \"=\",\n isFormValidated: \"=\",\n liteForm: \"=\"\n };\n }\n AddressNewFormLiteDirective.Factory = function () {\n var d = function () { return new AddressNewFormLiteDirective(); };\n d['$inject'] = [];\n return d;\n };\n return AddressNewFormLiteDirective;\n }());\n clientDirectives.AddressNewFormLiteDirective = AddressNewFormLiteDirective;\n /*nowa stopka*/\n var FrontFooterDirective = (function () {\n function FrontFooterDirective() {\n this.restrict = \"E\";\n this.template = \"\\n\\n
\\n\\n \\n\\n
\\n\\n\\n\\n\\n \";\n }\n ;\n FrontFooterDirective.Factory = function () {\n var dir = function () { return new FrontFooterDirective(); };\n dir['$inject'] = [];\n return dir;\n };\n return FrontFooterDirective;\n }());\n clientDirectives.FrontFooterDirective = FrontFooterDirective;\n /* helper */\n var FrontHelpDirective = (function () {\n function FrontHelpDirective($http, $sce) {\n var _this = this;\n this.$http = $http;\n this.$sce = $sce;\n this.restrict = \"E\";\n this.template = \"\\n
\\n \";\n this.link = function (s, el, attrs) {\n s.html = '';\n var stage = top.location.href.toLocaleLowerCase();\n s.stage = stage;\n s.renderHelpFromBackend = function () {\n return _this.$sce.trustAsHtml(s.html);\n };\n // koszyka\n if (stage.indexOf('createoffer') !== -1\n || stage.indexOf('oferta_otwarta') !== -1\n || stage.indexOf('oferta_dla_partnera') !== -1\n || stage.indexOf('process/order') !== -1\n || stage.indexOf('stacjonarny') !== -1) {\n s.stage = 'process-order';\n }\n else if (stage.indexOf('offer/get') !== -1\n || stage.indexOf('process/choose.offer') !== -1) {\n s.stage = 'process-choose.offer';\n }\n else if (stage.indexOf('offerclientdata/edit') !== -1\n || stage.indexOf('process/client.data') !== -1) {\n s.stage = 'process-client.data.loan';\n }\n else if (stage.indexOf('payment/selectpaymentchannel') !== -1\n || stage.indexOf('process/choose.payment.channel') !== -1) {\n s.stage = 'process-choose.payment.channel.for';\n // pobranie rodzaju platnosci\n var paymentType = (s && s.paymentType) ? ('.' + s.paymentType) : '';\n s.stage += paymentType;\n }\n else if (stage.indexOf('selfservice/index') !== -1\n || stage.indexOf('client/service/process') !== -1) {\n s.stage = 'process-agreement.data.loan';\n }\n // opracowanie partnera\n var partner = 'LEASELINK';\n if (s.user && s.user.Partner) {\n partner = s.user.Partner;\n }\n else if (s.partner && s.partner.PartnerName) {\n partner = s.partner.PartnerName;\n }\n else if (s.partner) {\n partner = s.partner;\n }\n s.processType = 'OperationalLeasing';\n s.logged = false;\n var url = '/personalisation/help/' + partner + '?stage=' + s.stage + '&processType=' + s.processType + '&logged=' + s.logged;\n _this.$http.get(url).then(function (d) {\n s.html = d.data;\n });\n };\n }\n ;\n FrontHelpDirective.Factory = function () {\n var dir = function ($http, $sce) { return new FrontHelpDirective($http, $sce); };\n dir['$inject'] = ['$http', '$sce'];\n return dir;\n };\n return FrontHelpDirective;\n }());\n clientDirectives.FrontHelpDirective = FrontHelpDirective;\n // pokazanie naglowka z logiem i powitaniem w zaleznosci od partnera \n var ngShowHeader = (function () {\n function ngShowHeader() {\n this.restrict = \"AE\";\n this.scope = {\n partner: \"=\"\n };\n this.templateUrl = \"/WWW/partials/show.header.directive.html\";\n }\n ngShowHeader.Factory = function () {\n var dir = function () { return new ngShowHeader(); };\n dir['$inject'] = [];\n return dir;\n };\n return ngShowHeader;\n }());\n clientDirectives.ngShowHeader = ngShowHeader;\n var ngClientInfoMessageService = (function () {\n function ngClientInfoMessageService($http, $modal, $window) {\n this.$http = $http;\n this.$modal = $modal;\n this.$window = $window;\n }\n ngClientInfoMessageService.prototype.showInfoMessage = function () {\n var _this = this;\n this.$http.get(\"/process/helper/get-client-notification\").then(function (result) {\n var showMessage = result.data.ShowMessage;\n var messageBody = result.data.MessageBody;\n var messageShown = _this.$window.sessionStorage.getItem(\"clientInfoMessageShown\") === \"true\";\n if (showMessage && !messageShown) {\n var modalInstance = _this.$modal.open({\n animation: true,\n templateUrl: 'clientInfoMessageTemplate',\n controller: 'ClientInfoMessageCtrl',\n resolve: {\n infoMessage: function () {\n return messageBody;\n }\n }\n });\n modalInstance.result.then(function () { return _; }, function () {\n _this.$window.sessionStorage.setItem(\"clientInfoMessageShown\", true);\n });\n }\n });\n };\n ngClientInfoMessageService.$inject = ['$http', '$modal', '$window'];\n return ngClientInfoMessageService;\n }());\n clientDirectives.ngClientInfoMessageService = ngClientInfoMessageService;\n var ClientInfoMessageDirective = (function () {\n function ClientInfoMessageDirective(ngClientInfoMessageService) {\n this.ngClientInfoMessageService = ngClientInfoMessageService;\n this.restrict = \"E\";\n this.template = \"\";\n ngClientInfoMessageService.showInfoMessage();\n }\n ;\n ClientInfoMessageDirective.Factory = function () {\n var dir = function (ngClientInfoMessageService) { return new ClientInfoMessageDirective(ngClientInfoMessageService); };\n dir['$inject'] = ['ngClientInfoMessageService'];\n return dir;\n };\n return ClientInfoMessageDirective;\n }());\n clientDirectives.ClientInfoMessageDirective = ClientInfoMessageDirective;\n var ClientInfoMessageCtrl = (function () {\n function ClientInfoMessageCtrl($scope, $modalInstance, infoMessage) {\n this.$scope = $scope;\n this.$modalInstance = $modalInstance;\n this.infoMessage = infoMessage;\n $scope.infoMessage = infoMessage;\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n }\n ClientInfoMessageCtrl.$inject = ['$scope', '$modalInstance', 'infoMessage'];\n return ClientInfoMessageCtrl;\n }());\n clientDirectives.ClientInfoMessageCtrl = ClientInfoMessageCtrl;\n})(clientDirectives || (clientDirectives = {}));\n"]}