Example #1
0
        private void HandleTimerTick(object sender, EventArgs e)
        {
            dataFile.load();
            string   username   = System.Environment.UserName.ToLower();
            DateTime today      = DateTime.Now.Date;
            var      tickRecord = dataFile.findUserRecord(username, today);
            var      configUser = configuration.Users[username] as TickUserElement;

            if (configUser != null && tickRecord != null)
            {
                int dayOfWeek = (int)today.DayOfWeek;
                if (dayOfWeek == 0)
                {
                    dayOfWeek = 7;
                }
                allowedMinutes = configUser[dayOfWeek];
                if (configUser.Exceptions != null && configUser.Exceptions[today] != null)
                {
                    allowedMinutes = configUser.Exceptions[today].Minutes;
                }
                passedMinutes = tickRecord.Minutes;

                // Warnings
                int remainingMinutes = allowedMinutes.Value - passedMinutes.Value;
                if (WARNING_MINUTES.Contains(remainingMinutes))
                {
                    MessageBox.Show(String.Format("Es sind nur {0} Minuten geblieben!", remainingMinutes),
                                    "Zeitbegrenzung", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else if (remainingMinutes == 1)
                {
                    MessageBox.Show(String.Format("Dir bleibt nur eine Minute!", remainingMinutes),
                                    "Zeitbegrenzung", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                passedMinutes  = null;
                allowedMinutes = null;
            }
        }
Example #2
0
        public void tick(object stateObject)
        {
            dataFile.load();
            List <string>     loggedInUsers = GetLoggedInUsers();
            DateTime          today         = DateTime.Now.Date;
            TickConfiguration configuration = TickConfiguration.Instance;

            foreach (var user in loggedInUsers)
            {
                var configUser = configuration.Users[user] as TickUserElement;
                if (configUser != null)
                {
                    int dayOfWeek = (int)today.DayOfWeek;
                    if (dayOfWeek == 0)
                    {
                        dayOfWeek = 7;
                    }
                    int maxMinutes = configUser[dayOfWeek];
                    if (configUser.Exceptions != null)
                    {
                        if (configUser.Exceptions[today] != null)
                        {
                            maxMinutes = configUser.Exceptions[today].Minutes;
                        }
                    }
                    var userRecord = dataFile.findUserRecord(user, today);
                    if (userRecord == null)
                    {
                        userRecord = dataFile.createTickRecord(user, today);
                    }
                    userRecord.Minutes += interval;
                    Console.WriteLine(String.Format("Benutzer {0}: {1} Minuten von {2} sind vorbei", user, userRecord.Minutes, maxMinutes));
                    if (userRecord.Minutes > maxMinutes)
                    {
                        runShutdownCommand();
                    }
                }
            }
            dataFile.save();
        }