angular.module('kalgudiApp').controller('questionAnswerListController', ['$scope', '$rootScope', '$state', 'helpandlegalservice', "$filter", "$timeout", 'myconnectsRecommendationFactory', "kalgudiLiterals", "profileServicedata", "profileService","$sce", function($scope, $rootScope, $state, helpandlegalservice, $filter, $timeout, myconnectsRecommendationFactory, kalgudiLiterals, profileServicedata, profileService,$sce) { $scope.qaLiterals = kalgudiLiterals; $scope.loadMore = { text: $scope.qaLiterals.searchByKey('COMMON_LOAD_MORE_LOADING'), limit:10, flag:true } //$scope.loggedInUserCurrentBussinessInfo.sourceFrom = 'M00pxvn0PRFREG2018011231946283UNH001'; $rootScope.isBackActive = true; // To order question list $scope.SORT_TYPE = [ {'id' : 'DESC', 'type' : $scope.qaLiterals.searchByKey('QA_ORDER_LATEST')}, {'id' : 'ASC', 'type' : $scope.qaLiterals.searchByKey('QA_ORDER_OLDEST')} ]; // To show options when user goes for question search firstName = $rootScope.loggedInUserBusinessProfile.firstName; if(firstName.indexOf(' ') != -1){ firstName = firstName.slice(0,firstName.indexOf(' ')); } $scope.RELEVENCE_TYPE = [ {'id' : 'ME', 'text' : firstName + $scope.qaLiterals.searchByKey('QA_FILTER_TYPE_ME'), 'icon': 'help'}, {'id' : 'ALL', 'text' : $scope.qaLiterals.searchByKey('QA_FILTER_TYPE_ALL'), 'icon': 'question_answer'}, /*{'id' : 'ORG', 'text' : $scope.qaLiterals.searchByKey('QA_FILTER_TYPE_ORG')},*/ /*{'id' : 'PROFILE', 'text' : $scope.qaLiterals.searchByKey('QA_FILTER_TYPE_PROFILE')},*/ {'id' : 'QUEME', 'text' : $scope.qaLiterals.searchByKey('QA_FILTER_TYPE_QUEME'), 'icon': 'help_outline'}, {'id' : 'ANSME', 'text' : $scope.qaLiterals.searchByKey('QA_FILTER_TYPE_ANSME'), 'icon': 'spellcheck'} ]; // Selecting descending order by default, when request will be made for first time $scope.SORT_QA = { orderBy : $scope.SORT_TYPE[0] } $scope.queRequestObject = { limit : $scope.loadMore.limit, offset : 0, sort : $scope.SORT_QA.orderBy.id, relevence : 'ME' }; $scope.headerdata={ icon:"md md-question-answer", heading:"Questions & Answers", description:"" } $scope.QA_FILTERS = { 'ALL_QUE' : 'All questions', 'MY_QUE' : 'My questions & answers', 'REG_QUE' : 'Questions from my region', 'ORG_QUE' : 'Questions of my organizations' }; $scope.selectedFilter = $scope.QA_FILTERS.REG_QUE; $scope.infoMessage = ""; $scope.districtList = []; $scope.appliedFilterNames = []; $scope.appliedFilters = []; $scope.questionAnswer=[]; $scope.isFilterEnabled = false; $scope.recommendedQuestions = { messages : [], currentPost : {} } $scope.stateOrRegion = { 'id' : $rootScope.loggedInUserCurrentBussinessInfo.locationTo.stateId, 'name' : $rootScope.loggedInUserCurrentBussinessInfo.locationTo.stateName, 'isSelected' : true } $scope.searchQA = { text : "", hasFocus : false } $scope.selectedFilterText = firstName + $scope.qaLiterals.searchByKey('QA_FILTER_TYPE_ME'); $scope.appliedFilters.push($scope.stateOrRegion); // To search question with given text in search box on mobile $scope.search = function (text) { $rootScope.spinerisActive = !false; $scope.questionAnswer = []; profileServicedata.qaSearchResults(text, $scope.queRequestObject.sort).then(function(result){ $rootScope.spinerisActive = !true; for(var qaIndex in result) { result[qaIndex].latestActivity = { latestActivity : { type : 'question' } } } $scope.questionAnswer=result; }); } $scope.changeRelevance = function (relevance) { /*debugger*/ $scope.selectedRelevance = relevance; $scope.infoMessage = 'Showing \'' + relevance.text + '\''; $scope.queRequestObject.relevence = relevance.id; $scope.reloadTheStream(); } // To select any of given option and get the quetions according to selected filter on mobile $scope.reloadTheStream = function () { $scope.questionAnswer = []; $scope.getQuestionsWithFilters($scope.queRequestObject); } // Will fetch all districts of logged-in user belonging state /*$scope.getDistrictList = function(locationId) { $rootScope.spinerisActive = true; helpandlegalservice.getDistrictList(locationId).then(function(result) { $rootScope.spinerisActive = false; if(result.code == 200 && result.data) { var response = JSON.parse(result.data); for(district in response.districtList) { var object = { 'id' : district, 'name' : response.districtList[district], 'isSelected' : true } $scope.districtList.push(object); } $scope.selectAll(true); $scope.stateOrRegion = { 'id' : response.locationInfo.stateId, 'name' : response.locationInfo.stateName, 'isSelected' : true } $scope.getQuestionAnswrInfo(); } }, function(error) { $rootScope.spinerisActive = false; }); }*/ // Will be used on webapp to open and close location filter options $scope.enableFilterOptions = function () { $scope.isFilterEnabled = !$scope.isFilterEnabled; } // will be called on every filter selection on mobile $scope.applyFilter = function (filterType) { // To avoid multiple service call with same filter if ($scope.selectedFilter == filterType) { return false; } $scope.selectedFilter = filterType; if (filterType != $scope.QA_FILTERS.REG_QUE) { $('#collapsible-option').collapsible('close', 2); // will open region filter by default on mobile app } switch (filterType) { case $scope.QA_FILTERS.ALL_QUE : $scope.getAllQuestionWithoutFilter(); break; case $scope.QA_FILTERS.MY_QUE : break; case $scope.QA_FILTERS.REG_QUE : break; case $scope.QA_FILTERS.ORG_QUE : break; } } // To select/ deselect all distrcts from the list $scope.selectAll = function (flag) { $scope.appliedFilters = []; for(district in $scope.districtList) { if(flag) { $scope.districtList[district].isSelected = true; $scope.appliedFilters.push($scope.districtList[district]); } else { $scope.districtList[district].isSelected = false; } } if(flag) { $scope.stateOrRegion.isSelected = true; } else { $scope.stateOrRegion.isSelected = false; } } // To select/ deselect specific district from the list on webapp $scope.selectDistrict = function (district) { if($scope.appliedFilters.includes(district)) { var index = $scope.appliedFilters.indexOf(district); $scope.appliedFilters.splice(index, 1); } else { $scope.appliedFilters.push(district); } if($scope.appliedFilters.length == $scope.districtList.length) { $scope.stateOrRegion.isSelected = true; } else { $scope.stateOrRegion.isSelected = false; } } // will be used on mobile app when, district selection picker will be closed $scope.getOptionsSelected = function(options, valueProperty, selectedProperty) { $scope.appliedFilters = $filter('filter')(options, function(option) { return option[selectedProperty] == true; }); if($scope.appliedFilters.length == $scope.districtList.length) { $scope.stateOrRegion.isSelected = true; } else { $scope.stateOrRegion.isSelected = false; } return $scope.appliedFilters.map(function(group){ return group[valueProperty]; }).join(", "); }; // Will process the selected filter and set ID's of selected locations $scope.getFilterIds = function () { $scope.questionAnswer = []; $scope.queRequestObject.offset = 0; /*if($scope.stateOrRegion.isSelected) { $scope.queRequestObject.filters = $scope.stateOrRegion.id; $scope.infoMessage = $scope.qaLiterals.searchByKey('QUES_ANS_LIST_KEY1') + " \"" + $scope.stateOrRegion.name + "\" " + $scope.qaLiterals.searchByKey('QUES_ANS_LIST_KEY2'); } else { $scope.infoMessage = $scope.qaLiterals.searchByKey('QUES_ANS_LIST_KEY3') + " \""; $scope.queRequestObject.filters = ''; for(var i in $scope.appliedFilters) { $scope.queRequestObject.filters += $scope.appliedFilters[i].id; $scope.infoMessage += $scope.appliedFilters[i].name; if(i != $scope.appliedFilters.length - 1) { $scope.queRequestObject.filters += ','; $scope.infoMessage += ', '; } } $scope.infoMessage += "\" " + $scope.qaLiterals.searchByKey('QUES_ANS_LIST_KEY4'); }*/ } // Will be called for loadMore and after clicking apply from location filter $scope.getQuestionAnswrInfo = function(loadmore) { if(!loadmore) { if(!(window.location.pathname.indexOf('mobile_index')>-1)) { $scope.getFilterIds(); } $scope.selectedFilter = $scope.QA_FILTERS.REG_QUE; } else { $scope.queRequestObject = loadmore; } $scope.getQuestionsWithFilters(loadmore); } // To get all latest questions asked on kalgudi $scope.getAllQuestionWithoutFilter = function () { $scope.queRequestObject.filters = []; $scope.getQuestionsWithFilters($scope.queRequestObject); } // Method to get questions with given parameters $scope.getQuestionsWithFilters = function (loadmore) { if((window.location.pathname.indexOf('mobile_index')>-1)){ $('.collapsible').collapsible('close', 1); } else { /*delete $scope.queRequestObject.relevence; delete $scope.queRequestObject.sort;*/ } $rootScope.spinerisActive = !false; helpandlegalservice.qainfoInbox($scope.queRequestObject).then( function(result) { $scope.processResponseData(result); }, function (error) { $rootScope.spinerisActive = false; $scope.isFilterEnabled = false; $scope.loadMore.text = $scope.qaLiterals.searchByKey('COMMON_LOAD_MORE_NO_MORE_MSG'); $scope.loadMore.flag = false; }); } // To process the response from 'getQuestionsWithFilters' method $scope.processResponseData = function (result) { $rootScope.spinerisActive = !true; $scope.isFilterEnabled = false; for(var qaIndex in result) { if(result[qaIndex].hasOwnProperty("googleVisionResponse")){ result[qaIndex].googleVisionResponse = JSON.parse(result[qaIndex].googleVisionResponse); } result[qaIndex].latestActivity = { latestActivity : { type : 'question' } } //result[qaIndex].CT = $filter('timeagodatefilter')(result[qaIndex].CT); if(result[qaIndex].additionalBizDetails && result[qaIndex].additionalBizDetails.businessTypeId && result[qaIndex].additionalBizDetails.businessTypeId == 'BT000012'){ result[qaIndex].additionalBizDetails.businessTypeName = 'A kalgudi user'; } $scope.questionAnswer.push(result[qaIndex]); } if(result.length<$scope.loadMore.limit){ $scope.loadMore.text = $scope.qaLiterals.searchByKey('COMMON_LOAD_MORE_NO_MORE_MSG'); $scope.loadMore.flag = false; }else{ $scope.loadMore.text = $scope.qaLiterals.searchByKey('COMMON_LOAD_MORE_MORE_MSG'); $scope.loadMore.flag = true; } } $scope.getRecommendedQA = function() { myconnectsRecommendationFactory.getRecommendedQA().then(function(result) { if(result.length && !result[0].hasOwnProperty('questionId')){ result = ""; } $scope.recommendedQuestions.Messages = result; $scope.recommendedQuestions.currentPost = result[0]; }); } $scope.skipCurrentRecommendedQA = function(qa) { $scope.skipFlag = true; $timeout(function(){ var tempIndex = _.findIndex($scope.recommendedQuestions.Messages,function(rw) { return rw.questionId == qa.questionId; }); $scope.recommendedQuestions.currentPost = $scope.recommendedQuestions.Messages[tempIndex+1]; $scope.recommendedQuestions.Messages.splice(tempIndex,1); $scope.skipFlag = false; },1000); } $scope.removeItemFromUi = function(newItem) { var uiItemINdex= _.findIndex($scope.questionAnswer , function(o) { return (( o.hasOwnProperty('shareId')&&o.shareId==newItem.shareId) ||( o.hasOwnProperty('questionId')&&(o.questionId==newItem.questionId))); }); if(uiItemINdex>-1){ $scope.questionAnswer.splice( uiItemINdex, 1 ); } }; $rootScope.$on('questionInHome', function (event, data) { $scope.questionAnswer.unshift(data); }); $rootScope.$on("updateDeleted", function(event, data){ $scope.removeItemFromUi(data); }); // will initialize the controller and its dependents function init () { if($scope.loggedInUserCurrentBussinessInfo.sourceFrom) { var newRelevance = { 'id' : 'ORG', 'text' : $scope.qaLiterals.searchByKey('QA_FILTER_TYPE_ORG') + ' ' + $scope.qaLiterals.searchByKey('QA_FILTER_TYPE_ORG_ALIAS') } // To inject organization filter as 2nd option $scope.RELEVENCE_TYPE.splice( 1, 0, newRelevance); profileService.getUserProfile($scope.loggedInUserCurrentBussinessInfo.sourceFrom).then(function(response) { //response = JSON.parse('{"profileKey":"M00pxvn0PRFREG2018011231946283UNH001","profilePicUrl":"https://kalgudi.com/data/profilepics/M00pxvn0PRFREG2018011231946283UNH001.png?1518239714831","firstName":"Department of Horticulture - AP","emailId":"horticulturepublicity@gmail.com","mobileNo":"+9100pxvn0","defaultBusinessKey":"O00pxvn1PRFBIZ2018011231946466UNH001","address2":"Guntur, Andhra Pradesh, India","mobileCode":"+91","isEffectedBizKey":"O00pxvn1PRFBIZ2018011231946466UNH001","lstOfUserBusinessDetailsInfo":[{"businessKey":"O00pxvn1PRFBIZ2018011231946466UNH001","businessUUID":"00pxvn1","businessName":"Department of Horticulture - AP","businessTypeId":"BT000010","businessTypeName":"Organization","lstOfProducts":[{"productId":"000000037555","productName":"Unknown","baseUnitId":"0","baseUnitName":"","commodityId":"000000000","commodityName":"Unknown","varietyId":"000000000000","varietyName":"Not Applicable","groupId":"63","groupName":"Unknown","imageUrl":"https://s3.amazonaws.com/kalgudicontent/commodities/000000037555_1.jpg","alsoKnownAs":"","productDescription":"","qualifiers":"","listofUnits":[{"unitId":0,"unitName":"","conversion":0.0,"rank":0}],"customunits":[],"universal_name":"Unknown","scientific_name":"","company":"000000","crops":"","productType":"FARMERPRODUCT","brand":false,"isApproved":true,"isEdited":false,"allowed":false}],"locationTo":{"placeId":"33500010050004","placeName":"Guntur","latitude":"16.3066525E0","longitude":"80.4365402E0","districtId":"3350001005","districtName":"Guntur","stateId":"3350001","stateName":"Andhra Pradesh","regionId":"33500","regionName":"Not Applicable","countryId":"335","countryName":"India","countryShortName":"IND","locationLong":"Guntur, Andhra Pradesh IND","locationShort":"Andhra Pradesh IND","location_category_id":"LC003","market_id":"33500010050004","openerpCountryId":"IN"},"BusinessSpecificDetailsTo":{},"prfCreatedDate":"2018-01-12T08:52:26Z","nativeBusinessTypeId":"BT000018","nativeBusinessTypeName":"Organization"}],"prfCreatedDate":"2018-01-12T08:52:26Z","prfModifiedDate":"2018-02-10T05:15:19Z","isBlocked":false,"languageId":"6","languageName":"Telugu","languageLocalName":"తెలుగు","currencySymbol":"₹","currencyCode":"INR","location":"16.3066525E0,80.4365402E0","is_company_account_created":false,"isActive":true,"isVerified":true,"isPreCreated":false,"connectsCount":0,"membersCount":0,"otherAddress":"Guntur, Andhra Pradesh, India","emailUnsubscribed":false,"additionalBizDetails":{"profileTypeId":"PT000005","profileTypeName":"Organization","businessTypeId":"BT000010","businessTypeName":"Organization","profileTypeDetails":{"isPrecreated":false,"entityProfilePic":"http://kalgudibucket.s3.amazonaws.com/activity/share-a-thought/pp_company.jpg","prfCreatedDate":"2018-01-12T08:52:26Z","entityType":"ORGANIZATION","memberCount":0.0,"pending":false,"placeTo":{"countryShortName":"IND","location_category_id":"LC003","districtName":"Guntur","latitude":"16.3066525E0","stateId":"3350001","regionName":"Not Applicable","placeId":"33500010050004","market_id":"33500010050004","countryId":"335","districtId":"3350001005","locationLong":"Guntur, Andhra Pradesh IND","openerpCountryId":"IN","stateName":"Andhra Pradesh","regionId":"33500","countryName":"India","locationShort":"Andhra Pradesh IND","placeName":"Guntur","longitude":"80.4365402E0"},"prfModifiedDate":"2018-01-12T08:52:26Z","entityId":"O00pxvn1ORGCRE2018011231946551UNH001","employessCount":0.0,"entityRelationType":"ADMIN","committeeMemberCount":0.0,"industryId":"","entityName":"Department of Horticulture - AP","following":false,"activatedDate":"2018-01-12T08:52:26Z","adminDetails":{"profileKey":"M00pxvn0PRFREG2018011231946283UNH001","firstName":"Department of Horticulture - AP","businessTypeName":"Organization","isScriptCreated":false,"businessKey":"O00pxvn1PRFBIZ2018011231946466UNH001","businessName":"Department of Horticulture - AP","emailId":"horticulturepublicity@gmail.com","mobileNo":"+9100pxvn0","businessTypeId":"BT000010"},"followerCount":1.0,"agentCount":0.0,"registeredCount":0.0},"constructedBusinessTypeName":"Organization","nativeBusinessTypeId":"BT000018","nativeBusinessTypeName":"Organization"},"defaultEntityDetails":{"entityId":"O00pxvn1ORGCRE2018011231946551UNH001","entityName":"Department of Horticulture - AP","registeredCount":0,"entityType":"ORGANIZATION","followerCount":0,"isPrecreated":false,"following":false,"entityRelationType":"ADMIN","agentCount":0,"pending":false},"isContentPublisher":false,"listOfPageDetails":[{"pageId":"O00j48o1PROCRE2017062146196906UNH001","pageTitle":"Kalgudi Content","pageType":"PROGRAM"},{"pageId":"O00j9u01COMCRE2017060124099518UNH001","pageTitle":"ANGRAU Extension","pageType":"COMPANY"},{"pageId":"O00kczs1PROCRE2017122026776825UNH001","pageTitle":"ANGRAU Electronic Wing","pageType":"PROGRAM"},{"pageId":"O00pxvn1PROCRE2018020116924710UNH001","pageTitle":"Horticulture-AP","pageType":"PROGRAM"}],"isScriptCreated":false}'); if(response && response.defaultEntityDetails && response.defaultEntityDetails.entityName) { var organizationName = response.defaultEntityDetails.entityName; $scope.RELEVENCE_TYPE[1].text = $scope.qaLiterals.searchByKey('QA_FILTER_TYPE_ORG') + ' ' + organizationName; } }); } if(window.location.pathname.indexOf('mobile_index')>-1) { $scope.searchQA.text = $scope.selectedFilterText; $scope.getQuestionAnswrInfo(); } else { $scope.changeRelevance ($scope.RELEVENCE_TYPE[0]); /*$scope.getDistrictList($rootScope.loggedInUserCurrentBussinessInfo.locationTo.placeId);*/ $scope.getRecommendedQA(); $scope.skipFlag = false; } } $scope.trustAsHtml = function(title){ if (title) { return $sce.trustAsHtml(title.split("|")[0]); } else { return ''; } } init(); } ]);