示例#1
0
        public override IDisplayResult Edit(TransformalizeFormPart part)
        {
            var commands = new AdoFormCommands();
            var process  = _configurationContainer.CreateScope(part.Arrangement.Text, part.ContentItem, new Dictionary <string, string>(), false).Resolve <Process>();

            _settings.ApplyCommonSettings(process);

            using (var scope = _container.CreateScope(process, _logger)) {
                if (scope.IsRegistered <AdoFormCommandWriter>())
                {
                    commands = scope.Resolve <AdoFormCommandWriter>().Write();
                }
            }

            return(Initialize <EditTransformalizeFormPartViewModel>("TransformalizeFormPart_Edit", model => {
                model.TransformalizeFormPart = part;
                model.Arrangement = part.Arrangement;
                model.LocationEnableHighAccuracy = part.LocationEnableHighAccuracy;
                model.LocationMaximumAge = part.LocationMaximumAge;
                model.LocationTimeout = part.LocationTimeout;
                model.CreateCommand = commands.Create;
                model.InsertCommand = commands.Insert;
                model.UpdateCommand = commands.Update;
                model.SelectCommand = commands.Select;
            }).Location("Content:1"));
        }
示例#2
0
        private Process LoadInternal(string arrangement, ContentItem item, IDictionary <string, string> parameters = null, ISerializer serializer = null)
        {
            Process process;

            if (parameters != null)
            {
                foreach (var kv in parameters)
                {
                    _parameters[kv.Key] = kv.Value;
                }
            }

            using (MiniProfiler.Current.Step("Load")) {
                _configurationContainer.Serializer = serializer;
                process = _configurationContainer.CreateScope(arrangement, item, _parameters).Resolve <Process>();
            }

            // in case common settings were not applied when transforming / validating parameters
            _settings.ApplyCommonSettings(process);

            // translates file content item id to full path
            if (process.Connections.Any())
            {
                var connection = process.Connections.FirstOrDefault(c => _fileBasedProviders.Contains(c.Provider) && c.File.Length == Common.IdLength && !c.File.Contains('.'));
                if (connection != null)
                {
                    var filePart = _fileService.GetFilePart(connection.File).Result;
                    if (filePart != null)
                    {
                        connection.File = System.IO.Path.Combine(_formFileStore.Path, filePart.FullPath.Text);
                    }
                }
            }

            if (process.Errors().Any() || process.Log.Any(l => l.LogLevel == LogLevel.Error))
            {
                process.Status  = 500;
                process.Message = "Process has errors.";
            }
            else
            {
                process.Status  = 200;
                process.Message = "Ok";
            }

            return(process);
        }
