static void correktirovkaZapisei()
{
// Важно: проверяем на пустоту и прерываем метод, если список пуст
if (!MyProducts.Any())
{
Console.WriteLine("Список пуст\n");
return;
}
Console.WriteLine("Какую запись поменять?");
listNames();
int choice = IntInRange("Ваш выбор: ", 1, MyProducts.Count);
int index = choice - 1;
// Выгружаем структуру во временную переменную для изменения
Product currentProduct = MyProducts[index];
Console.WriteLine("\nЧто вы хотите изменить в этом товаре?");
Console.WriteLine("1 - Имя");
Console.WriteLine("2 - Вид упаковки");
Console.WriteLine("3 - Цена");
Console.WriteLine("4 - Срок реализации");
Console.WriteLine("0 - Отмена");
int editChoice = IntInRange("Ваш выбор: ", 0, 4);
switch (editChoice)
{
case 1:
while (true)
{
Console.WriteLine("Введите новое имя:");
string newName = ValString(Console.ReadLine());
if (newName == null) continue;
if (newName == currentProduct.name)
{
break; // Имя осталось тем же
}
if (MyProductsName.Contains(newName))
{
Console.WriteLine("Такой товар уже существует. Напишите другое имя");
}
else
{
// Обновляем список имен: удаляем старое, добавляем новое
MyProductsName.Remove(currentProduct.name);
MyProductsName.Add(newName);
currentProduct.name = newName;
break;
}
}
break;
case 2:
Console.WriteLine("Введите вид упаковки: \n 1 - Коробка \n 2 - Банка \n 3 - Бутылка");
currentProduct.pack = (TypeOfPack)IntInRange("", 1, 3);
break;
case 3:
while (true)
{
Console.WriteLine("Введите новую цену:");
if (double.TryParse(Console.ReadLine(), out double price) && price >= 0)
{
currentProduct.price = price;
break;
}
Console.WriteLine("Ошибка: введите корректное число");
}
break;
case 4:
Console.WriteLine("Введите новый срок реализации в днях");
currentProduct.period = PositiveInt("");
break;
case 0:
Console.WriteLine("Отмена редактирования.\n");
return;
}
// Сохраняем измененную структуру обратно в список
MyProducts[index] = currentProduct;
Console.WriteLine("Запись успешно обновлена!\n");
}