public void IsValid() { if (Purpose == AddressPurposeType.Shipping) { if (Name.IsNullorEmpty()) { throw new ArgumentException("Nome inválido"); } if (ContactName.IsNullorEmpty()) { throw new ArgumentException("Nome do destinatário inválido"); } } if (Type == AddressType.None) { Type = AddressType.HomeAddress; } if (ZipCode.IsNullorEmpty() || ZipCode.ClearStrings().Length != 8) { throw new ArgumentException("CEP inválido"); } if (Street.IsNullOrWhiteSpace()) { throw new ArgumentException("Logradouro inválido"); } if (Number.IsNullorEmpty()) { throw new ArgumentException("Número inválido"); } if (District.IsNullorEmpty()) { throw new ArgumentException("Bairro inválido"); } if (City.IsNullorEmpty()) { throw new ArgumentException("Cidade inválida"); } List <string> states = new List <string>() { "AC", "AL", "AP", "AM", "BA", "CE", "DF", "ES", "GO", "MA", "MT", "MS", "MG", "PA", "PB", "PR", "PE", "PI", "RJ", "RN", "RS", "RO", "RR", "SC", "SP", "SE", "TO" }; if (!states.Contains(State)) { throw new ArgumentException("Estado inválido"); } if (Phones.Count == 0) { throw new ArgumentException("Telefone inválido. Informe ao menos 1"); } var _phone = ""; Phones.ForEach(phone => { phone.DDD.Replace("\0", "").Replace("�", "").Replace("\\0", "").Trim(); if (!phone.DDD.IsNullorEmpty() && phone.DDD.TakeSpecialCharactersOff().Length != 2) { if (phone.DDD.TakeSpecialCharactersOff().Length == 3) { phone.DDD = phone.DDD.Substring(1); } else if (phone.DDD.TakeSpecialCharactersOff().Length == 4) { phone.DDD = phone.DDD.Substring(2); } else { throw new ArgumentException("DDD inválido"); } } _phone = phone.Number.Replace("\0", "").Replace("�", "").Replace("\\0", "").Trim(); if (phone.PhoneType != PhoneType.Celular) { if (!_phone.IsNullorEmpty() && _phone.ClearStrings().Length != 8 && _phone.ClearStrings().Length != 9) { throw new ArgumentException("Número de telefone inválido"); } } else { if (!_phone.IsNullorEmpty() && _phone.ClearStrings().Length != 8 && _phone.ClearStrings().Length != 9) { throw new ArgumentException("Número de celular inválido"); } } }); }