app.controller('AdminCtrl', function($scope, $rootScope, $http, $window, $location, $route) { $scope.auth_ips = { name: 'IP Blokkades', controller: 'auth_ip_error', //Panel class panelClass: 'panel-trainingskampen', pageLimit: 50, buttons: { 'C':{ 'id': 'c', 'name': 'Voeg IP toe', 'label': 'Voeg IP toe', 'cancelName': 'Annuleren', 'confirmName': 'Voeg toe', 'confirmClass': 'success', 'icon': 'fa-plus-square', 'header': $scope.user.role.id > 5, 'action': 'create', }, 'D':{ 'id': 'd', 'name': 'Verwijder IP', 'label': 'Verwijder', 'cancelName': 'Annuleren', 'confirmName': 'Verwijderen', 'confirmClass': 'warning', 'inline': $scope.user.role.id > 5, 'icon':'fa-trash', 'action': 'delete', }, 'R':{ 'id': 'r', 'name': 'Bekijk IP', 'label': 'Bekijk', 'cancelName': 'Annuleren', 'confirmName': 'Bekijk', 'confirmClass': 'info', 'inline': false, 'header': false, 'icon': 'fa-search', 'action': 'read', }, 'U':{ 'id': 'u', 'name': 'Wijzig IP' , 'label': 'Wijzig', 'cancelName': 'Annuleren', 'confirmName': 'Wijzig', 'confirmClass': 'success', 'inline': $scope.user.role.id > 4, 'inline':true, 'icon':'fa-pencil', 'action': 'update', }, } } $scope.users = { name: 'Gebruikers', controller: 'user_extended', //Panel class panelClass: 'panel-trainingskampen', showFilters: false, pageLimit: 10, fields: [ 'organization_id', 'customer_id', 'name', 'username', 'password', 'email', 'phone_mobile', 'user_role_id', 'auto_created', 'photo', 'photo_show', 'groups', ], //pair the organizations table subQueries: { 'organizations': { 'lfield': 'organization_id', 'ffield': 'id', 'controller': 'organization', }, 'customer': { 'lfield': 'customer_id', 'ffield': 'id', 'controller': 'customer', }, 'role': { 'lfield': 'user_role_id', 'ffield': 'id', 'controller': 'user_role', }, 'user_group': { 'lfield': 'id', 'ffield': 'user_id', 'controller': 'user_group', }, 'group': { 'lfield': 'id', 'ffield': 'group_id', 'controller': 'group', }, }, //get the name of organization fieldDetails: { 'name': { 'label': 'Naam', }, 'username': { 'label': 'Gebruikersnaam', }, 'email': { 'label': 'E-mail', }, 'phone_mobile': { 'label': 'Telefoonnummer', }, 'organization_id': { 'label': 'Organisatie', 'default': $scope.user.organization.id, 'changeTo': ['organizations.id', ' - ', 'organizations.name'], 'type': 'combobox', 'required': true, 'sortAsc': true, 'hideEdit': ($scope.user.role !== undefined && $scope.user.role < 5), 'hideList': false, }, 'user_role_id': { 'label' : 'Rol', 'changeTo' : ['role.name'], 'type' : 'combobox', 'required' : true, }, 'customer_id': { 'label' : 'Klant', 'changeTo' : ['customer.id', '-', 'customer.company_name'], 'type' : 'combobox', }, 'password': { 'type': 'password', 'label': 'Wachtwoord', 'hideList': true, }, 'auto_created': { 'type': 'boolean', 'label': 'Automatisch aangemaakt', 'hideEdit': true, 'hideList': true, 'booleanOn': 1, 'booleanOff': 0, 'where': { '==': 0, }, }, 'photo': { 'label': 'Foto', 'type': 'file', 'uploadFileUrl': 'scenario_contactperson/uploadImage', 'multiple': false, 'hideList': true, }, 'photo_show': { 'label': 'Foto', 'hideEdit': true }, 'groups': { name: 'groups', label: 'Groepen', type: 'multiselect', link: 'user_group', changeTo: ['group.id', ' - ', 'group.name'], }, }, buttons: { 'C':{ 'id': 'c', 'name': 'Voeg gebruiker toe', 'label': 'Voeg gebruiker toe', 'cancelName': 'Annuleren', 'confirmName': 'Voeg toe', 'confirmClass': 'success', 'icon': 'fa-plus-square', 'header': $scope.user.role.id > 2, 'action': 'create', }, 'D':{ 'id': 'd', 'name': 'Verwijder gebruiker', 'label': 'Verwijder', 'cancelName': 'Annuleren', 'confirmName': 'Verwijderen', 'confirmClass': 'warning', 'inline': $scope.user.role.id > 2, 'icon':'fa-trash', 'action': 'delete', }, 'R':{ 'id': 'r', 'name': 'Bekijk gebruiker', 'label': 'Bekijk', 'cancelName': 'Annuleren', 'confirmName': 'Bekijk', 'confirmClass': 'info', 'inline': true, 'header': false, 'icon': 'fa-search', 'action': 'read', }, 'U':{ 'id': 'u', 'name': 'Wijzig gebruiker' , 'label': 'Wijzig', 'cancelName': 'Annuleren', 'confirmName': 'Wijzig', 'confirmClass': 'success', 'inline':true, 'icon':'fa-pencil', 'action': 'update', }, } } $scope.groups = { name: 'Gebruikers groepen', controller: 'user_group', showFilters: false, pageLimit: 10, //Panel class panelClass: 'panel-trainingskampen', fields: [ 'user_id', 'group_id' ], fieldDetails: { id:{ hideList: true, hideEdit: true, }, user_id:{ label: 'Gebruiker', }, group_id:{ label: 'Groep', }, }, autoChangeTo: [ 'user_group_id', 'user_id', ], buttons:{ 'C':{ 'id': 'c', 'name': 'Voeg gebruikers groep toe', 'label': 'Voeg gebruikers groep toe', 'cancelName': 'Annuleren', 'confirmName': 'Voeg toe', 'confirmClass': 'success', 'icon': 'fa-plus-square', 'header': true, 'action': 'create', }, 'R':{ 'id': 'r', 'name': 'Bekijk gebruikers groep', 'label': 'Bekijk', 'cancelName': 'Annuleren', 'confirmName': 'Bekijk', 'confirmClass': 'info', 'inline': true, 'header': false, 'icon': 'fa-search', 'action': 'read', }, 'U':{ 'id': 'u', 'name': 'Wijzig gebruikers groep', 'label': 'Wijzig', 'cancelName': 'Annuleren', 'confirmName': 'Wijzig', 'confirmClass': 'success', 'inline':true, 'icon':'fa-pencil', 'action': 'update', }, 'D':{ 'id': 'd', 'name': 'Verwijder gebruikers groep', 'label': 'Verwijder', 'cancelName': 'Annuleren', 'confirmName': 'Verwijder', 'confirmClass': 'warning', 'inline':true, 'icon':'fa-trash', 'action': 'delete', }, } } $scope.run_times = { name: 'Doorlooptijden', controller: 'run_time', showFilters: false, pageLimit: 10, // Panel class panelClass: 'panel-trainingskampen', readOnly: $scope.user.role.id < 5, subQueries: { 'finalization_term': { 'lfield': 'finalization_term_id', 'ffield': 'id', 'controller': 'run_term', }, 'reminder1_term': { 'lfield': 'reminder1_term_id', 'ffield': 'id', 'controller': 'run_term', }, 'reminder2_term': { 'lfield': 'reminder2_term_id', 'ffield': 'id', 'controller': 'run_term', }, 'costs_term': { 'lfield': 'costs_term_id', 'ffield': 'id', 'controller': 'run_term', }, }, fieldDetails: { id: { hideList: true, hideEdit: true, }, name: { label: 'Naam', }, requirement: { label: 'Vereiste', }, finalization_amount: { label: 'Afronden binnen', }, finalization_amount_type: { label: 'Afr. type', }, finalization_term_id: { label: 'Afr. termijn', changeTo: ['finalization_term.name'], }, finalization_text: { label: 'Afr. bericht', }, description: { label: 'Beschrijving', }, reminder1_days: { label: 'Dagen herinnering 1', }, reminder1_term_id: { label: 'herinnering 1 termijn', changeTo: ['reminder1_term.name'], }, reminder1_text: { label: 'herinnering 1 termijn', }, reminder2_days: { label: 'Dagen herinnering 2', }, reminder2_term_id: { label: 'herinnering 2 termijn', changeTo: ['reminder2_term.name'], }, reminder2_text: { label: 'herinnering 2 termijn', }, costs_from_days: { label: 'Kosten vanaf', }, costs_term_id: { label: 'Kosten termijn', changeTo: ['costs_term.name'], }, costs: { label: 'Kosten [€]', }, }, buttons:{ 'C':{ 'id': 'c', 'name': 'Doorlooptijd toevoegen', 'label': 'Doorlooptijd toevoegen', 'cancelName': 'Annuleren', 'confirmName': 'Voeg toe', 'confirmClass': 'success', 'icon': 'fa-plus-square', 'header': true, 'action': 'create', }, 'R':{ 'id': 'r', 'name': 'Bekijk', 'label': 'Bekijk', 'cancelName': 'Annuleren', 'confirmName': 'Bekijk', 'confirmClass': 'info', 'inline': true, 'header': false, 'icon': 'fa-search', 'action': 'read', }, 'U':{ 'id': 'u', 'name': 'Wijzig' , 'label': 'Wijzig' , 'cancelName': 'Annuleren', 'confirmName': 'Wijzig', 'confirmClass': 'success', 'inline':true, 'icon':'fa-pencil', 'action': 'update', }, 'D':{ 'id': 'd', 'name': 'Verwijder', 'label': 'Verwijder', 'cancelName': 'Annuleren', 'confirmName': 'Verwijder', 'confirmClass': 'warning', 'inline':true, 'icon':'fa-trash', 'action': 'delete', } } } $scope.run_terms = { name: 'Doorlooptermijnen', controller: 'run_term', showFilters: false, pageLimit: 10, // Panel class panelClass: 'panel-trainingskampen', readOnly: $scope.user.role.id < 5, fieldDetails: { id: { hideList: true, hideEdit: true, }, name: { label: 'Vereiste', }, }, buttons:{ 'C':{ 'id': 'c', 'name': 'Doorlooptermijn toevoegen', 'label': 'Doorlooptermijn toevoegen', 'cancelName': 'Annuleren', 'confirmName': 'Voeg toe', 'confirmClass': 'success', 'icon': 'fa-plus-square', 'header': true, 'action': 'create', }, 'R':{ 'id': 'r', 'name': 'Bekijk', 'label': 'Bekijk', 'cancelName': 'Annuleren', 'confirmName': 'Bekijk', 'confirmClass': 'info', 'inline': true, 'header': false, 'icon': 'fa-search', 'action': 'read', }, 'U':{ 'id': 'u', 'name': 'Wijzig' , 'label': 'Wijzig' , 'cancelName': 'Annuleren', 'confirmName': 'Wijzig', 'confirmClass': 'success', 'inline':true, 'icon':'fa-pencil', 'action': 'update', }, 'D':{ 'id': 'd', inline: false, }, } } $scope.topics = { name: 'Hulp elementen', controller: 'help_topic', showFilters: false, pageLimit: 10, //Panel class panelClass: 'panel-trainingskampen', fields: [ 'url', 'order', 'name', 'content' ], fieldDetails: { url:{ label: 'Url', }, order:{ label: 'volgorde', }, name:{ label: 'Naam', }, content:{ label: 'Content', wysiwyg: 'summernote', }, }, buttons:{ 'C':{ 'id': 'c', 'name': 'Voeg een hulp element toe', 'label': 'Voeg een hulp element toe', 'cancelName': 'Annuleren', 'confirmName': 'Voeg toe', 'confirmClass': 'success', 'icon': 'fa-plus-square', 'header': true, 'action': 'create', }, 'R':{ 'id': 'r', 'name': 'Bekijk gebruikers groep', 'label': 'Bekijk', 'cancelName': 'Annuleren', 'confirmName': 'Bekijk', 'confirmClass': 'info', 'inline': false, 'header': false, 'icon': 'fa-search', 'action': 'read', }, 'U':{ 'id': 'u', 'name': 'Wijzig hulp element groep', 'label': 'Wijzig', 'cancelName': 'Annuleren', 'confirmName': 'Wijzig', 'confirmClass': 'success', 'inline':true, 'icon':'fa-pencil', 'action': 'update', }, 'D':{ 'id': 'd', 'name': 'Verwijder hulp element groep', 'label': 'Verwijder', 'cancelName': 'Annuleren', 'confirmName': 'Verwijder', 'confirmClass': 'warning', 'inline':true, 'icon':'fa-trash', 'action': 'delete', }, } } $scope.ftp_credentials = { name: 'FTP gegevens', controller: 'ftp_credential', pageLimit: 10, //Panel class panelClass: 'panel-trainingskampen', fields: [ 'id', 'supplier', 'type', 'host', 'port', 'username', 'password', 'path', ], fieldDetails: { 'id': { 'hideEdit': true, 'hideList': true, }, 'supplier': { 'label': 'Leverancier' }, 'type': { 'label': 'Type', 'type': 'enum', 'options': [ {'id': 'FTP', 'name': 'FTP'}, {'id': 'SFTP', 'name': 'SFTP'}, {'id': 'FTPS', 'name': 'FTPS'}, ] }, 'host': { 'label': 'Host', }, 'port': { 'label': 'Port', }, 'username': { 'label': 'Username', }, 'password': { 'label': 'Password', }, 'path': { 'label': 'Path', }, }, buttons:{ 'C':{ 'id': 'c', 'name': 'Voeg ftp gegevens toe', 'label': 'Voeg ftp gegevens toe', 'cancelName': 'Annuleren', 'confirmName': 'Voeg toe', 'confirmClass': 'success', 'icon': 'fa-plus-square', 'header': true, 'action': 'create', }, 'R':{ 'id': 'r', 'name': 'Bekijk ftp gegevens', 'label': 'Bekijk', 'cancelName': 'Annuleren', 'confirmName': 'Bekijk', 'confirmClass': 'info', 'inline': false, 'header': false, 'icon': 'fa-search', 'action': 'read', }, 'U':{ 'id': 'u', 'name': 'Wijzig ftp gegevens', 'label': 'Wijzig', 'cancelName': 'Annuleren', 'confirmName': 'Wijzig', 'confirmClass': 'success', 'inline':true, 'icon':'fa-pencil', 'action': 'update', }, 'D':{ 'id': 'd', 'name': 'Verwijder ftp gegevens', 'label': 'Verwijder', 'cancelName': 'Annuleren', 'confirmName': 'Verwijder', 'confirmClass': 'warning', 'inline':true, 'icon':'fa-trash', 'action': 'delete', }, } } $scope.crons = { name: 'Achtergrondprocessen', controller: 'cron', //Panel class panelClass: 'panel-trainingskampen', pageLimit: 50, selectable: true, autoChangeTo: ['organization_id'], fields: [ 'organization_id', 'name', 'cron_running', 'cron_emergency_stop', 'cron_heartbeat', 'maintenance_till', ], fieldDetails: { 'organization_id': { 'label': 'Organisatie', 'default': $scope.user.organization.id, 'type': 'combobox', 'required': true, 'sortAsc': true, 'hideEdit': !($scope.user?.role?.id > 5), }, 'name': { 'label': 'Naam', 'required': true, 'hideEdit': !($scope.user?.role?.id > 5), }, 'cron_running': { 'type': 'boolean', 'label': 'Actief', 'booleanOn': 1, 'booleanOff': 0, 'hideList': true, 'hideEdit': !($scope.user?.role?.id > 5), }, 'cron_emergency_stop': { 'type': 'boolean', 'label': 'Noodstop', 'booleanOn': 1, 'booleanOff': 0, 'hideList': true, 'hideEdit': !($scope.user?.role?.id > 5), }, 'cron_heartbeat': { 'label': 'Hartslag', 'disabled': true, 'hideList': true, 'hideEdit': !($scope.user?.role?.id > 5), }, 'maintenance_till': { 'label': 'Onderhoud tot', }, }, buttons: { 'C': { 'id': 'c', 'header': false, }, 'D': { 'id': 'd', 'inline': false, }, 'R': { 'id': 'r', 'inline': false, }, 'U': { 'id': 'u', 'name': 'Wijzig achtergrondproces' , 'label': 'Wijzig', 'cancelName': 'Annuleren', 'confirmName': 'Wijzig', 'confirmClass': 'success', 'inline': true, 'icon': 'fa-pencil', 'action': 'update', 'function': 'update', }, 'MW': { 'id': 'mw', 'name': 'Geselecteerde rijen in onderhoud plaatsen', 'header': true, 'icon': 'fa-wrench', 'action': 'setMaintenanceWindow', 'function': 'update', 'parentScope': true, } } } // turn on maintenance window for all selected rows $scope.setMaintenanceWindow = function(){ // check if there are selected items if ($scope.crons.selectedItems?.length) { swal({ title: 'Onderhoudsvenster aanzetten', text: 'Geef hieronder op tot wanneer en hoelaat de geselecteerde rijen in onderhoud moeten worden geplaatst.', content: { element: "input", attributes: { type: "datetime-local", }, }, buttons: { cancel: "Annuleer", confirm: { text: "Opslaan", value: true, closeModal: false, }, }, }).then(date => { // handle cancel button if (date == null) throw null; return date; }).then(async date => { //check if quantity is valid if (date != undefined && date.length) { // define status for loop let cronUpdateStatus = true; // loop each selected item for (const item of $scope.crons.selectedItems) { // update each cron var req = { method: 'POST', url: '/cron/update/' + item.id, data: { maintenance_till: date }, } var response = await $http(req); if (response.data.status) { // update table rows with new date if ($scope.crons.data.rows.find(r => r.id == item.id) !== undefined && response.data?.data?.maintenance_till !== undefined && response.data?.data?.maintenance_till !== null) { $scope.crons.data.rows.find(r => r.id == item.id).maintenance_till = response.data?.data?.maintenance_till; } } else { // set status to false cronUpdateStatus = false; } } // close swal & update table if everything updated successfully if (cronUpdateStatus) { swal.close(); } else { swal('Mislukt', 'Één of meerdere achtergrondprocessen konden niet worden aangepast', 'error'); } } else { swal('Mislukt', 'Geef een geldige datum op.', 'error'); } }); } else { swal('Mislukt', 'Selecteer de rijen die in onderhoud geplaatst moeten worden.', 'error'); } } //translate table data groups $scope.tableReady = function (tableName) { switch (tableName) { case 'Gebruikers groepen': $scope.groups.labels = { 'of': 'van', 'rows': 'rijen', 'lastUpdated': 'Laatste wijziging', 'showNotSelectedRows': 'Toon niet geselecteerde rijen', 'showSelectedRows': 'Toon geselecteerde rijen', 'selectAllRows': 'Selecteer alle rijen', 'deSelectAllRows': 'De-selecteer alle rijen', 'selectFilteredRows': 'Selecteer gefilterde rijen', 'deSelectFilteredRows': 'De-selecteer gefilterde rijen', 'false': 'Mislukt', 'true': 'Gelukt', 'statistics': 'Statistieken', 'deleteAllRowsMessage': 'Let op! Je staat op het punt alle geselecteerde rijen te verwijderen', 'ready' : 'Klaar', 'processSubFields' : 'Verwerk subvelden', 'alreadyLoaded' : 'al ingeladen in data.', 'errorInFetching' : 'Error in ophalen', 'dataAvailable' : 'Data al beschikbaar', 'loading' : 'Laden...', }; break; case 'Hulp elementen': $scope.groups.labels = { 'of': 'van', 'rows': 'rijen', 'lastUpdated': 'Laatste wijziging', 'showNotSelectedRows': 'Toon niet geselecteerde rijen', 'showSelectedRows': 'Toon geselecteerde rijen', 'selectAllRows': 'Selecteer alle rijen', 'deSelectAllRows': 'De-selecteer alle rijen', 'selectFilteredRows': 'Selecteer gefilterde rijen', 'deSelectFilteredRows': 'De-selecteer gefilterde rijen', 'false': 'Mislukt', 'true': 'Gelukt', 'statistics': 'Statistieken', 'deleteAllRowsMessage': 'Let op! Je staat op het punt alle geselecteerde rijen te verwijderen', 'ready' : 'Klaar', 'processSubFields' : 'Verwerk subvelden', 'alreadyLoaded' : 'al ingeladen in data.', 'errorInFetching' : 'Error in ophalen', 'dataAvailable' : 'Data al beschikbaar', 'loading' : 'Laden...', }; break; case 'Gebruikers': $scope.users.labels = { 'of': 'van', 'rows': 'rijen', 'lastUpdated': 'Laatste wijziging', 'showNotSelectedRows': 'Toon niet geselecteerde rijen', 'showSelectedRows': 'Toon geselecteerde rijen', 'selectAllRows': 'Selecteer alle rijen', 'deSelectAllRows': 'De-selecteer alle rijen', 'selectFilteredRows': 'Selecteer gefilterde rijen', 'deSelectFilteredRows': 'De-selecteer gefilterde rijen', 'false': 'Nee', 'true': 'Ja', 'statistics': 'Statistieken', 'deleteAllRowsMessage': 'Let op! Je staat op het punt alle geselecteerde rijen te verwijderen', 'ready' : 'Klaar', 'processSubFields' : 'Verwerk subvelden', 'alreadyLoaded' : 'al ingeladen in data.', 'errorInFetching' : 'Error in ophalen', 'dataAvailable' : 'Data al beschikbaar', 'loading' : 'Laden...', }; break; case 'Doorlooptijden': $scope.run_times.labels = { 'of': 'van', 'rows': 'rijen', 'lastUpdated': 'Laatste wijziging', 'showNotSelectedRows': 'Toon niet geselecteerde rijen', 'showSelectedRows': 'Toon geselecteerde rijen', 'selectAllRows': 'Selecteer alle rijen', 'deSelectAllRows': 'De-selecteer alle rijen', 'selectFilteredRows': 'Selecteer gefilterde rijen', 'deSelectFilteredRows': 'De-selecteer gefilterde rijen', 'false': 'Mislukt', 'true': 'Gelukt', 'statistics': 'Statistieken', 'deleteAllRowsMessage': 'Let op! Je staat op het punt alle geselecteerde rijen te verwijderen', 'ready' : 'Klaar', 'processSubFields' : 'Verwerk subvelden', 'alreadyLoaded' : 'al ingeladen in data.', 'errorInFetching' : 'Error in ophalen', 'dataAvailable' : 'Data al beschikbaar', 'loading' : 'Laden...', }; break; case 'Doorlooptermijnen': $scope.run_terms.labels = { 'of': 'van', 'rows': 'rijen', 'lastUpdated': 'Laatste wijziging', 'showNotSelectedRows': 'Toon niet geselecteerde rijen', 'showSelectedRows': 'Toon geselecteerde rijen', 'selectAllRows': 'Selecteer alle rijen', 'deSelectAllRows': 'De-selecteer alle rijen', 'selectFilteredRows': 'Selecteer gefilterde rijen', 'deSelectFilteredRows': 'De-selecteer gefilterde rijen', 'false': 'Mislukt', 'true': 'Gelukt', 'statistics': 'Statistieken', 'deleteAllRowsMessage': 'Let op! Je staat op het punt alle geselecteerde rijen te verwijderen', 'ready' : 'Klaar', 'processSubFields' : 'Verwerk subvelden', 'alreadyLoaded' : 'al ingeladen in data.', 'errorInFetching' : 'Error in ophalen', 'dataAvailable' : 'Data al beschikbaar', 'loading' : 'Laden...', }; break; } } });