public ActionResult Create(int? themeId, int? projectGroupId, GroupWorkStatus status, string evaluationJSON) { if (!themeId.HasValue) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } if (!projectGroupId.HasValue) { ModelState.AddModelError("ProjectGroupId", "グループを選択してください。"); } if (string.IsNullOrEmpty(evaluationJSON)) { ModelState.AddModelError("DocumentID", "評価を入力してください。"); } var db = this.DbContext; var themeQuery = db.Themes .Where(t => t.ID == themeId.Value && t.Project.ID == this.Project.ID); LogUtility.DebugWriteQuery(themeQuery); var theme = themeQuery.FirstOrDefault(); if (theme == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } GroupWork groupwork = new GroupWork { EvaluationJSON = evaluationJSON, Theme = theme, Status = status }; groupwork.ProjectGroup = db.Groups.OfType<ProjectGroup>().FirstOrDefault(pg => pg.ID == projectGroupId.Value && pg.Accessibility == ProjectGroupAccessibility.Public); if (groupwork.ProjectGroup.Accessibility != ProjectGroupAccessibility.Public) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } var groupWorkForCheck = db.GroupWorks.FirstOrDefault(gw => gw.ThemeID == themeId && gw.ProjectGroupID == projectGroupId); if (groupWorkForCheck != null) { ModelState.AddModelError("ProjectGroupId", "選択したグループの評価がすでに存在します。"); } ViewBag.Project = this.Project; ViewBag.ProjectGroups = CreateProjectGroupList(projectGroupId); if (!ModelState.IsValid) { return View(groupwork); } db.Projects.Attach(this.Project); db.GroupWorks.Add(groupwork); db.Themes.Attach(groupwork.Theme); db.Groups.Attach(groupwork.ProjectGroup); db.SaveChanges(); return RedirectToAction("Index", new { selectedThemeId = themeId.Value }); }
public ActionResult Create(int?themeId, int?projectGroupId, GroupWorkStatus status, string evaluationJSON) { if (!themeId.HasValue) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } if (!projectGroupId.HasValue) { ModelState.AddModelError("ProjectGroupId", "グループを選択してください。"); } if (string.IsNullOrEmpty(evaluationJSON)) { ModelState.AddModelError("DocumentID", "評価を入力してください。"); } var db = this.DbContext; var themeQuery = db.Themes .Where(t => t.ID == themeId.Value && t.Project.ID == this.Project.ID); LogUtility.DebugWriteQuery(themeQuery); var theme = themeQuery.FirstOrDefault(); if (theme == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } GroupWork groupwork = new GroupWork { EvaluationJSON = evaluationJSON, Theme = theme, Status = status }; groupwork.ProjectGroup = db.Groups.OfType <ProjectGroup>().FirstOrDefault(pg => pg.ID == projectGroupId.Value && pg.Accessibility == ProjectGroupAccessibility.Public); if (groupwork.ProjectGroup.Accessibility != ProjectGroupAccessibility.Public) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var groupWorkForCheck = db.GroupWorks.FirstOrDefault(gw => gw.ThemeID == themeId && gw.ProjectGroupID == projectGroupId); if (groupWorkForCheck != null) { ModelState.AddModelError("ProjectGroupId", "選択したグループの評価がすでに存在します。"); } ViewBag.Project = this.Project; ViewBag.ProjectGroups = CreateProjectGroupList(projectGroupId); if (!ModelState.IsValid) { return(View(groupwork)); } db.Projects.Attach(this.Project); db.GroupWorks.Add(groupwork); db.Themes.Attach(groupwork.Theme); db.Groups.Attach(groupwork.ProjectGroup); db.SaveChanges(); return(RedirectToAction("Index", new { selectedThemeId = themeId.Value })); }