Ejemplo n.º 1
0
        public Task <int> Handle(UpdateMovimentacaoCommand 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 existingMovimentacao = _movimentacaoRepository.GetAsNoTracking(x => x.Id == request.Id);

            if (existingMovimentacao == null)
            {
                Bus.RaiseEvent(new DomainNotification(request.MessageType, "A Movimentação não foi encontrada."));
                return(Task.FromResult(0));
            }

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

            if (!movimentacao.Equals(existingMovimentacao))
            {
                Bus.RaiseEvent(new DomainNotification(request.MessageType, "A Movimentação não foi encontrada."));
                return(Task.FromResult(0));
            }

            _movimentacaoRepository.Update(movimentacao);

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

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