{"version":3,"sources":["environment.prod.swflow.js","config.js","core.application.js","ColorRequests/colorrequest/controllers/colorRequestEditCtrl.js","templates.js","BonusesAndSponsorships/config/routes.js","BonusesAndSponsorships/controllers/bonusDashboardCtrl.js","BonusesAndSponsorships/controllers/bonusEditCtrl.js","BonusesAndSponsorships/controllers/bonusListCtrl.js","BonusesAndSponsorships/services/bonusrequest.service.js","Commom/services/workflowapproval.service.js","ColorRequests/colorrequest/config/routes.js","ColorRequests/colorrequest/controllers/colorRequestExternalEditCtrl.js","ColorRequests/colorrequest/controllers/colorRequestListCtrl.js","ColorRequests/colorrequest/services/chat.service.js","ColorRequests/colorrequest/services/colorrequest.service.js","Commom/attachment/services/attachment.service.js","Commom/attachmenttype/services/attachmenttype.service.js","Commom/auth/services/auth.service.js","Commom/auth/controllers/authCtrl.js","Commom/auth/controllers/forgotPasswordCtrl.js","Commom/auth/controllers/passwordResetCtrl.js","Commom/auth/controllers/signupCtrl.js","Commom/core/config/routes.js","Commom/core/controllers/controlPanelCtrl.js","Commom/core/controllers/sidebarCtrl.js","Commom/core/directives/address.directive.js","Commom/core/directives/cpf.cnpj.validate.directive.js","Commom/dashboard/controllers/dashboardColorsCtrl.js","Commom/core/directives/date.after.or.equal.validate.directive.js","Commom/core/directives/date.time.directive.js","Commom/core/directives/filter.form.directive.js","Commom/core/directives/focus.invalid.onsubmit.directive.js","Commom/core/directives/imagecrop.directive.js","Commom/core/directives/keywordfilter.directive.js","Commom/core/directives/notification.list.directive.js","Commom/core/directives/pagination.table.directive.js","Commom/core/directives/panelempty.directive.js","Commom/core/directives/pickadate.directive.js","Commom/core/directives/scroll.to.bottom.directive.js","Commom/core/directives/tag.input.directive.js","Commom/core/directives/window.back.directive.js","Commom/core/filters/filename.filter.js","Commom/core/filters/numberfixedlen.filter.js","Commom/core/services/alerts.service.js","Commom/core/services/auth.interceptor.service.js","Commom/core/services/cropImage.service.js","Commom/core/services/dataURItoBlob.service.js","Commom/core/services/enumerators.service.js","Commom/core/services/message.service.js","Commom/core/services/page.service.js","Commom/core/services/permission.service.js","Commom/core/services/settings.service.js","Commom/core/services/tools.service.js","Commom/customer/config/routes.js","Commom/customer/controllers/customerEditCtrl.js","Commom/customer/controllers/customerListCtrl.js","Commom/customer/controllers/customerUploadCtrl.js","Commom/customer/services/customer.service.js","Commom/dashboard/config/routes.js","Commom/dashboard/controllers/dashboardCtrl.js","Commom/dashboard/services/dashboard.service.js","Commom/disapprovalreason/config/routes.js","Commom/disapprovalreason/controllers/disapprovalReasonEditCtrl.js","Commom/disapprovalreason/controllers/disapprovalReasonListCtrl.js","Commom/disapprovalreason/services/disapprovalreason.service.js","Commom/reports/config/routes.js","Commom/reports/controllers/reportsUsersCtrl.js","Commom/reports/services/reports.service.js","Commom/status/services/status.service.js","Commom/user/config/routes.js","Commom/user/controllers/userEditCtrl.js","Commom/user/controllers/userInvite.js","Commom/user/controllers/userListCtrl.js","Commom/user/controllers/userPasswordChangeCtrl.js","Commom/user/services/user.service.js","SWFlow/goal/config/routes.js","SWFlow/goal/controllers/goalEditCtrl.js","SWFlow/goal/controllers/goalListCtrl.js","SWFlow/goal/services/goal.service.js","SWFlow/internal/services/internal.service.js","SWFlow/productsegment/config/routes.js","SWFlow/productsegment/controllers/productSegmentEditCtrl.js","SWFlow/productsegment/controllers/productSegmentListCtrl.js","SWFlow/productsegment/services/productsegment.service.js","SWFlow/promotionrequest/config/routes.js","SWFlow/promotionrequest/controllers/promotionRequestEditCtrl.js","SWFlow/promotionrequest/controllers/promotionRequestListCtrl.js","SWFlow/promotionrequest/services/promotionrequest.service.js","SWFlow/promotionrequestgoal/services/promotionrequestgoal.service.js","SWFlow/promotionrequestproductsegment/services/promotionrequestproductsegment.service.js","SWFlow/promotionrequestrevenue/services/promotionrequestrevenue.service.js","SWFlow/promotionrequesttype/services/promotionrequesttype.service.js","SWFlow/targetaudience/services/targetaudience.service.js"],"names":["window","config","title","baseUri","chatUri","chatHubsUrl","defaultImage","cdnUrl","cdnUrlFilesTempPath","version","projectModule","rootLangFolder","defaultPageSize","themeColor","broswerConfig","faviconUrlApple","faviconUrl32","faviconUrl16","faviconUrl","systemMessages","sessionExpired","enumerators","statusApproval","Pendente","Aprovado","Reprovado","Cancelado","productSegment","ARCH","AERO","attachmentType","PromotionProof","Invoice","Mechanics","Layout","AcquittanceDoc","Financial","Design","Project","InvoiceSale","AuxDocuments","revenueType","YTD","FullYear","modules","Acoes","Cores","statusColor","EmEspera","AguardandoIniciodeProducao","EmProducao","AguardandoSolicitante","AguardandoAnaliseSW","RevisaoSolicitadaSW","ProjetoVerificado12","RevisaoSolicitadaConsumidor","ProjetoAprovado","ConcluidoVenda","ConcluidoSemVenda","ProjetoVerificado22","customersTypes","Revenda","Propria","disapprovalReasonsTypes","Consumidor","SemVenda","enumGroupsColorsRequests","VendedorBalcao","Designer","GerenteRegional","Financeiro","ControleQualidade","GerenteNacional","ApplicationConfiguration","applicationModuleName","applicationModuleVendorDependencies","registerModule","moduleName","dependencies","angular","module","requires","push","_typeof","o","Symbol","iterator","constructor","prototype","loadScript","url","callback","script","document","createElement","src","type","async","onload","head","appendChild","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","minLen","n","_arrayLikeToArray","Object","toString","call","slice","name","Array","from","test","iter","isArray","len","length","i","arr2","ownKeys","e","r","t","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","arguments","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","key","value","_toPropertyKey","configurable","writable","_toPrimitive","String","toPrimitive","Number","Date","toJSON","moment","this","toISOString","constant","$httpProvider","convertDateStringsToDates","input","milliseconds","hasOwnProperty","match","regexIso8601","parse","isNaN","utc","toDate","defaults","transformResponse","response","interceptors","run","$rootScope","$state","settings","$on","event","toState","groups","find","x","groupId","preventDefault","go","factory","$injector","exception","cause","$log","get","alertError","warn","laddaProvider","setOption","style","spinnerSize","spinnerColor","flowFactoryProvider","target","permanentErrors","minFileSize","$translateProvider","apiSettings","useStaticFilesLoader","prefix","suffix","preferredLanguage","useSanitizeValueStrategy","$ngConfirm","toParams","fromState","fromParams","error","icon","content","data","theme","scope","buttons","ok","action","signOut","setRedirect","defaultErrorMessageResolver","setI18nFileRootPath","setCulture","getErrorMessages","then","errorMessages","firebase","initializeApp","apiKey","authDomain","projectId","storageBucket","messagingSenderId","appId","measurementId","firebaseConfig","messaging","navigator","serviceWorker","register","registration","ready","useServiceWorker","requestPermission","getToken","vapidKey","token","setWebPushToken","err","$templateCache","put","$stateProvider","$urlRouterProvider","state","resolve","model","BonusRequest","dashboard","$promise","list","$stateParams","dashboardPage","views","main","templateUrl","controller","controllerAs","subAreas","status","solicitants","id","types","deposits","all","productLines","attachment","Attachment","promotionRequestId","moduleId","workflowApprovals","WorkflowApproval","page","pageSize","$scope","$filter","vm","pagination","currentPage","pagesTotal","total","extend","$parent","insertUrl","$watch","newValue","oldValue","refresh","customer","cnpjCpf","params","userName","cpfCnpj","statusId","bonusesAndSponsorshipsRequestSubAreaId","subAreaId","userId","solicitantId","search","$window","$localStorage","MessageService","tools","isNewRequest","isEditingEnabled","enableApproval","attachments","enableSubAreaElement","userGroups","authorizationData","user","attachmentEditing","isAttaching","attachmentsInvoiceSale","countAttachments","tempFolder","getRandomString","uploadConfig","singleFile","testChunks","headers","Authorization","allowedFileExtensions","maxAllowedFileSiz","initNewAttachment","attachmentId","attachmentTypeId","isDeleted","isEditing","requiredDbUpdate","deleteAttachment","item","showAttachmentForm","visible","enumAttachmentType","attachType","maxAllowedFileSize","resetAttachmentForm","form","colorrequestAttachmentForm","$setPristine","$setUntouched","editAttachment","copy","saveAttachment","laddaLoading","bonusesAndSponsorshipsRequestId","uploadSubmit","$files","$event","$flow","splitFileName","undefined","validateFileMaxSize","size","split","date","month","d","getMonth","day","getDate","year","getFullYear","hour","getHours","minute","getMinutes","second","getSeconds","join","upload","uploadSuccess","$file","$message","uploadResult","JSON","originalFilename","fileDocument","filename","getFileTempPath","cancel","getallowedFileExtensions","getFileExtension","transformName","substr","getAttachs","bonusesAndSponsorshipsRequestDepositId","index","element","selectedDeposit","bonusesAndSponsorshipsRequestTypeId","selectedType","selectedSubArea","bonusesAndSponsorshipsRequestProductLineId","selectedProductLine","isEditingRequest","validateRequiredToApproval","canApprove","setEditingEnabled","isCreatingNewRequest","setCreatingRequest","getCustomers","val","customerList","keyword","validateComment","msg","comment","alertInfo","save","value2","customerName","customerId","value1","startsOn","description","workflowApprovalNext","enumStatusApproval","attachmentsTypes","order","enumType","permissionToEdit","insert","update","approve","confirm","doApproval","disapprove","doCancel","getWorkflowApprovalParameter","workFlowApproval","$http","permissionService","FileSaver","Reports","Customer","subArea","productLine","$resource","method","delete","updateColor","complete","expired","Status","listIds","states","Internal","managers","ownUsersList","isManager","ColorRequest","attachmentTypes","parameters","entry","classificationsTypes","projectsTypes","customers","segments","segmentsList","designers","designersList","reproveReasons","DisapprovalReason","salesList","listSales","colorsRequestId","holidays","nationalHolidays","Chat","Alerts","$timeout","$location","$anchorScroll","isChatOpened","uploader","oldModel","connect","customerTypeIdSelected","customersTypeId","dueDate","setHours","expectedDate","msgProjectAttachHasChanged","lastWorkflowApproval","rows","attachmentsDesign","attachmentsProject","attachmentsInvoiceSaleList","chatImage","isReprove","isReproveReasons","isInsertSale","showSales","addClassErrorPhotoProject","addClassErrorPhotoDesign","addClassErrorInvoiceSale","sale","valueTintingProducts","valueOthersProducts","colorsProducts","othersProducts","countAttachmentsDesign","countAttachmentsProject","countAttachmentsInvoiceSale","uploadImageConfig","classificationsType","projectsType","createNotificationAlert","dateInput","timeInput","timeParts","hours","parseInt","minutes","timezoneOffset","setMinutes","getTimezoneOffset","offsetHours","Math","floor","abs","offsetMinutes","formattedOffset","concat","offsetSign","padStart","localISOString","formattedDate","pushNotification","alertType","showAlert","insertNew","enumAlertType","alertData","alertDate","alertTargetKey","updateCount","selectedCustomer","getCustomer","getColors","colorsList","insertText","features","code","color","delColor","colors","indexOf","splice","deleteOrEditProjectAttachCQ","validateFileExtension","selectCustomer","verifyCustomer","error120","errorDesigner","isBonusAccounts","disapprovalReasonId","loading","isStrategicAccounts","fiveOrMore","validateIfPassStatusOrSave","expectedDateIsValid","projectExists","statusNeedProject","changeStatusAttachProject","showDueDate","message","statusNameNext","changeStatus","commentRequired","statusNamePrevious","finishProject","salesListHasLength","disapprovalReasonTypeId","othersReason","approveReprove","permissions","includes","noColorProductId","insertSale","getAttachsAndSales","cancelInsertSale","getTintingProducts","autoCompleteProducts","colorsProductsList","getOthersProducts","othersProductsList","exist","colorsProductId","map","colorProduct","colorId","colorName","rgb","productName","productId","salesProductColor","othersProductId","otherProduct","delColorProduct","delOtherProduct","editSale","saleId","saleGet","deleteSale","getSales","selectedReason","customReason","openModal","reproveSaleId","$","modal","submitApproval","attachId","salesApproval","updateComment","formSalesList","saleList","totalSale","createdOn","saleTotal","sumValueTintingProducts","sumValueOthersProducts","attach","y","isBusinessDay","isBuDay","getDay","dateToCompare","getTime","setExpectedDate","countDays","setDate","showProjectAttachment","deleteOrEditProjectAttachDesigner","showApprovalAttachButtons","showInsertButtonProjectAttachment","disabledChangeExpectedDate","editSaveColorRequest","sendCommentPreviousStatus","isRequiredToApproval","showButtonInsertSale","finishedOn","showSaveButton","showInitProductionButton","showFinishProjectButton","showApproveReproveButton","showApproveButton","getLabelApproveButton","_vm$model$status","isCompleted","pendingRequestAction","showReproveButton","getLabelReproveButton","_vm$model$status2","showListDesigners","showBonusFields","toggleChat","markAllAsRead","unreadMessages","scrollChatToBottom","chatEvent","chatMessages","payload","messages","_ref","ColorsRequestId","UserId","Audio","play","initChat","chat","autoChatStarted","sendMessage","chatMessage","sendImageMessage","hash","uploadImageSubmit","ramdomName","uploadImageSuccess","folder","getFileChatPath","replace","c","crypto","getRandomValues","Uint8Array","exitChat","hasColorSample","hasColorSampleLastAskedOn","setMonth","currentDate","updateHasColorSample","isCompletedRequest","insertExternal","nextStatus","$sessionStorage","$translate","initialized","isRefreshing","isAuthorized","filterCustomer","todayDate","_filter","colorsRequestsContextFilter","colorsRequestsContextFilter_Customer","now","endsOn","excel","firstDayOfTodayYear","colorRequestExcel","format","saveAs","showConsumer","showDeleteButton","currentStatusId","showNewExternalRequest","confirmDelete","deleteColor","updateFilters","connection","chatHub","client","broadcastMessage","$broadcast","receiveNotification","broadcastOnLine","hubConnection","hub","start","jsonp","done","server","registerConnection","fail","isConnecting","isConnected","connectionState","imageUrl","listCustomersIds","dash","signin","validateToken","forgotPassword","passwordReset","passwordResetRandom","passwordChange","refreshFcmToken","logout","Auth","$reset","prepend","addClass","authenticate","auth_error","email","password","setUser","clearSessionFilters","redirectTo","clearRedirect","sendEmail","post","changePassword","passwordConfirm","newPassword","passwordConfirmation","User","inviteValidate","authCodeGuid","tokenEmail","values","step","acceptedTerms","nextStep","submit","confirmPassword","inviteSignup","otherwise","","auth@login","auth@signup","auth@forgotPassword","auth@passwordReset","$document","$sce","globalConfig","resize","h","innerHeight","t1","outerHeight","t2","height","body","scrollTop","documentElement","isMobile","closeMenu","bind","smConfig","lang","toolbar","callbacks","onPaste","bufferText","originalEvent","clipboardData","getData","setTimeout","execCommand","toggleMenu","menuOpened","enumContentArea","routeData","quit","pageTitle","pageTitfaviconUrlApplele","scriptUrl","trustAsResourceUrl","isDesigner","menu","isVendedor","isControleDeQualidade","task","submenu","path","unshift","blank","toggleSubmenu","toggle","directive","LocationService","restrict","address","isRequired","link","attrs","cities","formerZipCode","zipCode","zipCodeChange","getZipCodeLocation","stateId","getCities","cityId","address1","address2","neighborhood","getStates","onStateChange","require","$element","$attrs","ctrl","validate","viewValue","$setValidity","validateCpfOrCnpj","$parsers","$formatters","validateCnpj","validateCpf","result","dv","d1","charAt","dateModel","comparisonModel","dateAfterOrEqual","validationEnabled","dateValidateEnabled","isValid","isSameOrAfter","$observe","$viewValue","dateField","valueAsDate","valueAsTime","setFormFields","setDateField","onSubmit","useAllFilters","getFilters","designerName","managerId","hasApprovalPedingSalesOnly","showManagementVisibleOnlyFields","showManagerColumn","showRequesterColumn","elem","on","firstInvalid","querySelector","focus","dataURItoBlob","areaType","aspectRatio","width","targetWidth","targetHeight","image","Flow","imageSize","w","resultImageSize","temporaryFileUpload","reader","FileReader","evt","$apply","sourceCropImage","file","readAsDataURL","croppedImageUpload","cropping","blob","convert","targetCropImage","files","FlowFile","cancelCrop","chunk","help","notifications","isVisible","updateNotificationCount","getNotificationCount","notificationCount","loadNotifications","markAsRead","alertGuid","read","readAll","deleteNotification","notificationDetails","alertTarget","formatElapsedTime","inputDate","localTime","toLocaleString","template","$parse","ngModel","pickadate","selectMonths","selectYears","onOpen","set","$modelValue","onSet","pickatime","formatSubmit","scrollToBottom","attr","$watchCollection","newVal","scrollHeight","tagField","fieldLabel","tagArray","setTagField","text","history","back","lastIndexOf","substring","num","count","$q","authInterceptorServiceFactory","request","authData","service","self","dataURI","binary","atob","mimeString","array","charCodeAt","Blob","_body","callbackOk","autoClose","alertWarning","yes","no","callbackYes","dest","diff","_len","staffId","isAdmin","avatar","webPushToken","isSigned","displayName","imageAvatar","deviceToken","_webPushToken","localStorage","clear","empty","propName","propValue","arrLength","chars","random","f","pop","sizeBytes","extension","toLocaleLowerCase","toUpperCase","getSizeMB","a","check","userAgent","vendor","opera","isAdminAccessAuthorized","isOwnCustomer","_vm$model$isSPNotCapi","_isSaoPaulo","verifyColorsAndSaoPaulo","_vm$model$isSPCapitol","isSPCapitol","isSPNotCapitol","_vm$model$isSPNotCapi2","_vm$model$isSPCapitol2","goToImport","customerExcel","errors","getallowedFileExtensionsLabel","hasErrors","uploadError","resetForm","customerUploadForm","listMinified","import","customersOwnList","customersAutocomplete","Dashboard","requiredApprovals","PromotionRequest","requiresApproval","filterCollapse","dashCollapse","chartOptions","responsive","events","tooltips","enabled","layout","padding","top","animation","duration","onComplete","chartInstance","chart","ctx","font","Chart","helpers","fontString","global","defaultFontStyle","defaultFontFamily","textAlign","textBaseline","fillStyle","currencyFormat","canvas","getAttribute","datasets","dataset","getDatasetMeta","bar","formattedValue","minimumFractionDigits","maximumFractionDigits","fillText","_model","getThisYearMonthsLabels","mesAtual","months","showStatusList","showRankings","showManagmentDash","showTotalCards","fillDash","position","productsList","statusList","labels","colorsChart","countProjects","reduce","sum","barLineChartProjectsFill","barLineChartSalesFill","barLineChartFillProjectsGerentes","barLineChartFillSalesGerentes","barLineChartOtherProductsFill","barLineChartTintingProductsFill","fillChartData","dataSource","chartType","colorBar","colorLine","_customChartOption","assign","years","series","maxYear","max","formattedSeries","yearStr","_index","baseColor","border","increment","lineColor","datasetOverride","backgroundColor","borderColor","borderWidth","s","fill","clip","pointBorderColor","pointBackgroundColor","pointHoverBackgroundColor","pointHoverBorderColor","yAxisID","scales","yAxes","gridLines","drawOnArea","ticks","autoSkip","fontSize","maxTicksLimit","beginAtZero","legend","options","chartProjectsData","projectsEvolutionWithLastYearChart","chartSalesData","salesTotalEvolutionWithLastYearChart","chartOtherProductsData","salesOthersProductsEvolutionWithLastYearChart","chartTintingProductsData","salesTintingProductsEvolutionWithLastYearChart","findNearestIndexInChartGerentes","selectedMonth","labelIndex","fillManagerChart","dashSource","chartData","dateNow","toLowerCase","originalData","originalLabels","projectsEvolutionByManagerChart","chartProjectsGerentesData","updateProjectsManagerChart","salesEvolutionByManagerChart","chartSalesGerentesData","updateSalesManagerChart","updateManagerChart","to","users","usersExcel","Accept","Content-type","responseType","xlsx","promotionRequestExcel","current","language","Enumerators","query","salesTeam","editingUserIdEditing","listSalesTeam","managersColor","customersOwn","approvers","enumLanguage","groupsActions","groupsColors","groupsBonusesAndSponsorship","tab","addCustomer","customerAlreadyAdded","cnpjMasked","companyName","tradingName","manager","removeCustomer","bonusesAndSponsorshipsSubAreas","addArea","selectedArea","removeArea","getAreaName","areaId","area","option","managerColorIds","approverId","resetPasswordEmail","reject","isGerenteRegional","verifySaoPaulo","isSalesTeam","managerUserId","managerOneId","managerTwoId","verifyDesigner","verifyRegionalManager","verifyStatesList","verifySalesman","verifyIsColorCustomer","resetPassword","changeTab","managerOne","fillManagersColors","managerTwo","newInvitation","invite","onlyApprovedUsers","filterUsers","newpassword","Goal","goalId","reproveReasonsList","ProductSegment","productSegmentId","workflowPendingDaysLate","promotionRequestTypes","PromotionRequestType","listByPromotionRequest","productSegments","goals","targetAudiences","TargetAudience","revenues","PromotionRequestRevenue","attachmentTypesActiveIndex","isSelloutAction","isProformaApproved","chartConfig","cutoutPercentage","chartColors","hoverBackgroundColor","hoverBorderColor","selectedPromotionType","promotionRequestTypeId","isNewPromotionRequest","filterRevenueYTD","enumRevenueType","filterRevenueFullYear","calcMarginAmount","additionalRevenue","margin","calcRoi","calcPercentage","investmentAmount","calcRevenuePercentYTD","calcRevenuePercent","calcRevenuePercentFullYear","revenuesFiltered","results","revenue","isProductSegmentChecked","amount2","amount1","calcAverage","numerator","denominator","isAeroSelected","isArchSelected","getTitleRevenue","getLabelRevenue","column","label","revenueChartDataYTD","getRevenueChartDataYTD","getRevenueChartData","revenueChartDataFullYear","getRevenueChartDataFullYear","percent","refreshRevenueInfoByCustomer","listbycustomer","refreshPromotionRequestsTypes","isSellOut","refreshCities","changePromotionRequestType","getAttachmentTypeActive","promotionrequestAttachmentForm","getAttachmentsByEnumType","isAttachmentTypeInvoice","isTargetAudienceOtherSelected","targetAudience","targetAudienceId","isOther","getLabelSaveButton","isStatusDraft","getLabelApprovalButton","isInvoiceRequired","isDraft","isStatusCompleted","isStatusCheckpoint","isCheckpoint","isStatusMarginRequired","isMarginRequired","editingEnabled","editingAttachmentsEnabled","isOwner","editingInvestmentValuesEnabled","previousWorkflowDisapproved","editingMarginEnabled","approvalEnabled","saveEnabled","approvalWithSaveEnabled","currentUserIsFinancialGroup","hasPromotionProofAttachmentsPending","hasInvoiceAttachmentsPending","validateForm","hasLayoutApproval","targetAudienceOther","getEnumStatusApprovalClass","enumStatusApprovalId","messagePendingInvoce","doComplete","IsWorkflowLate","days","getWorkflowPendingDaysLabel","getDefaultSearchParameter","regionalManager","nationalManager","isWorkflowLate"],"mappings":"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","file":"app.js","sourcesContent":["\nwindow.config = {\n title: 'SW Flow',\n baseUri: 'https://api.swflow.com/',\n chatUri: 'https://api.swflow.com/signalr',\n chatHubsUrl: 'https://api.swflow.com/signalr/hubs',\n defaultImage: 'https://cdn.swflow.com/default.png',\n cdnUrl: 'https://cdn.swflow.com/',\n cdnUrlFilesTempPath: 'https://cdn.swflow.com/files/temp',\n version: '2.0',\n projectModule: 'SWFlow',\n rootLangFolder: '',\n defaultPageSize: 10,\n\n themeColor: '#0067b2',\n broswerConfig: '/images/Favicons/swflow-browserconfig.xml',\n faviconUrlApple: '/images/Favicons/swflow-apple-touch-icon.png',\n faviconUrl32: '/images/Favicons/swflow-favicon-32x32.png',\n faviconUrl16: '/images/Favicons/swflow-favicon-16x16.png',\n faviconUrl: '/images/Favicons/swflow-favicon.ico'\n};\n\nwindow.systemMessages = {\n sessionExpired: 'Sessão expirada. Por favor efetue o login novamente.'\n};\n\nwindow.enumerators = {\n statusApproval: { \"Pendente\": 1, \"Aprovado\": 2, \"Reprovado\": 3, \"Cancelado\": 4 },\n productSegment: { \"ARCH\": 1, \"AERO\": 2 },\n attachmentType: { \"PromotionProof\": 1, \"Invoice\": 2, \"Mechanics\": 3, \"Layout\": 4, \"AcquittanceDoc\": 5, \"Financial\": 6, \"Design\": 7, \"Project\": 8, \"InvoiceSale\": 9, \"AuxDocuments\": 10 },\n revenueType: { \"YTD\": 1, \"FullYear\": 2 },\n modules: { \"Acoes\": 1, \"Cores\": 2 },\n statusColor: { \"EmEspera\": 500, \"AguardandoIniciodeProducao\": 510, \"EmProducao\": 520, \"AguardandoSolicitante\": 530, \"AguardandoAnaliseSW\": 540, \"RevisaoSolicitadaSW\": 550, \"ProjetoVerificado12\": 560, \"RevisaoSolicitadaConsumidor\": 570, \"ProjetoAprovado\": 580, \"ConcluidoVenda\": 590, \"ConcluidoSemVenda\": 600, \"ProjetoVerificado22\": 610 },\n customersTypes: { \"Revenda\": 1, \"Propria\": 2 },\n disapprovalReasonsTypes: { \"Consumidor\": 1, \"SemVenda\": 2 },\n enumGroupsColorsRequests: { \"VendedorBalcao\": 1017, \"Designer\": 1018, \"GerenteRegional\": 1021, \"Financeiro\": 1024, \"ControleQualidade\": 1025, \"GerenteNacional\": 1026 },\n};","'use strict';\n\n// Init the application configuration module for AngularJS application\nvar ApplicationConfiguration = (function () {\n\t// Init module configuration options\n\tvar applicationModuleName = 'controlPanelApp';\n\n\tvar applicationModuleVendorDependencies = [\n\t\t'ngAnimate',\n\t\t'ngResource',\n\t\t'jcs-autoValidate',\n\t\t'ngStorage',\n\t\t'ui.router',\n\t\t'ngTouch',\n\t\t'summernote',\n\t\t'ui.bootstrap',\n\t\t'angular-loading-bar',\n\t\t'colorpicker.module',\n\t\t'videosharing-embed',\n\t\t'flow',\n\t\t'ui.utils.masks',\n\t\t'uiCropper',\n\t\t'cp.ngConfirm',\n\t\t'angular-ladda',\n\t\t'ngTagsInput',\n\t\t'idf.br-filters',\n\t\t'ngRateIt',\n\t\t'chart.js',\n\t\t'pascalprecht.translate',\n\t\t'ngFileSaver',\n\t\t'ui.bootstrap',\n\t\t'checklist-model'\n\t]\n\n\t// Add a new vertical module\n\tvar registerModule = function (moduleName, dependencies) {\n\t\t// Create angular module\n\t\tangular.module(moduleName, dependencies || []);\n\n\t\t// Add the module to the AngularJS configuration file\n\t\tangular.module(applicationModuleName).requires.push(moduleName);\n\t};\n\n\treturn {\n\t\tapplicationModuleName: applicationModuleName,\n\t\tapplicationModuleVendorDependencies: applicationModuleVendorDependencies,\n\t\tregisterModule: registerModule\n\t};\n})();","\"use strict\";\n\n// Função para carregar scripts de forma assíncrona\nfunction loadScript(url, callback) {\n var script = document.createElement('script');\n script.src = url;\n script.type = 'text/javascript';\n script.async = true;\n script.onload = callback;\n document.head.appendChild(script);\n}\n\nDate.prototype.toJSON = function () {\n return moment(this).toISOString();\n};\n\nangular.module(\n ApplicationConfiguration.applicationModuleName,\n ApplicationConfiguration.applicationModuleVendorDependencies\n);\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .constant(\"apiSettings\", window.config);\n\nangular.module(\"ngRateIt\", []);\n\nangular.module(ApplicationConfiguration.applicationModuleName).config([\n \"$httpProvider\",\n function ($httpProvider) {\n // Date format\n var regexIso8601 =\n /\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z)/;\n\n var convertDateStringsToDates = function (input) {\n // Ignore things that aren't objects.\n if (typeof input !== \"object\") return input;\n\n for (var key in input) {\n if (!input.hasOwnProperty(key)) continue;\n\n var value = input[key];\n var match;\n\n // Check for string properties which look like dates.\n if (typeof value === \"string\" && (match = value.match(regexIso8601))) {\n var milliseconds = Date.parse(match[0]);\n\n if (!isNaN(milliseconds)) {\n input[key] = moment.utc(milliseconds).toDate();\n }\n } else if (typeof value === \"object\") {\n // Recurse into object\n convertDateStringsToDates(value);\n }\n }\n };\n\n $httpProvider.defaults.transformResponse.push(function (response) {\n convertDateStringsToDates(response);\n\n return response;\n });\n\n // $httpProvider\n $httpProvider.interceptors.push(\"authInterceptorService\");\n },\n]);\n\n\nangular.module(ApplicationConfiguration.applicationModuleName).run([\n \"$rootScope\",\n \"$state\",\n \"settings\",\n function ($rootScope, $state, settings) {\n $rootScope.$on(\"$stateChangeStart\", (event, toState) => {\n if (toState.name === \"main.colorrequestexternal\") {\n const groups = window.enumerators.enumGroupsColorsRequests;\n const hasAccess =\n settings.groups &&\n settings.groups.find((x) => x.groupId === groups.ControleQualidade);\n\n if (!hasAccess) {\n event.preventDefault();\n $state.go(\"main.colorrequest\");\n }\n }\n });\n },\n]);\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .factory(\"$exceptionHandler\", function ($injector) {\n // Referência para evitar falha de dependência circular\n // https://stackoverflow.com/questions/22332130/injecting-http-into-angular-factoryexceptionhandler-results-in-a-circular-de\n return function (exception, cause) {\n var $log = $injector.get(\"$log\");\n var MessageService = $injector.get(\"MessageService\");\n\n MessageService.alertError(exception);\n\n $log.warn(exception, cause);\n };\n });\n\n// Ladda\nangular.module(ApplicationConfiguration.applicationModuleName).config([\n \"laddaProvider\",\n function (laddaProvider) {\n laddaProvider.setOption({\n style: \"expand-left\",\n spinnerSize: 35,\n spinnerColor: \"#ffffff\",\n });\n },\n]);\n\n// Flow\nangular.module(ApplicationConfiguration.applicationModuleName).config([\n \"flowFactoryProvider\",\n function (flowFactoryProvider) {\n flowFactoryProvider.defaults = {\n target: \"/upload\",\n permanentErrors: [404, 500, 501],\n minFileSize: 0,\n };\n },\n]);\n\n// Translation\nangular.module(ApplicationConfiguration.applicationModuleName).config([\n \"$translateProvider\",\n \"apiSettings\",\n function ($translateProvider, apiSettings) {\n $translateProvider.useStaticFilesLoader({\n prefix: apiSettings.rootLangFolder + \"/lang/\",\n suffix: \".json\",\n });\n\n $translateProvider.preferredLanguage(\"pt-BR\");\n\n $translateProvider.useSanitizeValueStrategy(\"escape\");\n },\n]);\n\nangular.module(ApplicationConfiguration.applicationModuleName).run([\n \"$rootScope\",\n \"$log\",\n \"$ngConfirm\",\n \"$state\",\n \"settings\",\n function ($rootScope, $log, $ngConfirm, $state, settings) {\n $rootScope.$on(\n \"$stateChangeError\",\n function (event, toState, toParams, fromState, fromParams, error) {\n $log.warn(error);\n\n $ngConfirm({\n title: \"Ocorreu um erro...\",\n icon: \"glyphicon glyphicon-exclamation-sign\",\n content: error.data,\n theme: \"supervan\",\n type: \"red\",\n scope: $rootScope,\n buttons: {\n ok: {\n keys: [\"enter\"],\n action: function (scope) {\n if (\n error.data == null ||\n error.data == window.systemMessages.sessionExpired\n ) {\n settings.signOut();\n settings.setRedirect(toState, toParams);\n $state.go(\"login\");\n }\n },\n },\n },\n });\n }\n );\n\n },\n]);\n\nangular.module(ApplicationConfiguration.applicationModuleName).run([\n \"defaultErrorMessageResolver\",\n function (defaultErrorMessageResolver) {\n defaultErrorMessageResolver.setI18nFileRootPath(\n window.config.rootLangFolder + \"/lang/angular-auto-validate\"\n );\n\n defaultErrorMessageResolver.setCulture(\"pt-BR\");\n\n // Mensagens de erro customizadas\n defaultErrorMessageResolver\n .getErrorMessages()\n .then(function (errorMessages) {\n errorMessages[\"required\"] = \"Campo obrigatório\";\n errorMessages[\"brPhoneNumber\"] = \"Telefone inválido\";\n errorMessages[\"cep\"] = \"CEP inválido\";\n errorMessages[\"editable\"] = \"\";\n errorMessages[\"invalidCustomer\"] = \"Cliente inválido\";\n errorMessages[\"invalidColor\"] = \"Cor inválida\";\n errorMessages[\"date-after-or-equal\"] = \"Data inválida\";\n errorMessages[\"startAfterEnd\"] = \"Período inválido\";\n errorMessages[\"startBeforeSysDate\"] = \"Início inválido\";\n errorMessages[\"invalidCpfCnpj\"] = \"CPF/CNPJ inválido\";\n });\n },\n]);\n\n// Firebase Messaging\nangular.module(ApplicationConfiguration.applicationModuleName).run(['settings', function (settings) {\n\n if (window.config.projectModule == 'Colors') {\n\n loadScript('https://www.gstatic.com/firebasejs/8.10.0/firebase-app.js', function () {\n loadScript('https://www.gstatic.com/firebasejs/8.10.0/firebase-messaging.js', function () {\n\n var firebaseConfig = {\n apiKey: \"AIzaSyDwHAWIHQ1Gg_hl6l3-8i0Bhy20zSpQS44\",\n authDomain: \"sw-flow.firebaseapp.com\",\n projectId: \"sw-flow\",\n storageBucket: \"sw-flow.appspot.com\",\n messagingSenderId: \"235227703680\",\n appId: \"1:235227703680:web:cc027e55734a059b617965\",\n measurementId: \"G-4JY1QN7LN9\"\n };\n\n // Inicializa o Firebase\n firebase.initializeApp(firebaseConfig);\n\n // Obtém a instância de messaging\n const messaging = firebase.messaging();\n\n // Verifica se o navegador suporta service workers\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.register('/firebase-messaging-sw.js')\n .then(function (registration) {\n // Aguarda a ativação do service worker\n return navigator.serviceWorker.ready;\n })\n .then(function (registration) {\n const messaging = firebase.messaging();\n messaging.useServiceWorker(registration);\n\n // Solicita permissão ao usuário\n return messaging.requestPermission();\n })\n .then(function () {\n // Obtem o token do usuário\n return messaging.getToken({ vapidKey: 'BJkpnlQR2t5HURhdNQIzW-TCBBsuJy0Z9Rc2pAXtg9PXILm2C_N9o_dhpFpGgHj8r2pLT_Ar-GhuaKonu78uhxU' });\n })\n .then(function (token) {\n // Envia o token para o backend\n settings.setWebPushToken(token);\n })\n .catch(function (err) {\n console.error('[core.application] messaging.getToken fail', err);\n });\n }\n });\n });\n\n }\n\n}]);","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .controller(\n \"colorrequestEditCtrl\",\n function (\n $scope,\n $rootScope,\n $state,\n $filter,\n $localStorage,\n apiSettings,\n Chat,\n MessageService,\n tools,\n ColorRequest,\n Customer,\n Alerts,\n WorkflowApproval,\n Internal,\n maxAllowedFileSize,\n classificationsTypes,\n projectsTypes,\n customers,\n designers,\n segments,\n model,\n settings,\n attachmentTypes,\n workflowApprovals,\n reproveReasons,\n salesList,\n Attachment,\n $timeout,\n holidays,\n $location,\n $anchorScroll,\n $stateParams\n ) {\n var vm = this;\n\n var $translate = $filter(\"translate\");\n\n\n angular.extend($scope.$parent.vm, {\n title: \"colorsRequests.settings.title\",\n insertUrl: null,\n });\n\n vm.enumerators = window.enumerators;\n vm.projectModule = config.projectModule;\n\n vm.isChatOpened = false;\n vm.userId = $localStorage.userId;\n $scope.uploader = {};\n\n // INICIALIZAÇÕES\n $rootScope.laddaLoading = false;\n vm.reproveReasons = reproveReasons;\n vm.model = model;\n vm.oldModel = {\n ...vm.model,\n };\n\n if (vm.model.colorsRequestId) {\n Chat.connect($localStorage.userId, vm.model.colorsRequestId);\n vm.customerTypeIdSelected = vm.model.customersTypeId;\n }\n\n if (vm.model.dueDate) {\n vm.model.dueDate = new Date(vm.model.dueDate);\n vm.model.dueDate.setHours(12, 0, 0);\n }\n\n if (vm.model.expectedDate) {\n vm.model.expectedDate = new Date(vm.model.expectedDate);\n vm.model.expectedDate.setHours(12, 0, 0);\n } else {\n vm.model.expectedDate = null;\n }\n\n vm.msgProjectAttachHasChanged = null;\n vm.workflowApprovals = workflowApprovals;\n // Pega a última aprovação para saber pra onde vai solicitação, para frente ou para trás.\n vm.lastWorkflowApproval =\n vm.workflowApprovals.rows[vm.workflowApprovals.rows.length - 1];\n\n vm.attachment = {}; // Inicializa a model que armazena as informações de um novo anexo\n vm.attachmentEditing = {}; // Inicializa a model que armazena as informações do anexo que está sendo editado\n vm.attachmentsDesign = attachmentTypes.filter(\n (x) => x.attachmentTypeId == window.enumerators.attachmentType.Design\n )[0].attachments;\n vm.attachmentsProject =\n attachmentTypes.filter(\n (x) => x.attachmentTypeId == window.enumerators.attachmentType.Project\n ).length > 0\n ? attachmentTypes.filter(\n (x) => x.attachmentTypeId == window.enumerators.attachmentType.Project\n )[0].attachments\n : [];\n vm.attachmentsInvoiceSaleList =\n attachmentTypes.filter(\n (x) => x.attachmentTypeId == window.enumerators.attachmentType.InvoiceSale\n ).length > 0\n ? attachmentTypes.filter(\n (x) =>\n x.attachmentTypeId == window.enumerators.attachmentType.InvoiceSale\n )[0].attachments\n : [];\n\n vm.attachments = [];\n vm.chatImage = {};\n vm.isAttaching = false;\n vm.isReprove = false;\n vm.isReproveReasons = false;\n vm.isInsertSale = false;\n vm.showSales = true;\n vm.addClassErrorPhotoProject = false;\n vm.addClassErrorPhotoDesign = false;\n vm.addClassErrorInvoiceSale = false;\n vm.sale = {\n valueTintingProducts: 0,\n valueOthersProducts: 0,\n colorsProducts: [],\n othersProducts: [],\n };\n // CONFIGURAÇÃO DO UPLOAD\n vm.attachmentsInvoiceSale = [];\n vm.countAttachmentsDesign = vm.attachmentsDesign.length;\n vm.countAttachmentsProject = vm.attachmentsProject.length;\n vm.countAttachmentsInvoiceSale = vm.attachmentsInvoiceSale.length;\n\n vm.tempFolder = tools.getRandomString(8);\n vm.uploadConfig = {\n singleFile: true,\n testChunks: false,\n target:\n apiSettings.baseUri +\n \"v1/internal/upload\" +\n \"?tempFolder=\" +\n vm.tempFolder,\n headers: {\n Authorization: \"Bearer \" + $localStorage.authorizationData.token,\n },\n };\n vm.uploadImageConfig = {\n singleFile: true,\n testChunks: false,\n target:\n apiSettings.baseUri +\n \"v1/chat/upload-image/\" +\n vm.model.colorsRequestId,\n headers: {\n Authorization: \"Bearer \" + $localStorage.authorizationData.token,\n },\n };\n vm.allowedFileExtensions = [];\n vm.maxAllowedFileSiz = 0;\n vm.classificationsType = classificationsTypes;\n vm.projectsType = projectsTypes;\n vm.customers = customers;\n vm.segments = segments;\n vm.designers = designers;\n\n vm.createNotificationAlert = function (dateInput, timeInput) {\n const date = new Date(dateInput);\n\n const timeParts = timeInput.split(':');\n const hours = parseInt(timeParts[0], 10);\n const minutes = parseInt(timeParts[1], 10);\n\n date.setHours(hours);\n date.setMinutes(minutes);\n\n const timezoneOffset = date.getTimezoneOffset();\n const offsetHours = Math.floor(Math.abs(timezoneOffset) / 60);\n const offsetMinutes = Math.abs(timezoneOffset) % 60;\n\n const offsetSign = timezoneOffset > 0 ? '-' : '+';\n const formattedOffset = `${offsetSign}${String(offsetHours).padStart(2, '0')}:${String(offsetMinutes).padStart(2, '0')}`;\n\n const localISOString = date.toISOString().slice(0, -1);\n\n const formattedDate = `${localISOString}${formattedOffset}`;\n\n\n vm.pushNotification('PersonalColorRequest', formattedDate, true)\n }\n\n vm.pushNotification = function (alertType, date, showAlert) {\n Alerts.insertNew(\n { enumAlertType: alertType },\n {\n \"alertType\": alertType,\n \"alertData\": vm.model,\n \"alertDate\": date,\n \"alertTargetKey\": vm.model.colorsRequestId,\n \"projectModule\": vm.projectModule\n },\n function (response) {\n if (showAlert) {\n MessageService.alertInfo(\n \"Lembrete criado com sucesso!\"\n );\n }\n\n Alerts.updateCount();\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n }\n\n\n\n if (vm.model.customerId && vm.customers && vm.customers.length) {\n vm.selectedCustomer = vm.customers.find(function (item) {\n return item.key == vm.model.customerId;\n })\n vm.model.customerId = null;\n }\n\n // AUTOCOMPLETE DE Cliente\n vm.getCustomer = function (val) {\n return Customer.listIds({ keyword: val }).$promise;\n };\n\n // AUTOCOMPLETE DE CORES\n vm.getColors = function (val) {\n return Internal.colorsList({ pageSize: 50, keyword: val }).$promise;\n };\n\n //AUTOCOMPLETE INSERT\n vm.insertText = function (item) {\n if (!vm.model.features) {\n vm.model.features = item.code + ' - ' + item.name;\n } else {\n vm.model.features += '\\n' + item.code + ' - ' + item.name;\n }\n\n vm.color = \"\";\n };\n\n vm.delColor = function (x) {\n var index = vm.model.colors.indexOf(x);\n vm.model.colors.splice(index, 1);\n };\n\n vm.editAttachment = function (item, enumAttachmentType) {\n vm.showAttachmentForm(true, enumAttachmentType);\n\n vm.attachmentEditing = item; //Guarda a referência do item que está sendo editado numa variável global, para que a mesma seja atualizada no caso do usuário clicar no botão salvar\n angular.copy(vm.attachmentEditing, vm.attachment); //Atualiza a model de anexo com um cópia do objeto que está sendo editado\n\n vm.attachment.isEditing = true;\n };\n\n vm.deleteAttachment = function (item, enumAttachmentType) {\n switch (enumAttachmentType) {\n case window.enumerators.attachmentType.Design:\n vm.countAttachmentsDesign -= 1;\n break;\n case window.enumerators.attachmentType.Project:\n vm.countAttachmentsProject -= 1;\n break;\n case window.enumerators.attachmentType.InvoiceSale:\n vm.countAttachmentsInvoiceSale -= 1;\n break;\n default:\n break;\n }\n item.isDeleted = true;\n item.requiredDbUpdate = true;\n };\n\n vm.showAttachmentForm = function (visible, enumAttachmentType) {\n vm.isAttaching = visible;\n vm.attachType = enumAttachmentType;\n\n switch (enumAttachmentType) {\n case window.enumerators.attachmentType.Design:\n vm.allowedFileExtensions = [\"jpeg\", \"png\", \"jpg\"];\n vm.maxAllowedFileSize = 5242880;\n break;\n case window.enumerators.attachmentType.Project:\n vm.allowedFileExtensions = [\"pdf\"];\n vm.maxAllowedFileSize = parseInt(maxAllowedFileSize.value);\n break;\n case window.enumerators.attachmentType.InvoiceSale:\n vm.allowedFileExtensions = [\"pdf\", \"jpeg\", \"png\", \"jpg\"];\n vm.maxAllowedFileSize = parseInt(maxAllowedFileSize.value);\n break;\n default:\n break;\n }\n\n vm.attachment = {\n attachmentId: 0,\n attachmentTypeId: enumAttachmentType,\n isDeleted: false,\n isEditing: false,\n requiredDbUpdate: true,\n };\n\n // Reseta o formulário caso esteja fechando a modal de inclusão do anexo\n if (visible == false) vm.resetAttachmentForm();\n };\n\n vm.resetAttachmentForm = function () {\n var form = $scope.colorrequestAttachmentForm;\n form.$setPristine();\n form.$setUntouched();\n };\n\n vm.saveAttachment = function (enumAttachmentType) {\n $rootScope.laddaLoading = true;\n\n vm.attachment.requiredDbUpdate = true;\n\n // Verifica se é uma inclusão ou edição do objeto\n if (vm.attachment.isEditing == true) {\n angular.copy(vm.attachment, vm.attachmentEditing); // Repassa as atualizações feitas na model do anexo, para o objeto de referência (anexo que está sendo editado)\n switch (enumAttachmentType) {\n case window.enumerators.attachmentType.Project:\n vm.msgProjectAttachHasChanged =\n \"Para enviar o projeto para aprovação confirme clicando no botão Salvar\";\n if (vm.deleteOrEditProjectAttachCQ()) {\n vm.msgProjectAttachHasChanged =\n \"Para prosseguir com a ATUALIZAÇÃO do projeto confirme clicando no botão Salvar\";\n }\n break;\n default:\n break;\n }\n } else {\n vm.attachments.push(vm.attachment); // Inclui o novo objeto no array\n\n switch (enumAttachmentType) {\n case window.enumerators.attachmentType.Design:\n vm.countAttachmentsDesign += 1;\n vm.attachmentsDesign.push(vm.attachment);\n vm.addClassErrorPhotoDesign = false;\n break;\n case window.enumerators.attachmentType.Project:\n vm.countAttachmentsProject += 1;\n vm.attachmentsProject.push(vm.attachment);\n vm.addClassErrorPhotoProject = false;\n vm.msgProjectAttachHasChanged =\n \"Para enviar o projeto para aprovação confirme clicando no botão Salvar\";\n if (vm.deleteOrEditProjectAttachCQ()) {\n vm.msgProjectAttachHasChanged =\n \"Para prosseguir com a INCLUSÃO do projeto confirme clicando no botão Salvar\";\n }\n break;\n case window.enumerators.attachmentType.InvoiceSale:\n vm.countAttachmentsInvoiceSale += 1;\n vm.attachmentsInvoiceSale.push(vm.attachment);\n vm.addClassErrorInvoiceSale = false;\n break;\n default:\n break;\n }\n }\n\n vm.showAttachmentForm(false, 0);\n $rootScope.laddaLoading = false;\n };\n\n vm.uploadSubmit = function ($files, $event, $flow) {\n if ($files[0] === undefined) return;\n\n // Valida se a extensão do arquivo é permitida\n if (\n tools.validateFileExtension(\n $files[0].name,\n vm.allowedFileExtensions\n ) == false\n )\n return;\n\n // Valida o tamanho do arquivo\n if (\n tools.validateFileMaxSize($files[0].size, vm.maxAllowedFileSize) ==\n false\n )\n return;\n\n $flow.upload();\n };\n\n vm.uploadSuccess = function ($file, $message, $flow) {\n var uploadResult = JSON.parse($message);\n vm.attachment.name = uploadResult.originalFilename;\n vm.attachment.fileDocument = uploadResult.filename;\n vm.attachment.url = tools.getFileTempPath(\n vm.tempFolder,\n uploadResult.filename\n );\n\n // Reseta o flow\n $flow.cancel();\n };\n\n vm.getallowedFileExtensions = function (enumAttachmentType) {\n return \".\" + vm.allowedFileExtensions.join(\", .\");\n };\n\n vm.getFileExtension = function (filename) {\n return tools.getFileExtension(filename);\n };\n\n vm.selectCustomer = function () {\n if (!vm.model.customerId) {\n return;\n }\n\n ColorRequest.verifyCustomer(\n { customerId: vm.model.customerId },\n function (response) {\n // if (response.error60) {\n // MessageService.alertInfo(\"Há projetos para esta loja com mais de 60 dias em aberto.\");\n // $state.go('main.colorrequest', {\n // expired: true\n // });\n // return;\n // }\n\n if (response.error120) {\n MessageService.alertInfo(\n \"Há projetos para esta loja com mais de 120 dias em aberto\"\n );\n $state.go(\"main.colorrequest\", {\n expired: true,\n });\n return;\n }\n\n // Se Loja Comercial e Bonificação for false devo verificar designer por uf.\n if (\n response.errorDesigner &&\n !vm.model.isBonusAccounts\n ) {\n MessageService.alertInfo(\n \"Não há Designer para UF da loja selecionada.\"\n );\n $state.go(\"main.colorrequest\");\n return;\n }\n\n vm.customerTypeIdSelected = response.customersTypeId;\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n };\n\n vm.isNewRequest = function () {\n return (\n vm.model.colorsRequestId === undefined ||\n vm.model.colorsRequestId == 0\n );\n };\n\n vm.getWorkflowApprovalParameter = function (enumStatusApproval) {\n return {\n colorsRequestId: vm.model.colorsRequestId,\n enumStatusApproval: enumStatusApproval,\n comment: vm.model.comment,\n disapprovalReasonId: vm.disapprovalReasonId\n ? vm.disapprovalReasonId\n : null,\n };\n };\n\n vm.save = function (loading) {\n if (\n vm.attachmentsDesign.length == 0 ||\n (vm.attachmentsDesign.filter((x) => x.isDeleted == true).length > 0 &&\n vm.attachmentsDesign.filter((x) => x.isDeleted == false).length ==\n 0)\n ) {\n MessageService.alertInfo(\"Pelo menos uma foto é obrigatória.\");\n return;\n }\n\n if (vm.model.isStrategicAccounts == null) {\n MessageService.alertInfo(\"Você deve definir se este é um projeto estratégico ou não.\");\n return;\n }\n\n vm.model.isStrategicAccounts\n\n if (loading) {\n $rootScope.laddaLoading = true;\n } else {\n $rootScope.laddaLoading = false;\n }\n\n vm.model.attachments = vm.attachments;\n vm.model.tempFolder = vm.tempFolder;\n\n if (vm.selectedCustomer) {\n vm.model.customerId = vm.selectedCustomer.key;\n }\n\n if (!vm.model.customerId) {\n MessageService.alertInfo(\"É necessário escolher uma loja!\");\n $rootScope.laddaLoading = false;\n return;\n }\n\n if (vm.isNewRequest()) {\n vm.model.workflowApprovalNext = vm.getWorkflowApprovalParameter(0);\n }\n\n if (vm.isNewRequest()) {\n ColorRequest.insert(\n vm.model,\n function (response) {\n if (response.fiveOrMore) {\n MessageService.alertInfo(\n \"O projeto foi para a lista de espera, pois ultrapassou o limite de projetos no mês.\"\n );\n }\n $state.go(\"main.colorrequest\");\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n } else {\n // VALIDANDO SE TEM ARQUIVO NO CAMPO ANEXO DO PROJETO (FEITO PELO DESIGNER) PARA SABER SE EXIBE A MSG QUE TROCA DE STATUS OU SÓ ATUALIZA OS CAMPOS\n if (vm.validateIfPassStatusOrSave()) {\n vm.model.workflowApprovalNext = null;\n if (!vm.expectedDateIsValid()) {\n MessageService.alertInfo(\"Data prevista inválida.\");\n $rootScope.laddaLoading = false;\n return;\n } else {\n vm.model.expectedDate.setHours(12, 0, 0);\n var attachments = [];\n attachments.push(...vm.attachmentsDesign);\n if (vm.attachmentsProject && vm.attachmentsProject.length > 0) {\n attachments.push(...vm.attachmentsProject);\n }\n\n if (!vm.projectExists() && vm.statusNeedProject()) {\n MessageService.alertInfo(\"Projeto obrigatório\");\n $rootScope.laddaLoading = false;\n return;\n }\n\n vm.model.attachments = attachments;\n ColorRequest.insert(\n vm.model,\n function () {\n $state.go(\"main.colorrequest\");\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n return;\n }\n }\n\n // DESIGNER ATUALIZA O ARQUIVO DO PROJETO E AVANÇA NO FLUXO\n vm.changeStatusAttachProject();\n }\n };\n\n vm.expectedDateIsValid = function () {\n if (\n !vm.model.expectedDate ||\n vm.model.expectedDate == null ||\n vm.model.expectedDate == \"undefined\" ||\n new Date(vm.model.expectedDate) < new Date()\n ) {\n return false;\n }\n\n return true;\n };\n\n vm.statusNeedProject = function () {\n if (\n vm.lastWorkflowApproval && (\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.AguardandoSolicitante ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.AguardandoAnaliseSW ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.RevisaoSolicitadaSW ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.ProjetoVerificado12 ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.RevisaoSolicitadaConsumidor ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.ProjetoAprovado ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.ConcluidoVenda ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.ConcluidoSemVenda ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.ProjetoVerificado22\n )) {\n return true;\n }\n return false;\n };\n\n vm.projectExists = function () {\n if (\n !vm.attachmentsProject ||\n vm.attachmentsProject.length == 0 ||\n (vm.attachmentsProject.filter((x) => x.isDeleted == true).length >\n 0 &&\n vm.attachmentsProject.filter((x) => x.isDeleted == false).length ==\n 0)\n ) {\n return false;\n }\n return true;\n };\n\n vm.validateIfPassStatusOrSave = function () {\n if (\n vm.attachmentsProject.length == 0 ||\n (vm.attachmentsProject.filter((x) => x.isDeleted == true).length >\n 0 &&\n vm.attachmentsProject.filter((x) => x.isDeleted == false).length ==\n 0) ||\n (vm.model.dueDate !== vm.oldModel.dueDate && vm.showDueDate())\n ) {\n return true;\n }\n return false;\n };\n\n vm.changeStatusAttachProject = function () {\n var message = `Deseja mesmo realizar a ação e mudar o status para ${vm.lastWorkflowApproval.statusNameNext} ?`;\n MessageService.confirm(\n function () {\n var params = vm.getWorkflowApprovalParameter(\n window.enumerators.statusApproval.Aprovado\n );\n vm.model.workflowApprovalNext = params;\n vm.model.attachments = vm.attachmentsProject;\n ColorRequest.insert(\n vm.model,\n function () {\n $state.go(\"main.colorrequest\");\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n },\n \"Confirmação\",\n message\n );\n $rootScope.laddaLoading = false;\n };\n\n vm.changeStatus = function (type, commentRequired = false) {\n var message = \"\";\n switch (type) {\n case \"next\":\n vm.enumStatusApproval = window.enumerators.statusApproval.Aprovado;\n message = `Deseja mesmo realizar a ação e mudar o status para ${vm.lastWorkflowApproval.statusNameNext} ?`;\n\n if (vm.lastWorkflowApproval.statusNameNext === \"Projeto Aprovado\") {\n message = `${message} Após Aprovar não será mais possível solicitar alterações. Lembre-se de validar o projeto com o seu cliente.`;\n }\n break;\n case \"previousMsg\":\n vm.enumStatusApproval = window.enumerators.statusApproval.Reprovado;\n message = `Deseja mesmo realizar a ação e mudar o status para ${vm.lastWorkflowApproval.statusNamePrevious} ?`;\n\n if (\n vm.lastWorkflowApproval.statusNamePrevious ===\n \"Revisão Solicitada Consumidor\"\n ) {\n message = `${message} Lembre-se: só é permitido solicitar uma única revisão. Analise e confirme as informações antes de dar continuidade a esta solicitação de revisão.`;\n }\n break;\n default:\n break;\n }\n\n if (\n commentRequired &&\n (vm.model.comment == undefined || vm.model.comment == \"\")\n ) {\n MessageService.alertInfo(\"Comentário é obrigatório.\");\n return false;\n }\n\n MessageService.confirm(\n function () {\n var params = vm.getWorkflowApprovalParameter(vm.enumStatusApproval);\n\n WorkflowApproval.updateColor(\n params,\n function () {\n $state.go(\"main.colorrequest\");\n vm.isReprove = false;\n vm.isReproveReasons = false;\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n },\n \"Confirmação\",\n message\n );\n };\n\n vm.finishProject = function () {\n // Quando encerrar, se não houver venda, deve mandar para o status Concluído/Sem Venda, se tiver manda para Concluído/Venda.\n if (vm.salesListHasLength()) {\n vm.changeStatus(\"next\");\n } else {\n if (!vm.reproveReasons || !vm.reproveReasons.length) {\n vm.reproveReasons = [];\n }\n\n // Só mostra motivos de encerrar projeto sem venda.\n vm.reproveReasons = vm.reproveReasons.filter(\n (x) =>\n x.disapprovalReasonTypeId ==\n vm.enumerators.disapprovalReasonsTypes.SemVenda\n );\n vm.othersReason = vm.reproveReasons.find(\n (x) =>\n x.disapprovalReasonTypeId ==\n vm.enumerators.disapprovalReasonsTypes.SemVenda &&\n x.value == \"Outros\"\n );\n vm.isReproveReasons = true;\n }\n };\n\n vm.approveReprove = function (type) {\n switch (type) {\n case 1:\n vm.changeStatus(\"next\");\n break;\n case 2:\n if (\n settings.permissions.includes(\"ApproveReproveSwRequest\") &&\n vm.lastWorkflowApproval && vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.AguardandoAnaliseSW\n ) {\n // Revisão SW Apenas descreve.\n vm.isReprove = true;\n } else {\n if (!vm.reproveReasons || !vm.reproveReasons.length) {\n vm.reproveReasons = [];\n }\n\n // Se reprovar e for o Solicitante precisa selecionar os motivos (lista) de reprovação.\n // Só mostra motivos de recusa do Solicitante/Consumidor\n vm.reproveReasons = vm.reproveReasons.filter(\n (x) =>\n x.disapprovalReasonTypeId ==\n vm.enumerators.disapprovalReasonsTypes.Consumidor\n );\n vm.othersReason = vm.reproveReasons.find(\n (x) =>\n x.disapprovalReasonTypeId ==\n vm.enumerators.disapprovalReasonsTypes.Consumidor &&\n x.value == \"Outros\"\n );\n vm.isReproveReasons = true;\n }\n break;\n default:\n break;\n }\n };\n\n /*\n Funções de Sales\n */\n // #region Sales\n\n vm.noColorProductId = false;\n\n vm.insertSale = function () {\n if (\n vm.sale.valueOthersProducts == 0 &&\n vm.sale.valueTintingProducts == 0\n ) {\n MessageService.alertInfo(\n \"Valor em produtos Tintométricos ou Valor em demais produtos deve ser preenchido.\"\n );\n return;\n }\n\n if (\n vm.attachmentsInvoiceSale.filter((x) => x.isDeleted == 0).length == 0\n ) {\n MessageService.alertInfo(\"Nota fiscal obrigatório\");\n return;\n }\n vm.sale.tempFolder = vm.tempFolder;\n vm.sale.attachmentsInvoiceSale = vm.attachmentsInvoiceSale;\n vm.sale.colorsRequestId = vm.model.colorsRequestId;\n\n ColorRequest.insertSale(\n vm.sale,\n function (response) {\n vm.getAttachsAndSales();\n vm.cancelInsertSale();\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n };\n\n vm.cancelInsertSale = function () {\n vm.sale = {\n valueTintingProducts: 0,\n valueOthersProducts: 0,\n colorsProducts: [],\n othersProducts: [],\n };\n vm.attachmentsInvoiceSale = [];\n vm.countAttachmentsInvoiceSale = vm.attachmentsInvoiceSale.length;\n vm.isInsertSale = false;\n };\n\n vm.getTintingProducts = function (val) {\n vm.autoCompleteProducts = Internal.colorsProductsList({ pageSize: 50, keyword: val })\n .$promise;\n return vm.autoCompleteProducts;\n };\n\n vm.getOthersProducts = function (val) {\n return Internal.othersProductsList({ pageSize: 50, keyword: val })\n .$promise;\n };\n\n $scope.$watch(\"vm.colorProduct\", function (newValue, oldValue) {\n if (newValue) {\n var exist = false;\n vm.noColorProductId = false;\n\n if (!vm.sale.colorsProducts) {\n vm.sale.colorsProducts = [];\n }\n\n if (newValue.colorsProductId) {\n vm.sale.colorsProducts.map((x) => {\n if (newValue.colorsProductId == x.colorsProductId) {\n exist = true;\n }\n });\n } else {\n vm.noColorProductId = true;\n }\n\n if (!exist && newValue.colorsProductId) {\n vm.sale.colorsProducts.push(newValue);\n vm.colorProduct = null;\n }\n }\n });\n\n $scope.$watch(\"vm.salesProductColor\", function (newValue, oldValue) {\n if (vm.colorProduct && newValue) {\n var exist = false;\n vm.noColorProductId = false;\n\n vm.colorProduct.colorId = newValue.colorId;\n vm.colorProduct.code = newValue.code;\n vm.colorProduct.colorName = newValue.name;\n vm.colorProduct.rgb = newValue.rgb;\n\n vm.colorProduct.description = `${vm.colorProduct.code}' '${vm.colorProduct.colorName} - ${vm.colorProduct.productName}`;\n\n if (!vm.sale.colorsProducts) {\n vm.sale.colorsProducts = [];\n }\n\n vm.sale.colorsProducts.map((x) => {\n if (vm.colorProduct.colorId == x.colorId && vm.colorProduct.productId == x.productId) {\n exist = true;\n }\n });\n\n if (!exist) {\n vm.sale.colorsProducts.push(vm.colorProduct);\n }\n\n vm.colorProduct = null;\n vm.salesProductColor = null;\n }\n });\n\n $scope.$watch(\"vm.otherProduct\", function (newValue, oldValue) {\n if (newValue) {\n var exist = false;\n\n if (!vm.sale.othersProducts) {\n vm.sale.othersProducts = [];\n }\n vm.sale.othersProducts.map((x) => {\n if (newValue.othersProductId == x.othersProductId) {\n exist = true;\n }\n });\n\n if (!exist) {\n vm.sale.othersProducts.push(newValue);\n }\n\n vm.otherProduct = null;\n }\n });\n\n vm.delColorProduct = function (x) {\n var index = vm.model.colors.indexOf(x);\n vm.sale.colorsProducts.splice(index, 1);\n };\n\n vm.delOtherProduct = function (x) {\n var index = vm.model.colors.indexOf(x);\n vm.sale.othersProducts.splice(index, 1);\n };\n\n vm.editSale = function (saleId) {\n ColorRequest.saleGet(\n { saleId: saleId },\n function (response) {\n vm.sale = response;\n vm.isInsertSale = true;\n vm.attachmentsInvoiceSaleList.map((x) => {\n if (x.saleId == vm.sale.saleId) {\n vm.attachmentsInvoiceSale.push(x);\n }\n });\n vm.countAttachmentsInvoiceSale = vm.attachmentsInvoiceSale.length;\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n };\n\n vm.deleteSale = function (saleId) {\n MessageService.confirm(\n function () {\n ColorRequest.deleteSale(\n { saleId: saleId },\n function () {\n vm.getAttachsAndSales();\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n },\n \"Confirmação\",\n \"Deseja mesmo excluir essa venda?\"\n );\n };\n\n vm.getAttachsAndSales = function () {\n Attachment.list(\n { promotionRequestId: vm.model.colorsRequestId },\n function (response) {\n vm.attachmentsInvoiceSaleList =\n response.filter(\n (x) =>\n x.attachmentTypeId == window.enumerators.attachmentType.InvoiceSale\n ).length > 0\n ? response.filter(\n (x) =>\n x.attachmentTypeId ==\n window.enumerators.attachmentType.InvoiceSale\n )[0].attachments\n : [];\n vm.getSales();\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n };\n\n vm.selectedReason = '';\n vm.customReason = '';\n vm.comment = '';\n\n vm.openModal = function (id) {\n vm.reproveSaleId = id;\n $('#approvalModal').modal('show');\n };\n\n vm.submitApproval = function (attachId, status) {\n var comment = vm.comment;\n\n var params = {\n comment: comment,\n enumStatusApproval: status\n };\n\n Attachment.salesApproval({ id: attachId }, params, function (response) {\n vm.comment = '';\n vm.reproveSaleId = '';\n vm.salesList.map(x => {\n if (x.attachmentId == attachId) {\n x.status = status\n }\n })\n vm.pushNotification('ColorSalesAttachmentApproval', new Date().toISOString(), false)\n $('#approvalModal').modal('hide');\n }, function (response) {\n MessageService.alertError(response.data);\n });\n };\n\n vm.updateComment = function () {\n if (vm.selectedReason === 'Outro') {\n vm.comment = vm.customReason;\n } else {\n vm.comment = vm.selectedReason;\n }\n };\n\n vm.getSales = function () {\n ColorRequest.listSales(\n { colorsRequestId: vm.model.colorsRequestId },\n function (response) {\n vm.formSalesList(response);\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n };\n\n vm.formSalesList = function (response) {\n vm.salesList = response.saleList;\n const totalSale = {\n createdOn: \"Valor total\",\n valueTintingProducts: response.saleTotal.sumValueTintingProducts,\n valueOthersProducts: response.saleTotal.sumValueOthersProducts,\n };\n\n\n vm.salesList.push(totalSale);\n if (vm.salesList) {\n if (!vm.attachmentsInvoiceSaleList || !vm.attachmentsInvoiceSaleList.length) {\n vm.attachmentsInvoiceSaleList = [];\n }\n\n vm.salesList.map((x) => {\n const attach = vm.attachmentsInvoiceSaleList.find(\n (y) => y.saleId == x.saleId\n );\n if (attach) {\n x.url = attach.url;\n x.fileDocument = attach.fileDocument;\n x.attachmentId = attach.attachmentId,\n x.status = attach.enumStatusApproval;\n }\n return x;\n });\n\n }\n };\n\n vm.formSalesList(salesList);\n\n vm.salesListHasLength = function () {\n // Necessário para remover a última linha que exibe a soma de todas as notas.\n const onlySales = vm.salesList.filter((x) => x.saleId != null);\n if (onlySales.length == 0) {\n return false;\n }\n return true;\n };\n\n // #ndregion\n\n vm.isBusinessDay = function (date) {\n var isBuDay = true;\n if (date.getDay() == 0 || date.getDay() == 6) {\n isBuDay = false;\n }\n\n if (holidays && holidays.length) {\n holidays.forEach((x) => {\n var dateToCompare = new Date(x.date + \"T12:00:00\");\n\n if (date.getTime() === dateToCompare.getTime()) {\n isBuDay = false;\n }\n });\n }\n\n return isBuDay;\n };\n\n vm.setExpectedDate = function () {\n if (vm.isNewRequest()) {\n var expectedDate = new Date();\n expectedDate.setHours(12, 0, 0);\n\n var countDays = 0;\n var countUtilDays = 3;\n\n for (var index = 0; index < countUtilDays; index++) {\n expectedDate.setDate(expectedDate.getDate() + 1);\n if (!vm.isBusinessDay(expectedDate)) {\n countDays++;\n }\n }\n\n expectedDate.setDate(expectedDate.getDate() + countDays);\n vm.model.expectedDate = expectedDate;\n }\n };\n\n vm.setExpectedDate();\n\n vm.transformName = function (name) {\n if (name && name.length > 40) {\n return name.substr(0, 40) + \"...\";\n } else {\n return name || \"\";\n }\n };\n\n vm.showProjectAttachment = function () {\n if (vm.isNewRequest()) {\n return false;\n }\n\n // Mostra o projeto caso for Controle de Qualidade nesses status\n if (vm.deleteOrEditProjectAttachCQ()) {\n return true;\n }\n\n if (\n vm.attachmentsProject.length == 0 &&\n vm.lastWorkflowApproval.statusId !=\n vm.enumerators.statusColor.EmProducao\n ) {\n return false;\n }\n\n // Vendedor só pode ver projeto nos status abaixo\n if (\n settings.permissions.includes(\"ApproveReproveSaleRequest\") &&\n vm.lastWorkflowApproval &&\n vm.lastWorkflowApproval.statusId !=\n vm.enumerators.statusColor.ProjetoVerificado12 &&\n vm.lastWorkflowApproval.statusId !=\n vm.enumerators.statusColor.ProjetoVerificado22 &&\n vm.lastWorkflowApproval.statusId !=\n vm.enumerators.statusColor.ProjetoAprovado &&\n vm.lastWorkflowApproval.statusId !=\n vm.enumerators.statusColor.ConcluidoVenda &&\n vm.lastWorkflowApproval.statusId !=\n vm.enumerators.statusColor.ConcluidoSemVenda\n ) {\n return false;\n }\n\n // Só mostra o projeto se status for diferente de em espera e aguardando início da produção (Designer ou SW)\n if (\n vm.lastWorkflowApproval &&\n vm.lastWorkflowApproval.statusId !=\n vm.enumerators.statusColor.EmEspera &&\n vm.lastWorkflowApproval.statusId !=\n vm.enumerators.statusColor.AguardandoIniciodeProducao\n ) {\n return true;\n }\n\n return false;\n };\n\n vm.deleteOrEditProjectAttachDesigner = function () {\n // Edita o projeto se tiver em Produção e for Designer\n if (\n vm.model.colorsRequestId &&\n vm.lastWorkflowApproval &&\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.EmProducao &&\n settings.permissions.includes(\"InsertProjectAttach\") // task do designer\n ) {\n return true;\n }\n\n return false;\n };\n\n vm.deleteOrEditProjectAttachCQ = function () {\n // Edita o projeto se tiver no status abaixo e for Controle de Qualidade\n if (\n vm.model.colorsRequestId &&\n settings.permissions.includes(\"ChangeProjectAttach\") && // task do controle de qualidade\n vm.lastWorkflowApproval &&\n (vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.EmEspera ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.AguardandoIniciodeProducao ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.EmProducao ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.AguardandoSolicitante ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.AguardandoAnaliseSW ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.RevisaoSolicitadaSW ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.ProjetoVerificado12 ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.RevisaoSolicitadaConsumidor)\n ) {\n return true;\n }\n\n return false;\n };\n\n vm.showApprovalAttachButtons = function (attach) {\n if (settings.permissions.includes(\"ChangeProjectAttach\") && attach.attachmentId && attach.status == 'Pendente') {\n return true;\n }\n return false;\n }\n\n vm.showInsertButtonProjectAttachment = function () {\n // Só pode inserir attachment no projeto se não tiver nenhum anexo e for Designer\n if (\n vm.countAttachmentsProject == 0 &&\n (settings.permissions.includes(\"InsertProjectAttach\") || // task do designer\n settings.permissions.includes(\"ChangeProjectAttach\")) // task do controle de qualidade\n ) {\n return true;\n }\n return false;\n };\n\n vm.disabledChangeExpectedDate = function () {\n // Pode alterar data prevista quando tiver em produção ou aguardando início, e for designer\n if (\n (settings.permissions.includes(\"EditColorsRequests\") &&\n vm.lastWorkflowApproval &&\n (vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.EmProducao ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.AguardandoIniciodeProducao)) ||\n // Pode editar também nessas condições, então se retonar true, disabled fica false\n vm.editSaveColorRequest()\n ) {\n return false;\n }\n return true;\n };\n\n vm.sendCommentPreviousStatus = function () {\n // Só pode mandar comentário (reprovar) se não estiver nesses status\n if (\n vm.model.isRequiredToApproval &&\n vm.lastWorkflowApproval &&\n vm.lastWorkflowApproval.statusId !=\n vm.enumerators.statusColor.EmProducao &&\n vm.lastWorkflowApproval.statusId !=\n vm.enumerators.statusColor.ProjetoVerificado12 &&\n vm.lastWorkflowApproval.statusId !=\n vm.enumerators.statusColor.ProjetoVerificado22 &&\n vm.lastWorkflowApproval.statusId !=\n vm.enumerators.statusColor.ProjetoAprovado &&\n vm.lastWorkflowApproval.statusId !=\n vm.enumerators.statusColor.ConcluidoVenda &&\n vm.lastWorkflowApproval.statusId !=\n vm.enumerators.statusColor.ConcluidoSemVenda &&\n vm.lastWorkflowApproval.statusId !=\n vm.enumerators.statusColor.AguardandoAnaliseSW\n ) {\n return true;\n }\n return false;\n };\n\n vm.showButtonInsertSale = function () {\n /* Só pode mostrar o botão para inserir venda se for vendedor, for projeto aprovado ou\n verificado 2/2, e não pode ter finishedOn, pois quando aprova a última vez para encerrar\n fica com finishedOn na ultima aprovação, que pode ser uma das duas (aprovado ou 2/2). */\n if (\n vm.model.colorsRequestId &&\n settings.permissions.includes(\"InsertSale\") &&\n vm.lastWorkflowApproval &&\n (vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.ProjetoAprovado ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.ProjetoVerificado12 ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.ProjetoVerificado22) &&\n !vm.lastWorkflowApproval.finishedOn\n ) {\n return true;\n }\n return false;\n };\n\n vm.showSaveButton = function () {\n /* Pode salvar quando for Designer nos status de Aguardando Prod ou Em produção \n p/ subir projeto ou quando for novo projeto (vendedor) */\n if (\n (settings.permissions.includes(\"EditColorsRequests\") &&\n vm.model.isRequiredToApproval &&\n vm.lastWorkflowApproval &&\n (vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.EmProducao ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.AguardandoIniciodeProducao)) ||\n vm.isNewRequest() ||\n // É possível também editar o projeto nessas condições\n vm.editSaveColorRequest() ||\n vm.showDueDate()\n ) {\n return true;\n }\n return false;\n };\n\n vm.showInitProductionButton = function () {\n // Designer só pode iniciar a produção nesses status abaixo\n if (\n settings.permissions.includes(\"EditColorsRequests\") &&\n vm.model.isRequiredToApproval &&\n vm.lastWorkflowApproval &&\n (vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.AguardandoIniciodeProducao ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.RevisaoSolicitadaSW ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.RevisaoSolicitadaConsumidor)\n ) {\n return true;\n }\n return false;\n };\n\n vm.showFinishProjectButton = function () {\n // Vendedor só pode encerrar projeto nos status abaixo\n if (\n settings.permissions.includes(\"FinishColorRequest\") &&\n vm.model.isRequiredToApproval &&\n vm.lastWorkflowApproval &&\n (vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.ProjetoAprovado ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.ProjetoVerificado22)\n ) {\n return true;\n }\n return false;\n };\n\n vm.showApproveReproveButton = function () {\n // Só pode verificar/reprovar projeto quando for SW Qualidade no status AguardandoAnaliseSW\n // ou Solicitante no status ProjetoVerificado12\n if (\n vm.model.colorsRequestId &&\n vm.lastWorkflowApproval &&\n ((vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.AguardandoAnaliseSW &&\n settings.permissions.includes(\"ApproveReproveSwRequest\")) ||\n (vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.ProjetoVerificado12 &&\n settings.permissions.includes(\"ApproveReproveSaleRequest\")))\n ) {\n return true;\n }\n return false;\n };\n\n vm.showApproveButton = true;\n vm.getLabelApproveButton = function () {\n // Se for SW Qualidade no status AguardandoAnaliseSW - botão: Verificar\n // Se Solicitante no status ProjetoVerificado12 - botão: Aprovar\n if (\n vm.model.colorsRequestId &&\n vm.lastWorkflowApproval &&\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.AguardandoAnaliseSW &&\n settings.permissions.includes(\"ApproveReproveSwRequest\")\n ) {\n return \"VERIFICAR\";\n } else if (\n !vm.model.status?.isCompleted &&\n vm.model.colorsRequestId &&\n vm.lastWorkflowApproval &&\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.ProjetoVerificado12 &&\n settings.permissions.includes(\"ApproveReproveSaleRequest\")\n ) {\n return \"ENCERRAR PROJETO\";\n } else {\n vm.showApproveButton = false;\n return \"\";\n }\n };\n\n vm.pendingRequestAction = function () {\n if (vm.model.isRequiredToApproval && vm.model.status.statusId !== vm.enumerators.statusColor.ConcluidoSemVenda && vm.model.status.statusId !== vm.enumerators.statusColor.ConcluidoVenda) {\n return true\n }\n return false;\n }\n\n vm.showReproveButton = true;\n vm.getLabelReproveButton = function () {\n // Se for SW Qualidade no status AguardandoAnaliseSW - botão: Reprovar\n // Se Solicitante no status ProjetoVerificado12 - botão: Solicitar Revisão\n if (\n vm.model.colorsRequestId &&\n vm.lastWorkflowApproval &&\n !vm.model.status?.isCompleted &&\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.AguardandoAnaliseSW &&\n settings.permissions.includes(\"ApproveReproveSwRequest\")\n ) {\n return \"REPROVAR\";\n } else if (\n vm.model.colorsRequestId &&\n vm.lastWorkflowApproval &&\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.ProjetoVerificado12 &&\n settings.permissions.includes(\"ApproveReproveSaleRequest\") &&\n !vm.salesListHasLength()\n ) {\n return \"SOLICITAR REVISÃO\";\n } else {\n vm.showReproveButton = false;\n return \"\";\n }\n };\n\n vm.showListDesigners = function () {\n /* Pode trocar designer quando for Controle de Qualidade nos status de Aguardando Ini. Prod. ou Em Espera */\n if (\n vm.model.colorsRequestId &&\n settings.permissions.includes(\"ChangeDesigner\") &&\n vm.lastWorkflowApproval &&\n (vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.EmEspera ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.AguardandoIniciodeProducao ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.EmProducao ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.RevisaoSolicitadaSW ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.RevisaoSolicitadaConsumidor)\n ) {\n return true;\n }\n return false;\n };\n\n vm.showDueDate = function () {\n /* Pode trocar data de vencimento quando for Controle de Qualidade em qualquer status */\n if (\n vm.model.colorsRequestId &&\n settings.permissions.includes(\"ChangeDesigner\")\n ) {\n return true;\n }\n return false;\n };\n\n vm.editSaveColorRequest = function () {\n /* Pode editar/deletar projeto quando for Controle de Qualidade ou Vendedor nos status de Aguardando Ini. Prod. ou Em Espera */\n // Pode alterar (criar) também quando for novo\n if (\n !vm.model.colorsRequestId ||\n (vm.model.colorsRequestId &&\n settings.permissions.includes(\"DeleteEditColorRequest\") &&\n vm.lastWorkflowApproval &&\n (vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.EmEspera ||\n vm.lastWorkflowApproval.statusId ==\n vm.enumerators.statusColor.AguardandoIniciodeProducao))\n ) {\n return true;\n }\n return false;\n };\n\n vm.showBonusFields = function () {\n // Não mostra os campos de Loja Comercial e Bonificação caso a loja selecionada for Revenda\n if (\n vm.model.customerId &&\n vm.customerTypeIdSelected &&\n vm.customerTypeIdSelected == vm.enumerators.customersTypes.Revenda\n ) {\n vm.model.isBonusAccounts = false;\n return false;\n }\n return true;\n };\n\n //Chat\n\n vm.toggleChat = function () {\n vm.isChatOpened = !vm.isChatOpened;\n if (vm.isChatOpened) {\n Chat.markAllAsRead($localStorage.userId, vm.model.colorsRequestId);\n vm.model.unreadMessages = 0;\n $timeout(function () {\n vm.scrollChatToBottom();\n }, 200);\n }\n };\n\n $scope.$on(\"userOnLine\", function (e, chatEvent) {\n vm.model.chatMessages = chatEvent.payload.messages;\n $timeout(function () {\n vm.scrollChatToBottom();\n }, 200);\n });\n\n $scope.$on(\"receiveNotification\", function (event, payload) { });\n\n $scope.$on(\"newMessage\", function (e, { chatEvent, payload }) {\n vm.model.chatMessages = payload.messages;\n\n if (\n vm.model.chatMessages[vm.model.chatMessages.length - 1]\n .ColorsRequestId !== vm.model.colorsRequestId\n ) {\n return;\n }\n\n $timeout(function () {\n vm.scrollChatToBottom();\n }, 200);\n\n if (vm.isChatOpened) {\n Chat.markAllAsRead($localStorage.userId, vm.model.colorsRequestId);\n vm.model.unreadMessages = 0;\n } else {\n vm.model.unreadMessages = vm.model.unreadMessages + 1;\n }\n\n if (\n vm.model.chatMessages[vm.model.chatMessages.length - 1].UserId !==\n $localStorage.userId\n ) {\n var audio = new Audio(\"../sounds/exquisite.mp3\");\n audio.play();\n }\n });\n\n vm.initChat = $stateParams.chat;\n vm.autoChatStarted = false;\n $scope.$on(\"chatStarted\", function (e) {\n if (vm.initChat) {\n vm.autoChatStarted = true;\n $timeout(function () {\n vm.toggleChat();\n }, 200);\n }\n });\n\n vm.sendMessage = function () {\n if (vm.chatMessage) {\n Chat.sendMessage(\n $localStorage.userId,\n vm.model.colorsRequestId,\n vm.chatMessage\n );\n vm.chatMessage = \"\";\n } else if (vm.chatImage.url) {\n Chat.sendImageMessage(\n $localStorage.userId,\n vm.model.colorsRequestId,\n vm.chatImage.url\n );\n vm.chatImage = {};\n }\n };\n\n vm.scrollChatToBottom = function () {\n $location.hash(\"anchorChat\");\n $anchorScroll();\n };\n\n vm.uploadImageSubmit = function ($files, $event, $flow) {\n if ($files[0] === undefined) return;\n\n // Valida se a extensão do arquivo é permitida\n if (\n tools.validateFileExtension($files[0].name, [\"jpeg\", \"png\", \"jpg\"]) ==\n false\n )\n return;\n\n // Valida o tamanho do arquivo\n if (tools.validateFileMaxSize($files[0].size, 5242880) == false) return;\n\n //change file name\n var splitFileName = $files[0].name.split(\".\");\n splitFileName[0] = vm.ramdomName();\n $files[0].name = splitFileName[0] + \".\" + splitFileName[1];\n\n $flow.upload();\n };\n\n vm.uploadImageSuccess = function ($file, $message, $flow) {\n var uploadResult = JSON.parse($message);\n vm.chatImage.name = uploadResult.originalFilename;\n vm.chatImage.fileDocument = uploadResult.filename;\n vm.chatImage.folder = uploadResult.tempFolder;\n vm.chatImage.url = tools.getFileChatPath(\n vm.chatImage.folder,\n uploadResult.filename\n );\n // Reseta o flow\n $flow.cancel();\n\n vm.sendMessage();\n };\n\n vm.ramdomName = function () {\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) =>\n (\n c ^\n (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))\n ).toString(16)\n );\n };\n\n $scope.$on(\"$destroy\", function () {\n if (vm.model.colorsRequestId) {\n Chat.exitChat($localStorage.userId, vm.model.colorsRequestId);\n }\n });\n\n $scope.$watch(\"vm.selectedCustomer\", function (newValue, oldValue) {\n if (newValue && newValue.key && (!oldValue || newValue.key !== oldValue.key)) {\n Customer.get(\n { id: newValue.key },\n function (response) {\n if (!response.hasColorSample) {\n if (response.hasColorSampleLastAskedOn && !(response.hasColorSampleLastAskedOn instanceof Date)) {\n response.hasColorSampleLastAskedOn = new Date(response.hasColorSampleLastAskedOn);\n if (isNaN(response.hasColorSampleLastAskedOn.getTime())) {\n return;\n }\n\n response.hasColorSampleLastAskedOn.setMonth(response.hasColorSampleLastAskedOn.getMonth() + 1);\n }\n\n var currentDate = new Date();\n\n if (!response.hasColorSampleLastAskedOn || currentDate.getTime() >= response.hasColorSampleLastAskedOn.getTime()) {\n MessageService.confirm(\n function () {\n var data = {\n customerId: vm.selectedCustomer.key,\n hasColorSample: true\n }\n Customer.updateHasColorSample(data);\n },\n \"Amostra de cores\",\n \"Color Sample Esta loja já possui a amostra de cores - A Sua Cor?\"\n );\n }\n }\n }\n );\n }\n });\n\n $timeout(function () {\n if (!vm.autoChatStarted && vm.initChat) {\n vm.toggleChat();\n }\n }, 1200);\n }\n );\n","angular.module('controlPanelApp').run(['$templateCache', function($templateCache) {$templateCache.put('/modules/BonusesAndSponsorships/views/bonus.edit.html','

SOLICITA\\xC7\\xC3O PENDENTE DE A\\xC7\\xC3O DE SUA PARTE

Cliente n\\xE3o encontrado

R$
R$

Aprova\\xE7\\xF5es

Solicitada emRealizada em\\xC1reaRespons\\xE1velStatusComent\\xE1rio

Nome

Cancelar
');\n$templateCache.put('/modules/BonusesAndSponsorships/views/bonus.list.html','

Cliente n\\xE3o encontrado

N\\xB0 da Solicita\\xE7\\xE3oSolicitanteClienteTipo de A\\xE7\\xE3oPeriodoStatusSub-\\xE1reaValor


');\n$templateCache.put('/modules/BonusesAndSponsorships/views/dashboard.html','
block

Pend\\xEAncias

N\\xB0 da Solicita\\xE7\\xE3oSolicitanteClienteTipo de A\\xE7\\xE3oPeriodoStatusSub-\\xE1reaValor


    ');\n$templateCache.put('/modules/BonusesAndSponsorships/views/main.html','
    ');\n$templateCache.put('/modules/ColorRequests/colorrequest/views/colorrequest.edit.html','

    SOLICITA\\xC7\\xC3O PENDENTE DE A\\xC7\\xC3O DE SUA PARTE

    SolicitanteN\\xFAmero da Solicita\\xE7\\xE3oContatoA\\xE7\\xF5es
    add_alert
    edit

    DataValor Tintom\\xE9tricosValor Outros ProdutosNota/Cupom FiscalStatus
    {{item.status}}edit delete_forever
    Ver hist\\xF3rico de venda
    keyboard_arrow_down
    Fechar hist\\xF3rico de venda
    keyboard_arrow_up

    Loja n\\xE3o encontrada

    Cor n\\xE3o encontrada

    0\">

    Aprova\\xE7\\xF5es

    Solicitada emRealizada em\\xC1rea/StatusRespons\\xE1velComent\\xE1rio

    Nome

    Cancelar
    Cancelar

    Cancelar

    Produto/cor n\\xE3o encontrado(a)

    Cor n\\xE3o encontrada

    Produto n\\xE3o encontrado

    Cancelar
    {{ vm.model.unreadMessages }}
    \"\"
    \"\"

    Chat

    \"\"

    {{ item.UserName }}

    {{ item.Message }}

    {{ item.CreatedAt | date:\\'dd/MM/yyyy HH:mm\\'}}

    Novo Lembrete

    Escolha a data e a hora em que voc\\xEA gostaria de receber um lembrete desta solicita\\xE7\\xE3o.

    Recusar venda

    ');\n$templateCache.put('/modules/ColorRequests/colorrequest/views/colorrequest.list.html','
    add Solicita\\xE7\\xE3o Externa
    ');\n$templateCache.put('/modules/ColorRequests/colorrequest/views/colorrequestexternal.edit.html','

    Loja n\\xE3o encontrada

    DataValor Tintom\\xE9tricosValor Outros ProdutosNota/Cupom FiscalStatus
    {{item.status}}edit delete_forever
    keyboard_backspace

    Cancelar

    Produto/cor n\\xE3o encontrado(a)

    Cor n\\xE3o encontrada

    Produto n\\xE3o encontrado

    Cancelar
    ');\n$templateCache.put('/modules/Commom/auth/views/login.html','

    Login

    error_outline

    ');\n$templateCache.put('/modules/Commom/auth/views/main.html','
    ');\n$templateCache.put('/modules/Commom/auth/views/password.forgot.html','

    Redefinir senha

    error_outline

    ');\n$templateCache.put('/modules/Commom/auth/views/password.reset.html','

    Redefinir senha

    error_outline

    ');\n$templateCache.put('/modules/Commom/auth/views/signup.html','

    Cadastro

    error_outline


    Para prosseguir, voc\\xEA declara que est\\xE1 de acordo com nossa pol\\xEDtica de privacidade.


    check_circle

    Sucesso!

    O formul\\xE1rio foi enviado com sucesso.


    ');\n$templateCache.put('/modules/Commom/core/views/address.html','
    ');\n$templateCache.put('/modules/Commom/core/views/datetime.html','
    ');\n$templateCache.put('/modules/Commom/core/views/filter.form.html','

    Loja n\\xE3o encontrada

    ');\n$templateCache.put('/modules/Commom/core/views/imagecrop.html','
    Cancelar
    ');\n$templateCache.put('/modules/Commom/core/views/keywordfilter.html','

    ');\n$templateCache.put('/modules/Commom/core/views/layout.html','

    add_circle

    Novo Usu\\xE1rio

    mail GERAR CONVITE
    ');\n$templateCache.put('/modules/Commom/core/views/notification.list.html','

    Notifica\\xE7\\xF5es

    priority_high
    {{ notification.title}}
    {{ formatElapsedTime(notification.alertDate) }}
    Solicita\\xE7\\xE3o N\\xB0{{notification.alertDataObject.code}}

    {{notification.alertDataObject.statusName}}

    {{ notification.message }}

    Projeto: {{notification.alertDataObject.projectName}} | Loja: {{notification.alertDataObject.companyName}}

    ');\n$templateCache.put('/modules/Commom/core/views/pagination.table.html','
    A\\xE7\\xF5es 

    warning


    delete_forever
    {{ item.unreadMessages }}
    ');\n$templateCache.put('/modules/Commom/core/views/privacy.html','

    Pol\\xEDtica de Privacidade

    ');\n$templateCache.put('/modules/Commom/core/views/taginput.html','
    ');\n$templateCache.put('/modules/Commom/customer/views/customer.edit.html','

    \\xC9 obrigat\\xF3rio marcar um destes campos caso o Estado selecionado seja S\\xE3o Paulo.

    keyboard_backspace
    ');\n$templateCache.put('/modules/Commom/customer/views/customer.list.html','
    file_upload Importar clientes
    edit delete_forever
    ');\n$templateCache.put('/modules/Commom/customer/views/customer.upload.html','

    LinhaErro

    • {{item}}

    keyboard_backspace
    ');\n$templateCache.put('/modules/Commom/dashboard/views/dashboard.colors.html','

    block
    0\">

    {{vm.dash.countProjects}} Projeto

    1\">{{vm.dash.countProjects}} Projetos

    0 && vm.dash.colorsList.length > 0\">

    • {{ x.position }}
      {{ \\' \\' + x.name }}
    0 && vm.dash.colorsList.length > 0\">

    • {{x.position}}
      {{x.name}}

    Evolu\\xE7\\xE3o Mensal - Projetos

    Evolu\\xE7\\xE3o Mensal - Vendas

    Evolu\\xE7\\xE3o de Projetos por Gerentes

    Sem dados no per\\xEDodo

    Evolu\\xE7\\xE3o de Vendas por Gerentes

    Sem dados no per\\xEDodo

    Evolu\\xE7\\xE3o de Vendas - Tintom\\xE9tricos

    Evolu\\xE7\\xE3o de Vendas - N\\xE3o Tintom\\xE9tricos

    ');\n$templateCache.put('/modules/Commom/dashboard/views/dashboard.html','
    block

    Pend\\xEAncias




    ');\n$templateCache.put('/modules/Commom/disapprovalreason/views/disapprovalreason.edit.html','
    keyboard_backspace
    ');\n$templateCache.put('/modules/Commom/disapprovalreason/views/disapprovalreason.list.html','
    edit delete_forever
    ');\n$templateCache.put('/modules/Commom/reports/views/reports.users.html','
    ');\n$templateCache.put('/modules/Commom/user/views/user.edit.html','

    Loja n\\xE3o encontrada

    \\xC9 obrigat\\xF3rio marcar um destes campos caso o Estado selecionado seja S\\xE3o Paulo.

    lightbulb_outline Dica: caso a loja n\\xE3o esteja aparecendo para o usu\\xE1rio, verifique aqui se h\\xE1 uma loja vinculada!.

    keyboard_backspace
    ');\n$templateCache.put('/modules/Commom/user/views/user.invite.html','
    keyboard_backspace

    Sucesso!

    Convite gerado e enviado para {{vm.model.email}} com sucesso!

    ');\n$templateCache.put('/modules/Commom/user/views/user.list.html','
    edit delete_forever
    ');\n$templateCache.put('/modules/Commom/user/views/user.password.change.html','
    keyboard_backspace
    ');\n$templateCache.put('/modules/SWFlow/goal/views/goal.edit.html','
    keyboard_backspace
    ');\n$templateCache.put('/modules/SWFlow/goal/views/goal.list.html','
    edit delete_forever
    ');\n$templateCache.put('/modules/SWFlow/productsegment/views/productsegment.edit.html','
    keyboard_backspace
    ');\n$templateCache.put('/modules/SWFlow/productsegment/views/productsegment.list.html','
    edit delete_forever
    ');\n$templateCache.put('/modules/SWFlow/promotionrequest/views/promotionrequest.edit.html','

    SOLICITA\\xC7\\xC3O PENDENTE DE A\\xC7\\xC3O DE SUA PARTE

    Cliente

    Cliente n\\xE3o encontrado

    Gerente

    C\\xF3digo do Cliente

    Pr\\xF3-forma aprovada?

    R$
    R$
    %
    R$
    %

    YTD

    (jan at\\xE9 o m\\xEAs atual)
    {{vm.calcRevenuePercentYTD() | number: 0}}%

    FULL YEAR

    (ano inteiro)
    {{vm.calcRevenuePercentFullYear() | number: 0}}%

    Produtos que ser\\xE3o trabalhados

    Toda a linha Sherwin-Williams
    Toda a linha Colorgin
    {{type.name}} ({{filteredAttachments.length}})
    edit delete_forever

    Nenhum arquivo anexado...

    Aprova\\xE7\\xF5es

    Solicitada emRealizada em\\xC1rea/StatusRespons\\xE1velStatusObs

    0)\" class=\"small font-italic\">
    Nome

    keyboard_backspace

    R$
    Cancelar
    ');\n$templateCache.put('/modules/SWFlow/promotionrequest/views/promotionrequest.list.html','




    block
    ');\n$templateCache.put('/modules/SWFlow/promotionrequest/views/promotionrequest.revenue.html','
    R$
    R$

    {{vm.calcPercentage(revenue.amount2, revenue.amount1) | number: 2}}%

    ');}]);","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .config(function ($stateProvider, $urlRouterProvider) {\n $stateProvider.state(\"main.bonusesandsponsorship-dashboard\", {\n url: \"bonusesandsponsorship-dashboard\",\n resolve: {\n model: [\n \"BonusRequest\",\n function (BonusRequest) {\n return BonusRequest.dashboard().$promise;\n },\n ],\n list: [\n \"$stateParams\",\n \"BonusRequest\",\n function ($stateParams, BonusRequest) {\n return BonusRequest.dashboardPage().$promise;\n },\n ],\n },\n views: {\n main: {\n templateUrl: \"/modules/BonusesAndSponsorships/views/dashboard.html\",\n controller: \"bonusDashboardCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n\n // Bonuses and Sponsorship\n $stateProvider.state(\"main.bonusesandsponsorship\", {\n url: \"bonusesandsponsorship\",\n resolve: {\n list: [\n \"$stateParams\",\n \"BonusRequest\",\n function ($stateParams, BonusRequest) {\n return BonusRequest.list().$promise;\n },\n ],\n subAreas: [\n \"$stateParams\",\n \"BonusRequest\",\n function ($stateParams, BonusRequest) {\n return BonusRequest.subAreas().$promise;\n },\n ],\n status: [\n \"$stateParams\",\n \"BonusRequest\",\n function ($stateParams, BonusRequest) {\n return BonusRequest.status().$promise;\n },\n ],\n solicitants: [\n \"$stateParams\",\n \"BonusRequest\",\n function ($stateParams, BonusRequest) {\n return BonusRequest.solicitants().$promise;\n },\n ],\n },\n views: {\n main: {\n templateUrl: \"/modules/BonusesAndSponsorships/views/bonus.list.html\",\n controller: \"bonusListCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n\n $stateProvider.state(\"main.bonuses\", {\n url: \"bonusesandsponsorship/:id\",\n resolve: {\n model: [\n \"$stateParams\",\n \"BonusRequest\",\n function ($stateParams, BonusRequest) {\n if ($stateParams.id != 0) {\n return BonusRequest.get({ id: $stateParams.id }).$promise;\n }\n\n return {};\n },\n ],\n types: [\n \"BonusRequest\",\n function (BonusRequest) {\n return BonusRequest.types().$promise;\n },\n ],\n deposits: [\n \"BonusRequest\",\n function (BonusRequest) {\n return BonusRequest.deposits().$promise;\n },\n ],\n subAreas: [\n \"$stateParams\",\n \"BonusRequest\",\n function ($stateParams, BonusRequest) {\n return BonusRequest.subAreas({ all: false }).$promise;\n },\n ],\n productLines: [\n \"$stateParams\",\n \"BonusRequest\",\n function ($stateParams, BonusRequest) {\n return BonusRequest.productLines().$promise;\n },\n ],\n attachment: [\n \"$stateParams\",\n \"Attachment\",\n function ($stateParams, Attachment) {\n var id = $stateParams.id ? $stateParams.id : 0;\n return Attachment.list({\n promotionRequestId: id,\n moduleId: 3,\n }).$promise;\n },\n ],\n workflowApprovals: [\n \"$stateParams\",\n \"WorkflowApproval\",\n function ($stateParams, WorkflowApproval) {\n var id = $stateParams.id ? $stateParams.id : 0;\n\n return WorkflowApproval.list({\n page: 1,\n pageSize: 1000,\n promotionRequestId: id,\n }).$promise;\n },\n ],\n },\n views: {\n main: {\n templateUrl: \"/modules/BonusesAndSponsorships/views/bonus.edit.html\",\n controller: \"bonusEditCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n });\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .controller(\n \"bonusDashboardCtrl\",\n function (\n $scope,\n $filter,\n apiSettings,\n BonusRequest,\n model,\n list\n ) {\n var vm = this;\n vm.model = model;\n var $translate = $filter(\"translate\");\n\n // Pagination\n vm.pagination = {\n list: list,\n currentPage: 1,\n pageSize: apiSettings.defaultPageSize,\n pagesTotal: list.total,\n };\n\n angular.extend($scope.$parent.vm, {\n title: \"Bonificações e Patrocínios\",\n insertUrl: \"main.bonuses\",\n });\n\n $scope.$watch(\"vm.pagination.currentPage\", function (newValue, oldValue) {\n if (newValue !== oldValue) {\n vm.refresh(newValue);\n }\n });\n\n vm.refresh = function (page) {\n if (vm.customer == null) {\n var customer = null;\n } else {\n var customer = vm.customer.cnpjCpf;\n }\n\n var params = {\n userName: vm.userName,\n cpfCnpj: customer,\n statusId: vm.statusId,\n bonusesAndSponsorshipsRequestSubAreaId: vm.subAreaId,\n userId: vm.solicitantId,\n };\n params.page = page;\n BonusRequest.dashboardPage(params).$promise.then(function (data) {\n vm.pagination.list = data;\n vm.pagination.currentPage = data.page;\n vm.pagination.pagesTotal = data.total;\n });\n };\n\n vm.search = function () {\n vm.refresh(1);\n };\n\n }\n );\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .controller(\n \"bonusEditCtrl\",\n function (\n $scope,\n $rootScope,\n $window,\n $filter,\n $stateParams,\n $localStorage,\n $state,\n BonusRequest,\n MessageService,\n Attachment,\n apiSettings,\n tools,\n attachment,\n model,\n types,\n deposits,\n subAreas,\n productLines,\n workflowApprovals\n ) {\n var vm = this;\n vm.isNewRequest = false;\n vm.isEditingEnabled = false;\n vm.enableApproval = false;\n vm.attachments = attachment && attachment.length && attachment[0].attachments\n ? attachment[0].attachments\n : [];\n //Inicializações\n vm.model = model;\n vm.types = types;\n vm.deposits = deposits;\n\n vm.subAreas = subAreas;\n vm.enableSubAreaElement = true;\n\n vm.productLines = productLines;\n vm.userGroups = $localStorage.authorizationData.user.groups;\n vm.workflowApprovals = workflowApprovals;\n\n vm.enumerators = window.enumerators;\n\n vm.attachment = {}; // Inicializa a model que armazena as informações de um novo anexo\n vm.attachmentEditing = {}; // Inicializa a model que armazena as informações do anexo que está sendo editado\n vm.isAttaching = false;\n // CONFIGURAÇÃO DO UPLOAD\n vm.attachmentsInvoiceSale = [];\n vm.countAttachments = vm.attachments.length;\n\n vm.tempFolder = tools.getRandomString(8);\n vm.uploadConfig = {\n singleFile: true,\n testChunks: false,\n target:\n apiSettings.baseUri +\n \"v1/internal/upload\" +\n \"?tempFolder=\" +\n vm.tempFolder,\n headers: {\n Authorization: \"Bearer \" + $localStorage.authorizationData.token,\n },\n };\n vm.allowedFileExtensions = [];\n vm.maxAllowedFileSiz = 0;\n\n vm.initNewAttachment = function () {\n vm.attachment = {\n attachmentId: 0,\n attachmentTypeId: 10,\n isDeleted: false,\n isEditing: false,\n requiredDbUpdate: true,\n };\n };\n\n vm.deleteAttachment = function (item) {\n vm.countAttachments -= 1;\n item.isDeleted = true;\n item.requiredDbUpdate = true;\n };\n\n vm.showAttachmentForm = function (visible, enumAttachmentType) {\n vm.isAttaching = visible;\n vm.attachType = enumAttachmentType;\n vm.maxAllowedFileSize = 5242880;\n\n vm.initNewAttachment();\n\n // Reseta o formulário caso esteja fechando a modal de inclusão do anexo\n if (visible == false) vm.resetAttachmentForm();\n };\n\n vm.resetAttachmentForm = function () {\n var form = $scope.colorrequestAttachmentForm;\n form.$setPristine();\n form.$setUntouched();\n };\n\n vm.editAttachment = function (item) {\n vm.showAttachmentForm(true);\n\n vm.attachmentEditing = item; //Guarda a referência do item que está sendo editado numa variável global, para que a mesma seja atualizada no caso do usuário clicar no botão salvar\n angular.copy(vm.attachmentEditing, vm.attachment); //Atualiza a model de anexo com um cópia do objeto que está sendo editado\n vm.attachment.isEditing = true;\n };\n\n vm.saveAttachment = function (enumAttachmentType) {\n $rootScope.laddaLoading = true;\n\n vm.attachment.requiredDbUpdate = true;\n vm.attachment.promotionRequestId =\n vm.model.bonusesAndSponsorshipsRequestId;\n vm.attachment.userId = $localStorage.userId;\n\n // Verifica se é uma inclusão ou edição do objeto\n if (vm.attachment.isEditing == true) {\n angular.copy(vm.attachment, vm.attachmentEditing); // Repassa as atualizações feitas na model do anexo, para o objeto de referência (anexo que está sendo editado)\n } else {\n vm.attachments.push(vm.attachment); // Inclui o novo objeto no array\n }\n\n vm.showAttachmentForm(false, 0);\n $rootScope.laddaLoading = false;\n };\n\n vm.uploadSubmit = function ($files, $event, $flow) {\n if ($files[0] === undefined) return;\n\n // Valida o tamanho do arquivo\n if (\n tools.validateFileMaxSize($files[0].size, vm.maxAllowedFileSize) ==\n false\n )\n return;\n\n //change file name\n var splitFileName = $files[0].name.split(\".\");\n var name = formatDate(new Date()) + \"_\" + splitFileName[0];\n $files[0].name = name + \".\" + splitFileName[1];\n\n $flow.upload();\n };\n\n function formatDate(date) {\n var d = new Date(date),\n month = \"\" + (d.getMonth() + 1),\n day = \"\" + d.getDate(),\n year = d.getFullYear(),\n hour = \"\" + d.getHours(),\n minute = \"\" + d.getMinutes(),\n second = \"\" + d.getSeconds();\n\n if (month.length < 2) month = \"0\" + month;\n if (day.length < 2) day = \"0\" + day;\n if (hour.length < 2) hour = \"0\" + hour;\n if (minute.length < 2) minute = \"0\" + minute;\n if (second.length < 2) second = \"0\" + second;\n\n return [year, month, day].join(\"\") + [hour, minute, second].join(\"\");\n }\n\n vm.uploadSuccess = function ($file, $message, $flow) {\n var uploadResult = JSON.parse($message);\n vm.attachment.name = uploadResult.originalFilename;\n vm.attachment.fileDocument = uploadResult.filename;\n vm.attachment.url = tools.getFileTempPath(\n vm.tempFolder,\n uploadResult.filename\n );\n\n // Reseta o flow\n $flow.cancel();\n };\n\n vm.getallowedFileExtensions = function (enumAttachmentType) {\n return \".\" + vm.allowedFileExtensions.join(\", .\");\n };\n\n vm.getFileExtension = function (filename) {\n return tools.getFileExtension(filename);\n };\n\n vm.transformName = function (name) {\n if (name && name.length > 40) {\n return name.substr(0, 40) + \"...\";\n } else {\n return name || \"\";\n }\n };\n\n vm.getAttachs = function () {\n Attachment.list(\n {\n promotionRequestId: vm.model.bonusesAndSponsorshipsRequestId,\n moduleId: 3,\n },\n function (response) {\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n };\n\n /* angular.extend($scope.$parent.vm, {\n title: \"Editar\",\n insertUrl: null,\n }); */\n\n if (vm.model.bonusesAndSponsorshipsRequestDepositId) {\n for (var index = 0; index < vm.deposits.length; index++) {\n var element = vm.deposits[index];\n if (\n element.bonusesAndSponsorshipsRequestDepositId ===\n vm.model.bonusesAndSponsorshipsRequestDepositId\n ) {\n vm.selectedDeposit = element;\n break;\n }\n }\n }\n\n if (vm.model.bonusesAndSponsorshipsRequestTypeId) {\n for (var index = 0; index < vm.types.length; index++) {\n var element = vm.types[index];\n if (\n element.bonusesAndSponsorshipsRequestTypeId ===\n vm.model.bonusesAndSponsorshipsRequestTypeId\n ) {\n vm.selectedType = element;\n break;\n }\n }\n }\n\n if (vm.model.bonusesAndSponsorshipsRequestSubAreaId) {\n for (var index = 0; index < vm.subAreas.length; index++) {\n var element = vm.subAreas[index];\n if (\n element.bonusesAndSponsorshipsRequestSubAreaId ===\n vm.model.bonusesAndSponsorshipsRequestSubAreaId\n ) {\n vm.selectedSubArea = element;\n break;\n }\n }\n }\n\n if (vm.model.bonusesAndSponsorshipsRequestProductLineId) {\n for (var index = 0; index < vm.productLines.length; index++) {\n var element = vm.productLines[index];\n if (\n element.bonusesAndSponsorshipsRequestProductLineId ===\n vm.model.bonusesAndSponsorshipsRequestProductLineId\n ) {\n vm.selectedProductLine = element;\n break;\n }\n }\n }\n\n var $translate = $filter(\"translate\");\n\n\n vm.isNewRequest = function () {\n return (\n vm.model.bonusesAndSponsorshipsRequestId === undefined ||\n vm.model.bonusesAndSponsorshipsRequestId == 0\n );\n };\n\n vm.isEditingRequest = function () {\n return (\n vm.model.bonusesAndSponsorshipsRequestId &&\n vm.model.bonusesAndSponsorshipsRequestId != 0\n );\n };\n\n //Habilitar aprovação conforme grupo do usuario\n vm.validateRequiredToApproval = function () {\n vm.userGroups.forEach((item) => {\n //Valida se esta no grupo de aprovador\n if (\n item.groupId == 1034 &&\n vm.model.status == \"Aprovação Coordenador\" &&\n vm.model.canApprove) {\n vm.enableApproval = true;\n vm.isEditingEnabled = false;\n }\n if (item.groupId == 1035 &&\n vm.model.status == \"Aprovação Gerência\" &&\n vm.model.canApprove) {\n vm.enableApproval = true;\n vm.isEditingEnabled = false;\n }\n if (\n item.groupId == 1036 &&\n vm.model.status == \"Aprovação Diretoria\" &&\n vm.model.canApprove) {\n vm.enableApproval = true;\n vm.isEditingEnabled = false;\n }\n });\n\n if (vm.enableApproval) {\n angular.extend($scope.$parent.vm, {\n title: \"Aprovar solicitação\",\n insertUrl: null,\n });\n }\n };\n\n // Aqui entra as regras de permissão para edição da request conforme o fluxo de aprovação\n vm.setEditingEnabled = function () {\n // Habilita os campos do formulário para edição ou novo cadastro.\n vm.isEditingEnabled = vm.isNewRequest() == true;\n\n if (\n vm.model.status == \"Rejeitada\" &&\n $localStorage.userId == vm.model.userId\n ) {\n vm.isEditingEnabled = true;\n }\n\n if (!vm.isCreatingNewRequest && vm.isEditingEnabled) {\n angular.extend($scope.$parent.vm, {\n title: \"Editar Solicitação\",\n insertUrl: null,\n });\n } else {\n angular.extend($scope.$parent.vm, {\n title: \"Visualizar Solicitação\",\n insertUrl: null,\n });\n }\n };\n\n //Valida se é um nova solicitação\n vm.setCreatingRequest = function () {\n vm.isCreatingNewRequest = vm.isNewRequest() == true;\n if (vm.isCreatingNewRequest) {\n angular.extend($scope.$parent.vm, {\n title: \"Criar Solicitação\",\n insertUrl: null,\n });\n }\n };\n\n //Auto completo do cliente (Conta de Bonificação e patrocínio sem acesso ao endpoint)\n vm.getCustomers = function (val) {\n return BonusRequest.customerList({\n keyword: val,\n }).$promise;\n };\n\n vm.validateComment = function (msg) {\n // Verifica se o comentário foi preenchido\n if (vm.model.comment == undefined || vm.model.comment == \"\") {\n MessageService.alertInfo(msg);\n return false;\n }\n };\n\n vm.save = function () {\n //zera value 2 se tipo do pagamento não for id 1\n if (vm.selectedType.bonusesAndSponsorshipsRequestTypeId == 1) {\n var value2 = vm.model.value2;\n } else {\n var value2 = 0;\n }\n\n // Valida se está editando um campo e adiciona id do request de forma condicional\n if (vm.isEditingRequest() == true) {\n var bonusesAndSponsorshipsRequestId =\n vm.model.bonusesAndSponsorshipsRequestId;\n } else {\n var bonusesAndSponsorshipsRequestId = null;\n }\n\n // Valida se está criando novo request e altera o customerId de forma condicional\n if (vm.isCreatingNewRequest) {\n var customer = vm.model.customerName.customerId;\n } else {\n var customer = vm.model.customerId;\n }\n\n var params = {\n bonusesAndSponsorshipsRequestId: bonusesAndSponsorshipsRequestId,\n userId: $localStorage.userId,\n customerId: customer,\n value1: vm.model.value1,\n value2: value2,\n startsOn: vm.model.startsOn,\n bonusesAndSponsorshipsRequestTypeId:\n vm.selectedType.bonusesAndSponsorshipsRequestTypeId,\n bonusesAndSponsorshipsRequestDepositId:\n vm.selectedDeposit.bonusesAndSponsorshipsRequestDepositId,\n bonusesAndSponsorshipsRequestSubAreaId:\n vm.selectedSubArea.bonusesAndSponsorshipsRequestSubAreaId,\n bonusesAndSponsorshipsRequestProductLineId:\n vm.selectedProductLine.bonusesAndSponsorshipsRequestProductLineId,\n description: vm.model.description,\n workflowApprovalNext: {\n enumStatusApproval: \"Aprovado\",\n userId: $localStorage.userId,\n },\n attachmentsTypes: [\n {\n attachmentTypeId: 10,\n name: \"Documentos Complementares\",\n order: 1,\n enumType: 10,\n permissionToEdit: true,\n attachments: vm.attachments,\n },\n ],\n tempFolder: vm.tempFolder,\n };\n\n if (vm.isCreatingNewRequest) {\n BonusRequest.insert(\n params,\n function (response) {\n $state.go(\"main.bonusesandsponsorship\");\n },\n function (error) {\n MessageService.alertError(error.data);\n }\n );\n } else if (vm.isEditingRequest()) {\n BonusRequest.update(\n params,\n function (response) {\n $state.go(\"main.bonusesandsponsorship\");\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n } else {\n MessageService.alertError(\"Erro ao editar ou cadastrar solicitação\");\n }\n };\n\n vm.approve = function () {\n MessageService.confirm(\n function () {\n vm.doApproval(\"Aprovado\");\n },\n \"Confirmação\",\n \"Deseja realmente aprovar solicitação ?\"\n );\n };\n\n vm.disapprove = function () {\n // Verifica se o comentário foi preenchido\n if (\n vm.validateComment(\n \"Para prosseguir com a reprovação, é necessário preencher o motivo no campo de comentário.\"\n ) == false\n )\n return;\n\n MessageService.confirm(\n function () {\n vm.doApproval(\"Reprovado\");\n },\n \"Confirmação\",\n \"Deseja realmente reprovar essa solicitação?\"\n );\n };\n\n vm.cancel = function () {\n // Verifica se o comentário foi preenchido\n if (\n vm.validateComment(\n \"Para prosseguir com o cancelamento, é necessário preencher o motivo no campo de comentário.\"\n ) == false\n )\n return;\n\n MessageService.confirm(\n function () {\n vm.doCancel(\"Cancelado\");\n },\n \"Confirmação\",\n \"Deseja realmente cancelar essa solicitação?\"\n );\n };\n\n vm.getWorkflowApprovalParameter = function (enumStatusApproval) {\n return {\n bonusesAndSponsorshipsRequestId:\n vm.model.bonusesAndSponsorshipsRequestId,\n enumStatusApproval: enumStatusApproval,\n comment: vm.model.comment,\n };\n };\n\n vm.doApproval = function (enumStatusApproval) {\n $rootScope.laddaLoading = true;\n\n var params = vm.getWorkflowApprovalParameter(enumStatusApproval);\n\n BonusRequest.workFlowApproval(\n params,\n function () {\n $state.go(\"main.bonusesandsponsorship\");\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n };\n\n vm.doCancel = function (enumStatusApproval) {\n $rootScope.laddaLoading = true;\n\n var params = vm.getWorkflowApprovalParameter(enumStatusApproval);\n\n BonusRequest.workFlowApproval(\n params,\n function () {\n $state.go(\"main.bonusesandsponsorship\");\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n };\n\n /* angular.extend($scope.$parent.vm, {\n title: \"Criar solicitação\",\n insertUrl: null,\n }); */\n\n vm.setEditingEnabled();\n vm.setCreatingRequest();\n vm.validateRequiredToApproval();\n /* vm.getAttachs(); */\n $rootScope.laddaLoading = false;\n\n if (vm.isEditingEnabled && vm.subAreas.length == 1) {\n vm.selectedSubArea = vm.subAreas[0];\n vm.enableSubAreaElement = false;\n }\n }\n );\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .controller(\n \"bonusListCtrl\",\n function (\n $scope,\n $rootScope,\n $state,\n $http,\n $filter,\n permissionService,\n settings,\n apiSettings,\n MessageService,\n FileSaver,\n Reports,\n WorkflowApproval,\n BonusRequest,\n Customer,\n list,\n subAreas,\n status,\n solicitants\n ) {\n var vm = this;\n var $translate = $filter(\"translate\");\n\n vm.subAreas = subAreas;\n vm.status = status;\n vm.solicitants = solicitants;\n\n // Pagination\n vm.pagination = {\n list: list,\n currentPage: 1,\n pageSize: apiSettings.defaultPageSize,\n pagesTotal: list.total,\n };\n\n angular.extend($scope.$parent.vm, {\n title: \"Bonificações e Patrocínios\",\n insertUrl: \"main.bonuses\",\n });\n\n $scope.$watch(\"vm.pagination.currentPage\", function (newValue, oldValue) {\n if (newValue !== oldValue) {\n vm.refresh(newValue);\n }\n });\n\n vm.refresh = function (page) {\n if (vm.customer == null) {\n var customer = null;\n } else {\n var customer = vm.customer.cnpjCpf;\n }\n\n var params = {\n userName: vm.userName,\n cpfCnpj: customer,\n statusId: vm.statusId,\n bonusesAndSponsorshipsRequestSubAreaId: vm.subAreaId,\n userId: vm.solicitantId,\n };\n params.page = page;\n BonusRequest.list(params).$promise.then(function (data) {\n vm.pagination.list = data;\n vm.pagination.currentPage = data.page;\n vm.pagination.pagesTotal = data.total;\n });\n };\n\n vm.search = function () {\n vm.refresh(1);\n };\n\n // AUTOCOMPLETE DE CLIENTES\n vm.getCustomers = function (val) {\n return BonusRequest.customerList({\n /* pageSize: 50, */\n keyword: val,\n }).$promise;\n };\n \n vm.list = [\n {\n id: 1,\n name: \"WAL MART BRASIL LTDA\",\n date: \"24/01/2023\",\n value: 10800,\n status: \"Iniciada\",\n subArea: \"Produtos\",\n productLine: \"N/A\",\n },\n {\n id: 2,\n name: \"JAYME WAINMAN\",\n date: \"19/01/2023\",\n value: 1500,\n status: \"Iniciada\",\n subArea: \"Produtos\",\n productLine: \"N/A\",\n },\n {\n id: 3,\n name: \"WALDIR LACHOWSKI\",\n date: \"17/01/2023\",\n value: 15000,\n status: \"Iniciada\",\n subArea: \"Produtos\",\n productLine: \"N/A\",\n },\n {\n id: 4,\n name: \"CENTRAL DE TV EBANO-RADIODIFDE SONS, DADOS E IMAGENS LTDA\",\n date: \"19/01/2023\",\n value: 10000,\n status: \"Iniciada\",\n subArea: \"Produtos\",\n productLine: \"N/A\",\n },\n {\n id: 5,\n name: \"MKM ENGENHARIA CONSTRUCOES E COMERCIO LTDA\",\n date: \"19/01/2023\",\n value: 20000,\n status: \"Iniciada\",\n subArea: \"Produtos\",\n productLine: \"N/A\",\n },\n {\n id: 6,\n name: \" Paulo\tATHLETIX EMPREENDIMENTOS ESPORTIVOS LTDA\",\n date: \"16/01/2023\",\n value: 5000,\n status: \"Iniciada\",\n subArea: \"Produtos\",\n productLine: \"N/A\",\n },\n ];\n }\n );\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .factory(\"BonusRequest\", [\n \"$resource\",\n \"$stateParams\",\n \"apiSettings\",\n function ($resource, $stateParams, apiSettings) {\n return $resource(\n apiSettings.baseUri + \"v1/bonuses-and-sponsorships/:id\",\n { id: \"@id\" },\n {\n list: {\n url: apiSettings.baseUri + \"v1/bonuses-and-sponsorships/list\",\n method: \"GET\",\n isArray: false,\n params: {\n page: 1,\n pageSize: apiSettings.defaultPageSize,\n },\n },\n dashboard: {\n url: apiSettings.baseUri + 'v1/bonuses-and-sponsorships/dashboard',\n method: 'GET',\n isArray: false\n },\n dashboardPage: {\n url: apiSettings.baseUri + \"v1/bonuses-and-sponsorships/dashboard-page\",\n method: \"GET\",\n isArray: false,\n params: {\n page: 1,\n pageSize: apiSettings.defaultPageSize,\n },\n },\n subAreas: {\n url: apiSettings.baseUri + \"v1/bonuses-and-sponsorships/sub-areas\",\n method: \"GET\",\n isArray: true,\n params: {\n all: true\n },\n },\n status: {\n url: apiSettings.baseUri + \"v1/bonuses-and-sponsorships/status\",\n method: \"GET\",\n isArray: true,\n },\n types: {\n url: apiSettings.baseUri + \"v1/bonuses-and-sponsorships/types\",\n method: \"GET\",\n isArray: true,\n },\n deposits: {\n url: apiSettings.baseUri + \"v1/bonuses-and-sponsorships/deposits\",\n method: \"GET\",\n isArray: true,\n },\n productLines: {\n url:\n apiSettings.baseUri + \"v1/bonuses-and-sponsorships/product-lines\",\n method: \"GET\",\n isArray: true,\n },\n customerList: {\n url: apiSettings.baseUri + \"v1/bonuses-and-sponsorships/customers\",\n method: \"GET\",\n isArray: true,\n },\n solicitants: {\n url: apiSettings.baseUri + \"v1/bonuses-and-sponsorships/solicitors\",\n method: \"GET\",\n isArray: true,\n },\n workFlowApproval: {\n url:\n apiSettings.baseUri +\n \"v1/workflowapprovals/bonuses-and-sponsorships\",\n method: \"PUT\",\n },\n cancel: {\n url: apiSettings.baseUri + \"v1/workflowapprovals/cancel\",\n method: \"POST\",\n },\n insert: {\n method: \"POST\",\n },\n update: {\n method: \"PUT\",\n },\n delete: {\n method: \"DELETE\",\n },\n }\n );\n },\n ]);\n","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).factory('WorkflowApproval', ['$resource', '$stateParams', 'apiSettings', function ($resource, $stateParams, apiSettings) {\n\treturn $resource(apiSettings.baseUri + 'v1/workflowapprovals/:id', { id: '@id' }, {\n\t\t'list': {\n\t\t\tmethod: 'GET',\n\t\t\tisArray: false,\n\t\t\tparams: {\n\t\t\t\tpage: 1,\n\t\t\t\tpageSize: apiSettings.defaultPageSize,\n\t\t\t\tkeyword: ''\n\t\t\t}\n\t\t},\n\t\t'update': {\n\t\t\tmethod: 'PUT'\n\t\t},\n\t\t'updateColor': {\n\t\t\turl: apiSettings.baseUri + 'v1/workflowapprovals/color',\n\t\t\tmethod: 'PUT',\n\t\t},\n\t\t'cancel': {\n\t\t\turl: apiSettings.baseUri + 'v1/workflowapprovals/cancel',\n\t\t\tmethod: 'POST'\n\t\t},\n\t\t'complete': {\n\t\t\turl: apiSettings.baseUri + 'v1/workflowapprovals/complete',\n\t\t\tmethod: 'POST'\n\t\t}\n\t});\n}]);","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .config(function ($stateProvider, $urlRouterProvider) {\n var _feriados_2023 = [\n {\n date: \"2023-01-01\",\n name: \"Confraternização mundial\",\n type: \"national\",\n },\n {\n date: \"2023-02-21\",\n name: \"Carnaval\",\n type: \"national\",\n },\n {\n date: \"2023-04-07\",\n name: \"Sexta-feira Santa\",\n type: \"national\",\n },\n {\n date: \"2023-04-09\",\n name: \"Páscoa\",\n type: \"national\",\n },\n {\n date: \"2023-04-21\",\n name: \"Tiradentes\",\n type: \"national\",\n },\n {\n date: \"2023-05-01\",\n name: \"Dia do trabalho\",\n type: \"national\",\n },\n {\n date: \"2023-06-08\",\n name: \"Corpus Christi\",\n type: \"national\",\n },\n {\n date: \"2023-09-07\",\n name: \"Independência do Brasil\",\n type: \"national\",\n },\n {\n date: \"2023-10-12\",\n name: \"Nossa Senhora Aparecida\",\n type: \"national\",\n },\n {\n date: \"2023-11-02\",\n name: \"Finados\",\n type: \"national\",\n },\n {\n date: \"2023-11-15\",\n name: \"Proclamação da República\",\n type: \"national\",\n },\n {\n date: \"2023-12-25\",\n name: \"Natal\",\n type: \"national\",\n },\n ];\n\n $stateProvider.state(\"main.colorrequest\", {\n url: \"colorrequest\",\n params: {\n expired: false,\n },\n resolve: {\n status: [\n \"Status\",\n function (Status) {\n return Status.listIds({\n moduleId: window.enumerators.modules.Cores,\n }).$promise;\n },\n ],\n states: [\n \"Internal\",\n function (Internal) {\n return Internal.states().$promise;\n },\n ],\n managers: [\n \"Internal\",\n function (Internal) {\n return Internal.ownUsersList({ pageSize: 0, isManager: true }).$promise;\n },\n ],\n },\n views: {\n main: {\n templateUrl:\n \"/modules/ColorRequests/colorrequest/views/colorrequest.list.html\",\n controller: \"colorrequestListCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n\n\n $stateProvider.state(\"main.colorrequest-edit\", {\n url: \"colorrequest/:id?chat\",\n resolve: {\n model: [\n \"$stateParams\",\n \"ColorRequest\",\n function ($stateParams, ColorRequest) {\n if ($stateParams.id) {\n return ColorRequest.get({ id: $stateParams.id }).$promise;\n }\n return {};\n },\n ],\n workflowApprovals: [\n \"$stateParams\",\n \"WorkflowApproval\",\n function ($stateParams, WorkflowApproval) {\n var id = $stateParams.id ? $stateParams.id : 0;\n return WorkflowApproval.list({\n page: 1,\n pageSize: 1000,\n promotionRequestId: id,\n }).$promise;\n },\n ],\n attachmentTypes: [\n \"$stateParams\",\n \"Attachment\",\n function ($stateParams, Attachment) {\n var id = $stateParams.id ? $stateParams.id : 0;\n return Attachment.list({\n promotionRequestId: id,\n moduleId: window.enumerators.modules.Cores,\n }).$promise;\n },\n ],\n maxAllowedFileSize: [\n \"$stateParams\",\n \"Internal\",\n function ($stateParams, Internal) {\n return Internal.parameters({ entry: \"MaxAllowedFileSize\" })\n .$promise;\n },\n ],\n classificationsTypes: [\n \"$stateParams\",\n \"ColorRequest\",\n function ($stateParams, ColorRequest) {\n return ColorRequest.classificationsTypes().$promise;\n },\n ],\n projectsTypes: [\n \"$stateParams\",\n \"ColorRequest\",\n function ($stateParams, ColorRequest) {\n return ColorRequest.projectsTypes().$promise;\n },\n ],\n customers: [\n \"Customer\",\n function (Customer) {\n return Customer.listIds().$promise;\n },\n ],\n segments: [\n \"$stateParams\",\n \"Internal\",\n function ($stateParams, Internal) {\n return Internal.segmentsList().$promise;\n },\n ],\n designers: [\n \"$stateParams\",\n \"Internal\",\n function ($stateParams, Internal) {\n return Internal.designersList().$promise;\n },\n ],\n reproveReasons: [\n \"$stateParams\",\n \"DisapprovalReason\",\n function ($stateParams, DisapprovalReason) {\n return DisapprovalReason.listIds().$promise;\n },\n ],\n salesList: [\n \"$stateParams\",\n \"ColorRequest\",\n function ($stateParams, ColorRequest) {\n var id = $stateParams.id ? $stateParams.id : 0;\n return ColorRequest.listSales({ colorsRequestId: id }).$promise;\n },\n ],\n holidays: [\n \"$stateParams\",\n \"ColorRequest\",\n function ($stateParams, ColorRequest) {\n return ColorRequest.nationalHolidays({\n year: new Date().getFullYear(),\n }).$promise\n .then(function (response) {\n return response;\n })\n .catch(function (error) {\n console.error(\"Erro ao buscar feriados:\", error);\n return null;\n });\n },\n ],\n },\n views: {\n main: {\n templateUrl:\n \"/modules/ColorRequests/colorrequest/views/colorrequest.edit.html\",\n controller: \"colorrequestEditCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n\n $stateProvider.state(\"main.colorrequestexternal\", {\n url: \"colorrequestexternal/:id?\",\n resolve: {\n model: [\n \"$stateParams\",\n \"ColorRequest\",\n function ($stateParams, ColorRequest) {\n if ($stateParams.id) {\n return ColorRequest.get({ id: $stateParams.id }).$promise;\n }\n return {};\n },\n ],\n workflowApprovals: [\n \"$stateParams\",\n \"WorkflowApproval\",\n function ($stateParams, WorkflowApproval) {\n var id = $stateParams.id ? $stateParams.id : 0;\n return WorkflowApproval.list({\n page: 1,\n pageSize: 1000,\n promotionRequestId: id,\n }).$promise;\n },\n ],\n attachmentTypes: [\n \"$stateParams\",\n \"Attachment\",\n function ($stateParams, Attachment) {\n var id = $stateParams.id ? $stateParams.id : 0;\n return Attachment.list({\n promotionRequestId: id,\n moduleId: window.enumerators.modules.Cores,\n }).$promise;\n },\n ],\n maxAllowedFileSize: [\n \"$stateParams\",\n \"Internal\",\n function ($stateParams, Internal) {\n return Internal.parameters({ entry: \"MaxAllowedFileSize\" })\n .$promise;\n },\n ],\n classificationsTypes: [\n \"$stateParams\",\n \"ColorRequest\",\n function ($stateParams, ColorRequest) {\n return ColorRequest.classificationsTypes().$promise;\n },\n ],\n projectsTypes: [\n \"$stateParams\",\n \"ColorRequest\",\n function ($stateParams, ColorRequest) {\n return ColorRequest.projectsTypes().$promise;\n },\n ],\n customers: [\n \"Customer\",\n function (Customer) {\n return Customer.listIds().$promise;\n },\n ],\n segments: [\n \"$stateParams\",\n \"Internal\",\n function ($stateParams, Internal) {\n return Internal.segmentsList().$promise;\n },\n ],\n reproveReasons: [\n \"$stateParams\",\n \"DisapprovalReason\",\n function ($stateParams, DisapprovalReason) {\n return DisapprovalReason.listIds().$promise;\n },\n ],\n salesList: [\n \"$stateParams\",\n \"ColorRequest\",\n function ($stateParams, ColorRequest) {\n var id = $stateParams.id ? $stateParams.id : 0;\n return ColorRequest.listSales({ colorsRequestId: id }).$promise;\n },\n ],\n },\n views: {\n main: {\n templateUrl:\n \"/modules/ColorRequests/colorrequest/views/colorrequestexternal.edit.html\",\n controller: \"colorrequestExternalEditCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n });\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .controller(\n \"colorrequestExternalEditCtrl\",\n function (\n $scope,\n $rootScope,\n $state,\n $filter,\n $localStorage,\n apiSettings,\n MessageService,\n tools,\n ColorRequest,\n Customer,\n WorkflowApproval,\n Internal,\n maxAllowedFileSize,\n customers,\n model,\n attachmentTypes,\n salesList,\n Attachment,\n ) {\n var vm = this;\n\n var $translate = $filter(\"translate\");\n\n\n angular.extend($scope.$parent.vm, {\n title: \"colorsRequests.settings.title\",\n insertUrl: null,\n });\n\n vm.enumerators = window.enumerators;\n vm.projectModule = config.projectModule;\n\n vm.userId = $localStorage.userId;\n $scope.uploader = {};\n\n // INICIALIZAÇÕES\n $rootScope.laddaLoading = false;\n vm.model = model;\n\n vm.attachment = {}; // Inicializa a model que armazena as informações de um novo anexo\n vm.attachmentEditing = {}; // Inicializa a model que armazena as informações do anexo que está sendo editado\n vm.attachmentsInvoiceSaleList =\n attachmentTypes.filter(\n (x) => x.attachmentTypeId == window.enumerators.attachmentType.InvoiceSale\n ).length > 0\n ? attachmentTypes.filter(\n (x) =>\n x.attachmentTypeId == window.enumerators.attachmentType.InvoiceSale\n )[0].attachments\n : [];\n\n vm.attachments = [];\n vm.isAttaching = false;\n vm.isInsertSale = false;\n vm.showSales = false;\n vm.sale = {\n valueTintingProducts: 0,\n valueOthersProducts: 0,\n colorsProducts: [],\n othersProducts: [],\n };\n // CONFIGURAÇÃO DO UPLOAD\n vm.attachmentsInvoiceSale = [];\n vm.countAttachmentsInvoiceSale = vm.attachmentsInvoiceSale.length;\n\n vm.tempFolder = tools.getRandomString(8);\n vm.uploadConfig = {\n singleFile: true,\n testChunks: false,\n target:\n apiSettings.baseUri +\n \"v1/internal/upload\" +\n \"?tempFolder=\" +\n vm.tempFolder,\n headers: {\n Authorization: \"Bearer \" + $localStorage.authorizationData.token,\n },\n };\n vm.uploadImageConfig = {\n singleFile: true,\n testChunks: false,\n target:\n apiSettings.baseUri +\n \"v1/chat/upload-image/\" +\n vm.model.colorsRequestId,\n headers: {\n Authorization: \"Bearer \" + $localStorage.authorizationData.token,\n },\n };\n vm.allowedFileExtensions = [];\n vm.maxAllowedFileSiz = 0;\n vm.customers = customers;\n\n if (vm.model.customerId && vm.customers && vm.customers.length) {\n vm.selectedCustomer = vm.customers.find(function (item) {\n return item.key == vm.model.customerId;\n })\n vm.model.customerId = null;\n }\n\n // AUTOCOMPLETE DE Cliente\n vm.getCustomer = function (val) {\n return Customer.listIds({ keyword: val }).$promise;\n };\n\n // AUTOCOMPLETE DE CORES\n vm.getColors = function (val) {\n return Internal.colorsList({ pageSize: 50, keyword: val }).$promise;\n };\n\n vm.delColor = function (x) {\n var index = vm.model.colors.indexOf(x);\n vm.model.colors.splice(index, 1);\n };\n\n vm.editAttachment = function (item, enumAttachmentType) {\n vm.showAttachmentForm(true, enumAttachmentType);\n\n vm.attachmentEditing = item; //Guarda a referência do item que está sendo editado numa variável global, para que a mesma seja atualizada no caso do usuário clicar no botão salvar\n angular.copy(vm.attachmentEditing, vm.attachment); //Atualiza a model de anexo com um cópia do objeto que está sendo editado\n\n vm.attachment.isEditing = true;\n };\n\n vm.deleteAttachment = function (item, enumAttachmentType) {\n switch (enumAttachmentType) {\n case window.enumerators.attachmentType.InvoiceSale:\n vm.countAttachmentsInvoiceSale -= 1;\n break;\n default:\n break;\n }\n item.isDeleted = true;\n item.requiredDbUpdate = true;\n };\n\n vm.showAttachmentForm = function (visible, enumAttachmentType) {\n vm.isAttaching = visible;\n vm.attachType = enumAttachmentType;\n\n switch (enumAttachmentType) {\n case window.enumerators.attachmentType.InvoiceSale:\n vm.allowedFileExtensions = [\"pdf\", \"jpeg\", \"png\", \"jpg\"];\n vm.maxAllowedFileSize = parseInt(maxAllowedFileSize.value);\n break;\n default:\n break;\n }\n\n vm.attachment = {\n attachmentId: 0,\n attachmentTypeId: enumAttachmentType,\n isDeleted: false,\n isEditing: false,\n requiredDbUpdate: true,\n };\n\n // Reseta o formulário caso esteja fechando a modal de inclusão do anexo\n if (visible == false) vm.resetAttachmentForm();\n };\n\n vm.resetAttachmentForm = function () {\n var form = $scope.colorrequestAttachmentForm;\n form.$setPristine();\n form.$setUntouched();\n };\n\n vm.saveAttachment = function (enumAttachmentType) {\n $rootScope.laddaLoading = true;\n\n vm.attachment.requiredDbUpdate = true;\n\n // Verifica se é uma inclusão ou edição do objeto\n if (vm.attachment.isEditing == true) {\n angular.copy(vm.attachment, vm.attachmentEditing); // Repassa as atualizações feitas na model do anexo, para o objeto de referência (anexo que está sendo editado)\n } else {\n vm.attachments.push(vm.attachment); // Inclui o novo objeto no array\n\n switch (enumAttachmentType) {\n case window.enumerators.attachmentType.InvoiceSale:\n vm.countAttachmentsInvoiceSale += 1;\n vm.attachmentsInvoiceSale.push(vm.attachment);\n vm.addClassErrorInvoiceSale = false;\n break;\n default:\n break;\n }\n }\n\n vm.showAttachmentForm(false, 0);\n $rootScope.laddaLoading = false;\n };\n\n vm.uploadSubmit = function ($files, $event, $flow) {\n if ($files[0] === undefined) return;\n\n // Valida se a extensão do arquivo é permitida\n if (\n tools.validateFileExtension(\n $files[0].name,\n vm.allowedFileExtensions\n ) == false\n )\n return;\n\n // Valida o tamanho do arquivo\n if (\n tools.validateFileMaxSize($files[0].size, vm.maxAllowedFileSize) ==\n false\n )\n return;\n\n $flow.upload();\n };\n\n vm.uploadSuccess = function ($file, $message, $flow) {\n var uploadResult = JSON.parse($message);\n vm.attachment.name = uploadResult.originalFilename;\n vm.attachment.fileDocument = uploadResult.filename;\n vm.attachment.url = tools.getFileTempPath(\n vm.tempFolder,\n uploadResult.filename\n );\n\n // Reseta o flow\n $flow.cancel();\n };\n\n vm.getallowedFileExtensions = function (enumAttachmentType) {\n return \".\" + vm.allowedFileExtensions.join(\", .\");\n };\n\n vm.getFileExtension = function (filename) {\n return tools.getFileExtension(filename);\n };\n\n vm.selectCustomer = function () {\n if (!vm.model.customerId) {\n return;\n }\n\n ColorRequest.verifyCustomer(\n { customerId: vm.model.customerId },\n function (response) {\n // if (response.error60) {\n // MessageService.alertInfo(\"Há projetos para esta loja com mais de 60 dias em aberto.\");\n // $state.go('main.colorrequest', {\n // expired: true\n // });\n // return;\n // }\n\n if (response.error120) {\n MessageService.alertInfo(\n \"Há projetos para esta loja com mais de 120 dias em aberto\"\n );\n $state.go(\"main.colorrequest\", {\n expired: true,\n });\n return;\n }\n\n // Se Loja Comercial e Bonificação for false devo verificar designer por uf.\n if (\n response.errorDesigner &&\n !vm.model.isBonusAccounts\n ) {\n MessageService.alertInfo(\n \"Não há Designer para UF da loja selecionada.\"\n );\n $state.go(\"main.colorrequest\");\n return;\n }\n\n vm.customerTypeIdSelected = response.customersTypeId;\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n };\n\n vm.isNewRequest = function () {\n return (\n vm.model.colorsRequestId === undefined ||\n vm.model.colorsRequestId == 0\n );\n };\n\n vm.isCompletedRequest = function() {\n return !vm.isNewRequest() && vm.model.status.isCompleted;\n }\n\n vm.getWorkflowApprovalParameter = function (enumStatusApproval) {\n return {\n colorsRequestId: vm.model.colorsRequestId,\n enumStatusApproval: enumStatusApproval,\n comment: vm.model.comment,\n disapprovalReasonId: vm.disapprovalReasonId\n ? vm.disapprovalReasonId\n : null,\n };\n };\n\n vm.save = function () {\n if (!vm.isNewRequest()) {\n return;\n }\n\n if (vm.selectedCustomer) {\n vm.model.customerId = vm.selectedCustomer.key\n }\n ColorRequest.insertExternal(vm.model).then(\n function (response) {\n $state.go('main.colorrequestexternal', { id: response });\n },\n function (response) {\n MessageService.alertError(response);\n }\n );\n }\n\n\n vm.changeStatus = function (nextStatus, commentRequired = false) {\n var message = \"Deseja mesmo realizar a ação e mudar o status?\";\n\n MessageService.confirm(\n function () {\n var params = vm.getWorkflowApprovalParameter(window.enumerators.statusApproval.Aprovado);\n\n WorkflowApproval.updateColor(\n params,\n function () {\n $state.go(\"main.colorrequest\");\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n },\n \"Confirmação\",\n message\n );\n };\n\n vm.finishProject = function () {\n // Quando encerrar, se não houver venda, deve mandar para o status Concluído/Sem Venda, se tiver manda para Concluído/Venda.\n if (vm.salesListHasLength()) {\n vm.changeStatus(\"ConcluidoVenda\");\n } else {\n vm.changeStatus(\"ConcluidoSemVenda\");\n }\n };\n\n /*\n Funções de Sales\n */\n // #region Sales\n\n vm.noColorProductId = false;\n\n vm.insertSale = function () {\n if (\n vm.sale.valueOthersProducts == 0 &&\n vm.sale.valueTintingProducts == 0\n ) {\n MessageService.alertInfo(\n \"Valor em produtos Tintométricos ou Valor em demais produtos deve ser preenchido.\"\n );\n return;\n }\n\n if (\n vm.attachmentsInvoiceSale.filter((x) => x.isDeleted == 0).length == 0\n ) {\n MessageService.alertInfo(\"Nota fiscal obrigatório\");\n return;\n }\n vm.sale.tempFolder = vm.tempFolder;\n vm.sale.attachmentsInvoiceSale = vm.attachmentsInvoiceSale;\n vm.sale.colorsRequestId = vm.model.colorsRequestId;\n\n ColorRequest.insertSale(\n vm.sale,\n function (response) {\n vm.getAttachsAndSales();\n vm.cancelInsertSale();\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n };\n\n vm.cancelInsertSale = function () {\n vm.sale = {\n valueTintingProducts: 0,\n valueOthersProducts: 0,\n colorsProducts: [],\n othersProducts: [],\n };\n vm.attachmentsInvoiceSale = [];\n vm.countAttachmentsInvoiceSale = vm.attachmentsInvoiceSale.length;\n vm.isInsertSale = false;\n };\n\n vm.getTintingProducts = function (val) {\n vm.autoCompleteProducts = Internal.colorsProductsList({ pageSize: 50, keyword: val })\n .$promise;\n return vm.autoCompleteProducts;\n };\n\n vm.getOthersProducts = function (val) {\n return Internal.othersProductsList({ pageSize: 50, keyword: val })\n .$promise;\n };\n\n $scope.$watch(\"vm.colorProduct\", function (newValue, oldValue) {\n if (newValue) {\n var exist = false;\n vm.noColorProductId = false;\n\n if (!vm.sale.colorsProducts) {\n vm.sale.colorsProducts = [];\n }\n\n if (newValue.colorsProductId) {\n vm.sale.colorsProducts.map((x) => {\n if (newValue.colorsProductId == x.colorsProductId) {\n exist = true;\n }\n });\n } else {\n vm.noColorProductId = true;\n }\n\n if (!exist && newValue.colorsProductId) {\n vm.sale.colorsProducts.push(newValue);\n vm.colorProduct = null;\n }\n }\n });\n\n $scope.$watch(\"vm.salesProductColor\", function (newValue, oldValue) {\n if (vm.colorProduct && newValue) {\n var exist = false;\n vm.noColorProductId = false;\n\n vm.colorProduct.colorId = newValue.colorId;\n vm.colorProduct.code = newValue.code;\n vm.colorProduct.colorName = newValue.name;\n vm.colorProduct.rgb = newValue.rgb;\n\n vm.colorProduct.description = `${vm.colorProduct.code}' '${vm.colorProduct.colorName} - ${vm.colorProduct.productName}`;\n\n if (!vm.sale.colorsProducts) {\n vm.sale.colorsProducts = [];\n }\n\n vm.sale.colorsProducts.map((x) => {\n if (vm.colorProduct.colorId == x.colorId && vm.colorProduct.productId == x.productId) {\n exist = true;\n }\n });\n\n if (!exist) {\n vm.sale.colorsProducts.push(vm.colorProduct);\n }\n\n vm.colorProduct = null;\n vm.salesProductColor = null;\n }\n });\n\n $scope.$watch(\"vm.otherProduct\", function (newValue, oldValue) {\n if (newValue) {\n var exist = false;\n\n if (!vm.sale.othersProducts) {\n vm.sale.othersProducts = [];\n }\n vm.sale.othersProducts.map((x) => {\n if (newValue.othersProductId == x.othersProductId) {\n exist = true;\n }\n });\n\n if (!exist) {\n vm.sale.othersProducts.push(newValue);\n }\n\n vm.otherProduct = null;\n }\n });\n\n vm.delColorProduct = function (x) {\n var index = vm.model.colors.indexOf(x);\n vm.sale.colorsProducts.splice(index, 1);\n };\n\n vm.delOtherProduct = function (x) {\n var index = vm.model.colors.indexOf(x);\n vm.sale.othersProducts.splice(index, 1);\n };\n\n vm.editSale = function (saleId) {\n ColorRequest.saleGet(\n { saleId: saleId },\n function (response) {\n vm.sale = response;\n vm.isInsertSale = true;\n vm.attachmentsInvoiceSaleList.map((x) => {\n if (x.saleId == vm.sale.saleId) {\n vm.attachmentsInvoiceSale.push(x);\n }\n });\n vm.countAttachmentsInvoiceSale = vm.attachmentsInvoiceSale.length;\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n };\n\n vm.deleteSale = function (saleId) {\n MessageService.confirm(\n function () {\n ColorRequest.deleteSale(\n { saleId: saleId },\n function () {\n vm.getAttachsAndSales();\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n },\n \"Confirmação\",\n \"Deseja mesmo excluir essa venda?\"\n );\n };\n\n vm.getAttachsAndSales = function () {\n Attachment.list(\n { promotionRequestId: vm.model.colorsRequestId },\n function (response) {\n vm.attachmentsInvoiceSaleList =\n response.filter(\n (x) =>\n x.attachmentTypeId == window.enumerators.attachmentType.InvoiceSale\n ).length > 0\n ? response.filter(\n (x) =>\n x.attachmentTypeId ==\n window.enumerators.attachmentType.InvoiceSale\n )[0].attachments\n : [];\n vm.getSales();\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n };\n\n vm.getSales = function () {\n ColorRequest.listSales(\n { colorsRequestId: vm.model.colorsRequestId },\n function (response) {\n vm.formSalesList(response);\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n };\n\n vm.formSalesList = function (response) {\n vm.salesList = response.saleList;\n const totalSale = {\n createdOn: \"Valor total\",\n valueTintingProducts: response.saleTotal.sumValueTintingProducts,\n valueOthersProducts: response.saleTotal.sumValueOthersProducts,\n };\n\n\n vm.salesList.push(totalSale);\n if (vm.salesList) {\n if (!vm.attachmentsInvoiceSaleList || !vm.attachmentsInvoiceSaleList.length) {\n vm.attachmentsInvoiceSaleList = [];\n }\n\n vm.salesList.map((x) => {\n const attach = vm.attachmentsInvoiceSaleList.find(\n (y) => y.saleId == x.saleId\n );\n if (attach) {\n x.url = attach.url;\n x.fileDocument = attach.fileDocument;\n x.attachmentId = attach.attachmentId,\n x.status = attach.enumStatusApproval;\n }\n return x;\n });\n\n }\n };\n\n vm.formSalesList(salesList);\n\n vm.salesListHasLength = function () {\n // Necessário para remover a última linha que exibe a soma de todas as notas.\n const onlySales = vm.salesList.filter((x) => x.saleId != null);\n if (onlySales.length == 0) {\n return false;\n }\n return true;\n };\n\n vm.showProjectAttachment = function () {\n if (vm.isNewRequest()) {\n return false;\n }\n\n return true;\n };\n\n // #ndregion Sales\n\n\n\n $scope.$watch(\"vm.selectedCustomer\", function (newValue, oldValue) {\n if (newValue && newValue.key && (!oldValue || newValue.key !== oldValue.key)) {\n Customer.get(\n { id: newValue.key },\n function (response) {\n if (!response.hasColorSample) {\n if (response.hasColorSampleLastAskedOn && !(response.hasColorSampleLastAskedOn instanceof Date)) {\n response.hasColorSampleLastAskedOn = new Date(response.hasColorSampleLastAskedOn);\n if (isNaN(response.hasColorSampleLastAskedOn.getTime())) {\n return;\n }\n\n response.hasColorSampleLastAskedOn.setMonth(response.hasColorSampleLastAskedOn.getMonth() + 1);\n }\n\n var currentDate = new Date();\n\n if (!response.hasColorSampleLastAskedOn || currentDate.getTime() >= response.hasColorSampleLastAskedOn.getTime()) {\n MessageService.confirm(\n function () {\n var data = {\n customerId: vm.selectedCustomer.key,\n hasColorSample: true\n }\n Customer.updateHasColorSample(data);\n },\n \"Amostra de cores\",\n \"Color Sample Esta loja já possui a amostra de cores - A Sua Cor?\"\n );\n }\n }\n }\n );\n }\n });\n }\n );\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .controller(\n \"colorrequestListCtrl\",\n function (\n $scope,\n $rootScope,\n $filter,\n permissionService,\n settings,\n apiSettings,\n MessageService,\n FileSaver,\n ColorRequest,\n Reports,\n status,\n states,\n managers,\n $stateParams,\n $sessionStorage\n ) {\n var vm = this;\n vm.initialized = false;\n vm.isRefreshing = false;\n\n var $translate = $filter(\"translate\");\n\n vm.permissions = permissionService;\n vm.status = status;\n vm.states = states;\n vm.managers = managers;\n vm.groups = window.enumerators.enumGroupsColorsRequests;\n vm.enumerators = enumerators;\n vm.currentPage = 0;\n\n angular.extend($scope.$parent.vm, {\n title: \"colorsRequests.settings.title\",\n insertUrl: vm.permissions.isAuthorized(\"InsertColorsRequests\")\n ? \"main.colorrequest-edit\"\n : null,\n\n });\n\n $rootScope.laddaLoading = false;\n\n $scope.$watch(\"vm.pagination.currentPage\", function (newValue, oldValue) {\n if (vm.pagination && vm.pagination.currentPage && newValue !== oldValue && newValue !== vm.currentPage) {\n vm.refresh(newValue);\n }\n });\n\n vm.refresh = function (page, filter) {\n if (!vm.isRefreshing) {\n vm.isRefreshing = true;\n\n var _filter = filter || $sessionStorage.colorsRequestsContextFilter;\n var filterCustomer = $sessionStorage.colorsRequestsContextFilter_Customer || null;\n\n\n if (!_filter) {\n var todayDate = new Date(Date.now());\n var _365DaysAgo = new Date(todayDate.getTime() - (365 * 24 * 60 * 60 * 1000));\n _filter = {\n startsOn: _365DaysAgo,\n endsOn: todayDate,\n expired: false,\n };\n }\n\n _filter.page = page || _filter.page || 1;\n _filter.customerId = null;\n if (filterCustomer) _filter.customerId = filterCustomer.key;\n\n $sessionStorage.colorsRequestsContextFilter = _filter;\n\n ColorRequest.list(_filter).$promise.then(function (data) {\n\n if (!vm.pagination) {\n vm.currentPage = page;\n vm.pagination = {\n list: data,\n currentPage: data.page,\n pageSize: apiSettings.defaultPageSize,\n pagesTotal: data.total\n };\n } else {\n vm.currentPage = page;\n vm.pagination.list = data;\n vm.pagination.currentPage = page;\n vm.pagination.pagesTotal = data.total;\n }\n }).finally(function () {\n vm.isRefreshing = false;\n vm.initialized = true;\n });\n }\n };\n\n vm.excel = function () {\n var _filter = $sessionStorage.colorsRequestsContextFilter;\n var todayDate = new Date(Date.now());\n var firstDayOfTodayYear = new Date(todayDate.getFullYear(), 0, 1);\n\n Reports.colorRequestExcel({\n startsOn: _filter?.startsOn || firstDayOfTodayYear,\n endsOn: _filter?.endsOn || todayDate\n },\n function (response) {\n var filename = moment().format(\"YYYYMMDDHHmmss\") + \"_Projetos.xlsx\";\n\n FileSaver.saveAs(response.data, filename);\n },\n function (response) {\n var msg = $translate(\"errors.couldNotCompleteRequest\");\n\n MessageService.alertError(msg);\n }\n );\n };\n\n // Caso tenha projeto com mais de 60 dias para loja retorna para projetos vencidos\n if ($stateParams.expired) {\n vm.filter.expired = true;\n vm.refresh(1);\n }\n\n vm.showConsumer = function () {\n // Para Designers:\n // Não aparece os Consumidores\n if (!settings || !settings.groups || !settings.groups.length || settings.groups.find((x) => x.groupId == vm.groups.Designer)) {\n return false;\n }\n return true;\n };\n\n vm.showDeleteButton = function (currentStatusId) {\n // Só Solicitante ou Controle de Qualidade pode deletar nos Status de Aguard. Init Prod ou Em Espera\n if (\n settings.permissions.includes(\"DeleteEditColorRequest\") &&\n (currentStatusId == vm.enumerators.statusColor.EmEspera ||\n currentStatusId ==\n vm.enumerators.statusColor.AguardandoIniciodeProducao)\n ) {\n return true;\n }\n return false;\n };\n\n vm.showNewExternalRequest = function () {\n // Só Solicitante ou Controle de Qualidade pode adicionar solicitação externa\n const hasAccess = settings.groups.find(\n (x) => x.groupId == vm.groups.ControleQualidade\n );\n if (\n hasAccess\n ) {\n return true;\n }\n return false;\n };\n\n vm.delete = function (colorsRequestId) {\n MessageService.confirmDelete(function () {\n ColorRequest.deleteColor(\n { colorsRequestId: colorsRequestId },\n function () {\n vm.refresh(1);\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n });\n };\n\n vm.updateFilters = function (filter) {\n vm.refresh(1, filter);\n };\n\n vm.refresh(null);\n }\n );\n","\"use strict\";\n\nangular.module(ApplicationConfiguration.applicationModuleName).factory(\"Chat\", [\n \"$rootScope\",\n \"apiSettings\",\n function ($rootScope, apiSettings) {\n var proxy;\n var connection;\n var chat;\n\n return {\n connect: function (userId, colorsRequestId) {\n angular.element.connection.chatHub.client.broadcastMessage = function ({\n chatEvent,\n payload,\n }) {\n\n if (chatEvent == \"NewMessage\") {\n $rootScope.$broadcast(\"newMessage\", { chatEvent, payload });\n } else if (chatEvent == \"Error\") {\n /* $rootScope.$broadcast('newMessage', {chatEvent, payload}); */\n }\n };\n\n angular.element.connection.chatHub.client.receiveNotification =\n function (event, payload) {\n $rootScope.$broadcast(\"receiveNotification\", event, payload);\n };\n\n angular.element.connection.chatHub.client.broadcastOnLine = function (\n chatEvent\n ) {\n $rootScope.$broadcast(\"userOnLine\", chatEvent);\n };\n\n chat = angular.element.connection.chatHub;\n connection = angular.element.hubConnection();\n\n angular.element.connection.hub.url = apiSettings.chatUri;\n angular.element.connection.hub\n .start({ jsonp: true })\n .done(function () {\n $rootScope.$broadcast(\"chatStarted\");\n if (!chat) return;\n if (chat.server) {\n chat.server.registerConnection(userId, colorsRequestId);\n } else {\n return;\n }\n })\n .fail(function (e) {\n });\n },\n isConnecting: function () {\n return connection.state === 0;\n },\n isConnected: function () {\n return connection.state === 1;\n },\n connectionState: function () {\n return connection.state;\n },\n\n sendMessage: function (userId, colorsRequestId, message) {\n if (!chat) return;\n if (chat.server) {\n chat.server.sendMessage(userId, colorsRequestId, message);\n }\n },\n\n sendImageMessage: function (userId, colorsRequestId, imageUrl) {\n if (!chat) return;\n if (chat.server) {\n chat.server.sendImageMessage(userId, colorsRequestId, imageUrl);\n }\n },\n\n markAllAsRead: function (userId, colorsRequestId) {\n if (!chat) return;\n if (chat.server) {\n chat.server.markAllAsRead(userId, colorsRequestId);\n }\n },\n\n exitChat: function (userId, colorsRequestId) {\n if (!chat) return;\n if (chat.server) {\n chat.server.exitChat(userId, colorsRequestId);\n }\n },\n };\n },\n]);\n","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).factory('ColorRequest', ['$resource', '$stateParams', 'apiSettings', '$http', function ($resource, $stateParams, apiSettings, $http) {\n var ColorRequest = $resource(apiSettings.baseUri + 'v1/colorsrequests/:id', { id: '@id' }, {\n 'list': {\n method: 'GET',\n isArray: false,\n params: {\n page: 1,\n pageSize: apiSettings.defaultPageSize\n }\n },\n 'listIds': {\n url: apiSettings.baseUri + 'v1/colorsrequests/list/ids',\n method: 'GET',\n isArray: true\n },\n 'listCustomersIds': {\n url: apiSettings.baseUri + 'v1/customers/list/ids',\n method: 'GET',\n isArray: true,\n params: {\n keyword: null\n }\n },\n 'insert': {\n method: 'POST'\n },\n 'update': {\n method: 'PUT'\n },\n 'delete': {\n method: 'DELETE'\n },\n 'classificationsTypes': {\n url: apiSettings.baseUri + 'v1/enumerators/classificationstypes',\n method: 'GET',\n isArray: true\n },\n 'projectsTypes': {\n url: apiSettings.baseUri + 'v1/enumerators/projectstypes',\n method: 'GET',\n isArray: true\n },\n 'verifyCustomer': {\n url: apiSettings.baseUri + 'v1/colorsrequests/verify-customers/:customerId',\n method: 'GET',\n isArray: false\n },\n 'insertSale': {\n url: apiSettings.baseUri + 'v1/sales',\n method: 'POST'\n },\n 'listSales': {\n url: apiSettings.baseUri + 'v1/sales/list/:colorsRequestId',\n method: 'GET'\n },\n 'saleGet': {\n url: apiSettings.baseUri + 'v1/sales/:saleId',\n method: 'GET',\n isArray: false\n },\n 'deleteSale': {\n url: apiSettings.baseUri + 'v1/sales/:saleId',\n method: 'DELETE'\n },\n 'dash': {\n method: 'GET',\n isArray: false,\n url: apiSettings.baseUri + 'v1/colorsrequests/dash',\n },\n 'deleteColor': {\n url: apiSettings.baseUri + 'v1/colorsrequests/deleteColor/:colorsRequestId',\n method: 'DELETE',\n isArray: false\n },\n 'nationalHolidays': {\n url: 'https://brasilapi.com.br/api/feriados/v1/:year',\n method: 'GET',\n isArray: true\n },\n 'insertExternal': {\n url: apiSettings.baseUri + 'v1/colorsrequests/external',\n method: 'POST'\n },\n });\n\n ColorRequest.insertExternal = function (payload) {\n return $http({\n method: 'POST',\n url: apiSettings.baseUri + 'v1/colorsrequests/external',\n data: payload\n })\n .then(function (response) {\n var idColorRequest = parseInt(response.data, 10);\n return idColorRequest;\n })\n .catch(function (error) {\n throw error;\n });\n }\n\n return ColorRequest;\n}]);","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .factory(\"Attachment\", [\n \"$resource\",\n \"$stateParams\",\n \"apiSettings\",\n function ($resource, $stateParams, apiSettings) {\n return $resource(\n apiSettings.baseUri + \"v1/attachments/:id\",\n { id: \"@id\" },\n {\n list: {\n method: \"GET\",\n isArray: true,\n params: {\n promotionRequestId: 0,\n },\n },\n listIds: {\n url: apiSettings.baseUri + \"v1/attachments/list/ids\",\n method: \"GET\",\n isArray: true,\n },\n salesApproval: {\n url: apiSettings.baseUri + \"v1/attachments/:id/sales-approval\",\n method: \"PUT\"\n },\n insert: {\n method: \"POST\",\n },\n update: {\n method: \"PUT\",\n },\n delete: {\n method: \"DELETE\",\n params: {\n id: 0,\n },\n },\n }\n );\n },\n ]);\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .factory(\"AttachmentType\", [\n \"$resource\",\n \"$stateParams\",\n \"apiSettings\",\n function ($resource, $stateParams, apiSettings) {\n return $resource(\n apiSettings.baseUri + \"v1/attachmenttypes/:id\",\n { id: \"@id\" },\n {\n list: {\n method: \"GET\",\n isArray: false,\n params: {\n page: 1,\n pageSize: apiSettings.defaultPageSize,\n keyword: \"\",\n moduleId: 1,\n },\n },\n listIds: {\n url: apiSettings.baseUri + \"v1/attachmenttypes/list/ids\",\n method: \"GET\",\n isArray: true,\n },\n }\n );\n },\n ]);\n","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).factory('Auth', ['$resource', '$stateParams', 'apiSettings', function ($resource, $stateParams, apiSettings) {\n\treturn $resource(null, { id: '@id' }, {\n\t\tsignin: {\n\t\t\turl: apiSettings.baseUri + 'v1/auth/signin',\n\t\t\tmethod: 'POST'\n\t\t},\n\t\tvalidateToken: {\n\t\t\turl: apiSettings.baseUri + 'v1/auth/validate-password-reset-token',\n\t\t\tmethod: 'POST'\n\t\t},\n\t\tforgotPassword: {\n\t\t\turl: apiSettings.baseUri + 'v1/auth/forgot-password',\n\t\t\tmethod: 'POST'\n\t\t},\n\t\tpasswordReset: {\n\t\t\turl: apiSettings.baseUri + 'v1/auth/password-reset',\n\t\t\tmethod: 'POST'\n\t\t},\n\t\tpasswordResetRandom: {\n\t\t\turl: apiSettings.baseUri + 'v1/auth/password-reset-random',\n\t\t\tmethod: 'POST'\n\t\t},\n\t\tpasswordChange: {\n\t\t\turl: apiSettings.baseUri + 'v1/auth/password-change',\n\t\t\tmethod: 'POST'\n\t\t},\n\t\trefreshFcmToken: {\n\t\t\turl: apiSettings.baseUri + 'v1/auth/fcm-token',\n\t\t\tmethod: 'POST'\n\t\t},\n\t\tlogout: {\n\t\t\turl: apiSettings.baseUri + 'v1/auth/logout',\n\t\t\tmethod: 'POST'\n\t\t}\t\t\n\t});\n}]);","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .controller(\n \"authCtrl\",\n function (\n $scope,\n $rootScope,\n $state,\n $http,\n $filter,\n $localStorage,\n Auth,\n settings,\n apiSettings,\n permissionService,\n MessageService\n ) {\n var vm = this;\n\n var $translate = $filter(\"translate\");\n\n $rootScope.laddaLoading = false;\n\n $localStorage.$reset();\n\n vm.projectModule = config.projectModule;\n\n switch (vm.projectModule) {\n case 'SWFlow':\n $(\".auth-img\").prepend(\n '\"SWFLOW\"'\n );\n $(\".powered-img\").prepend(\n '\"Powered'\n );\n break;\n case 'Colors':\n $(\"body\").addClass(\"a-sua-cor\");\n $(\".auth-img\").prepend(\n '\"A'\n );\n $(\".powered-img\").prepend(\n '\"Powered'\n );\n break;\n }\n\n vm.authenticate = function () {\n vm.auth_error = null;\n $rootScope.laddaLoading = true;\n\n Auth.signin({\n email: vm.model.email,\n password: vm.model.password,\n projectModule: vm.projectModule\n }).$promise.then(\n function (response) {\n $localStorage.authorizationData = response;\n\n settings.setUser(response.user);\n // A sua cor default page\n\n settings.clearSessionFilters();\n\n if (settings.redirectTo.state) {\n $state.go(\n settings.redirectTo.state.name,\n settings.redirectTo.params\n );\n settings.clearRedirect();\n } else {\n switch (vm.projectModule) {\n case 'SWFlow':\n if (settings.permissions.includes(\"ManagePromotionRequests\")) {\n $state.go(\"main.dashboard\");\n return;\n } else if (settings.permissions.includes(\"BonusesAndSponsorshipsAccess\")) {\n $state.go(\"main.bonusesandsponsorship\");\n return;\n }\n\n $rootScope.laddaLoading = false;\n vm.auth_error = \"Falha ao redirecionar para o módulo correto!\";\n\n return;\n\n case 'Colors':\n if (\n settings.permissions.includes(\"ManageColorsRequests\")\n ) {\n $state.go(\"main.colorrequest\");\n return;\n }\n\n $rootScope.laddaLoading = false;\n vm.auth_error = \"Falha ao redirecionar para o módulo correto!\";\n\n return;\n\n default:\n $rootScope.laddaLoading = false;\n vm.auth_error = \"Desculpe, houve uma falha! Você pode tentar limpar os dados do seu navegador e tentar novamente.\";\n }\n }\n },\n function (response) {\n $rootScope.laddaLoading = false;\n vm.auth_error = response.data || \"Email e/ou senha inválidos!\";\n }\n );\n };\n }\n );\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .controller(\n \"forgotPasswordCtrl\",\n function (\n $scope,\n $rootScope,\n $state,\n $stateParams,\n $http,\n $filter,\n $localStorage,\n Auth,\n MessageService,\n settings,\n apiSettings\n ) {\n var vm = this;\n\n var $translate = $filter(\"translate\");\n\n $rootScope.laddaLoading = false;\n\n vm.projectModule = config.projectModule;\n\n switch (vm.projectModule) {\n case 'SWFlow':\n $(\".auth-img\").prepend(\n '\"SWFLOW\"'\n );\n $(\".powered-img\").prepend(\n '\"Powered'\n );\n break;\n case 'Colors':\n $(\"body\").addClass(\"a-sua-cor\");\n $(\".auth-img\").prepend(\n '\"A'\n );\n $(\".powered-img\").prepend(\n '\"Powered'\n );\n break;\n }\n\n vm.sendEmail = function () {\n if (!vm.model || !vm.model.email) {\n vm.auth_error =\n \"Preencha o email para solicitar a recuperação de senha!\";\n return;\n }\n\n $rootScope.laddaLoading = true;\n\n $http\n .post(apiSettings.baseUri + \"v1/auth/forgot-password\", {\n email: vm.model.email,\n projectModule: vm.projectModule,\n })\n .then(\n function (response) {\n MessageService.alertInfo(response.data);\n\n $state.go(\"login\");\n },\n function (response) {\n vm.auth_error = response.data;\n\n $rootScope.laddaLoading = false;\n }\n );\n };\n }\n );\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .controller(\n \"passwordResetCtrl\",\n function (\n $scope,\n $rootScope,\n $state,\n $stateParams,\n $http,\n $filter,\n $localStorage,\n Auth,\n MessageService,\n settings,\n apiSettings\n ) {\n var vm = this;\n\n var $translate = $filter(\"translate\");\n\n $rootScope.laddaLoading = false;\n\n vm.projectModule = config.projectModule;\n\n switch (vm.projectModule) {\n case 'SWFlow':\n $(\".auth-img\").prepend(\n '\"SWFLOW\"'\n );\n $(\".powered-img\").prepend(\n '\"Powered'\n );\n break;\n case 'Colors':\n $(\"body\").addClass(\"a-sua-cor\");\n $(\".auth-img\").prepend(\n '\"A'\n );\n $(\".powered-img\").prepend(\n '\"Powered'\n );\n break;\n }\n\n if (!$stateParams.email || !$stateParams.token) {\n $state.go(\"login\");\n }\n\n Auth.validateToken({\n email: $stateParams.email,\n token: $stateParams.token,\n }).$promise.then(null, function (response) {\n MessageService.alertError(response.data);\n\n $state.go(\"login\");\n });\n\n vm.model = {\n email: $stateParams.email,\n token: $stateParams.token,\n };\n\n vm.changePassword = function () {\n if (vm.model.password != vm.model.passwordConfirm) {\n MessageService.alertInfo(\"Senhas não conferem!\");\n return;\n }\n\n $rootScope.laddaLoading = true;\n\n Auth.passwordReset(\n {\n email: vm.model.email,\n newPassword: vm.model.password,\n passwordConfirmation: vm.model.passwordConfirm,\n token: vm.model.token,\n },\n function (response) {\n MessageService.alertInfo(\n \"Senha alterada com sucesso!\",\n \"Redefinir senha\"\n );\n\n $state.go(\"login\");\n },\n function (response) {\n vm.auth_error = response.data;\n\n $rootScope.laddaLoading = false;\n }\n );\n };\n }\n );\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .controller(\n \"signupCtrl\",\n function (\n $rootScope,\n $state,\n $stateParams,\n User,\n MessageService\n ) {\n var vm = this;\n\n vm.projectModule = config.projectModule;\n vm.model = {};\n\n switch (vm.projectModule) {\n case \"Colors\":\n $(\"body\").addClass(\"a-sua-cor\");\n $(\".auth-img\").prepend(\n '\"A'\n );\n $(\".powered-img\").prepend(\n '\"Powered'\n );\n break;\n\n default:\n $state.go(\"login\");\n }\n\n if ($stateParams.token) {\n User.inviteValidate(\n {\n authCodeGuid: $stateParams.token,\n },\n function (response) {\n vm.tokenEmail = Object.values(response).slice(0, -2).join(\"\");\n vm.model.email = vm.tokenEmail || '';\n },\n function (response) {\n $state.go(\"signup\");\n }\n );\n }\n\n\n $rootScope.laddaLoading = false;\n\n vm.step = 1;\n vm.acceptedTerms = false;\n\n vm.nextStep = function () {\n vm.step++;\n };\n\n vm.submit = function () {\n vm.auth_error = null;\n\n $rootScope.laddaLoading = true;\n\n if (vm.model.password !== vm.model.confirmPassword) {\n vm.auth_error = \"As senhas não coincidem.\";\n $rootScope.laddaLoading = false;\n return;\n }\n\n User.inviteSignup(\n {\n name: vm.model.name,\n email: vm.model.email,\n password: vm.model.password,\n cnpjCpf: vm.model.cnpjCpf\n },\n function (response) {\n $rootScope.laddaLoading = false;\n vm.step = 3;\n },\n function (response) {\n $rootScope.laddaLoading = false;\n MessageService.alertError(response.data);\n }\n );\n }\n }\n );\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .config(function ($stateProvider, $urlRouterProvider) {\n $urlRouterProvider.otherwise(\"/login\");\n\n $stateProvider.state(\"main\", {\n url: \"/\",\n views: {\n \"\": {\n templateUrl: \"/modules/Commom/core/views/layout.html\",\n controller: \"controlPanelCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n\n // Login\n $stateProvider.state(\"login\", {\n url: \"/login\",\n views: {\n \"\": {\n templateUrl: \"/modules/Commom/auth/views/main.html\",\n },\n \"auth@login\": {\n templateUrl: \"/modules/Commom/auth/views/login.html\",\n controller: \"authCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n\n // Sign Up\n $stateProvider.state(\"signup\", {\n url: \"/signup?token\",\n views: {\n \"\": {\n templateUrl: \"/modules/Commom/auth/views/main.html\",\n },\n \"auth@signup\": {\n templateUrl: \"/modules/Commom/auth/views/signup.html\",\n controller: \"signupCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n\n // Forgot Password\n $stateProvider.state(\"forgotPassword\", {\n url: \"/password\",\n views: {\n \"\": {\n templateUrl: \"/modules/Commom/auth/views/main.html\",\n },\n \"auth@forgotPassword\": {\n templateUrl: \"/modules/Commom/auth/views/password.forgot.html\",\n controller: \"forgotPasswordCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n\n // Password Reset\n $stateProvider.state(\"passwordReset\", {\n url: \"/passwordreset?email&token\",\n views: {\n \"\": {\n templateUrl: \"/modules/Commom/auth/views/main.html\",\n },\n \"auth@passwordReset\": {\n templateUrl: \"/modules/Commom/auth/views/password.reset.html\",\n controller: \"passwordResetCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n });\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .controller(\n \"controlPanelCtrl\",\n function (\n $scope,\n $rootScope,\n $window,\n $state,\n $localStorage,\n settings,\n permissionService,\n tools,\n apiSettings,\n $document,\n Alerts,\n $sce,\n $http\n ) {\n var vm = this;\n vm.permissions = permissionService;\n\n vm.projectModule = config.projectModule;\n\n\n switch (vm.projectModule) {\n case \"SWFlow\":\n $(\".auth-img\").prepend(\n '\"SWFLOW\"'\n );\n $(\".powered-img\").prepend(\n '\"Powered'\n );\n break;\n case \"Colors\":\n $(\"body\").addClass(\"a-sua-cor\");\n $(\".auth-img\").prepend(\n '\"A'\n );\n $(\".powered-img\").prepend(\n '\"Powered'\n );\n break;\n }\n\n\n // Server settings\n $scope.globalConfig = $window.config;\n\n // Menu size\n $scope.resize = function () {\n var h = $window.innerHeight;\n var t1 = $(\".sidebar .user\").outerHeight(true);\n var t2 = $(\".sidebar .signature\").outerHeight(true);\n\n $(\".menu\").height(h - t1 - t2);\n };\n\n $scope.resize();\n\n // Scroll para o topo da página, quando houver navegação entre as views do angular\n $rootScope.$on(\"$stateChangeSuccess\", function () {\n document.body.scrollTop = document.documentElement.scrollTop = 0;\n\n // Caso seja um dispositivo Mobile, quando houver navegação entre as views, forçamos para que o menu feche\n if (tools.isMobile()) vm.closeMenu();\n });\n\n angular.element($window).bind(\"resize\", $scope.resize);\n\n // Summernote configuration\n $scope.smConfig = {\n height: 300,\n lang: \"pt-BR\",\n toolbar: [\n // ['style', ['style']],\n // ['fontname', ['fontname']],\n [\"format\", [\"bold\", \"italic\", \"underline\", \"clear\"]],\n [\"font\", [\"strikethrough\", \"superscript\", \"subscript\"]],\n // ['picture', ['picture']],\n [\"link\", [\"link\"]],\n [\"para\", [\"ul\", \"ol\"]],\n [\"codeview\", [\"codeview\"]],\n [\"fullscreen\", [\"fullscreen\"]],\n ],\n callbacks: {\n onPaste: function (e) {\n var bufferText = (\n (e.originalEvent || e).clipboardData || window.clipboardData\n ).getData(\"Text\");\n\n e.preventDefault();\n\n // Firefox fix\n setTimeout(function () {\n document.execCommand(\"insertText\", false, bufferText);\n }, 10);\n },\n },\n };\n\n //// Flow\n //$scope.flowOptions = {\n //\tsingleFile: true,\n //\ttestChunks: false,\n //\theaders: {\n //\t\t'Authorization': 'Bearer ' + $localStorage.authorizationData.token\n //\t}\n //};\n\n // Configurações\n $scope.settings = settings || {};\n\n // Methods\n vm.toggleMenu = function () {\n vm.menuOpened = !vm.menuOpened;\n };\n\n vm.closeMenu = function () {\n vm.menuOpened = false;\n };\n\n vm.insertNew = function (url, enumContentArea, routeData) {\n angular.extend({}, routeData);\n\n if (enumContentArea) {\n angular.extend(routeData, { enumContentArea: enumContentArea });\n }\n\n $state.go(url, routeData);\n };\n\n vm.quit = function () {\n settings.signOut();\n $state.go(\"login\");\n };\n\n // Definindo o título da página\n $scope.pageTitle = apiSettings.title;\n $scope.themeColor = apiSettings.themeColor;\n $scope.broswerConfig = apiSettings.broswerConfig;\n $scope.pageTitfaviconUrlApplele = apiSettings.faviconUrlApple;\n $scope.faviconUrl32 = apiSettings.faviconUrl32;\n $scope.faviconUrl16 = apiSettings.faviconUrl16;\n $scope.faviconUrl = apiSettings.faviconUrl;\n $scope.scriptUrl = apiSettings.chatHubsUrl;\n\n var script = $document[0].createElement(\"script\");\n script.src = $sce.trustAsResourceUrl(apiSettings.chatHubsUrl);\n $document[0].body.appendChild(script);\n }\n );\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .controller(\n \"sidebarCtrl\",\n function (permissionService, $localStorage) {\n var vm = this;\n\n vm.menu = [];\n vm.permissions = permissionService;\n\n vm.groups = window.enumerators.enumGroupsColorsRequests;\n\n const isDesigner = ($localStorage.groups && $localStorage.groups.find((x) => x.groupId == vm.groups.Designer));\n const isVendedor = ($localStorage.groups && $localStorage.groups.find((x) => x.groupId == vm.groups.VendedorBalcao));\n const isControleDeQualidade = ($localStorage.groups && $localStorage.groups.find((x) => x.groupId == vm.groups.ControleQualidade));\n\n\n vm.menu.push(\n /*{\n name: 'global.menu.reports',\n icon: 'description',\n task: 'ControlPanelAccess',\n submenu: [\n { name: 'reports.users.title', path: 'main.reports', task: 'ManageUsers' }\n ]\n },*/\n\n {\n name: \"Gerenciamento\",\n icon: \"settings\",\n task: \"ControlPanelAccess\",\n submenu: [\n {\n name: \"Meu Perfil\",\n path: \"/#!/user/passwordchange\",\n task: \"ControlPanelAccess\",\n },\n { name: \"Usuários\", path: \"/#!/user\", task: \"AdminAccess\" },\n { name: \"Clientes\", path: \"/#!/customer\", task: \"AdminAccess\" },\n //{ name: 'goals.settings.title', path: 'main.goal', task: 'ManageGoals' },\n ],\n },\n {\n // name: 'Manual SWFLOW',\n // icon: 'description',\n // task: 'ControlPanelAccess',\n // submenu: [\n // \t{ name: 'Apresentação', path: '/Content/documents/ApresentacaoManualVendasCooperadasSWFlow.pdf', task: 'ControlPanelAccess', blank: true },\n // \t{ name: 'Manual', path: '/Content/documents/ManualVendasCooperadasSWFlow.pdf', task: 'ControlPanelAccess', blank: true }\n // ]\n }\n );\n\n // Só pode aparecer Cores para os usuários que tenham perfil do Cores\n if (config.projectModule == \"Colors\") {\n vm.menu.unshift({\n name: \"Cores\",\n icon: \"palette\",\n task: \"ControlPanelAccess\",\n submenu: [\n {\n name: \"Dashboard\",\n path: \"/#!/dashboardcolors\",\n task: \"ManageColorsRequests\",\n },\n {\n name: \"Solicitações\",\n path: \"/#!/colorrequest\",\n task: \"ManageColorsRequests\",\n },\n isDesigner ? {\n name: \"Manual\",\n path: \"/Content/documents/ManualASuaCorDesignerV3.pdf\",\n task: \"ManageColorsRequests\",\n blank: true,\n } : isVendedor ? {\n name: \"Manual\",\n path: \"/Content/documents/ManualASuaCor_Vendedores_V1.pdf\",\n task: \"ManageColorsRequests\",\n blank: true,\n } : isControleDeQualidade ? {\n name: \"Manual do Vendedor\",\n path: \"/Content/documents/ManualASuaCor_Vendedores_V1.pdf\",\n task: \"ManageColorsRequests\",\n blank: true,\n } : null,\n ],\n });\n }\n\n // Não pode aparecer ações para os usuários que tenham perfil do Cores\n if (config.projectModule != \"Colors\") {\n vm.menu.unshift(\n {\n name: \"Ações\",\n icon: \"star_rate\",\n task: \"ControlPanelAccess\",\n submenu: [\n // { name: 'accessLogs.settings.title', path: 'main.acceslog', task: 'ManageAccessLogs' },\n // { name: 'attachments.settings.title', path: 'main.attachment', task: 'ManageAttachments' },\n // { name: 'attachmentTypes.settings.title', path: 'main.attachmenttype', task: 'ManageAttachmentTypes' },\n // { name: 'customersSalesUserHistoric.settings.title', path: 'main.customersaleuserhistoric', task: 'ManageCustomersSalesUserHistoric' },\n // { name: 'disapprovalReasons.settings.title', path: 'main.disapprovalreason', task: 'ManageDisapprovalReasons' },\n {\n name: \"Dashboard\",\n path: \"/#!/dashboard\",\n task: \"ManagePromotionRequests\",\n },\n {\n name: \"Solicitações\",\n path: \"/#!/promotionrequest\",\n task: \"ManagePromotionRequests\",\n },\n {\n name: \"Apresentação\",\n path: \"/Content/documents/ApresentacaoManualVendasCooperadasSWFlow.pdf\",\n task: \"ControlPanelAccess\",\n blank: true,\n },\n {\n name: \"Manual\",\n path: \"/Content/documents/ManualVendasCooperadasSWFlow.pdf\",\n task: \"ControlPanelAccess\",\n blank: true,\n },\n {\n name: \"Mecânica\",\n path: \"/Content/documents/Mecanica.pdf\",\n task: \"ControlPanelAccess\",\n blank: true,\n },\n {\n name: \"Checklist\",\n path: \"/Content/documents/CheckList.pdf\",\n task: \"ControlPanelAccess\",\n blank: true,\n },\n // { name: 'promotionRequestsGoals.settings.title', path: 'main.promotionrequestgoal', task: 'ManagePromotionRequestsGoals' },\n // { name: 'promotionRequestsProductSegments.settings.title', path: 'main.promotionrequestproductsegment', task: 'ManagePromotionRequestsProductSegments' },\n // { name: 'promotionRequestTypes.settings.title', path: 'main.promotionrequesttype', task: 'ManagePromotionRequestTypes' },\n // { name: 'status.settings.title', path: 'main.statu', task: 'ManageStatus' },\n // { name: 'statusGroups.settings.title', path: 'main.statugroup', task: 'ManageStatusGroups' },\n // { name: 'workflowApprovals.settings.title', path: 'main.workflowapproval', task: 'ManageWorkflowApprovals' },\n // { name: 'workflows.settings.title', path: 'main.workflow', task: 'ManageWorkflows' },\n ],\n },\n {\n name: \"Bonificações e Patrocínios\",\n icon: \"thumb_up_off\",\n task: \"BonusesAndSponsorshipsAccess\",\n submenu: [\n {\n name: \"Dashboard\",\n path: \"/#!/bonusesandsponsorship-dashboard\",\n task: \"BonusesAndSponsorshipsApprover\",\n },\n {\n name: \"Solicitações\",\n path: \"/#!/bonusesandsponsorship\",\n task: \"BonusesAndSponsorshipsAccess\",\n },\n ],\n }\n );\n }\n\n vm.toggleSubmenu = function (item) {\n item.toggle = !item.toggle;\n };\n }\n );\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .directive(\"addressForm\", [\n \"LocationService\",\n \"MessageService\",\n function (LocationService, MessageService) {\n return {\n restrict: \"A\",\n scope: {\n address: \"=\",\n isRequired: \"=\",\n },\n templateUrl: \"/modules/Commom/core/views/address.html\",\n link: function (scope, element, attrs) {\n scope.states = [];\n scope.cities = [];\n scope.formerZipCode = null;\n if (scope.address) {\n scope.formerZipCode = scope.address.zipCode;\n }\n\n scope.zipCodeChange = function () {\n if (\n scope.address.zipCode &&\n scope.address.zipCode != scope.formerZipCode\n ) {\n LocationService.getZipCodeLocation(scope.address.zipCode)\n .then(function (response) {\n if (response.data) {\n scope.formerZipCode = scope.address.zipCode;\n\n if (\n response.data.stateId &&\n scope.address.stateId != response.data.stateId\n ) {\n scope.address.stateId = response.data.stateId;\n\n scope.cities = [];\n scope.getCities(function () {\n scope.address.cityId = response.data.cityId;\n });\n }\n\n scope.address.address1 = response.data.address;\n scope.address.address2 = null;\n scope.address.neighborhood = response.data.neighborhood;\n }\n })\n .catch(MessageService.error);\n }\n };\n\n LocationService.getStates()\n .then(function (response) {\n scope.states = response.data;\n })\n .catch(MessageService.error);\n\n scope.getCities = function (callback) {\n LocationService.getCities(scope.address.stateId)\n .then(function (response) {\n scope.cities = response.data;\n\n if (callback) {\n callback();\n }\n })\n .catch(MessageService.error);\n };\n\n scope.onStateChange = function () {\n scope.cities = [];\n\n if (scope.address.stateId) {\n scope.getCities();\n }\n };\n\n if (scope.address && scope.address.stateId) {\n scope.getCities();\n }\n },\n };\n },\n ]);\n","angular.module(ApplicationConfiguration.applicationModuleName).directive('cpfCnpjValidate', [function () {\n\n \tvar link = function ($scope, $element, $attrs, ctrl) {\n\n \t\tvar validate = function (viewValue) { \t\t\t\n \t\t\tif (!viewValue)\n \t\t\t\tctrl.$setValidity('invalidCpfCnpj', true); // Válido pois não há o que validar\n\t\t\telse\n \t\t\t\tctrl.$setValidity('invalidCpfCnpj', validateCpfOrCnpj(viewValue));\n\n \t\t\treturn viewValue;\n \t\t};\n\n \t\tctrl.$parsers.unshift(validate);\n \t\tctrl.$formatters.push(validate);\n \t};\n\n \treturn {\n \t\trequire: 'ngModel',\n \t\tlink: link\n \t};\n }\n]);\n\nvar validateCpfOrCnpj = function (val) {\n\tval = val.replace(/[^0-9]+/g, \"\");\n\n\tif (val.length == 14)\n\t\treturn validateCnpj(val);\n\telse if (val.length == 11)\n\t\treturn validateCpf(val);\n\telse\n\t\treturn false;\n}\n\nvar validateCnpj = function (val) {\n\tval = val.replace(/[^0-9]+/g, \"\");\n\n\tif (val.length != 14)\n\t\treturn false;\n\n\tvar i;\n\tvar result = true;\n\n\tvar c = val.substr(0, 12);\n\tvar dv = val.substr(12, 2);\n\tvar d1 = 0;\n\n\tfor (i = 0; i < 12; i++)\n\t\td1 += c.charAt(11 - i) * (2 + (i % 8));\n\n\tif (d1 == 0)\n\t\tresult = false;\n\n\td1 = 11 - (d1 % 11);\n\n\tif (d1 > 9) d1 = 0;\n\n\tif (dv.charAt(0) != d1)\n\t\tresult = false;\n\n\td1 *= 2;\n\tfor (i = 0; i < 12; i++) {\n\t\td1 += c.charAt(11 - i) * (2 + ((i + 1) % 8));\n\t}\n\n\td1 = 11 - (d1 % 11);\n\tif (d1 > 9) d1 = 0;\n\n\tif (dv.charAt(1) != d1)\n\t\tresult = false;\n\n\treturn result;\n}\n\nvar validateCpf = function (val) {\n\tval = val.replace(/[^0-9]+/g, \"\");\n\n\tif (val.length != 11)\n\t\treturn false;\n\n\tvar i;\n\tvar result = true;\n\n\tvar c = val.substr(0, 9);\n\tvar dv = val.substr(9, 2);\n\tvar d1 = 0;\n\n\tfor (i = 0; i < 9; i++) {\n\t\td1 += c.charAt(i) * (10 - i);\n\t}\n\n\tif (d1 == 0)\n\t\tresult = false;\n\n\td1 = 11 - (d1 % 11);\n\tif (d1 > 9) d1 = 0;\n\n\tif (dv.charAt(0) != d1)\n\t\tresult = false;\n\n\td1 *= 2;\n\tfor (i = 0; i < 9; i++) {\n\t\td1 += c.charAt(i) * (11 - i);\n\t}\n\n\td1 = 11 - (d1 % 11);\n\tif (d1 > 9) d1 = 0;\n\n\tif (dv.charAt(1) != d1)\n\t\tresult = false;\n\n\treturn result;\n\n}","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .controller(\n \"dashboardColorsCtrl\",\n function (\n $scope,\n $sessionStorage,\n ColorRequest,\n dash,\n status,\n settings,\n states, managers,\n $localStorage,\n $state\n ) {\n var vm = this;\n\n angular.extend($scope.$parent.vm, {\n title: 'Dashboard',\n insertUrl: null,\n });\n\n if (!$localStorage || !$localStorage.groups || !$localStorage.groups.length) {\n settings.signOut();\n $state.go(\"login\");\n }\n\n vm.status = status;\n vm.model = dash;\n vm.states = states;\n vm.managers = managers;\n vm.groups = window.enumerators.enumGroupsColorsRequests;\n\n\n //collapses\n vm.filterCollapse = true;\n vm.dashCollapse = true;\n\n\n vm.chartOptions = {\n responsive: true,\n events: true,\n tooltips: {\n enabled: false\n },\n layout: {\n padding: {\n top: 20, // Adiciona 20 pixels de padding no topo\n }\n },\n animation: {\n duration: 500,\n onComplete: function () {\n var chartInstance = this.chart,\n ctx = chartInstance.ctx;\n ctx.font = Chart.helpers.fontString(10, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily);\n ctx.textAlign = 'end';\n ctx.textBaseline = 'alphabetic';\n ctx.fillStyle = 'black'; // Define a cor do texto aqui\n\n var canvasElement = chartInstance.canvas;\n var currencyFormat = canvasElement.getAttribute('data-currency-format') === \"true\"; // Lê o atributo personalizado\n\n this.data.datasets.forEach(function (dataset, i) {\n var meta = chartInstance.controller.getDatasetMeta(i);\n meta.data.forEach(function (bar, index) {\n\n var data = dataset.data[index];\n\n if (currencyFormat) {\n // Format the value as currency here\n var formattedValue = Number(data).toLocaleString('pt-BR', { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n ctx.fillText(formattedValue, bar._model.x, bar._model.y - 5);\n } else {\n ctx.fillText(data, bar._model.x, bar._model.y - 5);\n }\n });\n });\n }\n }\n };\n\n if (\n $localStorage.groups &&\n $localStorage.groups.find((x) => x.groupId == vm.groups.Designer)\n ) {\n isDesigner = true;\n }\n\n vm.getThisYearMonthsLabels = function () {\n // Array com todos os meses do ano em português\n const todosMeses = [\"jan\", \"fev\", \"mar\", \"abr\", \"mai\", \"jun\", \"jul\", \"ago\", \"set\", \"out\", \"nov\", \"dez\"];\n\n // Obter o mês atual (Janeiro é 0, Fevereiro é 1, etc.)\n const mesAtual = new Date().getMonth();\n\n // Gerar a lista de meses desde janeiro até o mês atual\n const mesesAteAgora = todosMeses.slice(0, mesAtual + 1);\n\n return mesesAteAgora;\n }\n vm.months = vm.getThisYearMonthsLabels();\n\n vm.showStatusList = function () {\n if (\n $localStorage.groups &&\n $localStorage.groups.find((x) => x.groupId == vm.groups.Designer || x.groupId == vm.groups.VendedorBalcao || x.groupId == vm.groups.ControleQualidade)\n ) {\n return true\n }\n return false;\n }\n\n vm.showRankings = function () {\n if (\n $localStorage.groups &&\n $localStorage.groups.find((x) => x.groupId == vm.groups.GerenteRegional || x.groupId == vm.groups.GerenteNacional || x.groupId == vm.groups.ControleQualidade)\n ) {\n return true\n }\n return false;\n }\n\n vm.showManagmentDash = function () {\n if (\n settings.groups.find(\n (x) =>\n x.groupId == vm.groups.ControleQualidade\n )\n ) {\n return true;\n }\n return false;\n }\n\n vm.showTotalCards = function () {\n if (\n $localStorage.groups &&\n $localStorage.groups.find((x) => x.groupId == vm.groups.GerenteRegional || x.groupId == vm.groups.GerenteNacional || x.groupId == vm.groups.ControleQualidade)\n ) {\n return true\n }\n return false;\n }\n\n\n vm.fillDash = function (data) {\n vm.dash = data;\n if (!vm.months) {\n vm.months = vm.getThisYearMonthsLabels();\n }\n\n for (var index = 0; index < vm.dash.colorsList.length; index++) {\n const e = vm.dash.colorsList[index];\n e.position = `${index + 1}º`;\n }\n\n for (var index = 0; index < vm.dash.productsList.length; index++) {\n const e = vm.dash.productsList[index];\n e.position = `${index + 1}º`;\n }\n\n vm.data = vm.dash.statusList.map((x) => x.count);\n vm.labels = vm.dash.statusList.map((x) => x.name);\n vm.colorsChart = vm.dash.statusList.map((x) => x.color);\n\n vm.dash.countProjects = vm.dash.statusList.reduce((sum, x) => sum + (x.count || 0), 0);\n\n vm.barLineChartProjectsFill();\n vm.barLineChartSalesFill();\n vm.barLineChartFillProjectsGerentes();\n vm.barLineChartFillSalesGerentes();\n vm.barLineChartOtherProductsFill();\n vm.barLineChartTintingProductsFill();\n };\n\n vm.fillChartData = function (dataSource, chartType, colorBar, colorLine, currencyFormat) {\n const _customChartOption = Object.assign({}, vm.chartOptions);\n\n const years = dataSource.series.map(year => parseInt(year));\n const maxYear = Math.max(...years);\n\n const generateLineColor = (index) => {\n const baseColor = colorLine.split(', ').map(Number);\n const increment = index * 40;\n return [\n (baseColor[0] + increment) % 256, // Red\n (baseColor[1] + increment) % 256, // Green\n (baseColor[2] + increment) % 256 // Blue\n ].join(', ');\n };\n\n const formattedSeries = dataSource.series.map((yearStr, _index) => {\n const year = parseInt(yearStr);\n\n if (year === maxYear) {\n // Ano atual: cor da barra\n return {\n name: yearStr,\n color: `rgba(${colorBar}, 0.4)`,\n border: `rgba(${colorBar}, 1)`\n };\n } else {\n // Anos anteriores: cores únicas baseadas em colorLine\n const lineColor = generateLineColor(_index);\n return {\n name: yearStr,\n color: `rgba(${lineColor}, 1)`,\n border: `rgba(${lineColor}, 1)`\n };\n }\n });\n\n const datasetOverride = dataSource.series.map((yearStr) => {\n const year = parseInt(yearStr);\n if (year === maxYear) {\n return {\n type: 'bar',\n backgroundColor: `rgba(${colorBar}, 0.4)`,\n borderColor: `rgba(${colorBar}, 1)`,\n borderWidth: 1\n };\n } else {\n // Dataset da linha (ano anterior)\n const seriesEntry = formattedSeries.find(s => s.name === yearStr);\n const lineColor = seriesEntry.border.replace('rgba(', '').replace(')', '').split(', ').slice(0, 3).join(', ');\n return {\n type: 'line',\n fill: false,\n clip: true,\n borderColor: `rgba(${lineColor}, 1)`,\n backgroundColor: `rgba(${lineColor}, 0.2)`,\n pointBorderColor: `rgba(${lineColor}, 1)`,\n pointBackgroundColor: '#fff',\n pointHoverBackgroundColor: `rgba(${lineColor}, 1)`,\n pointHoverBorderColor: `rgba(${lineColor}, 1)`,\n yAxisID: 'y-axis-2'\n };\n }\n });\n\n _customChartOption.scales = {\n yAxes: [\n {\n id: 'y-axis-2',\n type: 'linear',\n position: 'right',\n gridLines: {\n drawOnArea: false\n },\n ticks: {\n autoSkip: true,\n fontSize: 10,\n padding: 20,\n maxTicksLimit: 10,\n beginAtZero: true,\n callback: function (value) {\n if (currencyFormat) {\n return 'R$ ' + Number(value).toLocaleString('pt-BR');\n } else {\n return value;\n }\n }\n }\n },\n {\n id: 'y-axis-1',\n type: 'linear',\n position: 'left',\n ticks: {\n autoSkip: true,\n fontSize: 10,\n padding: 50,\n maxTicksLimit: 10,\n beginAtZero: true,\n callback: function (value) {\n return \"\";\n }\n }\n }\n ],\n };\n\n\n // HOVER NÃO FUNCIONA\n // _customChartOption.tooltips = {\n // enabled: true,\n // mode: 'index',\n // intersect: false,\n // backgroundColor: 'rgba(0, 0, 0, 0.7)',\n // titleFontSize: 12,\n // bodyFontSize: 12,\n // callbacks: {\n // title: function (tooltipItems, data) {\n // return data.labels[tooltipItems[0].index];\n // },\n // label: function (tooltipItem, data) {\n // const dataset = data.datasets[tooltipItem.datasetIndex];\n // const label = dataset.label || data.series[tooltipItem.datasetIndex];\n // let value = dataset.data[tooltipItem.index];\n\n // if (currencyFormat) {\n // value = 'R$ ' + Number(value).toLocaleString('pt-BR');\n // }\n\n // return `${label}: ${value}`;\n // }\n // }\n // };\n\n // _customChartOption.hover = {\n // mode: 'index',\n // intersect: false\n // };\n\n return {\n labels: dataSource.labels,\n series: dataSource.series,\n data: dataSource.data,\n legend: formattedSeries,\n datasetOverride: datasetOverride,\n options: _customChartOption\n };\n };\n\n vm.barLineChartProjectsFill = function () {\n vm.chartProjectsData = vm.fillChartData(\n vm.dash.projectsEvolutionWithLastYearChart,\n 'barLine',\n '183, 18, 52', // Cor do Bar\n '0, 103, 178', // Cor da Line\n false\n );\n };\n\n vm.barLineChartSalesFill = function () {\n vm.chartSalesData = vm.fillChartData(\n vm.dash.salesTotalEvolutionWithLastYearChart,\n 'barLine',\n '0, 103, 178', // Cor do Bar\n '183, 18, 52', // Cor da Line\n true\n );\n };\n\n vm.barLineChartOtherProductsFill = function () {\n vm.chartOtherProductsData = vm.fillChartData(\n vm.dash.salesOthersProductsEvolutionWithLastYearChart,\n 'barLine',\n '239, 108, 0', // Cor do Bar\n '38, 166, 154', // Cor da Line\n true\n );\n };\n\n vm.barLineChartTintingProductsFill = function () {\n vm.chartTintingProductsData = vm.fillChartData(\n vm.dash.salesTintingProductsEvolutionWithLastYearChart,\n 'barLine',\n '38, 166, 154', // Cor do Bar\n '239, 108, 0', // Cor da Line\n true\n );\n };\n\n vm.findNearestIndexInChartGerentes = function (selectedMonth, labels) {\n if (!selectedMonth || !labels) {\n return 1;\n }\n\n // Tenta encontrar o índice do mês selecionado em vm.labels\n var labelIndex = labels.indexOf(selectedMonth);\n\n // Se o índice não for encontrado, retorna o último índice de vm.labels\n if (labelIndex === -1) {\n labelIndex = labels.length - 1;\n }\n\n return labelIndex;\n }\n\n vm.fillManagerChart = function (dashSource) {\n let chartData = {};\n const dateNow = new Date();\n let currentDate = dateNow.getFullYear() + ' - ' +\n dateNow.toLocaleString('pt-BR', { month: 'short' })\n .toLowerCase()\n .replace('.', '');\n\n const selectedMonth = vm.months.find(function (month) { return month === currentDate }) ? currentDate : dashSource.labels[0];\n\n chartData.labels = dashSource.series;\n chartData.originalData = dashSource.data;\n chartData.originalLabels = dashSource.labels;\n chartData.selectedMonth = selectedMonth; // Mês atual\n chartData.options = vm.chartOptions;\n\n return chartData;\n };\n\n vm.barLineChartFillProjectsGerentes = function () {\n if (vm.dash.projectsEvolutionByManagerChart) {\n vm.chartProjectsGerentesData = {};\n vm.chartProjectsGerentesData = vm.fillManagerChart(vm.dash.projectsEvolutionByManagerChart);\n vm.updateProjectsManagerChart();\n }\n };\n\n vm.barLineChartFillSalesGerentes = function () {\n if (vm.dash.salesEvolutionByManagerChart) {\n vm.chartSalesGerentesData = {};\n vm.chartSalesGerentesData = vm.fillManagerChart(vm.dash.salesEvolutionByManagerChart);\n vm.chartSalesGerentesData.options = {\n ...vm.chartSalesGerentesData.options, scales: {\n yAxes: [{\n ticks: {\n callback: function (value, index, values) {\n return 'R$ ' + value.toLocaleString('pt-BR');\n }\n }\n }]\n }\n }\n vm.updateSalesManagerChart();\n }\n };\n\n vm.updateManagerChart = function (chartData) {\n if (chartData && chartData.originalData) {\n const _index = vm.findNearestIndexInChartGerentes(chartData?.selectedMonth, chartData?.originalLabels);\n chartData.data = chartData.originalData.map(s => s[_index]);\n }\n };\n\n vm.updateProjectsManagerChart = function () {\n vm.updateManagerChart(vm.chartProjectsGerentesData);\n };\n\n vm.updateSalesManagerChart = function () {\n vm.updateManagerChart(vm.chartSalesGerentesData);\n };\n\n vm.refresh = function (filter) {\n var _filter = filter || $sessionStorage.colorsRequestsContextFilter;\n var filterCustomer = $sessionStorage.colorsRequestsContextFilter_Customer || null;\n\n\n if (!_filter) {\n var todayDate = new Date(Date.now());\n var firstDayOfTodayYear = new Date(todayDate.getFullYear(), 0, 1);\n _filter = {\n startsOn: firstDayOfTodayYear,\n endsOn: todayDate,\n expired: false,\n };\n $sessionStorage.colorsRequestsContextFilter = _filter;\n }\n\n _filter.customerId = null;\n if (!filter.startsOn)\n if (filterCustomer) _filter.customerId = filterCustomer.key;\n\n ColorRequest.dash(filter).$promise.then(function (data) {\n vm.model = data;\n vm.fillDash(vm.model);\n });\n };\n\n vm.updateFilters = function (filter) {\n vm.refresh(filter);\n };\n\n vm.fillDash(vm.model);\n }\n );\n","angular.module(ApplicationConfiguration.applicationModuleName).directive('dateAfterOrEqualValidate', [function () {\n\n \tvar link = function ($scope, $element, $attrs, ctrl) {\n\n \t\tvar validate = function (viewValue) {\n \t\t\tvar dateModel = $attrs.dateModel;\n \t\t\tvar comparisonModel = $attrs.dateAfterOrEqual;\n \t\t\tvar validationEnabled = ($attrs.dateValidateEnabled === undefined || $attrs.dateValidateEnabled === \"true\");\n\n \t\t\tif (!dateModel || !comparisonModel || !validationEnabled) {\n \t\t\t\tctrl.$setValidity('date-after-or-equal', true); // Válido pois não há o que comparar, ou pois o parâmetro validationEnable é igual a false\n \t\t\t}\n \t\t\telse\n\t\t\t{\n \t\t\t\tvar date = moment(dateModel, 'YYYY-MM-DD');\n \t\t\t\tvar dateToCompare = moment(comparisonModel, 'YYYY-MM-DD');\n\n \t\t\t\tif (!date.isValid() || !dateToCompare.isValid())\n \t\t\t\t\tctrl.$setValidity('date-after-or-equal', true); // Válido caso alguma das datas não seja válida, pois não há como comparar\n\t\t\t\telse \t\t\t\n \t\t\t\t\tctrl.$setValidity('date-after-or-equal', date.isSameOrAfter(dateToCompare)); // Válido caso a data seja menor que a data para se comparar\n \t\t\t}\n\n \t\t\treturn viewValue;\n \t\t};\n\n \t\tctrl.$parsers.unshift(validate);\n \t\tctrl.$formatters.push(validate);\n\n \t\t$attrs.$observe('dateAfterOrEqual', function (comparisonModel) {\n \t\t\treturn validate(ctrl.$viewValue); \n \t\t});\n \t};\n\n \treturn {\n \t\trequire: 'ngModel',\n \t\tlink: link\n \t};\n }\n]);","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .directive(\"dateTime\", [\n function () {\n return {\n restrict: \"A\",\n scope: {\n dateField: \"=\",\n isRequired: \"=\",\n },\n templateUrl: \"/modules/Commom/core/views/datetime.html\",\n link: function (scope, element, attrs) {\n scope.valueAsDate = null;\n scope.valueAsTime = null;\n\n scope.setFormFields = function () {\n if (scope.dateField) {\n scope.valueAsDate = moment(scope.dateField).format(\"DD/MM/YYYY\");\n scope.valueAsTime = moment(scope.dateField).format(\"HH:mm\");\n }\n\n if (\n !scope.valueAsDate ||\n (scope.valueAsTime && scope.valueAsTime == \"Invalid Date\")\n ) {\n scope.valueAsTime = null;\n }\n };\n\n scope.setDateField = function () {\n if (scope.valueAsDate) {\n scope.valueAsDate = moment(\n moment(scope.valueAsDate, \"DD/MM/YYYY\").toDate()\n ).format(\"YYYY-MM-DD\");\n\n if (scope.valueAsTime && scope.valueAsTime != \"Invalid Date\") {\n scope.dateField = new Date(\n scope.valueAsDate + \" \" + scope.valueAsTime\n );\n } else {\n scope.dateField = new Date(scope.valueAsDate);\n }\n } else {\n scope.dateField = null;\n }\n\n scope.setFormFields();\n };\n\n scope.setFormFields();\n },\n };\n },\n ]);\n","angular.module(ApplicationConfiguration.applicationModuleName).directive(\"filterForm\", function ($sessionStorage, permissionService, Reports, MessageService, ColorRequest, FileSaver, settings, $state) {\n return {\n restrict: \"E\",\n scope: {\n onSubmit: \"&\",\n states: \"=\",\n managers: \"=\",\n status: \"=\",\n useAllFilters: \"=\"\n },\n templateUrl: \"/modules/Commom/core/views/filter.form.html\",\n controller: function ($scope) {\n\n $scope.permissions = permissionService;\n $scope.groups = window.enumerators.enumGroupsColorsRequests;\n\n $scope.getFilters = function () {\n $scope.filter = $sessionStorage.colorsRequestsContextFilter;\n $scope.filterCustomer = $sessionStorage.colorsRequestsContextFilter_Customer || null;\n\n if (!$scope.filter) {\n var todayDate = new Date(Date.now());\n var firstDayOfTodayYear = new Date(todayDate.getFullYear(), 0, 1);\n $scope.filter = {\n startsOn: firstDayOfTodayYear,\n endsOn: todayDate,\n expired: false,\n };\n\n if ($scope.statusId) $scope.filter.statusId = $scope.statusId;\n if ($scope.stateId) $scope.filter.stateId = $scope.stateId;\n if ($scope.designerName) $scope.filter.designerName = $scope.designerName;\n if ($scope.userName) $scope.filter.userName = $scope.userName;\n if ($scope.code) $scope.filter.code = $scope.code;\n if ($scope.managerId) $scope.filter.managerId = $scope.managerId;\n }\n\n $scope.filter.colorsRequestId = null;\n\n if (!$scope.useAllFilters) {\n $scope.filter.userName = null;\n $scope.filter.customerName = null;\n $scope.filter.code = null;\n $scope.filter.expired = null;\n $scope.filter.hasApprovalPedingSalesOnly = null;\n }\n\n $scope.filter.customerId = null;\n if ($scope.filterCustomer) $scope.filter.customerId = $scope.filterCustomer.key;\n\n $sessionStorage.colorsRequestsContextFilter = $scope.filter;\n };\n\n $scope.getFilters();\n\n // Função de envio do formulário\n $scope.submit = function () {\n $scope.onSubmit({ filter: $scope.filter });\n };\n\n $scope.$watch(\"filterCustomer\", function (newValue, oldValue) {\n if (newValue !== oldValue) {\n $sessionStorage.colorsRequestsContextFilter_Customer = newValue;\n }\n });\n\n $scope.$watch(\"filterCustomer\", function (newValue, oldValue) {\n if (newValue !== oldValue) {\n $sessionStorage.colorsRequestsContextFilter_Customer = newValue;\n }\n });\n\n // Função para exportar para Excel\n $scope.excel = function () {\n var _filter = $sessionStorage.colorsRequestsContextFilter;\n var todayDate = new Date(Date.now());\n var firstDayOfTodayYear = new Date(todayDate.getFullYear(), 0, 1);\n\n Reports.colorRequestExcel({\n startsOn: _filter?.startsOn || firstDayOfTodayYear,\n endsOn: _filter?.endsOn || todayDate\n },\n function (response) {\n var filename = moment().format(\"YYYYMMDDHHmmss\") + \"_Projetos.xlsx\";\n FileSaver.saveAs(response.data, filename);\n },\n function (response) {\n var msg = $translate(\"errors.couldNotCompleteRequest\");\n MessageService.alertError(msg);\n }\n );\n };\n\n $scope.showConsumer = function () {\n // Para Designers:\n // Não aparece os Consumidores\n if (settings.groups.find((x) => x.groupId == $scope.groups.Designer)) {\n return false;\n }\n return true;\n };\n\n $scope.showManagementVisibleOnlyFields = function () {\n // Para G Regional, Nacional, Controle Qualidade e Financeiro:\n // Aparece Estado e Designer\n // Não aparece Consumidor\n if (\n settings.groups.find((x) => x.groupId == $scope.groups.GerenteRegional) ||\n settings.groups.find((x) => x.groupId == $scope.groups.ControleQualidade) ||\n settings.groups.find(\n (x) =>\n settings.groups.find((x) => x.groupId == $scope.groups.GerenteNacional)\n )\n ) {\n return true;\n }\n return false;\n };\n\n $scope.showManagerColumn = function () {\n // Filtrar por Gerente apenas para Controle de Qualidade\n if (settings.groups.find((x) => x.groupId == $scope.groups.ControleQualidade)) {\n return true;\n }\n return false;\n };\n\n $scope.showRequesterColumn = function () {\n // Só mostra filtro por solicitante para Controle de Qualidade\n if (settings.groups.find((x) => x.groupId == $scope.groups.ControleQualidade)) {\n return true;\n }\n return false;\n };\n\n $scope.getCustomer = function (val) {\n return ColorRequest.listCustomersIds({ keyword: val }).$promise;\n };\n },\n };\n});\n","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).directive('focusInvalidOnsubmit', [function () {\n\treturn {\n\t\trestrict: 'A',\n\t\tlink: function (scope, elem) {\n\t\t\telem.on('submit', function () {\n\t\t\t\tvar firstInvalid = elem[0].querySelector('.ng-invalid');\n\t\t\t\t\n\t\t\t\tif (firstInvalid) {\n\t\t\t\t\tfirstInvalid.focus(); \n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n}]);","/**!\n * AngularJS Image Crop directive\n * @author Flávio Banyai \n */\n\n\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .directive(\"imagecrop\", [\n \"apiSettings\",\n \"dataURItoBlob\",\n \"$localStorage\",\n function (apiSettings, dataURItoBlob, $localStorage) {\n return {\n restrict: \"E\",\n scope: {\n url: \"@\",\n areaType: \"@\",\n aspectRatio: \"@\",\n width: \"@\",\n height: \"@\",\n targetWidth: \"@\",\n targetHeight: \"@\",\n image: \"=\",\n },\n templateUrl: \"/modules/Commom/core/views/imagecrop.html\",\n link: function (scope, element, attrs) {\n scope.uploader = new Flow({\n singleFile: true,\n testChunks: false,\n target: apiSettings.baseUri + scope.url + \"?isFlow=true\",\n headers: {\n Authorization: \"Bearer \" + $localStorage.authorizationData.token,\n },\n });\n\n // Default settings\n if (scope.width && scope.height) {\n scope.imageSize = {\n w: scope.width,\n h: scope.height,\n };\n }\n\n if (scope.targetWidth && scope.targetHeight) {\n scope.resultImageSize = {\n w: scope.targetWidth,\n h: scope.targetHeight,\n };\n }\n\n // Upload temporário para memória do navegador\n scope.temporaryFileUpload = function ($file, $event, $flow) {\n $event.preventDefault();\n\n var reader = new FileReader();\n\n reader.onload = function (evt) {\n scope.$apply(function () {\n scope.sourceCropImage = evt.target.result;\n });\n };\n\n scope.filename = $file.file.name;\n\n reader.readAsDataURL($file.file);\n };\n\n // Upload real após o crop\n scope.croppedImageUpload = function () {\n scope.cropping = true;\n\n var blob = dataURItoBlob.convert(scope.targetCropImage);\n\n blob.name = scope.filename;\n\n scope.uploader.files[0] = new Flow.FlowFile(scope.uploader, blob);\n\n scope.uploader.upload();\n };\n\n // Botão Cancelar\n scope.cancelCrop = function () {\n scope.cropping = false;\n\n delete scope.sourceCropImage;\n };\n\n // Evento chamado em caso de sucesso no upload\n scope.uploader.on(\"fileSuccess\", function (file, message, chunk) {\n scope.cropping = false;\n\n delete scope.sourceCropImage;\n\n scope.image = JSON.parse(message);\n // scope.imageFile = scope.image.split('/').pop();\n\n scope.$apply();\n });\n\n // Evento chamado em caso de falha no upload\n scope.uploader.on(\"error\", function (message, file, chunk) {\n scope.cropping = false;\n\n scope.$parent.alertError(message);\n\n scope.$apply();\n });\n },\n };\n },\n ]);\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .directive(\"keywordFilter\", function () {\n return {\n restrict: \"E\",\n scope: {\n keyword: \"=\",\n help: \"=?\",\n },\n templateUrl: \"/modules/Commom/core/views/keywordfilter.html\",\n controller: function ($scope) {\n // $scope.help = angular.isDefined($scope.help) ? $scope.help : 'Digite uma palavra-chave';\n },\n };\n });\n","angular\n .module(ApplicationConfiguration.applicationModuleName)\n .directive(\"notificationPortal\", function ($timeout) {\n return {\n restrict: \"E\",\n scope: {\n notifications: '<',\n isVisible: '='\n },\n templateUrl: \"/modules/Commom/core/views/notification.list.html\",\n controller: function ($scope, $state, Alerts, MessageService) {\n $scope.loading = true;\n\n $scope.updateNotificationCount = function () {\n Alerts.updateCount()\n };\n\n\n $scope.getNotificationCount = function () {\n return Alerts.notificationCount;\n }\n\n $scope.loadNotifications = function () {\n $scope.loading = true;\n Alerts.list().$promise.then(function (response) {\n $scope.notifications = response.rows\n $scope.updateNotificationCount();\n $scope.loading = false;\n }, function (error) {\n $scope.loading = false;\n MessageService.alertError(error.data);\n });\n };\n\n $scope.loadNotifications();\n\n $scope.$watch(\"isVisible\", function (newValue, oldValue) {\n if (newValue === true) {\n $scope.loadNotifications();\n }\n });\n\n $scope.markAsRead = function (alertGuid) {\n Alerts.read({ alertGuid: alertGuid }).$promise.then(function (response) {\n $scope.loadNotifications();\n }, function (error) {\n MessageService.alertError(error.data);\n });\n }\n\n $scope.markAllAsRead = function () {\n Alerts.readAll().$promise.then(function (response) {\n $scope.loadNotifications();\n }, function (error) {\n MessageService.alertError(error.data);\n });\n }\n\n $scope.deleteNotification = function (alertGuid) {\n Alerts.delete({ alertGuid: alertGuid }).$promise.then(function (response) {\n $scope.loadNotifications();\n Alerts.updateCount();\n }, function (error) {\n MessageService.alertError(error.data);\n });\n }\n\n $scope.notificationDetails = function (moduleId) {\n switch (moduleId) {\n case 'Colors':\n return { link: 'main.colorrequest-edit' }\n case 'BonusesAndSponsorships':\n return { link: 'main.bonuses' }\n case 'SWFlow':\n return { link: 'main.promotionrequest-edit' }\n default:\n return {\n link: null\n }\n }\n }\n\n $scope.redirectTo = function (link, alertTarget) {\n if (link) {\n $state.go(link, { id: alertTarget });\n $scope.isVisible = false;\n }\n }\n\n\n $scope.formatElapsedTime = function (inputDate) {\n const date = new Date(inputDate);\n\n const localTime = date.getTime();\n\n const timezoneOffset = date.getTimezoneOffset() * 60000;\n\n const localDate = new Date(localTime - timezoneOffset);\n\n const formattedLocalDate = localDate.toLocaleString();\n\n return formattedLocalDate;\n };\n },\n };\n });","angular\n .module(ApplicationConfiguration.applicationModuleName)\n .directive(\"paginationTable\", function () {\n return {\n restrict: \"E\",\n scope: {\n pagination: \"=\",\n },\n templateUrl: \"/modules/Commom/core/views/pagination.table.html\",\n controller: function ($scope) {\n },\n };\n });","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).directive(\"panelEmpty\", function () {\n\treturn {\n\t\trestrict: \"E\",\n\t\ttemplate: \"

    \"\n\t};\n});","'use strict';\n\n// Fonte: https://github.com/terryh/angular-pickadate-directive\nangular.module(ApplicationConfiguration.applicationModuleName).directive('pickAdate', ['$parse', function ($parse) {\n\treturn {\n\t\trestrict: 'A',\n\t\trequire: 'ngModel',\n\t\tlink: function (scope, element, attrs, ngModel) {\n\t\t\telement.pickadate({\n\t\t\t\tformat: 'dd/mm/yyyy',\n\t\t\t\tselectMonths: true,\n\t\t\t\tselectYears: 100,\n\t\t\t\tonOpen: function () {\n\t\t\t\t\tthis.set('select', ngModel.$modelValue);\n\t\t\t\t},\n\t\t\t\tonSet: function (e) {\n\t\t\t\t\tngModel.$modelValue = this.get();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n}]).\ndirective('pickAtime', ['$parse', function ($parse) {\n\treturn {\n\t\trestrict: 'A',\n\t\trequire: 'ngModel',\n\t\tlink: function (scope, element, attrs, ngModel) {\n\t\t\telement.pickatime({\n\t\t\t\tformat: 'HH:i',\n\t\t\t\tformatSubmit: 'HH:i',\n\t\t\t\tonOpen: function () {\n\t\t\t\t\tthis.set('select', ngModel.$modelValue);\n\t\t\t\t},\n\t\t\t\tonSet: function (e) {\n\t\t\t\t\tngModel.$modelValue = this.get();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n}]);","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).directive('scrollToBottom', function($timeout, $window) {\n\treturn {\n scope: {\n scrollToBottom: \"=\"\n },\n restrict: 'A',\n link: function(scope, element, attr) {\n scope.$watchCollection('scrollToBottom', function(newVal) {\n if (newVal) {\n $timeout(function() {\n element[0].scrollTop = element[0].scrollHeight;\n }, 0);\n }\n\n });\n }\n };\n});","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .directive(\"tagInput\", [\n function () {\n return {\n restrict: \"A\",\n scope: {\n tagField: \"=\",\n fieldLabel: \"=\",\n isRequired: \"=\",\n },\n templateUrl: \"/modules/Commom/core/views/taginput.html\",\n link: function (scope, element, attrs) {\n scope.tagArray = null;\n\n scope.setTagField = function () {\n scope.tagField = null;\n\n if (scope.tagArray && scope.tagArray.length) {\n //scope.tagField = scope.tagArray.map(item => { return item.text }).join('|');\n scope.tagField = scope.tagArray\n .map(function (item) {\n return item.text;\n })\n .join(\"|\");\n }\n };\n\n if (scope.tagField && scope.tagField.length) {\n //scope.tagArray = scope.tagField.split('|').map(item => { return { text: item } })\n scope.tagArray = scope.tagField.split(\"|\").map(function (item) {\n return { text: item };\n });\n }\n },\n };\n },\n ]);\n","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).directive('back', ['$window', function ($window) {\n\treturn {\n\t\trestrict: 'A',\n\t\tlink: function (scope, elem, attrs) {\n\t\t\telem.bind('click', function () {\n\t\t\t\t$window.history.back();\n\t\t\t});\n\t\t}\n\t};\n}]);","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).filter('filenameFilter', function () {\n\treturn function (url) {\n\t\tif (url.lastIndexOf('/') < 0) {\n\t\t\treturn url;\n\t\t}\n\n\t\treturn url.substring(url.lastIndexOf('/') + 1);\n\t}\n});","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).filter('numberFixedLen', function () {\n\treturn function (n, len) {\n\t\tvar num = parseInt(n, 10);\n\t\tlen = parseInt(len, 10);\n\t\tif (isNaN(num) || isNaN(len)) {\n\t\t\treturn n;\n\t\t}\n\t\tnum = '' + num;\n\t\twhile (num.length < len) {\n\t\t\tnum = '0' + num;\n\t\t}\n\t\treturn num;\n\t};\n});","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).factory('Alerts', ['$resource', '$http', 'apiSettings', function ($resource, $http, apiSettings) {\n\n var Alerts = $resource(apiSettings.baseUri + 'v1/alerts/:id', { id: '@id' }, {\n 'list': {\n method: 'GET',\n isArray: false,\n params: {\n page: 1,\n pageSize: apiSettings.defaultPageSize\n }\n },\n 'insertNew': {\n url:\n apiSettings.baseUri +\n \"v1/alerts/new/:enumAlertType\",\n method: 'POST',\n params: { id: '@enumAlertType' },\n },\n 'count': {\n url: apiSettings.baseUri + 'v1/alerts/count',\n method: 'GET',\n },\n 'read': {\n url: apiSettings.baseUri + 'v1/alerts/:alertGuid/read',\n params: { alertGuid: '@alertGuid' },\n method: 'PUT',\n },\n 'readAll': {\n url: apiSettings.baseUri + 'v1/alerts/read',\n method: 'PUT',\n },\n 'delete': {\n url: apiSettings.baseUri + 'v1/alerts/:alertGuid',\n params: { alertGuid: '@alertGuid' },\n method: 'DELETE'\n },\n });\n\n Alerts.notificationCount = 0;\n\n Alerts.updateCount = function () {\n return $http({\n method: 'GET',\n url: apiSettings.baseUri + 'v1/alerts/count'\n })\n .then(function (response) {\n Alerts.notificationCount = parseInt(response.data, 10);\n return Alerts.notificationCount;\n })\n .catch(function (error) {\n console.error(\"Erro ao obter a contagem:\", error);\n throw error;\n });\n };\n\n return Alerts;\n}]);\n","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).factory('authInterceptorService', ['$q', '$location', '$localStorage', function ($q, $location, $localStorage) {\n\tvar authInterceptorServiceFactory = {};\n\t\n\tvar _request = function (config) {\n\t\tconfig.headers = config.headers || {};\n\n\t\tvar authData = $localStorage.authorizationData;\n\n\t\tif (authData) {\n\t\t\tconfig.headers.Authorization = 'Bearer ' + authData.token;\n\t\t}\n\n\t\treturn config;\n\t}\n\n\tauthInterceptorServiceFactory.request = _request;\n\n\treturn authInterceptorServiceFactory;\n}]);","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).service('cropImage', function () {\n\tvar self = {};\n\n\tself.image = '';\n\t\n\tself.setImage = function (value) {\n\t\tself.image = value;\n\t}\n\n\treturn self;\n});","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).service('dataURItoBlob', function () {\n\tvar self = {};\n\n\tself.convert = function (dataURI) {\n\t\tvar binary = atob(dataURI.split(',')[1]);\n\t\tvar mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\n\t\tvar array = [];\n\n\t\tfor (var i = 0; i < binary.length; i++) {\n\t\t\tarray.push(binary.charCodeAt(i));\n\t\t}\n\n\t\treturn new Blob([new Uint8Array(array)], { type: mimeString });\n\t};\n\n\treturn self;\n});","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).factory('Enumerators', ['$resource', '$stateParams', 'apiSettings', function ($resource, $stateParams, apiSettings) {\n\treturn $resource(apiSettings.baseUri + 'v1/enumerators/:name', { name: '@name' });\n}]);","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).service('MessageService', ['$ngConfirm', '$rootScope', function ($ngConfirm, $rootScope) {\n\tvar self = this;\n\n\tself.error = function (err) {\n\t\tself.alertError(JSON.parse(err._body));\n\t}\n\n\t// Alert windows\n\tself.alertInfo = function (message, title, callbackOk) {\n\t\t$ngConfirm({\n\t\t\ttitle: title || 'Aviso importante',\n\t\t\ticon: 'glyphicon glyphicon-info-sign',\n\t\t\tcontent: message,\n\t\t\ttheme: 'supervan',\n\t\t\ttype: 'blue',\n\t\t\tautoClose: 'ok|10000',\n\t\t\tbuttons: {\n\t\t\t\tok: {\n\t\t\t\t\tkeys: ['enter'],\n\t\t\t\t\taction: function (scope) {\n\t\t\t\t\t\tif (scope.laddaLoading) {\n\t\t\t\t\t\t\tscope.laddaLoading = false;\n\n\t\t\t\t\t\t\tscope.$apply();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (callbackOk)\n\t\t\t\t\t\t\tcallbackOk();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t}\n\n\tself.alertWarning = function (message, title) {\n\t\t$ngConfirm({\n\t\t\ttitle: title || 'Aviso importante',\n\t\t\ticon: 'glyphicon glyphicon-exclamation-sign',\n\t\t\tcontent: message,\n\t\t\ttheme: 'supervan',\n\t\t\ttype: 'dark',\n\t\t\tbuttons: {\n\t\t\t\tok: {\n\t\t\t\t\tkeys: ['enter'],\n\t\t\t\t\taction: function (scope) {\n\t\t\t\t\t\tif (scope.laddaLoading) {\n\t\t\t\t\t\t\tscope.laddaLoading = false;\n\n\t\t\t\t\t\t\tscope.$apply();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t}\n\n\tself.alertError = function (message, title) {\n\t\t$ngConfirm({\n\t\t\ttitle: title || 'Ocorreu um erro',\n\t\t\ticon: 'glyphicon glyphicon-minus-sign',\n\t\t\tcontent: message,\n\t\t\ttheme: 'supervan',\n\t\t\ttype: 'red',\n\t\t\tscope: $rootScope,\n\t\t\tbuttons: {\n\t\t\t\tok: {\n\t\t\t\t\tkeys: ['enter'],\n\t\t\t\t\taction: function (scope) {\n\t\t\t\t\t\tif (scope.laddaLoading) {\n\t\t\t\t\t\t\tscope.laddaLoading = false;\n\n\t\t\t\t\t\t\tscope.$apply();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t}\n\n\tself.confirmDelete = function (callback) {\n\t\t$ngConfirm({\n\t\t\ttitle: 'Exclusão de Registro',\n\t\t\tcontent: 'Você tem certeza que deseja excluir este item?',\n\t\t\ticon: 'glyphicon glyphicon-trash',\n\t\t\ttheme: 'supervan',\n\t\t\ttype: 'red',\n\t\t\tbuttons: {\n\t\t\t\tyes: {\n\t\t\t\t\ttext: 'Sim',\n\t\t\t\t\taction: callback\n\t\t\t\t},\n\t\t\t\tno: {\n\t\t\t\t\ttext: 'Não'\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tself.confirm = function (callbackYes, title, message) {\n\t\t$ngConfirm({\n\t\t\ttitle: title || 'Aviso importante',\n\t\t\ticon: 'glyphicon glyphicon-question-sign',\n\t\t\tcontent: message,\n\t\t\ttheme: 'supervan',\n\t\t\ttype: 'dark',\n\t\t\tbuttons: {\n\t\t\t\tyes: {\n\t\t\t\t\ttext: 'Sim',\n\t\t\t\t\taction: callbackYes\n\t\t\t\t},\n\t\t\t\tno: {\n\t\t\t\t\ttext: 'Não'\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\treturn self;\n}]);","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).service('pageService', function () {\n var self = {};\n\n self.update = function (dest, src) {\n var diff = Math.abs(dest.length - src.length);\n if (dest.length > src.length) {\n dest.splice(-1, diff);\n }\n else if (dest.length < src.length) {\n for (var i = 0; i < diff; i++) {\n dest.push({});\n }\n }\n for (var i = 0, _len = src.length; i < _len; i++) {\n angular.extend(dest[i], src[i]);\n }\n };\n\n return self;\n});","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).service('permissionService', ['settings', '$state', '$filter', 'MessageService', function (settings, $state, $filter, MessageService) {\n\tvar self = {};\n\n\tself.isAdmin = function () {\n\t\treturn (settings.staffId != null && settings.staffId != 0);\n\t}\n\n\tself.isAuthorized = function (task) {\n\t\tif (!task) {\n\t\t\treturn self.isAdmin();\n\t\t}\n\n\t\treturn (\n\t\t\tself.isAdmin()\n\t\t\t|| (settings.permissions && settings.permissions.indexOf(task) != -1)\n\t\t);\n\t}\n\n\tself.isAdminAccessAuthorized = function () {\n\t\tif (self.isAuthorized('AdminAccess') == false) {\n\t\t\tvar $translate = $filter('translate');\n\n\t\t\tMessageService.alertInfo($translate('global.accessDeniedMessage'), $translate('global.accessDenied'), function () {\n\t\t\t\t$state.go('main.dashboard');\n\t\t\t})\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\n\treturn self;\n}]);","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).service('settings', ['$localStorage', '$sessionStorage', 'Auth', function ($localStorage, $sessionStorage, Auth) {\n\tvar self = {};\n\n\t// Properties\n\tself.isSigned = false;\n\tself.email = $localStorage.email;\n\tself.userName = $localStorage.userName;\n\tself.userId = $localStorage.userId;\n\tself.groups = $localStorage.groups;\n\tself.avatar = $localStorage.avatar;\n\tself.permissions = $localStorage.permissions;\n\tself.webPushToken = $localStorage.webPushToken;\n\tself.redirectTo = {};\n\n\tif (self.userId) {\n\t\tself.isSigned = true;\n\t}\n\n\t// Methods\n\tself.setUser = function (user) {\n\t\tself.email = $localStorage.email = user.email;\n\t\tself.userName = $localStorage.userName = user.displayName;\n\t\tself.userId = $localStorage.userId = user.userId;\n\t\tself.groups = $localStorage.groups = user.groups;\n\t\tself.avatar = $localStorage.avatar = user.imageAvatar;\n\t\tself.permissions = $localStorage.permissions = user.permissions;\n\t\tself.isSigned = true;\n\n\t\tif (self.webPushToken) {\n\t\t\tAuth.refreshFcmToken({\n\t\t\t\tdeviceToken: self.webPushToken\n\t\t\t}, function (response) {\n\t\t\t}, function (error) {\n\t\t\t});\n\t\t}\n\t}\n\n\tself.setRedirect = function (state, params) {\n\t\tself.redirectTo.state = state;\n\t\tself.redirectTo.params = params;\n\t}\n\n\tself.clearRedirect = function () {\n\t\tself.redirectTo = {};\n\t}\n\n\tself.setWebPushToken = function (token) {\n\t\tself.webPushToken = $localStorage.webPushToken = token;\n\n\t\tif (self.webPushToken && self.isSigned) {\n\t\t\tAuth.refreshFcmToken({\n\t\t\t\tdeviceToken: self.webPushToken\n\t\t\t}, function (response) {\n\t\t\t}, function (error) {\n\t\t\t});\n\t\t}\n\t}\n\n\tself.signOut = function () {\n\t\tif (self.isSigned) {\n\t\t\tAuth.logout(function (response) {\n\t\t\t}, function (error) {\n\t\t\t});\n\t\t}\n\n\t\ttry {\n\n\t\t\tconst _webPushToken = self.webPushToken;\n\n\t\t\twindow.localStorage.clear();\n\t\t\t$localStorage = {};\n\n\t\t\tself.isSigned = false;\n\t\t\tself.email = null;\n\t\t\tself.userName = null;\n\t\t\tself.userId = null;\n\t\t\tself.groups = null;\n\t\t\tself.avatar = null;\n\t\t\tself.permissions = null;\n\n\n\t\t\tif (_webPushToken) {\n\t\t\t\tself.setWebPushToken(_webPushToken);\n\t\t\t}\n\n\t\t\t$sessionStorage.empty();\n\t\t} catch (err) {\n\t\t\t// console.log(err);\n\t\t}\n\t}\n\n\tself.clearSessionFilters = function () {\n\t\t$sessionStorage.colorsRequestsContextFilter = null;\n\t\t$sessionStorage.colorsRequestsContextFilter_Customer = null;\n\t}\n\n\tif (self.webPushToken && self.isSigned) {\n\t\tAuth.refreshFcmToken({\n\t\t\tdeviceToken: self.webPushToken\n\t\t}, function (response) {\n\t\t}, function (error) {\n\t\t});\n\t}\n\n\treturn self;\n}]);","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .service(\"tools\", [\n \"MessageService\",\n function (MessageService) {\n var self = {};\n\n self.getFromArray = function (arr, propName, propValue) {\n var arrLength = arr.length;\n\n if (arrLength) {\n for (var i = 0; i < arrLength; i++)\n if (arr[i][propName] == propValue) return arr[i];\n }\n\n // will return undefined if not found; you could return a default instead\n };\n\n self.getRandomString = function (length) {\n var result = \"\";\n var chars = \"0123456789abcdefghijklmnopqrstuvwxyz\";\n\n for (var i = length; i > 0; --i)\n result += chars[Math.floor(Math.random() * chars.length)];\n\n return result;\n };\n\n self.getFileTempPath = function (tempFolder, filename) {\n return [config.cdnUrlFilesTempPath, tempFolder, filename].join(\"/\");\n };\n\n self.getFileChatPath = function (tempFolder, filename) {\n return [config.cdnUrl, tempFolder, filename].join(\"/\");\n };\n\n self.getFileExtension = function (filename) {\n var f = filename.split(\".\");\n return f.length > 1 ? f.pop() : \"\";\n };\n\n self.getSizeMB = function (sizeBytes) {\n return sizeBytes / 1024 / 1024;\n };\n\n self.validateFileExtension = function (filename, allowedFileExtensions) {\n var extension = self.getFileExtension(filename).toLocaleLowerCase();\n\n // Valida se a extensão do arquivo é permitida\n if (allowedFileExtensions.indexOf(extension) == -1) {\n MessageService.alertInfo(\n \"Extensão de arquivo .\" +\n extension.toUpperCase() +\n \" não é permitada.\"\n );\n return false;\n }\n\n return true;\n };\n\n self.validateFileMaxSize = function (size, maxAllowedFileSize) {\n // Valida o tamanho do arquivo\n if (size > maxAllowedFileSize) {\n MessageService.alertInfo(\n \"Tamanho máximo permitido para o arquivo é \" +\n self.getSizeMB(maxAllowedFileSize) +\n \"MB.\"\n );\n return false;\n }\n\n return true;\n };\n\n self.isMobile = function () {\n var check = false;\n (function (a) {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(\n a\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n a.substr(0, 4)\n )\n )\n check = true;\n })(navigator.userAgent || navigator.vendor || window.opera);\n return check;\n };\n\n return self;\n },\n ]);\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .config(function ($stateProvider, $urlRouterProvider) {\n $stateProvider.state(\"main.customer\", {\n url: \"customer\",\n resolve: {\n list: [\n \"$stateParams\",\n \"Customer\",\n function ($stateParams, Customer) {\n return Customer.list().$promise;\n },\n ],\n },\n views: {\n main: {\n templateUrl: \"/modules/Commom/customer/views/customer.list.html\",\n controller: \"customerListCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n\n $stateProvider.state(\"main.customer-upload\", {\n url: \"customer/upload\",\n resolve: {\n model: [\n function () {\n return {};\n },\n ],\n maxAllowedFileSize: [\n \"$stateParams\",\n \"Internal\",\n function ($stateParams, Internal) {\n return Internal.parameters({ entry: \"MaxAllowedFileSize\" })\n .$promise;\n },\n ],\n },\n views: {\n main: {\n templateUrl: \"/modules/Commom/customer/views/customer.upload.html\",\n controller: \"customerUploadCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n\n $stateProvider.state(\"main.customer-edit\", {\n url: \"customer/:id\",\n resolve: {\n model: [\n \"$stateParams\",\n \"Customer\",\n function ($stateParams, Customer) {\n if ($stateParams.id) {\n return Customer.get({ id: $stateParams.id }).$promise;\n }\n\n return {};\n },\n ],\n states: [\n \"Internal\",\n function (Internal) {\n return Internal.states().$promise;\n },\n ],\n customersTypes: [\n \"Customer\",\n function (Customer) {\n return Customer.customersTypes().$promise;\n },\n ],\n },\n views: {\n main: {\n templateUrl: \"/modules/Commom/customer/views/customer.edit.html\",\n controller: \"customerEditCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n });\n","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).controller('customerEditCtrl', function (\n\t$scope, $rootScope, $window, $state, $http, $filter, permissionService, MessageService, model, Customer, states, customersTypes, Internal) {\n\tvar vm = this;\n\n\tvm.states = states;\n\tvm.customersTypes = customersTypes;\n\tvm.enumerators = enumerators;\n\tvm.projectModule = config.projectModule;\n\n\tvm.permissions = permissionService;\n\tif (!vm.permissions.isAdminAccessAuthorized())\n\t\treturn;\n\n\tvar $translate = $filter('translate');\n\n\tvm.model = model;\n\tvm.isOwnCustomer = false;\n\tif (vm.model.customersTypeId && vm.model.customersTypeId == window.enumerators.customersTypes.Propria) {\n\t\tvm.isOwnCustomer = true;\n\t}\n\n\tangular.extend($scope.$parent.vm, {\n\t\ttitle: 'customers.settings.title',\n\t\tinsertUrl: null\n\t});\n\n\t$rootScope.laddaLoading = false;\n\n\tvm.save = function () {\n\t\tvar _isSaoPaulo = vm.verifyColorsAndSaoPaulo();\n\t\tif (_isSaoPaulo && (!(vm.model.isSPCapitol ?? false) && !(vm.model.isSPNotCapitol ?? false))) {\n\t\t\tMessageService.alertError(\n\t\t\t\t\"Ao Selecionar o Estado de São Paulo, você deve determinar se é Capital ou Interior.\"\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\t$rootScope.laddaLoading = true;\n\t\tif (!vm.model.customerId) {\n\t\t\tCustomer.insert(vm.model, function () {\n\t\t\t\t$state.go('main.customer');\n\t\t\t}, function (response) {\n\t\t\t\tMessageService.alertError(response.data);\n\t\t\t});\n\t\t} else {\n\t\t\tCustomer.update(vm.model, function () {\n\t\t\t\t$state.go('main.customer');\n\t\t\t}, function (response) {\n\t\t\t\tMessageService.alertError(response.data);\n\t\t\t});\n\t\t}\n\t}\n\n\t// vm.getSalespeople = function (val) {\n\t// \treturn Internal.ownUsersList({ pageSize: 50, keyword: val, isManager: false }).$promise;\n\t// };\n\n\t// $scope.$watch('vm.salesman', function (newValue, oldValue) {\n\t// if (newValue) {\n\t// var exist = false;\n\n\t// if (!vm.model.salespeople) {\n\t// vm.model.salespeople = [];\n\t// }\n\t// vm.model.salespeople.map(x => {\n\t// if (newValue.userId == x.userId) {\n\t// exist = true;\n\t// }\n\t// });\n\n\t// if (!exist) {\n\t// \t\t\tvm.model.salespeople.push(newValue);\n\t// }\n\n\t// vm.salesman = null;\n\t// }\n\t// });\n\n\t// vm.delUser = function(x) {\n\t// \tvm.model.salespeople.splice(x, 1);\n\t// }\n\n\t$scope.$watch('vm.model.isSPCapitol', function (newValue, oldValue) {\n\t\tif (vm.model.isSPNotCapitol && newValue) {\n\t\t\tvm.model.isSPNotCapitol = false;\n\t\t}\n\t});\n\n\t$scope.$watch('vm.model.isSPNotCapitol', function (newValue, oldValue) {\n\t\tif (vm.model.isSPCapitol && newValue) {\n\t\t\tvm.model.isSPCapitol = false;\n\t\t}\n\t});\n\n\tvm.verifyColorsAndSaoPaulo = function () {\n\t\tif (vm.projectModule == \"Colors\" && vm.model.stateId && vm.model.stateId == 25) {\n\n\t\t\tvm.model.isSPCapitol = vm.model.isSPCapitol ?? false;\n\t\t\tvm.model.isSPNotCapitol = vm.model.isSPNotCapitol ?? false;\n\n\t\t\treturn true;\n\t\t}\n\n\t\tvm.model.isSPCapitol = null;\n\t\tvm.model.isSPNotCapitol = null;\n\n\t\treturn false;\n\t}\n});","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).controller('customerListCtrl', function ($scope, $rootScope, $state, $http, $filter, permissionService, settings, apiSettings, list, MessageService, FileSaver, Reports, Customer) {\n\tvar vm = this;\n\n\tvm.permissions = permissionService;\n\tif (!vm.permissions.isAdminAccessAuthorized())\n\t\treturn;\n\n\tvar $translate = $filter('translate');\n\n\tangular.extend($scope.$parent.vm, {\n\t\ttitle: 'customers.settings.title',\n\t\tinsertUrl: 'main.customer-edit'\n\t});\n\n\t$rootScope.laddaLoading = false;\n\n\t// Pagination\n\tvm.pagination = {\n\t\tlist: list,\n\t\tcurrentPage: 1,\n\t\tpageSize: apiSettings.defaultPageSize,\n\t\tpagesTotal: list.total\n\t};\n\n\t$scope.$watch('vm.keyword', function (newValue, oldValue) {\n\t\tif (newValue !== oldValue) {\n\t\t\tvm.refresh(vm.pagination.currentPage, newValue);\n\t\t}\n\t});\n\n\t$scope.$watch('vm.pagination.currentPage', function (newValue, oldValue) {\n\t\tif (newValue !== oldValue) {\n\t\t\tvm.refresh(newValue, vm.keyword);\n\t\t}\n\t});\n\n\tvm.refresh = function (page, keyword) {\n\t\tCustomer.list({ page: page, keyword: keyword }).$promise.then(function (data) {\n\t\t\tvm.pagination.list = data;\n\t\t\tvm.pagination.currentPage = data.page;\n\t\t\tvm.pagination.pagesTotal = data.total;\n\t\t});\n\t}\n\n\tvm.delete = function (id, index) {\n\t\tMessageService.confirmDelete(function () {\n\t\t\tCustomer.delete({ id: id }, function () {\n\t\t\t\tvm.pagination.list.rows.splice(index, 1);\n\t\t\t});\n\t\t});\n\t}\n\n\tvm.goToImport = function () {\n\t\t$state.go('main.customer-upload');\n\t}\n\n\tvm.excel = function () {\n\t\tvar params = { keyword: vm.keyword };\n\n\t\tReports.customerExcel(params, function (response) {\n\t\t\tvar filename = moment().format('YYYYMMDDHHmmss') + '_Clientes.xlsx';\n\n\t\t\tFileSaver.saveAs(response.data, filename);\n\t\t}, function (response) {\n\t\t\tvar msg = $translate('errors.couldNotCompleteRequest');\n\n\t\t\tMessageService.alertError(msg);\n\t\t});\n\t}\n});","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).controller('customerUploadCtrl', function ($scope, $rootScope, $window, $state, $http, $filter, $localStorage, $ngConfirm, permissionService, apiSettings, MessageService, tools, model, Customer, maxAllowedFileSize) {\n\tvar vm = this;\n\n\tvm.permissions = permissionService;\n\tif (!vm.permissions.isAdminAccessAuthorized())\n\t\treturn;\n\n\tvar $translate = $filter('translate');\n\n\tangular.extend($scope.$parent.vm, {\n\t\ttitle: 'customers.settings.title',\n\t\tinsertUrl: null\n\t});\n\n\t// INICIALIZAÇÕES\n\tvm.model = model;\n\tvm.errors = [];\n\n\t// CONFIGURAÇÃO DO UPLOAD\n\tvm.tempFolder = tools.getRandomString(8);\n\tvm.uploadConfig = {\n\t\tsingleFile: true,\n\t\ttestChunks: false,\n\t\ttarget: apiSettings.baseUri + 'v1/internal/upload' + '?tempFolder=' + vm.tempFolder,\n\t\theaders: {\n\t\t\t'Authorization': 'Bearer ' + $localStorage.authorizationData.token\n\t\t}\n\t};\n\n\tvm.allowedFileExtensions = ['xlsx'];\n\tvm.maxAllowedFileSize = parseInt(maxAllowedFileSize.value);\n\n\t//UPLOAD\n\tvm.getallowedFileExtensions = function () {\n\t\treturn \".\" + vm.allowedFileExtensions.join(', .');\n\t};\n\n\tvm.getallowedFileExtensionsLabel = function () {\n\t\treturn \"Apenas arquivos do tipo \" + vm.getallowedFileExtensions();\n\t};\n\n\tvm.hasErrors = function () {\n\t\treturn vm.errors && vm.errors.length > 0;\n\t};\n\n\tvm.uploadSubmit = function ($files, $event, $flow) {\n\t\tif ($files[0] === undefined)\n\t\t\treturn;\n\n\t\t// Valida se a extensão do arquivo é permitida\n\t\tif (tools.validateFileExtension($files[0].name, vm.allowedFileExtensions) == false)\n\t\t\treturn;\n\n\t\t// Valida o tamanho do arquivo\n\t\tif (tools.validateFileMaxSize($files[0].size, vm.maxAllowedFileSize) == false)\n\t\t\treturn;\n\n\t\t$flow.upload();\n\t};\n\n\tvm.uploadSuccess = function ($file, $message, $flow) {\n\t\tvar uploadResult = JSON.parse($message);\n\t\tvm.model.name = uploadResult.originalFilename;\n\t\tvm.model.fileDocument = uploadResult.filename;\n\t\tvm.model.url = tools.getFileTempPath(vm.tempFolder, uploadResult.filename);\n\n\t\t// Reseta o flow\n\t\t$flow.cancel();\n\t};\n\n\tvm.uploadError = function ($file, $message, $flow) {\n\t\tMessageService.alertError($message);\n\t};\n\n\tvm.resetForm = function () {\n\t\tvm.model = {};\n\n\t\tvar form = $scope.customerUploadForm;\n\t\tform.$setPristine();\n\t\tform.$setUntouched();\t\t\n\t};\n\n\t$rootScope.laddaLoading = false;\n\n\tvm.import = function () {\n\t\t$rootScope.laddaLoading = true;\n\n\t\tvm.errors = [];\n\t\tvm.model.tempFolder = vm.tempFolder;\t\t\n\n\t\tCustomer.import(vm.model, function (response) {\n\t\t\tif (response.result == false)\n\t\t\t{\n\t\t\t\tvm.errors = response.errors;\n\t\t\t\tvm.resetForm();\n\n\t\t\t\tMessageService.alertError(response.message);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tMessageService.alertInfo(\"A importação do arquivo foi concluída com sucesso\", null, function () {\n\t\t\t\t\t$state.go('main.customer');\n\t\t\t\t});\t\t\t\t\n\t\t\t}\n\t\t\t\t\t\t\n\t\t}, function (response) {\n\t\t\tMessageService.alertError(response.data);\n\t\t});\t\t\n\t}\n});","\"use strict\";\n\nangular.module(ApplicationConfiguration.applicationModuleName).factory('Customer', ['$resource', '$stateParams', 'apiSettings', function ($resource, $stateParams, apiSettings) {\n return $resource(apiSettings.baseUri + 'v1/customers/:id', { id: '@id' }, {\n 'list': {\n method: 'GET',\n isArray: false,\n params: {\n page: 1,\n pageSize: apiSettings.defaultPageSize,\n keyword: ''\n }\n },\n 'listIds': {\n url: apiSettings.baseUri + 'v1/customers/list/ids/:customersTypeId',\n method: 'GET',\n isArray: true\n },\n 'listMinified': {\n url: apiSettings.baseUri + 'v1/customers/list/minified',\n method: 'GET',\n isArray: true,\n params: {\n pageSize: apiSettings.defaultPageSize,\n keyword: ''\n }\n },\n 'insert': {\n method: 'POST'\n },\n 'update': {\n method: 'PUT'\n },\n 'updateHasColorSample': {\n url: apiSettings.baseUri + 'v1/customers/has-color-sample',\n method: 'PUT'\n },\n 'delete': {\n method: 'DELETE'\n },\n 'import': {\n url: apiSettings.baseUri + 'v1/customers/import',\n method: 'POST'\n },\n 'customersTypes': {\n url: apiSettings.baseUri + 'v1/customers/types/list/ids',\n method: 'GET',\n isArray: true\n },\n 'customersOwnList': {\n url: apiSettings.baseUri + 'v1/customers/own/list/ids',\n method: 'GET',\n isArray: true\n },\n 'customersAutocomplete': {\n url: apiSettings.baseUri + 'v2/customers/autocomplete',\n method: 'GET',\n isArray: true\n }\n });\n}]);\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .config(function ($stateProvider, $urlRouterProvider) {\n $stateProvider.state(\"main.dashboard\", {\n url: \"dashboard\",\n resolve: {\n model: [\n \"Dashboard\",\n function (Dashboard) {\n return Dashboard.dashboard().$promise;\n },\n ],\n requiredApprovals: [\n \"PromotionRequest\",\n function (PromotionRequest) {\n var params = {\n page: 1,\n pageSize: 1000,\n requiresApproval: true,\n };\n\n return PromotionRequest.list(params).$promise;\n },\n ],\n },\n views: {\n main: {\n templateUrl: \"/modules/Commom/dashboard/views/dashboard.html\",\n controller: \"dashboardCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n\n $stateProvider.state(\"main.dashboard-colors\", {\n url: \"dashboardcolors\",\n params: {\n expired: false,\n },\n resolve: {\n dash: [\n \"$stateParams\",\n \"ColorRequest\",\n function ($stateParams, ColorRequest) {\n return ColorRequest.dash().$promise;\n },\n ],\n managers: [\n \"Internal\",\n function (Internal) {\n return Internal.ownUsersList({ pageSize: 0, isManager: true }).$promise;\n },\n ],\n states: [\n \"Internal\",\n function (Internal) {\n return Internal.states().$promise;\n },\n ],\n status: [\n \"Status\",\n function (Status) {\n return Status.listIds({\n moduleId: window.enumerators.modules.Cores,\n }).$promise;\n },\n ],\n },\n views: {\n main: {\n templateUrl:\n \"/modules/Commom/dashboard/views/dashboard.colors.html\",\n controller: \"dashboardColorsCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n });\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .controller(\n \"dashboardCtrl\",\n function (\n $scope,\n $filter,\n model,\n Dashboard,\n permissionService,\n requiredApprovals\n ) {\n var vm = this;\n\n var $translate = $filter(\"translate\");\n\n vm.permissions = permissionService;\n\n angular.extend($scope.$parent.vm, {\n title: null,\n insertUrl: null,\n });\n\n vm.model = model;\n vm.requiredApprovals = requiredApprovals;\n }\n );\n","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).factory('Dashboard', ['$resource', 'apiSettings', function ($resource, apiSettings) {\n\treturn $resource(null, null, {\n\t\tdashboard: {\n\t\t\turl: apiSettings.baseUri + 'v1/dashboard',\n\t\t\tmethod: 'GET',\n\t\t\tisArray: false\n\t\t}\n\t});\n}]);","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .config(function ($stateProvider, $urlRouterProvider) {\n $stateProvider.state(\"main.disapprovalreason\", {\n url: \"disapprovalreason\",\n resolve: {\n list: [\n \"$stateParams\",\n \"DisapprovalReason\",\n function ($stateParams, DisapprovalReason) {\n return DisapprovalReason.list().$promise;\n },\n ],\n },\n views: {\n main: {\n templateUrl:\n \"/modules/Commom/disapprovalreason/views/disapprovalreason.list.html\",\n controller: \"disapprovalreasonListCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n\n $stateProvider.state(\"main.disapprovalreason-edit\", {\n url: \"disapprovalreason/:id\",\n resolve: {\n model: [\n \"$stateParams\",\n \"DisapprovalReason\",\n function ($stateParams, DisapprovalReason) {\n if ($stateParams.id) {\n return DisapprovalReason.get({ id: $stateParams.id }).$promise;\n }\n\n return {};\n },\n ],\n },\n views: {\n main: {\n templateUrl:\n \"/modules/Commom/disapprovalreason/views/disapprovalreason.edit.html\",\n controller: \"disapprovalreasonEditCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n });\n","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).controller('disapprovalreasonEditCtrl', function ($scope, $rootScope, $window, $state, $http, $filter, MessageService, model, DisapprovalReason) {\n\tvar vm = this;\n\n\tvar $translate = $filter('translate');\n\n\tvm.model = model;\n\n\tangular.extend($scope.$parent.vm, {\n\t\ttitle: 'disapprovalReasons.settings.title',\n\t\tinsertUrl: null\n\t});\n\n\t$rootScope.laddaLoading = false;\n\n\tvm.save = function () {\n\t\t$rootScope.laddaLoading = true;\n\n\n\t\tif (!vm.model.disapprovalReasonId) {\n\t\t\tDisapprovalReason.insert(vm.model, function () {\n\t\t\t\t$state.go('main.disapprovalreason');\n\t\t\t}, function (response) {\n\t\t\t\tMessageService.alertError(response.data);\n\t\t\t});\n\t\t} else {\n\t\t\tDisapprovalReason.update(vm.model, function () {\n\t\t\t\t$state.go('main.disapprovalreason');\n\t\t\t}, function (response) {\n\t\t\t\tMessageService.alertError(response.data);\n\t\t\t});\n\t\t}\n\t}\n});","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).controller('disapprovalreasonListCtrl', function ($scope, $rootScope, $state, $http, $filter, settings, apiSettings, list, MessageService, DisapprovalReason) {\n\tvar vm = this;\n\n\tvar $translate = $filter('translate');\n\n\tangular.extend($scope.$parent.vm, {\n\t\ttitle: 'disapprovalReasons.settings.title',\n\t\tinsertUrl: 'main.disapprovalreason-edit'\n\t});\n\n\t$rootScope.laddaLoading = false;\n\n\t// Pagination\n\tvm.pagination = {\n\t\tlist: list,\n\t\tcurrentPage: 1,\n\t\tpageSize: apiSettings.defaultPageSize,\n\t\tpagesTotal: list.total\n\t};\n\n\t$scope.$watch('vm.keyword', function (newValue, oldValue) {\n\t\tif (newValue !== oldValue) {\n\t\t\tvm.refresh(vm.pagination.currentPage, newValue);\n\t\t}\n\t});\n\n\t$scope.$watch('vm.pagination.currentPage', function (newValue, oldValue) {\n\t\tif (newValue !== oldValue) {\n\t\t\tvm.refresh(newValue, vm.keyword);\n\t\t}\n\t});\n\n\tvm.refresh = function (page, keyword) {\n\t\tDisapprovalReason.list({ page: page, keyword: keyword }).$promise.then(function (data) {\n\t\t\tvm.pagination.list = data;\n\t\t\tvm.pagination.currentPage = data.page;\n\t\t\tvm.pagination.pagesTotal = data.total;\n\t\t});\n\t}\n\n\tvm.delete = function (id, index) {\n\t\tMessageService.confirmDelete(function () {\n\t\t\tDisapprovalReason.delete({ id: id }, function () {\n\t\t\t\tvm.pagination.list.rows.splice(index, 1);\n\t\t\t});\n\t\t});\n\t}\n});","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).factory('DisapprovalReason', ['$resource', '$stateParams', 'apiSettings', function ($resource, $stateParams, apiSettings) {\n\treturn $resource(apiSettings.baseUri + 'v1/disapprovalreasons/:id', { id: '@id' }, {\n\t\t'list': {\n\t\t\tmethod: 'GET',\n\t\t\tisArray: false,\n\t\t\tparams: {\n\t\t\t\tpage: 1,\n\t\t\t\tpageSize: apiSettings.defaultPageSize,\n\t\t\t\tkeyword: ''\n\t\t\t}\n\t\t},\n\t\t'listIds': {\n\t\t\turl: apiSettings.baseUri + 'v1/disapprovalreasons/list/ids',\n\t\t\tmethod: 'GET',\n\t\t\tisArray: true\n\t\t},\n\t\t'insert': {\n\t\t\tmethod: 'POST'\n\t\t},\n\t\t'update': {\n\t\t\tmethod: 'PUT'\n\t\t},\n\t\t'delete': {\n\t\t\tmethod: 'DELETE'\n\t\t}\n\t});\n}]);","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .config(function ($stateProvider, $urlRouterProvider) {\n $stateProvider.state(\"main.reports\", {\n url: \"users\",\n views: {\n main: {\n templateUrl: \"/modules/Commom/reports/views/reports.users.html\",\n controller: \"reportsUsersCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n });\n","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).controller('reportsUsersCtrl', function ($scope, $rootScope, $state, $http, $filter, settings, apiSettings, MessageService, Reports, FileSaver) {\n\tvar vm = this;\n\n\tvar $translate = $filter('translate');\n\n\tangular.extend($scope.$parent.vm, {\n\t\ttitle: 'reports.users.title',\n\t\tinsertUrl: null\n\t});\n\n\tvm.model = [];\n\n\tvm.refresh = function () {\n\t\tvar params = {\n\t\t\tfrom: vm.from,\n\t\t\tto: vm.to\n\t\t};\n\n\t\tReports.users(params).$promise.then(function (response) {\n\t\t\tvm.model = response;\n\t\t});\n\t}\n\n\tvm.excel = function () {\n\t\tvar params = {\n\t\t\tfrom: vm.from,\n\t\t\tto: vm.to\n\t\t};\n\n\t\tReports.usersExcel(params, function (response) {\n\t\t\tvar filename = moment().format('YYYYMMDDHHmmss') + '.xlsx';\n\n\t\t\tFileSaver.saveAs(response.data, filename);\n\t\t}, function (response) {\n\t\t\tvar msg = $translate('errors.couldNotCompleteRequest');\n\n\t\t\tMessageService.alertError(msg);\n\t\t});\n\t}\n});","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).factory('Reports', ['$resource', '$stateParams', 'apiSettings', function ($resource, $stateParams, apiSettings) {\n\treturn $resource(null, null, {\n\t\t'users': {\n\t\t\turl: apiSettings.baseUri + 'v1/reports/users',\n\t\t\tmethod: 'GET',\n\t\t\tisArray: true\n\t\t},\n\t\t'usersExcel': {\n\t\t\turl: apiSettings.baseUri + 'v1/reports/users/excel',\n\t\t\tmethod: 'GET',\n\t\t\theaders: {\n\t\t\t\t'Accept': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t\t\t\t'Content-type': 'application/json'\n\t\t\t},\n\t\t\tresponseType: 'arraybuffer',\n\t\t\ttransformResponse: function (data) {\n\t\t\t\tvar xlsx;\n\n\t\t\t\tif (data) {\n\t\t\t\t\txlsx = new Blob([data], {\n\t\t\t\t\t\ttype: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tdata: xlsx\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\t'promotionRequestExcel': {\n\t\t\turl: apiSettings.baseUri + 'v1/reports/promotionRequests/excel',\n\t\t\tmethod: 'GET',\n\t\t\theaders: {\n\t\t\t\t'Accept': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t\t\t\t'Content-type': 'application/json'\n\t\t\t},\n\t\t\tresponseType: 'arraybuffer',\n\t\t\ttransformResponse: function (data) {\n\t\t\t\tvar xlsx;\n\n\t\t\t\tif (data) {\n\t\t\t\t\txlsx = new Blob([data], {\n\t\t\t\t\t\ttype: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tdata: xlsx\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\t'customerExcel': {\n\t\t\turl: apiSettings.baseUri + 'v1/reports/customers/excel',\n\t\t\tmethod: 'GET',\n\t\t\theaders: {\n\t\t\t\t'Accept': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t\t\t\t'Content-type': 'application/json'\n\t\t\t},\n\t\t\tresponseType: 'arraybuffer',\n\t\t\ttransformResponse: function (data) {\n\t\t\t\tvar xlsx;\n\n\t\t\t\tif (data) {\n\t\t\t\t\txlsx = new Blob([data], {\n\t\t\t\t\t\ttype: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tdata: xlsx\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\t'colorRequestExcel': {\n\t\t\turl: apiSettings.baseUri + 'v1/reports/colorRequests/excel',\n\t\t\tmethod: 'GET',\n\t\t\theaders: {\n\t\t\t\t'Accept': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t\t\t\t'Content-type': 'application/json'\n\t\t\t},\n\t\t\tresponseType: 'arraybuffer',\n\t\t\ttransformResponse: function (data) {\n\t\t\t\tvar xlsx;\n\n\t\t\t\tif (data) {\n\t\t\t\t\txlsx = new Blob([data], {\n\t\t\t\t\t\ttype: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tdata: xlsx\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n}]);","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).factory('Status', ['$resource', '$stateParams', 'apiSettings', function ($resource, $stateParams, apiSettings) {\n\treturn $resource(apiSettings.baseUri + 'v1/status/:id', { id: '@id' }, {\n\t\t'list': {\n\t\t\tmethod: 'GET',\n\t\t\tisArray: false,\n\t\t\tparams: {\n\t\t\t\tpage: 1,\n\t\t\t\tpageSize: apiSettings.defaultPageSize,\n\t\t\t\tkeyword: ''\n\t\t\t}\n\t\t},\n\t\t'listIds': {\n\t\t\turl: apiSettings.baseUri + 'v1/status/list/ids/:moduleId',\n\t\t\tmethod: 'GET',\n\t\t\tisArray: true\n\t\t}\n\t});\n}]);","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .config(function ($stateProvider, $urlRouterProvider) {\n $stateProvider.state(\"main.user\", {\n url: \"user\",\n resolve: {\n list: [\n \"$stateParams\",\n \"User\",\n function ($stateParams, User) {\n return User.list().$promise;\n },\n ],\n },\n views: {\n main: {\n templateUrl: \"/modules/Commom/user/views/user.list.html\",\n controller: \"userListCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n\n $stateProvider.state(\"main.user-passwordchange\", {\n url: \"user/passwordchange\",\n resolve: {\n model: [\n \"User\",\n function (User) {\n return User.current().$promise;\n },\n ],\n },\n views: {\n main: {\n templateUrl: \"/modules/Commom/user/views/user.password.change.html\",\n controller: \"userPasswordChangeCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n\n $stateProvider.state(\"main.user-invite\", {\n url: \"user/invite\",\n views: {\n main: {\n templateUrl:\n \"/modules/Commom/user/views/user.invite.html\",\n controller: \"userInviteCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n\n $stateProvider.state(\"main.user-edit\", {\n url: \"user/:id\",\n resolve: {\n model: [\n \"$stateParams\",\n \"User\",\n function ($stateParams, User) {\n if ($stateParams.id) {\n return User.get({ id: $stateParams.id }).$promise;\n }\n\n return {};\n },\n ],\n language: [\n \"Enumerators\",\n function (Enumerators) {\n return Enumerators.query({ name: \"language\" }).$promise;\n },\n ],\n groups: [\n \"Internal\",\n function (Internal) {\n return Internal.groups().$promise;\n },\n ],\n states: [\n \"Internal\",\n function (Internal) {\n return Internal.states().$promise;\n },\n ],\n salesTeam: [\n \"$stateParams\",\n \"User\",\n function ($stateParams, User) {\n var params = {\n page: 1,\n pageSize: 1000,\n editingUserIdEditing: $stateParams.id,\n };\n\n return User.listSalesTeam(params).$promise;\n },\n ],\n subAreas: [\n \"$stateParams\",\n \"BonusRequest\",\n function ($stateParams, BonusRequest) {\n return BonusRequest.subAreas().$promise;\n },\n ],\n managersColor: [\n \"Internal\",\n function (Internal) {\n return Internal.ownUsersList({ isManager: true }).$promise;\n },\n ],\n customersOwn: [\n \"Customer\",\n function (Customer) {\n return Customer.customersOwnList().$promise;\n },\n ],\n approvers: [\n \"Internal\",\n function (Internal) {\n return Internal.approvers().$promise;\n },\n ],\n },\n views: {\n main: {\n templateUrl: \"/modules/Commom/user/views/user.edit.html\",\n controller: \"userEditCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n });\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .controller(\n \"userEditCtrl\",\n function (\n $scope,\n $rootScope,\n $window,\n $state,\n $http,\n $filter,\n permissionService,\n MessageService,\n model,\n language,\n groups,\n salesTeam,\n subAreas,\n User,\n Auth,\n states,\n managersColor,\n Customer,\n customersOwn,\n approvers\n ) {\n var vm = this;\n\n vm.subAreas = subAreas;\n vm.permissions = permissionService;\n\n vm.projectModule = config.projectModule;\n\n if (!vm.permissions.isAdminAccessAuthorized()) return;\n\n var $translate = $filter(\"translate\");\n\n vm.model = model;\n vm.enumLanguage = language;\n vm.customersOwn = customersOwn;\n vm.model.imageAvatar =\n vm.model.imageAvatar || $scope.globalConfig.defaultImage;\n\n vm.groupsActions = groups.filter(\n (x) => x.moduleId == window.enumerators.modules.Acoes\n );\n vm.groupsColors = groups.filter(\n (x) => x.moduleId == window.enumerators.modules.Cores\n );\n vm.groups = window.enumerators.enumGroupsColorsRequests;\n\n vm.groupsBonusesAndSponsorship = groups.filter((x) => x.moduleId == 3);\n\n vm.managersColor = managersColor;\n vm.approvers = approvers;\n vm.states = states;\n vm.tab = vm.projectModule == 'Colors' ? \"cores\" : \"acoes\";\n\n\n\n // Autocomplete de inserção de Lojas\n\n vm.model.customers = vm.model.customers || [];\n\n vm.getCustomers = function (val) {\n return Customer.customersAutocomplete({ keyword: val }).$promise;\n };\n\n vm.addCustomer = function (selectedCustomer) {\n if (!selectedCustomer) return;\n\n var customerAlreadyAdded = vm.model.customers && vm.model.customers.find((customer) => customer.customerId === selectedCustomer.id)\n if (vm.model.customers && vm.model.customers.indexOf(selectedCustomer) === -1 && !customerAlreadyAdded) {\n vm.model.customers.push({\n customerId: selectedCustomer.id,\n code: selectedCustomer.code,\n cnpjCpf: selectedCustomer.cnpjMasked,\n companyName: selectedCustomer.name,\n tradingName: selectedCustomer.manager,\n });\n }\n vm.selectedCustomer = '';\n };\n\n vm.removeCustomer = function (index) {\n vm.model.customers.splice(index, 1);\n };\n\n // Autocomplete de inserção de SubÁreas\n\n vm.model.bonusesAndSponsorshipsSubAreas = vm.model.bonusesAndSponsorshipsSubAreas || [];\n\n vm.addArea = function (selectedArea) {\n if (!selectedArea) return;\n\n var areaAlreadyAdded = vm.model.bonusesAndSponsorshipsSubAreas && vm.model.bonusesAndSponsorshipsSubAreas.includes(selectedArea.bonusesAndSponsorshipsRequestSubAreaId);\n\n if (!areaAlreadyAdded) {\n vm.model.bonusesAndSponsorshipsSubAreas.push(selectedArea.bonusesAndSponsorshipsRequestSubAreaId);\n }\n vm.selectedArea = null;\n };\n\n vm.removeArea = function (index) {\n vm.model.bonusesAndSponsorshipsSubAreas.splice(index, 1);\n };\n\n vm.getAreaName = function (areaId) {\n var area = vm.subAreas.find(function (option) {\n return option.bonusesAndSponsorshipsRequestSubAreaId === areaId;\n });\n return area ? area.name : 'Nome não encontrado';\n };\n\n\n // Se não tiver gerente sera como array vazio\n vm.model.managerColorIds = vm.model.managerColorIds;\n if (!vm.model.managerColorIds) {\n vm.model.managerColorIds = [];\n } else {\n // Se tiver manager/aprovador e for do designer seta no campo approverId\n if (vm.model.groups.indexOf(vm.groups.Designer) !== -1) {\n if (vm.model.managerColorIds.length > 0) {\n vm.model.approverId = vm.model.managerColorIds[0];\n }\n }\n }\n\n vm.salesTeam = salesTeam;\n vm.resetPasswordEmail = vm.model.email;\n\n angular.extend($scope.$parent.vm, {\n title: \"users.settings.title\",\n insertUrl: null,\n });\n\n $rootScope.laddaLoading = false;\n\n vm.reject = function () {\n User.delete(\n { id: vm.model.userId },\n function () {\n $state.go(\"main.user\");\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n };\n\n vm.save = function () {\n if (!vm.model.groups || !vm.model.groups.length) {\n MessageService.alertError(\"Selecione ao menos um grupo.\");\n return;\n }\n\n var isDesigner = vm.model.groups.indexOf(vm.groups.Designer) !== -1;\n var isGerenteRegional = vm.model.groups.indexOf(vm.groups.GerenteRegional) !== -1;\n\n\n if (vm.projectModule == \"Colors\") {\n var _isSaoPaulo = vm.verifySaoPaulo();\n\n if (\n isDesigner || isGerenteRegional\n ) {\n if (!vm.model.stateId || !vm.model.stateId.length) {\n MessageService.alertError(\n \"Selecione ao menos um estado para o usuário.\"\n );\n return;\n }\n\n if (_isSaoPaulo && (!(vm.model.isSPCapitol ?? false) && !(vm.model.isSPNotCapitol ?? false))) {\n MessageService.alertError(\n \"Ao Selecionar o Estado de São Paulo, você deve determinar se atende ao menos Capital ou Interior.\"\n );\n return;\n }\n } else {\n vm.model.stateId = [];\n vm.model.approverId = null;\n }\n }\n\n if (\n vm.model.groups.indexOf(vm.groups.VendedorBalcao) !== -1 &&\n vm.model.isSalesTeam\n ) {\n MessageService.alertError(\n \"Vendedor Balcão não pode fazer parte do time de vendas de Ações.\"\n );\n return;\n }\n\n if (\n vm.model.groups.indexOf(vm.groups.GerenteNacional) !== -1 &&\n vm.model.groups.length > 1\n ) {\n MessageService.alertError(\n \"Gerente Nacional não pode fazer parte de outros grupos.\"\n );\n return;\n }\n\n $rootScope.laddaLoading = true;\n\n if (vm.model.approverId) {\n vm.model.managerUserId = vm.model.approverId;\n } else if (vm.projectModule == \"Colors\" && vm.model.groups.indexOf(vm.groups.Designer) !== -1) {\n vm.model.managerUserId = null;\n }\n\n if (vm.model.imageAvatar)\n vm.model.imageAvatar = vm.model.imageAvatar.split(\"/\").pop();\n\n vm.model.managerColorIds = [];\n if (vm.managerOneId) {\n vm.model.managerColorIds.push(vm.managerOneId);\n }\n if (vm.managerTwoId) {\n vm.model.managerColorIds.push(vm.managerTwoId);\n }\n\n vm.model.projectModule = config.projectModule;\n\n if (!vm.model.userId) {\n User.insert(\n vm.model,\n function () {\n $state.go(\"main.user\");\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n } else {\n User.update(\n vm.model,\n function () {\n $state.go(\"main.user\");\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n }\n };\n\n vm.verifyDesigner = function () {\n if (vm.model.groups) {\n if (vm.model.groups.indexOf(vm.groups.Designer) !== -1) {\n return true;\n }\n }\n\n return false;\n };\n\n vm.verifyRegionalManager = function () {\n if (vm.model.groups) {\n if (vm.model.groups.indexOf(vm.groups.GerenteRegional) !== -1) {\n return true;\n }\n }\n return false;\n };\n\n vm.verifyStatesList = function () {\n if (vm.model.groups) {\n if (vm.model.groups.indexOf(vm.groups.GerenteRegional) !== -1 || vm.model.groups.indexOf(vm.groups.Designer) !== -1) {\n return true;\n }\n }\n\n return false;\n }\n\n vm.verifySaoPaulo = function () {\n if (vm.model.stateId && vm.model.stateId.length && vm.model.stateId.indexOf(25) !== -1) {\n\n vm.model.isSPCapitol = vm.model.isSPCapitol ?? true;\n vm.model.isSPNotCapitol = vm.model.isSPNotCapitol ?? true;\n\n return true;\n }\n\n vm.model.isSPCapitol = null;\n vm.model.isSPNotCapitol = null;\n\n return false;\n }\n\n vm.verifySalesman = function () {\n if (vm.projectModule == 'Colors' && vm.model.groups) {\n if (vm.model.groups.indexOf(vm.groups.VendedorBalcao) !== -1) {\n return true;\n }\n }\n return false;\n };\n\n vm.verifyIsColorCustomer = function () {\n if (vm.model.groups) {\n // Se grupo for vendedor e for da Rede SW mostra o gerente para selecionar\n if (\n vm.model.groups.indexOf(vm.groups.VendedorBalcao) !== -1) {\n return true;\n }\n }\n return false;\n };\n\n vm.resetPassword = function () {\n if (!vm.model.userId) return;\n\n MessageService.confirm(\n function () {\n $rootScope.laddaLoading = true;\n\n Auth.passwordResetRandom(\n {\n userId: vm.model.userId,\n email: vm.resetPasswordEmail,\n projectModule: config.projectModule,\n },\n function (response) {\n MessageService.alertInfo(\n \"Senha resetada com sucesso! O usuário receberá um email com a nova senha.\",\n \"Reset de senha\"\n );\n\n $rootScope.laddaLoading = false;\n },\n function (response) {\n MessageService.alertError(response.data);\n\n $rootScope.laddaLoading = false;\n }\n );\n },\n \"Confirmação\",\n \"Deseja realmente resetar a senha do usuário? Uma nova senha será enviada para o email:
    \" +\n vm.resetPasswordEmail\n );\n };\n\n vm.changeTab = function (status) {\n switch (status) {\n case \"acoes\":\n vm.tab = \"acoes\";\n break;\n case \"cores\":\n vm.tab = \"cores\";\n break;\n case \"bonificacoes\":\n vm.tab = \"bonificacoes\";\n break;\n default:\n break;\n }\n };\n\n vm.managerOne = function () {\n if (vm.managerOneId && vm.managerOneId == vm.managerTwoId) {\n MessageService.alertError(\"Gerente já incluído\");\n vm.managerTwoId = null;\n vm.fillManagersColors();\n }\n };\n\n vm.managerTwo = function () {\n if (vm.managerTwoId && vm.managerTwoId == vm.managerOneId) {\n MessageService.alertError(\"Gerente já incluído\");\n vm.managerTwoId = null;\n vm.fillManagersColors();\n }\n };\n\n vm.fillManagersColors = function () {\n // Só preenche info abaixo quando tiver aprovador, pois aprovador é só do designer\n if (\n vm.model.managerColorIds &&\n vm.model.managerColorIds.length >= 1 &&\n !vm.model.approverId\n ) {\n vm.managerOneId = vm.model.managerColorIds[0];\n\n if (vm.model.managerColorIds[1]) {\n vm.managerTwoId = vm.model.managerColorIds[1];\n }\n }\n };\n vm.fillManagersColors();\n }\n );\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .controller(\n \"userInviteCtrl\",\n function (\n $scope,\n $rootScope,\n $state,\n $filter,\n $localStorage,\n User,\n MessageService\n ) {\n var vm = this;\n\n var $translate = $filter(\"translate\");\n\n angular.extend($scope.$parent.vm, {\n title: \"users.settings.titleNewInvite\",\n insertUrl: null,\n });\n\n vm.enumerators = window.enumerators;\n\n vm.isChatOpened = false;\n vm.userId = $localStorage.userId;\n $scope.uploader = {};\n\n // INICIALIZAÇÕES\n $rootScope.laddaLoading = false;\n\n vm.newInvitation = function () {\n vm.model.email = \"\";\n $(\"#modalInvite\").modal(\"hide\");\n };\n\n vm.submit = function () {\n $rootScope.laddaLoading = true;\n User.invite(\n vm.model,\n function (response) {\n $(\"#modalInvite\").modal(\"show\");\n },\n function (response) {\n MessageService.alertError(response.data);\n }\n );\n $rootScope.laddaLoading = false;\n };\n }\n );\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .controller(\n \"userListCtrl\",\n function (\n $scope,\n $rootScope,\n $state,\n $http,\n $filter,\n permissionService,\n settings,\n apiSettings,\n list,\n MessageService,\n User\n ) {\n var vm = this;\n\n vm.permissions = permissionService;\n if (!vm.permissions.isAdminAccessAuthorized()) return;\n\n var $translate = $filter(\"translate\");\n\n angular.extend($scope.$parent.vm, {\n title: \"users.settings.title\",\n insertUrl: \"main.user-edit\",\n });\n\n vm.projectModule = config.projectModule;\n\n $rootScope.laddaLoading = false;\n\n // Pagination\n vm.pagination = {\n list: list,\n currentPage: 1,\n pageSize: apiSettings.defaultPageSize,\n pagesTotal: list.total,\n };\n\n vm.onlyApprovedUsers = true;\n\n $scope.$watch(\"vm.keyword\", function (newValue, oldValue) {\n if (newValue !== oldValue) {\n vm.refresh(vm.pagination.currentPage, newValue);\n }\n });\n\n $scope.$watch(\"vm.pagination.currentPage\", function (newValue, oldValue) {\n if (newValue !== oldValue) {\n vm.refresh(newValue, vm.keyword);\n }\n });\n\n vm.filterUsers = function () {\n User.list({\n page: vm.pagination.currentPage,\n keyword: vm.keyword,\n onlyApprovedUsers: vm.onlyApprovedUsers,\n }).$promise.then(function (data) {\n vm.pagination.list = data;\n vm.pagination.currentPage = data.page;\n vm.pagination.pagesTotal = data.total;\n });\n };\n\n vm.refresh = function (page, keyword) {\n User.list({ page: page, keyword: keyword }).$promise.then(function (\n data\n ) {\n vm.pagination.list = data;\n vm.pagination.currentPage = data.page;\n vm.pagination.pagesTotal = data.total;\n });\n };\n\n vm.delete = function (id, index) {\n MessageService.confirmDelete(function () {\n User.delete({ id: id }, function () {\n vm.pagination.list.rows.splice(index, 1);\n });\n });\n };\n }\n );\n","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).controller('userPasswordChangeCtrl', function ($scope, $rootScope, $window, $state, $http, $filter, MessageService, model, User, Auth) {\n\tvar vm = this;\n\n\tvar $translate = $filter('translate');\n\n\tvm.model = model;\n\n\tangular.extend($scope.$parent.vm, {\n\t\ttitle: 'users.settings.titleMyProfile',\n\t\tinsertUrl: null\n\t});\n\n\t$rootScope.laddaLoading = false;\n\n\tvm.changePassword = function () {\n\n\t\t$rootScope.laddaLoading = true;\n\n\t\tAuth.passwordChange({\n\t\t\tpassword: vm.model.newpassword,\n\t\t\tpasswordConfirmation: vm.model.passwordConfirmation\n\t\t}, function (response) {\n\t\t\tMessageService.alertInfo(\"Senha alterada com sucesso!\");\n\n\t\t\t$rootScope.laddaLoading = false;\n\n\t\t}, function (response) {\n\t\t\tMessageService.alertError(response.data);\n\n\t\t\t$rootScope.laddaLoading = false;\n\t\t});\n\n\t};\n});","\"use strict\";\n\nangular.module(ApplicationConfiguration.applicationModuleName).factory(\"User\", [\n \"$resource\",\n \"$stateParams\",\n \"apiSettings\",\n function ($resource, $stateParams, apiSettings) {\n return $resource(\n apiSettings.baseUri + \"v1/internal/users/:id\",\n { id: \"@id\" },\n {\n list: {\n method: \"GET\",\n isArray: false,\n params: {\n page: 1,\n pageSize: apiSettings.defaultPageSize,\n keyword: \"\",\n },\n },\n current: {\n url: apiSettings.baseUri + \"v1/internal/users/current\",\n method: \"GET\",\n isArray: false,\n },\n listIds: {\n url: apiSettings.baseUri + \"v1/internal/users/list/ids\",\n method: \"GET\",\n isArray: true,\n },\n listSalesTeam: {\n url: apiSettings.baseUri + \"v1/internal/users/list/salesteam\",\n method: \"GET\",\n isArray: true,\n params: {\n page: 1,\n pageSize: apiSettings.defaultPageSize,\n },\n },\n invite: {\n url: apiSettings.baseUri + \"v1/internal/users/invite\",\n method: \"POST\",\n },\n inviteSignup: {\n url: apiSettings.baseUri + \"v1/internal/users/invite-signup\",\n method: \"POST\",\n },\n inviteValidate: {\n url:\n apiSettings.baseUri +\n \"v1/internal/users/invite-validate/:authCodeGuid\",\n method: \"POST\",\n params: {\n authCodeGuid: \"@authCodeGuid\",\n },\n },\n insert: {\n method: \"POST\",\n },\n update: {\n method: \"PUT\",\n },\n delete: {\n method: \"DELETE\",\n },\n }\n );\n },\n]);\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .config(function ($stateProvider, $urlRouterProvider) {\n $stateProvider.state(\"main.goal\", {\n url: \"goal\",\n resolve: {\n list: [\n \"$stateParams\",\n \"Goal\",\n function ($stateParams, Goal) {\n return Goal.list().$promise;\n },\n ],\n },\n views: {\n main: {\n templateUrl: \"/modules/SWFlow/goal/views/goal.list.html\",\n controller: \"goalListCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n\n $stateProvider.state(\"main.goal-edit\", {\n url: \"goal/:id\",\n resolve: {\n model: [\n \"$stateParams\",\n \"Goal\",\n function ($stateParams, Goal) {\n if ($stateParams.id) {\n return Goal.get({ id: $stateParams.id }).$promise;\n }\n\n return {};\n },\n ],\n },\n views: {\n main: {\n templateUrl: \"/modules/SWFlow/goal/views/goal.edit.html\",\n controller: \"goalEditCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n });\n","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).controller('goalEditCtrl', function ($scope, $rootScope, $window, $state, $http, $filter, MessageService, model, Goal) {\n\tvar vm = this;\n\n\tvar $translate = $filter('translate');\n\n\tvm.model = model;\n\n\tangular.extend($scope.$parent.vm, {\n\t\ttitle: 'goals.settings.title',\n\t\tinsertUrl: null\n\t});\n\n\t$rootScope.laddaLoading = false;\n\n\tvm.save = function () {\n\t\t$rootScope.laddaLoading = true;\n\n\n\t\tif (!vm.model.goalId) {\n\t\t\tGoal.insert(vm.model, function () {\n\t\t\t\t$state.go('main.goal');\n\t\t\t}, function (response) {\n\t\t\t\tMessageService.alertError(response.data);\n\t\t\t});\n\t\t} else {\n\t\t\tGoal.update(vm.model, function () {\n\t\t\t\t$state.go('main.goal');\n\t\t\t}, function (response) {\n\t\t\t\tMessageService.alertError(response.data);\n\t\t\t});\n\t\t}\n\t}\n});","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).controller('goalListCtrl', function ($scope, $rootScope, $state, $http, $filter, settings, apiSettings, list, MessageService, Goal) {\n\tvar vm = this;\n\n\tvar $translate = $filter('translate');\n\n\tangular.extend($scope.$parent.vm, {\n\t\ttitle: 'goals.settings.title',\n\t\tinsertUrl: 'main.goal-edit'\n\t});\n\n\t$rootScope.laddaLoading = false;\n\n\t// Pagination\n\tvm.pagination = {\n\t\tlist: list,\n\t\tcurrentPage: 1,\n\t\tpageSize: apiSettings.defaultPageSize,\n\t\tpagesTotal: list.total\n\t};\n\n\t$scope.$watch('vm.keyword', function (newValue, oldValue) {\n\t\tif (newValue !== oldValue) {\n\t\t\tvm.refresh(vm.pagination.currentPage, newValue);\n\t\t}\n\t});\n\n\t$scope.$watch('vm.pagination.currentPage', function (newValue, oldValue) {\n\t\tif (newValue !== oldValue) {\n\t\t\tvm.refresh(newValue, vm.keyword);\n\t\t}\n\t});\n\n\tvm.refresh = function (page, keyword) {\n\t\tGoal.list({ page: page, keyword: keyword }).$promise.then(function (data) {\n\t\t\tvm.pagination.list = data;\n\t\t\tvm.pagination.currentPage = data.page;\n\t\t\tvm.pagination.pagesTotal = data.total;\n\t\t});\n\t}\n\n\tvm.delete = function (id, index) {\n\t\tMessageService.confirmDelete(function () {\n\t\t\tGoal.delete({ id: id }, function () {\n\t\t\t\tvm.pagination.list.rows.splice(index, 1);\n\t\t\t});\n\t\t});\n\t}\n});","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).factory('Goal', ['$resource', '$stateParams', 'apiSettings', function ($resource, $stateParams, apiSettings) {\n\treturn $resource(apiSettings.baseUri + 'v1/goals/:id', { id: '@id' }, {\n\t\t'list': {\n\t\t\tmethod: 'GET',\n\t\t\tisArray: false,\n\t\t\tparams: {\n\t\t\t\tpage: 1,\n\t\t\t\tpageSize: apiSettings.defaultPageSize,\n\t\t\t\tkeyword: ''\n\t\t\t}\n\t\t},\n\t\t'listIds': {\n\t\t\turl: apiSettings.baseUri + 'v1/goals/list/ids',\n\t\t\tmethod: 'GET',\n\t\t\tisArray: true\n\t\t},\n\t\t'insert': {\n\t\t\tmethod: 'POST'\n\t\t},\n\t\t'update': {\n\t\t\tmethod: 'PUT'\n\t\t},\n\t\t'delete': {\n\t\t\tmethod: 'DELETE'\n\t\t}\n\t});\n}]);","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .factory(\"Internal\", [\n \"$resource\",\n \"$stateParams\",\n \"apiSettings\",\n function ($resource, $stateParams, apiSettings) {\n return $resource(\n null,\n { stateId: \"@stateId\" },\n {\n groups: {\n url: apiSettings.baseUri + \"v1/internal/groups/list/ids\",\n method: \"GET\",\n isArray: true,\n },\n parameters: {\n url: apiSettings.baseUri + \"v1/internal/parameter\",\n method: \"GET\",\n isArray: false,\n params: {\n entry: \"\",\n },\n },\n states: {\n url: apiSettings.baseUri + \"v1/internal/states\",\n method: \"GET\",\n isArray: true,\n },\n cities: {\n url: apiSettings.baseUri + \"v1/internal/states/:stateId/cities\",\n method: \"GET\",\n isArray: true,\n },\n segmentsList: {\n url: apiSettings.baseUri + \"v1/internal/segments\",\n method: \"GET\",\n isArray: true,\n },\n designersList: {\n url: apiSettings.baseUri + \"v1/internal/designers\",\n method: \"GET\",\n isArray: true,\n },\n colorsList: {\n url: apiSettings.baseUri + \"v1/internal/colors/list\",\n method: \"GET\",\n isArray: true,\n params: {\n pageSize: apiSettings.defaultPageSize,\n keyword: \"\",\n },\n },\n ownUsersList: {\n url: apiSettings.baseUri + \"v1/internal/own/users/list\",\n method: \"GET\",\n isArray: true,\n params: {\n pageSize: apiSettings.defaultPageSize,\n keyword: \"\",\n },\n },\n reproveReasonsList: {\n url: apiSettings.baseUri + \"v1/internal/reprove-reasons\",\n method: \"GET\",\n isArray: true,\n },\n colorsProductsList: {\n url: apiSettings.baseUri + \"v1/internal/colors-products/list\",\n method: \"GET\",\n isArray: true,\n params: {\n pageSize: apiSettings.defaultPageSize,\n keyword: \"\",\n },\n },\n othersProductsList: {\n url: apiSettings.baseUri + \"v1/internal/others-products/list\",\n method: \"GET\",\n isArray: true,\n params: {\n pageSize: apiSettings.defaultPageSize,\n keyword: \"\",\n },\n },\n approvers: {\n url: apiSettings.baseUri + \"v1/internal/approvers\",\n method: \"GET\",\n isArray: true,\n },\n }\n );\n },\n ]);\n","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .config(function ($stateProvider, $urlRouterProvider) {\n $stateProvider.state(\"main.productsegment\", {\n url: \"productsegment\",\n resolve: {\n list: [\n \"$stateParams\",\n \"ProductSegment\",\n function ($stateParams, ProductSegment) {\n return ProductSegment.list().$promise;\n },\n ],\n },\n views: {\n main: {\n templateUrl:\n \"/modules/SWFlow/productsegment/views/productsegment.list.html\",\n controller: \"productsegmentListCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n\n $stateProvider.state(\"main.productsegment-edit\", {\n url: \"productsegment/:id\",\n resolve: {\n model: [\n \"$stateParams\",\n \"ProductSegment\",\n function ($stateParams, ProductSegment) {\n if ($stateParams.id) {\n return ProductSegment.get({ id: $stateParams.id }).$promise;\n }\n\n return {};\n },\n ],\n },\n views: {\n main: {\n templateUrl:\n \"/modules/SWFlow/productsegment/views/productsegment.edit.html\",\n controller: \"productsegmentEditCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n });\n","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).controller('productsegmentEditCtrl', function ($scope, $rootScope, $window, $state, $http, $filter, MessageService, model, ProductSegment) {\n\tvar vm = this;\n\n\tvar $translate = $filter('translate');\n\n\tvm.model = model;\n\n\tangular.extend($scope.$parent.vm, {\n\t\ttitle: 'productSegments.settings.title',\n\t\tinsertUrl: null\n\t});\n\n\t$rootScope.laddaLoading = false;\n\n\tvm.save = function () {\n\t\t$rootScope.laddaLoading = true;\n\n\n\t\tif (!vm.model.productSegmentId) {\n\t\t\tProductSegment.insert(vm.model, function () {\n\t\t\t\t$state.go('main.productsegment');\n\t\t\t}, function (response) {\n\t\t\t\tMessageService.alertError(response.data);\n\t\t\t});\n\t\t} else {\n\t\t\tProductSegment.update(vm.model, function () {\n\t\t\t\t$state.go('main.productsegment');\n\t\t\t}, function (response) {\n\t\t\t\tMessageService.alertError(response.data);\n\t\t\t});\n\t\t}\n\t}\n});","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).controller('productsegmentListCtrl', function ($scope, $rootScope, $state, $http, $filter, settings, apiSettings, list, MessageService, ProductSegment) {\n\tvar vm = this;\n\n\tvar $translate = $filter('translate');\n\n\tangular.extend($scope.$parent.vm, {\n\t\ttitle: 'productSegments.settings.title',\n\t\tinsertUrl: 'main.productsegment-edit'\n\t});\n\n\t$rootScope.laddaLoading = false;\n\n\t// Pagination\n\tvm.pagination = {\n\t\tlist: list,\n\t\tcurrentPage: 1,\n\t\tpageSize: apiSettings.defaultPageSize,\n\t\tpagesTotal: list.total\n\t};\n\n\t$scope.$watch('vm.keyword', function (newValue, oldValue) {\n\t\tif (newValue !== oldValue) {\n\t\t\tvm.refresh(vm.pagination.currentPage, newValue);\n\t\t}\n\t});\n\n\t$scope.$watch('vm.pagination.currentPage', function (newValue, oldValue) {\n\t\tif (newValue !== oldValue) {\n\t\t\tvm.refresh(newValue, vm.keyword);\n\t\t}\n\t});\n\n\tvm.refresh = function (page, keyword) {\n\t\tProductSegment.list({ page: page, keyword: keyword }).$promise.then(function (data) {\n\t\t\tvm.pagination.list = data;\n\t\t\tvm.pagination.currentPage = data.page;\n\t\t\tvm.pagination.pagesTotal = data.total;\n\t\t});\n\t}\n\n\tvm.delete = function (id, index) {\n\t\tMessageService.confirmDelete(function () {\n\t\t\tProductSegment.delete({ id: id }, function () {\n\t\t\t\tvm.pagination.list.rows.splice(index, 1);\n\t\t\t});\n\t\t});\n\t}\n});","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).factory('ProductSegment', ['$resource', '$stateParams', 'apiSettings', function ($resource, $stateParams, apiSettings) {\n\treturn $resource(apiSettings.baseUri + 'v1/productsegments/:id', { id: '@id' }, {\n\t\t'list': {\n\t\t\tmethod: 'GET',\n\t\t\tisArray: false,\n\t\t\tparams: {\n\t\t\t\tpage: 1,\n\t\t\t\tpageSize: apiSettings.defaultPageSize,\n\t\t\t\tkeyword: ''\n\t\t\t}\n\t\t},\n\t\t'listIds': {\n\t\t\turl: apiSettings.baseUri + 'v1/productsegments/list/ids',\n\t\t\tmethod: 'GET',\n\t\t\tisArray: true\n\t\t},\n\t\t'insert': {\n\t\t\tmethod: 'POST'\n\t\t},\n\t\t'update': {\n\t\t\tmethod: 'PUT'\n\t\t},\n\t\t'delete': {\n\t\t\tmethod: 'DELETE'\n\t\t}\n\t});\n}]);","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .config(function ($stateProvider, $urlRouterProvider) {\n $stateProvider.state(\"main.promotionrequest\", {\n url: \"promotionrequest\",\n resolve: {\n list: [\n \"$stateParams\",\n \"PromotionRequest\",\n function ($stateParams, PromotionRequest) {\n return PromotionRequest.list().$promise;\n },\n ],\n status: [\n \"Status\",\n function (Status) {\n return Status.listIds({ moduleId: window.enumerators.modules.Acoes })\n .$promise;\n },\n ],\n workflowPendingDaysLate: [\n \"$stateParams\",\n \"Internal\",\n function ($stateParams, Internal) {\n return Internal.parameters({ entry: \"WorkflowPendingDaysLate\" })\n .$promise;\n },\n ],\n },\n views: {\n main: {\n templateUrl:\n \"/modules/SWFlow/promotionrequest/views/promotionrequest.list.html\",\n controller: \"promotionrequestListCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n\n $stateProvider.state(\"main.promotionrequest-edit\", {\n url: \"promotionrequest/:id\",\n resolve: {\n model: [\n \"$stateParams\",\n \"PromotionRequest\",\n function ($stateParams, PromotionRequest) {\n if ($stateParams.id) {\n return PromotionRequest.get({ id: $stateParams.id }).$promise;\n }\n\n return {};\n },\n ],\n promotionRequestTypes: [\n \"PromotionRequestType\",\n \"$stateParams\",\n function (PromotionRequestType, $stateParams) {\n if ($stateParams.id) {\n return PromotionRequestType.listByPromotionRequest({\n id: $stateParams.id,\n }).$promise;\n }\n\n return PromotionRequestType.list({}).$promise;\n },\n ],\n productSegments: [\n \"ProductSegment\",\n function (ProductSegment) {\n return ProductSegment.listIds().$promise;\n },\n ],\n goals: [\n \"Goal\",\n function (Goal) {\n return Goal.listIds().$promise;\n },\n ],\n targetAudiences: [\n \"TargetAudience\",\n function (TargetAudience) {\n //return TargetAudience.listIds().$promise;\n return TargetAudience.list({ page: 1, pageSize: 1000 }).$promise;\n },\n ],\n states: [\n \"Internal\",\n function (Internal) {\n return Internal.states().$promise;\n },\n ],\n workflowApprovals: [\n \"$stateParams\",\n \"WorkflowApproval\",\n function ($stateParams, WorkflowApproval) {\n var id = $stateParams.id ? $stateParams.id : 0;\n return WorkflowApproval.list({\n page: 1,\n pageSize: 1000,\n promotionRequestId: id,\n }).$promise;\n },\n ],\n revenues: [\n \"$stateParams\",\n \"PromotionRequestRevenue\",\n function ($stateParams, PromotionRequestRevenue) {\n var id = $stateParams.id ? $stateParams.id : 0;\n return PromotionRequestRevenue.list({ promotionRequestId: id })\n .$promise;\n },\n ],\n attachmentTypes: [\n \"$stateParams\",\n \"Attachment\",\n function ($stateParams, Attachment) {\n var id = $stateParams.id ? $stateParams.id : 0;\n return Attachment.list({\n promotionRequestId: id,\n moduleId: window.enumerators.modules.Acoes,\n }).$promise;\n },\n ],\n allowedFileExtensions: [\n \"$stateParams\",\n \"Internal\",\n function ($stateParams, Internal) {\n return Internal.parameters({ entry: \"AllowedFileExtensions\" })\n .$promise;\n },\n ],\n maxAllowedFileSize: [\n \"$stateParams\",\n \"Internal\",\n function ($stateParams, Internal) {\n return Internal.parameters({ entry: \"MaxAllowedFileSize\" })\n .$promise;\n },\n ],\n },\n views: {\n main: {\n templateUrl:\n \"/modules/SWFlow/promotionrequest/views/promotionrequest.edit.html\",\n controller: \"promotionrequestEditCtrl\",\n controllerAs: \"vm\",\n },\n },\n });\n });\n","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).controller('promotionrequestEditCtrl', function ($scope, $rootScope, $window, $state, $http, $filter, $localStorage, $ngConfirm, apiSettings, MessageService, tools, model, productSegments, workflowApprovals, goals, targetAudiences, states, revenues, attachmentTypes, promotionRequestTypes, allowedFileExtensions, maxAllowedFileSize, PromotionRequest, WorkflowApproval, Goal, Customer, PromotionRequestRevenue, PromotionRequestType, Internal) {\n\tvar vm = this;\n\n\tvar $translate = $filter('translate');\n\n\tangular.extend($scope.$parent.vm, {\n\t\ttitle: 'promotionRequests.settings.titleNew',\n\t\tinsertUrl: null\n\t});\n\n\t// INICIALIZAÇÕES\n\t$rootScope.laddaLoading = false;\n\tvm.model = model;\n\tvm.attachment = {}; // Inicializa a model que armazena as informações de um novo anexo\n\tvm.attachmentEditing = {}; // Inicializa a model que armazena as informações do anexo que está sendo editado\n\tvm.attachmentTypesActiveIndex = 0; // Inicializa o index da tab de anexos\n\tvm.isAttaching = false;\n\tvm.dateNow = new Date().toISOString().substr(0, 10);\n\n\tif (vm.model.isSelloutAction === undefined)\n\t\tvm.model.isSelloutAction = false; // Pré seleciona a opção Não\n\n\tif (vm.model.isProformaApproved === undefined && (vm.model.promotionRequestId === undefined || vm.model.promotionRequestId == 0)) // Para novas solicitações, seleciona como \"Não\" como padrão\n\t\tvm.model.isProformaApproved = false; // Pré seleciona a opção Não \n\n\t// CONFIGURAÇÃO DO UPLOAD\n\tvm.tempFolder = tools.getRandomString(8);\n\tvm.uploadConfig = {\n\t\tsingleFile: true,\n\t\ttestChunks: false,\n\t\ttarget: apiSettings.baseUri + 'v1/internal/upload' + '?tempFolder=' + vm.tempFolder,\n\t\theaders: {\n\t\t\t'Authorization': 'Bearer ' + $localStorage.authorizationData.token\n\t\t}\n\t};\n\tvm.allowedFileExtensions = allowedFileExtensions.value.toLowerCase().split(\"|\");\n\tvm.maxAllowedFileSize = parseInt(maxAllowedFileSize.value);\n\n\t// CONFIGURAÇÃO DO GRÁFICO\n\tvm.chartConfig = {\n\t\tcutoutPercentage: 50,\n\t\tresponsive: true,\n\t\ttooltips: {\n\t\t\tenabled: false\n\t\t}\n\t};\n\n\tvm.chartColors = {\n\t\tbackgroundColor: ['#0067B2', '#DDDDDD'],\n\t\thoverBackgroundColor: ['#0067B2', '#DDDDDD'],\n\t\thoverBorderColor: ['#FFFFFF', '#FFFFFF']\n\t};\n\n\t// LISTAS COMPLEMENTARES\n\tvm.productSegments = productSegments;\n\tvm.goals = goals;\n\tvm.targetAudiences = targetAudiences;\n\tvm.states = states;\n\tvm.cities = [];\n\tvm.workflowApprovals = workflowApprovals;\n\tvm.revenues = revenues;\n\tvm.attachmentTypes = attachmentTypes;\n\tvm.promotionRequestTypes = promotionRequestTypes || [];\n\tvm.selectedPromotionType = undefined;\n\n\tif (vm.model.promotionRequestTypeId) {\n\t\tfor (var index = 0; index < vm.promotionRequestTypes.length; index++) {\n\t\t\tvar element = vm.promotionRequestTypes[index];\n\t\t\tif (element.promotionRequestTypeId === vm.model.promotionRequestTypeId) {\n\t\t\t\tvm.selectedPromotionType = element;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// COMPUTEDS\n\tvm.isNewPromotionRequest = function () {\n\t\treturn (vm.model.promotionRequestId === undefined || vm.model.promotionRequestId == 0);\n\t};\n\n\tvm.filterRevenueYTD = function () {\n\t\treturn function (item) {\n\t\t\treturn item.enumRevenueType == window.enumerators.revenueType.YTD;\n\t\t};\n\t};\n\n\tvm.filterRevenueFullYear = function () {\n\t\treturn function (item) {\n\t\t\treturn item.enumRevenueType == window.enumerators.revenueType.FullYear;\n\t\t};\n\t};\n\n\tvm.calcMarginAmount = function () {\n\t\treturn vm.model.additionalRevenue * vm.model.margin / 100;\n\t};\n\n\tvm.calcRoi = function () {\n\t\treturn vm.calcPercentage(vm.calcMarginAmount(), vm.model.investmentAmount);\n\t};\n\n\tvm.calcRevenuePercentYTD = function () {\n\t\treturn vm.calcRevenuePercent(window.enumerators.revenueType.YTD);\n\t};\n\n\tvm.calcRevenuePercentFullYear = function () {\n\t\treturn vm.calcRevenuePercent(window.enumerators.revenueType.FullYear);\n\t};\n\n\tvm.calcRevenuePercent = function (type) {\n\t\tvar revenuesFiltered = vm.revenues.filter(function (item) {\n\t\t\treturn (item.enumRevenueType == type);\n\t\t});\n\n\t\tvar results = [];\n\t\tangular.forEach(revenuesFiltered, function (revenue, index) {\n\t\t\tif (vm.isProductSegmentChecked(revenue.productSegmentId))\n\t\t\t\tresults.push(vm.calcPercentage(revenue.amount2, revenue.amount1));\n\t\t});\n\n\t\treturn vm.calcAverage(results);\n\t};\n\n\tvm.calcAverage = function (values) {\n\t\tvar sum = 0;\n\t\tfor (var i = 0; i < values.length; i++) {\n\t\t\tsum += values[i];\n\t\t}\n\t\treturn sum / values.length;\n\t};\n\n\tvm.calcPercentage = function (numerator, denominator) {\n\t\treturn ((numerator / denominator) - 1) * 100;\n\t};\n\n\tvm.isAeroSelected = function () {\n\t\treturn vm.isProductSegmentChecked(window.enumerators.productSegment.AERO);\n\t};\n\n\tvm.isArchSelected = function () {\n\t\treturn vm.isProductSegmentChecked(window.enumerators.productSegment.ARCH);\n\t};\n\n\tvm.isProductSegmentChecked = function (productSegmentId) {\n\t\tif (productSegmentId && productSegmentId > 0) {\n\t\t\treturn vm.model.productSegments ? vm.model.productSegments.indexOf(productSegmentId) > -1 : false; // Verifica se o segmento de produto passado no parâmetro está selecionado na solicitação\n\t\t}\n\t\treturn true;\n\t};\n\n\tvm.getTitleRevenue = function (productSegmentId) {\n\t\tvar title = \"Faturamento\";\n\n\t\tif (productSegmentId == window.enumerators.productSegment.AERO) {\n\t\t\ttitle = \"Tubos\"\n\t\t}\n\t\telse if (productSegmentId == window.enumerators.productSegment.ARCH) {\n\t\t\ttitle = \"Galonagem\"\n\t\t}\n\n\t\treturn title;\n\t}\n\n\tvm.getLabelRevenue = function (type, productSegmentId, column) {\n\t\tvar label;\n\n\t\tif (type == window.enumerators.revenueType.YTD) {\n\n\t\t\tswitch (productSegmentId) {\n\t\t\t\tcase window.enumerators.productSegment.AERO:\n\t\t\t\t\tlabel = \"TUBOS\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase window.enumerators.productSegment.ARCH:\n\t\t\t\t\tlabel = \"GAL\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlabel = \"NET\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tlabel += (column == 1 ? \" BUDGET\" : \" ACTUAL\");\n\t\t}\n\t\telse if (type == window.enumerators.revenueType.FullYear) {\n\t\t\tif (column == 1) {\n\t\t\t\tlabel = \"Ano anterior\";\n\t\t\t}\n\t\t\telse if (column == 2) {\n\t\t\t\tlabel = \"Ano atual (estimativa BGT)\"\n\t\t\t}\n\t\t}\n\n\t\treturn label;\n\t}\n\n\tvm.revenueChartDataYTD = [100, 0];\n\tvm.getRevenueChartDataYTD = function () {\n\t\treturn vm.getRevenueChartData(window.enumerators.revenueType.YTD);\n\t};\n\n\tvm.revenueChartDataFullYear = [100, 0];\n\tvm.getRevenueChartDataFullYear = function () {\n\t\treturn vm.getRevenueChartData(window.enumerators.revenueType.FullYear);\n\t};\n\n\tvm.getRevenueChartData = function (type) {\n\t\tvar percent = (type == window.enumerators.revenueType.YTD ? vm.calcRevenuePercentYTD() : vm.calcRevenuePercentFullYear());\n\t\tvar data = (type == window.enumerators.revenueType.YTD ? vm.revenueChartDataYTD : vm.revenueChartDataFullYear);\n\n\t\tpercent = (percent < 0 ? 0 : (percent > 100 ? 100 : percent)); //Limita o valor do gráfico a ficar entre 0 e 100%\t\t\n\t\tdata[0] = percent;\n\t\tdata[1] = 100 - percent;\n\t\treturn data;\n\t};\n\n\t// No caso de ser uma solicitação nova, as informações de faturamento são pré preenchidas com as informações da última solicitação do mesmo cliente\n\tvm.refreshRevenueInfoByCustomer = function (customerId) {\n\t\tPromotionRequestRevenue.listbycustomer({ customerId: customerId }).$promise.then(function (data) {\n\t\t\tvm.revenues = data;\n\t\t});\n\t};\n\n\tvm.refreshPromotionRequestsTypes = function () {\n\t\tPromotionRequestType.list({ isSellOut: vm.model.isSelloutAction }).$promise.then(function (result) {\n\t\t\tvm.promotionRequestTypes = result;\n\t\t\tvm.selectedPromotionType = undefined;\n\t\t}, function (response) {\n\t\t\tMessageService.alertError(response.data || response);\n\t\t});\n\t};\n\n\tvm.refreshCities = function () {\n\t\t// Limpa a lista de cidades, se não houver nenhum estado selecionado\n\t\tif (vm.model.stateId === undefined) {\n\t\t\tvm.cities = [];\n\t\t\treturn;\n\t\t}\n\n\t\t// Carrega a lista de cidades do estado selecionado\n\t\tInternal.cities({ stateId: vm.model.stateId }).$promise.then(function (result) {\n\t\t\tvm.cities = result;\n\t\t}, function (response) {\n\t\t\tMessageService.alertError(response.data || response);\n\t\t});\n\t};\n\n\t// 2019-05-27: A funcionalidade de recuperar o Revenue de solicitações anteriores foi comentada por solicitação da equipe da Sherwin-Williams\n\t//$scope.$watch('vm.model.customer.id', function (newId, oldId) {\n\t//\tif (vm.isNewPromotionRequest() == true) {\n\t//\t\tif(newId && newId !== oldId) {\n\t//\t\t\tvm.refreshRevenueInfoByCustomer(newId);\n\t//\t\t}\n\t//\t}\n\t//});\n\n\t$scope.$watch('vm.model.isSelloutAction', function (newValue, oldValue) {\n\t\tif (newValue !== oldValue) {\n\t\t\tvm.refreshPromotionRequestsTypes();\n\t\t}\n\t});\n\n\t$scope.$watch('vm.model.stateId', function (newValue, oldValue) {\n\t\tif (newValue !== oldValue) {\n\t\t\tvm.refreshCities();\n\t\t\tvm.model.stateId == undefined;\n\t\t}\n\t});\n\n\tvm.changePromotionRequestType = function () {\n\t\tvm.model.promotionRequestTypeId = vm.selectedPromotionType !== undefined ? vm.selectedPromotionType.promotionRequestTypeId : 0;\n\t};\n\n\t// AUTOCOMPLETE DE CLIENTES\n\tvm.getCustomers = function (val) {\n\t\treturn Customer.listMinified({ pageSize: 50, keyword: val, customersTypeId: window.enumerators.customersTypes.Revenda }).$promise;\n\t};\n\n\t// UPLOAD DOS ANEXOS\n\tvm.initNewAttachment = function () {\n\t\tvm.attachment = {\n\t\t\tattachmentId: 0,\n\t\t\tattachmentTypeId: vm.getAttachmentTypeActive().attachmentTypeId,\n\t\t\tisDeleted: false,\n\t\t\tisEditing: false,\n\t\t\trequiredDbUpdate: true\n\t\t};\n\t};\n\n\tvm.showAttachmentForm = function (visible) {\n\t\tvm.isAttaching = visible;\n\t\tvm.initNewAttachment();\n\n\t\t// Reseta o formulário caso esteja fechando a modal de inclusão do anexo\n\t\tif (visible == false)\n\t\t\tvm.resetAttachmentForm();\n\t};\n\n\tvm.resetAttachmentForm = function () {\n\t\tvar form = $scope.promotionrequestAttachmentForm;\n\t\tform.$setPristine();\n\t\tform.$setUntouched();\n\t};\n\n\tvm.getallowedFileExtensions = function () {\n\t\treturn \".\" + vm.allowedFileExtensions.join(', .');\n\t};\n\n\tvm.getFileExtension = function (filename) {\n\t\treturn tools.getFileExtension(filename);\n\t};\n\n\tvm.getAttachmentTypeActive = function () {\n\t\treturn vm.attachmentTypes[vm.attachmentTypesActiveIndex];\n\t};\n\n\tvm.getAttachmentsByEnumType = function (type) {\n\t\tvar type = vm.attachmentTypes.filter(function (item) {\n\t\t\treturn (item.enumType == type);\n\t\t});\n\n\t\tif (!type || !type.length) return null;\n\n\t\treturn type[0].attachments.filter(function (item) {\n\t\t\treturn (item.isDeleted == false);\n\t\t});\n\t};\n\n\tvm.isAttachmentTypeInvoice = function () {\n\t\treturn vm.getAttachmentTypeActive().enumType == window.enumerators.attachmentType.Invoice;\n\t};\n\n\tvm.editAttachment = function (item) {\n\t\tvm.showAttachmentForm(true);\n\n\t\tvm.attachmentEditing = item; //Guarda a referência do item que está sendo editado numa variável global, para que a mesma seja atualizada no caso do usuário clicar no botão salvar\t\t\n\t\tangular.copy(vm.attachmentEditing, vm.attachment); //Atualiza a model de anexo com um cópia do objeto que está sendo editado\n\t\tvm.attachment.isEditing = true;\n\t};\n\n\tvm.deleteAttachment = function (item) {\n\t\titem.isDeleted = true;\n\t\titem.requiredDbUpdate = true;\n\t};\n\n\tvm.uploadSubmit = function ($files, $event, $flow) {\n\t\tif ($files[0] === undefined)\n\t\t\treturn;\n\n\t\t// Valida se a extensão do arquivo é permitida\n\t\tif (tools.validateFileExtension($files[0].name, vm.allowedFileExtensions) == false)\n\t\t\treturn;\n\n\t\t// Valida o tamanho do arquivo\n\t\tif (tools.validateFileMaxSize($files[0].size, vm.maxAllowedFileSize) == false)\n\t\t\treturn;\n\n\t\t$flow.upload();\n\t};\n\n\tvm.uploadSuccess = function ($file, $message, $flow) {\n\t\tvar uploadResult = JSON.parse($message);\n\t\tvm.attachment.name = uploadResult.originalFilename;\n\t\tvm.attachment.fileDocument = uploadResult.filename;\n\t\tvm.attachment.url = tools.getFileTempPath(vm.tempFolder, uploadResult.filename);\n\n\t\t// Reseta o flow\n\t\t$flow.cancel();\n\t};\n\n\tvm.uploadError = function ($file, $message, $flow) {\n\t\tMessageService.alertError($message);\n\t};\n\n\tvm.saveAttachment = function () {\n\t\t$rootScope.laddaLoading = true;\n\n\t\tvm.attachment.requiredDbUpdate = true;\n\n\t\t// Verifica se é uma inclusão ou edição do objeto\n\t\tif (vm.attachment.isEditing == true) {\n\t\t\tangular.copy(vm.attachment, vm.attachmentEditing); // Repassa as atualizações feitas na model do anexo, para o objeto de referência (anexo que está sendo editado)\n\t\t}\n\t\telse {\n\t\t\tvm.getAttachmentTypeActive().attachments.push(vm.attachment); // Inclui o novo objeto no array\n\t\t}\n\n\t\tvm.showAttachmentForm(false);\n\n\t\t$rootScope.laddaLoading = false;\n\t};\n\n\tvm.isTargetAudienceOtherSelected = function () {\n\t\tif (vm.model.targetAudienceId && vm.targetAudiences) {\n\t\t\tvar targetAudience = vm.targetAudiences.rows.filter(function (item) {\n\t\t\t\treturn (item.targetAudienceId == vm.model.targetAudienceId);\n\t\t\t});\n\n\t\t\treturn (targetAudience && targetAudience[0].isOther == true);\n\t\t}\n\n\t\treturn false;\n\t};\n\n\t// SALVAR\n\tvm.getLabelSaveButton = function () {\n\t\treturn vm.isStatusDraft() == true ? \"Enviar\" : \"Salvar\";\n\t};\n\n\tvm.getLabelApprovalButton = function () {\n\t\treturn vm.isInvoiceRequired() == true ? \"Prosseguir\" : \"Aprovar\";\n\t};\n\n\tvm.isStatusDraft = function () {\n\t\treturn (vm.model.status === undefined || vm.model.status.isDraft == true);\n\t}\n\n\tvm.isStatusCompleted = function () {\n\t\treturn (vm.model.status || vm.model.status.isCompleted == true);\n\t}\n\n\tvm.isInvoiceRequired = function () {\n\t\treturn (vm.model.status && vm.model.status.isInvoiceRequired == true);\n\t}\n\n\tvm.isStatusCheckpoint = function () {\n\t\treturn (vm.model.status && vm.model.status.isCheckpoint == true);\n\t}\n\n\tvm.isStatusMarginRequired = function () {\n\t\treturn (vm.model.status && vm.model.status.isMarginRequired == true);\n\t}\n\n\tvm.editingEnabled = function () {\n\t\t// Habilita os campos do formulário para edição caso seja uma nova solicitação, ou estiver pendente de aprovação do usuário logado e estiver no status Em revisão\n\t\treturn (vm.isNewPromotionRequest() == true || (vm.model.isRequiredToApproval == true && vm.isStatusDraft() == true));\n\t};\n\n\tvm.editingAttachmentsEnabled = function (type) {\n\n\t\tif (type.enumType == window.enumerators.attachmentType.PromotionProof) {\n\t\t\t// No caso dos anexos do Comprovação da Ação, habilita a edição dos anexos caso seja uma nova solicitação, ou usuário logado tenha permissão para editar esse tipo de anexo, e caso esteja pendente de aprovação do usuário logado.\n\t\t\treturn (vm.isNewPromotionRequest() == true || (type.permissionToEdit == true && vm.model.isRequiredToApproval == true));\n\t\t}\n\t\telse if (type.enumType == window.enumerators.attachmentType.Financial) {\n\t\t\t// No caso dos anexos do Financeiro, habilita a edição o usuário logado tenha permissão para editar esse tipo de anexo, e caso esteja pendente de aprovação do usuário logado.\n\t\t\treturn (type.permissionToEdit == true && vm.model.isRequiredToApproval == true);\n\t\t}\n\t\telse {\n\t\t\t// Habilita a edição dos anexos caso seja uma nova solicitação, ou se o usuário logado foi quem criou a solicitação, e caso esteja pendente de aprovação do usuário logado.\n\t\t\treturn (vm.isNewPromotionRequest() == true || (vm.model.isRequiredToApproval == true && vm.model.isOwner == true));\n\t\t}\n\t};\n\n\tvm.editingInvestmentValuesEnabled = function () {\n\t\t// Habilita os campos para edição do Investimento SW, Faturamento Adicional e da Margem:\n\t\t// - Caso seja uma nova solicitação, ou estiver pendente de aprovação do usuário logado e estiver no status Em revisão\n\t\t// - Ou se estiver pendente de aprovação do usuário logado caso seja o status imediatamente anterior tiver sido uma reprovação\n\t\treturn vm.editingEnabled() == true || (vm.model.isRequiredToApproval == true && vm.model.previousWorkflowDisapproved == true);\n\t};\n\n\tvm.editingMarginEnabled = function () {\n\t\t// Habilita o campo para edição da Margem caso seja uma nova solicitação, ou estiver pendente de aprovação do usuário logado e estiver no status Em revisão ou Aprovação Gerência Regional\n\t\treturn vm.editingEnabled() == true || vm.editingInvestmentValuesEnabled() == true || (vm.model.isRequiredToApproval == true && vm.isStatusMarginRequired() == true);\n\t};\n\n\tvm.approvalEnabled = function () {\n\t\t// Mostra as opções de aprovação/reprovação se for uma solicitação existente, estiver pendente de aprovação do usuário logado e NÃO estiver no status Em revisão\n\t\treturn (vm.isNewPromotionRequest() == false && vm.model.isRequiredToApproval == true && vm.isStatusDraft() == false);\n\t};\n\n\tvm.saveEnabled = function () {\n\t\t// Habilita o botão salvar/enviar seja uma nova solicitação, ou se o usuário logado foi quem criou a solicitação, e caso esteja pendente de aprovação do usuário logado, e se estiver no status Em Revisão\n\t\treturn (vm.isNewPromotionRequest() == true || (vm.model.isOwner == true && vm.model.isRequiredToApproval == true && vm.isStatusDraft() == true));\n\t};\n\n\tvm.approvalWithSaveEnabled = function () {\n\t\t// Retorna true caso esteja pendente de aprovação do usuário logado e \n\t\t// Se estiver em algum status que é Checkpoint \n\t\t// Ou no caso de estar no status Aprovação Gerência Regional, pois no gerente pode alterar a margem\n\t\t// Ou quando o usuário logado é do financeiro.\n\t\t// Ou quando status imediatamente anterior tiver sido uma reprovação\n\t\treturn (vm.model.isRequiredToApproval == true && (vm.isStatusCheckpoint() == true || vm.isStatusMarginRequired() == true || vm.model.currentUserIsFinancialGroup == true || vm.model.previousWorkflowDisapproved == true))\n\t};\n\n\tvm.hasPromotionProofAttachmentsPending = function () {\n\t\t// Valida se existe algum documento de comprovação faltando. \n\t\t//return (vm.getAttachmentsByEnumType(window.enumerators.attachmentType.PromotionProof).length == 0) || (vm.getAttachmentsByEnumType(window.enumerators.attachmentType.Invoice).length == 0) || (vm.getAttachmentsByEnumType(window.enumerators.attachmentType.AcquittanceDoc).length == 0);\n\n\t\t// Em Abr/2018 a SW solicitou que a nota fiscal não fosse mais obrigatória.\n\t\treturn (vm.getAttachmentsByEnumType(window.enumerators.attachmentType.PromotionProof).length == 0) || (vm.getAttachmentsByEnumType(window.enumerators.attachmentType.AcquittanceDoc).length == 0);\n\t};\n\n\tvm.hasInvoiceAttachmentsPending = function () {\n\t\t// Valida se existe tem a Nota Fiscal anexada \t\n\t\treturn (vm.getAttachmentsByEnumType(window.enumerators.attachmentType.Invoice).length == 0);\n\t};\n\n\n\tvm.validateForm = function () {\n\t\t// Verifica se algum segmento foi selecionado\n\t\tif (vm.model.productSegments === undefined || vm.model.productSegments.length == 0) {\n\t\t\tMessageService.alertInfo(\"É necessário selecionar ao menos um Segmento.\");\n\t\t\treturn false;\n\t\t}\n\n\t\t// Verifica se algum segmento foi selecionado\n\t\tif (vm.model.goals === undefined || vm.model.goals.length == 0) {\n\t\t\tMessageService.alertInfo(\"É necessário selecionar ao menos um Objetivo.\");\n\t\t\treturn false;\n\t\t}\n\n\t\t// Caso esteja no status Aprovação Gerência Regional, verifica se o usuário informou a margem\n\t\tif (vm.isStatusMarginRequired() == true && (!vm.model.margin || vm.model.margin == 0)) {\n\t\t\tMessageService.alertInfo(\"Para prosseguir, é necessário informar a Margem.\");\n\t\t\treturn false;\n\t\t}\n\n\t\t// Caso esteja no status Aprovação Gerência Regional, verifica se o cálculo do ROI é negativo\n\t\t//var roi = vm.calcRoi();\n\t\t//if (vm.isStatusMarginRequired() == true && (!roi || roi < 0)) {\n\t\t//\tMessageService.alertInfo(\"Para prosseguir, o ROI não pode ser negativo.\");\n\t\t//\treturn false;\n\t\t//}\n\n\t\t//var roi = vm.calcRoi();\n\t\t//if (vm.selectedPromotionType !== undefined && vm.selectedPromotionType.minimumRoi && vm.model.margin && (!roi || roi < vm.selectedPromotionType.minimumRoi)) {\n\t\t//\tMessageService.alertInfo('Para o tipo de ação '+vm.selectedPromotionType.name+ ' o ROI calculado deve ser superior à '+vm.selectedPromotionType.minimumRoi+'%!');\n\t\t//\treturn false;\n\t\t//}\n\n\t\t// Caso tenha sido marcada a opção de solicitar análise do layout pelo Trade MKT, verifica se o usuário subiu anexos na aba material para criação\n\t\tif (vm.model.hasLayoutApproval == true && vm.getAttachmentsByEnumType(window.enumerators.attachmentType.Layout).length == 0) {\n\t\t\tMessageService.alertInfo(\"Para solicitar análise do layout pelo Trade, é necessário anexar o layout na aba Material para Crição.\");\n\t\t\treturn false;\n\t\t}\n\n\t\t// Caso tenha sido marcada a opção Sim em Ação de Sellout, verifica se o usuário subiu anexos na aba mecânica\n\t\tif (vm.model.isSelloutAction == true && vm.getAttachmentsByEnumType(window.enumerators.attachmentType.Mechanics).length == 0) {\n\t\t\tMessageService.alertInfo(\"Para ações de sellout, é necessário anexar a mecânica da ação na aba Mecânica.\");\n\t\t\treturn false;\n\t\t}\n\n\t\t// Caso esteja no status Comprovação da Ação, verifica se o usuário subiu anexos nas abas Comprovante da Ação, Nota Fiscal e Carta de Débito\n\t\tif (vm.isInvoiceRequired() == true && vm.hasPromotionProofAttachmentsPending() == true) {\n\t\t\t//MessageService.alertInfo(\"Para prosseguir, é necessário anexar o Comprovante da Ação, Nota Fiscal e a Carta de Débito.\");\n\t\t\tMessageService.alertInfo(\"Para prosseguir, é necessário anexar o Comprovante da Ação e a Carta de Débito.\");\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\tvm.validateComment = function (msg) {\n\t\t// Verifica se o comentário foi preenchido\n\t\tif (vm.model.comment == undefined || vm.model.comment == \"\") {\n\t\t\tMessageService.alertInfo(msg);\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tvm.save = function (enumStatusApproval) {\n\t\t// Validação do formulário\n\t\tif (vm.validateForm() == false)\n\t\t\treturn;\n\n\t\t$rootScope.laddaLoading = true;\n\n\t\t// Atualiza a model com as listas de informações de faturamento e anexos\n\t\tvm.model.revenues = vm.revenues;\n\t\tvm.model.attachmentsTypes = vm.attachmentTypes;\n\t\tvm.model.tempFolder = vm.tempFolder;\n\n\t\t// Atualiza a model com o Id do cliente selecionado\n\t\tvm.model.customerId = vm.model.customer.id;\n\n\t\t// Caso seja uma nova solicitação ou esteja no status Em Revisão, já efetiva também a aprovação para o fluxo se mover\n\t\tif (vm.isNewPromotionRequest() || vm.isStatusDraft()) {\n\t\t\tenumStatusApproval = window.enumerators.statusApproval.Aprovado;\n\t\t}\n\n\t\t// Caso seja um Público-Alvo diferente \"Outros\", limpa a propriedade targetAudienceOther da model\n\t\tif (vm.isTargetAudienceOtherSelected() == false) {\n\t\t\tvm.model.targetAudienceOther = undefined;\n\t\t}\n\n\t\t// Caso exista o parâmetro de aprovação, complementa essa informação na model, para que seja feita também a movimentação do fluxo\n\t\tif (enumStatusApproval) {\n\t\t\tvm.model.workflowApprovalNext = vm.getWorkflowApprovalParameter(enumStatusApproval);\n\t\t}\n\n\t\tif (vm.isNewPromotionRequest()) {\n\t\t\tPromotionRequest.insert(vm.model, function () {\n\t\t\t\t$state.go('main.promotionrequest');\n\t\t\t}, function (response) {\n\t\t\t\tMessageService.alertError(response.data);\n\t\t\t});\n\t\t} else {\n\t\t\tPromotionRequest.update(vm.model, function () {\n\t\t\t\t$state.go('main.promotionrequest');\n\t\t\t}, function (response) {\n\t\t\t\tMessageService.alertError(response.data);\n\t\t\t});\n\t\t}\n\t};\n\n\t// APROVAÇÕES\n\tvm.getEnumStatusApprovalClass = function (item, icon) {\n\t\tswitch (item.enumStatusApprovalId) {\n\t\t\tcase window.enumerators.statusApproval.Aprovado:\n\t\t\t\treturn icon ? \"done\" : \"approved\";\n\t\t\tcase window.enumerators.statusApproval.Reprovado:\n\t\t\t\treturn icon ? \"highlight_off\" : \"disapproved\";\n\t\t\tcase window.enumerators.statusApproval.Cancelado:\n\t\t\t\treturn icon ? \"block\" : \"disapproved\";\n\t\t\tdefault:\n\t\t\t\treturn \"\";\n\t\t}\n\t};\n\n\tvm.approve = function () {\n\t\t// Validação do formulário\n\t\tif (vm.validateForm() == false)\n\t\t\treturn;\n\n\t\tvar messagePendingInvoce = (vm.isInvoiceRequired() == true && vm.hasInvoiceAttachmentsPending() == true) ? \", mesmo sem anexar a Nota Fiscal\" : \"\";\n\t\tvar message = \"Deseja realmente \" + (vm.isInvoiceRequired() ? \"prosseguir com essa\" : \"aprovar essa\") + \" solicitação\" + messagePendingInvoce + \"?\";\n\n\t\tMessageService.confirm(function () {\n\t\t\t// Verifica se está numa situação onde é necessário Salvar e também Aprovar, ou apenas Aprovar\n\t\t\tif (vm.approvalWithSaveEnabled() == false) {\n\t\t\t\tvm.doApproval(window.enumerators.statusApproval.Aprovado);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvm.save(window.enumerators.statusApproval.Aprovado);\n\t\t\t}\n\t\t},\n\t\t\t\"Confirmação\",\n\t\t\tmessage\n\t\t);\n\t};\n\n\tvm.disapprove = function () {\n\t\t// Verifica se o comentário foi preenchido\n\t\tif (vm.validateComment(\"Para prosseguir com a reprovação, é necessário preencher o motivo no campo de comentário.\") == false)\n\t\t\treturn;\n\n\t\tMessageService.confirm(function () {\n\t\t\tvm.doApproval(window.enumerators.statusApproval.Reprovado);\n\t\t},\n\t\t\t\"Confirmação\",\n\t\t\t\"Deseja realmente reprovar essa solicitação?\"\n\t\t);\n\t};\n\n\tvm.cancel = function () {\n\t\t// Verifica se o comentário foi preenchido\n\t\tif (vm.validateComment(\"Para prosseguir com o cancelamento, é necessário preencher o motivo no campo de comentário.\") == false)\n\t\t\treturn;\n\n\t\tMessageService.confirm(function () {\n\t\t\tvm.doCancel();\n\t\t},\n\t\t\t\"Confirmação\",\n\t\t\t\"Deseja realmente cancelar essa solicitação?\"\n\t\t);\n\t};\n\n\tvm.complete = function () {\n\t\t// Verifica se o comentário foi preenchido\n\t\tif (vm.validateComment(\"Para concluir com sucesso a solicitação, é necessário preencher o motivo no campo de comentário.\") == false)\n\t\t\treturn;\n\n\t\tMessageService.confirm(function () {\n\t\t\tvm.doComplete();\n\t\t},\n\t\t\t\"Confirmação\",\n\t\t\t\"Deseja realmente concluir com sucesso essa solicitação?\"\n\t\t);\n\t};\n\n\tvm.getWorkflowApprovalParameter = function (enumStatusApproval) {\n\t\treturn {\n\t\t\tpromotionRequestId: vm.model.promotionRequestId,\n\t\t\tenumStatusApproval: enumStatusApproval,\n\t\t\tcomment: vm.model.comment\n\t\t};\n\t};\n\n\tvm.doApproval = function (enumStatusApproval) {\n\t\t$rootScope.laddaLoading = true;\n\n\t\tvar params = vm.getWorkflowApprovalParameter(enumStatusApproval);\n\n\t\tWorkflowApproval.update(params, function () {\n\t\t\t$state.go('main.promotionrequest');\n\t\t}, function (response) {\n\t\t\tMessageService.alertError(response.data);\n\t\t});\n\t};\n\n\tvm.doCancel = function () {\n\t\t$rootScope.laddaLoading = true;\n\n\t\tvar params = vm.getWorkflowApprovalParameter();\n\n\t\tWorkflowApproval.cancel(params, function () {\n\t\t\t$state.go('main.promotionrequest');\n\t\t}, function (response) {\n\t\t\tMessageService.alertError(response.data);\n\t\t});\n\t};\n\n\tvm.doComplete = function () {\n\t\t$rootScope.laddaLoading = true;\n\n\t\tvar params = vm.getWorkflowApprovalParameter();\n\n\t\tWorkflowApproval.complete(params, function () {\n\t\t\t$state.go('main.promotionrequest');\n\t\t}, function (response) {\n\t\t\tMessageService.alertError(response.data);\n\t\t});\n\t};\n\n\t// Bind da cidade no carregamento inicial no caso de haver o estado selecionado\n\tif (vm.model.stateId !== undefined) {\n\t\tvm.refreshCities();\n\t}\n});","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).controller('promotionrequestListCtrl', function ($scope, $rootScope, $state, $http, $filter, permissionService, settings, apiSettings, list, MessageService, FileSaver, PromotionRequest, Reports, WorkflowApproval, status, workflowPendingDaysLate) {\n\tvar vm = this;\n\n\tvar $translate = $filter('translate');\n\n\tvm.permissions = permissionService;\n\tvm.status = status;\n\tvm.workflowPendingDaysLate = parseInt(workflowPendingDaysLate.value);\n\n\tangular.extend($scope.$parent.vm, {\n\t\ttitle: 'promotionRequests.settings.title',\n\t\tinsertUrl: vm.permissions.isAuthorized('InsertPromotionRequests')? 'main.promotionrequest-edit' : null\n\t});\n\n\t$rootScope.laddaLoading = false;\n\n\t// Pagination\n\tvm.pagination = {\n\t\tlist: list,\n\t\tcurrentPage: 1,\n\t\tpageSize: apiSettings.defaultPageSize,\n\t\tpagesTotal: list.total\n\t};\n\n\t$scope.$watch('vm.pagination.currentPage', function (newValue, oldValue) {\n\t\tif (newValue !== oldValue) {\n\t\t\tvm.refresh(newValue);\n\t\t}\n\t});\n\n\tvm.IsWorkflowLate = function (days) {\n\t\treturn days? (days > vm.workflowPendingDaysLate) : false; \n\t};\n\n\tvm.getWorkflowPendingDaysLabel = function (days) {\n\t\treturn days? \"há \" + days + \" dia(s)\" : \"\";\n\t};\n\n\tvm.getDefaultSearchParameter = function () {\n\t\tvar param =\n\t\t{\n\t\t\tpromotionRequestId: vm.promotionRequestId,\n\t\t\tcustomer: vm.customer,\n\t\t\tregionalManager: vm.regionalManager,\n\t\t\tnationalManager: vm.nationalManager,\n\t\t\tuserName: vm.userName,\n\t\t\tstartsOn: vm.startsOn,\n\t\t\tendsOn: vm.endsOn,\n\t\t\tstatusId: vm.statusId,\n\t\t\tworkflowPendingDaysLate: (vm.isWorkflowLate == true? vm.workflowPendingDaysLate : null)\n\t\t}\n\n\t\treturn param;\n\t};\n\n\tvm.search = function () {\n\t\tvm.refresh(1);\n\t};\n\n\tvm.refresh = function (page) {\n\t\tvar params = vm.getDefaultSearchParameter(); \n\t\tparams.page = page;\n\t\tparams.requiresApproval = false;\n\n\t\tPromotionRequest.list(params).$promise.then(function (data) {\n\t\t\tvm.pagination.list = data;\n\t\t\tvm.pagination.currentPage = data.page;\n\t\t\tvm.pagination.pagesTotal = data.total;\n\t\t});\n\t}\n\n\tvm.excel = function () {\n\t\tvar params = vm.getDefaultSearchParameter();\n\n\t\tReports.promotionRequestExcel(params, function (response) {\n\t\t\tvar filename = moment().format('YYYYMMDDHHmmss') + '_Solicitacoes.xlsx';\n\n\t\t\tFileSaver.saveAs(response.data, filename);\n\t\t}, function (response) {\n\t\t\tvar msg = $translate('errors.couldNotCompleteRequest');\n\n\t\t\tMessageService.alertError(msg);\n\t\t});\n\t}\n\n\tvm.cancel = function (id, index) {\n\t\tMessageService.confirm(function () {\n\t\t\tvm.doApproval(id, window.enumerators.statusApproval.Cancelado);\n\t\t},\n\t\t\"Confirmação\",\n\t\t\"Deseja realmente cancelar essa solicitação?\"\n\t\t);\n\t}\n\n\tvm.doApproval = function (id, enumStatusApproval) {\n\t\t$rootScope.laddaLoading = true;\n\n\t\tvar params = {\n\t\t\tpromotionRequestId: id,\n\t\t\tenumStatusApproval: enumStatusApproval\n\t\t};\n\n\t\tWorkflowApproval.update(params, function () {\n\t\t\tvm.refresh(vm.pagination.currentPage);\n\t\t\t$rootScope.laddaLoading = false;\n\t\t}, function (response) {\n\t\t\tMessageService.alertError(response.data);\n\t\t\t$rootScope.laddaLoading = false;\n\t\t});\n\t};\n});","\"use strict\";\n\nangular\n .module(ApplicationConfiguration.applicationModuleName)\n .factory(\"PromotionRequest\", [\n \"$resource\",\n \"$stateParams\",\n \"apiSettings\",\n function ($resource, $stateParams, apiSettings) {\n return $resource(\n apiSettings.baseUri + \"v1/promotionrequests/:id\",\n { id: \"@id\" },\n {\n list: {\n method: \"GET\",\n isArray: false,\n params: {\n page: 1,\n pageSize: apiSettings.defaultPageSize,\n },\n },\n listIds: {\n url: apiSettings.baseUri + \"v1/promotionrequests/list/ids\",\n method: \"GET\",\n isArray: true,\n },\n insert: {\n method: \"POST\",\n },\n update: {\n method: \"PUT\",\n },\n delete: {\n method: \"DELETE\",\n },\n }\n );\n },\n ]);\n","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).factory('PromotionRequestGoal', ['$resource', '$stateParams', 'apiSettings', function ($resource, $stateParams, apiSettings) {\n\treturn $resource(apiSettings.baseUri + 'v1/promotionrequestsgoals/:id', { id: '@id' }, {\n\t\t'list': {\n\t\t\tmethod: 'GET',\n\t\t\tisArray: false,\n\t\t\tparams: {\n\t\t\t\tpage: 1,\n\t\t\t\tpageSize: apiSettings.defaultPageSize,\n\t\t\t\tkeyword: ''\n\t\t\t}\n\t\t},\n\t\t'listIds': {\n\t\t\turl: apiSettings.baseUri + 'v1/promotionrequestsgoals/list/ids',\n\t\t\tmethod: 'GET',\n\t\t\tisArray: true\n\t\t},\n\t\t'insert': {\n\t\t\tmethod: 'POST'\n\t\t},\n\t\t'update': {\n\t\t\tmethod: 'PUT'\n\t\t},\n\t\t'delete': {\n\t\t\tmethod: 'DELETE'\n\t\t}\n\t});\n}]);","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).factory('PromotionRequestProductSegment', ['$resource', '$stateParams', 'apiSettings', function ($resource, $stateParams, apiSettings) {\n\treturn $resource(apiSettings.baseUri + 'v1/promotionrequestsproductsegments/:id', { id: '@id' }, {\n\t\t'list': {\n\t\t\tmethod: 'GET',\n\t\t\tisArray: false,\n\t\t\tparams: {\n\t\t\t\tpage: 1,\n\t\t\t\tpageSize: apiSettings.defaultPageSize,\n\t\t\t\tkeyword: ''\n\t\t\t}\n\t\t},\n\t\t'listIds': {\n\t\t\turl: apiSettings.baseUri + 'v1/promotionrequestsproductsegments/list/ids',\n\t\t\tmethod: 'GET',\n\t\t\tisArray: true\n\t\t},\n\t\t'insert': {\n\t\t\tmethod: 'POST'\n\t\t},\n\t\t'update': {\n\t\t\tmethod: 'PUT'\n\t\t},\n\t\t'delete': {\n\t\t\tmethod: 'DELETE'\n\t\t}\n\t});\n}]);","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).factory('PromotionRequestRevenue', ['$resource', '$stateParams', 'apiSettings', function ($resource, $stateParams, apiSettings) {\n\treturn $resource(apiSettings.baseUri + 'v1/promotionrequestrevenues/:id', { id: '@id' }, {\n\t\t'list': {\n\t\t\tmethod: 'GET',\n\t\t\tisArray: true,\n\t\t\tparams: {\n\t\t\t\tpromotionRequestId: 0\n\t\t\t}\n\t\t},\n\t\t'listbycustomer': {\n\t\t\turl: apiSettings.baseUri + 'v1/promotionrequestrevenues/list/bycustomer',\n\t\t\tmethod: 'GET',\n\t\t\tisArray: true,\n\t\t\tparams: {\n\t\t\t\tcustomerId: 0\n\t\t\t}\n\t\t},\n\t\t'insert': {\n\t\t\tmethod: 'POST'\n\t\t},\n\t\t'update': {\n\t\t\tmethod: 'PUT'\n\t\t},\n\t\t'delete': {\n\t\t\tmethod: 'DELETE'\n\t\t}\n\t});\n}]);","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).factory('PromotionRequestType', ['$resource', '$stateParams', 'apiSettings', function ($resource, $stateParams, apiSettings) {\n\treturn $resource(apiSettings.baseUri + 'v1/promotionrequeststypes/:id', { id: '@id' }, {\n\t\t'list': {\n\t\t\tmethod: 'GET',\n\t\t\tisArray: true\n\t\t},\n\t\t'listByPromotionRequest': {\n\t\t\turl: apiSettings.baseUri + 'v1/promotionrequeststypes/by-promotion-request/:id',\n\t\t\tmethod: 'GET',\n\t\t\tisArray: true\n\t\t}\n\t});\n}]);","'use strict';\n\nangular.module(ApplicationConfiguration.applicationModuleName).factory('TargetAudience', ['$resource', '$stateParams', 'apiSettings', function ($resource, $stateParams, apiSettings) {\n\treturn $resource(apiSettings.baseUri + 'v1/targetaudiences/:id', { id: '@id' }, {\n\t\t'list': {\n\t\t\tmethod: 'GET',\n\t\t\tisArray: false,\n\t\t\tparams: {\n\t\t\t\tpage: 1,\n\t\t\t\tpageSize: apiSettings.defaultPageSize,\n\t\t\t\tkeyword: ''\n\t\t\t}\n\t\t},\n\t\t'listIds': {\n\t\t\turl: apiSettings.baseUri + 'v1/targetaudiences/list/ids',\n\t\t\tmethod: 'GET',\n\t\t\tisArray: true\n\t\t}\n\t});\n}]);"]}