public static class UserService {
public static int GetUserRating(User user, bool useCache, bool saveToDb = true)
if (user.Type == UserType.SuperUser) {
return user.Id == "3aa857aa-77bf-4f8e-8545-3fffca0aa20d" ? 9999 : 1000;
var cacheSingleton = UserRatingCache.GetInstance();
if (cacheSingleton.FindById(id) != null) {
var entry = cacheSingleton.FindById(id);
} else if (user.LastModifiedDate > new DateTime(2015, 7, 20)) {
var sqlDbRepository = new SqlDbRepository("Server=AppServer2\SQLSERVER;Database=appDb;User Id=admin;Password=1qazxsw2;");
var data = sqlDbRepository.GetUserDataAsync(id)?.Result;
var value1 = data.TotalPostsWritten;
var value2 = data.LikesReceived / 30;
sqlDbRepository.SaveUserRatingAsync(user.Id, (value1 + value2) / 2);
return (value1 + value2) / 2;
var client = new HttpClient();
var response = client.GetAsync("https://legacyapi.com/users/" + user.Id).Result;
if (response.IsSuccessStatusCode) {
return int.Parse(response.Content.ReadAsStringAsync().Result);
public static async Task<(Permissions model, Permissions metamodel, UserRoles roles)> GetUserPermissions() {
var result1 = await FirstMethodAsync();
var result2 = await SecondMethodAsync();
var result3 = await ThirdMethodAsync();
return (model: result1, metamodel: result2, roles: result3)