Пример #1
0
        public async Task <IHttpActionResult> Put([FromBody] JObject value)
        {
            try
            {
                Pessoa pessoa = value.ToObject <Pessoa>();
                //pessoa = await Task.Run(() =>
                //{
                //    Pessoa pessoaTemp = iPessoaDao.ObterPorChave(pessoa.PessoaCodigo, StrConexao);
                //    pessoa.PessoaDataCadastro = pessoaTemp.PessoaDataCadastro;

                //    return pessoa;
                //});

                Rg rg = null;
                if (value["rg"] != null)
                {
                    rg = value["rg"].ToObject <Rg>();
                }

                pessoa.Cliente = await Task.Run(() => iClienteDao.ObterPorChave(pessoa.ClienteCodigo, StrConexao));

                int comparaDatas = pessoa.PessoaDataNascimento.AddYears(18).CompareTo(DateTime.Now);

                bool regraPRBool = pessoa.Cliente.UfCodigo == "PR" && comparaDatas < 1,
                     regraSCBool = pessoa.Cliente.UfCodigo == "SC" && rg != null && rg.RgNumero > 0;

                if (!regraPRBool && !regraSCBool)
                {
                    if (pessoa.Cliente.UfCodigo == "PR")
                    {
                        throw new Exception("Este cliente só permite cadastro de pessoas acima dos 18 anos.");
                    }
                    else
                    {
                        throw new Exception("Este cliente só permite cadastro de pessoas com RG informado.");
                    }
                }

                _mensagem = null;
                await Task.Run(() => iPessoaDao.Alterar(pessoa, out _mensagem, StrConexao));

                if (!string.IsNullOrEmpty(_mensagem))
                {
                    throw new Exception(_mensagem);
                }

                if (rg != null)
                {
                    _mensagem = null;
                    await Task.Run(() => iRgDao.Alterar(rg, out _mensagem, StrConexao));

                    if (!string.IsNullOrEmpty(_mensagem))
                    {
                        throw new Exception(_mensagem);
                    }
                }

                List <Telefone> telefones = value["telefones"].ToObject <List <Telefone> >();

                await Task.Run(() => iTelefoneDao.ExcluirEmMassa(pessoa.PessoaCodigo, StrConexao, out _mensagem));

                if (!string.IsNullOrEmpty(_mensagem))
                {
                    throw new Exception(_mensagem);
                }

                await Task.Run(() => iTelefoneDao.InserirEmMassa(telefones.Select(t => new Telefone()
                {
                    PessoaCodigo       = pessoa.PessoaCodigo,
                    TelefoneDdd        = t.TelefoneDdd,
                    TelefoneNumero     = t.TelefoneNumero,
                    TipoTelefoneCodigo = t.TipoTelefoneCodigo
                }).ToArray(), StrConexao, out _mensagem));

                if (!string.IsNullOrEmpty(_mensagem))
                {
                    throw new Exception(_mensagem);
                }

                return(Ok(new
                {
                    Mensagem = "Cadastro alterado com sucesso!"
                }));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }