namespace Netina.AdminPanel.PWA.Pages; public class ReviewsPageViewModel(NavigationManager navigationManager, ISnackbar snackbar, IUserUtility userUtility, IRestWrapper restWrapper, IDialogService dialogService) : BaseViewModel>(userUtility) { public int CurrentPage = 0; public int PageCount = 1; public override async Task InitializeAsync() { try { IsProcessing = true; PageDto.Clear(); var token = await _userUtility.GetBearerTokenAsync(); if (token == null) throw new Exception("Token is null"); var dto = await restWrapper.ReviewRestApi.ReadAll(CurrentPage, token); dto.ForEach(d => PageDto.Add(d)); if (PageDto.Count == 15) PageCount = 2; } catch (ApiException ex) { var exe = await ex.GetContentAsAsync(); snackbar.Add(exe != null ? exe.Message : ex.Content, Severity.Error); } catch (Exception e) { snackbar.Add(e.Message, Severity.Error); } finally { IsProcessing = false; } await base.InitializeAsync(); } public async Task ConfirmAsync(CommentSDto review) { try { IsProcessing = true; var token = await _userUtility.GetBearerTokenAsync(); if (token == null) throw new Exception("Token is null"); await restWrapper.ReviewRestApi.ConfirmAsync(review.Id, token); review.IsConfirmed = true; } catch (ApiException ex) { var exe = await ex.GetContentAsAsync(); snackbar.Add(exe != null ? exe.Message : ex.Content, Severity.Error); } catch (Exception e) { snackbar.Add(e.Message, Severity.Error); } finally { IsProcessing = false; } } public async Task ShowAsync(CommentSDto review) { DialogOptions maxWidth = new DialogOptions() { MaxWidth = MaxWidth.Medium, FullWidth = true, DisableBackdropClick = true }; var parameters = new DialogParameters(); parameters.Add(x => x.Review, review); var dialogResult = await dialogService.ShowAsync($"", parameters, maxWidth); var result = await dialogResult.Result; if (!result.Canceled && result.Data is bool and true) { await InitializeAsync(); } } public async Task ChangePageAsync(int page) { CurrentPage = page - 1; if (CurrentPage > PageCount - 2) { try { IsProcessing = true; var token = await _userUtility.GetBearerTokenAsync(); if (token == null) throw new Exception("Token is null"); List dto = new List(); dto = await restWrapper.ReviewRestApi.ReadAll(CurrentPage, token); dto.ForEach(d => PageDto.Add(d)); if (PageDto.Count % 20 == 0) PageCount = CurrentPage + 2; } catch (ApiException ex) { var exe = await ex.GetContentAsAsync(); snackbar.Add(exe != null ? exe.Message : ex.Content, Severity.Error); } catch (Exception e) { snackbar.Add(e.Message, Severity.Error); } finally { IsProcessing = false; } } } }