Made additional changes to allow the import to work and do the right
[eq/.git] / bin / import_ward_data
index 670383662bcd0a0d9bef1649a5a5c0612dcf0852..c61f2a60dabef58cd351fb2982aeb6ecea8c8ef8 100755 (executable)
@@ -138,7 +138,16 @@ sub update_tc_individual_table
                $phone = $membership_data{$index}{'Household Phone'};
                $priesthood = $membership_data{$index}{'Priesthood'};
                $hhposition = $membership_data{$index}{'HH Position'};
-               $organization = $organization_by_id{$id};
+                $steward = ""; # This will be set later
+                # Default to the "Elders" quorum if the Organization data per member isn't available
+               # Only add "Elders" to the quorum since we don't have any other data availalbe to us to make a call
+               # TODO: make steward flexible with a setting in the config file 
+                if((! -e "$datadir/Organization\ class\ per\ member.csv") && ($priesthood =~ /Elder/i)) { 
+                       $steward = "Elder";
+                       $organization = "Elders"; 
+               }
+                # Preferred method is to pull organization data from the csv file
+               else { $organization = $organization_by_id{$id}; }
                $attending = 0;
                if(($organization =~ /Elders/) ||
                   ($organization =~ /Young Men/) ||
@@ -157,7 +166,7 @@ sub update_tc_individual_table
                if($rows == 0) {
                        # No existing records found for this individual, make a new entry
                        print "   Adding new individual: $individual_name\n";
-                       $sth = $dbh->prepare("insert into tc_individual values (NULL,'$id',\"$individual_name\",'$address','$phone','$email','$hhposition','$priesthood','',NULL,$attending,1)");
+                       $sth = $dbh->prepare("insert into tc_individual values (NULL,'$id',\"$individual_name\",'$address','$phone','$email','$hhposition','$priesthood','$steward',NULL,$attending,1)");
                        $sth->execute or die "-E- DB error: $DBI::errstr\n";
                } elsif($rows == 1) {
                        # An existing record was found for this individual, update it
@@ -232,37 +241,6 @@ sub update_tc_calling_table()
        }
 }
 
-# TC_DISTRICT
-#+------------+------------------+------+-----+---------+-------+
-#| Field      | Type             | Null | Key | Default | Extra |
-#+------------+------------------+------+-----+---------+-------+
-#| district   | int(16) unsigned |      | PRI | 0       |       |
-#| name       | varchar(30)      | YES  |     | NULL    |       |
-#| supervisor | int(16) unsigned | YES  |     | NULL    |       |
-#| valid      | tinyint(1)       | YES  |     | NULL    |       |
-#+------------+------------------+------+-----+---------+-------+
-sub update_tc_district_table
-{
-    # Districts should be created by hand. This subroutine only
-    # updates the supervisor's ID in each district.
-    print "\n-> Updating tc_district table\n";
-    $sth = $dbh->prepare("select * from tc_district");
-    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-    while($sqlhashref = $sth->fetchrow_hashref) {
-       $supervisor_name = $sqlhashref->{name};
-       $district = $sqlhashref->{district};
-       $sth2 = $dbh->prepare("select * from tc_individual where name='$supervisor_name'");
-       $sth2->execute or die "-E- DB error: $DBI::errstr\n";
-       $sqlhashref2 = $sth2->fetchrow_hashref;
-       $supervisor_id = $sqlhashref2->{individual};
-       $sth2->finish();
-       $sth2 = $dbh->prepare("update tc_district set supervisor='$supervisor_id' where district='$district'");
-       $sth2->execute or die "-E- DB error: $DBI::errstr\n";
-       $sth2->finish();
-    }
-    $sth->finish();
-}
-
 # TC_COMPANIONSHIP
 #+----------------------+------------------+------+-----+---------+-------+
 #| Field                | Type             | Null | Key | Default | Extra |
@@ -590,6 +568,7 @@ sub update_tc_scheduling_priority_table
                        $sth2->execute or die "-E- DB error: $DBI::errstr\n";
                }
        }
+       &remove_obsolete_scheduling_priority("tc_individual");
        
        # families
        # TODO: make steward flexible with a setting in the config file
@@ -608,6 +587,7 @@ sub update_tc_scheduling_priority_table
                        $sth2->execute or die "-E- DB error: $DBI::errstr\n";
                }
        }
+       &remove_obsolete_scheduling_priority("tc_family");
        
        # companionships
        # TODO: make steward flexible with a setting in the config file
@@ -626,7 +606,35 @@ sub update_tc_scheduling_priority_table
                        $sth2->execute or die "-E- DB error: $DBI::errstr\n";
                }
        }
+       &remove_obsolete_scheduling_priority("tc_companionship");
+}
+
+sub remove_obsolete_scheduling_priority
+{
+       my $table_name = $_[0];
+
+       #print "\n-> Cleaning $table_name\n";
        
+       #$sth = $dbh->prepare("SELECT scheduling_priority FROM $table_name where scheduling_priority IS NOT NULL AND valid=0");
+       $sth = $dbh->prepare("SELECT * FROM $table_name WHERE valid=0");
+       $sth->execute or die "-E- DB error: $DBI::errstr\n";
+       while($sqlhashref = $sth->fetchrow_hashref) {
+               $scheduling_priority = $sqlhashref->{scheduling_priority};
+               $individual = $sqlhashref->{individual};
+               #$name = $sqlhashref->{name};
+               if ($scheduling_priority != "NULL") {
+                       #print "$name\n";
+                       # set scheduling_priority to NULL
+                       #print "UPDATE $table_name SET scheduling_priority=NULL WHERE individual=$individual\n";
+                       $sth2 = $dbh->prepare("UPDATE $table_name SET scheduling_priority=NULL WHERE individual=$individual");
+                       $sth2->execute or die "-E- DB error: $DBI::errstr\n";
+                       
+                       # remove entry from tc_scheduling_priority
+                       #print "DELETE FROM tc_scheduling_priority WHERE scheduling_priority=$scheduling_priority\n";
+                       $sth2 = $dbh->prepare("DELETE FROM tc_scheduling_priority WHERE scheduling_priority=$scheduling_priority");
+                       $sth2->execute or die "-E- DB error: $DBI::errstr\n";
+               }
+       }
 }
 
 ######################################################################
@@ -664,13 +672,14 @@ if(defined $opt_o) {
 
 ###################################################
 # Process command line options
+our $datadir;
 if(defined $opt_n) { $datadir = $opt_n; }
 else { $datadir = shift(@ARGV); }
 print "\n-> Processing all ward data files in $datadir\n";
 
 ###################################################
 # Parse Ward Data Files
-&csv_to_hash("$datadir/Organization\ class\ per\ member.csv", \%organization_class_data);
+&optional_csv_to_hash("$datadir/Organization\ class\ per\ member.csv", \%organization_class_data);
 &csv_to_hash("$datadir/Membership.csv",\%membership_data);
 &csv_to_hash("$datadir/HomeTeaching.csv",\%hometeaching_data);
 &csv_to_hash("$datadir/Organization.csv",\%organization_data);
@@ -691,10 +700,9 @@ if($opt_v) {
 
 if($opt_s) { $dbh->disconnect(); exit; }
 
-# Now update the various eq DB tables
+# Now update the various DB tables
 &update_tc_calling_table();
 &update_tc_individual_table();
-&update_tc_district_table();
 &update_tc_companionship_table();
 &update_tc_family_table();
 &update_tc_visit_table();