Skip to content

Instantly share code, notes, and snippets.

@DevankAgarwal
Last active October 5, 2015 15:43
Show Gist options
  • Save DevankAgarwal/0595d1850ab869ae086a to your computer and use it in GitHub Desktop.
Save DevankAgarwal/0595d1850ab869ae086a to your computer and use it in GitHub Desktop.
promise chaining with $q
(function() {
'use strict';
angular
.module('alienadv.core')
.factory('catalogService', catalogService);
/* @ngInject */
function catalogService($q) {
var service = {
getCatalogs: getCatalogs,
catalogUrls: {
SportsDifficulties: getDifficultyType,
Seasons: getMonths,
Hours: getHours,
ActiityDays: getActivityDays,
TypeOfRequirements: getTypeOfActiviyRequirements,
Equipements: getAllEquipements,
TypeOfTripInclusions: getTripInclusionTypes,
Skills: getAllSkills,
Countries: getAllCountries,
Sports: getSports,
TypeOfDocuments: getAllDocumentsType,
TypeOfDiscounts: getAllDiscounts
}
};
return service;
function resolver(key, func) {
var defer = $q.defer(), temp = {};
func().then(function (res) {
temp[key] = res;
defer.resolve(temp);
});
return defer.promise;
}
function getCatalogs(req) {
var allRequestChain = [];
_.forEach(req, function(cName) {
if (service.catalogUrls[cName]) {
allRequestChain.push(resolver(cName, service.catalogUrls[cName]));
}
});
return $q.all(allRequestChain);
}
function getSports() {
var defer = $q.defer();
defer.resolve({
0: 'Select a sport',
2: 'Scuba Diving',
3: 'Tekking',
4: 'Offbeat',
5: 'Paragliding',
6: 'Rafting'
});
return defer.promise;
}
function getDifficultyType() {
var defer = $q.defer();
defer.resolve({
0: 'Select activity dificulty',
1: 'Easy',
2: 'Medium',
3: 'Hard'
});
return defer.promise;
}
function getMonths() {
var defer = $q.defer();
defer.resolve({
1: 'January',
2: 'Feburary',
3: 'March',
4: 'April',
5: 'May',
6: 'June',
7: 'July',
8: 'August',
9: 'September',
10: 'October',
11: 'November',
12: 'December'
});
return defer.promise;
}
function getHours() {
var defer = $q.defer();
defer.resolve({
1: '1',
2: '2',
3: '3',
4: '4',
5: '5',
6: '6',
7: '7',
8: '8',
9: '9',
10: '10',
11: '11',
12: '12',
13: '13',
14: '14',
15: '15',
16: '16',
17: '17',
18: '18',
19: '19',
20: '20',
21: '21',
22: '22',
23: '23'
});
return defer.promise;
}
function getActivityDays() {
var defer = $q.defer();
defer.resolve({
1: '1',
2: '2',
3: '3',
4: '4',
5: '5',
6: '6',
7: '7',
8: '8',
9: '9',
10: '10',
11: '11',
12: '12',
13: '13',
14: '14',
15: '15',
16: '16',
17: '17',
18: '18',
19: '19',
20: '20'
});
return defer.promise();
}
function getTypeOfActiviyRequirements() {
var defer = $q.defer();
defer.resolve({
0: 'Select',
1: 'Equiments',
2: 'Extra'
});
return defer.promise;
}
function getAllEquipements() {
var defer = $q.defer();
defer.resolve({
0: 'Select',
1: 'Wet Suits',
2: 'Masks',
3: 'BCD',
4: 'Fins'
});
return defer.promise;
}
function getTripInclusionTypes() {
var defer = $q.defer();
defer.resolve({
1: 'Accomodation',
2: 'Transport',
3: 'Safety',
4: 'Meals'
});
return defer.promise;
}
function getAllSkills() {
var defer = $q.defer();
defer.resolve({
0: 'Select',
1: 'Open Water Driver'
});
return defer.promise;
}
function getAllCountries() {
var defer = $q.defer();
defer.resolve([{
name: 'Afghanistan',
code: 'AF'
}, {
name: 'Åland Islands',
code: 'AX'
}, {
name: 'Albania',
code: 'AL'
}, {
name: 'Algeria',
code: 'DZ'
}, {
name: 'American Samoa',
code: 'AS'
}, {
name: 'AndorrA',
code: 'AD'
}, {
name: 'Angola',
code: 'AO'
}, {
name: 'Anguilla',
code: 'AI'
}, {
name: 'Antarctica',
code: 'AQ'
}, {
name: 'Antigua and Barbuda',
code: 'AG'
}, {
name: 'Argentina',
code: 'AR'
}, {
name: 'Armenia',
code: 'AM'
}]);
return defer.promise;
}
function getAllCities() {
var defer = $q.defer();
defer.resolve({
0: 'Select City',
1: 'Delhi',
2: 'Bangalore'
});
return defer.promise;
}
function getAllRegions() {
var defer = $q.defer();
defer.resolve({
0: 'Select Region',
1: 'Koramangla',
2: 'Indranagar'
});
return defer.promise;
}
function getAllDocumentsType() {
var defer = $q.defer();
defer.resolve({
0: 'Select',
1: 'Age Documnet',
2: 'Driving License'
});
return defer.promise;
}
function getAllDiscounts() {
var defer = $q.defer();
defer.resolve({
1: 'Age',
2: 'Season',
3: 'Group Size'
});
return defer.promise;
}
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment