public async Task <ApiResponse> Upsert(UserProfileDto userProfileDto) { try { var profileQuery = AsyncUtil.RunSync(() => _dao.FindAllAsync(f => f.User.Id.Equals(userProfileDto.Id))); var _daoUser = new DbContextGenericDao <ApplicationUser>(); var _user = await _daoUser.LoadAsync(userProfileDto.Id); if (profileQuery.Any()) { UserProfile profile = profileQuery.First(); //_autoMapper.Map<UserProfileDto, UserProfile>(userProfileDto, profile); profile.User = _user; profile.Count = userProfileDto.Count; profile.IsNavOpen = userProfileDto.IsNavOpen; profile.LastPageVisited = userProfileDto.LastPageVisited; profile.IsNavMinified = userProfileDto.IsNavMinified; profile.LastUpdatedDate = DateTime.Now; AsyncUtil.RunSync(() => _dao.SaveOrUpdateAsync(profile)); AsyncUtil.RunSync(() => _dao.FlushChangesAsync()); } else { //TODO review automapper settings //_autoMapper.Map<UserProfileDto, UserProfile>(userProfileDto, profile); UserProfile profile = new UserProfile { User = _user, Count = userProfileDto.Count, IsNavOpen = userProfileDto.IsNavOpen, LastPageVisited = userProfileDto.LastPageVisited, IsNavMinified = userProfileDto.IsNavMinified, LastUpdatedDate = DateTime.Now }; AsyncUtil.RunSync(() => _dao.SaveOrUpdateAsync(profile)); AsyncUtil.RunSync(() => _dao.FlushChangesAsync()); } return(new ApiResponse(200, "Updated User Profile")); } catch (Exception ex) { string test = ex.Message; return(new ApiResponse(400, "Failed to Retrieve User Profile")); } }