This commit is contained in:
Vladimir Dubovik
2025-02-21 14:07:01 +03:00
parent bb268cc6ad
commit 9c6515a2f5
10 changed files with 225 additions and 95 deletions

View File

@ -11,7 +11,7 @@ import Foundation
final class ScheduleViewModel: ObservableObject {
//MARK: Properties
//Schedule
@Published var weekSchedule: Table = Table(
@Published var weekScheduleGroup: Table = Table(
type: "",
name: "",
week: 0,
@ -34,7 +34,17 @@ final class ScheduleViewModel: ObservableObject {
//Groups
@Published var groups: [Choice] = []
//VPK
@Published var vpk: [[String]] = []
@Published var vpks: [[String]] = []
@Published var vpkHTML: String = ""
@Published var vpk: String = ""
@Published var weekScheduleVPK: Table = Table(
type: "",
name: "",
week: 0,
group: "",
table: [[]],
link: ""
)
//MARK: Methods
@ -56,10 +66,10 @@ final class ScheduleViewModel: ObservableObject {
self.isNewGroup = true
self.selectedDay = .init()
}
self.weekSchedule = schedule.table
self.week = weekSchedule.week
self.numOfGroup = weekSchedule.group
self.classes = weekSchedule.table
self.weekScheduleGroup = schedule.table
self.week = weekScheduleGroup.week
self.numOfGroup = weekScheduleGroup.group
self.classes = weekScheduleGroup.table
self.isFirstStartOffApp = false
self.isShowingAlertForIncorrectGroup = false
self.isLoading = false
@ -84,6 +94,47 @@ final class ScheduleViewModel: ObservableObject {
}
}
func fetchWeekVPK(isOtherWeek: Bool = false, vpk: String? = "default") {
isLoading = true
Task {
do {
var tempVPKS: Schedule
// В этот if мы заходим только если пользователь перелистывает недели и нам известы номер ВПК(в html формате) и номер недели, которая показывается пользователю
if isOtherWeek && vpk != nil {
tempVPKS = try await NetworkManager.shared.getScheduleForOtherWeek(self.week, self.vpkHTML)
}
// В else мы заходим в том случае, если не знаем номер недели, которую нужно отобразить и номер группы(в html формате)
else {
tempVPKS = try await NetworkManager.shared.getSchedule(vpk!)
self.vpk = vpk!
self.selectedDay = .init()
}
self.weekScheduleVPK = tempVPKS.table
self.vpkHTML = weekScheduleVPK.group
self.vpks = weekScheduleVPK.table
print(self.vpk)
self.isShowingAlertForIncorrectGroup = false
self.isLoading = false
self.errorInNetwork = .noError
}
catch {
if let error = error as? NetworkError {
switch (error) {
case .invalidResponse:
errorInNetwork = .invalidResponse
case .invalidData:
errorInNetwork = .invalidData
self.isShowingAlertForIncorrectGroup = true
default:
print("Неизвестная ошибка: \(error)")
}
isLoading = false
print("Есть ошибка: \(error)")
}
}
}
}
func fetchGroups(group: String) {
Task {
do {