public ExceptionLogs()
        {
            this.RequiresAuthentication();
            Get("/exceptionlogs", args =>
            {
                var model = new DataLogsModel();
                model.ExceptionLogsActive = "active";
                model.Title = "Exception Logs";

                var page = int.Parse(Request.Query["page"].Value ?? "0");
                if (page < 0)
                {
                    page = 0;
                }
                var logsFrom          = page * 15;
                var logsTo            = 15;
                var futLogs           = FUTLogsDatabase.GetFUTExceptionLogs(logsFrom, logsTo);
                var checkNextPage     = FUTLogsDatabase.CheckNextPageFUTExceptionLogs(logsFrom + 15, logsTo);
                var checkPreviousPage = FUTLogsDatabase.CheckPreviousPageFUTExceptionLogs(logsFrom, logsTo);
                model.Logs            = new List <DataLogsModel.SingleDataLog>();
                foreach (var futLog in futLogs)
                {
                    model.Logs.Add(new DataLogsModel.SingleDataLog()
                    {
                        ID = futLog.ID, Account = futLog.EMail, Data = futLog.Data, Timestamp = $"{Helper.TimestampToDateTime(futLog.Timestamp):d/M/yyyy HH:mm:ss}"
                    });
 public void Execute()
 {
     foreach (var x in ItemListManager.GetFUTListItems())
     {
         x.LastPriceCheck = 0;
         x.SaveChanges();
     }
     FUTLogsDatabase.AddFUTNotification("ActionScheduler", "Pricechecks resetted");
 }
 public void Execute()
 {
     foreach (var x in ItemListManager.GetFUTListItems())
     {
         x.SellPercent = Percentage;
         x.SaveChanges();
     }
     FUTLogsDatabase.AddFUTNotification("ActionScheduler", "Buypercent set to " + Percentage);
 }
Exemple #4
0
        public Sells()
        {
            this.RequiresAuthentication();
            Get("/sells", args =>
            {
                var model         = new BuysSellsModel();
                model.PriceString = "SellPrice";

                var page = int.Parse(Request.Query["page"].Value ?? "0");
                if (page < 0)
                {
                    page = 0;
                }
                var logsFrom = page * 15;
                var logsTo   = 15;
                var futLogs  = new List <FUTSell>();

                var logType = (string)Request.Query["type"].Value ?? "CMB";

                var assetID = int.Parse(Request.Query["assetid"].Value ?? "0");
                var revID   = int.Parse(Request.Query["revid"].Value ?? "0");

                switch (logType)
                {
                case "BIN":
                    model.Title = "Sells BIN";
                    model.SellsLogsBINActive = "active";
                    model.TreeviewBINActive  = "active";
                    futLogs = FUTLogsDatabase.GetFUTSells(logsFrom, logsTo, FUTBuyBidType.BuyNow);
                    break;

                case "BID":
                    model.Title = "Sells BID";
                    model.SellsLogsBIDActive = "active";
                    model.TreeviewBIDActive  = "active";
                    futLogs = FUTLogsDatabase.GetFUTSells(logsFrom, logsTo, FUTBuyBidType.Bid);
                    break;

                default:
                    logType     = "CMB";
                    model.Title = "Sells Combined";
                    model.SellsLogsCMBActive = "active";
                    model.TreeviewCMBActive  = "active";
                    futLogs = FUTLogsDatabase.GetFUTSells(logsFrom, logsTo);
                    break;
                }
                var checkNextPage     = FUTLogsDatabase.CheckNextPageFUTSellsLogs(logsFrom + 15, logsTo);
                var checkPreviousPage = FUTLogsDatabase.CheckPreviousPageFUTSellsLogs(logsFrom, logsTo);
                model.Logs            = new List <BuysSellsModel.SingleDataLog>();
                foreach (var futLog in futLogs)
                {
                    model.Logs.Add(new BuysSellsModel.SingleDataLog()
                    {
                        TimestampString = $"{Helper.TimestampToDateTime(futLog.Timestamp):d/M/yyyy HH:mm:ss}", ID = futLog.ID, TradeID = futLog.TradeID, RevisionID = futLog.RevisionID, ResourceID = futLog.AssetID, Price = futLog.SellPrice, ItemName = $"{futLog.ItemName} ({futLog.Rating})"
                    });
                }
Exemple #5
0
        public ProfitLogs()
        {
            this.RequiresAuthentication();
            Get("/profitlogs", args =>
            {
                var model = new ProfitLogsModel();
                var page  = int.Parse(Request.Query["page"].Value ?? "0");
                if (page < 0)
                {
                    page = 0;
                }
                var logsFrom = page * 15;
                var logsTo   = 15;
                var futLogs  = new List <FUTItemProfit>();

                var logType = (string)Request.Query["type"].Value ?? "CMB";

                var assetID = int.Parse(Request.Query["assetid"].Value ?? "0");
                var revID   = int.Parse(Request.Query["revid"].Value ?? "0");

                switch (logType)
                {
                case "BIN":
                    model.Title = "Profit Logs BIN";
                    model.ProfitLogsBINActive = "active";
                    model.LogType             = "BIN";
                    model.TreeviewBINActive   = "active";
                    futLogs = assetID != 0 ? FUTLogsDatabase.GetFUTProfitLogs(logsFrom, logsTo, assetID, revID, FUTBuyBidType.BuyNow) : FUTLogsDatabase.GetFUTProfitLogs(logsFrom, logsTo, FUTBuyBidType.BuyNow);
                    break;

                case "BID":
                    model.Title = "Profit Logs BID";
                    model.ProfitLogsBIDActive = "active";
                    model.LogType             = "BID";
                    model.TreeviewBIDActive   = "active";
                    futLogs = assetID != 0 ? FUTLogsDatabase.GetFUTProfitLogs(logsFrom, logsTo, assetID, revID, FUTBuyBidType.Bid) : FUTLogsDatabase.GetFUTProfitLogs(logsFrom, logsTo, FUTBuyBidType.Bid);
                    break;

                default:
                    model.Title = "Profit Logs CMB";
                    logType     = "CMB";
                    model.ProfitLogsCMBActive = "active";
                    model.LogType             = "CMB";
                    model.TreeviewCMBActive   = "active";
                    futLogs = assetID != 0 ? FUTLogsDatabase.GetFUTProfitLogs(logsFrom, logsTo, assetID, revID) : FUTLogsDatabase.GetFUTProfitLogs(logsFrom, logsTo);
                    break;
                }
                var checkNextPage     = FUTLogsDatabase.CheckNextPageFUTProfitLogs(logsFrom + 15, logsTo);
                var checkPreviousPage = FUTLogsDatabase.CheckPreviousPageFUTProfitLogs(logsFrom, logsTo);
                model.Logs            = new List <ProfitLogsModel.SingleDataLog>();
                foreach (var futLog in futLogs)
                {
                    model.Logs.Add(new ProfitLogsModel.SingleDataLog()
                    {
                        ResourceID = futLog.AssetID, RevisionID = futLog.RevisionID, ID = futLog.ID, ItemName = $"{futLog.ItemName} ({futLog.Rating} / {futLog.RevisionID} / {futLog.Position} / {futLog.ChemistryStyle})", SellPrice = futLog.SellPrice, BuyPrice = futLog.BuyPrice, Profit = futLog.Profit, BoughtOn = $"{Helper.TimestampToDateTime(futLog.BuyTimestamp):d/M/yyyy HH:mm:ss}", SoldOn = $"{Helper.TimestampToDateTime(futLog.SellTimestamp):d/M/yyyy HH:mm:ss}", TimeOnTradepile = Helper.TimestampToDateTime(futLog.SellTimestamp).Subtract(Helper.TimestampToDateTime(futLog.BuyTimestamp)).ToReadableString()
                    });
        public BotStatistic()
        {
            this.RequiresAuthentication();
            Get("/botstatistic", args =>
            {
                var model = new BotStatisticModel();

                model.TotalProfit  = FUTLogsDatabase.GetFUTProfitLogsLast24Hours().Sum(x => x.Profit);
                model.BotStatistic = FUTLogsDatabase.GetFUTBotStatisticsLast24Hours();

                return(View["BotStatistic", model]);
            });
        }
        public NotificationCenter()
        {
            this.RequiresAuthentication();
            Get("/notificationcenter", args =>
            {
                var mod = new NotificationCenterModel();

                var notifications = FUTLogsDatabase.GetFUTNotifications();
                notifications.Reverse();

                mod.Notifications = new List <Tuple <FUTNotification, string> >();

                foreach (var futNotification in notifications)
                {
                    mod.Notifications.Add(new Tuple <FUTNotification, string>(futNotification, $"{Fifa.Services.Helper.TimestampToDateTime(futNotification.Timestamp):d/M/yyyy HH:mm:ss}"));
                }
Exemple #8
0
        public AccountStatistic()
        {
            this.RequiresAuthentication();
            Get("/accountstatistic", args =>
            {
                var model = new AccountStatisticModel();
                //        public long ProfitLast24Hours =>;
                var clients = new List <Pair <FUTClient, long> >();

                var profits = FUTLogsDatabase.GetFUTProfitLogsLast24Hours();

                foreach (var futClient in Fifa.Managers.BotManager.GetFutClients())
                {
                    var profit = profits.Where(x => x.Account.ToLower() == futClient.FUTAccount.EMail.ToLower())
                                 .Sum(x => x.Profit);
                    clients.Add(new Pair <FUTClient, long>(futClient, profit));
                }
                model.FUTClients = clients;
                return(View["AccountStatistic", model]);
            });

            Post("/startaccount", args =>
            {
                var body       = new StreamReader(Request.Body).ReadToEnd();
                body           = HttpUtility.UrlDecode(body);
                var parameters = HttpUtility.ParseQueryString(body);

                var account = parameters["account"];

                Fifa.Managers.BotManager.StartBot(account);

                return(Response.AsText("true"));
            });

            Post("/stopaccount", args =>
            {
                var body       = new StreamReader(Request.Body).ReadToEnd();
                body           = HttpUtility.UrlDecode(body);
                var parameters = HttpUtility.ParseQueryString(body);

                var account = parameters["account"];

                Fifa.Managers.BotManager.StopBot(account);

                return(Response.AsText("true"));
            });
        }
Exemple #9
0
        public Index()
        {
            this.RequiresAuthentication();
            Get("/", args =>
            {
                var mod = new IndexModel();
                #region Coins & Accounts
                var coinsPerAccount = 0;
                var accounts        = FUTAccountsDatabase.GetFUTAccounts();
                var coins           = FUTLogsDatabase.GetFUTCoins();

                var totalCoins = accounts.Select(acc => coins.FirstOrDefault(x => x.EMail.ToLower() == acc.EMail.ToLower())).Where(coinsFromAcc => coinsFromAcc != null).Sum(coinsFromAcc => coinsFromAcc.Coins);
                if (totalCoins > 0 && accounts.Count > 0)
                {
                    coinsPerAccount = totalCoins / accounts.Count;
                }

                mod.TotalCoins         = totalCoins;
                mod.AvgCoinsPerAccount = coinsPerAccount;
                mod.TotalAccounts      = accounts.Count;


                var allTpItems = Fifa.Managers.BotManager.GetTradepileItems();
                var tpValue    = (int)(allTpItems.Sum(x => x.buyNowPrice) * 0.95);

                mod.TotalOverallValue   = tpValue + totalCoins;
                mod.TotalTradepileValue = tpValue;
                mod.TotalTradepileItems = allTpItems.Count;
                #endregion

                #region Logs
                mod.TotalBuys  = FUTLogsDatabase.GetFUTBuysCount();
                mod.TotalSells = FUTLogsDatabase.GetFUTSellsCount();
                mod.TotalLogs  = mod.TotalBuys + mod.TotalSells;
                #endregion

                if (!string.IsNullOrEmpty(HttpUtility.ParseQueryString(Request.Url.Query).Get("forbidden")))
                {
                    mod.DisplayError = true;
                    mod.ErrorMessage = "You do not have permissions to view this page!";
                }

                return(View["Index", mod]);
            });
        }
Exemple #10
0
 public static FUTMuleApiStatistic GetInstance()
 {
     lock (_statisticLock)
     {
         using (var ctx = new FUTLogsDatabase())
         {
             var statistic = ctx.FUTMuleApiStatistics.FirstOrDefault();
             if (statistic == null)
             {
                 var ret = new FUTMuleApiStatistic();
                 ret.Reset();
                 ctx.FUTMuleApiStatistics.Add(ret);
                 ctx.SaveChanges();
                 return(ret);
             }
             return(statistic);
         }
     }
 }
Exemple #11
0
 public void SaveChanges()
 {
     lock (_statisticLock)
     {
         using (var context = new FUTLogsDatabase())
         {
             var statistic = context.FUTMuleApiStatistics.FirstOrDefault();
             if (statistic == null)
             {
                 statistic = new FUTMuleApiStatistic();
                 statistic.Reset();
                 context.FUTMuleApiStatistics.Add(statistic);
                 context.SaveChanges();
             }
             else
             {
                 context.Entry(statistic).CurrentValues.SetValues(this);
                 context.SaveChanges();
             }
         }
     }
 }
Exemple #12
0
        public async Task RunMuleApiClientAsync(FUTClient client, MuleApiPlayer muleApiPlayer)
        {
            client.AddLog($"Starting {muleApiPlayer.MuleApiType} MuleApi!");
            //var running = client.LogicRunningReal;
            //var runningCounter = 0;
            //if (running)
            //{
            //    client.AddLog($"Stopping Logic for MuleApi {muleApiPlayer.MuleApiType} transaction!");
            //    BotManager.StopBot(client.FUTAccount.EMail);
            //    while (client.LogicRunningReal)
            //    {
            //        await Task.Delay(1000);

            //        if (runningCounter++ > 30)
            //        {

            //            client.AddLog($"Couldn't stop account!");
            //            client.StartLogic();
            //            return;
            //        }
            //    }
            //}

            var mule   = new MuleApiClient(client, muleApiPlayer);
            var result = await mule.MuleLogicAsync();

            if (result)
            {
                switch (muleApiPlayer.MuleApiType)
                {
                case MuleApiType.GameTradeEasy:
                    FUTMuleApiStatistic.Instance.GTETotalCoinVolume   += muleApiPlayer.MuleValue;
                    FUTMuleApiStatistic.Instance.GTETotalDollarVolume += muleApiPlayer.Revenue;
                    break;

                case MuleApiType.MuleFactory:
                    FUTMuleApiStatistic.Instance.MFTotalCoinVolume   += muleApiPlayer.MuleValue;
                    FUTMuleApiStatistic.Instance.MFTotalDollarVolume += muleApiPlayer.Revenue;
                    break;

                case MuleApiType.WholeSale:
                    FUTMuleApiStatistic.Instance.WSTotalCoinVolume   += muleApiPlayer.MuleValue;
                    FUTMuleApiStatistic.Instance.WSTotalDollarVolume += muleApiPlayer.Revenue;
                    break;
                }
                FUTMuleApiStatistic.Instance.SaveChanges();
                client.CoinsMuledToday += muleApiPlayer.MuleValue;
                await muleApiPlayer.MuleApiClient.UpdatePlayerStatusAsync(muleApiPlayer.TransactionId, MuleApiStatus.Bought);

                FUTLogsDatabase.AddFUTNotification(client.FUTAccount.EMail, $"Muling API sold {muleApiPlayer.MuleValue} coins for {muleApiPlayer.Revenue}$ to {muleApiPlayer.MuleApiType}");
                client.AddLog($"Muling API sold {muleApiPlayer.MuleValue} coins for {muleApiPlayer.Revenue}$ to {muleApiPlayer.MuleApiType}");
            }
            else
            {
                await muleApiPlayer.MuleApiClient.UpdatePlayerStatusAsync(muleApiPlayer.TransactionId, MuleApiStatus.Cancel);

                client.AddLog($"Muling API failed! {muleApiPlayer.MuleValue} coins for {muleApiPlayer.Revenue}$ to {muleApiPlayer.MuleApiType}");
            }
            client.Muling            = false;
            client.MulingPausedUntil = DateTime.Now.AddMinutes(FUTSettings.Instance.MuleApiSellDelayPerAccount);
            //if (running)
            //{
            //    client.AddLog($"Restarting account!");
            //    client.StartLogic();
            //}
        }
 public void Execute()
 {
     FUTSettings.Instance.EnableBuy = true;
     FUTSettings.Instance.SaveChanges();
     FUTLogsDatabase.AddFUTNotification("ActionScheduler", "Buy enabled");
 }
 public void Execute()
 {
     BotManager.StartAllBots();
     FUTLogsDatabase.AddFUTNotification("ActionScheduler", "Logic started");
 }
 public void Execute()
 {
     FUTSettings.Instance.LoginMethod = LoginMethod.Android;
     FUTSettings.Instance.SaveChanges();
     FUTLogsDatabase.AddFUTNotification("ActionScheduler", "Loginmethod switched to Android");
 }
 public void Execute()
 {
     FUTSettings.Instance.EnableSell = false;
     FUTSettings.Instance.SaveChanges();
     FUTLogsDatabase.AddFUTNotification("ActionScheduler", "Sell disabled");
 }
        public ItemStatistic()
        {
            this.RequiresAuthentication();
            Get("/itemstatistic", args =>
            {
                var model           = new ItemStatisticModel();
                model.ItemStatistic = new List <SimpleItemStatistic>();
                var listItems       = ItemListManager.GetFUTListItems();
                var allProfits      = FUTLogsDatabase.GetFUTProfitLogs();
                var allTpItems      = Fifa.Managers.BotManager.GetTradepileItems();

                foreach (var futListItem in listItems)
                {
                    var profits = new List <FUTItemProfit>();
                    var tpValue = 0;
                    if (futListItem.ChemistryStyle == ChemistryStyle.All && futListItem.Position == Position.Any)
                    {
                        profits = allProfits.Where(x => x.AssetID == futListItem.AssetID && x.RevisionID == futListItem.RevisionID).ToList();
                        tpValue =
                            (int)allTpItems.Where(
                                x =>
                                ResourceIDManager.GetAssetID(x.itemData.resourceId) == futListItem.AssetID &&
                                ResourceIDManager.GetRevID(x.itemData.resourceId) == futListItem.RevisionID)
                            .Sum(x => x.buyNowPrice * 0.95);
                    }
                    else if (futListItem.ChemistryStyle == ChemistryStyle.All && futListItem.Position != Position.Any)
                    {
                        profits = allProfits.Where(x => x.AssetID == futListItem.AssetID && x.RevisionID == futListItem.RevisionID && x.Position == futListItem.Position).ToList();
                        tpValue =
                            (int)allTpItems.Where(
                                x =>
                                ResourceIDManager.GetAssetID(x.itemData.resourceId) == futListItem.AssetID &&
                                ResourceIDManager.GetRevID(x.itemData.resourceId) == futListItem.RevisionID && x.itemData.preferredPosition == futListItem.Position)
                            .Sum(x => x.buyNowPrice * 0.95);
                    }
                    else if (futListItem.ChemistryStyle != ChemistryStyle.All && futListItem.Position == Position.Any)
                    {
                        profits = allProfits.Where(x => x.AssetID == futListItem.AssetID && x.RevisionID == futListItem.RevisionID && x.ChemistryStyle == futListItem.ChemistryStyle).ToList();
                        tpValue =
                            (int)allTpItems.Where(
                                x =>
                                ResourceIDManager.GetAssetID(x.itemData.resourceId) == futListItem.AssetID &&
                                ResourceIDManager.GetRevID(x.itemData.resourceId) == futListItem.RevisionID && x.itemData.playStyle == (int)futListItem.ChemistryStyle)
                            .Sum(x => x.buyNowPrice * 0.95);
                    }
                    else if (futListItem.ChemistryStyle != ChemistryStyle.All && futListItem.Position == Position.Any)
                    {
                        profits = allProfits.Where(x => x.AssetID == futListItem.AssetID && x.RevisionID == futListItem.RevisionID && x.ChemistryStyle == futListItem.ChemistryStyle && x.Position == futListItem.Position).ToList();
                        tpValue =
                            (int)allTpItems.Where(
                                x =>
                                ResourceIDManager.GetAssetID(x.itemData.resourceId) == futListItem.AssetID &&
                                ResourceIDManager.GetRevID(x.itemData.resourceId) == futListItem.RevisionID && x.itemData.playStyle == (int)futListItem.ChemistryStyle && x.itemData.preferredPosition == futListItem.Position)
                            .Sum(x => x.buyNowPrice * 0.95);
                    }

                    var statistic                  = new SimpleItemStatistic(profits);
                    statistic.TradepileValue       = tpValue;
                    statistic.ItemsLeftOnTradepile = profits.Count(x => x.SellTimestamp == 0);
                    statistic.Name                 = futListItem.DisplayName;
                    statistic.RevisionID           = futListItem.RevisionID;
                    statistic.AssetID              = futListItem.AssetID;
                    statistic.TotalSearched        = futListItem.TimesSearched + 1;
                    statistic.RPMProfit            = (int)(statistic.TotalProfit / (futListItem.TimesSearched + 1));

                    model.ItemStatistic.Add(statistic);
                }

                return(View["ItemStatistic", model]);
            });
        }