diff --git a/CarManagerV3/Car.cs b/CarManagerV3/Car.cs
index 97c0e70..8d9ec64 100644
--- a/CarManagerV3/Car.cs
+++ b/CarManagerV3/Car.cs
@@ -6,63 +6,109 @@ using System.Threading.Tasks;
namespace CarManagerV3
{
+ ///
+ /// Class Car represents a car with various attributes such as make, model, year, color, mileage, and price.
+ ///
public class Car
{
- int id;
- string make;
- string model;
- int year;
- string color;
- int mileage;
- decimal price;
- int order;
+ public int Id;
+ public string Make;
+ public string Model;
+ public int Year;
+ public string Color;
+ public int Mileage;
+ public decimal Price;
+ public int Order;
+ //TODO: Make Id read-only CUID. Allows for better integrity, especially when merging.
+ //TODO: Add buying price and automatic calculation of profit/loss with selling price suggestion.
+ //TODO: Add Buying Date.
+ //TODO: Add sold boolean and Sold Date.
+ //TODO: Add "hidden" attribute for cars that are not for sale anymore but should be kept in the database for records.
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The unique identifier as an Integer.
+ /// The make / manufacturer of the car.
+ /// The model.
+ /// The year the car was built.
+ /// The color of the car.
+ /// The current mileage on the car.
+ /// The selling-price of the car.
+ /// The order.
public Car(int id, string make, string model, int year, string color, int mileage, decimal price, int order = 0)
{
- this.id = id;
- this.make = make;
- this.model = model;
- this.year = year;
- this.color = color;
- this.mileage = mileage;
- this.price = price;
- this.order = order;
+ this.Id = id;
+ this.Make = make;
+ this.Model = model;
+ this.Year = year;
+ this.Color = color;
+ this.Mileage = mileage;
+ this.Price = price;
+ this.Order = order;
}
- public int Id { get { return id; } set { id = value; } }
- public string Make { get { return make; } set { make = value; } }
- public string Model { get { return model; } set { model = value; } }
- public int Year { get { return year; } set { year = value; } }
- public string Color { get { return color; } set { color = value; } }
- public int Mileage { get { return mileage; } set { mileage = value; } }
- public decimal Price { get { return price; } set { price = value; } }
- public int Order { get { return order; } set { order = value; } }
-
+ ///
+ /// Converts to string in a custom readable format.
+ ///
+ /// For Example:
+ /// Skoda Fabia (2015)
+ ///
+ ///
+ ///
+ /// A that represents this instance.
+ ///
public override string ToString()
{
- return $"{make} {model} ({year})";
+ return $"{this.Make} {this.Model} ({this.Year})";
}
+ ///
+ /// Converts to default CSV savable string.
+ ///
+ ///
public string ToCsvString()
{
- return $"{id};{make};{model};{year};{color};{mileage};{price}";
+ return $"{this.Id};{this.Make};{this.Model};{this.Year};{this.Color};{this.Mileage};{this.Price}";
}
+ //TODO: Add error handling for malformed CSV strings and detection for missing fields.
+ //TODO: Add support for different CSV formats (e.g., different delimiters, quoted fields, etc.).
+ //TODO: Add support for nil or optional fields.
+ //TODO: Add detectin for invalid data / nonsensical values (e.g., negative mileage or year in the future). / Validate it actually is a car.
+ ///
+ /// Creates a instance from a CSV string in the default format.
+ ///
+ /// The CSV Line.
+ ///
+ /// A new instance.
+ ///
public static Car FromCsvString(string csv)
{
string[] parts = csv.Split(';');
return new Car(int.Parse(parts[0]), parts[1], parts[2], int.Parse(parts[3]), parts[4], int.Parse(parts[5]), decimal.Parse(parts[6]));
}
+ ///
+ /// Determines whether this is any different from the provided .
+ ///
+ /// The to check against
+ ///
+ /// true if the specified other is changed; otherwise, false.
+ ///
public bool IsChanged(Car other)
{
- return make != other.make || model != other.model || year != other.year || color != other.color || mileage != other.mileage || price != other.price || other.color != color;
+ return this.Make != other.Make || this.Model != other.Model || this.Year != other.Year || this.Color != other.Color || this.Mileage != other.Mileage || this.Price != other.Price || this.Color != other.Color;
}
+ ///
+ /// Clones this instance.
+ ///
+ /// An identical but seperate
public Car Clone()
{
- return new Car(id, make, model, year, color, mileage, price);
+ return new Car(this.Id, this.Make, this.Model, this.Year, this.Color, this.Mileage, this.Price);
}
}
}