This commit was generated by cvs2svn to compensate for changes in r4407,
[freeside.git] / httemplate / edit / process / router.cgi
1 <%
2
3 local $FS::UID::AutoCommit=0;
4
5 sub check {
6   my $error = shift;
7   if($error) {
8     $cgi->param('error', $error);
9     print $cgi->redirect(popurl(3) . "edit/router.cgi?". $cgi->query_string);
10     dbh->rollback;
11     exit;
12   }
13 }
14
15 my $error = '';
16 my $routernum  = $cgi->param('routernum');
17 my $routername = $cgi->param('routername');
18 my $old = qsearchs('router', { routernum => $routernum });
19 my @old_psr;
20
21 my $new = new FS::router {
22   map {
23     ($_, scalar($cgi->param($_)));
24   } fields('router')
25 };
26
27 if($old) {
28   $error = $new->replace($old);
29 } else {
30   $error = $new->insert;
31   $routernum = $new->routernum;
32 }
33
34 check($error);
35
36 if ($old) {
37   @old_psr = $old->part_svc_router;
38   foreach my $psr (@old_psr) {
39     if($cgi->param('svcpart_'.$psr->svcpart) eq 'ON') {
40       # do nothing
41     } else {
42       $error = $psr->delete;
43     }
44   }
45   check($error);
46 }
47
48 foreach($cgi->param) {
49   if($cgi->param($_) eq 'ON' and /^svcpart_(\d+)$/) {
50     my $svcpart = $1;
51     if(grep {$_->svcpart == $svcpart} @old_psr) {
52       # do nothing
53     } else {
54       my $new_psr = new FS::part_svc_router { svcpart   => $svcpart,
55                                               routernum => $routernum };
56       $error = $new_psr->insert;
57     }
58     check($error);
59   }
60 }
61
62
63 # Yay, everything worked!
64 dbh->commit or die dbh->errstr;
65 print $cgi->redirect(popurl(3). "browse/router.cgi");
66
67 %>