Пример #1
0
        public IHttpActionResult Register(RegisterModel registerModel)
        {
            var pessoa  = _pessoaServico.BuscarPorId(registerModel.Pessoa.Id);
            var usuario = Servico.BuscarPorId(registerModel.Id);
            var senha   = usuario != null && string.IsNullOrEmpty(registerModel.Senha) && string.IsNullOrEmpty(registerModel.FacebookId) ? usuario.Senha : registerModel.Senha;

            if (registerModel.Id <= 0 && pessoa == null)
            {
                pessoa    = registerModel.Pessoa;
                pessoa.Id = _pessoaServico.SalvarComRetorno(registerModel.Pessoa);

                Servico.Register(pessoa, senha, registerModel.Id, registerModel.FacebookId);
            }
            else
            {
                _pessoaServico.ValidaPessoa(pessoa, registerModel.Id);

                // Merge cartao
                var cartoes = _cartaoServico.BuscarPor(x => x.Pessoa.Id.Equals(pessoa.Id));
                pessoa.Cartoes = cartoes;

                // Merge endereco
                var enderecos = _enderecoServico.BuscarPor(x => x.Pessoa.Id.Equals(pessoa.Id));
                pessoa.EnderecosEntrega = enderecos;

                _pessoaServico.Salvar(pessoa);

                foreach (var documento in pessoa.Documentos)
                {
                    documento.Pessoa = pessoa;
                    _documentoServico.Salvar(documento);
                }
                foreach (var contato in pessoa.Contatos)
                {
                    contato.Contato.Pessoa = pessoa;
                    _contatoServico.Salvar(contato.Contato);
                }

                Servico.Register(pessoa, senha, registerModel.Id, registerModel.FacebookId);
            }

            return(Created(new Uri(VirtualPathUtility.AppendTrailingSlash(Request.RequestUri.ToString().Replace(Request.RequestUri.AbsolutePath, "/api/client")) + registerModel.Pessoa.Id), registerModel.Pessoa.Id));
        }