Esempio n. 1
0
        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
            }));
        }