public async Task <ActionResult> ExecuteContractStatusAsync(CourseContractViewModel viewModel)
        {
            var profile = await HttpContext.GetUserAsync();

            var item = await viewModel.ExecuteContractStatusAsync(this);

            if (item != null)
            {
                return(Json(new { result = true }));
            }
            else
            {
                return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml", model: ModelState.ErrorMessage()));
            }
        }
        public async Task <ActionResult> ExecuteContractStatusAsync(CourseContractViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;

            var item = await viewModel.ExecuteContractStatusAsync(this);

            if (item == null)
            {
                if (!ModelState.IsValid)
                {
                    return(View(ConsoleHomeController.InputErrorView));
                }
                else
                {
                    return(View("~/Views/ConsoleHome/Shared/AlertMessage.cshtml", model: ModelState.ErrorMessage()));
                }
            }
            else if (viewModel.FromStatus == Naming.CourseContractStatus.待審核 && viewModel.Status == (int)Naming.CourseContractStatus.待簽名)
            {
                if (item.InstallmentID.HasValue)
                {
                    var            contractItems = item.ContractInstallment.CourseContract.ToArray();
                    CourseContract nextItem      = null;
                    int            idx           = 0;
                    for (; idx < contractItems.Length; idx++)
                    {
                        if (contractItems[idx].Status == (int?)viewModel.FromStatus && contractItems[idx].ContractID != item.ContractID)
                        {
                            nextItem = contractItems[idx];
                            break;
                        }
                    }

                    if (nextItem != null)
                    {
                        viewModel.UrlAction    = Url.Action("SignCourseContract", "ConsoleHome");
                        viewModel.KeyID        = nextItem.ContractID.EncryptKey();
                        viewModel.AlertMessage = $"總共有{contractItems.Length}張分期合約,請繼續第{idx+1}張分期合約的審核!!";
                        return(View("~/Views/ConsoleHome/Shared/ViewModelCommitted.cshtml", viewModel));
                    }
                }
            }

            return(View("~/Views/ContractConsole/Editing/ContractStatusChanged.cshtml", item));
        }