Ejemplo n.º 1
0
        public Processo Salvar(Processo processo)
        {
            var agora = DateTime.Now;

            processo.UltimaModificacao = agora;

            var autor = _pessoaRepository.Find(processo.Autor.Id);

            processo.Autor = autor;

            if (processo.Destinatario.Tipo.Equals(new OrgaoUnidade().GetType().Name))
            {
                processo.OrgaoUnidadeDestino = new OrgaoUnidade
                {
                    IdOrgaoUnidade = processo.Destinatario.Id,
                    DsOrgaoUnidade = processo.Destinatario.Descricao
                };
            }
            else if (processo.Destinatario.Tipo.Equals(new Pessoa().GetType().Name))
            {
                processo.PessoaDestino = new Pessoa
                {
                    Matricula = processo.Destinatario.Id,
                    Nome      = processo.Destinatario.Descricao
                };
            }
            else
            {
                throw new NotImplementedException("Destinatário inválido.");
            }

            _processoRepository.AddOrUpdate(processo);

            var processoMovimentoEncaminhamento = new ProcessoMovimento
            {
                Data                = agora,
                PessoaOrigem        = autor,
                OrgaoUnidadeOrigem  = autor.OrgaoUnidadeLotacao,
                PessoaDestino       = processo.PessoaDestino,
                OrgaoUnidadeDestino = processo.OrgaoUnidadeDestino,
                Autor               = autor,
                Processo            = processo,
                Movimento           = _movimentoRepository.Get(_processoSettings.CodigoMovimentoEncaminhamentoOrgaoInterno)
            };

            _processoMovimentoRepository.Add(processoMovimentoEncaminhamento);

            processo.UltimoMovimento = processoMovimentoEncaminhamento;

            _processoRepository.AddOrUpdate(processo);

            return(processo);
        }