Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Abstract
- class ATimeOnly : CoreStoreObject {
- func timeIsValid() -> Bool {
- guard let timeStart = self.timeStart, let timeEnd = self.timeEnd else {
- return false
- }
- return timeEnd > timeStart
- }
- func timeLengthInMins() -> Int? {
- guard let timeStart = self.timeStart, let timeEnd = self.timeEnd else {
- return nil
- }
- let timeDuration = timeEnd.timeIntervalSince(timeStart)
- let timeMinutes = Int(timeDuration / 60)
- return timeMinutes
- }
- @Field.Stored("timeStart")
- var timeStart: Date?
- @Field.Stored("timeEnd")
- var timeEnd: Date?
- }
- // Abstract
- class ARepeatDayTime : ATimeOnly {
- @Field.Coded("days", coder: FieldCoders.Json.self)
- var days: [String]? = []
- @Field.Stored("repeatEndDay")
- var repeatStartDay: Date?
- @Field.Stored("repeatEndDay")
- var repeatEndDay: Date?
- @Field.Stored("repeats")
- var repeats: String = "No"
- @Field.Stored("date")
- var date: Date?
- }
- // Employee Controlled
- class Employee: CoreStoreObject {
- @Field.Stored("name")
- var name: String = ""
- @Field.Stored("minHoursNeeded")
- var minHoursNeeded: Int8 = 20
- @Field.Stored("maxHoursAllowed")
- var maxHoursAllowed: Int8 = 40
- @Field.Stored("isKeyHolder")
- var isKeyHolder: Bool = false
- @Field.Stored("isTraining")
- var isTraining: Bool = false
- @Field.Stored("isAdmin")
- var isAdmin: Bool = false
- // User Controlled
- @Field.Relationship("timeFrames", inverse: \.$employee)
- var timeFrames: Set<EmployeeTimeFrame>
- @Field.Relationship("employeeShifts", inverse: \.$employee)
- var employeeShifts: EmployeeShift?
- }
- // Repeat DayTime
- // Employee Controlled
- class EmployeeTimeFrame: ARepeatDayTime {
- @Field.Stored("wantWork")
- var wantWork: Int8 = 3
- @Field.Relationship("employee")
- var employee: Employee?
- }
- // Repeat DayTime
- // User Controlled
- class StationSchedule: ARepeatDayTime {
- @Field.Relationship("station")
- var station: Station?
- @Field.Relationship("employeeShifts", inverse: \.$stationSchedule)
- var employeeShifts: Set<EmployeeShift>
- @Field.Relationship("employeesNeeded", inverse: \.$stationSchedule)
- var employeesNeeded: Array<StationEmployeeNeeded>
- }
- // Time Only
- // User Controlled
- class StationEmployeeNeeded : ATimeOnly {
- @Field.Stored("amount")
- var amount: Int8 = 0
- @Field.Relationship("stationSchedule")
- var stationSchedule: StationSchedule?
- }
- // Time Only
- // Completly Dynamic
- class EmployeeBreak: ATimeOnly {
- // Dynamic
- @Field.Stored("breakType")
- var breakType: String = "S"
- // Dynamic
- @Field.Relationship("employeeShift")
- var employeeShift: EmployeeShift?
- }
- // Time Only
- // Completey Dynamic
- class EmployeeShift: ATimeOnly {
- // Dynamic
- @Field.Relationship("employeeBreaks", inverse: \.$employeeShift)
- var employeeBreaks: Set<EmployeeBreak>
- // Dynamic
- @Field.Relationship("employee")
- var employee: Employee?
- @Field.Relationship("stationSchedule")
- var stationSchedule: StationSchedule?
- }
- // User Controlled
- class Station: CoreStoreObject {
- @Field.Stored("stationName")
- var stationName: String = ""
- @Field.Stored("maxEmployees")
- var maxEmployees: Int8 = 0
- @Field.Relationship("stationSchedule", inverse: \.$station)
- var stationSchedule: Set<StationSchedule>
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement