ListForm_Administration güncellemesi

This commit is contained in:
Sedat ÖZTÜRK 2025-11-04 15:29:56 +03:00
parent c085c9e870
commit 5dc927cbbe
26 changed files with 339 additions and 242 deletions

View file

@ -5,7 +5,7 @@ namespace Kurs.Platform.Intranet;
public class EventCommentDto
{
public string Id { get; set; }
public EventOrganizerDto Author { get; set; }
public EventOrganizerDto Employee { get; set; }
public string Content { get; set; }
public DateTime CreationTime { get; set; }
public int Likes { get; set; }

View file

@ -1,10 +0,0 @@
using System;
namespace Kurs.Platform.Public;
public class AuthorDto
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Avatar { get; set; }
}

View file

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using Kurs.Platform.Intranet;
using Volo.Abp.Application.Dtos;
namespace Kurs.Platform.Public;
@ -17,7 +18,8 @@ public class BlogPostDto : FullAuditedEntityDto<Guid>
public Guid CategoryId { get; set; }
public BlogCategoryDto Category { get; set; }
public AuthorDto Author { get; set; }
public Guid EmployeeId { get; set; }
public EmployeeDto Employee { get; set; }
public int ViewCount { get; set; }
public int LikeCount { get; set; }

View file

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using Kurs.Platform.Intranet;
using Volo.Abp.Application.Dtos;
namespace Kurs.Platform.Public;
@ -15,8 +16,11 @@ public class BlogPostListDto : EntityDto<Guid>
public string ContentTr { get; set; }
public string ContentEn { get; set; }
public Guid CategoryId { get; set; }
public BlogCategoryDto Category { get; set; }
public AuthorDto Author { get; set; }
public Guid EmployeeId { get; set; }
public EmployeeDto Employee { get; set; }
public int ViewCount { get; set; }
public int LikeCount { get; set; }

View file

@ -11,7 +11,7 @@ public class CreateUpdateBlogPostDto
public string ContentTr { get; set; }
public string ContentEn { get; set; }
public string Summary { get; set; }
public DateTime ReadTime { get; set; }
public string ReadTime { get; set; }
public string CoverImage { get; set; }
public Guid CategoryId { get; set; }
public List<string> Tags { get; set; }

View file

@ -16,7 +16,6 @@ public interface IBlogAppService : IApplicationService
Task<BlogPostDto> UnpublishPostAsync(Guid id);
// Blog Category methods
// Task<List<BlogCategoryDto>> GetCategoriesAsync();
Task<BlogCategoryDto> GetCategoryAsync(Guid id);
Task<BlogCategoryDto> CreateCategoryAsync(CreateUpdateBlogCategoryDto input);
Task<BlogCategoryDto> UpdateCategoryAsync(Guid id, CreateUpdateBlogCategoryDto input);
@ -34,7 +33,7 @@ public class SearchBlogPostsInput : PagedAndSortedResultRequestDto
public string Query { get; set; }
public Guid? CategoryId { get; set; }
public string Tag { get; set; }
public Guid? AuthorId { get; set; }
public Guid? EmployeeId { get; set; }
public bool? IsPublished { get; set; }
}

View file

@ -42,7 +42,7 @@ public class BlogAppService : PlatformAppService, IBlogAppService
ReadTime = input.ReadTime,
CoverImage = input.CoverImage,
CategoryId = input.CategoryId,
AuthorId = _currentUser.Id.Value,
EmployeeId = _currentUser.Id.Value,
IsPublished = true,
};
@ -61,13 +61,6 @@ public class BlogAppService : PlatformAppService, IBlogAppService
await _categoryRepository.GetAsync(post.CategoryId)
);
// Get author info
dto.Author = new AuthorDto
{
Id = post.AuthorId,
Name = "User"
};
return dto;
}
@ -75,7 +68,7 @@ public class BlogAppService : PlatformAppService, IBlogAppService
{
var post = await _postRepository.GetAsync(id);
if (post.AuthorId != _currentUser.Id && !await AuthorizationService.IsGrantedAsync("App.BlogManagement.Update"))
if (post.EmployeeId != _currentUser.Id && !await AuthorizationService.IsGrantedAsync("App.BlogManagement.Update"))
{
throw new Volo.Abp.Authorization.AbpAuthorizationException();
}
@ -112,7 +105,7 @@ public class BlogAppService : PlatformAppService, IBlogAppService
var post = await _postRepository.GetAsync(id);
// Check if user is author or has permission
if (post.AuthorId != _currentUser.Id && !await AuthorizationService.IsGrantedAsync("App.BlogManagement.Delete"))
if (post.EmployeeId != _currentUser.Id && !await AuthorizationService.IsGrantedAsync("App.BlogManagement.Delete"))
{
throw new Volo.Abp.Authorization.AbpAuthorizationException();
}
@ -130,7 +123,7 @@ public class BlogAppService : PlatformAppService, IBlogAppService
var post = await _postRepository.GetAsync(id);
// Check if user is author or has permission
if (post.AuthorId != _currentUser.Id && !await AuthorizationService.IsGrantedAsync("App.BlogManagement.Publish"))
if (post.EmployeeId != _currentUser.Id && !await AuthorizationService.IsGrantedAsync("App.BlogManagement.Publish"))
{
throw new Volo.Abp.Authorization.AbpAuthorizationException();
}
@ -146,7 +139,7 @@ public class BlogAppService : PlatformAppService, IBlogAppService
var post = await _postRepository.GetAsync(id);
// Check if user is author or has permission
if (post.AuthorId != _currentUser.Id && !await AuthorizationService.IsGrantedAsync("App.BlogManagement.Publish"))
if (post.EmployeeId != _currentUser.Id && !await AuthorizationService.IsGrantedAsync("App.BlogManagement.Publish"))
{
throw new Volo.Abp.Authorization.AbpAuthorizationException();
}

View file

@ -384,7 +384,7 @@ public class IntranetAppService : PlatformAppService, IIntranetAppService
calendarEvent.Comments.Add(new EventCommentDto
{
Id = comment.Id.ToString(),
Author = new EventOrganizerDto
Employee = new EventOrganizerDto
{
Id = commentAuthor.Id,
Name = commentAuthor.FullName,

View file

@ -12,6 +12,7 @@ using Volo.Abp.Domain.Entities;
using System.Linq;
using Volo.Abp.Application.Dtos;
using System.Text.Json;
using Kurs.Platform.Intranet;
namespace Kurs.Platform.Public;
@ -29,6 +30,7 @@ public class PublicAppService : PlatformAppService
private readonly IRepository<Order, Guid> _orderRepository;
private readonly IRepository<About, Guid> _aboutRepository;
private readonly IRepository<Contact, Guid> _contactRepository;
private readonly IRepository<Employee, Guid> _employeeRepository;
public PublicAppService(
IRepository<Service, Guid> serviceRepository,
@ -42,8 +44,9 @@ public class PublicAppService : PlatformAppService
IRepository<InstallmentOption> installmentOptionRepository,
IRepository<Order, Guid> orderRepository,
IRepository<About, Guid> aboutRepository,
IRepository<Contact, Guid> contactRepository
)
IRepository<Contact, Guid> contactRepository,
IRepository<Employee, Guid> employeeRepository
)
{
_serviceRepository = serviceRepository;
_settingProvider = settingProvider;
@ -57,6 +60,7 @@ public class PublicAppService : PlatformAppService
_orderRepository = orderRepository;
_aboutRepository = aboutRepository;
_contactRepository = contactRepository;
_employeeRepository = employeeRepository;
}
public async Task<List<ServiceDto>> GetServicesListAsync()
@ -127,6 +131,10 @@ public class PublicAppService : PlatformAppService
var pageCategories = await _categoryRepository.GetListAsync(x => categoryIds.Contains(x.Id));
var categoryDict = pageCategories.ToDictionary(x => x.Id, x => x);
var employeeIds = pagedPosts.Select(x => x.EmployeeId).Distinct().ToList();
var pageEmployees = await _employeeRepository.GetListAsync(x => employeeIds.Contains(x.Id));
var employeeDict = pageEmployees.ToDictionary(x => x.Id, x => x);
// Post DTO mapping
var postDtos = pagedPosts.Select(post =>
{
@ -136,7 +144,11 @@ public class PublicAppService : PlatformAppService
dto.Category = ObjectMapper.Map<BlogCategory, BlogCategoryDto>(c);
}
dto.Author = new AuthorDto { Id = post.AuthorId, Name = "User" };
if (employeeDict.TryGetValue(post.EmployeeId, out var e))
{
dto.Employee = ObjectMapper.Map<Employee, EmployeeDto>(e);
}
return dto;
}).ToList();
@ -176,13 +188,6 @@ public class PublicAppService : PlatformAppService
await _categoryRepository.GetAsync(post.CategoryId)
);
// Get author info
dto.Author = new AuthorDto
{
Id = post.AuthorId,
Name = "User"
};
return dto;
}

