Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }