Пример #1
0
 /// <summary>
 /// Manage MonthlyStats object.
 /// If the object is of type CustomObjectBase,
 /// then either insert values into, delete values from, or update values in MonthlyStats.
 /// </summary>
 /// <param name="sqlConnection">Sql connection or null.</param>
 /// <param name="sqlTransaction">Sql transaction or null.</param>
 /// <param name="value">Object of type MonthlyStats.</param>
 /// <returns>Object of type CustomDataAccessStatus<MonthlyStats>.</returns>
 public CustomDataAccessStatus <MonthlyStats> MonthlyStatsManageAuto(
     SqlConnection sqlConnection,
     SqlTransaction sqlTransaction,
     MonthlyStats value)
 {
     return(MonthlyStatsManageAuto(sqlConnection, sqlTransaction, "BHL", value));
 }
Пример #2
0
        /// <summary>
        /// Select values from MonthlyStats by primary key(s).
        /// </summary>
        /// <param name="sqlConnection">Sql connection or null.</param>
        /// <param name="sqlTransaction">Sql transaction or null.</param>
        /// <param name="connectionKeyName">Connection key name located in config file.</param>
        /// <param name="year"></param>
        /// <param name="month"></param>
        /// <param name="institutionName"></param>
        /// <param name="statType"></param>
        /// <returns>Object of type MonthlyStats.</returns>
        public MonthlyStats MonthlyStatsSelectAuto(
            SqlConnection sqlConnection,
            SqlTransaction sqlTransaction,
            string connectionKeyName,
            int year,
            int month,
            string institutionName,
            string statType)
        {
            SqlConnection  connection  = CustomSqlHelper.CreateConnection(CustomSqlHelper.GetConnectionStringFromConnectionStrings(connectionKeyName), sqlConnection);
            SqlTransaction transaction = sqlTransaction;

            using (SqlCommand command = CustomSqlHelper.CreateCommand("MonthlyStatsSelectAuto", connection, transaction,
                                                                      CustomSqlHelper.CreateInputParameter("Year", SqlDbType.Int, null, false, year),
                                                                      CustomSqlHelper.CreateInputParameter("Month", SqlDbType.Int, null, false, month),
                                                                      CustomSqlHelper.CreateInputParameter("InstitutionName", SqlDbType.NVarChar, 255, false, institutionName),
                                                                      CustomSqlHelper.CreateInputParameter("StatType", SqlDbType.NVarChar, 100, false, statType)))
            {
                using (CustomSqlHelper <MonthlyStats> helper = new CustomSqlHelper <MonthlyStats>())
                {
                    CustomGenericList <MonthlyStats> list = helper.ExecuteReader(command);
                    if (list.Count > 0)
                    {
                        MonthlyStats o = list[0];
                        list = null;
                        return(o);
                    }
                    else
                    {
                        return(null);
                    }
                }
            }
        }
Пример #3
0
        public HttpResponseMessage PostMonthlyStat(MonthlyStats monthlyStat)
        {
            var createdMonthlyStat = MonthlyStatsServices.CreateMonthlyStat(monthlyStat);

            // If stats already exists within database, return 409.
            if (createdMonthlyStat == null)
            {
                var alreadyExistsResponse = Request.CreateResponse
                                                (HttpStatusCode.Conflict, "(409) Monthly Stat already exists", Configuration.Formatters.JsonFormatter);

                alreadyExistsResponse.Headers.Add("API-Version", apiVersion);
                alreadyExistsResponse.Headers.Add("ERROR", "(409) Resource already exists");

                return(alreadyExistsResponse);
            }
            // Daily Stat doesn't exist inside the database, proceed.
            else
            {
                var response = Request.CreateResponse(HttpStatusCode.Created, monthlyStat, Configuration.Formatters.JsonFormatter);
                response.Headers.Add("API-Version", apiVersion);
                response.Headers.Add("Response-Type", "JSON");

                if (Request.RequestUri.AbsoluteUri.EndsWith("/"))
                {
                    response.Headers.Add("MonthlyStats-URL", Request.RequestUri.AbsoluteUri + monthlyStat.ID);
                }
                else
                {
                    response.Headers.Add("MonthlyStats-URL", Request.RequestUri.AbsoluteUri + "/" + monthlyStat.ID);
                }
                return(response);
            }
        }
