Example #1
0
        /// <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();
     }
 }
Example #3
0
        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"));
                    }
                }
            }
        }