Esempio n. 1
0
        /// <summary>
        /// Add / edit all values from today statistic
        /// </summary>
        /// <param name="count"></param>
        public void AddViewerCountToDatabase(int count)
        {
            using (var context = new Storage.DatabaseContext()) {
                var today = context.ViewerStatistics
                            .SingleOrDefault(d => d.Date.Date == DateTime.Now.Date);

                // check if created
                if (today == null)
                {
                    CreateOrResetTodaysViewerCountStatistic();
                    AddViewerCountToDatabase(count);
                    return;
                }
                else
                {
                    if (count < today.Min)
                    {
                        today.Min = count;
                    }

                    if (count > today.Max)
                    {
                        today.Max = count;
                    }

                    today.Count++;
                    today.AddedValue += count;
                    today.Average     = today.AddedValue / today.Count;

                    context.SaveChanges();
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Create or reset todays statistic
        /// </summary>
        private void CreateOrResetTodaysViewerCountStatistic()
        {
            using (var context = new Storage.DatabaseContext()) {
                var today = context.ViewerStatistics
                            .SingleOrDefault(d => d.Date.Date == DateTime.Now.Date);

                if (today != null)
                {
                    today.Average    = 0;
                    today.Max        = 0;
                    today.Min        = 0;
                    today.AddedValue = 0;
                    today.Count      = 0;
                }
                else
                {
                    today = new Storage.ViewerStatistics {
                        Average    = 0,
                        Max        = 0,
                        Min        = 0,
                        AddedValue = 0,
                        Count      = 0,
                        Date       = DateTime.Now
                    };
                    context.ViewerStatistics.Add(today);
                }

                context.SaveChanges();
            }
        }
Esempio n. 3
0
            /// <summary>
            /// Remove ActiveUser Entry
            /// and add TimeWatched values
            /// </summary>
            /// <param name="sender">todo: describe sender parameter on RemoveUserFromActiveUsers</param>
            /// <param name="e">todo: describe e parameter on RemoveUserFromActiveUsers</param>
            public async void RemoveUserFromActiveUsers(object sender, OnUserLeftArgs e)
            {
                using (var context = new Storage.DatabaseContext()) {
                    //var twitchID = TwitchApi.Users.GetUser(e.Username);
                    var twitchID = await AivaClient.Instance.TwitchApi.Users.v5.GetUserByNameAsync(e.Username).ConfigureAwait(false);

                    if (twitchID?.Total > 0)
                    {
                        foreach (var userMatch in twitchID.Matches)
                        {
                            if (String.Compare(userMatch.Name, e.Username, true) != 0)
                            {
                                continue;
                            }

                            var user = context.Users.SingleOrDefault(
                                u => u.UsersId == Convert.ToInt32(userMatch.Id));

                            if (user != null)
                            {
                                var duration = DateTime.Now.Subtract(user.ActiveUsers.JoinedTime);

                                user.TimeWatched.Time += duration.Ticks;

                                context.ActiveUsers.Remove(user.ActiveUsers);

                                context.SaveChanges();
                            }
                        }
                    }
                }
            }
Esempio n. 4
0
        /// <summary>
        /// Add a command
        /// </summary>
        /// <param name="creater"></param>
        /// <param name="commandName"></param>
        /// <param name="text"></param>
        internal bool AddCommand(string creater, string commandName, string text)
        {
            // create command object
            var command = new Storage.Commands {
                Stack       = 0,
                CreatedAt   = DateTime.Now,
                CreatedFrom = creater,
                Name        = commandName,
                Text        = text
            };

            using (var context = new Storage.DatabaseContext()) {
                // check if there is no command with the same name
                var dbCommand = context.Commands.SingleOrDefault(
                    c => string.Compare(c.Name, commandName, true) == 0);

                if (dbCommand == null)
                {
                    context.Commands.Add(command);
                    return(context.SaveChanges() == 0);
                }
            }

            return(false);
        }
Esempio n. 5
0
        /// <summary>
        /// Add raw Message to Database
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void AddReceivedMessageToDatabase(object sender, OnMessageReceivedArgs e)
        {
            using (var context = new Storage.DatabaseContext()) {
                context.Chat.Add(new Storage.Chat {
                    UsersId     = Convert.ToInt32(e.ChatMessage.UserId),
                    ChatMessage = e.ChatMessage.Message,
                    Timestamp   = DateTime.Now,
                });

                context.SaveChanges();
            }
        }
Esempio n. 6
0
            /// <summary>
            /// Add currency to active viewers
            /// </summary>
            public void AddCurrencyActiveViewer()
            {
                using (var context = new Storage.DatabaseContext()) {
                    var activeUsers = context.ActiveUsers.ToList();

                    foreach (var user in activeUsers)
                    {
                        user.Users.Currency.Value += Convert.ToInt64(Config.Config.Instance.Storage.Currency.CurrencyToAddFrequently);
                    }

                    context.SaveChanges();
                }
            }
Esempio n. 7
0
        /// <summary>
        /// Add message to database
        /// </summary>
        /// <param name="twitchID"></param>
        /// <param name="message"></param>
        /// <param name="timeStamp"></param>
        public void AddMessageToDatabase(int twitchID, string message, DateTime timeStamp)
        {
            using (var context = new Storage.DatabaseContext()) {
                context.Chat.Add(
                    new Storage.Chat {
                    UsersId     = twitchID,
                    ChatMessage = message,
                    Timestamp   = timeStamp,
                });

                context.SaveChanges();
            }
        }
Esempio n. 8
0
        /// <summary>
        /// Increate the stack from the command
        /// </summary>
        /// <param name="commandName"></param>
        public void IncreaseCommandCount(string commandName)
        {
            using (var context = new Storage.DatabaseContext()) {
                var command = context.Commands.SingleOrDefault(c => String.Compare(commandName, c.Name, true) == 0);

                if (command != null)
                {
                    command.Stack++;

                    context.SaveChanges();
                }
            }
        }
Esempio n. 9
0
        /// <summary>
        /// Remove a command
        /// </summary>
        /// <param name="commandName"></param>
        internal void RemoveCommand(string commandName)
        {
            using (var context = new Storage.DatabaseContext()) {
                var command = context.Commands.SingleOrDefault(
                    c => string.Compare(c.Name, commandName, true) == 0);

                if (command != null)
                {
                    context.Commands.Remove(command);
                    context.SaveChanges();
                }
            }
        }
Esempio n. 10
0
        /// <summary>
        /// Edit a command
        /// </summary>
        /// <param name="commandName"></param>
        /// <param name="text"></param>
        internal bool EditCommand(string commandName, string text)
        {
            using (var context = new Storage.DatabaseContext()) {
                var command = context.Commands.SingleOrDefault(
                    c => string.Compare(c.Name, commandName, true) == 0);

                if (command != null)
                {
                    command.Text = text;
                    return(context.SaveChanges() == 0);
                }
            }

            return(false);
        }
Esempio n. 11
0
            /// <summary>
            /// Remove Currency from User
            /// </summary>
            /// <param name="twitchID"></param>
            /// <param name="value"></param>
            public bool Remove(int twitchID, int value)
            {
                using (var context = new Storage.DatabaseContext()) {
                    var user = context.Users
                               .Include(c => c.Currency)
                               .SingleOrDefault(u => u.UsersId == twitchID);

                    if (user != null)
                    {
                        user.Currency.Value -= value;

                        context.SaveChanges();

                        return(true);
                    }
                }

                return(false);
            }
Esempio n. 12
0
            /// <summary>
            /// Transfer currency from a user to a user
            /// </summary>
            /// <param name="userid1"></param>
            /// <param name="userid2"></param>
            /// <param name="value"></param>
            internal bool Transfer(int userid1, int userid2, int value)
            {
                using (var context = new Storage.DatabaseContext()) {
                    var user1 = context.Users.SingleOrDefault(u => u.UsersId == userid1);
                    var user2 = context.Users.SingleOrDefault(u => u.UsersId == userid2);

                    if (user1 != null && user2 != null)
                    {
                        if (user1.Currency.Value >= value)
                        {
                            user1.Currency.Value -= value;
                            user2.Currency.Value += value;

                            context.SaveChanges();

                            return(true);
                        }
                    }
                }

                return(false);
            }
Esempio n. 13
0
            /// <summary>
            /// Add or Update User in Database
            /// </summary>
            /// <param name="User">todo: describe User parameter on AddUser</param>
            public void AddUserToDatabase(User User)
            {
                if (User != null)
                {
                    using (var context = new Storage.DatabaseContext()) {
                        var databaseUser = context.Users
                                           .Include(au => au.ActiveUsers)
                                           .SingleOrDefault(u => u.UsersId == Convert.ToInt32(User.Id));

                        // Update User
                        if (databaseUser != null)
                        {
                            databaseUser.Bio         = User.Bio;
                            databaseUser.CreatedAt   = User.CreatedAt;
                            databaseUser.DisplayName = User.DisplayName;
                            databaseUser.Logo        = User.Logo;
                            databaseUser.Name        = User.Name;
                            databaseUser.Type        = User.Type;
                            databaseUser.UpdatedAt   = User.UpdatedAt;

                            // Active users
                            if (databaseUser.ActiveUsers == null)
                            {
                                databaseUser.ActiveUsers = new Storage.ActiveUsers {
                                    UsersId    = databaseUser.UsersId,
                                    JoinedTime = DateTime.Now,
                                    Users      = databaseUser,
                                };
                            }
                        }
                        // Create User
                        else
                        {
                            var newUser = new Storage.Users {
                                UsersId     = Convert.ToInt32(User.Id),
                                Bio         = User.Bio,
                                CreatedAt   = User.CreatedAt,
                                DisplayName = User.DisplayName,
                                Logo        = User.Logo,
                                Name        = User.Name,
                                Type        = User.Type,
                                UpdatedAt   = User.UpdatedAt,
                                Currency    = new Storage.Currency {
                                    UsersId = Convert.ToInt32(User.Id),
                                    Value   = 0,
                                },
                                ActiveUsers = new Storage.ActiveUsers {
                                    UsersId    = Convert.ToInt32(User.Id),
                                    JoinedTime = DateTime.Now,
                                },
                                TimeWatched = new Storage.TimeWatched {
                                    UsersId = Convert.ToInt32(User.Id),
                                    Time    = 0,
                                }
                            };

                            context.Users.Add(newUser);
                        }

                        context.SaveChanges();
                    }
                }
            }