示例#1
0
        /// <summary>
        /// Checks if municipality code list is valid or not.
        /// </summary>
        /// <returns></returns>
        public override void Validate(ModelStateDictionary modelState)
        {
            if (Model == null)
            {
                return;
            }

            var i = 0;

            Model.ForEach(code =>
            {
                var municipality = new MunicipalityCodeValidator(code, codeService, $"{PropertyName}[{ i++ }]");
                municipality.Validate(modelState);
            });
        }
示例#2
0
        /// <summary>
        /// Checks if address is valid or not.
        /// </summary>
        /// <param name="modelState"></param>
        public override void Validate(ModelStateDictionary modelState)
        {
            if (Model == null)
            {
                return;
            }

            // Visiting address cannot be post office box
            if (Model.Type == AddressCharacterEnum.Visiting.ToString() && Model.SubType == AddressTypeEnum.PostOfficeBox.ToString())
            {
                modelState.AddModelError(PropertyName, "The field is invalid. 'SubType' cannot have value 'PostOfficeBox' when 'Type' = 'Visiting'.");
                return;
            }

            if (Model.SubType == AddressTypeEnum.PostOfficeBox.ToString())
            {
                if (Model.PostOfficeBoxAddress == null)
                {
                    return;
                }

                // Validate municipality code
                var municipality = new MunicipalityCodeValidator(Model.PostOfficeBoxAddress.Municipality, codeService, $"{PropertyName}.PostOfficeBoxAddress.Municipality");
                municipality.Validate(modelState);

                // Validate postal code
                var postalCode = new PostalCodeValidator(Model.PostOfficeBoxAddress.PostalCode, codeService, $"{PropertyName}.PostOfficeBoxAddress.PostalCode");
                postalCode.Validate(modelState);
            }
            else if (Model.SubType == AddressTypeEnum.Street.ToString() || Model.SubType == AddressConsts.SINGLE)
            {
                if (Model.StreetAddress == null)
                {
                    return;
                }

                // Validate municipality code
                var municipality = new MunicipalityCodeValidator(Model.StreetAddress.Municipality, codeService, $"{PropertyName}.StreetAddress.PostOfficeBoxAddress.Municipality");
                municipality.Validate(modelState);

                // Validate postal code
                var postalCode = new PostalCodeValidator(Model.StreetAddress.PostalCode, codeService, $"{PropertyName}.StreetAddress.PostalCode");
                postalCode.Validate(modelState);
            }
        }
        /// <summary>
        /// Validate organization model.
        /// </summary>
        public override void Validate(ModelStateDictionary modelState)
        {
            OrganizationTypeEnum?organizationType = null;

            if (!Model.OrganizationType.IsNullOrEmpty())
            {
                organizationType = Model.OrganizationType.Parse <OrganizationTypeEnum>();
            }

            name.Validate(modelState);

            // Validate municipality
            if (organizationType != OrganizationTypeEnum.Municipality && !Model.Municipality.IsNullOrEmpty())
            {
                modelState.AddModelError("Municipality", $"No Municipality accepted when OrganizationType has value {Model.OrganizationType}.");
            }
            else
            {
                municipality.Validate(modelState);
            }

            addresses.Validate(modelState);
            organizationId.Validate(modelState);
            oid.Validate(modelState);
            phones.Validate(modelState);
            status.Validate(modelState);

            // Validate organization descriptions: ShortDescription on is mandatory on versions 7+
            if (versionNumber >= 7)
            {
                description.Validate(modelState);
            }

            // Validate area data according to organization type
            switch (organizationType)
            {
            case OrganizationTypeEnum.Municipality:
            case OrganizationTypeEnum.TT1:
            case OrganizationTypeEnum.TT2:
                // No area info accepted if organization type is Municipality, TT1 or TT2 - except default value areaType => WholeCountry!
                if (!Model.AreaType.IsNullOrEmpty() && Model.AreaType != AreaInformationTypeEnum.WholeCountry.ToString())
                {
                    modelState.AddModelError("AreaType", $"Value '{ Model.AreaType}' not accepted when OrganizationType has value {Model.OrganizationType}.");
                }
                if (!Model.SubAreaType.IsNullOrEmpty())
                {
                    modelState.AddModelError("SubAreaType", $"No SubAreaType accepted when OrganizationType has value {Model.OrganizationType}.");
                }
                if (Model.Areas?.Count > 0)
                {
                    modelState.AddModelError("Areas", $"No Areas accepted when OrganizationType has value {Model.OrganizationType}.");
                }
                break;

            case OrganizationTypeEnum.RegionalOrganization:
                // Only AreaType is accepted if organization type is RegionalOrganization.
                if (Model.AreaType != AreaInformationTypeEnum.AreaType.ToString())
                {
                    modelState.AddModelError("AreaType", $"Value {AreaInformationTypeEnum.AreaType.ToString()} required when OrganizationType has value {Model.OrganizationType}.");
                }

                // Validate the area codes
                ValidateAreas(modelState);

                break;

            case null:
                if (!Model.AreaType.IsNullOrEmpty() || !Model.SubAreaType.IsNullOrEmpty() || Model.Areas?.Count > 0)
                {
                    modelState.AddModelError("OrganizationType", $"OrganizationType field is required when AreaType, SubAreaType or Areas has values.");
                }
                break;

            default:
                if (Model.AreaType != AreaInformationTypeEnum.AreaType.ToString() && !Model.SubAreaType.IsNullOrEmpty())
                {
                    modelState.AddModelError("SubAreaType", $"No SubAreaType accepted when AreaType has value {Model.AreaType}.");
                }
                if (Model.AreaType != AreaInformationTypeEnum.AreaType.ToString() && Model.Areas?.Count > 0)
                {
                    modelState.AddModelError("Areas", $"No Areas accepted when AreaType has value {Model.AreaType}.");
                }
                // For State, Organization and Company types we are validating the area codes
                ValidateAreas(modelState);
                break;
            }
        }