public async Task <IActionResult> GetAllNotesAsync([FromQuery] GetNotesFilters filters) { var userId = Guid.Parse(User.FindFirst(ClaimTypes.NameIdentifier)?.Value); var query = new GetNotesQuery(userId, filters); var result = await _mediator.Send(query); if (!result.Success) { return(BadRequest(new ErrorResource(result.Message))); } var notesResource = _mapper.Map <IEnumerable <Note>, IEnumerable <NoteResource> >(result.Notes); return(Ok(notesResource)); }
public async Task <NotesResponse> GetNotesAsync(Guid userId, GetNotesFilters filters = null) { var isUserExist = await _authRepository.UserExists(userId); if (!isUserExist) { return(new NotesResponse("Invalid user.")); } try { var result = await _noteRepository.ListAsync(userId, filters); return(new NotesResponse(result)); } catch (Exception ex) { // Do some logging stuff return(new NotesResponse($"An error occurred when getting list of notes: {ex.Message}")); } }
public async Task <IEnumerable <Note> > ListAsync(Guid userId, GetNotesFilters filters = null) { ConfigDbSet(); var filter = new List <FilterDefinition <Note> > { Builders <Note> .Filter.Eq(n => n.UserId, userId) }; if (!string.IsNullOrEmpty(filters?.Date)) { var startDateFilter = DateTime.Parse(filters.Date); var endDateFilter = startDateFilter.AddDays(1); filter.Add(Builders <Note> .Filter.Gte(n => n.Date, startDateFilter)); filter.Add(Builders <Note> .Filter.Lte(n => n.Date, endDateFilter)); } var rootFilter = Builders <Note> .Filter.And(filter); var result = DbSet.Find(rootFilter).SortByDescending(n => n.Date); return(await result.ToListAsync()); }
public GetNotesQuery(Guid userId, GetNotesFilters filters) { UserId = userId; Filter = filters; }