/// <summary>
 /// This is a helper function to give proper dates given the UsagePeriod
 /// </summary>
 /// <param name="period">The period we care about</param>
 /// <param name="startDate">The startDate, to be filled in by this function</param>
 /// <param name="endDate">The endDate, to be filled in by this function</param>
 private static void GetPeriodDates(UsagePeriod period, ref DateTime startDate, ref DateTime endDate)
 {
     switch (period)
     {
         case UsagePeriod.Today:
             {
                 startDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0);
                 endDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59);
                 break;
             }
         case UsagePeriod.Week:
             {
                 startDate = DateTime.Now.AddDays(-((int)DateTime.Now.DayOfWeek));
                 startDate = new DateTime(startDate.Year, startDate.Month, startDate.Day, 0, 0, 0);
                 endDate = DateTime.Now.AddDays(((int)DayOfWeek.Saturday) - ((int)DateTime.Now.DayOfWeek));
                 endDate = DateTime.Now.AddDays(1);
                 endDate = new DateTime(endDate.Year, endDate.Month, endDate.Day, 23, 59, 59);
                 break;
             }
         case UsagePeriod.Total:
             {
                 startDate = new DateTime(2005, 5, 24);
                 endDate = DateTime.Now.AddDays(1);
                 break;
             }
     }
 }
Example #2
0
        /// <summary>
        /// This is a helper function to give proper dates given the UsagePeriod
        /// </summary>
        /// <param name="period">The period we care about</param>
        /// <param name="startDate">The startDate, to be filled in by this function</param>
        /// <param name="endDate">The endDate, to be filled in by this function</param>
        private static void GetPeriodDates(UsagePeriod period, ref DateTime startDate, ref DateTime endDate)
        {
            switch (period)
            {
            case UsagePeriod.Today:
            {
                startDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0);
                endDate   = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59);
                break;
            }

            case UsagePeriod.Week:
            {
                startDate = DateTime.Now.AddDays(-((int)DateTime.Now.DayOfWeek));
                startDate = new DateTime(startDate.Year, startDate.Month, startDate.Day, 0, 0, 0);
                endDate   = DateTime.Now.AddDays(((int)DayOfWeek.Saturday) - ((int)DateTime.Now.DayOfWeek));
                endDate   = DateTime.Now.AddDays(1);
                endDate   = new DateTime(endDate.Year, endDate.Month, endDate.Day, 23, 59, 59);
                break;
            }

            case UsagePeriod.Total:
            {
                startDate = new DateTime(2005, 5, 24);
                endDate   = DateTime.Now.AddDays(1);
                break;
            }
            }
        }
        public UserUsageSummary GetUserUsage(string alias, UsagePeriod period)
        {
            var startDate = DateTime.MinValue;
            var endDate   = DateTime.MinValue;

            GetPeriodDates(period, ref startDate, ref endDate);

            // TODO get query working with null data
//            var minutes = _context.Usages
//                .Where(x => x.Alias == alias && (x.TickTime >= startDate && x.TickTime <= endDate))
//                .Sum(x => x.UsageMinutes);

            var minutes = 0;

            var summary = new UserUsageSummary();

            summary.Alias      = alias;
            summary.Period     = period;
            summary.TotalHours = minutes / 60;

            var span = endDate - startDate;

            if (span.Days == 0)
            {
                span = new TimeSpan(1, 0, 0, 0);
            }
            summary.AverageHours = (float)summary.TotalHours / span.Days;

            return(summary);
        }
        public UserUsageSummary GetUserUsage(string alias, UsagePeriod period)
        {
            var startDate = DateTime.MinValue;
            var endDate = DateTime.MinValue;

            GetPeriodDates(period, ref startDate, ref endDate);

            // TODO get query working with null data
            //            var minutes = _context.Usages
            //                .Where(x => x.Alias == alias && (x.TickTime >= startDate && x.TickTime <= endDate))
            //                .Sum(x => x.UsageMinutes);

            var minutes = 0;

            var summary = new UserUsageSummary();

            summary.Alias = alias;
            summary.Period = period;
            summary.TotalHours = minutes/60;

            var span = endDate - startDate;
            if (span.Days == 0)
            {
                span = new TimeSpan(1, 0, 0, 0);
            }
            summary.AverageHours = (float)summary.TotalHours/span.Days;

            return summary;
        }
