- Fix delete upload target page.
[freeside.git] / httemplate / misc / xmlhttp-ticket-update.html
1 <% encode_json($return) %>\
2 <%init>
3
4 my $id       = $cgi->param('id');
5 my $starts   = $cgi->param('starts');
6 my $due      = $cgi->param('due');
7 my $username = $cgi->param('username');
8
9 my $ticket = FS::TicketSystem->get_ticket_object( \%session, ticket_id=>$id );
10
11 #hmm, this should happen in a single transaction and either commit or rollback,
12 # but in reality failures "Don't Happen" so its not like a ticket gets
13 # half changed
14
15 my $return;
16 if ( $ticket ) {
17
18   my($orv, $omsg) = $ticket->SetOwner( $username, 'Steal' );
19   $orv = 1 if ! $orv && $omsg =~ /already own/i;
20
21   if ( $orv ) {
22
23     my $date = RT::Date->new( $session{CurrentUser} );
24     $date->Set( Format=>'unix', Value=>$starts, );
25     my($srv, $smsg) = $ticket->SetStarts( $date->ISO );
26     $srv = 1 if ! $srv && $smsg =~ /already the current value/i;
27
28     my $ddate;
29     unless ( ! $srv ) {
30       $ddate = RT::Date->new( $session{CurrentUser} );
31       $ddate->Set( Format=>'unix', Value=>$due, );
32       my($drv, $dmsg) = $ticket->SetDue( $ddate->ISO );
33       #XXX lame
34     }
35
36     if ( $srv ) {
37
38       my ($sm, $sh) = ( $date->Localtime('user'))[1,2];
39       my ($em, $eh) = ($ddate->Localtime('user'))[1,2];
40
41       #false laziness w/CalendarSlotSchedule and CalendarDaySchedule
42       my %hash = $m->comp('/rt/Ticket/Elements/Customers', Ticket => $ticket);
43       my @cust_main = values( %{$hash{cust_main}} );
44
45       $return = { 'error'       => '',
46                   #'starts'      => $starts,
47                   #'due'         => $due,
48                   #'username'    => $username,
49                                    #false laziness w/CalendarSlotSchedule
50                   'sched_label' =>
51                      FS::sched_avail::pretty_time($sh*60+$sm). '-'.
52                      FS::sched_avail::pretty_time($eh*60+$em). ': '.
53                      encode_entities($cust_main[0]->_FreesideURILabel),
54                 };
55     } else {
56       $return = { 'error' => $smsg };
57     }
58
59   } else {
60     $return = { 'error' => $omsg };
61   }
62
63 } else {
64   $return = { 'error' => 'Unknown ticket id' };
65 }
66
67 </%init>