Advertisement
Guest User

Untitled

a guest
Jan 12th, 2017
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.70 KB | None | 0 0
  1. 'use strict';
  2. app.controller('UserProfileModalController', [
  3. '$scope',
  4. '$rootScope',
  5. '$state',
  6. '$modalInstance',
  7. 'API',
  8. 'growl',
  9. 'NetminoUtils',
  10. 'userUtils',
  11. 'userId',
  12. 'Geosearch',
  13. 'FileUploader',
  14. 'csrfFactory',
  15. '$window',
  16. '$modal',
  17. '$translate',
  18. '_',
  19.  
  20. function(
  21. $scope,
  22. $rootScope,
  23. $state,
  24. $modalInstance,
  25. API,
  26. growl,
  27. NetminoUtils,
  28. userUtils,
  29. userId,
  30. Geosearch,
  31. FileUploader,
  32. csrfFactory,
  33. $window,
  34. $modal,
  35. $translate,
  36. _
  37. ) {
  38.  
  39. var initUserProfile = function(id) {
  40. API.Users.getUserById(id).success(function(res) {
  41. var userModel = userUtils.prepareUserModelForModal(res.data);
  42. $scope.userModel = userModel;
  43. $scope.isConnectedToGoogle = $scope.userModel.isConnectedToGoogle;
  44. $scope.isConnectedToFacebook = $scope.userModel.isConnectedToFacebook;
  45. $scope.isConnectedToEventbrite = $scope.userModel.isConnectedToEventbrite;
  46. }).error(NetminoUtils.handleError);
  47. };
  48.  
  49. $scope.allLocations = [];
  50. $scope.format = 'dd-MMMM-yyyy';
  51. $scope.views = {
  52. PROFILE: 'profile',
  53. ACCOUNT_SETTINGS: 'account settings',
  54. PREFERENCES: 'preferences',
  55. THEMES: 'themes'
  56. };
  57. $scope.currentView = $rootScope.isOAuthLogin ?
  58. $scope.views.ACCOUNT_SETTINGS : $scope.views.PROFILE;
  59.  
  60. $scope.selectLocation = function(selected) {
  61. var selectedLocation = _.findWhere($scope.allLocations, {formatted_address: selected});
  62. if (selectedLocation) {
  63. $scope.userModel.location = [
  64. selectedLocation.geometry.location.lng(),
  65. selectedLocation.geometry.location.lat()
  66. ];
  67. $scope.userModel.geo_name = selectedLocation.formatted_address;
  68. $scope.locationFound = true;
  69. }
  70. };
  71.  
  72. $scope.changePassword = function() {
  73. $modal.open({
  74. templateUrl: '../../../tpl/modals/change_pass_modal.html',
  75. controller: 'changePassModalController',
  76. resolve: {
  77. userId: function() {
  78. return $scope.userModel._id;
  79. }
  80. },
  81. windowClass: 'change-pass-modal'
  82. });
  83. };
  84.  
  85. $scope.closeModal = function() {
  86. $modalInstance.dismiss();
  87. };
  88.  
  89. $scope.connectWithGoogle = function() {
  90. $window.open('/auth/google/connect', '_self');
  91. };
  92.  
  93. $scope.disconnectFromGoogle = function() {
  94. API.Users.disconnectFromGoogle($scope.userModel._id)
  95. .success(function(data) {
  96. growl.addSuccessMessage(data.msg);
  97. $scope.isConnectedToGoogle = false;
  98. })
  99. .error(NetminoUtils.handleError);
  100. };
  101.  
  102. $scope.connectWithFacebook = function() {
  103. $window.open('/auth/facebook', '_self');
  104. };
  105.  
  106. $scope.disconnectFromFacebook = function() {
  107. API.Users.disconnectFromFacebook($scope.userModel._id)
  108. .success(function(data) {
  109. growl.addSuccessMessage(data.msg);
  110. $scope.isConnectedToFacebook = false;
  111. })
  112. .error(NetminoUtils.handleError);
  113. };
  114.  
  115. $scope.connectWithEventbrite = function() {
  116. $window.open('/auth/eventbrite', '_self');
  117. };
  118.  
  119. $scope.disconnectFromEventbrite = function() {
  120. API.Users.disconnectFromEventbrite($scope.userModel._id)
  121. .success(function(data) {
  122. growl.addSuccessMessage(data.msg);
  123. $scope.isConnectedToEventbrite = false;
  124. })
  125. .error(NetminoUtils.handleError);
  126. };
  127.  
  128. $scope.deactivateAccount = function() {
  129. API.Users.toggleAccount($scope.userModel._id, {'is_active': false})
  130. .success(function(data) {
  131. API.Auth.logout().then(function(res) {
  132. $rootScope.$broadcast('user is authenticated', 'anonymous');
  133. $scope.closeModal();
  134. $state.go('app.page.welcome');
  135. });
  136. })
  137. .error(NetminoUtils.handleError);
  138. };
  139.  
  140. $scope.geoSearch = function(val) {
  141. $scope.locationFound = false;
  142. return Geosearch.geocode(val).then(function(response) {
  143. $scope.allLocations = response.results;
  144. return $scope.allLocations.map(function(location) {
  145. return location.formatted_address;
  146. });
  147. },
  148. function(err) {
  149. NetminoUtils.handleError(err);
  150. });
  151. };
  152.  
  153. $scope.updateAccount = function(userModel) {
  154. API.Users.updateAccount(userModel._id, {email: userModel.email})
  155. .success(userUtils.handleSuccessUpdate)
  156. .error(NetminoUtils.handleError);
  157. };
  158.  
  159. $scope.updatePreferences = function(userModel) {
  160. var params = userUtils.prepareParamsForUpdatePreferences(userModel);
  161. API.Users.updatePreferences(userModel._id, params)
  162. .success(function(data) {
  163. $translate.use(userModel.netmino_language.lang);
  164. $rootScope.user = userModel;
  165. growl.addSuccessMessage(data.msg);
  166. })
  167. .error(NetminoUtils.handleError);
  168. };
  169.  
  170. $scope.updateProfile = function(userModel) {
  171. if ($scope.photoUploader.queue.length) {
  172. return $scope.photoUploader.uploadAll();
  173. }
  174.  
  175. var params = userUtils.prepareParamsForUpdateProfile(userModel);
  176. API.Users.updateProfile(userModel._id, params)
  177. .success(userUtils.handleSuccessUpdate)
  178. .error(NetminoUtils.handleError);
  179. };
  180.  
  181. $scope.updateTheme = function (userModel) {
  182. API.Users.updateTheme(userModel._id, +userModel.theme)
  183. .success(userUtils.handleSuccessUpdate)
  184. .error(NetminoUtils.handleError);
  185. };
  186.  
  187. $scope.photoUploader = new FileUploader({
  188. url: '/api/v1/attachments/image',
  189. headers: {'x-csrf-token': csrfFactory.token},
  190. onAfterAddingFile: function(file) {
  191. var reader = new FileReader();
  192. reader.onload = function(evt) {
  193. $scope.$evalAsync(function() {
  194. $scope.userPhoto = evt.target.result;
  195. });
  196. };
  197. reader.readAsDataURL(file._file);
  198. $scope.fileError = false;
  199. },
  200. onErrorItem: function() {
  201. $scope.fileError = true;
  202. },
  203. onSuccessItem: function(item, res) {
  204. $scope.fileError = false;
  205. $scope.photoUploader.clearQueue();
  206. $scope.userModel.picture = res.file;
  207. $scope.updateProfile($scope.userModel);
  208. },
  209. onWhenAddingFileFailed: function() {
  210. $scope.fileError = true;
  211. },
  212. onCompleteItem: function() {
  213. }
  214. });
  215.  
  216. $scope.photoUploader.filters.push({
  217. name: 'imageFilter',
  218. fn: function(item) {
  219. var type = '|' + item.type.slice(item.type.lastIndexOf('/') + 1) + '|';
  220. return '|jpg|png|jpeg|bmp|gif|'.indexOf(type) !== -1;
  221. }
  222. });
  223. $scope.photoUploader.filters.push({
  224. name: 'overWriteFilter',
  225. fn: function() {
  226. if (this.queue.length === 1) {
  227. this.clearQueue();
  228. }
  229. return true;
  230. }
  231. });
  232.  
  233.  
  234. initUserProfile(userId);
  235. }]);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement