#!/usr/bin/perl -w
# $Id: seatplan,v 1.1 2009-11-08 05:46:49 jeffbeck Exp $
# This Script (seatplan) was created by Rdiger Beck
# It is released under the GPL Version 2 or higher
# For Bugs send mail to:
# jeffbeck@web.de

# Bibliotheken
use strict;
use Getopt::Long;
use File::Basename;

my $help=0;
my $template="";
my $data="";
my $log_level=2;
my $start_line=0;
my $rhead="";

# max number of lines when no value is given
my $end_line=10000;
# max number of students in a room
my $max_students=200;

# Parsen der Optionen
my $testopt=GetOptions(
           "verbose|v+" => \$log_level,
           "help|h" => \$help,
           "t|template=s" => \$template,
           "d|data=s" => \$data,
           "s|start-line=s" => \$start_line,
           "e|end-line=s" => \$end_line,
           "r|rhead=s" => \$rhead,
          );



# Prfen, ob Optionen erkannt wurden, sonst Abbruch
&check_options($testopt);



if ($template eq ""){
    $help=1;
}

if ($data eq ""){
    $help=1;
}



# --help
if ($help==1) {
   # Scriptname ermitteln
   my @list = split(/\//,$0);
   my $scriptname = pop @list;
   # Befehlsbeschreibung
   print('
examplix (EXAMs Per LInux/uniX) is a tool to divide the correction of a larger exam into smaller chunks for a number of people and put together these chunks and calsulate a mark.  

Options
  -h  / --help
  -v  / --verbose
  -vv / --verbose --verbose
  -i  / --info

What type of calculation
  --year
  --exam 

What to do
  -c  / --create examname --class class1,class2,class3,...
  -t  / --tasks examname
  -r  / --result examname
  --final

Please see the examplix(1) man pages for full documentation
');
   print "\n";
   exit;
}



my $dirpath=dirname($template);

my $template_base = basename($template,".eps",".ps");


my $tex_file=$template_base.".tex";
my $template_eps=$dirpath."/".$template_base.".eps";
my $template_tex=$template_base.".tex";


print "Using template:      $template_eps\n";
print "Creating tex file:   $template_tex\n";

open (TEX, ">$template_tex");
open (DATA, "<$data");


print TEX ('
%
%created by seatplan
%
\documentclass[fleqn,a4paper,11pt]{article}
%\usepackage{ifthen}
\usepackage{multicol}
\usepackage{lscape}
\usepackage{graphicx}
\usepackage{amssymb}
\usepackage{textcomp}
\usepackage{afterpage}
\usepackage{calc}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{ngerman}
\usepackage{fancybox}
\usepackage{marvosym}
\usepackage{fancyhdr}
\usepackage[dvips]{color}
%\usepackage{moreverb}
%\usepackage{twoopt}
\usepackage{psfrag}
% ams-Befehl square ab jetzt nutzlos, da \square von SIunits neu definiert wird
%\usepackage[cdot,amssymb,thickqspace]{SIunits} 
\usepackage{longtable}
\usepackage{dcolumn}
\usepackage{amsmath}
\usepackage{lastpage}
% Satzspiegel
\setlength{\voffset}{-25.4mm}
\setlength{\hoffset}{-25.4mm}

\setlength{\textwidth}{190mm}
\setlength{\topmargin}{0mm}
\setlength{\textheight}{250mm}
\setlength{\headheight}{11mm}
\setlength{\headsep}{2mm}
\setlength{\topskip}{0mm}

\setlength{\footskip}{26.5mm}
\setlength{\parindent}{0mm}

% ohne Rand 
\setlength{\oddsidemargin}{9mm}
\setlength{\evensidemargin}{9mm}

% zentriert
%\setlength{\oddsidemargin}{15mm}
%\setlength{\evensidemargin}{15mm}

\setlength{\fboxsep}{1mm}
\setlength{\fboxrule}{0.35mm}
\setlength{\mathindent}{8mm}


\pagestyle{fancy}
\newcommand{\headrotate}[1]{\makebox[3mm][c]{\begin{rotate}{60}#1\end{rotate}}}


\lhead{\large\textbf{Sitzplan}}
\chead{}
');

print TEX "\\rhead{$rhead}
";
print TEX ('
\rfoot{\today}
\cfoot{}
\lfoot{Berufliches Schulzentrum Leonberg}

\begin{document}
');






my $line_number=0;
my $entry_number=0;

while (<DATA>){
    $line_number++;
    if ($line_number >= $start_line and $line_number <= $end_line){
        print "$line_number".":"."$_"; 
        my ($name,$birthday,$class,$unix)=split(":");
        my ($last,$first) = split(",",$name);
        $entry_number++;
        print TEX "\\psfrag{num$entry_number}[cc][cc]{\\parbox{26mm}{$entry_number) \\\\[2mm] ${last}, \\\\$first}}\n";

    }
}

while ($entry_number <= $max_students){
   $entry_number++;
   print TEX "\\psfrag{num$entry_number}[cc][cc]{}\n";
}


print TEX "\\begin{center}";
print TEX "   \\includegraphics{$template_eps}\n";
print TEX "\\end{center}";





print TEX ('
\end{document}
');






close (TEX);
close (DATA);

















############################################################
# subs
############################################################

sub  check_options{
   my ($parse_ergebnis) = @_;
   if (not $parse_ergebnis==1){
      my @list = split(/\//,$0);
      my $scriptname = pop @list;
      print "\nYou have made a mistake, when specifying options.\n"; 
      print "See error message above. \n\n";
      print "... $scriptname is terminating.\n\n";
      exit;
   } else {
      print "All options  were recognized.\n";
   }

}