View file

@ -340,7 +340,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Name",
Width = 300,
Width = 400,
ListOrderNo = 2,
Visible = true,
IsActive = true,
@ -355,7 +355,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "DisplayName",
Width = 300,
Width = 500,
ListOrderNo = 3,
Visible = true,
IsActive = true,
@ -427,11 +427,12 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
{
new() { Order=1, ColCount=1, ColSpan=2, ItemType="group", Items =[
new EditingFormItemDto { Order=1, DataField="GroupName", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order=2, DataField="Name", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=3, DataField="DisplayName", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order=4, DataField="IsEnabled", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxCheckBox },
new EditingFormItemDto { Order=5, DataField="MultiTenancySide", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order=6, DataField="MenuGroup", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxTagBox },
new EditingFormItemDto { Order=2, DataField="ParentName", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order=3, DataField="Name", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=4, DataField="DisplayName", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order=5, DataField="IsEnabled", ColSpan=2, EditorType2=EditorTypes.dxCheckBox },
new EditingFormItemDto { Order=6, DataField="MultiTenancySide", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order=7, DataField="MenuGroup", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxTagBox },
]}
}),
FormFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] {
@ -463,7 +464,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "GroupName",
Width = 200,
Width = 300,
ListOrderNo = 2,
Visible = true,
IsActive = true,
@ -475,7 +476,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
DataSourceType = UiLookupDataSourceTypeEnum.Query,
DisplayExpr = "Name",
ValueExpr = "Key",
LookupQuery = $"SELECT \"AbpPermissions\".\"GroupName\" AS \"Key\", \"AbpPermissions\".\"GroupName\" as \"Name\" FROM \"AbpPermissions\" GROUP BY \"AbpPermissions\".\"GroupName\" ORDER BY \"AbpPermissions\".\"GroupName\"",
LookupQuery = LookupQueryValues.PermissionGroupValues
}),
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
@ -487,7 +488,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "ParentName",
Width = 200,
Width = 300,
ListOrderNo = 3,
Visible = true,
IsActive = true,
@ -503,7 +504,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Name",
Width = 250,
Width = 300,
ListOrderNo = 4,
Visible = true,
IsActive = true,
@ -519,7 +520,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "DisplayName",
Width = 250,
Width = 400,
ListOrderNo = 5,
Visible = true,
IsActive = true,
@ -542,7 +543,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.Boolean,
FieldName = "IsEnabled",
Width = 85,
Width = 100,
ListOrderNo = 6,
Visible = true,
IsActive = true,
@ -557,7 +558,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.Int16,
FieldName = "MultiTenancySide",
Width = 85,
Width = 100,
ListOrderNo = 7,
Visible = true,
IsActive = true,
@ -584,7 +585,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "MenuGroup",
Width = 85,
Width = 200,
ListOrderNo = 8,
Visible = true,
IsActive = true,
@ -641,7 +642,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
PagerOptionJson = DefaultPagerOptionJson,
EditingOptionJson = JsonSerializer.Serialize(new GridEditingDto
{
Popup = new GridEditingPopupDto() { Title = AppCodes.IdentityManagement.ClaimTypes, Width = 500, Height = 550 },
Popup = new GridEditingPopupDto() { Title = AppCodes.IdentityManagement.ClaimTypes, Width = 500, Height = 300 },
AllowDeleting = true,
AllowAdding = true,
AllowUpdating = true,
@ -652,11 +653,11 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
new() { Order=1, ColCount=1, ColSpan=2, ItemType="group", Items =[
new EditingFormItemDto { Order=1, DataField="Name", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=2, DataField="ValueType", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxSelectBox, EditorOptions = EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order=3, DataField="Required", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxCheckBox },
new EditingFormItemDto { Order=4, DataField="IsStatic", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxCheckBox },
new EditingFormItemDto { Order=5, DataField="Regex", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=6, DataField="RegexDescription", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=7, DataField="Description", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=3, DataField="Required", ColSpan=2, EditorType2=EditorTypes.dxCheckBox },
new EditingFormItemDto { Order=4, DataField="IsStatic", ColSpan=2, EditorType2=EditorTypes.dxCheckBox },
new EditingFormItemDto { Order=5, DataField="Regex", ColSpan=2, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=6, DataField="RegexDescription", ColSpan=2, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=7, DataField="Description", ColSpan=2, EditorType2=EditorTypes.dxTextArea },
]}
}),
DeleteCommand = "DELETE FROM \"AbpClaimTypes\" WHERE \"Id\"=@Id",
@ -685,7 +686,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.Guid,
FieldName = "Id",
Width = 500,
Width = 100,
ListOrderNo = 0,
Visible = false,
IsActive = true,
@ -716,7 +717,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.Int16,
FieldName = "ValueType",
Width = 100,
Width = 150,
ListOrderNo = 2,
Visible = true,
IsActive = true,
@ -789,7 +790,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "RegexDescription",
Width = 250,
Width = 300,
ListOrderNo = 6,
Visible = true,
IsActive = true,
@ -805,7 +806,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Description",
Width = 250,
Width = 300,
ListOrderNo = 7,
Visible = true,
IsActive = true,
@ -861,8 +862,8 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
EditingFormJson = JsonSerializer.Serialize(new List<EditingFormDto>() {
new() { Order=1, ColCount=1, ColSpan=2, ItemType="group", Items=[
new EditingFormItemDto { Order = 1, DataField = "Name", ColSpan = 2, IsRequired = true, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 2, DataField = "IsDefault", ColSpan = 2, IsRequired = false, EditorType2=EditorTypes.dxCheckBox },
new EditingFormItemDto { Order = 3, DataField = "IsPublic", ColSpan = 2, IsRequired = false, EditorType2=EditorTypes.dxCheckBox },
new EditingFormItemDto { Order = 2, DataField = "IsDefault", ColSpan = 2, EditorType2=EditorTypes.dxCheckBox },
new EditingFormItemDto { Order = 3, DataField = "IsPublic", ColSpan = 2, EditorType2=EditorTypes.dxCheckBox },
]}
}),
DeleteCommand = "DELETE FROM \"AbpRoles\" WHERE \"Id\"=@Id",
@ -907,7 +908,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Name",
Width = 400,
Width = 500,
ListOrderNo = 1,
Visible = true,
IsActive = true,
@ -927,7 +928,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.Boolean,
FieldName = "IsDefault",
Width = 85,
Width = 100,
ListOrderNo = 2,
Visible = true,
IsActive = true,
@ -943,7 +944,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.Boolean,
FieldName = "IsPublic",
Width = 85,
Width = 100,
ListOrderNo = 3,
Visible = true,
IsActive = true,
@ -1008,7 +1009,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
new EditingFormItemDto { Order=3, DataField="Surname", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=4, DataField="PhoneNumber", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=5, DataField="Password", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=6, DataField="IsActive", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxCheckBox },
new EditingFormItemDto { Order=6, DataField="IsActive", ColSpan=2, EditorType2=EditorTypes.dxCheckBox },
]}
}),
InsertServiceAddress = "list-form-dynamic-api/user-insert",
@ -1048,7 +1049,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.Guid,
FieldName = "Id",
Width = 125,
Width = 100,
ListOrderNo = 1,
Visible = false,
IsActive = true,
@ -1065,7 +1066,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Email",
Width = 250,
Width = 300,
ListOrderNo = 2,
Visible = true,
IsActive = true,
@ -1215,7 +1216,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
PagerOptionJson = DefaultPagerOptionJson,
EditingOptionJson = JsonSerializer.Serialize(new GridEditingDto
{
Popup = new GridEditingPopupDto() { Title = ListFormCodes.Lists.IpRestriction, Width = 800, Height = 500 },
Popup = new GridEditingPopupDto() { Title = ListFormCodes.Lists.IpRestriction, Width = 500, Height = 300 },
AllowDeleting = true,
AllowAdding = true,
AllowUpdating = true,
@ -1224,8 +1225,8 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
EditingFormJson = JsonSerializer.Serialize(new List<EditingFormDto>() {
new() { Order=1,ColCount=1,ColSpan=2,ItemType="group", Items=[
new EditingFormItemDto { Order = 1, DataField = "ResourceType", ColSpan = 2, IsRequired = true, EditorType2=EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order = 2, DataField = "ResourceId", ColSpan = 2, IsRequired = false, EditorType2=EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order = 3, DataField = "IP", ColSpan = 2, IsRequired = false, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 2, DataField = "ResourceId", ColSpan = 2, EditorType2=EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order = 3, DataField = "IP", ColSpan = 2, IsRequired = true, EditorType2=EditorTypes.dxTextBox },
]}
}),
InsertFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] {
@ -1256,7 +1257,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "ResourceType",
Width = 300,
Width = 400,
ListOrderNo = 2,
Visible = true,
IsActive = true,
@ -1285,7 +1286,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "ResourceId",
Width = 300,
Width = 400,
ListOrderNo = 3,
Visible = true,
IsActive = true,
@ -1307,12 +1308,13 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "IP",
Width = 85,
Width = 100,
ListOrderNo = 4,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(AppCodes.IdentityManagement.IpRestrictions),
PivotSettingsJson = DefaultPivotSettingsJson
@ -1396,7 +1398,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
IsDeleted = false,
AllowSearch = true,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(AppCodes.AuditLogs),
PermissionJson = DefaultFieldPermissionJson(AppCodes.AuditLogs),
PivotSettingsJson = DefaultPivotSettingsJson
},
new() {
@ -1561,9 +1563,9 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
new EditingFormItemDto { Order = 3, DataField = "Method", ColSpan = 2, IsRequired = true, EditorType2=EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order = 4, DataField = "DataSourceCode", ColSpan = 2, IsRequired = true, EditorType2=EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order = 5, DataField = "Sql", ColSpan = 2, IsRequired = true, EditorType2=EditorTypes.dxTextArea, EditorOptions="{ \"height\" : 60 }" },
new EditingFormItemDto { Order = 6, DataField = "ParametersJson", ColSpan = 2, IsRequired = false, EditorType2=EditorTypes.dxTextArea, EditorOptions="{ \"height\" : 60 }" },
new EditingFormItemDto { Order = 7, DataField = "PermissionsJson", ColSpan = 2, IsRequired = false, EditorType2=EditorTypes.dxTextArea, EditorOptions="{ \"height\" : 60 }" },
new EditingFormItemDto { Order = 8, DataField = "Description", ColSpan = 2, IsRequired = false, EditorType2=EditorTypes.dxTextArea, EditorOptions="{\"height\":200}" },
new EditingFormItemDto { Order = 6, DataField = "ParametersJson", ColSpan = 2, EditorType2=EditorTypes.dxTextArea, EditorOptions="{ \"height\" : 60 }" },
new EditingFormItemDto { Order = 7, DataField = "PermissionsJson", ColSpan = 2, EditorType2=EditorTypes.dxTextArea, EditorOptions="{ \"height\" : 60 }" },
new EditingFormItemDto { Order = 8, DataField = "Description", ColSpan = 2, EditorType2=EditorTypes.dxTextArea, EditorOptions="{\"height\":200}" },
]}
}),
InsertFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] {
@ -1791,8 +1793,8 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
ItemType = "group",
Items = [
new EditingFormItemDto { Order = 1, DataField = "Name", ColSpan = 2, IsRequired = true, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 2, DataField = "Description", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxTextArea },
new EditingFormItemDto { Order = 3, DataField = "Icon", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 2, DataField = "Description", ColSpan = 2, EditorType2 = EditorTypes.dxTextArea },
new EditingFormItemDto { Order = 3, DataField = "Icon", ColSpan = 2, EditorType2 = EditorTypes.dxTextBox },
]}
}),
DeleteCommand = $"UPDATE \"{FullNameTable(TableNameEnum.ReportCategory)}\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\"=@Id",
@ -1847,7 +1849,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Description",
Width = 500,
Width = 600,
ListOrderNo = 3,
Visible = true,
IsActive = true,
@ -2047,7 +2049,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
PagerOptionJson = DefaultPagerOptionJson,
EditingOptionJson = JsonSerializer.Serialize(new GridEditingDto
{
Popup = new GridEditingPopupDto { Title = AppCodes.Services, Width = 500, Height = 450 },
Popup = new GridEditingPopupDto { Title = AppCodes.Services, Width = 500, Height = 300 },
AllowDeleting = true,
AllowAdding = true,
AllowUpdating = true,
@ -2063,10 +2065,10 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
Items =
[
new EditingFormItemDto { Order = 1, DataField = "Title", ColSpan = 2, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order = 2, DataField = "Icon", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 3, DataField = "Description", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order = 4, DataField = "Type", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order = 5, DataField = "Features", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxTextArea },
new EditingFormItemDto { Order = 2, DataField = "Icon", ColSpan = 2, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 3, DataField = "Description", ColSpan = 2, EditorType2 = EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order = 4, DataField = "Type", ColSpan = 2, EditorType2 = EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order = 5, DataField = "Features", ColSpan = 2, EditorType2 = EditorTypes.dxTextArea },
]
}
}),
@ -2106,7 +2108,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Title",
Width = 200,
Width = 400,
ListOrderNo = 2,
Visible = true,
IsActive = true,
@ -2128,7 +2130,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Icon",
Width = 150,
Width = 100,
ListOrderNo = 3,
Visible = true,
IsActive = true,
@ -2144,7 +2146,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Description",
Width = 150,
Width = 500,
ListOrderNo = 4,
Visible = true,
IsActive = true,
@ -2191,7 +2193,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Features",
Width = 200,
Width = 500,
ListOrderNo = 6,
Visible = true,
IsActive = true,
@ -2265,8 +2267,8 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
new EditingFormItemDto { Order = 2, DataField = "Description", ColSpan = 2, EditorType2 = EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order = 3, DataField = "Category", ColSpan = 2, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order = 4, DataField = "Order", ColSpan = 2, IsRequired = true, EditorType2 = EditorTypes.dxNumberBox },
new EditingFormItemDto { Order = 5, DataField = "MonthlyPrice", ColSpan = 2, EditorType2 = EditorTypes.dxNumberBox, EditorOptions=EditorOptionValues.NumberStandartFormat },
new EditingFormItemDto { Order = 6, DataField = "YearlyPrice", ColSpan = 2, EditorType2 = EditorTypes.dxNumberBox, EditorOptions=EditorOptionValues.NumberStandartFormat },
new EditingFormItemDto { Order = 5, DataField = "MonthlyPrice", ColSpan = 2, IsRequired = true, EditorType2 = EditorTypes.dxNumberBox, EditorOptions=EditorOptionValues.NumberStandartFormat },
new EditingFormItemDto { Order = 6, DataField = "YearlyPrice", ColSpan = 2, IsRequired = true, EditorType2 = EditorTypes.dxNumberBox, EditorOptions=EditorOptionValues.NumberStandartFormat },
new EditingFormItemDto { Order = 7, DataField = "IsQuantityBased", ColSpan = 2, EditorType2 = EditorTypes.dxCheckBox },
new EditingFormItemDto { Order = 8, DataField = "ImageUrl", ColSpan = 2, EditorType2 = EditorTypes.dxTextBox },
]
@ -2304,7 +2306,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Name",
Width = 300,
Width = 400,
ListOrderNo = 2,
Visible = true,
IsActive = true,
@ -2327,7 +2329,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Description",
Width = 300,
Width = 500,
ListOrderNo = 3,
Visible = true,
IsActive = true,
@ -2384,6 +2386,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(AppCodes.Orders.Products),
},
@ -2401,6 +2404,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(AppCodes.Orders.Products),
},
@ -2425,7 +2429,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "ImageUrl",
Width = 300,
Width = 400,
ListOrderNo = 9,
Visible = true,
IsActive = true,
@ -2460,8 +2464,9 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
SelectCommandType = SelectCommandTypeEnum.Table,
SelectCommand = TableNameResolver.GetFullTableName(nameof(TableNameEnum.PaymentMethod)),
KeyFieldName = "Id",
KeyFieldDbSourceType = DbType.String,
KeyFieldDbSourceType = DbType.Guid,
SortMode = GridOptions.SortModeSingle,
DefaultFilter = DefaultFilterJson,
FilterRowJson = JsonSerializer.Serialize(new GridFilterRowDto { Visible = true }),
HeaderFilterJson = JsonSerializer.Serialize(new { Visible = true }),
SearchPanelJson = JsonSerializer.Serialize(new { Visible = true }),
@ -2499,6 +2504,14 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
new FieldsDefaultValue { FieldName = "DeleterId", FieldDbType = DbType.Guid, Value = "@USERID", CustomValueType = FieldCustomValueTypeEnum.CustomKey },
new FieldsDefaultValue { FieldName = "Id", FieldDbType = DbType.Guid, Value = "@ID", CustomValueType = FieldCustomValueTypeEnum.CustomKey }
}),
InsertFieldsDefaultValueJson = JsonSerializer.Serialize(new[]
{
new FieldsDefaultValue { FieldName = "CreationTime", FieldDbType = DbType.DateTime, Value = "@NOW", CustomValueType = FieldCustomValueTypeEnum.CustomKey },
new FieldsDefaultValue { FieldName = "CreatorId", FieldDbType = DbType.Guid, Value = "@USERID", CustomValueType = FieldCustomValueTypeEnum.CustomKey }
}),
FormFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] {
new() { FieldName = "Commission", FieldDbType = DbType.Decimal, Value = "0", CustomValueType = FieldCustomValueTypeEnum.Value }
}),
});
#region PaymentMethod Fields
@ -2511,7 +2524,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
FieldName = "Id",
Width = 100,
ListOrderNo = 1,
Visible = true,
Visible = false,
IsActive = true,
IsDeleted = false,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
@ -2542,7 +2555,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
FieldName = "Commission",
Format = "fixedPoint",
Alignment = "right",
Width = 100,
Width = 200,
ListOrderNo = 3,
Visible = true,
IsActive = true,
@ -2557,7 +2570,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Logo",
Width = 300,
Width = 500,
ListOrderNo = 4,
Visible = true,
IsActive = true,
@ -2595,6 +2608,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
KeyFieldName = "Id",
KeyFieldDbSourceType = DbType.Guid,
SortMode = GridOptions.SortModeSingle,
DefaultFilter = DefaultFilterJson,
FilterRowJson = JsonSerializer.Serialize(new GridFilterRowDto { Visible = true }),
HeaderFilterJson = JsonSerializer.Serialize(new { Visible = true }),
SearchPanelJson = JsonSerializer.Serialize(new { Visible = true }),
@ -2632,6 +2646,14 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
new FieldsDefaultValue { FieldName = "DeleterId", FieldDbType = DbType.Guid, Value = "@USERID", CustomValueType = FieldCustomValueTypeEnum.CustomKey },
new FieldsDefaultValue { FieldName = "Id", FieldDbType = DbType.Guid, Value = "@ID", CustomValueType = FieldCustomValueTypeEnum.CustomKey }
}),
InsertFieldsDefaultValueJson = JsonSerializer.Serialize(new[]
{
new FieldsDefaultValue { FieldName = "CreationTime", FieldDbType = DbType.DateTime, Value = "@NOW", CustomValueType = FieldCustomValueTypeEnum.CustomKey },
new FieldsDefaultValue { FieldName = "CreatorId", FieldDbType = DbType.Guid, Value = "@USERID", CustomValueType = FieldCustomValueTypeEnum.CustomKey }
}),
FormFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] {
new() { FieldName = "Commission", FieldDbType = DbType.Decimal, Value = "0", CustomValueType = FieldCustomValueTypeEnum.Value }
}),
});
#region PaymentMethod Fields
@ -2657,7 +2679,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Installment",
Width = 100,
Width = 200,
ListOrderNo = 2,
Visible = true,
IsActive = true,
@ -2673,7 +2695,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Name",
Width = 200,
Width = 500,
ListOrderNo = 3,
Visible = true,
IsActive = true,
@ -2771,7 +2793,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
[
new EditingFormItemDto { Order = 11, DataField = "PhoneNumber", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxTextBox, EditorOptions=EditorOptionValues.PhoneEditorOptions },
new EditingFormItemDto { Order = 12, DataField = "MobileNumber", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxTextBox, EditorOptions=EditorOptionValues.PhoneEditorOptions },
new EditingFormItemDto { Order = 13, DataField = "FaxNumber", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxTextBox, EditorOptions=EditorOptionValues.PhoneEditorOptions },
new EditingFormItemDto { Order = 13, DataField = "FaxNumber", ColSpan = 1, EditorType2 = EditorTypes.dxTextBox, EditorOptions=EditorOptionValues.PhoneEditorOptions },
new EditingFormItemDto { Order = 14, DataField = "Email", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 15, DataField = "Website", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 16, DataField = "Subtotal", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxNumberBox, EditorOptions=EditorOptionValues.NumberStandartFormat },
@ -2779,6 +2801,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
new EditingFormItemDto { Order = 18, DataField = "Total", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxNumberBox, EditorOptions=EditorOptionValues.NumberStandartFormat },
new EditingFormItemDto { Order = 19, DataField = "PaymentMethodId", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order = 20, DataField = "Installment", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order = 21, DataField = "IsActive", ColSpan = 1, EditorType2 = EditorTypes.dxCheckBox },
]
}
}),
@ -2788,7 +2811,9 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
new FieldsDefaultValue { FieldName = "CreatorId", FieldDbType = DbType.Guid, Value = "@USERID", CustomValueType = FieldCustomValueTypeEnum.CustomKey }
}),
FormFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] {
new() { FieldName = "Country", FieldDbType = DbType.String, Value = "TR", CustomValueType = FieldCustomValueTypeEnum.Value }
new() { FieldName = "Country", FieldDbType = DbType.String, Value = "TR", CustomValueType = FieldCustomValueTypeEnum.Value },
new() { FieldName = "IsActive", FieldDbType = DbType.Boolean, Value = "true", CustomValueType = FieldCustomValueTypeEnum.Value },
new() { FieldName = "Commission", FieldDbType = DbType.Decimal, Value = "0", CustomValueType = FieldCustomValueTypeEnum.Value }
})
});
@ -2831,12 +2856,13 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Founder",
Width = 100,
Width = 150,
ListOrderNo = 3,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(AppCodes.Orders.PurchaseOrders),
},
@ -2862,12 +2888,13 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "TaxOffice",
Width = 100,
Width = 150,
ListOrderNo = 5,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(AppCodes.Orders.PurchaseOrders),
},
@ -2877,12 +2904,13 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Address1",
Width = 100,
Width = 300,
ListOrderNo = 6,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(AppCodes.Orders.PurchaseOrders),
},
@ -2892,7 +2920,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Address2",
Width = 100,
Width = 300,
ListOrderNo = 7,
Visible = true,
IsActive = true,
@ -2921,6 +2949,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
LookupQuery = LookupQueryValues.CountryValues,
CascadeEmptyFields = "City,District"
}),
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(AppCodes.Orders.PurchaseOrders),
},
@ -2947,6 +2976,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CascadeParentFields = "Country",
CascadeEmptyFields = "District"
}),
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(AppCodes.Orders.PurchaseOrders),
},
@ -2972,6 +3002,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CascadeFilterOperator="=",
CascadeParentFields = "Country,City",
}),
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(AppCodes.Orders.PurchaseOrders),
},
@ -2988,6 +3019,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
IsDeleted = false,
AllowSearch = true,
EditorOptions = EditorOptionValues.PhoneEditorOptions,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(AppCodes.Orders.PurchaseOrders),
},
@ -3004,6 +3036,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
IsDeleted = false,
AllowSearch = true,
EditorOptions = EditorOptionValues.PhoneEditorOptions,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(AppCodes.Orders.PurchaseOrders),
},
@ -3029,12 +3062,13 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Website",
Width = 100,
Width = 200,
ListOrderNo = 14,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(AppCodes.Orders.PurchaseOrders),
},
@ -3052,6 +3086,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(AppCodes.Orders.PurchaseOrders),
},
@ -3069,6 +3104,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(AppCodes.Orders.PurchaseOrders),
},
@ -3086,6 +3122,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(AppCodes.Orders.PurchaseOrders),
},
@ -3095,7 +3132,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.Guid,
FieldName = "PaymentMethodId",
Width = 100,
Width = 150,
ListOrderNo = 18,
Visible = true,
IsActive = true,
@ -3108,6 +3145,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
ValueExpr = "Key",
LookupQuery = LookupQueryValues.PaymentMethodValues
}),
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(AppCodes.Orders.PurchaseOrders),
},
@ -3130,6 +3168,22 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
ValueExpr = "Key",
LookupQuery = LookupQueryValues.InstallmentValues
}),
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(AppCodes.Orders.PurchaseOrders),
},
new()
{
ListFormCode = listFormPurchaseOrder.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Boolean,
FieldName = "IsActive",
Width = 100,
ListOrderNo = 20,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(AppCodes.Orders.PurchaseOrders),
}
@ -3196,9 +3250,9 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
new EditingFormItemDto { Order = 1, DataField = "Name", ColSpan = 2, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order = 2, DataField = "Slug", ColSpan = 2, IsRequired = true, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 3, DataField = "Description", ColSpan = 2, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order = 4, DataField = "Icon", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 4, DataField = "Icon", ColSpan = 2, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 5, DataField = "DisplayOrder", ColSpan = 2, IsRequired = true, EditorType2 = EditorTypes.dxNumberBox },
new EditingFormItemDto { Order = 6, DataField = "IsActive", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxCheckBox }
new EditingFormItemDto { Order = 6, DataField = "IsActive", ColSpan = 2, EditorType2 = EditorTypes.dxCheckBox }
]
}
}),
@ -3273,7 +3327,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Description",
Width = 400,
Width = 500,
ListOrderNo = 4,
Visible = true,
IsActive = true,
@ -3302,7 +3356,6 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(AppCodes.BlogManagement.BlogCategory),
},
@ -3318,6 +3371,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(AppCodes.BlogManagement.BlogCategory),
},
@ -3399,14 +3453,14 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
new EditingFormItemDto { Order = 1, DataField = "Title", ColSpan = 2, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order = 2, DataField = "Slug", ColSpan = 2, IsRequired = true, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 3, DataField = "Summary", ColSpan = 2, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order = 4, DataField = "CoverImage", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 5, DataField = "ReadTime", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 4, DataField = "CoverImage", ColSpan = 2, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 5, DataField = "ReadTime", ColSpan = 2, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 6, DataField = "CategoryId", ColSpan = 2, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order = 7, DataField = "ViewCount", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxNumberBox, EditorOptions=EditorOptionValues.NumberStandartFormat },
new EditingFormItemDto { Order = 8, DataField = "LikeCount", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxNumberBox, EditorOptions=EditorOptionValues.NumberStandartFormat },
new EditingFormItemDto { Order = 9, DataField = "CommentCount", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxNumberBox, EditorOptions=EditorOptionValues.NumberStandartFormat },
new EditingFormItemDto { Order = 10, DataField = "IsPublished", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxCheckBox },
new EditingFormItemDto { Order = 11, DataField = "PublishedAt", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxDateBox },
new EditingFormItemDto { Order = 7, DataField = "ViewCount", ColSpan = 2, EditorType2 = EditorTypes.dxNumberBox, EditorOptions=EditorOptionValues.NumberStandartFormat },
new EditingFormItemDto { Order = 8, DataField = "LikeCount", ColSpan = 2, EditorType2 = EditorTypes.dxNumberBox, EditorOptions=EditorOptionValues.NumberStandartFormat },
new EditingFormItemDto { Order = 9, DataField = "CommentCount", ColSpan = 2, EditorType2 = EditorTypes.dxNumberBox, EditorOptions=EditorOptionValues.NumberStandartFormat },
new EditingFormItemDto { Order = 10, DataField = "IsPublished", ColSpan = 2, EditorType2 = EditorTypes.dxCheckBox },
new EditingFormItemDto { Order = 11, DataField = "PublishedAt", ColSpan = 2, EditorType2 = EditorTypes.dxDateBox },
new EditingFormItemDto { Order = 12, DataField = "ContentTr", ColSpan = 2, IsRequired = true, EditorType2 = EditorTypes.dxHtmlEditor, EditorOptions=EditorOptionValues.HtmlEditorOptions },
new EditingFormItemDto { Order = 13, DataField = "ContentEn", ColSpan = 2, IsRequired = true, EditorType2 = EditorTypes.dxHtmlEditor, EditorOptions=EditorOptionValues.HtmlEditorOptions }
]
@ -4648,7 +4702,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
[
new EditingFormItemDto { Order = 1, DataField = "Name", ColSpan = 2, IsRequired = true, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 2, DataField = "Progress", ColSpan = 2, IsRequired = true, EditorType2=EditorTypes.dxNumberBox },
new EditingFormItemDto { Order = 3, DataField = "IsDefault", ColSpan = 2, IsRequired = false, EditorType2=EditorTypes.dxCheckBox },
new EditingFormItemDto { Order = 3, DataField = "IsDefault", ColSpan = 2, EditorType2=EditorTypes.dxCheckBox },
new EditingFormItemDto { Order = 4, DataField = "SkillTypeId", ColSpan = 2, IsRequired = true, EditorType2=EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
]
}

