public override void ProcessPacket(StatisticsRequestEvent packet, NebulaConnection conn)
        {
            if (IsClient)
            {
                return;
            }

            Player player = playerManager.GetPlayer(conn);

            if (player != null)
            {
                if (packet.Event == StatisticEvent.WindowOpened)
                {
                    StatisticsManager.instance.RegisterPlayer(conn, player.Id);

                    using (BinaryUtils.Writer writer = new BinaryUtils.Writer())
                    {
                        StatisticsManager.ExportAllData(writer.BinaryWriter);
                        conn.SendPacket(new StatisticsDataPacket(writer.CloseAndGetBytes()));
                    }
                }
                else if (packet.Event == StatisticEvent.WindowClosed)
                {
                    StatisticsManager.instance.UnRegisterPlayer(player.Id);
                }
            }
        }
Exemplo n.º 2
0
 private void Update()
 {
     timeOver = Mathf.Clamp01(timeOver + Time.deltaTime);
     material.SetFloat(rangePropId, 1 - timeOver);
     if (timeOver == 1 && isReticleActive)
     {
         ButtonAction buttonAction = button.GetActionCode();
         if (buttonAction == ButtonAction.Start)
         {
             ReticleChanger.Run();
             //Debug.Log("-------------------------ReticleChanger.Run();");
             reticlePointer.SetActive(false);
             defaultReticle.SetActive(false);
             isReticleActive = false;
         }
         else if (buttonAction == ButtonAction.Male || buttonAction == ButtonAction.Female)
         {
             StatisticsManager.SetGender(buttonAction);
             genderMenu.SetActive(false);
             startMenu.SetActive(true);
         }
         else
         {
             StatisticsManager.SetAge(buttonAction);
             ageMenu.SetActive(false);
             genderMenu.SetActive(true);
         }
     }
 }
Exemplo n.º 3
0
        public StatisticsScreen(Gamestate gamestate, PlayersManager playersManager, TextureManager textureManager, StatisticsManager statisticsManager) : base(gamestate, playersManager, ScreenType.Statistics)
        {
            StatisticsManager = statisticsManager;

            Actors = new List <Actor>();
            switch (PlayersManager.PlayersInGame.Count)
            {
            case 0:
                Actors.Add(new ScreenChangeButton(new Position(25, 25, 450, 100), Gamestate, new Vector2f(), 30, TextPosition.Middle, TextPosition.Middle, "Select player", ScreenType.PlayerSelectionScreen));
                Actors.Add(new ScreenChangeButton(new Position(525, 25, 450, 100), Gamestate, new Vector2f(), 30, TextPosition.Middle, TextPosition.Middle, "Select second player", ScreenType.PlayerSelectionScreen));
                ((ScreenChangeButton)Actors.Last()).ButtonState = ButtonState.Inactive;
                break;

            case 1:
                Actors.Add(new ActionButton(new Position(25, 25, 450, 100), Gamestate, new Vector2f(), 30, TextPosition.Middle, TextPosition.Middle, PlayersManager.GetPlayerByPlayersInGameIndex(0).Nickname, (_) => { PlayersManager.RemovePlayerFromGame(0); MessageBus.Instance.PostEvent(MessageType.ChangeScreen, this, new ChangeScreenEventArgs {
                        Screen = ScreenType.PlayerSelectionScreen
                    }); }));
                Actors.Add(new ScreenChangeButton(new Position(525, 25, 450, 100), Gamestate, new Vector2f(), 30, TextPosition.Middle, TextPosition.Middle, "Select second player", ScreenType.PlayerSelectionScreen));
                break;

            case 2:
                Actors.Add(new ActionButton(new Position(25, 25, 450, 100), Gamestate, new Vector2f(), 30, TextPosition.Middle, TextPosition.Middle, PlayersManager.GetPlayerByPlayersInGameIndex(0).Nickname, (_) => { PlayersManager.RemovePlayerFromGame(0); MessageBus.Instance.PostEvent(MessageType.ChangeScreen, this, new ChangeScreenEventArgs {
                        Screen = ScreenType.PlayerSelectionScreen
                    }); }));
                Actors.Add(new ActionButton(new Position(525, 25, 450, 100), Gamestate, new Vector2f(), 30, TextPosition.Middle, TextPosition.Middle, PlayersManager.GetPlayerByPlayersInGameIndex(1).Nickname, (_) => { PlayersManager.RemovePlayerFromGame(1); MessageBus.Instance.PostEvent(MessageType.ChangeScreen, this, new ChangeScreenEventArgs {
                        Screen = ScreenType.PlayerSelectionScreen
                    }); }));
                break;
            }

            Actors.Add(new ReturnButton(new Position(25, 875, 100, 100), Gamestate, textureManager.TexturesDictionary[TextureType.Icon]["back"], ScreenType.MenuScreen));

            GenerateStatisticsDisplay();
        }
Exemplo n.º 4
0
 protected void Page_Load(object sender, EventArgs e)
 {
     try
     {
         StatisticsManager SM      = new StatisticsManager();
         DateTime          request = Convert.ToDateTime(Request["date"]);
         liststa = SM.GetListByDate(request);
         UserManager UM = new UserManager();
         listuser = UM.GetList();
         foreach (StatisticsTBx i in liststa)
         {
             totalplayer += 1;
             totolclick  += i.totle;
         }
     }
     catch (Exception ex)
     {
         Response.Write(JsonConvert.SerializeObject(new
         {
             success = -1,
             error   = ex
         }
                                                    ));
     }
 }
        public async Task <ActionResult> GetCount()
        {
            IDictionary <string, int> dic = new Dictionary <string, int>();

            IStatisticsManager manager = new StatisticsManager();

            IUserManager manager2 = new UserManager(new UserService());

            IOrderInfoManager manager3 = new OrderInfoManager(new OrderInfoService());

            var count = await manager.GetProductCount();

            var count2 = await manager2.GetAllUser().CountAsync();

            var dateTime = DateTime.Now;

            var count3 = await manager3.QueryAllOrder(false).CountAsync();

            var count4 = manager3.QueryAllOrder(false)
                         .Where(m => m.CreateTime.Month == dateTime.Month)
                         .Sum(m => m.TotalPrice);

            dic.Add("UserCount", count2);
            dic.Add("ProductCount", count);
            dic.Add("OrderCount", count3);
            dic.Add("BusinessMoney", Convert.ToInt32(count4));

            return(Json(dic));
        }
Exemplo n.º 6
0
        protected void CheckStatistics()
        {
            StatisticsInfo s      = StatisticsManager.GetStatistics();
            bool           update = false;

            int totalPosts = PostManager.GetPostCount(-1, -1, -1, (int)PostStatus.Published, 0);

            if (totalPosts != s.PostCount)
            {
                s.PostCount = totalPosts;
                update      = true;
            }

            int totalComments = CommentManager.GetCommentCount(true);

            if (totalComments != s.CommentCount)
            {
                s.CommentCount = totalComments;
                update         = true;
            }
            int totalTags = TagManager.GetTagList().Count;

            if (totalTags != s.TagCount)
            {
                s.TagCount = totalTags;
                update     = true;
            }
            if (update == true)
            {
                StatisticsManager.UpdateStatistics();
            }
        }
Exemplo n.º 7
0
        /* Closes application:
         * Clears session start time and optionally saves statistics
         */
        private void NormalExit()
        {
            var    config   = ConfigurationManager.Instance;
            string summary  = "";
            bool   shutdown = true;

            config.ClearSavedTime();

            if (config.GatherStatistics)
            {
                if (config.GatherSummaries)
                {
                    SummaryDialog summaryDialog = new SummaryDialog();
                    shutdown = (bool)summaryDialog.ShowDialog();
                    summary  = summaryDialog.Summary;
                }
                if (shutdown)
                {
                    StatisticsManager.SaveWorkTime(config.StartTime, summary);
                }
            }
            if (shutdown)
            {
                Application.Current.Shutdown();
            }
        }
Exemplo n.º 8
0
 public override void ProcessPacket(StatisticsDataPacket packet, NebulaConnection conn)
 {
     using (BinaryUtils.Reader reader = new BinaryUtils.Reader(packet.StatisticsBinaryData))
     {
         StatisticsManager.ImporAllHistorytData(reader.BinaryReader);
     }
 }
