Ejemplo n.º 1
0
        public IHttpActionResult Register(RegisterModel registerModel)
        {
            var     pessoa  = _pessoaServico.BuscarPorId(registerModel.Pessoa.Id);
            Usuario usuario = null;

            if (pessoa != null)
            {
                usuario = Servico.BuscarPor(x => x.Pessoa.Id == pessoa.Id).FirstOrDefault();
            }
            string senha = null;

            if (usuario != null)
            {
                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, true);
            }
            else
            {
                foreach (var contato in registerModel.Pessoa.Contatos)
                {
                    if (pessoa.Contatos.Count(x => x.Contato.Tipo == contato.Contato.Tipo) >= 1)
                    {
                        var contatoEmail = pessoa.Contatos.FirstOrDefault(x => x.Contato.Tipo == Entidade.Uteis.TipoContato.Email);
                        if (contato.Contato.Tipo == Entidade.Uteis.TipoContato.Email)
                        {
                            if (pessoa.Contatos.Count(x => x.Contato.Email == contato.Contato.Email) <= 0)
                            {
                                pessoa.Contatos.Add(contato);
                                pessoa.Contatos.Remove(contatoEmail);
                            }
                        }

                        var contatoCelular = pessoa.Contatos.FirstOrDefault(x => x.Contato.Tipo == Entidade.Uteis.TipoContato.Celular);
                        if (contato.Contato.Tipo == Entidade.Uteis.TipoContato.Celular)
                        {
                            if (pessoa.Contatos.Count(x => x.Contato.Numero == contato.Contato.Numero) <= 0)
                            {
                                pessoa.Contatos.Add(contato);
                                pessoa.Contatos.Remove(contatoCelular);
                            }
                        }
                    }
                }

                _pessoaServico.Salvar(pessoa);

                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));
        }
Ejemplo n.º 2
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));
        }