Add clanker code
This commit is contained in:
@@ -9,7 +9,10 @@ namespace dealer
|
||||
public class DataManager
|
||||
{
|
||||
private List<Vehicle> vehicles = new List<Vehicle>();
|
||||
private List<Owner> owners = new List<Owner>();
|
||||
private List<Image> images = new List<Image>();
|
||||
|
||||
// Vehicle CRUD
|
||||
public void AddVehicle(Vehicle vehicle)
|
||||
{
|
||||
vehicles.Add(vehicle);
|
||||
@@ -25,23 +28,260 @@ namespace dealer
|
||||
vehicles.Remove(vehicle);
|
||||
}
|
||||
|
||||
// Owner CRUD
|
||||
public void AddOwner(Owner owner)
|
||||
{
|
||||
owners.Add(owner);
|
||||
}
|
||||
|
||||
public IEnumerable<Owner> GetAllOwners()
|
||||
{
|
||||
return owners;
|
||||
}
|
||||
|
||||
public Owner? GetOwnerById(Guid? id)
|
||||
{
|
||||
if (id == null) return null;
|
||||
return owners.FirstOrDefault(o => o.Id == id);
|
||||
}
|
||||
|
||||
public void RemoveOwner(Owner owner)
|
||||
{
|
||||
// Remove owner reference from all vehicles
|
||||
foreach (var vehicle in vehicles.Where(v => v.VlastnikId == owner.Id))
|
||||
{
|
||||
vehicle.VlastnikId = null;
|
||||
vehicle.Vlastnik = null;
|
||||
}
|
||||
owners.Remove(owner);
|
||||
}
|
||||
|
||||
public IEnumerable<Owner> SearchOwners(string searchText)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(searchText))
|
||||
return owners;
|
||||
|
||||
searchText = searchText.ToLower();
|
||||
return owners.Where(o =>
|
||||
(o.Jmeno?.ToLower().Contains(searchText) ?? false) ||
|
||||
(o.Prijmeni?.ToLower().Contains(searchText) ?? false) ||
|
||||
(o.Email?.ToLower().Contains(searchText) ?? false) ||
|
||||
(o.Telefon?.Contains(searchText) ?? false) ||
|
||||
(o.CeleJmeno?.ToLower().Contains(searchText) ?? false));
|
||||
}
|
||||
|
||||
// Image CRUD
|
||||
public void AddImage(Image image)
|
||||
{
|
||||
images.Add(image);
|
||||
}
|
||||
|
||||
public IEnumerable<Image> GetAllImages()
|
||||
{
|
||||
return images;
|
||||
}
|
||||
|
||||
public Image? GetImageById(Guid? id)
|
||||
{
|
||||
if (id == null) return null;
|
||||
return images.FirstOrDefault(i => i.Id == id);
|
||||
}
|
||||
|
||||
public void RemoveImage(Image image)
|
||||
{
|
||||
// Remove image reference from all vehicles
|
||||
foreach (var vehicle in vehicles.Where(v => v.FotografieId == image.Id))
|
||||
{
|
||||
vehicle.FotografieId = null;
|
||||
vehicle.Fotografie = null;
|
||||
}
|
||||
images.Remove(image);
|
||||
}
|
||||
|
||||
// Link owners and images to vehicles after loading
|
||||
private void LinkRelationsToVehicles()
|
||||
{
|
||||
foreach (var vehicle in vehicles)
|
||||
{
|
||||
if (vehicle.VlastnikId.HasValue)
|
||||
{
|
||||
vehicle.Vlastnik = GetOwnerById(vehicle.VlastnikId);
|
||||
}
|
||||
if (vehicle.FotografieId.HasValue)
|
||||
{
|
||||
vehicle.Fotografie = GetImageById(vehicle.FotografieId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Save()
|
||||
{
|
||||
// Implementace ukládání dat do souboru - JSON
|
||||
var json = System.Text.Json.JsonSerializer.Serialize(vehicles);
|
||||
System.IO.File.WriteAllText("vehicles.json", json);
|
||||
// Save vehicles
|
||||
var vehiclesJson = System.Text.Json.JsonSerializer.Serialize(vehicles);
|
||||
System.IO.File.WriteAllText("vehicles.json", vehiclesJson);
|
||||
|
||||
// Save owners
|
||||
var ownersJson = System.Text.Json.JsonSerializer.Serialize(owners);
|
||||
System.IO.File.WriteAllText("owners.json", ownersJson);
|
||||
|
||||
// Save images
|
||||
var imagesJson = System.Text.Json.JsonSerializer.Serialize(images);
|
||||
System.IO.File.WriteAllText("images.json", imagesJson);
|
||||
}
|
||||
|
||||
public void Load()
|
||||
{
|
||||
string path = "vehicles.json";
|
||||
|
||||
// Implementace načítání dat ze souboru - JSON
|
||||
if (System.IO.File.Exists(path))
|
||||
// Load owners first
|
||||
string ownersPath = "owners.json";
|
||||
if (System.IO.File.Exists(ownersPath))
|
||||
{
|
||||
var json = System.IO.File.ReadAllText(path);
|
||||
var json = System.IO.File.ReadAllText(ownersPath);
|
||||
owners = System.Text.Json.JsonSerializer.Deserialize<List<Owner>>(json) ?? new List<Owner>();
|
||||
}
|
||||
|
||||
// Load images
|
||||
string imagesPath = "images.json";
|
||||
if (System.IO.File.Exists(imagesPath))
|
||||
{
|
||||
var json = System.IO.File.ReadAllText(imagesPath);
|
||||
images = System.Text.Json.JsonSerializer.Deserialize<List<Image>>(json) ?? new List<Image>();
|
||||
}
|
||||
|
||||
// Load vehicles
|
||||
string vehiclesPath = "vehicles.json";
|
||||
if (System.IO.File.Exists(vehiclesPath))
|
||||
{
|
||||
var json = System.IO.File.ReadAllText(vehiclesPath);
|
||||
vehicles = System.Text.Json.JsonSerializer.Deserialize<List<Vehicle>>(json) ?? new List<Vehicle>();
|
||||
}
|
||||
|
||||
// Link relations to vehicles
|
||||
LinkRelationsToVehicles();
|
||||
|
||||
// If no data exists, seed with sample data
|
||||
if (!vehicles.Any() && !owners.Any())
|
||||
{
|
||||
SeedData();
|
||||
}
|
||||
}
|
||||
|
||||
private void SeedData()
|
||||
{
|
||||
// Seed owners
|
||||
var owner1 = new Owner
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Jmeno = "Jan",
|
||||
Prijmeni = "Novak",
|
||||
Adresa = "Praha 1, Vaclavske namesti 1",
|
||||
Telefon = "+420 123 456 789",
|
||||
Email = "jan.novak@email.cz"
|
||||
};
|
||||
|
||||
var owner2 = new Owner
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Jmeno = "Marie",
|
||||
Prijmeni = "Svobodova",
|
||||
Adresa = "Brno, Husova 23",
|
||||
Telefon = "+420 987 654 321",
|
||||
Email = "marie.svobodova@email.cz"
|
||||
};
|
||||
|
||||
var owner3 = new Owner
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Jmeno = "Petr",
|
||||
Prijmeni = "Dvorak",
|
||||
Adresa = "Ostrava, Hlavni 45",
|
||||
Telefon = "+420 777 888 999",
|
||||
Email = "petr.dvorak@email.cz"
|
||||
};
|
||||
|
||||
owners.Add(owner1);
|
||||
owners.Add(owner2);
|
||||
owners.Add(owner3);
|
||||
|
||||
// Seed images (1x1 pixel placeholder images in different colors)
|
||||
var image1 = new Image
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Data = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPj/HwADBwIAMCbHYQAAAABJRU5ErkJggg==",
|
||||
FileName = "skoda_octavia.png",
|
||||
ContentType = "image/png"
|
||||
};
|
||||
|
||||
var image2 = new Image
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Data = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M/wHwAEBgIApD5fRAAAAABJRU5ErkJggg==",
|
||||
FileName = "bmw_x5.png",
|
||||
ContentType = "image/png"
|
||||
};
|
||||
|
||||
var image3 = new Image
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Data = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==",
|
||||
FileName = "tesla_model3.png",
|
||||
ContentType = "image/png"
|
||||
};
|
||||
|
||||
images.Add(image1);
|
||||
images.Add(image2);
|
||||
images.Add(image3);
|
||||
|
||||
// Seed vehicles
|
||||
vehicles.Add(new Vehicle
|
||||
{
|
||||
Spz = "1A2 3456",
|
||||
Znacka = "Skoda",
|
||||
Model = "Octavia",
|
||||
Barva = "#0055AA",
|
||||
RokVyroby = 2020,
|
||||
Palivo = "Benzín",
|
||||
NajeteKm = 45000,
|
||||
Cena = 350000,
|
||||
VlastnikId = owner1.Id,
|
||||
Vlastnik = owner1,
|
||||
FotografieId = image1.Id,
|
||||
Fotografie = image1
|
||||
});
|
||||
|
||||
vehicles.Add(new Vehicle
|
||||
{
|
||||
Spz = "7B8 9012",
|
||||
Znacka = "BMW",
|
||||
Model = "X5",
|
||||
Barva = "#000000",
|
||||
RokVyroby = 2019,
|
||||
Palivo = "Nafta",
|
||||
NajeteKm = 78000,
|
||||
Cena = 850000,
|
||||
VlastnikId = owner2.Id,
|
||||
Vlastnik = owner2,
|
||||
FotografieId = image2.Id,
|
||||
Fotografie = image2
|
||||
});
|
||||
|
||||
vehicles.Add(new Vehicle
|
||||
{
|
||||
Spz = "3C4 5678",
|
||||
Znacka = "Tesla",
|
||||
Model = "Model 3",
|
||||
Barva = "#FFFFFF",
|
||||
RokVyroby = 2022,
|
||||
Palivo = "Elektro",
|
||||
NajeteKm = 15000,
|
||||
Cena = 1200000,
|
||||
VlastnikId = owner3.Id,
|
||||
Vlastnik = owner3,
|
||||
FotografieId = image3.Id,
|
||||
Fotografie = image3
|
||||
});
|
||||
|
||||
// Save the seeded data
|
||||
Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user