/// <summary> /// Auto setup options validation logic. /// </summary> /// <param name="validationContext">The validation context.</param> /// <returns>The collection of errors.</returns> public IEnumerable <ValidationResult> Validate(ValidationContext validationContext) { if (!String.IsNullOrWhiteSpace(AutoSetupPath) && !AutoSetupPath.StartsWith("/")) { yield return(new ValidationResult($"The field '{nameof(AutoSetupPath)}' should be empty or start with '/'.")); } if (Tenants.Count == 0) { yield return(new ValidationResult($"The field '{nameof(Tenants)}' should contain at least one tenant.")); } if (Tenants.Count(tenant => tenant.IsDefault) != 1) { yield return(new ValidationResult("The single 'Default' tenant should be provided.")); } if (LockOptions != null && (LockOptions.LockExpiration <= 0 || LockOptions.LockTimeout <= 0)) { yield return(new ValidationResult("Lock option's 'LockExpiration' and 'LockTimeout' should be greater than zero.")); } foreach (var validationResult in Tenants.SelectMany(tenant => tenant.Validate(validationContext))) { yield return(validationResult); } }
// .... public void AddSampleData() { // add samples only if there's no record. if (Tenants.Count() == 0) { Tenants.Add(new Tenant { Id = MultitenantDbContext.Tenant1Id, Name = "Imaginary corp.", HostName = "imaginary.example.com" }); Tenants.Add(new Tenant { Id = MultitenantDbContext.Tenant2Id, Name = "The Very Big corp.", HostName = "big.example.com" }); SaveChanges(); } }
public IEnumerable <ValidationResult> Validate(ValidationContext validationContext) { if (Tenants == null || Tenants.Count == 0) { yield return(new ValidationResult("There must be at least 1 tenant")); } else if (Tenants.Count(c => c.IsAdult && c.IsLeadTenant) < 1) { yield return(new ValidationResult("There must be at least 1 lead adult tenant")); } if (Tenants.Any(c => c.IsAdult && (c.Contacts == null || c.Contacts.Count < 1))) { yield return(new ValidationResult("All tenants must have at least one contact")); } if (Tenants.Any(c => c.IsAdult && (c.Addresses == null || c.Addresses.Count < 1))) { yield return(new ValidationResult("All tenants must have at least one previous address")); } foreach (var tenantViewModel in Tenants) { if (tenantViewModel.IsAdult) { var start = DateTime.Now.Date.StartOfMonth(); foreach (var tenantAddressViewModel in tenantViewModel.Addresses) { start = start.Date.AddYears(tenantAddressViewModel.YearsAtAddress * -1).AddMonths(tenantAddressViewModel.MonthsAtAddress * -1); } if (start > DateTime.Now.Date.StartOfMonth().AddYears(-3)) { yield return(new ValidationResult("Each tenant must supply at least 3 years address details")); } } } }