Example #1
0
        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("&#x0", "").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("&#x0", "").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");
                    }
                }
            });
        }