Пример #1
0
        public OrderStats getOrderStatsById(int id)
        {
            SqlParameter[] prams = { database.MakeInParam("@id", SqlDbType.Int, 0, id), };

            string sql = "SELECT tos.*, tt.name AS name1, tt.unit AS unit1 FROM tb_order_stats AS tos, tb_typeOfProcess AS tt " +
                         " WHERE tos.id = @id AND tos.type_of_process = tt.id ";

            try
            {
                DataSet dataset = database.RunProcReturn(sql, prams, "tb_order_stats");
                int     count   = 0;
                if (null != dataset && (count = dataset.Tables[0].Rows.Count) > 0)
                {
                    int        i     = 0;
                    OrderStats stats = parseOrderStats(dataset, i);
                    return(stats);
                }
            }
            catch (Exception e)
            {
                Util.showError(e.Message);
            }

            return(null);
        }
Пример #2
0
        private Order getOrder()
        {
            Order order = constructOrder();

            Console.WriteLine("dataGridViewItem.Rows.Count:" + dataGridViewItem.Rows.Count);

            int i = 0;

            foreach (DataGridViewRow row in dataGridViewItem.Rows)
            {
                if (row.IsNewRow)
                {
                    continue;
                }
                i++;
                OrderItem item = constructOrderItem(order, row);
                order.OrderItems.AddLast(item);
            }
            Console.WriteLine("i:" + i);

            Console.WriteLine("dataGridViewItemStats.Rows.Count: " + dataGridViewItemStats.Rows.Count);
            foreach (DataGridViewRow row in dataGridViewItemStats.Rows)
            {
                if (row.IsNewRow)
                {
                    continue;
                }

                OrderStats stats = constructOrderStats(order, row);
                order.OrderStats.AddLast(stats);
            }

            return(order);
        }
Пример #3
0
        public void fillOrderStats(Order order)
        {
            SqlParameter[] prams = { database.MakeInParam("@order", SqlDbType.Int, 0, order.Id), };
            string         sql   = "SELECT tos.*, tt.name AS name1, tt.unit AS unit1 FROM tb_order_stats AS tos, tb_typeOfProcess AS tt " +
                                   " WHERE tos.[order] = @order AND tos.type_of_process = tt.id ";

            try
            {
                DataSet dataset = database.RunProcReturn(sql, prams, "tb_order_stats");
                int     count   = 0;
                if (null != dataset && (count = dataset.Tables[0].Rows.Count) > 0)
                {
                    int i = 0;
                    for (i = 0; i < count; i++)
                    {
                        OrderStats stats = parseOrderStats(dataset, i);
                        stats.Order = order;
                        order.OrderStats.AddLast(stats);
                    }
                }
            }
            catch (Exception e)
            {
                Util.showError(e.Message);
            }
        }
        public override async Task ExecuteAsync(CloudTable cloudTable = null)
        {
            // Store data for analytics about amount each type of events in each hour.

            Console.WriteLine("...Generate some sample data...");

            var createOrderStats1 = new OrderStats
            {
                PartitionKey = "CREATE_ORDER",
                RowKey       = DateTime.Now.Hour.ToString(),
                Count        = 10
            };

            var createOrderStats2 = new OrderStats
            {
                PartitionKey = "CREATE_ORDER",
                RowKey       = DateTime.Now.AddHours(1).ToString(),
                Count        = 10
            };

            var startWatchingOrderStats1 = new OrderStats
            {
                PartitionKey = "START_WATCHING",
                RowKey       = DateTime.Now.Hour.ToString(),
                Count        = 8
            };

            var startWatchingOrderStats2 = new OrderStats
            {
                PartitionKey = "START_WATCHING",
                RowKey       = DateTime.Now.AddHours(2).ToString(),
                Count        = 8
            };

            await cloudTable.ExecuteAsync(TableOperation.Insert(createOrderStats1));

            await cloudTable.ExecuteAsync(TableOperation.Insert(createOrderStats2));

            await cloudTable.ExecuteAsync(TableOperation.Insert(startWatchingOrderStats1));

            await cloudTable.ExecuteAsync(TableOperation.Insert(startWatchingOrderStats2));

            Console.WriteLine("...Fetch data for partition...");

            TableQuery <OrderStats> query1 = new TableQuery <OrderStats>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "CREATE_ORDER"));
            TableQuery <OrderStats> query2 = new TableQuery <OrderStats>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "START_WATCHING"));

            var data1 = await cloudTable.ExecuteQuerySegmentedAsync(query1, null);

            data1.Results.ForEach(os => Console.WriteLine($"Stats for \nEvent type: {os.PartitionKey}\n\tHour: {os.RowKey}\n\tCount: {os.Count}"));

            var data2 = await cloudTable.ExecuteQuerySegmentedAsync(query2, null);

            data2.Results.ForEach(os => Console.WriteLine($"Stats for \nEvent type: {os.PartitionKey}\n\tHour: {os.RowKey}\n\tCount: {os.Count}"));
        }
Пример #5
0
 private void fillOrderStatsRow(OrderStats stats, DataGridViewRow row)
 {
     row.Cells["ColumnStatsID"].Value           = stats.Id;
     row.Cells["ColumnProcessingName"].Tag      = stats.TypeOfProcess;
     row.Cells["ColumnProcessingName"].Value    = stats.TypeOfProcess.Name;
     row.Cells["ColumnThicknessStats"].Value    = stats.ThicknessStats;
     row.Cells["ColumnProcessingDiagram"].Tag   = stats.Image;
     row.Cells["ColumnProcessingDiagram"].Value = Util.getThumbnailImage(stats.Image);
     row.Cells["ColumnDWG"].Tag              = stats.Dwg;
     row.Cells["ColumnUnitStats"].Value      = stats.Unit;
     row.Cells["ColumnNumberStats"].Value    = stats.TotalNumber;
     row.Cells["ColumnUnitPriceStats"].Value = stats.UnitPrice;
     row.Cells["ColumnCostStats"].Value      = stats.AmountOfMoney;
 }
Пример #6
0
        private OrderStats constructOrderStats(Order order, DataGridViewRow row)
        {
            OrderStats stats = new OrderStats();

            stats.Id             = Util.getIntValue(row.Cells["ColumnStatsID"].Value.ToString());
            stats.Order          = order;
            stats.TypeOfProcess  = (TypeOfProcess)row.Cells["ColumnProcessingName"].Tag;
            stats.ThicknessStats = row.Cells["ColumnThicknessStats"].Value.ToString();
            stats.Image          = (Image)row.Cells["ColumnProcessingDiagram"].Tag;
            stats.Dwg            = (byte[])row.Cells["ColumnDWG"].Tag;
            stats.Unit           = row.Cells["ColumnUnitStats"].Value.ToString();
            stats.TotalNumber    = Util.getDecimalValue(row.Cells["ColumnNumberStats"].Value.ToString());
            stats.UnitPrice      = Util.getDecimalValue(row.Cells["ColumnUnitPriceStats"].Value.ToString());
            stats.AmountOfMoney  = Util.getDecimalValue(row.Cells["ColumnCostStats"].Value.ToString());

            return(stats);
        }
Пример #7
0
        private OrderStats parseOrderStats(DataSet dataset, int index)
        {
            OrderStats stats = new OrderStats();

            stats.Id            = getIntValue(dataset, index, "id");
            stats.TypeOfProcess = new TypeOfProcess(getIntValue(dataset, index, "type_of_process"),
                                                    getValue(dataset, index, "name1"), getValue(dataset, index, "unit1"));
            stats.ThicknessStats = getValue(dataset, index, "thickness");
            stats.Image          = getImageValue(dataset, index, "image");
            stats.Dwg            = DBNull.Value == dataset.Tables[0].Rows[index]["dwg"] ? null : (byte[])dataset.Tables[0].Rows[index]["dwg"];
            stats.Unit           = getValue(dataset, index, "unit");
            stats.TotalNumber    = getDecimalValue(dataset, index, "total_number");
            stats.UnitPrice      = getDecimalValue(dataset, index, "unit_price");
            stats.AmountOfMoney  = getDecimalValue(dataset, index, "amount_of_money");

            return(stats);
        }
