Menü düzenlemesi

This commit is contained in:
Sedat ÖZTÜRK 2025-08-18 11:04:19 +03:00
parent 9f33c896b9
commit 11c40cb36a
7 changed files with 324 additions and 514 deletions

View file

@ -5,9 +5,9 @@ namespace Kurs.Notifications;
public class NotificationDto : EntityDto<Guid> public class NotificationDto : EntityDto<Guid>
{ {
public string NotificationChannel { get; set; } public required string NotificationChannel { get; set; }
public string NotificationType { get; set; } public required string NotificationType { get; set; }
public string Message { get; set; } public required string Message { get; set; }
public bool IsRead { get; set; } public bool IsRead { get; set; }
public bool IsSent { get; set; } public bool IsSent { get; set; }
public DateTime? ReadTime { get; set; } public DateTime? ReadTime { get; set; }

View file

@ -4,6 +4,7 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net9.0</TargetFramework> <TargetFramework>net9.0</TargetFramework>
<Nullable>enable</Nullable>
<RootNamespace>Kurs.Platform</RootNamespace> <RootNamespace>Kurs.Platform</RootNamespace>
</PropertyGroup> </PropertyGroup>

View file

@ -446,31 +446,31 @@ public class ListFormsSeeder : IDataSeedContributor, ITransientDependency
}), }),
EditingFormJson = JsonSerializer.Serialize(new List<EditingFormDto>() EditingFormJson = JsonSerializer.Serialize(new List<EditingFormDto>()
{ {
new() { Order=1, ColCount=1, ColSpan=2, ItemType="group", Items = 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=1, DataField="Name", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=2, DataField="InstitutionName", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxTextBox }, new EditingFormItemDto { Order=2, DataField="InstitutionName", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=3, DataField="Founder", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxTextBox }, new EditingFormItemDto { Order=3, DataField="Founder", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=4, DataField="VknTckn", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxNumberBox }, new EditingFormItemDto { Order=4, DataField="VknTckn", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxNumberBox },
new EditingFormItemDto { Order=5, DataField="TaxOffice", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxTextBox }, new EditingFormItemDto { Order=5, DataField="TaxOffice", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=6, DataField="Mobile", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxNumberBox }, new EditingFormItemDto { Order=6, DataField="Mobile", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxNumberBox },
new EditingFormItemDto { Order=7, DataField="Phone", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxNumberBox }, new EditingFormItemDto { Order=7, DataField="Phone", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxNumberBox },
new EditingFormItemDto { Order=8, DataField="Fax", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxTextBox }, new EditingFormItemDto { Order=8, DataField="Fax", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=9, DataField="IsActive", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxCheckBox }, new EditingFormItemDto { Order=9, DataField="IsActive", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxCheckBox },
] ]
}, },
new() { Order=2, ColCount=1, ColSpan=2, ItemType="group", Items = new() { Order=2, ColCount=1, ColSpan=2, ItemType="group", Items =
[ [
new EditingFormItemDto { Order=1, DataField="Country", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxSelectBox, EditorOptions="{ \"showClearButton\" : true }" }, new EditingFormItemDto { Order=1, DataField="Country", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxSelectBox, EditorOptions="{ \"showClearButton\" : true }" },
new EditingFormItemDto { Order=2, DataField="City", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxTextBox }, new EditingFormItemDto { Order=2, DataField="City", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=3, DataField="District", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxTextBox }, new EditingFormItemDto { Order=3, DataField="District", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=4, DataField="Address", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxTextBox }, new EditingFormItemDto { Order=4, DataField="Address", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=5, DataField="Address2", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxTextBox }, new EditingFormItemDto { Order=5, DataField="Address2", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=6, DataField="PostalCode", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxTextBox }, new EditingFormItemDto { Order=6, DataField="PostalCode", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=7, DataField="Email", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxTextBox }, new EditingFormItemDto { Order=7, DataField="Email", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=8, DataField="Website", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxTextBox }, new EditingFormItemDto { Order=8, DataField="Website", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxTextBox },
] ]
} }
}), }),
CommandColumnJson = JsonSerializer.Serialize(new CommandColumnDto[] { CommandColumnJson = JsonSerializer.Serialize(new CommandColumnDto[] {
new CommandColumnDto() { new CommandColumnDto() {
@ -483,6 +483,13 @@ public class ListFormsSeeder : IDataSeedContributor, ITransientDependency
id = "@Id" id = "@Id"
}) })
}, },
new() {
ButtonPosition= UiCommandButtonPositionTypeEnum.Toolbar,
Hint = "Branches",
Text = "Branches",
AuthName = AppCodes.Branches,
Url = "/admin/list/list-branch",
},
}), }),
InsertServiceAddress = "list-form-dynamic-api/tenant-insert", InsertServiceAddress = "list-form-dynamic-api/tenant-insert",
UpdateServiceAddress = "list-form-dynamic-api/tenant-update", UpdateServiceAddress = "list-form-dynamic-api/tenant-update",
@ -5263,27 +5270,27 @@ public class ListFormsSeeder : IDataSeedContributor, ITransientDependency
ColumnChooserEnabled = true ColumnChooserEnabled = true
}), }),
CommandColumnJson = JsonSerializer.Serialize(new CommandColumnDto[] { CommandColumnJson = JsonSerializer.Serialize(new CommandColumnDto[] {
new() { new() {
ButtonPosition= UiCommandButtonPositionTypeEnum.Toolbar, ButtonPosition= UiCommandButtonPositionTypeEnum.Toolbar,
Hint = "Hangfire Login", Hint = "Hangfire Login",
Text = "Hangfire Login", Text = "Hangfire Login",
AuthName=AppCodes.BackgroundWorkers, AuthName=AppCodes.BackgroundWorkers,
Url= swaggerRootUrl + "/Account/Login", Url= swaggerRootUrl + "/Account/Login",
}, },
new() { new() {
ButtonPosition= UiCommandButtonPositionTypeEnum.Toolbar, ButtonPosition= UiCommandButtonPositionTypeEnum.Toolbar,
Hint = "Hangfire Aç", Hint = "Hangfire Aç",
Text = "Hangfire Aç", Text = "Hangfire Aç",
AuthName=AppCodes.BackgroundWorkers, AuthName=AppCodes.BackgroundWorkers,
Url= swaggerRootUrl + "/hangfire", Url= swaggerRootUrl + "/hangfire",
}, },
new() { new() {
ButtonPosition= UiCommandButtonPositionTypeEnum.Toolbar, ButtonPosition= UiCommandButtonPositionTypeEnum.Toolbar,
Hint = "Hangfire Tazele", Hint = "Hangfire Tazele",
Text = "Hangfire Tazele", Text = "Hangfire Tazele",
AuthName=AppCodes.BackgroundWorkers, AuthName=AppCodes.BackgroundWorkers,
OnClick="UiEvalService.ApiGenerateBackgroundWorkers();" OnClick="UiEvalService.ApiGenerateBackgroundWorkers();"
}, },
}), }),
PermissionJson = JsonSerializer.Serialize(new PermissionCrudDto PermissionJson = JsonSerializer.Serialize(new PermissionCrudDto
{ {
@ -13654,15 +13661,14 @@ public class ListFormsSeeder : IDataSeedContributor, ITransientDependency
ItemType = "group", ItemType = "group",
Items = Items =
[ [
new EditingFormItemDto { Order = 1, DataField = "Id", ColSpan = 2, IsRequired = true, EditorType2 = EditorTypes.dxTextBox }, new EditingFormItemDto { Order = 1, DataField = "OrganizationName", ColSpan = 2, IsRequired = true, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 2, DataField = "OrganizationName", ColSpan = 2, IsRequired = true, EditorType2 = EditorTypes.dxTextBox }, new EditingFormItemDto { Order = 2, DataField = "FullName", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxTextArea },
new EditingFormItemDto { Order = 3, DataField = "FullName", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxTextArea }, new EditingFormItemDto { Order = 3, DataField = "Email", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 4, DataField = "Email", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxTextBox }, new EditingFormItemDto { Order = 4, DataField = "Phone", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 5, DataField = "Phone", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxTextBox }, new EditingFormItemDto { Order = 5, DataField = "Address", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxTextArea },
new EditingFormItemDto { Order = 6, DataField = "Address", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxTextArea }, new EditingFormItemDto { Order = 6, DataField = "NumberOfBranches", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxNumberBox },
new EditingFormItemDto { Order = 7, DataField = "NumberOfBranches", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxNumberBox }, new EditingFormItemDto { Order = 7, DataField = "NumberOfUsers", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxNumberBox },
new EditingFormItemDto { Order = 8, DataField = "NumberOfUsers", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxNumberBox }, new EditingFormItemDto { Order = 8, DataField = "Message", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxTextArea },
new EditingFormItemDto { Order = 9, DataField = "Message", ColSpan = 2, IsRequired = false, EditorType2 = EditorTypes.dxTextArea },
] ]
} }
}) })

File diff suppressed because it is too large Load diff

View file

@ -82,7 +82,7 @@ define(['./workbox-54d0af47'], (function (workbox) { 'use strict';
"revision": "3ca0b8505b4bec776b69afdba2768812" "revision": "3ca0b8505b4bec776b69afdba2768812"
}, { }, {
"url": "index.html", "url": "index.html",
"revision": "0.4fqifsv2jio" "revision": "0.s0vun21q3d"
}], {}); }], {});
workbox.cleanupOutdatedCaches(); workbox.cleanupOutdatedCaches();
workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), { workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), {

View file

@ -1,5 +1,5 @@
import React from 'react' import React from 'react'
import { FaTachometerAlt, FaDatabase, FaBolt, FaServer, FaPuzzlePiece } from 'react-icons/fa'; import { FaTachometerAlt, FaDatabase, FaBolt, FaServer, FaPuzzlePiece } from 'react-icons/fa'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { useLocation, useNavigate } from 'react-router-dom' import { useLocation, useNavigate } from 'react-router-dom'
import { ROUTES_ENUM } from '@/routes/route.constant' import { ROUTES_ENUM } from '@/routes/route.constant'
@ -51,30 +51,6 @@ const DeveloperLayout: React.FC<DeveloperLayoutProps> = ({ children }) => {
<Container> <Container>
<div className="mx-auto px-4 sm:px-6 lg:px-8 py-8"> <div className="mx-auto px-4 sm:px-6 lg:px-8 py-8">
<div className="flex flex-col lg:flex-row gap-8"> <div className="flex flex-col lg:flex-row gap-8">
{/* Sidebar */}
<div className="lg:w-64 flex-shrink-0 p-4 bg-gray-50">
<nav className="space-y-2">
{navigation.map((item) => {
const Icon = item.icon
const isActive = location.pathname === item.path
return (
<button
key={item.id}
onClick={() => navigate(item.path)}
className={`w-full flex items-center space-x-3 px-4 py-3 rounded-lg text-left transition-colors ${
isActive
? 'bg-blue-100 text-blue-700'
: 'text-gray-600 hover:bg-gray-100 hover:text-gray-900'
}`}
>
<Icon className="w-5 h-5" />
<span className="font-medium">{item.label}</span>
</button>
)
})}
</nav>
</div>
{/* Main Content */} {/* Main Content */}
<div className="flex-1">{children}</div> <div className="flex-1">{children}</div>
</div> </div>