private async Task <SaveUsersChangesResult> IsProfileChangeSavable(UserProfileModel model, AspNetUser aspNetUser) { User user = aspNetUser.Users.First(); UserProfileChangedData changedProperties = await GetChangedPropertiesList(model, aspNetUser, user); if (!changedProperties.IsEmailValid) { return new SaveUsersChangesResult(false) { MailInvalid = true } } ; if (changedProperties.ChangedProperties.Any()) { bool isChangesSaved = await SaveUsersChanges(changedProperties.ChangedValues, user.Id); return(new SaveUsersChangesResult(isChangesSaved, changedProperties.ChangedProperties)); } if (changedProperties.IsTagsUpdated) { Log.Info(LogTag.PostProfile_TagsOnly, Request, new { userId = user.Id, model }); return(new SaveUsersChangesResult(true)); } Log.Info(LogTag.PostProfile_NoChange, Request, new { userId = user.Id, model }); return(new SaveUsersChangesResult(false)); }
private async Task <UserProfileChangedData> GetChangedPropertiesList(UserProfileModel model, AspNetUser identityUser, User userData) { var changedValues = new UsersChanges(); var changedProperties = new List <string>(); if (model.Email != identityUser.Email) { if (await UpdateUserEmailAsync(model.Email)) { changedValues.Email = identityUser.Email; changedProperties.Add(nameof(identityUser.Email)); } else { return new UserProfileChangedData { IsEmailValid = false } } } ; if (model.BirthYear != userData.BirthYear) { changedValues.BirthYear = userData.BirthYear; changedProperties.Add(nameof(userData.BirthYear)); } if (model.BirthMonth != userData.BirthMonth) { changedValues.BirthMonth = userData.BirthMonth; changedProperties.Add(nameof(userData.BirthMonth)); } if (model.Country != userData.CountryId) { changedValues.Country = userData.CountryId; changedProperties.Add(nameof(userData.CountryId)); } if (model.Location != userData.Location) { changedValues.Location = userData.Location; changedProperties.Add(nameof(userData.Location)); } if (model.Knows != userData.KnowsId) { changedValues.KnowsId = userData.KnowsId; changedProperties.Add(nameof(userData.KnowsId)); } if (model.Knows2 != userData.Knows2Id) { changedValues.Knows2Id = userData.Knows2Id; changedProperties.Add(nameof(userData.Knows2Id)); } if (model.Knows2 != userData.Knows3Id) { changedValues.Knows2Id = userData.Knows2Id; changedProperties.Add(nameof(userData.Knows3Id)); } if (model.Learns != userData.LearnsId) { changedValues.LearnsId = userData.LearnsId; changedProperties.Add(nameof(userData.LearnsId)); } if (model.Learns2 != userData.Learns2Id) { changedValues.Learns2Id = userData.Learns2Id; changedProperties.Add(nameof(userData.Learns2Id)); } if (model.Learns3 != userData.Learns3Id) { changedValues.Learns3Id = userData.Learns3Id; changedProperties.Add(nameof(userData.Learns3Id)); } if (model.Introduction != userData.Introduction) { changedValues.Introduction = userData.Introduction; changedProperties.Add(nameof(userData.Introduction)); } bool isTagsNeedToUpdate = CheckUpdatedTags(model, userData); UserProfileChangedData changedData = new UserProfileChangedData { ChangedProperties = changedProperties, IsTagsUpdated = isTagsNeedToUpdate }; if (changedData.ChangedProperties.Count > 0) { changedData.ChangedValues = changedValues; } return(changedData); }