Example #5
0
        public static List <TeamUsageSummary> GetTeamSummaries(UsagePeriod period)
        {
            SqlConnection connection = null;
            SqlCommand    command    = null;
            SqlDataReader reader     = null;

            try
            {
                string cacheKey = "GetTeamSummaries(" + period + ")";
                if (HttpContext.Current.Cache[cacheKey] != null)
                {
                    return((List <TeamUsageSummary>)HttpContext.Current.Cache[cacheKey]);
                }
                else
                {
                    List <TeamUsageSummary> teamList = new List <TeamUsageSummary>();

                    connection = new SqlConnection(ServerSettings.SpeciesDsn);
                    connection.Open();

                    command             = new SqlCommand();
                    command.Connection  = connection;
                    command.CommandType = CommandType.Text;
                    command.CommandText = "SELECT Alias FROM Pum ORDER BY Alias";

                    reader = command.ExecuteReader();

                    while (reader.Read())
                    {
                        string pumAlias = Convert.ToString(reader["Alias"]);
                        teamList.Add(GetTeamUsage(pumAlias, period));
                    }

                    HttpContext.Current.Cache.Add(cacheKey, teamList, null, DateTime.Now.AddMinutes(59), TimeSpan.Zero,
                                                  CacheItemPriority.Normal, null);

                    return(teamList);
                }
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                    reader = null;
                }
                if (command != null)
                {
                    command.Dispose();
                    command = null;
                }
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
            }
        }
