Example #1
0
        /// <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));
        }
Example #2
0
        /// <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();
                }
            }
        }
Example #3
0
        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));
        }