Exemplo n.º 1
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();
            }
        }
Exemplo n.º 2
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);
        }
Exemplo n.º 3
0
 /// <summary>
 /// Get statistics for the last days
 /// </summary>
 /// <param name="days"></param>
 /// <returns></returns>
 public List <Storage.ViewerStatistics> GetLastDays(int days = 20)
 {
     using (var context = new Storage.DatabaseContext()) {
         var toDate = DateTime.Now.AddDays(-days);
         return(context.ViewerStatistics.Where(d => d.Date.Date <= toDate.Date).ToList());
     }
 }
Exemplo n.º 4
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();
                }
            }
        }
Exemplo n.º 5
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();
                            }
                        }
                    }
                }
            }
Exemplo n.º 6
0
        /// <summary>
        /// Get the last message from user if found
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public string GetLastMessageFromUser(string userId)
        {
            using (var context = new Storage.DatabaseContext()) {
                var lastMessage = context.Chat.LastOrDefault(
                    l => Convert.ToInt32(userId) == l.UsersId);

                return
                    (lastMessage != null
                    ? lastMessage.ChatMessage
                    : string.Empty);
            }
        }
Exemplo n.º 7
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();
            }
        }
Exemplo n.º 8
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();
            }
        }
Exemplo n.º 9
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();
                }
            }
Exemplo n.º 10
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();
                }
            }
        }
Exemplo n.º 11
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();
                }
            }
        }
Exemplo n.º 12
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);
        }
Exemplo n.º 13
0
        /// <summary>
        /// Get Currency from a user
        /// </summary>
        /// <param name="twitchID">todo: describe twitchID parameter on GetCurrencyFromUser</param>
        /// <returns></returns>
        public long?GetCurrency(int twitchID)
        {
            using (var context = new Storage.DatabaseContext()) {
                var user = context.Users
                           .Include(u => u.Currency)
                           .SingleOrDefault(u => u.UsersId == twitchID);

                if (user != null)
                {
                    return(user.Currency.Value);
                }
            }

            return(null);
        }
Exemplo n.º 14
0
            /// <summary>
            /// Add list of Users Currency
            /// </summary>
            /// <param name="UserList">todo: describe UserList parameter on AddCurrencyToUserList</param>
            public async void Add(List <Tuple <string, int, int> > UserList)
            {
                using (var context = new Storage.DatabaseContext()) {
                    foreach (var user in UserList)
                    {
                        var userDb = context.Users.SingleOrDefault(u => u.UsersId == user.Item2);

                        if (userDb != null)
                        {
                            userDb.Currency.Value += user.Item3;
                        }
                    }

                    await context.SaveChangesAsync().ConfigureAwait(false);
                }
            }
Exemplo n.º 15
0
        /// <summary>
        /// Checks if a user has enough currency
        /// </summary>
        /// <param name="twitchID"></param>
        /// <param name="currencyToCheck"></param>
        /// <returns></returns>
        public bool HasUserEnoughCurrency(int twitchID, int currencyToCheck)
        {
            using (var context = new Storage.DatabaseContext()) {
                var user = context.Users.Include(c => c.Currency).SingleOrDefault(u => twitchID == u.UsersId);

                if (user != null)
                {
                    if (user?.Currency?.Value >= currencyToCheck)
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Exemplo n.º 16
0
        /// <summary>
        /// Add User to Table Currency
        /// </summary>
        /// <param name="twitchID"></param>
        public async void AddUserToCurrencyTable(int twitchID)
        {
            using (var context = new Storage.DatabaseContext()) {
                var currencyEntry = context.Currency.SingleOrDefault(c => c.UsersId == twitchID);

                if (currencyEntry == null)
                {
                    context.Currency.Add(
                        new Storage.Currency {
                        UsersId = twitchID,
                        Value   = 0
                    });

                    await context.SaveChangesAsync().ConfigureAwait(false);
                }
            }
        }
Exemplo n.º 17
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);
            }
Exemplo n.º 18
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);
            }
Exemplo n.º 19
0
 /// <summary>
 /// Check if the user is in thedDatabase
 /// </summary>
 /// <param name="username"></param>
 /// <returns></returns>
 public bool IsUserInDatabaseUsername(string username)
 {
     using (var context = new Storage.DatabaseContext()) {
         return(context.Users.Any(u => String.Compare(u.Name, username, true) == 0));
     }
 }
Exemplo n.º 20
0
 /// <summary>
 /// Get todays statistic
 /// </summary>
 /// <returns></returns>
 public Storage.ViewerStatistics GetToday()
 {
     using (var context = new Storage.DatabaseContext()) {
         return(context.ViewerStatistics.SingleOrDefault(d => d.Date.Date == DateTime.Now.Date));
     }
 }
Exemplo n.º 21
0
 /// <summary>
 /// Check if the user is in the database
 /// </summary>
 /// <param name="userid"></param>
 /// <returns></returns>
 public bool IsUserInDatabaseUserId(int userid)
 {
     using (var context = new Storage.DatabaseContext()) {
         return(context.Users.Any(u => u.UsersId == userid));
     }
 }
Exemplo n.º 22
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();
                    }
                }
            }