Beispiel #1
0
        public ICommandResult Handle(AdicionarAdministradorCommand command)
        {
            command.Validar();
            if (!command.IsValid)
            {
                return(new GenericCommandResult(false, "Dados inválidos!", command.Notifications));
            }

            var instituicao = InstituicaoRepositorio.Buscar(command.IdInstituicao);

            var naoEhPermitido = instituicao.UsuariosInstituicoes.Find(ui => ui.IdUsuario == command.IdUsuario).Tipo == EnTipoUsuario.Colaborador;

            if (naoEhPermitido)
            {
                return(new GenericCommandResult(false, "Você não tem permissão para adicionar administradores nessa instituição!", null));
            }

            var novoAdministrador = UsuarioRepositorio.Buscar(command.Email);

            if (novoAdministrador == null)
            {
                return(new GenericCommandResult(false, "Não existe nenhum usuário cadastrado com o email informado!", command.Email));
            }

            var usuarioInstituicao = instituicao.UsuariosInstituicoes.Find(ui => ui.IdUsuario == novoAdministrador.Id);

            if (usuarioInstituicao == null)
            {
                InstituicaoRepositorio.AdicionarUsuario(new UsuarioInstituicao(novoAdministrador.Id, instituicao.Id, EnTipoUsuario.Administrador));
                return(new GenericCommandResult(true, "Administrador adicionado com sucesso!", null));
            }
            else if (usuarioInstituicao.Tipo == EnTipoUsuario.Administrador)
            {
                return(new GenericCommandResult(false, "O usuário informado já é um administrador da instituição!", command.Email));
            }
            else
            {
                usuarioInstituicao.AlterarTipo(EnTipoUsuario.Administrador);
                InstituicaoRepositorio.AlterarUsuario(usuarioInstituicao);
                return(new GenericCommandResult(true, "Colaborador atualizado para administrador com sucesso!", null));
            }
        }
Beispiel #2
0
        public ICommandResult Handle(AdicionarTurmaCommand command)
        {
            command.Validar();
            if (!command.IsValid)
            {
                return(new GenericCommandResult(false, "Dados inválidos!", command.Notifications));
            }

            var instituicao = InstituicaoRepositorio.Buscar(command.IdInstituicao);

            if (instituicao.Turmas.Find(t => t.Nome == command.Nome) != null)
            {
                return(new GenericCommandResult(false, "Essa instituição já tem uma turma com esse nome. Escolha outro!", command.Nome));
            }

            var turma = new Turma(command.Nome, instituicao.Id);

            TurmaRepositorio.Adicionar(turma);

            return(new GenericCommandResult(true, "Turma cadastrada com sucesso!", command.Nome));
        }