public async Task <IEnumerable <RetornoCopiarEventoDto> > Alterar(long id, EventoDto eventoDto) { var evento = repositorioEvento.ObterPorId(id); if (evento == null) { throw new NegocioException("Não foi possível obter o evento"); } var tipoEvento = repositorioEventoTipo.ObterPorId(evento.TipoEventoId); if (tipoEvento == null) { throw new NegocioException("Não foi possível obter o tipo do evento"); } try { ValidacaoPermissaoEdicaoExclusaoPorPerfilUsuarioTipoEevento(evento); } catch (NegocioException) { throw new NegocioException($"O seu perfil de usuário não permite a alteração desse evento"); } evento.AdicionarTipoEvento(tipoEvento); if (!evento.PodeAlterar()) { throw new NegocioException("Não é possível editar um evento em aprovação"); } evento = MapearParaEntidade(evento, eventoDto); return(await SalvarEvento(eventoDto, evento)); }
public async Task <IEnumerable <RetornoCopiarEventoDto> > Alterar(long id, EventoDto eventoDto) { var evento = repositorioEvento.ObterPorId(id); if (evento == null) { throw new NegocioException("Não foi possível obter o evento"); } var tipoEvento = repositorioEventoTipo.ObterPorId(evento.TipoEventoId); if (tipoEvento == null) { throw new NegocioException("Não foi possível obter o tipo do evento"); } evento.AdicionarTipoEvento(tipoEvento); if (!evento.PodeAlterar()) { throw new NegocioException("Não é possível editar um evento em aprovação"); } evento = MapearParaEntidade(evento, eventoDto); return(await SalvarEvento(eventoDto, evento)); }
public async Task <IEnumerable <RetornoCopiarEventoDto> > Alterar(long id, EventoDto eventoDto) { var evento = repositorioEvento.ObterPorId(id); evento = MapearParaEntidade(evento, eventoDto); await servicoEvento.Salvar(evento); await GravarRecorrencia(eventoDto, evento); return(await CopiarEventos(eventoDto)); }
public async Task Excluir(long[] ids) { var erros = new StringBuilder(); var comunicados = ids.Select(id => { var comunicado = repositorio.ObterPorId(id); if (comunicado == null) { erros.Append($"<li>{id} - comunicado não encontrado</li>"); } else { if (comunicado.EventoId.HasValue) { var evento = repositorioEvento.ObterPorId(comunicado.EventoId.Value); if (evento != null && !evento.Excluido) { erros.Append($"<li>{id} - {comunicado.Titulo} - Comunicado com evento vinculado</li>"); } } } return(comunicado); }); if (string.IsNullOrEmpty(erros.ToString())) { await servicoAcompanhamentoEscolar.ExcluirComunicado(ids); foreach (var comunicado in comunicados) { try { await repositorioComunicadoGrupo.ExcluirPorIdComunicado(comunicado.Id); await repositorioComunicadoAluno.RemoverTodosAlunosComunicado(comunicado.Id); await repositorioComunicadoTurma.RemoverTodasTurmasComunicado(comunicado.Id); comunicado.MarcarExcluido(); await repositorio.SalvarAsync(comunicado); } catch { erros.Append($"<li>{comunicado.Id} - {comunicado.Titulo}</li>"); } } } if (!string.IsNullOrEmpty(erros.ToString())) { throw new NegocioException($"<p>Os seguintes comunicados não puderam ser excluídos:</p><br/>{erros.ToString()} por favor, tente novamente"); } }
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); } }
public async Task <EventoCompletoDto> ObterPorId(long id) { var evento = repositorioEvento.ObterPorId(id); evento.TipoEvento = repositorioEventoTipo.ObterPorId(evento.TipoEventoId); var usuario = await servicoUsuario.ObterUsuarioLogado(); //verificar se o evento e o perfil do usuário é SME para possibilitar alteração bool podeAlterar = !EhEventoSME(evento) || (EhEventoSME(evento) && usuario.EhPerfilSME()); if (!EhEventoSME(evento) && (evento.TipoEventoId == (long)TipoEvento.LiberacaoExcepcional || evento.TipoEventoId == (long)TipoEvento.ReposicaoNoRecesso)) { podeAlterar = !usuario.TemPerfilGestaoUes(); } return(MapearParaDto(evento, podeAlterar)); }
public async Task <string> Salvar(Evento evento, bool alterarRecorrenciaCompleta = false, bool dataConfirmada = false, bool unitOfWorkJaEmUso = false) { ObterTipoEvento(evento); TipoCalendario tipoCalendario = ObterTipoCalendario(evento); evento.ValidaPeriodoEvento(); var usuario = await servicoUsuario.ObterUsuarioLogado(); bool ehAlteracao = true; if (evento.Id == 0) { ehAlteracao = false; evento.TipoPerfilCadastro = usuario.ObterTipoPerfilAtual(); } else { var entidadeNaoModificada = repositorioEvento.ObterPorId(evento.Id); ObterTipoEvento(entidadeNaoModificada); usuario.PodeAlterarEvento(entidadeNaoModificada); } usuario.PodeCriarEvento(evento); var periodos = repositorioPeriodoEscolar.ObterPorTipoCalendario(evento.TipoCalendarioId); if (evento.DeveSerEmDiaLetivo()) { evento.EstaNoPeriodoLetivo(periodos); } bool devePassarPorWorkflowLiberacaoExcepcional = await ValidaDatasETiposDeEventos(evento, dataConfirmada, usuario, periodos); AtribuirNullSeVazio(evento); if (!unitOfWorkJaEmUso) { unitOfWork.IniciarTransacao(); } repositorioEvento.Salvar(evento); // Envia para workflow apenas na Inclusão ou alteração apos aprovado var enviarParaWorkflow = !string.IsNullOrWhiteSpace(evento.UeId) && devePassarPorWorkflowLiberacaoExcepcional; if (!ehAlteracao || (evento.Status == EntidadeStatus.Aprovado)) { if (enviarParaWorkflow) { await PersistirWorkflowEvento(evento, devePassarPorWorkflowLiberacaoExcepcional); } } if (!unitOfWorkJaEmUso) { unitOfWork.PersistirTransacao(); } if (evento.EventoPaiId.HasValue && evento.EventoPaiId > 0 && alterarRecorrenciaCompleta) { SME.Background.Core.Cliente.Executar(() => AlterarRecorrenciaEventos(evento, alterarRecorrenciaCompleta)); } if (ehAlteracao) { if (enviarParaWorkflow) { return("Evento alterado e será válido após aprovação."); } else { return("Evento alterado com sucesso."); } } else { if (enviarParaWorkflow) { return("Evento cadastrado e será válido após aprovação."); } else { return("Evento cadastrado com sucesso."); } } }
public EventoCompletoDto ObterPorId(long id) { return(MapearParaDto(repositorioEvento.ObterPorId(id))); }