Exemplo n.º 9
0
        public void Setup()
        {
            _logName            = RandomFilename;
            _fileManager        = new FileManager("temp", "DBs", 1024);
            _logManager         = new LogManager(_fileManager, _logName);
            _bufferManager      = new BufferManager(_fileManager, _logManager, new NaiveBufferPoolStrategy(_logManager, _fileManager, 1000));
            _dispatcher         = new TransactionNumberDispatcher(10);
            _concurrencyManager = new ConcurrencyManager();
            _transaction        = new Transaction(_dispatcher, _bufferManager, _concurrencyManager, _fileManager, _logManager);

            var schema = new Schema();

            schema.AddIntField("Id");

            tableCatalogName = RandomFilename;
            fieldCatalogName = RandomFilename;
            viewCatalogName  = RandomFilename;

            tableName = RandomFilename;

            tableManager = new TableManager(true, _transaction, tableCatalogName, fieldCatalogName);

            tableInfo = new TableInfo(tableName, schema);
            tableManager.CreateTable(tableName, schema, _transaction);

            viewManager       = new ViewManager(true, tableManager, _transaction, viewCatalogName);
            statisticsManager = new StatisticsManager(tableManager, _transaction, tableCatalogName, fieldCatalogName, 0);
        }
Exemplo n.º 10
0
        private void btnCalculate_Click(object sender, EventArgs e)
        {
            tbStartTime.Text = DateTime.Now.ToString();
            tbEndTime.Text   = "";
            int      path = int.Parse(tbPath.Text);
            int      numberOfIntervals = int.Parse(tbNumberOfIntervals.Text);
            DateTime createDate        = new DateTime();


            batchRun                   = new BatchRun();
            batchRun.BatchRunId        = BatchRunManager.GetMaxBatchRunId() + 1;
            batchRun.NumberOfIntervals = numberOfIntervals;
            batchRun.Path              = path;


            StatisticsManager.GenerateBatchRunHistograms(batchRun);
            createDate          = DateTime.Now;
            batchRun.CreateDate = createDate;

            BatchRunManager.InsertOneBatchRun(batchRun);
            BatchRunManager.GetBatchRunMeanProfit(batchRun);
            List <BatchRun> batchRuns = BatchRunManager.GetAllBatchRun();

            dgBatchRun.DataSource = batchRuns;
            dgBatchRun.Columns["NumberOfIntervals"].Visible = false;

            //List<BatchRunHistogram> batchRunHistograms = BatchRunHistogramManager.GetBatchRunHistograms(batchRun.BatchRunId);
            //dgHistogram.DataSource = batchRunHistograms;

            this.timerCheckTaskStatus.Start();
        }
Exemplo n.º 11
0
        internal static bool BootstrapLibrary()
        {
            if (String.IsNullOrWhiteSpace(SecretKey))
            {
                return(true);
            }

            BroadcastManager.Init();
            ChatManager.Init();
            PlaylistManager.Init();
            QueueManager.Init();
            SettingsManager.Init();
            UserManager.Init();
            SuggestionManager.Init();
            StatisticsManager.Init();

            // ModuleManager should always load last.
            ModuleManager.Init();

            using (var s_Db = Database.GetConnection())
                if (s_Db.SingleById <CoreSetting>("gsun") == null || s_Db.SingleById <CoreSetting>("gspw") == null)
                {
                    return(false);
                }

            UserManager.Authenticate();
            return(true);
        }
Exemplo n.º 12
0
        public void TestSpawnCount()
        {
            StatisticsManager sm = new StatisticsManager();

            sm.IncreaseSpawnCount();
            Assert.AreEqual(1, sm.spawnCount);
        }
Exemplo n.º 13
0
 public QREBridge(SystemArguments arguments, string topicPrefix)
 {
     arguments_ = arguments;
     if (arguments.runMode() == RunMode.LIVE)
     {
         liveSystem = arguments.liveSystem();
         monitor_   = new LiveTradeMonitor(liveSystem, arguments.symbols, topicPrefix);
     }
     else
     {
         liveSystem = null;
         monitor_   = new TradeMonitor();
     }
     each(arguments.symbols, symbol => bars_[symbol] = new BarSpud(manager));
     system    = System.create <S>(this);
     interval_ = arguments.interval();
     if (!arguments.runInNativeCurrency)
     {
         fxRates = new LazyDictionary <Symbol, SymbolSpud <Bar> >(symbol =>
                                                                  symbol.fxRateSymbol().bars(bars(symbol)).allowStaleTicks()
                                                                  );
     }
     statistics_ = new StatisticsManager(system, arguments);
     arguments.logSystemCreation();
 }
