public DataAccessResponseType BuyCredits(string accountId, decimal dollarAmount, string requesterId, RequesterType requesterType, string ipAddress, string origin, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; //Only Platform SuperAdmins and Account Admins can buy credits var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.SuperAdmin, Sahara.Core.Settings.Accounts.Users.Authorization.Roles.Admin); if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion var result = AccountCreditsManager.BuyCredits(accountId, dollarAmount); #region Log Account Activity if (result.isSuccess) { /*try{ * * * var creditsAmount = Sahara.Core.Common.Methods.Commerce.ConvertDollarAmountToCredits(dollarAmount); * * AccountLogManager.LogActivity( * accountId, * CategoryType.Credits, * ActivityType.Credits_Purchased, * creditsAmount + " credits purchased", * requesterName + " purchased " + creditsAmount + " credits for $" + dollarAmount, * requesterId, * requesterName, * requesterEmail, * ipAddress, * origin); * }catch{}*/ } #endregion return(result); }
public int GetCredits(string accountID, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(-1); } return(AccountCreditsManager.GetCredits(accountID)); }
public DataAccessResponseType SpendCredits(string accountId, int creditAmount, string description, string requesterId, RequesterType requesterType, string ipAddress, string origin, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; //Only Platform Admins and Account Users and up can spend credits (a little more lax than purchasing) var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.Admin, Sahara.Core.Settings.Accounts.Users.Authorization.Roles.User); if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion var result = AccountCreditsManager.SpendCredits(accountId, creditAmount, description); #region Log Account Activity if (result.isSuccess) { /*try * { * AccountLogManager.LogActivity( * accountId, * CategoryType.Credits, * ActivityType.Credits_Spent, * creditAmount + " credits spent", * requesterName + " spent " + creditAmount + " credits on '" + description + "'", * requesterId, * requesterName, * requesterEmail, * ipAddress, * origin); * } * catch { }*/ } #endregion return(result); }
public static BillingSnapshot GetBillingSnapshot() { var billingSnapshot = new BillingSnapshot(); #region Generate Billing Snapshot #region Get from Redis Cache //IDatabase cache = Sahara.Core.Settings.Azure.Redis.RedisMultiplexers.PlatformManager_Multiplexer.GetDatabase(); IDatabase cache = Sahara.Core.Settings.Azure.Redis.RedisMultiplexers.RedisMultiplexer.GetDatabase(); Object cachedBillingSnapshot = null; try { cachedBillingSnapshot = cache.HashGet( Sahara.Core.Common.Redis.PlatformManagerServer.Hashes.SnapshotsHash.Key, Sahara.Core.Common.Redis.PlatformManagerServer.Hashes.SnapshotsHash.Fields.Billing ); if (((RedisValue)cachedBillingSnapshot).HasValue) { billingSnapshot = JsonConvert.DeserializeObject <BillingSnapshot>((RedisValue)cachedBillingSnapshot); } } catch { } #endregion #region Generate Snapshot if (((RedisValue)cachedBillingSnapshot).IsNullOrEmpty) { billingSnapshot = new BillingSnapshot(); billingSnapshot.CreditsInCirculation = AccountCreditsManager.GetCreditsInCirculation(); billingSnapshot.CreditsInCirculationDollarAmount = Sahara.Core.Common.Methods.Commerce.ConvertCreditsAmountToDollars(billingSnapshot.CreditsInCirculation); billingSnapshot.Balance = PlatformBillingManager.GetBalance(); billingSnapshot.UpcomingTransfers = new List <Billing.Models.Transfer>(); billingSnapshot.LatestTransfers = new List <Billing.Models.Transfer>(); try { var topTransfers = PlatformBillingManager.GetTransferHistory(10); foreach (var transfer in topTransfers) { if (transfer.Status == "pending") { billingSnapshot.UpcomingTransfers.Add(transfer); } else if (transfer.Status == "paid" && billingSnapshot.LatestTransfers.Count < 2) //<-- We only show the latest 2 available transfers { billingSnapshot.LatestTransfers.Add(transfer); } } //We reverse the upcoming list so the latest transfers show up first billingSnapshot.UpcomingTransfers.Reverse(); } catch { billingSnapshot.LatestTransfers = null; billingSnapshot.UpcomingTransfers = null; } #region Store in Redis try { //Store a copy in the Redis cache cache.HashSet( Sahara.Core.Common.Redis.PlatformManagerServer.Hashes.SnapshotsHash.Key, Sahara.Core.Common.Redis.PlatformManagerServer.Hashes.SnapshotsHash.Fields.Billing, JsonConvert.SerializeObject(billingSnapshot), When.Always, CommandFlags.FireAndForget ); //Expire cache after set time cache.KeyExpire( Sahara.Core.Common.Redis.PlatformManagerServer.Hashes.SnapshotsHash.Key, Sahara.Core.Common.Redis.PlatformManagerServer.Hashes.SnapshotsHash.Expiration, CommandFlags.FireAndForget ); } catch { } #endregion } #endregion #endregion return(billingSnapshot); }
public DataAccessResponseType TradeCredits(string fromAccountId, string toAccountId, int creditAmount, string description, string requesterId, RequesterType requesterType, string ipAddress, string origin, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; //Only Platform Admins and Account Users and up can spend credits (a little more lax than purchasing) var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.Admin, Sahara.Core.Settings.Accounts.Users.Authorization.Roles.User); if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion Sahara.Core.Accounts.Models.Account receiverAccount; var result = AccountCreditsManager.TradeCredits(fromAccountId, toAccountId, creditAmount, description, out receiverAccount); #region Log Account Activity if (result.isSuccess) { /*try * { * //Log the activity for both giver and receiver * * //Trader * AccountLogManager.LogActivity( * fromAccountId, * CategoryType.Credits, * ActivityType.Credits_Traded, * creditAmount + " credits traded", * requesterName + " traded " + creditAmount + " credits to '" + receiverAccount.AccountName + "' for '" + description + "'", * requesterId, * requesterName, * requesterEmail, * ipAddress, * origin); * * var fromAccountName = "Another account"; * * try * { * fromAccountName = AccountManager.GetAccountName(fromAccountId); * } * catch(Exception e) * { * * }*/ //Tradee /* * AccountLogManager.LogActivity( * toAccountId, * CategoryType.Credits, * ActivityType.Credits_Received, * creditAmount + " credits received", * requesterName + " from '" + fromAccountName + "' sent you " + creditAmount + " credits for '" + description + "'", * requesterId, * requesterName, * requesterEmail, * ipAddress, * origin); * } * catch { }*/ } #endregion return(result); }