예제 #1
0
        public ActionResult Edit(string cmd, [Bind(Include = "Trainee")] V_TraineeLodgingEdt traineeEdt)
        {
            Trace.WriteLine("POST /TraineeLodging/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, new List <T_TraineeLodging> {
                        traineeEdt.Trainee
                    }, null);
                }
                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;
                traineeEdt.Trainee.LodgingFacility = null;
                // 更新処理
                db.Entry(traineeEdt.Trainee).State = EntityState.Modified;
                db.SaveChanges();
                // 一覧へリダイレクト
                return(RedirectToAction("List"));
            }

            // 仮免・卒業日設定ボタンが押下された場合
            else if (AppConstant.CMD_SET_TMP_GRD.Equals(cmd))
            {
                // ステータスをクリア
                ModelState.Clear();
                // 編集モードを設定
                traineeEdt.EditMode = AppConstant.EditMode.Edit;

                // 教習コース、入校予定日の必須チェック
                if (!string.IsNullOrEmpty(traineeEdt.Trainee.TrainingCourseCd) && traineeEdt.Trainee.EntrancePlanDate != null)
                {
                    // カレンダーテーブルから取得
                    M_EntGrdCalendar calendar = db.EntGrdCalendar.Where(
                        x => x.TrainingCourseCd.Equals(traineeEdt.Trainee.TrainingCourseCd) && ((DateTime)x.EntrancePlanDate).Equals((DateTime)traineeEdt.Trainee.EntrancePlanDate)).FirstOrDefault();
                    if (calendar != null)
                    {
                        // 仮免予定日
                        traineeEdt.Trainee.TmpLicencePlanDate = calendar.TmpLicencePlanDate;
                        // 卒業予定日
                        traineeEdt.Trainee.GraduatePlanDate = calendar.GraduatePlanDate;
                    }
                    else
                    {
                        // エラー
                        ViewBag.ErrorMessage = "入校予定日の日付が入卒カレンダーに登録されていません。";
                    }
                }
                else
                {
                    // エラー
                    ViewBag.ErrorMessage = "教習コース、入校予定日を設定してください。";
                }
            }

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

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

            return(View(traineeEdt));
        }
예제 #2
0
        public ActionResult List(string cmd, int?index, [Bind(Include = "Year,Month,CalendarList")] V_EntGrdCalendarEdt entGrdCalendarEdt)
        {
            Trace.WriteLine("POST /Calendar/List");

            // 更新ボタンが押下された場合
            if (AppConstant.CMD_UPDATE.Equals(cmd))
            {
                if (ModelState.IsValid)
                {
                    foreach (M_EntGrdCalendar calendar in entGrdCalendarEdt.CalendarList)
                    {
                        if (calendar.DeleteFlg == false)
                        {
                            // 更新(ステータスを修正に設定)
                            db.Entry(calendar).State = EntityState.Modified;
                        }
                        else
                        {
                            // 削除対象を取得
                            M_EntGrdCalendar target = db.EntGrdCalendar.Find(calendar.TrainingCourseCd, calendar.EntrancePlanDate);
                            if (target != null)
                            {
                                // 削除処理
                                db.EntGrdCalendar.Remove(target);
                            }
                        }
                    }
                    db.SaveChanges();

                    // 年と月を指定してカレンダーを取得
                    entGrdCalendarEdt.CalendarList = db.EntGrdCalendar.Where(
                        x => ((DateTime)x.EntrancePlanDate).Year.ToString().Equals(entGrdCalendarEdt.Year) &&
                        ((DateTime)x.EntrancePlanDate).Month.ToString().Equals(entGrdCalendarEdt.Month))
                                                     .OrderBy(x => x.EntrancePlanDate).ThenBy(x => x.TrainingCourseCd).ToList();
                    // 削除フラグをfalseに設定
                    entGrdCalendarEdt.CalendarList.ForEach(x => x.DeleteFlg = false);

                    // 完了メッセージ
                    ViewBag.CompMessage = "データを更新しました。";
                }
                else
                {
                    // エラーメッセージを生成
                    ViewBag.ErrorMessage = new Utility().GetErrorMessage(ModelState);
                }
            }

            // 削除ボタンが押下された場合
            else if (AppConstant.CMD_REMOVE.Equals(cmd))
            {
                // ステータスをクリア
                ModelState.Clear();
                // インデックスを元にカレンダーを削除
                int i = (int)index;
                entGrdCalendarEdt.CalendarList[i].DeleteFlg = true;
            }

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

            // 外部キーのマスタを設定
            this.SetForeignMaster(entGrdCalendarEdt.CalendarList);

            return(View(entGrdCalendarEdt));
        }
