/// <summary> /// 登録表示 /// </summary> /// <returns></returns> public ActionResult Regist() { Trace.WriteLine("GET /TraineeLodging/Regist"); V_TraineeLodgingReg traineeReg = new V_TraineeLodgingReg(); // 教習生のインスタンスを生成 traineeReg.TraineeList = new List <T_TraineeLodging>(); traineeReg.TraineeList.Add(new T_TraineeLodging() { ReserveDate = DateTime.Today }); // 編集モードを設定 traineeReg.EditMode = AppConstant.EditMode.Edit; // ドロップダウンリストの選択肢を設定 this.SetSelectItem(traineeReg); return(View(traineeReg)); }
/// <summary> /// ドロップダウンリストの選択肢を設定 /// </summary> /// <param name="traineeReg">教習生登録情報</param> private void SetSelectItem(V_TraineeLodgingReg traineeReg) { // マスタを取得 List <M_TrainingCourse> trainingCourseList = db.TrainingCourse.OrderBy(x => x.TrainingCourseCd).ToList(); List <M_LodgingFacility> lodgingFacilitList = db.LodgingFacility.OrderBy(x => x.LodgingCd).ToList(); // 編集モードの場合 if (AppConstant.EditMode.Edit.Equals(traineeReg.EditMode)) { for (int i = 0; i < traineeReg.TraineeList.Count(); i++) { // 性別の選択肢設定 traineeReg.TraineeList[i].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", traineeReg.TraineeList[i].Gender); // 教習コースの選択肢設定 traineeReg.TraineeList[i].SelectTrainingCourse = new SelectList(trainingCourseList, "TrainingCourseCd", "TrainingCourseName", traineeReg.TraineeList[i].TrainingCourseCd); // 宿泊施設の選択肢設定 traineeReg.TraineeList[i].SelectLodging = new SelectList(lodgingFacilitList, "LodgingCd", "LodgingName", traineeReg.TraineeList[i].LodgingCd); } } // 確認モードの場合 else { for (int i = 0; i < traineeReg.TraineeList.Count(); i++) { // 教習コースを設定 traineeReg.TraineeList[i].TrainingCourse = trainingCourseList.Where(x => x.TrainingCourseCd.Equals(traineeReg.TraineeList[i].TrainingCourseCd)).FirstOrDefault(); // 宿泊施設を設定 traineeReg.TraineeList[i].LodgingFacility = lodgingFacilitList.Where(x => x.LodgingCd.Equals(traineeReg.TraineeList[i].LodgingCd)).FirstOrDefault(); } } }
public ActionResult Regist(string cmd, int?index, [Bind(Include = "TraineeList")] V_TraineeLodgingReg traineeReg) { Trace.WriteLine("POST /TraineeLodging/Regist"); // 確認ボタンが押下された場合(TODO:本来はDBに一時登録データを持つべき?) if (AppConstant.CMD_CONFIRM.Equals(cmd)) { // 入力チェック bool validation = true; if (ModelState.IsValid) { // 日付比較 foreach (T_TraineeLodging trainee in traineeReg.TraineeList) { // 入校予定日、仮免予定日の比較 if (trainee.EntrancePlanDate >= trainee.TmpLicencePlanDate) { ViewBag.ErrorMessage = "仮免予定日は入校予定日より後に設定してください。"; validation = false; break; } // 仮免予定日、卒業予定日の比較 if (validation == true && trainee.TmpLicencePlanDate >= trainee.GraduatePlanDate) { ViewBag.ErrorMessage = "卒業予定日は仮免予定日より後に設定してください。"; validation = false; break; } } } else { // エラーメッセージを生成 ViewBag.ErrorMessage = new Utility().GetErrorMessage(ModelState); validation = false; } if (validation == true) { // 確認モードに変更 traineeReg.EditMode = AppConstant.EditMode.Confirm; // 入校予定日の最小値-10日(TODO:いったん-10日としている) DateTime minEntDate = (DateTime)traineeReg.TraineeList.Select(x => x.EntrancePlanDate).Min(); DateTime dateFrom = minEntDate.AddDays(-10); // 卒業予定日の最大値+10日(TODO:いったん+10日としている) DateTime maxGrdDate = (DateTime)traineeReg.TraineeList.Select(x => x.GraduatePlanDate).Max(); DateTime dateTo = maxGrdDate.AddDays(10); // 表データを作成 traineeReg.ChartData = new Utility().GetChartData(db, dateFrom, dateTo, traineeReg.TraineeList, null); } else { // 編集モードに変更 traineeReg.EditMode = AppConstant.EditMode.Edit; } } // 戻るボタンが押下された場合 else if (AppConstant.CMD_RETURN.Equals(cmd)) { // 編集モードに変更 traineeReg.EditMode = AppConstant.EditMode.Edit; } // 登録ボタンが押下された場合 else if (AppConstant.CMD_REGIST.Equals(cmd)) { // グループIDの最大値+1を取得 int groupId = db.TraineeLodging.Count() > 0 ? db.TraineeLodging.Select(x => x.GroupId).Max() + 1 : 1; // 外部キーマスタのリセット&グループIDの設定 traineeReg.TraineeList.ForEach(x => { x.GroupId = groupId; x.TrainingCourse = null; x.LodgingFacility = null; }); // 登録処理 db.TraineeLodging.AddRange(traineeReg.TraineeList); db.SaveChanges(); // 一覧へリダイレクト return(RedirectToAction("List")); } // 仮免・卒業日設定ボタンが押下された場合 else if (AppConstant.CMD_SET_TMP_GRD.Equals(cmd)) { // ステータスをクリア ModelState.Clear(); // 編集モードを設定 traineeReg.EditMode = AppConstant.EditMode.Edit; // インデックスを元に教習生を取得 int i = (int)index; T_TraineeLodging trainee = traineeReg.TraineeList[i]; // 教習コース、入校予定日の必須チェック if (!string.IsNullOrEmpty(trainee.TrainingCourseCd) && trainee.EntrancePlanDate != null) { // カレンダーテーブルから取得 M_EntGrdCalendar calendar = db.EntGrdCalendar.Where( x => x.TrainingCourseCd.Equals(trainee.TrainingCourseCd) && ((DateTime)x.EntrancePlanDate).Equals((DateTime)trainee.EntrancePlanDate)).FirstOrDefault(); if (calendar != null) { // 仮免予定日 traineeReg.TraineeList[i].TmpLicencePlanDate = calendar.TmpLicencePlanDate; // 卒業予定日 traineeReg.TraineeList[i].GraduatePlanDate = calendar.GraduatePlanDate; } else { // エラー ViewBag.ErrorMessage = "入校予定日の日付が入卒カレンダーに登録されていません。"; } } else { // エラー ViewBag.ErrorMessage = "教習コース、入校予定日を設定してください。"; } } // 追加ボタンが押下された場合 else if (AppConstant.CMD_ADD.Equals(cmd)) { // ステータスをクリア ModelState.Clear(); // 編集モードを設定 traineeReg.EditMode = AppConstant.EditMode.Edit; // インデックスを元に教習生を追加 int i = (int)index; traineeReg.TraineeList.Insert(i + 1, new T_TraineeLodging(traineeReg.TraineeList[i])); // 教習者名をクリア traineeReg.TraineeList[i + 1].TraineeName = ""; // キャンセルフラグをクリア traineeReg.TraineeList[i + 1].CancelFlg = false; } // 削除ボタンが押下された場合 else if (AppConstant.CMD_REMOVE.Equals(cmd)) { // ステータスをクリア ModelState.Clear(); // 編集モードを設定 traineeReg.EditMode = AppConstant.EditMode.Edit; // インデックスを元に教習生を削除 int i = (int)index; traineeReg.TraineeList.RemoveAt(i); } // その他 else { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } // ドロップダウンリストの選択肢を設定 this.SetSelectItem(traineeReg); return(View(traineeReg)); }