コード例 #1
0
        private void RemoveCurrentOnClick(object sender, RoutedEventArgs e)
        {
            try
            {
                this.RefreshWorkingProcessesList();

                if (this.GetContext().WorkingAction?.IsCompleted == false)
                {
                    ErrorNotify.CriticalMessageBox("You can not remove active processes!");
                    return;
                }

                WorkingProcessProvider.RemoveWorkingProcessFromList((string)this.CurrentProcessComboBox.SelectedValue);

                var newValue = WorkingProcessProvider.GetAllProcessesNames().FirstOrDefault()
                               ?? WorkingProcessProvider.EmptyWorkingProcess.Title;

                this.CurrentProcessComboBox.SelectedValue = newValue;

                this.RefreshWorkingProcessesList();
            }
            catch (Exception ex)
            {
                ErrorNotify.CriticalMessageBox(
                    "Some error occured. Try to switch over working processes and retry removing");
                Logger.Log.Error("Error on working process remove", ex);
                this.RefreshWorkingProcessesList();
            }
        }
コード例 #2
0
        public static WorkingProcessDataContext GetNewInstance(string title)
        {
            var steamManager        = UiGlobalVariables.SteamManager;
            var workingProcessTitle = $"{steamManager.Login} {title}";

            var wp = ExistWorkingProcesses.FirstOrDefault(w => w.Title == workingProcessTitle);

            if (wp != null)
            {
                if (wp.WorkingAction.IsCompleted)
                {
                    wp.ResetWorkingProcessToDefault();
                }
                else
                {
                    ErrorNotify.CriticalMessageBox(
                        $"{workingProcessTitle} working process is already running! Two identical working processes can not be started at the same time!");
                    return(null);
                }
            }
            else
            {
                wp = new WorkingProcessDataContext(workingProcessTitle, steamManager);
                ExistWorkingProcesses.Add(wp);
            }

            return(wp);
        }
コード例 #3
0
ファイル: DataModel.cs プロジェクト: sifbits/SIFBench
        public StatusType DataModelError(ref SIFHeaderType SIFHeader, DataModelErrorType DataModelError1)
        {
            ErrorNotify inValue = new ErrorNotify();

            inValue.SIFHeader      = SIFHeader;
            inValue.DataModelError = DataModelError1;
            EventStatus retVal = ((IptDataModel)(this)).DataModelError(inValue);

            SIFHeader = retVal.SIFHeader;
            return(retVal.Status);
        }
コード例 #4
0
        private void CancelPendingListings_OnClick(object sender, RoutedEventArgs e)
        {
            if (UiGlobalVariables.SteamManager == null)
            {
                ErrorNotify.CriticalMessageBox("You should login first!");
                return;
            }

            var wp = WorkingProcessProvider.GetNewInstance("Cancel pending listings");

            wp?.StartWorkingProcess(() => { MarketSellUtils.CancelMarketPendingListings(wp.SteamManager, wp); });
        }
コード例 #5
0
        private void Confirm2Fa_OnClick(object sender, RoutedEventArgs e)
        {
            if (UiGlobalVariables.SteamManager == null)
            {
                ErrorNotify.CriticalMessageBox("You should login first!");
                return;
            }

            var wp = WorkingProcessProvider.GetNewInstance("Confirm market 2FA");

            wp?.StartWorkingProcess(
                () => { MarketSellUtils.ConfirmMarketTransactionsWorkingProcess(wp.SteamManager.Guard, wp); });
        }
コード例 #6
0
        private static void RefreshSingleModelPriceRealization(
            SteamItemsModel item,
            MarketSellStrategy sellStrategy = null)
        {
            var task = Task.Run(
                () =>
            {
                if (item == null)
                {
                    return;
                }

                try
                {
                    item.CleanItemPrices();

                    var averagePriceDays = SettingsProvider.GetInstance().AveragePriceDays;

                    var price = UiGlobalVariables.SteamManager.GetCurrentPrice(
                        item.ItemModel.Asset.Appid,
                        item.ItemModel.Description.MarketHashName);

                    Logger.Log.Debug($"Current price for {item.ItemName} is - {price}");

                    item.CurrentPrice = price;

                    price = UiGlobalVariables.SteamManager.GetAveragePrice(
                        item.ItemModel.Asset.Appid,
                        item.ItemModel.Description.MarketHashName,
                        averagePriceDays);

                    Logger.Log.Debug(
                        $"Average price for {averagePriceDays} days for {item.ItemName} is - {price}");

                    item.AveragePrice = price;

                    if (sellStrategy != null)
                    {
                        ((MarketSellModel)item).ProcessSellPrice(sellStrategy);
                    }
                }
                catch (Exception ex)
                {
                    ErrorNotify.CriticalMessageBox("Error on item price update", ex);
                }
            });

            PriceLoadSubTasks.Add(task);
        }