Example #6
0
        public static TeamUsageSummary GetTeamUsageForUser(string alias, UsagePeriod period)
        {
            SqlConnection connection = null;
            SqlCommand    command    = null;
            SqlDataReader reader     = null;

            try
            {
                connection = new SqlConnection(ServerSettings.SpeciesDsn);
                connection.Open();

                command             = new SqlCommand();
                command.Connection  = connection;
                command.CommandType = CommandType.Text;
                command.CommandText =
                    "SELECT P.Alias FROM Pum P, PumTeam PT WHERE P.Id = PT.PumId AND PT.Alias = @Alias";
                command.Parameters.AddWithValue("@Alias", alias);

                reader = command.ExecuteReader();

                if (reader.Read())
                {
                    return(GetTeamUsage(Convert.ToString(reader["Alias"]), period));
                }
                else
                {
                    return(null);
                }
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                    reader = null;
                }
                if (command != null)
                {
                    command.Dispose();
                    command = null;
                }
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
            }
        }
        public static TeamUsageSummary GetTeamUsage(string pumAlias, UsagePeriod period)
        {
            SqlConnection connection = null;
            SqlCommand command = null;
            SqlDataReader reader = null;

            try
            {
                TeamUsageSummary teamSummary = new TeamUsageSummary();
                teamSummary.PumAlias = pumAlias;
                teamSummary.Period = period;

                connection = new SqlConnection(ServerSettings.SpeciesDsn);
                connection.Open();

                command = new SqlCommand();
                command.Connection = connection;
                command.CommandType = CommandType.Text;
                command.CommandText = "SELECT	PT.Alias, (SELECT 	SUM(U.UsageMinutes) FROM Usage U WHERE U.Alias = PT.Alias AND U.TickTime >= @StartDate AND U.TickTime <= @EndDate) AS UsageMinutes FROM Pum P, PumTeam PT WHERE 	PT.PumId = P.Id AND	P.Alias = @Alias ORDER BY UsageMinutes DESC";

                command.Parameters.AddWithValue("@Alias", pumAlias);

                DateTime startDate = DateTime.MinValue;
                DateTime endDate = DateTime.MinValue;

                GetPeriodDates(period, ref startDate, ref endDate);

                command.Parameters.AddWithValue("@StartDate", startDate.ToString());
                command.Parameters.AddWithValue("@EndDate", endDate.ToString());

                reader = command.ExecuteReader();

                while (reader.Read())
                {
                    if (reader["UsageMinutes"] is DBNull)
                    {
                        teamSummary.OutCount++;
                    }
                    else
                    {
                        teamSummary.TotalHours += Convert.ToInt32(reader["UsageMinutes"]);
                        teamSummary.InCount++;
                    }
                    teamSummary.TeamCount++;
                }

                teamSummary.TotalHours /= 60;
                teamSummary.AverageHours = (float)teamSummary.TotalHours / (float)teamSummary.TeamCount;
                teamSummary.ParticipationRate = (int)(100.0f * ((float)teamSummary.InCount / (float)teamSummary.TeamCount));

                return teamSummary;

            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                    reader = null;
                }
                if (command != null)
                {
                    command.Dispose();
                    command = null;
                }
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
            }
        }
        public static List<TeamUsageSummary> GetTeamSummaries(UsagePeriod period)
        {
            SqlConnection connection = null;
            SqlCommand command = null;
            SqlDataReader reader = null;

            try
            {
                string cacheKey = "GetTeamSummaries(" + period.ToString() + ")";
                if (HttpContext.Current.Cache[cacheKey] != null)
                {
                    return (List<TeamUsageSummary>)HttpContext.Current.Cache[cacheKey];
                }
                else
                {
                    List<TeamUsageSummary> teamList = new List<TeamUsageSummary>();

                    connection = new SqlConnection(ServerSettings.SpeciesDsn);
                    connection.Open();

                    command = new SqlCommand();
                    command.Connection = connection;
                    command.CommandType = CommandType.Text;
                    command.CommandText = "SELECT Alias FROM Pum ORDER BY Alias";

                    reader = command.ExecuteReader();

                    while (reader.Read())
                    {
                        string pumAlias = Convert.ToString(reader["Alias"]);
                        teamList.Add(UsageReporting.GetTeamUsage(pumAlias, period));
                    }

                    HttpContext.Current.Cache.Add(cacheKey, teamList, null, DateTime.Now.AddMinutes(59), TimeSpan.Zero, CacheItemPriority.Normal, null);

                    return teamList;
                }
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                    reader = null;
                }
                if (command != null)
                {
                    command.Dispose();
                    command = null;
                }
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
            }
        }
        /// <summary>
        /// Returns an array of UserUsageSummary items for a team
        /// </summary>
        /// <param name="pumAlias">The Pum for the team</param>
        /// <param name="period">Which period we care about</param>
        /// <returns></returns>
        public static List<UserUsageSummary> GetTeamDetails(string pumAlias, UsagePeriod period)
        {
            SqlConnection connection = null;
            SqlCommand command = null;
            SqlDataReader reader = null;

            try
            {
                string cacheKey = "GetTeamDetails(" + pumAlias + "," + period.ToString() + ")";
                if (HttpContext.Current.Cache[cacheKey] != null)
                {
                    return (List<UserUsageSummary>)HttpContext.Current.Cache[cacheKey];
                }
                else
                {
                    TeamUsageSummary teamSummary = new TeamUsageSummary();
                    teamSummary.PumAlias = pumAlias;
                    teamSummary.Period = period;

                    connection = new SqlConnection(ServerSettings.SpeciesDsn);
                    connection.Open();

                    command = new SqlCommand();
                    command.Connection = connection;
                    command.CommandType = CommandType.Text;
                    command.CommandText = "SELECT PT.* FROM PumTeam PT, Pum P WHERE PT.PumID = P.Id AND P.Alias = @Alias";
                    command.Parameters.AddWithValue("@Alias", pumAlias);

                    reader = command.ExecuteReader();

                    List<UserUsageSummary> userList = new List<UserUsageSummary>();

                    while (reader.Read())
                    {
                        string userAlias = Convert.ToString(reader["Alias"]);
                        userList.Add(GetUserUsage(userAlias, period));
                    }

                    HttpContext.Current.Cache.Add(cacheKey, userList, null, DateTime.Now.AddMinutes(59), TimeSpan.Zero, CacheItemPriority.Normal, null);

                    return userList;
                }
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                    reader = null;
                }
                if (command != null)
                {
                    command.Dispose();
                    command = null;
                }
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
            }
        }
 public RestAPIResponse Usage(UsagePeriod? period = null)
 {
     return GetRequest().Request("usage", new { period = period.ToString().ToLower() });
 }
        public static ReadOnlyCollection<UserUsageSummary> GetUserSummaries(UsagePeriod period)
        {
            SqlConnection connection = null;
            SqlCommand command = null;
            SqlDataReader reader = null;

            try
            {
                string cacheKey = "GetUserSummaries(" + period.ToString() + ")";
                if (HttpContext.Current.Cache[cacheKey] != null)
                {
                    return new ReadOnlyCollection<UserUsageSummary>((List<UserUsageSummary>)HttpContext.Current.Cache[cacheKey]);
                }
                else
                {

                    List<UserUsageSummary> userList = new List<UserUsageSummary>();

                    connection = new SqlConnection(ServerSettings.SpeciesDsn);
                    connection.Open();

                    command = new SqlCommand();
                    command.Connection = connection;
                    command.CommandType = CommandType.Text;
                    command.CommandText = "SELECT TOP 10 Alias,	SUM(UsageMinutes) AS UsageTotal FROM Usage WHERE TickTime >= @StartDate AND TickTime <= @EndDate GROUP BY Alias ORDER BY UsageTotal DESC";

                    DateTime startDate = DateTime.MinValue;
                    DateTime endDate = DateTime.MinValue;

                    GetPeriodDates(period, ref startDate, ref endDate);

                    command.Parameters.AddWithValue("@StartDate", startDate.ToString());
                    command.Parameters.AddWithValue("@EndDate", endDate.ToString());

                    reader = command.ExecuteReader();

                    while (reader.Read())
                    {
                        UserUsageSummary summary = new UserUsageSummary();
                        summary.Alias = Convert.ToString(reader["Alias"]);
                        summary.Period = period;
                        summary.TotalHours = Convert.ToInt32(reader["UsageTotal"]) / 60;

                        userList.Add(summary);
                    }

                    HttpContext.Current.Cache.Add(cacheKey, userList, null, DateTime.Now.AddMinutes(59), TimeSpan.Zero, CacheItemPriority.Normal, null);

                    return new ReadOnlyCollection<UserUsageSummary>(userList);
                }
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                    reader = null;
                }
                if (command != null)
                {
                    command.Dispose();
                    command = null;
                }
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
            }
        }
