Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict';
- app.controller('UserProfileModalController', [
- '$scope',
- '$rootScope',
- '$state',
- '$modalInstance',
- 'API',
- 'growl',
- 'NetminoUtils',
- 'userUtils',
- 'userId',
- 'Geosearch',
- 'FileUploader',
- 'csrfFactory',
- '$window',
- '$modal',
- '$translate',
- '_',
- function(
- $scope,
- $rootScope,
- $state,
- $modalInstance,
- API,
- growl,
- NetminoUtils,
- userUtils,
- userId,
- Geosearch,
- FileUploader,
- csrfFactory,
- $window,
- $modal,
- $translate,
- _
- ) {
- var initUserProfile = function(id) {
- API.Users.getUserById(id).success(function(res) {
- var userModel = userUtils.prepareUserModelForModal(res.data);
- $scope.userModel = userModel;
- $scope.isConnectedToGoogle = $scope.userModel.isConnectedToGoogle;
- $scope.isConnectedToFacebook = $scope.userModel.isConnectedToFacebook;
- $scope.isConnectedToEventbrite = $scope.userModel.isConnectedToEventbrite;
- }).error(NetminoUtils.handleError);
- };
- $scope.allLocations = [];
- $scope.format = 'dd-MMMM-yyyy';
- $scope.views = {
- PROFILE: 'profile',
- ACCOUNT_SETTINGS: 'account settings',
- PREFERENCES: 'preferences',
- THEMES: 'themes'
- };
- $scope.currentView = $rootScope.isOAuthLogin ?
- $scope.views.ACCOUNT_SETTINGS : $scope.views.PROFILE;
- $scope.selectLocation = function(selected) {
- var selectedLocation = _.findWhere($scope.allLocations, {formatted_address: selected});
- if (selectedLocation) {
- $scope.userModel.location = [
- selectedLocation.geometry.location.lng(),
- selectedLocation.geometry.location.lat()
- ];
- $scope.userModel.geo_name = selectedLocation.formatted_address;
- $scope.locationFound = true;
- }
- };
- $scope.changePassword = function() {
- $modal.open({
- templateUrl: '../../../tpl/modals/change_pass_modal.html',
- controller: 'changePassModalController',
- resolve: {
- userId: function() {
- return $scope.userModel._id;
- }
- },
- windowClass: 'change-pass-modal'
- });
- };
- $scope.closeModal = function() {
- $modalInstance.dismiss();
- };
- $scope.connectWithGoogle = function() {
- $window.open('/auth/google/connect', '_self');
- };
- $scope.disconnectFromGoogle = function() {
- API.Users.disconnectFromGoogle($scope.userModel._id)
- .success(function(data) {
- growl.addSuccessMessage(data.msg);
- $scope.isConnectedToGoogle = false;
- })
- .error(NetminoUtils.handleError);
- };
- $scope.connectWithFacebook = function() {
- $window.open('/auth/facebook', '_self');
- };
- $scope.disconnectFromFacebook = function() {
- API.Users.disconnectFromFacebook($scope.userModel._id)
- .success(function(data) {
- growl.addSuccessMessage(data.msg);
- $scope.isConnectedToFacebook = false;
- })
- .error(NetminoUtils.handleError);
- };
- $scope.connectWithEventbrite = function() {
- $window.open('/auth/eventbrite', '_self');
- };
- $scope.disconnectFromEventbrite = function() {
- API.Users.disconnectFromEventbrite($scope.userModel._id)
- .success(function(data) {
- growl.addSuccessMessage(data.msg);
- $scope.isConnectedToEventbrite = false;
- })
- .error(NetminoUtils.handleError);
- };
- $scope.deactivateAccount = function() {
- API.Users.toggleAccount($scope.userModel._id, {'is_active': false})
- .success(function(data) {
- API.Auth.logout().then(function(res) {
- $rootScope.$broadcast('user is authenticated', 'anonymous');
- $scope.closeModal();
- $state.go('app.page.welcome');
- });
- })
- .error(NetminoUtils.handleError);
- };
- $scope.geoSearch = function(val) {
- $scope.locationFound = false;
- return Geosearch.geocode(val).then(function(response) {
- $scope.allLocations = response.results;
- return $scope.allLocations.map(function(location) {
- return location.formatted_address;
- });
- },
- function(err) {
- NetminoUtils.handleError(err);
- });
- };
- $scope.updateAccount = function(userModel) {
- API.Users.updateAccount(userModel._id, {email: userModel.email})
- .success(userUtils.handleSuccessUpdate)
- .error(NetminoUtils.handleError);
- };
- $scope.updatePreferences = function(userModel) {
- var params = userUtils.prepareParamsForUpdatePreferences(userModel);
- API.Users.updatePreferences(userModel._id, params)
- .success(function(data) {
- $translate.use(userModel.netmino_language.lang);
- $rootScope.user = userModel;
- growl.addSuccessMessage(data.msg);
- })
- .error(NetminoUtils.handleError);
- };
- $scope.updateProfile = function(userModel) {
- if ($scope.photoUploader.queue.length) {
- return $scope.photoUploader.uploadAll();
- }
- var params = userUtils.prepareParamsForUpdateProfile(userModel);
- API.Users.updateProfile(userModel._id, params)
- .success(userUtils.handleSuccessUpdate)
- .error(NetminoUtils.handleError);
- };
- $scope.updateTheme = function (userModel) {
- API.Users.updateTheme(userModel._id, +userModel.theme)
- .success(userUtils.handleSuccessUpdate)
- .error(NetminoUtils.handleError);
- };
- $scope.photoUploader = new FileUploader({
- url: '/api/v1/attachments/image',
- headers: {'x-csrf-token': csrfFactory.token},
- onAfterAddingFile: function(file) {
- var reader = new FileReader();
- reader.onload = function(evt) {
- $scope.$evalAsync(function() {
- $scope.userPhoto = evt.target.result;
- });
- };
- reader.readAsDataURL(file._file);
- $scope.fileError = false;
- },
- onErrorItem: function() {
- $scope.fileError = true;
- },
- onSuccessItem: function(item, res) {
- $scope.fileError = false;
- $scope.photoUploader.clearQueue();
- $scope.userModel.picture = res.file;
- $scope.updateProfile($scope.userModel);
- },
- onWhenAddingFileFailed: function() {
- $scope.fileError = true;
- },
- onCompleteItem: function() {
- }
- });
- $scope.photoUploader.filters.push({
- name: 'imageFilter',
- fn: function(item) {
- var type = '|' + item.type.slice(item.type.lastIndexOf('/') + 1) + '|';
- return '|jpg|png|jpeg|bmp|gif|'.indexOf(type) !== -1;
- }
- });
- $scope.photoUploader.filters.push({
- name: 'overWriteFilter',
- fn: function() {
- if (this.queue.length === 1) {
- this.clearQueue();
- }
- return true;
- }
- });
- initUserProfile(userId);
- }]);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement