team-4/application-flow #3
No reviewers
Labels
No labels
No milestone
No assignees
4 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
HNNW/core!3
Loading…
Reference in a new issue
No description provided.
Delete branch "team-4/application-flow"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
/src/Module/AccountCentre/AccountsController.php:
days_config[n][enabled]Er moet nog veel worden veranderd vooral fouten door de laatste merge. Verder om conflicten met de development branch te voorkomen merg altijd de development branch in je eigen branch voordat je een pr doet.
@ -587,4 +300,0 @@}#[Route('/signoff', name: 'signoff', methods: ['GET'])]public function signoff(): ResponseWeer een methode die is verwijderd.
@ -504,4 +288,2 @@}#[Route('/notifications', name: 'notifications', methods: ['GET', 'POST'])]public function notifications(Request $request, EntityManagerInterface $entityManager): ResponseStudenten mogen niet zelf een functie uit een controller verwijderen!
@ -390,4 +223,2 @@}#[Route('/experience/{id}/delete', name: 'experience_delete', methods: ['POST'])]public function deleteExperience(string $id, Request $request, EntityManagerInterface $entityManager): ResponseStudenten mogen niet zelf een functie uit een controller verwijderen!
@ -270,4 +150,2 @@return $this->render('pages/account-centre/availability.html.twig', ['profile' => $profile,'availabilities' => $availabilities,'defaultSchedule' => $defaultScheduleVerwijder nooit zomaar waardes uit de render. deze waardes zijn nodig voor het laten zien van de pagina en worden gebruikt in availability.html.twig.
@ -275,4 +153,2 @@}#[Route('/availability/{id}/delete', name: 'availability_delete', methods: ['POST'])]public function deleteAvailability(string $id, Request $request, Connection $connection): ResponseStudenten mogen niet zelf een functie uit een controller verwijderen!
@ -91,241 +91,83 @@ final class AccountsController extends AbstractController}#[Route('/availability', name: 'availability', methods: ['GET', 'POST'])]public function availability(Request $request, EntityManagerInterface $entityManager, Connection $connection): ResponseTijdens de commit "Merge branch 'team-4/Jayden-Muller/application-flow' and resolve conflicts" #
a547ae5d1. Is heel veel van de code van availability veranderd ik weet niet of dit de bedoeling was. De vorige code ziet er beter uit aangezien die ook de aangemaakte DTO en enum gebruikt.@ -6,8 +6,8 @@ use App\Entity\Account\Account;use App\Entity\Account\Profile;use App\Entity\Account\AccountSetting;use App\Entity\Account\ProfileExperience;use App\Entity\Account\ProfileAvailability;ProfileAvailability bestaat niet er is alleen Availability.
@ -182,2 +113,2 @@} catch (\Exception $e) {$this->addFlash('error', 'Databasefout bij opslaan: ' . $e->getMessage());// Verwijder eerst de oude beschikbaarheid voor dit profiel$existingAvailabilities = $entityManager->getRepository(ProfileAvailability::class)->findBy(['profile' => $profile]);Gebruik altijd een orderby (2de parameter in deze functie) als je data uit de database in een bepaalde volgorde wil hebben. Als je dat niet gebruikt kan je niet verwachten dat de data automatisch in de oudste objecten als eerst terug geeft.
@ -183,1 +113,3 @@$this->addFlash('error', 'Databasefout bij opslaan: ' . $e->getMessage());// Verwijder eerst de oude beschikbaarheid voor dit profiel$existingAvailabilities = $entityManager->getRepository(ProfileAvailability::class)->findBy(['profile' => $profile]);foreach ($existingAvailabilities as $oldAvailability) {Het is niet logisch om de oude availabilities op deze manier te verwijderen. Ze hebben een validFrom en validUntil die bepaalt wanner ze geldig zijn, hierdoor kan het zijn dat je een availability verwijderd die langer geldig is dan de nieuwe. Verder wordt er ook niet naar de dag van de availability gekeken, dus als een gebruiker een nieuwe tijd voor dinsdag insteld dan wordt maandag verwijderd als dat de oudste availability is.
@ -186,0 +123,4 @@$endTimeStr = $endTimes[$dayOfWeek] ?? '17:00';$availability = new ProfileAvailability();if (method_exists($availability, 'setId')) {Je weet de klasse van $availability dus je zou nooit een method_exists moeten doen aangezien je kan weten welke functies deze klasse heeft.
@ -186,0 +124,4 @@$availability = new ProfileAvailability();if (method_exists($availability, 'setId')) {$availability->setId(Uuid::v4());Entities van de database krijgen automatisch een id wanneer ze opgeslagen worden dus geef ze nooit zelf een id. Dat is ook de reden dat ze geen setId hebben.
@ -186,0 +132,4 @@$availability->setStartTime(new \DateTimeImmutable($startTimeStr));$availability->setEndTime(new \DateTimeImmutable($endTimeStr));if (method_exists($availability, 'setCreatedAt')) {Hetzelfde geldt ook voor createdAt. Deze wordt automatisch gezet wanneer het object wordt aangemaakt in de database.
Goed dat de feedback van de vorige review grotendeels is verwerkt:
method_exists-check voor softDelete is weg;ProfileAvailabilityis weg;De beschikbaarheidspagina werkt alleen nog niet:
Moet opgelost worden
availability()POST:foreach ($dayEnums as $dayNumber => $dayOfWeek), maar$dayEnumswordt nergens gedefinieerd. Er wordt dus nooit iets opgeslagen.$connection->fetchAllAssociative(...), maarConnection $connectionis uit de parameters gehaald, dus de pagina crasht. Die query leest bovendien kolommen die niet meer bestaan:hours_per_weekis gedropt in Version20260914092926 en de entity gebruiktvalid_from,day_of_weekenstart_time. Gebruik$availabilityRepository->findActiveForProfile($profile)en pasavailability.html.twigdaarop aan.$activeDays,$totalHoursen zo verder is dode code.$daysInputwordt ook twee keer opgehaald. Haal dat weg.$csrfTokenwordt opgehaald, maar nooit gecontroleerd metisCsrfTokenValid().gittoegevoegd in de root. Verwijder het.composer.lock. Merge develop in je branch en voer daarnacomposer update symfony/object-mapperopnieuw uit.Verbeterpunten
7.
applicationswordt nu wel meegegeven aan de template, maarapplications.html.twiggebruikt nogprofile.projectApplications. De orderBy heeft dus nog geen effect.8. In
notifications()staan nogmethod_exists($settings, 'setId')ensetCreatedAt. Patrick heeft eerder uitgelegd dat die automatisch gezet worden. Haal ze weg.9.
AvailabilityServicewordt nergens gebruikt. Haal hem weg of gebruik hem.10. Elke keer opslaan maakt nieuwe records bij de bestaande. Bepaal hoe een bestaande beschikbaarheid voor dezelfde dag wordt afgesloten (bijvoorbeeld met
validUntil), dan krijg je geen dubbele records.11. Kleine punten: de inspringing bij
#[Route('/availability' ...)]klopt niet, en de newline aan het eind van een aantal bestanden ontbreekt.Let op: PR #15 (team 6) past dezelfde availability-code ook aan. Stem dat af.
Goed dat de oude raw-SQL-query weg is en dat de GET nu
$availabilityRepository->findActiveForProfile($profile)gebruikt. Ook demethod_exists-checks innotifications()en de inspringing van de route zijn opgelost. De beschikbaarheidspagina werkt alleen nog steeds niet:Moet opgelost worden
foreach ($dayEnums as $dayNumber => $dayOfWeek):$dayEnumswordt nog steeds nergens gedefinieerd. Er wordt dus nooit iets opgeslagen en je krijgt altijd "Selecteer minimaal één dag". Bouw de lijst bijv. op metDayOfWeek::cases()en koppel die aan de dagnummers 0-6 uit het formulier.defaultScheduleniet meer mee, maaravailability.html.twigloopt er nog over ({% for key, day in defaultSchedule %}). De pagina crasht of toont een leeg dagformulier. GeefdefaultScheduleweer mee, of bouw het in de template op.availability.daysSummaryenavailability.startDate. Die bestaan niet op de entityAvailability(die heeftdayOfWeek,startTime,endTime,validFrom,validUntil). Zodra er één record is, crasht de pagina. Pas de template aan op de entity.$csrfTokenwordt nog steeds opgehaald maar niet gecontroleerd. VoegisCsrfTokenValid('save_availability', $csrfToken)toe, plus een_token-veld in het formulier.gitstaat nog in de root. Verwijder het.composer.lock. Merge develop in je branch en voercomposer update symfony/object-mapperopnieuw uit.Verbeterpunten
7. (punt 3) Het oude blok met
$activeDays,$startTime,$endTimeen$totalHoursis nog dode code, en$daysInputwordt nog twee keer opgehaald. Haal het eerste blok weg.8. (punt 7)
applications.html.twiggebruikt nogprofile.projectApplicationsin plaats van de meegegevenapplications.9. (punt 9)
AvailabilityServicewordt nog steeds nergens gebruikt.10. (punt 10) Elke keer opslaan maakt nog nieuwe records bij de bestaande. Sluit de bestaande beschikbaarheid voor dezelfde dag af (
validUntil).11.
'Fout bij opslaan: ' . $e->getMessage()laat interne foutmeldingen aan de gebruiker zien. Toon een algemene melding en log de details.Let op: PR #15 (team 6) wijzigt dezelfde availability-code nog steeds (met de oude raw SQL). Stem af wie dit afmaakt.
View command line instructions
Manual merge helper
Use this merge commit message when completing the merge manually.
Checkout
From your project repository, check out a new branch and test the changes.