protected internal virtual Task OnAction(ExecuteActionArgs e) { return(Task.CompletedTask); }
protected internal virtual async Task OnAction(ExecuteActionArgs e) { }
protected internal override async Task OnAction(ExecuteActionArgs e) { if (e.Action == "ExportToExcel" && !e.IsHandled) { await e.ExecuteServiceRequest(); Exception error = null; try { if (e.Result != null) { try { var data = e.Result["excelFile"].ValueDirect; var parts = data.Split('|'); var bytes = Convert.FromBase64String(parts[1]); var fileName = parts[0]; var folder = ApplicationData.Current.LocalFolder; var file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting); using (var s = await file.OpenStreamForWriteAsync()) await s.WriteAsync(bytes, 0, bytes.Length); await Launcher.LaunchFileAsync(file); } finally { e.Result = null; } } } catch (Exception ex) { error = ex; } if (error != null) await Service.Current.Hooks.ShowNotification(error.Message, NotificationType.Error); e.IsHandled = true; } }
public virtual bool OnAction(ExecuteActionArgs args) { return args.IsHandled; }
public virtual bool OnAction(ExecuteActionArgs args) { return(args.IsHandled); }
public async Task<PersistentObject> ExecuteActionAsync(string action, PersistentObject parent = null, Query query = null, QueryResultItem[] selectedItems = null, Dictionary<string, string> parameters = null, bool skipHooks = false) { var isObjectAction = action.StartsWith("PersistentObject.") || query == null; try { IsBusy = true; if (!skipHooks) { string fullTypeName; if (!isObjectAction) { query.SetNotification(null); fullTypeName = query.PersistentObject.FullTypeName; } else { parent.SetNotification(null); fullTypeName = parent.FullTypeName; } var args = new ExecuteActionArgs(action) { Parameters = parameters, PersistentObject = parent, Query = query, SelectedItems = selectedItems }; await Hooks.OnAction(args); if (args.IsHandled) return args.Result; args.IsHandled = ClientActions.Get(fullTypeName).OnAction(args); if (args.IsHandled) return args.Result; } var data = CreateData(); data["action"] = action; data["query"] = query != null ? query.ToServiceObject() : null; data["parent"] = parent != null ? parent.ToServiceObject() : null; data["selectedItems"] = selectedItems != null ? JArray.FromObject(selectedItems.Select(i => i != null ? i.ToServiceObject() : null)) : null; data["parameters"] = parameters != null ? JToken.FromObject(parameters) : null; var response = await PostAsync("ExecuteAction", data); var ex = (string)response["exception"] ?? (string)response["ExceptionMessage"]; if (!string.IsNullOrEmpty(ex)) { if (isObjectAction) parent.SetNotification(ex); else query.SetNotification(ex); return null; } AuthToken = (string)response["authToken"]; await UpdateSession(response); var jPo = (JObject)response["result"]; return jPo != null ? Hooks.OnConstruct(jPo) : null; } catch (Exception e) { if (isObjectAction) parent.SetNotification(e.Message); else query.SetNotification(e.Message); return null; } finally { IsBusy = false; } }
protected internal override async Task OnAction(ExecuteActionArgs e) { if (e.Action == "ExportToExcel" && !e.IsHandled) { await e.ExecuteServiceRequest(); Exception error = null; try { if (e.Result != null) { try { var savePicker = new FileSavePicker(); savePicker.SuggestedFileName = e.Query.Name + ".xlsx"; savePicker.FileTypeChoices.Add("Excel File", new List<string> { ".xlsx" }); savePicker.DefaultFileExtension = ".xlsx"; var fileToSave = await savePicker.PickSaveFileAsync(); if (fileToSave != null) { using (var stream = await fileToSave.OpenAsync(FileAccessMode.ReadWrite)) { using (var outputStream = stream.GetOutputStreamAt(0)) { using (var dataWriter = new DataWriter(outputStream)) { var data = e.Result["excelFile"].ValueDirect; data = data.Substring(data.IndexOf('|') + 1); dataWriter.WriteBytes(Convert.FromBase64String(data)); await dataWriter.StoreAsync(); dataWriter.DetachStream(); } } await stream.FlushAsync(); } await Windows.System.Launcher.LaunchFileAsync(fileToSave); } } finally { e.Result = null; } } } catch (Exception ex) { error = ex; } if (error != null) { var dialog = new MessageDialog(Service.Current.Messages["CouldNotOpenExcelFile"], string.Empty); dialog.Commands.Add(new UICommand(Service.Current.Messages["OK"])); await dialog.ShowAsync(); } e.IsHandled = true; } }