An OX Controller
file: code/Winxle-Admin/CampaignController.pm
1: package Winxle::Admin::Controller::Campaign;
2: use Moose;
3:
4: use Winxle::Globals;
5:
6: has 'campaign_model' =>
7: ( is => 'ro', isa => 'Winxle::Admin::Model::Campaign', required => 1 );
8:
9: sub root_GET {
10: my ( $self, $req ) = @_;
11:
12: my $conds = {};
13: my $attribs = {
14: offset => $req->param('o') || 0,
15: rows => $req->param('n') || 10,
16: order_by => 'created desc'
17: };
18:
19: my $set = $self->campaign_model->list( $conds, $attribs );
20: return $req->new_json_response($set);
21: }
22:
23: sub item_GET {
24: my ( $self, $req, $uuid ) = @_;
25:
26: my $c = $self->campaign_model->view($uuid);
27: return $req->new_json_response($c);
28: }
29:
30: sub status_PUT {
31: my ( $self, $req, $uuid ) = @_;
32:
33: my $data = $req->got_json;
34:
35: try {
36: $self->campaign_model->update_status( $uuid, $data );
37: return $req->new_json_response( { status => 'ok' } );
38: }
39: catch {
40: return $req->new_json_error($_);
41: };
42: }
43:
44: sub globals {
45: my ( $self, $req ) = @_;
46:
47: my @types;
48: return $req->new_json_response(
49: { types => [ Winxle::Globals->available_campaign_types ],
50: status => [ Winxle::Globals->available_campaign_status ],
51: count => $self->campaign_model->count,
52: }
53: );
54: }
55:
56: __PACKAGE__->meta->make_immutable;
57: 1;