Service Application Service
This commit is contained in:
parent
d891ae3f85
commit
7e3809f7bb
14 changed files with 7192 additions and 381 deletions
|
|
@ -0,0 +1,20 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Volo.Abp.Application.Dtos;
|
||||
|
||||
namespace Kurs.Platform.Services;
|
||||
|
||||
public class ServiceDto : FullAuditedEntityDto<Guid>
|
||||
{
|
||||
public string? Icon { get; set; }
|
||||
public string Title { get; set; }
|
||||
public string? Description { get; set; }
|
||||
public string Type { get; set; }
|
||||
|
||||
public List<ServiceFeatureDto> Features { get; set; } = new();
|
||||
}
|
||||
|
||||
public class ServiceFeatureDto : EntityDto<Guid>
|
||||
{
|
||||
public string Name { get; set; }
|
||||
}
|
||||
|
|
@ -17,5 +17,4 @@ public class DataSourceAppService : CrudAppService<
|
|||
public DataSourceAppService(IRepository<DataSource, Guid> repo) : base(repo)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Kurs.Platform.Entities;
|
||||
using Kurs.Platform.Services;
|
||||
using Volo.Abp.Domain.Repositories;
|
||||
|
||||
namespace Kurs.Platform.Dashboard;
|
||||
|
||||
public class ServiceAppService : PlatformAppService
|
||||
{
|
||||
private readonly IRepository<Service, Guid> serviceRepository;
|
||||
|
||||
public ServiceAppService(
|
||||
IRepository<Service, Guid> serviceRepository)
|
||||
{
|
||||
this.serviceRepository = serviceRepository;
|
||||
}
|
||||
|
||||
public async Task<List<ServiceDto>> GetListAsync()
|
||||
{
|
||||
var entity = await serviceRepository.GetListAsync();
|
||||
|
||||
return ObjectMapper.Map<List<Service>, List<ServiceDto>>(entity);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
using AutoMapper;
|
||||
using Kurs.Platform.Entities;
|
||||
using Kurs.Platform.Services;
|
||||
|
||||
namespace Kurs.Platform;
|
||||
|
||||
public class ServiceAutoMapperProfile : Profile
|
||||
{
|
||||
public ServiceAutoMapperProfile()
|
||||
{
|
||||
CreateMap<Service, ServiceDto>();
|
||||
CreateMap<ServiceFeature, ServiceFeatureDto>();
|
||||
}
|
||||
}
|
||||
|
|
@ -277,6 +277,8 @@ public class PlatformDataSeeder : IDataSeedContributor, ITransientDependency
|
|||
}
|
||||
|
||||
foreach (var item in items.LanguageTexts)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!keys.Any(a => a.Key == item.Key))
|
||||
{
|
||||
|
|
@ -308,6 +310,11 @@ public class PlatformDataSeeder : IDataSeedContributor, ITransientDependency
|
|||
});
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new Exception($"Hata veren Kod:' ResourceName='{item.ResourceName}', Key='{item.Key}'.");
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var item in items.GlobalSearch)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -3461,18 +3461,14 @@
|
|||
"path": "/admin/menuManager",
|
||||
"componentPath": "@/views/menu/MenuManager",
|
||||
"routeType": "protected",
|
||||
"authority": [
|
||||
"App.Menus.Manager"
|
||||
]
|
||||
"authority": ["App.Menus.Manager"]
|
||||
},
|
||||
{
|
||||
"key": "admin.listFormManagement.wizard",
|
||||
"path": "/admin/listform/wizard",
|
||||
"componentPath": "@/views/admin/listForm/Wizard",
|
||||
"routeType": "protected",
|
||||
"authority": [
|
||||
"App.Listforms.Wizard"
|
||||
]
|
||||
"authority": ["App.Listforms.Wizard"]
|
||||
},
|
||||
{
|
||||
"key": "admin.listFormManagement.edit",
|
||||
|
|
@ -3493,18 +3489,14 @@
|
|||
"path": "/admin/forumManagement",
|
||||
"componentPath": "@/views/forum/Management",
|
||||
"routeType": "protected",
|
||||
"authority": [
|
||||
"App.ForumManagement"
|
||||
]
|
||||
"authority": ["App.ForumManagement"]
|
||||
},
|
||||
{
|
||||
"key": "admin.ai",
|
||||
"path": "/admin/ai",
|
||||
"componentPath": "@/views/ai/Assistant",
|
||||
"routeType": "protected",
|
||||
"authority": [
|
||||
"Abp.Identity.Ai"
|
||||
]
|
||||
"authority": ["Abp.Identity.Ai"]
|
||||
},
|
||||
{
|
||||
"key": "admin.profile.general",
|
||||
|
|
@ -3546,36 +3538,28 @@
|
|||
"path": "/admin/settings",
|
||||
"componentPath": "@/views/settings/Settings",
|
||||
"routeType": "protected",
|
||||
"authority": [
|
||||
"App.Setting"
|
||||
]
|
||||
"authority": ["App.Setting"]
|
||||
},
|
||||
{
|
||||
"key": "admin.identity.user.detail",
|
||||
"path": "/admin/users/detail/:userId",
|
||||
"componentPath": "@/views/admin/user-management/Details",
|
||||
"routeType": "protected",
|
||||
"authority": [
|
||||
"AbpIdentity.Users.Update"
|
||||
]
|
||||
"authority": ["AbpIdentity.Users.Update"]
|
||||
},
|
||||
{
|
||||
"key": "admin.identity.ous",
|
||||
"path": "/admin/ous",
|
||||
"componentPath": "@/views/admin/organization-unit/OrganizationUnits",
|
||||
"routeType": "protected",
|
||||
"authority": [
|
||||
"Abp.Identity.OrganizationUnits"
|
||||
]
|
||||
"authority": ["Abp.Identity.OrganizationUnits"]
|
||||
},
|
||||
{
|
||||
"key": "admin.forum",
|
||||
"path": "/admin/forum",
|
||||
"componentPath": "@/views/forum/Forum",
|
||||
"routeType": "protected",
|
||||
"authority": [
|
||||
"App.ForumManagement.Publish"
|
||||
]
|
||||
"authority": ["App.ForumManagement.Publish"]
|
||||
},
|
||||
{
|
||||
"key": "admin.list",
|
||||
|
|
@ -3624,108 +3608,84 @@
|
|||
"path": "/admin/developerkit",
|
||||
"componentPath": "@/views/developerKit/DashboardPage",
|
||||
"routeType": "protected",
|
||||
"authority": [
|
||||
"App.DeveloperKit"
|
||||
]
|
||||
"authority": ["App.DeveloperKit"]
|
||||
},
|
||||
{
|
||||
"key": "admin.developerkit.entities",
|
||||
"path": "/admin/developerkit/entities",
|
||||
"componentPath": "@/views/developerKit/EntityPage",
|
||||
"routeType": "protected",
|
||||
"authority": [
|
||||
"App.DeveloperKit.Entity"
|
||||
]
|
||||
"authority": ["App.DeveloperKit.Entity"]
|
||||
},
|
||||
{
|
||||
"key": "admin.developerkit.entities.new",
|
||||
"path": "/admin/developerkit/entities/new",
|
||||
"componentPath": "@/views/developerKit/EntityDetailPage",
|
||||
"routeType": "protected",
|
||||
"authority": [
|
||||
"App.DeveloperKit.Entity"
|
||||
]
|
||||
"authority": ["App.DeveloperKit.Entity"]
|
||||
},
|
||||
{
|
||||
"key": "admin.developerkit.entities.edit",
|
||||
"path": "/admin/developerkit/entities/edit/:id",
|
||||
"componentPath": "@/views/developerKit/EntityDetailPage",
|
||||
"routeType": "protected",
|
||||
"authority": [
|
||||
"App.DeveloperKit.Entity"
|
||||
]
|
||||
"authority": ["App.DeveloperKit.Entity"]
|
||||
},
|
||||
{
|
||||
"key": "admin.developerkit.migrations",
|
||||
"path": "/admin/developerkit/migrations",
|
||||
"componentPath": "@/views/developerKit/MigrationPage",
|
||||
"routeType": "protected",
|
||||
"authority": [
|
||||
"App.DeveloperKit.Migrations"
|
||||
]
|
||||
"authority": ["App.DeveloperKit.Migrations"]
|
||||
},
|
||||
{
|
||||
"key": "admin.developerkit.endpoints",
|
||||
"path": "/admin/developerkit/endpoints",
|
||||
"componentPath": "@/views/developerKit/EndpointPage",
|
||||
"routeType": "protected",
|
||||
"authority": [
|
||||
"App.DeveloperKit.Endpoints"
|
||||
]
|
||||
"authority": ["App.DeveloperKit.Endpoints"]
|
||||
},
|
||||
{
|
||||
"key": "admin.developerkit.components",
|
||||
"path": "/admin/developerkit/components",
|
||||
"componentPath": "@/views/developerKit/ComponentPage",
|
||||
"routeType": "protected",
|
||||
"authority": [
|
||||
"App.DeveloperKit.Components"
|
||||
]
|
||||
"authority": ["App.DeveloperKit.Components"]
|
||||
},
|
||||
{
|
||||
"key": "admin.developerkit.components.new",
|
||||
"path": "/admin/developerkit/components/new",
|
||||
"componentPath": "@/views/developerKit/ComponentDetailPage",
|
||||
"routeType": "protected",
|
||||
"authority": [
|
||||
"App.DeveloperKit.Components"
|
||||
]
|
||||
"authority": ["App.DeveloperKit.Components"]
|
||||
},
|
||||
{
|
||||
"key": "admin.developerkit.components.view",
|
||||
"path": "/admin/developerkit/components/view/:id",
|
||||
"componentPath": "@/views/developerKit/ComponentDetailPage",
|
||||
"routeType": "protected",
|
||||
"authority": [
|
||||
"App.DeveloperKit.Components"
|
||||
]
|
||||
"authority": ["App.DeveloperKit.Components"]
|
||||
},
|
||||
{
|
||||
"key": "admin.developerkit.components.edit",
|
||||
"path": "/admin/developerkit/components/edit/:id",
|
||||
"componentPath": "@/views/developerKit/CodePage",
|
||||
"routeType": "protected",
|
||||
"authority": [
|
||||
"App.DeveloperKit.Components"
|
||||
]
|
||||
"authority": ["App.DeveloperKit.Components"]
|
||||
},
|
||||
{
|
||||
"key": "admin.reportManagement",
|
||||
"path": "/admin/reports/management",
|
||||
"componentPath": "@/views/report/DashboardPage",
|
||||
"routeType": "protected",
|
||||
"authority": [
|
||||
"App.Reports.Management"
|
||||
]
|
||||
"authority": ["App.Reports.Management"]
|
||||
},
|
||||
{
|
||||
"key": "admin.reports.view",
|
||||
"path": "/admin/reports/:id",
|
||||
"componentPath": "@/views/report/ReportViewerPage",
|
||||
"routeType": "protected",
|
||||
"authority": [
|
||||
"App.Reports.Categories"
|
||||
]
|
||||
"authority": ["App.Reports.Categories"]
|
||||
}
|
||||
],
|
||||
"Languages": [
|
||||
|
|
@ -9874,12 +9834,6 @@
|
|||
"tr": "Ölçü Birimi Kategorileri",
|
||||
"en": "Units of Measure Categories"
|
||||
},
|
||||
{
|
||||
"resourceName": "Platform",
|
||||
"key": "App.Definitions.Uom",
|
||||
"tr": "Ölçü Birimi",
|
||||
"en": "Units of Measure"
|
||||
},
|
||||
{
|
||||
"resourceName": "Platform",
|
||||
"key": "App.Definitions.Uom",
|
||||
|
|
@ -13944,10 +13898,7 @@
|
|||
"descriptionKey": "Abp.Localization.DefaultLanguage.Description",
|
||||
"defaultValue": "en",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "App.SiteManagement",
|
||||
|
|
@ -13981,10 +13932,7 @@
|
|||
"descriptionKey": "Abp.Localization.Timezone.Description",
|
||||
"defaultValue": "UTC",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "App.SiteManagement",
|
||||
|
|
@ -14140,11 +14088,7 @@
|
|||
"descriptionKey": "App.SiteManagement.Theme.Style.Description",
|
||||
"defaultValue": "dx.light.compact",
|
||||
"isVisibleToClients": true,
|
||||
"providers": [
|
||||
"U",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["U", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "App.SiteManagement",
|
||||
|
|
@ -14192,10 +14136,7 @@
|
|||
"descriptionKey": "App.SiteManagement.General.NewMemberNotificationEmails.Description",
|
||||
"defaultValue": "system@sozsoft.com",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "App.SiteManagement",
|
||||
|
|
@ -14211,10 +14152,7 @@
|
|||
"descriptionKey": "App.SiteManagement.General.TimedLoginEmails.Description",
|
||||
"defaultValue": "system@sozsoft.com",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "App.SiteManagement",
|
||||
|
|
@ -14230,11 +14168,7 @@
|
|||
"descriptionKey": "App.Sender.Sms.PostaGuvercini.Url.Description",
|
||||
"defaultValue": "https://www.postaguvercini.com/api_http",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "App.Sender",
|
||||
|
|
@ -14250,11 +14184,7 @@
|
|||
"descriptionKey": "App.Sender.Sms.PostaGuvercini.Username.Description",
|
||||
"defaultValue": "2AIlj4QlCrvlbDDBS/712A==",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": true,
|
||||
"mainGroupKey": "App.Sender",
|
||||
|
|
@ -14270,11 +14200,7 @@
|
|||
"descriptionKey": "App.Sender.Sms.PostaGuvercini.Password.Description",
|
||||
"defaultValue": "oTuwyZM9sxfJI+jDH5wJAw==",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": true,
|
||||
"mainGroupKey": "App.Sender",
|
||||
|
|
@ -14290,11 +14216,7 @@
|
|||
"descriptionKey": "App.Sender.WhatsApp.Url.Description",
|
||||
"defaultValue": "https://graph.facebook.com/v21.0",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "App.Sender",
|
||||
|
|
@ -14310,11 +14232,7 @@
|
|||
"descriptionKey": "App.Sender.WhatsApp.PhoneNumberId.Description",
|
||||
"defaultValue": "442035112335974",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "App.Sender",
|
||||
|
|
@ -14330,11 +14248,7 @@
|
|||
"descriptionKey": "App.Sender.WhatsApp.Token.Description",
|
||||
"defaultValue": "EAANoftqZAJ64BO5oPwXPqniUtNGF70u8TKvQVzGZBaYQh5UY8fYrgQkcXP9UbQUqT9PWRah1L7TzcBIiWQMacT8AkmZB33AP1begLoywIZCsQSdBSUz21GQaCowfVosYgBoXSyqH8irSBPQDLIjxxVxrC2n76SD9X6zPXeHgOqIPY92DqJXplstWrlhtZCAZDZD",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "App.Sender",
|
||||
|
|
@ -14350,11 +14264,7 @@
|
|||
"descriptionKey": "App.Sender.WhatsApp.TemplateName.Description",
|
||||
"defaultValue": "kurs_platform_notification",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "App.Sender",
|
||||
|
|
@ -14370,10 +14280,7 @@
|
|||
"descriptionKey": "App.Sender.Rocket.Url.Description",
|
||||
"defaultValue": "https://chat.sozsoft.com/api/v1",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "App.Sender",
|
||||
|
|
@ -14389,10 +14296,7 @@
|
|||
"descriptionKey": "App.Sender.Rocket.UserId.Description",
|
||||
"defaultValue": "LfpzPjzag4QJXm84N",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "App.Sender",
|
||||
|
|
@ -14408,10 +14312,7 @@
|
|||
"descriptionKey": "App.Sender.Rocket.Token.Description",
|
||||
"defaultValue": "jvqALawvXn0Q7c6FfHJV3h58DCHDfQLgFF5y7oIc7oc",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "App.Sender",
|
||||
|
|
@ -14427,11 +14328,7 @@
|
|||
"descriptionKey": "Abp.Mailing.DefaultFromDisplayName.Description",
|
||||
"defaultValue": "Kurs",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Mailing",
|
||||
|
|
@ -14447,11 +14344,7 @@
|
|||
"descriptionKey": "Abp.Mailing.DefaultFromAddress.Description",
|
||||
"defaultValue": "system@sozsoft.com",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Mailing",
|
||||
|
|
@ -14467,11 +14360,7 @@
|
|||
"descriptionKey": "Abp.Mailing.Smtp.UserName.Description",
|
||||
"defaultValue": "system@sozsoft.com",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Mailing",
|
||||
|
|
@ -14487,11 +14376,7 @@
|
|||
"descriptionKey": "Abp.Mailing.Smtp.Password.Description",
|
||||
"defaultValue": "QT9L7BCl1CT/1Hq19HoSlQ==",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": true,
|
||||
"mainGroupKey": "Abp.Mailing",
|
||||
|
|
@ -14507,11 +14392,7 @@
|
|||
"descriptionKey": "Abp.Mailing.Smtp.Host.Description",
|
||||
"defaultValue": "127.0.0.1",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Mailing",
|
||||
|
|
@ -14527,11 +14408,7 @@
|
|||
"descriptionKey": "Abp.Mailing.Smtp.Port.Description",
|
||||
"defaultValue": "25",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Mailing",
|
||||
|
|
@ -14547,11 +14424,7 @@
|
|||
"descriptionKey": "Abp.Mailing.Smtp.Domain.Description",
|
||||
"defaultValue": "sozsoft.com",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Mailing",
|
||||
|
|
@ -14567,11 +14440,7 @@
|
|||
"descriptionKey": "Abp.Mailing.Smtp.EnableSsl.Description",
|
||||
"defaultValue": "True",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Mailing",
|
||||
|
|
@ -14587,11 +14456,7 @@
|
|||
"descriptionKey": "Abp.Mailing.AWS.Profile.Description",
|
||||
"defaultValue": "mail-sdk-user",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Mailing",
|
||||
|
|
@ -14607,11 +14472,7 @@
|
|||
"descriptionKey": "Abp.Mailing.AWS.Region.Description",
|
||||
"defaultValue": "eu-central-1",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Mailing",
|
||||
|
|
@ -14627,11 +14488,7 @@
|
|||
"descriptionKey": "Abp.Mailing.AWS.AccessKey.Description",
|
||||
"defaultValue": "aXW8L21rP6dPO6Txj76Be2FCpWRBa25EMrSAVL76",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Mailing",
|
||||
|
|
@ -14647,11 +14504,7 @@
|
|||
"descriptionKey": "Abp.Mailing.AWS.AccessKeyId.Description",
|
||||
"defaultValue": "AKIATULUYBLX4IY3S2P1",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Mailing",
|
||||
|
|
@ -14667,10 +14520,7 @@
|
|||
"descriptionKey": "Abp.Account.IsSelfRegistrationEnabled.Description",
|
||||
"defaultValue": "True",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Account",
|
||||
|
|
@ -14686,10 +14536,7 @@
|
|||
"descriptionKey": "Abp.Account.EnableLocalLogin.Description",
|
||||
"defaultValue": "True",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Account",
|
||||
|
|
@ -14705,11 +14552,7 @@
|
|||
"descriptionKey": "Abp.Account.TwoFactor.Enabled.Description",
|
||||
"defaultValue": "True",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Account",
|
||||
|
|
@ -14725,10 +14568,7 @@
|
|||
"descriptionKey": "Abp.Account.Captcha.MaxFailedAccessAttempts.Description",
|
||||
"defaultValue": "3",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Account",
|
||||
|
|
@ -14744,10 +14584,7 @@
|
|||
"descriptionKey": "Abp.Account.Captcha.EndPoint.Description",
|
||||
"defaultValue": "https://challenges.cloudflare.com/turnstile/v0/siteverify",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Account",
|
||||
|
|
@ -14763,10 +14600,7 @@
|
|||
"descriptionKey": "Abp.Account.Captcha.SiteKey.Description",
|
||||
"defaultValue": "0x4AAAAAAAGadwQME-GSYuJU",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Account",
|
||||
|
|
@ -14782,10 +14616,7 @@
|
|||
"descriptionKey": "Abp.Account.Captcha.SecretKey.Description",
|
||||
"defaultValue": "0x4AAAAAAAGad_f_WP47IcNBs9FTu5DhNX8",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Account",
|
||||
|
|
@ -14801,11 +14632,7 @@
|
|||
"descriptionKey": "Abp.Identity.Profile.General.RequireVerifiedAccount.Description",
|
||||
"defaultValue": "True",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Identity",
|
||||
|
|
@ -14821,11 +14648,7 @@
|
|||
"descriptionKey": "Abp.Identity.Profile.General.BlacklistedEmailProviders.Description",
|
||||
"defaultValue": "gmail.com\r\nyahoo.com\r\nhotmail.com",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Identity",
|
||||
|
|
@ -14841,11 +14664,7 @@
|
|||
"descriptionKey": "Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword.Description",
|
||||
"defaultValue": "True",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Identity",
|
||||
|
|
@ -14861,11 +14680,7 @@
|
|||
"descriptionKey": "Abp.Identity.Password.PasswordChangePeriodDays.Description",
|
||||
"defaultValue": "0",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Identity",
|
||||
|
|
@ -14881,11 +14696,7 @@
|
|||
"descriptionKey": "Abp.Identity.Password.RequiredLength.Description",
|
||||
"defaultValue": "6",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Identity",
|
||||
|
|
@ -14901,11 +14712,7 @@
|
|||
"descriptionKey": "Abp.Identity.Password.RequiredUniqueChars.Description",
|
||||
"defaultValue": "1",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Identity",
|
||||
|
|
@ -14921,11 +14728,7 @@
|
|||
"descriptionKey": "Abp.Identity.Password.RequireNonAlphanumeric.Description",
|
||||
"defaultValue": "True",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Identity",
|
||||
|
|
@ -14941,11 +14744,7 @@
|
|||
"descriptionKey": "Abp.Identity.Password.RequireLowercase.Description",
|
||||
"defaultValue": "True",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Identity",
|
||||
|
|
@ -14961,11 +14760,7 @@
|
|||
"descriptionKey": "Abp.Identity.Password.RequireUppercase.Description",
|
||||
"defaultValue": "True",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Identity",
|
||||
|
|
@ -14981,11 +14776,7 @@
|
|||
"descriptionKey": "Abp.Identity.Password.RequireDigit.Description",
|
||||
"defaultValue": "True",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Identity",
|
||||
|
|
@ -15001,11 +14792,7 @@
|
|||
"descriptionKey": "Abp.Identity.Lockout.AllowedForNewUsers.Description",
|
||||
"defaultValue": "True",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Identity",
|
||||
|
|
@ -15021,11 +14808,7 @@
|
|||
"descriptionKey": "Abp.Identity.Lockout.LockoutDuration.Description",
|
||||
"defaultValue": "300",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Identity",
|
||||
|
|
@ -15041,11 +14824,7 @@
|
|||
"descriptionKey": "Abp.Identity.Lockout.MaxFailedAccessAttempts.Description",
|
||||
"defaultValue": "5",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"T",
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["T", "G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Identity",
|
||||
|
|
@ -15061,10 +14840,7 @@
|
|||
"descriptionKey": "Abp.Identity.SignIn.RequireConfirmedEmail.Description",
|
||||
"defaultValue": "True",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Identity",
|
||||
|
|
@ -15080,10 +14856,7 @@
|
|||
"descriptionKey": "Abp.Identity.SignIn.RequireConfirmedPhoneNumber.Description",
|
||||
"defaultValue": "False",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Identity",
|
||||
|
|
@ -15099,10 +14872,7 @@
|
|||
"descriptionKey": "Abp.Identity.User.IsUserNameUpdateEnabled.Description",
|
||||
"defaultValue": "True",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Identity",
|
||||
|
|
@ -15118,10 +14888,7 @@
|
|||
"descriptionKey": "Abp.Identity.User.IsEmailUpdateEnabled.Description",
|
||||
"defaultValue": "True",
|
||||
"isVisibleToClients": false,
|
||||
"providers": [
|
||||
"G",
|
||||
"D"
|
||||
],
|
||||
"providers": ["G", "D"],
|
||||
"isInherited": false,
|
||||
"isEncrypted": false,
|
||||
"mainGroupKey": "Abp.Identity",
|
||||
|
|
@ -17408,9 +17175,7 @@
|
|||
"props": null,
|
||||
"description": null,
|
||||
"isActive": true,
|
||||
"dependencies": [
|
||||
"AxiosListComponent"
|
||||
]
|
||||
"dependencies": ["AxiosListComponent"]
|
||||
}
|
||||
],
|
||||
"ReportCategories": [
|
||||
|
|
|
|||
46
api/src/Kurs.Platform.Domain/Entities/Service.cs
Normal file
46
api/src/Kurs.Platform.Domain/Entities/Service.cs
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Volo.Abp.Domain.Entities;
|
||||
using Volo.Abp.Domain.Entities.Auditing;
|
||||
|
||||
namespace Kurs.Platform.Entities;
|
||||
|
||||
public class Service : FullAuditedAggregateRoot<Guid>
|
||||
{
|
||||
// Icon component adı (ör: "FaCode")
|
||||
public string? Icon { get; set; }
|
||||
|
||||
public string Title { get; set; }
|
||||
public string? Description { get; set; }
|
||||
public string Type { get; set; }
|
||||
|
||||
public ICollection<ServiceFeature> Features { get; set; }
|
||||
|
||||
protected Service()
|
||||
{
|
||||
Features = [];
|
||||
}
|
||||
|
||||
public Service(Guid id, string title, string type)
|
||||
: base(id)
|
||||
{
|
||||
Title = title;
|
||||
Type = type;
|
||||
Features = [];
|
||||
}
|
||||
}
|
||||
|
||||
public class ServiceFeature : Entity<Guid>
|
||||
{
|
||||
public Guid ServiceItemId { get; set; }
|
||||
public string Name { get; set; }
|
||||
|
||||
public ServiceFeature() { }
|
||||
|
||||
public ServiceFeature(Guid id, Guid serviceItemId, string name)
|
||||
: base(id)
|
||||
{
|
||||
ServiceItemId = serviceItemId;
|
||||
Name = name;
|
||||
}
|
||||
}
|
||||
|
|
@ -91,6 +91,8 @@ public class PlatformDbContext :
|
|||
public DbSet<ReportGenerated> ReportGenerated { get; set; }
|
||||
public DbSet<ReportCategory> ReportCategories { get; set; }
|
||||
public DbSet<Demo> Demos { get; set; }
|
||||
public DbSet<Service> Services { get; set; }
|
||||
public DbSet<ServiceFeature> ServiceFeatures { get; set; }
|
||||
|
||||
#region Entities from the modules
|
||||
|
||||
|
|
@ -803,5 +805,33 @@ public class PlatformDbContext :
|
|||
b.Property(x => x.NumberOfUsers).IsRequired();
|
||||
b.Property(x => x.Message).IsRequired().HasMaxLength(2000);
|
||||
});
|
||||
|
||||
builder.Entity<Service>(b =>
|
||||
{
|
||||
b.ToTable(PlatformConsts.DbTablePrefix + nameof(Service), PlatformConsts.DbSchema);
|
||||
b.ConfigureByConvention();
|
||||
|
||||
b.Property(x => x.Title)
|
||||
.IsRequired()
|
||||
.HasMaxLength(128);
|
||||
|
||||
b.Property(x => x.Description).HasMaxLength(512);
|
||||
b.Property(x => x.Icon).HasMaxLength(64);
|
||||
|
||||
// 1 - N ilişki
|
||||
b.HasMany(x => x.Features)
|
||||
.WithOne()
|
||||
.HasForeignKey(f => f.ServiceItemId);
|
||||
});
|
||||
|
||||
builder.Entity<ServiceFeature>(b =>
|
||||
{
|
||||
b.ToTable(PlatformConsts.DbTablePrefix + nameof(ServiceFeature), PlatformConsts.DbSchema);
|
||||
b.ConfigureByConvention();
|
||||
|
||||
b.Property(x => x.Name)
|
||||
.IsRequired()
|
||||
.HasMaxLength(128);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
6669
api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20250820071335_Service.Designer.cs
generated
Normal file
6669
api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20250820071335_Service.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,73 @@
|
|||
using System;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace Kurs.Platform.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class Service : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.CreateTable(
|
||||
name: "PService",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
||||
Icon = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
|
||||
Title = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: false),
|
||||
Description = table.Column<string>(type: "nvarchar(512)", maxLength: 512, nullable: true),
|
||||
Type = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
||||
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: false),
|
||||
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_PService", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "PServiceFeature",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
||||
ServiceItemId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
||||
Name = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_PServiceFeature", x => x.Id);
|
||||
table.ForeignKey(
|
||||
name: "FK_PServiceFeature_PService_ServiceItemId",
|
||||
column: x => x.ServiceItemId,
|
||||
principalTable: "PService",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_PServiceFeature_ServiceItemId",
|
||||
table: "PServiceFeature",
|
||||
column: "ServiceItemId");
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "PServiceFeature");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "PService");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3446,6 +3446,94 @@ namespace Kurs.Platform.Migrations
|
|||
b.ToTable("PSector", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kurs.Platform.Entities.Service", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<string>("ConcurrencyStamp")
|
||||
.IsConcurrencyToken()
|
||||
.IsRequired()
|
||||
.HasMaxLength(40)
|
||||
.HasColumnType("nvarchar(40)")
|
||||
.HasColumnName("ConcurrencyStamp");
|
||||
|
||||
b.Property<DateTime>("CreationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("CreationTime");
|
||||
|
||||
b.Property<Guid?>("CreatorId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("CreatorId");
|
||||
|
||||
b.Property<Guid?>("DeleterId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("DeleterId");
|
||||
|
||||
b.Property<DateTime?>("DeletionTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("DeletionTime");
|
||||
|
||||
b.Property<string>("Description")
|
||||
.HasMaxLength(512)
|
||||
.HasColumnType("nvarchar(512)");
|
||||
|
||||
b.Property<string>("ExtraProperties")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)")
|
||||
.HasColumnName("ExtraProperties");
|
||||
|
||||
b.Property<string>("Icon")
|
||||
.HasMaxLength(64)
|
||||
.HasColumnType("nvarchar(64)");
|
||||
|
||||
b.Property<bool>("IsDeleted")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(false)
|
||||
.HasColumnName("IsDeleted");
|
||||
|
||||
b.Property<DateTime?>("LastModificationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("LastModificationTime");
|
||||
|
||||
b.Property<Guid?>("LastModifierId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("LastModifierId");
|
||||
|
||||
b.Property<string>("Title")
|
||||
.IsRequired()
|
||||
.HasMaxLength(128)
|
||||
.HasColumnType("nvarchar(128)");
|
||||
|
||||
b.Property<string>("Type")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("PService", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kurs.Platform.Entities.ServiceFeature", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasMaxLength(128)
|
||||
.HasColumnType("nvarchar(128)");
|
||||
|
||||
b.Property<Guid>("ServiceItemId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("ServiceItemId");
|
||||
|
||||
b.ToTable("PServiceFeature", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kurs.Platform.Entities.Uom", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
|
|
@ -6246,6 +6334,15 @@ namespace Kurs.Platform.Migrations
|
|||
b.Navigation("ReportCategory");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kurs.Platform.Entities.ServiceFeature", b =>
|
||||
{
|
||||
b.HasOne("Kurs.Platform.Entities.Service", null)
|
||||
.WithMany("Features")
|
||||
.HasForeignKey("ServiceItemId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kurs.Platform.Entities.Uom", b =>
|
||||
{
|
||||
b.HasOne("Kurs.Platform.Entities.UomCategory", "UomCategory")
|
||||
|
|
@ -6487,6 +6584,11 @@ namespace Kurs.Platform.Migrations
|
|||
b.Navigation("Parameters");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kurs.Platform.Entities.Service", b =>
|
||||
{
|
||||
b.Navigation("Features");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kurs.Platform.Entities.UomCategory", b =>
|
||||
{
|
||||
b.Navigation("Uoms");
|
||||
|
|
|
|||
22
ui/src/proxy/services/models.ts
Normal file
22
ui/src/proxy/services/models.ts
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
export type ItemType = 'service' | 'support'
|
||||
|
||||
export interface Service {
|
||||
icon?: React.ReactNode
|
||||
title: string
|
||||
description?: string
|
||||
type: ItemType
|
||||
features: string[]
|
||||
}
|
||||
|
||||
export interface ServiceFeature {
|
||||
serviceItemId: string
|
||||
name: string
|
||||
}
|
||||
|
||||
export interface ServiceDto {
|
||||
icon?: React.ReactNode
|
||||
title: string
|
||||
description?: string
|
||||
type: ItemType
|
||||
features: string[]
|
||||
}
|
||||
16
ui/src/services/service.service.ts
Normal file
16
ui/src/services/service.service.ts
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
import { PagedAndSortedResultRequestDto, PagedResultDto } from '../proxy'
|
||||
import apiService, { Config } from './api.service'
|
||||
import { ServiceDto } from '@/proxy/services/models'
|
||||
|
||||
export class ServiceService {
|
||||
apiName = 'Default'
|
||||
|
||||
getList = () =>
|
||||
apiService.fetchData<ServiceDto[]>(
|
||||
{
|
||||
method: 'GET',
|
||||
url: '/api/app/service',
|
||||
},
|
||||
{ apiName: this.apiName },
|
||||
)
|
||||
}
|
||||
|
|
@ -1,18 +1,28 @@
|
|||
import React from 'react'
|
||||
import { FaCode, FaGlobe, FaServer, FaUsers, FaShieldAlt, FaCog, FaCheckCircle } from 'react-icons/fa';
|
||||
import {
|
||||
FaCode,
|
||||
FaGlobe,
|
||||
FaServer,
|
||||
FaUsers,
|
||||
FaShieldAlt,
|
||||
FaCog,
|
||||
FaCheckCircle,
|
||||
} from 'react-icons/fa'
|
||||
import { Link } from 'react-router-dom'
|
||||
import { useLocalization } from '@/utils/hooks/useLocalization'
|
||||
import { ROUTES_ENUM } from '@/routes/route.constant'
|
||||
import { Helmet } from 'react-helmet'
|
||||
import { ServiceDto } from '@/proxy/services/models'
|
||||
|
||||
const Services: React.FC = () => {
|
||||
const { translate } = useLocalization()
|
||||
|
||||
const services = [
|
||||
const services: ServiceDto[] = [
|
||||
{
|
||||
icon: <FaCode className="w-12 h-12 text-blue-600" />,
|
||||
title: translate('::Public.services.software.title'),
|
||||
description: translate('::Public.services.software.desc'),
|
||||
type: 'service',
|
||||
features: [
|
||||
translate('::Public.services.software.features.analysis'),
|
||||
translate('::Public.services.software.features.design'),
|
||||
|
|
@ -25,6 +35,7 @@ const Services: React.FC = () => {
|
|||
icon: <FaUsers className="w-12 h-12 text-purple-600" />,
|
||||
title: translate('::Public.services.web.title'),
|
||||
description: translate('::Public.services.web.desc'),
|
||||
type: 'service',
|
||||
features: [
|
||||
translate('::Public.services.web.features.frontend'),
|
||||
translate('::Public.services.web.features.backend'),
|
||||
|
|
@ -37,6 +48,7 @@ const Services: React.FC = () => {
|
|||
icon: <FaShieldAlt className="w-12 h-12 text-green-600" />,
|
||||
title: translate('::Public.services.mobile.title'),
|
||||
description: translate('::Public.services.mobile.desc'),
|
||||
type: 'service',
|
||||
features: [
|
||||
translate('::Public.services.mobile.features.design'),
|
||||
translate('::Public.services.mobile.features.native'),
|
||||
|
|
@ -49,6 +61,7 @@ const Services: React.FC = () => {
|
|||
icon: <FaServer className="w-12 h-12 text-red-600" />,
|
||||
title: translate('::Public.services.database.title'),
|
||||
description: translate('::Public.services.database.desc'),
|
||||
type: 'service',
|
||||
features: [
|
||||
translate('::Public.services.database.features.design'),
|
||||
translate('::Public.services.database.features.optimization'),
|
||||
|
|
@ -61,6 +74,7 @@ const Services: React.FC = () => {
|
|||
icon: <FaGlobe className="w-12 h-12 text-yellow-600" />,
|
||||
title: translate('::Public.services.integration.title'),
|
||||
description: translate('::Public.services.integration.desc'),
|
||||
type: 'service',
|
||||
features: [
|
||||
translate('::Public.services.integration.features.api'),
|
||||
translate('::Public.services.integration.features.middleware'),
|
||||
|
|
@ -73,6 +87,7 @@ const Services: React.FC = () => {
|
|||
icon: <FaCog className="w-12 h-12 text-indigo-600" />,
|
||||
title: translate('::Public.services.consulting.title'),
|
||||
description: translate('::Public.services.consulting.desc'),
|
||||
type: 'service',
|
||||
features: [
|
||||
translate('::Public.services.consulting.features.tech'),
|
||||
translate('::Public.services.consulting.features.project'),
|
||||
|
|
@ -81,13 +96,11 @@ const Services: React.FC = () => {
|
|||
translate('::Public.services.consulting.features.training'),
|
||||
],
|
||||
},
|
||||
]
|
||||
|
||||
const supportPlans = [
|
||||
{
|
||||
icon: <FaUsers className="w-12 h-12 text-pink-600" />, // Remote Branch Support
|
||||
title: translate('::Public.services.support.branchRemote.title'),
|
||||
price: translate('::Public.services.support.branchRemote.price'),
|
||||
period: translate('::Public.services.support.branchRemote.period'),
|
||||
description: '',
|
||||
type: 'support',
|
||||
features: [
|
||||
translate('::Public.services.support.branchRemote.features.priority'),
|
||||
translate('::Public.services.support.branchRemote.features.remote'),
|
||||
|
|
@ -97,9 +110,10 @@ const Services: React.FC = () => {
|
|||
],
|
||||
},
|
||||
{
|
||||
icon: <FaServer className="w-12 h-12 text-orange-600" />, // Backup Support
|
||||
title: translate('::Public.services.support.backup.title'),
|
||||
price: translate('::Public.services.support.backup.price'),
|
||||
period: translate('::Public.services.support.backup.period'),
|
||||
description: '',
|
||||
type: 'support',
|
||||
features: [
|
||||
translate('::Public.services.support.backup.features.daily'),
|
||||
translate('::Public.services.support.backup.features.encrypted'),
|
||||
|
|
@ -109,9 +123,10 @@ const Services: React.FC = () => {
|
|||
],
|
||||
},
|
||||
{
|
||||
icon: <FaGlobe className="w-12 h-12 text-cyan-600" />, // SMS Support
|
||||
title: translate('::Public.services.support.sms.title'),
|
||||
price: translate('::Public.services.support.sms.price'),
|
||||
period: translate('::Public.services.support.sms.period'),
|
||||
description: '',
|
||||
type: 'support',
|
||||
features: [
|
||||
translate('::Public.services.support.sms.features.packages'),
|
||||
translate('::Public.services.support.sms.features.bulk'),
|
||||
|
|
@ -153,7 +168,9 @@ const Services: React.FC = () => {
|
|||
<div className="py-16">
|
||||
<div className="container mx-auto px-4">
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
|
||||
{services.map((service, index) => (
|
||||
{services
|
||||
.filter((a) => a.type === 'service')
|
||||
.map((service, index) => (
|
||||
<div
|
||||
key={index}
|
||||
className="bg-white rounded-xl shadow-lg p-8 hover:shadow-xl transition-shadow"
|
||||
|
|
@ -182,10 +199,15 @@ const Services: React.FC = () => {
|
|||
{translate('::Public.services.support.title')}
|
||||
</h2>
|
||||
<div className="grid grid-cols-1 md:grid-cols-3 gap-8">
|
||||
{supportPlans.map((plan, index) => (
|
||||
<div key={index} className="bg-white rounded-xl shadow-lg p-8 border border-gray-200">
|
||||
{services
|
||||
.filter((a) => a.type === 'support')
|
||||
.map((plan, index) => (
|
||||
<div
|
||||
key={index}
|
||||
className="bg-white rounded-xl shadow-lg p-8 border border-gray-200"
|
||||
>
|
||||
<div className="mb-6">{plan.icon}</div>
|
||||
<h3 className="text-xl font-bold mb-4">{plan.title}</h3>
|
||||
|
||||
<ul className="space-y-3 mb-8">
|
||||
{plan.features.map((feature, fIndex) => (
|
||||
<li key={fIndex} className="flex items-center space-x-2 text-gray-700">
|
||||
|
|
|
|||
Loading…
Reference in a new issue