public async Task <long> Handle(EnviarNotificacaoCommand request, CancellationToken cancellationToken) { var wf = new WorkflowAprovacaoDto() { Ano = DateTime.Today.Year, NotificacaoCategoria = request.CategoriaNotificacao, Tipo = WorkflowAprovacaoTipo.Basica, DreId = request.DreCodigo, UeId = request.UeCodigo, TurmaId = request.TurmaCodigo, NotificacaoTitulo = request.Titulo, NotificacaoTipo = request.TipoNotificacao, NotificacaoMensagem = request.Mensagem }; foreach (var cargo in request.Cargos) { if (request.CategoriaNotificacao == NotificacaoCategoria.Workflow_Aprovacao) { wf.AdicionarNivel(cargo); } else { wf.AdicionarCargo(cargo); } } return(await mediator.Send(new SalvarWorkflowAprovacaoCommand(wf))); }
private long CriarWorkflowParaEventoExcepcionais(Evento evento, Dto.AbrangenciaUeRetorno escola, string linkParaEvento) { var wfAprovacaoEvento = new WorkflowAprovacaoDto() { Ano = evento.DataInicio.Year, NotificacaoCategoria = NotificacaoCategoria.Workflow_Aprovacao, EntidadeParaAprovarId = evento.Id, Tipo = WorkflowAprovacaoTipo.Evento_Liberacao_Excepcional, UeId = evento.UeId, DreId = evento.DreId, NotificacaoTitulo = "Criação de Eventos Excepcionais", NotificacaoTipo = NotificacaoTipo.Calendario, NotificacaoMensagem = $"O evento {evento.Nome} - {evento.DataInicio.Day}/{evento.DataInicio.Month}/{evento.DataInicio.Year} foi criado no calendário {evento.TipoCalendario.Nome} da {escola.Nome}. Para que este evento seja considerado válido, você precisa aceitar esta notificação. Para visualizar o evento clique <a href='{linkParaEvento}'>aqui</a>." }; wfAprovacaoEvento.Niveis.Add(new WorkflowAprovacaoNivelDto() { Cargo = Cargo.Diretor, Nivel = 1 }); wfAprovacaoEvento.Niveis.Add(new WorkflowAprovacaoNivelDto() { Cargo = Cargo.Supervisor, Nivel = 2 }); return(comandosWorkflowAprovacao.Salvar(wfAprovacaoEvento)); }
private async Task <WorkflowAprovacao> MapearDtoParaEntidade(WorkflowAprovacaoDto workflowAprovacaoNiveisDto) { WorkflowAprovacao workflowAprovacao = new WorkflowAprovacao(); workflowAprovacao.Ano = workflowAprovacaoNiveisDto.Ano; workflowAprovacao.DreId = workflowAprovacaoNiveisDto.DreId; workflowAprovacao.UeId = workflowAprovacaoNiveisDto.UeId; workflowAprovacao.TurmaId = workflowAprovacaoNiveisDto.TurmaId; workflowAprovacao.NotifacaoMensagem = workflowAprovacaoNiveisDto.NotificacaoMensagem; workflowAprovacao.NotifacaoTitulo = workflowAprovacaoNiveisDto.NotificacaoTitulo; workflowAprovacao.NotificacaoTipo = workflowAprovacaoNiveisDto.NotificacaoTipo; workflowAprovacao.NotificacaoCategoria = workflowAprovacaoNiveisDto.NotificacaoCategoria; workflowAprovacao.Tipo = workflowAprovacaoNiveisDto.Tipo; foreach (var nivel in workflowAprovacaoNiveisDto.Niveis) { var workflowNivel = new WorkflowAprovacaoNivel() { Cargo = nivel.Cargo, Nivel = nivel.Nivel }; if (nivel.UsuariosRf != null && nivel.UsuariosRf.Length > 0) { foreach (var usuarioRf in nivel.UsuariosRf) { workflowNivel.Adicionar(await ObterUsuarioPorRf(usuarioRf)); } } workflowAprovacao.Adicionar(workflowNivel); } return(workflowAprovacao); }
public void Salvar(WorkflowAprovacaoDto workflowAprovacaoNiveisDto) { WorkflowAprovacao workflowAprovacao = MapearDtoParaEntidade(workflowAprovacaoNiveisDto); unitOfWork.IniciarTransacao(); repositorioWorkflowAprovacao.Salvar(workflowAprovacao); foreach (var workflowAprovacaoNivel in workflowAprovacao.Niveis) { workflowAprovacaoNivel.WorkflowId = workflowAprovacao.Id; repositorioWorkflowAprovacaoNivel.Salvar(workflowAprovacaoNivel); foreach (var usuario in workflowAprovacaoNivel.Usuarios) { repositorioWorkflowAprovacaoNivelUsuario.Salvar(new WorkflowAprovacaoNivelUsuario() { UsuarioId = usuario.Id, WorkflowAprovacaoNivelId = workflowAprovacaoNivel.Id }); } } servicoWorkflowAprovacao.ConfiguracaoInicial(workflowAprovacao); }
public async Task <long> Salvar(WorkflowAprovacaoDto workflowAprovacaoNiveisDto) { if (workflowAprovacaoNiveisDto.Tipo != WorkflowAprovacaoTipo.Basica && workflowAprovacaoNiveisDto.EntidadeParaAprovarId == 0) { throw new NegocioException("Para um workflow diferente de básico, é necessário informar o Id da entidade para Aprovar."); } WorkflowAprovacao workflowAprovacao = MapearDtoParaEntidade(workflowAprovacaoNiveisDto); await repositorioWorkflowAprovacao.SalvarAsync(workflowAprovacao); foreach (var workflowAprovacaoNivel in workflowAprovacao.Niveis) { workflowAprovacaoNivel.WorkflowId = workflowAprovacao.Id; await repositorioWorkflowAprovacaoNivel.SalvarAsync(workflowAprovacaoNivel); foreach (var usuario in workflowAprovacaoNivel.Usuarios) { repositorioWorkflowAprovacaoNivelUsuario.Salvar(new WorkflowAprovacaoNivelUsuario() { UsuarioId = usuario.Id, WorkflowAprovacaoNivelId = workflowAprovacaoNivel.Id }); } } servicoWorkflowAprovacao.ConfiguracaoInicial(workflowAprovacao, workflowAprovacaoNiveisDto.EntidadeParaAprovarId); return(workflowAprovacao.Id); }
private async Task EnviarNotasWfAprovacao(long fechamentoTurmaDisciplinaId, PeriodoEscolar periodoEscolar, Usuario usuarioLogado) { if (notasEnvioWfAprovacao.Any()) { var lancaNota = !notasEnvioWfAprovacao.First().ConceitoId.HasValue; var notaConceitoMensagem = lancaNota ? "nota" : "conceito"; var mensagem = await MontaMensagemWfAprovacao(notaConceitoMensagem, periodoEscolar, usuarioLogado); var wfAprovacaoNota = new WorkflowAprovacaoDto() { Ano = DateTime.Today.Year, NotificacaoCategoria = NotificacaoCategoria.Workflow_Aprovacao, EntidadeParaAprovarId = fechamentoTurmaDisciplinaId, Tipo = WorkflowAprovacaoTipo.AlteracaoNotaFechamento, TurmaId = turmaFechamento.CodigoTurma, UeId = turmaFechamento.Ue.CodigoUe, DreId = turmaFechamento.Ue.Dre.CodigoDre, NotificacaoTitulo = $"Alteração em {notaConceitoMensagem} final - Turma {turmaFechamento.Nome} ({turmaFechamento.AnoLetivo})", NotificacaoTipo = NotificacaoTipo.Notas, NotificacaoMensagem = mensagem }; wfAprovacaoNota.AdicionarNivel(Cargo.CP); wfAprovacaoNota.AdicionarNivel(Cargo.Diretor); wfAprovacaoNota.AdicionarNivel(Cargo.Supervisor); var idWorkflow = await comandosWorkflowAprovacao.Salvar(wfAprovacaoNota); foreach (var notaFechamento in notasEnvioWfAprovacao) { await repositorioWfAprovacaoNotaFechamento.SalvarAsync(new WfAprovacaoNotaFechamento() { WfAprovacaoId = idWorkflow, FechamentoNotaId = notaFechamento.Id, Nota = notaFechamento.Nota, ConceitoId = notaFechamento.ConceitoId }); } } }
public async Task <long> Handle(InserirWorkflowReposicaoAulaCommand request, CancellationToken cancellationToken) { var linkParaReposicaoAula = $"{configuration["UrlFrontEnd"]}calendario-escolar/calendario-professor/cadastro-aula/editar/:{request.AulaId}/"; var wfAprovacaoAula = new WorkflowAprovacaoDto() { Ano = request.Ano, NotificacaoCategoria = NotificacaoCategoria.Workflow_Aprovacao, EntidadeParaAprovarId = request.AulaId, Tipo = WorkflowAprovacaoTipo.ReposicaoAula, UeId = request.UeCodigo, DreId = request.DreCodigo, NotificacaoTitulo = $"Criação de Aula de Reposição na turma {request.TurmaNome}", NotificacaoTipo = NotificacaoTipo.Calendario, NotificacaoMensagem = $"Foram criadas {request.Quantidade} aula(s) de reposição de {request.ComponenteCurricularNome} na turma {request.TurmaNome} da {request.UeNome} ({request.DreNome}). Para que esta aula seja considerada válida você precisa aceitar esta notificação. Para visualizar a aula clique <a href='{linkParaReposicaoAula}'>aqui</a>." }; wfAprovacaoAula.AdicionarNivel(Cargo.CP); wfAprovacaoAula.AdicionarNivel(Cargo.Diretor); return(await comandosWorkflowAprovacao.Salvar(wfAprovacaoAula)); }
public void Deve_Inserir_Consultar_LinhaTempo_Aprovar_E_Reprovar() { _fixture._clientApi.DefaultRequestHeaders.Clear(); _fixture._clientApi.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _fixture.GerarToken(new Permissao[] { Permissao.N_C })); var tituloParaLocalizarRegistro = Guid.NewGuid().ToString(); var wfAprovacao = new WorkflowAprovacaoDto { NotificacaoCategoria = Dominio.NotificacaoCategoria.Workflow_Aprovacao, NotificacaoMensagem = "Mensagem de teste", NotificacaoTipo = Dominio.NotificacaoTipo.Fechamento, NotificacaoTitulo = tituloParaLocalizarRegistro, UeId = "000892" }; wfAprovacao.Niveis.Add(new WorkflowAprovacaoNivelDto() { Cargo = Dominio.Cargo.Diretor, Nivel = 1 }); wfAprovacao.Niveis.Add(new WorkflowAprovacaoNivelDto() { Cargo = Dominio.Cargo.Diretor, Nivel = 2 }); wfAprovacao.Niveis.Add(new WorkflowAprovacaoNivelDto() { Cargo = Dominio.Cargo.Diretor, Nivel = 3 }); var post = JsonConvert.SerializeObject(wfAprovacao); var jsonParaPost = new StringContent(post, UnicodeEncoding.UTF8, "application/json"); var postResult = _fixture._clientApi.PostAsync("api/v1/workflows/aprovacoes", jsonParaPost).Result; Assert.True(postResult.IsSuccessStatusCode); if (postResult.IsSuccessStatusCode) { var getResult = _fixture._clientApi.GetAsync($"api/v1/notificacoes?titulo={tituloParaLocalizarRegistro}").Result; Assert.True(getResult.IsSuccessStatusCode); if (getResult.IsSuccessStatusCode) { var notificacoes = JsonConvert.DeserializeObject <PaginacaoResultadoDto <NotificacaoBasicaDto> >(getResult.Content.ReadAsStringAsync().Result); Assert.True(notificacoes.Items.Count() > 0); if (notificacoes.Items.Count() > 0) { var notificacao = notificacoes.Items.FirstOrDefault(); var getResultTimeline = _fixture._clientApi.GetAsync($"api/v1/workflows/aprovacoes/notificacoes/{notificacao.Id}/linha-tempo").Result; Assert.True(getResultTimeline.IsSuccessStatusCode); if (getResultTimeline.IsSuccessStatusCode) { var timeline = JsonConvert.DeserializeObject <List <WorkflowAprovacaoTimeRespostaDto> >(getResultTimeline.Content.ReadAsStringAsync().Result); if (timeline != null) { Assert.True(timeline.Count() == 3); Assert.True(timeline.FirstOrDefault(a => a.Nivel == 1).StatusId == (int)WorkflowAprovacaoNivelStatus.AguardandoAprovacao); Assert.True(timeline.FirstOrDefault(a => a.Nivel == 2).StatusId == (int)WorkflowAprovacaoNivelStatus.SemStatus); Assert.True(timeline.FirstOrDefault(a => a.Nivel == 3).StatusId == (int)WorkflowAprovacaoNivelStatus.SemStatus); //Aprovar 1 nível; var aprovacaoNivel = new WorkflowAprovacaoAprovacaoDto(); aprovacaoNivel.Aprova = true; var postAprovacaoNivel = JsonConvert.SerializeObject(aprovacaoNivel); var jsonParaPostAprovacaoNivel = new StringContent(postAprovacaoNivel, UnicodeEncoding.UTF8, "application/json"); var postResultAprovacaoNivel = _fixture._clientApi.PutAsync($"api/v1/workflows/aprovacoes/notificacoes/{notificacao.Id}/aprova", jsonParaPostAprovacaoNivel).Result; Assert.True(postResultAprovacaoNivel.IsSuccessStatusCode); if (postResultAprovacaoNivel.IsSuccessStatusCode) { var getResultMensagemNivel2 = _fixture._clientApi.GetAsync($"api/v1/notificacoes?titulo={tituloParaLocalizarRegistro}&status=1").Result; Assert.True(getResultMensagemNivel2.IsSuccessStatusCode); if (getResultMensagemNivel2.IsSuccessStatusCode) { var notificacoesNivel2 = JsonConvert.DeserializeObject <PaginacaoResultadoDto <NotificacaoBasicaDto> >(getResultMensagemNivel2.Content.ReadAsStringAsync().Result); Assert.True(notificacoesNivel2.Items.Count() == 1); if (notificacoesNivel2.Items.Count() == 1) { var notificacaoNivel2 = notificacoesNivel2.Items.FirstOrDefault(); var getResultTimelineNivel2 = _fixture._clientApi.GetAsync($"api/v1/workflows/aprovacoes/notificacoes/{notificacaoNivel2.Id}/linha-tempo").Result; Assert.True(getResultTimeline.IsSuccessStatusCode); if (getResultTimelineNivel2.IsSuccessStatusCode) { var timelineNivel2 = JsonConvert.DeserializeObject <List <WorkflowAprovacaoTimeRespostaDto> >(getResultTimelineNivel2.Content.ReadAsStringAsync().Result); if (timelineNivel2 != null) { Assert.True(timelineNivel2.Count() == 3); Assert.True(timelineNivel2.FirstOrDefault(a => a.Nivel == 1).StatusId == (int)WorkflowAprovacaoNivelStatus.Aprovado); Assert.True(timelineNivel2.FirstOrDefault(a => a.Nivel == 2).StatusId == (int)WorkflowAprovacaoNivelStatus.AguardandoAprovacao); Assert.True(timelineNivel2.FirstOrDefault(a => a.Nivel == 3).StatusId == (int)WorkflowAprovacaoNivelStatus.SemStatus); Assert.True(notificacoes.Items.FirstOrDefault().Codigo == notificacoesNivel2.Items.FirstOrDefault().Codigo); //Reprovacao 2 nivel var reprovacaoNivel = new WorkflowAprovacaoAprovacaoDto(); reprovacaoNivel.Aprova = false; reprovacaoNivel.Observacao = "Observação de teste!"; var postReprovacaoNivel = JsonConvert.SerializeObject(reprovacaoNivel); var jsonParaPutReprovacaoNivel = new StringContent(postReprovacaoNivel, UnicodeEncoding.UTF8, "application/json"); var putResultReprovacaoNivel = _fixture._clientApi.PutAsync($"api/v1/workflows/aprovacoes/notificacoes/{notificacaoNivel2.Id}/aprova", jsonParaPutReprovacaoNivel).Result; Assert.True(putResultReprovacaoNivel.IsSuccessStatusCode); if (putResultReprovacaoNivel.IsSuccessStatusCode) { getResultTimelineNivel2 = _fixture._clientApi.GetAsync($"api/v1/workflows/aprovacoes/notificacoes/{notificacaoNivel2.Id}/linha-tempo").Result; timelineNivel2 = JsonConvert.DeserializeObject <List <WorkflowAprovacaoTimeRespostaDto> >(getResultTimelineNivel2.Content.ReadAsStringAsync().Result); Assert.True(timelineNivel2.Count() == 3); Assert.True(timelineNivel2.FirstOrDefault(a => a.Nivel == 1).StatusId == (int)WorkflowAprovacaoNivelStatus.Aprovado); Assert.True(timelineNivel2.FirstOrDefault(a => a.Nivel == 2).StatusId == (int)WorkflowAprovacaoNivelStatus.Reprovado); Assert.True(timelineNivel2.FirstOrDefault(a => a.Nivel == 3).StatusId == (int)WorkflowAprovacaoNivelStatus.SemStatus); } } } } } } } } } } } }
public SalvarWorkflowAprovacaoCommand(WorkflowAprovacaoDto workflowAprovacao) { WorkflowAprovacao = workflowAprovacao; }
public async Task <IActionResult> Post(WorkflowAprovacaoDto workflowAprovaNivelDto) { await comandosWorkflowAprovacao.Salvar(workflowAprovaNivelDto); return(Ok()); }
public IActionResult Post(WorkflowAprovacaoDto workflowAprovaNivelDto) { comandosWorkflowAprovacao.Salvar(workflowAprovaNivelDto); return(Ok()); }