diff --git a/bin/create_subscribers.pl b/bin/create_subscribers.pl index a2bc0ad2..288b86cb 100755 --- a/bin/create_subscribers.pl +++ b/bin/create_subscribers.pl @@ -61,8 +61,10 @@ sub get_data { customer_id => $val->{customer_id}, username => $val->{username}, password => $val->{password}, + is_pbx_group => $val->{is_pbx_group}, is_pbx_pilot => $val->{is_pbx_pilot}, pbx_extension => $val->{pbx_extension}, + pbx_group_ids => $val->{pbx_group_ids}, primary_number => { cc => $val->{cc}, ac => $val->{ac}, @@ -124,7 +126,7 @@ sub manage_contracts sub manage_domains { my $data = shift; - foreach my $domain (keys %{$data->{domains}}) + foreach my $domain (sort keys %{$data->{domains}}) { my $domain_data = $data->{domains}->{$domain}; my $d_data = { @@ -146,7 +148,7 @@ sub manage_domains sub manage_customers { my $data = shift; - foreach my $customer (keys %{$data->{customers}}) + foreach my $customer (sort keys %{$data->{customers}}) { my $customer_data = $data->{customers}->{$customer}; manage_contacts($customer_data, 'customer'); @@ -162,23 +164,63 @@ sub manage_customers return; } +sub create_subscriber +{ + my ($username, $domain , $data , $s) = @_; + my $pbx_groups = $data->{pbx_groups}; + + $s->{pbx_group_ids} = []; + $s->{username} = $username; + $s->{domain_id} = $data->{domains}->{$domain}->{domain_id}; + $s->{customer_id} = $data->{customers}->{$s->{customer}}->{customer_id}; + foreach my $group (@{$s->{pbx_groups}}) { + if (defined $pbx_groups->{$group}) { + push @{$s->{pbx_group_ids}}, $pbx_groups->{$group}; + } + else { + print "pbx_group[$group] not defined!\n"; + } + } + delete $s->{pbx_groups}; + $s->{id} = $api->create_subscriber(get_data($s)); + return; +} + +sub manage_pbx_groups +{ + my $data = shift; + $data->{pbx_groups} = {}; + foreach my $domain (sort keys %{$data->{subscribers}}) + { + my $d_data = $data->{subscribers}->{$domain}; + foreach my $username (sort keys %{$d_data}) + { + my $s = $d_data->{$username}; + next unless $s->{is_pbx_group}; + create_subscriber($username, $domain, $data, $s); + $data->{pbx_groups}->{$username} = $s->{id}; + print("$username\@$domain is a pbx_group[$s->{id}]\n"); + } + } + return; +} + sub main { my $data = shift; manage_customers($data); manage_domains($data); + manage_pbx_groups($data); - foreach my $domain (keys %{$data->{subscribers}}) + foreach my $domain (sort keys %{$data->{subscribers}}) { my $d_data = $data->{subscribers}->{$domain}; - foreach my $username (keys %{$d_data}) + foreach my $username (sort keys %{$d_data}) { my $s = $d_data->{$username}; - $s->{username} = $username; - $s->{domain_id} = $data->{domains}->{$domain}->{domain_id}; - $s->{customer_id} = $data->{customers}->{$s->{customer}}->{customer_id}; - my $id = $api->create_subscriber(get_data($s)); - print("$username\@$domain created [$id]\n"); + next if $s->{is_pbx_group}; + create_subscriber($username, $domain, $data, $s); + print("$username\@$domain created [$s->{id}]\n"); } } return;