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); }
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})" }); }
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}")); }
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")); }); }
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]); }); }
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); } } }
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(); } } } }
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]); }); }