private async Task AlterarRecorrencia(Aula aula, Usuario usuario, DateTime fimRecorrencia)
        {
            var dataRecorrencia  = aula.DataAula.AddDays(7);
            var aulasRecorrencia = await repositorioAula.ObterAulasRecorrencia(aula.AulaPaiId ?? aula.Id, aula.Id, fimRecorrencia);

            List <(DateTime data, string erro)> aulasQueDeramErro = new List <(DateTime, string)>();
            List <(DateTime data, bool existeFrequencia, bool existePlanoAula)> aulasComFrenciaOuPlano = new List <(DateTime data, bool existeFrequencia, bool existePlanoAula)>();

            List <DateTime> diasParaAlterarRecorrencia = new List <DateTime>();

            ObterDiasDaRecorrencia(dataRecorrencia, fimRecorrencia, diasParaAlterarRecorrencia);
            var datasComRegistro = await repositorioAula.ObterDatasAulasExistentes(diasParaAlterarRecorrencia, aula.TurmaId, aula.DisciplinaId, usuario.CodigoRf);

            if (datasComRegistro.Count() > 0)
            {
                aulasQueDeramErro.AddRange(
                    datasComRegistro.Select(d =>
                                            (d, $"Já existe uma aula criada neste dia para este componente curricular.")
                                            ));
            }

            foreach (var aulaRecorrente in aulasRecorrencia)
            {
                var ehDataComRegistro = datasComRegistro.Select(d => d.Equals(dataRecorrencia)).FirstOrDefault();
                if (!ehDataComRegistro)
                {
                    var existeFrequencia = await consultasFrequencia.FrequenciaAulaRegistrada(aulaRecorrente.Id);

                    var existePlanoAula = await consultasPlanoAula.PlanoAulaRegistrado(aulaRecorrente.Id);

                    if (existeFrequencia || existePlanoAula)
                    {
                        aulasComFrenciaOuPlano.Add((aulaRecorrente.DataAula, existeFrequencia, existePlanoAula));
                    }

                    var quantidadeOriginal = aulaRecorrente.Quantidade;

                    aulaRecorrente.DataAula   = dataRecorrencia;
                    aulaRecorrente.Quantidade = aula.Quantidade;

                    try
                    {
                        await Salvar(aulaRecorrente, usuario, aulaRecorrente.RecorrenciaAula, quantidadeOriginal, true);
                    }
                    catch (NegocioException nex)
                    {
                        aulasQueDeramErro.Add((dataRecorrencia, nex.Message));
                    }
                    catch (Exception ex)
                    {
                        servicoLog.Registrar(ex);
                        aulasQueDeramErro.Add((dataRecorrencia, $"Erro Interno: {ex.Message}"));
                    }
                }

                dataRecorrencia = dataRecorrencia.AddDays(7);
            }

            await NotificarUsuario(usuario, aula, Operacao.Alteracao, aulasRecorrencia.Count() - aulasQueDeramErro.Count, aulasQueDeramErro, aulasComFrenciaOuPlano);
        }