public ActivityMedicalByStaffRoleTraineeValidator() : base() { //corert kann derzeit nicht mit AnonymousType umgehen. Vielleicht später: new { x.Activities, x.Staffs } this.RuleFor(x => new Tuple <IList <Activity>, IEnumerable <Staff> >(x.Activities, x.Staffs)) .Custom((a, ctx) => { var activities = a.Item1; var staffs = a.Item2; var trainees = staffs.Where(x => x.Role == StaffRole.Trainee).Select(x => x.Id).ToArray(); var medical = activities .Where(IsMedical) .Where(x => trainees.Contains(x.StaffId)) .ToArray(); foreach (var entry in medical) { var staff = staffs.Where(x => x.Id == entry.StaffId).First(); var msg = Validationmessages.TraineeMustNotContain06To10(staff); var index = activities.IndexOf(entry); ctx.AddFailure(new ValidationFailure($"{nameof(HkpvReport.Activities)}[{index}]", msg)); } }); }
public PersonalDataBirthdayValidator() { this.CascadeMode = CascadeMode.StopOnFirstFailure; RuleFor(x => x.Birthday) .NotEmpty(); RuleFor(x => x.Birthday) .SetValidator(new DateTimeValueValidator()); RuleFor(x => x.BirthdayD) .LessThan(DateTime.Today) .Unless(x => string.IsNullOrEmpty(x.Birthday)) .WithMessage(Validationmessages.BirthdayNotInFuture); RuleFor(x => x.BirthdayD) .GreaterThanOrEqualTo(new DateTime(1900, 01, 01)) .Unless(x => string.IsNullOrEmpty(x.Birthday)); RuleFor(x => x.BirthdayD) .Must(CheckDates) .Unless(x => string.IsNullOrEmpty(x.Birthday) || !SSNHelper.IsValid(x.Ssn)) .WithSeverity(Severity.Warning) .WithMessage(x => Validationmessages.BirthdayNotInSsn(x)); }
public HkpvReportStaffIdValidator() { this.RuleFor(x => x.Staffs) .Custom((list, ctx) => { foreach (var id in list.Select(x => x.Id).OrderBy(x => x).GroupBy(x => x).Where(x => x.Count() > 1)) { var item = list.Where(x => x.Id == id.Key).First(); var index = list.IndexOf(item); ctx.AddFailure(new ValidationFailure($"{nameof(HkpvReport.Staffs)}[{index}]", Validationmessages.IdIsNotUnique)); } }); //corert kann derzeit nicht mit AnonymousType umgehen. Vielleicht später: new { x.Staffs, x.Activities, x.Consultations } this.RuleFor(x => new Tuple <IList <Staff>, IEnumerable <Activity>, IEnumerable <Consultation> >(x.Staffs, x.Activities, x.Consultations)) .Custom((a, ctx) => { var staffs = a.Item1; var activities = a.Item2; var consultations = a.Item3; var idStaffs = staffs.Select(x => x.Id).Distinct().ToArray(); var idActivities = ( activities.Select(x => x.StaffId) .Union(consultations.Select(x => x.StaffId)) ).Distinct().ToArray(); foreach (var id in idStaffs.Except(idActivities)) { var item = staffs.Where(x => x.Id == id).First(); var index = staffs.IndexOf(item); ctx.AddFailure(new ValidationFailure($"{nameof(HkpvReport.Staffs)}[{index}]", Validationmessages.WithoutActivity)); } foreach (var id in idActivities.Except(idStaffs)) { ctx.AddFailure(new ValidationFailure(nameof(HkpvReport.Staffs), Validationmessages.IdIsMissing(id))); } }); }
private Action <RepeatedField <Consultation>, CustomContext> GetCutomValidation(ConsultationType type1, ConsultationType type2) { return((list, ctx) => { if (!list?.Any() ?? false) { return; } var entries31 = list.Where(x => x.Type == type1) .GroupBy(x => new DateStaffPerson { Date = x.DateD, StaffId = x.StaffId }) .Select(x => x.Key) .ToArray(); var entries32 = list.Where(x => x.Type == type2) .GroupBy(x => new DateStaffPerson { Date = x.DateD, StaffId = x.StaffId }) .Select(x => x.Key) .ToArray(); var error1 = entries31.Except(entries32).ToArray(); var error2 = entries32.Except(entries31).ToArray(); foreach (var entry in error1) { var item = list.Where(x => x.DateD == entry.Date && x.StaffId == entry.StaffId).First(); var index = list.IndexOf(item); ctx.AddFailure(new ValidationFailure($"{nameof(HkpvReport.Consultations)}[{index}]", Validationmessages.WithoutEntry(type2.ToString()))); } foreach (var entry in error2) { var item = list.Where(x => x.DateD == entry.Date && x.StaffId == entry.StaffId).First(); var index = list.IndexOf(item); ctx.AddFailure(new ValidationFailure($"{nameof(HkpvReport.Consultations)}[{index}]", Validationmessages.WithoutEntry(type1.ToString()))); } }); }
public PersonalDataSsnIsUniqueValidator() { RuleFor(x => x.PersonalData) .Custom((list, ctx) => { var dublicates = list.Where(x => !string.IsNullOrEmpty(x.Ssn)) .GroupBy(x => x.Ssn) .Where(x => x.Count() > 1); foreach (var entry in dublicates) { ctx.AddFailure(new ValidationFailure(nameof(HkpvReport.PersonalData), Validationmessages.SsnNotUnique(entry))); } }); }
public HkpvReportPersonIdValidator() { this.RuleFor(x => x.Persons) .Custom((list, ctx) => { foreach (var id in list.Select(x => x.Id).OrderBy(x => x).GroupBy(x => x).Where(x => x.Count() > 1)) { var item = list.Where(x => x.Id == id.Key).First(); var index = list.IndexOf(item); ctx.AddFailure(new ValidationFailure($"{nameof(HkpvReport.Persons)}[{index}]", Validationmessages.IdIsNotUnique)); } }); this.RuleFor(x => x.PersonalData) .Custom((list, ctx) => { foreach (var id in list.Select(x => x.Id).OrderBy(x => x).GroupBy(x => x).Where(x => x.Count() > 1)) { var item = list.Where(x => x.Id == id.Key).First(); var index = list.IndexOf(item); ctx.AddFailure(new ValidationFailure($"{nameof(HkpvReport.PersonalData)}[{index}]", Validationmessages.IdIsNotUnique)); } }); //corert kann derzeit nicht mit AnonymousType umgehen. Vielleicht später: new { x.Persons, x.PersonalData } this.RuleFor(x => new Tuple <IList <Person>, IList <PersonalData> >(x.Persons, x.PersonalData)) .Custom((a, ctx) => { var persons = a.Item1; var personalData = a.Item2; var idPersons = persons.Select(x => x.Id).Distinct().ToArray(); var idPersonalData = personalData.Select(x => x.Id).Distinct().ToArray(); foreach (var id in idPersons.Except(idPersonalData)) { var item = persons.Where(x => x.Id == id).First(); var index = persons.IndexOf(item); ctx.AddFailure(new ValidationFailure($"{nameof(HkpvReport.Persons)}[{index}]", Validationmessages.PersonWithoutPersonalDate)); } foreach (var id in idPersonalData.Except(idPersons)) { var item = personalData.Where(x => x.Id == id).First(); var index = personalData.IndexOf(item); ctx.AddFailure(new ValidationFailure($"{nameof(HkpvReport.PersonalData)}[{index}]", Validationmessages.PersonWithoutData)); } }); //corert kann derzeit nicht mit AnonymousType umgehen. Vielleicht später: new { x.Persons, x.Activities } this.RuleFor(x => new Tuple <IList <Person>, IList <Activity> >(x.Persons, x.Activities)) .Custom((a, ctx) => { var persons = a.Item1; var activities = a.Item2; var idPersons = persons.Select(x => x.Id).Distinct().ToArray(); var idActivities = activities.Select(x => x.PersonId).Distinct().ToArray(); foreach (var id in idPersons.Except(idActivities)) { var item = persons.Where(x => x.Id == id).First(); var index = persons.IndexOf(item); ctx.AddFailure(new ValidationFailure($"{nameof(HkpvReport.Persons)}[{index}]", Validationmessages.WithoutActivity)); } foreach (var id in idActivities.Except(idPersons)) { var item = activities.Where(x => x.PersonId == id).First(); var index = activities.IndexOf(item); ctx.AddFailure(new ValidationFailure($"{nameof(HkpvReport.Activities)}[{index}]", Validationmessages.IdIsMissing(id))); } }); }
public ActivityValidator123And15() { RuleFor(x => x.Activities) .Custom((list, ctx) => { if (!list?.Any() ?? false) { return; } var l = list .Where(x => !string.IsNullOrEmpty(x.Date)) .Where(x => x.Amount > 0) .Where(x => !string.IsNullOrEmpty(x.StaffId)) .Where(x => !string.IsNullOrEmpty(x.PersonId)); var entries123 = l.Where(x => x.Type == ActivityType.Lv01 || x.Type == ActivityType.Lv02 || x.Type == ActivityType.Lv03) .GroupBy(x => new DateStaffPerson { Date = x.DateD, StaffId = x.StaffId, PersonId = x.PersonId }) .Select(x => x.Key) .ToArray(); var entries4 = l.Where(x => ((int)x.Type > 3)) .GroupBy(x => new DateStaffPerson { Date = x.DateD, StaffId = x.StaffId, PersonId = x.PersonId }) .Select(x => x.Key) .ToArray(); var error1 = entries123.Except(entries4).ToArray(); var error2 = entries4.Except(entries123).ToArray(); foreach (var entry in error1) { var item = list.Where(x => x.DateD == entry.Date && x.StaffId == entry.StaffId && x.PersonId == entry.PersonId).First(); var index = list.IndexOf(item); ctx.AddFailure(new ValidationFailure($"{nameof(HkpvReport.Activities)}[{index}]", Validationmessages.WithoutEntry("15"))); } foreach (var entry in error2) { var item = list.Where(x => x.DateD == entry.Date && x.StaffId == entry.StaffId && x.PersonId == entry.PersonId).First(); var index = list.IndexOf(item); ctx.AddFailure(new ValidationFailure($"{nameof(HkpvReport.Activities)}[{index}]", Validationmessages.WithoutEntry("1,2,3"))); } }); }