//
// ============LICENSE_START==========================================
// org.onap.vvp/portal
// ===================================================================
// Copyright © 2017 AT&T Intellectual Property. All rights reserved.
// ===================================================================
//
// Unless otherwise specified, all software contained herein is licensed
// under the Apache License, Version 2.0 (the “License”);
// you may not use this software except in compliance with the License.
// You may obtain a copy of the License at
//
// http:www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//
//
// Unless otherwise specified, all documentation contained herein is licensed
// under the Creative Commons License, Attribution 4.0 Intl. (the “License”);
// you may not use this documentation except in compliance with the License.
// You may obtain a copy of the License at
//
// https:creativecommons.org/licenses/by/4.0/
//
// Unless required by applicable law or agreed to in writing, documentation
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// ============LICENSE_END============================================
//
// ECOMP is a trademark and service mark of AT&T Intellectual Property.
/**
* Created by almog on 17/01/2017.
*/
(function () {
'use strict';
angular.module('ice.services.cms', [])
.service('cmsService', ['$http', '$q', 'cacheService', 'localStorageService', '$uibModal', '$rootScope', '$log', cmsService]);
function cmsService($http, $q, cacheService, localStorageService, $uibModal, $rootScope, $log) {
var urls = cacheService.get("configuration").urls;
var lastAnnouncementStorageKey = 'lastAnnouncement';
var lastAnnouncementMessage;
this.getPosts = function(limit, fromLastDays, categories) {
var deferred = $q.defer();
var categoriesParam = categories && categories instanceof Array ? categories.join() : '';
$http.get(urls.cms.posts.get.replace('@limit',limit).replace('@offset',0).replace('@fromLastDays',fromLastDays).replace('@category',categoriesParam)).
success(function (data, status, headers, config) {
deferred.resolve({data: data, status: status});
}).
error(function (data, status, headers, config) {
deferred.reject({message: data, status: status});
});
return deferred.promise;
};
this.getLastAnnouncementPost = function() {
var deferred = $q.defer();
var limit = 1;
$http.get(urls.cms.posts.get.replace('@limit', limit).replace('@offset',0).replace('@fromLastDays','').replace('@category','Announcement')).
success(function (data, status, headers, config) {
deferred.resolve({data: data, status: status});
}).
error(function (data, status, headers, config) {
deferred.reject({message: data, status: status});
});
return deferred.promise;
};
this.setAnnouncementToast = function() {
var openCMSPostModal = function() {
$uibModal.open({
templateUrl: 'main/modals/cms-post-modal/cms-post-modal.html',
controller: 'cmsPostModalController',
controllerAs: 'vm',
size: 'cms-post-read-more',
resolve: {
post: function () {
return undefined;
}
}
});
};
this.getLastAnnouncementPost()
.then(function(response) {
if(response && response.data && response.data.length === 1) {
var lastAnnouncement = localStorageService.getJson(lastAnnouncementStorageKey);
if(!lastAnnouncement || lastAnnouncement.id != response.data[0].id || !lastAnnouncement.closed) {
localStorageService.setJson(lastAnnouncementStorageKey, {"id": response.data[0].id, "closed": false});
var toastMessage = "Important announcement: " + response.data[0].title + ".";
lastAnnouncementMessage = {message: toastMessage, readMore: openCMSPostModal, type: 'warning', show: true, displayFor: 'all', publishDate: response.data[0].publish_date};
$rootScope.showAnnouncement = !$rootScope.showAnnouncement;
}
}
})
.catch(function(error) {
$log.error(error);
});
};
this.getAnnouncement = function() {
return lastAnnouncementMessage;
};
this.getPages = function(title) {
var deferred = $q.defer();
if(!title) { title = ''; }
$http.get(urls.cms.pages.get.replace('@title',title))
.success(function (data, status, headers, config) {
deferred.resolve({data: data, status: status});
})
.error(function (data, status, headers, config) {
deferred.reject({message: data, status: status});
});
return deferred.promise;
};
this.getPage = function(id) {
var deferred = $q.defer();
$http.get(urls.cms.pages.getById.replace('@id',id))
.success(function (data, status, headers, config) {
deferred.resolve({data: data, status: status});
})
.error(function (data, status, headers, config) {
deferred.reject({message: data, status: status});
});
return deferred.promise;
};
this.searchPages = function(keyword) {
var deferred = $q.defer();
$http.get(urls.cms.pages.search.replace('@keyword',keyword))
.success(function (data, status, headers, config) {
deferred.resolve({data: data, status: status});
})
.error(function (data, status, headers, config) {
deferred.reject({message: data, status: status});
});
return deferred.promise;
}
};
})();