package # hide from PAUSE
    MyBlog::Controller::Html;

use strict;
use warnings;
use base 'Catalyst::Controller';

use Atompub::DateTime qw( datetime );
use Atompub::MediaType qw( media_type );
use Atompub::Util qw( is_acceptable_media_type );
use String::CamelCase qw( camelize );

my $ENTRIES_PER_PAGE = 10;
my $ENTRY_TABLE_NAME = 'entries';
my $MEDIA_TABLE_NAME = 'medias';

my $ENTRY_MODEL = join '::', 'DBIC', camelize( $ENTRY_TABLE_NAME );
my $MEDIA_MODEL = join '::', 'DBIC', camelize( $MEDIA_TABLE_NAME );

sub index : Private {
    my ( $self, $c ) = @_;

    my @colls;

    my $page = $c->req->param('page') || 1;

    my $attr = {
	offset   => ( $page - 1 ) * $ENTRIES_PER_PAGE,
	rows     => $ENTRIES_PER_PAGE,
	order_by => 'edited desc',
    };

    my $rs = $c->model( $ENTRY_MODEL )->search( {}, $attr );

    my @entries;
    while ( my $resource = $rs->next ) {
	my $entry = XML::Atom::Entry->new( \$resource->body );

	my $uri     = $entry->edit_link;
	my $title   = qq{<a href="$uri">} . $entry->title . '</a>';
	my $content = $entry->content ? $entry->content->body : '';

	push @entries, { updated => datetime( $entry->updated )->str,
			 title   => $title,
			 content => $content };
    }

    push @colls, { title => 'Diary', entries => \@entries };

    $rs = $c->model( $MEDIA_MODEL )->search( {}, $attr );

    my @media_link_entries;
    while ( my $resource = $rs->next ) {
	my $entry = XML::Atom::Entry->new( \$resource->entry_body );

	my $uri     = $entry->content ? $entry->content->src : next;
	my $title   = qq{<a href="$uri">} . $entry->title . '</a>';
	my $content = qq{<a href="$uri"><img src="$uri"/></a>};

	push @media_link_entries, { updated => datetime( $entry->updated )->str,
				    title   => $title,
				    content => $content };
    }

    push @colls, { title => 'Photo', entries => \@media_link_entries };

    $c->stash->{collections} = \@colls;
}

1;
