Per favore portami se la domanda non è ben strutturata.
Per metterti nel contesto del mio problema:
Sto costruendo un'applicazione che fa fatturare ai veicoli la durata in un parcheggio. Oltre al servizio di soggiorno ci sono altri servizi. Ogni servizio ha una propria logica di calcolo.
Ecco un'illustrazione (correggimi se il disegno è sbagliato):
public abstract class Service
{
public int Id { get; set; }
public bool IsActivated { get; set; }
public string Name { get; set }
public decimal Price { get; set; }
}
public class VehicleService : Service
{
//MTM : many to many
public virtual ICollection<MTMVehicleService> Vehicles { get; set; }
}
public class StayService : VehicleService
{
}
public class Vehicle
{
public int Id { get; set; }
public string ChassisNumber { get; set; }
public DateTime? EntryDate { get; set; }
public DateTime? DeliveryDate { get; set; }
//...
public virtual ICollection<MTMVehicleService> Services{ get; set; }
}
Ora, mi sto concentrando sul servizio di soggiorno come esempio:
Vorrei sapere al momento della fatturazione quale classe (i) sarebbe responsabile della generazione della fattura per il servizio e per ciascun veicolo? Questo dovrebbe calcolare il costo della durata sapendo che la durata potrebbe essere fatturata parzialmente, quindi la regola è la seguente: non ancora giorni di soggiorno fatturati * soggiorno prezzo al giorno.
In questo momento InvoiceItemsGenerator fa tutto ma sono consapevole che esiste un design migliore.