Exemplo n.º 1
0
        public async Task <IActionResult> AddBlockCompany(string CompanyName, int?returnPage = 0)
        {
            try
            {
                // 檢查 Session 儲存的工作列表是否為空
                string JobListStr = HttpContext.Session.GetString("jobList");
                if (JobListStr == null)
                {
                    ViewBag.Error = "系統忙碌中,請稍後再試 >___<";
                    return(View("~/Views/Shared/ErrorPage.cshtml"));
                }

                // 紀錄之前所在的工作列表分頁
                returnPage = returnPage == null ? 0 : returnPage;
                if (returnPage != 0)
                {
                    HttpContext.Session.SetInt32("returnPage", (int)returnPage);
                }

                // 調用 SettingService 提供的函數將該公司添加到該用戶的所有設定檔,若中途出錯則跳轉到指定的錯誤頁面
                string ErrorMessage = SettingService.AddBlockCompany(_context, User.Identity.Name, CompanyName);
                if (ErrorMessage != null)
                {
                    ViewBag.Error = ErrorMessage;
                    return(View("~/Views/Shared/ErrorPage.cshtml"));
                }

                // 若中途沒有出錯則寫入變更到DB
                await _context.SaveChangesAsync();

                // 檢查 Session 儲存的工作列表,去除該公司所提供的工作
                JobList jobs      = JsonConvert.DeserializeObject <JobList>(JobListStr);
                JobList validJobs = JobService.GetValidJobs(jobs, CompanyName);
                HttpContext.Session.SetString("jobList", JsonConvert.SerializeObject(validJobs));

                // 跳轉回之前所在的工作列表分頁(分頁判斷的邏輯在 Job/Index )
                return(RedirectToRoute(new { controller = "Job", action = "Index" }));
            }
            catch (Exception)
            {
                ViewBag.Error = "系統忙碌中,請稍後再試 >___<";
                return(View("~/Views/Shared/ErrorPage.cshtml"));
            }
        }