Exemplo n.º 1
0
        public PagedResultList <ProjectDetailContract> GetProjectList(int start, int count, ProjectTypeContract projectType,
                                                                      ProjectOwnerTypeContract projectOwnerType = ProjectOwnerTypeContract.AllProjects, string filterByName = null, bool fetchPageCount = false,
                                                                      bool fetchLatestChangedResource           = false, bool fetchPermissions = false)
        {
            try
            {
                var url = UrlQueryBuilder.Create("project")
                          .AddParameter("start", start)
                          .AddParameter("count", count)
                          .AddParameter("projectType", projectType)
                          .AddParameter("projectOwnerType", projectOwnerType)
                          .AddParameter("filterByName", filterByName)
                          .AddParameter("fetchPageCount", fetchPageCount)
                          .AddParameter("fetchLatestChangedResource", fetchLatestChangedResource)
                          .AddParameter("fetchPermissions", fetchPermissions)
                          .ToResult();
                var result = m_client.GetPagedList <ProjectDetailContract>(url);
                return(result);
            }
            catch (HttpRequestException e)
            {
                if (m_logger.IsErrorEnabled())
                {
                    m_logger.LogError("{0} failed with {1}", m_client.GetCurrentMethod(), e);
                }

                throw;
            }
        }
Exemplo n.º 2
0
 public GetProjectListWork(ProjectRepository projectRepository, MetadataRepository metadataRepository, int start, int count,
                           ProjectTypeEnum?projectType, ProjectOwnerTypeContract projectOwnerType, int userId, string filterByName, bool fetchPageCount,
                           bool fetchAuthors, bool fetchResponsiblePersons, bool fetchLatestChangedResource, bool fetchPermissions) : base(projectRepository)
 {
     m_projectRepository  = projectRepository;
     m_metadataRepository = metadataRepository;
     m_start                      = start;
     m_count                      = count;
     m_projectType                = projectType;
     m_projectOwnerType           = projectOwnerType;
     m_userId                     = userId;
     m_filterByName               = filterByName;
     m_fetchPageCount             = fetchPageCount;
     m_fetchAuthors               = fetchAuthors;
     m_fetchResponsiblePersons    = fetchResponsiblePersons;
     m_fetchLatestChangedResource = fetchLatestChangedResource;
     m_fetchPermissions           = fetchPermissions;
 }
Exemplo n.º 3
0
        public IActionResult List(string search, int start, int count       = PageSizes.ProjectList, ViewType viewType = ViewType.Full,
                                  ProjectOwnerTypeContract projectOwnerType = ProjectOwnerTypeContract.MyProjects)
        {
            var client        = GetProjectClient();
            var result        = client.GetProjectList(start, count, GetDefaultProjectType(), projectOwnerType, search, true, true, true);
            var projectItems  = Mapper.Map <List <ProjectItemViewModel> >(result.List);
            var listViewModel = new ListViewModel <ProjectItemViewModel>
            {
                TotalCount  = result.TotalCount,
                List        = projectItems,
                PageSize    = count,
                Start       = start,
                SearchQuery = search
            };
            var filterTypes = new List <ProjectOwnerTypeContract>
            {
                ProjectOwnerTypeContract.MyProjects,
                ProjectOwnerTypeContract.ForeignProjects,
                ProjectOwnerTypeContract.AllProjects,
            };
            var viewModel = new ProjectListViewModel
            {
                Projects           = listViewModel,
                AvailableBookTypes = ProjectConstants.AvailableBookTypes,
                FilterTypes        = filterTypes.Select(x =>
                                                        new SelectListItem(m_localization.Translate(x.ToString(), "Admin"), x.ToString(), x == projectOwnerType)).ToList()
            };

            switch (viewType)
            {
            case ViewType.Widget:
                return(PartialView("_ProjectListContent", listViewModel));

            case ViewType.Full:
                return(View(viewModel));

            default:
                return(View(viewModel));
            }
        }
Exemplo n.º 4
0
        public PagedResultList <ProjectDetailContract> GetProjectList(int?start, int?count, ProjectTypeContract?projectType,
                                                                      ProjectOwnerTypeContract projectOwnerType, string filterByName, bool fetchPageCount, bool fetchAuthors,
                                                                      bool fetchResponsiblePersons, bool fetchLatestChangedResource, bool fetchPermissions)
        {
            var startValue      = PagingHelper.GetStart(start);
            var countValue      = PagingHelper.GetCountForProject(count);
            var projectTypeEnum = m_mapper.Map <ProjectTypeEnum?>(projectType);

            var userId = m_authenticationManager.GetCurrentUserId();

            var work = new GetProjectListWork(m_projectRepository, m_metadataRepository, startValue, countValue, projectTypeEnum,
                                              projectOwnerType, userId, filterByName, fetchPageCount, fetchAuthors, fetchResponsiblePersons, fetchLatestChangedResource, fetchPermissions);
            var resultEntities = work.Execute();

            var metadataList       = work.GetMetadataResources();
            var pageCountList      = work.GetPageCountList();
            var latestChangesList  = work.GetLatestChangedResources();
            var userPermissionDict = work.GetUserPermission();
            var resultList         = m_mapper.Map <List <ProjectDetailContract> >(resultEntities);

            foreach (var projectContract in resultList)
            {
                var metadataResource   = metadataList.FirstOrDefault(x => x.Resource.Project.Id == projectContract.Id);
                var pageCountResult    = pageCountList.FirstOrDefault(x => x.ProjectId == projectContract.Id);
                var latestChangeResult = latestChangesList.FirstOrDefault(x => x.ProjectId == projectContract.Id);

                var metadataContract = m_mapper.Map <ProjectMetadataContract>(metadataResource);
                projectContract.LatestMetadata = metadataContract;
                projectContract.PageCount      = pageCountResult?.PageCount;
                projectContract.CreatedByUser  = m_userDetailManager.GetUserContractForUser(projectContract.CreatedByUser);

                if (fetchAuthors && metadataResource != null)
                {
                    projectContract.Authors = m_mapper.Map <List <OriginalAuthorContract> >(metadataResource.Resource.Project.Authors);
                }

                if (fetchResponsiblePersons && metadataResource != null)
                {
                    projectContract.ResponsiblePersons =
                        m_mapper.Map <List <ProjectResponsiblePersonContract> >(metadataResource.Resource.Project.ResponsiblePersons);
                }

                if (fetchLatestChangedResource && latestChangeResult != null)
                {
                    projectContract.LatestChangeTime = latestChangeResult.CreateTime;
                    projectContract.EditedByUser     = m_userDetailManager.GetUserContract(latestChangeResult.CreatedByUserId);
                }

                if (fetchPermissions)
                {
                    userPermissionDict.TryGetValue(projectContract.Id, out var permissions);
                    projectContract.CurrentUserPermissions = m_projectPermissionConverter.GetAggregatedPermissions(permissions);
                }
            }

            return(new PagedResultList <ProjectDetailContract>
            {
                List = resultList,
                TotalCount = work.GetResultCount()
            });
        }