Пример #8
0
        private SqlParameter[] constructParamsForOrderStats(OrderStats orderStats)
        {
            SqlParameter[] prams =
            {
                database.MakeInParam("@id",              SqlDbType.Int,        0, orderStats.Id),
                database.MakeInParam("@order",           SqlDbType.Int,        0, orderStats.Order.Id),
                database.MakeInParam("@type_of_process", SqlDbType.Int,        0, orderStats.TypeOfProcess.Id),
                database.MakeInParam("@thickness",       SqlDbType.VarChar,   20, orderStats.ThicknessStats),
                database.MakeInParam("@image",           SqlDbType.Image,      0, null == orderStats.Image ? DBNull.Value : (object)Util.imageToByteArray(orderStats.Image)),
                database.MakeInParam("@dwg",             SqlDbType.Image,      0, null == orderStats.Dwg ? DBNull.Value : (object)orderStats.Dwg),
                database.MakeInParam("@unit",            SqlDbType.NVarChar,  10, orderStats.Unit),
                database.MakeInParam("@total_number",    SqlDbType.Decimal,    0, orderStats.TotalNumber),
                database.MakeInParam("@unit_price",      SqlDbType.Money,      0, orderStats.UnitPrice),
                database.MakeInParam("@amount_of_money", SqlDbType.Money,      0, orderStats.AmountOfMoney),
                new SqlParameter("@message",             SqlDbType.NVarChar, 50),
                new SqlParameter("rval",                 SqlDbType.Int, 4)
            };

            prams[prams.Length - 2].Direction = ParameterDirection.Output;
            prams[prams.Length - 1].Direction = ParameterDirection.ReturnValue;

            return(prams);
        }
Пример #9
0
        public async Task <OrderStats> GetOrdersStats()
        {
            OrderStats orderStats = new OrderStats();
            var        orders     = await unitOfWork.OrderRepository.GetOnlyOrders();

            if (orders == null || orders.Count() == 0)
            {
                return(orderStats);
            }

            int len = 6;
            var ordersByLastMonths = new List <OrdersByMonth>(len);
            var today      = DateTime.Now;
            var firstIndex = today.AddMonths(-6);

            string[] monthsTranslate = new string[12] {
                "Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień",
                "Wrzesień", "Pażdziernik", "Listopad", "Grudzień"
            };

            for (int i = 5; i >= 0; i--)
            {
                var _month  = today.AddMonths(-i);
                var counter = orders.Where(x => x.OrderCreationDate?.Month == _month.Month &&
                                           x.OrderCreationDate?.Year == _month.Year).Count();

                ordersByLastMonths.Add(new OrdersByMonth(monthsTranslate[_month.Month - 1] + " " + _month.Year, counter));
            }
            orderStats.OrdersByLastMonths = ordersByLastMonths;

            orderStats.OrdersThisMonth = ordersByLastMonths[len - 1].AmountOfOrders;
            orderStats.OrdersLastMonth = ordersByLastMonths[len - 2].AmountOfOrders;

            int diff = orderStats.OrdersThisMonth - orderStats.OrdersLastMonth;

            orderStats.LastMonthComparerMessage =
                diff >= 0 ? $"+{diff}" : diff.ToString();

            int?finishedOrderStatusId = null;
            var orderStatuses         = await unitOfWork.OrderStatusRepository.GetOrderStatusByNameAsync("Zakończone");

            if (orderStatuses != null)
            {
                finishedOrderStatusId = orderStatuses.Id;
            }

            var finishedOrders = orders.Where(x => x.OrderStatusId.Equals(finishedOrderStatusId));

            if (finishedOrders == null || finishedOrders.Count() == 0)
            {
                orderStats.TimelyDeliveriesRatio = 100;
            }

            else
            {
                int all = finishedOrders.Count();
                int finishedOnTimeCounter = finishedOrders
                                            .Where(x => x.OrderRealizationDate?.Date <= x.OrderExpectedDate?.Date).Count();
                decimal ratio = (finishedOnTimeCounter / all) * 100;
                orderStats.TimelyDeliveriesRatio = (int)ratio;
            }

            return(orderStats);
        }