--- tags: [ag-music, aula, bugfix, codeigniter] created: 2026-04-14 updated: 2026-04-14 parent: "[[AG-Music]]" --- # Edicao de Aulas - Problemas Resolvidos ## Update parcial falhava silenciosamente - `AulaModel` tem `validationRules` com campos `required` (matricula_id, professor_id, sala_id, status, etc.) - Ao fazer update parcial (ex: so mudar `data_aula`), a validacao rejeitava porque os outros campos required nao estavam no array - `$this->aulaModel->update()` retornava `true` mesmo sem salvar nada - **Solucao**: usar `$this->db->table('aulas')->where('id', $id)->update($dados)` direto, sem passar pelo Model ## CI4 Model corrompe estado entre queries - `$this->aulaModel->first()` na verificacao de conflito corrompia o builder para queries seguintes - Causava erro `Trying to access array offset on value of type null` - **Solucao**: todas as verificacoes de conflito usam `$db->table('aulas')` direto ## Conflito de professor - aula em grupo - Professor pode dar aula para multiplos alunos na **mesma sala** (aula em grupo) - Conflito de professor so e detectado se for em **sala diferente** - Conflito de sala respeita a **capacidade** da sala (`salas.capacidade`) ## Comparacao de horarios - Form envia `09:00`, banco tem `09:00:00` - comparacao estrita (`!==`) sempre dava diferente - **Solucao**: comparar com `substr($aula['horario_inicio'], 0, 5)` - Professor e sala: usar comparacao frouxa (`!=`) pois podem ser int vs string ## Aula movida para outra semana - Quando move aula para fora da semana visivel, desaparece do calendario - Usuario achava que nao funcionou e salvava novamente com dados originais - **Solucao**: mensagem azul avisando "A aula foi movida para DD/MM/YYYY (fora da semana atual)" ## Regra Sempre usar `$this->db->table('aulas')` para updates parciais e verificacoes de conflito no AulaController. ## Ver tambem - [[Matricula Cancelar Trancar]] - mesmo padrao para MatriculaModel - [[Dashboard Calendario]] - UI do calendario - [[AG-Music]] - visao geral