public async Task <IActionResult> GetAllProjectsAsync([FromQuery] GetProjectsFilters filters) { var userId = Guid.Parse(User.FindFirst(ClaimTypes.NameIdentifier)?.Value); var query = new GetProjectsQuery(userId, filters); var result = await _mediator.Send(query); if (!result.Success) { return(BadRequest(new ErrorResource(result.Message))); } var projectsResource = _mapper.Map <IEnumerable <Project>, IEnumerable <ProjectResource> >(result.Projects); return(Ok(projectsResource)); }
public async Task <IEnumerable <Project> > ListAsync(Guid userId, GetProjectsFilters filters = null) { ConfigDbSet(); var filter = new List <FilterDefinition <Project> >(); if (filters.Ids != null && filters.Ids.Length > 0) { var ids = filters.Ids.Select(id => Guid.Parse(id)); filter.Add(Builders <Project> .Filter.In(p => p.Id, ids)); } filter.Add(Builders <Project> .Filter.Eq(p => p.UserId, userId)); var rootFilter = Builders <Project> .Filter.And(filter); var list = DbSet.Find(rootFilter).SortBy(p => p.CreatedAt); return(await list.ToListAsync()); }
public async Task <ProjectsResponse> GetProjectsAsync(Guid userId, GetProjectsFilters filters = null) { var isUserExist = await _authRepository.UserExists(userId); if (!isUserExist) { return(new ProjectsResponse("Invalid user.")); } try { var result = await _projectRepository.ListAsync(userId, filters); return(new ProjectsResponse(result)); } catch (Exception ex) { // Do some logging stuff return(new ProjectsResponse($"An error occurred when getting list of notes: {ex.Message}")); } }
public GetProjectsQuery(Guid userId, GetProjectsFilters filters) { UserId = userId; Filter = filters; }