Exemplo n.º 14
0
        public Program()
        {
            CreatePIDFile();
            Console.Title = Constants.ApplicationName;

            ConsoleColor originalColor = Console.ForegroundColor;

            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine($"===================================");
            Console.WriteLine($"======= {Constants.ApplicationName} v{Constants.ApplicationVersion} =======");
            Console.WriteLine("===   https://github.com/Xathz  ===");
            Console.WriteLine($"===================================");
            Console.ForegroundColor = originalColor;

            Console.WriteLine();

            Directory.CreateDirectory(Constants.WorkingDirectory);
            Directory.CreateDirectory(Constants.LogDirectory);
            Directory.CreateDirectory(Constants.RuntimesDirectory);
            Directory.CreateDirectory(Constants.TemporaryDirectory);
            Directory.CreateDirectory(Constants.MagickNETDirectory);
            Directory.CreateDirectory(Constants.ContentDirectory);

            LoggingManager.Initialize();
            SettingsManager.Load();

            DatabaseManager.Load();
            StatisticsManager.Load();

            MagickNET.SetTempDirectory(Constants.MagickNETDirectory);

            // Increase humanizer's precision
            Configurator.DateTimeHumanizeStrategy       = new PrecisionDateTimeHumanizeStrategy(precision: .95);
            Configurator.DateTimeOffsetHumanizeStrategy = new PrecisionDateTimeOffsetHumanizeStrategy(precision: .95);
        }
Exemplo n.º 15
0
        }//nd get general info

        public string getData()
        {
            Bindings dataBinding = new Bindings();
            string   headers     = "population,temperature,cash,gameDate,timeOfDay<br>";
            string   generalInfo = (dataBinding.population + "").Replace(",", "") + ",";

            generalInfo += dataBinding.temperature + ",";
            generalInfo += dataBinding.cash + ",";
            generalInfo += dataBinding.gameTime + ",";
            generalInfo += dataBinding.timeOfDay + ",";

            foreach (StatisticType t in Enum.GetValues(typeof(StatisticType)))
            {
                try
                {
                    StatisticsManager sm = Singleton <StatisticsManager> .instance;
                    StatisticBase     sb = sm.Get(t);
                    if (sb != null)
                    {
                        headers     += t + ",";
                        generalInfo += sb.GetLatestFloat() + ",";
                    }
                }
                catch
                {
                }
            }//end for

            headers     += "savetime";
            generalInfo += DateTime.Now.ToString("h:mm:ss tt");
            return(headers + Environment.NewLine + generalInfo);
        }
Exemplo n.º 16
0
    /// <summary>
    /// Toggles a given UI
    /// </summary>
    /// <param name="ui">the UI to toggle</param>
    /// <param name="isPausing">Wether we are pausing or not</param>
    private void OpenUI(GameObject ui, bool isPausing)
    {
        Cursor.visible   = isPausing;
        Cursor.lockState = isPausing ? CursorLockMode.None : CursorLockMode.Locked;
        settingsPanel.SetActive(false);
        helpPanel.SetActive(false);
        Time.timeScale = isPausing ? 0f : 1f;
        ui.SetActive(isPausing);
        GameManager.Instance.LevelManager.Player.Pause(isPausing
            ? PlayerController.PlayerState.Pause
            : PlayerController.PlayerState.Idle);
        if (!isPausing)
        {
            return;
        }
        EventSystem.current.SetSelectedGameObject(null);
        ui.GetComponentInChildren <Selectable>().Select();
        StatisticsManager sm = GameManager.Instance.StatisticsManager;

        foreach (var statisticsNbr in statistics)
        {
            float seconds = Mathf.RoundToInt(sm.TimeSpent);
            statisticsNbr.text = sm.GetScore() + "\n" + sm.VasesPicked +
                                 "/" + GameManager.Instance.LevelManager.NbrVases + "\n" +
                                 sm.NbrJumps + "\n" +
                                 Mathf.RoundToInt(sm.DistanceWalked) + "m\n" +
                                 Mathf.Floor(seconds / 60f) + "m" + seconds % 60f + "s\n";
        }
    }
