<%
-use FS::UID qw(dbh);
-
-my $dbh = dbh;
local $FS::UID::AutoCommit=0;
sub check {
if($error) {
$cgi->param('error', $error);
print $cgi->redirect(popurl(3) . "edit/router.cgi?". $cgi->query_string);
- $dbh->rollback;
+ dbh->rollback;
exit;
}
}
my $routernum = $cgi->param('routernum');
my $routername = $cgi->param('routername');
my $old = qsearchs('router', { routernum => $routernum });
-my @old_rf;
my @old_psr;
my $new = new FS::router {
- routernum => $routernum,
- routername => $routername,
- svcnum => 0
- };
+ map {
+ ($_, scalar($cgi->param($_)));
+ } fields('router')
+};
if($old) {
- if($old->routername ne $new->routername) {
- $error = $new->replace($old);
- } #else do nothing
+ $error = $new->replace($old);
} else {
$error = $new->insert;
+ $routernum = $new->routernum;
}
check($error);
if ($old) {
@old_psr = $old->part_svc_router;
- foreach $psr (@old_psr) {
+ foreach my $psr (@old_psr) {
if($cgi->param('svcpart_'.$psr->svcpart) eq 'ON') {
# do nothing
} else {
}
}
check($error);
- @old_rf = $old->router_field;
- foreach $rf (@old_rf) {
- if(my $new_val = $cgi->param('rf_'.$rf->routerfieldpart)) {
- if($new_val ne $rf->value) {
- my $new_rf = new FS::router_field
- { routernum => $routernum,
- value => $new_val,
- routerfieldpart => $rf->routerfieldpart };
- $error = $new_rf->replace($rf);
- } #else do nothing
- } else {
- $error = $rf->delete;
- }
- check($error);
- }
}
foreach($cgi->param) {
$error = $new_psr->insert;
}
check($error);
- } elsif($cgi->param($_) ne '' and /^rf_(\d+)$/) {
- my $part = $1;
- if(my @x = grep {$_->routerfieldpart == $part} @old_rf) {
- # already handled all of these
- } else {
- my $new_rf = new FS::router_field
- { routernum => $routernum,
- value => $cgi->param('rf_'.$part),
- routerfieldpart => $part };
- $error = $new_rf->insert;
- check($error);
- }
}
}
-
# Yay, everything worked!
-$dbh->commit or die $dbh->errstr;
-print $cgi->redirect(popurl(3). "edit/router.cgi?$routernum");
+dbh->commit or die dbh->errstr;
+print $cgi->redirect(popurl(3). "browse/router.cgi");
%>