using Quadarax.Application.QLiberace.Base.Repositories; using Quadarax.Application.QLiberace.Customer.Enums; using Quadarax.Foundation.Core.Value; using Quadarax.Foundation.Core.Value.Extensions; namespace Quadarax.Application.QLiberace.Customer.Dtos.Validators { public class ContactValidator : Validator { protected override void OnValidate(ContactWDto validatingObject, ValidatorContext context) { CheckIfEmpty("Address", validatingObject.Address, ValidationResult.ValidationSeverityEnum.Error); CheckIfStringMaxLengthOverflow("Address", validatingObject.Address, 100, ValidationResult.ValidationSeverityEnum.Error); CheckIfStringMaxLengthOverflow("Address1", validatingObject.Address1, 100, ValidationResult.ValidationSeverityEnum.Error); CheckIfEmpty("Caption", validatingObject.Caption, ValidationResult.ValidationSeverityEnum.Error); CheckIfStringMaxLengthOverflow("Caption", validatingObject.Caption, 100, ValidationResult.ValidationSeverityEnum.Error); if (validatingObject.Type == ContactTypeEnum.Address) { CheckIfEmpty("City", validatingObject.City, ValidationResult.ValidationSeverityEnum.Error); CheckIfStringMaxLengthOverflow("City", validatingObject.City, 50, ValidationResult.ValidationSeverityEnum.Error); CheckIfEmpty("Zip", validatingObject.Zip, ValidationResult.ValidationSeverityEnum.Error); CheckIfStringMaxLengthOverflow("Zip", validatingObject.Zip, 20, ValidationResult.ValidationSeverityEnum.Error); } if (validatingObject.Type.In(ContactTypeEnum.Address, ContactTypeEnum.Phone, ContactTypeEnum.Sms)) { CheckIfEmpty("CountryCode", validatingObject.CountryCode, ValidationResult.ValidationSeverityEnum.Error); CheckIfStringMaxLengthOverflow("CountryCode", validatingObject.CountryCode, 100, ValidationResult.ValidationSeverityEnum.Error); if (!string.IsNullOrEmpty(validatingObject.CountryCode)) { var rcurr = context.GetValue("RepoCountry"); CheckIfNull("CountryCode", rcurr.GetByCode(validatingObject.CountryCode), ValidationResult.ValidationSeverityEnum.Error, $"Contact CountryCode not match country code '{validatingObject.CountryCode}' with enumeration"); } } } } }