Commit
This commit is contained in:
@ -2,14 +2,14 @@
|
||||
// EditClassViewModel.swift
|
||||
// Schedule ICTIS
|
||||
//
|
||||
// Created by G412 on 18.12.2024.
|
||||
// Created by Egor Mironov on 18.12.2024.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import CoreData
|
||||
|
||||
final class EditClassViewModel: ObservableObject {
|
||||
@Published var _class: ClassModel
|
||||
@Published var _class: CoreDataClassModel
|
||||
|
||||
let isNew: Bool
|
||||
|
||||
@ -17,7 +17,7 @@ final class EditClassViewModel: ObservableObject {
|
||||
|
||||
private let context: NSManagedObjectContext
|
||||
|
||||
init(provider: ClassProvider, _class: ClassModel? = nil) {
|
||||
init(provider: ClassProvider, _class: CoreDataClassModel? = nil) {
|
||||
self.provider = provider
|
||||
self.context = provider.newContext
|
||||
|
||||
@ -27,7 +27,7 @@ final class EditClassViewModel: ObservableObject {
|
||||
self.isNew = false
|
||||
}
|
||||
else {
|
||||
self._class = ClassModel(context: self.context)
|
||||
self._class = CoreDataClassModel(context: self.context)
|
||||
self.isNew = true
|
||||
}
|
||||
}
|
||||
|
35
Schedule ICTIS/ViewModel/SaveScheduleViewModel.swift
Normal file
35
Schedule ICTIS/ViewModel/SaveScheduleViewModel.swift
Normal file
@ -0,0 +1,35 @@
|
||||
//
|
||||
// SaveScheduleViewModel.swift
|
||||
// Schedule ICTIS
|
||||
//
|
||||
// Created by Egor Mironov on 02.04.2025.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import CoreData
|
||||
|
||||
final class SaveScheduleViewModel: ObservableObject {
|
||||
@Published var subject: JsonClassModel
|
||||
|
||||
|
||||
private let provider: ClassProvider
|
||||
|
||||
private let context: NSManagedObjectContext
|
||||
|
||||
init(provider: ClassProvider, subject: JsonClassModel? = nil) {
|
||||
self.provider = provider
|
||||
self.context = provider.newContext
|
||||
|
||||
if let subject,
|
||||
let existingClassCopy = provider.exists(subject, in: context) {
|
||||
self.subject = existingClassCopy
|
||||
}
|
||||
else {
|
||||
self.subject = JsonClassModel(context: self.context)
|
||||
}
|
||||
}
|
||||
|
||||
func save() throws {
|
||||
try provider.persist(in: context)
|
||||
}
|
||||
}
|
@ -14,6 +14,8 @@ final class ScheduleViewModel: ObservableObject {
|
||||
@Published var nameToHtml: [String : String] = [:]
|
||||
@Published var classesGroups: [[ClassInfo]] = []
|
||||
@Published var searchingGroup = ""
|
||||
@Published var filteringGroups: [String] = ["Все"]
|
||||
@Published var showOnlyChoosenGroup: String = "Все"
|
||||
|
||||
//Schedule
|
||||
@Published var weekScheduleGroup: Table = Table(
|
||||
@ -25,7 +27,7 @@ final class ScheduleViewModel: ObservableObject {
|
||||
link: ""
|
||||
)
|
||||
@Published var selectedDay: Date = .init()
|
||||
@Published var selectedIndex: Int = 1
|
||||
@Published var selectedIndex: Int = 0
|
||||
@Published var week: Int = 0
|
||||
|
||||
@Published var isFirstStartOffApp = true
|
||||
@ -92,7 +94,10 @@ final class ScheduleViewModel: ObservableObject {
|
||||
// Сортируем по времени
|
||||
self.sortClassesByTime()
|
||||
} catch {
|
||||
if let error = error as? NetworkError {
|
||||
if let urlError = error as? URLError, urlError.code == .timedOut {
|
||||
errorInNetwork = .timeout
|
||||
print("Ошибка: превышено время ожидания ответа от сервера")
|
||||
} else if let error = error as? NetworkError {
|
||||
switch error {
|
||||
case .invalidResponse:
|
||||
errorInNetwork = .invalidResponse
|
||||
@ -102,9 +107,9 @@ final class ScheduleViewModel: ObservableObject {
|
||||
default:
|
||||
print("Неизвестная ошибка: \(error)")
|
||||
}
|
||||
isLoading = false
|
||||
print("Есть ошибка: \(error)")
|
||||
}
|
||||
isLoading = false
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -172,4 +177,37 @@ final class ScheduleViewModel: ObservableObject {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func updateFilteringGroups() {
|
||||
self.filteringGroups = ["Все"]
|
||||
let keys = self.nameToHtml.keys
|
||||
self.filteringGroups.append(contentsOf: keys)
|
||||
}
|
||||
|
||||
func fillDictForVm() {
|
||||
let group1 = UserDefaults.standard.string(forKey: "group")
|
||||
let group2 = UserDefaults.standard.string(forKey: "group2")
|
||||
let group3 = UserDefaults.standard.string(forKey: "group3")
|
||||
let vpk1 = UserDefaults.standard.string(forKey: "vpk1")
|
||||
let vpk2 = UserDefaults.standard.string(forKey: "vpk2")
|
||||
let vpk3 = UserDefaults.standard.string(forKey: "vpk3")
|
||||
if let nameGroup1 = group1, nameGroup1 != "" {
|
||||
nameToHtml[nameGroup1] = ""
|
||||
}
|
||||
if let nameGroup2 = group2, nameGroup2 != "" {
|
||||
nameToHtml[nameGroup2] = ""
|
||||
}
|
||||
if let nameGroup3 = group3, nameGroup3 != "" {
|
||||
nameToHtml[nameGroup3] = ""
|
||||
}
|
||||
if let nameVpk1 = vpk1, nameVpk1 != "" {
|
||||
nameToHtml[nameVpk1] = ""
|
||||
}
|
||||
if let nameVpk2 = vpk2, nameVpk2 != "" {
|
||||
nameToHtml[nameVpk2] = ""
|
||||
}
|
||||
if let nameVpk3 = vpk3, nameVpk3 != "" {
|
||||
nameToHtml[nameVpk3] = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -9,7 +9,7 @@ import Foundation
|
||||
|
||||
@MainActor
|
||||
final class SearchGroupsViewModel: ObservableObject {
|
||||
@Published var groups: [Choice] = []
|
||||
@Published var groups: [Subject] = []
|
||||
|
||||
func fetchGroups(group: String) {
|
||||
Task {
|
||||
|
Reference in New Issue
Block a user