aisa/scripts/get/get_cities_from_region.pl
2025-11-26 11:31:54 +02:00

87 lines
2.6 KiB
Perl

#!/usr/bin/perl
BEGIN { use lib '/usr/home/cfg' ; require push_inc ; }
print "Content-type: text/html\n\n";
use CGI::Carp qw(fatalsToBrowser);
use Fcntl qw(:flock);
use JSON::Repair ':all';
require cfg ;
#------------------------------------------------------------------------------------------
@ARGV = split(/\\*\&/, $ENV{'QUERY_STRING'});
foreach $ARG (@ARGV) { ($par,$val) = split(/\=/,$ARG) ; $val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $param{$par} = $val ; }
# my $json_type = $param{json_type} ;
# e.g. https://itvadmin.co.za/cgi-bin/scripts/get/get_typeahead_json.pl?json_type=additional_services
# our $debug = 1 ;
#------------------------------------------------------------------------------------------
&load_json ;
print $json ;
exit ;
#------------------------------------------------------------------------------------------
sub load_json {
# return unless $param{region_id} ;
# &db_min_ro('regions',"1,name","`id`='$param{region_id}'",'','') if $param{region_id} ;
# &db_min_ro('cities','id,city',"`province` = '$db{regions}{1}{name}'",'','') if $db{regions}{1}{name} ;
# my $city_sql = "" ;
# $city_sql .= qq~country_id='$param{country_id}'~ if $param{country_id} ;
# $city_sql .= qq~ AND ~ if $param{country_id} && $param{region_id} ;
# if ($param{region_id} eq '13') { ## OTHER
# my $abc = ($param{country_id}) ? "" : qq~country_id='0' OR ~ ;
# $city_sql .= qq~($abc region_id='0' OR region_id='13')~ ;
# } elsif ($param{region_id}) {
# $city_sql .= qq~region_id='$param{region_id}'~ ;
# }
my $city_sql = "" ;
if ($param{country_id} && !$param{region_id}) {
&db_min_ro('regions','id',"`country_id` = '$param{country_id}'") ;
$city_sql = join(" OR ",map { "region_id='$_'" } keys %{$db{regions}}) ;
$city_sql = "region_id='13'" if !$city_sql ;
} elsif ($param{region_id}) {
$city_sql = "region_id='$param{region_id}'" ;
}
my $user_extra = ($is_schools_manager || $is_operator) ? join(' OR ', map { "region_id = '$_'" } keys %{$glob_regids{$userid}}) : '' ;
$city_sql = ($city_sql && $user_extra) ? "($city_sql) AND ($user_extra)" : (!$city_sql && $user_extra) ? $user_extra : $city_sql ;
&db_min_ro('cities','id,name',"$city_sql",'','') ;
$json = '[' ;
foreach my $id (sort {$db{cities}{$a}{name} cmp $db{cities}{$b}{name}} keys %{$db{cities}}) {
$json .= qq~{"id":"$id","city_name":"$db{cities}{$id}{name}"},~ ;
}
if ($json =~ /\,/) { $json = substr($json,0,-1) ; }
$json =~ s/\\//g ;
$json .= ']' ;
} #------------------------------------------------------------------------------------------
use db ;
use common ;
1;