Example #1
0
        public void StringWithZerosShouldThrowException()
        {
            // arrange
            var sut   = new DigitalisierungsKontingentParser();
            var input = "0 Aufträge in 1 Tag";

            // act
            var action = (Action)(() => { sut.Parse(input); });

            // assert
            action.Should().Throw <Exception>();
        }
Example #2
0
        public void InvalidRegexShouldThrowException()
        {
            // arrange
            var sut   = new DigitalisierungsKontingentParser();
            var input = "2 Paar Schuhe";

            // act
            var action = (Action)(() => { sut.Parse(input); });

            // assert
            action.Should().Throw <Exception>();
        }
Example #3
0
        public void EingabeInSingularShouldWork()
        {
            // arrange
            var sut   = new DigitalisierungsKontingentParser();
            var input = "1 Auftrag in 1 Tag";

            // act
            var result = sut.Parse(input);

            // assert
            result.AnzahlAuftraege.Should().Be(1);
            result.InAnzahlTagen.Should().Be(1);
        }
Example #4
0
        public void EingabeInPluralAndSingularWithWhitespaceShouldWork()
        {
            // arrange
            var sut   = new DigitalisierungsKontingentParser();
            var input = "2    Aufträge      in 1 Tag";

            // act
            var result = sut.Parse(input);

            // assert
            result.AnzahlAuftraege.Should().Be(2);
            result.InAnzahlTagen.Should().Be(1);
        }
        /// <summary>
        ///     Berechnet und setzt das Feld TerminDigitalisierung falls es noch leer ist.
        /// </summary>
        private void InitialiseDigitalisierungsTermin()
        {
            Debug.Assert(Context.Ordering.OrderDate != null, "Ordering.OrderDate != null");

            if (Context.OrderItem.TerminDigitalisierung != null)
            {
                return;
            }

            var parameterHelper           = new ParameterHelper();
            var setting                   = parameterHelper.GetSetting <KontingentDigitalisierungsauftraegeSetting>();
            var digitalisierungsKategorie = Context.OrderItem.DigitalisierungsKategorie;

            string kontingentString;

            switch (digitalisierungsKategorie)
            {
            case DigitalisierungsKategorie.Intern:
                kontingentString = setting.Intern;
                break;

            case DigitalisierungsKategorie.Oeffentlichkeit:
                kontingentString = setting.Oeffentlichkeit;
                break;

            case DigitalisierungsKategorie.Gesuch:
                kontingentString = setting.Gesuche;
                break;

            case DigitalisierungsKategorie.Amt:
                kontingentString = setting.Amt;
                break;

            case DigitalisierungsKategorie.Forschungsgruppe:
                kontingentString = setting.DDS;
                break;

            default:
                return;
            }

            var parser     = new DigitalisierungsKontingentParser();
            var kontingent = parser.Parse(kontingentString);

            var orderDate = (DateTime)Context.Ordering.OrderDate;

            // ToDo: await correctly, when state machine is async
            var latestTermine = Context.OrderDataAccess.GetLatestDigitalisierungsTermine(Context.Besteller.Id,
                                                                                         orderDate, digitalisierungsKategorie)
                                .ConfigureAwait(false)
                                .GetAwaiter()
                                .GetResult();;

            var terminManager = new DigitalisierungsTerminManager(Context.OrderDataAccess);
            var newTermin     = terminManager.GetNextPossibleTermin(orderDate, latestTermine, kontingent);

            Context.OrderItem.TerminDigitalisierung = newTermin;
            Context.OrderDataAccess.UpdateOrderItem(Context.OrderItem)
            .ConfigureAwait(false)
            .GetAwaiter()
            .GetResult();     // Update ist nötig, damit die Aufräge die in der selben Transaktion verarbeitet werden den richtigen Digitalisierungtermin erhalten
        }