package CF2022::Controller::Products;
use Mojo::Base 'Mojolicious::Controller';
use Mojo::UserAgent;

sub list {
    my $c = shift->openapi->valid_input or return;

    my $url = sprintf ('%s/organizers/%s/events/%s/items/',
        $c->config->{pretix_api},
        $c->config->{pretix_organizer},
        $c->config->{pretix_event},
    );

    my $ua = Mojo::UserAgent->new;

    my $records = $ua->get( $url, {
        Authorization => 'Token ' . $c->config->{pretix_token}
    } )->result->json;

    my @options = ();

    RECORD:
    foreach my $record ( @{ $records->{results} } ) {
        next RECORD if ! $record->{active};

        push @options, {
            id          => $record->{id},
            name        => $record->{name}{en},
            price       => $record->{default_price} + 0,
            free_price  => $record->{free_price},
            category_id => $record->{category},
            variations  => [
                map {{
                    id    => $_->{id},
                    value => $_->{value}{en},
                    price => $_->{price} + 0
                }} @{ $record->{variations} }
            ],
        };
    }

    $c->render(openapi => \@options);
}

1;