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); }
public async Task <IActionResult> Copiar([FromBody] CompensacaoAusenciaCopiaDto compensacaoCopia, [FromServices] IComandosCompensacaoAusencia comandos) { return(Ok(await comandos.Copiar(compensacaoCopia))); }
public async Task <string> Copiar(CompensacaoAusenciaCopiaDto compensacaoCopia) => await servicoCompensacaoAusencia.Copiar(compensacaoCopia);