/// <summary>
        ///     U1 - Príchod zákazníka
        ///     Naplánujem:
        ///     -	Začiatok spracovania objednávky - naplánujem udalosť okamžite, ak je volny pracovnik.
        ///     -	Front čakajúcich zákazníkov - Vložím do frontu čakajúcich zákazníkov zákazníka s aktuálnym časom príchodu.
        ///     -	Príchod nového zákazníka s vygenerovaným časom z Generátora 1.
        ///     Štatistiky:
        ///     -	S1a - Začnem merať čas čakania zákazníka v rade čakajúcich zákazníkov na zadanie objednávky.
        ///     -	S2a  – Pripočítam jedného zákazníka v rade čakajúcich zákazníkov.
        ///     -	S3a - Začnem počítať čas strávený zákazníkov v servise.
        /// </summary>
        public override void Execute()
        {
            if (AktualnyZakaznik == null)
            {
                throw new Exception("NULL zakaznik. ");
            }

            AktualnyZakaznik.S1_ZacniCakanie_front_cakajucich_zakaznikov(EventTime);
            AktualnyZakaznik.S3_ZacniCakanie_bytia_v_servise(EventTime);
            ((AppCore)ReferenceSimCore).S2_AddValue();

            if (((AppCore)ReferenceSimCore).JeVolnyPracovnik1())
            {
                //obsad volneho pracovnik
                ((AppCore)ReferenceSimCore).ObsadPracovnikaSkupiny1();

                var zadanie = new ZaciatokSpracovaniaObjednavkyEvent(EventTime, ReferenceSimCore, AktualnyZakaznik);
                ReferenceSimCore.ScheduleEvent(zadanie);
            }
            else
            {
                ((AppCore)ReferenceSimCore).S2_AddValue();

                //inak vlozim zakaznika do frontu cakajucich zakaznikov
                ((AppCore)ReferenceSimCore).Front_CakajuciZakaznici_PridajZakaznika(AktualnyZakaznik);
            }

            //naplanujem novy prichod zákazníka
            var a       = ((AppCore)ReferenceSimCore).Gen.Generator1_ZakazniciPrichod();
            var time    = EventTime + a;
            var prichod = new PrichodZakaznikaEvent(time, ReferenceSimCore, new Zakaznik());

            ReferenceSimCore.ScheduleEvent(prichod);
        }
        /// <summary>
        ///     U9 - Odchod zákazníka
        /// </summary>
        /// Uvoľním zákazníka zo systému.
        /// Naplánujem:
        /// -	Preparkovanie auta pred dielnou – naplánujem okamžite.
        /// Štatistiky:
        /// -	S4b - Skončím počítanie času stráveným zákazníkom čakaním na opravu.
        public override void Execute()
        {
            ((AppCore)ReferenceSimCore).S4_AddValue(AktualnyZakaznik.S4_SkonciCakanie_oprava(EventTime));
            ((AppCore)ReferenceSimCore).S5_AddValue(AktualnyZakaznik.S5_SkonciCakanie_system(EventTime));
            AktualnyZakaznik = null;

            var preparkovanie = new PreparkovanieAutoEvent(EventTime, ReferenceSimCore, null);

            ((AppCore)ReferenceSimCore).ScheduleEvent(preparkovanie);

            ((AppCore)ReferenceSimCore).PocetLudiOdisli++;
        }
示例#3
0
        /// <summary>
        ///     U2 - Začiatok spracovania objednávky
        ///     Naplánujem:
        ///     -	Koniec spracovania objednávky,
        ///     tak naplánujem udalosť v čase vygenerovaným Generátorom 3 – prevzatie objednávky.
        ///     Znížim počet voľných pracovníkov o jedna.
        /// </summary>
        public override void Execute()
        {
            if (AktualnyZakaznik == null)
            {
                throw new Exception("NULL zakaznik. ");
            }

            ((AppCore)ReferenceSimCore).S1_AddValue(
                AktualnyZakaznik.S1_SkonciCakanie_front_cakajucich_zakaznikov(EventTime));

            //naplanujem spracovanie objednavky
            var time        = EventTime + ((AppCore)ReferenceSimCore).Gen.Generator3_PrevzatieObjednavky();
            var spracovanie = new KoniecSpracovaniaObjednavky(time, ReferenceSimCore, AktualnyZakaznik);

            ReferenceSimCore.ScheduleEvent(spracovanie);
        }
        /// <summary>
        ///     U4 - Prevzatie auta od zákazníka
        ///     Naplánujem:
        ///     -	Preparkovanie auta pred dielnou s vygenerovaným časom Generátora 5 – preparkovanie.
        ///     Štatistiky:
        ///     -	S3b – Skončím počítanie doby stráveného v servise.
        ///     -	S4a – Začnem merať čas strávený čakaním na opravu. (od ukončenia prevzatia auta do servisu)
        /// </summary>
        public override void Execute()
        {
            if (AktualnyZakaznik == null)
            {
                throw new Exception("NULL zakaznik. ");
            }

            //statistiky
            ((AppCore)ReferenceSimCore).S3_AddValue(AktualnyZakaznik.S3_SkonciCakanie_bytia_v_servise(EventTime));
            AktualnyZakaznik.S4_ZacniCakanie_oprava(EventTime);

            //naplanujem preparkovanie auta
            var time          = EventTime + ((AppCore)ReferenceSimCore).Gen.Generator5_Preparkovanie();
            var preparkovanie = new PreparkovanieAutoEvent(time, ReferenceSimCore, AktualnyZakaznik);

            ReferenceSimCore.ScheduleEvent(preparkovanie);
        }