define(["angular","cjt/core","cjt/util/locale","cjt/util/query","cjt/services/fuzzy","uiBootstrap","cjt/modules","cjt/directives/cpanel/searchSettingsPanel","cjt/models/searchSettingsModel","app/services/DomainsService","cjt/directives/actionButtonDirective"],(function(e,t,a,n,i){"use strict";var o=e.module("App");o.value("PAGE",PAGE);var s=new i;o.controller("ViewDomainsController",["$scope","$timeout","$filter","$window","$location","DomainsService","$routeParams","SearchSettingsModel","user_domains","search_filter_settings","alertService","PAGE",function(i,o,u,r,l,c,d,_,m,f,h,g){i.domains=m,i.filteredDomains=i.domains,i.selected_auto_ssl_domains={excluded:[],included:[]},i.unsecuredDomains=[],i.quickFilterValue="",i.showPager=!0,i.autossl_enabled=c.is_autossl_enabled,i.autoSSLErrorsExist=!1,i.meta={filterValue:""};var p=null;function S(){o((function(){c.isAutoSSLCheckInProgress().then((function(e){e?S():(i.autoSSLCheckActive=!1,h.add({type:"success",message:a.maketext("The [asis,AutoSSL] check has completed. The page will refresh in [quant,_1,second,seconds].",5),closeable:!0,replace:!1,autoClose:5e3,group:"tlsStatus"}),o((function(){r.location.reload()}),5e3))}))}),6e4)}i.datasource={get:function(e,t){t(i.filteredDomains.slice(Math.max(e.index,0),e.index+e.count)),(p=e).position=r.pageYOffset}},i.check_for_reload=function(){if(p){var e=-1,t=p.index+p.count;if(0===r.pageYOffset)e=0;else{var a=r.pageYOffset;e=t*(p.position/a)}t-e>200&&(e=Math.max(e,0),i.uiScrollAdapter.reload(e))}},i.autossl_include_domains=function(e){var t=e.map((function(e){return e.updating=!0,e.domain}));return c.autossl_include_domains(t).then((function(){h.add({type:"success",message:a.maketext("The following domains have had their [asis,AutoSSL] exclusion removed: [list_and_quoted,_1]",t),closeable:!0,replace:!1,autoClose:1e4,group:"tlsStatus"}),e.forEach((function(e){e.excluded_from_autossl=!1,e.domain_autossl_status="included",e.certificate_status_name=c.get_certificate_status(e)}))})).finally((function(){e.forEach((function(e){e.updating=!1})),i.update_auto_ssl_domains()}))},i.autossl_exclude_domains=function(e){var t=e.map((function(e){return e.updating=!0,e.domain}));return c.autossl_exclude_domains(t).then((function(){h.add({type:"success",message:a.maketext("The following domains will now be excluded from the [asis,AutoSSL] process: [list_and_quoted,_1]",t),closeable:!0,replace:!1,autoClose:1e4,group:"tlsStatus"}),e.forEach((function(e){e.excluded_from_autossl=!0,e.domain_autossl_status="excluded",e.certificate_status_name=c.get_certificate_status(e)}))})).finally((function(){e.forEach((function(e){e.updating=!1})),i.update_auto_ssl_domains()}))},i.autossl_include_domain=function(e){return i.autossl_include_domains([e])},i.autossl_exclude_domain=function(e){return i.autossl_exclude_domains([e])},i.exclude_autossl_label=function(e){return 0===e.length?a.maketext("Exclude Domains from AutoSSL",e.length):a.maketext("Exclude [quant,_1,Domain,Domains] from AutoSSL",e.length)},i.include_autossl_label=function(e){return 0===e.length?a.maketext("Include Domains during AutoSSL",e.length):a.maketext("Include [quant,_1,Domain,Domains] during AutoSSL",e.length)},i.searchFilterOptions=new _(f),i.clearSearch=function(){i.meta.filterValue="",i.domainSearchFilterChanged()},i.filter_domains=function(e){var t=e;if(i.meta.filterValue){var a=[],n={},o=e.map((function(e){return n[e.domain]=e,e.domain}));s.loadSet(o),s.search(i.meta.filterValue).filter((function(e){return e.distance<3})).sort((function(e,t){return e.distance===t.distance?e.match===t.match?0:e.match<t.match?-1:1:e.distance<t.distance?-1:1})).forEach((function(e){a.push(n[e.match])})),t=a}return t=i.searchFilterOptions.filter(t)},i.update_auto_ssl_domains=function(){i.selected_auto_ssl_domains={excluded:[],included:[]},e.forEach(i.filteredDomains,(function(e){e.can_autossl_exclude&&e.selected&&(e.excluded_from_autossl?i.selected_auto_ssl_domains.excluded.push(e):i.selected_auto_ssl_domains.included.push(e))}),i.selected_auto_ssl_domains)},i.searchSettingsPanelUpdated=function(){i.fetch()},i.lastFetch="",i.fetch=function(){var t=i.domains,a=(t=i.filter_domains(t)).map((function(e){return e.domain})).join("|"),n=i.filteredDomains.length!==i.domains.length||t.length!==i.filteredDomains.length||i.lastFetch!==a;i.lastFetch=a,n&&(i.filteredDomains=t,i.uiScrollAdapter&&e.isFunction(i.uiScrollAdapter.reload)&&i.uiScrollAdapter.reload(0)),i.update_auto_ssl_domains(),i.update_showing_text()},i.no_results_msg=function(){return a.maketext("No results found…")},i.get_advanced_filter_label=function(e){if("displayAutoSubdomains"===e)return i.advancedFilters.displayAutoSubdomains?a.maketext("Yes"):a.maketext("No");var t=i[e+"Options"];if(t)for(var n=0;n<t.length;n++)if(t[n].value===i.advancedFilters[e])return t[n].label;return""},i.advanced_filters_set=function(){return"all"!==i.advancedFilters.domainType||"all"!==i.advancedFilters.sslType||"all"!==i.advancedFilters.sslStatus||!i.advancedFilters.displayAutoSubdomains},i.update_showing_text=function(){i.showing_text=a.maketext("[output,strong,Showing] [numf,_1] of [quant,_2,domain,domains]",i.filteredDomains.length,i.domains.length)},i.get_showing_text=function(){return i.showing_text},i.view_certificate=function(e){return r.open(e.view_crt_url)},i._get_tls_wizard_url=function(e){var a="security/tls_wizard/#/create";return-1===a.search(/^http/i)&&(a=-1!==a.search(/^\//)?t.getRootPath()+a:t.buildFullPath(a)),a+="?"+n.make_query_string(e)},i.get_root_domain=function(e){var t;return e.domain.match(/^www\./)&&(t=i.find_domain_by_domain(e.domain.replace(/^www\./,""))),t||e},i.upgrade_certificate_url=function(e){if(e){var t={domain:i.get_root_domain(e).domain,certificate_type:e.available_upgrades};return i._get_tls_wizard_url(t)}},i.purchase_certificate=function(e){var t={domain:e.map((function(e){return i.get_root_domain(e).domain})),certificate_type:["dv","ov","ev"]};return window.open(i._get_tls_wizard_url(t),"_self"),!1},i.domainSearchFilterChanged=function(){i.meta.filterValue?l.search("domain",i.meta.filterValue):l.search("domain",null),i.fetch()},i.get_unsecured_domains_message=function(e){return a.maketext("You have [numf,_1] unsecured parent [numerate,_1,domain,domains]. Would you like to purchase [numerate,_1,a certificate for that domain, certificates for those domains]?",e.length)},i.getUnsecuredDomainsMessageNote=function(){return g.hasWebServerRole&&a.maketext("[output,strong,Note:] The number of “parent” domains excludes the “[_1]” domains because the system automatically includes them during purchase if they pass [output,acronym,DCV,Domain Control Validation].","www")},i.find_domain_by_domain=function(e){for(var t=0;t<i.domains.length;t++)if(i.domains[t].domain===e)return i.domains[t]},i.get_domain_lock_tooltip=function(e,t,n){var i=c.get_validation_ranks();return i[n]>i[e]?c.get_validation_type_name(e,!1):i[n]===i[e]?c.get_validation_type_name(e,t):c.tls_wizard_can_do_validation_type(e)?a.maketext("Upgrade to [_1]",c.get_validation_type_name(e,!1)):""},i.show_unsecured_domains=function(){i.searchFilterOptions.show_only("sslType","unsecured"),i.fetch()},i.get_upgrade_btn_title=function(e){if(e.upgrade_btn_title)return e.upgrade_btn_title;var t=i.get_root_domain(e);return e.upgrade_btn_title=c.get_upgrade_btn_title(t.domain,e.certificate),e.upgrade_btn_title},i.selectAllItems=function(t){e.forEach(i.filteredDomains,(function(e){e.selected=t})),i.update_auto_ssl_domains()},i.getRawLogWarning=function(){return a.maketext("Because some entries contain raw log data, the system may not translate it into the chosen language or locale.")},i.startUserAutoSSLLabel=function(){return i.autoSSLCheckActive?a.maketext("[asis,AutoSSL] is in progress …"):a.maketext("Run [asis,AutoSSL]")},i.startUserAutoSSL=function(){i.autoSSLCheckActive=!0,c.startUserAutoSSL().then(S)},i.init=function(){d.domain&&(i.meta.filterValue=d.domain),e.element(r).bind("scroll",i.check_for_reload);var t=[];i.domains.forEach((function(e){e.upgrade_btn_title=i.get_upgrade_btn_title(e),"unsecured"===e.certificate_type&&t.push(e)}));var n=[],s={};e.forEach(t,(function(e){if(!e.isDDNS){var t=i.get_root_domain(e);if("unsecured"!==t.certificate_type)return!1;t&&!s[t.domain]&&(s[t.domain]=t,n.push(t))}})),i.market_products_available=c.areMarketProductsAvailable(),i.unsecuredDomains=n,i.fetch(),c.is_autossl_enabled()&&o((function(){c.getAutoSSLStatuses().then((function(e){e.forEach((function(e){var t=i.find_domain_by_domain(e.domain);t&&(t.autoSSLStatus=e,e.error?(i.autoSSLErrorsExist=!0,t.certificate_status="has_autossl_problem",t.autoSSLStatus.lastRunMessage=a.maketext("An error occurred the last time [asis,AutoSSL] ran, on [local_datetime,_1]:",t.autoSSLStatus.runTime.getTime()/1e3)):t.autoSSLStatus.lastRunMessage=a.maketext("[asis,AutoSSL] last ran on [local_datetime,_1].",t.autoSSLStatus.runTime.getTime()/1e3))})),i.fetch()})),c.isAutoSSLCheckInProgress().then((function(e){i.initialAutoSSLCheckComplete=!0,i.autoSSLCheckActive=e,i.autoSSLCheckActive&&S()}))}),50)},i.$on("$destroy",(function(){e.element(r).unbind("scroll",i.check_for_reload)})),i.init()}])}));