View file

@ -317,6 +317,12 @@ public static class LookupQueryValues
$"WHERE \"IsEnabled\" = 'true' " +
$"ORDER BY \"Name\";";
public static string PermissionGroupValues =
$"SELECT \"Name\" AS \"Key\", " +
$"\"DisplayName\" AS \"Name\" " +
$"FROM \"AbpPermissionGroups\" " +
$"ORDER BY \"Name\";";
public static string MenuCodeValues =
$"SELECT " +
$"\"Code\" AS \"Key\", " +

View file

@ -14,12 +14,13 @@ public class BlogPost : FullAuditedEntity<Guid>, IMultiTenant
public string ContentEn { get; set; }
public string Summary { get; set; }
public string CoverImage { get; set; }
public DateTime ReadTime { get; set; }
public string ReadTime { get; set; }
public Guid CategoryId { get; set; }
public virtual BlogCategory Category { get; set; }
public Guid AuthorId { get; set; }
public Guid EmployeeId { get; set; }
public virtual Employee Employee { get; set; }
public int? ViewCount { get; set; } = 0;
public int? LikeCount { get; set; } = 0;

View file

@ -74,5 +74,6 @@ public class Employee : FullAuditedEntity<Guid>, IMultiTenant
public ICollection<Expense> ExpenseRequests { get; set; }
public ICollection<SurveyResponse> SurveyResponses { get; set; }
public ICollection<Partner> Partners { get; set; }
public ICollection<BlogPost> BlogPosts { get; set; }
}

