Exemple #1
0
        public ClienteBuscaViewModel AtualizarClienteAtividade(long atividadeId, long novoClienteId,
                                                               string novoClienteTipo, string userId, bool clienteSomenteContato, long?atualClienteId,
                                                               string atualClienteTipo, long?clienteTipoContato)
        {
            var  retorno               = new ClienteBuscaViewModel();
            long?pessoaFisicaId        = null;
            long?pessoaJuridicaId      = null;
            long?atualPessoaFisicaId   = null;
            long?atualPessoaJuridicaId = null;

            if (string.IsNullOrEmpty(novoClienteTipo))
            {
                retorno.ValidationResult.Add(
                    new DomainValidation.Validation.ValidationError(
                        "O tipo (pf= pessoa física / pj= pessoa jurídica) não foi informado."));
                return(retorno);
            }

            if (atualClienteId.HasValue)
            {
                if (string.IsNullOrEmpty(atualClienteTipo))
                {
                    retorno.ValidationResult.Add(
                        new DomainValidation.Validation.ValidationError(
                            "O tipo (pf= pessoa física / pj= pessoa jurídica) do cliente atual não foi informado."));
                    return(retorno);
                }

                if (atualClienteTipo.ToUpper().Trim() == "PF")
                {
                    atualPessoaFisicaId = atualClienteId;
                }
                else if (atualClienteTipo.ToUpper().Trim() == "PJ")
                {
                    atualPessoaJuridicaId = atualClienteId;
                }
                else
                {
                    retorno.ValidationResult.Add(
                        new DomainValidation.Validation.ValidationError(
                            "O tipo informado do cliente atual não corresponde com os valores esperados:  (pf= pessoa física / pj= pessoa jurídica)"));
                    return(retorno);
                }
            }


            if (novoClienteTipo.ToUpper().Trim() == "PF")
            {
                pessoaFisicaId = novoClienteId;
            }
            else if (novoClienteTipo.ToUpper().Trim() == "PJ")
            {
                pessoaJuridicaId = novoClienteId;
            }
            else
            {
                retorno.ValidationResult.Add(
                    new DomainValidation.Validation.ValidationError(
                        "O tipo informado não corresponde com os valores esperados:  (pf= pessoa física / pj= pessoa jurídica)"));
                return(retorno);
            }

            // Aqui vou deletar o cliente atual do ParteEnvolvidas
            if (atualPessoaFisicaId.HasValue || atualPessoaJuridicaId.HasValue)
            {
                _servicoAtividadeParteEnvolvidaServico.Excluir(atividadeId, atualPessoaFisicaId, atualPessoaJuridicaId);
            }

            var atividade = _servicoAtividade.ObterPorId(atividadeId);

            if (atividade.AtividadeTipoId == 6)
            {
                var atividadeParteEnvolvidaCliente =
                    _servicoAtividadeParteEnvolvidaServico.ObterPorAtividadeId(atividadeId);

                foreach (var parteEnvolvidada in atividadeParteEnvolvidaCliente)
                {
                    if (parteEnvolvidada.TipoParteEnvolvida.ToLower().Trim() == "r")
                    {
                        parteEnvolvidada.SetarPessoaFisicaId(pessoaFisicaId);
                        parteEnvolvidada.SetarPessoaJuridicaId(pessoaJuridicaId);
                        _servicoAtividadeParteEnvolvidaServico.Atualizar(parteEnvolvidada);
                    }
                }

                _servicoAtividade.AtualizarCliente(atividadeId, pessoaFisicaId, pessoaJuridicaId, userId,
                                                   TipoParteEnvolvida.ClienteTratado.Value, false);
            }
            else
            {
                if (_servicoAtividadeParteEnvolvidaServico.PossuiClienteContato(atividadeId))
                {
                    _servicoAtividadeParteEnvolvidaServico.Adicionar(new AtividadeParteEnvolvida(atividadeId,
                                                                                                 pessoaFisicaId,
                                                                                                 pessoaJuridicaId, null, userId, TipoParteEnvolvida.ClienteTratado.Value, null, null));
                }
                else
                {
                    if (clienteSomenteContato)
                    {
                        _servicoAtividade.AtualizarCliente(atividadeId, pessoaFisicaId, pessoaJuridicaId, userId,
                                                           TipoParteEnvolvida.ClienteContato.Value);

                        if (atividade != null)
                        {
                            if (atividade.AtendimentoId.HasValue)
                            {
                                _servicoAtendimento.AtualizarClienteSomenteContato((long)atividade.AtendimentoId, true,
                                                                                   clienteTipoContato);
                            }
                        }
                    }
                    else
                    {
                        _servicoAtividade.AtualizarCliente(atividadeId, pessoaFisicaId, pessoaJuridicaId, userId,
                                                           TipoParteEnvolvida.ClienteTratado.Value);
                    }
                }
            }

            retorno.PessoaJuridicaId = pessoaJuridicaId;
            retorno.PessoaFisicaId   = pessoaFisicaId;
            retorno.AtividadeId      = atividadeId;
            return(retorno);
        }