Compare commits

...

3 Commits

Author SHA1 Message Date
root 76ec8d5728 fix reimbursement 2026-09-03 13:17:55 -04:00
root 618296f0c1 fix batch issue 2026-09-03 13:14:30 -04:00
root b9572a7698 fix permissions 2026-07-29 19:32:17 -04:00
4 changed files with 38 additions and 19 deletions
+7 -5
View File
@@ -1069,12 +1069,14 @@ $routes->match(['get', 'post'], 'whatsapp/update-membership', 'View\WhatsappCont
//Attendance //Attendance
$routes->get('admin/teacher-attendance', 'View\AttendanceController::index', ['filter' => 'auth:admin']); $staffAttendanceAccess = 'auth:admin|administrator|administrative staff|principal|vice principal';
$routes->post('admin/teacher-attendance/save', 'View\AttendanceController::save', ['filter' => 'auth:admin']);
$routes->get('admin/teacher-attendance', 'View\AttendanceController::index', ['filter' => $staffAttendanceAccess]);
$routes->post('admin/teacher-attendance/save', 'View\AttendanceController::save', ['filter' => $staffAttendanceAccess]);
// NEW: monthly overview (all sections) // NEW: monthly overview (all sections)
$routes->get('admin/teacher-attendance/month', 'View\AttendanceController::month', ['filter' => 'auth:admin']); $routes->get('admin/teacher-attendance/month', 'View\AttendanceController::month', ['filter' => $staffAttendanceAccess]);
$routes->get('admin/teacher-attendance/month.csv', 'View\AttendanceController::monthCsv', ['filter' => 'auth:admin']); $routes->get('admin/teacher-attendance/month.csv', 'View\AttendanceController::monthCsv', ['filter' => $staffAttendanceAccess]);
$routes->get('api/admin/teacher-attendance/month', 'View\AttendanceController::monthData', ['filter' => 'auth:admin']); $routes->get('api/admin/teacher-attendance/month', 'View\AttendanceController::monthData', ['filter' => $staffAttendanceAccess]);
$routes->post('attendance/record', 'View\AttendanceTrackingController::record'); $routes->post('attendance/record', 'View\AttendanceTrackingController::record');
@@ -8,6 +8,10 @@ class AddBatchNumberToReimbursements extends Migration
{ {
public function up() public function up()
{ {
if (! $this->db->tableExists('reimbursements') || $this->db->fieldExists('batch_number', 'reimbursements')) {
return;
}
$fields = [ $fields = [
'batch_number' => [ 'batch_number' => [
'type' => 'INT', 'type' => 'INT',
@@ -24,7 +28,8 @@ class AddBatchNumberToReimbursements extends Migration
public function down() public function down()
{ {
$this->forge->dropColumn('reimbursements', 'batch_number'); if ($this->db->tableExists('reimbursements') && $this->db->fieldExists('batch_number', 'reimbursements')) {
$this->forge->dropColumn('reimbursements', 'batch_number');
}
} }
} }
@@ -8,25 +8,33 @@ class AddYearlyBatchNumberToReimbursementBatches extends Migration
{ {
public function up() public function up()
{ {
$fields = [ if (! $this->db->tableExists('reimbursement_batches')) {
'yearly_batch_number' => [ return;
'type' => 'INT', }
'constraint' => 11,
'unsigned' => true,
'default' => 0,
'null' => false,
'after' => 'title',
],
];
$this->forge->addColumn('reimbursement_batches', $fields); if (! $this->db->fieldExists('yearly_batch_number', 'reimbursement_batches')) {
$fields = [
'yearly_batch_number' => [
'type' => 'INT',
'constraint' => 11,
'unsigned' => true,
'default' => 0,
'null' => false,
'after' => 'title',
],
];
$this->forge->addColumn('reimbursement_batches', $fields);
}
$this->fillExistingBatchNumbers(); $this->fillExistingBatchNumbers();
} }
public function down() public function down()
{ {
$this->forge->dropColumn('reimbursement_batches', 'yearly_batch_number'); if ($this->db->tableExists('reimbursement_batches') && $this->db->fieldExists('yearly_batch_number', 'reimbursement_batches')) {
$this->forge->dropColumn('reimbursement_batches', 'yearly_batch_number');
}
} }
private function fillExistingBatchNumbers(): void private function fillExistingBatchNumbers(): void
@@ -8,6 +8,10 @@ class CreateReimbursementBatchAdminFiles extends Migration
{ {
public function up() public function up()
{ {
if ($this->db->tableExists('reimbursement_batch_admin_files')) {
return;
}
$fields = [ $fields = [
'id' => [ 'id' => [
'type' => 'INT', 'type' => 'INT',