private void AtualizaEventoDeFechamento(PeriodoFechamentoBimestre bimestre, EventoFechamento fechamentoExistente) { var eventoExistente = fechamentoExistente.Evento ?? repositorioEvento.ObterPorId(fechamentoExistente.EventoId); if (eventoExistente != null) { eventoExistente.DataInicio = bimestre.InicioDoFechamento; eventoExistente.DataFim = bimestre.FinalDoFechamento; repositorioEvento.Salvar(eventoExistente); } }
private void AprovarUltimoNivelDeEventoDataPassada(long codigoDaNotificacao, long workflowId) { Evento evento = repositorioEvento.ObterPorWorkflowId(workflowId); if (evento == null) { throw new NegocioException("Não foi possível localizar o evento deste fluxo de aprovação."); } evento.AprovarWorkflow(); repositorioEvento.Salvar(evento); NotificarCriadorEventoDataPassadaAprovado(evento, codigoDaNotificacao); NotificarDiretorUeEventoDataPassadaAprovado(evento, codigoDaNotificacao); }
public void AlterarRecorrenciaEventos(Evento evento, bool alterarRecorrenciaCompleta) { if (evento.EventoPaiId.HasValue && evento.EventoPaiId > 0 && alterarRecorrenciaCompleta) { IEnumerable <Evento> eventos = repositorioEvento.ObterEventosPorRecorrencia(evento.Id, evento.EventoPaiId.Value, evento.DataInicio); if (eventos != null && eventos.Any()) { foreach (var eventoASerAlterado in eventos) { var eventoAlterado = AlterarEventoDeRecorrencia(evento, eventoASerAlterado); repositorioEvento.Salvar(eventoAlterado); } } } }
public void Excluir(long[] idsEventos) { List <long> idsComErroAoExcluir = new List <long>(); foreach (var idEvento in idsEventos) { try { var evento = repositorioEvento.ObterPorId(idEvento); if (evento.WorkflowAprovacaoId.HasValue) { servicoWorkflowAprovacao.ExcluirWorkflowNotificacoes(evento.WorkflowAprovacaoId.Value); } evento.Excluir(); repositorioEvento.Salvar(evento); } catch (Exception) { idsComErroAoExcluir.Add(idEvento); } } if (idsComErroAoExcluir.Any()) { throw new NegocioException($"Não foi possível excluir os eventos de ids {string.Join(",", idsComErroAoExcluir)}"); } }
public void Excluir(long[] idsEventos) { List <long> idsComErroAoExcluir = new List <long>(); foreach (var idEvento in idsEventos) { try { var evento = repositorioEvento.ObterPorId(idEvento); evento.Excluir(); repositorioEvento.Salvar(evento); } catch (Exception) { idsComErroAoExcluir.Add(idEvento); } } if (idsComErroAoExcluir.Any()) { throw new NegocioException($"Não foi possível excluir os eventos de ids {string.Join(",", idsComErroAoExcluir)}"); } }
public async Task Excluir(long[] idsEventos) { List <long> idsComErroAoExcluir = new List <long>(); IList <string> eventoSemPemissaoExclusao = new List <string>(); foreach (var idEvento in idsEventos) { try { var evento = repositorioEvento.ObterPorId(idEvento); var existeComunicadoParaEvento = await repositorioComunicado.VerificaExistenciaComunicadoParaEvento(idEvento); if (existeComunicadoParaEvento) { throw new NegocioException($"Existem comunicados vigentes vinculados para o evento ID: {idEvento}"); } ValidacaoPermissaoEdicaoExclusaoPorPerfilUsuarioTipoEevento(evento); if (evento.WorkflowAprovacaoId.HasValue) { await servicoWorkflowAprovacao.ExcluirWorkflowNotificacoes(evento.WorkflowAprovacaoId.Value); } evento.Excluir(); repositorioEvento.Salvar(evento); } catch (NegocioException nex) { eventoSemPemissaoExclusao.Add(nex.Message); } catch (Exception) { idsComErroAoExcluir.Add(idEvento); } } var mensagensErroRetorno = new StringBuilder(); if (eventoSemPemissaoExclusao.Any()) { mensagensErroRetorno.AppendLine($"Não foi permitida a exclusão do(s) evento(s): { string.Join(", ", eventoSemPemissaoExclusao) }"); } if (idsComErroAoExcluir.Any()) { mensagensErroRetorno.AppendLine($"Não foi possível excluir os eventos de ids {string.Join(",", idsComErroAoExcluir)}"); } if (eventoSemPemissaoExclusao.Any() || idsComErroAoExcluir.Any()) { throw new NegocioException(mensagensErroRetorno.ToString()); } }
public async Task Salvar(Evento evento, bool dataConfirmada = false) { var tipoEvento = repositorioEventoTipo.ObterPorId(evento.TipoEventoId); if (tipoEvento == null) { throw new NegocioException("O tipo do evento deve ser informado."); } var tipoCalendario = repositorioTipoCalendario.ObterPorId(evento.TipoCalendarioId); if (tipoCalendario == null) { throw new NegocioException("Calendário não encontrado."); } evento.AdicionarTipoEvento(tipoEvento); evento.ValidaPeriodoEvento(); var usuario = await servicoUsuario.ObterUsuarioLogado(); usuario.PodeCriarEvento(evento); if (!evento.PermiteConcomitancia()) { var existeOutroEventoNaMesmaData = repositorioEvento.ExisteEventoNaMesmaDataECalendario(evento.DataInicio, evento.TipoCalendarioId); if (existeOutroEventoNaMesmaData) { throw new NegocioException("Não é permitido cadastrar um evento nesta data pois esse tipo de evento não permite concomitância."); } } var periodos = repositorioPeriodoEscolar.ObterPorTipoCalendario(evento.TipoCalendarioId); if (evento.DeveSerEmDiaLetivo()) { evento.EstaNoPeriodoLetivo(periodos); } await VerificaParticularidadesSME(evento, usuario, periodos, dataConfirmada); repositorioEvento.Salvar(evento); }