119 lines
2.7 KiB
Go
119 lines
2.7 KiB
Go
package grpc
|
|
|
|
import (
|
|
pb "schedule_converter/proto/runner"
|
|
|
|
"schedule_converter/models"
|
|
"schedule_converter/parser"
|
|
)
|
|
|
|
func convertCourses(courses []models.Course) []*pb.Course {
|
|
result := make([]*pb.Course, len(courses))
|
|
for i, c := range courses {
|
|
schedule := make([]*pb.ScheduleTime, len(c.Schedule))
|
|
for j, s := range c.Schedule {
|
|
schedule[j] = &pb.ScheduleTime{
|
|
Day: s.Day,
|
|
Sections: convertToInt32(s.Section),
|
|
Weeks: convertToInt32(s.Weeks),
|
|
}
|
|
}
|
|
result[i] = &pb.Course{
|
|
Name: c.Name,
|
|
Teacher: c.Teacher,
|
|
Room: c.Room,
|
|
Schedule: schedule,
|
|
}
|
|
}
|
|
return result
|
|
}
|
|
|
|
func convertToInt32(arr []int) []int32 {
|
|
result := make([]int32, len(arr))
|
|
for i, v := range arr {
|
|
result[i] = int32(v)
|
|
}
|
|
return result
|
|
}
|
|
|
|
func convertGrades(grades []parser.GradeEntry) []*pb.Grade {
|
|
result := make([]*pb.Grade, 0, len(grades))
|
|
for _, g := range grades {
|
|
result = append(result, &pb.Grade{
|
|
Term: g.Term,
|
|
CourseCode: g.Code,
|
|
CourseName: g.Name,
|
|
Nature: g.Nature,
|
|
Category: g.Category,
|
|
Credit: g.Credit,
|
|
Score: g.Score,
|
|
GradePoint: g.GradePoint,
|
|
IsExam: g.IsExam,
|
|
IsRetake: g.IsRetake,
|
|
})
|
|
}
|
|
return result
|
|
}
|
|
|
|
func convertExams(exams []parser.ExamEntry) []*pb.Exam {
|
|
result := make([]*pb.Exam, 0, len(exams))
|
|
for _, e := range exams {
|
|
examTypeStr := "期末"
|
|
switch e.Type {
|
|
case parser.ExamTypeMidterm:
|
|
examTypeStr = "期中"
|
|
case parser.ExamTypeMakeup:
|
|
examTypeStr = "补考"
|
|
}
|
|
result = append(result, &pb.Exam{
|
|
CourseName: e.Course,
|
|
ExamType: examTypeStr,
|
|
Date: e.Date,
|
|
Time: e.Time,
|
|
Week: e.Week,
|
|
Weekday: e.Weekday,
|
|
})
|
|
}
|
|
return result
|
|
}
|
|
|
|
func convertEmptyClassrooms(entries []parser.EmptyClassroomEntry) []*pb.EmptyClassroomEntry {
|
|
result := make([]*pb.EmptyClassroomEntry, 0, len(entries))
|
|
for _, e := range entries {
|
|
result = append(result, &pb.EmptyClassroomEntry{
|
|
Classroom: e.Classroom,
|
|
Weekday: e.Weekday,
|
|
Periods: e.Periods,
|
|
Term: e.Term,
|
|
Weeks: e.Weeks,
|
|
})
|
|
}
|
|
return result
|
|
}
|
|
|
|
func convertCETStudentInfo(info parser.CETStudentInfo) *pb.CetStudentInfo {
|
|
return &pb.CetStudentInfo{
|
|
StudentId: info.StudentID,
|
|
Name: info.Name,
|
|
Gender: info.Gender,
|
|
IdCard: info.IDCard,
|
|
Duration: info.Duration,
|
|
Grade: info.Grade,
|
|
College: info.College,
|
|
Major: info.Major,
|
|
}
|
|
}
|
|
|
|
func convertCETScores(scores []parser.CETScore) []*pb.CetScore {
|
|
result := make([]*pb.CetScore, 0, len(scores))
|
|
for _, s := range scores {
|
|
result = append(result, &pb.CetScore{
|
|
Level: s.Level,
|
|
ExamTime: s.ExamTime,
|
|
TicketNum: s.TicketNum,
|
|
Score: s.Score,
|
|
})
|
|
}
|
|
return result
|
|
}
|