added tc_scheduling_priority table, removed pri and notes fields from tc_individual...
[eq/.git] / bin / import_ward_data
index 97b3fa1729d13af91c520293abffd4ef8faac48f..b88cba81ccb6da2fe588d72f48d61086b2bbdbdd 100755 (executable)
@@ -105,22 +105,19 @@ sub print_hash
 ######################################################################
 
 # 3RD_INDIV
-#+-------------+------------------+------+-----+---------+----------------+
-#| Field       | Type             | Null | Key | Default | Extra          |
-#+-------------+------------------+------+-----+---------+----------------+
-#| indiv       | int(16) unsigned |      | PRI | NULL    | auto_increment |
-#| mls_indiv_id| int(16) unsigned |      |     | NULL    |                |
-#| name        | varchar(60)      | YES  |     | NULL    |                |
-#| phone       | varchar(12)      | YES  |     | NULL    |                |
-#| email       | varchar(120)     | YES  |     | NULL    |                |
-#| priesthood  | enum             | YES  |     | NULL    |                |
-#| ppi_pri     | int(10) unsigned | YES  |     | 1       |                |
-#| ppi_notes   | varchar(128)     | YES  |     | NULL    |                |
-#| hti_pri     | int(10) unsigned | YES  |     | 1       |                |
-#| hti_notes   | varchar(128)     | YES  |     | NULL    |                |
-#| attending   | tinyint(1)       | YES  |     | 0       |                |
-#| valid       | tinyint(1)       | YES  |     | NULL    |                |
-#+-------------+------------------+------+-----+---------+----------------+
+#+----------------------+------------------+------+-----+---------+----------------+
+#| Field                | Type             | Null | Key | Default | Extra          |
+#+----------------------+------------------+------+-----+---------+----------------+
+#| individual           | int(16) unsigned |      | PRI | NULL    | auto_increment |
+#| mls_id               | int(16) unsigned |      |     | NULL    |                |
+#| name                 | varchar(60)      | YES  |     | NULL    |                |
+#| phone                | varchar(12)      | YES  |     | NULL    |                |
+#| email                | varchar(120)     | YES  |     | NULL    |                |
+#| priesthood           | enum             | YES  |     | NULL    |                |
+#| scheduling_priority  | int(10) unsigned | YES  |     | 30      |                |
+#| attending            | tinyint(1)       | YES  |     | 0       |                |
+#| valid                | tinyint(1)       | YES  |     | NULL    |                |
+#+----------------------+------------------+------+-----+---------+----------------+
 sub update_tc_individual_table
 {
        print "\n-> Updating tc_individual table\n";
@@ -133,7 +130,7 @@ sub update_tc_individual_table
        {
                $hashref = $membership_data{$index};
                $id = $membership_data{$index}{'Indiv ID'};
-               $indiv_name = $membership_data{$index}{'Preferred Name'};
+               $individual_name = $membership_data{$index}{'Preferred Name'};
                $address = $membership_data{$index}{'Street 1'};
                if($membership_data{$index}{'Street 2'} ne "") { 
                        $address .= " " . $membership_data{$index}{'Street 2'};
@@ -152,46 +149,46 @@ sub update_tc_individual_table
                if($phone =~ /^\(\d\d\d\) (\d\d\d-\d\d\d\d)/) { $phone = "$1-$2"; }
                $email = $membership_data{$index}{'indiv E-mail'};
                if ($email eq "") { $email = $membership_data{$index}{'Household E-mail'}; }
-               $sth = $dbh->prepare("select * from tc_individual where name=\"$indiv_name\"");
+               $sth = $dbh->prepare("select * from tc_individual where name=\"$individual_name\"");
                $sth->execute or die "-E- DB error: $DBI::errstr\n";
                my @data = ();
                while($sqlhashref = $sth->fetchrow_hashref) { push(@data, $sqlhashref); }
                my $rows = scalar @data;
                if($rows == 0) {
-                       # No existing records found for this indiv, make a new entry
-                       print "   Adding new indiv: $indiv_name\n";
-                       $sth = $dbh->prepare("insert into tc_individual values (NULL,'$id',\"$indiv_name\",'$address','$phone','$email','','$hhposition','$priesthood','','$default_interview_pri','','$default_interview_pri','',$attending,1)");
+                       # 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->execute or die "-E- DB error: $DBI::errstr\n";
                } elsif($rows == 1) {
-                       # An existing record was found for this indiv, update it
-                       print "   Updating existing indiv: $indiv_name\n";
-                       $sth = $dbh->prepare("update tc_individual set valid=1 where name=\"$indiv_name\"");
+                       # An existing record was found for this individual, update it
+                       print "   Updating existing individual: $individual_name\n";
+                       $sth = $dbh->prepare("update tc_individual set valid=1 where name=\"$individual_name\"");
                        $sth->execute or die "-E- DB error: $DBI::errstr\n";
                        if($phone ne "") { 
-                               $sth = $dbh->prepare("update tc_individual set phone='$phone' where name=\"$indiv_name\"");
+                               $sth = $dbh->prepare("update tc_individual set phone='$phone' where name=\"$individual_name\"");
                        } else {
-                               $sth = $dbh->prepare("update tc_individual set phone=NULL where name=\"$indiv_name\"");
+                               $sth = $dbh->prepare("update tc_individual set phone=NULL where name=\"$individual_name\"");
                        }
                        $sth->execute or die "-E- DB error: $DBI::errstr\n";
                        if($address ne "") { 
-                               $sth = $dbh->prepare("update tc_individual set address='$address' where name=\"$indiv_name\"");
+                               $sth = $dbh->prepare("update tc_individual set address='$address' where name=\"$individual_name\"");
                        } else {
-                               $sth = $dbh->prepare("update tc_individual set address=NULL where name=\"$indiv_name\"");
+                               $sth = $dbh->prepare("update tc_individual set address=NULL where name=\"$individual_name\"");
                        }
                        $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                       $sth = $dbh->prepare("update tc_individual set attending='$attending' where name=\"$indiv_name\"");
+                       $sth = $dbh->prepare("update tc_individual set attending='$attending' where name=\"$individual_name\"");
                        $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                       $sth = $dbh->prepare("update tc_individual set mls_indiv_id='$id' where name=\"$indiv_name\"");
+                       $sth = $dbh->prepare("update tc_individual set mls_id='$id' where name=\"$individual_name\"");
                        $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                       $sth = $dbh->prepare("update tc_individual set priesthood='$priesthood' where name=\"$indiv_name\"");
+                       $sth = $dbh->prepare("update tc_individual set priesthood='$priesthood' where name=\"$individual_name\"");
                        $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                       $sth = $dbh->prepare("update tc_individual set email='$email' where name=\"$indiv_name\"");
+                       $sth = $dbh->prepare("update tc_individual set email='$email' where name=\"$individual_name\"");
                        $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                       $sth = $dbh->prepare("update tc_individual set hh_position='$hhposition' where name=\"$indiv_name\"");
+                       $sth = $dbh->prepare("update tc_individual set hh_position='$hhposition' where name=\"$individual_name\"");
                        $sth->execute or die "-E- DB error: $DBI::errstr\n";
                } else {
                        # More than one record was found. Error! This shouldn't happen.
-                       print "   -E- More than one record found ($rows) for indiv: $indiv_name\n";
+                       print "   -E- More than one record found ($rows) for individual: $individual_name\n";
                }
        }
        $sth->finish();
@@ -261,7 +258,7 @@ sub update_tc_district_table
        $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->{indiv};
+       $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";
@@ -271,14 +268,15 @@ sub update_tc_district_table
 }
 
 # 3RD_COMPANIONSHIP
-#+---------------+------------------+------+-----+---------+-------+
-#| Field         | Type             | Null | Key | Default | Extra |
-#+---------------+------------------+------+-----+---------+-------+
-#| companionship | int(16) unsigned |      |     | 0       |       |
-#| indiv         | int(16) unsigned | YES  |     | NULL    |       |
-#| district      | int(16) unsigned | YES  |     | NULL    |       |
-#| valid         | tinyint(1)       | YES  |     | NULL    |       |
-#+---------------+------------------+------+-----+---------+-------+
+#+----------------------+------------------+------+-----+---------+-------+
+#| Field                | Type             | Null | Key | Default | Extra |
+#+----------------------+------------------+------+-----+---------+-------+
+#| companionship        | int(16) unsigned |      |     | 0       |       |
+#| individual           | int(16) unsigned | YES  |     | NULL    |       |
+#| district             | int(16) unsigned | YES  |     | NULL    |       |
+#| scheduling_priority  | int(10) unsigned | YES  |     | 30      |       |
+#| valid                | tinyint(1)       | YES  |     | NULL    |       |
+#+----------------------+------------------+------+-----+---------+-------+
 sub update_tc_companionship_table
 {
        print "\n-> Updating tc_companionship table\n";
@@ -293,34 +291,34 @@ sub update_tc_companionship_table
                foreach $key (keys %$hashref) {
                        if($key =~ /Quorum/i && $hometeaching_data{$index}{$key} =~ /Elders/i) {
                                foreach $field ("Home Teacher 1","Home Teacher 2") {
-                                       $indiv_name = $hometeaching_data{$index}{$field};
-                                       if($indiv_name eq "") { next; }
-                                       $sth2 = $dbh->prepare("select * from tc_individual where name='$indiv_name'");
+                                       $individual_name = $hometeaching_data{$index}{$field};
+                                       if($individual_name eq "") { next; }
+                                       $sth2 = $dbh->prepare("select * from tc_individual where name='$individual_name'");
                                        $sth2->execute or die "-E- DB error: $DBI::errstr\n";
                                        $sqlhashref2 = $sth2->fetchrow_hashref;
-                                       $indiv = $sqlhashref2->{indiv};
+                                       $individual = $sqlhashref2->{individual};
                                        $id = $hometeaching_data{$index}{'Comp ID'};
                                        $district = $hometeaching_data{$index}{'HT District'};
-                                       $sth = $dbh->prepare("select * from tc_companionship where indiv='$indiv' and companionship='$id'");
+                                       $sth = $dbh->prepare("select * from tc_companionship where individual='$individual' and companionship='$id'");
                                        $sth->execute or die "-E- DB error: $DBI::errstr\n";
                                        my @data = ();
                                        while($sqlhashref = $sth->fetchrow_hashref) { push(@data, $sqlhashref); }
                                        my $rows = scalar @data;
                                        if($rows == 0) {
                                                # No existing records found for this companionship, make a new entry
-                                               print "   Adding Companion to companionship: $indiv_name -> $id\n";
-                                               $sth = $dbh->prepare("insert into tc_companionship values ($id,'$indiv','$district',1)");
+                                               print "   Adding Companion to companionship: $individual_name -> $id\n";
+                                               $sth = $dbh->prepare("insert into tc_companionship values ($id,'$individual','$district',NULL,1)");
                                                $sth->execute or die "-E- DB error: $DBI::errstr\n";
                                        } else {
                                                # An existing companionship was found for this companionship, update it
                                                $sth2 = $dbh->prepare("select * from tc_companionship where district='$district' and companionship='$id'");
                                                $sth2->execute or die "-E- DB error: $DBI::errstr\n";
-                                               print "   Updating Companionship with indiv: $indiv_name ($indiv) -> $id\n";
-                                               $sth = $dbh->prepare("update tc_companionship set district='$district' where indiv='$indiv' and companionship='$id'");
+                                               print "   Updating Companionship with individual: $individual_name ($individual) -> $id\n";
+                                               $sth = $dbh->prepare("update tc_companionship set district='$district' where individual='$individual' and companionship='$id'");
                                                $sth->execute or die "-E- DB error 'district': $DBI::errstr\n";
-                                               $sth = $dbh->prepare("update tc_companionship set indiv='$indiv' where indiv='$indiv' and companionship='$id'");
-                                               $sth->execute or die "-E- DB error 'indiv': $DBI::errstr\n";
-                                               $sth = $dbh->prepare("update tc_companionship set valid=1 where indiv='$indiv' and companionship='$id'");
+                                               $sth = $dbh->prepare("update tc_companionship set individual='$individual' where individual='$individual' and companionship='$id'");
+                                               $sth->execute or die "-E- DB error 'individual': $DBI::errstr\n";
+                                               $sth = $dbh->prepare("update tc_companionship set valid=1 where individual='$individual' and companionship='$id'");
                                                $sth->execute or die "-E- DB error 'valid': $DBI::errstr\n";
                                        }
                                        $sth->finish();
@@ -332,19 +330,18 @@ sub update_tc_companionship_table
 }
 
 # 3RD_FAMILY
-#+---------------+------------------+------+-----+---------+-------+
-#| Field         | Type             | Null | Key | Default | Extra |
-#+---------------+------------------+------+-----+---------+-------+
-#| family        | int(16) unsigned |      | PRI | 0       |   A   |
-#| hofh_id       | int(16) unsigned | YES  |     | NULL    |       |
-#| name          | varchar(30)      | YES  |     | NULL    |       |
-#| name_id       | varchar(30)      | YES  |     | NULL    |       |
-#| individual    | int(16) unsigned | YES  |     | NULL    |       |
-#| companionship | int(16) unsigned | YES  |     | NULL    |       |
-#| visit_pri     | int(10) unsigned | YES  |     | 1       |       |
-#| visit_notes   | varchar(128)     | YES  |     | NULL    |       |
-#| valid         | tinyint(1)       | YES  |     | NULL    |       |
-#+---------------+------------------+------+-----+---------+-------+
+#+----------------------+------------------+------+-----+---------+-------+
+#| Field                | Type             | Null | Key | Default | Extra |
+#+----------------------+------------------+------+-----+---------+-------+
+#| family               | int(16) unsigned |      | PRI | 0       |   A   |
+#| hofh_id              | int(16) unsigned | YES  |     | NULL    |       |
+#| name                 | varchar(30)      | YES  |     | NULL    |       |
+#| name_id              | varchar(30)      | YES  |     | NULL    |       |
+#| individual           | int(16) unsigned | YES  |     | NULL    |       |
+#| companionship        | int(16) unsigned | YES  |     | NULL    |       |
+#| scheduling_priority  | int(10) unsigned | YES  |     | 30      |       |
+#| valid                | tinyint(1)       | YES  |     | NULL    |       |
+#+----------------------+------------------+------+-----+---------+-------+
 sub update_tc_family_table
 {
        print "\n-> Updating tc_family table\n";
@@ -375,7 +372,7 @@ sub update_tc_family_table
                                if($rows == 0) {
                                        # No existing records found for this family, make a new entry
                                        print "   Adding new Family: $family_name\n";
-                                       $sth = $dbh->prepare("insert into tc_family values (NULL,$id,'$family_name','$name_id','0','0','$default_visit_pri','',1)");
+                                       $sth = $dbh->prepare("insert into tc_family values (NULL,$id,'$family_name','$name_id','0','0',NULL,1)");
                                        $sth->execute or die "-E- DB error: $DBI::errstr\n";
                                } elsif($rows == 1) {
                                        # An existing record was found for this family, update it
@@ -393,7 +390,7 @@ sub update_tc_family_table
                                $sth = $dbh->prepare("select * from tc_individual WHERE name='$family_name'");
                                $sth->execute or die "-E- DB error: $DBI::errstr\n";
                                while($sqlhashref = $sth->fetchrow_hashref) {
-                                       $individual = $sqlhashref->{indiv};
+                                       $individual = $sqlhashref->{individual};
                                        print "   Updating family individual: $family_name -> $individual\n";
                                        $sth = $dbh->prepare("update tc_family set individual=$individual where name_id='$name_id'");
                                        $sth->execute or die "-E- DB error: $DBI::errstr\n";
@@ -546,7 +543,7 @@ sub check_for_changed_ids
 
        foreach $oldindex (keys %$oldhashref)
        {
-               $mls_indiv_id = $oldhashref->{$oldindex}{'Indiv ID'};
+               $mls_id = $oldhashref->{$oldindex}{'Indiv ID'};
                $hofh_id  = $oldhashref->{$oldindex}{'HofH ID'};
                $full_name = $oldhashref->{$oldindex}{'Full Name'};
                $hh_position = $oldhashref->{$oldindex}{'HH Position'};
@@ -555,9 +552,9 @@ sub check_for_changed_ids
                foreach $newindex (keys %$newhashref)
                {
                        if($newhashref->{$newindex}{'Full Name'} eq $full_name &&
-                          $mls_indiv_id != $newhashref->{$newindex}{'Indiv ID'})
+                          $mls_id != $newhashref->{$newindex}{'Indiv ID'})
                        {
-                               print "-W- Indiv ID for $full_name changed from $mls_indiv_id to $newhashref->{$newindex}{'Indiv ID'}\n";
+                               print "-W- Indiv ID for $full_name changed from $mls_id to $newhashref->{$newindex}{'Indiv ID'}\n";
                                $found_problem = 1;
                        }
 
@@ -628,6 +625,65 @@ sub update_organization_class_data
        }
 }
 
+sub update_tc_scheduling_priority_table
+{
+       print "\n-> Updating scheduling priority table\n";
+       
+       # individuals
+       # TODO: make steward flexible with a setting in the config file
+       $sth = $dbh->prepare("select * from tc_individual where steward='Elder' and valid=1");
+       $sth->execute or die "-E- DB error: $DBI::errstr\n";
+       while($sqlhashref = $sth->fetchrow_hashref) {
+               $individual = $sqlhashref->{individual};
+               $scheduling_priority = $sqlhashref->{scheduling_priority};
+               if ($scheduling_priority == 'NULL')
+               {
+                       $sth2 = $dbh->prepare("insert into tc_scheduling_priority values (NULL, 30, '')");
+                       $sth2->execute or die "-E- DB error: $DBI::errstr\n";
+                       $scheduling_priority = $dbh->last_insert_id(NULL,NULL,'tc_scheduling_priority',NULL);
+                       $sth2 = $dbh->prepare("update tc_individual set scheduling_priority=$scheduling_priority where individual=$individual");
+                       $sth2->execute or die "-E- DB error: $DBI::errstr\n";
+               }
+       }
+       
+       # families
+       # TODO: make steward flexible with a setting in the config file
+       $sth = $dbh->prepare("select tf.scheduling_priority, tf.family from tc_family AS tf JOIN tc_individual AS ti ON tf.individual=ti.individual and ti.steward='Elder' and tf.valid=1");
+       $sth->execute or die "-E- DB error: $DBI::errstr\n";
+       while($sqlhashref = $sth->fetchrow_hashref) {
+               $family = $sqlhashref->{family};
+               $scheduling_priority = $sqlhashref->{scheduling_priority};
+               #print "$family   $scheduling_priority\n";
+               if ($scheduling_priority == 'NULL')
+               {
+                       $sth2 = $dbh->prepare("insert into tc_scheduling_priority values (NULL, 30, '')");
+                       $sth2->execute or die "-E- DB error: $DBI::errstr\n";
+                       $scheduling_priority = $dbh->last_insert_id(NULL,NULL,'tc_scheduling_priority',NULL);
+                       $sth2 = $dbh->prepare("update tc_family set scheduling_priority=$scheduling_priority where family=$family");
+                       $sth2->execute or die "-E- DB error: $DBI::errstr\n";
+               }
+       }
+       
+       # companionships
+       # TODO: make steward flexible with a setting in the config file
+       $sth = $dbh->prepare("select tc.individual, tc.scheduling_priority from tc_companionship AS tc JOIN tc_individual AS ti ON tc.individual=ti.individual and (ti.steward='Elder' or ti.steward='') and tc.valid=1");
+       $sth->execute or die "-E- DB error: $DBI::errstr\n";
+       while($sqlhashref = $sth->fetchrow_hashref) {
+               $individual = $sqlhashref->{individual};
+               $scheduling_priority = $sqlhashref->{scheduling_priority};
+               #print "$individual   $scheduling_priority\n";
+               if ($scheduling_priority == 'NULL')
+               {
+                       $sth2 = $dbh->prepare("insert into tc_scheduling_priority values (NULL, 30, '')");
+                       $sth2->execute or die "-E- DB error: $DBI::errstr\n";
+                       $scheduling_priority = $dbh->last_insert_id(NULL,NULL,'tc_scheduling_priority',NULL);
+                       $sth2 = $dbh->prepare("update tc_companionship set scheduling_priority=$scheduling_priority where individual=$individual");
+                       $sth2->execute or die "-E- DB error: $DBI::errstr\n";
+               }
+       }
+       
+}
+
 ######################################################################
 # MAIN
 ######################################################################
@@ -699,6 +755,7 @@ if($opt_s) { $dbh->disconnect(); exit; }
 &update_tc_visit_table();
 &update_family_in_tc_individual_table();
 &update_organization_class_data();
+&update_tc_scheduling_priority_table();
 
 print "\n-> Import Successful! DONE...\n";