View file

@ -1516,6 +1516,11 @@ public class PlatformDbContext :
.WithMany(x => x.Posts)
.HasForeignKey(x => x.CategoryId)
.OnDelete(DeleteBehavior.Restrict);
b.HasOne(x => x.Employee)
.WithMany(x => x.BlogPosts)
.HasForeignKey(x => x.EmployeeId)
.OnDelete(DeleteBehavior.Restrict);
});
builder.Entity<Demo>(b =>

View file

@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace Kurs.Platform.Migrations
{
[DbContext(typeof(PlatformDbContext))]
[Migration("20251104083431_Initial")]
[Migration("20251104115742_Initial")]
partial class Initial
{
/// <inheritdoc />
@ -1389,9 +1389,6 @@ namespace Kurs.Platform.Migrations
b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier");
b.Property<Guid>("AuthorId")
.HasColumnType("uniqueidentifier");
b.Property<Guid>("CategoryId")
.HasColumnType("uniqueidentifier");
@ -1426,6 +1423,9 @@ namespace Kurs.Platform.Migrations
.HasColumnType("datetime2")
.HasColumnName("DeletionTime");
b.Property<Guid>("EmployeeId")
.HasColumnType("uniqueidentifier");
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
@ -1449,8 +1449,8 @@ namespace Kurs.Platform.Migrations
b.Property<DateTime?>("PublishedAt")
.HasColumnType("datetime2");
b.Property<DateTime>("ReadTime")
.HasColumnType("datetime2");
b.Property<string>("ReadTime")
.HasColumnType("nvarchar(max)");
b.Property<string>("Slug")
.IsRequired()
@ -1478,6 +1478,8 @@ namespace Kurs.Platform.Migrations
b.HasIndex("CategoryId");
b.HasIndex("EmployeeId");
b.HasIndex("IsPublished");
b.HasIndex("PublishedAt");
@ -12415,7 +12417,15 @@ namespace Kurs.Platform.Migrations
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("Kurs.Platform.Entities.Employee", "Employee")
.WithMany()
.HasForeignKey("EmployeeId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Category");
b.Navigation("Employee");
});
modelBuilder.Entity("Kurs.Platform.Entities.BranchUsers", b =>

View file

@ -2618,45 +2618,6 @@ namespace Kurs.Platform.Migrations
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "Adm_T_BlogPost",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
Title = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: false),
Slug = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: false),
ContentTr = table.Column<string>(type: "nvarchar(max)", nullable: false),
ContentEn = table.Column<string>(type: "nvarchar(max)", nullable: false),
Summary = table.Column<string>(type: "nvarchar(512)", maxLength: 512, nullable: false),
CoverImage = table.Column<string>(type: "nvarchar(512)", maxLength: 512, nullable: true),
ReadTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CategoryId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
AuthorId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
ViewCount = table.Column<int>(type: "int", nullable: true),
LikeCount = table.Column<int>(type: "int", nullable: true),
CommentCount = table.Column<int>(type: "int", nullable: true),
IsPublished = table.Column<bool>(type: "bit", nullable: false),
PublishedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Adm_T_BlogPost", x => x.Id);
table.ForeignKey(
name: "FK_Adm_T_BlogPost_Adm_T_BlogCategory_CategoryId",
column: x => x.CategoryId,
principalTable: "Adm_T_BlogCategory",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "Adm_T_OrderItem",
columns: table => new
@ -4080,6 +4041,45 @@ namespace Kurs.Platform.Migrations
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "Adm_T_BlogPost",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
Title = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: false),
Slug = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: false),
ContentTr = table.Column<string>(type: "nvarchar(max)", nullable: false),
ContentEn = table.Column<string>(type: "nvarchar(max)", nullable: false),
Summary = table.Column<string>(type: "nvarchar(512)", maxLength: 512, nullable: false),
CoverImage = table.Column<string>(type: "nvarchar(512)", maxLength: 512, nullable: true),
ReadTime = table.Column<string>(type: "nvarchar(max)", nullable: true),
CategoryId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
EmployeeId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
ViewCount = table.Column<int>(type: "int", nullable: true),
LikeCount = table.Column<int>(type: "int", nullable: true),
CommentCount = table.Column<int>(type: "int", nullable: true),
IsPublished = table.Column<bool>(type: "bit", nullable: false),
PublishedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Adm_T_BlogPost", x => x.Id);
table.ForeignKey(
name: "FK_Adm_T_BlogPost_Adm_T_BlogCategory_CategoryId",
column: x => x.CategoryId,
principalTable: "Adm_T_BlogCategory",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "Adm_T_Partner",
columns: table => new
@ -5371,6 +5371,11 @@ namespace Kurs.Platform.Migrations
table: "Adm_T_BlogPost",
column: "CategoryId");
migrationBuilder.CreateIndex(
name: "IX_Adm_T_BlogPost_EmployeeId",
table: "Adm_T_BlogPost",
column: "EmployeeId");
migrationBuilder.CreateIndex(
name: "IX_Adm_T_BlogPost_IsPublished",
table: "Adm_T_BlogPost",
@ -6024,6 +6029,14 @@ namespace Kurs.Platform.Migrations
table: "Scp_T_MaterialGroup",
column: "ParentGroupId");
migrationBuilder.AddForeignKey(
name: "FK_Adm_T_BlogPost_Hr_T_Employee_EmployeeId",
table: "Adm_T_BlogPost",
column: "EmployeeId",
principalTable: "Hr_T_Employee",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_Adm_T_Partner_Hr_T_Employee_AssignedEmployeeId",
table: "Adm_T_Partner",

View file

@ -1386,9 +1386,6 @@ namespace Kurs.Platform.Migrations
b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier");
b.Property<Guid>("AuthorId")
.HasColumnType("uniqueidentifier");
b.Property<Guid>("CategoryId")
.HasColumnType("uniqueidentifier");
@ -1423,6 +1420,9 @@ namespace Kurs.Platform.Migrations
.HasColumnType("datetime2")
.HasColumnName("DeletionTime");
b.Property<Guid>("EmployeeId")
.HasColumnType("uniqueidentifier");
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
@ -1446,8 +1446,8 @@ namespace Kurs.Platform.Migrations
b.Property<DateTime?>("PublishedAt")
.HasColumnType("datetime2");
b.Property<DateTime>("ReadTime")
.HasColumnType("datetime2");
b.Property<string>("ReadTime")
.HasColumnType("nvarchar(max)");
b.Property<string>("Slug")
.IsRequired()
@ -1475,6 +1475,8 @@ namespace Kurs.Platform.Migrations
b.HasIndex("CategoryId");
b.HasIndex("EmployeeId");
b.HasIndex("IsPublished");
b.HasIndex("PublishedAt");
@ -12412,7 +12414,15 @@ namespace Kurs.Platform.Migrations
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("Kurs.Platform.Entities.Employee", "Employee")
.WithMany()
.HasForeignKey("EmployeeId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Category");
b.Navigation("Employee");
});
modelBuilder.Entity("Kurs.Platform.Entities.BranchUsers", b =>

View file

@ -533,7 +533,7 @@
"Summary": "blog.posts.ai.excerpt",
"CoverImage": "https://images.pexels.com/photos/8386434/pexels-photo-8386434.jpeg?auto=compress&cs=tinysrgb&w=1920",
"CategoryName": "blog.categories.technology",
"AuthorId": "1668adf0-fd2a-5216-9834-6b6874ec2a05"
"EmployeeCode": "EMP-001"
},
{
"Title": "blog.posts.web.title",
@ -544,7 +544,7 @@
"Summary": "blog.posts.web.excerpt",
"CoverImage": "https://images.pexels.com/photos/11035471/pexels-photo-11035471.jpeg?auto=compress&cs=tinysrgb&w=1920",
"CategoryName": "blog.categories.webdev",
"AuthorId": "7df16a77-92ed-50e6-8749-ae34345c01b9"
"EmployeeCode": "EMP-002"
},
{
"Title": "blog.posts.security.title",
@ -555,7 +555,7 @@
"Summary": "blog.posts.security.excerpt",
"CoverImage": "https://images.pexels.com/photos/5380642/pexels-photo-5380642.jpeg?auto=compress&cs=tinysrgb&w=1920",
"CategoryName": "blog.categories.security",
"AuthorId": "c107a187-5e41-51e1-a5b3-5bf85c16b39e"
"EmployeeCode": "EMP-003"
},
{
"Title": "blog.posts.mobile.title",
@ -566,7 +566,7 @@
"ReadTime": "4 dk",
"CoverImage": "https://images.pexels.com/photos/13017583/pexels-photo-13017583.jpeg?auto=compress&cs=tinysrgb&w=1920",
"CategoryName": "blog.categories.mobile",
"AuthorId": "c107a187-5e41-51e1-a5b3-5bf85c16b39e"
"EmployeeCode": "EMP-002"
},
{
"Title": "blog.posts.database.title",
@ -577,7 +577,7 @@
"ReadTime": "8 dk",
"CoverImage": "https://images.pexels.com/photos/325229/pexels-photo-325229.jpeg?auto=compress&cs=tinysrgb&w=1920",
"CategoryName": "blog.categories.database",
"AuthorId": "8f49d028-69d0-5d2b-abc3-559b7dee180f"
"EmployeeCode": "EMP-004"
},
{
"Title": "blog.posts.digital.title",
@ -588,7 +588,7 @@
"ReadTime": "6 dk",
"CoverImage": "https://images.pexels.com/photos/7681091/pexels-photo-7681091.jpeg?auto=compress&cs=tinysrgb&w=1920",
"CategoryName": "blog.categories.digital",
"AuthorId": "727ec3f0-75dd-54e2-8ae6-13d49727ff58"
"EmployeeCode": "EMP-005"
}
],
"Contacts": [

View file

@ -385,52 +385,6 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency
}
}
foreach (var item in items.BlogCategories)
{
var exists = await _blogCategoryRepository.AnyAsync(x => x.Name == item.Name);
if (!exists)
{
var newCategory = new BlogCategory
{
Name = item.Name,
Slug = item.Slug,
Description = item.Description,
DisplayOrder = item.DisplayOrder,
PostCount = item.PostCount
};
await _blogCategoryRepository.InsertAsync(newCategory, autoSave: true);
}
}
foreach (var item in items.BlogPosts)
{
var exists = await _blogPostsRepository.AnyAsync(x => x.Title == item.Title);
if (!exists)
{
var category = await _blogCategoryRepository.FirstOrDefaultAsync(x => x.Name == item.CategoryName);
if (category != null)
{
await _blogPostsRepository.InsertAsync(new BlogPost
{
Title = item.Title,
Slug = item.Slug,
ContentTr = item.ContentTr,
ContentEn = item.ContentEn,
Summary = item.Summary,
CoverImage = item.CoverImage,
ReadTime = item.ReadTime,
CategoryId = category.Id,
AuthorId = item.AuthorId,
IsPublished = true,
PublishedAt = DateTime.UtcNow
});
}
}
}
foreach (var item in items.ForumCategories)
{
var exists = await _forumCategoryRepository.AnyAsync(x => x.Name == item.Name);
@ -1080,6 +1034,54 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency
}, autoSave: true);
}
foreach (var item in items.BlogCategories)
{
var exists = await _blogCategoryRepository.AnyAsync(x => x.Name == item.Name);
if (!exists)
{
var newCategory = new BlogCategory
{
Name = item.Name,
Slug = item.Slug,
Description = item.Description,
DisplayOrder = item.DisplayOrder,
PostCount = item.PostCount
};
await _blogCategoryRepository.InsertAsync(newCategory, autoSave: true);
}
}
foreach (var item in items.BlogPosts)
{
var exists = await _blogPostsRepository.AnyAsync(x => x.Title == item.Title);
if (!exists)
{
var category = await _blogCategoryRepository.FirstOrDefaultAsync(x => x.Name == item.CategoryName);
var employee = await _employeeRepository.FirstOrDefaultAsync(x => x.Code == item.EmployeeCode);
if (category != null && employee != null)
{
await _blogPostsRepository.InsertAsync(new BlogPost
{
Title = item.Title,
Slug = item.Slug,
ContentTr = item.ContentTr,
ContentEn = item.ContentEn,
Summary = item.Summary,
CoverImage = item.CoverImage,
ReadTime = item.ReadTime,
CategoryId = category.Id,
EmployeeId = employee.Id,
IsPublished = true,
PublishedAt = DateTime.UtcNow
});
}
}
}
foreach (var item in items.Leaves)
{
var employee = await _employeeRepository.FirstOrDefaultAsync(x => x.Code == item.EmployeeCode);

View file

@ -513,12 +513,12 @@ public class BlogPostSeedDto
public string Slug { get; set; }
public string ContentTr { get; set; }
public string ContentEn { get; set; }
public DateTime ReadTime { get; set; }
public string ReadTime { get; set; }
public string Summary { get; set; }
public string CoverImage { get; set; }
public string CategoryName { get; set; }
public Guid AuthorId { get; set; }
public Boolean IsPublished { get; set; }
public string EmployeeCode { get; set; }
public bool IsPublished { get; set; }
public DateTime PublishedAt { get; set; }
}

