package FS::tower_sector;
use base qw( FS::Record );
+use FS::Record qw(dbh qsearch);
use Class::Load qw(load_class);
+use File::Path qw(make_path);
use Data::Dumper;
use strict;
The coordinate boundaries of the coverage map.
+=item title
+
+The sector title.
+
+=item up_rate_limit
+
+Up rate limit for sector.
+
+=item down_rate_limit
+
+down rate limit for sector.
+
=back
=head1 METHODS
$self->ut_numbern('sectornum')
|| $self->ut_number('towernum', 'tower', 'towernum')
|| $self->ut_text('sectorname')
- || $self->ut_textn('ip_addr')
+ || $self->ut_ip46n('ip_addr')
|| $self->ut_floatn('height')
|| $self->ut_numbern('freq_mhz')
|| $self->ut_numbern('direction')
|| $self->ut_numbern('downtilt')
|| $self->ut_floatn('sector_range')
|| $self->ut_numbern('margin')
+ || $self->ut_numbern('up_rate_limit')
+ || $self->ut_numbern('down_rate_limit')
|| $self->ut_anything('image')
|| $self->ut_sfloatn('west')
|| $self->ut_sfloatn('east')
=back
+=head1 CLASS METHODS
+
+=over 4
+
+=item part_export_svc_broadband
+
+Returns all svc_broadband exports.
+
+=cut
+
+sub part_export_svc_broadband {
+ my $info = $FS::part_export::exports{'svc_broadband'} or return;
+ my @exporttypes = map { dbh->quote($_) } keys %$info or return;
+ qsearch({
+ 'table' => 'part_export',
+ 'extra_sql' => 'WHERE exporttype IN(' . join(',', @exporttypes) . ')'
+ });
+}
+
+=back
+
=head1 SUBROUTINES
=over 4
sub process_generate_coverage {
my $job = shift;
my $param = shift;
- warn Dumper($param);
- $job->update_statustext('0,generating map');
+ $job->update_statustext('0,generating map') if $job;
my $sectornum = $param->{sectornum};
- my $sector = FS::tower_sector->by_key($sectornum);
+ my $sector = FS::tower_sector->by_key($sectornum)
+ or die "sector $sectornum does not exist";
my $tower = $sector->tower;
load_class('Map::Splat');
+ # since this is still experimental, put it somewhere we can find later
+ my $workdir = "$FS::UID::cache_dir/cache.$FS::UID::datasrc/" .
+ "generate_coverage/sector$sectornum-". time;
+ make_path($workdir);
my $splat = Map::Splat->new(
lon => $tower->longitude,
lat => $tower->latitude,
v_width => $sector->v_width,
max_loss => $sector->margin,
min_loss => $sector->margin - 80,
+ dir => $workdir,
);
$splat->calculate;
die $error if $error;
}
+sub _upgrade_data {
+
+ require FS::Misc::FixIPFormat;
+ FS::Misc::FixIPFormat::fix_bad_addresses_in_table(
+ 'tower_sector', 'sectornum', 'ip_addr',
+ );
+
+ '';
+
+}
+
=head1 BUGS
=head1 SEE ALSO
=cut
1;
-