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); }