diff --git a/.github/workflows/nuget.yml b/.github/workflows/nuget.yml index 2a10e6980..6db549af5 100644 --- a/.github/workflows/nuget.yml +++ b/.github/workflows/nuget.yml @@ -42,13 +42,14 @@ jobs: run: | npm install --prefix src/MasterData.Web cd ${{ matrix.project }} - BASE_VERSION=$(dotnet msbuild -nologo -getProperty:Version | tail -n 1 | tr -d '\r') + BASE_VERSION=$(dotnet msbuild -nologo -getProperty:VersionPrefix | tail -n 1 | tr -d '\r') + PREVIEW_SUFFIX=$(dotnet msbuild -nologo -getProperty:PreviewVersionSuffix | tail -n 1 | tr -d '\r') if [ "${GITHUB_REF_NAME}" = "rc" ]; then - PACKAGE_VERSION="${BASE_VERSION}-preview" + PACKAGE_VERSION="${BASE_VERSION}-${PREVIEW_SUFFIX}" else PACKAGE_VERSION="${BASE_VERSION}" fi - dotnet build -c release -p:PackageVersion="${PACKAGE_VERSION}" - dotnet pack -c release --no-build --output="nuget" -p:PackageVersion="${PACKAGE_VERSION}" + dotnet build -c release -p:Version="${PACKAGE_VERSION}" -p:PackageVersion="${PACKAGE_VERSION}" -p:InformationalVersion="${PACKAGE_VERSION}" + dotnet pack -c release --no-build --output="nuget" -p:Version="${PACKAGE_VERSION}" -p:PackageVersion="${PACKAGE_VERSION}" -p:InformationalVersion="${PACKAGE_VERSION}" cd nuget dotnet nuget push "*.nupkg" --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate diff --git a/Directory.Build.props b/Directory.Build.props index 263357fc9..ce387470e 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -3,10 +3,15 @@ https://www.github.com/JJConsulting/JJMasterData https://www.github.com/JJConsulting/JJMasterData JJMasterData.png - 4.5.29 + 5.0.0 + 4 + preview$(PreviewNumber) + $(VersionPrefix) + $(VersionPrefix)-$(VersionSuffix) $(Version) - $(Version) - $(Version) + $(VersionPrefix) + $(VersionPrefix) + $(Version) README.NuGet.md true true diff --git a/Directory.Packages.props b/Directory.Packages.props index 29bd8861a..181727105 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -9,6 +9,7 @@ + diff --git a/JJMasterData.slnx b/JJMasterData.slnx index 53968bbcf..0d6997b7c 100644 --- a/JJMasterData.slnx +++ b/JJMasterData.slnx @@ -13,7 +13,6 @@ - diff --git a/doc/MasterData.Docs/MasterData.Docs.csproj b/doc/MasterData.Docs/MasterData.Docs.csproj index bb4645869..3f6fc7fa6 100644 --- a/doc/MasterData.Docs/MasterData.Docs.csproj +++ b/doc/MasterData.Docs/MasterData.Docs.csproj @@ -1,7 +1,7 @@ - netstandard2.0 + net10.0 13 JJMasterData.Documentation JJMasterData.Documentation diff --git a/doc/MasterData.Docs/articles/configurations.md b/doc/MasterData.Docs/articles/configurations.md index b766c5416..e26b30ee6 100644 --- a/doc/MasterData.Docs/articles/configurations.md +++ b/doc/MasterData.Docs/articles/configurations.md @@ -5,7 +5,7 @@ There are three ways to configure an application: -**1)** Add your configuration keys in appsettings.json. On .NET Framework you will need to add `IConfiguration` via `Microsoft.Extensions.Configuration` +**1)** Add your configuration keys in appsettings.json. > [!TIP] > To autocomplete with JJMasterData keys in your text editor, put this URL in the JSON Schema of your IDE. @@ -70,4 +70,3 @@ You can change any property from: [Read more](localization.md) about localization. - diff --git a/doc/MasterData.Docs/articles/custom_rules.md b/doc/MasterData.Docs/articles/customizations.md similarity index 92% rename from doc/MasterData.Docs/articles/custom_rules.md rename to doc/MasterData.Docs/articles/customizations.md index 283ca6261..be5026bf9 100644 --- a/doc/MasterData.Docs/articles/custom_rules.md +++ b/doc/MasterData.Docs/articles/customizations.md @@ -1,4 +1,6 @@ -# Custom Rules +# Customizations + +If you are looking for declarative validations configured directly in the Data Dictionary UI, see [Rules](rules.md). There are three ways to customize MasterData @@ -82,7 +84,6 @@ IF (MyCustomLogic, you can use your @Parameters) ``` > [!WARNING] -> It is not a best practice write business rules at database, recommended only for simple validations. +> It is not a best practice write business rules as exceptions at the database, please use [Rules](rules.md). --- - diff --git a/doc/MasterData.Docs/articles/errors/connection_string.md b/doc/MasterData.Docs/articles/errors/connection_string.md index e0aae288a..6110ec9d6 100644 --- a/doc/MasterData.Docs/articles/errors/connection_string.md +++ b/doc/MasterData.Docs/articles/errors/connection_string.md @@ -4,7 +4,7 @@ This is probably the first error you can find setting up JJMasterData. You can easily solve it in different ways. -## ..NET 8+ +## .NET 10 Add a default connection string to appsettings.json. ```json { @@ -14,8 +14,8 @@ Add a default connection string to appsettings.json. } ``` -## .NET Framework 4.8 and .NET Standard 2.0 -Using any supported .NET version, you can set programmatically your connection string. +## Programmatic configuration +You can set your connection string programmatically. ```csharp builder.Services.AddJJMasterDataCore(new MasterDataCoreOptionsConfiguration() { diff --git a/doc/MasterData.Docs/articles/getting_started.md b/doc/MasterData.Docs/articles/getting_started.md index 262f85dfd..133691f9b 100644 --- a/doc/MasterData.Docs/articles/getting_started.md +++ b/doc/MasterData.Docs/articles/getting_started.md @@ -1,7 +1,6 @@ # Getting Started -This tutorial assumes you will use .NET 8+, for .NET Framework 4.8 support, -check our [documentation](miscellaneous/netframework.md). +This tutorial assumes you will use .NET 10. ## 1. Install JJMasterData.Web from NuGet  diff --git a/doc/MasterData.Docs/articles/miscellaneous/assemblies.md b/doc/MasterData.Docs/articles/miscellaneous/assemblies.md index a0f6fc177..38a32e339 100644 --- a/doc/MasterData.Docs/articles/miscellaneous/assemblies.md +++ b/doc/MasterData.Docs/articles/miscellaneous/assemblies.md @@ -7,21 +7,21 @@ JJMasterData dependency tree can be represented by the following diagram: ## Assemblies ### JJMasterData.Web -Target Frameworks: ..NET 8 +Target Framework: .NET 10 Razor Class Library with web graphical interfaces to manipulate and render your metadata. ### JJMasterData.WebApi -Target Framework: ..NET 8 +Target Framework: .NET 10 Restful API to consume your metadata at any front-end. ### JJMasterData.Core -Target Frameworks: ..NET 8, .NET Standard 2.0 and .NET Framework 4.8 +Target Framework: .NET 10 Library to access your metadata from .NET and/or render it at HTML components. ### JJMasterData.Commons -Target: .NET Standard 2.0 +Target Framework: .NET 10 -Utilities to all assemblies, like database access, l10n, logging and utils. \ No newline at end of file +Utilities to all assemblies, like database access, l10n, logging and utils. diff --git a/doc/MasterData.Docs/articles/miscellaneous/netframework.md b/doc/MasterData.Docs/articles/miscellaneous/netframework.md deleted file mode 100644 index 549208783..000000000 --- a/doc/MasterData.Docs/articles/miscellaneous/netframework.md +++ /dev/null @@ -1,13 +0,0 @@ -# .NET Framework Support - -JJMasterData supports legacy .NET Framework systems, including ASP.NET WebForms and MVC5. - -## Differences from ASP.NET Core - -- JJMasterData.Web is not supported, we recommend starting a [incremental migration](https://devblogs.microsoft.com/dotnet/incremental-asp-net-to-asp-net-core-migration/) -and use the DataDictionary Razor Class Library in a external website. -- At Global.asax, use AddJJMasterDataCore() instead of AddJJMasterDataWeb() -- You will need to include in your Template.master or _Layout.cshtml, all JJMasterData front-end dependencies, check `_MasterDataScripts` and `_MasterDataStylesheets` source code. -- You will need a custom DI container like SimpleInjector -- After these steps, simply instantiate your using or use the Render route in your external ..NET 8 website. -- You will need to handle your manually \ No newline at end of file diff --git a/doc/MasterData.Docs/articles/rules.md b/doc/MasterData.Docs/articles/rules.md new file mode 100644 index 000000000..1164e4fe2 --- /dev/null +++ b/doc/MasterData.Docs/articles/rules.md @@ -0,0 +1,193 @@ +# Rules + +Rules allow you to run custom scripts before `insert` and `update` operations in a `FormElement`. + +Use them when field-level validations are not enough, and you need to validate combinations of values, check data in the database, or apply custom business rules. + +## Where to configure + +In the Data Dictionary UI, open your element and go to the `Rules` tab. + +Each rule has: + +- **Name**: Friendly identification for the rule +- **Rule Type**: Script language used by the rule +- **Script**: The validation logic itself + +Currently supported languages: + +- `SQL` +- `JavaScript` + +## How errors work + +Rules must produce validation errors only when something is wrong. + +If a rule does not produce any error, the operation continues normally. + +## SQL rules + +SQL rules execute a query and interpret the returned rows as validation errors. + +### Result contract + +- Return **no rows**: validation succeeded +- Return **1 column**: general validation error +- Return **2 columns**: field error, where: + - first column = field name + - second column = error message +- Column names do not matter + +### Available parameters + +You can use form values as parameters with the syntax: + +```sql +{FieldName} +``` + +### SQL examples + +General error: + +```sql +if exists ( + select 1 + from Customer + where Document = {Document} + and Id <> isnull({Id}, 0) +) + select 'There is already another customer with this document.' +``` + +Field error: + +```sql +if exists ( + select 1 + from Customer + where Email = {Email} + and Id <> isnull({Id}, 0) +) + select 'Email', 'This email is already in use.' +``` + +Multiple errors: + +```sql +-- Validation: required +IF @Nome IS NULL OR LTRIM(RTRIM(@Nome)) = '' +BEGIN + SELECT 'Name', 'Name is required'; +END; + +-- Validation: minimum and maximum length +IF LEN(@Nome) < 2 OR LEN(@Nome) > 100 +BEGIN + SELECT 'Name must be between 2 and 100 characters'; +END; + +-- Validation: only letters and spaces (no numbers or special characters) +IF @Nome LIKE '%[^A-Za-zÀ-ÿ ]%' +BEGIN + SELECT 'Name', 'Name contains invalid characters'; +END; + +-- Validation: avoid multiple consecutive spaces +IF @Nome LIKE '% %' +BEGIN + SELECT 'Name', 'Name cannot contain consecutive spaces'; +END; + +-- Validation: blacklist (business rule example) +IF UPPER(@Nome) IN ('ADMIN', 'ROOT', 'SYSTEM') +BEGIN + SELECT 'Name', 'Name not allowed'; +END; + +-- Validation: avoid unrealistically short names +IF LEN(REPLACE(@Nome, ' ', '')) < 2 +BEGIN + SELECT 'Name', 'Invalid name'; +END; + +-- Specific validation (example business rule) +IF @Nome = 'Bola' +BEGIN + SELECT 'Name', 'Name blocked by internal rule'; +END; + +``` + +## JavaScript rules + +JavaScript rules run with [Jint](https://github.com/sebastienros/jint). +They are executed **server-side**, not in the browser. + +The script receives: + +- `values`: object containing form values +- `addError(message)`: adds a general error +- `addError(name, message)`: adds a field error + +### JavaScript examples + +General error: + +```javascript +if (!values.Name && !values.CompanyName) { + addError("Either Name or CompanyName must be filled."); +} +``` + +Field error: + +```javascript +if (!values.Email) { + addError("Email", "Email is required."); +} +``` + +Multiple errors: + +```javascript +if (!values.StartDate) { + addError("StartDate", "Start date is required."); +} + +if (!values.EndDate) { + addError("EndDate", "End date is required."); +} + +if (values.StartDate && values.EndDate && values.StartDate > values.EndDate) { + addError("EndDate", "End date must be greater than or equal to start date."); +} +``` + +Cross-field validation: + +```javascript +if (values.Type === "Company" && !values.Document) { + addError("Document", "Document is required for companies."); +} +``` + +## Choosing between SQL and JavaScript + +Use `SQL` when: + +- validation depends on database queries +- you want to reuse database-side logic +- you need to validate against existing persisted data + +Use `JavaScript` when: + +- validation depends only on current form values +- you want simpler cross-field logic +- you want a more expressive scripting syntax for conditional rules + +## Notes + +- Rule field names must match the dictionary field names when you add field errors +- General errors are shown as form-level validation messages +- Field errors are attached to the corresponding field when possible diff --git a/doc/MasterData.Docs/articles/toc.yml b/doc/MasterData.Docs/articles/toc.yml index b362b253f..b7c709240 100644 --- a/doc/MasterData.Docs/articles/toc.yml +++ b/doc/MasterData.Docs/articles/toc.yml @@ -48,8 +48,10 @@ href: actions/cancel_action.md - name: Back href: actions/back_action.md - - name: Custom Rules - href: custom_rules.md + - name: Customizations + href: customizations.md + - name: Rules + href: rules.md - name: TagHelpers href: taghelpers.md - name: Localization @@ -146,7 +148,5 @@ items: - name: Multiple Forms Support href: multiple_forms.md - - name: .NET Framework Support - href: miscellaneous/netframework.md - name: Assemblies href: miscellaneous/assemblies.md diff --git a/doc/MasterData.Docs/articles/tutorials/creating_data_dictionary.md b/doc/MasterData.Docs/articles/tutorials/creating_data_dictionary.md index 628dbf936..09291753d 100644 --- a/doc/MasterData.Docs/articles/tutorials/creating_data_dictionary.md +++ b/doc/MasterData.Docs/articles/tutorials/creating_data_dictionary.md @@ -108,9 +108,6 @@ With Alignment At Grid at Right: #### Export You can define whether or not the field will be exported. -#### Validade Request -On .NET Framework 4.8 systems, the field will validate dangerous values, like Html tags and SQL commands. - ## **Panels** Allows you to separate the dictionary fields into panels. But only for add, edit and view actions. @@ -149,6 +146,14 @@ The Actions field is divided into two, Grid and Toolbar. - Filter: Shows all filter options for searching items within the table. - Log: Records and displays the actions performed within the table, including adding, editing and deleting. +## Rules +Within the Rules tab you can create script-based validations executed before `insert` and `update`. + +- SQL rules can return rows representing validation errors +- JavaScript rules can call `addError(message)` or `addError(fieldName, message)` + +For the complete reference, see [Rules](../rules.md). + ## **API** Within this tab it will be possible to edit each verb responsible for http permissions within the REST API. - ApplyUseridOn: Name of the field where the user ID filter will be applied. diff --git a/doc/MasterData.Docs/articles/tutorials/data_file.md b/doc/MasterData.Docs/articles/tutorials/data_file.md index 5bcfe697e..86b081f16 100644 --- a/doc/MasterData.Docs/articles/tutorials/data_file.md +++ b/doc/MasterData.Docs/articles/tutorials/data_file.md @@ -51,7 +51,7 @@ Where we configure the maximum size in bytes allowed in the upload. The maximum ### What can you do If you want to increase the size of this field, you will need to change the setting **MaxRequestLength** -The default size is 4 MB for .NET Framework and 30MB for .NET Core. +The default size is 30 MB for ASP.NET Core. ## Why when enabling a MultipleFile property I cannot enable ExportAsLink? @@ -66,4 +66,4 @@ Unfortunately in this scenario you will have to create a field for each file. ## Como acessar o arquivo de fora do elemento em uma rota externa? -Utilize o endpoint `/MasterData/File/Index/{elementName}/{fieldName}/{id}?fileName=YourFileName.png` para recuperar seu arquivo. Onde {id} é sua chave primária, caso seja mais de um campo, utilize vírgula para separar os valores. \ No newline at end of file +Utilize o endpoint `/MasterData/File/Index/{elementName}/{fieldName}/{id}?fileName=YourFileName.png` para recuperar seu arquivo. Onde {id} é sua chave primária, caso seja mais de um campo, utilize vírgula para separar os valores. diff --git a/doc/README.md b/doc/README.md index 5a6b431ff..fa59e1a22 100644 --- a/doc/README.md +++ b/doc/README.md @@ -3,7 +3,7 @@ We use docfx to build the documentation in markdown to learn more visit [DocFx Documetantion](https://dotnet.github.io/docfx/) ## Building from source -1. Install [.NET Framework 4.8] +1. Install [.NET 10 SDK](https://dotnet.microsoft.com/download) 2. Install [NodeJS](https://nodejs.org/en/download/) diff --git a/jjmasterdata.json b/jjmasterdata.json index f2c6f6210..245bb34bc 100644 --- a/jjmasterdata.json +++ b/jjmasterdata.json @@ -23,9 +23,6 @@ "null" ] }, - "SupportNetFramework": { - "type": "boolean" - }, "EnableBundleAndMinification": { "type": "boolean" }, @@ -53,12 +50,6 @@ "null" ] }, - "MasterDataUrl": { - "type": [ - "string", - "null" - ] - }, "ExportationFolderPath": { "type": [ "string", @@ -111,12 +102,10 @@ "LayoutPath", "ModalLayoutPath", "CustomBootstrapPath", - "SupportNetFramework", "EnableBundleAndMinification", "CustomScriptsPaths", "DataDictionaryTableName", "AuditLogTableName", - "MasterDataUrl", "ExportationFolderPath", "ConnectionString", "ConnectionProvider", @@ -127,4 +116,4 @@ ] } } -} \ No newline at end of file +} diff --git a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/ExpressionsMigrationService.cs b/src/ConsoleApps/MasterData.LegacyMetadataMigrator/ExpressionsMigrationService.cs deleted file mode 100644 index e9408003f..000000000 --- a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/ExpressionsMigrationService.cs +++ /dev/null @@ -1,166 +0,0 @@ -using JJMasterData.Commons.Util; -using JJMasterData.Core.DataDictionary.Models; -using JJMasterData.Core.DataDictionary.Models.Actions; -using JJMasterData.Core.DataDictionary.Repository.Abstractions; - -namespace JJMasterData.LegacyMetadataMigrator; - -public class ExpressionsMigrationService( - IDataDictionaryRepository dataDictionaryRepository) -{ - private IDataDictionaryRepository DataDictionaryRepository { get; } = dataDictionaryRepository; - - public void Migrate() - { - var start = DateTime.Now; - - var formElements = DataDictionaryRepository.GetFormElementListAsync().GetAwaiter().GetResult(); - - foreach (var formElement in formElements) - { - foreach (var field in formElement.Fields) - { - FixFieldExpressions(field); - } - - foreach (var panel in formElement.Panels) - { - FixPanelExpressions(panel); - } - - foreach (var action in formElement.Options.GridTableActions) - { - FixActionExpressions(action); - } - - foreach (var action in formElement.Options.GridToolbarActions) - { - FixActionExpressions(action); - } - - foreach (var action in formElement.Options.FormToolbarActions) - { - FixActionExpressions(action); - } - - DataDictionaryRepository.InsertOrReplace(formElement); - } - - Console.WriteLine("Process started: {0}", start); - Console.WriteLine("Process finished: {0}", DateTime.Now); - } - - private void FixFieldExpressions(FormElementField field) - { - var visibleExpressionBefore = field.VisibleExpression; - - field.VisibleExpression = FixQuotationMarks(visibleExpressionBefore); - - if (visibleExpressionBefore != field.VisibleExpression) - { - Console.WriteLine("{0} VisibleExpression Before: {1}", field.Name, - visibleExpressionBefore); - Console.WriteLine("{0} VisibleExpression After: {1}", field.Name, - field.VisibleExpression); - } - - var enableExpressionBefore = field.EnableExpression; - - field.EnableExpression = FixQuotationMarks(enableExpressionBefore); - - if (enableExpressionBefore != field.EnableExpression) - { - Console.WriteLine("{0} EnableExpression Before: {1}", field.Name, - enableExpressionBefore); - Console.WriteLine("{0} EnableExpression After: {1}", field.Name, field.EnableExpression); - } - - foreach (var action in field.Actions) - { - FixActionExpressions(action); - } - } - - // ReSharper disable once MemberCanBeMadeStatic.Local -#pragma warning disable CA1822 - private void FixPanelExpressions(FormElementPanel panel) -#pragma warning restore CA1822 - { - var visibleExpressionBefore = panel.VisibleExpression; - - panel.VisibleExpression = FixQuotationMarks(visibleExpressionBefore); - - if (visibleExpressionBefore != panel.VisibleExpression) - { - Console.WriteLine("Panel {0} VisibleExpression Before: {1}", panel.PanelId, - visibleExpressionBefore); - Console.WriteLine("Panel {0} VisibleExpression After: {1}", panel.PanelId, - panel.VisibleExpression); - } - - var enableExpressionBefore = panel.EnableExpression; - - panel.EnableExpression = FixQuotationMarks(enableExpressionBefore); - - if (enableExpressionBefore != panel.EnableExpression) - { - Console.WriteLine("Panel {0} EnableExpression Before: {1}", panel.PanelId, - enableExpressionBefore); - Console.WriteLine("Panel {0} EnableExpression After: {1}", panel.PanelId, - panel.EnableExpression); - } - } - - // ReSharper disable once MemberCanBeMadeStatic.Local -#pragma warning disable CA1822 - private void FixActionExpressions(BasicAction action) -#pragma warning restore CA1822 - { - var visibleExpressionBefore = action.VisibleExpression; - - action.VisibleExpression = FixQuotationMarks(visibleExpressionBefore); - - if (visibleExpressionBefore != action.VisibleExpression) - { - Console.WriteLine("Action {0} VisibleExpression Before: {1}", action.Name, - visibleExpressionBefore); - Console.WriteLine("Action {0} VisibleExpression After: {1}", action.Name, - action.VisibleExpression); - } - - var enableExpressionBefore = action.EnableExpression; - - action.EnableExpression = FixQuotationMarks(enableExpressionBefore); - - if (enableExpressionBefore != action.EnableExpression) - { - Console.WriteLine("Action {0} EnableExpression Before: {1}", action.Name, - enableExpressionBefore); - Console.WriteLine("Action {0} EnableExpression After: {1}", action.Name, - action.EnableExpression); - } - } - - private static string FixQuotationMarks(string? expression) - { - if (string.IsNullOrEmpty(expression)) - return "val:1"; - - var quotedValues = StringManager.FindValuesByInterval(expression, '\'','\'').ToList(); - var bracedValues = StringManager.FindValuesByInterval(expression, '{','}').ToList(); - - var newExpression = expression; - - foreach (var bracedValue in bracedValues) - { - var hasQuotes = quotedValues.Any(quotedValue => quotedValue.Contains(bracedValue)); - - if(hasQuotes) - continue; - - newExpression = expression.Replace($"{{{bracedValue}}}", $"'{{{bracedValue}}}'"); - } - - return newExpression; - } -} \ No newline at end of file diff --git a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/GridActions.cs b/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/GridActions.cs deleted file mode 100644 index c59da8d9a..000000000 --- a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/GridActions.cs +++ /dev/null @@ -1,260 +0,0 @@ -#nullable disable - -using JJMasterData.Core.DataDictionary.Models.Actions; -using Newtonsoft.Json; - -namespace JJMasterData.LegacyMetadataMigrator.FormElementMigration; - - -public class GridActions -{ - [JsonProperty("editAction")] - public EditAction EditAction { get; set; } = new(); - - [JsonProperty("deleteAction")] - public DeleteAction DeleteAction { get; set; } = new(); - - [JsonProperty("viewAction")] - public ViewAction ViewAction { get; set; } = new(); - - [JsonProperty("commandActions")] - private List CommandActions { get; set; } = []; - - [JsonProperty("urlRedirectActions")] - private List UrlRedirectActions { get; set; } = []; - - [JsonProperty("internalActions")] - private List InternalActions { get; set; } = []; - - [JsonProperty("jsActions")] - private List JsActions { get; set; } = []; - - - public void Set(BasicAction action) - { - if (action is ViewAction viewAction) - { - ViewAction = viewAction; - } - else if (action is EditAction editAction) - { - EditAction = editAction; - } - else if (action is DeleteAction deleteAction) - { - DeleteAction = deleteAction; - } - else if (action is SqlCommandAction cmdAction) - { - for (int i = 0; i < CommandActions.Count; i++) - { - if (CommandActions[i].Name.Equals(action.Name)) - { - CommandActions[i] = cmdAction; - return; - } - } - CommandActions.Add(cmdAction); - } - else if (action is UrlRedirectAction urlAction) - { - for(int i =0;i< UrlRedirectActions.Count; i++) - { - if (UrlRedirectActions[i].Name.Equals(action.Name)) - { - UrlRedirectActions[i] = urlAction; - return; - } - } - UrlRedirectActions.Add(urlAction); - } - else if (action is InternalAction internalAction) - { - for (int i = 0; i < InternalActions.Count; i++) - { - if (InternalActions[i].Name.Equals(action.Name)) - { - InternalActions[i] = internalAction; - return; - } - } - InternalActions.Add(internalAction); - } - else if (action is ScriptAction jsAction) - { - for (int i = 0; i < JsActions.Count; i++) - { - if (JsActions[i].Name.Equals(action.Name)) - { - JsActions[i] = jsAction; - return; - } - } - JsActions.Add(jsAction); - } - else - { - throw new ArgumentException("Invalid Action"); - } - } - - public void Add(SqlCommandAction action) - { - ValidateAction(action); - CommandActions.Add(action); - } - - - public void Add(UrlRedirectAction action) - { - ValidateAction(action); - UrlRedirectActions.Add(action); - } - - public void Add(InternalAction action) - { - ValidateAction(action); - InternalActions.Add(action); - } - - public void Add(ScriptAction action) - { - ValidateAction(action); - JsActions.Add(action); - } - - public void Remove(SqlCommandAction action) - { - ValidateAction(action); - CommandActions.Remove(action); - } - public void Remove(UrlRedirectAction action) - { - ValidateAction(action); - UrlRedirectActions.Remove(action); - } - - public void Remove(InternalAction action) - { - ValidateAction(action); - InternalActions.Remove(action); - } - - public void Remove(ScriptAction action) - { - ValidateAction(action); - JsActions.Remove(action); - } - - - public void Remove(BasicAction action) - { - if (action is SqlCommandAction acSql) - { - Remove(acSql); - } - else if (action is UrlRedirectAction acUrl) - { - Remove(acUrl); - } - else if (action is InternalAction acInternal) - { - Remove(acInternal); - } - else if (action is ScriptAction acJs) - { - Remove(acJs); - } - else - { - throw new ArgumentException("Invalid Action"); - } - } - - public void Remove(string actionName) - { - BasicAction action = Get(actionName); - Remove(action); - } - -#pragma warning disable CA1822 - // ReSharper disable once MemberCanBeMadeStatic.Local - private void ValidateAction(BasicAction action) -#pragma warning restore CA1822 - { - if (action == null) - throw new ArgumentNullException(nameof(action)); - - if (string.IsNullOrEmpty(action.Name)) - throw new ArgumentException("Property name action is not valid"); - } - - public BasicAction Get(string name) - { - BasicAction action = null; - if (ViewAction.Name.Equals(name)) - return ViewAction; - - if (EditAction.Name.Equals(name)) - return EditAction; - - if (DeleteAction.Name.Equals(name)) - return DeleteAction; - - action = CommandActions.Find(x => x.Name.Equals(name)); - if (action != null) - return action; - - action = UrlRedirectActions.Find(x => x.Name.Equals(name)); - if (action != null) - return action; - - action = InternalActions.Find(x => x.Name.Equals(name)); - if (action != null) - return action; - - action = JsActions.Find(x => x.Name.Equals(name)); - if (action != null) - return action; - - return null; - } - - public void SetDefault(string actionName) - { - foreach (var action in GetAll()) - { - action.IsDefaultOption = action.Name.Equals(actionName); - } - } - - public List GetAll() - { - var listAction = new List(); - - if (ViewAction is not null) - listAction.Add(ViewAction); - - if (EditAction is not null) - listAction.Add(EditAction); - - if (DeleteAction is not null) - listAction.Add(DeleteAction); - - if (CommandActions is { Count: > 0 }) - listAction.AddRange(CommandActions.ToArray()); - - if (UrlRedirectActions is { Count: > 0 }) - listAction.AddRange(UrlRedirectActions.ToArray()); - - if (InternalActions is { Count: > 0 }) - listAction.AddRange(InternalActions.ToArray()); - - if (JsActions is { Count: > 0 }) - listAction.AddRange(JsActions.ToArray()); - - return listAction.OrderBy(x => x.Order).ToList(); - } - - public int Count => GetAll().FindAll(x => x.IsVisible).Count; -} \ No newline at end of file diff --git a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/GridToolbarActions.cs b/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/GridToolbarActions.cs deleted file mode 100644 index 7fe8cd2f9..000000000 --- a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/GridToolbarActions.cs +++ /dev/null @@ -1,311 +0,0 @@ -#nullable disable - -using JJMasterData.Core.DataDictionary.Models.Actions; -using Newtonsoft.Json; - -namespace JJMasterData.LegacyMetadataMigrator.FormElementMigration; - -public class GridToolbarActions -{ - [JsonProperty("insertAction")] - public InsertAction InsertAction { get; set; } = new(); - - [JsonProperty("legendAction")] - public LegendAction LegendAction { get; set; } = new(); - - [JsonProperty("refreshAction")] - public RefreshAction RefreshAction { get; set; } = new(); - - [JsonProperty("filterAction")] - public FilterAction FilterAction { get; set; } = new(); - - [JsonProperty("importAction")] - public ImportAction ImportAction { get; set; } = new(); - - [JsonProperty("exportAction")] - public ExportAction ExportAction { get; set; } = new(); - - [JsonProperty("configAction")] - public ConfigAction ConfigAction { get; set; } = new(); - - [JsonProperty("sortAction")] - public SortAction SortAction { get; set; } = new(); - - [JsonProperty("logAction")] - public AuditLogGridToolbarAction AuditLogGridToolbarAction { get; set; } = new(); - - [JsonProperty("commandActions")] - private List CommandActions { get; set; } = []; - - [JsonProperty("urlRedirectActions")] - private List UrlRedirectActions { get; set; } = []; - - [JsonProperty("internalActions")] - private List InternalActions { get; set; } = []; - - [JsonProperty("jsActions")] - private List JsActions { get; set; } = []; - - - public void Set(BasicAction action) - { - switch (action) - { - case InsertAction insertAction: - InsertAction = insertAction; - break; - case LegendAction legendAction: - LegendAction = legendAction; - break; - case RefreshAction refreshAction: - RefreshAction = refreshAction; - break; - case FilterAction filterAction: - FilterAction = filterAction; - break; - case ImportAction importAction: - ImportAction = importAction; - break; - case ExportAction exportAction: - ExportAction = exportAction; - break; - case ConfigAction configAction: - ConfigAction = configAction; - break; - case SortAction sortAction: - SortAction = sortAction; - break; - case AuditLogGridToolbarAction logAction: - AuditLogGridToolbarAction = logAction; - break; - case SqlCommandAction cmdAction: - { - for (int i = 0; i < CommandActions.Count; i++) - { - if (CommandActions[i].Name.Equals(action.Name)) - { - CommandActions[i] = cmdAction; - return; - } - } - CommandActions.Add(cmdAction); - break; - } - case UrlRedirectAction urlAction: - { - for (int i = 0; i < UrlRedirectActions.Count; i++) - { - if (UrlRedirectActions[i].Name.Equals(action.Name)) - { - UrlRedirectActions[i] = urlAction; - return; - } - } - UrlRedirectActions.Add(urlAction); - break; - } - case InternalAction internalAction: - { - for (int i = 0; i < InternalActions.Count; i++) - { - if (InternalActions[i].Name.Equals(action.Name)) - { - InternalActions[i] = internalAction; - return; - } - } - InternalActions.Add(internalAction); - break; - } - case ScriptAction scriptAction: - { - for (int i = 0; i < JsActions.Count; i++) - { - if (JsActions[i].Name.Equals(action.Name)) - { - JsActions[i] = scriptAction; - return; - } - } - JsActions.Add(scriptAction); - break; - } - default: - throw new ArgumentException("Invalid Action"); - } - } - - - public void Add(SqlCommandAction action) - { - ValidateAction(action); - CommandActions.Add(action); - } - - public void Add(UrlRedirectAction action) - { - ValidateAction(action); - UrlRedirectActions.Add(action); - } - - public void Add(InternalAction action) - { - ValidateAction(action); - InternalActions.Add(action); - } - - public void Add(ScriptAction action) - { - ValidateAction(action); - JsActions.Add(action); - } - - public void Add(BasicAction action) - { - if (action is SqlCommandAction cmdAction) - Add(cmdAction); - else if (action is UrlRedirectAction urlAction) - Add(urlAction); - else if (action is InternalAction internalAction) - Add(internalAction); - else if (action is ScriptAction scriptAction) - Add(scriptAction); - else - throw new ArgumentException("Invalid Action"); - } - - public void Remove(SqlCommandAction action) - { - ValidateAction(action); - CommandActions.Remove(action); - } - public void Remove(UrlRedirectAction action) - { - ValidateAction(action); - UrlRedirectActions.Remove(action); - } - - public void Remove(InternalAction action) - { - ValidateAction(action); - InternalActions.Remove(action); - } - public void Remove(ScriptAction action) - { - ValidateAction(action); - JsActions.Remove(action); - } - - public void Remove(BasicAction action) - { - if (action is SqlCommandAction acSql) - { - Remove(acSql); - } - else if (action is UrlRedirectAction acUrl) - { - Remove(acUrl); - } - else if (action is InternalAction acInternal) - { - Remove(acInternal); - } - else if (action is ScriptAction jScriptAction) - { - Remove(jScriptAction); - } - else - { - throw new ArgumentException("Invalid Action"); - } - } - - public void Remove(string actionName) - { - BasicAction action = Get(actionName); - Remove(action); - } - -#pragma warning disable CA1822 - // ReSharper disable once MemberCanBeMadeStatic.Local - private void ValidateAction(BasicAction action) -#pragma warning restore CA1822 - { - if (action == null) - throw new ArgumentNullException(nameof(action)); - - if (string.IsNullOrEmpty(action.Name)) - throw new ArgumentException("Property name action is not valid"); - } - - public BasicAction Get(string name) - { - return GetAll().Find(x => x.Name.Equals(name)); - } - - - public List GetAll() - { - var actionList = new List(); - - if (InsertAction is not null) - { - } - else - { - InsertAction = new InsertAction(); - } - - actionList.Add(InsertAction); - - if (LegendAction is not null) - { - } - else - { - LegendAction = new LegendAction(); - } - - actionList.Add(LegendAction); - - RefreshAction ??= new RefreshAction(); - - actionList.Add(RefreshAction); - - FilterAction ??= new FilterAction(); - - actionList.Add(FilterAction); - - ImportAction ??= new ImportAction(); - - actionList.Add(ImportAction); - - ExportAction ??= new ExportAction(); - - actionList.Add(ExportAction); - - ConfigAction ??= new ConfigAction(); - - actionList.Add(ConfigAction); - - SortAction ??= new SortAction(); - - actionList.Add(SortAction); - - AuditLogGridToolbarAction ??= new AuditLogGridToolbarAction(); - - actionList.Add(AuditLogGridToolbarAction); - if (CommandActions is { Count: > 0 }) - actionList.AddRange(CommandActions.ToArray()); - - if (UrlRedirectActions is { Count: > 0 }) - actionList.AddRange(UrlRedirectActions.ToArray()); - - if (InternalActions is { Count: > 0 }) - actionList.AddRange(InternalActions.ToArray()); - - if (JsActions is { Count: > 0 }) - actionList.AddRange(JsActions.ToArray()); - return actionList.OrderBy(x => x.Order).ToList(); - } -} \ No newline at end of file diff --git a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/Metadata.cs b/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/Metadata.cs deleted file mode 100644 index 67d0bee45..000000000 --- a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/Metadata.cs +++ /dev/null @@ -1,101 +0,0 @@ -#nullable disable - -using System.Collections; -using JJMasterData.Commons.Data.Entity.Models; -using JJMasterData.Core.DataDictionary.Models; -using Newtonsoft.Json; - -namespace JJMasterData.LegacyMetadataMigrator.FormElementMigration; - -[JsonObject("elementInfo")] -public class Metadata -{ - [JsonProperty("table")] - public Element Table { get; set; } - - [JsonProperty("form")] - public MetadataForm Form { get; set; } - - [JsonProperty("uioptions")] - public MetadataOptions Options { get; set; } - - [JsonProperty("api")] - public MetadataApiOptions ApiOptions { get; set; } - - public static explicit operator FormElement(Metadata metadata) => metadata.GetFormElement(); - - public FormElement GetFormElement() - { - var formElement = new FormElement(Table) - { - Title = Form.Title, - SubTitle = Form.SubTitle, - Panels = Form.Panels, - Info = Table.Info, - Indexes = Table.Indexes, - EnableSynchronism = Table.EnableSynchronism, - SynchronismMode = Table.SynchronismMode, - }; - - foreach (var item in Form.FormFields) - { - var field = formElement.Fields[item.Name]; - field.Component = item.Component; - field.VisibleExpression = item.VisibleExpression; - field.EnableExpression = item.EnableExpression; - field.TriggerExpression = item.TriggerExpression; - field.LineGroup = item.LineGroup; - field.CssClass = item.CssClass; - field.HelpDescription = item.HelpDescription; - field.DataItem = item.DataItem; - field.Attributes[FormElementField.MinValueAttribute] = item.MinValue; - field.Attributes[FormElementField.MaxValueAttribute] = item.MaxValue; - field.DataFile = item.DataFile; - field.Export = item.Export; - field.ValidateRequest = item.ValidateRequest ?? true; - field.AutoPostBack = item.AutoPostBack; - field.NumberOfDecimalPlaces = item.NumberOfDecimalPlaces; - field.Actions = item.Actions; - field.Attributes = item.Attributes?.Cast() - .ToDictionary(kvp => kvp.Key.ToString(), kvp => kvp.Value) ?? new Dictionary(); - field.PanelId = item.PanelId; - field.InternalNotes = item.InternalNotes; - } - - - formElement.Options = new FormElementOptions - { - Form = Options.Form, - Grid = Options.Grid - }; - - formElement.Options.GridTableActions.Clear(); - - foreach (var a in Options.GridActions.GetAll()) - { - formElement.Options.GridTableActions.Add(a); - } - - formElement.Options.GridToolbarActions.Clear(); - - foreach (var a in Options.ToolbarActions.GetAll()) - { - formElement.Options.GridToolbarActions.Add(a); - } - - formElement.ApiOptions = new FormElementApiOptions - { - JsonFormatting = ApiOptions.FormatType, - EnableAdd = ApiOptions.EnableAdd, - EnableGetAll = ApiOptions.EnableGetAll, - EnableDel = ApiOptions.EnableDel, - EnableUpdate = ApiOptions.EnableUpdate, - EnableGetDetail = ApiOptions.EnableGetDetail, - EnableUpdatePart = ApiOptions.EnableUpdatePart, - ApplyUserIdOn = ApiOptions.ApplyUserIdOn - }; - - return formElement; - } - -} \ No newline at end of file diff --git a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/MetadataApiOptions.cs b/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/MetadataApiOptions.cs deleted file mode 100644 index 50ec645c7..000000000 --- a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/MetadataApiOptions.cs +++ /dev/null @@ -1,78 +0,0 @@ -#nullable disable - -using System.Runtime.Serialization; -using JJMasterData.Core.DataDictionary.Models; -using Newtonsoft.Json; - -namespace JJMasterData.LegacyMetadataMigrator.FormElementMigration; - -[DataContract] -public class MetadataApiOptions -{ - /// - /// Get all records. Verb GET - /// - [JsonProperty("enableGetAll")] - public bool EnableGetAll { get; set; } - - /// - /// Get a record detail. Verb GET - /// - [JsonProperty("enableGetDetail")] - public bool EnableGetDetail { get; set; } - - /// - /// Add new records. Verb POST - /// - [JsonProperty("enableAdd")] - public bool EnableAdd { get; set; } - - /// - /// Update records. Verb PUT - /// - [JsonProperty("enableUpdate")] - public bool EnableUpdate { get; set; } - - /// - /// Update some especifics fields. Verb PATCH - /// - [JsonProperty("enableUpdatePart")] - public bool EnableUpdatePart { get; set; } - - /// - /// Delete a record. Verb DEL - /// - [JsonProperty("enableDel")] - public bool EnableDel { get; set; } - - /// - /// Json Format - /// - [JsonProperty("formatType")] - public ApiJsonFormatting FormatType { get; set; } = ApiJsonFormatting.Lowercase; - - /// - /// Aways apply UserId (from login) as filter or on set - /// - [JsonProperty("applyUserIdOn")] - public string ApplyUserIdOn { get; set; } - - - /// - /// Format the field according to the dictionary parameterization - /// - public string GetFieldNameParsed(string fieldName) - { - return FormatType == ApiJsonFormatting.Lowercase ? fieldName.ToLower() : fieldName; - } - - - public bool HasSetMehtod() - { - return EnableAdd || - EnableUpdate || - EnableUpdatePart || - EnableDel; - } - -} \ No newline at end of file diff --git a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/MetadataForm.cs b/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/MetadataForm.cs deleted file mode 100644 index cb16bca43..000000000 --- a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/MetadataForm.cs +++ /dev/null @@ -1,23 +0,0 @@ -#nullable disable - -using System.Runtime.Serialization; -using JJMasterData.Core.DataDictionary.Models; -using Newtonsoft.Json; - -namespace JJMasterData.LegacyMetadataMigrator.FormElementMigration; - -[DataContract] -public class MetadataForm -{ - [JsonProperty("formfields")] - public List FormFields { get; set; } = []; - - [JsonProperty("title")] - public string Title { get; set; } - - [JsonProperty("subtitle")] - public string SubTitle { get; set; } - - [JsonProperty("panels")] - public List Panels { get; set; } = []; -} \ No newline at end of file diff --git a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/MetadataFormField.cs b/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/MetadataFormField.cs deleted file mode 100644 index 02221833f..000000000 --- a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/MetadataFormField.cs +++ /dev/null @@ -1,75 +0,0 @@ -#nullable disable - -using System.Collections; -using JJMasterData.Core.DataDictionary.Models; -using JJMasterData.Core.DataDictionary.Models.Actions; -using Newtonsoft.Json; - -namespace JJMasterData.LegacyMetadataMigrator.FormElementMigration; - - -public class MetadataFormField -{ - [JsonProperty("name")] - public string Name { get; set; } - - [JsonProperty("component")] - public FormComponent Component { get; set; } - - [JsonProperty("visibleexpression")] - public string VisibleExpression { get; set; } - - [JsonProperty("enableexpression")] - public string EnableExpression { get; set; } - - [JsonProperty("triggerexpression")] - public string TriggerExpression { get; set; } - - [JsonProperty("order")] - public int Order { get; set; } - - [JsonProperty("linegroup")] - public int LineGroup { get; set; } - - [JsonProperty("cssclass")] - public string CssClass { get; set; } - - [JsonProperty("helpdescription")] - public string HelpDescription { get; set; } - - [JsonProperty("dataitem")] - public FormElementDataItem DataItem { get; set; } - - [JsonProperty("datafile")] - public FormElementDataFile DataFile { get; set; } - - [JsonProperty("export")] - public bool Export { get; set; } - - [JsonProperty("validaterequest")] - public bool? ValidateRequest { get; set; } - - [JsonProperty("autopostback")] - public bool AutoPostBack { get; set; } - - [JsonProperty("maxvalue")] - public float? MaxValue { get; set; } - - [JsonProperty("minvalue")] - public float? MinValue { get; set; } - - [JsonProperty("numberdecimalplaces")] - public int NumberOfDecimalPlaces { get; set; } - - [JsonProperty("actions")] - public FormElementFieldActionList Actions { get; set; } - - [JsonProperty("attributes")] - public Hashtable Attributes { get; set; } - - [JsonProperty("panelid")] - public int PanelId { get; set; } - - [JsonProperty("internalnotes")] - public string InternalNotes { get; set; } -} \ No newline at end of file diff --git a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/MetadataInfo.cs b/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/MetadataInfo.cs deleted file mode 100644 index fa2ca232c..000000000 --- a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/MetadataInfo.cs +++ /dev/null @@ -1,37 +0,0 @@ -#nullable disable -using Newtonsoft.Json; - -namespace JJMasterData.LegacyMetadataMigrator.FormElementMigration; - -public class MetadataInfo -{ - [JsonProperty("name")] - public string Name { get; set; } - - [JsonProperty("tablename")] - public string TableName { get; set; } - - [JsonProperty("info")] - public string Info { get; set; } - - [JsonProperty("sync")] - public string Sync { get; set; } - - [JsonProperty("modified")] - public DateTime Modified { get; set; } - - public MetadataInfo() - { - - } - - public MetadataInfo(Metadata metadata, DateTime modified) - { - Name = metadata.Table.Name; - TableName = metadata.Table.TableName; - Info = metadata.Table.Info; - Sync = metadata.Table.EnableSynchronism ? "1" : "0"; - Modified = modified; - } - -} \ No newline at end of file diff --git a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/MetadataOptions.cs b/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/MetadataOptions.cs deleted file mode 100644 index 65688e4c9..000000000 --- a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigration/MetadataOptions.cs +++ /dev/null @@ -1,21 +0,0 @@ -#nullable disable -using JJMasterData.Core.DataDictionary.Models; -using Newtonsoft.Json; - -namespace JJMasterData.LegacyMetadataMigrator.FormElementMigration; - - -public class MetadataOptions -{ - [JsonProperty("grid")] - public GridUI Grid { get; set; } = new(); - - [JsonProperty("form")] - public FormUI Form { get; set; } = new(); - - [JsonProperty("toolBarActions")] - public GridToolbarActions ToolbarActions { get; set; } = new(); - - [JsonProperty("gridActions")] - public GridActions GridActions { get; set; } = new(); -} \ No newline at end of file diff --git a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigrationService.cs b/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigrationService.cs deleted file mode 100644 index 7c24d7bf5..000000000 --- a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/FormElementMigrationService.cs +++ /dev/null @@ -1,121 +0,0 @@ -using JJMasterData.Commons.Configuration.Options; -using JJMasterData.Commons.Data; -using JJMasterData.Commons.Exceptions; -using JJMasterData.Core.Configuration.Options; -using JJMasterData.Core.DataDictionary.Repository.Abstractions; -using Microsoft.Extensions.Options; - -namespace JJMasterData.LegacyMetadataMigrator; - -public class FormElementMigrationService(IDataDictionaryRepository dataDictionaryRepository, - MetadataRepository metadataRepository, - IOptions commonsOptions, - IOptions options, - ExpressionsMigrationService expressionsMigrationService) -{ - private DataAccess? _dataAccess; - private IDataDictionaryRepository DataDictionaryRepository { get; } = dataDictionaryRepository; - private MetadataRepository MetadataRepository { get; } = metadataRepository; - private ExpressionsMigrationService ExpressionsMigrationService { get; } = expressionsMigrationService; - - private DataAccess DataAccess - { - get - { - if (_dataAccess == null) - { - var connStr = commonsOptions.Value.ConnectionString; - var connProvider = commonsOptions.Value.ConnectionProvider; - - if (connStr == null) - throw new DataAccessException("Connection string not found"); - - _dataAccess = new(connStr, connProvider); - } - - return _dataAccess; - } - } - - private string TableName => Options.DataDictionaryTableName; - private MasterDataCoreOptions Options { get; } = options.Value; - - public void Migrate() - { - var start = DateTime.Now; - - var containsLegacyType = DataAccess.GetResult($"SELECT [type] from {TableName} where [type] <> 'F'"); - - if (containsLegacyType is null) - { - Console.WriteLine("✅ DataDictionary is already migrated"); - return; - } - - var databaseDictionaries = MetadataRepository.GetMetadataList(); - - DataAccess.SetCommand($"DROP TABLE {TableName}"); - // DataAccess.SetCommand($"DROP PROCEDURE {Options.GetReadProcedureName(TableName)}"); - // DataAccess.SetCommand($"DROP PROCEDURE {Options.GetWriteProcedureName(TableName)}"); - - DataDictionaryRepository.CreateStructureIfNotExistsAsync().GetAwaiter().GetResult(); - - Console.WriteLine("\u2705 Re-created {0} and all related stored procedures", TableName); - - foreach (var metadata in databaseDictionaries) - { - var formElement = metadata.GetFormElement(); - - formElement.UseReadProcedure = true; - formElement.UseWriteProcedure = true; - - foreach (var field in formElement.Fields) - { - if (field.DataFile is not null) - { - field.DataFile.MaxFileSize /= 1000000; - } - } - - DataDictionaryRepository.InsertOrReplaceAsync(formElement).GetAwaiter().GetResult(); - Console.WriteLine("\u2705 {0}", formElement.Name); - } - - DataAccess.SetCommand($"delete from {TableName} where type <> 'F'"); - - DataAccess.SetCommand($$""" - UPDATE {{TableName}} - SET [json] = REPLACE([json], - '{search_id}', - '{SearchId}') - WHERE [json] LIKE '%{search_id}%'; - """); - - Console.WriteLine("✅ Replaced {{search_id}} to {{SearchId}} in all elements"); - - DataAccess.SetCommand($$""" - UPDATE {{TableName}} - SET [json] = REPLACE([json], - '{search_text}', - '{SearchText}') - WHERE [json] LIKE '%{search_text}%'; - """); - - Console.WriteLine("✅ Replaced {{search_text}} to {{SearchText}} in all elements"); - - DataAccess.SetCommand($$""" - UPDATE {{TableName}} - SET [json] = REPLACE([json], - '{objname}', - '{FieldName}') - WHERE [json] LIKE '%{objname}%'; - """); - - Console.WriteLine("✅ Replaced {{objname}} to {{FieldName}} in all elements"); - - Console.WriteLine($"Process started: {start}"); - Console.WriteLine($"Process finished: {DateTime.Now}"); - - ExpressionsMigrationService.Migrate(); - } -} \ No newline at end of file diff --git a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/MasterData.LegacyMetadataMigrator.csproj b/src/ConsoleApps/MasterData.LegacyMetadataMigrator/MasterData.LegacyMetadataMigrator.csproj deleted file mode 100644 index e72049fdb..000000000 --- a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/MasterData.LegacyMetadataMigrator.csproj +++ /dev/null @@ -1,21 +0,0 @@ - - - - Exe - net10.0 - enable - enable - - JJMasterData.LegacyMetadataMigrator - JJMasterData.LegacyMetadataMigrator - - - - - - - - - - - diff --git a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/MetadataRepository.cs b/src/ConsoleApps/MasterData.LegacyMetadataMigrator/MetadataRepository.cs deleted file mode 100644 index 7296a64bd..000000000 --- a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/MetadataRepository.cs +++ /dev/null @@ -1,173 +0,0 @@ -#nullable disable - -using JJMasterData.Commons.Data.Entity.Models; -using JJMasterData.Commons.Data.Entity.Repository; -using JJMasterData.Commons.Data.Entity.Repository.Abstractions; -using JJMasterData.Core.Configuration.Options; -using JJMasterData.Core.DataDictionary.Models; -using JJMasterData.Core.DataDictionary.Models.Actions; -using JJMasterData.Core.DataDictionary.Repository.Abstractions; -using JJMasterData.Core.DataDictionary.Structure; -using JJMasterData.LegacyMetadataMigrator.FormElementMigration; -using Microsoft.Extensions.Options; -using Newtonsoft.Json; - -namespace JJMasterData.LegacyMetadataMigrator; - -public class MetadataRepository(IEntityRepository entityRepository, IOptions options) -{ - private Element _masterDataElement; - - internal Element MasterDataElement - { - get - { - if (_masterDataElement == null) - { - var tableName = options.Value.DataDictionaryTableName; - _masterDataElement = DataDictionaryStructure.GetElement("dbo", tableName); - } - return _masterDataElement; - } - } - - /// - public IEnumerable GetMetadataList(bool? sync = null) - { - var list = new List(); - var entityParameters = new EntityParameters(); - entityParameters.OrderBy.AddOrReplace("name", OrderByDirection.Asc); - entityParameters.OrderBy.AddOrReplace("type", OrderByDirection.Asc); - if (sync.HasValue) - entityParameters.Filters.Add("sync", (bool)sync ? "1" : "0"); - - MasterDataElement.Fields.Add(new ElementField - { - Name = "namefilter", - Filter = new ElementFilter(FilterMode.Contain), - DataBehavior = FieldBehavior.ViewOnly - }); - - //Ignore procedures to apply compatibility - MasterDataElement.UseReadProcedure = false; - MasterDataElement.UseWriteProcedure = false; - - string currentName = ""; - var dt = entityRepository.GetDictionaryListResultAsync(MasterDataElement,entityParameters, false).GetAwaiter().GetResult(); - Metadata currentParser = null; - foreach (var row in dt.Data) - { - string name = row["name"].ToString(); - if (!currentName.Equals(name)) - { - ApplyCompatibility(currentParser); - - currentName = name; - list.Add(new Metadata()); - currentParser = list[^1]; - } - - string json = row["json"].ToString(); - var type = row["type"].ToString()!; - switch (type) - { - case "T": - currentParser!.Table = JsonConvert.DeserializeObject(json); - break; - case "F": - currentParser!.Form = JsonConvert.DeserializeObject(json, new JsonSerializerSettings - { - Error = (sender, args) => - { - args.ErrorContext.Handled = true; - } - }); - break; - case "L": - currentParser!.Options = JsonConvert.DeserializeObject(json); - break; - case "A": - currentParser!.ApiOptions = JsonConvert.DeserializeObject(json); - break; - } - } - - ApplyCompatibility(currentParser); - - return list; - } - - - public static void ApplyCompatibility(Metadata dicParser) - { - if (dicParser?.Table == null) - return; - - //Nairobi - dicParser.Options ??= new MetadataOptions(); - - dicParser.Options.ToolbarActions ??= new GridToolbarActions(); - - dicParser.Options.GridActions ??= new GridActions(); - - - //Denver - if (dicParser.ApiOptions == null) - { - dicParser.ApiOptions = new MetadataApiOptions(); - if (dicParser.Table.EnableSynchronism) - { - dicParser.ApiOptions.EnableGetAll = true; - dicParser.ApiOptions.EnableGetDetail = true; - dicParser.ApiOptions.EnableAdd = true; - dicParser.ApiOptions.EnableUpdate = true; - dicParser.ApiOptions.EnableUpdatePart = true; - dicParser.ApiOptions.EnableDel = true; - } - } - - if (string.IsNullOrEmpty(dicParser.Table.TableName)) - { - dicParser.Table.TableName = dicParser.Table.Name; - } - - //Tokio - if (dicParser.Form is { Panels: null }) dicParser.Form.Panels = []; - - //Professor - if (dicParser.Form != null) - { - foreach (var field in dicParser.Form.FormFields) - { - if (field.DataItem is not { DataItemType: DataItemType.Manual }) - continue; - - if (field.DataItem.Command != null && !string.IsNullOrEmpty(field.DataItem.Command.Sql)) - field.DataItem.DataItemType = DataItemType.SqlCommand; - else if (field.DataItem.ElementMap != null && !string.IsNullOrEmpty(field.DataItem.ElementMap.ElementName)) - field.DataItem.DataItemType = DataItemType.ElementMap; - } - } - - //Arturito - // foreach (var action in dicParser.Options.GridActions.GetAll() - // .Where(action => action is UrlRedirectAction or InternalAction or ScriptAction or SqlCommandAction)) - // { - // //action.IsUserCreated = true; - // } - // - // foreach (var action in dicParser.Options.ToolbarActions - // .GetAll() - // .Where(action => action is UrlRedirectAction or InternalAction or ScriptAction or SqlCommandAction)) - // { - // //action.IsUserCreated = true; - // } - - - //Sirius - - dicParser.Options.ToolbarActions.ExportAction.ProcessOptions ??= new ProcessOptions(); - - dicParser.Options.ToolbarActions.ImportAction.ProcessOptions ??= new ProcessOptions(); - } -} \ No newline at end of file diff --git a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/Program.cs b/src/ConsoleApps/MasterData.LegacyMetadataMigrator/Program.cs deleted file mode 100644 index 759bb5798..000000000 --- a/src/ConsoleApps/MasterData.LegacyMetadataMigrator/Program.cs +++ /dev/null @@ -1,20 +0,0 @@ -using JJMasterData.Core.Configuration; -using JJMasterData.LegacyMetadataMigrator; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; - -var services = new ServiceCollection(); -var configurationBuilder = new ConfigurationBuilder(); -configurationBuilder.AddJsonFile("appsettings.json"); -services.AddJJMasterDataCore(); - -services.AddSingleton(configurationBuilder.Build()); -services.AddTransient(); -services.AddTransient(); -services.AddTransient(); - -var serviceProvider = services.BuildServiceProvider(); - -var service = serviceProvider.GetRequiredService(); - -service.Migrate(); \ No newline at end of file diff --git a/src/MasterData.Commons/Configuration/Options/MasterDataCommonsOptions.cs b/src/MasterData.Commons/Configuration/Options/MasterDataCommonsOptions.cs index 9ba14eca1..418149053 100644 --- a/src/MasterData.Commons/Configuration/Options/MasterDataCommonsOptions.cs +++ b/src/MasterData.Commons/Configuration/Options/MasterDataCommonsOptions.cs @@ -3,7 +3,6 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; -using System.Runtime.InteropServices; using System.Text.Json.Serialization; using JJMasterData.Commons.Data; using JJMasterData.Commons.Data.Entity.Models; @@ -16,7 +15,6 @@ namespace JJMasterData.Commons.Configuration.Options; /// /// JJMasterData key/value configurations. /// They're populated from JJMasterData section on , following its implementations. -/// On .NET Framework, add an builder to your application. /// public sealed class MasterDataCommonsOptions { @@ -53,9 +51,6 @@ public sealed class MasterDataCommonsOptions [Display(Name = "Cryptography Secret Key")] public string? SecretKey { get; set; } - [JsonIgnore] - public static bool IsNetFramework { get; } = RuntimeInformation.FrameworkDescription.StartsWith(".NET Framework"); - internal ConnectionString GetConnectionString(Guid? guid) { if (guid is null) @@ -131,4 +126,4 @@ public static string RemoveTbPrefix(string tableName) return tableName; } -} \ No newline at end of file +} diff --git a/src/MasterData.Commons/Data/DataAccessAsync.cs b/src/MasterData.Commons/Data/DataAccessAsync.cs index 9371d5508..21605ccc2 100644 --- a/src/MasterData.Commons/Data/DataAccessAsync.cs +++ b/src/MasterData.Commons/Data/DataAccessAsync.cs @@ -72,12 +72,12 @@ private async Task ExecuteDataCommandAsync( { try { - using var dbCommand = CreateDbCommand(command); + await using var dbCommand = CreateDbCommand(command); dbCommand.Connection = await CreateConnectionAsync(cancellationToken); - using (dbCommand.Connection) + await using (dbCommand.Connection) { - using (var reader = await dbCommand.ExecuteReaderAsync(cancellationToken)) + await using (var reader = await dbCommand.ExecuteReaderAsync(cancellationToken)) { await readerAction(reader, state, cancellationToken); @@ -103,9 +103,9 @@ private async Task ExecuteDataCommandAsync( object? scalarResult; try { - using var dbCommand = CreateDbCommand(command); + await using var dbCommand = CreateDbCommand(command); dbCommand.Connection = await CreateConnectionAsync(cancellationToken); - using (dbCommand.Connection) + await using (dbCommand.Connection) { scalarResult = await dbCommand.ExecuteScalarAsync(cancellationToken); @@ -126,9 +126,9 @@ public async Task SetCommandAsync(DataAccessCommand command, CancellationTo int rowsAffected; try { - using var dbCommand = CreateDbCommand(command); + await using var dbCommand = CreateDbCommand(command); dbCommand.Connection = await CreateConnectionAsync(cancellationToken); - using (dbCommand.Connection) + await using (dbCommand.Connection) { rowsAffected = await dbCommand.ExecuteNonQueryAsync(cancellationToken); @@ -150,37 +150,25 @@ public async Task SetCommandListAsync(IEnumerable comman int numberOfRowsAffected = 0; DataAccessCommand? currentCommand = null; - using var connection = await CreateConnectionAsync(cancellationToken); + await using var connection = await CreateConnectionAsync(cancellationToken); -#if NET48 - using var transaction = connection.BeginTransaction(); -#else - using var transaction = await connection.BeginTransactionAsync(cancellationToken); -#endif + await using var transaction = await connection.BeginTransactionAsync(cancellationToken); try { foreach (var command in commands) { currentCommand = command; - using var dbCommand = CreateDbCommand(command); + await using var dbCommand = CreateDbCommand(command); dbCommand.Connection = connection; dbCommand.Transaction = transaction; numberOfRowsAffected += await dbCommand.ExecuteNonQueryAsync(cancellationToken); } -#if NET48 - transaction.Commit(); -#else await transaction.CommitAsync(cancellationToken); -#endif } catch (Exception ex) { -#if NET48 - transaction.Rollback(); -#else await transaction.RollbackAsync(cancellationToken); -#endif throw GetDataAccessException(ex, currentCommand); } @@ -234,13 +222,13 @@ private async Task GetDataAsync( { try { - using var dbCommand = CreateDbCommand(command); + await using var dbCommand = CreateDbCommand(command); dbCommand.Connection = await CreateConnectionAsync(cancellationToken); - using (dbCommand.Connection) + await using (dbCommand.Connection) { - using (var dataReader = - await dbCommand.ExecuteReaderAsync(CommandBehavior.SingleRow, cancellationToken)) + await using (var dataReader = + await dbCommand.ExecuteReaderAsync(CommandBehavior.SingleRow, cancellationToken)) { while (await dataReader.ReadAsync(cancellationToken)) { @@ -273,11 +261,11 @@ await dbCommand.ExecuteReaderAsync(CommandBehavior.SingleRow, cancellationToken) try { - using var dbCommand = CreateDbCommand(command); + await using var dbCommand = CreateDbCommand(command); dbCommand.Connection = await CreateConnectionAsync(cancellationToken); - using var connection = dbCommand.Connection; - using (var dataReader = await dbCommand.ExecuteReaderAsync(cancellationToken)) + await using var connection = dbCommand.Connection; + await using (var dataReader = await dbCommand.ExecuteReaderAsync(cancellationToken)) { List columnNames = []; @@ -342,7 +330,7 @@ public async Task TryConnectionAsync(CancellationToken cancell { if (connection.State == ConnectionState.Open) { - connection.Close(); + await connection.CloseAsync(); } connection.Dispose(); @@ -397,4 +385,4 @@ public async Task ExecuteBatchAsync(string script, int? timeoutSeconds = n return true; } -} \ No newline at end of file +} diff --git a/src/MasterData.Commons/Data/DataAccessProviderHelper.cs b/src/MasterData.Commons/Data/DataAccessProviderHelper.cs index 716fcf602..cc7e4fcb5 100644 --- a/src/MasterData.Commons/Data/DataAccessProviderHelper.cs +++ b/src/MasterData.Commons/Data/DataAccessProviderHelper.cs @@ -33,8 +33,7 @@ public static DataAccessProvider GetDataAccessProviderFromString(string provider "Oracle.ManagedDataAccess.Core.Client" => DataAccessProvider.OracleNetCore, "MySql" => DataAccessProvider.MySql, "MySql.Data.MySqlClient.MySqlClientFactory" => DataAccessProvider.MySql, - "PostgreSql" => DataAccessProvider.PostgreSql, - "Npgsql.NpgsqlFactory" => DataAccessProvider.PostgreSql, + "PostgreSql" or "Npgsql.NpgsqlFactory" => DataAccessProvider.PostgreSql, _ => throw new DataAccessProviderException("Unknown data access provider name.") }; } diff --git a/src/MasterData.Commons/Extensions/DictionaryExtensions.cs b/src/MasterData.Commons/Extensions/DictionaryExtensions.cs deleted file mode 100644 index e8c93112c..000000000 --- a/src/MasterData.Commons/Extensions/DictionaryExtensions.cs +++ /dev/null @@ -1,15 +0,0 @@ -#if !NET -using System.Collections.Generic; -using System.Runtime.CompilerServices; - -namespace JJMasterData.Commons.Extensions; - -internal static class DictionaryExtensions -{ - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static TValue GetValueOrDefault(this IDictionary dictionary, TKey key, TValue defaultValue) - { - return dictionary.TryGetValue(key, out var value) ? value : defaultValue; - } -} -#endif \ No newline at end of file diff --git a/src/MasterData.Commons/MasterData.Commons.csproj b/src/MasterData.Commons/MasterData.Commons.csproj index b0e93038e..73757ae35 100644 --- a/src/MasterData.Commons/MasterData.Commons.csproj +++ b/src/MasterData.Commons/MasterData.Commons.csproj @@ -1,6 +1,6 @@ - net4.8;net10.0 + net10.0 latest disable JJMasterData.Commons - Sun Version @@ -21,17 +21,6 @@ - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - diff --git a/src/MasterData.Commons/Resources/MasterDataResources.pt.resx b/src/MasterData.Commons/Resources/MasterDataResources.pt.resx index 067fd5760..460205cc9 100644 --- a/src/MasterData.Commons/Resources/MasterDataResources.pt.resx +++ b/src/MasterData.Commons/Resources/MasterDataResources.pt.resx @@ -2605,6 +2605,52 @@ Sincronizar JJMasterData.Commons + + Validações + JJMasterData.Commons + + + Regras + + + Tipo de validação + + + Tipo de regra + + + Ler mais + + + Executa antes do insert + + + Executa antes do update + + + Executa antes do delete + + + Tem certeza que deseja deletar esta regra? + + + Selecione pelo menos uma operação. + + + As regras em JavaScript rodam no servidor com Jint. Use addError(message) para um erro geral ou addError(name, message) para um erro de campo. + + + Antes de inserir e atualizar + + + Retorne uma coluna com a mensagem de erro ou duas colunas com campo e mensagem. Os nomes das colunas não importam. + + + Já existe uma validação com esse nome. + + + Já existe uma regra com esse nome. + Modo do Sincronismo JJMasterDataWeb @@ -3697,9 +3743,6 @@ Quando o painel está no modo visualuização, mostra apenas os valores sem os componentes. - - Valida valores potencialmente perigosos na requisição no .NET Framework 4.8 - Tamanho do campo. Utilize -1 para utilizar a keyword MAX. diff --git a/src/MasterData.Commons/Security/Cryptography/AesEncryptionAlgorithm.cs b/src/MasterData.Commons/Security/Cryptography/AesEncryptionAlgorithm.cs index cf5527bbb..349406ddf 100644 --- a/src/MasterData.Commons/Security/Cryptography/AesEncryptionAlgorithm.cs +++ b/src/MasterData.Commons/Security/Cryptography/AesEncryptionAlgorithm.cs @@ -1,7 +1,6 @@ #nullable enable using System; -using System.Collections.Concurrent; using System.IO; using System.Security.Cryptography; using System.Text; @@ -15,8 +14,6 @@ namespace JJMasterData.Commons.Security.Cryptography; /// public sealed class AesEncryptionAlgorithm : IEncryptionAlgorithm { - private readonly ConcurrentDictionary _aesCache = new(); - public string EncryptString(string plainText, string secretKey) { using var aes = CreateAes(secretKey); @@ -25,7 +22,7 @@ public string EncryptString(string plainText, string secretKey) using var memoryStream = new MemoryStream(); using var cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write); - using (var streamWriter = new StreamWriter(cryptoStream)) + using (var streamWriter = new StreamWriter(cryptoStream, Encoding.UTF8)) { streamWriter.Write(plainText); } @@ -43,7 +40,7 @@ public string DecryptString(string cipherText, string secretKey) using var memoryStream = new MemoryStream(buffer); using var cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read); - using var streamReader = new StreamReader(cryptoStream); + using var streamReader = new StreamReader(cryptoStream, Encoding.UTF8); return streamReader.ReadToEnd(); } @@ -54,34 +51,15 @@ public string DecryptString(string cipherText, string secretKey) } [MustDisposeResource] - private Aes CreateAes(string secretKey) + private static Aes CreateAes(string secretKey) { - if (_aesCache.TryGetValue(secretKey, out var aesEntry)) - { - return CreateAes(aesEntry.Key, aesEntry.IV); - } - var keyBytes = Encoding.UTF8.GetBytes(secretKey); + var aesKey = SHA256.HashData(keyBytes); + var aesIv = MD5.HashData(keyBytes); - using var sha256 = SHA256.Create(); - var aesKey = sha256.ComputeHash(keyBytes); - - using var md5 = MD5.Create(); - var aesIv = md5.ComputeHash(keyBytes); - - aesEntry = new(aesKey, aesIv); - - _aesCache.TryAdd(secretKey, aesEntry); - - return CreateAes(aesEntry.Key, aesEntry.IV); - } - - [MustDisposeResource] - private static Aes CreateAes(byte[] key, byte[] iv) - { var aes = Aes.Create(); - aes.Key = key; - aes.IV = iv; + aes.Key = aesKey; + aes.IV = aesIv; return aes; } } \ No newline at end of file diff --git a/src/MasterData.Commons/Security/Hashing/Md5HashHelper.cs b/src/MasterData.Commons/Security/Hashing/Md5HashHelper.cs index 71017efee..d0e687585 100644 --- a/src/MasterData.Commons/Security/Hashing/Md5HashHelper.cs +++ b/src/MasterData.Commons/Security/Hashing/Md5HashHelper.cs @@ -8,12 +8,8 @@ public static class Md5HashHelper { public static string ComputeHash(string input) { - byte[] data; - using (var md5Hasher = MD5.Create()) - { - data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input)); - } - + var data = MD5.HashData(Encoding.Default.GetBytes(input)); + var stringBuilder = new StringBuilder(); for (var i = 0; i <= data.Length - 1; i++) { @@ -22,7 +18,7 @@ public static string ComputeHash(string input) return stringBuilder.ToString(); } - + public static bool VerifyHash(string input, string hash) { var hashOfInput = ComputeHash(input); diff --git a/src/MasterData.Commons/Util/DictionaryHash.cs b/src/MasterData.Commons/Util/DictionaryHash.cs index e376786fc..e73a2d7c5 100644 --- a/src/MasterData.Commons/Util/DictionaryHash.cs +++ b/src/MasterData.Commons/Util/DictionaryHash.cs @@ -13,14 +13,8 @@ public static string ComputeHash(Dictionary dict) { var ordered = dict.OrderBy(x => x.Key); var json = JsonSerializer.Serialize(ordered); - - using var sha = SHA256.Create(); - var bytes = sha.ComputeHash(Encoding.UTF8.GetBytes(json)); - - #if NETFRAMEWORK - return BitConverter.ToString(bytes).Replace("-", ""); - #else + var bytes = SHA256.HashData(Encoding.UTF8.GetBytes(json)); + return Convert.ToHexString(bytes); - #endif } -} \ No newline at end of file +} diff --git a/src/MasterData.Commons/Util/FileIO.cs b/src/MasterData.Commons/Util/FileIO.cs index b2f6d44f9..ee799e177 100644 --- a/src/MasterData.Commons/Util/FileIO.cs +++ b/src/MasterData.Commons/Util/FileIO.cs @@ -2,8 +2,6 @@ using System.Data; using System.Globalization; using System.IO; -using JJMasterData.Commons.Configuration.Options; - namespace JJMasterData.Commons.Util; public static class FileIO @@ -50,13 +48,11 @@ public static string ResolveFilePath(string filepath) /// /// Returns the application path. - /// .NET Framework: AppDomain.CurrentDomain.BaseDirectory - /// ..NET 8+: Environment.CurrentDirectory /// /// public static string GetApplicationPath() { - return MasterDataCommonsOptions.IsNetFramework ? AppDomain.CurrentDomain.BaseDirectory : Environment.CurrentDirectory; + return Environment.CurrentDirectory; } /// diff --git a/src/MasterData.Commons/Util/MimeTypeUtil.cs b/src/MasterData.Commons/Util/MimeTypeUtil.cs index 929f617c4..82eeab804 100644 --- a/src/MasterData.Commons/Util/MimeTypeUtil.cs +++ b/src/MasterData.Commons/Util/MimeTypeUtil.cs @@ -2,10 +2,6 @@ using System.Collections.Frozen; using System.Collections.Generic; -#if NET48 -using JJMasterData.Commons.Extensions; -#endif - namespace JJMasterData.Commons.Util; public static class MimeTypeUtil @@ -596,4 +592,4 @@ public static string GetMimeType(string extension) return Mappings.GetValueOrDefault(extension, "application/octet-stream"); } -} \ No newline at end of file +} diff --git a/src/MasterData.Commons/Util/StringManager.cs b/src/MasterData.Commons/Util/StringManager.cs index ff7fa91b7..9223e690b 100644 --- a/src/MasterData.Commons/Util/StringManager.cs +++ b/src/MasterData.Commons/Util/StringManager.cs @@ -462,21 +462,12 @@ private static string Soma1(string baseVal, int size) public static string FirstCharToUpper(this string input) { - //Since .NET Core 3.0 / .NET Standard 2.1 String.Concat() - //supports ReadonlySpan which saves one allocation if we use .AsSpan(1) instead of .Substring(1). -#if NET return input switch { null => throw new ArgumentNullException(nameof(input)), "" => throw new ArgumentException(@$"{nameof(input)} cannot be empty", nameof(input)), _ => string.Concat(input[0].ToString().ToUpper(), input.AsSpan(1)) }; -#else - if (!string.IsNullOrEmpty(input)) - return input[0].ToString().ToUpper() + input[1..].ToLower(); - return input; -#endif - } public static string ToParamCase(string input) diff --git a/src/MasterData.Commons/Validations/Validations.cs b/src/MasterData.Commons/Validations/Validations.cs index ad30cdfd2..5699af66e 100644 --- a/src/MasterData.Commons/Validations/Validations.cs +++ b/src/MasterData.Commons/Validations/Validations.cs @@ -23,7 +23,7 @@ public static bool ValidateCnpj(string cnpj) /// E-Mail public static bool ValidateEmail(string email) { - if (email.Contains("'")) + if (email.Contains('\'')) return false; if (email.Contains('@') && email.Contains('.') && !email.Contains("..")) diff --git a/src/MasterData.Core/Configuration/DataDictionaryServiceExtensions.cs b/src/MasterData.Core/Configuration/DataDictionaryServiceExtensions.cs index 766880d2f..04c4c0736 100644 --- a/src/MasterData.Core/Configuration/DataDictionaryServiceExtensions.cs +++ b/src/MasterData.Core/Configuration/DataDictionaryServiceExtensions.cs @@ -20,6 +20,7 @@ public static IServiceCollection AddDataDictionaryServices(this IServiceCollecti services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); services.AddTransient(); return services; diff --git a/src/MasterData.Core/Configuration/DataManagerServiceExtensions.cs b/src/MasterData.Core/Configuration/DataManagerServiceExtensions.cs index 3afeefef7..417284e28 100644 --- a/src/MasterData.Core/Configuration/DataManagerServiceExtensions.cs +++ b/src/MasterData.Core/Configuration/DataManagerServiceExtensions.cs @@ -1,7 +1,9 @@ using JJMasterData.Core.DataManager; using JJMasterData.Core.DataManager.IO; using JJMasterData.Core.DataManager.Services; +using JJMasterData.Core.DataManager.Services.Abstractions; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; namespace JJMasterData.Core.Configuration; @@ -15,6 +17,8 @@ public static IServiceCollection AddDataManagerServices(this IServiceCollection services.AddScoped(); services.AddScoped(); services.AddScoped(); + services.TryAddEnumerable(ServiceDescriptor.Scoped()); + services.TryAddEnumerable(ServiceDescriptor.Scoped()); services.AddScoped(); services.AddScoped(); services.AddScoped(); @@ -29,4 +33,4 @@ public static IServiceCollection AddDataManagerServices(this IServiceCollection return services; } -} \ No newline at end of file +} diff --git a/src/MasterData.Core/Configuration/HttpServiceExtensions.cs b/src/MasterData.Core/Configuration/HttpServiceExtensions.cs index 036190000..71bac93c9 100644 --- a/src/MasterData.Core/Configuration/HttpServiceExtensions.cs +++ b/src/MasterData.Core/Configuration/HttpServiceExtensions.cs @@ -1,10 +1,7 @@ -using JJMasterData.Core.Http; -using JJMasterData.Core.Http.Abstractions; -using Microsoft.Extensions.DependencyInjection; -#if NET +using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.Infrastructure; using Microsoft.AspNetCore.Mvc.Routing; -#endif +using Microsoft.Extensions.DependencyInjection; namespace JJMasterData.Core.Configuration; @@ -12,16 +9,7 @@ public static class HttpServiceExtensions { public static void AddHttpServices(this IServiceCollection services) { - services.AddScoped(); -#if NET services.AddHttpContextAccessor(); - services.AddScoped(); - - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); #pragma warning disable ASPDEPR006 services.AddSingleton(); @@ -33,19 +21,5 @@ public static void AddHttpServices(this IServiceCollection services) var urlHelperFactory = serviceProvider.GetRequiredService(); return urlHelperFactory.GetUrlHelper(actionContextAccessor.ActionContext!); }); -#endif - - -#if NETFRAMEWORK - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); -#endif - - } -} \ No newline at end of file +} diff --git a/src/MasterData.Core/Configuration/Options/MasterDataCoreOptions.cs b/src/MasterData.Core/Configuration/Options/MasterDataCoreOptions.cs index 44a8b28a3..b1fa49c85 100644 --- a/src/MasterData.Core/Configuration/Options/MasterDataCoreOptions.cs +++ b/src/MasterData.Core/Configuration/Options/MasterDataCoreOptions.cs @@ -33,15 +33,6 @@ public sealed class MasterDataCoreOptions [Display(Name = "Audit Log Table Name")] public string AuditLogTableName { get; set; } = "tb_masterdata_auditlog"; -#if !NET - /// - /// Default value: null - /// - public string? MasterDataUrl { get; set; } - - public bool EnableCultureProviderAtUrl { get; set; } = true; -#endif - [Display(Name = "Enable Data Dictionary Caching")] public bool EnableDataDictionaryCaching { get; set; } = true; @@ -108,4 +99,4 @@ public sealed class MasterDataCoreOptions } } }; -} \ No newline at end of file +} diff --git a/src/MasterData.Core/DataDictionary/Models/FormElement.cs b/src/MasterData.Core/DataDictionary/Models/FormElement.cs index 7543b6a85..f2fee90b5 100644 --- a/src/MasterData.Core/DataDictionary/Models/FormElement.cs +++ b/src/MasterData.Core/DataDictionary/Models/FormElement.cs @@ -69,6 +69,10 @@ public class FormElement : Element [JsonPropertyName("options")] public FormElementOptions Options { get; set; } + [Required] + [JsonPropertyName("rules")] + public List Rules { get; set; } + [Required] [JsonPropertyName("apiOptions")] public FormElementApiOptions ApiOptions { get; set; } @@ -78,6 +82,7 @@ public FormElement() Fields = new FormElementFieldList(base.Fields); Panels = []; Options = new FormElementOptions(); + Rules = []; Relationships = new FormElementRelationshipList(base.Relationships); ApiOptions = new FormElementApiOptions(); } @@ -102,6 +107,7 @@ public FormElement(Element element) Panels = []; ApiOptions = new FormElementApiOptions(); Options = new FormElementOptions(); + Rules = []; } [SetsRequiredMembers] @@ -139,6 +145,7 @@ private FormElement( List? panels, FormElementRelationshipList relationships, FormElementOptions? options, + List? rules, FormElementApiOptions? apiOptions) { base.Fields = new ElementFieldList(fields.Cast().ToList()); @@ -149,6 +156,7 @@ private FormElement( .ToList()!; Relationships = relationships; Options = options ?? new FormElementOptions(); + Rules = rules ?? []; ApiOptions = apiOptions ?? new FormElementApiOptions(); Panels = panels ?? []; } @@ -226,6 +234,7 @@ public FormElement DeepCopy() copy.Fields = Fields.DeepCopy(); copy.Options = Options.DeepCopy(); + copy.Rules = Rules.ConvertAll(v => v.DeepCopy()); copy.Panels = Panels.ConvertAll(p => p.DeepCopy()); copy.Relationships = Relationships.DeepCopy(); copy.Indexes = Indexes.ConvertAll(i => i.DeepCopy()); @@ -233,4 +242,9 @@ public FormElement DeepCopy() return copy; } + + public FormElementRule GetRuleById(int id) + { + return Rules.First(v => v.Id == id); + } } diff --git a/src/MasterData.Core/DataDictionary/Models/FormElementField.cs b/src/MasterData.Core/DataDictionary/Models/FormElementField.cs index 94d11efdf..157bd7e08 100644 --- a/src/MasterData.Core/DataDictionary/Models/FormElementField.cs +++ b/src/MasterData.Core/DataDictionary/Models/FormElementField.cs @@ -122,17 +122,6 @@ public class FormElementField : ElementField [Display(Name = "Enable Exportation")] public bool Export { get; set; } - /// - /// Validates possibly dangerous values in the request for .NET Framework - /// - /// - /// Important for lower versions of .NET Framework to enable the parameter: - /// httpRuntime requestValidationMode="4.5" ... - /// - [JsonPropertyName("validateRequest")] - [Display(Name = "Validate Request")] - public bool ValidateRequest { get; set; } - /// /// Ao alterar o conteúdo recarrega todos os campos do formulário /// (Default=false) @@ -201,7 +190,6 @@ public FormElementField() { Component = FormComponent.Text; Export = true; - ValidateRequest = true; VisibleExpression = "val:1"; EnableExpression = "val:1"; TextCase = TextCase.None; @@ -254,9 +242,8 @@ public FormElementField(ElementField elementField) } Export = true; - ValidateRequest = true; TextCase = TextCase.None; - Actions = new(); + Actions = []; } diff --git a/src/MasterData.Core/DataDictionary/Models/FormElementRule.cs b/src/MasterData.Core/DataDictionary/Models/FormElementRule.cs new file mode 100644 index 000000000..6278f799a --- /dev/null +++ b/src/MasterData.Core/DataDictionary/Models/FormElementRule.cs @@ -0,0 +1,56 @@ +using System.ComponentModel.DataAnnotations; +using System.Text.Json.Serialization; + +namespace JJMasterData.Core.DataDictionary.Models; + +public class FormElementRule +{ + [JsonPropertyName("id")] + public int Id { get; set; } + + [Required] + [Display(Name = "Name")] + [JsonPropertyName("name")] + public string Name { get; set; } = string.Empty; + + [Display(Name = "Run On Before Insert")] + [JsonPropertyName("runOnBeforeInsert")] + public bool RunOnBeforeInsert { get; set; } = true; + + [Display(Name = "Run On Before Update")] + [JsonPropertyName("runOnBeforeUpdate")] + public bool RunOnBeforeUpdate { get; set; } = true; + + [Display(Name = "Run On Before Import")] + [JsonPropertyName("runOnBeforeImport")] + public bool RunOnBeforeImport { get; set; } = true; + + [Display(Name = "Run On Before Delete")] + [JsonPropertyName("runOnBeforeDelete")] + public bool RunOnBeforeDelete { get; set; } + + [Display(Name = "Rule Type")] + [JsonPropertyName("language")] + public RuleLanguage Language { get; set; } = RuleLanguage.Sql; + + [Display(Name = "Script")] + [JsonPropertyName("script")] + public string Script { get; set; } = string.Empty; + + public bool ShouldRun(PageState pageState) + { + return pageState switch + { + PageState.Insert => RunOnBeforeInsert, + PageState.Update => RunOnBeforeUpdate, + PageState.Import => RunOnBeforeImport, + PageState.Delete => RunOnBeforeDelete, + _ => false + }; + } + + public FormElementRule DeepCopy() + { + return (FormElementRule)MemberwiseClone(); + } +} diff --git a/src/MasterData.Core/DataDictionary/Models/RuleLanguage.cs b/src/MasterData.Core/DataDictionary/Models/RuleLanguage.cs new file mode 100644 index 000000000..4098b7065 --- /dev/null +++ b/src/MasterData.Core/DataDictionary/Models/RuleLanguage.cs @@ -0,0 +1,11 @@ +using System.ComponentModel.DataAnnotations; + +namespace JJMasterData.Core.DataDictionary.Models; + +public enum RuleLanguage +{ + [Display(Name = "SQL")] + Sql = 0, + [Display(Name = "JavaScript")] + JavaScript = 1 +} diff --git a/src/MasterData.Core/DataDictionary/Services/DataDictionaryServiceBase.cs b/src/MasterData.Core/DataDictionary/Services/DataDictionaryServiceBase.cs index 6412cc99c..459ca9e10 100644 --- a/src/MasterData.Core/DataDictionary/Services/DataDictionaryServiceBase.cs +++ b/src/MasterData.Core/DataDictionary/Services/DataDictionaryServiceBase.cs @@ -91,6 +91,17 @@ public bool ValidateName(string name) return validationDictionary.IsValid; } + protected bool ValidateScriptName(string name, string fieldName = "Name") + { + if (string.IsNullOrWhiteSpace(name)) + { + AddError(fieldName, StringLocalizer["Required [Name] field"]); + return false; + } + + return true; + } + protected static bool ValidateExpression(string value, IEnumerable args) { return args.Any(value.StartsWith); @@ -120,4 +131,4 @@ public async ValueTask> GetElementsDictionaryAsync() return elementList; } -} \ No newline at end of file +} diff --git a/src/MasterData.Core/DataDictionary/Services/ElementService.cs b/src/MasterData.Core/DataDictionary/Services/ElementService.cs index 3d3e63e37..4ffa09189 100644 --- a/src/MasterData.Core/DataDictionary/Services/ElementService.cs +++ b/src/MasterData.Core/DataDictionary/Services/ElementService.cs @@ -14,7 +14,7 @@ using JJMasterData.Core.DataDictionary.Repository.Abstractions; using JJMasterData.Core.DataDictionary.Structure; using JJMasterData.Core.Html; -using JJMasterData.Core.Http.Abstractions; +using Microsoft.AspNetCore.Http; using JJMasterData.Core.Tasks; using JJMasterData.Core.UI.Components; diff --git a/src/MasterData.Core/DataDictionary/Services/FormElementRulesService.cs b/src/MasterData.Core/DataDictionary/Services/FormElementRulesService.cs new file mode 100644 index 000000000..f8352f48d --- /dev/null +++ b/src/MasterData.Core/DataDictionary/Services/FormElementRulesService.cs @@ -0,0 +1,76 @@ +using System; +using System.Linq; +using System.Threading.Tasks; +using JJMasterData.Core.DataDictionary.Models; +using JJMasterData.Core.DataDictionary.Repository.Abstractions; +using Microsoft.Extensions.Localization; + +namespace JJMasterData.Core.DataDictionary.Services; + +public class FormElementRulesService( + IValidationDictionary validationDictionary, + IDataDictionaryRepository dataDictionaryRepository, + IStringLocalizer stringLocalizer) + : DataDictionaryServiceBase(validationDictionary, dataDictionaryRepository, stringLocalizer) +{ + public async Task SaveAsync(string elementName, FormElementRule rule) + { + var formElement = await DataDictionaryRepository.GetFormElementAsync(elementName); + + if (!Validate(rule, formElement)) + return; + + if (rule.Id == 0) + { + rule.Id = formElement.Rules.Count == 0 + ? 1 + : formElement.Rules.Max(v => v.Id) + 1; + + formElement.Rules.Add(rule); + } + else + { + for (var i = 0; i < formElement.Rules.Count; i++) + { + if (formElement.Rules[i].Id != rule.Id) + continue; + + formElement.Rules[i] = rule; + break; + } + } + + await DataDictionaryRepository.InsertOrReplaceAsync(formElement); + } + + public async Task DeleteAsync(string elementName, int ruleId) + { + var formElement = await DataDictionaryRepository.GetFormElementAsync(elementName); + var rule = formElement.Rules.FirstOrDefault(v => v.Id == ruleId); + if (rule == null) + return; + + formElement.Rules.Remove(rule); + await DataDictionaryRepository.InsertOrReplaceAsync(formElement); + } + + public bool Validate(FormElementRule rule, FormElement formElement) + { + ValidateScriptName(rule.Name); + + if (!rule.RunOnBeforeInsert && !rule.RunOnBeforeUpdate && !rule.RunOnBeforeDelete && !rule.RunOnBeforeImport) + AddError(nameof(rule.RunOnBeforeInsert), StringLocalizer["Select at least one operation."]); + + if (string.IsNullOrWhiteSpace(rule.Script)) + AddError(nameof(rule.Script), StringLocalizer["Required [Script] field"]); + + if (formElement.Rules.Any(v => + v.Id != rule.Id && + v.Name.Equals(rule.Name, StringComparison.OrdinalIgnoreCase))) + { + AddError(nameof(rule.Name), StringLocalizer["There is already a rule with this name."]); + } + + return IsValid; + } +} diff --git a/src/MasterData.Core/DataDictionary/Structure/DataDictionaryFormElementFactory.cs b/src/MasterData.Core/DataDictionary/Structure/DataDictionaryFormElementFactory.cs index bc39c02d3..141d17fca 100644 --- a/src/MasterData.Core/DataDictionary/Structure/DataDictionaryFormElementFactory.cs +++ b/src/MasterData.Core/DataDictionary/Structure/DataDictionaryFormElementFactory.cs @@ -4,7 +4,7 @@ using JJMasterData.Core.Configuration.Options; using JJMasterData.Core.DataDictionary.Models; using JJMasterData.Core.DataDictionary.Models.Actions; -using JJMasterData.Core.Http.Abstractions; +using Microsoft.AspNetCore.Http; using JJMasterData.Core.UI; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Options; diff --git a/src/MasterData.Core/DataManager/Exportation/Abstractions/DataExportationWriterBase.cs b/src/MasterData.Core/DataManager/Exportation/Abstractions/DataExportationWriterBase.cs index 0e18cd870..a6586928e 100644 --- a/src/MasterData.Core/DataManager/Exportation/Abstractions/DataExportationWriterBase.cs +++ b/src/MasterData.Core/DataManager/Exportation/Abstractions/DataExportationWriterBase.cs @@ -162,17 +162,10 @@ private static void CreateFolderPathIfNotExits(string folderPath) public string UserId { get; set; } -#if NETFRAMEWORK - internal HttpContext HttpContext { get; set; } -#endif - #endregion public async Task RunWorkerAsync(CancellationToken token) { -#if NETFRAMEWORK - HttpContext.Current = HttpContext; -#endif if (FormElement == null) throw new ArgumentNullException(nameof(FormElement)); @@ -295,4 +288,4 @@ private string GetFilePath() return $"{fileName}_{DateTime.Now:yyyMMdd_HHmmss}.{extension}"; } -} \ No newline at end of file +} diff --git a/src/MasterData.Core/DataManager/Exportation/Configuration/ExportOptions.cs b/src/MasterData.Core/DataManager/Exportation/Configuration/ExportOptions.cs index 2ca3e1ab6..e8f5e5335 100644 --- a/src/MasterData.Core/DataManager/Exportation/Configuration/ExportOptions.cs +++ b/src/MasterData.Core/DataManager/Exportation/Configuration/ExportOptions.cs @@ -1,5 +1,6 @@ using JJMasterData.Commons.Util; -using JJMasterData.Core.Http.Abstractions; +using JJMasterData.Core.Extensions; +using Microsoft.AspNetCore.Http; namespace JJMasterData.Core.DataManager.Exportation.Configuration; @@ -20,16 +21,21 @@ public class ExportOptions public bool IsLandScape { get; set; } = false; public string Delimiter { get; set; } = ";"; - internal static ExportOptions LoadFromForm(IFormValues formValues, string componentName) + internal static ExportOptions LoadFromForm(IHttpContextAccessor httpContextAccessor, string componentName) { var expConfig = new ExportOptions(); - if (formValues[componentName + FileName] != null) + + if (!httpContextAccessor.HttpContext!.Request.HasFormContentType) + return expConfig; + + var form = httpContextAccessor.HttpContext!.Request.Form; + if (form.TryGetValue(componentName + FileName, out var fileName)) { - expConfig.FileExtension = (ExportFileExtension)int.Parse(formValues[componentName + FileName]); - expConfig.IsLandScape = StringManager.ParseBool(formValues[componentName + TableOrientation]); - expConfig.ExportFirstLine = StringManager.ParseBool(formValues[componentName + ExportTableFirstLine]); - expConfig.ExportAllFields = StringManager.ParseBool(formValues[componentName + ExportAll]); - expConfig.Delimiter = formValues[componentName + ExportDelimiter]; + expConfig.FileExtension = (ExportFileExtension)int.Parse(fileName.ToString()); + expConfig.IsLandScape = StringManager.ParseBool(form[componentName + TableOrientation]); + expConfig.ExportFirstLine = StringManager.ParseBool(form[componentName + ExportTableFirstLine]); + expConfig.ExportAllFields = StringManager.ParseBool(form[componentName + ExportAll]); + expConfig.Delimiter = form[componentName + ExportDelimiter]; } return expConfig; diff --git a/src/MasterData.Core/DataManager/Exportation/DataExportationWriterFactory.cs b/src/MasterData.Core/DataManager/Exportation/DataExportationWriterFactory.cs index c6285cd72..f50cd3e77 100644 --- a/src/MasterData.Core/DataManager/Exportation/DataExportationWriterFactory.cs +++ b/src/MasterData.Core/DataManager/Exportation/DataExportationWriterFactory.cs @@ -87,7 +87,7 @@ private static void ConfigureWriter(JJDataExportation dataExportation, DataExpor writer.Configuration = dataExportation.ExportOptions; writer.UserId = dataExportation.UserId; writer.ProcessOptions = dataExportation.ProcessOptions; - writer.AbsoluteUri = dataExportation.CurrentContext.Request.AbsoluteUri; + writer.AbsoluteUri = dataExportation.CurrentContext.HttpContext!.Request.GetAbsoluteUri(); } diff --git a/src/MasterData.Core/DataManager/Expressions/ExpressionParser.cs b/src/MasterData.Core/DataManager/Expressions/ExpressionParser.cs index 7574a5eee..b852771fa 100644 --- a/src/MasterData.Core/DataManager/Expressions/ExpressionParser.cs +++ b/src/MasterData.Core/DataManager/Expressions/ExpressionParser.cs @@ -8,14 +8,15 @@ using JJMasterData.Commons.Util; using JJMasterData.Core.DataDictionary.Models; using JJMasterData.Core.DataManager.Models; -using JJMasterData.Core.Http.Abstractions; +using JJMasterData.Core.Extensions; +using Microsoft.AspNetCore.Http; using JJMasterData.Core.Logging; using Microsoft.Extensions.Logging; namespace JJMasterData.Core.DataManager.Expressions; public sealed class ExpressionParser( - IHttpContext httpContext, + IHttpContextAccessor httpContext, IMasterDataUser masterDataUser, ILogger logger) { @@ -68,7 +69,7 @@ public sealed class ExpressionParser( case "isdelete": return pageState is PageState.Delete ? 1 : 0; case "fieldname": - return httpContext.Request.QueryString["fieldName"]; + return httpContext.HttpContext?.Request.Query["fieldName"].ToString(); case "userid": return masterDataUser.Id; case "currentculture": @@ -92,9 +93,9 @@ public sealed class ExpressionParser( else parsedValue = objValue; } - else if (httpContext.Session.HasSession() && httpContext.Session.HasKey(field)) + else if (httpContext.HttpContext?.Session.Keys.Contains(field) == true) { - parsedValue = httpContext.Session[field]; + parsedValue = httpContext.HttpContext.Session.GetString(field); } else { @@ -106,6 +107,6 @@ public sealed class ExpressionParser( private string? GetClaimValue(string claimType) { - return httpContext.User?.FindFirst(claimType)?.Value; + return httpContext.HttpContext?.User?.FindFirst(claimType)?.Value; } } diff --git a/src/MasterData.Core/DataManager/IO/FormFileManager.cs b/src/MasterData.Core/DataManager/IO/FormFileManager.cs index a3211bcc6..40801a17b 100644 --- a/src/MasterData.Core/DataManager/IO/FormFileManager.cs +++ b/src/MasterData.Core/DataManager/IO/FormFileManager.cs @@ -5,7 +5,7 @@ using JJMasterData.Commons.Exceptions; using JJMasterData.Commons.Util; using JJMasterData.Core.DataManager.Models; -using JJMasterData.Core.Http.Abstractions; +using Microsoft.AspNetCore.Http; using JJMasterData.Core.UI.Events.Args; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; @@ -13,7 +13,7 @@ namespace JJMasterData.Core.DataManager.IO; public class FormFileManager(string memoryFilesSessionName, - IHttpContext httpContext, + IHttpContextAccessor httpContext, IStringLocalizer stringLocalizer, ILogger logger) { @@ -45,8 +45,8 @@ public class FormFileManager(string memoryFilesSessionName, public List MemoryFiles { - get => httpContext.Session.GetSessionValue>(MemoryFilesSessionName); - set => httpContext.Session.SetSessionValue(MemoryFilesSessionName, value); + get => httpContext.HttpContext!.Session.GetObject>(MemoryFilesSessionName); + set => httpContext.HttpContext!.Session.SetObject(MemoryFilesSessionName, value); } public List GetFiles() diff --git a/src/MasterData.Core/DataManager/IO/FormFileManagerFactory.cs b/src/MasterData.Core/DataManager/IO/FormFileManagerFactory.cs index e578a07a9..63598e230 100644 --- a/src/MasterData.Core/DataManager/IO/FormFileManagerFactory.cs +++ b/src/MasterData.Core/DataManager/IO/FormFileManagerFactory.cs @@ -1,10 +1,10 @@ -using JJMasterData.Core.Http.Abstractions; +using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; namespace JJMasterData.Core.DataManager.IO; -public class FormFileManagerFactory(IHttpContext httpContext, IStringLocalizer stringLocalizer, ILoggerFactory loggerFactory) +public class FormFileManagerFactory(IHttpContextAccessor httpContext, IStringLocalizer stringLocalizer, ILoggerFactory loggerFactory) { public FormFileManager Create(string memoryFilesSessionName) diff --git a/src/MasterData.Core/DataManager/Importation/DataImportationWorker.cs b/src/MasterData.Core/DataManager/Importation/DataImportationWorker.cs index 829b649a5..ce1f558b9 100644 --- a/src/MasterData.Core/DataManager/Importation/DataImportationWorker.cs +++ b/src/MasterData.Core/DataManager/Importation/DataImportationWorker.cs @@ -66,14 +66,8 @@ public class DataImportationWorker( internal FormService FormService { get; } = formService; -#if NETFRAMEWORK - private System.Web.HttpContext HttpContext { get; } = System.Web.HttpContext.Current; -#endif public async Task RunWorkerAsync(CancellationToken token) { -#if NETFRAMEWORK - System.Web.HttpContext.Current = HttpContext; -#endif var currentProcess = new DataImportationReporter(StringLocalizer); try { @@ -308,4 +302,4 @@ private async Task> SaveRowValues(Dictionary coreOptions) : IMasterDataUser { - public string Id { get; set; } = httpContext.User?.GetUserId(coreOptions.Value.UserIdClaimType); + public string Id { get; set; } = httpContext.HttpContext?.User.GetUserId(coreOptions.Value.UserIdClaimType); } \ No newline at end of file diff --git a/src/MasterData.Core/DataManager/Models/DataContext.cs b/src/MasterData.Core/DataManager/Models/DataContext.cs index 6414e38da..6953d643c 100644 --- a/src/MasterData.Core/DataManager/Models/DataContext.cs +++ b/src/MasterData.Core/DataManager/Models/DataContext.cs @@ -1,6 +1,7 @@ #nullable enable -using JJMasterData.Core.Http.Abstractions; +using Microsoft.AspNetCore.Http; +using JJMasterData.Core.Extensions; namespace JJMasterData.Core.DataManager.Models; @@ -18,11 +19,16 @@ public DataContext() { } - public DataContext(IHttpRequest request, DataContextSource source, string? userId) + public DataContext(IHttpContextAccessor request, DataContextSource source, string? userId) + : this(request.HttpContext?.Request, source, userId) + { + } + + public DataContext(HttpRequest? request, DataContextSource source, string? userId) { Source = source; UserId = userId; - IpAddress = request.UserHostAddress; - BrowserInfo = request.UserAgent; + IpAddress = request?.HttpContext.Connection.RemoteIpAddress?.ToString(); + BrowserInfo = request?.Headers.UserAgent.ToString(); } -} \ No newline at end of file +} diff --git a/src/MasterData.Core/DataManager/Services/Abstractions/IRuleExecutor.cs b/src/MasterData.Core/DataManager/Services/Abstractions/IRuleExecutor.cs new file mode 100644 index 000000000..3e76a9792 --- /dev/null +++ b/src/MasterData.Core/DataManager/Services/Abstractions/IRuleExecutor.cs @@ -0,0 +1,16 @@ +#nullable enable +using System.Collections.Generic; +using System.Threading.Tasks; +using JJMasterData.Core.DataDictionary.Models; + +namespace JJMasterData.Core.DataManager.Services.Abstractions; + +public interface IRuleExecutor +{ + RuleLanguage Language { get; } + + Task> ExecuteAsync( + FormElement formElement, + FormElementRule rule, + Dictionary values); +} diff --git a/src/MasterData.Core/DataManager/Services/FieldValidationService.cs b/src/MasterData.Core/DataManager/Services/FieldValidationService.cs index 7d9678961..36886aa36 100644 --- a/src/MasterData.Core/DataManager/Services/FieldValidationService.cs +++ b/src/MasterData.Core/DataManager/Services/FieldValidationService.cs @@ -1,6 +1,9 @@ -using System; +#nullable enable +using System; using System.Collections.Generic; using System.Globalization; +using System.Linq; +using System.Threading.Tasks; using JJConsulting.Html; using JJConsulting.Html.Extensions; using JJMasterData.Commons.Data.Entity.Models; @@ -8,6 +11,7 @@ using JJMasterData.Core.DataDictionary.Models; using JJMasterData.Core.DataManager.Expressions; using JJMasterData.Core.DataManager.Models; +using JJMasterData.Core.DataManager.Services.Abstractions; using Microsoft.Extensions.Localization; @@ -15,11 +19,29 @@ namespace JJMasterData.Core.DataManager.Services; public class FieldValidationService( ExpressionsService expressionsService, + IEnumerable validationScriptExecutors, IStringLocalizer localizer) { + private Dictionary ValidationScriptExecutors { get; } = + validationScriptExecutors.ToDictionary(e => e.Language); + public Dictionary ValidateFields( FormElement formElement, - Dictionary formValues, + Dictionary formValues, + PageState pageState, + bool enableErrorLink) + { + var valueTask = ValidateFieldsAsync(formElement, formValues, pageState, enableErrorLink); + + if (valueTask.IsCompletedSuccessfully) + return valueTask.Result; + + return valueTask.AsTask().GetAwaiter().GetResult(); + } + + public async ValueTask> ValidateFieldsAsync( + FormElement formElement, + Dictionary formValues, PageState pageState, bool enableErrorLink) { @@ -49,20 +71,67 @@ public Dictionary ValidateFields( var error = ValidateField(field, field.Name, value, enableErrorLink); if (!string.IsNullOrEmpty(error)) - errors.Add(field.Name, error); + errors.Add(field.Name, error!); + } + + foreach (var error in await ValidateRulesAsync(formElement, formValues, enableErrorLink, pageState)) + { + errors[error.Key] = error.Value; + } + + return errors; + } + + public async Task> ValidateRulesAsync( + FormElement formElement, + Dictionary values, + bool enableErrorLink, + PageState pageState) + { + var errors = new Dictionary(); + + foreach (var rule in formElement.Rules.Where(r => r.ShouldRun(pageState))) + { + if (!ValidationScriptExecutors.TryGetValue(rule.Language, out var executor)) + { + errors[$"rule:{rule.Name}"] = + $"No script executor registered for language {rule.Language}."; + continue; + } + + var executionErrors = await executor.ExecuteAsync(formElement, rule, values); + foreach (var error in executionErrors) + { + if (formElement.Fields.TryGetField(error.Key, out var field)) + { + var fieldName = field.LabelOrName; + + if (enableErrorLink) + fieldName = GetFieldLinkHtml(field.Name, field.LabelOrName); + + errors[error.Key] = fieldName + " - " + error.Value; + } + else + { + errors[error.Key] = error.Value; + } + } } return errors; } - public string ValidateField(FormElementField field, string fieldId, object value, bool enableErrorLink = true) + public string? ValidateField(FormElementField field, string fieldId, object? value, bool enableErrorLink = true) { if (field == null) throw new ArgumentNullException(nameof(field)); - string fieldName = enableErrorLink ? GetFieldLinkHtml(fieldId, field.LabelOrName) : field.Label; + var fieldName = field.LabelOrName; - string error = null; + if (enableErrorLink) + fieldName = GetFieldLinkHtml(fieldId, field.LabelOrName); + + string? error = null; if (string.IsNullOrEmpty(value?.ToString())) { @@ -75,15 +144,15 @@ public string ValidateField(FormElementField field, string fieldId, object value { error = ValidateDataType(field, value, fieldName); - error ??= ValidateComponent(field, value, fieldName); + error ??= ValidateComponent(field, value!, fieldName); } return error; } - private string ValidateComponent(FormElementField field, object value, string fieldName) + private string? ValidateComponent(FormElementField field, object value, string fieldName) { - var valueString = value.ToString(); + var valueString = value.ToString()!; switch (field.Component) { case FormComponent.Email: @@ -143,32 +212,23 @@ private string ValidateComponent(FormElementField field, object value, string fi case FormComponent.Slider: if (field.Attributes.TryGetValue(FormElementField.MinValueAttribute, out var minValue)) { - if (double.Parse(value?.ToString()) < (double?)minValue) + if (double.Parse(value?.ToString()!) < (double?)minValue) return localizer["{0} field needs to be greater than {1}", fieldName, minValue]; } if (field.Attributes.TryGetValue(FormElementField.MaxValueAttribute, out var maxValue)) { - if (double.Parse(value?.ToString()) > (double?)maxValue) + if (double.Parse(value?.ToString()!) > (double?)maxValue) return localizer["{0} field needs to be less or equal than {1}", fieldName, maxValue]; } - break; - case FormComponent.Text: - case FormComponent.TextArea: - if (field.ValidateRequest && - value.ToString()?.IndexOf(" + +@using (Html.BeginMasterDataForm()) +{ + + + + + + + + + + + + + + @if (ViewBag.Rules.Count == 0) + { + @StringLocalizer["No record found"] + } + @foreach (FormElementRule rule in ViewBag.Rules) + { + + + @rule.Name + + @rule.Language.ToString() + + + } + + + + + + + + + + +} diff --git a/src/MasterData.Web/Areas/DataDictionary/Views/Rules/_Detail.cshtml b/src/MasterData.Web/Areas/DataDictionary/Views/Rules/_Detail.cshtml new file mode 100644 index 000000000..63d047014 --- /dev/null +++ b/src/MasterData.Web/Areas/DataDictionary/Views/Rules/_Detail.cshtml @@ -0,0 +1,120 @@ +@using JJMasterData.Web.TagHelpers +@using JJMasterData.Core.DataDictionary.Models +@model JJMasterData.Core.DataDictionary.Models.FormElementRule +@inject IStringLocalizer StringLocalizer + +@{ + string currentTab = ViewBag.Tab ?? "#div-general"; + + string Active(string tab) + { + return currentTab == tab ? "active show" : string.Empty; + } +} + + + + + + + + @StringLocalizer["General"] + + + @StringLocalizer["Script"] + + + + @Html.HiddenFor(model => model.Id) + + + + + + + + + + + + + + @StringLocalizer["Rule Type"] + + + + + + + + + + + + + + + + + + + + + + @StringLocalizer["Script"] + + + + + + + + + + + + + + + + @if (Model.Id > 0) + { + + } + + + diff --git a/src/MasterData.Web/Areas/DataDictionary/Views/Rules/_ViewStart.cshtml b/src/MasterData.Web/Areas/DataDictionary/Views/Rules/_ViewStart.cshtml new file mode 100644 index 000000000..44f2499cc --- /dev/null +++ b/src/MasterData.Web/Areas/DataDictionary/Views/Rules/_ViewStart.cshtml @@ -0,0 +1,3 @@ +@{ + Layout = "_FormElementMenuLayout"; +} diff --git a/src/MasterData.Web/Areas/DataDictionary/Views/Shared/_FormElementMenuLayout.cshtml b/src/MasterData.Web/Areas/DataDictionary/Views/Shared/_FormElementMenuLayout.cshtml index 0c47edafb..7f9623150 100644 --- a/src/MasterData.Web/Areas/DataDictionary/Views/Shared/_FormElementMenuLayout.cshtml +++ b/src/MasterData.Web/Areas/DataDictionary/Views/Shared/_FormElementMenuLayout.cshtml @@ -61,6 +61,7 @@ NavItem("Indexes", "fa fa-indent", Url.Action("Index", "Indexes", new { elementName })); NavItem("Options", "fa fa-gears", Url.Action("Index", "UIOptions", new { elementName })); NavItem("Actions", "fa-solid fa-bolt", Url.Action("Index", "Actions", new { elementName })); + NavItem("Rules", "fa-solid fa-shield-halved", Url.Action("Index", "Rules", new { elementName })); NavItem("WebApi", "fa-solid fa-globe", Url.Action("Index", "Api", new { elementName })); } diff --git a/src/MasterData.Web/Areas/MasterData/Controllers/InternalRedirectController.cs b/src/MasterData.Web/Areas/MasterData/Controllers/InternalRedirectController.cs index 61d51d63d..2a64f61be 100644 --- a/src/MasterData.Web/Areas/MasterData/Controllers/InternalRedirectController.cs +++ b/src/MasterData.Web/Areas/MasterData/Controllers/InternalRedirectController.cs @@ -7,7 +7,7 @@ using JJMasterData.Core.DataManager.Models; using JJMasterData.Core.DataManager.Services; using JJMasterData.Core.Extensions; -using JJMasterData.Core.Http.Abstractions; +using Microsoft.AspNetCore.Http; using JJMasterData.Core.UI.Components; using JJMasterData.Web.Areas.MasterData.Models; using JJMasterData.Web.Extensions; @@ -19,7 +19,7 @@ public class InternalRedirectController( ExpressionsService expressionsService, IComponentFactory componentFactory, FormService formService, - IHttpRequest request, + IHttpContextAccessor request, IMasterDataUser masterDataUser, IEncryptionService encryptionService) : MasterDataController { diff --git a/src/MasterData.Web/Configuration/Options/MasterDataWebOptions.cs b/src/MasterData.Web/Configuration/Options/MasterDataWebOptions.cs index 71c8d2f6d..b3c794304 100644 --- a/src/MasterData.Web/Configuration/Options/MasterDataWebOptions.cs +++ b/src/MasterData.Web/Configuration/Options/MasterDataWebOptions.cs @@ -31,8 +31,6 @@ public sealed class MasterDataWebOptions [Display(Name = "Custom Bootstrap Path")] public string? CustomBootstrapPath { get; set; } - public bool SupportNetFramework { get; set; } - /// /// Custom scripts to be added at _MasterDataScripts. The paths are relative. /// @@ -45,4 +43,4 @@ public sealed class MasterDataWebOptions /// [BindNever] public List CustomStylesheetsPaths { get; } = []; -} \ No newline at end of file +} diff --git a/src/MasterData.Web/Scripts/CodeEditor.ts b/src/MasterData.Web/Scripts/CodeEditor.ts index 8528595da..25d9c744b 100644 --- a/src/MasterData.Web/Scripts/CodeEditor.ts +++ b/src/MasterData.Web/Scripts/CodeEditor.ts @@ -58,6 +58,10 @@ class CodeEditor { return; } + if (!hints || typeof hints !== "object") { + return; + } + Object.keys(hints).forEach(lang => { //@ts-ignore monaco.languages.registerCompletionItemProvider(lang, { diff --git a/src/MasterData.Web/Views/Shared/_MasterDataCodeEditorScripts.cshtml b/src/MasterData.Web/Views/Shared/_MasterDataCodeEditorScripts.cshtml index c0fe30d64..6874e2269 100644 --- a/src/MasterData.Web/Views/Shared/_MasterDataCodeEditorScripts.cshtml +++ b/src/MasterData.Web/Views/Shared/_MasterDataCodeEditorScripts.cshtml @@ -1,12 +1,12 @@ @{ Dictionary>? codeEditorHints = null; - if (ViewData.TryGetValue("CodeEditorHints", out var hintsObj) && hintsObj is List hintsList) + if (ViewData.TryGetValue("CodeEditorHints", out var hintsObj) && hintsObj is IEnumerable hintsEnumerable) { - codeEditorHints = hintsList + codeEditorHints = hintsEnumerable .GroupBy(h => h.Language) .ToDictionary(g => g.Key, g => g.ToList()); } } @Json.Serialize(codeEditorHints) - \ No newline at end of file + diff --git a/src/MasterData.Web/wwwroot/js/jjmasterdata/jjmasterdata.js b/src/MasterData.Web/wwwroot/js/jjmasterdata/jjmasterdata.js index 4c3862c14..480bc4146 100644 --- a/src/MasterData.Web/wwwroot/js/jjmasterdata/jjmasterdata.js +++ b/src/MasterData.Web/wwwroot/js/jjmasterdata/jjmasterdata.js @@ -402,6 +402,9 @@ class CodeEditor { catch (_a) { return; } + if (!hints || typeof hints !== "object") { + return; + } Object.keys(hints).forEach(lang => { monaco.languages.registerCompletionItemProvider(lang, { provideCompletionItems: function (model, position) { @@ -2501,6 +2504,11 @@ class PhoneInputListener { $(input).on('input', function () { syncHiddenInput(this, select); }); + input.addEventListener('paste', () => { + setTimeout(() => { + syncHiddenInput(input, select); + }, 0); + }); }); } } diff --git a/src/MasterData.Web/wwwroot/js/jjmasterdata/jjmasterdata.js.map b/src/MasterData.Web/wwwroot/js/jjmasterdata/jjmasterdata.js.map index f7c734467..fcdbf9c50 100644 --- a/src/MasterData.Web/wwwroot/js/jjmasterdata/jjmasterdata.js.map +++ b/src/MasterData.Web/wwwroot/js/jjmasterdata/jjmasterdata.js.map @@ -1 +1 @@ -{"version":3,"file":"jjmasterdata.js","sourceRoot":"/Scripts/","sources":["ActionHelper.ts","AuditLogViewHelper.ts","CalendarListener.ts","CheckboxHelper.ts","CodeEditor.ts","CollapsePanelListener.ts","DataDictionaryUtils.ts","DataExportationHelper.ts","DataImportationHelper.ts","DataImportationModal.ts","DataPanelHelper.ts","DecimalPlaces.ts","FeedbackIcon.ts","FormViewHelper.ts","GlobalVariables.ts","GridViewFilterHelper.ts","GridViewHelper.ts","GridViewSelectionHelper.ts","HTMLHelper.ts","Index.ts","JQueryPlugins.ts","LegacySearchBoxListener.ts","ListenAllEvents.ts","Localization.ts","LookupHelper.ts","LookupListener.ts","MasterDataForm.ts","MessageBox.ts","MessageToast.ts","Modal.ts","OffcanvasHelper.ts","PageState.ts","PhoneInputListener.ts","PopoverHelper.ts","PostFormValues.ts","SearchBoxListener.ts","SliderListener.ts","SortableListener.ts","SpinnerOverlay.ts","TabNavListener.ts","TextAreaListener.ts","TextFileHelper.ts","TooltipHelper.ts","UploadAreaListener.ts","UploadAreaOptions.ts","UploadViewHelper.ts","UrlBuilder.ts","UrlRedirectModel.ts","Utils.ts","WindowPlugins.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"jjmasterdata.js","sourceRoot":"/Scripts/","sources":["ActionHelper.ts","AuditLogViewHelper.ts","CalendarListener.ts","CheckboxHelper.ts","CodeEditor.ts","CollapsePanelListener.ts","DataDictionaryUtils.ts","DataExportationHelper.ts","DataImportationHelper.ts","DataImportationModal.ts","DataPanelHelper.ts","DecimalPlaces.ts","FeedbackIcon.ts","FormViewHelper.ts","GlobalVariables.ts","GridViewFilterHelper.ts","GridViewHelper.ts","GridViewSelectionHelper.ts","HTMLHelper.ts","Index.ts","JQueryPlugins.ts","LegacySearchBoxListener.ts","ListenAllEvents.ts","Localization.ts","LookupHelper.ts","LookupListener.ts","MasterDataForm.ts","MessageBox.ts","MessageToast.ts","Modal.ts","OffcanvasHelper.ts","PageState.ts","PhoneInputListener.ts","PopoverHelper.ts","PostFormValues.ts","SearchBoxListener.ts","SliderListener.ts","SortableListener.ts","SpinnerOverlay.ts","TabNavListener.ts","TextAreaListener.ts","TextFileHelper.ts","TooltipHelper.ts","UploadAreaListener.ts","UploadAreaOptions.ts","UploadViewHelper.ts","UrlBuilder.ts","UrlRedirectModel.ts","Utils.ts","WindowPlugins.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/MasterData.WebApi/Services/DictionariesService.cs b/src/MasterData.WebApi/Services/DictionariesService.cs index d8452d822..7aa17f802 100644 --- a/src/MasterData.WebApi/Services/DictionariesService.cs +++ b/src/MasterData.WebApi/Services/DictionariesService.cs @@ -8,7 +8,7 @@ using JJMasterData.Core.DataDictionary.Models; using JJMasterData.Core.DataDictionary.Repository.Abstractions; using JJMasterData.Core.DataManager; -using JJMasterData.Core.Http.Abstractions; +using Microsoft.AspNetCore.Http; using JJMasterData.WebApi.Models; using Microsoft.Extensions.Localization; diff --git a/src/MasterData.WebApi/Services/MasterApiService.cs b/src/MasterData.WebApi/Services/MasterApiService.cs index afa42aff3..30f92f233 100644 --- a/src/MasterData.WebApi/Services/MasterApiService.cs +++ b/src/MasterData.WebApi/Services/MasterApiService.cs @@ -10,7 +10,7 @@ using JJMasterData.Core.DataManager.Expressions; using JJMasterData.Core.DataManager.Models; using JJMasterData.Core.DataManager.Services; -using JJMasterData.Core.Http.Abstractions; +using Microsoft.AspNetCore.Http; using JJMasterData.WebApi.Models; using Microsoft.Extensions.Localization; @@ -18,7 +18,6 @@ namespace JJMasterData.WebApi.Services; public class MasterApiService(ExpressionsService expressionsService, IHttpContextAccessor httpContextAccessor, - IHttpContext httpContext, IMasterDataUser masterDataUser, DataItemService dataItemService, FieldValuesService fieldValuesService, @@ -442,7 +441,7 @@ private Dictionary GetDefaultFilter(FormElement formElement, boo private DataContext GetDataContext() { var userId = masterDataUser.Id; - return new DataContext(httpContext.Request, DataContextSource.Api, userId); + return new DataContext(httpContextAccessor.HttpContext!.Request, DataContextSource.Api, userId); } private ValueTask GetDataDictionary(string elementName) @@ -516,4 +515,4 @@ private ResponseLetter CreateErrorResponseLetter(Dictionary? err return letter; } -} \ No newline at end of file +} diff --git a/src/Plugins/Directory.Build.props b/src/Plugins/Directory.Build.props index 81fdde1a9..146e99003 100644 --- a/src/Plugins/Directory.Build.props +++ b/src/Plugins/Directory.Build.props @@ -1,4 +1,6 @@ + + True @@ -10,4 +12,3 @@ - diff --git a/src/Plugins/MasterData.Brasil/MasterData.Brasil.csproj b/src/Plugins/MasterData.Brasil/MasterData.Brasil.csproj index 6411c1861..f972a7088 100644 --- a/src/Plugins/MasterData.Brasil/MasterData.Brasil.csproj +++ b/src/Plugins/MasterData.Brasil/MasterData.Brasil.csproj @@ -1,23 +1,13 @@ - net4.8;net10.0 + net10.0 12 enable JJMasterData.Brasil JJMasterData.Brasil - 1.0.0 - $(Version) - $(Version) - $(Version) - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - diff --git a/src/Plugins/MasterData.Hangfire/MasterData.Hangfire.csproj b/src/Plugins/MasterData.Hangfire/MasterData.Hangfire.csproj index b3e5891e0..96b5f6123 100644 --- a/src/Plugins/MasterData.Hangfire/MasterData.Hangfire.csproj +++ b/src/Plugins/MasterData.Hangfire/MasterData.Hangfire.csproj @@ -1,13 +1,9 @@ - net4.8;net10.0 + net10.0 JJMasterData Hangfire support to background tasks, like exportation and importation. https://www.github.com/jjconsulting/jjmasterdata - 2.0.6 - 2.0.6 - 2.0.6 - 2.0.6 hangfire,jjmasterdata JJMasterData.Hangfire JJMasterData.Hangfire diff --git a/src/Plugins/MasterData.MongoDB/MasterData.MongoDB.csproj b/src/Plugins/MasterData.MongoDB/MasterData.MongoDB.csproj index 31eb56a58..0291a3699 100644 --- a/src/Plugins/MasterData.MongoDB/MasterData.MongoDB.csproj +++ b/src/Plugins/MasterData.MongoDB/MasterData.MongoDB.csproj @@ -12,10 +12,6 @@ JJMasterData.MongoDB JJMasterData.png JJMasterData.MongoDB - 2.0.2 - 2.0.2 - 2.0.2 - 2.0.2 diff --git a/src/Plugins/MasterData.Pdf/MasterData.Pdf.csproj b/src/Plugins/MasterData.Pdf/MasterData.Pdf.csproj index 5d0fcbd53..6d53b0d0f 100644 --- a/src/Plugins/MasterData.Pdf/MasterData.Pdf.csproj +++ b/src/Plugins/MasterData.Pdf/MasterData.Pdf.csproj @@ -1,16 +1,12 @@ - net4.8;net10.0 + net10.0 12 JJMasterData Pdf generation support. https://www.github.com/jjconsulting/jjmasterdata JJMasterData.png pdf,jjmasterdata - 2.0.6 - 2.0.6 - 2.0.6 - 2.0.6 © 2023 JJConsulting. All rights reserved. JJMasterData.Pdf JJMasterData.Pdf diff --git a/src/Plugins/MasterData.Python/MasterData.Python.csproj b/src/Plugins/MasterData.Python/MasterData.Python.csproj index f5e907296..01823c7a4 100644 --- a/src/Plugins/MasterData.Python/MasterData.Python.csproj +++ b/src/Plugins/MasterData.Python/MasterData.Python.csproj @@ -1,7 +1,7 @@ - net4.8;net10.0 + net10.0 JJMasterData IronPython support for Actions and FormEvents. https://www.github.com/jjconsulting/jjmasterdata https://www.github.com/jjconsulting/jjmasterdata diff --git a/test/MasterData.Core.Test/Configuration/ServiceCollectionExtensionsTests.cs b/test/MasterData.Core.Test/Configuration/ServiceCollectionExtensionsTests.cs new file mode 100644 index 000000000..3e12a4259 --- /dev/null +++ b/test/MasterData.Core.Test/Configuration/ServiceCollectionExtensionsTests.cs @@ -0,0 +1,29 @@ +using System.Linq; +using JJMasterData.Core.Configuration; +using JJMasterData.Core.DataManager.Services; +using JJMasterData.Core.DataManager.Services.Abstractions; +using Microsoft.Extensions.DependencyInjection; +using Xunit; + +namespace JJMasterData.Core.Test.Configuration; + +public class ServiceCollectionExtensionsTests +{ + [Fact] + public void AddJJMasterDataCore_WhenCalledMoreThanOnce_DoesNotDuplicateRuleExecutors() + { + var services = new ServiceCollection(); + + services.AddJJMasterDataCore(); + services.AddJJMasterDataCore(); + + var ruleExecutors = services + .Where(service => service.ServiceType == typeof(IRuleExecutor)) + .Select(service => service.ImplementationType) + .ToArray(); + + Assert.Equal(2, ruleExecutors.Length); + Assert.Contains(typeof(SqlRuleExecutor), ruleExecutors); + Assert.Contains(typeof(JavaScriptRuleScriptExecutor), ruleExecutors); + } +} diff --git a/test/MasterData.Core.Test/DataDictionary/FormElementTest.cs b/test/MasterData.Core.Test/DataDictionary/FormElementTest.cs index 2bd98e8e9..f48992d7d 100644 --- a/test/MasterData.Core.Test/DataDictionary/FormElementTest.cs +++ b/test/MasterData.Core.Test/DataDictionary/FormElementTest.cs @@ -49,7 +49,6 @@ public void DeepCopyTest() AutoPostBack = true, DataBehavior = FieldBehavior.Real, IsPk = true, - ValidateRequest = true, DataItem = new FormElementDataItem { Command = new DataAccessCommand @@ -191,6 +190,17 @@ public void DeepCopyTest() IsVerticalLayout = true } }, + Rules = + [ + new FormElementRule + { + Id = 1, + Name = "BeforeInsert", + RunOnBeforeImport = true, + Language = RuleLanguage.Sql, + Script = "return 'error'" + } + ], Indexes = [ new() @@ -245,4 +255,16 @@ public void DeepCopyTest() Assert.Equal(oldJson, newJson); } -} \ No newline at end of file + + [Fact] + public void ShouldRun_ReturnsTrueForImport_WhenRuleRunsOnBeforeImport() + { + var rule = new FormElementRule + { + RunOnBeforeImport = true + }; + + Assert.True(rule.ShouldRun(PageState.Import)); + Assert.False(rule.ShouldRun(PageState.Insert)); + } +} diff --git a/test/MasterData.Core.Test/DataManager/Expressions/ExpressionParserTests.cs b/test/MasterData.Core.Test/DataManager/Expressions/ExpressionParserTests.cs index c05e681cc..b56698020 100644 --- a/test/MasterData.Core.Test/DataManager/Expressions/ExpressionParserTests.cs +++ b/test/MasterData.Core.Test/DataManager/Expressions/ExpressionParserTests.cs @@ -2,7 +2,7 @@ using JJMasterData.Core.DataManager; using JJMasterData.Core.DataManager.Expressions; using JJMasterData.Core.DataManager.Models; -using JJMasterData.Core.Http.Abstractions; +using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; using Moq; @@ -58,9 +58,9 @@ public void ParseExpression_WithUnknownField_ShouldReturnEmptyValue() // Add more test cases to cover other scenarios // ... - private static IHttpContext MockHttpContext() + private static IHttpContextAccessor MockHttpContext() { - var mockHttpContext = new Mock(); + var mockHttpContext = new Mock(); return mockHttpContext.Object; } diff --git a/test/MasterData.Core.Test/DataManager/Expressions/ExpressionsServiceTests.cs b/test/MasterData.Core.Test/DataManager/Expressions/ExpressionsServiceTests.cs index 2625e06c0..95286b8a6 100644 --- a/test/MasterData.Core.Test/DataManager/Expressions/ExpressionsServiceTests.cs +++ b/test/MasterData.Core.Test/DataManager/Expressions/ExpressionsServiceTests.cs @@ -4,7 +4,7 @@ using JJMasterData.Core.DataManager.Expressions; using JJMasterData.Core.DataManager.Expressions.Abstractions; using JJMasterData.Core.DataManager.Models; -using JJMasterData.Core.Http.Abstractions; +using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; using Moq; @@ -18,9 +18,9 @@ public class ExpressionsServiceTests private readonly Mock _expressionBooleanProviderMock = new(); private readonly Mock _encryptionServiceMock = new(); - private static IHttpContext MockHttpContext() + private static IHttpContextAccessor MockHttpContext() { - var mockHttpContext = new Mock(); + var mockHttpContext = new Mock(); return mockHttpContext.Object; } diff --git a/test/MasterData.Core.Test/DataManager/Services/FieldValidationServiceTests.cs b/test/MasterData.Core.Test/DataManager/Services/FieldValidationServiceTests.cs index 3d6ce5c0e..24d83f22f 100644 --- a/test/MasterData.Core.Test/DataManager/Services/FieldValidationServiceTests.cs +++ b/test/MasterData.Core.Test/DataManager/Services/FieldValidationServiceTests.cs @@ -3,10 +3,14 @@ using JJMasterData.Core.DataManager.Expressions; using JJMasterData.Core.DataManager.Models; using JJMasterData.Core.DataManager.Services; +using JJMasterData.Core.DataManager.Services.Abstractions; namespace JJMasterData.Core.Test.DataManager.Services; +using System; using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; using Microsoft.Extensions.Localization; using Moq; using Xunit; @@ -14,19 +18,19 @@ namespace JJMasterData.Core.Test.DataManager.Services; public class FieldValidationServiceTests { [Fact] - public void ValidateFields_NullFormValues_ThrowsArgumentNullException() + public async Task ValidateFields_NullFormValues_ThrowsArgumentNullException() { // Arrange var expressionsServiceMock = new Mock(); var localizerMock = new Mock>(); - var service = new FieldValidationService(expressionsServiceMock.Object, localizerMock.Object); + var service = new FieldValidationService(expressionsServiceMock.Object, Enumerable.Empty(), localizerMock.Object); // Act and Assert - Assert.Throws(() => service.ValidateFields(null, new Dictionary(), new PageState(), true)); + await Assert.ThrowsAsync(() => service.ValidateFieldsAsync(null!, new Dictionary(), new PageState(), true).AsTask()); } [Fact] - public void ValidateFields_InvalidField_ReturnsError() + public async Task ValidateFields_InvalidField_ReturnsError() { // Arrange var expressionsServiceMock = new Mock(); @@ -34,18 +38,18 @@ public void ValidateFields_InvalidField_ReturnsError() .Returns(false); var localizerMock = new Mock>(); - var service = new FieldValidationService(expressionsServiceMock.Object, localizerMock.Object); + var service = new FieldValidationService(expressionsServiceMock.Object, Enumerable.Empty(), localizerMock.Object); var formElement = new FormElement { Name = "name", TableName = "tableName" }; - var formValues = new Dictionary(); + var formValues = new Dictionary(); const PageState pageState = new(); // Act - var result = service.ValidateFields(formElement, formValues, pageState, true); + var result = await service.ValidateFieldsAsync(formElement, formValues, pageState, true); // Assert Assert.Empty(result); @@ -60,7 +64,7 @@ public void ValidateField_RequiredFieldEmpty_ReturnsError() var localizerMock = new Mock>(); localizerMock.Setup(l => l["{0} field is required", It.IsAny()]).Returns(new LocalizedString("Field is required","Field is required")); - var service = new FieldValidationService(expressionsServiceMock.Object, localizerMock.Object); + var service = new FieldValidationService(expressionsServiceMock.Object, Enumerable.Empty(), localizerMock.Object); var field = new FormElementField { IsRequired = true, Label = "Field" }; const string fieldId = "fieldId"; @@ -72,4 +76,50 @@ public void ValidateField_RequiredFieldEmpty_ReturnsError() // Assert Assert.Equal("Field is required", result); } + + [Fact] + public async Task ValidateFieldsAsync_ImportPageState_ExecutesRulesConfiguredForBeforeImport() + { + var expressionsServiceMock = new Mock(); + var localizerMock = new Mock>(); + var executor = new ImportRuleExecutor(); + var service = new FieldValidationService(expressionsServiceMock.Object, [executor], localizerMock.Object); + + var formElement = new FormElement + { + Name = "name", + TableName = "tableName", + Rules = + [ + new FormElementRule + { + Name = "ImportRule", + Language = RuleLanguage.Sql, + RunOnBeforeImport = true, + Script = "select 'error'" + } + ] + }; + + var result = await service.ValidateFieldsAsync(formElement, new Dictionary(), PageState.Import, false); + + Assert.Single(result); + Assert.Equal("Import validation error", result["rule:import"]); + } + + private sealed class ImportRuleExecutor : IRuleExecutor + { + public RuleLanguage Language => RuleLanguage.Sql; + + public Task> ExecuteAsync( + FormElement formElement, + FormElementRule rule, + Dictionary values) + { + return Task.FromResult(new Dictionary + { + ["rule:import"] = "Import validation error" + }); + } + } } diff --git a/test/MasterData.Core.Test/DataManager/Services/FormServiceTests.cs b/test/MasterData.Core.Test/DataManager/Services/FormServiceTests.cs index cf9725621..052ed525d 100644 --- a/test/MasterData.Core.Test/DataManager/Services/FormServiceTests.cs +++ b/test/MasterData.Core.Test/DataManager/Services/FormServiceTests.cs @@ -6,52 +6,44 @@ using JJMasterData.Core.DataManager.Services; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; +using Moq; namespace JJMasterData.Core.Test.DataManager.Services; -using System.Collections.Generic; -using System.Threading.Tasks; -using Moq; -using Xunit; - public class FormServiceTests { [Fact] public async Task UpdateAsync_WithValidData_ReturnsFormLetterWithNoErrors() { - // Arrange var formElement = new FormElement { Name = "name", TableName = "name" }; var values = new Dictionary(); - var formService = GetFormService(formElement,values); - - - var dataContext = new DataContext(); + var formService = GetFormService(formElement, values); - // Mock the FieldValidationService to return no errors + var result = await formService.UpdateAsync(formElement, values, new DataContext()); - - // Act - var result = await formService.UpdateAsync(formElement, values, dataContext); - - // Assert Assert.NotNull(result); Assert.Empty(result.Errors); } - private static FormService GetFormService(FormElement formElement, Dictionary values) + private static FormService GetFormService(FormElement formElement, Dictionary values) { var entityRepositoryMock = new Mock(); var formFileServiceMock = new Mock(); - var fieldValidationServiceMock = new Mock(); + var fieldValidationServiceMock = new Mock( + Mock.Of(), + Enumerable.Empty(), + Mock.Of>()); var stringLocalizerMock = new Mock>(); var auditLogServiceMock = new Mock(); var loggerMock = new Mock>(); - fieldValidationServiceMock.Setup(fvs => fvs.ValidateFields(formElement, values, PageState.Update, false)) - .Returns(new Dictionary()); + + fieldValidationServiceMock + .Setup(fvs => fvs.ValidateFieldsAsync(formElement, values!, It.IsAny(), false)) + .ReturnsAsync(new Dictionary()); return new FormService( entityRepositoryMock.Object, @@ -65,20 +57,16 @@ private static FormService GetFormService(FormElement formElement, Dictionary(); - var formService = GetFormService(formElement,values); - var dataContext = new DataContext(); - - // Act - var result = await formService.UpdateAsync(formElement, values, dataContext); + var formService = GetFormService(formElement, values); + + var result = await formService.UpdateAsync(formElement, values, new DataContext()); - // Assert Assert.NotNull(result); Assert.NotEmpty(result.Errors); } @@ -86,20 +74,16 @@ public async Task UpdateAsync_WithValidationErrors_ReturnsFormLetterWithErrors() [Fact] public async Task InsertAsync_WithValidData_ReturnsFormLetterWithNoErrors() { - // Arrange var formElement = new FormElement { Name = "name", TableName = "tableName" }; var values = new Dictionary(); - var formService = GetFormService(formElement,values); - var dataContext = new DataContext(); + var formService = GetFormService(formElement, values); - // Act - var result = await formService.InsertAsync(formElement, values, dataContext); + var result = await formService.InsertAsync(formElement, values, new DataContext()); - // Assert Assert.NotNull(result); Assert.Empty(result.Errors); } @@ -107,20 +91,16 @@ public async Task InsertAsync_WithValidData_ReturnsFormLetterWithNoErrors() [Fact] public async Task InsertAsync_WithValidationErrors_ReturnsFormLetterWithErrors() { - // Arrange var formElement = new FormElement { Name = "name", TableName = "tableName" }; var values = new Dictionary(); - var formService = GetFormService(formElement,values); - var dataContext = new DataContext(); - - // Act - var result = await formService.InsertAsync(formElement, values, dataContext); + var formService = GetFormService(formElement, values); + + var result = await formService.InsertAsync(formElement, values, new DataContext()); - // Assert Assert.NotNull(result); Assert.NotEmpty(result.Errors); } @@ -128,20 +108,16 @@ public async Task InsertAsync_WithValidationErrors_ReturnsFormLetterWithErrors() [Fact] public async Task InsertOrReplaceAsync_WithValidData_ReturnsFormLetterWithNoErrors() { - // Arrange var formElement = new FormElement { Name = "name", TableName = "tableName" }; var values = new Dictionary(); - var formService = GetFormService(formElement,values); - var dataContext = new DataContext(); + var formService = GetFormService(formElement, values); - // Act - var result = await formService.InsertOrReplaceAsync(formElement, values, dataContext); + var result = await formService.InsertOrReplaceAsync(formElement, values, new DataContext()); - // Assert Assert.NotNull(result); Assert.Empty(result.Errors); } @@ -149,20 +125,16 @@ public async Task InsertOrReplaceAsync_WithValidData_ReturnsFormLetterWithNoErro [Fact] public async Task InsertOrReplaceAsync_WithValidationErrors_ReturnsFormLetterWithErrors() { - // Arrange var formElement = new FormElement { Name = "name", TableName = "tableName" }; var values = new Dictionary(); - var formService = GetFormService(formElement,values); - var dataContext = new DataContext(); + var formService = GetFormService(formElement, values); - // Act - var result = await formService.InsertOrReplaceAsync(formElement, values, dataContext); + var result = await formService.InsertOrReplaceAsync(formElement, values, new DataContext()); - // Assert Assert.NotNull(result); Assert.NotEmpty(result.Errors); } @@ -170,10 +142,12 @@ public async Task InsertOrReplaceAsync_WithValidationErrors_ReturnsFormLetterWit [Fact] public async Task DeleteAsync_WithValidData_ReturnsFormLetterWithNoErrors() { - // Arrange var entityRepositoryMock = new Mock(); var formFileServiceMock = new Mock(); - var fieldValidationServiceMock = new Mock(); + var fieldValidationServiceMock = new Mock( + Mock.Of(), + Enumerable.Empty(), + Mock.Of>()); var auditLogServiceMock = new Mock(); var stringLocalizerMock = new Mock>(); var loggerMock = new Mock>(); @@ -191,19 +165,15 @@ public async Task DeleteAsync_WithValidData_ReturnsFormLetterWithNoErrors() TableName = "tableName" }; var primaryKeys = new Dictionary(); - var dataContext = new DataContext(); - // Mock the FieldValidationService to return no errors - fieldValidationServiceMock.Setup(fvs => fvs.ValidateFields(formElement, primaryKeys, PageState.Delete, false)) - .Returns(new Dictionary()); + fieldValidationServiceMock + .Setup(fvs => fvs.ValidateFieldsAsync(formElement, primaryKeys!, PageState.Delete, false)) + .ReturnsAsync(new Dictionary()); - // Mock EntityRepository to return a positive number of rows affected entityRepositoryMock.Setup(er => er.DeleteAsync(formElement, primaryKeys)).ReturnsAsync(1); - // Act - var result = await formService.DeleteAsync(formElement, primaryKeys, dataContext); + var result = await formService.DeleteAsync(formElement, primaryKeys, new DataContext()); - // Assert Assert.NotNull(result); Assert.Empty(result.Errors); Assert.Equal(1, result.NumberOfRowsAffected); @@ -212,11 +182,13 @@ public async Task DeleteAsync_WithValidData_ReturnsFormLetterWithNoErrors() [Fact] public async Task DeleteAsync_WithValidationErrors_ReturnsFormLetterWithErrors() { - // Arrange var entityRepositoryMock = new Mock(); var stringLocalizerMock = new Mock>(); var formFileServiceMock = new Mock(); - var fieldValidationServiceMock = new Mock(); + var fieldValidationServiceMock = new Mock( + Mock.Of(), + Enumerable.Empty(), + Mock.Of>()); var auditLogServiceMock = new Mock(); var loggerMock = new Mock>(); var formService = new FormService( @@ -232,19 +204,54 @@ public async Task DeleteAsync_WithValidationErrors_ReturnsFormLetterWithErrors() Name = "name", TableName = "name" }; - var primaryKeys = new Dictionary(); - var dataContext = new DataContext(); + var primaryKeys = new Dictionary(); - // Mock the FieldValidationService to return validation errors - fieldValidationServiceMock.Setup(fvs => fvs.ValidateFields(formElement, primaryKeys, PageState.Delete, false)) - .Returns(new Dictionary { { "Field1", "Validation Error" } }); + fieldValidationServiceMock + .Setup(fvs => fvs.ValidateFieldsAsync(formElement, primaryKeys, PageState.Delete, false)) + .ReturnsAsync(new Dictionary { { "Field1", "Validation Error" } }); - // Act - var result = await formService.DeleteAsync(formElement, primaryKeys, dataContext); + var result = await formService.DeleteAsync(formElement, primaryKeys, new DataContext()); - // Assert Assert.NotNull(result); Assert.NotEmpty(result.Errors); Assert.Equal(0, result.NumberOfRowsAffected); } -} \ No newline at end of file + + [Fact] + public async Task InsertAsync_WithScriptValidationErrors_ReturnsFormLetterWithErrors() + { + var formElement = new FormElement + { + Name = "name", + TableName = "tableName" + }; + var values = new Dictionary(); + + var entityRepositoryMock = new Mock(); + var formFileServiceMock = new Mock(); + var fieldValidationServiceMock = new Mock( + Mock.Of(), + Enumerable.Empty(), + Mock.Of>()); + var auditLogServiceMock = new Mock(); + var stringLocalizerMock = new Mock>(); + var loggerMock = new Mock>(); + + fieldValidationServiceMock + .Setup(fvs => fvs.ValidateFieldsAsync(formElement, values, PageState.Insert, false)) + .ReturnsAsync(new Dictionary { { "validation:test", "Script error" } }); + + var formService = new FormService( + entityRepositoryMock.Object, + formFileServiceMock.Object, + fieldValidationServiceMock.Object, + auditLogServiceMock.Object, + stringLocalizerMock.Object, + loggerMock.Object); + + var result = await formService.InsertAsync(formElement, values, new DataContext()); + + Assert.Single(result.Errors); + entityRepositoryMock.Verify(r => r.InsertAsync(It.IsAny(), It.IsAny>()), Times.Never); + } +} diff --git a/test/MasterData.Core.Test/UI/Components/JJTextBoxTests.cs b/test/MasterData.Core.Test/UI/Components/JJTextBoxTests.cs index 014a5c906..02f484b7c 100644 --- a/test/MasterData.Core.Test/UI/Components/JJTextBoxTests.cs +++ b/test/MasterData.Core.Test/UI/Components/JJTextBoxTests.cs @@ -1,5 +1,5 @@ using System.Text; -using JJMasterData.Core.Http.Abstractions; +using Microsoft.AspNetCore.Http; using JJMasterData.Core.UI.Components; using Moq; @@ -49,7 +49,7 @@ public void RenderTestAttrs() private static JJTextBox GetTextBox() { - return new JJTextBox(new Mock().Object) + return new JJTextBox(new Mock().Object) { Name = "id1", Tooltip = "teste",