angular.module('kalgudiApp.eCommerce').service('eCommerceServices', ['$rootScope', '$q', 's3Restangular', function ($rootScope, $q, s3Restangular) { // Orders base path const BASE_PATH = 'v1/ecom/orders/'; /** * Gets, list of all Orders from service. * * @param {string} type Operation Type * @param {number} limit Limit of data to fetch * @param {number} offset Offset of data to fetch */ this.getOrdersList = function (offset, limit, type) { limit = limit || 20; offset = offset || 0; type = type; var deferred = $q.defer(); const URL = 'v1/ecom/orders' + '?type=' + type + '&limit=' + limit + '&offset=' + offset; s3Restangular.one(URL).get().then( function (res) { deferred.resolve(res); }, function (err) { deferred.reject(err); } ); return deferred.promise; } /** * Get, a selected Order. * * @param {string} orderId OrderId of the selected order */ this.getOrder = function (orderId) { var deferred = $q.defer(); const URL = BASE_PATH + orderId; s3Restangular.one(URL).get().then( function (res) { deferred.resolve(res); }, function (err) { deferred.reject(err); } ); return deferred.promise; } /** * Update, status of the order. * * @param {string} orderId OrderId to update selected Order * @param {string} action Action to Accept / Reject / Update order */ this.updateOrder = function (orderId, action) { var deferred = $q.defer(); const URL = BASE_PATH + orderId + '?action=' + action; s3Restangular.one(URL).customPUT().then( function (res) { deferred.resolve(res); }, function (err) { deferred.reject(err); } ); return deferred.promise; } /** * Gets, list of all chat participants of order from service. * * @param {string} orderId OrderId to update selected Order */ this.getOrderParticipants = function (orderId) { var deferred = $q.defer(); const URL = BASE_PATH + orderId + '/participants'; s3Restangular.one(URL).get().then( function (res) { deferred.resolve(res); }, function (err) { deferred.reject(err); }); return deferred.promise; } /** * Gets, list of messages for a particular order chat thread from service. * * @param {string} orderId Order id * @param {string} threadId Order chat unique thread id */ this.getChatMessages = function (orderId, threadId) { var deferred = $q.defer(); const URL = BASE_PATH + orderId + '/chat?threadId=' + threadId; s3Restangular.one(URL).get().then( function (res) { deferred.resolve(res); }, function (err) { deferred.reject(err); } ); return deferred.promise; } /** * Posts, the chat of the order participants * * @param {string} orderId OrderId to update selected Order */ this.postMessage = function (orderId, chatObject) { chatObject = chatObject || {}; var deferred = $q.defer(); const URL = BASE_PATH + orderId + '/chat'; s3Restangular.one(URL).customPOST(chatObject).then( function (response) { deferred.resolve(response); }, function (err) { deferred.reject(err); } ); return deferred.promise; } /** * Posts, the order status * * @param {string} orderId OrderId to update selected Order */ this.postStatus = function (orderId, orderObject) { orderObject = orderObject || {}; var deferred = $q.defer(); const URL = BASE_PATH + orderId + '/tracking'; s3Restangular.one(URL).customPUT(orderObject).then( function (response) { deferred.resolve(response); }, function (err) { deferred.reject(err); } ); return deferred.promise; } /** * Gets, the Invoice of the Report from service. * * @param {string} orderId OrderId to update selected Order * @param {string} reportName Name of the Report to download */ this.generateReceipts = function (orderId, reportName) { var deferred = $q.defer(); const URL = BASE_PATH + orderId + '/reports?' + 'reportName=' + reportName; s3Restangular.one(URL).customPOST().then( function (res) { deferred.resolve(res); }, function (err) { deferred.reject(err); }); return deferred.promise; } /** * Gets, reports of the order (ALL | PENDING | DELIVERED) * * @param {string} fromDate Report from date * @param {string} toDate Report to date * @param {string} reportType Type of Report */ this.orderReports = function (fromdate, todate, reportType) { var deferred = $q.defer(); const URL = BASE_PATH + 'reports?type=' + reportType + '&startDate=' + fromdate + '&endDate=' + todate + 'T23:59'; s3Restangular.one(URL).get().then( function (res) { deferred.resolve(res); }, function (err) { deferred.reject(err); } ); return deferred.promise; } this.getAllOrdersList = function (offset, limit) { limit = limit || 20; offset = offset || 0; var deferred = $q.defer(); const URL = 'v1/ecom/orders/admin/filters' + '?limit=' + limit + '&offset=' + offset; s3Restangular.one(URL).get().then( function (res) { deferred.resolve(res); }, function (err) { deferred.reject(err); } ); return deferred.promise; } this.getAllOrdersListFiltered = function (requestObj, offset, limit) { limit = limit || 20; offset = offset || 0; var deferred = $q.defer(); const URL = 'v1/ecom/orders/admin/filters' + '?limit=' + limit + '&offset=' + offset; s3Restangular.one(URL).customPUT(requestObj).then(function (response) { deferred.resolve(response); }, function (err) { if (err.config.data == "nonetwork") { $rootScope.spinerisActive = false; } deferred.reject(err); }); return deferred.promise; } /** * Update order configuration * * @param {string} orderId - Order Id * @param {string} updatedConfiguration Updated Configuration for the order */ this.updateOrderConfiguration = function (orderId, updatedConfiguration) { var deferred = $q.defer(); const URL = BASE_PATH + orderId + '/orderConfig'; s3Restangular.one(URL).customPUT(updatedConfiguration).then( function (response) { deferred.resolve(response); }, function (err) { deferred.reject(err); } ); return deferred.promise; } /** * Gets, guideline of ordered product from service. * * @param {string} type Operation Type * @param {number} limit Limit of data to fetch * @param {number} offset Offset of data to fetch */ this.getProductGuidelines = function (level1Id, level2Id) { var deferred = $q.defer(); const URL = 'v1/catalog/products/' + 'level1/' + level1Id + '/level2/' + level2Id; s3Restangular.one(URL).get().then( function (res) { deferred.resolve(res); }, function (err) { deferred.reject(err); } ); return deferred.promise; } /** * Gets, State Machine Time Config. */ this.getStateMachineTimeConfig = function () { var deferred = $q.defer(); const URL = 'v1/ecom/orders/timeoutconfig'; s3Restangular.one(URL).get().then( function (res) { deferred.resolve(res); }, function (err) { deferred.reject(err); } ); return deferred.promise; } /** * Updates, State Machine Time Config. * * @param {string} newTimeConfig Updated Time Config for All orders */ this.updateStateMachineTimeConfig = function (newTimeConfig) { newTimeConfig = newTimeConfig || {}; var deferred = $q.defer(); const URL = BASE_PATH + 'timeoutconfig'; s3Restangular.one(URL).customPUT(newTimeConfig).then( function (response) { deferred.resolve(response); }, function (err) { deferred.reject(err); } ); return deferred.promise; } this.getSettlementsFileUrl = function (newTimeConfig) { const URL = 'v1/ecom/settlements'; var deferred = $q.defer(); s3Restangular.one(URL).customPOST(newTimeConfig).then( function (response) { deferred.resolve(response); }, function (err) { deferred.reject(err); } ); return deferred.promise; } }]);