Workflow için IsFilterUserName özelliği eklendi.
This commit is contained in:
parent
1d15c44a3d
commit
d0cccde53f
12 changed files with 518 additions and 9 deletions
|
|
@ -5,6 +5,7 @@ namespace Sozsoft.Platform.ListForms;
|
||||||
public class WorkflowDto
|
public class WorkflowDto
|
||||||
{
|
{
|
||||||
public string ApprovalUserFieldName { get; set; }
|
public string ApprovalUserFieldName { get; set; }
|
||||||
|
public bool IsFilterUserName { get; set; }
|
||||||
public string ApprovalDateFieldName { get; set; }
|
public string ApprovalDateFieldName { get; set; }
|
||||||
public string ApprovalStatusFieldName { get; set; }
|
public string ApprovalStatusFieldName { get; set; }
|
||||||
public string ApprovalDescriptionFieldName { get; set; }
|
public string ApprovalDescriptionFieldName { get; set; }
|
||||||
|
|
|
||||||
|
|
@ -16772,6 +16772,18 @@
|
||||||
"en": "Rejecter",
|
"en": "Rejecter",
|
||||||
"tr": "Reddet"
|
"tr": "Reddet"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "App.Listform.ListformField.ApprovalComment",
|
||||||
|
"en": "Approval or Rejection Comment",
|
||||||
|
"tr": "Onay veya red açıklaması"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "App.Listform.ListformField.WorkflowDecisionMessage",
|
||||||
|
"en": "Workflow decision will be made for {0} record(s).",
|
||||||
|
"tr": "{0} kayit icin workflow karari verilecek."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"resourceName": "Platform",
|
"resourceName": "Platform",
|
||||||
"key": "App.Listform.ListformField.NextOnStart",
|
"key": "App.Listform.ListformField.NextOnStart",
|
||||||
|
|
@ -19058,6 +19070,12 @@
|
||||||
"en": "Approval Status Field Name",
|
"en": "Approval Status Field Name",
|
||||||
"tr": "Onay Durumu Alanı Adı"
|
"tr": "Onay Durumu Alanı Adı"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.ListFormEdit.Workflow.IsFilterUserName",
|
||||||
|
"en": "Filter User Name?",
|
||||||
|
"tr": "Kullanıcı Adı Filtresin mi?"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"resourceName": "Platform",
|
"resourceName": "Platform",
|
||||||
"key": "ListForms.ListFormEdit.Workflow.ApprovalDescriptionFieldName",
|
"key": "ListForms.ListFormEdit.Workflow.ApprovalDescriptionFieldName",
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
IF OBJECT_ID(N'[dbo].[Sal_T_Approval]', 'U') IS NULL
|
||||||
|
BEGIN
|
||||||
|
CREATE TABLE [dbo].[Sal_T_Approval]
|
||||||
|
(
|
||||||
|
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
|
||||||
|
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
|
||||||
|
[CreatorId] uniqueidentifier NULL,
|
||||||
|
[LastModificationTime] datetime2 NULL,
|
||||||
|
[LastModifierId] uniqueidentifier NULL,
|
||||||
|
[IsDeleted] bit NOT NULL DEFAULT 0,
|
||||||
|
[DeletionTime] datetime2 NULL,
|
||||||
|
[DeleterId] uniqueidentifier NULL,
|
||||||
|
[TenantId] uniqueidentifier NULL,
|
||||||
|
[ApprovalUserName] nvarchar(256) NULL,
|
||||||
|
[ApprovalStatus] nvarchar(50) NULL,
|
||||||
|
[ApprovalDate] datetime NULL,
|
||||||
|
[ApprovalDescription] nvarchar(200) NULL,
|
||||||
|
[Name] nvarchar(100) NULL,
|
||||||
|
CONSTRAINT [PK_Sal_T_Approval] PRIMARY KEY NONCLUSTERED
|
||||||
|
(
|
||||||
|
[Id] ASC
|
||||||
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
|
||||||
|
) ON [PRIMARY]
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
|
@ -0,0 +1,385 @@
|
||||||
|
{
|
||||||
|
"Wizard": {
|
||||||
|
"WizardName": "Approval",
|
||||||
|
"ListFormCode": "App.Wizard.Approval",
|
||||||
|
"MenuCode": "App.Wizard.Approval",
|
||||||
|
"IsTenant": true,
|
||||||
|
"IsBranch": false,
|
||||||
|
"IsOrganizationUnit": false,
|
||||||
|
"AllowAdding": true,
|
||||||
|
"AllowUpdating": true,
|
||||||
|
"AllowDeleting": true,
|
||||||
|
"AllowDetail": false,
|
||||||
|
"ConfirmDelete": true,
|
||||||
|
"DefaultLayout": "grid",
|
||||||
|
"Grid": true,
|
||||||
|
"Pivot": true,
|
||||||
|
"Tree": true,
|
||||||
|
"Chart": true,
|
||||||
|
"Gantt": true,
|
||||||
|
"Scheduler": true,
|
||||||
|
"LanguageTextMenuEn": "Approval",
|
||||||
|
"LanguageTextMenuTr": "Approval",
|
||||||
|
"LanguageTextTitleEn": "Approval",
|
||||||
|
"LanguageTextTitleTr": "Onaylama",
|
||||||
|
"LanguageTextDescEn": "Approval",
|
||||||
|
"LanguageTextDescTr": "Onaylama",
|
||||||
|
"LanguageTextMenuParentEn": "Sales",
|
||||||
|
"LanguageTextMenuParentTr": "Sat\u0131\u015F",
|
||||||
|
"PermissionGroupName": "App.Wizard.Sales",
|
||||||
|
"MenuParentCode": "App.Wizard.Sales",
|
||||||
|
"MenuParentIcon": "FcAssistant",
|
||||||
|
"MenuIcon": "FcAndroidOs",
|
||||||
|
"DataSourceCode": "Default",
|
||||||
|
"DataSourceConnectionString": "",
|
||||||
|
"SelectCommandType": 1,
|
||||||
|
"SelectCommand": "Sal_T_Approval",
|
||||||
|
"KeyFieldName": "Id",
|
||||||
|
"KeyFieldDbSourceType": 9,
|
||||||
|
"TreeKeyExpr": "",
|
||||||
|
"TreeParentIdExpr": "",
|
||||||
|
"TreeAutoExpandAll": false,
|
||||||
|
"GanttKeyExpr": "",
|
||||||
|
"GanttParentIdExpr": "",
|
||||||
|
"GanttAutoExpandAll": false,
|
||||||
|
"GanttTitleExpr": "",
|
||||||
|
"GanttStartExpr": "",
|
||||||
|
"GanttEndExpr": "",
|
||||||
|
"GanttProgressExpr": "",
|
||||||
|
"SchedulerTextExpr": "",
|
||||||
|
"SchedulerStartDateExpr": "",
|
||||||
|
"SchedulerEndDateExpr": "",
|
||||||
|
"Groups": [
|
||||||
|
{
|
||||||
|
"Caption": "",
|
||||||
|
"ColCount": 1,
|
||||||
|
"Items": [
|
||||||
|
{
|
||||||
|
"DataField": "Id",
|
||||||
|
"CaptionName": "App.Listform.ListformField.Id",
|
||||||
|
"EditorType": "dxTextBox",
|
||||||
|
"EditorOptions": "",
|
||||||
|
"EditorScript": "",
|
||||||
|
"ColSpan": 1,
|
||||||
|
"IsRequired": true,
|
||||||
|
"IncludeInEditingForm": true,
|
||||||
|
"DbSourceType": 9,
|
||||||
|
"TurkishCaption": "Id",
|
||||||
|
"EnglishCaption": "Id",
|
||||||
|
"LookupDataSourceType": 1,
|
||||||
|
"ValueExpr": "Key",
|
||||||
|
"DisplayExpr": "Name",
|
||||||
|
"LookupQuery": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataField": "Name",
|
||||||
|
"CaptionName": "App.Listform.ListformField.Name",
|
||||||
|
"EditorType": "dxTextBox",
|
||||||
|
"EditorOptions": "",
|
||||||
|
"EditorScript": "",
|
||||||
|
"ColSpan": 1,
|
||||||
|
"IsRequired": false,
|
||||||
|
"IncludeInEditingForm": true,
|
||||||
|
"DbSourceType": 16,
|
||||||
|
"TurkishCaption": "Name",
|
||||||
|
"EnglishCaption": "Name",
|
||||||
|
"LookupDataSourceType": 1,
|
||||||
|
"ValueExpr": "Key",
|
||||||
|
"DisplayExpr": "Name",
|
||||||
|
"LookupQuery": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataField": "ApprovalUserName",
|
||||||
|
"CaptionName": "App.Listform.ListformField.ApprovalUserName",
|
||||||
|
"EditorType": "dxTextBox",
|
||||||
|
"EditorOptions": "",
|
||||||
|
"EditorScript": "",
|
||||||
|
"ColSpan": 1,
|
||||||
|
"IsRequired": false,
|
||||||
|
"IncludeInEditingForm": false,
|
||||||
|
"DbSourceType": 16,
|
||||||
|
"TurkishCaption": "Approval User Name",
|
||||||
|
"EnglishCaption": "Approval User Name",
|
||||||
|
"LookupDataSourceType": 1,
|
||||||
|
"ValueExpr": "Key",
|
||||||
|
"DisplayExpr": "Name",
|
||||||
|
"LookupQuery": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataField": "ApprovalStatus",
|
||||||
|
"CaptionName": "App.Listform.ListformField.ApprovalStatus",
|
||||||
|
"EditorType": "dxTextBox",
|
||||||
|
"EditorOptions": "",
|
||||||
|
"EditorScript": "",
|
||||||
|
"ColSpan": 1,
|
||||||
|
"IsRequired": false,
|
||||||
|
"IncludeInEditingForm": false,
|
||||||
|
"DbSourceType": 16,
|
||||||
|
"TurkishCaption": "Approval Status",
|
||||||
|
"EnglishCaption": "Approval Status",
|
||||||
|
"LookupDataSourceType": 1,
|
||||||
|
"ValueExpr": "Key",
|
||||||
|
"DisplayExpr": "Name",
|
||||||
|
"LookupQuery": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataField": "ApprovalDate",
|
||||||
|
"CaptionName": "App.Listform.ListformField.ApprovalDate",
|
||||||
|
"EditorType": "dxDateBox",
|
||||||
|
"EditorOptions": "",
|
||||||
|
"EditorScript": "",
|
||||||
|
"ColSpan": 1,
|
||||||
|
"IsRequired": false,
|
||||||
|
"IncludeInEditingForm": false,
|
||||||
|
"DbSourceType": 6,
|
||||||
|
"TurkishCaption": "Approval Date",
|
||||||
|
"EnglishCaption": "Approval Date",
|
||||||
|
"LookupDataSourceType": 1,
|
||||||
|
"ValueExpr": "Key",
|
||||||
|
"DisplayExpr": "Name",
|
||||||
|
"LookupQuery": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataField": "ApprovalDescription",
|
||||||
|
"CaptionName": "App.Listform.ListformField.ApprovalDescription",
|
||||||
|
"EditorType": "dxTextBox",
|
||||||
|
"EditorOptions": "",
|
||||||
|
"EditorScript": "",
|
||||||
|
"ColSpan": 1,
|
||||||
|
"IsRequired": false,
|
||||||
|
"IncludeInEditingForm": false,
|
||||||
|
"DbSourceType": 16,
|
||||||
|
"TurkishCaption": "Approval Description",
|
||||||
|
"EnglishCaption": "Approval Description",
|
||||||
|
"LookupDataSourceType": 1,
|
||||||
|
"ValueExpr": "Key",
|
||||||
|
"DisplayExpr": "Name",
|
||||||
|
"LookupQuery": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"SubForms": [],
|
||||||
|
"Widgets": [],
|
||||||
|
"Workflow": {
|
||||||
|
"ApprovalUserFieldName": "ApprovalUserName",
|
||||||
|
"IsFilterUserName": true,
|
||||||
|
"ApprovalDateFieldName": "ApprovalDate",
|
||||||
|
"ApprovalStatusFieldName": "ApprovalStatus",
|
||||||
|
"ApprovalDescriptionFieldName": "ApprovalDescription",
|
||||||
|
"Criteria": [
|
||||||
|
{
|
||||||
|
"ListFormCode": "App.Wizard.Approval",
|
||||||
|
"Kind": "Start",
|
||||||
|
"Title": "\u0130\u015F Ak\u0131\u015F\u0131 Ba\u015Flat1",
|
||||||
|
"CompareColumn": "Price",
|
||||||
|
"CompareOperator": "\u003E",
|
||||||
|
"CompareValue": 5000,
|
||||||
|
"Approver": "",
|
||||||
|
"NextOnStart": "N002",
|
||||||
|
"NextOnTrue": "",
|
||||||
|
"NextOnFalse": "",
|
||||||
|
"NextOnApprove": "",
|
||||||
|
"NextOnReject": "",
|
||||||
|
"PositionX": 34,
|
||||||
|
"PositionY": 104,
|
||||||
|
"CompareOutcomes": [],
|
||||||
|
"Id": "N001"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ListFormCode": "App.Wizard.Approval",
|
||||||
|
"Kind": "Approval",
|
||||||
|
"Title": "Onay1",
|
||||||
|
"CompareColumn": "Price",
|
||||||
|
"CompareOperator": "\u003E",
|
||||||
|
"CompareValue": 5000,
|
||||||
|
"Approver": "admin@sozsoft.com",
|
||||||
|
"NextOnStart": "",
|
||||||
|
"NextOnTrue": "",
|
||||||
|
"NextOnFalse": "",
|
||||||
|
"NextOnApprove": "N003",
|
||||||
|
"NextOnReject": "N004",
|
||||||
|
"PositionX": 323,
|
||||||
|
"PositionY": 104,
|
||||||
|
"CompareOutcomes": [],
|
||||||
|
"Id": "N002"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ListFormCode": "App.Wizard.Approval",
|
||||||
|
"Kind": "Approval",
|
||||||
|
"Title": "Onay2",
|
||||||
|
"CompareColumn": "Price",
|
||||||
|
"CompareOperator": "\u003E",
|
||||||
|
"CompareValue": 5000,
|
||||||
|
"Approver": "demo@sozsoft.com",
|
||||||
|
"NextOnStart": "",
|
||||||
|
"NextOnTrue": "",
|
||||||
|
"NextOnFalse": "",
|
||||||
|
"NextOnApprove": "N004",
|
||||||
|
"NextOnReject": "N004",
|
||||||
|
"PositionX": 586,
|
||||||
|
"PositionY": 104,
|
||||||
|
"CompareOutcomes": [],
|
||||||
|
"Id": "N003"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ListFormCode": "App.Wizard.Approval",
|
||||||
|
"Kind": "Inform",
|
||||||
|
"Title": "Bilgilendirme1",
|
||||||
|
"CompareColumn": "Price",
|
||||||
|
"CompareOperator": "\u003E",
|
||||||
|
"CompareValue": 5000,
|
||||||
|
"Approver": "system@sozsoft.com",
|
||||||
|
"NextOnStart": "N005",
|
||||||
|
"NextOnTrue": "",
|
||||||
|
"NextOnFalse": "",
|
||||||
|
"NextOnApprove": "",
|
||||||
|
"NextOnReject": "",
|
||||||
|
"PositionX": 458,
|
||||||
|
"PositionY": 411,
|
||||||
|
"CompareOutcomes": [],
|
||||||
|
"Id": "N004"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ListFormCode": "App.Wizard.Approval",
|
||||||
|
"Kind": "End",
|
||||||
|
"Title": "\u0130\u015F Ak\u0131\u015F\u0131 Bitir1",
|
||||||
|
"CompareColumn": "Price",
|
||||||
|
"CompareOperator": "\u003E",
|
||||||
|
"CompareValue": 5000,
|
||||||
|
"Approver": "",
|
||||||
|
"NextOnStart": "",
|
||||||
|
"NextOnTrue": "",
|
||||||
|
"NextOnFalse": "",
|
||||||
|
"NextOnApprove": "",
|
||||||
|
"NextOnReject": "",
|
||||||
|
"PositionX": 792,
|
||||||
|
"PositionY": 412,
|
||||||
|
"CompareOutcomes": [],
|
||||||
|
"Id": "N005"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"WorkflowCriteria": [
|
||||||
|
{
|
||||||
|
"ListFormCode": "App.Wizard.Approval",
|
||||||
|
"Kind": "Start",
|
||||||
|
"Title": "\u0130\u015F Ak\u0131\u015F\u0131 Ba\u015Flat1",
|
||||||
|
"CompareColumn": "Price",
|
||||||
|
"CompareOperator": "\u003E",
|
||||||
|
"CompareValue": 5000,
|
||||||
|
"Approver": "",
|
||||||
|
"NextOnStart": "N002",
|
||||||
|
"NextOnTrue": "",
|
||||||
|
"NextOnFalse": "",
|
||||||
|
"NextOnApprove": "",
|
||||||
|
"NextOnReject": "",
|
||||||
|
"PositionX": 34,
|
||||||
|
"PositionY": 104,
|
||||||
|
"CompareOutcomes": [],
|
||||||
|
"Id": "N001"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ListFormCode": "App.Wizard.Approval",
|
||||||
|
"Kind": "Approval",
|
||||||
|
"Title": "Onay1",
|
||||||
|
"CompareColumn": "Price",
|
||||||
|
"CompareOperator": "\u003E",
|
||||||
|
"CompareValue": 5000,
|
||||||
|
"Approver": "admin@sozsoft.com",
|
||||||
|
"NextOnStart": "",
|
||||||
|
"NextOnTrue": "",
|
||||||
|
"NextOnFalse": "",
|
||||||
|
"NextOnApprove": "N003",
|
||||||
|
"NextOnReject": "N004",
|
||||||
|
"PositionX": 323,
|
||||||
|
"PositionY": 104,
|
||||||
|
"CompareOutcomes": [],
|
||||||
|
"Id": "N002"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ListFormCode": "App.Wizard.Approval",
|
||||||
|
"Kind": "Approval",
|
||||||
|
"Title": "Onay2",
|
||||||
|
"CompareColumn": "Price",
|
||||||
|
"CompareOperator": "\u003E",
|
||||||
|
"CompareValue": 5000,
|
||||||
|
"Approver": "demo@sozsoft.com",
|
||||||
|
"NextOnStart": "",
|
||||||
|
"NextOnTrue": "",
|
||||||
|
"NextOnFalse": "",
|
||||||
|
"NextOnApprove": "N004",
|
||||||
|
"NextOnReject": "N004",
|
||||||
|
"PositionX": 586,
|
||||||
|
"PositionY": 104,
|
||||||
|
"CompareOutcomes": [],
|
||||||
|
"Id": "N003"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ListFormCode": "App.Wizard.Approval",
|
||||||
|
"Kind": "Inform",
|
||||||
|
"Title": "Bilgilendirme1",
|
||||||
|
"CompareColumn": "Price",
|
||||||
|
"CompareOperator": "\u003E",
|
||||||
|
"CompareValue": 5000,
|
||||||
|
"Approver": "system@sozsoft.com",
|
||||||
|
"NextOnStart": "N005",
|
||||||
|
"NextOnTrue": "",
|
||||||
|
"NextOnFalse": "",
|
||||||
|
"NextOnApprove": "",
|
||||||
|
"NextOnReject": "",
|
||||||
|
"PositionX": 458,
|
||||||
|
"PositionY": 411,
|
||||||
|
"CompareOutcomes": [],
|
||||||
|
"Id": "N004"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ListFormCode": "App.Wizard.Approval",
|
||||||
|
"Kind": "End",
|
||||||
|
"Title": "\u0130\u015F Ak\u0131\u015F\u0131 Bitir1",
|
||||||
|
"CompareColumn": "Price",
|
||||||
|
"CompareOperator": "\u003E",
|
||||||
|
"CompareValue": 5000,
|
||||||
|
"Approver": "",
|
||||||
|
"NextOnStart": "",
|
||||||
|
"NextOnTrue": "",
|
||||||
|
"NextOnFalse": "",
|
||||||
|
"NextOnApprove": "",
|
||||||
|
"NextOnReject": "",
|
||||||
|
"PositionX": 792,
|
||||||
|
"PositionY": 412,
|
||||||
|
"CompareOutcomes": [],
|
||||||
|
"Id": "N005"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"IsDeletedField": true,
|
||||||
|
"IsCreatedField": true,
|
||||||
|
"InsertedRecords": {
|
||||||
|
"LanguageKeys": [
|
||||||
|
"App.Wizard.Approval",
|
||||||
|
"App.Wizard.Approval.Title",
|
||||||
|
"App.Wizard.Approval.Desc",
|
||||||
|
"App.Listform.ListformField.ApprovalUserName",
|
||||||
|
"App.Listform.ListformField.ApprovalStatus",
|
||||||
|
"App.Listform.ListformField.ApprovalDate",
|
||||||
|
"App.Listform.ListformField.ApprovalDescription"
|
||||||
|
],
|
||||||
|
"PermissionGroupNames": [
|
||||||
|
"App.Wizard.Sales"
|
||||||
|
],
|
||||||
|
"PermissionNames": [
|
||||||
|
"App.Wizard.Approval",
|
||||||
|
"App.Wizard.Approval.Create",
|
||||||
|
"App.Wizard.Approval.Update",
|
||||||
|
"App.Wizard.Approval.Delete",
|
||||||
|
"App.Wizard.Approval.Export",
|
||||||
|
"App.Wizard.Approval.Import",
|
||||||
|
"App.Wizard.Approval.Note"
|
||||||
|
],
|
||||||
|
"MenuCodes": [
|
||||||
|
"App.Wizard.Approval"
|
||||||
|
],
|
||||||
|
"DataSourceCodes": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -465,6 +465,20 @@ public class SelectQueryManager : PlatformDomainService, ISelectQueryManager
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (listform.WorkflowJson.IsNullOrWhiteSpace() == false)
|
||||||
|
{
|
||||||
|
var workflow = JsonSerializer.Deserialize<Workflow>(listform.WorkflowJson);
|
||||||
|
if (workflow != null && workflow.IsFilterUserName)
|
||||||
|
{
|
||||||
|
if (whereParts.Any())
|
||||||
|
{
|
||||||
|
whereParts.Add("AND");
|
||||||
|
}
|
||||||
|
|
||||||
|
whereParts.Add($"\"{workflow.ApprovalUserFieldName}\" = '{CurrentUser.UserName}'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!whereParts.Any())
|
if (!whereParts.Any())
|
||||||
{
|
{
|
||||||
whereParts.Add("1 = 1");
|
whereParts.Add("1 = 1");
|
||||||
|
|
|
||||||
23
api/src/Sozsoft.Platform.Domain/Queries/Workflow.cs
Normal file
23
api/src/Sozsoft.Platform.Domain/Queries/Workflow.cs
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Volo.Abp.Domain.Values;
|
||||||
|
|
||||||
|
namespace Sozsoft.Platform.Queries;
|
||||||
|
|
||||||
|
public class Workflow : ValueObject
|
||||||
|
{
|
||||||
|
public string ApprovalUserFieldName { get; set; }
|
||||||
|
public bool IsFilterUserName { get; set; }
|
||||||
|
public string ApprovalDateFieldName { get; set; }
|
||||||
|
public string ApprovalStatusFieldName { get; set; }
|
||||||
|
public string ApprovalDescriptionFieldName { get; set; }
|
||||||
|
|
||||||
|
protected override IEnumerable<object> GetAtomicValues()
|
||||||
|
{
|
||||||
|
yield return ApprovalUserFieldName;
|
||||||
|
yield return IsFilterUserName;
|
||||||
|
yield return ApprovalDateFieldName;
|
||||||
|
yield return ApprovalStatusFieldName;
|
||||||
|
yield return ApprovalDescriptionFieldName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -908,6 +908,7 @@ export interface WidgetEditDto {
|
||||||
|
|
||||||
export interface WorkflowDto {
|
export interface WorkflowDto {
|
||||||
approvalUserFieldName: string
|
approvalUserFieldName: string
|
||||||
|
isFilterUserName: boolean
|
||||||
approvalDateFieldName: string
|
approvalDateFieldName: string
|
||||||
approvalStatusFieldName: string
|
approvalStatusFieldName: string
|
||||||
approvalDescriptionFieldName: string
|
approvalDescriptionFieldName: string
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,9 @@ import { workflowService, type WorkflowCriteriaDto } from '@/services/workflow.s
|
||||||
import { WorkflowDesigner } from '../workflow/WorkflowDesigner'
|
import { WorkflowDesigner } from '../workflow/WorkflowDesigner'
|
||||||
import { SelectBoxOption } from '@/types/shared'
|
import { SelectBoxOption } from '@/types/shared'
|
||||||
import { Field, FieldProps, Form, Formik } from 'formik'
|
import { Field, FieldProps, Form, Formik } from 'formik'
|
||||||
import { Button, Card, FormContainer, FormItem, Input, Select } from '@/components/ui'
|
import { Button, Card, Checkbox, FormContainer, FormItem, Input, Select } from '@/components/ui'
|
||||||
import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
|
import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
|
||||||
import { object, string } from 'yup'
|
import { bool, object, string } from 'yup'
|
||||||
import { useStoreState } from '@/store/store'
|
import { useStoreState } from '@/store/store'
|
||||||
import { FormEditProps } from './FormEdit'
|
import { FormEditProps } from './FormEdit'
|
||||||
import { useLocalization } from '@/utils/hooks/useLocalization'
|
import { useLocalization } from '@/utils/hooks/useLocalization'
|
||||||
|
|
@ -309,6 +309,7 @@ export function FormTabWorkflow(
|
||||||
const schema = object().shape({
|
const schema = object().shape({
|
||||||
workflowDto: object().shape({
|
workflowDto: object().shape({
|
||||||
approvalUserFieldName: string().required(),
|
approvalUserFieldName: string().required(),
|
||||||
|
isFilterUserName: bool(),
|
||||||
approvalStatusFieldName: string().required(),
|
approvalStatusFieldName: string().required(),
|
||||||
approvalDateFieldName: string(),
|
approvalDateFieldName: string(),
|
||||||
approvalDescriptionFieldName: string(),
|
approvalDescriptionFieldName: string(),
|
||||||
|
|
@ -333,7 +334,7 @@ export function FormTabWorkflow(
|
||||||
<Form>
|
<Form>
|
||||||
<FormContainer size="sm">
|
<FormContainer size="sm">
|
||||||
<Card className="my-2">
|
<Card className="my-2">
|
||||||
<div className="grid grid-cols-1 md:grid-cols-4 gap-2">
|
<div className="grid grid-cols-1 md:grid-cols-5 gap-2">
|
||||||
<FormItem
|
<FormItem
|
||||||
asterisk
|
asterisk
|
||||||
label={translate('::ListForms.ListFormEdit.Workflow.ApprovalUserFieldName')}
|
label={translate('::ListForms.ListFormEdit.Workflow.ApprovalUserFieldName')}
|
||||||
|
|
@ -434,6 +435,19 @@ export function FormTabWorkflow(
|
||||||
)}
|
)}
|
||||||
</Field>
|
</Field>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
|
||||||
|
<FormItem
|
||||||
|
label={translate('::ListForms.ListFormEdit.Workflow.IsFilterUserName')}
|
||||||
|
invalid={
|
||||||
|
!!(
|
||||||
|
errors.workflowDto?.isFilterUserName &&
|
||||||
|
touched.workflowDto?.isFilterUserName
|
||||||
|
)
|
||||||
|
}
|
||||||
|
errorMessage={errors.workflowDto?.isFilterUserName as string}
|
||||||
|
>
|
||||||
|
<Field name="workflowDto.isFilterUserName" component={Checkbox} />
|
||||||
|
</FormItem>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Button block variant="solid" type="submit" loading={isSubmitting}>
|
<Button block variant="solid" type="submit" loading={isSubmitting}>
|
||||||
|
|
|
||||||
|
|
@ -96,6 +96,7 @@ const initialValues: ListFormWizardDto = {
|
||||||
widgets: [],
|
widgets: [],
|
||||||
workflow: {
|
workflow: {
|
||||||
approvalUserFieldName: '',
|
approvalUserFieldName: '',
|
||||||
|
isFilterUserName: false,
|
||||||
approvalDateFieldName: '',
|
approvalDateFieldName: '',
|
||||||
approvalStatusFieldName: '',
|
approvalStatusFieldName: '',
|
||||||
approvalDescriptionFieldName: '',
|
approvalDescriptionFieldName: '',
|
||||||
|
|
@ -223,6 +224,7 @@ const Wizard = () => {
|
||||||
const [widgets, setWidgets] = useState<WidgetEditDto[]>([])
|
const [widgets, setWidgets] = useState<WidgetEditDto[]>([])
|
||||||
const [workflow, setWorkflow] = useState<WorkflowDto>({
|
const [workflow, setWorkflow] = useState<WorkflowDto>({
|
||||||
approvalUserFieldName: '',
|
approvalUserFieldName: '',
|
||||||
|
isFilterUserName: false,
|
||||||
approvalDateFieldName: '',
|
approvalDateFieldName: '',
|
||||||
approvalStatusFieldName: '',
|
approvalStatusFieldName: '',
|
||||||
approvalDescriptionFieldName: '',
|
approvalDescriptionFieldName: '',
|
||||||
|
|
@ -437,6 +439,7 @@ const Wizard = () => {
|
||||||
widgets: w.widgets ?? [],
|
widgets: w.widgets ?? [],
|
||||||
workflow: w.workflow ?? {
|
workflow: w.workflow ?? {
|
||||||
approvalUserFieldName: '',
|
approvalUserFieldName: '',
|
||||||
|
isFilterUserName: false,
|
||||||
approvalDateFieldName: '',
|
approvalDateFieldName: '',
|
||||||
approvalStatusFieldName: '',
|
approvalStatusFieldName: '',
|
||||||
approvalDescriptionFieldName: '',
|
approvalDescriptionFieldName: '',
|
||||||
|
|
@ -500,6 +503,7 @@ const Wizard = () => {
|
||||||
setWorkflow(
|
setWorkflow(
|
||||||
w.workflow ?? {
|
w.workflow ?? {
|
||||||
approvalUserFieldName: '',
|
approvalUserFieldName: '',
|
||||||
|
isFilterUserName: false,
|
||||||
approvalDateFieldName: '',
|
approvalDateFieldName: '',
|
||||||
approvalStatusFieldName: '',
|
approvalStatusFieldName: '',
|
||||||
approvalDescriptionFieldName: '',
|
approvalDescriptionFieldName: '',
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { Button, Card, FormContainer, FormItem, Select } from '@/components/ui'
|
import { Button, Card, Checkbox, FormContainer, FormItem, Select } from '@/components/ui'
|
||||||
import type { DatabaseColumnDto } from '@/proxy/sql-query-manager/models'
|
import type { DatabaseColumnDto } from '@/proxy/sql-query-manager/models'
|
||||||
import { ListFormWorkflowCriteriaDto, WorkflowDto } from '@/proxy/form/models'
|
import { ListFormWorkflowCriteriaDto, WorkflowDto } from '@/proxy/form/models'
|
||||||
import { getUsers } from '@/services/identity.service'
|
import { getUsers } from '@/services/identity.service'
|
||||||
|
|
@ -240,7 +240,7 @@ function WizardStep6({
|
||||||
<Form>
|
<Form>
|
||||||
<Card className="mb-4" header={translate('::ListForms.ListFormEdit.TabWorkflow')}>
|
<Card className="mb-4" header={translate('::ListForms.ListFormEdit.TabWorkflow')}>
|
||||||
<FormContainer>
|
<FormContainer>
|
||||||
<div className="grid grid-cols-4 gap-4">
|
<div className="grid grid-cols-1 md:grid-cols-5 gap-4">
|
||||||
{[
|
{[
|
||||||
[
|
[
|
||||||
'approvalUserFieldName',
|
'approvalUserFieldName',
|
||||||
|
|
@ -283,6 +283,26 @@ function WizardStep6({
|
||||||
</Field>
|
</Field>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
))}
|
))}
|
||||||
|
<FormItem
|
||||||
|
label={translate('::ListForms.ListFormEdit.Workflow.IsFilterUserName')}
|
||||||
|
>
|
||||||
|
<Field name="isFilterUserName">
|
||||||
|
{({ field, form }: FieldProps<boolean>) => (
|
||||||
|
<Checkbox
|
||||||
|
name={field.name}
|
||||||
|
checked={Boolean(values.isFilterUserName)}
|
||||||
|
onChange={(checked) => {
|
||||||
|
form.setFieldValue(field.name, checked)
|
||||||
|
onWorkflowChange({
|
||||||
|
...values,
|
||||||
|
isFilterUserName: checked,
|
||||||
|
criteria,
|
||||||
|
})
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
</Field>
|
||||||
|
</FormItem>
|
||||||
</div>
|
</div>
|
||||||
</FormContainer>
|
</FormContainer>
|
||||||
</Card>
|
</Card>
|
||||||
|
|
|
||||||
|
|
@ -533,6 +533,7 @@ const WizardStep7 = ({
|
||||||
<Row label="Approval Date" value={workflow.approvalDateFieldName} />
|
<Row label="Approval Date" value={workflow.approvalDateFieldName} />
|
||||||
<Row label="Approval Status" value={workflow.approvalStatusFieldName} />
|
<Row label="Approval Status" value={workflow.approvalStatusFieldName} />
|
||||||
<Row label="Approval Description" value={workflow.approvalDescriptionFieldName} />
|
<Row label="Approval Description" value={workflow.approvalDescriptionFieldName} />
|
||||||
|
<Row label="Is Filter User Name?" value={workflow.isFilterUserName === true ? 'Yes' : 'No'} />
|
||||||
</div>
|
</div>
|
||||||
{workflowItems.length > 0 && (
|
{workflowItems.length > 0 && (
|
||||||
<div className="flex flex-col gap-2">
|
<div className="flex flex-col gap-2">
|
||||||
|
|
|
||||||
|
|
@ -714,14 +714,17 @@ function WorkflowApprovalDecisionDialog({
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h5 className="mb-4">{criteriaTitle}</h5>
|
<h5 className="mb-4">{criteriaTitle}</h5>
|
||||||
<p>{keys.length} kayit icin workflow karari verilecek.</p>
|
<p className="mb-4">
|
||||||
<label className="mb-2 block font-semibold">Not</label>
|
{translate('::App.Listform.ListformField.WorkflowDecisionMessage', {
|
||||||
|
0: keys.length,
|
||||||
|
})}
|
||||||
|
</p>
|
||||||
<textarea
|
<textarea
|
||||||
className="input input-textarea mb-4 min-h-[96px] w-full resize-y"
|
className="input input-textarea mb-4 min-h-[96px] w-full resize-y"
|
||||||
rows={4}
|
rows={4}
|
||||||
value={note}
|
value={note}
|
||||||
autoFocus
|
autoFocus
|
||||||
placeholder="Onay veya red aciklamasi"
|
placeholder={translate('::App.Listform.ListformField.ApprovalComment')}
|
||||||
onChange={(event) => setNote(event.target.value)}
|
onChange={(event) => setNote(event.target.value)}
|
||||||
/>
|
/>
|
||||||
<div className="text-right mt-6">
|
<div className="text-right mt-6">
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue