165 lines
5.5 KiB
C#
165 lines
5.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace CarManagerV2
|
|
{
|
|
public partial class MainForm : Form
|
|
{
|
|
List<Car> cars = new List<Car>();
|
|
|
|
public MainForm()
|
|
{
|
|
InitializeComponent();
|
|
SafeManager.initializeFile("cars.csv");
|
|
List<Car> _cars = SafeManager.readCars("cars.csv");
|
|
refreshCars(_cars);
|
|
}
|
|
|
|
private void refreshCars(List<Car> _cars)
|
|
{
|
|
//if cars havent changed, dont refresh
|
|
//bool changed = false;
|
|
//foreach (Car car in _cars)
|
|
//{
|
|
// Car existing = cars.FirstOrDefault(c => c.Id == car.Id);
|
|
// if (existing == null)
|
|
// {
|
|
// Console.WriteLine($"Added: {car.Id}");
|
|
// changed = true;
|
|
// break;
|
|
// }
|
|
// else if (existing.isChanged(car))
|
|
// {
|
|
// Console.WriteLine($"Modified: {car.Id} / {existing.Id}");
|
|
// changed = true;
|
|
// break;
|
|
// }
|
|
|
|
//}
|
|
//if(!changed && cars.Count == _cars.Count)
|
|
//{
|
|
// Console.WriteLine("Cars are the same, not refreshing.");
|
|
// cars = _cars;
|
|
// return;
|
|
//}
|
|
|
|
cars = _cars;
|
|
|
|
|
|
//if(cars.SequenceEqual(_cars))
|
|
//{
|
|
// Console.WriteLine("Cars are the same, not refreshing.");
|
|
// return;
|
|
//}
|
|
//else
|
|
//{
|
|
// Console.WriteLine("Cars have changed, refreshing.");
|
|
// Console.WriteLine($"Old cars count: {cars.Count}, New cars count: {_cars.Count}");
|
|
// //find differences
|
|
// Console.WriteLine("Saved:");
|
|
// foreach (var car in cars)
|
|
// {
|
|
// Console.Write($"{car.Id}, {car.Make} {car.Model}, {car.Year} | ");
|
|
// }
|
|
// Console.WriteLine("-------------------");
|
|
// Console.WriteLine("New:");
|
|
// foreach (var car in _cars)
|
|
// {
|
|
// Console.Write($"{car.Id}, {car.Make} {car.Model}, {car.Year} | ");
|
|
// }
|
|
// Console.WriteLine();
|
|
// var addedCars = _cars.Except(cars).ToList();
|
|
// var removedCars = cars.Except(_cars).ToList();
|
|
// var modifiedCars = _cars.Where(c => cars.Any(c2 => c2.Id == c.Id && !c2.Equals(c))).ToList();
|
|
// Console.WriteLine($"Added cars: {addedCars.Count}, Removed cars: {removedCars.Count}, Modified cars: {modifiedCars.Count}");
|
|
//}
|
|
|
|
flpCars.Controls.Clear();
|
|
foreach (Car car in _cars)
|
|
{
|
|
CarCard card = new CarCard();
|
|
card.CarName = $"{car.Make} {car.Model}";
|
|
card.CarDetails = $"{car.Year}, {car.Mileage} km, ${car.Price}";
|
|
card.CarImage = ImageManager.GetImage(car);
|
|
card.CardClicked += (s, e) =>
|
|
{
|
|
Console.WriteLine($"Card clicked: {car.Id}");
|
|
CarDetailsForm detailsForm = new CarDetailsForm(car);
|
|
detailsForm.FormClosed += (s2, e2) =>
|
|
{
|
|
// refresh cars
|
|
Application.DoEvents();
|
|
Console.WriteLine("Refreshing cars...");
|
|
List<Car> __cars = SafeManager.readCars("cars.csv");
|
|
refreshCars(__cars);
|
|
};
|
|
detailsForm.ShowDialog();
|
|
};
|
|
flpCars.Controls.Add(card);
|
|
}
|
|
}
|
|
|
|
private void CarDetailsForm_Load(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void MainForm_Load(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void tableLayoutPanel1_Paint(object sender, PaintEventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void btnNewCar_Click(object sender, EventArgs e)
|
|
{
|
|
Car foocar = StateManager.createCar("New", "Car", 2020, "White", 0, 20000);
|
|
CarDetailsForm detailsForm = new CarDetailsForm(foocar);
|
|
detailsForm.FormClosed += (s2, e2) =>
|
|
{
|
|
// refresh cars
|
|
Console.WriteLine("Refreshing cars...");
|
|
cars = SafeManager.readCars("cars.csv");
|
|
refreshCars(cars);
|
|
};
|
|
detailsForm.ShowDialog();
|
|
}
|
|
|
|
void searchList(string query)
|
|
{
|
|
List<Car> results = new List<Car>();
|
|
foreach (Car car in cars)
|
|
{
|
|
if (car.Make.ToLower().Contains(query.ToLower()) || car.Model.ToLower().Contains(query.ToLower()) || car.Year.ToString().Contains(query) || car.Mileage.ToString().Contains(query) || car.Price.ToString().Contains(query))
|
|
{
|
|
results.Add(car);
|
|
}
|
|
}
|
|
refreshCars(results);
|
|
}
|
|
|
|
private void tbxSearch_TextChanged(object sender, EventArgs e)
|
|
{
|
|
string query = tbxSearch.Text;
|
|
if(string.IsNullOrWhiteSpace(query))
|
|
{
|
|
refreshCars(cars);
|
|
}
|
|
else
|
|
{
|
|
searchList(query);
|
|
}
|
|
}
|
|
}
|
|
}
|