2024-10-06 12:32:33 +03:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
using System.Linq;
|
2024-10-08 09:53:24 +03:00
|
|
|
|
using System.Security.AccessControl;
|
2024-10-06 12:32:33 +03:00
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using System.Windows.Forms;
|
2024-10-08 09:53:24 +03:00
|
|
|
|
using System.Xml.Linq;
|
2024-10-06 14:05:10 +03:00
|
|
|
|
using GtaVUsersInfo.Helpers;
|
2024-10-08 09:53:24 +03:00
|
|
|
|
using GtaVUsersInfo.Controls;
|
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
using System.IO;
|
2024-10-06 12:32:33 +03:00
|
|
|
|
|
|
|
|
|
namespace GtaVUsersInfo
|
|
|
|
|
{
|
|
|
|
|
public partial class MainForm : Form
|
|
|
|
|
{
|
2024-10-08 09:53:24 +03:00
|
|
|
|
private List<Control> debugControlsList;
|
|
|
|
|
private List<Car> carList;
|
|
|
|
|
|
2024-10-06 12:32:33 +03:00
|
|
|
|
public MainForm()
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
2024-10-08 09:53:24 +03:00
|
|
|
|
|
|
|
|
|
debugControlsList = new List<Control> { parserButton, readJsonButton };
|
|
|
|
|
|
|
|
|
|
this.visible(debugControlsList, false);
|
|
|
|
|
|
|
|
|
|
carList = LoadCarsFromJson(ReadonlyStrings.carJsonPath);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static List<Car> LoadCarsFromJson(string filePath)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string json = File.ReadAllText(filePath);
|
|
|
|
|
List<Car> cars = JsonConvert.DeserializeObject<List<Car>>(json);
|
|
|
|
|
|
|
|
|
|
return cars;
|
|
|
|
|
}
|
|
|
|
|
catch (FileNotFoundException)
|
|
|
|
|
{
|
|
|
|
|
string message = $"Файл с автомобилями не найден: {filePath}";
|
|
|
|
|
Console.WriteLine(message);
|
|
|
|
|
MessageBox.Show(message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
|
|
|
return new List<Car>();
|
|
|
|
|
}
|
|
|
|
|
catch (JsonException ex)
|
|
|
|
|
{
|
|
|
|
|
ErrorsShow.ShowErrorMessage($"Ошибка при десериализации JSON автомобилей: {ex.Message}");
|
|
|
|
|
return new List<Car>();
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
ErrorsShow.ShowErrorMessage($"Произошла неожиданная ошибка при открытии файла с автомобилями: {ex.Message}");
|
|
|
|
|
return new List<Car>();
|
|
|
|
|
}
|
2024-10-06 12:32:33 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void MainForm_Load(object sender, EventArgs e)
|
|
|
|
|
{
|
2024-10-08 09:53:24 +03:00
|
|
|
|
var name = new ParameterControl("Имя");
|
|
|
|
|
var money = new ParameterControl("Деньги");
|
|
|
|
|
|
|
|
|
|
name.Dock = DockStyle.Top;
|
|
|
|
|
money.Dock = DockStyle.Top;
|
2024-10-06 14:05:10 +03:00
|
|
|
|
|
2024-10-08 09:53:24 +03:00
|
|
|
|
parametersPanel.Controls.Add(money);
|
|
|
|
|
parametersPanel.Controls.Add(name);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region Methods
|
|
|
|
|
|
|
|
|
|
private void visible(List<Control> controls, bool isVisible)
|
|
|
|
|
{
|
|
|
|
|
controls.ForEach(control => { control.Visible = isVisible; control.Enabled = isVisible; });
|
2024-10-06 14:05:10 +03:00
|
|
|
|
}
|
2024-10-06 12:32:33 +03:00
|
|
|
|
|
2024-10-08 09:53:24 +03:00
|
|
|
|
#endregion
|
|
|
|
|
|
2024-10-06 14:05:10 +03:00
|
|
|
|
async private void parserButton_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
using (var parser = new CarParser())
|
|
|
|
|
{
|
|
|
|
|
var cars = await parser.ParseCarsFromPages(25);
|
2024-10-08 09:53:24 +03:00
|
|
|
|
parser.SaveToJson(cars, ReadonlyStrings.carJsonPath);
|
|
|
|
|
ErrorsShow.ShowInfoMessage($"Данные сохранены: {ReadonlyStrings.carJsonPath}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
carList = LoadCarsFromJson(ReadonlyStrings.carJsonPath);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void readJsonButton_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
carList = LoadCarsFromJson(ReadonlyStrings.carJsonPath);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void debugCheck_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
this.visible(debugControlsList, debugCheck.Checked);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void addCar_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (carList.Count <= 0)
|
|
|
|
|
{
|
|
|
|
|
ErrorsShow.ShowErrorMessage($"Список автомобилей пуст, ошибка чтения файла: {ReadonlyStrings.carJsonPath}");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Car car = new Car();
|
|
|
|
|
|
|
|
|
|
using (AddCars cars = new AddCars(carList, car))
|
|
|
|
|
{
|
|
|
|
|
cars.ShowDialog();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (car.Name != null)
|
|
|
|
|
{
|
|
|
|
|
CarItem item = new CarItem(car);
|
|
|
|
|
carsItems.Controls.Add(item);
|
2024-10-06 14:05:10 +03:00
|
|
|
|
}
|
2024-10-06 12:32:33 +03:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|