// // Used for Issues public static IssueMemberQueryList GetIssuesForMembersOnProjectInSpecificRange(this IQueryable<Issue> query, IEnumerable<KeyIdValueString> projects, IEnumerable<KeyIdValueString> filters, int projectId, IssuesSortBy sortBy, int currentPage, int take) { return new IssueMemberQueryList { ProjectsData = new IssueProjectsData { Projects = projects, ProjectSelectedId = projectId, Filters = filters }, Requests = new IssueRequestsData<IssueMemberQueryTuple> { RequestsInfo = new IssueRequestsInfo { CurrentPage = currentPage, Take = take, Total = query.Count(i => i.Project.ProjectID == projectId) }, Requests = query.Where(i => i.Project.ProjectID == projectId) .ApplySort(sortBy) .Skip(( currentPage - 1 )*take) .Take(take) .Select(i => new IssueMemberQueryTuple { IssueId = i.IssueID, CreatedAt = i.CreatedDate, ShortDescription = i.ShortDescription, MemberSolvingName = i.Member != null ? i.Member.Name : null, Priority = (PriorityEnum) i.Priority, Type = (TypeEnum) i.Type, State = (StateEnum) i.State, ProjectName = i.Project.Name, NumComments = i.Comments.Count(), ReportedByClient = i.Client.Name }) .ToList() } }; }
public static IOrderedQueryable <Issue> Convert(IQueryable <Issue> query, IssuesSortBy sortBy) { switch (sortBy) { case IssuesSortBy.Date: return(query.OrderByDescending(i => i.CreatedDate)); case IssuesSortBy.Priority: return(query.OrderByDescending(i => i.Priority)); case IssuesSortBy.Type: return(query.OrderByDescending(i => i.Type)); case IssuesSortBy.State: return(query.OrderByDescending(i => i.State)); default: throw new ArgumentOutOfRangeException("sortBy"); } }
public static String GetByKey(IssuesSortBy key) { return Container[key]; }
// OK public PartialViewResult IndexPartial(int projectId, IssuesSortBy sortBy, int currentPage = 1, int take = DefaultTake) { if (User.IsInRole(LoginService.Admin)){ var adminService = _queryService.GetIssuesForAdmin(currentPage, take, projectId, sortBy); return PartialView("_IndexMembersRequests", adminService.Requests); } if (User.IsInRole(LoginService.Member)){ var memberService = _queryService.GetIssuesForMember(currentPage, take, projectId, sortBy); return PartialView("_IndexMembersRequests", memberService.Requests); } var clientService = _queryService.GetIssuesForClient(currentPage, take, projectId, sortBy); return PartialView("_IndexClientsRequests", clientService.Requests); }
/// <summary> /// Aplica sorts de um enumerado num IQueryable /// </summary> /// <param name="issue"></param> /// <param name="sortBy">A coluna que se pretende ordenar</param> /// <returns></returns> public static IOrderedQueryable<Issue> ApplySort(this IQueryable<Issue> issue, IssuesSortBy sortBy) { return Cache[sortBy](issue); }
public IssueMemberQueryList GetIssuesForMember(int currentPage, int take, int projectId, IssuesSortBy sortBy) { Member dbMember = GetDbMember(); // // Os membros veem os issues em que têm projectos em que // sao responsaveis e trabalhadores podem filtrar pelos mesmos var myProjectsIds = _db.Query<Member>() .GetProjectsIdsWhereIamResponsableOrWork(dbMember.UserID); if(myProjectsIds.Count() > 0) { if(projectId == -1){ projectId = myProjectsIds.First(); } if(!myProjectsIds.Any(pid => pid == projectId)) throw new HijackedException("You are not assigned to this project"); } var memberProjectsKivs = _db.Query<Project>().ToKeyIdValueString(myProjectsIds); var filtersKivs = EnumUtils.GetIssuesSortValues().ToKivs(); return _db.Query<Issue>().GetIssuesForMembersOnProjectInSpecificRange( memberProjectsKivs, filtersKivs, projectId, sortBy, currentPage, take ); }
public IssueClientQueryList GetIssuesForClient(int currentPage, int take, int projectId, IssuesSortBy sortBy) { Client dbClient = GetDbClient(); // // Os clientes veem os issues em que têm projectos // e podem filtrar pelos mesmos var myProjectsKivs = _db.Query<Project>().ToKeyIdValueString(dbClient.UserID); var filtersKivs = EnumUtils.GetIssuesSortValues().ToKivs(); if (myProjectsKivs.Count() > 0) { if (projectId == -1){ projectId = myProjectsKivs.First().Id; } if (!myProjectsKivs.Any(kivs => kivs.Id == projectId)) throw new HijackedException("You are not assigned to this project"); } return _db.Query<Issue>().GetIssuesForClientsOnProjectInSpecificRange( myProjectsKivs, filtersKivs, projectId, sortBy, currentPage, take ); }
public IssueMemberQueryList GetIssuesForAdmin(int currentPage, int take, int projectId, IssuesSortBy sortBy) { GetDbAdmin(); // // Os admins veem todos os issues disponiveis no sistema // e podem filtrar por qualquer projecto. var projectsKivs = _db.Query<Project>().ToKeyIdValueString(); var filtersKivs = EnumUtils.GetIssuesSortValues().ToKivs(); if (projectId == -1 && projectsKivs.Count() > 0) projectId = projectsKivs.First().Id; return _db.Query<Issue>().GetIssuesForMembersOnProjectInSpecificRange( projectsKivs, filtersKivs, projectId, sortBy, currentPage, take ); }