X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=lib%2FApp%2FWeb%2FOof.pm;h=186fb2fc4e931df41d8b01ac51efa4ed90b8b99e;hb=a9e59992ff637f0e320ac0af63340b17063ddea3;hp=1294c168a9687da7c5155054d7b3a992eb165881;hpb=69d4d80d43da02572ae56fe398bcb86ad6849dbf;p=app-web-oof.git diff --git a/lib/App/Web/Oof.pm b/lib/App/Web/Oof.pm index 1294c16..186fb2f 100644 --- a/lib/App/Web/Oof.pm +++ b/lib/App/Web/Oof.pm @@ -6,7 +6,7 @@ use warnings; use utf8; use parent qw/Plack::Component/; -our $VERSION = '0.000_006'; +our $VERSION = '0.000_007'; use DBIx::Simple; use Email::Sender::Simple 'sendmail'; @@ -17,6 +17,7 @@ use HTML::Element::Library; use JSON::MaybeXS qw/encode_json decode_json/; use Plack::Builder; use Plack::Request; +use Text::CSV; use Try::Tiny; sub HTML::Element::iter3 { @@ -73,12 +74,16 @@ sub make_slug { sub product_to_schemaorg { my ($include_url, %data) = @_; my $stock = $data{stock} > 0 ? 'InStock' : 'OutOfStock'; + my @extra; + push @extra, (brand => {'@type' => 'Brand', name => $data{brand}}) if $data{brand}; + push @extra, (model => $data{model}) if $data{model}; +{ '@context' => 'http://schema.org/', '@type' => 'Product', name => $data{title}, image => "/static/fullpics/$data{product}-1.jpg", description => $data{subtitle}, + @extra, offers => { '@type' => 'Offer', price => ($data{price} =~ s/(..)$/\.$1/r), @@ -310,6 +315,16 @@ sub display_order { $div->fclass('stripe_token')->replace_content($data->{stripe_token}) if $data->{stripe_token}; } +my $csv_header = 'Address_line_1,Address_line_2,Address_line_3,Address_line_4,Postcode,First_name,Last_name,Email,Weight(Kg),Compensation(�),Signature(y/n),Reference,Contents,Parcel_value(�),Delivery_phone,Delivery_safe_place,Delivery_instructions' . "\n"; + +sub make_hermes_csv { + my ($order) = @_; + my $csv = Text::CSV->new; + my @fields = map { $order->{$_} } qw/address1 address2 address3 address4 postcode first_name last_name email/; + $csv->combine(@fields, '', '', 'n', '', '', '', $order->{phone}, $order->{safe_place}, $order->{instructions}); + $csv->string +} + sub display_app { my ($env) = @_; $db{$$} //= DBIx::Simple->connect($ENV{OOF_DSN} // 'dbi:Pg:'); @@ -318,6 +333,8 @@ sub display_app { my @orders = $db{$$}->query("SELECT * FROM orders ORDER BY date DESC LIMIT $n")->hashes; my $tree = $display->clone; $tree->fclass('order')->iter3(\@orders, \&display_order); + my $csv = join "\n", map { make_hermes_csv $_ } @orders; + $tree->fid('hermes_csv')->replace_content($csv_header . $csv); [200, ['Content-type' => 'text/html; charset=utf-8'], [$tree->as_HTML]]; }