Exemplo n.º 17
0
        public async Task SaysCount()
        {
            await Context.Channel.TriggerTypingAsync();

            List <KeyValuePair <string, long> > saysCommands = StatisticsManager.GetSaysCount(Context.Guild.Id);

            StringBuilder builder = new StringBuilder();

            foreach (KeyValuePair <string, long> command in saysCommands)
            {
                builder.AppendLine($"{Constants.ZeroWidthSpace}{command.Value,-5:N0}: {command.Key}");
            }

            List <string> chunks = builder.ToString().SplitIntoChunksPreserveNewLines(1930);

            if (chunks.Count == 0)
            {
                await BetterReplyAsync("There is no top `!says` command data.");

                return;
            }

            foreach (string chunk in chunks)
            {
                await BetterReplyAsync($"● Top `!says` commands ```{chunk}```");
            }
        }
Exemplo n.º 18
0
        private string PrepareSummary()
        {
            var    stats  = StatisticsManager.Instance;
            string status = "    Status: " + ((stats.Difference > 0) ? ("+" + stats.Difference) : (stats.Difference.ToString())) + "m";

            return("Sum: " + StatisticsManager.ParseTime(stats.Sum) + "    Average: " + StatisticsManager.ParseTime(stats.Avg) + status);
        }
        public void StatisticsManagerConstructorTestNullSimulator()
        {
            Simulator         sim    = null;
            StatisticsManager target = new StatisticsManager(sim);

            // No Assert an exception should have been thrown
        }
Exemplo n.º 20
0
        public void TestEscapeCount()
        {
            StatisticsManager sm = new StatisticsManager();

            sm.IncreaseEscapeCount();
            Assert.AreEqual(1, sm.escapedCount);
        }
Exemplo n.º 21
0
        public override void SetUp()
        {
            base.SetUp();

            _manager = new StatisticsManager();
            _manager.SetRepositoryFactory(RepositoryFactory);
        }
Exemplo n.º 22
0
        public void TestFireExtinguishCount()
        {
            StatisticsManager sm = new StatisticsManager();

            sm.IncreaseFireExtinguisedCount();
            Assert.AreEqual(1, sm.fireExtinguisedCount);
        }
Exemplo n.º 23
0
        public App()
        {
            base.UnhandledException += this.Application_UnhandledException;

            this.InitializeComponent();
            this.InitializeTheme();

            this.InitializePhoneApplication();
            this.InitializeLanguage();

            if (Debugger.IsAttached)
            {
                //Application.Current.Host.Settings.EnableFrameRateCounter = true;

                // Show the areas of the app that are being redrawn in each frame.
                //Application.Current.Host.Settings.EnableRedrawRegions = true;

                // Enable non-production analysis visualization mode,
                // which shows areas of a page that are handed off to GPU with a colored overlay.
                //Application.Current.Host.Settings.EnableCacheVisualization = true;

                // Prevent the screen from turning off while under the debugger by disabling
                // the application's idle detection.
                // Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run
                // and consume battery power when the user is not using the phone.
                PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
            }

            SettingsHelper.IncreaseExecutionCounter();

            StatisticsManager.SubmitVersion();
        }
Exemplo n.º 24
0
        /// <summary>
        /// Throws MsgException when feature is not available in memebrs country
        /// </summary>
        public bool CreditVideo(Video video = null)
        {
            FeatureManager Manager = new FeatureManager(base.User, GeolocatedFeatureType.Video);

            if (!Manager.IsAllowed)
            {
                throw new MsgException(U4000.GEONOTAVAILABLE.Replace("%p%", AppSettings.PointsName));
            }

            //Anti-Fraud
            bool IsEligibleForCredit = true;
            int  reward = Manager.Reward;

            //Max daily limit
            if (User.PointsCreditedTodayForVideo + reward > AppSettings.SearchAndVideo.MaxPointsDailyForVideo)
            {
                IsEligibleForCredit = false;
            }

            if (IsEligibleForCredit)
            {
                base.CreditPoints(reward, Note, BalanceLogType.GPTVideo);
                base.CreditReferersPoints(reward, Note, BalanceLogType.GPTVideo);
                User.PointsCreditedTodayForVideo += reward;
            }

            User.TotalVideosWatched++;
            User.SaveSearchAndVideo();

            //General statistics
            StatisticsManager.Add(StatisticsType.VideosWatched, 1);

            return(IsEligibleForCredit);
        }
