public async Task GetArticle(bool refresh = false)
        {
            try
            {
                if (Connectivity.NetworkAccess == NetworkAccess.Internet)
                {
                    try
                    {
                        if (dataInfo != null && !refresh)
                        {
                            var serverDataInfo = GetDataInfo();

                            if (serverDataInfo != null)
                            {
                                serverDataInfo.Remove("Timetable-" + App.GetClassName());
                                serverDataInfo.Remove("LunchMenu");
                                serverDataInfo.Remove("SchoolSchedule");
                                serverDataInfo.Add("Timetable-" + App.GetClassName(), dataInfo["Timetable-" + App.GetClassName()]);
                                serverDataInfo.Add("LunchMenu", dataInfo["LunchMenu"]);
                                serverDataInfo.Add("SchoolSchedule", dataInfo["SchoolSchedule"]);

                                var schoolNoticeChange     = false;
                                var schoolNewsletterChange = false;
                                var appNoticeChange        = false;

                                if (dataInfo["SchoolNotice"].ContainsKey("Size") && serverDataInfo["SchoolNotice"].ContainsKey("Size") &&
                                    dataInfo["SchoolNotice"]["Size"] != serverDataInfo["SchoolNotice"]["Size"])
                                {
                                    schoolNoticeChange = true;
                                }

                                if (dataInfo["SchoolNewsletter"].ContainsKey("Size") && serverDataInfo["SchoolNewsletter"].ContainsKey("Size") &&
                                    dataInfo["SchoolNewsletter"]["Size"] != serverDataInfo["SchoolNewsletter"]["Size"])
                                {
                                    schoolNewsletterChange = true;
                                }

                                if (dataInfo["AppNotice"].ContainsKey("Size") && serverDataInfo["AppNotice"].ContainsKey("Size") &&
                                    dataInfo["AppNotice"]["Size"] != serverDataInfo["AppNotice"]["Size"])
                                {
                                    appNoticeChange = true;
                                }

                                if (schoolNoticeChange || schoolNewsletterChange || appNoticeChange)
                                {
                                    var result = await DisplayAlert("최신 게시글 발견",
                                                                    "최신 게시글을 발견하였습니다.\n" +
                                                                    (schoolNoticeChange ? "\n- 공지사항 : " + serverDataInfo["SchoolNotice"]["Size"] : "") +
                                                                    (schoolNewsletterChange ? "\n- 가정통신문 : " + serverDataInfo["SchoolNewsletter"]["Size"] : "") +
                                                                    (appNoticeChange ? "\n- 앱 공지사항 : " + serverDataInfo["AppNotice"]["Size"] : ""), "다운로드", "취소");

                                    if (!result)
                                    {
                                        return;
                                    }

                                    var schoolNoticeT     = "";
                                    var schoolNewsletterT = "";
                                    var appNoticeT        = "";

                                    if (schoolNoticeChange)
                                    {
                                        schoolNoticeT = GetSchoolNotice();
                                    }

                                    if (schoolNewsletterChange)
                                    {
                                        schoolNewsletterT = GetSchoolNewsletter();
                                    }

                                    if (appNoticeChange)
                                    {
                                        appNoticeT = GetAppNotice();
                                    }

                                    if (schoolNoticeT != "" || schoolNewsletterT != "" || appNoticeT != "")
                                    {
                                        // 파일로 저장
                                        var controller = new JsonController("data_info");
                                        dataInfo = serverDataInfo;
                                        await controller.Write(JObject.Parse(JsonConvert.SerializeObject(serverDataInfo)));
                                    }

                                    #region 공지사항 초기화
                                    if (schoolNoticeT != "")
                                    {
                                        TabbedHomePage.GetInstance().InitSchoolNotice();

                                        // 파일로 저장
                                        var controller = new JsonController("school_notice");
                                        await controller.Write(JObject.Parse(schoolNoticeT));
                                    }
                                    #endregion

                                    #region 가정통신문 초기화
                                    if (schoolNewsletterT != "")
                                    {
                                        TabbedHomePage.GetInstance().InitSchoolNewsletter();

                                        // 파일로 저장
                                        var controller = new JsonController("school_newsletter");
                                        await controller.Write(JObject.Parse(schoolNewsletterT));
                                    }
                                    #endregion

                                    #region 앱 공지사항 초기화
                                    if (appNoticeT != "")
                                    {
                                        TabbedHomePage.GetInstance().InitAppNotice();

                                        // 파일로 저장
                                        var controller = new JsonController("app_notice");
                                        await controller.Write(JObject.Parse(appNoticeT));
                                    }
                                    #endregion
                                }
                            }

                            return;
                        }

                        var dataInfoT        = GetDataInfo();
                        var schoolNotice     = "";
                        var schoolNewsletter = "";
                        var appNotice        = "";

                        if (refresh || App.SchoolNotice == null)
                        {
                            schoolNotice = GetSchoolNotice();
                        }

                        if (refresh || App.SchoolNewsletter == null)
                        {
                            schoolNewsletter = GetSchoolNewsletter();
                        }

                        if (refresh || App.AppNotice == null)
                        {
                            appNotice = GetAppNotice();
                        }

                        if (dataInfoT != null)
                        {
                            var controller = new JsonController("data_info");
                            await controller.Write(JObject.Parse(JsonConvert.SerializeObject(dataInfoT)));
                        }

                        if (schoolNotice != "")
                        {
                            // 공지사항 초기화
                            TabbedHomePage.GetInstance().InitSchoolNotice();

                            // 파일로 저장
                            var controller = new JsonController("school_notice");
                            await controller.Write(JObject.Parse(schoolNotice));
                        }

                        if (schoolNewsletter != "")
                        {
                            // 가정통신문 초기화
                            TabbedHomePage.GetInstance().InitSchoolNewsletter();

                            // 파일로 저장
                            var controller = new JsonController("school_newsletter");
                            await controller.Write(JObject.Parse(schoolNewsletter));
                        }

                        if (appNotice != "")
                        {
                            // 앱 공지사항 초기화
                            TabbedHomePage.GetInstance().InitAppNotice();

                            // 파일로 저장
                            var controller = new JsonController("app_notice");
                            await controller.Write(JObject.Parse(appNotice));
                        }
                    }
                    catch (Exception e)
                    {
                        await ErrorAlert("게시글 가져오기", "게시글을 가져오는 도중 오류가 발생했습니다.\n" + e.Message);
                    }
                }
                else
                {
                    DependencyService.Get <IToastMessage>().Longtime("인터넷에 연결되어 있지 않아 최신 정보를 확인할 수 없습니다.");
                }
            }
            catch (Exception e)
            {
                await ErrorAlert("게시글 가져오기 (인터넷 상태)", "게시글을 가져오는 도중 오류가 발생했습니다.\n" + e.Message);
            }
        }
        public async void InitUI()
        {
            try
            {
                string timetableJson = null;

                if (App.Class != 0)
                {
                    var timetableCtrl = new JsonController("timetable-" + App.GetClassName());
                    timetableJson = timetableCtrl.ReadString();
                }

                var lunchMenuCtrl = new JsonController("lunch_menu");
                var lunchMenuJson = lunchMenuCtrl.ReadString();

                var schoolScheduleCtrl = new JsonController("school_schedule");
                var schoolScheduleJson = schoolScheduleCtrl.ReadString();

                var schoolNoticeCtrl = new JsonController("school_notice");
                var schoolNoticeJson = schoolNoticeCtrl.ReadString();

                var schoolNewsletterCtrl = new JsonController("school_newsletter");
                var schoolNewsletterJson = schoolNewsletterCtrl.ReadString();

                var appNoticeCtrl = new JsonController("app_notice");
                var appNoticeJson = appNoticeCtrl.ReadString();

                #region 시간표 파일 읽기
                if (timetableJson != null)
                {
                    App.Timetable = JsonConvert.DeserializeObject <Timetable>(timetableJson);

                    TabbedSchedulePage.GetInstance().task = true;
                    _ = TabbedSchedulePage.GetInstance().ViewScheduleAnimation();
                }
                #endregion

                #region  식 메뉴 파일 읽기
                if (lunchMenuJson != null)
                {
                    App.LunchMenu = JsonConvert.DeserializeObject <LunchMenu>(lunchMenuJson);

                    TabbedSchedulePage.GetInstance().InitLunchMenu();
                }
                #endregion

                #region 학사 일정 파일 읽기
                if (schoolScheduleJson != null)
                {
                    App.SchoolSchedule = JsonConvert.DeserializeObject <Dictionary <string, SchoolSchedule> >(schoolScheduleJson);

                    TabbedSchedulePage.GetInstance().InitSchoolSchedule();
                }
                #endregion

                #region 학교 공지사항 파일 읽기
                if (schoolNoticeJson != null)
                {
                    App.SchoolNotice = JsonConvert.DeserializeObject <Dictionary <string, Dictionary <string, string> > >(schoolNoticeJson);

                    TabbedHomePage.GetInstance().InitSchoolNotice();
                }
                #endregion

                #region 가정통신문 파일 읽기
                if (schoolNewsletterJson != null)
                {
                    App.SchoolNewsletter = JsonConvert.DeserializeObject <Dictionary <string, Dictionary <string, string> > >(schoolNewsletterJson);

                    TabbedHomePage.GetInstance().InitSchoolNewsletter();
                }
                #endregion

                #region 앱 공지사항 파일 읽기
                if (appNoticeJson != null)
                {
                    App.AppNotice = JsonConvert.DeserializeObject <Dictionary <string, Dictionary <string, string> > >(appNoticeJson);

                    TabbedHomePage.GetInstance().InitAppNotice();
                }
                #endregion
            }
            catch (Exception e)
            {
                await ErrorAlert("UI 초기화", "UI를 초기화하는 도중 오류가 발생했습니다.\n" + e.Message);
            }
        }