This commit is contained in:
Vladimir Dubovik
2024-12-24 14:54:02 +03:00
parent 8d973e7942
commit e6b217aba4
15 changed files with 469 additions and 318 deletions

View File

@ -20,11 +20,16 @@ final class ClassModel: NSManagedObject, Identifiable {
@NSManaged var important: Bool
@NSManaged var online: String
static var dateNow: Date = .now
// Здесь мы выполняем дополнительную инициализацию, назначая значения по умолчанию
override func awakeFromInsert() {
super.awakeFromInsert()
let calendar = Calendar.current
let moscowTimeZone = TimeZone(identifier: "Europe/Moscow")!
var calendar = Calendar.current
calendar.timeZone = moscowTimeZone
let startTime = Date()
let endTime = calendar.date(byAdding: .hour, value: 1, to: Date.init())
setPrimitiveValue("", forKey: "auditory")
@ -34,19 +39,20 @@ final class ClassModel: NSManagedObject, Identifiable {
setPrimitiveValue("Нет", forKey: "notification")
setPrimitiveValue(false, forKey: "important")
setPrimitiveValue("Оффлайн", forKey: "online")
setPrimitiveValue(Date.init(), forKey: "day")
setPrimitiveValue(Date.init(), forKey: "starttime")
setPrimitiveValue(startTime, forKey: "day")
setPrimitiveValue(startTime, forKey: "starttime")
setPrimitiveValue(endTime, forKey: "endtime")
}
}
// Расширение для загрузки данных из памяти
extension ClassModel {
// Получаем все данные из памяти
private static var classesFetchRequest: NSFetchRequest<ClassModel> {
NSFetchRequest(entityName: "ClassModel")
}
// Получаем все данные из памяти
// Получаем все данные и сортируем их по дню
static func all() -> NSFetchRequest<ClassModel> {
let request: NSFetchRequest<ClassModel> = classesFetchRequest
request.sortDescriptors = [
@ -55,3 +61,29 @@ extension ClassModel {
return request
}
}
extension ClassModel {
@discardableResult
static func makePreview(count: Int, in context: NSManagedObjectContext) -> [ClassModel] {
var classes = [ClassModel]()
for i in 0..<count {
let _class = ClassModel(context: context)
_class.subject = "Предмет \(i)"
_class.auditory = "Аудитория \(i)"
_class.professor = "Преподаватель \(i)"
_class.day = Calendar.current.date(byAdding: .day, value: i, to: .now) ?? .now
_class.starttime = Date()
_class.endtime = Calendar.current.date(byAdding: .hour, value: i, to: .now) ?? .now
classes.append(_class)
}
return classes
}
static func preview(context: NSManagedObjectContext = ClassProvider.shared.viewContext) -> ClassModel {
return makePreview(count: 1, in: context)[0]
}
static func empty(context: NSManagedObjectContext = ClassProvider.shared.viewContext) -> ClassModel {
return ClassModel(context: context)
}
}