mainAppModule.controller('raspundeIntrebareCtrl',function($scope,ajaxService,browserInfoService){ $scope.xhr_in_progress = false; var defaultRaspuns = "Vedeti raspunsul de tip document atasat"; $scope.info = { table : { isEmpty : true, items : null, totalItemsCount : null, filteredItemsCount : null, totalPageNum : null, crtPageNum : null, crtPageGroup : null, groupSelectOptions : null, pageSelectOptions : null, additInfo : null }, params : { type : null, info : { queryEntity : null, pageNum : null, pageGroup : null, addit : null } }, search : { id : "", mail : "", continut : "", stare : "TOATE", modificatDe : "", successMemento : null, optiuniStare : null, dataRaspuns : { isSelected : false, css : {}, label : "raspuns", deLa : null, panaLa : null }, dataTrimitere : { isSelected : false, css : {}, label : "intrebare", deLa : null, panaLa : null } }, selectedItem : { info : null, raspunsEditabil : null, pePagina : null, file : null }, jsonRequestUrl : "", doc : { baseUrl : "", link : "" }, lastAction : "", status : { show : false, message : "" }, dataSelection : { days : [], months : ["JAN","FEB","MAR","MAY","APR","JUN","JUL","AUG","SEP","OCT","NOV","DEC"], years : [] } }; $scope.processAttachedFile = function(inputFile){ $scope.$apply(function (){ if(inputFile.files.length == 0){ $scope.info.selectedItem.file = null; } else{ $scope.info.selectedItem.file = inputFile.files[0]; } if($scope.info.selectedItem.info.detaliiFisier != undefined) $scope.info.selectedItem.info.detaliiFisier.touched = true; }); }; $scope.deleteFile = function(){ $scope.info.selectedItem.file = null; if($scope.info.selectedItem.info.detaliiFisier != undefined) $scope.info.selectedItem.info.detaliiFisier.touched = true; }; $scope.openLoader = function(){ $("#fileLoader").click(); }; $scope.onInitDataSelection = function(){ for(var i = 1;i <= 31;++i) if(i <= 9) $scope.info.dataSelection.days.push("0" + i); else $scope.info.dataSelection.days.push("" + i); var currentDate = new Date(); var currentYear = parseInt(currentDate.getFullYear()); for(var i = currentYear - 15;i <= currentYear;++i) $scope.info.dataSelection.years.push(i + ""); $scope.info.search.dataRaspuns.deLa = angular.copy($scope.template.dataObj); $scope.info.search.dataRaspuns.panaLa = angular.copy($scope.template.dataObj); $scope.info.search.dataTrimitere.deLa = angular.copy($scope.template.dataObj); $scope.info.search.dataTrimitere.panaLa = angular.copy($scope.template.dataObj); var lastYear = new Date(); lastYear.setFullYear(lastYear.getFullYear() - 1); $scope.info.search.dataRaspuns.deLa.day = $scope.info.search.dataTrimitere.deLa.day = (lastYear.getDate() + "").length == 1 ? "0" + lastYear.getDate() : lastYear.getDate() + ""; $scope.info.search.dataRaspuns.deLa.month = $scope.info.search.dataTrimitere.deLa.month = $scope.info.dataSelection.months[parseInt(lastYear.getMonth()) - 1]; $scope.info.search.dataRaspuns.deLa.year = $scope.info.search.dataTrimitere.deLa.year = lastYear.getFullYear() + ""; var tomorrow = new Date(); tomorrow.setDate(tomorrow.getDate() + 1); $scope.info.search.dataRaspuns.panaLa.day = $scope.info.search.dataTrimitere.panaLa.day = (tomorrow.getDate() + "").length == 1 ? "0" + tomorrow.getDate() : tomorrow.getDate() + ""; $scope.info.search.dataRaspuns.panaLa.month = $scope.info.search.dataTrimitere.panaLa.month = $scope.info.dataSelection.months[parseInt(tomorrow.getMonth()) - 1]; $scope.info.search.dataRaspuns.panaLa.year = $scope.info.search.dataTrimitere.panaLa.year = tomorrow.getFullYear() + ""; $scope.template.search = angular.copy($scope.info.search); }; $scope.onMouseActionSData = function(sDataType,action){ $data = null; if(sDataType == 'trimitere') $data = $scope.info.search.dataTrimitere; if(sDataType == 'raspuns') $data = $scope.info.search.dataRaspuns; if(action == 1 && $data.isSelected == false) $data.css = {'text-decoration' : "underline"}; if(action == 0 && $data.isSelected == false) $data.css = {}; if(action == 2){ if($data.isSelected == true){ $data.css = { color : "black" }; $data.isSelected = false; $data.label = $data.label.toLowerCase(); $scope.onSearch(); } else{ $data.css = { color : "#8A4B08" }; $data.isSelected = true; $data.label = $data.label.toUpperCase(); $scope.onSearch(); } } }; $scope.$watch('info.selectedItem.info.raspuns',function(newValue,oldValue) { if(newValue != null && newValue != oldValue){ if(newValue.length > 6000){ $scope.info.selectedItem.info.raspuns = newValue.substring(0,6000); window.alert("Textul introdus are " + newValue.length + " caractere si a fost scurtat automat la 6000 de caractere"); } } }); $scope.template = { table : angular.copy($scope.info.table), search : angular.copy($scope.info.search), params : angular.copy($scope.info.params), selectedItem : angular.copy($scope.info.selectedItem), status : angular.copy($scope.info.status), dataObj : { day : null, month : null, year : null } }; $scope.onExportRtf = function(){ $scope.info.lastAction = "onExportRtf"; $params = { queryEntity : $scope.info.search.successMemento, pageNum : $scope.info.table.crtPageNum, pageGroup : $scope.info.table.crtPageGroup, addit : null }; $params = angular.toJson($params); $scope.info.doc.link = $scope.info.doc.baseUrl + "¶msInfo=" + $params; $scope.info.status = angular.copy($scope.template.status); }; $scope.onSelectTr = function(item){ $scope.info.selectedItem = angular.copy($scope.template.selectedItem); $scope.info.selectedItem.info = angular.copy(item); if($scope.info.selectedItem.info.raspuns == null) $scope.info.selectedItem.info.raspuns = ""; $scope.info.selectedItem.pePagina = true; $scope.info.selectedItem.raspunsEditabil = true; $scope.info.selectedItem.file = null; if(item.stare == "Trimisa - expirata" || item.stare == "Arhivata" || item.stare == "Transmisa - email nevalidat" || item.stare == "Cu raspuns - finalizat") $scope.info.selectedItem.raspunsEditabil = false; $scope.info.status = angular.copy($scope.template.status); }; $scope.formSAnswerParams = function(type, item){ $scope.info.lastAction = type; $params = angular.copy($scope.template.params); $params.type = type; $params.info.queryEntity = $scope.info.search.successMemento; $params.info.pageNum = $scope.info.table.crtPageNum == null ? 1 : $scope.info.table.crtPageNum; $params.info.pageGroup = $scope.info.table.crtPageGroup == null ? 5 : $scope.info.table.crtPageGroup; $params.info.addit = {}; if(item != undefined){ $params.info.addit["id"] = item.id; $params.info.addit["stare"] = item.stare;//server needs this info in order to check if the status of the question did not change meanwhile by other user. It is used for Optimistic Locking strategy. CNPPEGUVM-18227 } else{ $params.info.addit["id"] = $scope.info.selectedItem.info.id; $params.info.addit["raspuns"] = $scope.info.selectedItem.info.raspuns; $params.info.addit["stare"] = $scope.info.selectedItem.info.stare; if($scope.info.selectedItem.file != null){ $params.file = $scope.info.selectedItem.file; if($scope.info.selectedItem.info.detaliiFisier != null){ $params.info.addit["idFisierLocal"] = $scope.info.selectedItem.info.detaliiFisier.idFisierLocal; $params.info.addit["idFisierRemote"] = $scope.info.selectedItem.info.detaliiFisier.idFisierRemote; } } else{ if($scope.info.selectedItem.info.detaliiFisier != null && $scope.info.selectedItem.info.detaliiFisier.touched){ $params.info.addit["idFisierLocal"] = $scope.info.selectedItem.info.detaliiFisier.idFisierLocal; $params.info.addit["idFisierRemote"] = $scope.info.selectedItem.info.detaliiFisier.idFisierRemote; } } } $params.info = angular.toJson($params.info); return $params; }; $scope.onSaveAnswer = function(){ var rezultat = window.confirm("Sunteti sigur ca doriti sa salvati raspunsul la aceasta intrebare?\nDaca DA apasati butonul OK."); if(rezultat == true){ // if($scope.info.selectedItem.info.raspuns == null || $scope.info.selectedItem.info.raspuns.length == 0) // $scope.info.selectedItem.info.raspuns = defaultRaspuns; $params = $scope.formSAnswerParams("onSaveAnswer"); $scope.info.selectedItem = angular.copy($scope.template.selectedItem); $scope.retrieveItems($params); } }; $scope.onDeleteQuestion = function(item){ var rezultat = window.confirm("Sunteti sigur ca doriti sa arhivati aceasta intrebare?\nDaca DA apasati butonul OK."); if (rezultat == true){ if($scope.info.selectedItem.info.raspuns == null || $scope.info.selectedItem.info.raspuns.length == 0) $scope.info.selectedItem.info.raspuns = defaultRaspuns; $params = $scope.formSAnswerParams("onDeleteQuestion",item); $scope.info.selectedItem = angular.copy($scope.template.selectedItem); $scope.retrieveItems($params); } }; $scope.onSendAnswer = function(){ var rezultat = window.confirm("Sunteti sigur ca doriti sa raspundeti la aceasta intrebare?\nDaca DA apasati butonul OK."); if (rezultat == true){ if($scope.info.selectedItem.info.raspuns == null || $scope.info.selectedItem.info.raspuns.length == 0) $scope.info.selectedItem.info.raspuns = defaultRaspuns; $params = $scope.formSAnswerParams("onSendAnswer"); $scope.info.selectedItem = angular.copy($scope.template.selectedItem); $scope.retrieveItems($params); } }; $scope.retrieveItems = function(params){ $scope.xhr_in_progress = true; var ajaxServiceFct = null; if(params.file != undefined){ var formData = new FormData(); formData.append("type",params.type); formData.append("info",params.info); formData.append("file",params.file); ajaxServiceFct = ajaxService.sendXTRWithFiles($scope.info.jsonRequestUrl,formData); } else ajaxServiceFct = ajaxService.sendXTR($scope.info.jsonRequestUrl,$.param(params)); ajaxServiceFct.then(function(result){ $scope.xhr_in_progress = false; $scope.info.table = result; $scope.info.search.optiuniStare = $scope.info.table.additInfo["optiuniStare"]; if($scope.info.selectedItem.info != null && !result.isEmpty){ $scope.info.selectedItem.pePagina = false; for(var i = 0;i < result.items.length;++i){ if($scope.info.selectedItem.info.id == result.items[i].id){ $scope.info.selectedItem.pePagina = true; break; } } } if(!result.isEmpty){ $scope.onSelectTr(result.items[0]); } if($scope.info.lastAction == "onSaveAnswer"){ $scope.info.status.show = true; if($scope.info.table.additInfo["changedIntoStare"] == undefined) $scope.info.status.message = "Salvarea intrebarii "+angular.fromJson(params.info).addit.id+" s-a efectuat cu succes."; else $scope.info.status.message = "Salvarea nu a putut fi efectuata cu succes intrucat intre timp intrebarea a fost tranzitionata in starea '" + $scope.info.table.additInfo["changedIntoStare"] + "'."; } else if($scope.info.lastAction == "onSendAnswer"){ $scope.info.status.show = true; if($scope.info.table.additInfo["changedIntoStare"] == undefined) $scope.info.status.message = "Raspunsul pentru intrebarea "+angular.fromJson(params.info).addit.id+" a fost salvat si trimis."; else $scope.info.status.message = "Salvarea nu a putut fi efectuata cu succes intrucat intre timp intrebarea a fost tranzitionata in starea '" + $scope.info.table.additInfo["changedIntoStare"] + "'."; } else if($scope.info.lastAction == "onDeleteQuestion"){ $scope.info.status.show = true; if($scope.info.table.additInfo["changedIntoStare"] == undefined) $scope.info.status.message = "Intrebarea "+angular.fromJson(params.info).addit.id+" a fost arhivata."; else $scope.info.status.message = "Salvarea nu a putut fi efectuata cu succes intrucat intre timp intrebarea a fost tranzitionata in starea '" + $scope.info.table.additInfo["changedIntoStare"] + "'."; } else $scope.info.status = angular.copy($scope.template.status); }, function(status){ console.log("Eroare la request XHR trimis in functia 'retrieveItems' :"); console.log(status); $scope.xhr_in_progress = false; }); }; $scope.formRetrTableInfoParams = function(type){ $scope.info.lastAction = type; $params = angular.copy($scope.template.params); $params.type = type; $params.info.queryEntity = $scope.info.search.successMemento; $params.info.pageNum = $scope.info.table.crtPageNum == null ? 1 : $scope.info.table.crtPageNum; $params.info.pageGroup = $scope.info.table.crtPageGroup == null ? 5 : $scope.info.table.crtPageGroup; $params.info = angular.toJson($params.info); return $params; }; $scope.onChangePage = function(){ $scope.retrieveItems($scope.formRetrTableInfoParams("onChangePage")); }; $scope.onChangeGroup = function(){ $scope.retrieveItems($scope.formRetrTableInfoParams("onChangeGroup")); }; $scope.onChangeStare = function(){ $scope.onSearch(); }; $scope.onSearch = function(event){ if(event == undefined || event.which == 13){ $search = $scope.info.search; if($search.id == "" && $search.mail == "" && $search.continut == "" && $search.stare == "TOATE" && $search.modificatDe == "" && $search.dataRaspuns.isSelected == false && $search.dataTrimitere.isSelected == false) $scope.info.search.successMemento = null; else $scope.info.search.successMemento = { column : "id", value : $search.id, opInLink : null, opType : 1, lads : [{ column : "mail", value : $search.mail, opInLink : "and", opType : 1, lads : [] },{ column : "stare", value : $search.stare == "TOATE" ? "" : $search.stare, opInLink : "and", opType : 1, lads : [] },{ column : "modificatDe", value : $search.modificatDe, opInLink : "and", opType : 1, lads : [] },{ column : "intrebare", value : $search.continut, opInLink : "and", opType : 1, lads : [{ column : "raspuns", value : $search.continut, opInLink : "or", opType : 1, lads : [] }] },{ column : "dataRaspuns", value : $search.dataRaspuns.isSelected == true ? $search.dataRaspuns.deLa.day + "-" + $search.dataRaspuns.deLa.month + "-" + $search.dataRaspuns.deLa.year + "," + $search.dataRaspuns.panaLa.day + "-" + $search.dataRaspuns.panaLa.month + "-" + $search.dataRaspuns.panaLa.year : "", opInLink : "and", opType : 3, lads : [] },{ column : "dataTrimitere", value : $search.dataTrimitere.isSelected == true ? $search.dataTrimitere.deLa.day + "-" + $search.dataTrimitere.deLa.month + "-" + $search.dataTrimitere.deLa.year + "," + $search.dataTrimitere.panaLa.day + "-" + $search.dataTrimitere.panaLa.month + "-" + $search.dataTrimitere.panaLa.year : "", opInLink : "and", opType : 3, lads : [] }] }; $scope.info.selectedItem = angular.copy($scope.template.selectedItem); $scope.retrieveItems($scope.formRetrTableInfoParams("onSearch")); } }; $scope.onCancelFilter = function(){ $scope.info.search = angular.copy($scope.template.search); $scope.info.selectedItem = angular.copy($scope.template.selectedItem); $scope.onInitPage(); }; $scope.onInitPage = function(){ $scope.retrieveItems($scope.formRetrTableInfoParams("onInitPage")); }; });