示例#3
0
        public override async Task <IDisplayResult> UpdateAsync(TransformalizeTaskPart part, IUpdateModel updater, UpdatePartEditorContext context)
        {
            var model = new EditTransformalizeTaskPartViewModel();

            if (await updater.TryUpdateModelAsync(model, Prefix))
            {
                part.Arrangement.Text = model.Arrangement.Text;
            }

            try {
                var logger  = new MemoryLogger(LogLevel.Error);
                var process = _container.CreateScope(model.Arrangement.Text, part.ContentItem, new Dictionary <string, string>(), false).Resolve <Process>();
                if (process.Errors().Any())
                {
                    foreach (var error in process.Errors())
                    {
                        updater.ModelState.AddModelError(Prefix, S[error]);
                    }
                }
                if (process.Warnings().Any())
                {
                    foreach (var warning in process.Warnings())
                    {
                        _notifier.Warning(H[warning]);
                    }
                }
            } catch (Exception ex) {
                updater.ModelState.AddModelError(Prefix, S[ex.Message]);
            }

            if (updater.ModelState.IsValid)
            {
                _signal.SignalToken(Common.GetCacheKey(part.ContentItem.Id));
            }

            return(Edit(part, context));
        }
        public override async Task <IDisplayResult> UpdateAsync(TransformalizeReportPart part, IUpdateModel updater, UpdatePartEditorContext context)
        {
            // this driver override makes sure all the
            // part fields are updated before the arrangement model is updated / validated

            //_notifier.Information(H["Part - Bulk Actions:{0}", part.BulkActions.Value]);
            //_notifier.Information(H["Part - Bulk Action Field:{0}", part.BulkActionValueField.Text]);

            var model = new EditTransformalizeReportPartViewModel();

            if (await updater.TryUpdateModelAsync(model, Prefix))
            {
                //_notifier.Information(H["Model - Bulk Actions:{0}", model.BulkActions.Value]);
                //_notifier.Information(H["Model - Bulk Action Field:{0}", model.BulkActionValueField.Text]);

                part.Arrangement.Text       = model.Arrangement.Text;
                part.PageSizes.Text         = model.PageSizes.Text;
                part.PageSizesExtended.Text = model.PageSizes.Text;

                part.BulkActions.Value          = model.BulkActions.Value;
                part.BulkActionValueField.Text  = model.BulkActionValueField.Text;
                part.BulkActionCreateTask.Text  = model.BulkActionCreateTask.Text;
                part.BulkActionWriteTask.Text   = model.BulkActionWriteTask.Text;
                part.BulkActionSummaryTask.Text = model.BulkActionSummaryTask.Text;
                part.BulkActionRunTask.Text     = model.BulkActionRunTask.Text;
                part.BulkActionSuccessTask.Text = model.BulkActionSuccessTask.Text;
                part.BulkActionFailTask.Text    = model.BulkActionFailTask.Text;

                part.Map.Value                = model.Map.Value;
                part.MapColorField.Text       = model.MapColorField.Text;
                part.MapDescriptionField.Text = model.MapDescriptionField.Text;
                part.MapLatitudeField.Text    = model.MapLatitudeField.Text;
                part.MapLongitudeField.Text   = model.MapLongitudeField.Text;
                part.MapRadiusField.Text      = model.MapRadiusField.Text;
                part.MapOpacityField.Text     = model.MapOpacityField.Text;

                part.Calendar.Value          = model.Calendar.Value;
                part.CalendarClassField.Text = model.CalendarClassField.Text;
                part.CalendarIdField.Text    = model.CalendarIdField.Text;
                part.CalendarTitleField.Text = model.CalendarTitleField.Text;
                part.CalendarUrlField.Text   = model.CalendarUrlField.Text;
                part.CalendarStartField.Text = model.CalendarStartField.Text;
                part.CalendarEndField.Text   = model.CalendarEndField.Text;
            }

            if (model.BulkActions.Value)
            {
                if (string.IsNullOrEmpty(model.BulkActionValueField.Text))
                {
                    updater.ModelState.AddModelError(Prefix, S["Please set the bulk action value field for bulk actions."]);
                }
            }

            CheckPageSizes(model.PageSizes, updater);
            CheckPageSizes(model.PageSizesExtended, updater);

            try {
                var logger  = new MemoryLogger(LogLevel.Error);
                var process = _container.CreateScope(model.Arrangement.Text, part.ContentItem, new Dictionary <string, string>(), false).Resolve <Process>();
                if (process.Errors().Any())
                {
                    foreach (var error in process.Errors())
                    {
                        updater.ModelState.AddModelError(Prefix, S[error]);
                    }
                }
                if (process.Warnings().Any())
                {
                    foreach (var warning in process.Warnings())
                    {
                        _notifier.Warning(H[warning]);
                    }
                }
                if (process.Entities.Any())
                {
                    var fields = process.Entities[0].GetAllFields().ToArray();

                    if (part.BulkActions.Value)
                    {
                        if (!string.IsNullOrEmpty(part.BulkActionValueField.Text))
                        {
                            if (fields.All(f => f.Alias != part.BulkActionValueField.Text))
                            {
                                updater.ModelState.AddModelError(Prefix, S["The field {0} does not exist.", part.BulkActionValueField.Text]);
                            }
                        }
                    }

                    if (part.Calendar.Value)
                    {
                        if (fields.All(f => f.Alias != part.CalendarIdField.Text))
                        {
                            updater.ModelState.AddModelError(Prefix, S["The field {0} used for calendar id does not exist.", part.CalendarIdField.Text]);
                        }
                        if (fields.All(f => f.Alias != part.CalendarUrlField.Text))
                        {
                            updater.ModelState.AddModelError(Prefix, S["The field {0} used for calendar URL does not exist.", part.CalendarUrlField.Text]);
                        }
                        if (fields.All(f => f.Alias != part.CalendarTitleField.Text))
                        {
                            updater.ModelState.AddModelError(Prefix, S["The field {0} used for calendar title does not exist.", part.CalendarTitleField.Text]);
                        }
                        if (fields.All(f => f.Alias != part.CalendarClassField.Text))
                        {
                            updater.ModelState.AddModelError(Prefix, S["The field {0} used for calendar class does not exist.", part.CalendarClassField.Text]);
                        }
                        if (fields.All(f => f.Alias != part.CalendarStartField.Text))
                        {
                            updater.ModelState.AddModelError(Prefix, S["The field {0} used for calendar start does not exist.", part.CalendarStartField.Text]);
                        }
                        if (fields.All(f => f.Alias != part.CalendarEndField.Text))
                        {
                            updater.ModelState.AddModelError(Prefix, S["The field {0} used for calendar end does not exist.", part.CalendarEndField.Text]);
                        }
                    }

                    if (part.Map.Value)
                    {
                        if (fields.All(f => f.Alias != part.MapDescriptionField.Text))
                        {
                            updater.ModelState.AddModelError(Prefix, S["The field {0} used for map description does not exist.", part.MapDescriptionField.Text]);
                        }
                        if (fields.All(f => f.Alias != part.MapLatitudeField.Text))
                        {
                            updater.ModelState.AddModelError(Prefix, S["The field {0} used for map latitude does not exist.", part.MapLatitudeField.Text]);
                        }
                        if (fields.All(f => f.Alias != part.MapLongitudeField.Text))
                        {
                            updater.ModelState.AddModelError(Prefix, S["The field {0} used for map longitude does not exist.", part.MapLongitudeField.Text]);
                        }

                        // Map Color #ffc0cb
                        if (string.IsNullOrWhiteSpace(part.MapColorField.Text))
                        {
                            part.MapColorField.Text = "#ffc0cb";
                        }
                        else
                        {
                            if (fields.All(f => f.Alias != part.MapColorField.Text))
                            {
                                updater.ModelState.AddModelError(Prefix, S["The field {0} used for map color does not exist.", part.MapColorField.Text]);
                            }
                        }

                        // Map Opacity
                        if (string.IsNullOrWhiteSpace(part.MapOpacityField.Text))
                        {
                            part.MapOpacityField.Text = "0.8";
                        }
                        else
                        {
                            if (double.TryParse(part.MapOpacityField.Text, out double opacity))
                            {
                                if (opacity < 0 || opacity > 1)
                                {
                                    updater.ModelState.AddModelError(Prefix, S["Map opacity must be between 0 and 1."]);
                                }
                            }
                            else
                            {
                                if (fields.All(f => f.Alias != part.MapOpacityField.Text))
                                {
                                    updater.ModelState.AddModelError(Prefix, S["The field {0} used for map opacity does not exist.", part.MapOpacityField.Text]);
                                }
                            }
                        }

                        // Map Radius
                        if (string.IsNullOrWhiteSpace(part.MapRadiusField.Text))
                        {
                            part.MapRadiusField.Text = "7";
                        }
                        else
                        {
                            if (!int.TryParse(part.MapRadiusField.Text, out int radius))
                            {
                                if (fields.All(f => f.Alias != part.MapRadiusField.Text))
                                {
                                    updater.ModelState.AddModelError(Prefix, S["The field {0} used for map radius does not exist.", part.MapRadiusField.Text]);
                                }
                            }
                        }
                    }
                }
                else
                {
                    updater.ModelState.AddModelError(Prefix, S["Please define an entity."]);
                }
            } catch (Exception ex) {
                updater.ModelState.AddModelError(Prefix, S[ex.Message]);
            }

            if (updater.ModelState.IsValid)
            {
                _signal.SignalToken(Common.GetCacheKey(part.ContentItem.Id));
            }

            return(Edit(part, context));
        }