public async Task <IComandoResultado> ManipuladorAsync(CriarTurmaComando comando) { //Criar Entidades var tipoTurma = new TurmaTipo(comando.TipoTurmaId); var funcionario = new Funcionario(comando.IdProfessor); var turma = new Turma(comando.Id, comando.CodTurma, comando.DesTurma, funcionario, tipoTurma, true); //verificar turma existente if (await _repositorio.CheckTurmaAsync(turma)) { AddNotification("Turma", "A turma informada já está em uso"); } //Validar Comando comando.Valido(); AddNotifications(comando.Notifications); AddNotifications(funcionario.Notifications); if (Invalid) { return(new ComandoResultado( false, "Por favor, corrija os campos abaixo", Notifications)); } //Persistir os dados var turmaId = await _repositorio.SalvarAsync(turma); //Persistir os dados de agendamento var listaDia = await _repositorioAgenda.ObterTodosDiaSemanaAsync(); foreach (var item in comando.Agendamentos) { var agenda = new Agenda(0, item.Hora, new Turma(turmaId), new DiaSemana(listaDia.FirstOrDefault(x => x.DiaSemana == item.Dia).Id), new Sala(item.Sala)); await _repositorioAgenda.SalvarAsync(agenda); } // Retornar o resultado para tela return(new ComandoResultado(true, "Turma cadastrada com sucesso", new { Id = 0, Nome = "", Status = true })); }
public async Task <IComandoResultado> ManipuladorAsync(CriarAgendaTurmaComando comando) { //Criar Entidades var sala = new Sala(comando.IdSala); var diaSemana = new DiaSemana(comando.IdDiaSemana); var turma = new Turma(comando.IdTurma); var agenda = new Agenda(comando.Id, comando.Hora, turma, diaSemana, sala); //verificar turma existente if (await _repositorio.CheckAgendamentoAsync(agenda)) { AddNotification("Turma", "Já existe um agendamento cadastrado para os dados informado"); } //Validar Comando comando.Valido(); AddNotifications(diaSemana.Notifications); AddNotifications(turma.Notifications); AddNotifications(agenda.Notifications); if (Invalid) { return(new ComandoResultado( false, "Por favor, corrija os campos abaixo", Notifications)); } //Persistir os dados await _repositorio.SalvarAsync(agenda); // Retornar o resultado para tela return(new ComandoResultado(true, "Turma agendada com sucesso", new { Id = 0, Nome = "", Status = true })); }