Пример #4
0
 /// <summary>
 /// Update values in MonthlyStats. Returns an object of type MonthlyStats.
 /// </summary>
 /// <param name="sqlConnection">Sql connection or null.</param>
 /// <param name="sqlTransaction">Sql transaction or null.</param>
 /// <param name="value">Object of type MonthlyStats.</param>
 /// <returns>Object of type MonthlyStats.</returns>
 public MonthlyStats MonthlyStatsUpdateAuto(
     SqlConnection sqlConnection,
     SqlTransaction sqlTransaction,
     MonthlyStats value)
 {
     return(MonthlyStatsUpdateAuto(sqlConnection, sqlTransaction, "BHL", value));
 }
Пример #5
0
        public HttpResponseMessage UpdateMonthlyStats(int statID, MonthlyStats monthlyStat)
        {
            var updatedMonthlyStat = MonthlyStatsServices.UpdateMonthlyStat(statID, monthlyStat);

            var response = Request.CreateResponse(HttpStatusCode.OK, updatedMonthlyStat, Configuration.Formatters.JsonFormatter);

            response.Headers.Add("API-Version", apiVersion);
            response.Headers.Add("Response-Type", "JSON");
            response.Headers.Add("MonthlyStats-URL", Request.RequestUri.AbsoluteUri);

            if (updatedMonthlyStat == null)
            {
                var notFoundResponse = Request.CreateResponse(HttpStatusCode.NotFound,
                                                              "(404) Monthly Stats Not Found",
                                                              Configuration.Formatters.JsonFormatter);

                notFoundResponse.Headers.Add("API-Version", apiVersion);

                return(notFoundResponse);
            }
            else
            {
                return(response);
            }
        }
Пример #6
0
        /// <summary>
        /// Manage MonthlyStats object.
        /// If the object is of type CustomObjectBase,
        /// then either insert values into, delete values from, or update values in MonthlyStats.
        /// </summary>
        /// <param name="sqlConnection">Sql connection or null.</param>
        /// <param name="sqlTransaction">Sql transaction or null.</param>
        /// <param name="connectionKeyName">Connection key name located in config file.</param>
        /// <param name="value">Object of type MonthlyStats.</param>
        /// <returns>Object of type CustomDataAccessStatus<MonthlyStats>.</returns>
        public CustomDataAccessStatus <MonthlyStats> MonthlyStatsManageAuto(
            SqlConnection sqlConnection,
            SqlTransaction sqlTransaction,
            string connectionKeyName,
            MonthlyStats value)
        {
            if (value.IsNew && !value.IsDeleted)
            {
                MonthlyStats returnValue = MonthlyStatsInsertAuto(sqlConnection, sqlTransaction, connectionKeyName,
                                                                  value.Year,
                                                                  value.Month,
                                                                  value.InstitutionName,
                                                                  value.StatType,
                                                                  value.StatValue);

                return(new CustomDataAccessStatus <MonthlyStats>(
                           CustomDataAccessContext.Insert,
                           true, returnValue));
            }
            else if (!value.IsNew && value.IsDeleted)
            {
                if (MonthlyStatsDeleteAuto(sqlConnection, sqlTransaction, connectionKeyName,
                                           value.Year,
                                           value.Month,
                                           value.InstitutionName,
                                           value.StatType))
                {
                    return(new CustomDataAccessStatus <MonthlyStats>(
                               CustomDataAccessContext.Delete,
                               true, value));
                }
                else
                {
                    return(new CustomDataAccessStatus <MonthlyStats>(
                               CustomDataAccessContext.Delete,
                               false, value));
                }
            }
            else if (value.IsDirty && !value.IsDeleted)
            {
                MonthlyStats returnValue = MonthlyStatsUpdateAuto(sqlConnection, sqlTransaction, connectionKeyName,
                                                                  value.Year,
                                                                  value.Month,
                                                                  value.InstitutionName,
                                                                  value.StatType,
                                                                  value.StatValue);

                return(new CustomDataAccessStatus <MonthlyStats>(
                           CustomDataAccessContext.Update,
                           true, returnValue));
            }
            else
            {
                return(new CustomDataAccessStatus <MonthlyStats>(
                           CustomDataAccessContext.NA,
                           false, value));
            }
        }
