Skip to content

Instantly share code, notes, and snippets.

@joncodo
Created October 8, 2014 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joncodo/eb301a03e3b983dc92b4 to your computer and use it in GitHub Desktop.
Save joncodo/eb301a03e3b983dc92b4 to your computer and use it in GitHub Desktop.
myApp.controller('listUserController', function ($scope, $http, me, userList, UtilService) {
console.log('Users we got from server:');
console.log(JSON.stringify(userList, null, 2));
$scope.userList = userList;
$scope.em = me;
});
myApp.controller("editUserController", function ($scope, $modal, $http, me, userService, UtilService, organizations) {
$scope.nums = [];
for (var i = 2015; i > 1899; i--) {
$scope.nums.push(i);
}
console.log('me was:', me);
$scope.bioPlaceholder = me.userType === "industry" ? "Please provide a brief summary of your company's background." : "Provide a brief summary of your research accomplishments, awards, recognitions, etc.";
window.scope = $scope;
$scope.profile = me;
console.log('Me: ', me);
$scope.file_uploads = [];
$scope.view = {
organizations: organizations.data,
tab_index: 0,
expertise: "",
education: {
school: "",
degree: "",
startDate: "",
endDate: "",
description: "",
edit_mode: false
},
editBio: false,
saving: false
};
if($scope.profile.userType == "student")
$scope.view.track = ['profile'];
else if($scope.profile.userType == "researcher"){
$scope.view.track = ['profile', 'bio', 'education', 'expertise', 'resume'];
}
else{
$scope.view.track = ['profile', 'bio', 'expertise'];
}
$scope.view.tab = function(){
return $scope.view.track[$scope.view.tab_index];
};
$scope.getCurrentTabName = function (index) {
if($scope.profile.userType === "industry" && $scope.view.track[index] === "expertise"){
return 'company expertise';
}
return $scope.view.track[index];
};
$scope.$watch('profile', function(oldvalue, newvalue){
$scope.view.saving = true;
updateUser();
}, true);
$scope.removeExpertise = function(index){
if($scope.profile.expertise){
var expertise = $scope.profile.expertise[index];
$scope.removeExpertiseFromDb(expertise);
}
$scope.profile.expertise.splice(index, 1);
};
$scope.addExpertise = function (){
var expertise = $scope.view.expertise,
expertises = null;
console.log('EXPERTISE:', expertise);
if ( expertise.indexOf(', ') > -1 ) {
console.log('Contained a comma and a space!');
expertises = expertise.split(',');
}
if ( expertises ) {
console.log('Multiples!');
_.each(expertises, function(exp) {
exp = exp.trim();
if($scope.profile.expertise.indexOf(exp) == -1){
$scope.profile.expertise.push(exp);
}
console.log('Trimmed vlaue multiple:', exp);
$scope.addExpertiseToDb(exp);
});
} else {
console.log('No multiples!');
expertise = expertise.trim();
if($scope.profile.expertise.indexOf(expertise) == -1){
$scope.profile.expertise.push(expertise);
}
console.log('Trimmed value single:', expertise);
$scope.addExpertiseToDb(expertise);
}
$scope.view.expertise = "";
};
$scope.removeExpertiseFromDb = function(expertise){
var expertiseString = expertise.toString();
$http.get('/searchUserByExpertise?expertise=' + expertiseString).success(function(results){
if(results.length == 1){
console.log('here');
$http.get('/deleteExpertiseByName?name=' + expertise);
}
});
};
$scope.addExpertiseToDb = function(expertise){
$http.post('/expertise', {name: expertise})
.success(function(data){
console.log(data);
})
.error(function(status, err){
console.log(err);
});
};
$scope.addEducation = function (education){
validateEducation();
};
$scope.removeEducation = function (index){
UtilService.debug(index);
$scope.profile.education.splice(index, 1);
};
$scope.editEducation = function(index){
if($scope.profile.education[index].edit_mode){
return;
}
$scope.profile.education[index].edit_mode = true;
};
$scope.saveEducation = function(index, education){
$scope.profile.education[index].edit_mode = false;
};
var updateUser = _.debounce(function(){
console.log('Profile updated');
userService.updateUser($scope.profile, $scope.view.tab())
.success(function(data){
console.log(data);
$scope.view.saving = false;
$scope.view.error = [];
})
.error(function(data, status){
console.log(data);
$scope.view.saving = false;
$scope.view.error = data.errorList;
});
}, 700);
var validateEducation = function(){
console.log('Education updated');
userService.validateEducation($scope.view.education)
.success(function(data){
console.log(data);
$scope.view.saving = false;
$scope.view.error = [];
$scope.profile.education.push($scope.view.education);
$scope.view.education = {
school: "",
degree: "",
startDate: "",
endDate: "",
description: ""
};
})
.error(function(data){
console.log("Education Update Error");
console.log(data);
$scope.view.saving = false;
$scope.view.error = data.errorList;
});
};
$scope.changePassword = function(){
userService.changePassword($scope.profile, $scope.view.change_password, $scope.view.change_password_confirm)
.success(function(data){
console.log(data);
scope.view.error = [];
scope.view.change_password = "";
scope.view.change_password_confirm = "";
})
.error(function(data){
console.log(data);
$scope.view.error = data.errorList;
});
};
$scope.checkError = function(input){
if(_.findWhere($scope.view.error, {input: input})){
return true;
}
else{
return false;
}
};
$scope.resetProfilePic = function(){
$scope.profile.profile_picture = '/images/user-nopic.jpg';
$scope.view.saving = true;
userService.updateUser($scope.profile, $scope.view.tab())
.success(function(data){
console.log(data);
$scope.view.saving = false;
$scope.view.error = [];
})
.error(function(data, status){
console.log(data);
$scope.view.saving = false;
$scope.view.error = data.errorList;
});
};
$scope.updateProfilePic = function(files){
var formData = new FormData();
formData.append("userId", $scope.profile.id);
formData.append("userType", $scope.profile.userType);
formData.append("image", files.item(0));
userService.uploadProfilePic(formData)
.success(function(data){
console.log(data);
$scope.profile.profile_picture = data.secure_url;
})
.error(function(data){
console.log('Error');
console.log(data);
});
};
$scope.showSocialModal = function(social, attr){
console.log('derp');
var modalInstance = $modal.open({
templateUrl: 'templates/modals/modal_social_add.html',
controller: 'socialAddModalController',
windowClass: 'social-modal-cont',
resolve: {
social: function(){
return social;
},
url: function(){
return $scope.profile[attr];
}
}
});
modalInstance.result.then(function(url){
console.log(url);
$scope.profile[attr] = url;
}, function(){
console.log('Closed Modal');
});
};
$scope.showErrorModal = function(){
console.log('Error Modal');
var modalInstance = $modal.open({
templateUrl: 'templates/modals/modal_complete_profile.html',
controller: 'completeProfileModal',
windowClass: 'profile-modal'
});
};
$scope.saveResume = function () {
console.log('saved resume hit');
if($scope.file_uploads.length !==0){
$scope.profile.resume_url = $scope.file_uploads[0].url;
$http.put('/researcherUser/' + $scope.profile.id, $scope.profile).success(function (results) {
console.log('resume saved');
});
}
}
});
myApp.controller('viewUserController', function($scope, user, UtilService){
$scope.user = user;
console.log('User: ' + user);
window.scope = $scope;
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment