Код:
string sql = "select " + (sender == sbFind_Phone ? "distinct " : "") +
"orders.id, orders.dat_add, users.family, orders.status, " +
"clients.name, clients.phone, " +
"orders.adress, orders.note_adress, orders.dat, orders.time_, orders.\"SUM\", orders.skidka, " +
"factories.name, " +
"drivers.family || ' ' || drivers.name, orders.actions, " +
"orders.pay, orders.enter, clients.note, orders.website " + // website: 0 - сайт 1, 1 - сайт 2
(
bPrimeCost || bRolly ? ", orders.subitems || ';' || orders.actions || ';' " : ""
) +
"from orders " +
"left outer join users on users.id = orders.id_user_in " +
"left outer join clients on clients.id = orders.id_client " +
"left outer join factories on factories.id = orders.factory " +
"left outer join drivers on drivers.id = orders.driver " +
(
bFrom_Site ? //---- поиск заказов с сайта ---------
"where factory = " + Factorys[cbFactories.SelectedIndex - 1].id.ToString()
: sender == sbMobil ? //---- поиск заказов, поступивших с моб./устройств
"where '" + (bDataDelivery
? dataFrom.ToShortDateString() + "'<= dat and dat < '" + dtTo.AddDays(1).ToShortDateString() + "'"
: // дата доставки попадает в интервал или
dataFrom.ToShortDateString() + "'<= dat_add and dat_add < '" + dtTo.AddDays(1).ToShortDateString() +
"'" // дата приема заказа попадает в интервал
) +
" and (orders.note_adress containing 'Android' or orders.note_adress containing 'IOS')"
: sender == sbFind_Phone ? //---- поиск по номеру телефона ------
"where orders.id_client = " + ((id_client_Phone as int?)?.ToString() ?? "0")
: sender == sbFind_Order // так быстрее
? //---- поиск заказов по номеру -------
"where orders.id in (" + sOrders + ")"
: "where '" + //---- поиск заказов по фильтрам ----
(bDataDelivery
? dataFrom.ToShortDateString() + "'<= dat and dat < '" + dtTo.AddDays(1).ToShortDateString() +
"'"
: // дата доставки попадает в интервал или
dataFrom.ToShortDateString() + "'<= dat_add and dat_add < '" + dtTo.AddDays(1).ToShortDateString() +
"'" // дата приема заказа попадает в интервал
)
+ //---- вид оплаты --------------------
(!chPayNal.Checked ? " and orders.pay != 0 " : "") + // 0 - нал.
(!chPayOnl.Checked ? " and orders.pay != 1 " : "") + // 1 - онлайн
(!chPayMt.Checked ? " and orders.pay != 3 " : "") + // 3 - моб/терминал
(!chPayNull.Checked ? " and orders.pay != 2 " : "") // 2 - б/о
+ //---- откуда поступил ---------------
(!chFromPhone.Checked ? " and orders.enter != 0 " : "") + // 0 - телефон
(!chFromSite.Checked ? " and orders.enter != 1 " : "") + // 1 - сайт
(!chFromClub.Checked ? " and orders.enter != 2 " : "") // 2 - delivery club
+
(rbTake.Checked
? " and orders.status = 0"
: // принят
rbKitchen.Checked
? " and orders.status = 1"
: // на кухне
// rbReady.Checked ? " and orders.status = 2": // готов - убрал, не хватает места
rbShip.Checked
? " and orders.status = 3"
: // в пути
// rbDelive.Checked ? " and orders.status = 4": // доставлен - убрал, не хватает места
rbPay.Checked
? " and orders.status = 5"
: // оплачен
rbCancel.Checked ? " and orders.status = 6" : "" // отменен
)
+ // производство
(cbFactories.SelectedIndex <= 0
? ""
: " and factory = " + Factorys[cbFactories.SelectedIndex - 1].id.ToString()
)
+ // акция
(cbActions.SelectedIndex <= 0
? ""
: " and substring(actions from 1 for " +
Actions[cbActions.SelectedIndex - 1].id.ToString().Length.ToString() + ") = '"
+ Actions[cbActions.SelectedIndex - 1].id.ToString() + "'"
)
+ // манагеры
(cbManagers.SelectedIndex <= 0
? ""
: " and orders.id_user_in = " + Managers[cbManagers.SelectedIndex - 1].id.ToString()
)
+ // водители
(cbDrivers.SelectedIndex <= 0
? ""
: " and orders.driver = " + Drivers[cbDrivers.SelectedIndex - 1].id.ToString()
)
+ // сайт заказа: первый(0) или второй(1)
(rbSiteAll.Checked
? ""
: " and orders.website = " +
(rbSitePirogu.Checked ? FLogo.LOGO_1 : FLogo.LOGO_2).ToString()
)
);