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); } } }