/// <summary>
 /// ドロップダウンリストの選択肢を設定
 /// </summary>
 /// <param name="traineeEdt">教習生編集情報</param>
 private void SetSelectItem(V_TraineeCommutingEdt traineeEdt)
 {
     // 編集モードの場合
     if (AppConstant.EditMode.Edit.Equals(traineeEdt.EditMode))
     {
         // 性別の選択肢設定
         traineeEdt.Trainee.SelectGender = new SelectList(new List <SelectListItem> {
             new SelectListItem()
             {
                 Text = AppConstant.GENDER_MALE, Value = AppConstant.GENDER_MALE
             },
             new SelectListItem()
             {
                 Text = AppConstant.GENDER_FEMALE, Value = AppConstant.GENDER_FEMALE
             }
         }, "Value", "Text", traineeEdt.Trainee.Gender);
         // 教習コースの選択肢設定
         traineeEdt.Trainee.SelectTrainingCourse = new SelectList(db.TrainingCourse.OrderBy(x => x.TrainingCourseCd).ToList(), "TrainingCourseCd", "TrainingCourseName", traineeEdt.Trainee.TrainingCourseCd);
     }
     // 確認モードの場合
     else
     {
         // 教習コースを設定
         traineeEdt.Trainee.TrainingCourse = db.TrainingCourse.Find(traineeEdt.Trainee.TrainingCourseCd);
     }
 }
        /// <summary>
        /// 登録表示
        /// </summary>
        /// <returns></returns>
        public ActionResult Regist()
        {
            Trace.WriteLine("GET /TraineeCommuting/Regist");

            V_TraineeCommutingEdt traineeEdt = new V_TraineeCommutingEdt();

            // 教習生のインスタンスを生成
            traineeEdt.Trainee = new T_TraineeCommuting()
            {
                ReserveDate = DateTime.Today
            };

            // 編集モードを設定
            traineeEdt.EditMode = AppConstant.EditMode.Edit;

            // ドロップダウンリストの選択肢を設定
            this.SetSelectItem(traineeEdt);

            return(View(traineeEdt));
        }
        /// <summary>
        /// 更新表示
        /// </summary>
        /// <param name="id">教習生ID</param>
        /// <returns></returns>
        public ActionResult Edit(int id)
        {
            Trace.WriteLine("GET /TraineeCommuting/Edit/" + id);

            V_TraineeCommutingEdt traineeEdt = new V_TraineeCommutingEdt();

            // DBから教習生情報を取得
            traineeEdt.Trainee = db.TraineeCommuting.Find(id);
            if (traineeEdt.Trainee == null)
            {
                return(HttpNotFound());
            }

            // 編集モードを設定
            traineeEdt.EditMode = AppConstant.EditMode.Edit;

            // ドロップダウンリストの選択肢を設定
            this.SetSelectItem(traineeEdt);

            return(View(traineeEdt));
        }
        public ActionResult Edit(string cmd, [Bind(Include = "Trainee")] V_TraineeCommutingEdt traineeEdt)
        {
            Trace.WriteLine("POST /TraineeCommuting/Edit/" + traineeEdt.Trainee.TraineeId);

            // 確認ボタンが押下された場合
            if (AppConstant.CMD_CONFIRM.Equals(cmd))
            {
                // 入力チェック
                bool validation = true;
                if (ModelState.IsValid)
                {
                    // 入校予定日、仮免予定日の比較
                    if (traineeEdt.Trainee.EntrancePlanDate >= traineeEdt.Trainee.TmpLicencePlanDate)
                    {
                        ViewBag.ErrorMessage = "仮免予定日は入校予定日より後に設定してください。";
                        validation           = false;
                    }

                    // 仮免予定日、卒業予定日の比較
                    if (validation == true && traineeEdt.Trainee.TmpLicencePlanDate >= traineeEdt.Trainee.GraduatePlanDate)
                    {
                        ViewBag.ErrorMessage = "卒業予定日は仮免予定日より後に設定してください。";
                        validation           = false;
                    }
                }
                else
                {
                    // エラーメッセージを生成
                    ViewBag.ErrorMessage = new Utility().GetErrorMessage(ModelState);
                    validation           = false;
                }

                if (validation == true)
                {
                    // 確認モードに設定
                    traineeEdt.EditMode = AppConstant.EditMode.Confirm;
                    // 入校予定日-10日(TODO:いったん-10日としている)
                    DateTime dateFrom = ((DateTime)traineeEdt.Trainee.EntrancePlanDate).AddDays(-10);
                    // 卒業予定日+10日(TODO:いったん+10日としている)
                    DateTime dateTo = ((DateTime)traineeEdt.Trainee.GraduatePlanDate).AddDays(10);
                    // 表データを作成
                    traineeEdt.ChartData = new Utility().GetChartData(db, dateFrom, dateTo, null, traineeEdt.Trainee);
                }
                else
                {
                    // 編集モードに変更
                    traineeEdt.EditMode = AppConstant.EditMode.Edit;
                }
            }

            // 戻るボタンが押下された場合
            else if (AppConstant.CMD_RETURN.Equals(cmd))
            {
                // 編集モードに変更
                traineeEdt.EditMode = AppConstant.EditMode.Edit;
            }

            // 更新ボタンが押下された場合
            else if (AppConstant.CMD_UPDATE.Equals(cmd))
            {
                // マスタは更新しないため、データをクリア(TODO:他に良い方法があるか…?)
                traineeEdt.Trainee.TrainingCourse = null;
                // 更新処理
                db.Entry(traineeEdt.Trainee).State = EntityState.Modified;
                db.SaveChanges();
                // 一覧へリダイレクト
                return(RedirectToAction("List"));
            }

            // その他
            else
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            // ドロップダウンリストの選択肢を設定
            this.SetSelectItem(traineeEdt);

            return(View(traineeEdt));
        }