Exemplo n.º 1
0
        public Task <int> Handle(RegisterNewMovimentacaoCommand 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));
            }

            if (_movimentacaoRepository.Exists(request.Destino, request.ProcedimentoId))
            {
                Bus.RaiseEvent(new DomainNotification(request.MessageType, "A Movimentação já está sendo usada."));
                return(Task.FromResult(0));
            }

            var movimentacao = new Movimentacao(request.Destino, request.Data, procedimento);

            _movimentacaoRepository.Add(movimentacao);

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

            return(Task.FromResult(movimentacao.Id));
        }