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)); }
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)); }