Пример #7
0
 /// <summary>
 /// Binds the stats.
 /// </summary>
 private void BindStats()
 {
     Stats = MonthlyStats.Select(_siteId);
     rprSmsSendCount.DataSource = rprEmailSendCount.DataSource = rprMonthes.DataSource = rprPageViews.DataSource = Stats;
     rprPageViews.DataBind();
     rprMonthes.DataBind();
     rprEmailSendCount.DataBind();
     rprSmsSendCount.DataBind();
 }
Пример #8
0
 /// <summary>
 /// Update values in MonthlyStats. Returns an object of type MonthlyStats.
 /// </summary>
 /// <param name="sqlConnection">Sql connection or null.</param>
 /// <param name="sqlTransaction">Sql transaction or null.</param>
 /// <param name="connectionKeyName">Connection key name located in config file.</param>
 /// <param name="value">Object of type MonthlyStats.</param>
 /// <returns>Object of type MonthlyStats.</returns>
 public MonthlyStats MonthlyStatsUpdateAuto(
     SqlConnection sqlConnection,
     SqlTransaction sqlTransaction,
     string connectionKeyName,
     MonthlyStats value)
 {
     return(MonthlyStatsUpdateAuto(sqlConnection, sqlTransaction, connectionKeyName,
                                   value.Year,
                                   value.Month,
                                   value.InstitutionName,
                                   value.StatType,
                                   value.StatValue));
 }
Пример #9
0
 private void CalculateTotal(GridViewRowEventArgs e, ref int total)
 {
     if (e.Row.RowType == DataControlRowType.DataRow)
     {
         MonthlyStats stats = (MonthlyStats)e.Row.DataItem;
         total += stats.StatValue;
     }
     else if (e.Row.RowType == DataControlRowType.Footer)
     {
         e.Row.Cells[0].Text = "Total";
         e.Row.Cells[e.Row.Cells.Count - 1].Text = total.ToString();
     }
 }
Пример #10
0
        public static Sale CreateSale(Sale sale)
        {
            using (var context = new ServicesContext())
            {
                var currentDate = DateTime.Now.Date;
                // Check if there's already a sales stat for this day.
                var findDailyStat = context.dailyStats.FirstOrDefault
                                        (b => b.salesDate == currentDate);

                var findMonthlyStat = context.monthlyStats.FirstOrDefault
                                          (b => b.salesMonth == DateTime.Now.Month && b.salesYear == DateTime.Now.Year);

                // If there is an existing daily stat, sum one to the counter.
                if (findDailyStat != null)
                {
                    findDailyStat.productsSold++;
                }
                // If there isn't, create a new stat for this day.
                else
                {
                    DailyStats newStats = new DailyStats();
                    newStats.productsSold++;
                    context.dailyStats.Add(newStats);
                }

                // If the monthly stat already exists, sum one to the counter of that month.
                if (findMonthlyStat != null)
                {
                    findMonthlyStat.productsSold++;
                }
                // If there isn't an existing monthly stat, create one.
                else
                {
                    MonthlyStats newStats = new MonthlyStats();
                    newStats.productsSold++;
                    context.monthlyStats.Add(newStats);
                }


                // Sale object corrections
                sale.saleDescription = sale.saleDescription.Trim();

                context.Sales.Add(sale);
                context.SaveChanges();
                return(sale);
            }
        }
