/// <summary> /// Gets the issues. /// </summary> /// <param name="projectId">The project id.</param> /// <param name="status">The status.</param> /// <returns>A list of issues.</returns> public IList<IssueDetails> GetIssues(int? projectId , Model.Status status) { var databaseIssues = DB.Issues.Select(i => i); // Filters on status: if (status != Model.Status.Any) { databaseIssues = databaseIssues .Where(i => i.RefStatusId == (int)status); } // Filters on project: if (projectId.HasValue) { databaseIssues = databaseIssues .Where(i => i.RefProjectId == projectId.Value); } // Ordering: databaseIssues = databaseIssues.OrderByDescending(i => i.CreatedDate) .OrderBy(i => i.Priority); return databaseIssues .Select(i => GetIssueDetailsFromDbIssue(i)) .ToList(); }
/// <summary> /// Gets the issue view. /// </summary> /// <param name="issueId">The issue id.</param> /// <param name="taskStatus">The task status.</param> /// <returns>An issue view.</returns> public IssueView GetIssueView(int issueId , Model.Status taskStatus) { TaskRepository taskRepo = new TaskRepository(); return new IssueView (GetIssueDetails(issueId) , taskRepo.GetTasks(issueId, taskStatus).ToList()); }
/// <summary> /// Updates the issue. /// </summary> /// <param name="issue">The issue.</param> public void UpdateIssue(Model.Issue issue) { if (!issue.IssueId.HasValue) { throw new RepositoryException("Invalid issue"); } var databaseIssue = DB.Issues .Where(i => i.IssueId == issue.IssueId.Value) .SingleOrDefault(); databaseIssue.Priority = issue.Priority; databaseIssue.RefStatusId = (int)issue.Status; databaseIssue.Title = issue.Title; this.SubmitChanges(); }
private static Issue GetDbIssueFromModelIssue(Model.Issue issue) { var databaseIssue = new Issue { CreatedDate = issue.CreatedDate, Priority = issue.Priority, RefProjectId = issue.RefProjectId, RefStatusId = (int)issue.Status, Title = issue.Title, }; if (issue.IssueId.HasValue) { databaseIssue.IssueId = issue.IssueId.Value; } return databaseIssue; }
/// <summary> /// Inserts the issue. /// </summary> /// <param name="issue">The issue.</param> /// <exception cref="RepositoryException">The repository exception.</exception> public void InsertIssue(Model.Issue issue) { if (string.IsNullOrEmpty(issue.Title)) { throw new RepositoryException("Issue must have a title."); } if (issue.RefProjectId <= 0) { throw new RepositoryException("Project Id must be larger than zero."); } IProjectRepository projRepo = new ProjectRepository(); if (!projRepo.GetProjects(new Paging()) .Any(p => p.ProjectId == issue.RefProjectId)) { throw new RepositoryException ("Project does not exist."); } // Saves the changes: try { Issue databaseIssue = GetDbIssueFromModelIssue(issue); DB.Issues.InsertOnSubmit(databaseIssue); this.SubmitChanges(); // Reads auto-generated id from the database: issue.IssueId = databaseIssue.IssueId; } catch (Exception ex) { throw new RepositoryException(ex); } }