Brauchen Sie Hilfe - Brainstorming PHP Scheduler Klasse

8

Ich habe noch nie eine PHP-Klasse von Grund auf neu geschrieben. Aber ich denke du musst irgendwo anfangen, oder? Ich habe eine Idee, brauche aber Hilfe bei der Logik. Bitte sag mir was du denkst. Unten ist offensichtlich eine Abkürzung. In der Planungsphase.

Class - 
 -> type (recurring, single, day)
 -> Recurring days (4,2,3,4,1,2....etc. for odd schedules- need even pairs)
 -> Shift Type (onshift, vacation, medical, etc...)
 -> Emp Id
 -> Start
 -> End
 -> Location Id
 -> Hours per day
 -> Day start time

 get schedule ( by account/location/company/unit/crew/individual )
      select single entries
      separate array into days (1 day) increments
      if single entries have linking day entries, replace array with day entry information
      return mysql array of days for the time period;

 set schedule ( dates, emp id)
      if recurring
          if already exisits || conflicts with existing
              error
          create recurring template in db table
          create single db entries using recurring days for 1 year
      if single
          if date is between dates already in db || more than 1 year out
              error
          else
              insert into db
      if day
          if no existing single range
             error
          else
             insert into db under day table, with id linking to id of existing single.

 remove recurringOnly(emp id)
      delete all entries with recurring id

 remove all entries( from this date forward, emp id )
      delete entries with start date > date

 cronUpdate( cron start / end dates)
      if cron start / end dates
           delete anything with dates bigger than nextUpdate (to make sure no errors)
           select recurring db entries with nextUpdate between cron start/ end
           insert into db the next set of "recurring days" for the employee
           update nextUpdate date for employee
      else - error

quelle
+1 für Pseudocode. Können Sie jedoch genauer sagen, bei welcher Logik Sie Hilfe suchen?
Jordanien
Logan, ein großes Lob an Sie, dass Sie dies richtig machen und tatsächlich einen Brainstorming-Prozess durchführen möchten. Ich liebe Benutzer wie Sie. Aber womit genau brauchen Sie Hilfe?
Levi Morrison
Ich bin nervös wegen des Get-Zeitplans, bei dem ich mich in Tagesschritte aufteilte. Ich denke, dass es ziemlich CPU-intensiv sein könnte, besonders wenn man Zeitpläne für eine ganze Abteilung von Leuten bekommt. Außerdem würden viele Daten auf die Seite zurückgeführt. Ich sehe jedoch keinen anderen Weg, um angepasste Informationen zu einzelnen Tagen zu aktualisieren.
@Logan: Können Sie ein UML-Klassendiagramm für Ihre Klasse erstellen? Das wäre eine bessere Hilfe.
Victor

Antworten:

1

Die ersten Daten, die Sie aufgelistet haben, können die Attribute sein. Denken Sie daran, die Attribute auf privat und die Methode getters and setters auf public zu setzen. Anschließend können Sie die Methoden basierend auf diesen bereits vorhandenen Algorithmen erstellen. Es ist eine gute Idee, Ihre Klasse in einer einzigen Datei mit demselben Namen wie Ihre Klasse zu codieren, um die Organisation Ihres Projekts zu erleichtern.

Sieger
quelle