homework/Data/ProductStore.cs

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();
}
}