private async Task UpdateNotes() { _viewModel.IsBusy = true; if (_viewModel.PageNumber < 1) { _viewModel.PageNumber = 1; } _viewModel.NoteItems.Clear(); _viewModel.ItemsPerPage = Preferences.Get(Constants.NotesPerPage, 5); NotesListPage notesList = await ProgenyService.GetNotesPage(_viewModel.PageNumber, _viewModel.ItemsPerPage, _viewModel.ViewChild, _viewModel.UserAccessLevel, _viewModel.UserInfo.Timezone, 1); if (notesList.NotesList != null && notesList.NotesList.Count > 0) { foreach (Note note in notesList.NotesList) { note.CreatedDate = TimeZoneInfo.ConvertTimeFromUtc(note.CreatedDate, TimeZoneInfo.FindSystemTimeZoneById(_viewModel.UserInfo.Timezone)); } Device.BeginInvokeOnMainThread(() => { _viewModel.NoteItems.ReplaceRange(notesList.NotesList); }); _viewModel.PageNumber = notesList.PageNumber; _viewModel.PageCount = notesList.TotalPages; Note firstNote = _viewModel.NoteItems.FirstOrDefault(); if (firstNote != null) { NotesListView.ScrollTo(firstNote, ScrollToPosition.MakeVisible, true); } } _viewModel.IsBusy = false; }
public async Task <IActionResult> GetNotesListPage([FromQuery] int pageSize = 8, [FromQuery] int pageIndex = 1, [FromQuery] int progenyId = Constants.DefaultChildId, [FromQuery] int accessLevel = 5, [FromQuery] int sortBy = 1) { // Check if user should be allowed access. string userEmail = User.GetEmail() ?? Constants.DefaultUserEmail; UserAccess userAccess = await _dataService.GetProgenyUserAccessForUser(progenyId, userEmail); if (userAccess == null && progenyId != Constants.DefaultChildId) { return(Unauthorized()); } if (pageIndex < 1) { pageIndex = 1; } List <Note> allItems = await _dataService.GetNotesList(progenyId); allItems = allItems.OrderBy(v => v.CreatedDate).ToList(); if (sortBy == 1) { allItems.Reverse(); } int noteCounter = 1; int notesCount = allItems.Count; foreach (Note note in allItems) { if (sortBy == 1) { note.NoteNumber = notesCount - noteCounter + 1; } else { note.NoteNumber = noteCounter; } noteCounter++; } var itemsOnPage = allItems .Skip(pageSize * (pageIndex - 1)) .Take(pageSize) .ToList(); NotesListPage model = new NotesListPage(); model.NotesList = itemsOnPage; model.TotalPages = (int)Math.Ceiling(allItems.Count / (double)pageSize); model.PageNumber = pageIndex; model.SortBy = sortBy; return(Ok(model)); }
public async Task <IActionResult> GetNotesListPage([FromQuery] int pageSize = 8, [FromQuery] int pageIndex = 1, [FromQuery] int progenyId = Constants.DefaultChildId, [FromQuery] int accessLevel = 5, [FromQuery] int sortBy = 1) { if (pageIndex < 1) { pageIndex = 1; } List <Note> allItems = await _dataService.GetNotesList(Constants.DefaultChildId); allItems = allItems.Where(n => n.AccessLevel == 5).OrderBy(v => v.CreatedDate).ToList(); if (sortBy == 1) { allItems.Reverse(); } int noteCounter = 1; int notesCount = allItems.Count; foreach (Note note in allItems) { if (sortBy == 1) { note.NoteNumber = notesCount - noteCounter + 1; } else { note.NoteNumber = noteCounter; } noteCounter++; } var itemsOnPage = allItems .Skip(pageSize * (pageIndex - 1)) .Take(pageSize) .ToList(); NotesListPage model = new NotesListPage(); model.NotesList = itemsOnPage; model.TotalPages = (int)Math.Ceiling(allItems.Count / (double)pageSize); model.PageNumber = pageIndex; model.SortBy = sortBy; return(Ok(model)); }