Пример #11
0
        public IHttpActionResult GetMonthlyStat(int id)
        {
            MonthlyStats monthlyStats = MonthlyStatsServices.GetMonthlyStat(id);

            HttpContext.Current.Response.AppendHeader("API-Version", apiVersion);

            if (monthlyStats == null)
            {
                HttpContext.Current.Response.AppendHeader("ERROR", "(404) Resource Not Found");
                return(NotFound());
            }
            else
            {
                HttpContext.Current.Response.AppendHeader("Response-Type", "JSON");
                HttpContext.Current.Response.AppendHeader("Object-URL", Request.RequestUri.AbsoluteUri);
                JsonSerializerSettings serializerSettings = new JsonSerializerSettings {
                    Formatting = Formatting.Indented
                };
                return(Json(monthlyStats, serializerSettings));
            }
        }
        public static MonthlyStats UpdateMonthlyStat(int statID, MonthlyStats monthlyStat)
        {
            using (var context = new ServicesContext())
            {
                var selectedStat = context.monthlyStats.FirstOrDefault(b => b.ID == statID);

                // Checking if the stat does exist within the database.
                if (selectedStat != null)
                {
                    selectedStat.salesMonth = monthlyStat.salesMonth;
                    selectedStat.salesYear  = monthlyStat.salesYear;
                    context.SaveChanges();

                    return(selectedStat);
                }
                // If it does not, return null.
                else
                {
                    return(null);
                }
            }
        }
        public static MonthlyStats CreateMonthlyStat(MonthlyStats monthlyStat)
        {
            using (var context = new ServicesContext())
            {
                // Check if there's already a stat for this month.
                var findMonthlyStat = context.monthlyStats.FirstOrDefault
                                          (b => b.salesMonth == monthlyStat.salesMonth && b.salesYear == monthlyStat.salesYear);

                // If there isn't, create one.
                if (findMonthlyStat == null)
                {
                    context.monthlyStats.Add(monthlyStat);
                    context.SaveChanges();
                    return(monthlyStat);
                }
                // If there is, return null and let the controller handle it.
                else
                {
                    return(null);
                }
            }
        }
Пример #14
0
        public static MonthlyStats RetrieveMonthlyStats(this ArchivedGame[] games, string username)
        {
            var stats = new MonthlyStats
            {
                WonByFlag      = QueryArchivedGames(games, username, GameResult.Win, GameResult.Timeout).Count(),
                WonByResign    = QueryArchivedGames(games, username, GameResult.Win, GameResult.Resigned).Count(),
                WonByCheckmate = QueryArchivedGames(games, username, GameResult.Win, GameResult.Checkmated).Count(),
                WonByAbandoned = QueryArchivedGames(games, username, GameResult.Win, GameResult.Abandoned).Count(),

                LostByFlag      = QueryArchivedGames(games, username, GameResult.Timeout, GameResult.Win).Count(),
                LostByResign    = QueryArchivedGames(games, username, GameResult.Resigned, GameResult.Win).Count(),
                LostByCheckmate = QueryArchivedGames(games, username, GameResult.Checkmated, GameResult.Win).Count(),
                LostByAbandoned = QueryArchivedGames(games, username, GameResult.Abandoned, GameResult.Win).Count(),

                DrawByRepetition            = QueryArchivedGames(games, username, GameResult.Abandoned, GameResult.Win).Count(),
                DrawByAgreed                = QueryArchivedGames(games, username, GameResult.Abandoned, GameResult.Win).Count(),
                DrawByStalemate             = QueryArchivedGames(games, username, GameResult.Abandoned, GameResult.Win).Count(),
                DrawByFiftyMove             = QueryArchivedGames(games, username, GameResult.Abandoned, GameResult.Win).Count(),
                DrawByTimeoutVsInsufficient = QueryArchivedGames(games, username, GameResult.Abandoned, GameResult.Win).Count(),
            };

            if (games.Any(g => g.MovesCount() < 15))
            {
                stats.ShortGamesWon = games.Where(g => g.MovesCount() < 15)
                                      .Where(g => g.WhitePlayer.Username.Equals(username, StringComparison.OrdinalIgnoreCase) &&
                                             g.WhitePlayer.GameResult == GameResult.Win)
                                      .Count();

                stats.ShortGamesLost = games.Where(g => g.MovesCount() < 15)
                                       .Where(g => g.BlackPlayer.Username.Equals(username, StringComparison.OrdinalIgnoreCase) &&
                                              g.BlackPlayer.GameResult == GameResult.Win)
                                       .Count();
            }

            return(stats);
        }
Пример #15
0
        public JsonResult GetStats()
        {
            // make an array containing the names of the last three months
            var currentMonth    = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(DateTime.Now.Month);
            var lastMonth       = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(DateTime.Today.AddMonths(-1).Month);
            var monthBeforeLast = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(DateTime.Today.AddMonths(-2).Month);
            var monthArray      = "['" + monthBeforeLast + "']" + "['" + lastMonth + "']" + "['" + currentMonth + "']";


            // make an array with the count of logins in the last three months
            List <MonthlyStats> monthlyStats = new List <MonthlyStats>();

            // connect to database
            var dbCon = DBConnection.Instance();

            dbCon.DatabaseName = "getdrinxstg_db";
            if (dbCon.IsConnect())
            {
                //query from the database and loop through the results so that they can be stored
                string query = @"
                                SELECT SUM(x.Logins), SUM(x.Registrations), DATE_FORMAT(x.Date,'%M') as Date
                                FROM
                                (
                                    SELECT COALESCE(a.LoginCount,0) as Logins, COALESCE(b.RegistrationCount,0) as Registrations, a.Date as Date
                                    FROM
                                    (
                                    SELECT COUNT(*) as LoginCount, DATE(last_sign_in_at) as Date
                                    FROM users u1
                                    WHERE last_sign_in_at IS NOT NULL
                                    AND last_sign_in_at BETWEEN CURDATE() - INTERVAL 90 DAY AND CURDATE()
                                    GROUP BY DATE(last_sign_in_at)
                                    ) a

                                    CROSS JOIN

                                    (
                                    SELECT COUNT(*) as RegistrationCount, DATE(created_at) as Date
                                    FROM users u2
                                    WHERE created_at IS NOT NULL
                                    AND created_at BETWEEN CURDATE() - INTERVAL 90 DAY AND CURDATE()
                                    GROUP BY DATE(created_at)
                                    ) b
                                    on a.Date = b.Date
                                )x
                                GROUP BY  DATE_FORMAT(x.Date,'%M')
                                ORDER BY x.Date ASC
                                ";

                var cmd    = new MySqlCommand(query, dbCon.Connection);
                var reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    // create a new monthly stat record
                    MonthlyStats monthlyStat = new MonthlyStats();

                    //store the users data
                    monthlyStat.Logins        = reader.GetString(0);
                    monthlyStat.Registrations = reader.GetString(1);
                    monthlyStat.Date          = reader.GetString(2);

                    // add this user to the users list
                    monthlyStats.Add(monthlyStat);
                }
                reader.Close();
            }

            // make an array with the count of registrations in the last three months


            return(Json(monthlyStats, JsonRequestBehavior.AllowGet));
        }
Пример #16
0
 /// <summary>
 /// Manage MonthlyStats object.
 /// If the object is of type CustomObjectBase, 
 /// then either insert values into, delete values from, or update values in MonthlyStats.
 /// </summary>
 /// <param name="sqlConnection">Sql connection or null.</param>
 /// <param name="sqlTransaction">Sql transaction or null.</param>
 /// <param name="value">Object of type MonthlyStats.</param>
 /// <returns>Object of type CustomDataAccessStatus<MonthlyStats>.</returns>
 public CustomDataAccessStatus<MonthlyStats> MonthlyStatsManageAuto(
     SqlConnection sqlConnection,
     SqlTransaction sqlTransaction,
     MonthlyStats value)
 {
     return MonthlyStatsManageAuto( sqlConnection, sqlTransaction, "BHL", value  );
 }
