internal void AttachFile(GroupWork groupwork, HttpPostedFileBase uploadedFile) { if (groupwork == null || uploadedFile == null) { return; } // TODO: 見直し。プロトでは特に検証せずDBに保存する。 var fileName = Path.GetFileName(uploadedFile.FileName); var extension = Path.GetExtension(fileName); var binaryData = GetBytes(uploadedFile.InputStream); if (binaryData.Length > 0) { var document = new Document { ID = Guid.NewGuid(), Uploaded = this.ExecutionContext.Now, User = this.CurrentUser, FileExtension = extension, BinaryData = binaryData, }; this.DbContext.Documents.Add(document); groupwork.AttachedFileName = fileName; groupwork.AttachedDocumentID = document.ID; groupwork.Status = GroupWorkStatus.Submitted; } }
// GET: /CompanyProjectGroupWork/Details/5 public ActionResult Details(int?themeId, int?projectGroupId) { if (themeId == null || projectGroupId == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var db = this.DbContext; var groupworkQuery = db.GroupWorks .Where(gw => gw.ThemeID == themeId && gw.ProjectGroupID == projectGroupId && gw.Theme.Project.ID == this.Project.ID) .Include(gw => gw.Theme) .Include(gw => gw.ProjectGroup); LogUtility.DebugWriteQuery(groupworkQuery); GroupWork groupwork = groupworkQuery.FirstOrDefault(); if (groupwork == null) { return(HttpNotFound()); } ViewBag.Project = this.Project; ViewBag.Theme = groupwork.Theme; return(View(groupwork)); }
public ActionResult DeleteConfirmed(int?themeId, int?projectGroupId) { ViewBag.Project = this.Project; var db = this.DbContext; var groupworkQuery = db.GroupWorks .Include(gw => gw.ProjectGroup) .Where(gw => gw.ThemeID == themeId && gw.ProjectGroupID == projectGroupId && gw.Theme.Project.ID == this.Project.ID && gw.ProjectGroup.Accessibility == ProjectGroupAccessibility.Public); LogUtility.DebugWriteQuery(groupworkQuery); GroupWork groupwork = groupworkQuery.FirstOrDefault(); if (groupwork != null) { db.GroupWorks.Remove(groupwork); db.SaveChanges(); } return(RedirectToAction("Index", new { selectedThemeId = themeId })); }
public ActionResult Edit([Bind(Include = "ThemeID,ProjectGroupID,EvaluationJSON,Status")] GroupWork groupwork) { if (!ModelState.IsValid) { return(View(groupwork)); } var db = this.DbContext; var groupworkQuery = db.GroupWorks .Where(gw => gw.ThemeID == groupwork.ThemeID && gw.ProjectGroupID == groupwork.ProjectGroupID && gw.Theme.Project.ID == this.Project.ID && gw.ProjectGroup.Accessibility == ProjectGroupAccessibility.Public); LogUtility.DebugWriteQuery(groupworkQuery); GroupWork targetGroupwork = groupworkQuery.FirstOrDefault(); if (targetGroupwork != null) { targetGroupwork.EvaluationJSON = groupwork.EvaluationJSON; targetGroupwork.Status = groupwork.Status; db.SaveChanges(); } return(RedirectToAction("Index", new { selectedThemeId = groupwork.ThemeID })); }
public ActionResult GroupWork(int?themeId, int?groupId, bool?submitted, HttpPostedFileBase uploadedFile) { if (themeId == null || groupId == null || submitted == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var theme = GetTheme(themeId.Value); if (theme == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var group = GetGroup(groupId.Value); if (group == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var tuple = GetGroupWorkAndUploadedDate(themeId.Value, groupId.Value); var groupWork = tuple.Item1; // 評価済みの場合は更新不可 if (groupWork != null && groupWork.Status == GroupWorkStatus.Evaluated) { return(RedirectToAction("Details", new { themeId = themeId })); } if (groupWork == null) { groupWork = new GroupWork { Theme = theme, ProjectGroup = group, EvaluationJSON = "{}" }; this.DbContext.GroupWorks.Add(groupWork); } AttachFile(groupWork, uploadedFile); groupWork.Status = (submitted == true) ? GroupWorkStatus.Submitted : GroupWorkStatus.Default; this.DbContext.SaveChanges(); return(RedirectToAction("Details", new { themeId = themeId })); }
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 })); }