Пример #1
0
        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);
        }
Пример #2
0
        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));
        }
Пример #3
0
        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);
        }
Пример #5
0
        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);
        }