| | | 1 | | using OzonDomains.Models; |
| | | 2 | | using OzonOrdersWeb.WebServices.Grid; |
| | | 3 | | |
| | | 4 | | namespace OzonOrdersWeb.WebServices.Directories; |
| | | 5 | | |
| | | 6 | | /// <summary> |
| | | 7 | | /// Серверные гриды больших справочников (десятки тысяч строк): whitelist колонок (colId → выражение EF), поиск и |
| | | 8 | | /// порядок по умолчанию. colId совпадают с колонками гридов в Producers/Index и Products/Index. |
| | | 9 | | /// </summary> |
| | | 10 | | public static class DirectoryGridDefinitions |
| | | 11 | | { |
| | | 12 | | /// <summary>Производители ET (et_producers, ~20 тыс.).</summary> |
| | 1 | 13 | | public static readonly ServerGridDefinition<EtProducer> Producers = |
| | 1 | 14 | | new ServerGridDefinition<EtProducer> |
| | 1 | 15 | | { |
| | 1 | 16 | | DefaultOrder = q => q.OrderBy(p => p.Name).ThenBy(p => p.Id), |
| | 1 | 17 | | TieBreaker = p => p.Id |
| | 1 | 18 | | } |
| | 1 | 19 | | .Col("id", p => p.Id) |
| | 1 | 20 | | .Col("realId", p => p.RealId) |
| | 1 | 21 | | .Col("marketPrefix", p => p.MarketPrefix) |
| | 1 | 22 | | .Col("name", p => p.Name) |
| | 1 | 23 | | .Col("prefix", p => p.Prefix) |
| | 1 | 24 | | .Col("address", p => p.Address) |
| | 1 | 25 | | .Col("www", p => p.Www) |
| | 1 | 26 | | .Col("existName", p => p.ExistName) |
| | 1 | 27 | | .Col("existId", p => p.ExistId) |
| | 1 | 28 | | .Col("domain", p => p.Domain) |
| | 1 | 29 | | .Col("rating", p => p.Rating) |
| | 1 | 30 | | .Col("tecdocSupplierId", p => p.TecdocSupplierId) |
| | 1 | 31 | | .Search(p => p.Name, p => p.MarketPrefix, p => p.Prefix, p => p.ExistName, p => p.Domain); |
| | | 32 | | |
| | | 33 | | /// <summary>Товары (Products, ~50 тыс.).</summary> |
| | 1 | 34 | | public static readonly ServerGridDefinition<Product> Products = |
| | 1 | 35 | | new ServerGridDefinition<Product> |
| | 1 | 36 | | { |
| | 1 | 37 | | // Новые сначала: у части старых записей артикул пуст, и сортировка по нему открывала пустой экран. |
| | 0 | 38 | | DefaultOrder = q => q.OrderByDescending(p => p.Id), |
| | 1 | 39 | | TieBreaker = p => p.Id |
| | 1 | 40 | | } |
| | 1 | 41 | | .Col("id", p => p.Id) |
| | 1 | 42 | | .Col("article", p => p.Article) |
| | 1 | 43 | | .Col("ozonProductId", p => p.OzonProductId) |
| | 1 | 44 | | .Col("fboOzonSkuId", p => p.FboOzonSkuId) |
| | 1 | 45 | | .Col("fbsOzonSkuId", p => p.FbsOzonSkuId) |
| | 1 | 46 | | .Col("commercialCategory", p => p.CommercialCategory) |
| | 1 | 47 | | .Col("barcode", p => p.Barcode) |
| | 1 | 48 | | .Col("volume", p => p.Volume) |
| | 1 | 49 | | .Col("volumetricWeight", p => p.VolumetricWeight) |
| | 1 | 50 | | .Col("weight", p => p.Weight) |
| | 1 | 51 | | .Col("currentPriceWithDiscount", p => p.CurrentPriceWithDiscount) |
| | 1 | 52 | | .Col("replacementArticle", p => p.ReplacementProduct != null ? p.ReplacementProduct.Article : null) |
| | 1 | 53 | | .Search(p => p.Article, p => p.OzonProductId, p => p.FboOzonSkuId, p => p.FbsOzonSkuId, p => p.Barcode, p => |
| | | 54 | | } |