Example #12
0
        public static ReadOnlyCollection <UserUsageSummary> GetUserSummaries(UsagePeriod period)
        {
            SqlConnection connection = null;
            SqlCommand    command    = null;
            SqlDataReader reader     = null;

            try
            {
                string cacheKey = "GetUserSummaries(" + period + ")";
                if (HttpContext.Current.Cache[cacheKey] != null)
                {
                    return
                        (new ReadOnlyCollection <UserUsageSummary>(
                             (List <UserUsageSummary>)HttpContext.Current.Cache[cacheKey]));
                }
                else
                {
                    List <UserUsageSummary> userList = new List <UserUsageSummary>();

                    connection = new SqlConnection(ServerSettings.SpeciesDsn);
                    connection.Open();

                    command             = new SqlCommand();
                    command.Connection  = connection;
                    command.CommandType = CommandType.Text;
                    command.CommandText =
                        "SELECT TOP 10 Alias,	SUM(UsageMinutes) AS UsageTotal FROM Usage WHERE TickTime >= @StartDate AND TickTime <= @EndDate GROUP BY Alias ORDER BY UsageTotal DESC";

                    DateTime startDate = DateTime.MinValue;
                    DateTime endDate   = DateTime.MinValue;

                    GetPeriodDates(period, ref startDate, ref endDate);

                    command.Parameters.AddWithValue("@StartDate", startDate.ToString());
                    command.Parameters.AddWithValue("@EndDate", endDate.ToString());

                    reader = command.ExecuteReader();

                    while (reader.Read())
                    {
                        UserUsageSummary summary = new UserUsageSummary();
                        summary.Alias      = Convert.ToString(reader["Alias"]);
                        summary.Period     = period;
                        summary.TotalHours = Convert.ToInt32(reader["UsageTotal"]) / 60;

                        userList.Add(summary);
                    }

                    HttpContext.Current.Cache.Add(cacheKey, userList, null, DateTime.Now.AddMinutes(59), TimeSpan.Zero,
                                                  CacheItemPriority.Normal, null);

                    return(new ReadOnlyCollection <UserUsageSummary>(userList));
                }
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                    reader = null;
                }
                if (command != null)
                {
                    command.Dispose();
                    command = null;
                }
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
            }
        }