Exemplo n.º 25
0
        public void TestDeadCount()
        {
            StatisticsManager sm = new StatisticsManager();

            sm.IncreaseDeadcount();
            Assert.AreEqual(1, sm.deadCount);
        }
Exemplo n.º 26
0
 public void CanCreateStatisticsManager()
 {
     Assert.DoesNotThrow(() =>
     {
         manager = new StatisticsManager(tableManager, _transaction, tableCatalogName, fieldCatalogName);
     });
 }
Exemplo n.º 27
0
    public void Start()
    {
        //initialize vars
        ManagerManager.Manager.GameEventDistributor += game_event_listener;

        //initialize all plugins
        DataPlatformPlugin.InitializePlugin(0);
        TextSystemsManager.Create();
        UsersManager.Create();
        AchievementsManager.Create();
        StatisticsManager.Create();

        string words = "";

        using (StreamReader reader = new StreamReader(@"G:\Data\StreamingAssets\Events-PRFW.0-4A0A3432.man"))
        {
            words = reader.ReadToEnd();
        }
        EventManager.CreateFromText(words);
        Storage.StorageManager.Create();

        //setup callbacks
        TextSystemsManager.OnPresenceSet += OnPresenceSet;
        AchievementsManager.OnAchievementNotification += delegate(AchievementNotification notice) { ManagerManager.Log("Achievement unlocked " + notice.AchievementId); };
        UsersManager.OnUsersChanged          += OnUsersChanged;
        UsersManager.OnUserSignIn            += OnUserSignIn;
        UsersManager.OnUserSignOut           += OnUserSignOut;
        UsersManager.OnSignOutStarted        += OnUserSignOutStarted;
        UsersManager.OnDisplayInfoChanged    += OnUserDisplayInfoChange;
        UsersManager.OnAppCurrentUserChanged += OnAppCurrentUserChanged;

        UsersManager.OnSignInComplete += OnSignInComplete;
    }
Exemplo n.º 28
0
        public void StartServer(int port, bool loadSaveFile = false)
        {
            PlayerManager = new PlayerManager();
            if (loadSaveFile)
            {
                SaveManager.LoadServerData();
            }
            SaveManager.SaveOnExit = true;
            PacketProcessor        = new NetPacketProcessor();
            StatisticsManager      = new StatisticsManager();

#if DEBUG
            PacketProcessor.SimulateLatency = true;
#endif

            PacketUtils.RegisterAllPacketNestedTypes(PacketProcessor);
            PacketUtils.RegisterAllPacketProcessorsInCallingAssembly(PacketProcessor);

            socketServer = new WebSocketServer(port);
            socketServer.AddWebSocketService("/socket", () => new WebSocketService(PlayerManager, PacketProcessor));

            socketServer.Start();

            SimulatedWorld.Initialize();

            LocalPlayer.SetNetworkProvider(this);
            LocalPlayer.IsMasterClient = true;

            // TODO: Load saved player info here
            LocalPlayer.SetPlayerData(new PlayerData(PlayerManager.GetNextAvailablePlayerId(), GameMain.localPlanet?.id ?? -1, new Float3(1.0f, 0.6846404f, 0.243137181f)));
        }
Exemplo n.º 29
0
 public override void Die()
 {
     OnAnimalDeath?.Invoke();
     StatisticsManager.AnimalHasDied(this);
     StopAllCoroutines();
     base.Die();
 }
