// GET: /CompanyHome/Create public ActionResult Create() { DateTime now = ctx.Now; // ProjectDate は30分単位の時間で初期化しておく Project project = new Project() { ProjectDate = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute / 30 * 30, 0), Category = ProjectCategory.Career }; return View(project); }
/// <summary> /// プロジェクトと課題テーマのIDを指定して、課題テーマを取得します。 /// </summary> /// <param name="db">DBコンテキスト。</param> /// <param name="project">現在のプロジェクト。</param> /// <param name="id">課題テーマのID。</param> /// <returns> /// 現在のプロジェクトに関連づいた課題テーマのうち、指定したIDを持つものが見つかれば、そのインスタンス。 /// 見つからない場合はnull。 /// </returns> internal static Theme GetThemeById(Entities db, Project project, int? id) { System.Diagnostics.Debug.Assert(db != null, "db is null"); System.Diagnostics.Debug.Assert(project != null, "project is null"); if (id == null) { return null; } var theme = db.Themes.FirstOrDefault(x => x.ID == id && x.Project.ID == project.ID); return theme; }
internal static ProjectGroup FindGroup(Entities db, Project project, int id) { var targetGroupQuery = db.Groups .OfType<ProjectGroup>() .Where(pg => pg.ID == id && pg.Project.ID == project.ID) .Include(pg => pg.ParticipantUsers); LogUtility.DebugWriteQuery(targetGroupQuery); return targetGroupQuery.FirstOrDefault(); }
internal static ParticipantUser FindUser(Entities db, Project project, int id) { var targetUser = db.Entry(project) .Collection(p => p.ParticipantUsers) .Query() .Include(u => u.ParticipantUser.Groups) .Select(x => x.ParticipantUser) .FirstOrDefault(u => u.ID == id); return targetUser; }
internal static IList<ParticipantUserGroup> GetRelationships(Entities db, Project project) { // projectを元に、ParticipantUserとProjectGroupの関連を取得する。 var relationshipQuery = from pg in db.Groups.OfType<ProjectGroup>() where pg.Project.ID == project.ID from pug in pg.ParticipantUsers select pug; LogUtility.DebugWriteQuery(relationshipQuery); var relationships = relationshipQuery.ToList(); return relationships; }
internal static IList<ProjectGroup> GetGroups(Entities db, Project project) { // projectを元に、関連するProjectGroupsを取得する。 // クエリを単純にするため、ユーザーの情報は取得しない。 // ユーザーの情報が必要な場合は、GetUsers()とGetRelationships()を呼び出すこと。 // そうすれば、ParticipantUser -> ParticipantUserGroup の関連と、 // ParticipantUserGroup -> Group の関連は、Entity Frameworkが自動的に設定してくれる。 var groupsQuery = from pg in db.Groups.OfType<ProjectGroup>() where pg.Project.ID == project.ID select pg; LogUtility.DebugWriteQuery(groupsQuery); var groups = groupsQuery.ToList(); return groups; }
internal static IList<ParticipantUser> GetUsers(Entities db, Project project) { // projectを元に、関連するParticipantUserを取得する。 // クエリを単純にするため、参加しているグループの情報は取得しない。 // グループの情報が必要な場合は、GetGroups()とGetRelationships()を呼び出すこと。 // そうすれば、ParticipantUser -> ParticipantUserGroup の関連と、 // ParticipantUserGroup -> Group の関連は、Entity Frameworkが自動的に設定してくれる。 var usersQuery = from pup in db.ParticipantUserProjects where pup.Project.ID == project.ID select pup.ParticipantUser; LogUtility.DebugWriteQuery(usersQuery); var users = usersQuery.ToList(); return users; }