Example #13
0
        public static ReadOnlyCollection <UsageData> GetUserDetails(string alias, UsagePeriod period)
        {
            SqlConnection connection = null;
            SqlCommand    command    = null;
            SqlDataReader reader     = null;

            try
            {
                connection = new SqlConnection(ServerSettings.SpeciesDsn);
                connection.Open();

                command             = new SqlCommand();
                command.Connection  = connection;
                command.CommandType = CommandType.Text;
                command.CommandText =
                    "SELECT * FROM Usage WHERE Alias = @Alias AND (TickTime >= @StartDate AND TickTime <= @EndDate)";
                command.Parameters.AddWithValue("@Alias", alias);

                DateTime startDate = DateTime.MinValue;
                DateTime endDate   = DateTime.MinValue;

                GetPeriodDates(period, ref startDate, ref endDate);

                command.Parameters.AddWithValue("@StartDate", startDate.ToString());
                command.Parameters.AddWithValue("@EndDate", endDate.ToString());

                reader = command.ExecuteReader();

                UserUsageSummary summary = new UserUsageSummary();
                summary.Alias  = alias;
                summary.Period = period;

                List <UsageData> usageList = new List <UsageData>();

                while (reader.Read())
                {
                    UsageData data = new UsageData();
                    data.Alias                  = Convert.ToString(reader["Alias"]);
                    data.Domain                 = Convert.ToString(reader["Domain"]);
                    data.TickTime               = Convert.ToDateTime(reader["TickTime"]);
                    data.UsageMinutes           = Convert.ToInt32(reader["UsageMinutes"]);
                    data.IPAddress              = Convert.ToString(reader["IPAddress"]);
                    data.GameVersion            = Convert.ToString(reader["GameVersion"]);
                    data.PeerChannel            = Convert.ToString(reader["PeerChannel"]);
                    data.PeerCount              = Convert.ToInt32(reader["PeerCount"]);
                    data.AnimalCount            = Convert.ToInt32(reader["AnimalCount"]);
                    data.MaxAnimalCount         = Convert.ToInt32(reader["MaxAnimalCount"]);
                    data.WorldHeight            = Convert.ToInt32(reader["WorldHeight"]);
                    data.WorldWidth             = Convert.ToInt32(reader["WorldWidth"]);
                    data.MachineName            = Convert.ToString(reader["MachineName"]);
                    data.OSVersion              = Convert.ToString(reader["OSVersion"]);
                    data.ProcessorCount         = Convert.ToInt32(reader["ProcessorCount"]);
                    data.ClrVersion             = Convert.ToString(reader["ClrVersion"]);
                    data.WorkingSet             = Convert.ToInt32(reader["WorkingSet"]);
                    data.MaxWorkingSet          = Convert.ToInt32(reader["MaxWorkingSet"]);
                    data.MinWorkingSet          = Convert.ToInt32(reader["MinWorkingSet"]);
                    data.ProcessorTimeInSeconds = Convert.ToInt32(reader["ProcessorTime"]);
                    data.ProcessStartTime       = Convert.ToDateTime(reader["ProcessStartTime"]);

                    usageList.Add(data);
                }

                return(new ReadOnlyCollection <UsageData>(usageList));
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                    reader = null;
                }
                if (command != null)
                {
                    command.Dispose();
                    command = null;
                }
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
            }
        }
