/// <summary> /// Costruttore della classe /// </summary> /// <param name="codiceUnitaOperativa"> /// L'unità operativa con cui vengono etichettate le richieste generate /// </param> /// <param name="getMezziInServizioPerUnitaOperativa"> /// Servizio per il recupero dei mezzi in servizio /// </param> /// <param name="dataMin"> /// L'estremo inferiore dell'intervallo in cui le richieste possono essere generate /// </param> /// <param name="dataMax"> /// L'estremo superiore dell'intervallo in cui le richieste possono essere generate /// </param> /// <param name="richiesteMedieAlGiorno">Numero medio di richieste generate in ogni giorno</param> /// <param name="mediaSecondiPartenzaDallaSedeSuccessive"> /// Il numero medio di secondi dopo i quali una partenza ritardata (cioè successiva alle /// prime immediatamente inviate) esce dalla sede /// </param> /// <param name="mediaSecondiArrivoSulPosto"> /// Numero medio di secondi di durata del viaggio di un mezzo verso il luogo del sinistro /// </param> /// <param name="mediaSecondiDurataIntervento"> /// Numero medio di secondi di durata della permanenza di un mezzo sul luogo del sinistro /// </param> /// <param name="mediaSecondiRientroInSede"> /// Numero medio di secondi di durata del viaggio di rientro di un mezzo verso la sede (se /// non viene rediretto su altra richiesta) /// </param> /// <param name="pesiNumeroMezziPartecipanti"> /// Pesi del numero di mezzi partecipanti ad un intervento (per es. se i pesi sono[0.75, /// 0.20, 0.05] significa che al 75% un intervento ha un solo mezzo, al 20% ne ha due, al /// 5% ne ha tre). /// </param> /// <param name="generatoreCoordinateInterventoPerUO"> /// Servizio di generazione fake delle coordinate dell'intervento /// </param> public GeneratoreRichieste( string codiceUnitaOperativa, IGetMezziInServizioPerUnitaOperativa getMezziInServizioPerUnitaOperativa, DateTime dataMin, DateTime dataMax, int richiesteMedieAlGiorno, int mediaSecondiPartenzaDallaSedeSuccessive, int mediaSecondiArrivoSulPosto, int mediaSecondiDurataIntervento, int mediaSecondiRientroInSede, float[] pesiNumeroMezziPartecipanti, GeneratoreCoordinateInterventoPerUO generatoreCoordinateInterventoPerUO) { this.codiceUnitaOperativa = codiceUnitaOperativa; this.getMezziInServizioPerUnitaOperativa = getMezziInServizioPerUnitaOperativa ?? throw new ArgumentNullException(nameof(getMezziInServizioPerUnitaOperativa)); this.dataMin = dataMin; this.dataMax = dataMax; this.richiesteMedieAlGiorno = richiesteMedieAlGiorno; this.mediaSecondiPartenzaDallaSedeSuccessive = mediaSecondiPartenzaDallaSedeSuccessive; this.mediaSecondiArrivoSulPosto = mediaSecondiArrivoSulPosto; this.mediaSecondiDurataIntervento = mediaSecondiDurataIntervento; this.mediaSecondiRientroInSede = mediaSecondiRientroInSede; this.pesiNumeroMezziPartecipanti = pesiNumeroMezziPartecipanti; this.generatoreCoordinateInterventoPerUO = generatoreCoordinateInterventoPerUO ?? throw new ArgumentNullException(nameof(generatoreCoordinateInterventoPerUO)); }
/// <summary> /// Costruttore della classe /// </summary> /// <param name="numeroMezzi">Il numero dei mezzi costituente il parco</param> /// <param name="codiceUnitaOperativa"> /// L'unità operativa alla quale appartengono i mezzi (l'etichetta viene usata per creare /// il codice di un mezzo) /// </param> public ParcoMezzi(IGetMezziInServizioPerUnitaOperativa getMezziInServizioPerUnitaOperativa, string codiceUnitàOperativa) { var pinNodo = new PinNodo(codiceUnitàOperativa, true); var mezzi = getMezziInServizioPerUnitaOperativa.Get(new[] { pinNodo }); this.mezzi = mezzi.Select(m => new MezzoInSimulazione(m)).ToArray(); }