Exemple #1
0
 protected internal virtual Task OnAction(ExecuteActionArgs e)
 {
     return(Task.CompletedTask);
 }
Exemple #2
0
 protected internal virtual async Task OnAction(ExecuteActionArgs e)
 {
 }
Exemple #3
0
        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);
 }
Exemple #6
0
        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;
            }
        }
Exemple #7
0
        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;
            }
        }