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 _listFormRepository; private readonly IRepository _listFormFieldRepository; public FormSeeder( IRepository listFormRepository, IRepository 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() { new { TabTitle = "Language Texts", TabType = ListFormTabTypeEnum.List, Code = ListFormCodes.LanguageText, Relation = new List() { new { ParentFieldName = "CultureName", ChildFieldName = "CultureName" } } }, new { TabTitle = "Form Sütun Sayıları", TabType = ListFormTabTypeEnum.Chart, Code = ChartCodes.Chart2, Relation = new List() { 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() { 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 } }