Ejemplo n.º 1
0
        public ErfassungsabschlussModelValidator(
            ILocalizationService localizationService,
            IHistorizationService historizationService,
            IStrassenabschnittGISService strassenabschnittGISService,
            IMandantDetailsService mandantDetailsService)
            : base(localizationService)
        {
            var availabledDates = historizationService.GetAvailableErfassungsabschlussen().Select(x => x.AbschlussDate).ToList();

            RuleFor(m => m.AbschlussDate).ExclusiveBetween(availabledDates.First().AddDays(-1), availabledDates.Last().AddDays(1));
            RuleFor(m => m.AbschlussDate).Must((m, p) => !strassenabschnittGISService.AreThereLockedStrassenabschnitte()).WithMessage(localizationService.GetLocalizedError(ValidationError.JahresAbschlussStrassenabschnittLocked));
            RuleFor(m => m.AbschlussDate).Must((m, p) => mandantDetailsService.GetCurrentMandantDetails().IsCompleted);
        }
        private ErfassungsabschlussModel CreateErfassungsabschlussModel()
        {
            var availableErfassungsabschlussen = historizationService.GetAvailableErfassungsabschlussen().OrderBy(ea => ea.AbschlussDate);
            var erfassungsabschlussModel       = availableErfassungsabschlussen.FirstOrDefault();
            var dropDownItemList = availableErfassungsabschlussen
                                   .ToDropDownItemList(ea => ea.AbschlussDate.Year, ea => ea.AbschlussDate, erfassungsabschlussModel);

            ViewBag.ErfassungsabschlussModellen = dropDownItemList;

            ErfassungsPeriod currentErfassungsperiod = historizationService.GetCurrentErfassungsperiod();

            bool isThereMissingZustandsabschnitte;

            switch (currentErfassungsperiod.NetzErfassungsmodus)
            {
            case NetzErfassungsmodus.Summarisch:
                isThereMissingZustandsabschnitte = false;
                break;

            case NetzErfassungsmodus.Tabellarisch:
                isThereMissingZustandsabschnitte = strassenabschnittService.IsThereMissingZustandsabschnitte();
                break;

            case NetzErfassungsmodus.Gis:
                isThereMissingZustandsabschnitte = strassenabschnittGisService.IsThereMissingZustandsabschnitte();
                break;

            default:
                throw new ArgumentOutOfRangeException("NetzErfassungsmodus");
            }

            ViewBag.IsThereMissingZustandsabschnitte = isThereMissingZustandsabschnitte;
            ViewBag.IsMandantenDetailsCompleted      = mandantDetailsService.GetCurrentMandantDetails().IsCompleted;
            ViewBag.AreThereLockedStrassenabschnitte = strassenabschnittGisService.AreThereLockedStrassenabschnitte();
            ViewBag.NetzErfassungsmodus        = currentErfassungsperiod.NetzErfassungsmodus;
            ViewBag.LastClosedErfassungsPeriod = erfassungsPeriodService.GetNewestClosedErfassungsPeriod();
            ViewBag.IsLastClosedYear           = erfassungsPeriodService.GetClosedErfassungsPeriodModels().Count == 1;

            if (currentErfassungsperiod.NetzErfassungsmodus == NetzErfassungsmodus.Gis)
            {
                ViewBag.ApproxWaitTime = GisHistorizationTimeEstimate.GetApproxHistorizationTime(achsenSegmentService.GetCurrentEntities().Count());
            }

            return(erfassungsabschlussModel);
        }