/// <summary> /// 更新表示 /// </summary> /// <param name="dailyParameterEdt">日別予測条件編集情報</param> /// <returns></returns> public ActionResult Edit([Bind(Include = "SearchDate")] V_DailyParameterEdt dailyParameterEdt) { Trace.WriteLine("GET /DailyParameter/Edit/" + dailyParameterEdt.SearchDate); // ステータスをクリア ModelState.Clear(); // インスタンスを生成 dailyParameterEdt.DailyClasses = new T_DailyClasses(); dailyParameterEdt.TrainerList = new List <T_DailyClassesByTrainer>(); if (dailyParameterEdt.SearchDate != null) { // 日別予測条件を取得 T_DailyClasses dailyClasses = db.DailyClasses.Find(dailyParameterEdt.SearchDate); // データが存在しない場合はインスタンスを生成 if (dailyClasses == null) { dailyClasses = new T_DailyClasses() { Date = dailyParameterEdt.SearchDate }; } dailyParameterEdt.DailyClasses = dailyClasses; // 更新日付Toを設定 dailyParameterEdt.UpdateTo = dailyClasses.Date; // 指導員コマ数を取得 dailyParameterEdt.TrainerList = db.DailyClassesByTrainer.Where(x => ((DateTime)x.Date).Equals((DateTime)dailyParameterEdt.SearchDate)).OrderBy(x => x.No).ToList(); } else { ViewBag.SearchErrorMessage = "検索条件を指定してください。"; } // 指導員コマ管理画面から遷移するための検索日付をTempDataに設定 TempData[AppConstant.TEMP_KEY_SEARCH_DATE] = dailyParameterEdt.SearchDate; return(View(dailyParameterEdt)); }
public ActionResult Edit(string cmd, [Bind(Include = "DailyClasses,UpdateTo")] V_DailyParameterEdt dailyParameterEdt) { Trace.WriteLine("POST /DailyParameter/Edit/" + dailyParameterEdt.DailyClasses.Date + "&" + dailyParameterEdt.UpdateTo); // 更新ボタンが押下された場合 if (AppConstant.CMD_UPDATE.Equals(cmd)) { // 日付を設定 dailyParameterEdt.SearchDate = dailyParameterEdt.DailyClasses.Date; // 入力チェック bool validation = true; if (ModelState.IsValid) { // 更新日付Toの必須チェック if (dailyParameterEdt.UpdateTo == null) { ViewBag.ErrorMessage = "更新範囲の日付を設定してください。"; validation = false; } // 日付の前後チェック if (validation == true && dailyParameterEdt.UpdateTo < dailyParameterEdt.DailyClasses.Date) { ViewBag.ErrorMessage = "更新範囲の日付の前後関係が不正です。"; validation = false; } // [20210416リリース対応] Add Start 教習外コマ数比率の追加 double checkValue; // 教習外コマ数比率のチェック checkValue = dailyParameterEdt.DailyClasses.DepartExamRatio + dailyParameterEdt.DailyClasses.OtherVehicleRatio + dailyParameterEdt.DailyClasses.SeminarRatio + dailyParameterEdt.DailyClasses.OtherRatio; if (validation == true && checkValue > 100) { ViewBag.ErrorMessage = "教習外コマ数比率(学科・検定比率、他車種比率、講習比率、その他)は合わせて100以下になるように設定してください。"; validation = false; } // [20210416リリース対応] Add End // 合宿比率[%]と通学比率[%]のチェック // [20210416リリース対応] Mod Start 0の許容 //if (validation == true && // dailyParameterEdt.DailyClasses.LodgingRatio + dailyParameterEdt.DailyClasses.CommutingRatio != 100) checkValue = dailyParameterEdt.DailyClasses.LodgingRatio + dailyParameterEdt.DailyClasses.CommutingRatio; if (validation == true && checkValue != 0 && checkValue != 100) // [20210416リリース対応] Mod End { ViewBag.ErrorMessage = "合宿・通学比率(合宿比率、通学比率)は合わせて100になるように設定してください。"; validation = false; } // 合宿の在籍比率[%](AT一段階/二段階、MT一段階/二段階)のチェック // [20210416リリース対応] Mod Start 0の許容 //if (validation == true && // dailyParameterEdt.DailyClasses.LdgAtFstRatio + dailyParameterEdt.DailyClasses.LdgAtSndRatio + dailyParameterEdt.DailyClasses.LdgMtFstRatio + dailyParameterEdt.DailyClasses.LdgMtSndRatio != 100) checkValue = dailyParameterEdt.DailyClasses.LdgAtFstRatio + dailyParameterEdt.DailyClasses.LdgAtSndRatio + dailyParameterEdt.DailyClasses.LdgMtFstRatio + dailyParameterEdt.DailyClasses.LdgMtSndRatio; if (validation == true && checkValue != 0 && checkValue != 100) // [20210416リリース対応] Mod End { ViewBag.ErrorMessage = "合宿の在籍比率[%](AT一段階/二段階、MT一段階/二段階)は合わせて100になるように設定してください。"; validation = false; } // 通学の在籍比率[%](AT一段階/二段階、MT一段階/二段階)のチェック // [20210416リリース対応] Mod Start 0の許容 //if (validation == true && // dailyParameterEdt.DailyClasses.CmtAtFstRatio + dailyParameterEdt.DailyClasses.CmtAtSndRatio + dailyParameterEdt.DailyClasses.CmtMtFstRatio + dailyParameterEdt.DailyClasses.CmtMtSndRatio != 100) checkValue = dailyParameterEdt.DailyClasses.CmtAtFstRatio + dailyParameterEdt.DailyClasses.CmtAtSndRatio + dailyParameterEdt.DailyClasses.CmtMtFstRatio + dailyParameterEdt.DailyClasses.CmtMtSndRatio; if (validation == true && checkValue != 0 && checkValue != 100) // [20210416リリース対応] Mod End { ViewBag.ErrorMessage = "通学の在籍比率[%](AT一段階/二段階、MT一段階/二段階)は合わせて100になるように設定してください。"; validation = false; } } else { // エラーメッセージを生成 ViewBag.ErrorMessage = new Utility().GetErrorMessage(ModelState); validation = false; } if (validation == true) { // 指定した範囲で登録/更新処理を行う for (DateTime date = (DateTime)dailyParameterEdt.DailyClasses.Date; date.CompareTo((DateTime)dailyParameterEdt.UpdateTo) <= 0; date = date.AddDays(1)) { // 登録/更新対象を設定 T_DailyClasses dailyClasses = new T_DailyClasses() { Date = date }; this.SetUpdateInfo(dailyClasses, dailyParameterEdt.DailyClasses); // 存在チェック if (db.DailyClasses.Where(x => ((DateTime)x.Date).Equals(date)).Count() == 0) { // 登録処理 db.DailyClasses.Add(dailyClasses); } else { // 更新処理 db.Entry(dailyClasses).State = EntityState.Modified; } } db.SaveChanges(); // 完了メッセージ ViewBag.CompMessage = "データを更新しました。"; } // 指導員コマ数を取得 dailyParameterEdt.TrainerList = db.DailyClassesByTrainer.Where(x => ((DateTime)x.Date).Equals((DateTime)dailyParameterEdt.SearchDate)).OrderBy(x => x.No).ToList(); } // その他 else { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } return(View(dailyParameterEdt)); }