Will things ever be the same again?
[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 %
68