@using NetinaShop.AdminPanel.PWA.Extensions @inject IRestWrapper RestWrapper @inject IUserUtility UserUtility @inject ISnackbar Snackbar
انتخاب یا اپلود عکس جدید میتوانید از بین عکس های اپلود شده یکی را انتخاب کرده یا عکس جدیدی اپلود کنید اپلود فایل جدید
@foreach (var item in _files) { @if (item.Selected) { } else { } }
بستن
@code { private void SelectFile(StorageFileSDto item) { var pastSelect = _files.FirstOrDefault(f => f.Selected); if (pastSelect != null) pastSelect.Selected = false; item.Selected = true; } private void UnSelectFile(StorageFileSDto item) => item.Selected = false; public void SearchChanged(string search) { if (search.IsNullOrEmpty() && !_search.IsNullOrEmpty()) { _files.Clear(); _originalFiles.ForEach(f=>_files.Add(f)); } _search = search; } public void SearchAsync() { try { if (_search.IsNullOrEmpty()) throw new AppException("دسته بندی برای جست جو وارد نشده است"); _files.Clear(); foreach (var storageFileSDto in _originalFiles.Where(f => f.FileName.ToLower().Trim().Contains(_search.ToLower().Trim()))) _files.Add(storageFileSDto); } catch (Exception e) { Snackbar.Add(e.Message, Severity.Error); } } public void SelectFile() { var selected = _files.FirstOrDefault(f => f.Selected); if (selected == null) throw new Exception("یک فایل را انتخاب کنید"); MudDialog.Close(selected); } [CascadingParameter] MudDialogInstance MudDialog { get; set; } void Cancel() => MudDialog.Cancel(); private readonly ObservableCollection _files = new ObservableCollection(); private List _originalFiles = new List(); private bool _isProcessing = false; private string _search = string.Empty; protected override async Task OnInitializedAsync() { try { _isProcessing = true; _files.Clear(); var token = await UserUtility.GetBearerTokenAsync(); var files = await RestWrapper.FileRestApi.GetFilesAsync(token); files.ForEach(f => _files.Add(f)); _originalFiles = files; } catch (ApiException ex) { var exe = await ex.GetContentAsAsync(); if (exe != null) Snackbar.Add(exe.Message, Severity.Error); Snackbar.Add(ex.Content, Severity.Error); } catch (Exception e) { Snackbar.Add(e.Message, Severity.Error); } finally { _isProcessing = false; } await base.OnInitializedAsync(); } private async Task FileChangeForUpload(InputFileChangeEventArgs obj) { try { _isProcessing = true; using var memoryStream = new MemoryStream(); var file = obj.File; var stream = file.OpenReadStream(); await stream.CopyToAsync(memoryStream); var fileUpload = new FileUploadRequest { ContentType = file.ContentType, FileName = file.Name, FileUploadType = FileUploadType.Image, StringBaseFile = Convert.ToBase64String(memoryStream.ToArray()) }; var token = await UserUtility.GetBearerTokenAsync(); var rest = await RestWrapper.FileRestApi.UploadFileAsync(fileUpload, token); _files.Insert(0, new StorageFileSDto { FileLocation = rest.FileLocation, FileName = rest.FileName, FileType = StorageFileType.Image }); } catch (ApiException ex) { var exe = await ex.GetContentAsAsync(); if (exe != null) Snackbar.Add(exe.Message, Severity.Error); Snackbar.Add(ex.Content, Severity.Error); } catch (Exception e) { Snackbar.Add(e.Message, Severity.Error); } finally { _isProcessing = false; } } }