197 lines
6.0 KiB
C#
197 lines
6.0 KiB
C#
using TechnoWorld.Models;
|
|
|
|
namespace TechnoWorld.Data;
|
|
|
|
public static class ProductStore
|
|
{
|
|
public static readonly List<Product> Products =
|
|
[
|
|
new Product
|
|
{
|
|
Id = 1,
|
|
Name = "Ноутбук Pro 15",
|
|
Category = "Ноутбуки",
|
|
Price = 89990m,
|
|
Specs = "Экран 15.6\u2033 · 8 ГБ RAM · SSD 512 ГБ",
|
|
Icon = "bi-laptop",
|
|
Badge = "badge-hit",
|
|
BadgeText = "Хит продаж"
|
|
},
|
|
new Product
|
|
{
|
|
Id = 2,
|
|
Name = "Ноутбук Air 13",
|
|
Category = "Ноутбуки",
|
|
Price = 64990m,
|
|
Specs = "Экран 13.3\u2033 · 16 ГБ RAM · SSD 1 ТБ",
|
|
Icon = "bi-laptop",
|
|
Badge = "badge-new",
|
|
BadgeText = "Новинка"
|
|
},
|
|
new Product
|
|
{
|
|
Id = 3,
|
|
Name = "Ноутбук Gaming X17",
|
|
Category = "Ноутбуки",
|
|
Price = 119990m,
|
|
Specs = "Экран 17.3\u2033 · 32 ГБ RAM · RTX 4060 · SSD 1 ТБ",
|
|
Icon = "bi-laptop",
|
|
Badge = "badge-hot",
|
|
BadgeText = "Выгодно"
|
|
},
|
|
new Product
|
|
{
|
|
Id = 4,
|
|
Name = "Смартфон Nova X",
|
|
Category = "Смартфоны",
|
|
Price = 29990m,
|
|
Specs = "Экран 6.7\u2033 · Камера 108 Мп · 128 ГБ",
|
|
Icon = "bi-phone",
|
|
Badge = "badge-hit",
|
|
BadgeText = "Хит продаж"
|
|
},
|
|
new Product
|
|
{
|
|
Id = 5,
|
|
Name = "Смартфон Vega Plus",
|
|
Category = "Смартфоны",
|
|
Price = 45990m,
|
|
Specs = "Экран 6.5\u2033 · 256 ГБ · 5G",
|
|
Icon = "bi-phone",
|
|
Badge = "badge-new",
|
|
BadgeText = "Новинка"
|
|
},
|
|
new Product
|
|
{
|
|
Id = 6,
|
|
Name = "Смартфон Neo SE",
|
|
Category = "Смартфоны",
|
|
Price = 17990m,
|
|
Specs = "Экран 6.1\u2033 · 64 ГБ · NFC",
|
|
Icon = "bi-phone",
|
|
Badge = ""
|
|
},
|
|
new Product
|
|
{
|
|
Id = 7,
|
|
Name = "Планшет Tab Lite",
|
|
Category = "Планшеты",
|
|
Price = 18490m,
|
|
Specs = "Экран 11\u2033 · 4 ГБ RAM · 128 ГБ",
|
|
Icon = "bi-tablet",
|
|
Badge = "badge-new",
|
|
BadgeText = "Новинка"
|
|
},
|
|
new Product
|
|
{
|
|
Id = 8,
|
|
Name = "Планшет Tab Pro 12",
|
|
Category = "Планшеты",
|
|
Price = 42990m,
|
|
Specs = "Экран 12.4\u2033 · 8 ГБ RAM · 256 ГБ",
|
|
Icon = "bi-tablet",
|
|
Badge = "badge-hot",
|
|
BadgeText = "Выгодно"
|
|
},
|
|
new Product
|
|
{
|
|
Id = 9,
|
|
Name = "Наушники SoundMax",
|
|
Category = "Наушники",
|
|
Price = 3990m,
|
|
Specs = "Bluetooth 5.3 · ANC · 40 ч автономной работы",
|
|
Icon = "bi-headphones",
|
|
Badge = "badge-hit",
|
|
BadgeText = "Хит продаж"
|
|
},
|
|
new Product
|
|
{
|
|
Id = 10,
|
|
Name = "Наушники AirBuds Mini",
|
|
Category = "Наушники",
|
|
Price = 2490m,
|
|
Specs = "Bluetooth 5.2 · 25 ч · зарядный кейс",
|
|
Icon = "bi-headphones",
|
|
Badge = "badge-new",
|
|
BadgeText = "Новинка"
|
|
},
|
|
new Product
|
|
{
|
|
Id = 11,
|
|
Name = "Наушники Studio Over",
|
|
Category = "Наушники",
|
|
Price = 7990m,
|
|
Specs = "Проводные · студийные · 32 Ом",
|
|
Icon = "bi-headphones",
|
|
Badge = ""
|
|
},
|
|
new Product
|
|
{
|
|
Id = 12,
|
|
Name = "Клавиатура Mech RGB",
|
|
Category = "Аксессуары",
|
|
Price = 5490m,
|
|
Specs = "Механическая · RGB-подсветка · RU",
|
|
Icon = "bi-keyboard",
|
|
Badge = "badge-hot",
|
|
BadgeText = "Выгодно"
|
|
},
|
|
new Product
|
|
{
|
|
Id = 13,
|
|
Name = "Мышь Ergo Pro",
|
|
Category = "Аксессуары",
|
|
Price = 1990m,
|
|
Specs = "Беспроводная · 6000 DPI · тихие кнопки",
|
|
Icon = "bi-mouse",
|
|
Badge = ""
|
|
},
|
|
new Product
|
|
{
|
|
Id = 14,
|
|
Name = "Монитор View 27",
|
|
Category = "Аксессуары",
|
|
Price = 24990m,
|
|
Specs = "27\u2033 · QHD · 144 Гц · IPS",
|
|
Icon = "bi-display",
|
|
Badge = "badge-hit",
|
|
BadgeText = "Хит продаж"
|
|
}
|
|
];
|
|
|
|
public static readonly List<string> Categories =
|
|
[
|
|
"Ноутбуки",
|
|
"Смартфоны",
|
|
"Планшеты",
|
|
"Наушники",
|
|
"Аксессуары"
|
|
];
|
|
|
|
public static IEnumerable<Product> GetHits()
|
|
{
|
|
return Products
|
|
.Where(p => p.BadgeText == "Хит продаж")
|
|
.Take(4);
|
|
}
|
|
|
|
public static IEnumerable<Product> GetByFilter(string? category, string? search)
|
|
{
|
|
IEnumerable<Product> query = Products;
|
|
|
|
if (!string.IsNullOrWhiteSpace(category))
|
|
{
|
|
query = query.Where(p =>
|
|
p.Category.Equals(category, StringComparison.OrdinalIgnoreCase));
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(search))
|
|
{
|
|
query = query.Where(p =>
|
|
p.Name.Contains(search, StringComparison.OrdinalIgnoreCase) ||
|
|
p.Specs.Contains(search, StringComparison.OrdinalIgnoreCase));
|
|
}
|
|
|
|
return query.ToList();
|
|
}
|
|
} |