public Task <int> Handle(UpdateSituacaoProcedimentoCommand request, CancellationToken cancellationToken) { if (!request.IsValid()) { NotifyValidationErrors(request); return(Task.FromResult(0)); } var procedimento = _procedimentoRepository.GetById(request.ProcedimentoId); if (procedimento == null) { Bus.RaiseEvent(new DomainNotification(request.MessageType, "O Procedimento não foi encontrado.")); return(Task.FromResult(0)); } var situacao = _situacaoRepository.GetById(request.SituacaoId); if (situacao == null) { Bus.RaiseEvent(new DomainNotification(request.MessageType, "A Situação não foi encontrada.")); return(Task.FromResult(0)); } SituacaoTipo tipoSituacao = null; if (request.SituacaoTipoId.HasValue) { tipoSituacao = _situacaoTipoRepository.GetById(request.SituacaoTipoId.Value); if (request.SituacaoTipoId.Value > 0 && tipoSituacao == null) { Bus.RaiseEvent(new DomainNotification(request.MessageType, "O motivo não foi encontrado.")); return(Task.FromResult(0)); } } var existingSituacaoProcedimento = _situacaoProcedimentoRepository.GetAsNoTracking(x => x.Id == request.Id); var situacaoProcedimento = new SituacaoProcedimento(request.Id, procedimento, situacao, tipoSituacao, request.DataRelatorio, request.Observacao); if (!situacaoProcedimento.Equals(existingSituacaoProcedimento)) { Bus.RaiseEvent(new DomainNotification(request.MessageType, "O procedimento encontra-se na situação atual. Nada pra atualizar.")); return(Task.FromResult(0)); } _situacaoProcedimentoRepository.Update(situacaoProcedimento); procedimento.SituacaoAtual = situacao; _procedimentoRepository.Update(procedimento); if (Commit()) { //TO DO } return(Task.FromResult(situacaoProcedimento.Id)); }
public Task <int> Handle(RegisterNewProcedimentoCommand request, CancellationToken cancellationToken) { if (!request.IsValid()) { NotifyValidationErrors(request); return(Task.FromResult(0)); } if (_procedimentoRepository.Exists(request.NumeroProcessual)) { Bus.RaiseEvent(new DomainNotification(request.MessageType, "O Número Processual já está sendo usado.")); return(Task.FromResult(0)); } var tipoProcedimento = _procedimentoTipoRepository.GetById(request.TipoProcedimentoId); if (tipoProcedimento == null) { Bus.RaiseEvent(new DomainNotification(request.MessageType, "O Tipo de Procedimento não foi encontrado.")); return(Task.FromResult(0)); } var artigo = _artigoRepository.GetById(request.ArtigoId); if (artigo == null) { Bus.RaiseEvent(new DomainNotification(request.MessageType, "O Artigo não foi encontrado.")); return(Task.FromResult(0)); } var assunto = _assuntoRepository.GetById(request.AssuntoId); if (assunto == null) { Bus.RaiseEvent(new DomainNotification(request.MessageType, "O Assunto não foi encontrado.")); return(Task.FromResult(0)); } var municipio = _municipioRepository.GetById(request.ComarcaId); if (municipio == null) { Bus.RaiseEvent(new DomainNotification(request.MessageType, "A Comarca não foi encontrada.")); return(Task.FromResult(0)); } var varaCriminal = _varaCriminalRepository.GetById(request.VaraCriminalId); if (varaCriminal == null) { Bus.RaiseEvent(new DomainNotification(request.MessageType, "A Vara Criminal não foi encontrada.")); return(Task.FromResult(0)); } var unidadePolicial = _unidadePolicialRepository.GetById(request.DelegaciaOrigemId); if (unidadePolicial == null) { Bus.RaiseEvent(new DomainNotification(request.MessageType, "A Delegacia de Origem não foi encontrada.")); return(Task.FromResult(0)); } var situacao = _situacaoRepository.GetById(1); var procedimento = new Procedimento(request.BoletimUnificado, request.BoletimOcorrencia, request.NumeroProcessual, request.Gampes, request.Anexos, request.LocalFato, request.DataFato, request.DataInstauracao, request.TipoCriminal, request.AndamentoProcessual, tipoProcedimento, varaCriminal, municipio, assunto, artigo, unidadePolicial, situacao); _procedimentoRepository.Add(procedimento); var situacaoProcedimento = new SituacaoProcedimento(procedimento, situacao); _situacaoProcedimentoRepository.Add(situacaoProcedimento); if (Commit()) { // TO DO: Raise Event } return(Task.FromResult(procedimento.Id)); }