Пример #1
0
        public async Task <string> Copiar(CompensacaoAusenciaCopiaDto compensacaoCopia)
        {
            var compensacaoOrigem = repositorioCompensacaoAusencia.ObterPorId(compensacaoCopia.CompensacaoOrigemId);

            if (compensacaoOrigem == null)
            {
                throw new NegocioException("Compensação de origem não localizada com o identificador informado.");
            }

            var turmasCopiadas = new StringBuilder("");
            var turmasComErro  = new StringBuilder("");

            foreach (var turmaId in compensacaoCopia.TurmasIds)
            {
                var turma = await repositorioTurma.ObterPorCodigo(turmaId);

                CompensacaoAusenciaDto compensacaoDto = new CompensacaoAusenciaDto()
                {
                    TurmaId                = turmaId,
                    Bimestre               = compensacaoCopia.Bimestre,
                    DisciplinaId           = compensacaoOrigem.DisciplinaId,
                    Atividade              = compensacaoOrigem.Nome,
                    Descricao              = compensacaoOrigem.Descricao,
                    DisciplinasRegenciaIds = new List <string>(),
                    Alunos = new List <CompensacaoAusenciaAlunoDto>()
                };

                var disciplinasRegencia = await repositorioCompensacaoAusenciaDisciplinaRegencia.ObterPorCompensacao(compensacaoOrigem.Id);

                if (disciplinasRegencia != null && disciplinasRegencia.Any())
                {
                    compensacaoDto.DisciplinasRegenciaIds = disciplinasRegencia.Select(s => s.DisciplinaId);
                }

                try
                {
                    await Salvar(0, compensacaoDto);

                    turmasCopiadas.Append(turmasCopiadas.ToString().Length > 0 ? ", " + turma.Nome : turma.Nome);
                }
                catch (Exception e)
                {
                    turmasComErro.AppendLine($"A cópia para a turma {turma.Nome} não foi realizada: {e.Message}\n");
                }
            }
            var respTurmasCopiadas = turmasCopiadas.ToString();
            var textoTurmas        = respTurmasCopiadas.Contains(",") ? "as turmas" : "a turma";
            var respostaSucesso    = respTurmasCopiadas.Length > 0 ? $"A cópia para {textoTurmas} {respTurmasCopiadas} foi realizada com sucesso" : "";
            var respTurmasComErro  = turmasComErro.ToString();

            if (respTurmasComErro.Length > 0)
            {
                throw new NegocioException($"{respTurmasComErro} {respostaSucesso}");
            }
            return(respostaSucesso);
        }
Пример #2
0
 public async Task <IActionResult> Copiar([FromBody] CompensacaoAusenciaCopiaDto compensacaoCopia, [FromServices] IComandosCompensacaoAusencia comandos)
 {
     return(Ok(await comandos.Copiar(compensacaoCopia)));
 }
Пример #3
0
 public async Task <string> Copiar(CompensacaoAusenciaCopiaDto compensacaoCopia)
 => await servicoCompensacaoAusencia.Copiar(compensacaoCopia);