#!/usr/bin/perl -w

use strict;
use warnings;
no warnings 'redefine';

use Data::Dumper;

use params();
use config();
use entry();
use template();
use studios();
use series();

binmode STDOUT, ":utf8";
print "Content-Type: text/html; charset=utf-8\n\n";

my $r = shift;
(my $cgi, my $params, my $error) = params::get($r);

my $config = config::getFromScriptLocation();
$params = check_params($config, $params);

list_series($config, $params);

sub list_series {
    my $config = shift;
    my $params = shift;

    my $project_id = $params->{project_id};
    my $studio_id  = $params->{studio_id};
    my $location   = $params->{location};

    if (defined $location) {
        my $studios = studios::get(
            $config,
            {
                project_id => $project_id,
                location   => $location
            }
        );

        $studio_id = $studios->[0]->{id};
    }

    my $conditions = {};
    $conditions->{project_id} = $project_id if defined $project_id;
    $conditions->{studio_id}  = $studio_id  if defined $studio_id;

    if (scalar(keys %$conditions) == 0) {
        $params->{info} .= "missing parameters";
        return;
    }
    $params->{info} .= Dumper($conditions);

    my $series = series::get_event_age($config, $conditions);
    my $series2 = [];
    for my $serie (sort { lc $a->{series_name} cmp lc $b->{series_name} } (@$series)) {
        next if $serie->{days_over} > 80;
        next if $serie->{days_over} == 0;
        next unless defined $serie->{series_name};
        next if $serie->{series_name} eq '_single_';
        push @$series2, $serie;
    }
    $params->{series} = $series2;

    $params->{info} .= "no results found" if scalar(@$series) == 0;
    $params->{info} = '';

    template::process($config, 'print', 'templates/series.html', $params);
}

sub check_params {
    my $config = shift;
    my $params = shift;

    my $checked = {};

    entry::set_numbers($checked, $params, ['project_id', 'studio_id' ]);

    entry::set_strings($checked, $params, [ 'location']);

    return $checked;
}

