AVP-78 Feature to check if parents looked at report card
This commit is contained in:
@@ -13,11 +13,11 @@ class AllowCompetitionWinnerRankTies extends Migration
|
||||
return;
|
||||
}
|
||||
|
||||
if ($db->indexExists('competition_winners', 'competition_id_class_section_id_rank')) {
|
||||
if ($this->indexExists($db, 'competition_winners', 'competition_id_class_section_id_rank')) {
|
||||
$db->query('DROP INDEX competition_id_class_section_id_rank ON competition_winners');
|
||||
}
|
||||
|
||||
if (!$db->indexExists('competition_winners', 'competition_id_class_section_id_rank')) {
|
||||
if (! $this->indexExists($db, 'competition_winners', 'competition_id_class_section_id_rank')) {
|
||||
$db->query(
|
||||
'CREATE INDEX competition_id_class_section_id_rank ON competition_winners (competition_id, class_section_id, rank)'
|
||||
);
|
||||
@@ -31,7 +31,7 @@ class AllowCompetitionWinnerRankTies extends Migration
|
||||
return;
|
||||
}
|
||||
|
||||
if ($db->indexExists('competition_winners', 'competition_id_class_section_id_rank')) {
|
||||
if ($this->indexExists($db, 'competition_winners', 'competition_id_class_section_id_rank')) {
|
||||
$db->query('DROP INDEX competition_id_class_section_id_rank ON competition_winners');
|
||||
}
|
||||
|
||||
@@ -39,4 +39,23 @@ class AllowCompetitionWinnerRankTies extends Migration
|
||||
'ALTER TABLE competition_winners ADD UNIQUE KEY competition_id_class_section_id_rank (competition_id, class_section_id, rank)'
|
||||
);
|
||||
}
|
||||
|
||||
private function indexExists($db, string $table, string $index): bool
|
||||
{
|
||||
if (method_exists($db, 'indexExists')) {
|
||||
return $db->indexExists($table, $index);
|
||||
}
|
||||
|
||||
$dbName = $db->getDatabase();
|
||||
$builder = $db->table('information_schema.STATISTICS');
|
||||
$row = $builder
|
||||
->select('INDEX_NAME')
|
||||
->where('TABLE_SCHEMA', $dbName)
|
||||
->where('TABLE_NAME', $table)
|
||||
->where('INDEX_NAME', $index)
|
||||
->get()
|
||||
->getRowArray();
|
||||
|
||||
return ! empty($row);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1,37 @@
|
||||
Print all
|
||||
<?php
|
||||
|
||||
namespace App\Database\Migrations;
|
||||
|
||||
use CodeIgniter\Database\Migration;
|
||||
|
||||
class AddPageSelectionToPrintRequests extends Migration
|
||||
{
|
||||
public function up()
|
||||
{
|
||||
if (! $this->db->tableExists('print_requests')) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (! $this->db->fieldExists('page_selection', 'print_requests')) {
|
||||
$this->forge->addColumn('print_requests', [
|
||||
'page_selection' => [
|
||||
'type' => 'VARCHAR',
|
||||
'constraint' => 255,
|
||||
'null' => true,
|
||||
'after' => 'num_copies',
|
||||
],
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
if (! $this->db->tableExists('print_requests')) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->db->fieldExists('page_selection', 'print_requests')) {
|
||||
$this->forge->dropColumn('print_requests', 'page_selection');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
namespace App\Database\Migrations;
|
||||
|
||||
use CodeIgniter\Database\Migration;
|
||||
|
||||
class CreateReportCardAcknowledgements extends Migration
|
||||
{
|
||||
public function up()
|
||||
{
|
||||
if ($this->db->tableExists('report_card_acknowledgements')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->forge->addField([
|
||||
'id' => [
|
||||
'type' => 'INT',
|
||||
'constraint' => 11,
|
||||
'unsigned' => true,
|
||||
'auto_increment' => true,
|
||||
],
|
||||
'parent_id' => [
|
||||
'type' => 'INT',
|
||||
'constraint' => 11,
|
||||
'unsigned' => true,
|
||||
],
|
||||
'student_id' => [
|
||||
'type' => 'INT',
|
||||
'constraint' => 11,
|
||||
'unsigned' => true,
|
||||
],
|
||||
'school_year' => [
|
||||
'type' => 'VARCHAR',
|
||||
'constraint' => 20,
|
||||
],
|
||||
'semester' => [
|
||||
'type' => 'VARCHAR',
|
||||
'constraint' => 20,
|
||||
],
|
||||
'viewed_at' => [
|
||||
'type' => 'DATETIME',
|
||||
'null' => true,
|
||||
],
|
||||
'signed_at' => [
|
||||
'type' => 'DATETIME',
|
||||
'null' => true,
|
||||
],
|
||||
'signed_name' => [
|
||||
'type' => 'VARCHAR',
|
||||
'constraint' => 120,
|
||||
'null' => true,
|
||||
],
|
||||
'signer_ip' => [
|
||||
'type' => 'VARCHAR',
|
||||
'constraint' => 45,
|
||||
'null' => true,
|
||||
],
|
||||
'created_at' => [
|
||||
'type' => 'DATETIME',
|
||||
'null' => true,
|
||||
],
|
||||
'updated_at' => [
|
||||
'type' => 'DATETIME',
|
||||
'null' => true,
|
||||
],
|
||||
]);
|
||||
|
||||
$this->forge->addKey('id', true);
|
||||
$this->forge->addKey(['parent_id', 'student_id', 'school_year', 'semester'], false, true);
|
||||
$this->forge->createTable('report_card_acknowledgements');
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
$this->forge->dropTable('report_card_acknowledgements', true);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user