package import w/bulk phone number ranges, RT#39127
[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 owns/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
27     my $ddate;
28     unless ( ! $srv ) {
29       $ddate = RT::Date->new( $session{CurrentUser} );
30       $ddate->Set( Format=>'unix', Value=>$due, );
31       my($drv, $dmsg) = $ticket->SetDue( $ddate->ISO );
32       #XXX lame
33     }
34
35     if ( $srv ) {
36
37       my ($sm, $sh) = ( $date->Localtime('user'))[1,2];
38       my ($em, $eh) = ($ddate->Localtime('user'))[1,2];
39
40       #false laziness w/CalendarSlotSchedule and CalendarDaySchedule
41       my %hash = $m->comp('/rt/Ticket/Elements/Customers', Ticket => $ticket);
42       my @cust_main = values( %{$hash{cust_main}} );
43
44       $return = { 'error'       => '',
45                   #'starts'      => $starts,
46                   #'due'         => $due,
47                   #'username'    => $username,
48                                    #false laziness w/CalendarSlotSchedule
49                   'sched_label' =>
50                      FS::sched_avail::pretty_time($sh*60+$sm). '-'.
51                      FS::sched_avail::pretty_time($eh*60+$em). ': '.
52                      $cust_main[0]->_FreesideURILabel,
53                 };
54     } else {
55       $return = { 'error' => $smsg };
56     }
57
58   } else {
59     $return = { 'error' => $omsg };
60   }
61
62 } else {
63   $return = { 'error' => 'Unknown ticket id' };
64 }
65
66 </%init>