#!/usr/bin/perl
## from a exercise-id -->
## shows the questions from ../MEX/mex.db
## accepts an answer
## validates the answers it according to ../MEX/mex.db --> perguntas e rexpostas
## saves the user inf ../MEX/user.db --> histório de cada user
use strict;
use utf8::all;
use CGI q(:all);
use MLDBM qw(DB_File);
use DB_File;
use Fcntl ;
use Data::Dumper; $Data::Dumper::Terse=2; $Data::Dumper::Indent=0;
BEGIN{
my $passarola_path = "#PASS_PATH";
# protect system by only allowing select bins to be executed
#$ENV{PATH} = "$passarola_path/bin";
$Exercise::Gen::Verify::passarola_dir="$passarola_path/.passarola/db";
#$ENV{PATH} = "/usr/local/bin:/usr/bin:/bin";
}
use Exercise::Gen::Verify;
print header(-charset=>'utf-8');
print start_html(-title => 'MEX',
# -style => { -src => 'styles2.css',
# -type => 'text/css'
# }
);
print_hidescript();
print start_form;
if(not param("exid") or not param('user')){
print_table('');
}
else{
my $exid = param('exid');
my $user = param('user');
if(not exists_exercise_id($exid)){
print_table('Enunciado não existe!');
}
else{
if(param('tipo') eq 'Fazer exercicio'){
my $test = get_exercise_test($exid);
if(defined $test){
for (keys %{$test}){
do_exercise($_, $user);
}
}
else{
do_exercise($exid, $user);
}
}
else{
if(not exists_user_exercise($exid, $user)){
print_table('Não existe combinação enunciado/user!');
}
else{
print_exercise($exid, $user);
}
}
}
}
print end_form, end_html;
sub print_hidescript{
my $q = q{
};
print $q;
}
sub print_table{
my $x = shift;
print div({-align => 'center'},
table({-id => 'newspaper-b', -width => 500},
Tr([
td({}, ['Enunciado', textfield({-name => 'exid', -autocomplete => 'off'})]),
td({}, ['Aluno', textfield({ -name => 'user', -autocomplete => 'off'})]),
td({}, [radio_group('tipo',['Fazer exercicio','Consultar exercicio'],'Fazer exercicio')]),
td({}, [$x, submit])
])
)
);
print hidden('no_ex', 'no_ex'); ## no submission done
}
sub do_exercise{
my ($exid, $user) = @_;
print get_exercise_html($exid);
my $answer;
my @array;
my $compar;
my %submission;
my @res;
my $n = get_number_answer($exid);
if(not param('no_ex')){
for (1..$n){
$answer = param("p$_");
$submission{"Q_$_"} = $answer;
}
$submission{"version_id"} = $exid;
@res = verify_exercise(\%submission);
add_user_exercise($exid, $user, @res);
printf ("Cotação total: %.2f\n
", $res[0]{total});
}
for (1..$n){
# textfield vai passar a variar conforme o tipo
print "Pergunta $_: ", textfield({ -name => "p$_", -autocomplete => 'off'});
print "Pontos: $res[1][$_-1][1]/1";
print "
\n";
}
print "Submeter como user $user
\n";
print hidden('exid', $exid), hidden('user', $user), hidden('tipo', 'Fazer exercicio');
print submit;
}
sub print_exercise{
my ($exid, $user) = @_;
print get_exercise_html($exid);
my @exs = get_user_exercise($exid, $user);
print Dumper(\@exs);
# for (@{$USER{$user}{$exid}[0]}){
## print "Resposta dada à pergunta $n: $_
\n";
# $n++;
# }
#}
}