public async Task <AuditoriaDto> Handle(AlterarObservacaoDiarioBordoCommand request, CancellationToken cancellationToken) { var diarioBordoObservacao = await repositorioDiarioBordoObservacao.ObterPorIdAsync(request.ObservacaoId); var usuario = await mediator.Send(new ObterUsuarioLogadoQuery()); if (diarioBordoObservacao == null) { throw new NegocioException("Observação do diário de bordo não encontrada."); } diarioBordoObservacao.ValidarUsuarioAlteracao(request.UsuarioId); diarioBordoObservacao.Observacao = request.Observacao; await repositorioDiarioBordoObservacao.SalvarAsync(diarioBordoObservacao); if (request.Observacao.Trim().Length < 200 && (request.UsuariosIdNotificacao == null || !request.UsuariosIdNotificacao.Any())) { // Excluir Notificação Especifica await mediator.Send(new PublicarFilaSgpCommand(RotasRabbit.RotaExcluirNotificacaoDiarioBordo, new ExcluirNotificacaoDiarioBordoDto(request.ObservacaoId), Guid.NewGuid(), null)); await mediator.Send(new PublicarFilaSgpCommand(RotasRabbit.RotaNotificacaoNovaObservacaoDiarioBordo, new NotificarDiarioBordoObservacaoDto(diarioBordoObservacao.DiarioBordoId, request.Observacao, usuario, request.ObservacaoId), Guid.NewGuid(), null)); } else if (request.UsuariosIdNotificacao != null && request.UsuariosIdNotificacao.Any()) { var notificacoes = await repositorioDiarioBordoObservacaoNotificacao.ObterPorDiarioBordoObservacaoId(request.ObservacaoId); var usuariosNotificados = notificacoes.Select(n => n.IdUsuario); var usuariosExcluidos = usuariosNotificados.Where(u => !request.UsuariosIdNotificacao.Contains(u) && u != usuario.Id); var usuariosNotificacao = request.UsuariosIdNotificacao?.Select(async u => await mediator.Send(new ObterUsuarioPorIdQuery(u)))?.Select(t => t.Result); await mediator.Send(new PublicarFilaSgpCommand(RotasRabbit.RotaNotificacaoNovaObservacaoDiarioBordo, new NotificarDiarioBordoObservacaoDto(diarioBordoObservacao.DiarioBordoId, request.Observacao, usuario, request.ObservacaoId, usuariosNotificacao), Guid.NewGuid(), null)); foreach (var usuarioExcluido in usuariosExcluidos) { // Excluir Notificação Especifica await mediator.Send(new PublicarFilaSgpCommand(RotasRabbit.RotaNotificacaoAlterarObservacaoDiarioBordo, new AlterarNotificacaoDiarioBordoDto(request.ObservacaoId, usuarioExcluido), Guid.NewGuid(), null)); } } return((AuditoriaDto)diarioBordoObservacao); }
public async Task <AuditoriaDto> Handle(AdicionarObservacaoDiarioBordoCommand request, CancellationToken cancellationToken) { var diarioBordoObservacao = new DiarioBordoObservacao(request.Observacao, request.DiarioBordoId, request.UsuarioId); var observacaoId = await repositorioDiarioBordoObservacao.SalvarAsync(diarioBordoObservacao); var usuario = await mediator.Send(new ObterUsuarioLogadoQuery()); if (request.UsuariosIdNotificacao != null && request.UsuariosIdNotificacao.Any()) { var usuariosNotificacao = request.UsuariosIdNotificacao?.Select(async u => await mediator.Send(new ObterUsuarioPorIdQuery(u)))?.Select(t => t.Result); await mediator.Send(new PublicarFilaSgpCommand(RotasRabbit.RotaNotificacaoNovaObservacaoDiarioBordo, new NotificarDiarioBordoObservacaoDto(request.DiarioBordoId, request.Observacao, usuario, observacaoId, usuariosNotificacao), Guid.NewGuid(), null)); } else { await mediator.Send(new PublicarFilaSgpCommand(RotasRabbit.RotaNotificacaoNovaObservacaoDiarioBordo, new NotificarDiarioBordoObservacaoDto(request.DiarioBordoId, request.Observacao, usuario, observacaoId), Guid.NewGuid(), null)); } return((AuditoriaDto)diarioBordoObservacao); }
public async Task <bool> Handle(ExcluirObservacaoDiarioBordoCommand request, CancellationToken cancellationToken) { var diarioBordoObservacao = await repositorioDiarioBordoObservacao.ObterPorIdAsync(request.ObservacaoId); if (diarioBordoObservacao == null) { throw new NegocioException("Observação do diário de bordo não encontrada."); } // na exclusão de aula o usuario da exclusão pode não ser o mesmo que inseriu a observação if (request.UsuarioId.HasValue) { diarioBordoObservacao.ValidarUsuarioAlteracao(request.UsuarioId.Value); } diarioBordoObservacao.Remover(); await repositorioDiarioBordoObservacao.SalvarAsync(diarioBordoObservacao); await mediator.Send(new PublicarFilaSgpCommand(RotasRabbit.RotaExcluirNotificacaoDiarioBordo, new ExcluirNotificacaoDiarioBordoDto(request.ObservacaoId), Guid.NewGuid(), null)); return(true); }