예제 #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));
        }
예제 #4
0
        public ActionResult Import(string cmd, HttpPostedFileBase postedFile, [Bind(Include = "TrainingCourseCd,EntrancePlanDate,TmpLicencePlanDate,GraduatePlanDate")] List <M_EntGrdCalendar> calendarList)
        {
            Trace.WriteLine("POST /Calendar/Import");

            // 読込ボタンが押下された場合
            if (AppConstant.CMD_READ.Equals(cmd))
            {
                // ステータスをクリア
                ModelState.Clear();
                // カレンダーを初期化
                calendarList = new List <M_EntGrdCalendar>();

                if (postedFile != null)
                {
                    // 拡張子チェック
                    string extension = Path.GetExtension(postedFile.FileName);
                    if (!".csv".Equals(extension) && !".CSV".Equals(extension))
                    {
                        // エラーメッセージ
                        ViewBag.ErrorMessage = "ファイルはcsv形式を指定してください。";
                        return(View(calendarList));
                    }

                    // 教習コースマスタ取得
                    List <M_TrainingCourse> trainingCourse = db.TrainingCourse.ToList();

                    // アップロード先ディレクトリ
                    string uploadDir = AppDomain.CurrentDomain.BaseDirectory + @"Uploads\";
                    // ディレクトリが存在しない場合は作成
                    if (!Directory.Exists(uploadDir))
                    {
                        Directory.CreateDirectory(uploadDir);
                    }

                    // ファイルをサーバーに保存
                    string filepath = uploadDir + Path.GetFileName(postedFile.FileName);
                    postedFile.SaveAs(filepath);

                    // 項目数
                    int itemCnt = 0;
                    // テキストを全行読み込み
                    using (StreamReader sr = new StreamReader(filepath, Encoding.GetEncoding("shift_jis")))
                    {
                        int row = 0;
                        while (!sr.EndOfStream)
                        {
                            row++;
                            // CSVファイルの一行を読み込む
                            string line = sr.ReadLine();
                            // 読み込んだ一行をカンマ毎に分けて配列に格納
                            string[] values = line.Split(',');

                            // ヘッダ行
                            if (row == 1)
                            {
                                // 項目数を取得
                                itemCnt = values.Count();
                                // スキップ
                                continue;
                            }

                            // 空行チェック(全ての項目が空)
                            if (values.Where(x => string.IsNullOrEmpty(x)).Count() == values.Count())
                            {
                                break;
                            }
                            // CSV項目数チェック
                            if (values.Count() != itemCnt)
                            {
                                ViewBag.ErrorMessage = "csvの項目数に誤りがあるため、読み込みを途中で終了しました。 " + row + "行目";
                                break;
                            }

                            // 入校予定日
                            DateTime entrancePlanDate;
                            // 教習コースコード
                            string trainingCourseCd;
                            // 仮免予定日
                            DateTime tmpLicencePlanDate;
                            // 卒業予定日
                            DateTime graduatePlanDate;

                            // ----- 入校予定日 -----
                            // 必須チェック
                            if (string.IsNullOrEmpty(values[0]))
                            {
                                ViewBag.ErrorMessage = "入校予定日が未設定のため、読み込みを途中で終了しました。 " + row + "行目";
                                break;
                            }
                            // 日付整合性チェック
                            if (!DateTime.TryParse(values[0], out entrancePlanDate))
                            {
                                ViewBag.ErrorMessage = "入校予定日の設定が不正のため、読み込みを途中で終了しました。 " + row + "行目";
                                break;
                            }

                            // ----- 教習コース -----
                            // 必須チェック
                            if (string.IsNullOrEmpty(values[1]))
                            {
                                ViewBag.ErrorMessage = "教習コースが未設定のため、読み込みを途中で終了しました。 " + row + "行目";
                                break;
                            }
                            // 左0埋め
                            trainingCourseCd = values[1].PadLeft(2, '0');
                            // マスタ存在チェック
                            if (trainingCourse.Where(x => x.TrainingCourseCd.Equals(trainingCourseCd)).Count() == 0)
                            {
                                ViewBag.ErrorMessage = "教習コースの設定が不正のため、読み込みを途中で終了しました。 " + row + "行目";
                                break;
                            }

                            // ----- 仮免予定日 -----
                            // 必須チェック
                            if (string.IsNullOrEmpty(values[2]))
                            {
                                ViewBag.ErrorMessage = "仮免予定日が未設定のため、読み込みを途中で終了しました。 " + row + "行目";
                                break;
                            }
                            // 日付整合性チェック
                            if (!DateTime.TryParse(values[2], out tmpLicencePlanDate))
                            {
                                ViewBag.ErrorMessage = "仮免予定日の設定が不正のため、読み込みを途中で終了しました。 " + row + "行目";
                                break;
                            }

                            // ----- 卒業予定日 -----
                            // 必須チェック
                            if (string.IsNullOrEmpty(values[3]))
                            {
                                ViewBag.ErrorMessage = "卒業予定日が未設定のため、読み込みを途中で終了しました。 " + row + "行目";
                                break;
                            }
                            // 日付整合性チェック
                            if (!DateTime.TryParse(values[3], out graduatePlanDate))
                            {
                                ViewBag.ErrorMessage = "卒業予定日の設定が不正のため、読み込みを途中で終了しました。 " + row + "行目";
                                break;
                            }

                            // 各項目を設定
                            M_EntGrdCalendar calendar = new M_EntGrdCalendar()
                            {
                                EntrancePlanDate   = entrancePlanDate,
                                TrainingCourseCd   = trainingCourseCd,
                                TmpLicencePlanDate = tmpLicencePlanDate,
                                GraduatePlanDate   = graduatePlanDate
                            };
                            // リストに追加
                            calendarList.Add(calendar);
                        }
                    }
                }
                else
                {
                    ViewBag.ErrorMessage = "ファイルを選択してください。";
                }
            }

            // 登録ボタンが押下された場合
            else if (AppConstant.CMD_REGIST.Equals(cmd))
            {
                // 入力チェック
                bool validation = true;
                if (ModelState.IsValid)
                {
                    // 重複チェック
                    int repeatedNum = calendarList.GroupBy(x => new { x.EntrancePlanDate, x.TrainingCourseCd })
                                      .Select(x => new { Count = x.Count() }).Where(x => x.Count != 1).Count();
                    if (repeatedNum > 0)
                    {
                        ViewBag.ErrorMessage = "入校予定日、教習コースの重複データがあります。(同じ日に同じ教習コースのデータを登録することはできません。)";
                        validation           = false;
                    }
                }
                else
                {
                    // エラーメッセージを生成
                    ViewBag.ErrorMessage = new Utility().GetErrorMessage(ModelState);
                    validation           = false;
                }

                if (validation == true)
                {
                    // データの登録/更新
                    foreach (M_EntGrdCalendar calendar in calendarList)
                    {
                        // 存在チェック
                        if (db.EntGrdCalendar.Where(x => x.TrainingCourseCd.Equals(calendar.TrainingCourseCd) &&
                                                    ((DateTime)x.EntrancePlanDate).Equals((DateTime)calendar.EntrancePlanDate)).Count() == 0)
                        {
                            // 登録処理
                            db.EntGrdCalendar.Add(calendar);
                        }
                        else
                        {
                            // 更新処理
                            db.Entry(calendar).State = EntityState.Modified;
                        }
                    }
                    db.SaveChanges();
                    // 完了メッセージ
                    ViewBag.CompMessage = "インポートが完了しました。";
                    // 表示データを初期化
                    calendarList = new List <M_EntGrdCalendar>();
                }
            }

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

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

            return(View(calendarList));
        }