예제 #1
0
        public static int CourseHandler(CourseOptions opts)
        {
            var attended = Me.Get().Attended(opts.All ? null : Semester.Get().Id);

            foreach (var pair in attended)
            {
                Console.ForegroundColor = ConsoleColor.DarkGray;
                Console.WriteLine("{0} ({1}门课)", Semester.IdToString(pair.Key), pair.Value.Count);

                foreach (var course in pair.Value)
                {
                    Console.ResetColor();
                    Console.Write(course.Name);
                    if (course.Schedules.Count > 0)
                    {
                        var location = course.Schedules[0].Location;
                        if (!string.IsNullOrEmpty(location))
                        {
                            Console.ForegroundColor = ConsoleColor.DarkRed;
                            Console.Write(" {0}", location);
                        }

                        Console.ForegroundColor = ConsoleColor.DarkYellow;
                        foreach (var schedule in course.Schedules)
                        {
                            Console.Write(" {0}-{1} ({2})", schedule.Day, schedule.Slot, schedule.Weeks);
                        }
                    }
                    Console.WriteLine();
                }
                Console.WriteLine();
            }
            Console.ResetColor();
            return(0);
        }
예제 #2
0
        public static int SemesterHandler(SemesterOptions opts)
        {
            var semester = Semester.Get();

            Console.WriteLine("{0} 第{1}周", Semester.IdToString(semester.Id), semester.WeekNow());
            return(0);
        }
예제 #3
0
        public static int AnnouncementHandler(AnnouncementOptions opts)
        {
            var course = Course.FuzzyGet(opts.Course);

            if (course == null)
            {
                return(1);
            }

            Console.ForegroundColor = ConsoleColor.DarkGray;
            Console.WriteLine("{0} ({1})", course.Name, Semester.IdToString(course.SemesterId));

            var anncs = course.Announcements();

            if (opts.Index != null)
            {
                if (opts.Index <= 0 || opts.Index > anncs.Count)
                {
                    return(1);
                }
                var annc = anncs[(int)opts.Index - 1];

                Console.ForegroundColor = annc.Priority >= 1 ? ConsoleColor.DarkRed : ConsoleColor.DarkYellow;
                Console.WriteLine(annc.Title);
                Console.ForegroundColor = ConsoleColor.DarkGray;
                Console.WriteLine("{0} {1}", annc.Owner?.Name, annc.CreatedAt);

                Console.ResetColor();
                Utils.WriteWithHighlights(annc.BodyText().Oneliner());
                Console.WriteLine();
            }
            else
            {
                var index = 0;
                foreach (var annc in anncs)
                {
                    Console.ForegroundColor = ConsoleColor.DarkGray;
                    Console.Write("{0,6}", annc.CreatedAt.DaysSince());

                    Console.ForegroundColor = ConsoleColor.DarkGray;
                    Console.Write(" {0,3}", ++index);

                    Console.ForegroundColor = annc.Priority >= 1 ? ConsoleColor.DarkRed : ConsoleColor.DarkYellow;
                    Console.WriteLine(" {0}", annc.Title);
                }
                Console.ResetColor();
            }
            return(0);
        }
예제 #4
0
        public static int FileHandler(FileOptions opts)
        {
            var course = Course.FuzzyGet(opts.Course);

            if (course == null)
            {
                return(1);
            }

            Console.ForegroundColor = ConsoleColor.DarkGray;
            Console.WriteLine("{0} ({1})", course.Name, Semester.IdToString(course.SemesterId));

            var files = course.Files();

            if (opts.Index != null)
            {
                if (opts.Index <= 0 || opts.Index > files.Count)
                {
                    return(1);
                }
                var file = files[(int)opts.Index - 1];

                // TODO: Download file.
            }
            else
            {
                var index = 0;
                foreach (var file in files)
                {
                    Console.ForegroundColor = ConsoleColor.DarkGray;
                    Console.Write("{0,6}", file.CreatedAt.DaysSince());

                    Console.Write(" ");
                    Utils.WriteFileSize(file.Size);

                    Console.ForegroundColor = ConsoleColor.DarkGray;
                    Console.Write(" {0,3}", ++index);

                    Console.ForegroundColor = ConsoleColor.DarkYellow;
                    Console.Write(" {0}", file.Title);

                    Console.ForegroundColor = ConsoleColor.DarkGray;
                    Console.WriteLine(" {0}", file.Description.Oneliner());
                }
                Console.ResetColor();
            }
            return(0);
        }
예제 #5
0
        public static int AssignmentHandler(AssignmentOptions opts)
        {
            var course = Course.FuzzyGet(opts.Course);

            if (course == null)
            {
                return(1);
            }

            Console.ForegroundColor = ConsoleColor.DarkGray;
            Console.WriteLine("{0} ({1})", course.Name, Semester.IdToString(course.SemesterId));

            var assignments = course.Assignments();

            if (opts.Index != null)
            {
                if (opts.Index <= 0 || opts.Index > assignments.Count)
                {
                    return(1);
                }
                var assignment = assignments[(int)opts.Index - 1];
            }
            else
            {
                var index = 0;
                foreach (var assignment in assignments)
                {
                    Console.ForegroundColor = ConsoleColor.DarkGray;
                    Console.Write("{0,5}天", (assignment.DueAt - DateTime.Now).Days);

                    Console.ForegroundColor = ConsoleColor.DarkGray;
                    Console.Write(" {0,3}", ++index);

                    Console.ForegroundColor = assignment.Submission != null ?
                                              ConsoleColor.DarkGray :
                                              (DateTime.Now > assignment.DueAt ?
                                               ConsoleColor.DarkRed :
                                               ConsoleColor.DarkYellow);
                    Console.WriteLine(" {0}", assignment.Title);
                }
                Console.ResetColor();
            }
            return(0);
        }