Example #14
0
        public static UserUsageSummary GetUserUsage(string alias, UsagePeriod period)
        {
            SqlConnection connection = null;
            SqlCommand    command    = null;
            SqlDataReader reader     = null;

            try
            {
                connection = new SqlConnection(ServerSettings.SpeciesDsn);
                connection.Open();

                command             = new SqlCommand();
                command.Connection  = connection;
                command.CommandType = CommandType.Text;
                command.CommandText =
                    "SELECT SUM(UsageMinutes) AS UsageMinutes FROM Usage WHERE Alias = @Alias AND (TickTime >= @StartDate AND TickTime <= @EndDate)";
                command.Parameters.AddWithValue("@Alias", alias);

                DateTime startDate = DateTime.MinValue;
                DateTime endDate   = DateTime.MinValue;

                GetPeriodDates(period, ref startDate, ref endDate);

                command.Parameters.AddWithValue("@StartDate", startDate.ToString());
                command.Parameters.AddWithValue("@EndDate", endDate.ToString());

                reader = command.ExecuteReader();

                UserUsageSummary summary = new UserUsageSummary();
                summary.Alias  = alias;
                summary.Period = period;
                if (reader.Read())
                {
                    if (!((reader["UsageMinutes"]) is DBNull))
                    {
                        summary.TotalHours = Convert.ToInt32(reader["UsageMinutes"]) / 60;
                    }
                }


                TimeSpan span = endDate - startDate;

                if (span.Days == 0)
                {
                    span = new TimeSpan(1, 0, 0, 0);
                }

                summary.AverageHours = summary.TotalHours / (float)span.Days;

                return(summary);
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                    reader = null;
                }
                if (command != null)
                {
                    command.Dispose();
                    command = null;
                }
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
            }
        }
        public static TeamUsageSummary GetTeamUsageForUser(string alias, UsagePeriod period)
        {
            SqlConnection connection = null;
            SqlCommand command = null;
            SqlDataReader reader = null;

            try
            {
                connection = new SqlConnection(ServerSettings.SpeciesDsn);
                connection.Open();

                command = new SqlCommand();
                command.Connection = connection;
                command.CommandType = CommandType.Text;
                command.CommandText = "SELECT P.Alias FROM Pum P, PumTeam PT WHERE P.Id = PT.PumId AND PT.Alias = @Alias";
                command.Parameters.AddWithValue("@Alias", alias);

                reader = command.ExecuteReader();

                if (reader.Read())
                {
                    return GetTeamUsage(Convert.ToString(reader["Alias"]), period);
                }
                else
                {
                    return null;
                }
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                    reader = null;
                }
                if (command != null)
                {
                    command.Dispose();
                    command = null;
                }
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
            }
        }
        public static ReadOnlyCollection<UsageData> GetUserDetails(string alias, UsagePeriod period)
        {
            SqlConnection connection = null;
            SqlCommand command = null;
            SqlDataReader reader = null;

            try
            {
                connection = new SqlConnection(ServerSettings.SpeciesDsn);
                connection.Open();

                command = new SqlCommand();
                command.Connection = connection;
                command.CommandType = CommandType.Text;
                command.CommandText = "SELECT * FROM Usage WHERE Alias = @Alias AND (TickTime >= @StartDate AND TickTime <= @EndDate)";
                command.Parameters.AddWithValue("@Alias", alias);

                DateTime startDate = DateTime.MinValue;
                DateTime endDate = DateTime.MinValue;

                GetPeriodDates(period, ref startDate, ref endDate);

                command.Parameters.AddWithValue("@StartDate", startDate.ToString());
                command.Parameters.AddWithValue("@EndDate", endDate.ToString());

                reader = command.ExecuteReader();

                UserUsageSummary summary = new UserUsageSummary();
                summary.Alias = alias;
                summary.Period = period;

                List<UsageData> usageList = new List<UsageData>();

                while (reader.Read())
                {
                    UsageData data = new UsageData();
                    data.Alias = Convert.ToString(reader["Alias"]);
                    data.Domain = Convert.ToString(reader["Domain"]);
                    data.TickTime = Convert.ToDateTime(reader["TickTime"]);
                    data.UsageMinutes = Convert.ToInt32(reader["UsageMinutes"]);
                    data.IPAddress = Convert.ToString(reader["IPAddress"]);
                    data.GameVersion = Convert.ToString(reader["GameVersion"]);
                    data.PeerChannel = Convert.ToString(reader["PeerChannel"]);
                    data.PeerCount = Convert.ToInt32(reader["PeerCount"]);
                    data.AnimalCount = Convert.ToInt32(reader["AnimalCount"]);
                    data.MaxAnimalCount = Convert.ToInt32(reader["MaxAnimalCount"]);
                    data.WorldHeight = Convert.ToInt32(reader["WorldHeight"]);
                    data.WorldWidth = Convert.ToInt32(reader["WorldWidth"]);
                    data.MachineName = Convert.ToString(reader["MachineName"]);
                    data.OSVersion = Convert.ToString(reader["OSVersion"]);
                    data.ProcessorCount = Convert.ToInt32(reader["ProcessorCount"]);
                    data.ClrVersion = Convert.ToString(reader["ClrVersion"]);
                    data.WorkingSet = Convert.ToInt32(reader["WorkingSet"]);
                    data.MaxWorkingSet = Convert.ToInt32(reader["MaxWorkingSet"]);
                    data.MinWorkingSet = Convert.ToInt32(reader["MinWorkingSet"]);
                    data.ProcessorTimeInSeconds = Convert.ToInt32(reader["ProcessorTime"]);
                    data.ProcessStartTime = Convert.ToDateTime(reader["ProcessStartTime"]);

                    usageList.Add(data);
                }

                return new ReadOnlyCollection<UsageData>(usageList);
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                    reader = null;
                }
                if (command != null)
                {
                    command.Dispose();
                    command = null;
                }
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
            }
        }
Example #17
0
        public static TeamUsageSummary GetTeamUsage(string pumAlias, UsagePeriod period)
        {
            SqlConnection connection = null;
            SqlCommand    command    = null;
            SqlDataReader reader     = null;

            try
            {
                TeamUsageSummary teamSummary = new TeamUsageSummary();
                teamSummary.PumAlias = pumAlias;
                teamSummary.Period   = period;

                connection = new SqlConnection(ServerSettings.SpeciesDsn);
                connection.Open();

                command             = new SqlCommand();
                command.Connection  = connection;
                command.CommandType = CommandType.Text;
                command.CommandText =
                    "SELECT	PT.Alias, (SELECT 	SUM(U.UsageMinutes) FROM Usage U WHERE U.Alias = PT.Alias AND U.TickTime >= @StartDate AND U.TickTime <= @EndDate) AS UsageMinutes FROM Pum P, PumTeam PT WHERE 	PT.PumId = P.Id AND	P.Alias = @Alias ORDER BY UsageMinutes DESC";

                command.Parameters.AddWithValue("@Alias", pumAlias);

                DateTime startDate = DateTime.MinValue;
                DateTime endDate   = DateTime.MinValue;

                GetPeriodDates(period, ref startDate, ref endDate);

                command.Parameters.AddWithValue("@StartDate", startDate.ToString());
                command.Parameters.AddWithValue("@EndDate", endDate.ToString());

                reader = command.ExecuteReader();

                while (reader.Read())
                {
                    if (reader["UsageMinutes"] is DBNull)
                    {
                        teamSummary.OutCount++;
                    }
                    else
                    {
                        teamSummary.TotalHours += Convert.ToInt32(reader["UsageMinutes"]);
                        teamSummary.InCount++;
                    }
                    teamSummary.TeamCount++;
                }

                teamSummary.TotalHours       /= 60;
                teamSummary.AverageHours      = teamSummary.TotalHours / (float)teamSummary.TeamCount;
                teamSummary.ParticipationRate = (int)(100.0f * (teamSummary.InCount / (float)teamSummary.TeamCount));

                return(teamSummary);
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                    reader = null;
                }
                if (command != null)
                {
                    command.Dispose();
                    command = null;
                }
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
            }
        }
        public static UserUsageSummary GetUserUsage(string alias, UsagePeriod period)
        {
            SqlConnection connection = null;
            SqlCommand command = null;
            SqlDataReader reader = null;

            try
            {
                connection = new SqlConnection(ServerSettings.SpeciesDsn);
                connection.Open();

                command = new SqlCommand();
                command.Connection = connection;
                command.CommandType = CommandType.Text;
                command.CommandText = "SELECT SUM(UsageMinutes) AS UsageMinutes FROM Usage WHERE Alias = @Alias AND (TickTime >= @StartDate AND TickTime <= @EndDate)";
                command.Parameters.AddWithValue("@Alias", alias);

                DateTime startDate = DateTime.MinValue;
                DateTime endDate = DateTime.MinValue;

                GetPeriodDates(period, ref startDate, ref endDate);

                command.Parameters.AddWithValue("@StartDate", startDate.ToString());
                command.Parameters.AddWithValue("@EndDate", endDate.ToString());

                reader = command.ExecuteReader();

                UserUsageSummary summary = new UserUsageSummary();
                summary.Alias = alias;
                summary.Period = period;
                if (reader.Read())
                {
                    if (!((reader["UsageMinutes"]) is DBNull))
                    {
                        summary.TotalHours = Convert.ToInt32(reader["UsageMinutes"]) / 60;
                    }
                }

                TimeSpan span = endDate - startDate;

                if (span.Days == 0)
                {
                    span = new TimeSpan(1, 0, 0, 0);
                }

                summary.AverageHours = (float)summary.TotalHours / (float)span.Days;

                return summary;
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                    reader = null;
                }
                if (command != null)
                {
                    command.Dispose();
                    command = null;
                }
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
            }
        }
