private async Task <HttpResponseMessage> ValidateModelAsync(ApplicationUserPutPersonalInfoViewModel model) { if (!await CanAccessAsync(model)) { return(Request.CreateResponse(HttpStatusCode.Forbidden)); } if (model.BirthDay != null) { if (model.BirthDay.Value.Year < WebApiConstants.LowestBirthdayYear) { return(Request.CreateResponse(HttpStatusCode.BadRequest, new[] { string.Format(Resources.Common.BirthdayDateIsTooOld) })); } if (model.BirthDay > DateTime.UtcNow) { return(Request.CreateResponse(HttpStatusCode.BadRequest, new[] { string.Format(Resources.Common.BirthdayDateValidationError) })); } } if (!await _organizationService.IsOrganizationHostValidAsync(model.Email, Request.GetRequestedTenant())) { return(Request.CreateResponse(HttpStatusCode.BadRequest, new[] { string.Format(Resources.Models.ApplicationUser.ApplicationUser.WrongEmailDomain) })); } return(Request.CreateResponse(HttpStatusCode.OK)); }
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)); }