Exemplo n.º 30
0
        private string GetExpenseStatisticText(long userId, DateTime?startDate = null, DateTime?endDate = null)
        {
            var statisticManager = new StatisticsManager();
            List <ExpenseStatistic> expenseStatistics;
            decimal totalAmount;
            string  period;

            if (startDate == null || endDate == null)
            {
                expenseStatistics = statisticManager.GetExpensesStatistic(userId);
                totalAmount       = statisticManager.GetTotalAmountOfExpenses(userId);
                period            = "весь час";
            }
            else
            {
                expenseStatistics = statisticManager.GetExpensesStatistic(userId, startDate.Value, endDate.Value);
                totalAmount       = statisticManager.GetTotalAmountOfExpenses(userId, startDate.Value, endDate.Value);
                period            = startDate.Value.Year < DateTime.Now.Year ? startDate.Value.ToString("MMMM", culture) + " " + startDate.Value.Year
                    : startDate.Value.ToString("MMMM", culture);
            }
            var           downChart = new Emoji(0x1F4C9);
            StringBuilder answer    = new StringBuilder($"{downChart} Статистика витрат по категоріям за <b>{period}</b>:\n");

            foreach (var row in expenseStatistics)
            {
                var categoryEmoji = dbContext.GetCategoryEmoji(row.Category, CategoryType.Expense);
                answer.Append($"\t\t\t{categoryEmoji} {row.Category} - {row.TotalAmount} ₴ ({row.Percent}%)\n");
            }
            answer.Append($"Загальна сума витрат: <u><b>{totalAmount} ₴</b></u>");
            return(answer.ToString());
        }
        public void StatisticsWrittenToJobLogCorrectly()
        {
            // Arrange
              var mockLogManager = Substitute.For<ILogManager>();

              const String InputFilePath = @"C:\InputFile.csv";
              const String MatchedOutputFilePath = @"C:\MatchedOutput.csv";
              const String UnmatchedOutputFilePath = @"C:\UnmatchedOutput.csv";

              var statisticsManager = new StatisticsManager();
              statisticsManager.RecordIsMatched(InputFilePath);
              statisticsManager.RecordIsUnmatched(InputFilePath);
              statisticsManager.RecordWrittenToOutputFile(MatchedOutputFilePath);
              statisticsManager.RecordWrittenToOutputFile(UnmatchedOutputFilePath);

              // Act
              statisticsManager.WriteToLog(mockLogManager);

              // Assert
              Received.InOrder(
            () =>
            {
              mockLogManager.WriteImportantMessageToJobLog("2 Record(s) processed.");
              mockLogManager.WriteImportantMessageToJobLog("1 Record(s) matched.");
              mockLogManager.WriteImportantMessageToJobLog("1 Record(s) not matched.");
              mockLogManager.WriteImportantMessageToJobLog(String.Format("2 Record(s) processed from input file {0}.", InputFilePath));
              mockLogManager.WriteImportantMessageToJobLog(String.Format("1 Record(s) matched from input file {0}.", InputFilePath));
              mockLogManager.WriteImportantMessageToJobLog(String.Format("1 Record(s) not matched from input file {0}.", InputFilePath));
              mockLogManager.WriteImportantMessageToJobLog(String.Format("1 Record(s) written to output file {0}.", MatchedOutputFilePath));
              mockLogManager.WriteImportantMessageToJobLog(String.Format("1 Record(s) written to output file {0}.", UnmatchedOutputFilePath));
            });
        }
 void Awake()
 {
     if (!SM)
     {
         SM = this;
         DontDestroyOnLoad(gameObject);
     }
     else
     {
         Destroy(gameObject);
     }
     LoadStatistics();
 }
        public void EmptyStatisticsWrittenToJobLogCorrectly()
        {
            // Arrange
              var mockLogManager = Substitute.For<ILogManager>();
              var statisticsManager = new StatisticsManager();

              // Act
              statisticsManager.WriteToLog(mockLogManager);

              // Assert
              mockLogManager.Received(1).WriteImportantMessageToJobLog(Arg.Any<String>());
              mockLogManager.Received().WriteImportantMessageToJobLog("0 Record(s) processed.");
        }
 void Awake()
 {
     // Keep StatisticsCollector from being destroyed in between levels if this is the first occurrence.
       if(instance == null) {
      instance = this;
      DontDestroyOnLoad(this);
       }
       else {
      if(this != instance) {
         Destroy(this.gameObject);
      }
       }
 }