1var myapp = angular.module('myApp', ['ngRoute','dirPagination','720kb.datepicker','checklist-model','textAngular','ngSanitize','infinite-scroll','ng-fusioncharts']); 2var base_url = "https://customer.vitelglobal.com/"; 3/* ---- Service Function ---- */ 4 5/* ---- Alert Msg and Pagination function ---- */ 6myapp.service('myService', function () { 7 // this.resMessage = function (scope,timeout,errcode) { 8 // scope.alertMsg = true; 9 // if(errcode == 200){ scope.class = "alert-success"; }else{ scope.class = "alert-danger"; } 10 // timeout(function () { scope.alertMsg = false; }, 3000); 11 // } 12 this.resMessage = function(scope,timeout,errcode,errmsg){ 13 // $('.modal-backdrop').hide(); 14 // document.getElementById("vg_body").style.overflow = 'inherit'; 15 if(errcode == 200){ 16 // swal({ 17 // html: `<h4>Success.</h4>`, 18 // icon: "success", 19 // timer: 3000, 20 // showConfirmButton:false, 21 // }); 22 23 new swal({ 24 type: 'success', 25 title: '<h4>'+errmsg+'</h4>', 26 showConfirmButton: fal
26se, 27 timer: 3000, 28 buttonsStyling: false 29 }) 30 } 31 else{ 32 // swal({ 33 // html: '<h4>Failed '+errmsg+'</h4>', 34 // icon: "error", 35 // timer: 3000, 36 // showConfirmButton:false, 37 // }); 38 39 new swal({ 40 type: 'error', 41 title: '<h4>'+errmsg+'</h4>', 42 showConfirmButton: false, 43 timer: 3000, 44 buttonsStyling: false 45 }) 46 } 47 48 } 49 this.info = function(){ 50 swal({ 51 html: `<h4>Please select any Row to edit.</h4>`, 52 icon: "info", 53 timer: 3000, 54 showConfirmButton:false, 55 }); 56 } 57 this.pagination = function (scope,pageno,pagesize,datalength,totalcount) { 58 scope.totalCount = totalcount; 59 scope.cpage = pageno; 60 scope.startval = (pageno-1)*pagesize+1; 61 scope.endval = datalength.length+(pagesize*(pageno - 1)); 62 if(datalength.length == 0){ scope.startval = 0;} 63 } 64}); 65 66/* ---- fileupload function ---- */ 67myapp.directive('fileModel', ['$parse', function ($parse) { 68 return { 69 restrict: 'A', 70 link: function(scope, element, attrs) { 71 var model = $parse(attrs.fileModel); 72 var modelSetter = model.assign; 73 74 element.bind('change', function(){ 75 scope.$apply(function(){ 76 modelSetter(scope, element[0].files[0]); 77 }); 78 }); 79 } 80 }; 81}]); 82myapp.directive("fileInput", function($parse){ 83 return{ 84 link: function($scope, element, attrs){ 85 element.on("change", function(event){ 86 var files = event.target.files; 87 //console.log(files[0].name); 88 $parse(attrs.fileInput).assign($scope, element[0].files); 89 $scope.$apply(); 90 }); 91 } 92 } 93}); 94myapp.directive('allowDecimalNumbers', function () { 95 return { 96 restrict: 'A', 97 link: function (scope, elm, attrs, ctrl) { 98 elm.on('keydown', function (event) { 99 var $input = $(this); 100 var value = $input.val(); 101 value = value.replace(/[^0-9\.]/g, '') 102 $input.val(value); 103 if (event.which == 64 || event.which == 16) { 104 // numbers 105 return false; 106 } if ([9, 8, 13, 27, 37, 38, 39, 40, 110].indexOf(event.which) > -1) { 107 // backspace, enter, escape, arrows 108 return true; 109 } else if (event.which >= 48 && event.which <= 57) { 110 // numbers 111 return true; 112 } else if (event.which >= 96 && event.which <= 105) { 113 // numpad number 114 return true; 115 } else if ([46, 110, 190].indexOf(event.which) > -1) { 116 // dot and numpad dot 117 return true; 118 } else { 119 event.preventDefault(); 120 return false; 121 } 122 }); 123 } 124 } 125}); 126 127myapp.filter('customJoin', function() { 128 return function(input) { 129 var arr = input.join(', '); return arr; 130 }; 131}); 132 133 134/* ---- CONTROLLER FUNCTION ---- */ 135//For Login Page - Start 136myapp.controller("loginController", function($scope,$http,$window,$timeout,myService) { 137 $scope.loginData = function (formdata, varResult){ 138 var config = { params: { formdata : formdata } }; 139 $http.post(base_url+"login/checklogin", null, config).then(function(response){ 140 if(response.data.errcode == 200){ 141 $window.location.href = base_url+response.data.errmsg; 142 } 143 else{ 144 $scope[varResult] = response.data.errmsg; 145 myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 146 } 147 }); 148 }; 149 150 $scope.forgetPass = function (forget, varResult){ 151 var config = { params: { formdata : forget } }; 152 $http.post(base_url+"login/forget_password", null, config).then(function(response){ 153 if(response.data.errcode == 200){ 154 $('#exampleModal').modal('hide'); 155 $('#forgot_username').val(''); 156 $('#forgot_captcha').val(''); 157 } 158 $scope[varResult] = response.data.errmsg; 159 myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 160 161 }); 162 }; 163 164}); 165//For Login Page - End 166 167//For Dashboard Page - Start 168myapp.controller("dashboardController", function($scope,$http,$timeout,$window) 169{ 170 var tdate = new Date(); 171 var dd = tdate.getDate(); //yields day 172 var MM = tdate.getMonth(); //yields month 173 var yyyy = tdate.getFullYear(); //yields year 174 var currentDate= yyyy + "-" + ( MM+1) + "-" + dd; 175 $scope.list_given_in = {inc_internal:'1',starttime:'00',endtime:'23',starttime:'00',endtime:'23',startdate:currentDate,enddate:currentDate,callbound:'in'}; 176 $scope.list_given_out = {inc_internal:'1',starttime:'00',endtime:'23',starttime:'00',endtime:'23',startdate:currentDate,enddate:currentDate,callbound:'out'}; 177 178 $scope.inboundCalltotal = function () 179 { 180 $scope.loader = true; var config = {params: { page:1, size:$scope.pageSize, formdata : $scope.list_given_in}}; 181 $http.post(base_url+"call_records/tabledata", null, config).then(function(response) 182 { 183 // console.log("inbound total data"+response.data.tableData); 184 // console.log("inbound total count"+response.data.totalCount); 185 $scope.inboundcallcount = response.data.totalCount; 186 $scope.outboundCalltotal(); 187 }); 188 }; 189 $scope.inboundCalltotal(); 190 $scope.outboundCalltotal = function () 191 { 192 $scope.loader = true; var config = {params: { page:1, size:$scope.pageSize, formdata : $scope.list_given_out}}; 193 $http.post(base_url+"call_records/tabledata", null, config).then(function(response){ 194 $scope.outboundcallcount = response.data.totalCount; 195 }); 196 }; 197 198 199 $scope.getCallsData = function () 200 { 201 // Create a new Date object with the desired date 202 var date = new Date($scope.startdate); 203 204 205 var utcTimestamp = date.getTime(); 206 var estOffset = 9.5 * 60 * 60 * 1000; 207 var estTimestamp = utcTimestamp + estOffset; 208 var estDate = new Date(estTimestamp); 209 210 // Define an array of weekday names 211 var daysOfWeek = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; 212 213 // Get the day index (0-6) from the date object 214 var dayIndex = estDate.getDay(); 215 216 // Get the day name from the daysOfWeek array using the day index 217 var dayName = daysOfWeek[dayIndex]; 218 document.getElementById("selecteddayname1").innerHTML = document.getElementById("selecteddayname").innerHTML = dayName; 219 // Format the date to "Jul 06, 2023" using the built-in Date methods 220 var formattedDate = date.toLocaleDateString("en-US", { month: "short", day: "2-digit", year: "numeric" }); 221 var formattedDate = estDate.toLocaleDateString("en-US", { month: "short", day: "2-digit", year: "numeric" }); 222 document.getElementById("selecteddate").innerHTML = document.getElementById("selecteddate1").innerHTML = formattedDate; 223 // Output the formatted date 224 console.log(formattedDate); // Output: "Thu Jul 06, 2023" 225 $scope.list_given_in = {inc_internal:'1',starttime:'00',endtime:'23',starttime:'00',endtime:'23',startdate:$scope.startdate,enddate:$scope.startdate,callbound:'in'}; 226 $scope.list_given_out = {inc_internal:'1',starttime:'00',endtime:'23',starttime:'00',endtime:'23',startdate:$scope.startdate,enddate:$scope.startdate,callbound:'out'}; 227 228 $scope.inboundCalltotal(); 229 //$scope.outboundCalltotal(); 230 }; 231 232 $scope.recordCount = 0; 233 234 $http.get(base_url+"dashboard/user_detail").then(function(response) 235 { 236 // console.log(response); 237 $scope.user = response.data.user; 238 $scope.service = response.data.service; 239 $scope.ticket = response.data.ticket; 240 $scope.login = response.data.login_detail; 241 //console.log('dhdjhj',$scope.user.two_factor_authentication); 242 if($scope.user.two_factor_authentication == 'Y') 243 { 244 //$('#myModal').modal('hide'); 245 } 246 else 247 { 248 //$('#myModal').modal('show'); 249 } 250 }); 251 252 $http.get(base_url+"manage_users/userdetail").then(function(response) { $scope.subusers = response.data; }); 253 254
255 $scope.satext = ''; 256 $scope.getExtensionData = function() 257 { 258 $scope.loader = true; 259 var config = { params: { ext:$scope.selectedextension } }; 260 $http.post(base_url+"user_extensions/getExtensionSelected", null, config).then(function(response) 261 { 262 $scope.loader = false; 263 window.location.reload(); 264 }); 265 } 266 267 268 269 $scope.getAlert = function() 270 { 271 //$scope.ajaxResult = "Please Select Extension"; myService.resMessage($scope,$timeout,202); 272 swal({ 273 html: `<h4>Please Select Extension.</h4>`, 274 icon: "error", 275 timer: 3000, 276 showConfirmButton:false, 277 }); 278 } 279 $http.get(base_url+"user_extensions/subext_list").then(function(response) 280 { 281 $scope.cc = response.data.assignext; console.log(response.data); 282 $timeout(function () { $scope.satext = $scope.selectedextension = response.data.selectedext; }, 3000); 283 var today = new Date(); 284 var dd = String(today.getDate()).padStart(2, '0'); 285 var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0! 286 var yyyy = today.getFullYear(); 287 288 today = yyyy + '-' + mm + '-' + dd; 289 290 $scope.callreports = {startdate:today,enddate:today,sd:response.data.selectedext}; 291 $scope.pageno = 1; // initialize page no to 1 292 $scope.selectables = [ {value: 25},{value: 50},{value: 100}, {value: 200}, {value: 300}, {value: 500} ]; 293 $scope.pageSize = "25"; 294 295 $scope.loader = true; var config = {params: { page:$scope.pageno, size:$scope.pageSize, formdata : $scope.callreports}}; 296 $http.post(base_url+"call_records/individual_tabledata", null, config).then(function(response){ 297 // console.log(response); 298 $scope.loader = false; $scope.tableData = true; 299 $scope.callreport = response.data.tabledata; $scope.inbound = response.data.inbound; $scope.outbound = response.data.outbound; 300 $scope.answered = response.data.answered; $scope.noanswer = response.data.noanswered; $scope.busy = response.data.busy; $scope.voicemail = response.data.voicemail; 301 //myService.pagination($scope,$scope.pageno,$scope.pageSize,$scope.callreport,response.data.totalCount); 302 if(response.data.errmsg != ''){ $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,202); } 303 }); 304 305 306 }); 307}); 308//For Dashboard Page - End 309 310//For Contact Info Page - Start 311 312//For Contact Info Page - End 313 314//For User Document Page - Start 315myapp.controller("userdocuController", function($scope,$http,$timeout,myService) { 316 317 318 $scope.sortReverse = false; 319 $scope.sortColumn = function(column) { 320 if ($scope.sortType === column) { 321 $scope.sortReverse = !$scope.sortReverse; 322 } else { 323 $scope.sortType = column; 324 $scope.sortReverse = false; 325 } 326 }; 327 $scope.sortclass = function (column) { 328 if($scope.sortType === column){ 329 return $scope.sortReverse ? 'arrow-dow' : 'arrow-up' 330 } 331 return ''; 332 } 333 334 335 $scope.pageno = 1; // initialize page no to 1 336 $scope.selectables = [ {value: 200}, {value: 400}, {value: 600}, {value: 800} ]; 337 $scope.pageSize = "200"; 338 339 $scope.searchKey = ''; 340 $scope.searchData = function(){ $scope.loadDocu(); } 341 $scope.pageData = function(pageno){ $scope.pageno = pageno; $scope.loadDocu(); } 342 $scope.loadDocu = function () 343 { 344 var config = {params:{page:$scope.pageno, size:$scope.pageSize, keyword:$scope.searchKey}}; 345 $http.post(base_url+"user_document/tabledata", null, config).then(function(response){ 346 $scope.userdoc = response.data.tabledata; 347 myService.pagination($scope,$scope.pageno,$scope.pageSize,$scope.userdoc,response.data.totalCount); 348 }); 349 350 }; 351 $scope.loadDocu(); 352}); 353//For User Document Page - End 354//for push notifications - start 355 356myapp.controller("pushnotifcontroller", function($scope,$http,$timeout,myService) { 357 $scope.createnotif = function(push, varResult) { 358 $scope.loader = true; var config = {params:{formdata:push}}; 359 $http.post(base_url+"Push_notifications_test/index", null, config).then(function(response){ 360 console.log(response.data); 361 //$scope.listnotif(); 362 $scope.showNotification(response.data); 363 }); 364 365 }; 366 // $scope.listnotif = function() { 367 // $http.post(base_url+"Push_notifications/index", null).then(function(response){ 368 // console.log(response.data); 369 // $scope.showNotification(response.data); 370 // }); 371 372 // }; 373 $scope.showNotification = function(data){ 374 if (Notification.permission !== "granted") { 375 Notification.requestPermission(); 376 } else { 377 if(data.result == true) { 378 var data_notif = data.notif; 379 for (var i = data_notif.length - 1; i >= 0; i--) { 380 var theurl = data_notif[i]['url']; 381 var notifikasi = new Notification(data_notif[i]['title'], { 382 icon: data_notif[i]['icon'], 383 body: data_notif[i]['msg'], 384 });
385 notifikasi.onclick = function () { 386 window.open(theurl); 387 notifikasi.close(); 388 }; 389 // setTimeout(function(){ 390 // notifikasi.close(); 391 // }, 8000); 392 }; 393 } else { 394 } 395 } 396} 397}); 398 399//for push notifications- end 400//For Manage User Page - Start 401myapp.controller("manageuserController", function($scope,$http,$timeout,myService) { 402 403 $scope.sortReverse = false; 404 $scope.sortColumn = function(column) { 405 if ($scope.sortType === column) { 406 $scope.sortReverse = !$scope.sortReverse; 407 } else { 408 $scope.sortType = column; 409 $scope.sortReverse = false; 410 } 411 }; 412 $scope.sortclass = function (column) { 413 if($scope.sortType === column){ 414 return $scope.sortReverse ? 'arrow-dow' : 'arrow-up' 415 } 416 return ''; 417 } 418 419 420 $http.get(base_url+"my_account/user_detail").then(function(response) { 421 $scope.countuser = response.data; 422 }); 423 424 $scope.loadData = function(){ 425 $http.get(base_url+"manage_users/userdetail").then(function(response){ $scope.users = response.data; }); 426 } 427 428 $scope.roles = [{id: 'Admin', name: 'Admin'},{id: 'Suser', name: 'Sub User'}]; 429 $scope.status = [{id: 'Active', name: 'Active'},{id: 'inactive', name: 'Inactive'}]; 430 431 $scope.add = function(currentRow) { 432 $scope.user = {"status":''}; 433 //$scope.showTable = true; 434 $scope.addBtn = true; 435 $scope.editBtn = false; 436 $('#vg_subuser').modal('show'); 437 } 438 439 $scope.edit = function(currentRow) { 440 $scope.currentrow = currentRow; $scope.user = angular.copy($scope.currentrow); 441 //$scope.showTable = true; 442 $scope.addBtn = false; 443 $scope.editBtn = true; 444 $('#vg_subuser').modal('show'); 445 } 446 447 $scope.cancel = function() { 448 $scope.loadData(); $scope.showTable = false; $scope.addBtn = false; $scope.editBtn = false; 449 } 450 451 $scope.removeData = function(index) { 452 swal({ 453 type: 'warning', 454 title: '<h4>Are you sure you want to delete User?</h4>', 455 showConfirmButton: true, 456 confirmButtonText: "Yes, Delete!", 457 showCancelButton:true, 458 buttonsStyling: true, 459 showLoaderOnConfirm: true, 460 }).then((result) => { 461 if (result.value) { 462 $scope.loader = true; var config = { params: { formdata : index } }; 463 $http.post(base_url+"manage_users/deletedata", null, config).then(function(response){ $scope.loader = false; 464 if(response.data.errcode == 200){ $scope.loadData(); } 465 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 466 }); 467 } else if (result.dismiss === 'cancel') { 468 swal( 469 'Cancelled', 470 'Your stay here :)', 471 'error' 472 ) 473 } 474 }) 475 476 }; 477 478 $scope.createData = function(user, varResult) { 479 $scope.loader = true; var config = { params: { formdata : user } }; 480 $http.post(base_url+"manage_users/insertdata", null, config).then(function(response){ $scope.loader = false; 481 if(response.data.errcode == 200){ $scope.loadData(); 482 $scope.showTable = false; 483 } 484 $('#vg_subuser').modal('hide'); 485 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 486 }); 487 }; 488 489 $scope.updateData = function(user,varResult) { 490 $scope.loader = true; var config = { params: { formdata : user } }; 491 $http.post(base_url+"manage_users/updatedata", null, config).then(function(response){ $scope.loader = false; 492 if(response.data.errcode == 200){ $scope.loadData(); 493 $scope.showTable = false; 494 } 495 $('#vg_subuser').modal('hide'); 496 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 497 }); 498 }; 499 500 $scope.loadData(); 501}); 502//For Manage User Page - End 503 504//For User Permission Page - Start 505myapp.controller("permissionController", function($scope,$http,$timeout,$location,myService) { 506 $urid = window.location.href.substr(window.location.href.lastIndexOf('/') + 1); 507 if($urid != ''){ $scope.suid = $urid; }else{ $scope.suid = '0'; } 508 $http.get(base_url+"permission/menudata").then(function(response) { 509 $scope.menus = response.data.menu; 510 $scope.actions = response.data.action; 511 $scope.mmenuid = response.data.mm; 512 $scope.smenuid = response.data.sm; 513 $scope.edit = response.data.edit; 514 $scope.del = response.data.del; 515 $scope.down = response.data.down; 516 $scope.other = response.data.other; 517 $scope.ex1 = response.data.ex1; 518 $scope.ex2 = response.data.ex2; 519 $scope.ex3 = response.data.ex3; 520 $scope.ex4 = response.data.ex4; 521 $scope.ex5 = response.data.ex5; 522 }); 523 524 $http.post(base_url+"permission/subuserlist").then(function(response){ $scope.userlists = response.data; }); 525 526 $scope.selectUser = function(val){ 527 $scope.loader = true; var config = {params:{suser:val}}; $scope.chkVal = false; 528 $http.post(base_url+"permission/usermenu", null, config).then(function(response) { $scope.loader = false; 529 $scope.username = response.data.username; 530 if(response.data != ''){ 531 $scope.user = { 532 pmid:response.data.parent.split(","), 533 cmid:response.data.child.split(","), 534 edit:response.data.edit.split(","), 535 remove:response.data.remove.split(","), 536 download:response.data.download.split(","), 537 other:response.data.other.split(","), 538 ex1:response.data.ex1.split(","), 539 ex2:response.data.ex2.split(","), 540 ex3:response.data.ex3.split(","), 541 ex4:response.data.ex4.split(","), 542 ex5:response.data.ex5.split(",") 543 // ex4:response.data.ex4.split(",") 544 // ex5:response.data.ex5.split(",") 545 }; 546 } 547 else{ 548 $scope.user = {pmid:'',cmid:'',edit:'',remove:'',download:'',other:'',ex1:'',ex2:'',ex3:'',ex4:'',ex5:''}; 549 } 550 }); 551 } 552 $scope.selectUser($urid); 553 554 $scope.checkAll = function() { 555 if($scope.chkVal == true){ 556 $scope.user.pmid = angular.copy($scope.mmenuid); 557 $scope.user.cmid = angular.copy($scope.smenuid); 558 $scope.user.edit = angular.copy($scope.edit); 559 $scope.user.remove = angular.copy($scope.del); 560 $scope.user.download = angular.copy($scope.down);
561 $scope.user.other = angular.copy($scope.other); 562 $scope.user.ex1 = angular.copy($scope.ex1); 563 $scope.user.ex2 = angular.copy($scope.ex2); 564 $scope.user.ex3 = angular.copy($scope.ex3); 565 $scope.user.ex4 = angular.copy($scope.ex4); 566 $scope.user.ex5 = angular.copy($scope.ex5); 567 } 568 else{ 569 $scope.user.pmid = ''; 570 $scope.user.cmid = ''; 571 $scope.user.edit = ''; 572 $scope.user.remove = ''; 573 $scope.user.download = ''; 574 $scope.user.other = ''; 575 $scope.user.ex1 = ''; 576 $scope.user.ex2 = ''; 577 $scope.user.ex3 = ''; 578 $scope.user.ex4 = ''; 579 $scope.user.ex5 = ''; 580 } 581 }; 582 583 $scope.saveChanges = function(user,varResult) { 584 var check_len=$("input:checkbox:checked").length; 585 586 if(check_len =='' || check_len<=0) 587 { 588 $scope.ajaxResult = "Please select atleast one Menu to assign"; myService.resMessage($scope,$timeout,202,$scope.ajaxResult); 589 return false; 590 } 591 else 592 { 593 $scope.loader = true; var config = {params:{ menu_id:user,suser:$scope.suid }}; 594 $http.post(base_url+"permission/save_menuid", null, config).then(function(response){ $scope.loader = false; 595 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 596 }); 597 } 598 }; 599 600 601// $scope.checkParentMenu = function(parentId){ 602 603// if(!$scope.user.pmid){ 604// $scope.user.pmid = []; 605// } 606 607// if($scope.user.pmid.indexOf(parentId) === -1){ 608// $scope.user.pmid.push(parentId); 609// } 610// }; 611 612 613// $scope.toggleParent = function(parentMenu) { 614 615// if (!$scope.user.cmid) { 616// $scope.user.cmid = []; 617// } 618 619// // If parent is unchecked → remove all child menus 620// if ($scope.user.pmid.indexOf(parentMenu.id) === -1) { 621 622// angular.forEach($scope.menus, function(menu) { 623// if (menu.menu_pid == parentMenu.id) { 624// let index = $scope.user.cmid.indexOf(menu.id); 625// if (index !== -1) { 626// $scope.user.cmid.splice(index, 1); 627// } 628// } 629// }); 630// } 631// }; 632 633$scope.checkParentMenu = function(parentId){ 634 635 if(!$scope.user.pmid){ 636 $scope.user.pmid = []; 637 } 638 639 if(!$scope.user.cmid){ 640 $scope.user.cmid = []; 641 } 642 643 // delay to sync with checklist-model 644 setTimeout(function(){ 645 646 // check if ANY child is selected 647 let hasChild = $scope.menus.some(function(menu){ 648 return menu.menu_pid == parentId && 649 $scope.user.cmid.indexOf(menu.id) !== -1; 650 }); 651 652 let pIndex = $scope.user.pmid.indexOf(parentId); 653 654 if(hasChild){ 655 // ensure parent checked 656 if(pIndex === -1){ 657 $scope.user.pmid.push(parentId); 658 } 659 } else { 660 // no submenu selected → uncheck parent 661 if(pIndex !== -1){ 662 $scope.user.pmid.splice(pIndex, 1); 663 } 664 } 665 666 if(!$scope.$$phase){ 667 $scope.$apply(); 668 } 669 670 }, 0); 671}; 672 673 674$scope.uncheckChildren = function(parentId){ 675 676 if(!$scope.user.cmid){ 677 $scope.user.cmid = []; 678 } 679 680 setTimeout(function(){ 681 682 if($scope.user.pmid.indexOf(parentId) === -1){ 683 684 angular.forEach($scope.menus, function(menu){ 685 if(menu.menu_pid == parentId){ 686 687 let index = $scope.user.cmid.indexOf(menu.id); 688 if(index !== -1){ 689 $scope.user.cmid.splice(index, 1); 690 } 691 692 } 693 }); 694 695 if(!$scope.$$phase){ 696 $scope.$apply(); 697 } 698 } 699 700 }, 0); 701}; 702 703}); 704//For User Permission Page - End 705 706//For Assign CDR Page - Start 707myapp.controller("assigncdrController", function($scope,$http,$timeout,$location,myService) { 708 $urid = window.location.href.substr(window.location.href.lastIndexOf('/') + 1); 709 710 $http.get(base_url+"assign_cdr/extension").then(function(response) { 711 //console.log(response); 712 $scope.extension = response.data.extension.split(","); 713 $scope.disName = response.data.disName.split(","); 714 715 let extensionMap = $scope.extension.reduce((map, ext, idx) => { 716 map[ext] = $scope.disName[idx] || " "; 717 return map; 718 }, {}); 719
720 // Optionally assign to scope if needed for UI display 721 $scope.extensionMap = extensionMap; 722 //console.log('gdgg',extensionMap); 723 }); 724 725 $http.get(base_url+"assign_cdr/userlist").then(function(response) { 726 $scope.userlists = response.data; $scope.userlist = {"user_id":$urid}; 727 }); 728 729 $scope.assignExt = function(userid) { 730 $scope.loader = true; var config = {params:{suser:userid}}; 731 $http.post(base_url+"assign_cdr/assignext", null, config).then(function(response) { $scope.loader = false; 732 if(response.data.assigned_lines != 0){ 733 $scope.user = {extension: response.data.assigned_lines.split(",")}; 734 }else{ 735 $scope.user = {extension:''}; 736 } 737 }); 738 } 739 740 $scope.assignExt($urid); 741 $scope.selectUser = function(userlist){ $scope.assignExt(userlist.user_id); }; 742 743 $scope.checkAll = function() { 744 if($scope.chkVal == true){ 745 $scope.user.extension = angular.copy($scope.extension); 746 }else{ 747 $scope.user.extension = ''; 748 } 749 }; 750 751 $scope.saveChanges = function(ext,seluser,varResult) { 752 var check_len=$("input:checkbox:checked").length; 753 754 if(check_len =='' || check_len<=0) 755 { 756 $scope.ajaxResult = "Please select atleast one Extention"; myService.resMessage($scope,$timeout,202,$scope.ajaxResult); 757 return false; 758 } 759 else 760 { 761 $scope.loader = true; var config = {params:{ ext, user_id:seluser.user_id }}; 762 $http.post(base_url+"assign_cdr/save_assignext", null, config).then(function(response){ $scope.loader = false; 763 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 764 }); 765 } 766 }; 767}); 768//For Assign CDR Page - End 769 770//For Assign Extension Page - Start 771myapp.controller("userextController", function($scope,$http,$timeout,$location,myService) { 772 $urid = window.location.href.substr(window.location.href.lastIndexOf('/') + 1); 773 // $http.get(base_url+"manage_userext/extension").then(function(response) { 774 // $scope.extension = response.data.extension.split(","); 775 // }); 776 777 $http.get(base_url+"assign_cdr/extension").then(function(response) { 778 $scope.extension = response.data.extension.split(","); 779 $scope.disName = response.data.disName.split(","); 780 781 let extensionMap = $scope.extension.reduce((map, ext, idx) => { 782 map[ext] = $scope.disName[idx] || " "; 783 return map; 784 }, {}); 785
786 // Optionally assign to scope if needed for UI display 787 $scope.extensionMap = extensionMap; 788 }); 789 790 $http.get(base_url+"manage_userext/userlist").then(function(response) { 791 $scope.userlists = response.data; $scope.userlist = {"user_id":$urid}; 792 }); 793 794 $scope.assignExt = function(userid) { 795 $scope.loader = true; var config = {params:{suser:userid}}; 796 $http.post(base_url+"manage_userext/userext", null, config).then(function(response) { $scope.loader = false; 797 if(response.data.assigned_lines != 0){ 798 $scope.user = {extension: response.data.assigned_lines.split(",")}; 799 }else{ 800 $scope.user = {extension:''}; 801 } 802 }); 803 } 804 805 $scope.assignExt($urid); 806 $scope.selectUser = function(userlist){ $scope.assignExt(userlist.user_id); }; 807 808 $scope.checkAll = function() { 809 if($scope.chkVal == true){ 810 $scope.user.extension = angular.copy($scope.extension); 811 } 812 else{ 813 $scope.user.extension = ''; 814 } 815 }; 816 817 $scope.saveChanges = function(ext,seluser,varResult) { 818 var check_len=$("input:checkbox:checked").length; 819 820 if(check_len =='' || check_len<=0) 821 { 822 $scope.ajaxResult = "Please select atleast one Extention"; myService.resMessage($scope,$timeout,202,$scope.ajaxResult); 823 return false; 824 } 825 else 826 { 827 $scope.loader = true; var config = {params:{ ext, user_id:seluser.user_id }}; 828 $http.post(base_url+"manage_userext/save_userext", null, config).then(function(response){ $scope.loader = false; 829 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 830 }); 831 } 832 }; 833}); 834//For Assign Extension Page - End 835 836 837 838//For Time Zone Page - Start 839myapp.controller("timezoneController", function($scope,$http,$timeout,myService) { 840 $http.get(base_url+"time_zone/timezones").then(function(response){ $scope.zones = response.data; }); 841 $http.get(base_url+"my_account/user_detail").then(function(response){ 842 $scope.selzone = {"time_zone":response.data.time_zone} }); 843 844 $scope.timeZone = function(zone,varResult) { 845 $scope.loader = true; var config = { params: { formdata : zone } }; 846 $http.post(base_url+"time_zone/updatedata", null, config).then(function(response){ $scope.loader = false; 847 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 848 }); 849 }; 850}); 851//For Time Zone Page - End 852 853//For Fail2Ban Page - Start 854myapp.controller("failtoban", function($scope,$http,$timeout,myService) 855{ 856 $scope.command= function(status) 857 { 858 if(status == 'B' || status=='U'){ 859 $scope.displayipaddress = true; 860 } 861 else{ 862 $scope.displayipaddress = false; 863 } 864 } 865 866 $scope.sub_failtoban = function(val) 867 { 868 869 console.log(val.commands) 870 $scope.loader = true; 871 var config = {params:{fail:val}}; 872 $http.post(base_url+"user_dids/manage_failtoban", null, config).then(function(response) 873 { 874 $scope.loader = false; 875 $scope.iplistsblocked = true; 876 $scope.ajaxResult = response.data.errmsg; 877 $scope.failtobanlist = response.data.allip; 878 if(val.commands!='S'){ 879 myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 880 } 881 if(response.data.errcode == 200) 882 { 883 $scope.ext = {}; $scope.did = {}; $scope.extlist = {}; 884 885 886 } 887 }); 888 } 889 890}); 891 892 893myapp.controller("firewall", function($scope,$http,$timeout,myService) 894{ 895 // $scope.command= function(status) 896 // { 897 // if(status == 'B' || status=='U'){ 898 // $scope.displayipaddress = true; 899 // } 900 // else{ 901 // $scope.displayipaddress = false; 902 // } 903 // } 904 905 $scope.sub_failtobanlist = function() 906 { 907 $scope.bl= "S"; 908 $scope.loader = true; 909 var config = {params:{fail:$scope.bl}}; 910 $http.post(base_url+"user_dids/manage_firewall", null, config).then(function(response) 911 { 912 $scope.loader = false; 913 $scope.iplistsblocked = true; 914 $scope.ajaxResult = response.data.errmsg; 915 $scope.failtobanlist = response.data.allip; 916 $scope.failtobanallowlist = response.data.allowip; 917 // myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 918 // if(response.data.errcode == 200) 919 // { 920 // $scope.ext = {}; $scope.did = {}; $scope.extlist = {}; 921 922 923 // } 924 }); 925 } 926 927 $scope.sub_failtobanlist(); 928 929 $scope.sub_failtobann = function(did) 930 { 931 $scope.b= "B"; 932 $scope.loader = true; 933 var config = {params:{fail:did,commands:$scope.b}}; 934 $http.post(base_url+"user_dids/manage_firewall", null, config).then(function(response) 935 { 936 $scope.loader = false; 937 $scope.iplistsblocked = true; 938 $scope.ajaxResult = response.data.errmsg; 939 $scope.failtobanlist = response.data.allip; 940 myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 941 if(response.data.errcode == 200) 942 { 943 $scope.ext = {}; $scope.did = {}; $scope.extlist = {}; 944 $scope.sub_failtobanlist(); 945 946 947 } 948 }); 949 } 950 951 $scope.sub_failtounbann = function(did) 952 { 953 954 $scope.ub= "U"; 955 $scope.loader = true; 956 var config = {params:{fail:did,commands:$scope.ub}}; 957 $http.post(base_url+"user_dids/manage_firewall", null, config).then(function(response) 958 { 959 $scope.loader = false; 960 $scope.iplistsblocked = true; 961 $scope.ajaxResult = response.data.errmsg; 962 $scope.failtobanlist = response.data.allip; 963 myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 964 if(response.data.errcode == 200) 965 { 966 $scope.ext = {}; $scope.dids = {}; $scope.extlist = {}; 967 $scope.sub_failtobanlist(); 968 969 970 } 971 }); 972 } 973 974}); 975//For Fail2Ban Page - End 976 977//For Daily Graph Page - Start 978myapp.controller("dailyGraph", function($scope,$http,$timeout,myService) 979{ 980 $scope.myDataSource = {}; $scope.callreports = {startdate:'', enddate:'', inc_internal:'1'}; $scope.tableData = false; 981 $scope.previousdayReport = function () 982 { 983 $scope.loader = true; var config = {params:{formdata:$scope.callreports}}; 984 $http.post(base_url+"call_records/daily_report_graph", null, config).then(function(response){ $scope.loader = false; $scope.tableData = true; 985 $scope.categories = response.data.categories; $scope.dataset = response.data.dataset; 986 $scope.chart = {caption: "Daily Consolidate Report", subcaption: "", xaxisname: "Extension", yaxisname: "No of Calls", plotToolText:"$seriesname - $dataValue", numvisibleplot: "40", labeldisplay: "auto", theme: "fusion"}; 987 $scope.myDataSource = {chart:$scope.chart,categories:$scope.categories,dataset:$scope.dataset}; 988 }); 989 }; 990}); 991 992//For Call Reports(CDR's) Page - Start 993myapp.controller("callreportsController", function($scope,$http,$timeout,myService) 994{ 995 $scope.pageno = 1; // initialize page no to 1 996 $scope.selectables = [ {value: 1000},{value: 1500},{value: 2000}, {value: 2500}, {value: 3000}, {value: 3500} ]; 997 $scope.pageSize = "500"; 998 $scope.callreports = {inc_internal:'0',starttime:'00',endtime:'23'}; 999 1000 $http.get(base_url+"schedule_report/get_cdrgroup").then(function(response) 1001 { 1002 $scope.consolidate_data = response.data.userdata; //$scope.extlist = response.data.extlist; 1003 }); 1004 1005 //Search Keywords in Table 1006 $scope.searchKey = ''; 1007 $scope.searchAction = function(callreports){ $scope.callreports = callreports; $scope.callRecords(); } 1008 $scope.pageData = function(pageno){ $scope.pageno = pageno; $scope.callRecords(); } 1009 $scope.callRecords = function () 1010 { 1011 const selectBox = document.getElementById("callstatus"); 1012 const selectedOptions = Array.from(selectBox.options).filter(option => option.selected); 1013 const selectedValues = selectedOptions.map(option => option.value); 1014 console.log(selectedValues); 1015 1016 $scope.callreports = angular.extend($scope.callreports,{callstatus:selectedValues}); 1017 $scope.loader = true; 1018 var config = {params: { page:$scope.pageno, size:$scope.pageSize, formdata : $scope.callreports}}; 1019 $http.post(base_url+"call_records/tabledata", null, config).then(function(response) 1020 { $scope.loader = false; $scope.tableData = true; 1021 $scope.callreport = response.data.tabledata; $scope.inbound = response.data.inbound; $scope.outbound = response.data.outbound; 1022 $scope.inbounddur = response.data.inbounddur; $scope.outbounddur = response.data.outbounddur; 1023 myService.pagination($scope,$scope.pageno,$scope.pageSize,$scope.callreport,response.data.totalCount); $scope.user = {callreport:''}; 1024 if(response.data.errmsg != ''){ $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,202); } 1025 }); 1026 }; 1027 1028 1029 $scope.getInboundValue = function(val){ 1030 if(val == 1){ $scope.callreports = angular.extend($scope.callreports,{callbound:''}); }else{ $scope.callreports = angular.extend($scope.callreports,{line:'',dline:'',sd:''}); } 1031 }; 1032 1033 $scope.user = {callreport:''}; 1034 $scope.checkAll = function() { 1035 if($scope.chkVal == true){ 1036 $scope.user = {callreport: angular.copy($scope.callreport)}; 1037 }else{ 1038 $scope.user = {callreport:''}; 1039 } 1040 }; 1041 1042 $scope.voiceMailPlay = function(exten,exten1,exten2,exten3) 1043 { 1044 var fold1 = exten2.replace(/~/g, "/"); //alert(fold1); 1045 var fold = fold1.replace("~", "/"); 1046 var urls = fold1;//exten+".vitelglobal.com/"+exten1+fold; 1047 $scope.loader = true; var config = {params: { path : fold1}};
1048 $http.post(base_url+"call_records/getCdrFile", null, config).then(function(response){ 1049 $scope.loader = false; $('#voicemaillisten').modal('show'); 1050 document.getElementById("extplay").innerHTML = '<audio id="myAudio" controls autoplay controlsList="nodownload"><source src="'+decodeURIComponent(response.data.tabledata)+'" type="audio/wav"></audio>'; 1051 }); 1052 } 1053 1054 $scope.transcript = function(exten,exten1,exten2,exten3,unid,src,dst,calldate) 1055 { 1056 1057 $scope.srccc = src; 1058 $scope.dsttt = dst; 1059 $scope.calldateee = calldate; 1060 var fold1 = exten2.replace(/~/g, "/"); //alert(fold1); 1061 var fold = fold1.replace("~", "/"); 1062 var urls = fold1;//exten+".vitelglobal.com/"+exten1+fold; 1063 1064 $scope.path = fold1; 1065 $scope.uniqueId = unid; 1066 1067 $scope.loader = true; var config = {params: { path : fold1,unid:unid}}; 1068 $http.post(base_url+"call_records/transcript", null, config).then(function(response) 1069 { 1070 $scope.loader = false; 1071 if(response.data.errcode == 200) 1072 { 1073 $('#transcriptshow').modal('show'); 1074 $scope.transdata = response.data.errmsg; 1075 1076 $scope.analysis = response.data.analysis; 1077 1078 console.log("qweq2",$scope.analysis) 1079 1080 $scope.paragraph = response.data.paragraph; 1081 1082 1083 // $scope.transcriptdata = $scope.transdata.results.channels[0].alternatives[0].transcript; 1084 // $scope.confidence = $scope.transdata.results.channels[0].alternatives[0].confidence; 1085 //$scope.words = $scope.transdata.results.channels[0].alternatives[0].words; 1086 console.log($scope.transdata); 1087 } 1088 else 1089 { 1090 $scope.transdata = ""; 1091 swal({ 1092 type: 'error', 1093 html: "Unable to transcript, Please contact Vitelglobal Support.", 1094 timer: 3000,
1095 showConfirmButton: false 1096 }); 1097 } 1098 }); 1099 } 1100 1101 1102 1103 // $scope.downloadTxt = function () { 1104 // const cleanText = $scope.paragraph.replace(/<br\s*\/?>/gi, '\n'); 1105 // const blob = new Blob([cleanText], { type: 'text/plain' }); 1106 // const url = window.URL.createObjectURL(blob); 1107 // const a = document.createElement('a'); 1108 // a.href = url; 1109 // a.download = 'Transcriptanalysis.txt'; 1110 // a.click(); 1111 // window.URL.revokeObjectURL(url); 1112 // }; 1113 1114 $scope.downloadTxt = function () { 1115 const paragraphText = $scope.paragraph.replace(/<br\s*\/?>/gi, '\n'); 1116 const analysisText = $scope.analysis.replace(/<br\s*\/?>/gi, '\n'); 1117 1118 const combinedText = "Transcript:\n" + paragraphText + "\n\nAnalysis:\n" + analysisText; 1119 1120 const blob = new Blob([combinedText], { type: 'text/plain' }); 1121 const url = window.URL.createObjectURL(blob); 1122 const a = document.createElement('a'); 1123 a.href = url; 1124 a.download = 'TranscriptAnalysis.txt'; 1125 a.click(); 1126 window.URL.revokeObjectURL(url); 1127 }; 1128 1129 1130// $scope.sections = []; 1131 1132// $scope.$watch('analysis', function(newVal) { 1133// if (newVal) { 1134// // Remove all <br>, <br/>, and <br /> tags 1135// var cleanText = newVal.replace(/<br\s*\/?>/gi, ''); 1136 1137// $scope.sections = cleanText.split(/\n(?=\d\.\s)/).map(function(part) { 1138// var splitIndex = part.indexOf(':'); 1139// return { 1140// title: part.substring(3, splitIndex).trim(), 1141// content: part.substring(splitIndex + 1).trim() 1142// }; 1143// }); 1144// } 1145// }); 1146 1147// $scope.sections = []; 1148 1149// let synth = window.speechSynthesis; 1150// let currentUtterance = null; 1151 1152// $scope.$watch('analysis', function(newVal) { 1153// if (newVal) { 1154// // Remove <br> tags 1155// var cleanText = newVal.replace(/<br\s*\/?>/gi, ''); 1156 1157// $scope.sections = cleanText.split(/\n(?=\d\.\s)/).map(function(part) { 1158// var splitIndex = part.indexOf(':'); 1159// return { 1160// title: part.substring(3, splitIndex).trim(), 1161// content: part.substring(splitIndex + 1).trim(), 1162// isSpeaking: false 1163// }; 1164// }); 1165// } 1166// }); 1167 1168// $scope.sections = []; 1169 1170// let synth = window.speechSynthesis; 1171// let currentUtterance = null; 1172// let voices = []; 1173 1174// // Load available voices and find a female one 1175// function loadVoices() { 1176// voices = synth.getVoices(); 1177 1178// // You can customize this list to prefer specific female voices 1179// const preferredFemaleVoices = [ 1180// "Google UK English Female", 1181// "Samantha", 1182// "Victoria", 1183// "Karen", 1184// "Susan" 1185// ]; 1186 1187// // Try to select a female voice by name match 1188// $scope.femaleVoice = voices.find(v => 1189// preferredFemaleVoices.includes(v.name) || /female/i.test(v.name) 1190// ); 1191// } 1192// loadVoices(); 1193 1194// if (speechSynthesis.onvoiceschanged !== undefined) { 1195// speechSynthesis.onvoiceschanged = loadVoices; 1196// } 1197 1198// $scope.toggleSpeech = function(section, index) { 1199// // If already speaking, stop 1200// if (section.isSpeaking) { 1201// synth.cancel(); 1202// section.isSpeaking = false; 1203// return; 1204// } 1205 1206// // Stop any other section speaking 1207// $scope.sections.forEach((sec, idx) => { 1208// if (idx !== index) sec.isSpeaking = false; 1209// }); 1210 1211// // Cancel any previous speech 1212// synth.cancel(); 1213 1214// let utterance = new SpeechSynthesisUtterance(section.content); 1215// utterance.lang = 'en-US'; 1216// section.isSpeaking = true; 1217 1218// utterance.onend = function() { 1219// $scope.$apply(function() { 1220// section.isSpeaking = false; 1221// }); 1222// }; 1223 1224// currentUtterance = utterance; 1225// synth.speak(utterance); 1226// }; 1227 1228$scope.sections = []; 1229 1230let synth = window.speechSynthesis; 1231let currentUtterance = null; 1232let voices = []; 1233 1234// Load voices and pick a female voice 1235function loadVoices() { 1236 voices = synth.getVoices(); 1237 1238 const preferredFemaleVoices = [ 1239 "Google UK English Female", 1240 "Samantha", 1241 "Victoria", 1242 "Karen", 1243 "Susan" 1244 ]; 1245 1246 $scope.femaleVoice = voices.find(v => 1247 preferredFemaleVoices.includes(v.name) || /female/i.test(v.name) 1248 ); 1249} 1250 1251// Try loading voices 1252loadVoices(); 1253 1254// Ensure voices are loaded after voiceschanged event 1255if (speechSynthesis.onvoiceschanged !== undefined) { 1256 speechSynthesis.onvoiceschanged = loadVoices; 1257} 1258 1259$scope.$watch('analysis', function(newVal) { 1260 if (newVal) { 1261 // Remove <br> tags 1262 var cleanText = newVal.replace(/<br\s*\/?>/gi, ''); 1263 1264 $scope.sections = cleanText.split(/\n(?=\d\.\s)/).map(function(part) { 1265 var splitIndex = part.indexOf(':'); 1266 return { 1267 title: part.substring(3, splitIndex).trim(), 1268 content: part.substring(splitIndex + 1).trim(), 1269 isSpeaking: false 1270 }; 1271 });
1272 } 1273}); 1274 1275$scope.toggleSpeech = function(section, index) { 1276 if (section.isSpeaking) { 1277 synth.cancel(); 1278 section.isSpeaking = false; 1279 return; 1280 } 1281 1282 // Stop all other sections 1283 $scope.sections.forEach((sec, idx) => { 1284 if (idx !== index) sec.isSpeaking = false; 1285 }); 1286 1287 synth.cancel(); 1288 1289 let utterance = new SpeechSynthesisUtterance(section.content); 1290 utterance.lang = 'en-US'; 1291 1292 // Use the selected female voice if available 1293 if ($scope.femaleVoice) { 1294 utterance.voice = $scope.femaleVoice; 1295 } 1296 1297 section.isSpeaking = true; 1298 1299 utterance.onend = function () { 1300 $scope.$apply(() => { 1301 section.isSpeaking = false; 1302 }); 1303 }; 1304 1305 currentUtterance = utterance; 1306 synth.speak(utterance); 1307}; 1308 1309 1310// $scope.sections = $scope.analysis.split(/\n(?=\d\.\s)/).map(function(part) { 1311// var splitIndex = part.indexOf(':'); 1312// return { 1313// title: part.substring(3, splitIndex).trim(), 1314// content: part.substring(splitIndex + 1).trim() 1315// }; 1316// }); 1317 1318 // $scope.parseAnalysis = function(text) { 1319 // const parts = text.split(/\n(?=\d\.\s)/); // split at new lines starting with "1. ", "2. ", etc. 1320 // $scope.sections = []; // Reset in case of re-use 1321 1322 // parts.forEach(function(part) { 1323 // const splitIndex = part.indexOf(':'); 1324 // const title = part.substring(3, splitIndex).trim(); // Skip number + dot + space 1325 // const content = part.substring(splitIndex + 1).trim(); 1326 // $scope.sections.push({ title: title, content: content }); 1327 // }); 1328 // }; 1329 1330 // // Call the function immediately to populate sections 1331 // $scope.parseAnalysis($scope.analysis); 1332 1333 1334 1335 $scope.submitForm = function() 1336 { 1337 if ($scope.email) 1338 { 1339 $scope.loader = true; 1340 //var config = {params: { path : $scope.path,unid:$scope.uniqueId,email:$scope.email}}; 1341 1342 //var config = {params: { paragraph : $scope.paragraph,analysis : $scope.analysis,email:$scope.email}}; 1343 1344 // var postData = { 1345 // paragraph: $scope.paragraph, 1346 // analysis: $scope.analysis, 1347 // email: $scope.email 1348 // }; 1349 1350 1351 var fd = new FormData(); 1352 fd.append("paragraph", angular.toJson($scope.paragraph)); 1353 fd.append("analysis", angular.toJson($scope.analysis)); 1354 fd.append("email", angular.toJson($scope.email)); 1355 1356 fd.append("src", angular.toJson($scope.srccc)); 1357 fd.append("dst", angular.toJson($scope.dsttt)); 1358 fd.append("calldate", angular.toJson($scope.calldateee)); 1359 1360 1361 var config = { 1362 transformRequest: angular.identity, 1363 headers: { 1364 'Content-Type': undefined 1365 } 1366 }; 1367 1368 1369 $http.post(base_url + "call_records/transcript_ToEmail",fd,config).then(function(response) { 1370 $scope.showEmailForm = false; 1371 // console.log(response); 1372 if(response.status == 200) 1373 { 1374 $scope.email = ""; 1375 swal({ 1376 type: 'success', 1377 html: `<h4>Mail sent successfully!</h4>`, 1378 timer: 3000,
1379 showConfirmButton: false 1380 }); 1381 } 1382 else 1383 { 1384 swal({ 1385 type: 'error', 1386 html: response.data.errmsg, 1387 timer: 3000, 1388 showConfirmButton: false 1389 }); 1390 } 1391 $scope.loader = false; 1392 }); 1393 1394 } 1395 }; 1396 1397 $scope.closeActionNew = function(){ $('#voicemaillisten').modal('hide'); $('#transcriptshow').modal('hide'); var vid = document.getElementById("myAudio"); vid.pause(); } 1398 $scope.closeAction = function(){ $('#pdfModal').hide(); } 1399 $scope.exportForm = function(){ $('#pdfModal').show(); } 1400 $scope.exportPDF = function (emailid,varResult){ 1401 $scope.loader = true; var config = {params: { formdata : $scope.callreports, emailid:emailid}}; 1402 $http.post(base_url+"call_records/pdf_generate", null, config).then(function(response){ 1403 $('#pdfModal').hide(); $scope.loader = false; $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 1404 }); 1405 }; 1406 1407 $scope.previousdayReport = function () 1408 { 1409 $scope.loader = true; var config = {params: { formdata : $scope.callreports}}; 1410 $http.post(base_url+"call_records/previousday_report", null, config).then(function(response){ 1411 $scope.loader = false; $scope.tableData = true; 1412 $scope.callrecords = response.data.tabledata; 1413 $scope.totalclcount = response.data.totalclcount; 1414 $scope.totcldura = response.data.totcldura; 1415 $scope.recordCount = $scope.callrecords.tabledata.length; 1416 }); 1417 }; 1418 1419 $scope.emails = { 1420 email: '' 1421 }; 1422
1423 $scope.invalidEmails = []; 1424 1425 $scope.validateEmails = function () 1426 { 1427 const emailList = $scope.emails.email.split(',').map(email => email.trim()); 1428 const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/; 1429 1430 $scope.invalidEmails = emailList.filter(email => email && !emailPattern.test(email)); 1431 }; 1432 1433 $scope.sendEmail = function () 1434 { 1435 $scope.validateEmails(); 1436 1437 if ($scope.invalidEmails.length > 0) 1438 { 1439 swal({ 1440 type: 'error', 1441 html: `<h4>Invalid Email(s): ${$scope.invalidEmails.join(', ')}</h4>`, 1442 timer: 4000, 1443 showConfirmButton: true, 1444 }); 1445 return; 1446 } 1447 1448 $scope.loader = true; 1449 var config = { 1450 params: { 1451 formdata: $scope.callreports, emails: $scope.emails.email 1452 } 1453 }; 1454 1455 $http.post(base_url + "call_records/sendEmail_previousday_report", null, config).then(function (response) 1456 { 1457 $scope.loader = false; 1458 $('#staticBackdrop').modal('hide'); 1459 swal({ 1460 type: response.data.status, 1461 html: `<h4>${response.data.message}</h4>`, 1462 timer: 3000,
1463 showConfirmButton: false, 1464 }); 1465 }); 1466 }; 1467 1468 1469 $scope.inc_internal = '1'; 1470 $scope.datewiseReport = function () { 1471 $scope.loader = true; var config = {params: { formdata : $scope.callreports}}; 1472 $http.post(base_url+"call_records/bwtdates_report", null, config).then(function(response) 1473 { 1474 $scope.loader = false; console.log(response.data); 1475 if(response.data.errcode == 202){ 1476 //$scope.ajaxResult = "Between Dates cannot be more than a week"; myService.resMessage($scope,$timeout,202); 1477 swal({ 1478 type: 'error', 1479 html: `<h4>Between Dates cannot be more than a week.</h4>`, 1480 timer: 3000, 1481 showConfirmButton:false, 1482 }); 1483 }else{ $scope.tableData = true; $scope.calldates = response.data.dates;$scope.extdata = response.data.extdata; $scope.recordCount = $scope.extdata.length; } 1484 }); 1485 }; 1486 1487 $scope.consolidatedReport = function () { 1488 $scope.loader = true; var config = {params: { formdata : $scope.callreports}}; 1489 $http.post(base_url+"call_records/consolidated_report", null, config).then(function(response){ 1490 $scope.loader = false; $scope.tableData = true; $scope.callrecords = response.data; $scope.recordCount = $scope.callrecords.length; 1491 }); 1492 }; 1493}); 1494 1495function downloadAction() 1496{ 1497 var download = document.getElementById("download").value; 1498 if(download != ''){ 1499 document.downloadNow.submit(); return true; 1500 }else{ 1501 alert("Select atleast one record!"); return false; 1502 } 1503} 1504//For Call Reports(CDR's) Page - End 1505 1506//For Individual Call Reports(CDR's) Page - Start 1507myapp.controller("smsreports", function($scope,$http,$timeout,myService) 1508{ 1509 1510 $scope.pageno = 1; // initialize page no to 1 1511 $scope.selectables = [ {value: 500}, {value: 800}, {value: 1000}, {value: 1500}, {value: 2000} ]; 1512 $scope.pageSize = "500"; 1513 1514 $scope.callreports = {starttime:'00',endtime:'23',sms_internal: 'BOTH'}; 1515 1516 $scope.loadDocu = function () 1517 { 1518 $scope.loader = true; var config = {params:{page:1, size:5000, keyword:$scope.searchKey}}; 1519 $http.post(base_url+"user_extensions/tabledata", null, config).then(function(response){ $scope.loader = false; 1520 $scope.userext = response.data.tabledata; $scope.outcid = response.data.outcid; 1521 myService.pagination($scope,$scope.pageno,$scope.pageSize,$scope.userext,response.data.totalCount); 1522 }); 1523 }; 1524 $scope.loadDocu(); 1525 1526 1527 $scope.onExtensionChange = function(selectedExtension) { 1528 var selectedExt = $scope.userext.find(function(ext) { 1529 return ext.extension === selectedExtension; 1530 }); 1531 if (selectedExt) { 1532 $scope.extdisname = selectedExt.name 1533 } 1534 }; 1535 1536 1537 $scope.smsRecords = function () 1538 { 1539 1540 if($scope.callreports.sd != '' && $scope.callreports.sd != undefined && $scope.callreports.inc_internal != '' && $scope.callreports.inc_internal != undefined) 1541 { 1542 if($scope.callreports.messagetype == '' || $scope.callreports.messagetype == undefined) 1543 { 1544 $scope.callreports = angular.extend($scope.callreports,{messagetype:'O'}); 1545 } 1546 $scope.callreports = angular.extend($scope.callreports,{messagetype:$scope.callreports.inc_internal}); 1547 //console.log($scope.callreports.inc_internal); 1548 $scope.loader = true; var config = {params: { page:$scope.pageno, size:$scope.pageSize, formdata : $scope.callreports}}; 1549 $http.post(base_url+"call_records/sms_data", null, config).then(function(response){ $scope.loader = false; $scope.tableData = true; 1550 $scope.smsreport = response.data.tabledata; 1551 $scope.smscounts = response.data.totalCount; 1552 $scope.inbound = response.data.inbound; $scope.outbound = response.data.outbound; 1553 myService.pagination($scope,$scope.pageno,$scope.pageSize,$scope.smsreport,response.data.totalCount); 1554 //if(response.data.errmsg != ''){ $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,202); } 1555 }); 1556 } 1557 else 1558 { 1559 //$scope.ajaxResult = "Please Select Extension"; myService.resMessage($scope,$timeout,202); 1560 if($scope.callreports.sd == null || $scope.callreports.sd == undefined){ 1561 swal({ 1562 html: `<h4>Please Select Extension.</h4>`, 1563 icon: "error", 1564 timer: 3000, 1565 showConfirmButton:false, 1566 }); 1567 } 1568 1569 else if($scope.callreports.sd == null || $scope.callreports.inc_internal == undefined){ 1570 swal({ 1571 html: `<h4>Please Select Inc Internal.</h4>`, 1572 icon: "error", 1573 timer: 3000, 1574 showConfirmButton:false, 1575 }); 1576 } 1577 1578 } 1579 }; 1580 1581 $scope.setCurrent = function(pageno){ $scope.pageno = pageno; $scope.smsConsolidateRecords(); } 1582 $scope.smsConsolidateRecords = function(smsrecords) 1583 { 1584 $scope.loader = true; var config = {params: {formdata : smsrecords}}; 1585 $http.post(base_url+"call_records/sms_data_consolidate", null, config).then(function(response) 1586 { 1587 $scope.loader = false; $scope.tableData = true; 1588 $scope.smsconsolidatereport = response.data.tabledata; 1589 $scope.smsconsolidatecounts = response.data.totalCount; 1590 }); 1591 }; 1592 1593 $scope.viewAction = function(report) 1594 { 1595 $scope.callreports = angular.extend($scope.callreports,{sd:report.src,messagetype:'O'}); console.log($scope.callreports); 1596 $scope.loader = true; var config = {params: { page:$scope.pageno, size:$scope.pageSize, formdata : $scope.callreports}}; 1597 $http.post(base_url+"call_records/sms_data_did", null, config).then(function(response) 1598 { 1599 $scope.loader = false; $scope.tableData = true; 1600 $scope.smsreport = response.data.tabledata; 1601 $scope.smscounts = response.data.totalCount; 1602 $scope.inbound = response.data.inbound; $scope.outbound = response.data.outbound; 1603 myService.pagination($scope,$scope.pageno,$scope.pageSize,$scope.smsreport,response.data.totalCount); 1604 $('#voicemaillisten').modal('show'); 1605 }); 1606 1607 } 1608 $scope.closeActionNew = function(){ $('#voicemaillisten').modal('hide'); } 1609}); 1610 1611//For Individual Call Reports(CDR's) Page - Start 1612myapp.controller("smsreportsconsolidate", function($scope,$http,$timeout,myService) 1613{ 1614 $scope.callreports = {starttime:'00',endtime:'23',messagetype:'O',sms_internal: 'BOTH'}; 1615 $scope.pageno = 1; // initialize page no to 1 1616 $scope.selectables = [ {value: 2000}, {value: 3000}, {value: 4000}, {value: 5000}, {value: 6000} ]; 1617 $scope.pageSize = "2000"; 1618 $scope.pageSMSData = function(pageno){ $scope.pageno = pageno; console.log($scope.callreports); $scope.viewAction($scope.callreports); } 1619 $scope.pageSMSINData = function(pageno){ $scope.pageno = pageno; console.log($scope.callreports); $scope.viewINAction($scope.callreports); } 1620 1621 1622 $scope.smsConsolidateRecords = function(smsrecords) 1623 { 1624 $scope.loader = true; var config = {params: {formdata : smsrecords}}; 1625 $http.post(base_url+"call_records/sms_data_consolidate", null, config).then(function(response) 1626 { 1627 $scope.loader = false; $scope.tableData = true; 1628 $scope.smsconsolidatereport = response.data.tabledata; 1629 $scope.smsconsolidatecounts = response.data.totalCount; 1630 $scope.smsconsolidateoutcounts = response.data.totaloutboundcounts; 1631 $scope.smsconsolidateincounts = response.data.totalinboundcounts; 1632 }); 1633 }; 1634 1635 $scope.viewAction = function(report) 1636 { 1637 //console.log(report); 1638 $scope.callreports = angular.extend($scope.callreports,{sd:report.src,messagetype:'O'}); console.log($scope.callreports); 1639 $scope.loader = true; var config = {params: { page:$scope.pageno, size:$scope.pageSize, formdata : $scope.callreports}}; 1640 $http.post(base_url+"call_records/sms_data_did", null, config).then(function(response) 1641 { 1642 $scope.loader = false; $scope.tableData = true; 1643 $scope.smsreport = response.data.tabledata; 1644 $scope.smscounts = response.data.totalCount; 1645 $scope.inbound = response.data.inbound; $scope.outbound = response.data.outbound; 1646 myService.pagination($scope,$scope.pageno,$scope.pageSize,$scope.smsreport,response.data.totalCount); 1647 $('#voicemaillisten').modal('show'); 1648 }); 1649 1650 } 1651 $scope.viewINAction = function(report) 1652 { 1653 //console.log(report); 1654 $scope.callreports = angular.extend($scope.callreports,{sd:report.src,messagetype:'I'}); console.log($scope.callreports); 1655 $scope.loader = true; var config = {params: { page:$scope.pageno, size:$scope.pageSize, formdata : $scope.callreports}}; 1656 $http.post(base_url+"call_records/sms_data_did", null, config).then(function(response) 1657 { 1658 $scope.loader = false; $scope.tableData = true; 1659 $scope.smsreport = response.data.tabledata; 1660 $scope.smscounts = response.data.totalCount; 1661 $scope.inbound = response.data.inbound; $scope.outbound = response.data.outbound; 1662 myService.pagination($scope,$scope.pageno,$scope.pageSize,$scope.smsreport,response.data.totalCount); 1663 $('#voicemaillistenIN').show(); 1664 }); 1665 1666 } 1667 $scope.closeActionNew = function(){ $('#voicemaillisten').modal('hide'); $('#voicemaillistenIN').hide(); } 1668}); 1669//For Individual Call Reports(CDR's) Page - Start 1670myapp.controller("callreportsIndividual", function($scope,$http,$timeout,myService) 1671{ 1672 1673 1674 $scope.extnumberseg = document.getElementById('extnumberseg').value; 1675 1676 $http.get(base_url + "call_records/extnumberseg/" + $scope.extnumberseg) 1677 .then(function(response) { 1678 $scope.extnumbersegdata = response.data; 1679 1680 // console.log($scope.extnumbersegdata) 1681 });
1682 1683 $scope.satext = ''; 1684 $scope.getExtensionData = function() 1685 { 1686 $scope.loader = true; 1687 var config = { params: { ext:$scope.selectedextension } }; 1688 $http.post(base_url+"user_extensions/getExtensionSelected", null, config).then(function(response) 1689 { 1690 $scope.loader = false; 1691 window.location.reload(); 1692 }); 1693 } 1694 1695 $http.get(base_url+"user_extensions/subext_list").then(function(response) 1696 { 1697 $scope.cc = response.data.assignext; 1698 //setTimeout(function(){ $scope.satext = $scope.selectedextension = response.data.selectedext; }, 2000); 1699 $timeout(function () { $scope.satext = $scope.selectedextension = response.data.selectedext; }, 3000); 1700 }); 1701 1702 $scope.getAlert = function() 1703 { 1704 //$scope.ajaxResult = "Please Select Extension"; myService.resMessage($scope,$timeout,202); 1705 swal({ 1706 html: `<h4>Please Select Extension.</h4>`, 1707 type: "error", 1708 timer: 3000, 1709 showConfirmButton:false, 1710 }); 1711 1712 } 1713 $scope.ext = window.location.href.substr(window.location.href.lastIndexOf('/') + 1); 1714 $scope.pageno = 1; // initialize page no to 1 1715 $scope.selectables = [ {value: 500},{value: 700},{value: 900}, {value: 1000}, {value: 1500}, {value: 2000} ]; 1716 $scope.pageSize = "500"; 1717 $scope.callreports = {sd:$scope.ext}; 1718 1719 //Search Keywords in Table 1720 $scope.searchKey = ''; 1721 $scope.searchData = function(){ $scope.callRecords(); } 1722 $scope.pageData = function(pageno){ $scope.pageno = pageno; $scope.callRecords(); } 1723 $scope.pageSMSData = function(pageno){ $scope.pageno = pageno; $scope.smsRecords(); } 1724 $scope.callRecords = function () 1725 { 1726 $scope.loader = true; var config = {params: { page:$scope.pageno, size:$scope.pageSize, formdata : $scope.callreports}}; 1727 $http.post(base_url+"call_records/individual_tabledata", null, config).then(function(response){ $scope.loader = false; $scope.tableData = true; 1728 $scope.callreport = response.data.tabledata; $scope.inbound = response.data.inbound; $scope.outbound = response.data.outbound; 1729 $scope.answered = response.data.answered; $scope.noanswer = response.data.noanswered; $scope.busy = response.data.busy; $scope.voicemail = response.data.voicemail; 1730 myService.pagination($scope,$scope.pageno,$scope.pageSize,$scope.callreport,response.data.totalCount); 1731 if(response.data.errmsg != ''){ $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,202); } 1732 }); 1733 }; 1734 if($scope.ext != ''){ $scope.callRecords(); } 1735 1736 $scope.smsRecords = function () 1737 { 1738 $scope.loader = true; 1739 var config = {params: { page:$scope.pageno, size:$scope.pageSize, formdata : $scope.callreports}}; 1740 $http.post(base_url+"call_records/sms_data", null, config).then(function(response){ $scope.loader = false; $scope.tableData = true; 1741 $scope.totalCounts = response.data.totalCount; 1742 $scope.smsreport = response.data.tabledata; $scope.inbound = response.data.inbound; $scope.outbound = response.data.outbound; 1743 myService.pagination($scope,$scope.pageno,$scope.pageSize,$scope.smsreport,response.data.totalCount); 1744 //if(response.data.errmsg != ''){ $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,202); } 1745 1746 }); 1747 }; 1748 1749 $scope.voiceMailPlay = function(exten,exten1,exten2,exten3) 1750 { 1751 var fold1 = exten2.replace(/~/g, "/"); //alert(fold1); 1752 var fold = fold1.replace("~", "/"); 1753 var urls = fold1;//exten+".vitelglobal.com/"+exten1+fold; 1754 var config = {params: { path : fold1}}; 1755 $http.post(base_url+"call_records/getCdrFile", null, config).then(function(response) 1756 { 1757 $('#voicemaillisten').modal('show'); 1758 document.getElementById("extplay").innerHTML = '<audio id="myAudio" controls autoplay controlsList="nodownload"><source src="'+response.data.tabledata+'" type="audio/wav"></audio>'; 1759 }); 1760 } 1761 $scope.closeActionNew = function(){ $('#voicemaillisten').modal('hide'); var vid = document.getElementById("myAudio"); vid.pause();} 1762 1763 $scope.closeAction = function(){ $('#pdfModal').hide(); } 1764 $scope.exportForm = function(){ $('#pdfModal').show(); } 1765 $scope.exportPDF = function (emailid,varResult){ 1766 $scope.loader = true; var config = {params: { formdata : $scope.callreports, emailid:emailid}}; 1767 $http.post(base_url+"call_records/pdf_generate", null, config).then(function(response){ 1768 $('#pdfModal').hide(); $scope.loader = false; $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 1769 }); 1770 }; 1771 1772 $scope.searchAction = function(callreports){ $scope.callreports = callreports; $scope.callRecords(); } 1773 1774 $scope.user = {callreport:''}; 1775 $scope.checkAll = function() { 1776 if($scope.chkVal == true){ 1777 $scope.user = {callreport: angular.copy($scope.callreport)}; 1778 }else{ 1779 $scope.user = {callreport:''}; 1780 } 1781 }; 1782}); 1783//For Individual Call Reports(CDR's) Page - End 1784 1785//For Schedule Report Page - Start 1786myapp.controller("scheduleReport", function($scope,$http,$timeout,myService) 1787{ 1788 $scope.weekly = [{id:"D",name:"Daily"},{id:"W",name:"Weekly"},{id:"M",name:"Monthly"}]; 1789 $scope.call_type = 'C'; 1790 $scope.getConsolidate = function(){ 1791 $http.get(base_url+"schedule_report/get_consoliddata").then(function(response){ 1792 $scope.consolidate_data = response.data.userdata; 1793 $scope.extlist = response.data.extlist; 1794 if(response.data.status == 'S'){ $scope.selectedType = true;} 1795 }); 1796 }; 1797 $scope.getConsolidate(); 1798 1799 1800 1801 $scope.setSelectedUser = function(user) 1802 { 1803 $scope.selectedUser = user; 1804 }; 1805 1806 1807 1808 $scope.addConsolidate = function(list){ 1809 $scope.consolid = {cid:'',hour:'00',minutes:'00',extlist:'Y',status:'0',call_type:'C'}; 1810 $scope.selectedType = true; 1811 $scope.consTab = true; 1812 1813 window.scrollTo(0, 0); 1814 1815 // Use a timeout to ensure the reset is noticed by the browser 1816 setTimeout(function() { 1817 // Scroll to the target div 1818 document.getElementById('targetDiv').scrollIntoView({ behavior: 'smooth' });
1819 }, 100); 1820 1821 } 1822 $scope.editConsolidate = function(list) 1823 { 1824 $scope.consolid = list; 1825 1826 // Convert wstring ("Daily", etc.) back to IDs 1827 const nameToIdMap = { 1828 "Daily": "D", 1829 "Weekly": "W", 1830 "Monthly": "M" 1831 }; 1832 1833 const weekIds = (list.wstring || []).map(name => nameToIdMap[name]); 1834 localStorage.setItem('checkedValues', JSON.stringify(weekIds)); 1835 1836 if (list.status == '0') { 1837 $scope.selectedType = true; 1838 } 1839 $scope.consTab = true; 1840 } 1841 1842 $scope.toggleWeekSelection = function(week) 1843 { 1844 let checked = localStorage.getItem('checkedValues'); 1845 let selectedWeeks = checked ? JSON.parse(checked) : []; 1846 1847 const index = selectedWeeks.indexOf(week.id); 1848 1849 if (index === -1) { 1850 selectedWeeks.push(week.id); 1851 } else { 1852 selectedWeeks.splice(index, 1); 1853 } 1854 1855 localStorage.setItem('checkedValues', JSON.stringify(selectedWeeks)); 1856 }; 1857 1858 $scope.consolidatedUpdate = function(consolid,varResult) 1859 { 1860 1861 var weekly = JSON.parse(localStorage.getItem('checkedValues')) || []; 1862 //console.log("Checked Values:", weekly); 1863 consolid.weekly = weekly; 1864 1865 $scope.loader = true; var config = { params: { formdata : consolid} }; 1866 $http.post(base_url+"schedule_report/consolidUpdate", null, config).then(function(response){ $scope.loader = false; 1867 if(response.data.errcode == 200){ $scope.getConsolidate(); 1868 $scope.consTab = false; 1869 localStorage.removeItem('checkedValues'); 1870 1871 // Optionally, clear the 'weekly' array if needed 1872 // weekly = []; 1873 } 1874 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 1875 }); 1876 }; 1877 1878 $scope.consolidatedDelete = function(consolid,varResult){ 1879 $scope.loader = true; var config = { params: { formdata : consolid} }; 1880 $http.post(base_url+"schedule_report/consolidDelete", null, config).then(function(response){ $scope.loader = false; 1881 $scope.getConsolidate(); $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 1882 }); 1883 }; 1884}); 1885 1886 1887myapp.controller("newscheduleReport", function($scope,$http,$timeout,myService) 1888{ 1889 $scope.weekly = [{id:"D",name:"Daily"},{id:"W",name:"Weekly"},{id:"M",name:"Monthly"}]; 1890 $scope.call_type = 'C'; 1891 $scope.getConsolidate = function(){ 1892 $http.get(base_url+"schedule_message_report/get_consoliddata").then(function(response){ 1893 $scope.consolidate_data = response.data.userdata; $scope.extlist = response.data.extlist; 1894 if(response.data.status == 'S'){ $scope.selectedType = true;} 1895 }); 1896 }; 1897 $scope.getConsolidate(); 1898 1899 $scope.addConsolidate = function(list){ 1900 $scope.consolid = {cid:'',hour:'00',minutes:'00',extlist:'Y',status:'0',call_type:'C'}; 1901 $scope.selectedType = true; 1902 $scope.consTab = true; 1903 1904 window.scrollTo(0, 0); 1905 1906 // Use a timeout to ensure the reset is noticed by the browser 1907 setTimeout(function() { 1908 // Scroll to the target div 1909 document.getElementById('targetDiv').scrollIntoView({ behavior: 'smooth' }); 1910 }, 100); 1911 1912 } 1913 $scope.editConsolidate = function(list){ console.log($scope.consolid); $scope.consolid = list; if(list.status == '0'){ $scope.selectedType = true;} $scope.consTab = true; } 1914 1915 $scope.consolidatedUpdate = function(consolid,varResult){ 1916 $scope.loader = true; var config = { params: { formdata : consolid} }; 1917 $http.post(base_url+"schedule_message_report/consolidUpdate", null, config).then(function(response){ $scope.loader = false; 1918 if(response.data.errcode == 200){ $scope.getConsolidate(); $scope.consTab = false; } 1919 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 1920 }); 1921 }; 1922 1923 $scope.consolidatedDelete = function(consolid,varResult){ 1924 $scope.loader = true; var config = { params: { formdata : consolid} }; 1925 $http.post(base_url+"schedule_message_report/consolidDelete", null, config).then(function(response){ $scope.loader = false; 1926 $scope.getConsolidate(); $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 1927 }); 1928 }; 1929}); 1930//For Schedule Report Page - End 1931 1932//For CDR Group Page - Start 1933myapp.controller("cdrgroup", function($scope,$http,$timeout,myService) 1934{ 1935 $scope.weekly = [{id:"D",name:"Daily"},{id:"W",name:"Weekly"},{id:"M",name:"Monthly"}]; 1936 $scope.call_type = 'C'; 1937 $scope.getConsolidate = function() 1938 { 1939 $http.get(base_url+"schedule_report/get_cdrgroup").then(function(response) 1940 { 1941 $scope.consolidate_data = response.data.userdata; $scope.extlist = response.data.extlist; 1942 //if(response.data.status == 'S'){ $scope.selectedType = true;} 1943 }); 1944 }; 1945 $scope.getConsolidate(); 1946 1947 $scope.addConsolidate = function(list){ 1948 $scope.consolid = {cid:'',hour:'00',minutes:'00',extlist:'Y',status:'0',call_type:'C'}; 1949 $scope.selectedType = true; 1950 $scope.consTab = true; 1951 1952 window.scrollTo(0, 0); 1953 1954 // Use a timeout to ensure the reset is noticed by the browser 1955 setTimeout(function() { 1956 // Scroll to the target div 1957 document.getElementById('targetDiv').scrollIntoView({ behavior: 'smooth' });
1958 }, 100); 1959 1960 } 1961 $scope.editConsolidate = function(list) 1962 { 1963 $scope.consolid = list; console.log($scope.extlist); $scope.selectedType = true; $scope.consTab = true; 1964 setTimeout(function() { 1965 // Scroll to the target div 1966 document.getElementById('targetDiv').scrollIntoView({ behavior: 'smooth' }); 1967 }, 100); 1968 } 1969 1970 $scope.consolidatedUpdate = function(consolid,varResult) 1971 { 1972 $scope.loader = true; var config = { params: { formdata : consolid} }; 1973 $http.post(base_url+"schedule_report/cdrgroupUpdate", null, config).then(function(response){ $scope.loader = false; 1974 if(response.data.errcode == 200){ $scope.getConsolidate(); $scope.consTab = false; } 1975 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 1976 }); 1977 }; 1978 1979 $scope.consolidatedDelete = function(consolid,varResult) 1980 { 1981 if(confirm("Are you sure you want to delete group?")) 1982 { 1983 $scope.loader = true; var config = { params: { formdata : consolid} }; 1984 $http.post(base_url+"schedule_report/cdrgroupDelete", null, config).then(function(response){ $scope.loader = false; 1985 $scope.getConsolidate(); $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 1986 }); 1987 } 1988 }; 1989}); 1990//For CDR Group Report Page - End 1991 1992//For Show Ticket Page - Start 1993myapp.controller("showticketController", function($scope,$http,$timeout,myService) { 1994 1995const queryString = window.location.search; 1996const urlParams = new URLSearchParams(queryString); 1997const tstatus = urlParams.get('tstatus'); 1998 1999 $scope.sortReverse = false; 2000 $scope.sortColumn = function(column) { 2001 if ($scope.sortType === column) { 2002 $scope.sortReverse = !$scope.sortReverse; 2003 } else { 2004 $scope.sortType = column; 2005 $scope.sortReverse = false; 2006 } 2007 }; 2008 $scope.sortclass = function (column) { 2009 if($scope.sortType === column){ 2010 return $scope.sortReverse ? 'arrow-dow' : 'arrow-up' 2011 } 2012 return ''; 2013 } 2014 2015 $scope.pageno = 1; // initialize page no to 1 2016 $scope.selectables = [ {value: 2000}, {value: 4000}, {value: 6000} ]; 2017 $scope.pageSize = "2000"; 2018 if(tstatus == "C"){ $scope.tickstatus = "C"; $scope.activeBtn = "C"; }else { $scope.tickstatus = "O"; $scope.activeBtn = "O";} 2019 2020 2021 $scope.searchKey = ''; 2022 $scope.searchData = function() 2023 { 2024 $scope.loadInvoice($scope.pageno,$scope.searchKey,$scope.tickstatus); 2025 } 2026 $scope.pageData = function(pageno) 2027 { 2028 $scope.pageno = pageno; 2029 $scope.loadInvoice($scope.pageno,$scope.searchKey,$scope.tickstatus); 2030 } 2031 2032 $scope.loadInvoice = function (pageno,key,tstatus) 2033 { 2034 $scope.loader = true; 2035 var config = {params: { 2036 page:$scope.pageno, 2037 size:$scope.pageSize, 2038 keyword:key, 2039 status:tstatus }}; 2040 $http.post(base_url+"support/tabledata", null, config).then(function(response) 2041 { 2042 console.log(response.data); $scope.loader = false; 2043 $scope.tickets = response.data.tabledata; $scope.tickstatus = tstatus; 2044 //myService.pagination($scope,pageno,$scope.pageSize,$scope.tickets,response.data.totalCount); 2045 myService.pagination($scope,$scope.pageno,$scope.pageSize,$scope.tickets,response.data.totalCount); 2046 }); 2047 }; 2048 2049 $http.get(base_url+"my_account/user_detail").then(function(response){ $scope.user = response.data; }); 2050 $scope.getTicket = function(status){ $scope.loadInvoice($scope.pageno,$scope.searchKey,status); $scope.activeBtn = status; } 2051 $scope.loadInvoice($scope.pageno,$scope.searchKey,$scope.tickstatus); 2052}); 2053//For Show Ticket Page - End 2054 2055//For Create Ticket Page - Start 2056myapp.controller("createticketController", function($scope,$http,$timeout,myService) 2057{ 2058 $scope.satext = ''; 2059 $scope.getExtensionData = function() 2060 { 2061 $scope.loader = true; 2062 var config = { params: { ext:$scope.selectedextension } }; 2063 $http.post(base_url+"user_extensions/getExtensionSelected", null, config).then(function(response) 2064 { 2065 $scope.loader = false; 2066 window.location.reload(); 2067 }); 2068 } 2069 2070 $http.get(base_url+"user_extensions/subext_list").then(function(response) 2071 { 2072 $scope.cc = response.data.assignext;
2073 //setTimeout(function(){ $scope.satext = $scope.selectedextension = response.data.selectedext; }, 2000); 2074 $timeout(function () { $scope.satext = $scope.selectedextension = response.data.selectedext; }, 3000); 2075 2076 }); 2077 2078 $scope.getAlert = function() 2079 { 2080 //$scope.ajaxResult = "Please Select Extension"; myService.resMessage($scope,$timeout,202); 2081 2082 swal({ 2083 html: `<h4>Please Select Extension.</h4>`, 2084 type: "error", 2085 timer: 3000, 2086 showConfirmButton:false, 2087 }); 2088 2089 } 2090 2091 $http.get(base_url+"support/category").then(function(response){ $scope.category = response.data; }); 2092 2093 // Get Category Updated Code 2094 $scope.subCateDiv = false; 2095 $scope.get_subCategory = function (p_id) 2096 { 2097 // $scope.loader = true; 2098 var config = {params: { p_id : p_id }}; 2099 $http.post(base_url+"support/category1", null, config).then(function(response) 2100 { 2101 // $scope.loader = false; 2102 $scope.category1 = response.data; 2103 $scope.subCateDiv = true; 2104 }); 2105 }; 2106 2107 $http.get(base_url+"support/priority").then(function(response){ $scope.priority = response.data; }); 2108 2109 $scope.selectedCategory = null; 2110 2111 $scope.selectCategory = function(category) 2112 { 2113 $scope.selectedCategory = category; 2114 $scope.get_subCategory(category); 2115 }; 2116 2117 2118}); 2119//For Show Ticket Page - End 2120 2121//For Open Ticket Page - Start 2122myapp.controller("openticketController", function($scope,$http,$timeout,$location,myService) { 2123 $tid = window.location.href.substr(window.location.href.lastIndexOf('/') + 1); 2124 $scope.loadData = function() { 2125 var config = { params: { ticketid : $tid } }; 2126 $http.post(base_url+"open_ticket/ticketdata", null, config).then(function(response){ 2127 // console.log(response); 2128 $scope.ticket = response.data.ticketdetail; 2129 $scope.comments = response.data.ticketcomment; 2130 $scope.documents = response.data.ticketdocument; 2131 }); 2132 } 2133 2134 $scope.status = [ {value: "Open"}, {value: "Closed"} ]; 2135 $scope.changeStatus = function(status,varResult) { 2136 var config = { params: {status:status, tid:$tid} }; 2137 $http.post(base_url+"open_ticket/change_status", null, config).then(function(response){ 2138 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); $scope.statusAct=false; 2139 }); 2140 }; 2141 $scope.loadData(); 2142 // setInterval(function () { $scope.loadData(); }, 10000); 2143}); 2144//For Open Ticket Page - End 2145 2146//For List of Extensions Page - Start 2147myapp.controller("userextsettingsAlert", function($scope,$http,$timeout,myService) 2148{ 2149 2150}); 2151//For List of Extensions Page - Start 2152myapp.controller("userextsettingsController", function($scope,$http,$timeout,myService) 2153{ 2154 $scope.satext = ''; $scope.caller = {}; 2155 $http.get(base_url+"user_extensions/subext_list").then(function(response) 2156 { 2157 $scope.cc = response.data.assignext; 2158 //setTimeout(function(){ $scope.satext = $scope.selectedextension = response.data.selectedext; $scope.caller.extension = response.data.selectedext; $scope.settingsUpdate(); $scope.getCallerID(); }, 2000); 2159 $timeout(function () { $scope.satext = $scope.selectedextension = response.data.selectedext; $scope.caller.extension = response.data.selectedext; $scope.settingsUpdate(); $scope.getCallerID(); }, 3000); 2160 2161 }); 2162 2163 $scope.call_screens_options = [{id: '0', name: 'Disable'},{id: 'nomemory', name: 'Screen Caller: No Memory'},{id: 'memory', name: 'Screen Caller: Memory'}]; 2164 2165 $scope.getExtensionData = function() 2166 { 2167 $scope.loader = true; 2168 var config = { params: { ext:$scope.selectedextension } }; 2169 $http.post(base_url+"user_extensions/getExtensionSelected", null, config).then(function(response) 2170 { 2171 $scope.loader = false; 2172 window.location.reload(); 2173 }); 2174 } 2175 2176 2177 2178 $scope.getAlert = function() 2179 { 2180 //$scope.ajaxResult = "Please Select Extension"; myService.resMessage($scope,$timeout,202); 2181 swal({ 2182 html: `<h4>Please Select Extension.</h4>`, 2183 type: "error", 2184 timer: 3000, 2185 showConfirmButton:false, 2186 }); 2187 } 2188 2189 $scope.settingsUpdate = function() 2190 { 2191 //alert($scope.satext); 2192 $scope.loader = true;
2193 var config = { params: { ext : $scope.satext } }; 2194 $http.post(base_url+"user_extensions/editsetting", null, config).then(function(response) 2195 { $scope.loader = false; 2196 if(response.data.errcode == 200) 2197 { 2198 $scope.formdata = response.data.errmsg; 2199 }else{ 2200 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2201 } 2202 }); 2203 }; 2204 2205 $scope.featuresUpdate = function(formdata, varResult) 2206 { 2207 $scope.loader = true; var config = { params: { formdata:formdata } }; 2208 $http.post(base_url+"user_extensions/featuresUpdate", null, config).then(function(response){ $scope.loader = false; 2209 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2210 }); 2211 }; 2212 $scope.getCallerID = function(ext) 2213 { 2214 $scope.loader = true; 2215 $http.get(base_url+"user_extensions/edit_callerid").then(function(response){ $scope.loader = false; 2216 $scope.didlist = response.data; //$scope.caller = {extension:ext.extension, callerid:ext.outboundcid}; 2217 }); 2218 } 2219 2220 2221 $scope.updateCallerID = function(callerid) 2222 { 2223 $scope.loader = true; var config = { params: { formdata : callerid} }; 2224 $http.post(base_url+"user_extensions/update_callerid", null, config).then(function(response) 2225 { 2226 $scope.loader = false; 2227 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2228 }); 2229 } 2230}); 2231 2232//For List of Extensions Page - Start 2233myapp.controller("userextVoicemailController", function($scope,$http,$timeout,myService) 2234{ 2235 $scope.satext = ''; 2236 $http.get(base_url+"user_extensions/subext_list").then(function(response) 2237 { 2238 $scope.cc = response.data.assignext; 2239 //setTimeout(function(){ $scope.satext = $scope.selectedextension = response.data.selectedext; $scope.voiceMaillist(response.data.selectedext); }, 2000); 2240 $timeout(function () { $scope.satext = $scope.selectedextension = response.data.selectedext; $scope.voiceMaillist(response.data.selectedext); }, 3000); 2241 }); 2242 2243 $scope.getExtensionData = function() 2244 { 2245 $scope.loader = true; 2246 var config = { params: { ext:$scope.selectedextension } }; 2247 $http.post(base_url+"user_extensions/getExtensionSelected", null, config).then(function(response) 2248 { 2249 $scope.loader = false; 2250 window.location.reload(); 2251 }); 2252 } 2253 2254 function downloadMails() 2255 { 2256 var download = document.getElementById("download").value; 2257 if(download != ''){ 2258 document.downloadNow.submit(); return true; 2259 }else{ 2260 alert("Select atleast one record!"); return false; 2261 } 2262 } 2263 2264 $scope.deleteVoicemail = function(formdata,varResult) 2265 { 2266 var download = document.getElementById("download").value; 2267 if(download != '') 2268 { 2269 if(confirm("Are you sure you want to delete voicemail?")) 2270 { 2271 $scope.loader = true; $scope.arrayText = []; 2272 angular.forEach(formdata, function(value, key){ $scope.arrayText.push(value['dlink']); $scope.arrayText.push(value['dlink1']); }); 2273 var jsonstr = JSON.stringify($scope.arrayText); var config = { params: { formdata : jsonstr } }; 2274 $http.post(base_url+"user_extensions/delete_all", null, config).then(function(response){ $scope.loader = false; 2275 if(response.data.errcode == 200){ $scope.voiceMaillist(response.data.ext); $scope.chkVal = false; } 2276 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2277 }); 2278 } 2279 } 2280 else 2281 {
2282 //$scope.ajaxResult = 'Select Atleast One!'; myService.resMessage($scope,$timeout,202); 2283 2284 swal({ 2285 html: `<h4>Select Atleast One!</h4>`, 2286 type: "error", 2287 timer: 3000, 2288 showConfirmButton:false, 2289 }); 2290 } 2291 } 2292 2293 $scope.checkAll = function() { 2294 if($scope.chkVal == true){ 2295 $scope.user = {extension: angular.copy($scope.extension)}; 2296 }else{ 2297 $scope.user = {extension:''}; 2298 } 2299 }; 2300 2301 $scope.voiceMailDelete = function(ext,ext1,exten) 2302 { 2303 if(confirm("Are you sure you want to delete voicemail?")) 2304 { 2305 $scope.loader = true; var config = { params: { ext:ext,ext1:ext1 } }; 2306 $http.post(base_url+"user_extensions/delete_voice", null, config).then(function(response){ $scope.loader = false; 2307 $scope.voiceMaillist(exten); $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2308 }); 2309 } 2310 } 2311 2312 $scope.voiceMailPlayFromBiling = function(exten,exten1,exten2,exten3) 2313 { 2314 var fold1 = exten2.replace("~", "/"); 2315 var fold = fold1.replace("~", "/"); 2316 var urls = exten+".vitelglobal.com/"+exten1+fold; 2317 console.log(urls); 2318 $scope.loader = true; 2319 var config = {params: { path : urls,ext:$scope.voicemaillistext}}; 2320 $http.post(base_url+"call_records/getCdrFileNew", null, config).then(function(response){ 2321 // console.log(response); 2322 $scope.loader = false; $('#voicemaillisten').modal('show'); 2323 document.getElementById("extplay").innerHTML = '<audio id="myAudio" controls autoplay controlsList="nodownload"><source src="'+response.data.tabledata+'" type="audio/wav"></audio>'; 2324 }); 2325 } 2326 2327 $scope.closeActionNew = function(){ $('#voicemaillisten').modal('hide'); var vid = document.getElementById("myAudio"); vid.pause(); } 2328 2329 $scope.getAlert = function() 2330 { 2331 //$scope.ajaxResult = "Please Select Extension"; myService.resMessage($scope,$timeout,202); 2332 swal({ 2333 html: `<h4>Please Select Extension!</h4>`, 2334 type: "error", 2335 timer: 3000, 2336 showConfirmButton:false, 2337 }); 2338 } 2339 2340 2341 $scope.voiceMaillist = function(ext) 2342 { 2343 $scope.voicemaillistext = ext; 2344 $scope.loader = true; var config = { params: { ext : ext } }; 2345 $http.post(base_url+"user_extensions/voicemail_list", null, config).then(function(response){ $scope.loader = false; 2346 $scope.totalCount = response.data.totalCount; $scope.user = {extension:''}; 2347 if(response.data.errcode == 200){ 2348 $scope.extension = response.data.errmsg; $scope.voicemailList = true; $scope.headopens = true; 2349 }else{ 2350 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2351 } 2352 }); 2353 } 2354}); 2355//For List of Extensions Page - Start 2356myapp.controller("userextFollowsettingsController", function($scope,$http,$timeout,myService) 2357{ 2358 $scope.satext = ''; $scope.autopro = {}; 2359 $http.get(base_url+"user_extensions/subext_list").then(function(response) 2360 { 2361 $scope.cc = response.data.assignext; 2362 //setTimeout(function(){ $scope.satext = $scope.selectedextension = response.data.selectedext; $scope.autopro = angular.extend($scope.autopro,{extension:response.data.selectedext}); $scope.settingsUpdate(); $scope.voiceMail(); }, 2000); 2363 $timeout(function () { $scope.satext = $scope.selectedextension = response.data.selectedext; $scope.autopro = angular.extend($scope.autopro,{extension:response.data.selectedext}); $scope.settingsUpdate(); $scope.voiceMail(); }, 3000); 2364 }); 2365 2366 $scope.updateAutoProvision = function(callerid) 2367 { 2368 $scope.loader = true; var config = { params: { formdata : callerid} }; 2369 var phonedevice = document.getElementById("phonedevice").value; 2370 var model = document.getElementById('phonemodel').value; 2371 if(model == "CISCO-7821" || model == "CISCO-7841" || model == "CISCO-8845" || model == "CISCO-8832") 2372 { 2373 phonedevice = "CISCOSPA"; 2374 } 2375 if(phonedevice == "CISCOSPA") 2376 { 2377 $http.post(base_url+"user_extensions/auto_provision", null, config).then(function(response){ $scope.loader = false; 2378 if(response.data.errcode == 200){ $scope.loadDocu(); $('#autoProvisionModal').modal('hide'); } 2379 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2380 }); 2381 } 2382 else if(phonedevice == "CISCO") 2383 { 2384 2385 2386 $http.post(base_url+"user_extensions/auto_provision_cisco", null, config).then(function(response){ $scope.loader = false; 2387 if(response.data.errcode == 200){ $scope.loadDocu(); $('#autoProvisionModal').modal('hide'); } 2388 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2389 }); 2390 } 2391 else if(phonedevice == "POLYCOM") 2392 { 2393 $http.post(base_url+"user_extensions/auto_provision_polycom", null, config).then(function(response){ $scope.loader = false; 2394 if(response.data.errcode == 200){ $scope.loadDocu(); $('#autoProvisionModal').modal('hide'); } 2395 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2396 }); 2397 } 2398 else if(phonedevice == "YEALINK") 2399 { 2400 $http.post(base_url+"user_extensions/auto_provision_yealink", null, config).then(function(response){ $scope.loader = false; 2401 if(response.data.errcode == 200){ $scope.loadDocu(); $('#autoProvisionModal').modal('hide'); } 2402 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2403 }); 2404 } 2405 else if(phonedevice == "GreandStream") 2406 { 2407 $http.post(base_url+"user_extensions/auto_provision_greandstream", null, config).then(function(response){ $scope.loader = false; 2408 if(response.data.errcode == 200){ $scope.loadDocu(); $('#autoProvisionModal').modal('hide'); } 2409 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2410 }); 2411 } 2412 else if(phonedevice == "Telekonnectors") 2413 { 2414 $http.post(base_url+"user_extensions/auto_provision_telekonnectors", null, config).then(function(response){ $scope.loader = false; 2415 if(response.data.errcode == 200){ $scope.loadDocu(); $('#autoProvisionModal').modal('hide'); } 2416 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2417 }); 2418 } 2419 2420 } 2421 2422 $scope.getExtensionData = function() 2423 { 2424 $scope.loader = true; 2425 var config = { params: { ext:$scope.selectedextension } }; 2426 $http.post(base_url+"user_extensions/getExtensionSelected", null, config).then(function(response) 2427 { 2428 $scope.loader = false; 2429 window.location.reload(); 2430 }); 2431 } 2432 2433 2434 $scope.getAlert = function() 2435 { 2436 //$scope.ajaxResult = "Please Select Extension"; myService.resMessage($scope,$timeout,202); 2437 swal({ 2438 html: `<h4>Please Select Extension!</h4>`, 2439 type: "error", 2440 timer: 3000, 2441 showConfirmButton:false, 2442 }); 2443 } 2444 2445 $scope.settingsUpdate = function() 2446 { 2447 //alert($scope.satext); 2448 $scope.loader = true;
2449 var config = { params: { ext : $scope.satext } }; 2450 $http.post(base_url+"user_extensions/editsetting", null, config).then(function(response) 2451 { $scope.loader = false; 2452 if(response.data.errcode == 200) 2453 { 2454 $scope.formdata = response.data.errmsg; console.log(response.data); 2455 }else{ 2456 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2457 } 2458 }); 2459 }; 2460 2461 $scope.voiceMail = function(){ 2462 //$scope.voicemailname = ext; 2463 $scope.loader = true; var config = { params: { ext : $scope.satext } }; 2464 $http.post(base_url+"user_extensions/editvoicemail", null, config).then(function(response){ $scope.loader = false; 2465 if(response.data.errcode == 200){ 2466 $scope.setting = response.data.errmsg; 2467 }else{ 2468 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2469 } 2470 }); 2471 } 2472 2473 2474 $scope.settingUpdate = function(formdata, varResult) { 2475 $scope.loader = true; var config = { params: { formdata : formdata } }; 2476 $http.post(base_url+"user_extensions/voicemailUpdate", null, config).then(function(response){ $scope.loader = false; 2477 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2478 }); 2479 }; 2480 2481 2482 $scope.followUpdate = function(formdata, varResult) 2483 { 2484 $scope.cnf = 'DISABLED'; $scope.btnlist = 0; 2485 if(document.getElementById('fwme_enable').checked){ $scope.cnf = 'ENABLED'; } 2486 if(formdata.follow_me_list != '' && $scope.cnf == 'ENABLED'){ $scope.btnlist = 1; } 2487 if(formdata.follow_me_list == '' && $scope.cnf == 'DISABLED'){ $scope.btnlist = 1; } 2488 2489 if($scope.btnlist == 1){ 2490 $scope.loader = true; var config = { params: { formdata:formdata,cnf:$scope.cnf } }; 2491 $http.post(base_url+"user_extensions/followUpdate", null, config).then(function(response){ $scope.loader = false; 2492 if(response.data.errcode == 200){ $scope.loadDocu(); } 2493 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2494 }); 2495 }else{ 2496 $scope.errormsg = "Please enter Follow Me List & select User Confirmation"; $timeout(function (){ $scope.errormsg = ''; }, 3000); 2497 } 2498 }; 2499 2500 $scope.call_screens = [{id: '0', name: 'Disable'},{id: 'nomemory', name: 'Screen Caller: No Memory'},{id: 'memory', name: 'Screen Caller: Memory'}]; 2501 2502 $scope.call_screens_options = [{id: '0', name: 'Disable'},{id: 'nomemory', name: 'Screen Caller: No Memory'},{id: 'memory', name: 'Screen Caller: Memory'}]; 2503 2504 $scope.firstfors = [ {value: '0'},{value: '1'},{value: '2'},{value: '3'},{value: '4'},{value: '5'},{value: '6'},{value: '7'},{value: '8'},{value: '9'},{value: '10'},{value: '11'},{value: '12'},{value: '13'},{value: '14'},{value: '15'},{value: '16'},{value: '17'},{value: '18'},{value: '19'},{value: '20'},{value: '21'},{value: '22'},{value: '23'},{value: '24'},{value: '25'},{value: '26'},{value: '27'},{value: '28'},{value: '29'},{value: '30'}]; 2505 2506 $scope.listfors = [ {value: '0'},{value: '1'},{value: '2'},{value: '3'},{value: '4'},{value: '5'},{value: '6'},{value: '7'},{value: '8'},{value: '9'},{value: '10'},{value: '11'},{value: '12'},{value: '13'},{value: '14'},{value: '15'},{value: '16'},{value: '17'},{value: '18'},{value: '19'},{value: '20'},{value: '21'},{value: '22'},{value: '23'},{value: '24'},{value: '25'},{value: '26'},{value: '27'},{value: '28'},{value: '29'},{value: '30'},{value: '31'},{value: '32'},{value: '33'},{value: '34'},{value: '35'},{value: '36'},{value: '37'},{value: '38'},{value: '39'},{value: '40'},{value: '41'},{value: '42'},{value: '43'},{value: '44'},{value: '45'},{value: '46'},{value: '47'},{value: '48'},{value: '49'},{value: '50'},{value: '51'},{value: '52'},{value: '53'},{value: '54'},{value: '55'},{value: '56'},{value: '57'},{value: '58'},{value: '59'},{value: '60'}]; 2507 2508 $scope.strategys = [ {value: 'ringallv2'},{value: 'ringallv2-prim'},{value: 'ringall'},{value: 'ringall-prim'},{value: 'hunt'},{value: 'hunt-prim'},{value: 'memoryhunt'},{value: 'memoryhunt-prim'},{value: 'firstavailable'},{value: 'firstnotonphone'}]; 2509 2510 $scope.formats = [{id: '.WAV', name: 'Default (.WAV)'},{id: '.wav', name: 'Best Quality (.wav)'},{id: '.gsm', name: 'Smallest Download (.gsm)'}]; 2511}); 2512//For List of Extensions Page - Start 2513myapp.controller("userextlistController", function($scope,$http,$timeout,myService) 2514{ 2515
2516 $scope.sortReverse = false; 2517 $scope.sortColumn = function(column) { 2518 if ($scope.sortType === column) { 2519 $scope.sortReverse = !$scope.sortReverse; 2520 } else { 2521 $scope.sortType = column; 2522 $scope.sortReverse = false; 2523 } 2524 }; 2525 $scope.sortclass = function (column) { 2526 if($scope.sortType === column){ 2527 return $scope.sortReverse ? 'arrow-dow' : 'arrow-up' 2528 } 2529 return ''; 2530 } 2531 2532 $scope.pageno = 1; // initialize page no to 1 2533 $scope.selectables = [ {value: 500},{value: 600},{value: 700}, {value: 800}, {value: 900}, {value: 1000} ]; 2534 $scope.pageSize = "500"; 2535 $scope.voicemaillistext = ''; 2536 $scope.searchKey = ''; 2537 $scope.searchData = function(){ $scope.loadDocu(); } 2538 $scope.pageData = function(pageno){ $scope.pageno = pageno; $scope.loadDocu(); } 2539 $scope.loadDocu = function () { 2540 $scope.loader = true; var config = {params:{page:$scope.pageno, size:$scope.pageSize, keyword:$scope.searchKey}}; 2541 $http.post(base_url+"user_extensions/tabledata", null, config).then(function(response){ $scope.loader = false; 2542 // console.log(response); 2543 $scope.userext = response.data.tabledata; $scope.outcid = response.data.outcid; 2544 myService.pagination($scope,$scope.pageno,$scope.pageSize,$scope.userext,response.data.totalCount); 2545 }); 2546 }; 2547 $scope.loadDocu(); 2548 2549// $scope.getextno = function(extension) { 2550// var config = {params:{ext:extension}}; 2551// $http.post(base_url+"user_extensions/getnoticeperiod", null, config).then(function(response){ 2552// $scope.getnotice = response.data; 2553// }); 2554 2555// }; 2556 2557// $scope.noticePeriods = {}; // Object to store notice periods by extension 2558 2559// $scope.getextno = function(extension) { 2560// var config = { params: { ext: extension } }; 2561// $http.post(base_url + "user_extensions/getnoticeperiod", null, config) 2562// .then(function(response) { 2563// $scope.noticePeriods[extension] = response.data; // Store result in the object 2564// }, function(error) { 2565// console.error("Error fetching notice period for extension", extension, ":", error); 2566// }); 2567// }; 2568 2569// $scope.noticePeriods = {}; // Initialize cache 2570 2571// $scope.getextno = function (extension) { 2572// if (!$scope.noticePeriods.hasOwnProperty(extension)) { 2573// $scope.noticePeriods[extension] = null; // Default state 2574// } 2575 2576// var config = { params: { ext: extension } }; 2577// $http.post(base_url + "user_extensions/getnoticeperiod", null, config) 2578// .then(function (response) { 2579// console.log("Fetched for", extension, ":", response.data); // Debug log 2580// $scope.noticePeriods[extension] = response.data; // Update cache 2581// }, function (error) { 2582// console.error("Error fetching notice period:", error); 2583// $scope.noticePeriods[extension] = ''; // Fallback 2584// }); 2585// }; 2586 2587 2588 2589 $scope.call_screens = [{id: '0', name: 'Disable'},{id: 'nomemory', name: 'Screen Caller: No Memory'},{id: 'memory', name: 'Screen Caller: Memory'}]; 2590 2591 $scope.firstfors = [ {value: '0'},{value: '1'},{value: '2'},{value: '3'},{value: '4'},{value: '5'},{value: '6'},{value: '7'},{value: '8'},{value: '9'},{value: '10'},{value: '11'},{value: '12'},{value: '13'},{value: '14'},{value: '15'},{value: '16'},{value: '17'},{value: '18'},{value: '19'},{value: '20'},{value: '21'},{value: '22'},{value: '23'},{value: '24'},{value: '25'},{value: '26'},{value: '27'},{value: '28'},{value: '29'},{value: '30'}]; 2592 2593 $scope.listfors = [ {value: '0'},{value: '1'},{value: '2'},{value: '3'},{value: '4'},{value: '5'},{value: '6'},{value: '7'},{value: '8'},{value: '9'},{value: '10'},{value: '11'},{value: '12'},{value: '13'},{value: '14'},{value: '15'},{value: '16'},{value: '17'},{value: '18'},{value: '19'},{value: '20'},{value: '21'},{value: '22'},{value: '23'},{value: '24'},{value: '25'},{value: '26'},{value: '27'},{value: '28'},{value: '29'},{value: '30'},{value: '31'},{value: '32'},{value: '33'},{value: '34'},{value: '35'},{value: '36'},{value: '37'},{value: '38'},{value: '39'},{value: '40'},{value: '41'},{value: '42'},{value: '43'},{value: '44'},{value: '45'},{value: '46'},{value: '47'},{value: '48'},{value: '49'},{value: '50'},{value: '51'},{value: '52'},{value: '53'},{value: '54'},{value: '55'},{value: '56'},{value: '57'},{value: '58'},{value: '59'},{value: '60'}]; 2594 2595 $scope.strategys = [ {value: 'ringallv2'},{value: 'ringallv2-prim'},{value: 'ringall'},{value: 'ringall-prim'},{value: 'hunt'},{value: 'hunt-prim'},{value: 'memoryhunt'},{value: 'memoryhunt-prim'},{value: 'firstavailable'},{value: 'firstnotonphone'}]; 2596 2597 $scope.formats = [{id: '.WAV', name: 'Default (.WAV)'},{id: '.wav', name: 'Best Quality (.wav)'},{id: '.gsm', name: 'Smallest Download (.gsm)'}]; 2598 2599 $scope.editAction = function(ext){ 2600 $scope.loader = true; var config = { params: { ext : ext.extension } }; 2601 $http.post(base_url+"user_extensions/editsetting", null, config).then(function(response){ $scope.loader = false; 2602 if(response.data.errcode == 200){ 2603 $scope.formdata = response.data.errmsg; $('#formModal').modal('show'); 2604 }else{ 2605 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2606 } 2607 }); 2608 } 2609 2610 $scope.editSMSText = function(ext) 2611 { 2612 $scope.smstext = ext; $('#smsTextPopup').show(); 2613 } 2614 2615 $scope.closeActionst = function() 2616 { 2617 $('#smsTextPopup').hide(); 2618 2619 } 2620 2621 $scope.aiFeature = function(ext) 2622 { 2623 $scope.aiext = ext; 2624 //$scope.trans.extension = $scope.aiext; 2625 $scope.aiext.transcript_status = +ext.transcript_status; 2626 $scope.aiext.transcript_view = ext.transcript_view === 'Y' ? 1 : 0; 2627 $scope.aiext.transcript_voicemail = +ext.transcript_voicemail; 2628 2629 console.log($scope.aiext) 2630 2631 $('#aiextPopup').show(); 2632 } 2633 2634 $scope.zohoIntegration = function(ext) 2635 { 2636 $scope.zohotext = ext; 2637 2638 console.log($scope.zohotext) 2639 2640 $('#zohoPopup').show(); 2641 } 2642 2643 $scope.startZohoConnection = function(ext) 2644 { 2645 $scope.loader = true; 2646 var config = { params: { ext : ext } }; 2647 $('#zohoPopup').hide(); 2648 /*$http.post(base_url+"user_extensions/update_smstext", null, config).then(function(response) 2649 { 2650 $scope.loader = false; 2651 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2652 $('#smsTextPopup').hide(); 2653 });*/ 2654 } 2655 2656 2657 $scope.updateSMSTest = function(ext) 2658 { 2659 $scope.loader = true; 2660 var config = { params: { ext : ext } }; 2661 $http.post(base_url+"user_extensions/update_smstext", null, config).then(function(response) 2662 { 2663 $scope.loader = false; 2664 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2665 $('#smsTextPopup').hide(); 2666 }); 2667 } 2668 2669 $scope.editJobDivaText = function(ext) 2670 { 2671 $scope.smstext = ext; 2672 // $('#jobDivaTextPopup').show(); 2673 $('#jobDivaTextPopup').modal('show'); 2674 } 2675 2676 $scope.closeJobAction = function() 2677 { 2678 $('#jobDivaTextPopup').modal('hide'); 2679 console.log("Satheesh"); 2680 } 2681 2682 $scope.closeActiontra = function() 2683 { 2684 $('#aiextPopup').hide(); 2685 } 2686 2687 2688 $scope.updateJobdiva = function(ext) 2689 { 2690 $scope.loader = true; 2691 var config = { params: { ext : ext } }; 2692 $http.post(base_url+"user_extensions/update_jobdivaext", null, config).then(function(response) 2693 { 2694 $scope.loader = false; 2695 console.log(response.data.errmsg); 2696 $('#jobDivaTextPopup').modal('hide'); 2697 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2698 }); 2699 } 2700 2701 $scope.followAction = function(ext){ 2702 $scope.loader = true; var config = { params: { ext : ext.extension } }; 2703 $http.post(base_url+"user_extensions/editFollowme", null, config).then(function(response){ $scope.loader = false; 2704 if(response.data.errcode == 200){ 2705 $scope.formdata = response.data.errmsg; $('#followModal').modal('show'); 2706 }else{ 2707 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2708 } 2709 }); 2710 } 2711 2712 2713 $scope.deleteVoicemail = function(formdata,varResult) 2714 { 2715 var download = document.getElementById("download").value; 2716 if(download != '') 2717 { 2718 if(confirm("Are you sure you want to delete voicemail?")) 2719 { 2720 $scope.loader = true; $scope.arrayText = []; 2721 angular.forEach(formdata, function(value, key){ $scope.arrayText.push(value['dlink']); $scope.arrayText.push(value['dlink1']); }); 2722 var jsonstr = JSON.stringify($scope.arrayText); var config = { params: { formdata : jsonstr } }; 2723 $http.post(base_url+"user_extensions/delete_all", null, config).then(function(response){ $scope.loader = false; 2724 if(response.data.errcode == 200){ $scope.voiceMaillist(response.data.ext); $scope.chkVal = false; } 2725 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode); 2726 }); 2727 } 2728 } 2729 else 2730 {
2731 $scope.ajaxResult = 'Select Atleast One!'; myService.resMessage($scope,$timeout,202); 2732 } 2733 } 2734 2735 $scope.voiceMail = function(ext){ 2736 $scope.voicemailname = ext; 2737 $scope.loader = true; var config = { params: { ext : ext.extension } }; 2738 $http.post(base_url+"user_extensions/editvoicemail", null, config).then(function(response){ $scope.loader = false; 2739 if(response.data.errcode == 200){ 2740 $scope.setting = response.data.errmsg; $('#voiceModal').modal('show'); 2741 }else{ 2742 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2743 } 2744 }); 2745 } 2746 2747 $scope.getCallerID = function(ext) 2748 { 2749 console.log(ext); $scope.callerselected = ''; 2750 $scope.loader = true; $scope.caller = {extension:'',callerid:''}; 2751 $http.get(base_url+"user_extensions/edit_callerid").then(function(response) 2752 { 2753 $scope.loader = false; 2754 $scope.didlist = response.data; $scope.callerselected = ext.outboundcid;console.log($scope.callerselected); 2755 $scope.caller = {extension:ext.extension, callerid:ext.outboundcid}; $('#callerIDModal').modal('show'); 2756 }); 2757 } 2758 $scope.autopro = {}; 2759 $scope.getAutoProvision = function(ext) 2760 { 2761 $scope.autopro = {extension:ext.extension}; 2762 $('#autoProvisionModal').modal('show'); 2763 } 2764 2765 $scope.updateCallerID = function(callerid){ 2766 $scope.loader = true; var config = { params: { formdata : callerid} }; 2767 $http.post(base_url+"user_extensions/update_callerid", null, config).then(function(response){ $scope.loader = false; 2768 if(response.data.errcode == 200){ $scope.loadDocu(); $('#callerIDModal').modal('hide'); } 2769 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2770 }); 2771 } 2772 2773 2774 $scope.updateTranscript = function(transcript,ajaxresult){ 2775 console.log("werdwe") 2776 // transcript.extension = $scope.aiext; 2777 $scope.loader = true; var config = { params: { formdata : transcript,extno:$scope.aiext} }; 2778 $http.post(base_url+"user_extensions/update_transcript", null, config).then(function(response){ 2779 $scope.loader = false; 2780 // if(response.data.errcode == 200){ } 2781 $('#aiextPopup').hide(); 2782 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2783 }); 2784 } 2785 2786 $scope.updateAutoProvision = function(callerid) 2787 { 2788 $scope.loader = true; var config = { params: { formdata : callerid} }; 2789 var phonedevice = document.getElementById("phonedevice").value; 2790 var model = document.getElementById('phonemodel').value; 2791 if(model == "CISCO-7821" || model == "CISCO-7841" || model == "CISCO-8845" || model == "CISCO-8832") 2792 { 2793 phonedevice = "CISCOSPA"; 2794 } 2795 if(phonedevice == "CISCOSPA") 2796 { 2797 $http.post(base_url+"user_extensions/auto_provision", null, config).then(function(response){ $scope.loader = false; 2798 if(response.data.errcode == 200){ $scope.loadDocu(); $('#autoProvisionModal').modal('hide'); } 2799 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2800 }); 2801 } 2802 else if(phonedevice == "CISCO") 2803 { 2804 2805 2806 $http.post(base_url+"user_extensions/auto_provision_cisco", null, config).then(function(response){ $scope.loader = false; 2807 if(response.data.errcode == 200){ $scope.loadDocu(); $('#autoProvisionModal').modal('hide'); } 2808 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2809 }); 2810 } 2811 else if(phonedevice == "POLYCOM") 2812 { 2813 $http.post(base_url+"user_extensions/auto_provision_polycom", null, config).then(function(response){ $scope.loader = false; 2814 if(response.data.errcode == 200){ $scope.loadDocu(); $('#autoProvisionModal').modal('hide'); } 2815 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2816 }); 2817 } 2818 else if(phonedevice == "YEALINK") 2819 { 2820 $http.post(base_url+"user_extensions/auto_provision_yealink", null, config).then(function(response){ $scope.loader = false; 2821 if(response.data.errcode == 200){ $scope.loadDocu(); $('#autoProvisionModal').modal('hide'); } 2822 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2823 }); 2824 } 2825 else if(phonedevice == "GreandStream") 2826 { 2827 if(model == "GRP260X") 2828 { 2829 $http.post(base_url+"user_extensions/auto_provision_greandstream_grp", null, config).then(function(response){ $scope.loader = false; 2830 if(response.data.errcode == 200){ $scope.loadDocu(); $('#autoProvisionModal').modal('hide'); } 2831 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2832 }); 2833 } 2834 else 2835 { 2836 $http.post(base_url+"user_extensions/auto_provision_greandstream1", null, config).then(function(response){ $scope.loader = false; 2837 if(response.data.errcode == 200){ $scope.loadDocu(); $('#autoProvisionModal').modal('hide'); } 2838 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2839 }); 2840 } 2841 } 2842 else if(phonedevice == "Telekonnectors") 2843 { 2844 $http.post(base_url+"user_extensions/auto_provision_telekonnectors", null, config).then(function(response){ $scope.loader = false; 2845 if(response.data.errcode == 200){ $scope.loadDocu(); $('#autoProvisionModal').modal('hide'); } 2846 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2847 }); 2848 } 2849 } 2850 2851 $scope.voiceMaillist = function(ext) 2852 { 2853 $scope.voicemaillistext = ext; 2854 $scope.loader = true; var config = { params: { ext : ext } }; 2855 $http.post(base_url+"user_extensions/voicemail_list", null, config).then(function(response){ $scope.loader = false; 2856 $scope.totalCount = response.data.totalCount; $scope.user = {extension:''}; 2857 if(response.data.errcode == 200){ 2858 $scope.extension = response.data.errmsg; 2859 $scope.voicemailList = true; 2860 //$('#voiceModal').modal('show'); 2861 $scope.headopens = true; 2862 }else{ 2863 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2864 } 2865 }); 2866 } 2867 2868 $scope.closeAction = function() 2869 { 2870 $('#jobDivaTextPopup').modal('hide'); 2871 $('#formModal').modal('hide'); $('#followModal').modal('hide'); 2872 $('#voiceModal').modal('hide'); $('#addextModal').hide(); 2873 $('#callerIDModal').modal('hide'); $('#autoProvisionModal').modal('hide'); 2874 } 2875 2876 2877 $scope.featuresUpdate = function(formdata, varResult) 2878 { 2879 //if(formdata.name.match(/^.*[^\s{1,}]\s.*/)||(formdata.name=='')){ 2880 if((formdata.name!='')){ 2881 /*$scope.displayerror = "Display Name should not contain space!"; $timeout(function (){ $scope.displayerror = ''; }, 3000); 2882 }else{*/ 2883 $scope.loader = true; var config = { params: { formdata:formdata } }; 2884 $http.post(base_url+"user_extensions/featuresUpdate", null, config).then(function(response){ $scope.loader = false; 2885 if(response.data.errcode == 200){ $scope.loadDocu(); $('#formModal').modal('hide'); } 2886 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2887 }); 2888 //}
2889 }; 2890} 2891 2892 $scope.followUpdate = function(formdata, varResult) 2893 { 2894 $scope.cnf = 'DISABLED'; $scope.btnlist = 0; 2895 if(document.getElementById('fwme_enable').checked){ $scope.cnf = 'ENABLED'; } 2896 if(formdata.follow_me_list != '' && $scope.cnf == 'ENABLED'){ $scope.btnlist = 1; } 2897 if(formdata.follow_me_list == '' && $scope.cnf == 'DISABLED'){ $scope.btnlist = 1; } 2898 2899 if($scope.btnlist == 1){ 2900 $scope.loader = true; var config = { params: { formdata:formdata,cnf:$scope.cnf } }; 2901 $http.post(base_url+"user_extensions/followUpdate", null, config).then(function(response){ $scope.loader = false; 2902 if(response.data.errcode == 200){ $scope.loadDocu();$('#followModal').modal('hide'); } 2903 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2904 }); 2905 }else{ 2906 $scope.errormsg = "Please enter Follow Me List & select User Confirmation"; $timeout(function (){ $scope.errormsg = ''; }, 3000); 2907 } 2908 }; 2909 2910 $scope.settingUpdate = function(formdata, varResult) { 2911 $scope.loader = true; var config = { params: { formdata : formdata } }; 2912 $http.post(base_url+"user_extensions/voicemailUpdate", null, config).then(function(response){ $scope.loader = false; 2913 if(response.data.errcode == 200){ $scope.loadDocu(); $('#voiceModal').modal('hide'); } 2914 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2915 }); 2916 }; 2917 2918 $scope.deleteAction = function(formdata, varResult) 2919 { 2920 // if(confirm("Are you sure you want to delete extension?")) 2921 // { 2922 // $scope.loader = true; var config = { params: { formdata : formdata } }; 2923 // $http.post(base_url+"user_extensions/deleteExt", null, config).then(function(response){ $scope.loader = false; 2924 // $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2925 // }); 2926 // window.location = base_url+'order/deactivation_of_line'; 2927 // } 2928 swal({ 2929 type: 'warning', 2930 title: '<h4>Are you sure you want to delete extension?</h4>', 2931 showConfirmButton: true, 2932 confirmButtonText: "Yes, Delete!", 2933 showCancelButton:true, 2934 buttonsStyling: true, 2935 showLoaderOnConfirm: true, 2936 }).then((result) => { 2937 if (result.value) { 2938 window.location = base_url+'order/deactivation_of_line'; 2939 } else if (result.dismiss === 'cancel') { 2940 swal( 2941 'Cancelled', 2942 'Your stay here :)', 2943 'error' 2944 ) 2945 } 2946 }) 2947 }; 2948 2949 $scope.addExt = function() 2950 { 2951 //$('#addextModal').show(); 2952 window.location = base_url+'order/additional_line_request'; 2953 } 2954 $scope.createExt = function(formdata, varResult) { 2955 $scope.loader = true; var config = { params:{formdata:formdata} }; 2956 $http.post(base_url+"user_extensions/add_extension", null, config).then(function(response){ $scope.loader = false; 2957 if(response.data.errcode == 200){ $('#addextModal').hide(); } 2958 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2959 }); 2960 }; 2961 2962 $scope.voiceMailDelete = function(ext,ext1,exten) 2963 { 2964 2965 2966 swal({ 2967 type: 'warning', 2968 title: '<h4>Are you sure you want to delete voicemail?</h4>', 2969 showConfirmButton: true, 2970 confirmButtonText: "Yes, Delete!", 2971 showCancelButton:true, 2972 buttonsStyling: true, 2973 showLoaderOnConfirm: true, 2974 }).then((result) => { 2975 if (result.value) { 2976 $scope.loader = true; var config = { params: { ext:ext,ext1:ext1 } }; 2977 $http.post(base_url+"user_extensions/delete_voice", null, config).then(function(response){ $scope.loader = false; 2978 $scope.voiceMaillist(exten); $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2979 }); 2980 } else if (result.dismiss === 'cancel') { 2981 swal( 2982 'Cancelled', 2983 'Your stay here :)', 2984 'error' 2985 ) 2986 } 2987 }) 2988 2989 2990 // if(confirm("Are you sure you want to delete voicemail?")) 2991 // { 2992 // $scope.loader = true; var config = { params: { ext:ext,ext1:ext1 } }; 2993 // $http.post(base_url+"user_extensions/delete_voice", null, config).then(function(response){ $scope.loader = false; 2994 // $scope.voiceMaillist(exten); $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 2995 // }); 2996 // } 2997 } 2998 2999 $scope.voiceMailPlayFromBiling = function(exten,exten1,exten2,exten3) 3000 { 3001 var fold1 = exten2.replace("~", "/"); 3002 var fold = fold1.replace("~", "/"); 3003 var urls = exten+".vitelglobal.com/"+exten1+fold; 3004 console.log(urls); 3005 $scope.loader = true; 3006 var config = {params: { path : urls,ext:$scope.voicemaillistext}}; 3007 $http.post(base_url+"call_records/getCdrFileNew", null, config).then(function(response){ 3008 // console.log(response); 3009 $scope.loader = false; 3010 $('#voicemaillisten').modal('show'); 3011 document.getElementById("extplay").innerHTML = '<audio id="myAudio" controls autoplay controlsList="nodownload"><source src="'+response.data.tabledata+'" type="audio/wav"></audio>'; 3012 }); 3013 } 3014 3015 // $scope.voiceMailPlay = function(exten,exten1,exten2,exten3) 3016 // { 3017 // //alert(exten); 3018 // var fold1 = exten2.replace("~", "/"); 3019 // var fold = fold1.replace("~", "/"); 3020 // var urls = exten+".vitelglobal.com/"+exten1+fold; 3021 // $('#voicemaillisten').modal('show'); 3022 // console.log(urls); 3023 // document.getElementById("extplay").innerHTML = '<audio id="myAudio" controls autoplay controlsList="nodownload"><source src="http://'+urls+'" type="audio/wav"></audio>'; 3024 // } 3025 3026 $scope.voiceMailPlay = function(exten,exten1,exten2,exten3) 3027 // https://quickmdcare.vitelglobal.com/voicemail/default/101/INBOX/msg0002.wav 3028 { 3029 var fold1 = exten2.replace("~", "/"); 3030 var fold = fold1.replace("~", "/"); 3031 var urls = exten+".vitelglobal.com/"+exten1+fold; 3032 $scope.loader = true; var config = {params: { path : urls}}; 3033 $http.post(base_url+"call_records/getCdrFilevoicemail", null, config).then(function(response){ 3034 $scope.loader = false; $('#voicemaillisten').modal('show'); 3035 document.getElementById("extplay").innerHTML = '<audio id="myAudio" controls autoplay controlsList="nodownload"><source src="'+decodeURIComponent(response.data.tabledata)+'" type="audio/wav"></audio>'; 3036 }); 3037 } 3038 3039 $scope.closeActionNew = function(){ $('#voicemaillisten').modal('hide'); var vid = document.getElementById("myAudio"); vid.pause(); } 3040 $scope.user = {extension:''}; 3041 $scope.checkAll = function() { 3042 if($scope.chkVal == true){ 3043 $scope.user = {extension: angular.copy($scope.extension)}; 3044 }else{ 3045 $scope.user = {extension:''}; 3046 } 3047 }; 3048 3049 $scope.deleteVoicemail = function(formdata,varResult) 3050 { 3051 var download = document.getElementById("download").value; 3052 if(download != '') 3053 { 3054 if(confirm("Are you sure you want to delete voicemail?")) 3055 { 3056 $scope.loader = true; $scope.arrayText = []; 3057 angular.forEach(formdata, function(value, key){ $scope.arrayText.push(value['dlink']); $scope.arrayText.push(value['dlink1']); }); 3058 var jsonstr = JSON.stringify($scope.arrayText); var config = { params: { formdata : jsonstr } }; 3059 $http.post(base_url+"user_extensions/delete_all", null, config).then(function(response){ $scope.loader = false; 3060 if(response.data.errcode == 200){ $scope.voiceMaillist(response.data.ext); $scope.chkVal = false; } 3061 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 3062 }); 3063 } 3064 } 3065 else 3066 {
3067 //$scope.ajaxResult = 'Select Atleast One!'; myService.resMessage($scope,$timeout,202); 3068 swal({ 3069 html: `<h4>Select Atleast One!</h4>`, 3070 type: "error", 3071 timer: 3000, 3072 showConfirmButton:false, 3073 }); 3074 } 3075 } 3076}); 3077 3078function downloadMails() 3079{ 3080 var download = document.getElementById("download").value; 3081 if(download != ''){ 3082 document.downloadNow.submit(); return true; 3083 }else{ 3084 alert("Select atleast one record!"); return false; 3085 } 3086} 3087 3088//For List of Extensions Page - End 3089 3090//For List of DIDs Page - Start 3091myapp.controller("userDIDlist", function($scope,$http,$timeout,myService) { 3092 $scope.pageno = 1; // initialize page no to 1 3093 $scope.selectables = [ {value: 500}, {value: 600}, {value: 700}, {value: 800}, {value: 900}, {value: 1000} ]; 3094 $scope.pageSize = "500"; 3095 $scope.searchKey = ''; 3096 3097 $scope.searchData = function(){ $scope.loadDocu(); } 3098 $scope.pageData = function(pageno){ $scope.pageno = pageno; $scope.loadDocu(); } 3099 $scope.loadDocu = function () { 3100 $scope.loader = true; var config = {params:{page:$scope.pageno, size:$scope.pageSize, keyword:$scope.searchKey}}; 3101 $http.post(base_url+"user_dids/tabledata", null, config).then(function(response){ $scope.loader = false; 3102 // console.log(response); 3103 $scope.userdid = response.data.tabledata; 3104 3105 myService.pagination($scope,$scope.pageno,$scope.pageSize,$scope.userdid,response.data.totalCount); 3106 }); 3107 $scope.getCallerID = function(ext){ $scope.loader = true; 3108 $http.get(base_url+"user_extensions/edit_callerid").then(function(response){ $scope.loader = false; 3109 // console.log(response) 3110 $scope.didlist = response.data; $scope.caller = {extension:ext.line, callerid:ext.cname}; $('#callerIDModal').modal('show'); 3111 }); 3112 } 3113 }; 3114 $scope.loadDocu(); 3115 $scope.cnameUpdate = function(formdata,varResult) 3116 { 3117 3118 $scope.loader = true; 3119 var config = { params: { cname : formdata.name, cnamesdid:formdata.extension, cnamesprovider:formdata.provider} }; 3120 $http.post(base_url+"user_dids/cnameUpdate", null, config).then(function(response) 3121 { 3122 $scope.loader = false; 3123 if(response.data.errcode == 200) 3124 { 3125 $scope.ajaxResult = response.data.errmsg; $('#formModal').hide(); 3126 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 3127 } 3128 else 3129 { 3130 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 3131 } 3132 }); 3133 } 3134 3135 $scope.openModal = function(line_id,hold_desc) 3136 { 3137 $scope.line_id = line_id; 3138 $scope.note = hold_desc; 3139 $('#addNoteModel').show(); 3140 }; 3141 3142 $scope.submitNote = function() 3143 { 3144 $scope.loader = true; 3145 // Setup the config object with the parameters 3146 var config = 3147 { 3148 params: { 3149 note: $scope.note, 3150 line_id: $scope.line_id 3151 } 3152 }; 3153 3154 // Send the POST request 3155 $http.post(base_url + "user_dids/addNoteHold", null, config) 3156 .then(function(response) 3157 { 3158 3159 $scope.loader = false; 3160 3161 if(response.data.errcode == 200) 3162 { 3163 $('#addNoteModel').hide(); 3164 3165 // Manually hide the backdrop 3166 $('.modal-backdrop').remove(); 3167 3168 $scope.loadDocu(); 3169 3170 new Swal({ 3171 icon: 'success', 3172 title: 'Success!', 3173 text: response.data.errmsg, 3174 confirmButtonText: 'Ok' 3175 }); 3176 } 3177 else 3178 { 3179 Swal.fire({ 3180 icon: 'error', 3181 title: 'Error!', 3182 text: response.data.errmsg, 3183 confirmButtonText: 'Try Again' 3184 }); 3185 } 3186 3187 }, 3188 function(error) 3189 { 3190 console.error('Error updating CNAM:', error); 3191 }); 3192 3193 }; 3194 3195 3196 3197 3198}); 3199//For List of DIDs Page - End 3200 3201//For Phone Status Page - Start 3202myapp.controller("phoneStatus", function($scope,$http,$timeout,myService) { 3203 3204 $getval = window.location.href.substr(window.location.href.lastIndexOf('/') + 1); 3205 if($getval == 'phone_registry_status') 3206 { 3207 $scope.phoneCount = 0; $scope.loader = true; $scope.usertype = 0; 3208 $http.get(base_url+"phone_registry_status/phone_data").then(function(response){ 3209 // console.log(response); 3210 $scope.phone = response.data.tabledata; $scope.loader = false; $scope.phoneCount = $scope.phone.length; 3211 $scope.usertype = response.data.usertype; 3212 }); 3213 } 3214 3215 if($getval == 'voicemail_status') 3216 { 3217 $scope.mailCount = 0; $scope.loader = true; 3218 $http.get(base_url+"phone_registry_status/voicemail_data").then(function(response){ 3219 // console.log(response.data); 3220 $scope.voicemail = response.data; $scope.loader = false; $scope.mailCount = $scope.voicemail.length; console.log($scope.mailCount); 3221 }); 3222 } 3223}); 3224//For Phone Status Page - End 3225 3226//For Order Page - Start 3227myapp.controller("orderController", function($scope,$http,$timeout,myService) { 3228 $http.get(base_url+"order/get_states").then(function(response) { 3229 $scope.states = response.data.tabledata; 3230 $scope.form = {state:response.data[0]}; 3231 }); 3232 3233 $scope.getRateCenter = function(state){ 3234 var config = { params: { state : state } }; 3235 $http.post(base_url+"order/get_ratecenter", null, config).then(function(response) { 3236 $scope.centers = response.data.tabledata; $scope.center = true; 3237 $scope.form = {state:state,center:response.data[0]}; 3238 }); 3239 } 3240 3241 $scope.searchDidnumber = function (form) { 3242 $scope.loader = true; 3243 var config = { params: { formdata : form } }; 3244 $http.post(base_url+"order/search_didnumbers", null, config).then(function(response) { 3245 $scope.loader = false; 3246 // console.log(response); 3247 if(response.data.errcode == 200){ 3248 $scope.didnumbers = response.data.errmsg; $scope.didserror = true; 3249 }else{ 3250 $scope.diderror = response.data.errmsg; $scope.didserror = false; 3251 } 3252 }); 3253 } 3254 3255 $scope.orderDids = function (didnum) { 3256 $http.get(base_url+"order/orderdid").then(function(response) { 3257 $scope.plans = response.data; $scope.didnum = didnum; 3258 $scope.didplan = $scope.plans[0]; $scope.orderDID = true; 3259 }); 3260 } 3261 3262 $scope.orderRequest = function (didnum,varResult) { 3263 var config = { params: { didnum : didnum } }; 3264 $http.post(base_url+"order/orderRequest", null, config).then(function(response) { 3265 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 3266 }); 3267 } 3268}); 3269//For Order Page - End 3270 3271//For Toll free Page - Start 3272myapp.controller("tollfreeController", function($scope,$http,$timeout,myService) { 3273 $http.get(base_url+"order/tollfree_order").then(function(response){ $scope.tollfree = response.data; }); 3274 $scope.tollNumber = function(num){ $scope.tollnum = num; $scope.tollFree = true; } 3275 $scope.tollfreeRequest = function (tollnum,varResult) { 3276 var config = { params: { tollnum : tollnum } }; 3277 $http.post(base_url+"order/tollfreeRequest", null, config).then(function(response) { 3278 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 3279 }); 3280 } 3281}); 3282//For Toll free Page - End 3283 3284//For Feature code Page - Start 3285myapp.controller("featurecodeController", function($scope) { 3286 $scope.codes = [ 3287 {cod: '*52', action: 'Call Forward No Answer/Unavailable Activate'}, 3288 {cod: '*53', action: 'Call Forward No Answer/Unavailable Deactivate'}, 3289 {cod: '*72', action: 'Call Forward All Activate'}, 3290 {cod: '*73', action: 'Call Forward All Deactivate'}, 3291 {cod: '*90', action: 'Call Forward Busy Activate'}, 3292 {cod: '*91', action: 'Call Forward Busy Deactivate'},
3293 {cod: '*97', action: 'My Voicemail (default password- 12345. Refer manuals for any query)'} 3294 ]; 3295}); 3296//For Feature code Page - End 3297 3298//For Billing History Page - Start 3299myapp.controller("billingController", function($scope,$http,$timeout,myService) 3300{ 3301 $http.get(base_url+"billing_history/bill_detail").then(function(response) 3302 { 3303 $scope.bills = response.data.tabledata; 3304 $scope.billtotal = response.data.total; 3305 }); 3306 3307 3308 $scope.pageno = 1; // initialize page no to 1 3309 $scope.selectables = [ {value: 1000},{value: 2000},{value: 3000}, {value: 4000}, {value: 5000}]; 3310 $scope.pageSize = "1000"; 3311 $scope.searchKey = ''; 3312 3313 $scope.searchData = function(){ $scope.loadInvoice(); } 3314 $scope.pageData = function(pageno){ $scope.pageno = pageno; $scope.loadInvoice(); } 3315 $scope.loadInvoice = function () { 3316 var config = {params:{page:$scope.pageno, size:$scope.pageSize, keyword:$scope.searchKey}}; 3317 $http.post(base_url+"billing_history/tabledata", null, config).then(function(response){ 3318 $scope.invoices = response.data.tabledata; 3319 myService.pagination($scope,$scope.pageno,$scope.pageSize,$scope.invoices,response.data.totalCount); 3320 }); 3321 }; 3322 $scope.loadInvoice(); 3323 3324 $scope.makePayment = function(formdata) 3325 { 3326 if(confirm("Are you sure you want to make Payment?")) 3327 { 3328 $scope.dats = {rafor:'others',Others_for:formdata.inv_subject,amt:formdata.invoice_amount,submitt:'Process',invid:formdata.invoiceid}; 3329 $scope.loader = true; var config = {params:{formdata:$scope.dats}}; 3330 $http.post(base_url+"make_payment/payment_process_invoice", null, config).then(function(response){ $scope.loader = false; 3331 $scope.ajaxResult = response.data.errmsg; 3332 myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); //$scope.pay = {rafor:'',amt:'',Others_for:''}; 3333 $scope.loadInvoice(); 3334 }); 3335 } 3336 }; 3337 3338 $scope.sendMail = function (invo) { 3339 $scope.loader = true; var config = { params: { formdata : invo } }; 3340 $http.post(base_url+"billing_history/invoice_mail", null, config).then(function(response){ $scope.loader = false; 3341 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 3342 }); 3343 }; 3344 3345 3346 $scope.vginvoice = function(invo) { 3347 3348 //alert(invo) 3349 console.log(invo) 3350 $scope.loader = true; var config = { params: { formdata : invo } }; 3351 $http.post(base_url+"billing_history/invoice_htmlpopup", null, config).then(function(response){ 3352 3353 $scope.ajaxResult = response.data; 3354 //console.log(response); 3355 }); 3356 $('#vg_invoice').modal('show'); 3357 } 3358 3359 3360}); 3361 3362myapp.controller("billingInvoices", function($scope,$http,$timeout,myService) 3363{ 3364 3365 $scope.pageno = 1; // initialize page no to 1 3366 $scope.selectables = [ {value: 25},{value: 50},{value: 100}, {value: 200}, {value: 300}, {value: 500} ]; 3367 $scope.pageSize = "25"; 3368 $scope.searchKey = ''; 3369 3370 $scope.searchData = function(){ $scope.loadInvoice(); } 3371 $scope.pageData = function(pageno){ $scope.pageno = pageno; $scope.loadInvoice(); } 3372 $scope.loadInvoice = function () 3373 { 3374 var config = {params:{page:$scope.pageno, size:$scope.pageSize, keyword:$scope.searchKey}}; 3375 $http.post(base_url+"billing_history/tabledata", null, config).then(function(response) 3376 { 3377 $scope.invoices = response.data.tabledata; 3378 myService.pagination($scope,$scope.pageno,$scope.pageSize,$scope.invoices,response.data.totalCount); 3379 }); 3380 }; 3381 $scope.loadInvoice(); 3382 3383 $scope.makePayment = function(formdata) 3384 { 3385 if(confirm("Are you sure you want to make Payment?")) 3386 { 3387 $scope.dats = {rafor:'others',Others_for:formdata.inv_subject,amt:formdata.invoice_amount,submitt:'Process',invid:formdata.invoiceid}; 3388 $scope.loader = true; var config = {params:{formdata:$scope.dats}}; 3389 $http.post(base_url+"make_payment/payment_process_invoice", null, config).then(function(response){ $scope.loader = false; 3390 $scope.ajaxResult = response.data.errmsg; 3391 myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); //$scope.pay = {rafor:'',amt:'',Others_for:''}; 3392 $scope.loadInvoice(); 3393 }); 3394 } 3395 }; 3396 3397 $scope.sendMail = function (invo) 3398 { 3399 $scope.loader = true; var config = { params: { formdata : invo } }; 3400 $http.post(base_url+"billing_history/invoice_mail", null, config).then(function(response){ $scope.loader = false; 3401 $scope.ajaxResult = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 3402 }); 3403 }; 3404}); 3405//For Billing History Page - End 3406//For Billing Information Page - Start 3407myapp.controller("billingInformation", function($scope,$http,$timeout,myService) 3408{ 3409 3410 3411
3412 $scope.detectCardType = function(number) { 3413 if (!number) return; 3414 number = number.replace(/\s/g, ''); 3415 var type = 'Unknown'; 3416 if (/^4/.test(number)) type = 'Visa'; 3417 else if (/^(5[1-5]|2[2-7])/.test(number)) type = 'MasterCard'; 3418 else if (/^3[47]/.test(number)) type = 'AmExCard'; 3419 else if (/^6(?:011|5)/.test(number)) type = 'DiscoverCard'; 3420 else if (/^(60|65|81|82|508)/.test(number)) type = 'RuPay'; 3421 if (type !== 'Unknown') $scope.cc.cardtype = type; 3422 }; 3423 3424 3425 $http.get(base_url+"billing_information/get_ccdetails").then(function(response){ $scope.cc = response.data; $scope.selectState($scope.cc.country); }); 3426 3427 $http.get(base_url+"my_account/country").then(function(response){ $scope.country = response.data; }); 3428 $scope.selectState = function(keyword) 3429 { 3430 $scope.loader = true; var config = { params: { country : keyword } }; 3431 $http.post(base_url+"my_account/states", null, config).then(function(response){ $scope.loader = false; $scope.states = response.data; }); 3432 }; 3433 3434 $scope.creditUpdate = function(formdata, varResult) 3435 { 3436 $scope.loader = true; var config = {params:{formdata:formdata}}; 3437 $http.post(base_url+"billing_information/update_creditcard", null, config).then(function(response){ $scope.loader = false; 3438 $scope[varResult] = response.data.errmsg; 3439 myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 3440 $timeout(function () { window.location = base_url+'billing_information'; }, 3000); 3441 3442 }); 3443 }; 3444 3445 $scope.echeckUpdate = function(formdata, varResult) { 3446 $scope.loader = true; var config = {params:{formdata:formdata}}; 3447 $http.post(base_url+"billing_information/update_echeck", null, config).then(function(response){ $scope.loader = false; 3448 $scope[varResult] = response.data.errmsg; 3449 myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 3450 $timeout(function () { window.location = base_url+'billing_information'; }, 3000); 3451 }); 3452 }; 3453}); 3454//For Billing Information Page - End 3455 3456//For Make Payment Page - Start 3457myapp.controller("makePayment", function($scope,$http,$timeout,myService) 3458{ 3459 3460 $http.get(base_url+"billing_information/get_ccdetails").then(function(response){ $scope.cc = response.data; }); 3461 $scope.pay = {rafor:'',amt:'',Others_for:''}; 3462 3463 $scope.makePayment = function(formdata, varResult) { 3464 $scope.loader = true; var config = {params:{formdata:formdata}}; 3465 $http.post(base_url+"make_payment/payment_process", null, config).then(function(response){ $scope.loader = false; 3466 $scope[varResult] = response.data.errmsg; 3467 myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 3468 $scope.pay = {rafor:'',amt:'',Others_for:''}; 3469 }); 3470 }; 3471 3472}); 3473//For Make Payment Page - End 3474 3475//For Mobile App Page - Start 3476myapp.controller("mobileApp", function($scope,$http,$timeout,myService) { 3477
3478 $scope.satext = ''; 3479 $scope.getExtensionData = function() 3480 { 3481 $scope.loader = true; 3482 var config = { params: { ext:$scope.selectedextension } }; 3483 $http.post(base_url+"user_extensions/getExtensionSelected", null, config).then(function(response) 3484 { 3485 $scope.loader = false; 3486 window.location.reload(); 3487 }); 3488 } 3489 3490 3491// Open Send Mail Modal 3492// $scope.openSendMailModal = function(app) { 3493// $scope.sendMailData = { 3494// username: app.username, 3495// dspname: app.dspname, 3496// cloud_username: app.cloud_username, 3497// cloud_password: app.cloud_password, 3498// qrimage: app.qrimage, // Add QR image name 3499 3500// email: '', 3501// additionalEmails: '' 3502// }; 3503// $('#sendMailModal').modal('show'); 3504// }; 3505 3506// // Send Credentials via Email 3507// $scope.sendCredentialsEmail = function(sendData) { 3508// if (!sendData.email) { 3509// alert('Please enter an email address.'); 3510// return; 3511// } 3512 3513// // Validate email format 3514// var emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; 3515// if (!emailPattern.test(sendData.email)) { 3516// alert('Please enter a valid email address.'); 3517// return; 3518// } 3519 3520// $scope.loader = true; 3521 3522// var config = { 3523// params: { 3524// username: sendData.username, 3525// dspname: sendData.dspname, 3526// cloud_username: sendData.cloud_username, 3527// cloud_password: sendData.cloud_password, 3528// qrimage: sendData.qrimage, // Send QR image name 3529// email: sendData.email, 3530// additional_emails: sendData.additionalEmails || '' 3531// } 3532// }; 3533 3534// $http.post(base_url + "mobileapp/send_credentials_email", null, config).then(function(response) { 3535// $scope.loader = false; 3536// $scope.ajaxResult = response.data.errmsg; 3537// myService.resMessage($scope, $timeout, response.data.errcode, response.data.errmsg); 3538 3539// if (response.data.errcode == 200) { 3540// $('#sendMailModal').modal('hide'); 3541// $scope.sendMailData = {}; 3542// } 3543// }).catch(function(error) { 3544// $scope.loader = false; 3545// alert('An error occurred while sending the email. Please try again.'); 3546// console.error('Error sending email:', error); 3547// }); 3548// }; 3549 3550 3551 // Open Send Mail Modal 3552$scope.openSendMailModal = function(app) { 3553 $scope.sendMailData = { 3554 username: app.username, 3555 dspname: app.dspname, 3556 cloud_username: app.cloud_username, 3557 cloud_password: app.cloud_password, 3558 qrimage: app.qrimage, 3559 sendType: 'desktop', // Default: desktop only 3560 email: '', 3561 additionalEmails: '' 3562 }; 3563 $('#sendMailModal').modal('show'); 3564}; 3565 3566// Close Send Mail Modal 3567$scope.closeSendMailModal = function() { 3568 $('#sendMailModal').modal('hide'); 3569 $scope.sendMailData = {}; 3570}; 3571 3572// Send Credentials via Email 3573$scope.sendCredentialsEmail = function(sendData) { 3574 if (!sendData.email) { 3575 alert('Please enter an email address.'); 3576 return; 3577 } 3578 3579 // Validate email format 3580 var emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; 3581 if (!emailPattern.test(sendData.email)) { 3582 alert('Please enter a valid email address.'); 3583 return; 3584 } 3585 3586 $scope.loader = true; 3587 3588 var config = { 3589 params: { 3590 username: sendData.username, 3591 dspname: sendData.dspname, 3592 cloud_username: sendData.cloud_username, 3593 cloud_password: sendData.cloud_password, 3594 qrimage: sendData.qrimage, 3595 send_type: sendData.sendType, // desktop, mobile, or both 3596 email: sendData.email, 3597 additional_emails: sendData.additionalEmails || '' 3598 } 3599 }; 3600 3601 $http.post(base_url + "mobileapp/send_credentials_email", null, config).then(function(response) { 3602 $scope.loader = false; 3603 $scope.ajaxResult = response.data.errmsg; 3604 myService.resMessage($scope, $timeout, response.data.errcode, response.data.errmsg); 3605 3606 if (response.data.errcode == 200) { 3607 $('#sendMailModal').modal('hide'); 3608 $scope.sendMailData = {}; 3609 } 3610 }).catch(function(error) { 3611 $scope.loader = false; 3612 alert('An error occurred while sending the email. Please try again.'); 3613 console.error('Error sending email:', error); 3614 });
3615}; 3616 3617 3618 $http.get(base_url+"user_extensions/subext_list").then(function(response) 3619 { 3620 $scope.cc = response.data.assignext; 3621 //setTimeout(function(){ $scope.satext = $scope.selectedextension = response.data.selectedext; }, 2000); 3622 $timeout(function () { $scope.satext = $scope.selectedextension = response.data.selectedext; }, 3000); 3623 }); 3624 3625 $scope.getAlert = function() 3626 { 3627 //$scope.ajaxResult = "Please Select Extension"; myService.resMessage($scope,$timeout,202); 3628 swal({ 3629 html: `<h4>Please Select Extension</h4>`, 3630 type: "error", 3631 timer: 3000, 3632 showConfirmButton:false, 3633 }); 3634 } 3635 3636 $scope.pageno = 1; // initialize page no to 1 3637 $scope.selectables = [ {value: 30}, {value: 50}, {value: 100} ]; 3638 $scope.pageSize = "30"; 3639 $scope.searchKey = ''; 3640 3641 $scope.searchData = function(){ $scope.appList(); } 3642 $scope.pageData = function(pageno){ $scope.pageno = pageno; $scope.appList(); } 3643 $scope.appList = function () { $scope.loader = true; 3644 var config = {params:{page:$scope.pageno, size:$scope.pageSize, keyword:$scope.searchKey}}; 3645 $http.post(base_url+"mobileapp/tabledata", null, config).then(function(response){ $scope.loader = false; 3646 $scope.applist = response.data.tabledata; $scope.totalCount = response.data.totalCount; 3647 myService.pagination($scope,$scope.pageno,$scope.pageSize,$scope.applist,$scope.totalCount); 3648 }); 3649 }; 3650 $scope.appList(); 3651 3652 $scope.getvcUpdate = function() 3653 { 3654 var activecount = document.getElementById("totalconf").value 3655 var chks = document.getElementsByName('extdel[]'); 3656 var vconf = document.getElementById("videoconf").value 3657 var ucodes = ''; var newprices = ''; 3658 var hasChecked = false; var valcount = 0; 3659 for (var i = 0; i < chks.length; i++) 3660 { 3661 if (chks[i].checked) 3662 { 3663 hasChecked = true; 3664 newprices += chks[i].value+'~!~'; 3665 valcount = parseInt(valcount) + 1; 3666 } 3667 } 3668 //alert(valcount+'========'+activecount); 3669 if(vconf == '0' ) 3670 { 3671 if(hasChecked == true) 3672 { 3673 $scope.loader = true; 3674 var config = {params:{ids:newprices, videoconf:document.getElementById("videoconf").value}}; 3675 $http.post(base_url+"mobileapp/mobileapp_api_video", null, config).then(function(response) 3676 { 3677 $scope.loader = false; 3678 $scope.appList(); 3679 $scope.ajaxResult = response.data.errmsg; 3680 myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 3681 }); 3682 } 3683 else 3684 { 3685 alert("Select any one extension to update data"); 3686 } 3687 } 3688 else if(parseInt(valcount) <= parseInt(activecount) ) 3689 { 3690 if(hasChecked == true) 3691 { 3692 $scope.loader = true; 3693 var config = {params:{ids:newprices, videoconf:document.getElementById("videoconf").value}}; 3694 $http.post(base_url+"mobileapp/mobileapp_api_video", null, config).then(function(response) 3695 { 3696 $scope.loader = false; 3697 $scope.appList(); 3698 $scope.ajaxResult = response.data.errmsg; 3699 myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 3700 }); 3701 } 3702 else 3703 { 3704 alert("Select any one extension to update data"); 3705 } 3706 } 3707 else 3708 { 3709 if(confirm(("You are activating "+valcount+" licenses for Video Conference. Additional licenses will be $5 per user per month."))) 3710 { 3711 var config = {params:{ids:newprices, videoconf:document.getElementById("videoconf").value}}; 3712 $http.post(base_url+"mobileapp/mobileapp_api_video_paid", null, config).then(function(response) 3713 { 3714 $scope.loader = false; 3715 $scope.appList(); 3716 $scope.ajaxResult = response.data.errmsg; 3717 myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); 3718 }); 3719 } 3720 } 3721 } 3722 3723 $scope.eextpwds = ''; 3724 $scope.qrImage = function (qrimage) { $scope.qrimage = qrimage; $('#qrModal').modal('show'); } 3725 $scope.createForm = function () { $scope.qr = {}; $('#createForm').modal('show'); $scope.qrBtn = false; } 3726 $scope.updateForm = function (val) { $scope.qr = val; $scope.eextpwds = val.cloud_password; $('#createForm').modal('show'); $scope.qrBtn = true; } 3727 $scope.updateQR = function (formdata,varResult) 3728 { 3729 if($scope.eextpwds != formdata.cloud_password) 3730 { 3731 if(confirm("If you change Extension Password, this will reset your extension password and phone need be reconfigured")) 3732 { 3733 $scope.loader = true; var config = { params: { formdata : formdata } }; 3734 $http.post(base_url+"mobileapp/update_qrcode", null, config).then(function(response){ $scope.loader = false; $scope.appList(); 3735 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); $('#createForm').modal('hide'); 3736 }); 3737 } 3738 } 3739 else 3740 { 3741 $scope.loader = true; var config = { params: { formdata : formdata } }; 3742 $http.post(base_url+"mobileapp/update_qrcode", null, config).then(function(response){ $scope.loader = false; $scope.appList(); 3743 $scope[varResult] = response.data.errmsg; myService.resMessage($scope,$timeout,response.data.errcode,response.data.errmsg); $('#createForm').modal('hide'); 3744 }); 3745 } 3746 }; 3747 3748 $scope.passwordChange = function() 3749 { 3750 var text = ""; 3751 var possible = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz123456789"; 3752 3753 for (var i = 0; i < 18; i++){ text += possible.charAt(Math.floor(Math.random() * possible.length)); } 3754 $scope.qr = angular.extend($scope.qr,{cloud_password:text});
3755 } 3756 3757 3758 $scope.getSoftPhoneGenerate = function(did) 3759 { 3760 $scope.loader = true; 3761 var config = {params:{user_id:did}}; 3762 3763 var config = { 3764 params: { 3765 // Add any GET parameters here if needed 3766 } 3767 }; 3768 3769 $http.get(base_url + "mobileapp/getSoftPhoneGenerate", config).then(function(response) 3770 { 3771 $scope.tableview=true; 3772 $scope.loader = false; 3773 $scope.appList(); 3774 $scope.ajaxResult = response.data.errmsg; 3775 myService.resMessage($scope,$timeout,response.data.errcode, $scope.ajaxResult); 3776 }); 3777 } 3778 3779 3780 // $scope.getDeleteStatus = function() 3781 // { 3782 // $scope.tableview=true; 3783 // var chks = document.getElementsByName('extdel[]'); 3784 // $scope.loader = true; 3785 // var ucodes = ''; var newprices = ''; 3786 // var hasChecked = false; 3787 // for (var i = 0; i < chks.length; i++) 3788 // { 3789 // if (chks[i].checked) 3790 // { 3791 // hasChecked = true; 3792 // newprices += chks[i].value+'~!~'; 3793 // } 3794 // } 3795 3796 // if(hasChecked == true) 3797 // { 3798 // if(confirm("Are you sure you want to delete the softphone credentials?")) 3799 // { 3800 // var config = {params:{ids:newprices}}; 3801 3802 // $http.post(base_url+"mobileapp/getDeleteStatus", null, config).then(function(response) 3803 // { 3804 3805 // $scope.loader = false; 3806 // $scope.ajaxResult = response.data.errmsg; 3807 // myService.resMessage($scope,$timeout,response.data.errcode, $scope.ajaxResult); 3808 // $scope.getSoftPhoneGenerateview(did); 3809 // }); 3810 // } 3811 // } 3812 // else 3813 // { 3814 // alert("Select any one extension to update data"); 3815 // } 3816 3817 // } 3818 3819 3820 $scope.getDeleteStatus = function() 3821 { 3822 var chks = document.getElementsByName('extdel[]'); 3823 var selectedIds = []; 3824 3825 for (var i = 0; i < chks.length; i++) { 3826 if (chks[i].checked) { 3827 selectedIds.push(chks[i].value); 3828 } 3829 } 3830 3831 if (selectedIds.length > 0) { 3832 if (confirm("Are you sure you want to delete the selected softphone credentials?")) { 3833 3834 var config = { params: { ids: selectedIds.join(",") } }; 3835 3836 $http.post(base_url + "mobileapp/getDeleteStatus", null, config).then(function(response) { 3837 $scope.loader = false; 3838 $scope.ajaxResult = response.data.errmsg; 3839 myService.resMessage($scope, $timeout, response.data.errcode, $scope.ajaxResult); 3840 $scope.getSoftPhoneGenerateview(did); 3841 }); 3842 } 3843 } else { 3844 alert("Select at least one extension to delete."); 3845 } 3846 }; 3847 3848}); 3849//For Mobile App Page - End
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.