[PORTAL-7] Rebase
[portal.git] / ecomp-portal-FE-common / client / app / services / users / users.service.js
1 /*-\r
2  * ================================================================================\r
3  * ECOMP Portal\r
4  * ================================================================================\r
5  * Copyright (C) 2017 AT&T Intellectual Property\r
6  * ================================================================================\r
7  * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * you may not use this file except in compliance with the License.\r
9  * You may obtain a copy of the License at\r
10  * \r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  * \r
13  * Unless required by applicable law or agreed to in writing, software\r
14  * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * See the License for the specific language governing permissions and\r
17  * limitations under the License.\r
18  * ================================================================================\r
19  */\r
20 /**\r
21  * Created by doritrieur on 12/8/15.\r
22  */\r
23 'use strict';\r
24 \r
25 (function () {\r
26     class UsersService {\r
27         constructor($q, $log, $http, conf, uuid, utilsService) {\r
28             this.$q = $q;\r
29             this.$log = $log;\r
30             this.$http = $http;\r
31             this.conf = conf;\r
32             this.uuid = uuid;\r
33             this.utilsService = utilsService;\r
34         }\r
35 \r
36 \r
37         searchUsers(queryString) {\r
38             let canceller = this.$q.defer();\r
39             let isActive = false;\r
40 \r
41             let cancel = () => {\r
42                 if(isActive){\r
43                     this.$log.debug('UsersService::searchUsers: canceling the request');\r
44                     canceller.resolve();\r
45                 }\r
46             };\r
47 \r
48             let promise = () => {\r
49                 let deferred = this.$q.defer();\r
50                 if(!queryString){\r
51                     return deferred.reject(new Error('query string is mandatory'));\r
52                 }\r
53                 isActive = true;\r
54                 this.$http({\r
55                     method: 'GET',\r
56                     url: this.conf.api.queryUsers,\r
57                     params: {search: queryString},\r
58                     cache: false,\r
59                     timeout: canceller.promise,\r
60                     headers: {\r
61                         'X-ECOMP-RequestID':this.uuid.generate()\r
62                     }\r
63                 }).then( res => {\r
64                     // If response comes back as a redirected HTML page which IS NOT a success\r
65                     if (this.utilsService.isValidJSON(res)== false) {\r
66                         deferred.reject('UsersService::queryUsers Failed');\r
67                     } else {\r
68                         //this.$log.info('UsersService::queryUsers Succeeded');\r
69                         isActive = false;\r
70                         deferred.resolve(res.data);\r
71                     }\r
72                 }).catch( status => {\r
73                     isActive = false;\r
74                     deferred.reject('UsersService::searchUsers:: API Failed with status: ' + status);\r
75                 });\r
76                 return deferred.promise;\r
77             };\r
78 \r
79             return {\r
80                 cancel: cancel,\r
81                 promise: promise\r
82             };\r
83 \r
84         }\r
85 \r
86         getAccountUsers(appId) {\r
87             let deferred = this.$q.defer();\r
88             let log = this.$log;\r
89             // this.$log.debug('UsersService::getAccountUsers for appId: ' + appId);\r
90 \r
91             let url = this.conf.api.accountUsers.replace(':appId', appId);\r
92             this.$http({\r
93                 method: 'GET',\r
94                 url: url,\r
95                 cache: false,\r
96                 headers: {\r
97                     'X-ECOMP-RequestID':this.uuid.generate()\r
98                 }\r
99             }).then( res => {\r
100                     // If response comes back as a redirected HTML page which IS NOT a success\r
101                 if (this.utilsService.isValidJSON(res)== false) {\r
102                         deferred.reject('UsersService::getAccountUsers for appId Failed');\r
103                     } else {\r
104                         // log.info('UsersService::getAccountUsers(appId) Succeeded');\r
105                         deferred.resolve(res.data);\r
106                     }\r
107                 })\r
108                 .catch( status => {\r
109                     log.error('getAccountUsers(appId) $http error = ', status);\r
110                     deferred.reject(status);\r
111                 });\r
112 \r
113             return deferred.promise;\r
114         }\r
115 \r
116         getUserAppRoles(appid, orgUserId){\r
117 //            let deferred = this.$q.defer();\r
118                 let canceller = this.$q.defer();\r
119             let isActive = false;\r
120 \r
121             let cancel = () => {\r
122                 if(isActive){\r
123                     this.$log.debug('UsersService::getUserAppRoles: canceling the request');\r
124                     canceller.resolve();\r
125                 }\r
126             };\r
127 \r
128             // this.$log.info('UsersService::getUserAppRoles');\r
129 \r
130             let promise = () => {\r
131                 let deferred = this.$q.defer();\r
132                 isActive = false;\r
133             this.$http({\r
134                 method: 'GET',\r
135                 url: this.conf.api.userAppRoles,\r
136                 params: {user: orgUserId, app: appid},\r
137                 cache: false,\r
138                 headers: {\r
139                     'X-ECOMP-RequestID':this.uuid.generate()\r
140                 }\r
141             }).then( res => {\r
142                     //this.$log.debug('getUserAppRoles response: ', JSON.stringify(res))\r
143                     // If response comes back as a redirected HTML page which IS NOT a success\r
144                     if (this.utilsService.isValidJSON(res)== false) {\r
145                         deferred.reject('UsersService::getUserAppRoles: Failed');\r
146                     } else {\r
147                         isActive = false;\r
148                         //this.$log.info('UsersService::getUserAppRoles: Succeeded');\r
149                         deferred.resolve(res.data);\r
150                     }\r
151                 })\r
152                 .catch( status => {\r
153                         isActive = false;\r
154                     deferred.reject(status);\r
155                 });\r
156 \r
157             return deferred.promise;\r
158             };\r
159             \r
160             return {\r
161                 cancel: cancel,\r
162                 promise: promise\r
163             };\r
164         }\r
165 \r
166         updateUserAppRoles(newUserAppRoles) {\r
167 //            let deferred = this.$q.defer();\r
168             let canceller = this.$q.defer();\r
169             let isActive = false;\r
170 \r
171             let cancel = () => {\r
172                 if(isActive){\r
173                     this.$log.debug('UsersService::updateUserAppRoles: canceling the request');\r
174                     canceller.resolve();\r
175                 }\r
176             };\r
177 \r
178             // this.$log.info('UsersService::updateUserAppRoles');\r
179             let promise = () => {\r
180                 let deferred = this.$q.defer();\r
181             this.$http({\r
182                 method: 'PUT',\r
183                 url: this.conf.api.userAppRoles,\r
184                 data: newUserAppRoles,\r
185                 headers: {\r
186                     'X-ECOMP-RequestID':this.uuid.generate()\r
187                 }\r
188             }).then( res => {\r
189                 // this.$log.debug('getUserAppRoles response: ', JSON.stringify(res))\r
190                 // If response comes back as a redirected HTML page which IS NOT a success\r
191                 if (this.utilsService.isValidJSON(res)== false) {\r
192                     deferred.reject('UsersService::updateUserAppRoles: Failed');\r
193                 } else {\r
194                     // this.$log.info('UsersService::updateUserAppRoles: Succeeded');\r
195                     deferred.resolve(res.data);\r
196                 }\r
197             })\r
198             .catch( status => {\r
199                 deferred.reject(status);\r
200             });\r
201 \r
202             return deferred.promise;\r
203             };\r
204             \r
205             return {\r
206                 cancel: cancel,\r
207                 promise: promise\r
208             };\r
209 \r
210         }\r
211 \r
212     }\r
213     UsersService.$inject = ['$q', '$log', '$http', 'conf','uuid4', 'utilsService'];\r
214     angular.module('ecompApp').service('usersService', UsersService)\r
215 })();\r