{"version":3,"sources":["controllers.js"],"names":["MainCtrl","$rootScope","$scope","$http","OfferCtrl","$modal","$log","$location","toaster","data","addons2","addons3","updateInProgress","updateOffer","item","Request","FullRecalculation","angular","forEach","AdditionalProducts","i","ProductId","Accepted","post","then","d","Result","e","pop","backToShop","partner","AskForResignReason","modalInstance","open","animation","templateUrl","controller","result","clientResign","top","location","href","ClientGoBackUrl","info","Date","confirmOffer","AggragatedCalulationId","getTermsForItem","fItem","_","find","captcha","setCaptcha","token","reload","NIP","setNIP","id","nip","tosTextModalCtrl","$modalInstance","ok","close","cancel","dismiss","ResignReasonModalInstanceCtrl","Reason","SelectPaymentChannelCtrl","filterFilter","ConstPaymentChannels","name","logo","website","websiste","checkIfFastTransfer","channel","PaymentChannels","some","elem","index","array","is_disabled","is_blocked_by_seller","goToPayment","console","log","payerId","paymentType","encodeURIComponent","scope","resolve","payerName","paymentAccountNumber","paymentAccountBankName","paymentInvoiceNumber","s","showSummary","get","paymentChannels","JSON","parse","group","goToBankWebsiteModalCtrl","sendEmailWithInstructions","OfferClientDataCtrl","$window","isFormValidated","isVerified","back","save","SaveDataPostAction","FormRequest","saveAndGoBack","saveData","verify","goToLeaselink","goToLeaselinkWithSave","verifyAndGoToPrepaidPayment","isFormInvalid","nextButtonClicked","IsValidationError","goToPrepaidPayment","addOwner","deleteOwner","idx","isRequestorLegalFormCompany","requestor","Requestors","RequestorLegalForm","includes","blockFieldWhenReceivedFromRegister","field","legalForm","blockPeselFromRegister","pesel","KRSData","Found","isRequestorLegalFormSoleTrader","addRepresentative","deleteRepresentative","onRequestorLegalFormChanged","prepareRequestorPeople","legalForms","hasRepresentative","canAddRepresentative","indexOf","hasOwners","canAddOwners","onRequestorIdentificationNumber1Changed","sendMessageToLeaseLink","$broadcast","RequestId","addInvoice","ProcessTypeName","checkboxModel","value1","checkAll","requestorData","debug","agree1","agree2","agree3","agree4","agree5","agree6","agree7","agree8","agree0","isCollapsed","value2","value3","value4","value5","value6","value7","value8","copyAddress","sameAddress","RequestorOwners","copy","SettleAddress","RepresentativeAddress","chooseRepresentatives","krs","RegisterNumer","IdentificationNumber1","rejestr","RegisterType","registerDataPendingModalInstance","KRSReport","RaportDate","Representation","SposobReprezentacji","getG2IData","c","length","Wlasciciele","_person","person","FirstName","Imie","LastName","Nazwisko","PESEL","Function","Funkcja","Type","Typ","RequestorRepresentatives","Reprezentanci","$watch","verifyClient","RedirectUrl","openTosModal","response","legalConditionsHTML","template","reason","error","getExtracts","BankExtracts","addExtracts","showExtract","window","FileId","OfferInnerCommunicationCtrl","FileUploader","switchTopicId","topicMsgsToShow","dataForNewMessage","MsgText","InnerCommunicationTopics","getTopics","Topics","UnreadMessages","InnerCommunicationTopic","Messages","getTopic","topicId","addTopic","parms","_parms","dataForNewTopic","TopicName","MessageText","Action","url","uploader","onErrorItem","fileItem","status","headers","onSuccessItem","complete","onCompleteItem","onBeforeUploadItem","formData","paramsForTopic","method","topicText","messageText","push","msgId","uploadAll","callBack","addTopicToClient","showMsgs","size","showDocument","fileId","addNewMessage","TopicId","goToMsgsViewSwitch","backToTopicViewSwitch","showRequest","$$listeners","$on","addOfferDocument","pathname","AddNewMessageCtrl","action","SaveDataModalInstanceCtrl","dataForSaving","PaymentCtrl","paymentError","sendAndBackToShop","FileUploadCtrl","documentTypes","num","selectedDocumentType","addType","agreementType","ExtractUploadCtrl","ClientLoginCtrl","$cookies","user","login","password","requestId","generatePIN","Status","localStorage","setItem","Token","ClientRequestCtrl","CurrentView","Process","DocumentCounter","operData","Site","Documents","_docs","where","Confirmed","hideDeleteDocument","Data","Partner","OperData","confirmDocument","params","_params","fileIds","confirm","confirmAllDocuments","noConfirm","doc","doProcess","addDocuments","goToInitialPayment","goToSelectPaymentChannel","o","n","paymentinprogress","doNotAcceptTerms","accepAllAndSendNotification","sendInitialPayment","RedirectURL","accepAllAndPay","RequestorAddresses","TypeOfDelivery","RequestorDeliveryAddress","ClientCollectData","TypeOfItemCollect","BlockItemCollectByExternalBody","RequestorCollectAddress","AllowClientSelfCollectItem","RequestorSelfCollectAddress","checkIfCanGenerateNewAgreement","AgreementDocumentType","GenerateNewAgreement","dd","confirmDocumentWithNoReaload","serviceFound","hasService","RequestItems","filter","ProductTypeName","refreshTopics","onSaveRequestData","request","addTopicCtrl","sizeLimitExceeded","queue","obj","file","addTopicToClientCtrl","SubmitOfferDocumentCtrl","MsgFilesUploadCtrl","DateCtrl","date","year","defaultYear","getFullYear","years","lastMonth","getMonth","months","ChooseRepresentativesCtrl","choosenPersons","personsToChooseList","SystemType","Role","IdentificationDocumentType","StreetPrefix","Country","this","___found","isChecked","isInPersonsArray","arr","found","selectItem","splice","updatePersonData","RepresentativesChosen","_RequestorOwners","_RequestorRepresentatives","currentItem","ClientInfoMessageCtrl","infoMessage","OfferDeniedCtrl","Renew","mailLink"],"mappings":"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","file":"controllers.min.js","sourcesContent":["'use strict';\r\n\r\n/* kontroleg glowny */\r\nvar MainCtrl = function ($rootScope, $scope, $http) {\r\n};\r\n\r\n\r\n/* oferta klienta - podglad */\r\nvar OfferCtrl = function ($rootScope, $scope, $modal, $log, $location, $http, toaster) {\r\n $scope.data = {};\r\n $scope.addons2 = [];\r\n $scope.addons3 = [];\r\n\r\n // zmiany na obiektach\r\n $scope.updateInProgress = false;\r\n $scope.updateOffer = function (item) {\r\n $scope.updateInProgress = true;\r\n\r\n //wylaczenie rekalkulacji\r\n $scope.data.Request.FullRecalculation = false;\r\n\r\n // akualizacja zmian\r\n angular.forEach($scope.data.Request.AdditionalProducts, function (i) {\r\n if (i.ProductId == item.ProductId) {\r\n i.Accepted = item.Accepted;\r\n }\r\n });\r\n\r\n $http.post(\"/api/OfferForClient\", $scope.data.Request).then(function (d) {\r\n $scope.data = d.data.Result;\r\n $scope.updateInProgress = false;\r\n }, function (e) {\r\n toaster.pop('error', \"Przeliczenie oferty\", \"Przeliczenie oferty nie powiodło się\");\r\n $scope.updateInProgress = false;\r\n });\r\n };\r\n\r\n // powrot do sklepu\r\n $scope.backToShop = function () {\r\n //console.log($scope.data.Request.ClientGoBackUrl);\r\n if ($scope.partner && $scope.partner.AskForResignReason === true) {\r\n // pokazanie modala\r\n var modalInstance = $modal.open({\r\n animation: true,\r\n templateUrl: '/WWW/partials/resignReasonModal.html',\r\n controller: 'ResignReasonModalInstanceCtrl'\r\n });\r\n\r\n // jak OK\r\n modalInstance.result.then(function (clientResign) {\r\n top.location.href = $scope.ClientGoBackUrl;\r\n }, function () {\r\n $log.info('Modal dismissed at: ' + new Date());\r\n });\r\n } else {\r\n top.location.href = $scope.ClientGoBackUrl;\r\n }\r\n };\r\n\r\n // zatwierdzenie przeliczonej oferty\r\n $scope.confirmOffer = function () {\r\n top.location.href = \"/process/client.data.leasing/\" + $scope.data.AggragatedCalulationId;\r\n };\r\n\r\n\r\n // pobranie informacji z zapytania dla\r\n $scope.getTermsForItem = function (item) {\r\n var fItem = _.find($scope.data.Request.AdditionalProducts, {\r\n ProductId: item.ProductId\r\n }) || {};\r\n return fItem;\r\n }\r\n\r\n // wyslanie\r\n $scope.captcha = \"\";\r\n $scope.setCaptcha = function (captcha) {\r\n $http.post(\"/offer/SetRegonCaptcha\", { token: captcha }).then(\r\n function (d) {\r\n // jezeli wszystko ok to pusczenie funkcji jeszcze raz\r\n top.location.reload();\r\n },\r\n function (e) {\r\n toaster.pop('error', \"Pobieranie oferty\", \"Wystąpił błąd podczas przysłania kodu captcha.\");\r\n top.location.reload();\r\n });\r\n };\r\n\r\n // ustawienie nip\r\n $scope.NIP = \"\";\r\n $scope.setNIP = function (NIP) {\r\n $http.post(\"/process/enter.nip/\" + $scope.data.AggragatedCalulationId, { id: $scope.data.AggragatedCalulationId, nip: NIP }).then(\r\n function (d) {\r\n top.location.reload();\r\n },\r\n function (e) {\r\n toaster.pop('error', \"Pobieranie oferty\", \"Wystąpił błąd podczas kalkulacji.\");\r\n top.location.reload();\r\n });\r\n };\r\n\r\n\r\n\r\n\r\n};\r\n\r\n/* modal z regulaminem */\r\nvar tosTextModalCtrl = function ($scope, $modalInstance) {\r\n $scope.ok = function () {\r\n $modalInstance.close('tos ok');\r\n };\r\n\r\n $scope.cancel = function () {\r\n $modalInstance.dismiss('tos not ok');\r\n };\r\n};\r\n\r\n/* info o rezygnacji */\r\nvar ResignReasonModalInstanceCtrl = function ($scope, $modalInstance) {\r\n // powod rezygnacji\r\n $scope.clientResign = {\r\n Reason: \"\"\r\n };\r\n\r\n $scope.ok = function () {\r\n $modalInstance.close($scope.clientResign);\r\n };\r\n\r\n $scope.cancel = function () {\r\n $modalInstance.dismiss('cancel');\r\n };\r\n};\r\n\r\nvar SelectPaymentChannelCtrl = function ($scope, $location, $http, $modal, filterFilter, toaster) {\r\n $scope.ConstPaymentChannels = [{\r\n id: 1,\r\n name: \"mTransfer\",\r\n logo: \"/WWW/img/banks-logos/01-mBank.png\",\r\n website: \"https://www.mbank.pl/\"\r\n },\r\n {\r\n id: 2,\r\n name: \"Płacę z Inteligo\",\r\n logo: \"/WWW/img/banks-logos/02-Inteligo.png\",\r\n websiste: \"http://inteligo.pl/\"\r\n },\r\n {\r\n id: 4,\r\n name: \"Płacę z iPKO\",\r\n logo: \"/WWW/img/banks-logos/04-PKO-BP.png\",\r\n website: \"https://www.ipko.pl/\"\r\n },\r\n {\r\n id: 6,\r\n name: \"Przelew24\",\r\n logo: \"/WWW/img/banks-logos/06-Zachodni-WBK.png\",\r\n website: \"https://www.bzwbk.pl/\"\r\n },\r\n {\r\n id: 7,\r\n name: \"ING Klienci korporacyjni\",\r\n logo: \"/WWW/img/banks-logos/07-ING-Korp.png\",\r\n website: \"http://www.ingbank.pl/korporacje\"\r\n },\r\n {\r\n id: 10,\r\n name: \"Millennium Klienci korporacyjni\",\r\n logo: \"/WWW/img/banks-logos/10-Millennium-Korp.png\",\r\n website: \"https://www.bankmillennium.pl/przedsiebiorstwa\"\r\n },\r\n {\r\n id: 18,\r\n name: \"Przelew z BPH\",\r\n logo: \"/WWW/img/banks-logos/18-BPH.png\",\r\n website: \"http://www.bph.pl/\"\r\n },\r\n {\r\n id: 27,\r\n name: \"BGŻ\",\r\n logo: \"/WWW/img/banks-logos/27-BGZ.png\",\r\n website: \"http://www.bgzbnpparibas.pl/\"\r\n },\r\n {\r\n id: 32,\r\n name: \"BNP Paribas\",\r\n logo: \"/WWW/img/banks-logos/32-BNP-Paribas.png\",\r\n website: \"http://www.bgzbnpparibas.pl/\"\r\n },\r\n {\r\n id: 33,\r\n name: \"Volkswagen Bank\",\r\n logo: \"/WWW/img/banks-logos/33-VW-Przelew.png\",\r\n website: \"http://www.vwbank.pl/\"\r\n },\r\n {\r\n id: 36,\r\n name: \"Pekao24Przelew\",\r\n logo: \"/WWW/img/banks-logos/36-PEKAO.png\",\r\n website: \"https://www.pekao.com.pl/\"\r\n },\r\n {\r\n id: 38,\r\n name: \"Płać z ING\",\r\n logo: \"/WWW/img/banks-logos/38-ING-BS.png\",\r\n website: \"http://www.ingbank.pl/\"\r\n },\r\n {\r\n id: 44,\r\n name: \"Millennium - Płatności Internetowe\",\r\n logo: \"/WWW/img/banks-logos/44-Millennium.png\",\r\n website: \"https://www.bankmillennium.pl/\"\r\n },\r\n {\r\n id: 45,\r\n name: \"Płacę z Alior Bankiem\",\r\n logo: \"/WWW/img/banks-logos/45-Alior.png\",\r\n website: \"https://www.aliorbank.pl/\"\r\n },\r\n {\r\n id: 46,\r\n name: \"Płacę z Citi Handlowy\",\r\n logo: \"/WWW/img/banks-logos/46-Citi-BH.png\",\r\n website: \"http://www.citibank.pl/\"\r\n },\r\n {\r\n id: 48,\r\n name: \"R-Przelew\",\r\n logo: \"/WWW/img/banks-logos/48-Raiffeisen.png\",\r\n website: \"http://raiffeisenpolbank.com/\"\r\n },\r\n {\r\n id: 50,\r\n name: \"Pay Way Toyota Bank\",\r\n logo: \"/WWW/img/banks-logos/50-Toyota.png\",\r\n website: \"https://www.toyotabank.pl/\"\r\n },\r\n {\r\n id: 51,\r\n name: \"Płać z BOŚ\",\r\n logo: \"/WWW/img/banks-logos/51-BOS.png\",\r\n website: \"https://www.bosbank.pl/\"\r\n },\r\n {\r\n id: 56,\r\n name: \"eurobank - płatność online\",\r\n logo: \"/WWW/img/banks-logos/56-Eurobank.png\",\r\n website: \"https://www.eurobank.pl/\"\r\n },\r\n {\r\n id: 58,\r\n name: \"Szybkie Płatności Internetowe z Deutsche Bank PBC\",\r\n logo: \"/WWW/img/banks-logos/58-Deutsche.png\",\r\n website: \"https://www.deutschebank.pl/\"\r\n },\r\n {\r\n id: 60,\r\n name: \"Płacę z T-Mobile Usługi Bankowe\",\r\n logo: \"/WWW/img/banks-logos/60-Alior-Oddzial-T-Mobile.png\",\r\n website: \"https://www.t-mobilebankowe.pl/\"\r\n },\r\n {\r\n id: 63,\r\n name: \"Płacę z IKO\",\r\n logo: \"/WWW/img/banks-logos/63-PKO-BP-IKO.png\",\r\n website: \"http://iko.pkobp.pl/\"\r\n },\r\n {\r\n id: 65,\r\n name: \"Płacę z Idea Bank\",\r\n logo: \"/WWW/img/banks-logos/65-Idea.png\",\r\n website: \"https://www.ideabank.pl/\"\r\n },\r\n {\r\n id: 66,\r\n name: \"Płacę z PBS\",\r\n logo: \"/WWW/img/banks-logos/66-Podkarpacki-BS.png\",\r\n website: \"https://www.pbsbank.pl/\"\r\n },\r\n {\r\n id: 70,\r\n name: \"Pocztowy24\",\r\n logo: \"/WWW/img/banks-logos/70-Pocztowy24.png\",\r\n website: \"https://www.pocztowy.pl/\"\r\n },\r\n //{\r\n // id: 71,\r\n // name: \"MasterPass\",\r\n // logo: \"/WWW/img/banks-logos/71-Master-Pass.png\",\r\n // website: \"\"\r\n //},\r\n {\r\n id: 72,\r\n name: \"Płacę z Orange\",\r\n logo: \"/WWW/img/banks-logos/72-mBank-Orange.png\",\r\n website: \"http://www.orange.pl/place_z_orange.phtml\"\r\n },\r\n //{\r\n // id: 73,\r\n // name: \"BLIK\",\r\n // logo: \"/WWW/img/banks-logos/73-BLIK.jpg\",\r\n // website: \"\"\r\n //},\r\n {\r\n id: 74,\r\n name: \"Banki Spółdzielcze\",\r\n logo: \"/WWW/img/banks-logos/74-Krajowa-Izba-Rozliczeniowa.png\",\r\n website: \"http://www.bankbps.pl/\"\r\n },\r\n {\r\n id: 75,\r\n name: \"Płacę z Plus Bank\",\r\n logo: \"/WWW/img/banks-logos/75-Plus-Bank.png\",\r\n website: \"https://plusbank.pl/\"\r\n },\r\n {\r\n id: 76,\r\n name: \"Getin Bank PBL\",\r\n logo: \"/WWW/img/banks-logos/76-Getin.png\",\r\n website: \"https://www.getinbank.pl/\"\r\n },\r\n {\r\n id: 80,\r\n name: \"Noble Pay\",\r\n logo: \"/WWW/img/banks-logos/80-Noble.png\",\r\n website: \"http://noblebank.pl/\"\r\n },\r\n {\r\n id: 81,\r\n name: \"Idea Cloud\",\r\n logo: \"/WWW/img/banks-logos/81-Idea-Cloud.png\",\r\n website: \"https://sso.cloud.ideabank.pl/\"\r\n },\r\n //{\r\n // id: 84,\r\n // name: \"Volkswagen Bank direct\",\r\n // logo: \"/WWW/img/banks-logos/84-VW.png\",\r\n // website: \"\"\r\n //},\r\n //{\r\n // id: 86,\r\n // name: \"TrustPay\",\r\n // logo: \"/WWW/img/banks-logos/86-Trust-Pay.png\",\r\n // website: \"\"\r\n //},\r\n {\r\n id: 87,\r\n name: \"Credit Agricole PBL\",\r\n logo: \"/WWW/img/banks-logos/87-Credit-Agricole.png\",\r\n website: \"https://www.credit-agricole.pl/\"\r\n },\r\n {\r\n id: 212,\r\n name: \"PayPal\",\r\n logo: \"/WWW/img/banks-logos/212-Paypal.png\",\r\n website: \"https://www.paypal.com/\"\r\n },\r\n //{\r\n // id: 248,\r\n // name: \"Karty płatnicze\",\r\n // logo: \"/WWW/img/banks-logos/246-248-Visa-MasterCard.png\",\r\n // website: \"\"\r\n //}\r\n {\r\n id: -10,\r\n name: \"Inne\",\r\n logo: \"/WWW/img/banks-logos/other.png\"\r\n }\r\n ];\r\n\r\n // funkcja sprawdzająca czy dany kanał z ConstPaymentChannels jest dla nas dostępny i nie zdezaktywowany\r\n $scope.checkIfFastTransfer = function (channel) {\r\n return $scope.PaymentChannels &&\r\n $scope.PaymentChannels.some(function (elem, index, array) {\r\n return elem.id == channel.id && !elem.is_disabled && !elem.is_blocked_by_seller;\r\n });\r\n };\r\n\r\n $scope.goToPayment = function (channel) {\r\n if ($scope.PaymentChannels) {\r\n if ($scope.checkIfFastTransfer(channel)) {\r\n console.log($scope.payerId);\r\n if ($scope.paymentType == \"prepaid\" || $scope.paymentType == \"initial\") {\r\n top.location.href = \"/payment/RedirectToCorrectPaymentMethodByPaymentType?paymentType=\" + $scope.paymentType + \"&payer=\" + encodeURIComponent($scope.payerId) + \"&id=\" + encodeURIComponent($scope.AggragatedCalulationId) + \"&channelId=\" + encodeURIComponent(channel.id) + \"&selfService=false\";\r\n } else {\r\n toaster.pop('error', \"Wybór banku\", \"Pobieranie danych o typie płatności nie powiodło się.\");\r\n }\r\n\r\n } else {\r\n var modalInstance = $modal.open({\r\n animation: true,\r\n templateUrl: '/WWW/partials/goToBankWebsiteModal.html',\r\n controller: 'goToBankWebsiteModalCtrl',\r\n scope: $scope,\r\n resolve: {\r\n channel: function () {\r\n return channel;\r\n },\r\n payerName: function () {\r\n return $scope.payerName || \"\";\r\n },\r\n paymentAccountNumber: function () {\r\n return $scope.paymentAccountNumber || \"\";\r\n },\r\n paymentAccountBankName: function () {\r\n return $scope.paymentAccountBankName || \"\";\r\n },\r\n paymentInvoiceNumber: function () {\r\n return $scope.paymentInvoiceNumber || \"\";\r\n }\r\n }\r\n });\r\n\r\n modalInstance.result.then(function (s) {\r\n if (s === 'mailSent') {\r\n $scope.showSummary = true;\r\n }\r\n }, function (e) {\r\n\r\n });\r\n }\r\n }\r\n };\r\n\r\n // pobranie dostępnych kanałów płatności\r\n $http.get(\"/Payment/GetPaymentChannels\").then(function (s) {\r\n var paymentChannels = JSON.parse(s.data);\r\n // wybranie tylko szybkich przelewów online\r\n $scope.PaymentChannels = filterFilter(paymentChannels, function (channel) {\r\n return channel.group === \"fast_transfers\";\r\n });\r\n });\r\n\r\n};\r\n\r\nvar goToBankWebsiteModalCtrl = function ($scope, $http, $modalInstance, channel, payerName, paymentAccountNumber, paymentAccountBankName, paymentInvoiceNumber) {\r\n $scope.channel = channel;\r\n $scope.payerName = payerName;\r\n $scope.paymentAccountNumber = paymentAccountNumber;\r\n $scope.paymentAccountBankName = paymentAccountBankName;\r\n $scope.paymentInvoiceNumber = paymentInvoiceNumber;\r\n\r\n // wysłanie maila z instrukcjami\r\n $scope.sendEmailWithInstructions = function () {\r\n $http.post('/Payment/SendEmailWithInstructions', { id: $scope.AggragatedCalulationId, website: $scope.channel.website, payerId: $scope.payerId }).then(function (s) {\r\n $modalInstance.close('mailSent');\r\n });\r\n };\r\n\r\n $scope.cancel = function () {\r\n $modalInstance.dismiss('cancel');\r\n };\r\n};\r\n\r\n/* dane klienta */\r\nvar OfferClientDataCtrl = function ($rootScope, $scope, $modal, $log, $location, $http, toaster, $window) {\r\n\r\n $scope.updateInProgress = false;\r\n $scope.isFormValidated = false;\r\n $scope.isVerified = false;\r\n\r\n\r\n // cofniecie sie\r\n $scope.back = function () {\r\n top.location.href = \"/process/choose.offer/\" + $scope.data.AggragatedCalulationId;\r\n };\r\n\r\n\r\n\r\n\r\n $scope.save = function () {\r\n $scope.isFormValidated = false;\r\n $scope.updateInProgress = false;\r\n\r\n $scope.data.Request.SaveDataPostAction = 'send';\r\n\r\n // zapisanie\r\n $http.post(\"/process/client.data.leasing/save\", $scope.data).then(function (d) {\r\n toaster.pop('success', \"Zapisywanie danych\", \"Zapisywanie danych w repozytorium powiodło się\");\r\n\r\n // przepisanie danych\r\n $scope.data = d.data;\r\n $scope.FormRequest = d.data.Request;\r\n\r\n $scope.updateInProgress = false;\r\n\r\n }, function (e) {\r\n toaster.pop('error', \"Zapisywanie danych\", \"Zapisywanie danych w repozytorium nie powiodło się\");\r\n $scope.updateInProgress = false;\r\n });\r\n\r\n //top.location.href = \"/client/service/login/\" + $scope.data.AggragatedCalulationId;\r\n }\r\n\r\n $scope.saveAndGoBack = function () {\r\n $scope.isFormValidated = false;\r\n $scope.updateInProgress = false;\r\n\r\n $scope.data.Request.SaveDataPostAction = 'withoutsend';\r\n\r\n // zapisanie\r\n $http.post(\"/process/client.data.leasing/save\", $scope.data).then(function (d) {\r\n toaster.pop('success', \"Zapisywanie danych\", \"Zapisywanie danych w repozytorium powiodło się\");\r\n\r\n // przepisanie danych\r\n $scope.data = d.data;\r\n $scope.FormRequest = d.data.Request;\r\n\r\n $scope.updateInProgress = false;\r\n\r\n // powrót do wybieraka jak zapis ok\r\n top.location.href = \"/process/choose.offer/\" + $scope.data.AggragatedCalulationId;\r\n\r\n }, function (e) {\r\n toaster.pop('error', \"Zapisywanie danych\", \"Zapisywanie danych w repozytorium nie powiodło się\");\r\n $scope.updateInProgress = false;\r\n });\r\n }\r\n\r\n // zapisanie danych do umowy\r\n $scope.saveData = function () {\r\n $scope.isFormValidated = false;\r\n $scope.updateInProgress = false;\r\n // zapisanie\r\n $http.post(\"/process/client.data.leasing/save\", $scope.data).then(function (d) {\r\n toaster.pop('success', \"Zapisywanie danych\", \"Zapisywanie danych w repozytorium powiodło się\");\r\n\r\n // przepisanie danych\r\n $scope.data = d.data;\r\n\r\n $scope.updateInProgress = false\r\n }, function (e) {\r\n toaster.pop('error', \"Zapisywanie danych\", \"Zapisywanie danych w repozytorium nie powiodło się\");\r\n $scope.updateInProgress = false;\r\n })\r\n };\r\n\r\n // weryfikacja\r\n $scope.verify = function () {\r\n $scope.isFormValidated = true;\r\n toaster.pop('info', \"Uwaga\", \"Trwa sprawdzane danych w systemach zewnętrznych, co może potrwać kilka sekund\");\r\n $http.post(\"/process/client.data.leasing/verify\", $scope.data).then(function (d) {\r\n toaster.pop('success', \"Weryfikacja danych\", \"Weryfikacja danych przebiegła poprawnie.\");\r\n $scope.updateInProgress = false;\r\n $scope.isVerified = true;\r\n\r\n }, function (e) {\r\n toaster.pop('error', \"Weryfikacja danych\", \"Weryfikacja danych nie przebiegła poprawnie.\");\r\n $scope.updateInProgress = false;\r\n $scope.isFormValidated = false;\r\n });\r\n\r\n };\r\n\r\n\r\n // przejscie do LL\r\n $scope.goToLeaselink = function () {\r\n top.location.href = \"https://www.leaselink.pl\";\r\n };\r\n\r\n // przejscie do LL z zapisem\r\n $scope.goToLeaselinkWithSave = function () {\r\n\r\n $scope.isFormValidated = false;\r\n $scope.updateInProgress = false;\r\n\r\n $scope.data.Request.SaveDataPostAction = 'withoutSend';\r\n\r\n // zapisanie\r\n $http.post(\"/process/client.data.leasing/save\", $scope.data).then(function (d) {\r\n\r\n // przepisanie danych\r\n $scope.data = d.data;\r\n $scope.FormRequest = d.data.Request;\r\n\r\n $scope.updateInProgress = false;\r\n\r\n // przekierowanie\r\n top.location.href = \"https://www.leaselink.pl\";\r\n\r\n }, function (e) {\r\n toaster.pop('error', \"Zapisywanie danych\", \"Zapisywanie danych w repozytorium nie powiodło się\");\r\n $scope.updateInProgress = false;\r\n });\r\n\r\n };\r\n\r\n\r\n // weryfikacja i przejscie do platnosci\r\n $scope.verifyAndGoToPrepaidPayment = function (isFormInvalid) {\r\n $scope.nextButtonClicked = true;\r\n\r\n if (!isFormInvalid) {\r\n $scope.isFormValidated = true;\r\n $http.post(\"/process/client.data.leasing/verify\", $scope.data).then(function (d) {\r\n $scope.updateInProgress = false;\r\n $scope.isVerified = true;\r\n //toaster.pop('success', 'Płatności', 'Przechodzenie do opłaty weryfikacyjnej.');\r\n top.location.href = \"/process/choose.payment.channel/\" + $scope.data.AggragatedCalulationId;\r\n }, function (e) {\r\n if (e.data.IsValidationError)\r\n toaster.pop('error', \"Formularz\", \"Prosimy o uzupełnienie brakujących danych.\");\r\n else\r\n toaster.pop('error', \"Płatności\", \"Przejście do opłaty weryfikacyjnej nie powiodło się.\");\r\n $scope.updateInProgress = false;\r\n $scope.isFormValidated = false;\r\n });\r\n } else {\r\n //toaster.pop('error', \"Formularz\", \"Prosimy o uzupełnienie brakujących danych.\");\r\n }\r\n };\r\n\r\n // przejscie do platnosci\r\n $scope.goToPrepaidPayment = function () {\r\n top.location.href = \"/payment/RedirectToPrepaidPayment/\" + $scope.data.AggragatedCalulationId;\r\n\r\n };\r\n\r\n // wlascicele\r\n $scope.addOwner = function () {\r\n $rootScope.addOwner($scope.data.Request);\r\n };\r\n $scope.deleteOwner = function (idx) {\r\n $rootScope.deleteOwner($scope.data.Request, idx);\r\n };\r\n\r\n $scope.isRequestorLegalFormCompany = function () {\r\n var requestor = $scope.FormRequest.Requestors[0];\r\n return requestor && requestor.RequestorLegalForm && requestor.RequestorLegalForm.includes('spółka');\r\n }\r\n\r\n // jeżeli to spółka to blokujemy pole, no chyba, że to spółka cywilna to odblokowujemy te pola których nie ma - LL-1981\r\n $scope.blockFieldWhenReceivedFromRegister = function (field) {\r\n\r\n // pobranie formy\r\n var legalForm = $scope.FormRequest.Requestors[0].RequestorLegalForm;\r\n // jeżeli spółka to blokujemy forma\r\n if (legalForm.includes('spółka')) {\r\n // jeżeli cywilna i nie ma danych to unblock\r\n if (legalForm.includes('spółka cywilna')) return (field != null);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n $scope.blockPeselFromRegister = function (pesel) {\r\n // jeżeli pobrany jest numer pesel, a dane pobrane są z krsu to blokujemy pole\r\n if (pesel && $scope.KRSData && $scope.KRSData.Found) {\r\n return true;\r\n }\r\n else return false;\r\n }\r\n\r\n $scope.isRequestorLegalFormSoleTrader = function () {\r\n var requestor = $scope.FormRequest.Requestors[0];\r\n return requestor && requestor.RequestorLegalForm && requestor.RequestorLegalForm === 'działalność jednoosobowa';\r\n }\r\n\r\n // reprezentaci\r\n $scope.addRepresentative = function () {\r\n $rootScope.addRepresentative($scope.data.Request);\r\n };\r\n $scope.deleteRepresentative = function (idx) {\r\n $rootScope.deleteRepresentative($scope.data.Request, idx);\r\n };\r\n\r\n // logika obslugi formy prawnej\r\n $scope.onRequestorLegalFormChanged = function () {\r\n $rootScope.prepareRequestorPeople($scope.data.Request);\r\n };\r\n\r\n $scope.legalForms = ['działalność jednoosobowa', 'spółka jawna', 'spółka cywilna', 'spółka z ograniczoną odpowiedzialnością', 'spółka akcyjna', 'spółka partnerska', 'spółka komandytowa', 'spółka komandytowo-akcyjna', 'fundacja', 'stowarzyszenie', 'spółdzielnia', 'przedsiębiorstwo państwowe'];\r\n\r\n // sprawdzenie czy mozna reprezentatnow\r\n $scope.hasRepresentative = function () {\r\n return $rootScope.hasRepresentative($scope.data.Request.Requestors[0]);\r\n };\r\n $scope.canAddRepresentative = function () {\r\n return ([/*'spółka z ograniczoną odpowiedzialnością', 'spółka akcyjna', 'spółka partnerska', 'spółka komandytowa', 'spółka komandytowo-akcyjna', */'fundacja', 'stowarzyszenie', 'spółdzielnia', 'przedsiębiorstwo państwowe'].indexOf($scope.data.Request.Requestors[0].RequestorLegalForm) !== -1);\r\n };\r\n\r\n // sprawdzenie czy mozna wlascicieli\r\n $scope.hasOwners = function () {\r\n return $rootScope.hasOwners($scope.data.Request.Requestors[0]);\r\n };\r\n $scope.canAddOwners = function () {\r\n return (['spółka jawna', 'spółka cywilna', 'spółka partnerska', 'spółka komandytowa', 'spółka komandytowo-akcyjna'].indexOf($scope.data.Request.Requestors[0].RequestorLegalForm) !== -1);\r\n };\r\n\r\n\r\n // sprawdzenie przez nip\r\n $scope.onRequestorIdentificationNumber1Changed = function () {\r\n\r\n };\r\n\r\n // wyslanie wiadomosci\r\n $scope.sendMessageToLeaseLink = function () {\r\n $rootScope.$broadcast(\"send::messageToLeaselink\", { RequestId: $scope.data.AggragatedCalulationId });\r\n };\r\n\r\n // wysłanie faktury\r\n $scope.addInvoice = function () {\r\n $rootScope.$broadcast('send::OfferDocument', { RequestId: $scope.data.AggragatedCalulationId, ProcessTypeName: $scope.data.ProcessTypeName });\r\n };\r\n //checkbox selectall\r\n $scope.checkboxModel = {\r\n value1: false\r\n };\r\n\r\n //zmiana akceptacji zgód na zgodne z checbox selectall\r\n $scope.checkAll = function () {\r\n var requestorData = $scope.data.Request.Requestors[0];\r\n console.debug($scope.checkboxModel, requestorData);\r\n $scope.checkboxModel.value1 = ($scope.checkboxModel.value1 !== true && $scope.checkboxModel.value1 !== false) ? true : $scope.checkboxModel.value1;\r\n requestorData.agree1 = $scope.checkboxModel.value1;\r\n requestorData.agree2 = $scope.checkboxModel.value1;\r\n requestorData.agree3 = $scope.checkboxModel.value1;\r\n requestorData.agree4 = $scope.checkboxModel.value1;\r\n requestorData.agree5 = $scope.checkboxModel.value1;\r\n requestorData.agree6 = $scope.checkboxModel.value1;\r\n requestorData.agree7 = $scope.checkboxModel.value1;\r\n requestorData.agree8 = $scope.checkboxModel.value1;\r\n requestorData.agree0 = $scope.checkboxModel.value1;\r\n };\r\n\r\n //treści zgód są na początku zwinięte\r\n $scope.isCollapsed = {\r\n value1: true,\r\n value2: true,\r\n value3: true,\r\n value4: true,\r\n value5: true,\r\n value6: true,\r\n value7: true,\r\n value8: true\r\n };\r\n\r\n //kopiowanie danych adresowych siedziby firmy do miejsca zamieszkania, dla działalności jednoosobowej\r\n $scope.copyAddress = function () {\r\n if ($scope.data.Request.Requestors[0].sameAddress == true) {\r\n var requestorData = $scope.data.Request.Requestors[0];\r\n var requestorOwner = $scope.data.Request.RequestorOwners[0];\r\n angular.copy(requestorData.SettleAddress, $scope.data.Request.RequestorOwners[0].RepresentativeAddress);\r\n }\r\n };\r\n\r\n $scope.chooseRepresentatives = function () {\r\n\r\n // pobranie KRS\r\n var krs = $scope.data.Request.Requestors[0].RegisterNumer;\r\n var nip = $scope.data.Request.Requestors[0].IdentificationNumber1;\r\n var rejestr = $scope.data.Request.Requestors[0].RegisterType;\r\n\r\n if (rejestr == \"REJESTR PRZEDSIĘBIORCÓW\" && krs) {\r\n\r\n // zablokowanie wniosku do momentu pobrania pełnego raportu z g2i\r\n var registerDataPendingModalInstance = $modal.open({\r\n templateUrl: '/WWW/partials/request/registerDataPendingModal.html',\r\n controller: 'ChooseRepresentativesCtrl',\r\n scope: $scope,\r\n });\r\n\r\n $http\r\n .get(\"/process/helper/get-g2i-data/\" + $scope.data.AggragatedCalulationId + \"?nip=\" + nip)\r\n .then(function (d) {\r\n //odblokowanie formularza jak pobrane dane z g2i\r\n registerDataPendingModalInstance.dismiss('cancel');\r\n\r\n var requestor = $scope.data.Request.Requestors[0];\r\n // zapisanie informacji o raporcie\r\n requestor.KRSReport = d.data.KRSReport;\r\n requestor.KRSReport.RaportDate = new Date();\r\n\r\n // sposob reprezentacji\r\n requestor.Representation = d.data.KRSData.SposobReprezentacji;\r\n\r\n // przekazanie danych przez scope\r\n $scope.KRSData = d.data.KRSData;\r\n\r\n // otwarcie modala\r\n var modalInstance = $modal.open({\r\n templateUrl: '/WWW/partials/request/chooseRepresentativesModal.html',\r\n controller: 'ChooseRepresentativesCtrl',\r\n scope: $scope,\r\n });\r\n }, function (e) {\r\n console.log(e);\r\n toaster.pop('error', \"Raport\", \"Wystąpił błąd podczas pobierania danych. Spróbuj za chwilę.\");\r\n });\r\n }\r\n };\r\n\r\n\r\n\r\n // wyszukiwanie G2I\r\n $scope.getG2IData = function () {\r\n // pobranie KRS\r\n var krs = $scope.data.Request.Requestors[0].RegisterNumer;\r\n var nip = $scope.data.Request.Requestors[0].IdentificationNumber1;\r\n var rejestr = $scope.data.Request.Requestors[0].RegisterType;\r\n // jak krs\r\n if (rejestr == \"REJESTR PRZEDSIĘBIORCÓW\" && krs) {\r\n //console.debug(\"getG2IData\", $scope.data.Request.Requestors);\r\n $http\r\n .get(\"/process/helper/get-g2i-data/\" + $scope.data.AggragatedCalulationId + \"?nip=\" + nip)\r\n .then(function (d) {\r\n var requestor = $scope.data.Request.Requestors[0];\r\n\r\n // zapisanie informacji o raporcie\r\n requestor.KRSReport = d.data.KRSReport;\r\n requestor.KRSReport.RaportDate = new Date();\r\n\r\n // sposob reprezentacji\r\n requestor.Representation = d.data.KRSData.SposobReprezentacji;\r\n\r\n // jak jawna lub partnerska to wlaciciele\r\n if ((['spółka jawna', 'spółka partnerska'].indexOf(requestor.RequestorLegalForm) !== -1)) {\r\n // sprawdzenie ilu jest wacicieli a ilu dodanych\r\n var c = $scope.data.Request.RequestorOwners.length;\r\n c = (d.data.KRSData.Wlasciciele.length >= $scope.data.Request.RequestorOwners.length) ? d.data.KRSData.Wlasciciele.length - $scope.data.Request.RequestorOwners.length : 0;\r\n for (var i = 0; i < c; i++) {\r\n $rootScope.addOwner($scope.data.Request);\r\n }\r\n // wypelniamy danymi\r\n for (var i = 0; i < $scope.data.Request.RequestorOwners.length; i++) {\r\n var _person = d.data.KRSData.Wlasciciele[i];\r\n var person = $scope.data.Request.RequestorOwners[i];\r\n\r\n if (_person && person) {\r\n person.FirstName = (person.FirstName) ? person.FirstName : _person.Imie;\r\n person.LastName = (person.LastName) ? person.LastName : _person.Nazwisko;\r\n person.PESEL = (person.PESEL) ? person.PESEL : _person.PESEL;\r\n person.Function = (person.Function) ? person.Function : _person.Funkcja;\r\n person.Type = (person.Type) ? person.Type : _person.Typ;\r\n }\r\n }\r\n } else {\r\n // sprawdzenie ilu jest reprezentantow a ilu dodanych\r\n var c = $scope.data.Request.RequestorRepresentatives.length;\r\n c = (d.data.KRSData.Reprezentanci.length >= $scope.data.Request.RequestorRepresentatives.length) ? d.data.KRSData.Reprezentanci.length - $scope.data.Request.RequestorRepresentatives.length : 0;\r\n for (var i = 0; i < c; i++) {\r\n $rootScope.addRepresentative($scope.data.Request);\r\n }\r\n // wypelniamy danymi\r\n for (var i = 0; i < $scope.data.Request.RequestorRepresentatives.length; i++) {\r\n var _person = d.data.KRSData.Reprezentanci[i];\r\n var person = $scope.data.Request.RequestorRepresentatives[i];\r\n\r\n if (_person && person) {\r\n person.FirstName = (person.FirstName) ? person.FirstName : _person.Imie;\r\n person.LastName = (person.LastName) ? person.LastName : _person.Nazwisko;\r\n person.PESEL = (person.PESEL) ? person.PESEL : _person.PESEL;\r\n person.Function = (person.Function) ? person.Function : _person.Funkcja;\r\n person.Type = (person.Type) ? person.Type : _person.Typ;\r\n }\r\n }\r\n\r\n }\r\n // w innym przypadku reprezentanci\r\n\r\n }, function (e) {\r\n console.log(e);\r\n console.log(\"błąd\");\r\n toaster.pop('error', \"Raport G2I\", \"Wystąpił błąd podczas pobierania raportu G2I. Spróbuj za chwilę.\");\r\n });\r\n }\r\n\r\n }\r\n\r\n $scope.$watch(\"data.Request\", function () {\r\n //$scope.getG2IData();\r\n });\r\n\r\n // weryfikacja klienta przez partnera / pracownika\r\n $scope.verifyClient = function (isFormInvalid) {\r\n $scope.nextButtonClicked = true;\r\n\r\n if (!isFormInvalid) {\r\n $scope.isFormValidated = true;\r\n $http.post('/OfferRequest/VerifyClients', $scope.data)\r\n .then(\r\n function (d) {\r\n $scope.updateInProgress = false;\r\n $scope.isFormValidated = false;\r\n toaster.pop('success', \"Weryfikacja danych\", \"Przesłano żądanie opłaty weryfikacyjnej do wskazanych osób.\");\r\n //if ($scope.data.Request.ClientGoBackUrl) top.location.href = $scope.data.Request.ClientGoBackUrl;\r\n $window.location.href = d.data.RedirectUrl;\r\n\r\n },\r\n function (e) {\r\n $scope.updateInProgress = false;\r\n $scope.isFormValidated = false;\r\n\r\n if (e.data.IsValidationError)\r\n toaster.pop('error', \"Formularz\", \"Prosimy o uzupełnienie brakujących danych.\");\r\n else\r\n toaster.pop('error', \"Weryfikacja danych\", \"Operacja nie powiodła się\");\r\n });\r\n } else {\r\n //toaster.pop('error', \"Formularz\", \"Prosimy o uzupełnienie brakujących danych.\");\r\n }\r\n };\r\n\r\n //$scope.TosRead = false;\r\n\r\n // Otworzenie modala z regulaminem\r\n $scope.openTosModal = function () {\r\n\r\n // Pobranie htmla regulaminu\r\n $http.get('/LegalConditions/GetLegalConditions').then(\r\n function (response) {\r\n\r\n // Pokazanie modala\r\n var legalConditionsHTML = response.data;\r\n var modalInstance = $modal.open({\r\n animation: true,\r\n template: legalConditionsHTML,\r\n controller: 'tosTextModalCtrl'\r\n });\r\n\r\n // Akcje na modalu\r\n modalInstance.result.then(\r\n function (result) {\r\n if (result === 'tos ok') {\r\n $scope.data.Request.Requestors[0].agree0 = true;\r\n }\r\n },\r\n function (reason) {\r\n $log.info('Modal dismissed at: ' + new Date());\r\n if (reason === 'tos not ok') {\r\n $scope.data.Request.Requestors[0].agree0 = false;\r\n }\r\n }\r\n );\r\n },\r\n function (error) {\r\n toaster.pop('error', \"Pobieranie regulaminu\", \"Wystąpił błąd podczas pobierania regulaminu.\");\r\n }\r\n );\r\n };\r\n\r\n // pobranie wyciagow\r\n $scope.getExtracts = function (id) {\r\n $http.get('/api/UnsecuredBusinessProcessDocumentsForUser?id=' + id + '&type=bankoperations').then(\r\n function (d) {\r\n $scope.BankExtracts = d.data.Result;\r\n },\r\n function (e) {\r\n toaster.pop('error', \"Pobieranie wyciągów\", \"Wystąpił błąd podczas pobierania wyciągów.\");\r\n }\r\n );\r\n }\r\n\r\n // dodanie wyciagow\r\n $scope.addExtracts = function (id) {\r\n var modalInstance = $modal.open({\r\n animation: true,\r\n templateUrl: 'extracts-upload-form.html',\r\n controller: 'ExtractUploadCtrl',\r\n resolve: {\r\n AggragatedCalulationId: function () {\r\n return id;\r\n }\r\n }\r\n });\r\n\r\n modalInstance.result.then(\r\n function (item) { },\r\n function () {\r\n // refresh\r\n $scope.getExtracts(id);\r\n }\r\n );\r\n };\r\n\r\n // pokazanie wyciagu\r\n $scope.showExtract = function (item) {\r\n window.open(\"/document/show?fileId=\" + item.FileId);\r\n };\r\n\r\n // obserwator do pobrania wyciagow\r\n $scope.$watch(\"FormRequest\", function () {\r\n if ($scope.FormRequest) {\r\n $scope.getExtracts($scope.FormRequest.AggragatedCalulationId);\r\n }\r\n });\r\n};\r\n\r\n/* wiadomosci */\r\nvar OfferInnerCommunicationCtrl = function ($rootScope, $scope, $modal, $log, $location, $http, FileUploader, toaster) {\r\n\r\n $scope.switchTopicId = \"topicsView\";\r\n $scope.topicMsgsToShow = 0;\r\n $scope.dataForNewMessage = {\r\n MsgText: \"\"\r\n };\r\n\r\n // pobranie topicow\r\n $scope.InnerCommunicationTopics = $scope.InnerCommunicationTopics || [];\r\n $scope.getTopics = function (id) {\r\n $http.get(\"/Message/getTopics/\" + id).then(\r\n function (d) {\r\n $scope.InnerCommunicationTopics = d.data.Topics;\r\n $scope.UnreadMessages = d.data.UnreadMessages;\r\n },\r\n function (e) {\r\n toaster.pop('error', \"Pobieranie tematów\", \"Wystąpił błąd podczas pobierania tematów.\");\r\n }\r\n );\r\n };\r\n\r\n\r\n // pobranie topcia z messagami\r\n $scope.InnerCommunicationTopic = { Messages: [] };\r\n $scope.getTopic = function (topicId) {\r\n $http.get(\"/Message/getTopic/\" + $scope.data.AggragatedCalulationId + \"?topicId=\" + topicId).then(\r\n function (d) {\r\n $scope.InnerCommunicationTopic = d.data;\r\n },\r\n function (e) {\r\n toaster.pop('error', \"Pobieranie wiadomości\", \"Wystąpił błąd podczas pobierania wiadomości.\");\r\n }\r\n );\r\n };\r\n\r\n\r\n // dodawania tematow i wiadomosci\r\n $scope.addTopic = function (parms) {\r\n\r\n var _parms = parms || {};\r\n\r\n $scope.dataForNewTopic = {\r\n TopicName: \"\",\r\n MessageText: \"\",\r\n Action: 'nosend'\r\n };\r\n\r\n // zbudowanie URL do zaladowania\r\n var url = '/Message/AddFilesToMessage/'; // + $scope.data.AggragatedCalulationId;\r\n\r\n // ladowacz\r\n $scope.uploader = new FileUploader({\r\n url: url\r\n });\r\n $scope.uploader.onErrorItem = function (fileItem, response, status, headers) {\r\n console.log($scope.uploader);\r\n toaster.pop('error', 'Błąd podczas zapisywania pliku');\r\n };\r\n $scope.uploader.onSuccessItem = function (fileItem, response, status, headers) {\r\n console.log($scope.uploader);\r\n fileItem.complete = true;\r\n toaster.pop('success', 'Plik zapisano poprawnie');\r\n };\r\n $scope.uploader.onCompleteItem = function (fileItem, response, status, headers) {\r\n console.log($scope.uploader);\r\n fileItem.complete = true;\r\n toaster.pop('info', 'Przesył pliku zakończony poprawnie');\r\n };\r\n $scope.uploader.onBeforeUploadItem = function (fileItem) {\r\n fileItem.formData = $scope.uploader.formData;\r\n }\r\n\r\n var modalInstance = $modal.open({\r\n animation: true,\r\n templateUrl: '/WWW/partials/createTopicModal.html',\r\n controller: 'addTopicCtrl',\r\n resolve: {\r\n dataForNewTopic: function () {\r\n return $scope.dataForNewTopic;\r\n },\r\n paramsForTopic: function () {\r\n return _parms;\r\n },\r\n uploader: function () {\r\n return $scope.uploader;\r\n }\r\n }\r\n });\r\n\r\n modalInstance.result\r\n .then(\r\n function (dataForNewTopic) {\r\n $http({ method: 'POST', url: \"/Message/AddTopic/\" + $scope.data.AggragatedCalulationId, data: { topicText: $scope.dataForNewTopic.TopicName, messageText: $scope.dataForNewTopic.MessageText } }).then(function (d) {\r\n $scope.uploader.formData.push({ id: $scope.data.AggragatedCalulationId });\r\n $scope.uploader.formData.push({ topicId: d.data.id });\r\n $scope.uploader.formData.push({ msgId: d.data.Messages[0].id });\r\n $scope.uploader.uploadAll();\r\n toaster.pop('success', \"Dodawanie tematu\", \"Pomyślnie dodano nowy temat.\");\r\n\r\n // jezeli sa parametry i jest callback to odpalamy callback\r\n if (_parms && typeof _parms.callBack === \"function\") {\r\n _parms.callBack(d.data);\r\n } else {\r\n $scope.getTopics($scope.data.AggragatedCalulationId);\r\n }\r\n\r\n\r\n }, function (e) {\r\n toaster.pop('error', \"Dodawanie tematu\", \"Wystąpił błąd podczas dodawania nowego tematu.\");\r\n });\r\n },\r\n function () { }\r\n );\r\n };\r\n\r\n // dodawania tematow i wiadomosci\r\n $scope.addTopicToClient = function (parms) {\r\n\r\n var _parms = parms || {};\r\n\r\n $scope.dataForNewTopic = {\r\n TopicName: \"\",\r\n MessageText: \"\",\r\n Action: 'nosend'\r\n };\r\n\r\n // zbudowanie URL do zaladowania\r\n var url = '/Message/AddFilesToMessage/'; // + $scope.data.AggragatedCalulationId;\r\n\r\n // ladowacz\r\n $scope.uploader = new FileUploader({\r\n url: url\r\n });\r\n $scope.uploader.onErrorItem = function (fileItem, response, status, headers) {\r\n console.log($scope.uploader);\r\n toaster.pop('error', 'Błąd podczas zapisywania pliku');\r\n };\r\n $scope.uploader.onSuccessItem = function (fileItem, response, status, headers) {\r\n console.log($scope.uploader);\r\n fileItem.complete = true;\r\n toaster.pop('success', 'Plik zapisano poprawnie');\r\n };\r\n $scope.uploader.onCompleteItem = function (fileItem, response, status, headers) {\r\n console.log($scope.uploader);\r\n fileItem.complete = true;\r\n toaster.pop('info', 'Przesył pliku zakończony poprawnie');\r\n };\r\n $scope.uploader.onBeforeUploadItem = function (fileItem) {\r\n fileItem.formData = $scope.uploader.formData;\r\n }\r\n\r\n var modalInstance = $modal.open({\r\n animation: true,\r\n templateUrl: '/WWW/partials/createTopicModal.html',\r\n controller: 'addTopicToClientCtrl',\r\n resolve: {\r\n dataForNewTopic: function () {\r\n return $scope.dataForNewTopic;\r\n },\r\n paramsForTopic: function () {\r\n return _parms;\r\n },\r\n uploader: function () {\r\n return $scope.uploader;\r\n }\r\n }\r\n });\r\n\r\n modalInstance.result\r\n .then(\r\n function (dataForNewTopic) {\r\n $http({ method: 'POST', url: \"/Message/AddTopic/\" + $scope.data.AggragatedCalulationId, data: { topicText: $scope.dataForNewTopic.TopicName, messageText: $scope.dataForNewTopic.MessageText } }).then(function (d) {\r\n $scope.uploader.formData.push({ id: $scope.data.AggragatedCalulationId });\r\n $scope.uploader.formData.push({ topicId: d.data.id });\r\n $scope.uploader.formData.push({ msgId: d.data.Messages[0].id });\r\n $scope.uploader.uploadAll();\r\n toaster.pop('success', \"Dodawanie tematu\", \"Pomyślnie dodano nowy temat.\");\r\n\r\n // jezeli sa parametry i jest callback to odpalamy callback\r\n if (_parms && typeof _parms.callBack === \"function\") {\r\n _parms.callBack(d.data);\r\n } else {\r\n $scope.getTopics($scope.data.AggragatedCalulationId);\r\n }\r\n\r\n\r\n }, function (e) {\r\n toaster.pop('error', \"Dodawanie tematu\", \"Wystąpił błąd podczas dodawania nowego tematu.\");\r\n });\r\n },\r\n function () { }\r\n );\r\n };\r\n\r\n $scope.showMsgs = function (topicId) {\r\n $scope.topicId = topicId;\r\n\r\n var modalInstance = $modal.open({\r\n animation: true,\r\n templateUrl: '/WWW/partials/createMsgModal.html',\r\n controller: 'showMsgsCtrl',\r\n scope: $scope,\r\n size: 'lg'\r\n });\r\n };\r\n\r\n // pobranie zalacznika\r\n $scope.showDocument = function (fileId) {\r\n window.open(\"/Message/ShowDocument?fileId=\" + fileId);\r\n };\r\n\r\n\r\n $scope.addNewMessage = function () {\r\n\r\n $scope.dataForNewMessage = {\r\n MessageText: \"\",\r\n Action: 'nosend'\r\n };\r\n\r\n // zbudowanie URL do zaladowania\r\n var url = '/Message/AddFilesToMessage/'; // + $scope.data.AggragatedCalulationId;\r\n\r\n // ladowacz\r\n $scope.uploader = new FileUploader({\r\n url: url\r\n });\r\n $scope.uploader.onErrorItem = function (fileItem, response, status, headers) {\r\n console.log($scope.uploader);\r\n toaster.pop('error', 'Błąd podczas zapisywania pliku');\r\n };\r\n $scope.uploader.onSuccessItem = function (fileItem, response, status, headers) {\r\n console.log($scope.uploader);\r\n fileItem.complete = true;\r\n toaster.pop('success', 'Plik zapisano poprawnie');\r\n };\r\n $scope.uploader.onCompleteItem = function (fileItem, response, status, headers) {\r\n console.log($scope.uploader);\r\n fileItem.complete = true;\r\n toaster.pop('info', 'Przesył pliku zakończony poprawnie');\r\n };\r\n $scope.uploader.onBeforeUploadItem = function (fileItem) {\r\n fileItem.formData = $scope.uploader.formData;\r\n }\r\n\r\n var modalInstance = $modal.open({\r\n animation: true,\r\n templateUrl: '/WWW/partials/createMsgModal.html',\r\n controller: 'AddNewMessageCtrl',\r\n resolve: {\r\n dataForNewMessage: function () {\r\n return $scope.dataForNewMessage;\r\n },\r\n uploader: function () {\r\n return $scope.uploader;\r\n }\r\n }\r\n });\r\n\r\n modalInstance.result\r\n .then(\r\n function (dataForNewTopic) {\r\n\r\n $http({ method: 'POST', url: '/Message/AddMessageToTopic/' + $scope.data.AggragatedCalulationId, data: { topicId: $scope.topicMsgsToShow, messageText: $scope.dataForNewMessage.MsgText } }).then(function (d) {\r\n $scope.uploader.formData.push({ id: $scope.data.AggragatedCalulationId });\r\n $scope.uploader.formData.push({ topicId: d.data.TopicId });\r\n $scope.uploader.formData.push({ msgId: d.data.id });\r\n $scope.uploader.uploadAll();\r\n toaster.pop('success', \"Dodawanie wiadomości\", \"Pomyślnie dodano nową wiadomość.\");\r\n $scope.getTopic($scope.topicMsgsToShow);\r\n }, function (e) {\r\n toaster.pop('error', \"Dodawanie wiadomości\", \"Wystąpił błąd podczas dodawania nowej wiadomości.\");\r\n });\r\n\r\n },\r\n function () { }\r\n );\r\n\r\n\r\n };\r\n\r\n $scope.goToMsgsViewSwitch = function (topicId) {\r\n $scope.switchTopicId = 'msgsInTopicView';\r\n $scope.topicMsgsToShow = topicId;\r\n\r\n // pobranie wiadomosci\r\n $scope.getTopic($scope.topicMsgsToShow);\r\n\r\n };\r\n\r\n $scope.backToTopicViewSwitch = function () {\r\n $scope.switchTopicId = 'topicsView';\r\n\r\n // jezeli jestesmy w konteksc gdzie to instnieje to wywolamy\r\n if (typeof $scope.showRequest == \"function\") $scope.showRequest($scope.data.AggragatedCalulationId);\r\n else $scope.getTopics($scope.data.AggragatedCalulationId);\r\n\r\n };\r\n\r\n $rootScope.$$listeners[\"send::messageToLeaselink\"] = [];\r\n $rootScope.$on(\"send::messageToLeaselink\", function (e, data) {\r\n $scope.addTopic();\r\n });\r\n\r\n $rootScope.$$listeners[\"send::OfferDocument\"] = [];\r\n $rootScope.$on(\"send::OfferDocument\", function (e, data) {\r\n $scope.addOfferDocument();\r\n });\r\n\r\n $scope.addOfferDocument = function (parms) {\r\n\r\n $scope.dataForNewTopic = {\r\n TopicName: \"Dodano fakturę\",\r\n MessageText: \"\",\r\n Action: 'nosend'\r\n };\r\n\r\n var url = '/Message/AddInvoiceFromCustomer/' + $scope.data.AggragatedCalulationId;\r\n\r\n var _parms = parms || {};\r\n\r\n $scope.uploader = new FileUploader({\r\n url: url\r\n });\r\n\r\n $scope.uploader.onErrorItem = function (fileItem, response, status, headers) {\r\n toaster.pop('error', 'Błąd podczas zapisywania pliku');\r\n };\r\n $scope.uploader.onSuccessItem = function (fileItem, response, status, headers) {\r\n fileItem.complete = true;\r\n toaster.pop('success', 'Plik zapisano poprawnie');\r\n };\r\n $scope.uploader.onCompleteItem = function (fileItem, response, status, headers) {\r\n fileItem.complete = true;\r\n toaster.pop('info', 'Przesył pliku zakończony poprawnie');\r\n };\r\n $scope.uploader.onBeforeUploadItem = function (fileItem) {\r\n fileItem.formData = $scope.uploader.formData;\r\n }\r\n\r\n var modalInstance = $modal.open({\r\n animation: true,\r\n templateUrl: '/WWW/partials/submitOfferDocument.html',\r\n controller: 'SubmitOfferDocumentCtrl',\r\n scope: $scope,\r\n size: 'add-invoice',\r\n resolve: {\r\n dataForNewTopic: function () {\r\n return $scope.dataForNewTopic;\r\n },\r\n paramsForTopic: function () {\r\n return _parms;\r\n },\r\n uploader: function () {\r\n return $scope.uploader;\r\n }\r\n }\r\n })\r\n\r\n modalInstance.result\r\n .then(\r\n function (dataForNewTopic) {\r\n $http({ method: 'POST', url: \"/Message/AddTopic/\" + $scope.data.AggragatedCalulationId, data: { topicText: $scope.dataForNewTopic.TopicName, messageText: $scope.dataForNewTopic.MessageText } }).then(function (d) {\r\n $scope.uploader.formData.push({ id: $scope.data.AggragatedCalulationId });\r\n $scope.uploader.formData.push({ topicId: d.data.id });\r\n $scope.uploader.formData.push({ msgId: d.data.Messages[0].id });\r\n $scope.uploader.uploadAll();\r\n toaster.pop('success', \"Dodawanie tematu\", \"Pomyślnie dodano nowy temat.\");\r\n\r\n // jezeli sa parametry i jest callback to odpalamy callback\r\n if (_parms && typeof _parms.callBack === \"function\") {\r\n _parms.callBack(d.data);\r\n } else {\r\n $scope.getTopics($scope.data.AggragatedCalulationId);\r\n }\r\n\r\n\r\n }, function (e) {\r\n toaster.pop('error', \"Dodawanie tematu\", \"Wystąpił błąd podczas dodawania nowego tematu.\");\r\n });\r\n },\r\n function () { }\r\n );\r\n\r\n }\r\n\r\n $rootScope.$$listeners[\"send::doNotAcceptTerms\"] = [];\r\n $rootScope.$on(\"send::doNotAcceptTerms\", function (e, data) {\r\n var _parms = {\r\n callBack: function () {\r\n\r\n $http.post(\"/client/service/do-not-accept-terms/\" + $scope.data.Request.AggragatedCalulationId).then(function (d) {\r\n\r\n if (d.data.ClientGoBackUrl == \"offer-denied\") {\r\n top.location.pathname = \"/client/service/offer-denied/\" + $scope.data.Request.AggragatedCalulationId;\r\n }\r\n else {\r\n // powrot do strony klienta\r\n top.location.href = d.data.ClientGoBackUrl;\r\n }\r\n\r\n }, function (e) {\r\n toaster.pop('error', \"Anulowanie\", \"Wystąpił błąd podczas anulowania.\");\r\n });\r\n\r\n },\r\n Type: \"Resign\"\r\n };\r\n $scope.addTopic(_parms);\r\n });\r\n\r\n // wywloanie domyslne metody\r\n //$scope.getTopics($scope.data.AggragatedCalulationId);\r\n};\r\n\r\n\r\n\r\n/* dodanie nowej wiadomosci */\r\nvar AddNewMessageCtrl = function ($scope, $modalInstance, dataForNewMessage, uploader) {\r\n // przepisanie danych\r\n $scope.dataForNewMessage = dataForNewMessage;\r\n $scope.uploader = uploader;\r\n\r\n // oddanie danych\r\n $scope.ok = function (action) {\r\n $scope.dataForNewMessage.Action = action;\r\n $modalInstance.close($scope.dataForNewMessage);\r\n };\r\n\r\n // zamkniecie\r\n $scope.cancel = function () {\r\n $modalInstance.dismiss('cancel');\r\n };\r\n\r\n};\r\n\r\n/* zapisanie danych */\r\nvar SaveDataModalInstanceCtrl = function ($scope, $modalInstance, dataForSaving) {\r\n\r\n // przepisanie danych\r\n $scope.dataForSaving = dataForSaving;\r\n\r\n // oddanie danych\r\n $scope.ok = function (action) {\r\n $scope.dataForSaving.Action = action;\r\n $modalInstance.close($scope.dataForSaving);\r\n };\r\n\r\n // zamkniecie\r\n $scope.cancel = function () {\r\n $modalInstance.dismiss('cancel');\r\n };\r\n};\r\n\r\n/* platnosci */\r\nvar PaymentCtrl = function ($rootScope, $scope, $modal, $log, $location, $window, $http, toaster) {\r\n\r\n // opis problemu podczas platnosci\r\n $scope.paymentError = {\r\n Reason: \"\"\r\n };\r\n\r\n // powrot do sklepu\r\n $scope.backToShop = function () {\r\n $window.location.href = $scope.data.ClientGoBackUrl;\r\n };\r\n\r\n\r\n $scope.sendAndBackToShop = function () {\r\n $scope.backToShop();\r\n };\r\n};\r\n\r\n/* dodawanie plikow */\r\nvar FileUploadCtrl = function ($scope, $modalInstance, FileUploader, toaster, AggragatedCalulationId) {\r\n\r\n $scope.AggragatedCalulationId = AggragatedCalulationId;\r\n\r\n // zamkniecie\r\n $scope.cancel = function () {\r\n $modalInstance.dismiss('cancel');\r\n };\r\n\r\n $scope.documentTypes = [{ \"num\": \"2\", \"name\": 'Plik uzupełniający' }, { \"num\": \"3\", \"name\": 'Umowa dodana ręcznie' }];\r\n $scope.selectedDocumentType = { num: \"2\" };\r\n\r\n\r\n // zbudowanie URL do zaladowania\r\n var url = '/document/add/';\r\n\r\n // ladowacz\r\n $scope.uploader = new FileUploader({\r\n url: url\r\n });\r\n $scope.uploader.formData.push({ id: $scope.AggragatedCalulationId });\r\n $scope.addType = function () {\r\n $scope.uploader.formData.push({ agreementType: $scope.selectedDocumentType.num });\r\n };\r\n $scope.uploader.onErrorItem = function (fileItem, response, status, headers) {\r\n toaster.pop('error', 'Błąd podczas zapisywania pliku');\r\n };\r\n $scope.uploader.onSuccessItem = function (fileItem, response, status, headers) {\r\n fileItem.complete = true;\r\n toaster.pop('success', 'Plik zapisano poprawnie');\r\n\r\n };\r\n $scope.uploader.onCompleteItem = function (fileItem, response, status, headers) {\r\n fileItem.complete = true;\r\n toaster.pop('info', 'Przesył pliku zakończony poprawnie');\r\n };\r\n $scope.uploader.onBeforeUploadItem = function (fileItem) {\r\n fileItem.formData = $scope.uploader.formData;\r\n }\r\n};\r\n\r\n/* dodawanie wyciagow */\r\nvar ExtractUploadCtrl = function ($scope, $modalInstance, FileUploader, toaster, AggragatedCalulationId) {\r\n\r\n $scope.AggragatedCalulationId = AggragatedCalulationId;\r\n\r\n // zamkniecie\r\n $scope.cancel = function () {\r\n $modalInstance.dismiss('cancel');\r\n };\r\n\r\n // zbudowanie URL do zaladowania\r\n var url = '/document/addExtract/';\r\n\r\n // ladowacz\r\n $scope.uploader = new FileUploader({\r\n url: url\r\n });\r\n\r\n $scope.uploader.formData.push({ id: $scope.AggragatedCalulationId });\r\n\r\n $scope.uploader.onErrorItem = function (fileItem, response, status, headers) {\r\n toaster.pop('error', 'Błąd podczas zapisywania wyciągu');\r\n };\r\n\r\n $scope.uploader.onSuccessItem = function (fileItem, response, status, headers) {\r\n fileItem.complete = true;\r\n toaster.pop('success', 'Wyciąg zapisano poprawnie');\r\n\r\n };\r\n\r\n $scope.uploader.onCompleteItem = function (fileItem, response, status, headers) {\r\n fileItem.complete = true;\r\n toaster.pop('info', 'Przesyłanie wyciągu zakończone poprawnie');\r\n };\r\n\r\n $scope.uploader.onBeforeUploadItem = function (fileItem) {\r\n fileItem.formData = $scope.uploader.formData;\r\n }\r\n};\r\n\r\n/* logowanie klienta */\r\nvar ClientLoginCtrl = function ($scope, $location, $http, $cookies, $window, toaster) {\r\n\r\n $scope.user = {\r\n login: \"\",\r\n password: \"\",\r\n requestId: \"\"\r\n };\r\n\r\n $scope.generatePIN = function () {\r\n $http.post(\"/client/service/generate-pin/\" + $scope.user.requestId).then(\r\n function (d) {\r\n\r\n toaster.pop('sucess', \"PIN został wysłany na wskazany adres\", d.data.Status);\r\n },\r\n function (e) {\r\n toaster.pop('error', \"Logowanie\", \"Przesłanie pinu nie powiodło się.\");\r\n });\r\n };\r\n\r\n $scope.login = function () {\r\n $http.post(\"/client/service/login/\" + $scope.user.requestId, $scope.user).then(\r\n function (d) {\r\n toaster.pop('sucess', \"Logowanie\", \"Witamy w systemie LeaseLink\");\r\n //$cookies['x-auth-leaselink'] = d.data.Token;\r\n $window.localStorage.setItem('x-auth-leaselink', d.data.Token);\r\n top.location.href = \"/client/service/process/\" + d.data.RequestId;\r\n },\r\n function (e) {\r\n toaster.pop('error', \"Logowanie\", \"Podane dane nie są poprawne.\");\r\n });\r\n }\r\n};\r\n\r\n/* obsluga self serwis */\r\nvar ClientRequestCtrl = function ($rootScope, $scope, $location, $http, toaster, $modal) {\r\n\r\n $scope.CurrentView = \"\";\r\n $scope.RequestId = \"\";\r\n $scope.data = {\r\n };\r\n $scope.Process = {};\r\n $scope.DocumentCounter = 0;\r\n $scope.operData = {};\r\n $scope.Site = \"\";\r\n $scope.Documents = [];\r\n\r\n $scope.$watch(\"Documents\", function () {\r\n var _docs = $scope.Documents || [];\r\n $scope.DocumentCounter = _.where(_docs, {\r\n Confirmed: false\r\n }).length;\r\n });\r\n\r\n // pobranie topicow\r\n $scope.InnerCommunicationTopics = [];\r\n $scope.getTopics = function (id) {\r\n $http.get(\"/Message/getTopics/\" + id).then(\r\n function (d) {\r\n $scope.InnerCommunicationTopics = d.data.Topics;\r\n $scope.UnreadMessages = d.data.UnreadMessages;\r\n },\r\n function (e) {\r\n toaster.pop('error', \"Pobieranie tematów\", \"Wystąpił błąd podczas pobierania tematów.\");\r\n }\r\n );\r\n };\r\n\r\n\r\n $scope.$watch(\"RequestId\", function () {\r\n // po zaladowaniu strony pokazanie danych\r\n $scope.showRequest($scope.RequestId);\r\n });\r\n\r\n // usuniete dokumenty\r\n $scope.hideDeleteDocument = true;\r\n\r\n // pokazanie zapytania\r\n $scope.showRequest = function (id) {\r\n $http.get('/client/service/get/' + id).then(function (d) {\r\n $scope.Process = d.data.Process;\r\n $scope.data = d.data.Data;\r\n $scope.Partner = d.data.Partner;\r\n $scope.operData = d.data.OperData;\r\n $scope.Site = d.data.Site;\r\n $scope.FormRequest = d.data.FormRequest;\r\n $scope.Documents = d.data.Documents;\r\n\r\n if ($scope.Process.Status == 72 || $scope.Process.Status > 74) {\r\n top.location.href = \"https://portal.leaselink.pl\";\r\n }\r\n\r\n //$scope.InnerCommunicationTopics = d.data.InnerCommunicationTopics;\r\n $scope.getTopics(id);\r\n\r\n }, function (e) {\r\n toaster.pop('error', \"Pobieranie danych\", \"Pobieranie danych nie przebiegło poprawnie.\");\r\n });\r\n }\r\n\r\n // pokazanie dokumentu\r\n $scope.showDocument = function (fileId) {\r\n window.open(\"/document/show?fileId=\" + fileId);\r\n };\r\n\r\n //wylogowanie\r\n $scope.close = function (url) {\r\n // w zaleznosci od tego kto moderuje takie przekierowanie\r\n url = url || \"/client/service/logout/\" + $scope.RequestId;\r\n top.location.href = url;\r\n };\r\n\r\n // potwierdzenie dokuemntu\r\n $scope.confirmDocument = function (fileId, params) {\r\n\r\n var _params = params || {};\r\n\r\n var id = $scope.data.AggragatedCalulationId;\r\n var fileIds = [];\r\n fileIds.push(fileId);\r\n if (confirm(\"Czy na pewno chcesz potwierdzić zapoznanie się z dokumentem?\")) {\r\n $http.post(\"/document/confirm/\" + id, {\r\n fileIds: fileIds\r\n }).then(\r\n function (d) {\r\n toaster.pop('success', \"Potwierdzanie dokumentu\", \"Dokument potwierdzono poprawnie.\");\r\n\r\n if (_params && typeof _params.callBack === \"function\") {\r\n _params.callBack();\r\n } else {\r\n // pokazanie zapytania\r\n $scope.showRequest(id);\r\n }\r\n },\r\n function (e) {\r\n toaster.pop('error', \"Potwierdzanie dokumentu\", \"Wystąpił błąd podczas potwierdzania dokumentu.\");\r\n });\r\n }\r\n };\r\n\r\n // potwierdzenie dokuemntu\r\n $scope.confirmAllDocuments = function (params) {\r\n\r\n var _params = params || { noConfirm: false };\r\n\r\n var id = $scope.data.AggragatedCalulationId;\r\n var fileIds = [];\r\n angular.forEach($scope.Documents, function (doc) {\r\n if (doc.Confirmed !== true) {\r\n fileIds.push(doc.FileId);\r\n }\r\n });\r\n\r\n // czy procesowac\r\n var doProcess = false;\r\n if (_params.noConfirm === true) {\r\n doProcess = true;\r\n } else {\r\n doProcess = confirm(\"Czy na pewno chcesz potwierdzić zapoznanie się z dokumentami?\");\r\n }\r\n\r\n\r\n if (doProcess) {\r\n $http.post(\"/document/confirm/\" + id, {\r\n fileIds: fileIds\r\n }).then(\r\n function (d) {\r\n toaster.pop('success', \"Potwierdzanie dokumentu\", \"Dokument potwierdzono poprawnie.\");\r\n\r\n if (_params && typeof _params.callBack === \"function\") {\r\n _params.callBack();\r\n } else {\r\n // pokazanie zapytania\r\n $scope.showRequest(id);\r\n }\r\n },\r\n function (e) {\r\n toaster.pop('error', \"Potwierdzanie dokumentu\", \"Wystąpił błąd podczas potwierdzania dokumentu.\");\r\n });\r\n }\r\n };\r\n\r\n // dodawanie dokumentow\r\n $scope.$watch(\"data\", function () {\r\n $scope.DocumentCounter = _.where($scope.Documents || [], {\r\n Confirmed: false\r\n }).length;\r\n });\r\n\r\n\r\n // dodanie dokumentu\r\n $scope.addDocuments = function (id) {\r\n var modalInstance = $modal.open({\r\n animation: true,\r\n templateUrl: 'document-upload-form.html',\r\n controller: 'FileUploadCtrl',\r\n resolve: {\r\n AggragatedCalulationId: function () {\r\n return id;\r\n }\r\n }\r\n });\r\n\r\n modalInstance.result.then(\r\n function (item) { },\r\n function () {\r\n // pokazanie zapytania\r\n $scope.showRequest(id);\r\n }\r\n );\r\n };\r\n\r\n\r\n // przejscie do platnosci - weryfikacja\r\n $scope.goToPrepaidPayment = function () {\r\n top.location.href = \"/payment/RedirectToPrepaidPayment/\" + $scope.data.AggragatedCalulationId + \"?selfService=true\";\r\n };\r\n\r\n\r\n // przejscie do platnosci - wplata wlasna\r\n $scope.goToInitialPayment = function () {\r\n top.location.href = \"/payment/RedirectToInitialPayment/\" + $scope.data.AggragatedCalulationId + \"?selfService=false\";\r\n };\r\n\r\n $scope.goToSelectPaymentChannel = function () {\r\n top.location.href = \"/process/choose.payment.channel/\" + $scope.data.AggragatedCalulationId;\r\n };\r\n\r\n\r\n //podczas ladowania sprawdzimy status plarnosci i pokazemy komunika\r\n $scope.$watch(\"paymentinprogress\", function (o, n) {\r\n if ($scope.paymentinprogress == true) {\r\n toaster.pop('info', \"Realizacja płatności\", \"Płatność w trakcie realizacji.\");\r\n }\r\n });\r\n\r\n\r\n // wyslanie wiadomosci\r\n $scope.sendMessageToLeaseLink = function () {\r\n $rootScope.$broadcast(\"send::messageToLeaselink\", { RequestId: $scope.data.AggragatedCalulationId });\r\n };\r\n\r\n // wysłanie faktury\r\n $scope.addInvoice = function () {\r\n $rootScope.$broadcast('send::OfferDocument', { RequestId: $scope.data.AggragatedCalulationId, ProcessTypeName: $scope.data.ProcessTypeName });\r\n };\r\n\r\n // nie akceptacja\r\n $scope.doNotAcceptTerms = function () {\r\n $rootScope.$broadcast(\"send::doNotAcceptTerms\", { RequestId: $scope.data.AggragatedCalulationId });\r\n };\r\n\r\n\r\n // zapisanie informacji i wyslanie powiadomienia\r\n $scope.accepAllAndSendNotification = function () {\r\n //zapisanie danych a jak sie uda to dalej\r\n $http.post(\"/client/service/update/\" + $scope.data.AggragatedCalulationId, { Request: $scope.FormRequest }).then(\r\n function (d) {\r\n $scope.confirmAllDocuments({\r\n callBack: function () { $scope.sendInitialPayment(); },\r\n noConfirm: true\r\n });\r\n },\r\n function (e) {\r\n toaster.pop('error', \"Potwierdzanie dokumentów\", \"Wystąpił błąd podczas potwierdzania dokumentu.\");\r\n }\r\n );\r\n };\r\n\r\n // wyslanie powiadomienia // przejscie do platnosci - wplata wlasna\r\n $scope.sendInitialPayment = function () {\r\n $http.post(\"/OfferRequest/NotifyClientsForInitialPayment/\" + $scope.data.AggragatedCalulationId, {}).then(\r\n function (d) {\r\n toaster.pop('success', \"Powiadomienie o płatności\", \"Wysyłano powiadomienia o płatności.\");\r\n var url = d.data.RedirectURL;\r\n $scope.close(url);\r\n },\r\n function (e) {\r\n toaster.pop('error', \"Powiadomienie o płatności\", \"Wystąpił błąd podczas wysyłania powiadomienia o płatności.\");\r\n }\r\n );\r\n };\r\n\r\n\r\n // potwierdzenie calosci i platnosci\r\n $scope.accepAllAndPay = function () {\r\n\r\n // korespondecyjny\r\n if ($scope.FormRequest.RequestorAddresses[0].Confirmed !== true) {\r\n toaster.pop('error', \"Potwierdzanie adresów\", \"Adres korespondencyjny wymaga potwierdzenia.\");\r\n return;\r\n }\r\n\r\n // podpisanie z kurierem\r\n if ($scope.FormRequest.TypeOfDelivery == 1) {\r\n if ($scope.FormRequest.RequestorDeliveryAddress.Confirmed !== true) {\r\n toaster.pop('error', \"Potwierdzanie adresów\", \"Adres podpisania umowy wymaga potwierdzenia.\");\r\n return;\r\n }\r\n }\r\n\r\n if ($scope.Partner.ClientCollectData) {\r\n\r\n // dostawa sprzetu\r\n if ($scope.FormRequest.TypeOfItemCollect == 1 && $scope.Partner.BlockItemCollectByExternalBody !== true) {\r\n if ($scope.FormRequest.RequestorCollectAddress.Confirmed !== true) {\r\n toaster.pop('error', \"Potwierdzanie adresów\", \"Adres wysyłki sprzętu kurierem wymaga potwierdzenia.\");\r\n return;\r\n }\r\n }\r\n\r\n // odbiory w sklepie\r\n if ($scope.FormRequest.TypeOfItemCollect == 0 && $scope.Partner.AllowClientSelfCollectItem === true) {\r\n if ($scope.FormRequest.RequestorSelfCollectAddress.Confirmed !== true) {\r\n toaster.pop('error', \"Potwierdzanie adresów\", \"Adres odbioru sprzętu w sklepie wymaga potwierdzenia.\");\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // zapisanie\r\n {\r\n //zapisanie danych a jak sie uda to dalej\r\n $http.post(\"/client/service/update/\" + $scope.data.AggragatedCalulationId, { Request: $scope.FormRequest }).then(\r\n function (d) {\r\n $scope.confirmAllDocuments({\r\n callBack: function () { $scope.goToSelectPaymentChannel(); },\r\n noConfirm: true\r\n });\r\n },\r\n function (e) {\r\n toaster.pop('error', \"Potwierdzanie dokumentów\", \"Wystąpił błąd podczas potwierdzania dokumentu.\");\r\n }\r\n );\r\n }\r\n\r\n }\r\n\r\n $scope.checkIfCanGenerateNewAgreement = function () {\r\n return !$scope.data.Documents.some(function (elem) { return elem.AgreementDocumentType == 3; });\r\n };\r\n\r\n $scope.GenerateNewAgreement = function () {\r\n\r\n $http.post(\"/client/service/generate-new-agreement/\" + $scope.data.AggragatedCalulationId, { Request: $scope.FormRequest }).then(function (dd) {\r\n $scope.showRequest($scope.data.AggragatedCalulationId);\r\n });\r\n }\r\n\r\n\r\n // potwierdzenie dokuemntu - bez przeladowania\r\n $scope.confirmDocumentWithNoReaload = function (doc) {\r\n $scope.confirmDocument(doc.FileId, { callBack: function () { doc.Confirmed = true; } })\r\n };\r\n\r\n\r\n // sprawdzenie czy mozna wlascicieli\r\n $scope.hasOwners = function () {\r\n return $rootScope.hasOwners($scope.data.Request.Requestors[0]);\r\n };\r\n $scope.hasRepresentative = function () {\r\n return $rootScope.hasRepresentative($scope.data.Request.Requestors[0]);\r\n };\r\n\r\n // sprawdzenie czy w ofercie został wybrany serwis urządzeń filtrujących\r\n // zmienna pomocincza\r\n $scope.serviceFound = false;\r\n\r\n // $scope.hasService = function () {\r\n // for (var i = 0; i < $scope.data.Request.RequestItems.length; i++) {\r\n // if ($scope.data.Request.RequestItems[i].ProductTypeName == 'SERWIS') {\r\n // //$scope.serviceFound = true;\r\n // break;\r\n // return true;\r\n // }\r\n // else{\r\n // return false;\r\n // }\r\n // }\r\n // };\r\n\r\n $scope.hasService = function () {\r\n if ($scope.data.Request.RequestItems.filter(function (e) { return e.ProductTypeName == 'SERWIS'; }).length > 0) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n\r\n // pobierz dane do zakladki komunikaty\r\n $scope.refreshTopics = function () {\r\n $scope.getTopics($scope.data.AggragatedCalulationId);\r\n };\r\n\r\n\r\n // zdarzenie po zapisaniu w selfservice\r\n $scope.onSaveRequestData = function (request) {\r\n //console.debug(\"!!!! ON SAVE\" , request);\r\n //zapisanie danych a jak sie uda to dalej\r\n $http.post(\"/client/service/generate-new-agreement/\" + $scope.data.AggragatedCalulationId, { Request: $scope.FormRequest }).then(\r\n function (d) {\r\n toaster.pop('success', \"Aktualizacja danych\", \"Dane zostały zaktualizowane a dokumenty przegenrowane.\");\r\n $scope.showRequest($scope.data.AggragatedCalulationId);\r\n $scope.$broadcast('selfsevice::refresh');\r\n },\r\n function (e) {\r\n toaster.pop('error', \"Aktualizacja danych\", \"Wystąpił błąd podczas aktualizacji danych.\");\r\n }\r\n );\r\n };\r\n};\r\n\r\n/* dodanie wiadomosci */\r\nvar addTopicCtrl = function ($scope, $modalInstance, dataForNewTopic, paramsForTopic, uploader) {\r\n $scope.dataForNewTopic = dataForNewTopic;\r\n $scope.paramsForTopic = paramsForTopic;\r\n $scope.sizeLimitExceeded = false;\r\n $scope.uploader = uploader;\r\n\r\n $scope.ok = function (action) {\r\n $scope.dataForNewTopic.Action = action;\r\n $modalInstance.close($scope.dataForNewTopic);\r\n };\r\n\r\n $scope.cancel = function () {\r\n $modalInstance.dismiss('cancel');\r\n };\r\n\r\n $scope.$watch(\r\n function () {\r\n return $scope.uploader.queue.length;\r\n },\r\n function () {\r\n var size = 0;\r\n angular.forEach(uploader.queue, function (obj) {\r\n size = size + obj.file.size;\r\n })\r\n $scope.sizeLimitExceeded = size > 10485760;\r\n });\r\n};\r\n\r\n/* dodanie wiadomosci do klienta */\r\nvar addTopicToClientCtrl = function ($scope, $modalInstance, dataForNewTopic, paramsForTopic, uploader) {\r\n $scope.dataForNewTopic = dataForNewTopic;\r\n $scope.paramsForTopic = paramsForTopic;\r\n $scope.sizeLimitExceeded = false;\r\n $scope.uploader = uploader;\r\n\r\n $scope.ok = function (action) {\r\n $scope.dataForNewTopic.Action = action;\r\n $modalInstance.close($scope.dataForNewTopic);\r\n };\r\n\r\n $scope.cancel = function () {\r\n $modalInstance.dismiss('cancel');\r\n };\r\n};\r\n\r\nvar SubmitOfferDocumentCtrl = function ($scope, $modalInstance, dataForNewTopic, paramsForTopic, uploader) {\r\n $scope.dataForNewTopic = dataForNewTopic;\r\n $scope.paramsForTopic = paramsForTopic;\r\n $scope.uploader = uploader;\r\n\r\n $scope.ok = function (action) {\r\n $scope.dataForNewTopic.Action = action;\r\n $modalInstance.close($scope.dataForNewTopic);\r\n };\r\n\r\n $scope.cancel = function () {\r\n $modalInstance.dismiss('cancel');\r\n };\r\n\r\n\r\n};\r\n\r\n/* zaladowanie pliku do wiaodmsoci */\r\nvar MsgFilesUploadCtrl = function ($scope, FileUploader, toaster) {\r\n\r\n var url = 'nothing';\r\n\r\n $scope.uploader = new FileUploader({\r\n\r\n });\r\n\r\n $scope.uploader.onErrorItem = function (fileItem, response, status, headers) {\r\n toaster.pop('error', 'Błąd podczas zapisywania pliku');\r\n };\r\n $scope.uploader.onSuccessItem = function (fileItem, response, status, headers) {\r\n fileItem.complete = true;\r\n toaster.pop('success', 'Plik zapisano poprawnie');\r\n\r\n };\r\n $scope.uploader.onCompleteItem = function (fileItem, response, status, headers) {\r\n fileItem.complete = true;\r\n toaster.pop('info', 'Przesył pliku zakończony poprawnie');\r\n };\r\n};\r\n\r\n/* data ?? */\r\nvar DateCtrl = function ($scope) {\r\n $scope.date = new Date();\r\n $scope.year = null;\r\n $scope.defaultYear = $scope.date.getFullYear() - 1;\r\n $scope.years = [];\r\n for (var i = $scope.defaultYear; i > $scope.defaultYear - 2; i--) {\r\n $scope.years.push(i);\r\n }\r\n $scope.lastMonth = ($scope.date.getMonth() + 1 == 1 ? 12 : $scope.date.getMonth() + 1);\r\n $scope.months = [];\r\n for (var i = 1; i <= 12; i++) {\r\n $scope.months.push(i);\r\n }\r\n};\r\n\r\n\r\n// kontroler wybiernia reprezentantów\r\nvar ChooseRepresentativesCtrl = function ($scope, $modalInstance) {\r\n\r\n // zmienne\r\n $scope.choosenPersons = [];\r\n $scope.personsToChooseList = [];\r\n var requestor = $scope.data.Request.Requestors[0];\r\n\r\n // przygotowanie lisy do wyboru\r\n $scope.$watch('KRSData', function () {\r\n\r\n // przygotowanie listy juz zaznaczonej\r\n $scope.data.Request.RequestorOwners.forEach(function (item) {\r\n if (item.FirstName)\r\n $scope.choosenPersons.push(item);\r\n });\r\n $scope.data.Request.RequestorRepresentatives.forEach(function (item) {\r\n if (item.FirstName)\r\n $scope.choosenPersons.push(item);\r\n });\r\n\r\n // napelnienie danymi listy\r\n if ($scope.KRSData) {\r\n\r\n // wlasciciele\r\n //if ((['spółka jawna', 'spółka partnerska'].indexOf(requestor.RequestorLegalForm) !== -1)) {\r\n if ($scope.KRSData.Wlasciciele && $scope.KRSData.Wlasciciele.length > 0) {\r\n $scope.KRSData.Wlasciciele.forEach(function (item) {\r\n $scope.personsToChooseList.push({\r\n FirstName: item.Imie,\r\n LastName: item.Nazwisko,\r\n PESEL: item.PESEL,\r\n Function: item.Funkcja,\r\n Type: item.Typ,\r\n SystemType: \"Owner\",\r\n Role: 1,\r\n IdentificationDocumentType: 0,\r\n RepresentativeAddress: {\r\n StreetPrefix: \"UL.\",\r\n Country: \"POLSKA\"\r\n }\r\n });\r\n }, this);\r\n }\r\n //} else {\r\n // reprezentanci\r\n if ($scope.KRSData.Reprezentanci && $scope.KRSData.Reprezentanci.length > 0) {\r\n $scope.KRSData.Reprezentanci.forEach(function (item) {\r\n\r\n\r\n var ___found = false;\r\n for (var i = $scope.personsToChooseList.length - 1; i >= 0; i--) {\r\n if (item.PESEL == null && item.Imie === $scope.personsToChooseList[i].FirstName && item.Nazwisko === $scope.personsToChooseList[i].LastName) {\r\n ___found = true;\r\n break;\r\n }\r\n if (item.PESEL != null & item.PESEL === $scope.personsToChooseList[i].PESEL) {\r\n ___found = true;\r\n break;\r\n }\r\n }\r\n if (___found !== true) {\r\n\r\n\r\n $scope.personsToChooseList.push({\r\n FirstName: item.Imie,\r\n LastName: item.Nazwisko,\r\n PESEL: item.PESEL,\r\n Function: item.Funkcja,\r\n Type: item.Typ,\r\n SystemType: \"Representative\",\r\n Role: 2,\r\n IdentificationDocumentType: 0,\r\n RepresentativeAddress: {\r\n StreetPrefix: \"UL.\",\r\n Country: \"POLSKA\"\r\n }\r\n });\r\n\r\n }\r\n\r\n }, this);\r\n }\r\n //}\r\n }\r\n });\r\n\r\n // przerobienie na jedna liste obiektow\r\n $scope.isChecked = function (item) {\r\n return ($scope.isInPersonsArray($scope.choosenPersons, item) !== -1);\r\n }\r\n\r\n // spradzenie czy juz nie byl\r\n $scope.isInPersonsArray = function (arr, item) {\r\n var found = -1;\r\n for (var i = 0; i < arr.length; i++) {\r\n if (arr[i].PESEL != null && arr[i].PESEL == item.PESEL) {\r\n found = i;\r\n break;\r\n }\r\n if (arr[i].PESEL == null && arr[i].FirstName == item.FirstName && arr[i].LastName == item.LastName) {\r\n found = i;\r\n break;\r\n }\r\n }\r\n return found;\r\n }\r\n\r\n // dokonanie wyboru\r\n $scope.selectItem = function (item) {\r\n var idx = $scope.isInPersonsArray($scope.choosenPersons, item);\r\n if (idx !== -1) {\r\n $scope.choosenPersons.splice(idx, 1);\r\n } else {\r\n $scope.choosenPersons.push(item);\r\n }\r\n }\r\n\r\n // akceptacja wyboru\r\n $scope.updatePersonData = function () {\r\n\r\n $scope.data.RepresentativesChosen = true;\r\n\r\n // nadpisanie\r\n var _RequestorOwners = [];\r\n var _RequestorRepresentatives = [];\r\n // zapissanie biezacego wyboru do array'a\r\n $scope.choosenPersons.forEach(function (item) {\r\n //if (item.Role == 1) {\r\n\r\n if ($scope.data.Request.RequestorOwners.length > 0) {\r\n var idx = $scope.isInPersonsArray($scope.data.Request.RequestorOwners, item);\r\n if (idx !== -1) {\r\n var currentItem = $scope.data.Request.RequestorOwners[idx];\r\n if (currentItem.FirstName)\r\n _RequestorOwners.push(currentItem);\r\n } else {\r\n _RequestorOwners.push(item);\r\n }\r\n }\r\n\r\n //if (item.Role == 2) {\r\n if ($scope.data.Request.RequestorRepresentatives.length > 0) {\r\n\r\n // poprawka, reprezentant pobierany z krsu moze nie miec nip\r\n var idx = -1;\r\n var idx = $scope.isInPersonsArray($scope.data.Request.RequestorRepresentatives, item);\r\n\r\n if (idx !== -1) {\r\n var currentItem = $scope.data.Request.RequestorRepresentatives[idx];\r\n if (currentItem.FirstName)\r\n _RequestorRepresentatives.push(currentItem);\r\n } else {\r\n _RequestorRepresentatives.push(item);\r\n }\r\n }\r\n console.log(_RequestorOwners);\r\n console.log(_RequestorRepresentatives);\r\n }, this);\r\n\r\n // nadpisanie\r\n $scope.data.Request.RequestorOwners = _RequestorOwners;\r\n $scope.data.Request.RequestorRepresentatives = _RequestorRepresentatives;\r\n\r\n // zamkniecie okna\r\n $modalInstance.dismiss('cancel');\r\n };\r\n\r\n\r\n // wyjscie z listy\r\n $scope.cancel = function () {\r\n $modalInstance.dismiss('cancel');\r\n };\r\n};\r\n\r\n/* pokazywanie systemowych wiadomości */\r\nvar ClientInfoMessageCtrl = function ($scope, $modalInstance, infoMessage) {\r\n\r\n $scope.infoMessage = infoMessage;\r\n\r\n $scope.cancel = function () {\r\n $modalInstance.dismiss('cancel');\r\n };\r\n};\r\n\r\nvar OfferDeniedCtrl = function ($scope) {\r\n\r\n\r\n console.log($scope)\r\n\r\n $scope.$watch('RequestId', function () {\r\n if ($scope.Renew == 'true')\r\n $scope.mailLink = \"mailto:link@leaselink.pl?subject=Przywróć umowę GUID \" + $scope.RequestId;\r\n else {\r\n $scope.mailLink = \"mailto:link@leaselink.pl?subject=\" + $scope.RequestId;\r\n }\r\n\r\n })\r\n\r\n\r\n}"]}