Пример #1
0
        public Task <int> Handle(RegisterNewSituacaoTipoCommand request, CancellationToken cancellationToken)
        {
            if (!request.IsValid())
            {
                NotifyValidationErrors(request);
                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));
            }

            var tipoSituacao = new SituacaoTipo(request.Descricao, situacao);

            if (_situacaoTipoRepository.Exists(tipoSituacao.Descricao, tipoSituacao.Situacao.Id))
            {
                Bus.RaiseEvent(new DomainNotification(request.MessageType, "O Tipo já está sendo usado."));
                return(Task.FromResult(0));
            }

            _situacaoTipoRepository.Add(tipoSituacao);

            if (Commit())
            {
                //TO DO
            }

            return(Task.FromResult(tipoSituacao.Id));
        }
        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));
        }