From 9409b8449abe6ee8fd7fa9f1db496e8ff29e74bf Mon Sep 17 00:00:00 2001 From: Andreas Granig Date: Sat, 14 Jan 2012 22:51:37 +0000 Subject: [PATCH] Implement CF time set handling. Add functionality to manipulate CF time sets. Time periods are WIP. --- lib/admin/Controller/subscriber.pm | 133 ++++++++++++++++++++++-- root/tt/subscriber_callforward_times.tt | 68 +++++++++++- 2 files changed, 192 insertions(+), 9 deletions(-) diff --git a/lib/admin/Controller/subscriber.pm b/lib/admin/Controller/subscriber.pm index 82e98e1..c1c75dc 100644 --- a/lib/admin/Controller/subscriber.pm +++ b/lib/admin/Controller/subscriber.pm @@ -1582,6 +1582,8 @@ sub edit_cf_updatepriority : Local { return; } +# fooooooooo + sub edit_cf_times : Local { my ( $self, $c ) = @_; $c->stash->{template} = 'tt/subscriber_callforward_times.tt'; @@ -1597,20 +1599,139 @@ sub edit_cf_times : Local { $c->stash->{subscriber} = $c->session->{subscriber}; my $tsets; -# return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_cf_destination_sets', -# { username => $c->session->{subscriber}{username}, -# domain => $c->session->{subscriber}{domain}, -# }, -# \$dsets, -# ); + return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_cf_time_sets', + { username => $c->session->{subscriber}{username}, + domain => $c->session->{subscriber}{domain}, + }, + \$tsets, + ); $c->stash->{tsets} = $tsets; + $c->stash->{seditid} = $c->request->params->{seditid}; return 1; } +sub edit_cf_time_saveset : Local { + my ( $self, $c ) = @_; + $c->stash->{template} = 'tt/subscriber_callforward_times.tt'; + + my $tset_id = $c->request->params->{seditid}; + $c->stash->{seditid} = $tset_id; + + my $subscriber_id = $c->request->params->{subscriber_id}; + $c->stash->{subscriber_id} = $subscriber_id; + + my %messages; + my %tset; + + $tset{name} = $c->request->params->{tsetname}; + $tset{id} = $tset_id; + + my $subscriber; + return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_by_id', + { subscriber_id => $subscriber_id }, + \$subscriber, + ); + $c->stash->{subscriber} = $subscriber; + + if($c->model('Provisioning')->call_prov( $c, 'voip', 'update_subscriber_cf_time_set', + { username => $subscriber->{username}, + domain => $subscriber->{domain}, + data => \%tset, + }, + undef, + )) + { + $messages{esetmsg} = 'Server.Voip.SavedSettings'; + $c->session->{messages} = \%messages; + $c->response->redirect("/subscriber/edit_cf_times?subscriber_id=$subscriber_id"); + } + else + { + $c->session->{messages} = \%messages; + $messages{eseterr} = 'Client.Voip.InputErrorFound'; + $c->response->redirect("/subscriber/edit_cf_times?subscriber_id=$subscriber_id&seditid=$tset_id"); + } +} + +sub edit_cf_time_delset : Local { + my ( $self, $c ) = @_; + $c->stash->{template} = 'tt/subscriber_callforward_times.tt'; + + my $tset_id = $c->request->params->{seditid}; + + my $subscriber_id = $c->request->params->{subscriber_id}; + $c->stash->{subscriber_id} = $subscriber_id; + + my %messages; + my %tset; + + $tset{id} = $tset_id; + + my $subscriber; + return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_by_id', + { subscriber_id => $subscriber_id }, + \$subscriber, + ); + $c->stash->{subscriber} = $subscriber; + + if($c->model('Provisioning')->call_prov( $c, 'voip', 'delete_subscriber_cf_time_set', + { username => $subscriber->{username}, + domain => $subscriber->{domain}, + data => \%tset, + }, + undef, + )) + { + $messages{esetmsg} = 'Server.Voip.SavedSettings'; + } + else + { + $messages{eseterr} = 'Client.Voip.InputErrorFound'; + } + $c->session->{messages} = \%messages; + $c->response->redirect("/subscriber/edit_cf_times?subscriber_id=$subscriber_id"); +} + +sub edit_cf_times_createset : Local { + my ( $self, $c ) = @_; + $c->stash->{template} = 'tt/subscriber_callforward_times.tt'; + my $subscriber_id = $c->request->params->{subscriber_id}; + $c->stash->{subscriber_id} = $subscriber_id; + + my %messages; + my %tset; + + $tset{name} = $c->request->params->{tsetname}; + + my $subscriber; + return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_by_id', + { subscriber_id => $subscriber_id }, + \$subscriber, + ); + $c->stash->{subscriber} = $subscriber; + + if($c->model('Provisioning')->call_prov( $c, 'voip', 'create_subscriber_cf_time_set', + { username => $subscriber->{username}, + domain => $subscriber->{domain}, + data => \%tset, + }, + undef, + )) + { + $messages{esetmsg} = 'Server.Voip.SavedSettings'; + } + else + { + $messages{eseterr} = 'Client.Voip.InputErrorFound'; + } + $c->session->{messages} = \%messages; + $c->response->redirect("/subscriber/edit_cf_times?subscriber_id=$subscriber_id"); +} +# fooooo diff --git a/root/tt/subscriber_callforward_times.tt b/root/tt/subscriber_callforward_times.tt index bcb29cf..143cead 100644 --- a/root/tt/subscriber_callforward_times.tt +++ b/root/tt/subscriber_callforward_times.tt @@ -239,9 +239,6 @@

Drag Building Blocks to Sets

- - [% IF messages.epeakmsg %]
[% messages.epeakmsg %]
[% END %] - [% IF messages.epeakerr %]
[% messages.epeakerr %]
[% END %]
@@ -281,6 +278,71 @@

Time Sets

+ [% IF messages.esetmsg %]
[% messages.esetmsg %]
[% END %] + [% IF messages.eseterr %]
[% messages.eseterr %]
[% END %] + [% IF messages.epermsg %]
[% messages.epermsg %]
[% END %] + [% IF messages.epererr %]
[% messages.epererr %]
[% END %] + + [% FOREACH tset IN tsets %] +
    +
  • + [% IF seditid == tset.id %] +
    + + +
    +
    +
    + Cancel +
    +
    + [% ELSIF Catalyst.session.admin.read_only %] +
    [% tset.name %]
    + [% ELSE %] +
    [% tset.name %]
    +
    + Edit +
    +
    +
    + + + +
    +
    + [% END %] +
  • +
+
    + [% priority = 0 %] + [% FOREACH period IN tset.periods %] +
  • +
    +
    [% period.year %]
    +
    [% period.month %]
    +
    [% period.mday %]
    +
    [% period.wday %]
    +
    [% period.hour %]
    +
    [% period.minute %]
    +
  • + [% END %] +
+ [% END %] +
    + [% UNLESS Catalyst.session.admin.read_only %] +
  • +
    + +
    +
    +
    +
  • + [% END %] +
+ +
+ +

Year

Drop to refine