added peaktime edit functions for special dates

1.2@1701
Daniel Tiefnig 17 years ago
parent 4975e118e8
commit 85911f90ae

@ -675,6 +675,13 @@ sub show_peaktimes : Local {
$c->stash->{edit_weekday} = $edit_weekday
if defined $edit_weekday;
my $show_year = $c->request->params->{show_year};
$c->stash->{show_year} = $show_year
if defined $show_year;
my $edit_date = $c->request->params->{edit_date};
$c->stash->{edit_date} = $edit_date
if defined $edit_date;
my $peaktimes;
return unless $c->model('Provisioning')->call_prov( $c, 'billing', 'get_billing_profile_offpeak_times',
{ handle => $bilprof },
@ -686,7 +693,9 @@ sub show_peaktimes : Local {
}
$$peaktimes{weekdays} = [] unless defined eval { @{$$peaktimes{weekdays}} };
foreach (sort { $$a{day} <=> $$b{day} } @{$$peaktimes{weekdays}}) {
if(defined $c->session->{restore_peaktimes} and $$_{day} == $edit_weekday) {
if(defined $c->session->{restore_peaktimes}
and defined $edit_weekday and $$_{day} == $edit_weekday)
{
my $rpt = $c->session->{restore_peaktimes};
if(defined $$rpt{startold} or defined $$rpt{endold}) {
for(eval { @{$$_{ranges}} }) {
@ -704,6 +713,27 @@ sub show_peaktimes : Local {
}
$c->stash->{offpeaktimes}{weekdays} = \@weekdays;
if(defined eval { @{$$peaktimes{special}} }) {
my @dates;
my %years;
for(sort { $$a{date} cmp $$b{date} } @{$$peaktimes{special}}) {
my $year = (split /-/, $$_{date})[0];
$years{$year} = 0;
if($year == $show_year) {
push @dates, { date => $$_{date}, ranges => [ sort { $$a{start} cmp $$b{start} } eval { @{$$_{ranges}} } ]};
}
}
$c->stash->{years} = [ reverse sort keys %years ];
$c->stash->{dates} = \@dates if @dates;
}
if(defined $c->session->{restore_peaktimes} and $edit_date eq 'new') {
my $rpt = $c->session->{restore_peaktimes};
$c->stash->{newrange}{start} = $$rpt{start};
$c->stash->{newrange}{end} = $$rpt{end};
$c->stash->{newrange}{date} = $$rpt{date};
}
delete $c->session->{restore_peaktimes};
return 1;
}
@ -721,6 +751,9 @@ sub do_edit_peaktime : Local {
my $bilprof = $c->request->params->{bilprof};
my $weekday = $c->request->params->{weekday};
my $show_year = $c->request->params->{show_year};
my $date = $c->request->params->{date};
my $edit_date = $c->request->params->{edit_date};
my $start = $c->request->params->{start};
my $end = $c->request->params->{end};
my $startold = $c->request->params->{startold};
@ -731,18 +764,22 @@ sub do_edit_peaktime : Local {
$delete = 1;
} else {
if($start) {
$messages{epeakwerr} = 'Client.Syntax.MalformedDaytime' unless $start =~ /^(?:[01]?\d|2[0-3]):[0-5]?\d:[0-5]?\d$/
$messages{epeakerr} = 'Client.Syntax.MalformedDaytime' unless $start =~ /^(?:[01]?\d|2[0-3]):[0-5]?\d:[0-5]?\d$/
} else {
$start = '00:00:00';
}
if($end) {
$messages{epeakwerr} = 'Client.Syntax.MalformedDaytime' unless $end =~ /^(?:[01]?\d|2[0-3]):[0-5]?\d:[0-5]?\d$/
$messages{epeakerr} = 'Client.Syntax.MalformedDaytime' unless $end =~ /^(?:[01]?\d|2[0-3]):[0-5]?\d:[0-5]?\d$/
} else {
$end = '23:59:59';
}
}
$c->response->redirect("/billing/show_peaktimes?bilprof=$bilprof&edit_weekday=$weekday");
if($weekday) {
$c->response->redirect("/billing/show_peaktimes?bilprof=$bilprof&edit_weekday=$weekday");
} else {
$c->response->redirect("/billing/show_peaktimes?bilprof=$bilprof&show_year=$show_year&edit_date=". ($edit_date ? $edit_date : $date) ."#special");
}
my $peaktimes;
return unless $c->model('Provisioning')->call_prov( $c, 'billing', 'get_billing_profile_offpeak_times',
@ -751,24 +788,37 @@ sub do_edit_peaktime : Local {
);
my @oldpeaktimes;
for(eval { @{$$peaktimes{weekdays}} }) {
if($$_{day} == $weekday) {
@oldpeaktimes = eval { @{$$_{ranges}} };
last;
if($weekday) {
for(eval { @{$$peaktimes{weekdays}} }) {
if($$_{day} == $weekday) {
@oldpeaktimes = eval { @{$$_{ranges}} };
last;
}
}
} else {
for(eval { @{$$peaktimes{special}} }) {
if($$_{date} eq $date) {
@oldpeaktimes = eval { @{$$_{ranges}} };
last;
}
}
}
if($startold and $endold) {
@oldpeaktimes = grep { !($$_{start} eq $startold and $$_{end} eq $endold) } @oldpeaktimes;
@oldpeaktimes = grep { !($$_{start} eq $startold and $$_{end} eq $endold) and
!($$_{start} eq $start and $$_{end} eq $end) } @oldpeaktimes;
} else {
@oldpeaktimes = grep { !($$_{start} eq $start and $$_{end} eq $end) } @oldpeaktimes;
}
unless(keys %messages) {
if($c->model('Provisioning')->call_prov( $c, 'billing', 'set_billing_profile_offpeak_times',
{ handle => $bilprof,
offpeak_times => {
weekdays => [
($weekday ? 'weekdays' : 'special') => [
{
day => $weekday,
$weekday ? ('day' => $weekday)
: ('date' => $date),
ranges => [
@oldpeaktimes,
($delete ? () :
@ -784,7 +834,11 @@ sub do_edit_peaktime : Local {
},
undef))
{
$messages{epeakwmsg} = 'Web.Fees.SavedPeaktimes';
if(defined $edit_date and $edit_date eq 'new') {
my $year = (split /-/, $date)[0];
$c->response->redirect("/billing/show_peaktimes?bilprof=$bilprof&show_year=$year#special");
}
$messages{epeakmsg} = 'Web.Fees.SavedPeaktimes';
$c->session->{messages} = \%messages;
return;
}
@ -792,6 +846,7 @@ sub do_edit_peaktime : Local {
$c->session->{messages} = \%messages;
$c->session->{restore_peaktimes} = {
date => $date,
start => $start, end => $end,
startold => $startold, endold => $endold
};

@ -352,3 +352,7 @@ h3 {
#contentplace .reducespace {
margin-bottom: -10px;
}
#contentplace .padding6 {
padding: 6px;
}

@ -52,8 +52,8 @@
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="peaksavenew" />
</div>
</form>
[% IF messages.epeakwmsg %]<div class="goodmsg">[% messages.epeakwmsg %]</div>[% END %]
[% IF messages.epeakwerr %]<div class="errormsg">[% messages.epeakwerr %]</div>[% END %]
[% IF messages.epeakmsg %]<div class="goodmsg">[% messages.epeakmsg %]</div>[% END %]
[% IF messages.epeakerr %]<div class="errormsg">[% messages.epeakerr %]</div>[% END %]
</td>
<td><a href="/billing/show_peaktimes?bilprof=[% bilprof.handle %]" class="aaction">exit</a></td>
[% ELSE %]
@ -78,3 +78,141 @@
</table>
</div>
<h3 id="special">Dates</h3>
[% UNLESS Catalyst.session.admin.read_only %]
[% IF edit_date == "new" %]
<div class="p1">
<form action="/billing/do_edit_peaktime" method="post">
<div class="postlink">
<input type="hidden" name="show_year" value="[% show_year %]" />
<input type="text" name="date" value="[% newrange.date %]" />
<input type="hidden" name="bilprof" value="[% bilprof.handle %]" />
<input type="text" class="peaktime" name="start" value="[% newrange.start %]" /> -
<input type="text" class="peaktime" name="end" value="[% newrange.end %]" />
<input type="hidden" name="edit_date" value="new" />
<label for="peaksavenew">save</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="peaksavenew" />
&nbsp;
<a href="/billing/show_peaktimes?bilprof=[% bilprof.handle %]&amp;show_year=[% show_year %]#special" class="aaction">cancel</a>
</div>
</form>
[% IF messages.epeakmsg %]<div class="goodmsg">[% messages.epeakmsg %]</div>[% END %]
[% IF messages.epeakerr %]<div class="errormsg">[% messages.epeakerr %]</div>[% END %]
</div>
[% ELSE %]
<div class="actions">
<a href="/billing/show_peaktimes?bilprof=[% bilprof.handle %]&amp;show_year=[% show_year %]&amp;edit_date=new#special"
class="aaction">add new date</a>
</div>
[% END %]
[% END %]
<div class="p1">
[% IF dates || years %]
<table class="billing_peaktimes">
<!--
<tr class="table_header">
<td style="width:50px;">years</td>
<td />
</tr>
-->
<tr>
<td class="tdkey padding6">
[% FOREACH year = years %]
[% IF year == show_year %]
[% year %]<br />
[% ELSE %]
<a href="/billing/show_peaktimes?bilprof=[% bilprof.handle %]&amp;show_year=[% year %]">[% year %]</a><br />
[% END %]
[% END %]
</td>
<td>
[% IF dates %]
<table class="billing_peaktimes">
<tr class="table_header">
<td style="width:80px;">date</td>
<td>ranges</td>
<td style="width:60px;" />
</tr>
[% dt = 0 %]
[% FOREACH date = dates %]
<tr>
<td class="tdkey">[% date.date %]</td>
[% IF date.date == edit_date %]
<td>
[% IF date.ranges %]
[% id = 0 %]
[% FOREACH range = date.ranges %]
<div class="postlink">
<form action="/billing/do_edit_peaktime" method="post" class="peakedit">
<input type="hidden" name="bilprof" value="[% bilprof.handle %]" />
<input type="hidden" name="show_year" value="[% show_year %]" />
<input type="hidden" name="date" value="[% date.date %]" />
<input type="hidden" name="startold" value="[% range.start %]" />
<input type="hidden" name="endold" value="[% range.end %]" />
<input type="text" class="peaktime" name="start" value="[% range.restore_start || range.start %]" /> -
<input type="text" class="peaktime" name="end" value="[% range.restore_end || range.end %]" />
<label for="peaksave[% id %]">save</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="peaksave[% id %]" />
</form>
<form action="/billing/do_edit_peaktime" method="post">
<input type="hidden" name="bilprof" value="[% bilprof.handle %]" />
<input type="hidden" name="show_year" value="[% show_year %]" />
<input type="hidden" name="date" value="[% date.date %]" />
<input type="hidden" name="startold" value="[% range.start %]" />
<input type="hidden" name="endold" value="[% range.end %]" />
<label for="peakdel[% id %]">delete</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="peakdel[% id %]" />
</form><br clear="all" class="reducespace" />
</div>
[% id = id + 1 %]
[% END %]
[% END %]
<form action="/billing/do_edit_peaktime" method="post">
<div class="postlink">
<input type="hidden" name="show_year" value="[% show_year %]" />
<input type="hidden" name="date" value="[% date.date %]" />
<input type="hidden" name="bilprof" value="[% bilprof.handle %]" />
<input type="text" class="peaktime" name="start" value="[% newrange.start %]" /> -
<input type="text" class="peaktime" name="end" value="[% newrange.end %]" />
<label for="peaksavenew">save</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="peaksavenew" />
</div>
</form>
[% IF messages.epeakmsg %]<div class="goodmsg">[% messages.epeakmsg %]</div>[% END %]
[% IF messages.epeakerr %]<div class="errormsg">[% messages.epeakerr %]</div>[% END %]
</td>
<td><a href="/billing/show_peaktimes?bilprof=[% bilprof.handle %]&amp;show_year=[% show_year %]#special" class="aaction">exit</a></td>
[% ELSE %]
<td>
[% IF date.ranges %]
[% FOREACH range = date.ranges %]
[% range.start %] - [% range.end %]<br />
[% END %]
[% ELSE %]
No ranges defined.
[% END %]
</td>
[% UNLESS Catalyst.session.admin.read_only %]
<td><a href="/billing/show_peaktimes?bilprof=[% bilprof.handle %]&amp;show_year=[% show_year %]&amp;edit_date=[% date.date %]" class="aaction">edit</a></td>
[% ELSE %]
<td />
[% END %]
[% END %]
</tr>
[% dt = dt + 1 %]
[% END %]
</table>
[% END %]
</td>
</tr>
</table>
[% ELSE %]
No ranges defined.
[% END %]
</div>

Loading…
Cancel
Save