public async Task <HttpResponseMessage> PutPersonalInfo(ApplicationUserPutPersonalInfoViewModel model) { var validatedModel = ValidateModel(model); if (!validatedModel.IsSuccessStatusCode) { return(validatedModel); } var userOrg = GetUserAndOrganization(); var user = _applicationUserRepository.GetByID(model.Id); if (user == null) { return(Request.CreateResponse(HttpStatusCode.NotFound, new[] { string.Format(Resources.Common.DoesNotExist, Resources.Models.ApplicationUser.ApplicationUser.EntityName) })); } if ((user.FirstName != model.FirstName || user.LastName != model.LastName) && !HasPermission(userOrg, AdministrationPermissions.ApplicationUser)) { return(Request.CreateResponse(HttpStatusCode.Forbidden)); } if (_applicationUserRepository.Get(u => u.Email == model.Email && u.Id != user.Id).Any()) { return(Request.CreateResponse(HttpStatusCode.BadRequest, new[] { string.Format(Resources.Models.ApplicationUser.ApplicationUser.EmailAlreadyExsists) })); } if (user.PictureId != model.PictureId && !string.IsNullOrEmpty(user.PictureId)) { await _pictureService.RemoveImage(user.PictureId, userOrg.OrganizationId); } _mapper.Map(model, user); _applicationUserRepository.Update(user); _unitOfWork.Save(); var response = default(object); if (!User.IsInRole(Roles.NewUser) || !_userManager.IsInRole(user.Id, Roles.FirstLogin)) { return(Request.CreateResponse(HttpStatusCode.OK)); } await _userManager.RemoveFromRoleAsync(User.Identity.GetUserId(), Roles.FirstLogin); _administrationUsersService.NotifyAboutNewUser(user, userOrg.OrganizationId); var requiresConfirmation = _organizationService.RequiresUserConfirmation(userOrg.OrganizationId); if (!requiresConfirmation) { _administrationUsersService.ConfirmNewUser(userOrg.UserId, userOrg); } response = new { requiresConfirmation }; return(Request.CreateResponse(HttpStatusCode.OK, response)); }
public async Task <HttpResponseMessage> PutPersonalInfo(ApplicationUserPutPersonalInfoViewModel model) { var validatedModel = ValidateModel(model); if (!validatedModel.IsSuccessStatusCode) { return(validatedModel); } var userOrg = GetUserAndOrganization(); var user = _applicationUserRepository.GetByID(model.Id); if (user == null) { return(Request.CreateResponse(HttpStatusCode.NotFound, new[] { string.Format(Resources.Common.DoesNotExist, Resources.Models.ApplicationUser.ApplicationUser.EntityName) })); } if ((user.FirstName != model.FirstName || user.LastName != model.LastName) && !HasPermission(userOrg, AdministrationPermissions.ApplicationUser)) { return(Request.CreateResponse(HttpStatusCode.Forbidden)); } if (_applicationUserRepository.Get(u => u.Email == model.Email && u.Id != user.Id).Any()) { return(Request.CreateResponse(HttpStatusCode.BadRequest, new[] { string.Format(Resources.Models.ApplicationUser.ApplicationUser.EmailAlreadyExsists) })); } _mapper.Map(model, user); _applicationUserRepository.Update(user); _unitOfWork.Save(); var response = default(object); if (User.IsInRole(Roles.NewUser) && _userManager.IsInRole(user.Id, Roles.FirstLogin)) { await _userManager.RemoveFromRoleAsync(User.Identity.GetUserId(), Roles.FirstLogin); _administrationUsersService.NotifyAboutNewUser(user, userOrg.OrganizationId); var requiresConfirmation = _organizationService.RequiresUserConfirmation(userOrg.OrganizationId); if (!requiresConfirmation) { _administrationUsersService.ConfirmNewUser(userOrg.UserId, userOrg); } response = new { requiresConfirmation }; } var cache = Configuration.CacheOutputConfiguration().GetCacheOutputProvider(Request); cache.RemoveStartsWith(Configuration.CacheOutputConfiguration().MakeBaseCachekey((BirthdaysController t) => t.GetWeeklyBirthdays())); return(response != null?Request.CreateResponse(HttpStatusCode.OK, response) : Request.CreateResponse(HttpStatusCode.OK)); }
public void ConfirmNewUser(string userId, UserAndOrganizationDTO userAndOrg) { var applicationUser = _usersDbSet.First(user => user.Id == userId); _userAdministrationValidator.CheckIfEmploymentDateIsSet(applicationUser.EmploymentDate); var hasRole = _userManager.IsInRole(userId, Constants.Authorization.Roles.FirstLogin); _userAdministrationValidator.CheckIfUserHasFirstLoginRole(hasRole); var addRoleResult = _userManager.AddToRole(userId, Constants.Authorization.Roles.User); var removeRoleResult = _userManager.RemoveFromRole(userId, Constants.Authorization.Roles.NewUser); _userAdministrationValidator.CheckForAddingRemovingRoleErrors(addRoleResult.Errors, removeRoleResult.Errors); _notificationService.SendConfirmedNotificationEmail(applicationUser.Email, userAndOrg); SetTutorialStatus(applicationUser, false); AddUserToMainWall(userId); _uow.SaveChanges(userAndOrg.UserId); }