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