erp-platform/api/src/Kurs.Platform.DbMigrator/Seeds/FormSeeder.cs
Sedat ÖZTÜRK e1a9562b22 init project
2025-05-06 09:45:49 +03:00

347 lines
16 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Data;
using System.Text.Json;
using System.Threading.Tasks;
using Kurs.Languages.Languages;
using Kurs.Platform.Entities;
using Kurs.Platform.Enums;
using Kurs.Platform.ListForms;
using Kurs.Platform.Queries;
using Volo.Abp.Data;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Domain.Repositories;
using static Kurs.Platform.PlatformConsts;
using AppCodes = Kurs.Platform.Data.Seeds.SeedConsts.AppCodes;
namespace Kurs.Platform.Data.Seeds;
public class FormSeeder : IDataSeedContributor, ITransientDependency
{
private readonly IRepository<ListForm, Guid> _listFormRepository;
private readonly IRepository<ListFormField, Guid> _listFormFieldRepository;
public FormSeeder(
IRepository<ListForm, Guid> listFormRepository,
IRepository<ListFormField, Guid> listFormFieldRepository)
{
_listFormRepository = listFormRepository;
_listFormFieldRepository = listFormFieldRepository;
}
public async Task SeedAsync(DataSeedContext context)
{
if (await _listFormRepository.AnyAsync(a => a.ListFormCode == ListFormCodes.Forms.FormLanguage))
{
return;
}
#region Languages
var formLanguage = await _listFormRepository.InsertAsync(
new ListForm()
{
ListFormType = ListFormTypeEnum.Form,
IsSubForm = false,
SubFormsJson = JsonSerializer.Serialize(new List<dynamic>() {
new {
TabTitle = "Language Texts",
TabType = ListFormTabTypeEnum.List,
Code = ListFormCodes.LanguageText,
Relation = new List<dynamic>() {
new {
ParentFieldName = "CultureName",
ChildFieldName = "CultureName"
}
}
},
new {
TabTitle = "Form Sütun Sayıları",
TabType = ListFormTabTypeEnum.Chart,
Code = ChartCodes.Chart2,
Relation = new List<dynamic>() {
new {
ParentFieldName = "ListFormCode",
ChildFieldName = "ListFormCode"
}
}
}
}),
CultureName = LanguageCodes.En,
ListFormCode = ListFormCodes.Forms.FormLanguage,
Name = AppCodes.Languages.Language,
Title = AppCodes.Languages.Language,
DataSourceCode = "Default",
IsTenant = false,
IsOrganizationUnit = false,
Description = AppCodes.Languages.Language,
SelectCommandType = SelectCommandTypeEnum.Table,
SelectCommand = DbTablePrefix + "Language",
KeyFieldName = "Id",
KeyFieldDbSourceType = DbType.Guid,
DefaultFilter = "\"IsDeleted\" = 'false'",
SortMode = GridOptions.SortModeSingle,
PermissionJson = JsonSerializer.Serialize(new PermissionCrudDto
{
C = AppCodes.Languages.Language + ".Create",
R = AppCodes.Languages.Language,
U = AppCodes.Languages.Language + ".Update",
D = AppCodes.Languages.Language + ".Delete",
E = AppCodes.Languages.Language + ".Export"
}),
DeleteCommand = $"UPDATE \"{DbTablePrefix}Language\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\"=@Id",
DeleteFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] {
new() {
FieldName = "DeleterId",
FieldDbType = DbType.Guid,
Value = "@USERID",
CustomValueType = FieldCustomValueTypeEnum.CustomKey },
new() {
FieldName = "Id",
FieldDbType = DbType.Guid,
Value = "@ID",
CustomValueType = FieldCustomValueTypeEnum.CustomKey }
}),
EditingOptionJson = JsonSerializer.Serialize(new GridEditingDto
{
AllowDeleting = true,
AllowAdding = true,
AllowUpdating = true,
ConfirmDelete = true,
}),
EditingFormJson = JsonSerializer.Serialize(new List<EditingFormDto>() {
new() {
Order = 1,
ColCount = 1,
ColSpan = 2,
ItemType = "group",
Items = [
new() { Order = 1, DataField = "CultureName", ColSpan = 2, IsRequired = true, EditorType2=EditorTypes.dxTextBox },
new() { Order = 2, DataField = "UiCultureName", ColSpan = 2, IsRequired = true, EditorType2=EditorTypes.dxTextBox },
new() { Order = 3, DataField = "DisplayName", ColSpan = 2, IsRequired = true, EditorType2=EditorTypes.dxTextBox },
new() { Order = 4, DataField = "IsEnabled", ColSpan = 2, IsRequired = false, EditorType2=EditorTypes.dxCheckBox },
new() { Order = 5, DataField = "MultipleCultures", ColSpan = 2, IsRequired = false, EditorType2=EditorTypes.dxTagBox },
]
}
}),
InsertFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] {
new() {
FieldName = "CreationTime",
FieldDbType = DbType.DateTime,
Value = "@NOW",
CustomValueType = FieldCustomValueTypeEnum.CustomKey },
new() {
FieldName = "CreatorId",
FieldDbType = DbType.Guid,
Value = "@USERID",
CustomValueType = FieldCustomValueTypeEnum.CustomKey },
new() {
FieldName = "IsDeleted",
FieldDbType = DbType.Boolean,
Value = "false",
CustomValueType = FieldCustomValueTypeEnum.Value }
}),
FormFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] {
new() {
FieldName = "IsEnabled",
FieldDbType = DbType.Boolean,
Value = "true",
CustomValueType = FieldCustomValueTypeEnum.Value }
})
}
);
await _listFormFieldRepository.InsertManyAsync([
new() {
ListFormCode = formLanguage.ListFormCode,
RoleId = null,
UserId = null,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Guid,
FieldName = "Id",
Width = 100,
ListOrderNo = 0,
Visible = false,
IsActive = true,
IsDeleted = false,
SortIndex = 0,
PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto
{
C = AppCodes.Languages.Language + ".Create",
R = AppCodes.Languages.Language,
U = AppCodes.Languages.Language + ".Update",
E = true,
Deny = false
}),
},
new() {
ListFormCode = formLanguage.ListFormCode,
RoleId = null,
UserId = null,
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "CultureName",
Width = 150,
ListOrderNo = 1,
Visible = true,
IsActive = true,
IsDeleted = false,
SortIndex = 1,
SortDirection = GridColumnOptions.SortOrderAsc,
AllowSearch = true,
ValidationRuleJson = JsonSerializer.Serialize(new ValidationRuleDto[] {
new() { Type = Enum.GetName(UiColumnValidationRuleTypeEnum.required)}
}),
PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto
{
C = AppCodes.Languages.Language + ".Create",
R = AppCodes.Languages.Language,
U = AppCodes.Languages.Language + ".Update",
E = true,
Deny = false
}),
},
new()
{
ListFormCode = formLanguage.ListFormCode,
RoleId = null,
UserId = null,
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "UiCultureName",
Width = 150,
ListOrderNo = 2,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ValidationRuleJson = JsonSerializer.Serialize(new ValidationRuleDto[] {
new() { Type = Enum.GetName(UiColumnValidationRuleTypeEnum.required)}
}),
PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto
{
C = AppCodes.Languages.Language + ".Create",
R = AppCodes.Languages.Language,
U = AppCodes.Languages.Language + ".Update",
E = true,
Deny = false
}),
},
new()
{
ListFormCode = formLanguage.ListFormCode,
RoleId = null,
UserId = null,
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "DisplayName",
Width = 150,
ListOrderNo = 3,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ValidationRuleJson = JsonSerializer.Serialize(new ValidationRuleDto[] {
new() { Type = Enum.GetName(UiColumnValidationRuleTypeEnum.required)}
}),
PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto
{
C = AppCodes.Languages.Language + ".Create",
R = AppCodes.Languages.Language,
U = AppCodes.Languages.Language + ".Update",
E = true,
Deny = false
}),
},
new()
{
ListFormCode = formLanguage.ListFormCode,
RoleId = null,
UserId = null,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Boolean,
FieldName = "IsEnabled",
Width = 125,
ListOrderNo = 4,
Visible = true,
IsActive = true,
IsDeleted = false,
PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto
{
C = AppCodes.Languages.Language + ".Create",
R = AppCodes.Languages.Language,
U = AppCodes.Languages.Language + ".Update",
E = true,
Deny = false
}),
},
new()
{
ListFormCode = formLanguage.ListFormCode,
RoleId = null,
UserId = null,
CultureName = LanguageCodes.En,
SourceDbType = DbType.DateTime,
FieldName = "CreationTime",
Width = 125,
ListOrderNo = 5,
Visible = true,
IsActive = true,
IsDeleted = false,
ValidationRuleJson = JsonSerializer.Serialize(new ValidationRuleDto[] {
new() { Type = Enum.GetName(UiColumnValidationRuleTypeEnum.required)}
}),
PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto
{
C = AppCodes.Languages.Language + ".Create",
R = AppCodes.Languages.Language,
U = AppCodes.Languages.Language + ".Update",
E = true,
Deny = false
}),
},
new()
{
ListFormCode = formLanguage.ListFormCode,
RoleId = null,
UserId = null,
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "MultipleCultures",
Width = 250,
ListOrderNo = 6,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ColumnFilterJson = JsonSerializer.Serialize(new ColumnFilterDto
{
AllowFiltering = true
}),
LookupJson = JsonSerializer.Serialize(new LookupDto
{
DataSourceType = UiLookupDataSourceTypeEnum.Query,
DisplayExpr = "Name",
ValueExpr = "Key",
LookupQuery = $"SELECT \"CultureName\" AS \"Key\", \"DisplayName\" AS \"Name\", \"CreationTime\" FROM \"{DbTablePrefix}Language\" WHERE \"IsEnabled\" = 'true' and \"IsDeleted\" = 'false'"
//TODO: Tasi grid editingform
// EditorTemplateTagBox = new EditorTagBoxDto()
// {
// ApplyValueMode = "useButtons",
// SearchEnabled = true,
// MaxDisplayedTags = 3
// }
}),
PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto
{
C = AppCodes.Languages.Language + ".Create",
R = AppCodes.Languages.Language,
U = AppCodes.Languages.Language + ".Update",
E = true,
Deny = false
}),
},
]);
#endregion
}
}