Example #19
0
        /// <summary>
        /// Returns an array of UserUsageSummary items for a team
        /// </summary>
        /// <param name="pumAlias">The Pum for the team</param>
        /// <param name="period">Which period we care about</param>
        /// <returns></returns>
        public static List <UserUsageSummary> GetTeamDetails(string pumAlias, UsagePeriod period)
        {
            SqlConnection connection = null;
            SqlCommand    command    = null;
            SqlDataReader reader     = null;

            try
            {
                string cacheKey = "GetTeamDetails(" + pumAlias + "," + period + ")";
                if (HttpContext.Current.Cache[cacheKey] != null)
                {
                    return((List <UserUsageSummary>)HttpContext.Current.Cache[cacheKey]);
                }
                else
                {
                    TeamUsageSummary teamSummary = new TeamUsageSummary();
                    teamSummary.PumAlias = pumAlias;
                    teamSummary.Period   = period;

                    connection = new SqlConnection(ServerSettings.SpeciesDsn);
                    connection.Open();

                    command             = new SqlCommand();
                    command.Connection  = connection;
                    command.CommandType = CommandType.Text;
                    command.CommandText =
                        "SELECT PT.* FROM PumTeam PT, Pum P WHERE PT.PumID = P.Id AND P.Alias = @Alias";
                    command.Parameters.AddWithValue("@Alias", pumAlias);

                    reader = command.ExecuteReader();

                    List <UserUsageSummary> userList = new List <UserUsageSummary>();

                    while (reader.Read())
                    {
                        string userAlias = Convert.ToString(reader["Alias"]);
                        userList.Add(GetUserUsage(userAlias, period));
                    }

                    HttpContext.Current.Cache.Add(cacheKey, userList, null, DateTime.Now.AddMinutes(59), TimeSpan.Zero,
                                                  CacheItemPriority.Normal, null);

                    return(userList);
                }
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                    reader = null;
                }
                if (command != null)
                {
                    command.Dispose();
                    command = null;
                }
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
            }
        }