Пример #17
0
        /// <summary>
        /// Manage MonthlyStats object.
        /// If the object is of type CustomObjectBase, 
        /// then either insert values into, delete values from, or update values in MonthlyStats.
        /// </summary>
        /// <param name="sqlConnection">Sql connection or null.</param>
        /// <param name="sqlTransaction">Sql transaction or null.</param>
        /// <param name="connectionKeyName">Connection key name located in config file.</param>
        /// <param name="value">Object of type MonthlyStats.</param>
        /// <returns>Object of type CustomDataAccessStatus<MonthlyStats>.</returns>
        public CustomDataAccessStatus<MonthlyStats> MonthlyStatsManageAuto(
            SqlConnection sqlConnection,
            SqlTransaction sqlTransaction,
            string connectionKeyName,
            MonthlyStats value)
        {
            if (value.IsNew && !value.IsDeleted)
            {

                MonthlyStats returnValue = MonthlyStatsInsertAuto(sqlConnection, sqlTransaction, connectionKeyName,
                    value.Year,
                        value.Month,
                        value.InstitutionName,
                        value.StatType,
                        value.StatValue);

                return new CustomDataAccessStatus<MonthlyStats>(
                    CustomDataAccessContext.Insert,
                    true, returnValue);
            }
            else if (!value.IsNew && value.IsDeleted)
            {
                if (MonthlyStatsDeleteAuto(sqlConnection, sqlTransaction, connectionKeyName,
                    value.Year,
                        value.Month,
                        value.InstitutionName,
                        value.StatType))
                {
                return new CustomDataAccessStatus<MonthlyStats>(
                    CustomDataAccessContext.Delete,
                    true, value);
                }
                else
                {
                return new CustomDataAccessStatus<MonthlyStats>(
                    CustomDataAccessContext.Delete,
                    false, value);
                }
            }
            else if (value.IsDirty && !value.IsDeleted)
            {

                MonthlyStats returnValue = MonthlyStatsUpdateAuto(sqlConnection, sqlTransaction, connectionKeyName,
                    value.Year,
                        value.Month,
                        value.InstitutionName,
                        value.StatType,
                        value.StatValue);

                return new CustomDataAccessStatus<MonthlyStats>(
                    CustomDataAccessContext.Update,
                    true, returnValue);
            }
            else
            {
                return new CustomDataAccessStatus<MonthlyStats>(
                    CustomDataAccessContext.NA,
                    false, value);
            }
        }
Пример #18
0
 /// <summary>
 /// Update values in MonthlyStats. Returns an object of type MonthlyStats.
 /// </summary>
 /// <param name="sqlConnection">Sql connection or null.</param>
 /// <param name="sqlTransaction">Sql transaction or null.</param>
 /// <param name="value">Object of type MonthlyStats.</param>
 /// <returns>Object of type MonthlyStats.</returns>
 public MonthlyStats MonthlyStatsUpdateAuto(
     SqlConnection sqlConnection,
     SqlTransaction sqlTransaction,
     MonthlyStats value)
 {
     return MonthlyStatsUpdateAuto(sqlConnection, sqlTransaction, "BHL", value );
 }
Пример #19
0
 /// <summary>
 /// Update values in MonthlyStats. Returns an object of type MonthlyStats.
 /// </summary>
 /// <param name="sqlConnection">Sql connection or null.</param>
 /// <param name="sqlTransaction">Sql transaction or null.</param>
 /// <param name="connectionKeyName">Connection key name located in config file.</param>
 /// <param name="value">Object of type MonthlyStats.</param>
 /// <returns>Object of type MonthlyStats.</returns>
 public MonthlyStats MonthlyStatsUpdateAuto(
     SqlConnection sqlConnection,
     SqlTransaction sqlTransaction,
     string connectionKeyName,
     MonthlyStats value)
 {
     return MonthlyStatsUpdateAuto(sqlConnection, sqlTransaction, connectionKeyName,
         value.Year,
         value.Month,
         value.InstitutionName,
         value.StatType,
         value.StatValue);
 }