View file

@ -5,6 +5,7 @@ import './index.css'
import { UiEvalService } from './services/UiEvalService'
import 'devextreme-react/text-area'
import 'devextreme-react/html-editor'
import 'devextreme-react/autocomplete'
// import config from 'devextreme/core/config'
// import { licenseKey } from './devextreme-license'

View file

@ -8,7 +8,7 @@ export interface BlogPost {
contentEn?: string
summary: string
coverImage?: string
author: {
employee: {
id: string
name: string
avatar?: string
@ -75,6 +75,6 @@ export interface BlogListParams {
categoryId?: string
tag?: string
search?: string
authorId?: string
employeeId?: string
sortBy?: 'latest' | 'popular' | 'trending'
}

View file

@ -53,7 +53,7 @@ export interface EventDto {
// Etkinlik Yorumu
export interface EventCommentDto {
id: string
author: EmployeeDto
employee: EmployeeDto
content: string
creationTime: Date
likes: number

View file

@ -1,4 +1,4 @@
import { FaTimes } from 'react-icons/fa';
import { FaTimes } from 'react-icons/fa'
import { useStoreState } from '@/store/store'
import { useLocalization } from '@/utils/hooks/useLocalization'
import { Field, FieldProps, Form, Formik } from 'formik'
@ -61,6 +61,7 @@ export function CreateTopicModal({ onClose, onSubmit }: CreateTopicModalProps) {
label={translate('::App.Forum.TopicManagement.Baslik')}
invalid={errors.title && touched.title}
errorMessage={errors.title}
asterisk
>
<Field
type="text"
@ -73,10 +74,10 @@ export function CreateTopicModal({ onClose, onSubmit }: CreateTopicModalProps) {
</FormItem>
<FormItem
asterisk
label={translate('::App.Forum.TopicManagement.Content')}
invalid={errors.content && touched.content}
errorMessage={errors.content}
asterisk
>
<Field name="content">
{({ field }: FieldProps) => (

View file

@ -194,7 +194,7 @@ const Blog = () => {
<div className="flex items-center text-sm text-gray-500 space-x-4">
<div className="flex items-center">
<FaUser size={16} className="mr-1" />
{post.author.name}
{post.employee.name}
</div>
<div className="flex items-center">
<FaCalendarAlt size={16} className="mr-1" />

View file

@ -11,7 +11,7 @@ import { Loading } from '@/components/shared'
interface PostData {
image?: string
author?: {
employee?: {
id: string
name: string
avatar?: string
@ -38,7 +38,7 @@ const BlogDetail: React.FC = () => {
setBlogPost(response)
setPostData({
image: response.coverImage,
author: response.author,
employee: response.employee,
})
} else {
setError('Blog post ID is missing.')
@ -106,7 +106,7 @@ const BlogDetail: React.FC = () => {
</h1>
<div className="flex items-center text-sm text-gray-500 space-x-4 mb-8">
<div className="flex items-center">
<span>{postData.author?.name}</span>
<span>{postData.employee?.name}</span>
</div>
<div className="flex items-center">
{blogPost.publishedAt && showDbDateAsIs(blogPost.publishedAt)}