public async Task <IActionResult> UpdateMe([FromBody] User updateInfo) { IActionResult response = BadRequest(); try { var user = await GetCurrentUserFromDatabase(); if (user == null) { response = NotFound(); } else { LandlordUpdateError landlordValidationInfo = null; if (user.Type == UserConstants.UserTypes.Landlord) { landlordValidationInfo = await ValidateLandlordInfo(user, updateInfo); } var normalUserUpdateError = await ValidateNormalUserInfo(user, updateInfo, landlordValidationInfo); if (normalUserUpdateError.HasError) { response = BadRequest(normalUserUpdateError); } else { UpdateNormalUserProperties(user, updateInfo); if (user.Type == UserConstants.UserTypes.Landlord) { UpdateLandlordProperties(user, updateInfo); } await UpdateUser(user); await LoadUserRelationships(user); await SignInUser(user); response = Ok(user); } } } catch (Exception ex) { _logger.LogDebug(null, ex, "Unexpected Issue."); response = StatusCode((int)HttpStatusCode.InternalServerError); } return(response); }
private async Task <LandlordUpdateError> ValidateLandlordInfo(User currentUser, User userInfo, LandlordUpdateError prefilledErrorInfo = null) { var updateError = prefilledErrorInfo ?? new LandlordUpdateError(); if (!string.IsNullOrWhiteSpace(userInfo.Email) && (new EmailAddressAttribute().IsValid(userInfo.Email) == false)) { updateError.Email = new List <string> { "Please enter a valid eMail." }; updateError.HasError = true; } else if (!string.IsNullOrWhiteSpace(userInfo.Email) && (userInfo.Email.ToLower() != currentUser.Email.ToLower()) && await _database.User.AnyAsync(u => u.Email == userInfo.Email.ToLower())) { updateError.Email = new List <string> { "Please enter a valid eMail. This eMail is not unique." }; updateError.HasError = true; } return(updateError); }
private async Task <LandlordUpdateError> ValidateUpgradeToLandlord(User currentUser, User userInfo, LandlordUpdateError prefilledErrorInfo = null) { var updateError = prefilledErrorInfo ?? new LandlordUpdateError(); if (string.IsNullOrWhiteSpace(userInfo.PhoneNumber)) { updateError.PhoneNumber = new List <string> { "Please enter a phone number." }; updateError.HasError = true; } if (string.IsNullOrWhiteSpace(userInfo.ZipCode)) { updateError.ZipCode = new List <string> { "Please enter a zip code." }; updateError.HasError = true; } if (string.IsNullOrWhiteSpace(userInfo.City)) { updateError.City = new List <string> { "Please enter a city." }; updateError.HasError = true; } if (string.IsNullOrWhiteSpace(userInfo.Street)) { updateError.Street = new List <string> { "Please enter a street." }; updateError.HasError = true; } if (string.IsNullOrWhiteSpace(userInfo.HouseNumber)) { updateError.HouseNumber = new List <string> { "Please enter a house number." }; updateError.HasError = true; } if (string.IsNullOrWhiteSpace(userInfo.Email) || (new EmailAddressAttribute().IsValid(userInfo.Email) == false)) { updateError.Email = new List <string> { "Please enter a valid eMail." }; updateError.HasError = true; } else if (!string.IsNullOrWhiteSpace(userInfo.Email) && (userInfo.Email.ToLower() != currentUser.Email.ToLower()) && await _database.User.AnyAsync(u => u.Email == userInfo.Email.ToLower())) { updateError.Email = new List <string> { "Please enter a valid eMail. This eMail is not unique." }; updateError.HasError = true; } return(updateError); }