internal void OnNeedRefreshOrders()
 {
     EventHandler<RefreshOrdersEventArgs> handler = NeedRefreshOrders;
     if (handler != null)
     {
         RefreshOrdersEventArgs e = new RefreshOrdersEventArgs();
         e.StartDate = _StartDate;
         e.StartTime = StartTime;
         e.EndTime = EndTime;
         handler(this, e);
     }
     RefreshButtons();
 }
    protected void OnRefreshCalendarEvent(object sender, RefreshOrdersEventArgs arg)
    {
        OrdersCalendar Calendar = (OrdersCalendar)sender;

        MainClass.StatusMessage(String.Format ("Запрос заказов на {0:d}...", arg.StartDate));
        string sql = "SELECT orders.*, models.name as model, marks.name as mark, status.color, stocks.name as stock, stocks.color as stockcolor, " +
            "status.name as status, manufacturers.name as manufacturer, tablesum.sum FROM orders " +
            "LEFT JOIN models ON models.id = orders.car_model_id " +
            "LEFT JOIN marks ON marks.id = models.mark_id " +
            "LEFT JOIN status ON status.id = orders.status_id " +
            "LEFT JOIN stocks ON stocks.id = orders.stock_id " +
            "LEFT JOIN manufacturers ON manufacturers.id = orders.manufacturer_id " +
            "LEFT JOIN (" +
            "SELECT order_id, SUM(cost) as sum FROM order_pays GROUP BY order_id) as tablesum " +
            "ON tablesum.order_id = orders.id " +
            "WHERE date BETWEEN @start AND @end ";
        if (Calendar == orderscalendar1)
            sql += "AND orders.type = 'install' ";
        else
            sql += "AND orders.type <> 'install' ";
        QSMain.CheckConnectionAlive();
        try
        {
            MySqlCommand cmd = new MySqlCommand(sql, QSMain.connectionDB);

            cmd.Parameters.AddWithValue("@start", arg.StartDate);
            cmd.Parameters.AddWithValue("@end", arg.StartDate.AddDays(6));

            using(MySqlDataReader rdr = cmd.ExecuteReader())
            {
                Calendar.ClearTimeMap();
                while(rdr.Read())
                {
                    CalendarItem order = new CalendarItem(rdr.GetDateTime("date"),
                        rdr.GetInt32("hour")
                    );
                    Order.OrderType type = (Order.OrderType)Enum.Parse(typeof(Order.OrderType), rdr["type"].ToString());
                    order.id = rdr.GetInt32("id");
                    order.Text = String.Format("{0} {1}\n{2}\n{3}",rdr["mark"].ToString(), rdr["model"].ToString(), rdr["phone"].ToString(), rdr["comment"].ToString() );
                    if(type == Order.OrderType.install)
                    {
                        order.FullText = String.Format("Состояние: {0}\nАвтомобиль: {1} {2}\nЕврокод: {3}\nПроизводитель: {4}\nСклад:{5}\nТелефон: {6}\nСтоимость: {7:C}\n{8}",
                            rdr["status"].ToString(),
                            rdr["mark"].ToString(),
                            rdr["model"].ToString(),
                            rdr["eurocode"].ToString(),
                            rdr["manufacturer"].ToString(),
                            rdr["stock"].ToString(),
                            rdr["phone"].ToString(),
                            DBWorks.GetDecimal(rdr, "sum", 0),
                            rdr["comment"].ToString()
                        );
                    }
                    else
                    {
                        order.FullText = String.Format("Заказ на {0}\nСостояние: {1}\nАвтомобиль: {2} {3}\nТелефон: {4}\nСтоимость: {5:C}\n{6}",
                            type == Order.OrderType.tinting ? "тонировку" : "ремонт",
                            rdr["status"].ToString(),
                            rdr["mark"].ToString(),
                            rdr["model"].ToString(),
                            rdr["phone"].ToString(),
                            DBWorks.GetDecimal(rdr, "sum", 0),
                            rdr["comment"].ToString()
                        );
                    }
                    order.Color = DBWorks.GetString(rdr, "color", "");
                    order.TagColor = DBWorks.GetString(rdr, "stockcolor", "");
                    if(rdr["stock"].ToString().Length > 0 && rdr["stockcolor"] != DBNull.Value)
                        order.Tag = rdr["stock"].ToString().Substring(0, 1);
                    order.Type = (int) type;
                    order.Calendar = Calendar;
                    order.DeleteOrder += OnDeleteOrder;
                    order.OpenOrder += OnOpenOrder;
                    order.TimeChanged += OnChangeTimeOrderEvent;
                    int day = (order.Date - Calendar.StartDate).Days;
                    Calendar.AddItem(day, order.Hour, order);
                }
            }
            MainClass.StatusMessage("Ok");
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
            MainClass.StatusMessage("Ошибка получения списка заказов!");
            QSMain.ErrorMessage(this,ex);
        }
    }