コード例 #7
0
        public static void OpenOnSteamMarket(SteamItemsModel item)
        {
            try
            {
                if (item == null)
                {
                    return;
                }

                Process.Start(
                    "https://" + $"steamcommunity.com/market/listings/{item.ItemModel.Asset.Appid}/"
                    + item.ItemModel.Description.MarketHashName);
            }
            catch (Exception ex)
            {
                ErrorNotify.CriticalMessageBox(ex);
            }
        }
コード例 #8
0
ファイル: DataModel.cs プロジェクト: sifbits/SIFBench
 public virtual EventStatus DataModelError(ErrorNotify request)
 {
     return(DataModelErrorImplementation(request));
 }
コード例 #9
0
ファイル: DataModel.cs プロジェクト: sifbits/SIFBench
 EventStatus IptDataModel.DataModelError(ErrorNotify request)
 {
     return(base.Channel.DataModelError(request));
 }
コード例 #10
0
        private static void ProcessPriceLoadingTaskRealization(
            IEnumerable <SteamItemsModel> itemsList,
            MarketSellStrategy sellStrategy = null)
        {
            if (priceLoadingTask?.IsCompleted == false)
            {
                ErrorNotify.InfoMessageBox("Price loading is already in progress");
                return;
            }

            cancellationTokenSource = new CancellationTokenSource();
            priceLoadingTask        = Task.Run(
                () =>
            {
                try
                {
                    Logger.Log.Debug("Starting price loading task");

                    var items = itemsList.ToList();
                    items.ForEach(i => i.CleanItemPrices());

                    var averagePriceDays = SettingsProvider.GetInstance().AveragePriceDays;

                    var priceLoadingSemaphore = new Semaphore(
                        SettingsProvider.GetInstance().PriceLoadingThreads,
                        SettingsProvider.GetInstance().PriceLoadingThreads);

                    foreach (var item in items)
                    {
                        priceLoadingSemaphore.WaitOne();
                        Logger.Log.Debug($"Processing price for {item.ItemName}");

                        var task = Task.Run(
                            () =>
                        {
                            var price = UiGlobalVariables.SteamManager.GetCurrentPriceWithCache(
                                item.ItemModel.Asset.Appid,
                                item.ItemModel.Description.MarketHashName);

                            Logger.Log.Debug($"Current price for {item.ItemName} is - {price}");
                            item.CurrentPrice = price;

                            if (sellStrategy != null)
                            {
                                ((MarketSellModel)item).ProcessSellPrice(sellStrategy);
                            }

                            priceLoadingSemaphore.Release();
                        },
                            cancellationTokenSource.Token);

                        PriceLoadSubTasks.Add(task);

                        priceLoadingSemaphore.WaitOne();
                        task = Task.Run(
                            () =>
                        {
                            var price = UiGlobalVariables.SteamManager.GetAveragePriceWithCache(
                                item.ItemModel.Asset.Appid,
                                item.ItemModel.Description.MarketHashName,
                                averagePriceDays);

                            Logger.Log.Debug(
                                $"Average price for {averagePriceDays} days for {item.ItemName} is - {price}");

                            item.AveragePrice = price;
                            if (sellStrategy != null)
                            {
                                ((MarketSellModel)item).ProcessSellPrice(sellStrategy);
                            }

                            priceLoadingSemaphore.Release();
                        },
                            cancellationTokenSource.Token);

                        PriceLoadSubTasks.Add(task);

                        if (cancellationTokenSource.Token.IsCancellationRequested)
                        {
                            WaitForPriceLoadingSubTasksEnd();
                            Logger.Log.Debug("Market sell price loading was force stopped");
                            return;
                        }
                    }

                    WaitForPriceLoadingSubTasksEnd();
                    Logger.Log.Debug("Market sell price loading task is finished");
                }
                catch (Exception ex)
                {
                    ErrorNotify.CriticalMessageBox("Error on items price update", ex);
                }
            },
                cancellationTokenSource.Token);
        }
コード例 #11
0
ファイル: DataModel.cs プロジェクト: sifbits/SIFBench
 public virtual EventStatus DataModelError(ErrorNotify request)
 {
     return DataModelErrorImplementation(request);
 }