Schön zu hören, dass CakePHP schon ein Teil der Ausbildung geworden ist. Ich gehe mal davon aus, dass du dich schon mit dem Prinzip MVC auseinandergesetzt hast und weißt, was die einzelnen Buchstaben bedeuten.
Eine Grundstruktur ist dir schon vorgegeben, MVC. Der Plan ist, wie man am besten die Ziele der Applikation (dein Dienstplan) aufteilt.
Zum Beispiel wäre ein Fahrzeug ein Objekt. Dafür erstellst du ein Model, in dem bestimmte Daten festgehalten werden.
Die Fahrzeuge müssen sich unterscheiden lassen, da es ja wahrscheinlich mehrere Fahrzeuge geben wird. Wie man das macht, ist natürlich abhängig von den Gegebenheiten. Eine Möglichkeit wäre die Kennzeichen zu speichern, oder die Fahrzeugnummern. Fahrzeugnummern sind wahrscheinlich besser, da du einfache Verknüpfungen anhand einer einzelnen Nummer machen kannst, oder auch ordnen.
So kann man sich erstmal durch die Voraussetzungen durcharbeiten. Das zweite wären zum Beispiel die Mitarbeiter. Mitarbeiter könnte man anhand von generierten IDs unterscheiden. Weitere Eigenschaften eines Mitarbeiters könnten der Name, Vorname, Alter usw. sein. Und natürlich müsste auch hier festgehalten werden, welche Art der Anstellung er hat - Zivi oder Hauptberufler.
Nun könnte man natürlich das einfach dort reinschreiben (Eigenschaft: Zivi oder Hauptberufler). Das hat aber den Nachteil, dass man dort alles eintragen kann, was man möchte oder dass man es immer wieder eintragen muss.
Also könnte man ein eigenes Model erstellen, was zum Beispiel Anstellungsart heißt und packt dort die Anstellungsart rein, die durch eine eindeutige ID identifiziert wird.
Und jetzt kommen die oben genannten Verknüpfungen ins Spiel. Du hast bis jetzt nur 3 allein stehende Models: Fahrzeuge, Mitarbeiter und Anstellungsart. Die müssen jetzt natürlich verbunden werden, damit das Ganze auch Sinn macht.
EIN Mitarbeiter hat EINE Anstellungsart. EINE Anstellungsart kann aber VIELEN Mitarbeitern zugeordnet sein.
EIN Fahrzeug kann VIELE Mitarbeiter haben. EIN Mitarbeiter kann auf EINEM Fahrzeug arbeiten (zu einer bestimmten Zeit).
So oder so ähnlich kann man seine Models verknüpfen.
Es kommen natürlich noch weitere Models dazu, wenn ich mir die Projektbeschreibung durchlese. Aber ich will ja nicht deine Arbeit machen

Soweit zu dem M. Das C behandelt die Interaktion mit den Models. Hier musst natürlich überlegen, was du überhaupt mit einem Fahrzeug machen möchtest. Sicherlich willst du eins erstellen, bestehende editieren können und überflüssige entfernen. Die so genannten actions musst natürlich programmieren bzw. diese nicht unbedingt, da es Standardactions sind und diese beim Backen automatisch mit erstellt werden.
Das V in MVC ist für die Darstellung deiner Daten zuständig. Hier hast natürlich viele Möglichkeiten, deinen Dienstplan zu präsentieren. Die Daten, die du hier darstellst sind die Daten die du per Controller aus dem (den) Model(s) holst.
Was du mit einem Rechtesystem meinst, müsstest du nochmal genauer erläutern. Verstehen kann man, dass Hauptberufler innerhalb der Applikation andere Rechte haben als Zivis. Oder aber auch, was ich mir eher denke, dass man einfach bei einem Dienst zwischen diesen beiden unterscheiden kann. Es macht doch sehr wenig Sinn, wenn alle Leute, die am Dienst teilnehmen sollen, sich in den Dienstplan einloggen und Sachen verändern können. Ich denke, dafür gibt es eine einzelne Person oder eine Abteilung, die das übernehmen wird. Was aber nicht heißen soll, dass es nicht möglich ist, Gruppen- und Nutzerrechte zu verwalten.
Hier noch zwei Screenshots von einem meiner Projekte um dir zu zeigen, dass es möglich ist, einen Dienstplan zu erstellen und wie sowas am Ende aussehen kann.
Der Hintergrund meines Projektes:
Die kleine Firma ist ein Filmdienstleister und vermietet ein bestimmtes Gerät. Davon hat sie aber 4 Stück. Dieses Gerät wird zeitweise vermietet. Die Vermietungsdauer wird in diesem Kalender dargestellt. Miettage werden hier unterschieden in halbe Miettage ([halbtransparente Darstellung] Tage, an denen das Gerät nicht arbeitet, weil es gerade verschifft wird) und volle Miettage ([volle Opazität] Tage, an denen das Gerät tatsächlich arbeitet). Die verschiedenen Geräte könnte man natürlich anhand einer Seriennummer ordnen und vergleichen, aber ich habe mich für eine Farbunterscheidung entschieden, da sie sich einfacher merken lässt als lange Seriennummern.
Ich hoffe, ich konnte dir einen kleines Denkanstoß geben. Solltest du noch Fragen haben, immer her damit
