Supply Chain Supplier

This commit is contained in:
Sedat ÖZTÜRK 2025-11-12 15:59:31 +03:00
parent 7493f5cedf
commit d9d00102a6
108 changed files with 2258 additions and 801 deletions

View file

@ -61,7 +61,7 @@ RUN apk add --no-cache \
libc6-compat \ libc6-compat \
libc-dev libc-dev
# OpenSSL default TLSv3 desteklediÄŸi için MSSQL 2012'ye baÄŸlanmıyor. Bunu çözmek için gerekli # OpenSSL default TLSv3 desteklediği için MSSQL 2012'ye bağlanmıyor. Bunu çözmek için gerekli
RUN sed -i 's/\[openssl_init\]/# [openssl_init]/' /etc/ssl/openssl.cnf RUN sed -i 's/\[openssl_init\]/# [openssl_init]/' /etc/ssl/openssl.cnf
RUN printf "\n\n[openssl_init]\nssl_conf = ssl_sect" >> /etc/ssl/openssl.cnf RUN printf "\n\n[openssl_init]\nssl_conf = ssl_sect" >> /etc/ssl/openssl.cnf
RUN printf "\n\n[ssl_sect]\nsystem_default = ssl_default_sect" >> /etc/ssl/openssl.cnf RUN printf "\n\n[ssl_sect]\nsystem_default = ssl_default_sect" >> /etc/ssl/openssl.cnf

View file

@ -17,13 +17,13 @@
`dotnet ef migrations remove` `dotnet ef migrations remove`
`dotnet ef database update "20240822114716_ABP_822"` `dotnet ef database update "20240822114716_ABP_822"`
- SQL Veritabanını Entity Class oluÅŸtur. - SQL Veritabanını Entity Class oluştur.
`dotnet ef dbcontext scaffold "Server=SERVERNAME;Database=DBNAME;User ID=USERNAME;Password=PASSWORD;TrustServerCertificate=True;" Microsoft.EntityFrameworkCore.SqlServer --context MyDbContext --output-dir Models --data-annotations --force` `dotnet ef dbcontext scaffold "Server=SERVERNAME;Database=DBNAME;User ID=USERNAME;Password=PASSWORD;TrustServerCertificate=True;" Microsoft.EntityFrameworkCore.SqlServer --context MyDbContext --output-dir Models --data-annotations --force`
# Custom Endpoints # Custom Endpoints
``` ```
Token İsteÄŸi Örnek: Token İsteği Örnek:
POST /connect/token HTTP/1.1 POST /connect/token HTTP/1.1
Host: localhost:44344 Host: localhost:44344
Content-Type: application/x-www-form-urlencoded Content-Type: application/x-www-form-urlencoded
@ -35,28 +35,28 @@ username=system%40sozsoft.com
&scope=offline_access%20Platform &scope=offline_access%20Platform
``` ```
## Whatsapp Ayarları ## Whatsapp Ayarları
- Normal facebook üyeliÄŸi yapılır. - Normal facebook üyeliği yapılır.
- https://developers.facebook.com/ sitesinden yeni developer üyeliÄŸi oluÅŸturulur. Developer üyeliÄŸi seçilir. - https://developers.facebook.com/ sitesinden yeni developer üyeliği oluşturulur. Developer üyeliği seçilir.
- CreateApp butonu ile yeni uygulama oluÅŸturulur. Uygulama adı belirlenir. 'Erp Messenger' - CreateApp butonu ile yeni uygulama oluşturulur. Uygulama adı belirlenir. 'Erp Messenger'
- AppType olarak İşletme seçilir ve App oluÅŸturulur. - AppType olarak İşletme seçilir ve App oluşturulur.
- Add Products kısmında WhatsApp seçilir ve Business Account oluÅŸturulur. - Add Products kısmında WhatsApp seçilir ve Business Account oluşturulur.
- 3 noktadan (menüden) WhatsApp Manager sayfasına gidilir. Manage Templates seçilir, istenirse yeni template oluÅŸturulur. 'hello_world' - 3 noktadan (menüden) WhatsApp Manager sayfasına gidilir. Manage Templates seçilir, istenirse yeni template oluşturulur. 'hello_world'
- WhatsApp Manager üzerinde menüden Settings -> Users -> System Users eklenir. Kullanıcı adı 'admin' ve Role ise 'Admin' seçilir. - WhatsApp Manager üzerinde menüden Settings -> Users -> System Users eklenir. Kullanıcı adı 'admin' ve Role ise 'Admin' seçilir.
- Eklenen 'admin' kullanıcısında 'Assign Assets' seçilir ve full yetki verilir. - Eklenen 'admin' kullanıcısında 'Assign Assets' seçilir ve full yetki verilir.
- admin kullanıcısı üzerinden 'Generate Token' seçilir ve aÅŸağıdaki yetkiler verilir. - admin kullanıcısı üzerinden 'Generate Token' seçilir ve aşağıdaki yetkiler verilir.
``` ```
- whatsapp_business_management' - whatsapp_business_management'
- 'whatsapp_business_messaging' - 'whatsapp_business_messaging'
``` ```
- WhatsApp -> API Setup kısmından "From" kısmında yeni telefon numarası eklenir. - WhatsApp -> API Setup kısmından "From" kısmında yeni telefon numarası eklenir.
- WhatsApp -> API Setup kısmından Generate Access Token oluÅŸturulur. - WhatsApp -> API Setup kısmından Generate Access Token oluşturulur.
- token: EAASM83pDJf0BO0ZCYBr3Fx4SES0ox8XiZCgP3FIteprYpwawZCkGYjpMlKk4OZCWgRNZC2Ttofgf8amMf929ZBuDcgYIOsXkPMGBNmVxm2czipzq63LmtbYfyCWsKVy0q1jtay0nRoeDuO2FKhqCfLLtNn9cSWjINVLcz26ptK8a2Oko83cZBzrNsp3cpIECnzqRfEjHdEz1U73y3ZB1MZBOhHilax7yZALf4ZA1Tmk - token: EAASM83pDJf0BO0ZCYBr3Fx4SES0ox8XiZCgP3FIteprYpwawZCkGYjpMlKk4OZCWgRNZC2Ttofgf8amMf929ZBuDcgYIOsXkPMGBNmVxm2czipzq63LmtbYfyCWsKVy0q1jtay0nRoeDuO2FKhqCfLLtNn9cSWjINVLcz26ptK8a2Oko83cZBzrNsp3cpIECnzqRfEjHdEz1U73y3ZB1MZBOhHilax7yZALf4ZA1Tmk
- WhatsApp telefon numarasını Register etmek için aÅŸağıdaki postman Curl gönderilir. - WhatsApp telefon numarasını Register etmek için aşağıdaki postman Curl gönderilir.
``` ```
curl --location 'https://graph.facebook.com/v21.0/521106361082067/register' \ curl --location 'https://graph.facebook.com/v21.0/521106361082067/register' \
@ -68,12 +68,12 @@ username=system%40sozsoft.com
}' }'
``` ```
- Message göndermek için url : https://graph.facebook.com/v21.0/521106361082067/messages - Message göndermek için url : https://graph.facebook.com/v21.0/521106361082067/messages
``` ```
{ {
"messaging_product": "whatsapp", "messaging_product": "whatsapp",
"to": "{+gönderilecek gsm numarası}", "to": "{+gönderilecek gsm numarası}",
"type": "template", "type": "template",
"template": { "template": {
"name": "{message_template_name}", "name": "{message_template_name}",
@ -86,7 +86,7 @@ username=system%40sozsoft.com
"parameters": [ "parameters": [
{ {
"type": "text", "type": "text",
"text": "Test mesajı" "text": "Test mesajı"
} }
] ]
} }
@ -99,16 +99,16 @@ username=system%40sozsoft.com
- https://abp.io/docs/latest/release-info/upgrading - https://abp.io/docs/latest/release-info/upgrading
- https://abp.io/docs/9.0/release-info/migration-guides/abp-9-0 - https://abp.io/docs/9.0/release-info/migration-guides/abp-9-0
- https://learn.microsoft.com/en-us/aspnet/core/migration/80-90?view=aspnetcore-9.0&tabs=visual-studio-code - https://learn.microsoft.com/en-us/aspnet/core/migration/80-90?view=aspnetcore-9.0&tabs=visual-studio-code
- Adımlar: - Adımlar:
- abp cli güncellenir dotnet tool update --global Volo.Abp.Cli - abp cli güncellenir dotnet tool update --global Volo.Abp.Cli
- abp update ile sln içindeki referanslar update edilir - abp update ile sln içindeki referanslar update edilir
- modules/ klasörü *.csproj içinde ara&düzenle ile update edilir (örn. 8.3.4 -> 9.0.2) - modules/ klasörü *.csproj içinde ara&düzenle ile update edilir (örn. 8.3.4 -> 9.0.2)
- .net sürümü arttıysa Microsoft'un dotnet upgrade dokümanı takip edilir - .net sürümü arttıysa Microsoft'un dotnet upgrade dokümanı takip edilir
- Yeni dotnet sdk kurulumu yapılır (örn dotnet 9 sdk) - Yeni dotnet sdk kurulumu yapılır (örn dotnet 9 sdk)
- ef tools güncellenir (dotnet tool update --global dotnet-ef) - ef tools güncellenir (dotnet tool update --global dotnet-ef)
- Dockerfile dosyalarındaki base imajlar yeni dotnet sürümüne güncellenir - Dockerfile dosyalarındaki base imajlar yeni dotnet sürümüne güncellenir
- Abp upgrade dokümanı takip edilir - Abp upgrade dokümanı takip edilir
- Proje build olmuyorsa hatalar çözülür - Proje build olmuyorsa hatalar çözülür
- Yeni migration eklenir (varsa). Migration boÅŸ çıkıyorsa kaldırılır. (Örn dotnet ef migrations add Abp902 ve dotnet ef migrations remove) - Yeni migration eklenir (varsa). Migration boş çıkıyorsa kaldırılır. (Örn dotnet ef migrations add Abp902 ve dotnet ef migrations remove)
- Migration boÅŸ deÄŸilse çalıştırılır (dotnet ef database update) - Migration boş değilse çalıştırılır (dotnet ef database update)

View file

@ -2,10 +2,10 @@
public class ActivityFileDto public class ActivityFileDto
{ {
public string FileName { get; set; } // Dosya adı public string FileName { get; set; } // Dosya adı
public string FileType { get; set; } // MIME tipi public string FileType { get; set; } // MIME tipi
public long FileSize { get; set; } // Boyut (byte) public long FileSize { get; set; } // Boyut (byte)
public string SavedFileName { get; set; } // Blob üzerinde kaydedilen dosya adı public string SavedFileName { get; set; } // Blob üzerinde kaydedilen dosya adı
public string FileBase64 { get; set; } // Dosya içeriÄŸi public string FileBase64 { get; set; } // Dosya içeriği
} }

View file

@ -4,9 +4,9 @@ namespace Erp.Platform.Branchs;
public class SeedDetailDto public class SeedDetailDto
{ {
public string EntityName { get; set; } = string.Empty; // Örn: "RegistrationType" public string EntityName { get; set; } = string.Empty; // Örn: "RegistrationType"
public int InsertedCount { get; set; } public int InsertedCount { get; set; }
public List<string> InsertedItems { get; set; } = new(); // Eklenen kayıtların isimleri public List<string> InsertedItems { get; set; } = new(); // Eklenen kayıtların isimleri
public List<string> Warnings { get; set; } = new(); // Varsa uyarılar public List<string> Warnings { get; set; } = new(); // Varsa uyarılar
public List<string> Errors { get; set; } = new(); // Varsa hatalar public List<string> Errors { get; set; } = new(); // Varsa hatalar
} }

View file

@ -7,7 +7,7 @@ using Volo.Abp.Application.Dtos;
namespace Erp.Platform.DeveloperKit; namespace Erp.Platform.DeveloperKit;
/// <summary> /// <summary>
/// Dynamic AppService tanımı DTO'su /// Dynamic AppService tanımı DTO'su
/// </summary> /// </summary>
public class DynamicServiceDto : FullAuditedEntityDto<Guid> public class DynamicServiceDto : FullAuditedEntityDto<Guid>
{ {
@ -70,14 +70,14 @@ public class CompileResultDto
public List<string> Warnings { get; set; } public List<string> Warnings { get; set; }
/// <summary> /// <summary>
/// Yüklenen assembly (sadece server-side kullanım için, JSON'a serialize edilmez) /// Yüklenen assembly (sadece server-side kullanım için, JSON'a serialize edilmez)
/// </summary> /// </summary>
[System.Text.Json.Serialization.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore]
public System.Reflection.Assembly LoadedAssembly { get; set; } public System.Reflection.Assembly LoadedAssembly { get; set; }
} }
/// <summary> /// <summary>
/// Tek bir derleme hatası /// Tek bir derleme hatası
/// </summary> /// </summary>
public class CompilationErrorDto public class CompilationErrorDto
{ {
@ -105,7 +105,7 @@ public class TestCompileRequestDto
} }
/// <summary> /// <summary>
/// AppService yayınlama DTO'su /// AppService yayınlama DTO'su
/// </summary> /// </summary>
public class PublishAppServiceRequestDto public class PublishAppServiceRequestDto
{ {
@ -130,7 +130,7 @@ public class PublishAppServiceRequestDto
} }
/// <summary> /// <summary>
/// AppService yayınlama sonucu /// AppService yayınlama sonucu
/// </summary> /// </summary>
public class PublishResultDto public class PublishResultDto
{ {

View file

@ -8,7 +8,7 @@ public class CurrencyDto : FullAuditedEntityDto<Guid>
public string Code { get; set; } // TRY, USD, EUR public string Code { get; set; } // TRY, USD, EUR
public string Symbol { get; set; } // ₺, $, etc. public string Symbol { get; set; } // ₺, $, etc.
public string Name { get; set; } // Turkish lira, US dollar, ... public string Name { get; set; } // Turkish lira, US dollar, ...
public decimal Rate { get; set; } // TRY başına deÄŸer public decimal Rate { get; set; } // TRY başına değer
public bool IsActive { get; set; } public bool IsActive { get; set; }
public DateTime? LastUpdated { get; set; } public DateTime? LastUpdated { get; set; }
} }

View file

@ -11,14 +11,14 @@ public class OvertimeDto : FullAuditedEntityDto<Guid>
public EmployeeDto Employee { get; set; } // Navigation'dan doldurulabilir public EmployeeDto Employee { get; set; } // Navigation'dan doldurulabilir
public DateTime Date { get; set; } // Mesai tarihi public DateTime Date { get; set; } // Mesai tarihi
public DateTime StartTime { get; set; } // BaÅŸlangıç zamanı public DateTime StartTime { get; set; } // Başlangıç zamanı
public DateTime EndTime { get; set; } // BitiÅŸ zamanı public DateTime EndTime { get; set; } // Bitiş zamanı
public decimal TotalHours { get; set; } // Toplam fazla mesai süresi public decimal TotalHours { get; set; } // Toplam fazla mesai süresi
public string Reason { get; set; } // Fazla mesai nedeni public string Reason { get; set; } // Fazla mesai nedeni
public string Status { get; set; } // Durum: "Bekliyor", "Onaylandı", "Reddedildi" public string Status { get; set; } // Durum: "Bekliyor", "Onaylandı", "Reddedildi"
public Guid? ApprovedById { get; set; } // Onaylayan kiÅŸi ID public Guid? ApprovedById { get; set; } // Onaylayan kişi ID
public DateTime? ApprovedDate { get; set; } // Onay tarihi public DateTime? ApprovedDate { get; set; } // Onay tarihi
public string RejectionReason { get; set; } // Reddetme nedeni public string RejectionReason { get; set; } // Reddetme nedeni
public decimal Rate { get; set; } // Fazla mesai oranı (ör. 1.5x) public decimal Rate { get; set; } // Fazla mesai oranır. 1.5x)
public decimal? Amount { get; set; } // Hesaplanan ödeme tutarı public decimal? Amount { get; set; } // Hesaplanan ödeme tutarı
} }

View file

@ -11,12 +11,12 @@ public class ReservationDto : FullAuditedEntityDto<Guid>
public string ResourceName { get; set; } public string ResourceName { get; set; }
public Guid? EmployeeId { get; set; } public Guid? EmployeeId { get; set; }
public string EmployeeName { get; set; } // Optional: iliÅŸkili personel ismi public string EmployeeName { get; set; } // Optional: ilişkili personel ismi
public DateTime StartDate { get; set; } public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; } public DateTime EndDate { get; set; }
public string Purpose { get; set; } // Amaç public string Purpose { get; set; } // Amaç
public int? Participants { get; set; } // Katılımcı Sayısı public int? Participants { get; set; } // Katılımcı Sayısı
public string Notes { get; set; } public string Notes { get; set; }
public string Status { get; set; } // pending | approved | rejected | completed public string Status { get; set; } // pending | approved | rejected | completed
} }

View file

@ -7,11 +7,11 @@ public class ShuttleRouteDto : FullAuditedEntityDto<Guid>
{ {
public Guid? TenantId { get; set; } public Guid? TenantId { get; set; }
public string Type { get; set; } // Örn: "Servis", "Transfer", "Ring" public string Type { get; set; } // Örn: "Servis", "Transfer", "Ring"
public string Name { get; set; } // Hat adı veya açıklaması public string Name { get; set; } // Hat adı veya açıklaması
public string DepartureTime { get; set; } // Kalkış saati public string DepartureTime { get; set; } // Kalkış saati
public string ArrivalTime { get; set; } // Varış saati public string ArrivalTime { get; set; } // Varış saati
public int Capacity { get; set; } // Toplam kapasite public int Capacity { get; set; } // Toplam kapasite
public int Available { get; set; } // Mevcut boÅŸ koltuk sayısı public int Available { get; set; } // Mevcut boş koltuk sayısı
public string[] Route { get; set; } // JSON veya metin formatında güzergah bilgisi public string[] Route { get; set; } // JSON veya metin formatında güzergah bilgisi
} }

View file

@ -12,7 +12,7 @@ public class TrainingDto : FullAuditedEntityDto<Guid>
public string Instructor { get; set; } public string Instructor { get; set; }
public string Category { get; set; } // technical | soft-skills | management | compliance | other public string Category { get; set; } // technical | soft-skills | management | compliance | other
public string Type { get; set; } // online | classroom | hybrid public string Type { get; set; } // online | classroom | hybrid
public int Duration { get; set; } // saat veya gün olarak public int Duration { get; set; } // saat veya gün olarak
public DateTime StartDate { get; set; } public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; } public DateTime EndDate { get; set; }
public int MaxParticipants { get; set; } public int MaxParticipants { get; set; }
@ -21,7 +21,7 @@ public class TrainingDto : FullAuditedEntityDto<Guid>
public string Location { get; set; } public string Location { get; set; }
public string Thumbnail { get; set; } public string Thumbnail { get; set; }
// İliÅŸkili veriler // İlişkili veriler
public int CertificateCount { get; set; } // optional: iliÅŸkili sertifika sayısı public int CertificateCount { get; set; } // optional: ilişkili sertifika sayısı
} }

View file

@ -1,14 +1,14 @@
namespace Erp.Platform.ListForms; namespace Erp.Platform.ListForms;
/// <summary> Ãzel bir ölçek sonu koleksiyonu bildirir. Yalnızca eksen tipi "sürekli" veya "logaritmik" ise geçerlidir. /// <summary> Özel bir ölçek sonu koleksiyonu bildirir. Yalnızca eksen tipi "sürekli" veya "logaritmik" ise geçerlidir.
/// </summary> /// </summary>
public class BreakDto public class BreakDto
{ {
/// <summary> startValue özelliÄŸi ile birlikte ölçek kırılmasını sınırlar. /// <summary> startValue özelliği ile birlikte ölçek kırılmasını sınırlar.
/// </summary> /// </summary>
public int EndValue { get; set; } public int EndValue { get; set; }
/// <summary> endValue özelliÄŸi ile birlikte, ölçek kırılmasını sınırlar. /// <summary> endValue özelliği ile birlikte, ölçek kırılmasını sınırlar.
/// </summary> /// </summary>
public int StartValue { get; set; } public int StartValue { get; set; }
} }

View file

@ -3,7 +3,7 @@
public class BreakStyleDto public class BreakStyleDto
{ {
/// <summary> Rengi belirtir. /// <summary> Rengi belirtir.
/// Bu özellik aÅŸağıdaki renkleri destekler: /// Bu özellik aşağıdaki renkleri destekler:
/// Hexadecimal colors /// Hexadecimal colors
/// RGB colors /// RGB colors
/// RGBA colors /// RGBA colors
@ -12,7 +12,7 @@ public class BreakStyleDto
/// Paint server address /// Paint server address
/// </summary> /// </summary>
public string Color { get; set; } = "#ababab"; public string Color { get; set; } = "#ababab";
/// <summary> Ãlçek sonlarının çizgi stilini belirtir. /// <summary> Ölçek sonlarının çizgi stilini belirtir.
/// </summary> /// </summary>
public string Line { get; set; } = "waved"; public string Line { get; set; } = "waved";
public int Width { get; set; } = 5; public int Width { get; set; } = 5;

View file

@ -1,17 +1,17 @@
namespace Erp.Platform.ListForms; namespace Erp.Platform.ListForms;
/// <summary> Uyarlanabilir düzen özelliklerini belirtir. /// <summary> Uyarlanabilir düzen özelliklerini belirtir.
/// Şu sırada gizlenir: Title, Export menu icon, Legend, Axis titles, Axis labels /// Şu sırada gizlenir: Title, Export menu icon, Legend, Axis titles, Axis labels
/// </summary> /// </summary>
public class ChartAdaptivelayoutDto public class ChartAdaptivelayoutDto
{ {
/// <summary> Düzenin uyum saÄŸlamaya baÅŸladığı minimum kap yüksekliÄŸini belirtir. /// <summary> Düzenin uyum sağlamaya başladığı minimum kap yüksekliğini belirtir.
/// </summary> /// </summary>
public int Height { get; set; } = 80; public int Height { get; set; } = 80;
/// <summary> Düzenin uyum saÄŸlamaya baÅŸladığı minimum kapsayıcı geniÅŸliÄŸini belirtir. /// <summary> Düzenin uyum sağlamaya başladığı minimum kapsayıcı genişliğini belirtir.
/// </summary> /// </summary>
public int Width { get; set; } = 80; public int Width { get; set; } = 80;
/// <summary> UI bileÅŸeni düzeni uyarladığında nokta etiketlerinin tutulması gerekip gerekmediÄŸini belirtir. /// <summary> UI bileşeni düzeni uyarladığında nokta etiketlerinin tutulması gerekip gerekmediğini belirtir.
/// </summary> /// </summary>
public bool KeepLabels { get; set; } = true; public bool KeepLabels { get; set; } = true;
} }

View file

@ -2,27 +2,27 @@
namespace Erp.Platform.ListForms; namespace Erp.Platform.ListForms;
/// <summary> Animasyon özelliklerini belirtir. /// <summary> Animasyon özelliklerini belirtir.
/// </summary> /// </summary>
public class ChartAnimationDto public class ChartAnimationDto
{ {
/// <summary> Animasyonun milisaniye cinsinden ne kadar süreceÄŸini belirtir. /// <summary> Animasyonun milisaniye cinsinden ne kadar süreceğini belirtir.
/// </summary> /// </summary>
[Range(100, 2500, ErrorMessage = "Value for {0} must be between {1} and {2}.")] [Range(100, 2500, ErrorMessage = "Value for {0} must be between {1} and {2}.")]
public int Duration { get; set; } = 1000; public int Duration { get; set; } = 1000;
/// <summary> Animasyonun kolaylaÅŸtırma iÅŸlevini belirtir. /// <summary> Animasyonun kolaylaştırma işlevini belirtir.
/// Accepted Values: 'easeOutCubic' | 'linear' /// Accepted Values: 'easeOutCubic' | 'linear'
/// easeOutCubic: Animasyon hızlı baÅŸlar ve sona doÄŸru kademeli olarak yavaÅŸlar. /// easeOutCubic: Animasyon hızlı başlar ve sona doğru kademeli olarak yavaşlar.
/// linear : Animasyon sabit bir hızda ilerler. /// linear : Animasyon sabit bir hızda ilerler.
/// </summary> /// </summary>
public string Easing { get; set; } = "easeOutCubic"; public string Easing { get; set; } = "easeOutCubic";
/// <summary> UI bileÅŸeninde animasyonu etkinleÅŸtirir. /// <summary> UI bileşeninde animasyonu etkinleştirir.
/// </summary> /// </summary>
public bool Enabled { get; set; } = true; public bool Enabled { get; set; } = true;
/// <summary> Animasyon devre dışı bırakılmadan önce UI bileÅŸeninin kaç seri noktasına sahip olması gerektiÄŸini belirtir. /// <summary> Animasyon devre dışı bırakılmadan önce UI bileşeninin kaç seri noktasına sahip olması gerektiğini belirtir.
/// GrafiÄŸinizdeki seri noktalarının sayısı zamanla artarsa bunlara animasyon uygulamak, UI bileÅŸen performansını etkileyebilir. /// Grafiğinizdeki seri noktalarının sayısı zamanla artarsa bunlara animasyon uygulamak, UI bileşen performansını etkileyebilir.
/// Bu durumda, nokta sayısı için bir sınır belirtmek üzere maxPointCountSupported özelliÄŸini kullanın. /// Bu durumda, nokta sayısı için bir sınır belirtmek üzere maxPointCountSupported özelliğini kullanın.
/// Bu sınır aşıldığında animasyon devre dışı bırakılır. /// Bu sınır aşıldığında animasyon devre dışı bırakılır.
/// </summary> /// </summary>
public int MaxPointCountSupported { get; set; } = 300; public int MaxPointCountSupported { get; set; } = 300;
} }

View file

@ -10,14 +10,14 @@ public class ChartAnnotationDto
Font = new ChartFontDto(); Font = new ChartFontDto();
} }
/// <summary> Ek açıklamayı belirli bir bağımsız deÄŸiÅŸkene göre konumlandırır. /// <summary> Ek açıklamayı belirli bir bağımsız değişkene göre konumlandırır.
/// </summary> /// </summary>
public string Argument { get; set; } public string Argument { get; set; }
/// <summary> Ek açıklamanın kenarlığının görünümünü yapılandırır. /// <summary> Ek açıklamanın kenarlığının görünümünü yapılandırır.
/// </summary> /// </summary>
public ChartBorderDto Border { get; set; } public ChartBorderDto Border { get; set; }
/// <summary> Ek açıklamayı dolduran rengi belirtir. /// <summary> Ek açıklamayı dolduran rengi belirtir.
/// Bu özellik aÅŸağıdaki renkleri destekler: /// Bu özellik aşağıdaki renkleri destekler:
/// Hexadecimal colors /// Hexadecimal colors
/// RGB colors /// RGB colors
/// RGBA colors /// RGBA colors
@ -26,64 +26,64 @@ public class ChartAnnotationDto
/// Paint server address /// Paint server address
/// </summary> /// </summary>
public string Color { get; set; } = "#ffffff"; public string Color { get; set; } = "#ffffff";
/// <summary> Annotations'ın açıklamasını araç ipucunda belirtir. /// <summary> Annotations'ın açıklamasını araç ipucunda belirtir.
/// </summary> /// </summary>
public string Description { get; set; } public string Description { get; set; }
public ChartFontDto Font { get; set; } public ChartFontDto Font { get; set; }
/// <summary> Ek açıklamanın yüksekliÄŸini piksel cinsinden belirtir. /// <summary> Ek açıklamanın yüksekliğini piksel cinsinden belirtir.
/// </summary> /// </summary>
public int Height { get; set; } = -1; public int Height { get; set; } = -1;
/// <summary> Açıklamada görüntülenecek görüntüyü yapılandırır. Yalnızca tür "görüntü" ise geçerlidir. /// <summary> Açıklamada görüntülenecek görüntüyü yapılandırır. Yalnızca tür "görüntü" ise geçerlidir.
/// </summary> /// </summary>
public string Image { get; set; } public string Image { get; set; }
/// <summary> Ek açıklamanın adını belirtir. /// <summary> Ek açıklamanın adını belirtir.
/// </summary> /// </summary>
public string Name { get; set; } public string Name { get; set; }
/// <summary> Ek açıklamayı yatay olarak taşır. /// <summary> Ek açıklamayı yatay olarak taşır.
/// Bu özelliÄŸe atanan sayı, piksel cinsinden kaymayı belirtir. Negatif bir sayı notu sola kaydırır ve pozitif bir sayı onu saÄŸa kaydırır. /// Bu özelliğe atanan sayı, piksel cinsinden kaymayı belirtir. Negatif bir sayı notu sola kaydırır ve pozitif bir sayı onu sağa kaydırır.
/// </summary> /// </summary>
public int OffsetX { get; set; } = -1; public int OffsetX { get; set; } = -1;
/// <summary> Ek açıklamayı dikey olarak taşır. /// <summary> Ek açıklamayı dikey olarak taşır.
/// Bu özelliÄŸe atanan sayı, piksel cinsinden kaymayı belirtir. Negatif bir sayı ek açıklamayı yukarı kaydırır ve pozitif bir sayı onu aÅŸağı kaydırır. /// Bu özelliğe atanan sayı, piksel cinsinden kaymayı belirtir. Negatif bir sayı ek açıklamayı yukarı kaydırır ve pozitif bir sayı onu aşağı kaydırır.
/// </summary> /// </summary>
public int OffsetY { get; set; } = -1; public int OffsetY { get; set; } = -1;
/// <summary> Ek açıklamanın metni veya görüntüsü (piksel olarak belirtilir) çevresinde boÅŸ bir alan oluÅŸturmak için paddingTopBottom ile birlikte kullanılır. /// <summary> Ek açıklamanın metni veya görüntüsü (piksel olarak belirtilir) çevresinde boş bir alan oluşturmak için paddingTopBottom ile birlikte kullanılır.
/// </summary> /// </summary>
public int PaddingLeftRight { get; set; } = 10; public int PaddingLeftRight { get; set; } = 10;
/// <summary> paddingLeftRight ile birlikte, ek açıklama metninin veya görüntüsünün çevresinde boÅŸ bir alan oluÅŸturur; piksel cinsinden belirtilir. /// <summary> paddingLeftRight ile birlikte, ek açıklama metninin veya görüntüsünün çevresinde boş bir alan oluşturur; piksel cinsinden belirtilir.
/// </summary> /// </summary>
public int PaddingTopBottom { get; set; } = 10; public int PaddingTopBottom { get; set; } = 10;
/// <summary> Ek açıklamayı bir seri noktasına tutturur. Nokta dizisinin adını kabul eder. /// <summary> Ek açıklamayı bir seri noktasına tutturur. Nokta dizisinin adını kabul eder.
/// </summary> /// </summary>
public string Series { get; set; } public string Series { get; set; }
/// <summary>Ek açıklamanın metnini belirtir. Yalnızca tür "metin" ise geçerlidir. /// <summary>Ek açıklamanın metnini belirtir. Yalnızca tür "metin" ise geçerlidir.
/// </summary> /// </summary>
public string Text { get; set; } public string Text { get; set; }
/// <summary> Ek açıklama araç ipucunun etkin olup olmadığını belirtir. /// <summary> Ek açıklama araç ipucunun etkin olup olmadığını belirtir.
/// </summary> /// </summary>
public bool TooltipEnabled { get; set; } = true; public bool TooltipEnabled { get; set; } = true;
/// <summary> Ek açıklamanın metin mi, resim mi yoksa ÅŸablon mu görüntülediÄŸini belirtir. Bu gerekli bir ayardır. /// <summary> Ek açıklamanın metin mi, resim mi yoksa şablon mu görüntülediğini belirtir. Bu gerekli bir ayardır.
/// Accepted Values: 'text' | 'image' | 'custom' /// Accepted Values: 'text' | 'image' | 'custom'
/// Default Value: undefined /// Default Value: undefined
/// </summary> /// </summary>
public string Type { get; set; } public string Type { get; set; }
/// <summary> Ek açıklamayı belirtilen deÄŸer eksenindeki bir deÄŸere göre konumlandırır. /// <summary> Ek açıklamayı belirtilen değer eksenindeki bir değere göre konumlandırır.
/// </summary> /// </summary>
public string Value { get; set; } public string Value { get; set; }
/// <summary> Ek açıklamanın geniÅŸliÄŸini piksel cinsinden belirtir. /// <summary> Ek açıklamanın genişliğini piksel cinsinden belirtir.
/// </summary> /// </summary>
public int Width { get; set; } public int Width { get; set; }
/// <summary> Ek açıklama metninin tek bir satıra sığmaması durumunda nasıl kaydırılacağını belirtir. /// <summary> Ek açıklama metninin tek bir satıra sığmaması durumunda nasıl kaydırılacağını belirtir.
/// Accepted Values: 'normal' | 'breakWord' | 'none' /// Accepted Values: 'normal' | 'breakWord' | 'none'
/// normal : Metin yalnızca izin verilen kesme noktalarında (örneÄŸin, iki kelime arasındaki boÅŸluk) kesiliyor. /// normal : Metin yalnızca izin verilen kesme noktalarında (örneğin, iki kelime arasındaki boşluk) kesiliyor.
/// breakWord : Words can be broken if there are no available breakpoints in the line. /// breakWord : Words can be broken if there are no available breakpoints in the line.
/// none : Sözcük kaydırma devre dışı. /// none : Sözcük kaydırma devre dışı.
/// </summary> /// </summary>
public string WordWrap { get; set; } = "normal"; public string WordWrap { get; set; } = "normal";
/// <summary> Ek açıklamanın merkezini belirli bir piksel koordinatına konumlandırmak için y ile birlikte kullanılır. (0, 0), UI bileÅŸeninin sol üst köşesidir. /// <summary> Ek açıklamanın merkezini belirli bir piksel koordinatına konumlandırmak için y ile birlikte kullanılır. (0, 0), UI bileşeninin sol üst köşesidir.
/// </summary> /// </summary>
public int X { get; set; } public int X { get; set; }
/// <summary> Ek açıklamanın merkezini belirli bir piksel koordinatına konumlandırmak için x ile birlikte kullanılır. (0, 0), UI bileÅŸeninin sol üst köşesidir. /// <summary> Ek açıklamanın merkezini belirli bir piksel koordinatına konumlandırmak için x ile birlikte kullanılır. (0, 0), UI bileşeninin sol üst köşesidir.
/// </summary> /// </summary>
public int Y { get; set; } public int Y { get; set; }

View file

@ -8,80 +8,80 @@ public class ChartArgumentAxisDto
Label = new ChartArgumentAxisLabelDto(); Label = new ChartArgumentAxisLabelDto();
} }
/// <summary> ArgumentAxis için Label sınıfı /// <summary> ArgumentAxis için Label sınıfı
/// https://js.devexpress.com/Documentation/ApiReference/UI_Components/dxChart/Configuration/argumentAxis/label/ /// https://js.devexpress.com/Documentation/ApiReference/UI_Components/dxChart/Configuration/argumentAxis/label/
/// </summary> /// </summary>
public class ChartArgumentAxisLabelDto public class ChartArgumentAxisLabelDto
{ {
public ChartArgumentAxisLabelDto() { } public ChartArgumentAxisLabelDto() { }
/// <summary> Eksen etiketlerini döndürmenizi veya kademelendirmenizi saÄŸlar. Yalnızca yatay eksen için geçerlidir. /// <summary> Eksen etiketlerini döndürmenizi veya kademelendirmenizi sağlar. Yalnızca yatay eksen için geçerlidir.
/// Accepted Values: 'rotate' | 'stagger' | 'standard' /// Accepted Values: 'rotate' | 'stagger' | 'standard'
/// rotate : Eksen etiketlerini, rotateAngle özelliÄŸi tarafından belirtilen açı boyunca döndürür. /// rotate : Eksen etiketlerini, rotateAngle özelliği tarafından belirtilen açı boyunca döndürür.
/// stagger: Eksen etiketlerini iki sıra halinde düzenler. Satırlar arasında boÅŸ bir alan, staggeringSpacing özelliÄŸi tarafından belirtilir. /// stagger: Eksen etiketlerini iki sıra halinde düzenler. Satırlar arasında boş bir alan, staggeringSpacing özelliği tarafından belirtilir.
/// standard:Eksen etiketlerinin varsayılan yerleÅŸimini deÄŸiÅŸtirmez. /// standard:Eksen etiketlerinin varsayılan yerleşimini değiştirmez.
/// </summary> /// </summary>
public string DisplayMode { get; set; } = "standard"; public string DisplayMode { get; set; } = "standard";
/// <summary> Eksen etiketlerinin dönüş açısını belirtir. Yalnızca displayMode veya overppingBehavior "rotate" ise geçerlidir. /// <summary> Eksen etiketlerinin dönüş açısını belirtir. Yalnızca displayMode veya overppingBehavior "rotate" ise geçerlidir.
/// </summary> /// </summary>
public int RotationAngle { get; set; } = 90; public int RotationAngle { get; set; } = 90;
/// <summary> Tümünü görüntülemek için yeterli alan olmadığında eksen etiketlerinin nasıl düzenleneceÄŸine karar verir. /// <summary> Tümünü görüntülemek için yeterli alan olmadığında eksen etiketlerinin nasıl düzenleneceğine karar verir.
/// Accepted Values: 'rotate' | 'stagger' | 'none' | 'hide' /// Accepted Values: 'rotate' | 'stagger' | 'none' | 'hide'
/// </summary> /// </summary>
public string OverlappingBehavior { get; set; } = "hide"; public string OverlappingBehavior { get; set; } = "hide";
} }
/// <summary> Bağımsız deÄŸiÅŸkenleri belirtilen bir veri türüne dönüştürür. /// <summary> Bağımsız değişkenleri belirtilen bir veri türüne dönüştürür.
/// Accepted Values: 'datetime' | 'numeric' | 'string' /// Accepted Values: 'datetime' | 'numeric' | 'string'
/// Default Value: undefined /// Default Value: undefined
/// Veri kaynağınız sayıları veya tarihleri â€â€dizeler olarak saklıyorsa, bu özelliÄŸi kullanarak uygun veri türünü belirtin. Tarihlerin geçerli bir biçimi olduÄŸundan emin olun. /// Veri kaynağınız sayıları veya tarihleri â€â€dizeler olarak saklıyorsa, bu özelliği kullanarak uygun veri türünü belirtin. Tarihlerin geçerli bir biçimi olduğundan emin olun.
/// </summary> /// </summary>
public string ArgumentType { get; set; } public string ArgumentType { get; set; }
/// <summary> Toplama aralıklarının uzunluÄŸunu eksen birimleri cinsinden belirtir. Yalnızca sürekli ve logaritmik tipteki eksenler için geçerlidir. /// <summary> Toplama aralıklarının uzunluğunu eksen birimleri cinsinden belirtir. Yalnızca sürekli ve logaritmik tipteki eksenler için geçerlidir.
/// Accepted Values: 'day' | 'hour' | 'millisecond' | 'minute' | 'month' | 'quarter' | 'second' | 'week' | 'year' /// Accepted Values: 'day' | 'hour' | 'millisecond' | 'minute' | 'month' | 'quarter' | 'second' | 'week' | 'year'
/// Default Value: undefined /// Default Value: undefined
/// Veri toplama için bağımsız deÄŸiÅŸken ekseni aralıklara bölünür. Aynı aralığa düşen seri noktaları bir araya toplanır. aggregationInterval özelliÄŸi, her aralığın uzunluÄŸunu tanımlar. /// Veri toplama için bağımsız değişken ekseni aralıklara bölünür. Aynı aralığa düşen seri noktaları bir araya toplanır. aggregationInterval özelliği, her aralığın uzunluğunu tanımlar.
/// nesne olarak da implement edilebilir, ÅŸimdilik yapılmadı. ÃrneÄŸin 'day' seçildiÄŸinde gün sayısı 5 olarak verilebilir /// nesne olarak da implement edilebilir, şimdilik yapılmadı. Örneğin 'day' seçildiğinde gün sayısı 5 olarak verilebilir
/// </summary> /// </summary>
public string AggregationInterval { get; set; } public string AggregationInterval { get; set; }
public ChartAxisGridDto Grid { get; set; } public ChartAxisGridDto Grid { get; set; }
/// <summary> Kullanıcı bir eksen etiketini iÅŸaret ettiÄŸinde vurgulanacak grafik öğelerini belirtir. /// <summary> Kullanıcı bir eksen etiketini işaret ettiğinde vurgulanacak grafik öğelerini belirtir.
/// Accepted Values: 'allArgumentPoints' | 'none' /// Accepted Values: 'allArgumentPoints' | 'none'
/// Default Value: 'none' /// Default Value: 'none'
/// none : Eksen etiketleri, onlara iÅŸaret etmeye yanıt vermez. /// none : Eksen etiketleri, onlara işaret etmeye yanıt vermez.
/// allArgumentPoints : Bir kullanıcı bağımsız deÄŸiÅŸken ekseninde bir etiketi iÅŸaret ettiÄŸinde, karşılık gelen bağımsız deÄŸiÅŸkenin seri noktaları vurgulanır. /// allArgumentPoints : Bir kullanıcı bağımsız değişken ekseninde bir etiketi işaret ettiğinde, karşılık gelen bağımsız değişkenin seri noktaları vurgulanır.
/// </summary> /// </summary>
public string HoverMode { get; set; } = "none"; public string HoverMode { get; set; } = "none";
public ChartArgumentAxisLabelDto Label { get; set; } public ChartArgumentAxisLabelDto Label { get; set; }
/// <summary> Bağımsız deÄŸiÅŸken ekseninin yerini deÄŸiÅŸtirir. /// <summary> Bağımsız değişken ekseninin yerini değiştirir.
/// Accepted Values: 'bottom' | 'left' | 'right' | 'top' /// Accepted Values: 'bottom' | 'left' | 'right' | 'top'
/// Default Value: 'bottom' /// Default Value: 'bottom'
/// Döndürülen (Rotated) özelliÄŸin deÄŸerine baÄŸlı olarak, konum (Position) farklı deÄŸerler kabul eder. /// Döndürülen (Rotated) özelliğin değerine bağlı olarak, konum (Position) farklı değerler kabul eder.
/// If (Rotated = False) => Position = "bottom" or "top" /// If (Rotated = False) => Position = "bottom" or "top"
/// If (Rotated = True) => Position = "left" or "right" /// If (Rotated = True) => Position = "left" or "right"
/// </summary> /// </summary>
public string Position { get; set; } = "bottom"; public string Position { get; set; } = "bottom";
/// <summary> Eksen baÅŸlığını yapılandırır. /// <summary> Eksen başlığını yapılandırır.
/// Şimdilik sadece string olaran implemen edildi, ihtiyaç olması durumunda ChartTitleDto benzeri bir nesne ile deÄŸiÅŸtirilebilir /// Şimdilik sadece string olaran implemen edildi, ihtiyaç olması durumunda ChartTitleDto benzeri bir nesne ile değiştirilebilir
/// </summary> /// </summary>
public string Title { get; set; } public string Title { get; set; }
/// <summary> Eksen çizgisini görünür yapar. /// <summary> Eksen çizgisini görünür yapar.
/// </summary> /// </summary>
public bool Visible { get; set; } = true; public bool Visible { get; set; } = true;
/// <summary> Eksen çizgisinin geniÅŸliÄŸini piksel cinsinden belirtir. /// <summary> Eksen çizgisinin genişliğini piksel cinsinden belirtir.
/// </summary> /// </summary>
public int Width { get; set; } = 1; public int Width { get; set; } = 1;
/// <summary> Eksen üzerinde yalnızca iÅŸ günlerini bırakır: çalışma haftası günleri artı tek iÅŸ günleri eksi tatiller. Yalnızca eksenin argümanTürü "tarihsaat" ise geçerlidir. /// <summary> Eksen üzerinde yalnızca iş günlerini bırakır: çalışma haftası günleri artı tek iş günleri eksi tatiller. Yalnızca eksenin argümanTürü "tarihsaat" ise geçerlidir.
/// </summary> /// </summary>
public bool WorkdaysOnly { get; set; } public bool WorkdaysOnly { get; set; }
// ihtiyaç olunca açılacak proptert ler // ihtiyaç olunca açılacak proptert ler
// aggregateByCategory // aggregateByCategory
// aggregatedPointsPosition // aggregatedPointsPosition
// aggregationGroupWidth // aggregationGroupWidth
// allowDecimals // allowDecimals
// axisDivisionFactor // İki komÅŸu ana çizgi arasındaki minimum mesafeyi piksel cinsinden belirtir. Yalnızca "sürekli" ve "logaritmik" tiplerin eksenleri için geçerlidir. // axisDivisionFactor // İki komşu ana çizgi arasındaki minimum mesafeyi piksel cinsinden belirtir. Yalnızca "sürekli" ve "logaritmik" tiplerin eksenleri için geçerlidir.
// breaks[] // breaks[]
// breakStyle // breakStyle
// categories // categories

View file

@ -2,8 +2,8 @@
public class ChartAxisGridDto public class ChartAxisGridDto
{ {
/// <summary> Grid çizgilerinin rengini belirtir. /// <summary> Grid çizgilerinin rengini belirtir.
/// Bu özellik aÅŸağıdaki renkleri destekler: /// Bu özellik aşağıdaki renkleri destekler:
/// Hexadecimal colors /// Hexadecimal colors
/// RGB colors /// RGB colors
/// RGBA colors /// RGBA colors
@ -12,16 +12,16 @@ public class ChartAxisGridDto
/// Paint server address /// Paint server address
/// </summary> /// </summary>
public string Color { get; set; } = "#d3d3d3"; public string Color { get; set; } = "#d3d3d3";
/// <summary> Grid çizgilerini görünür yapar. /// <summary> Grid çizgilerini görünür yapar.
/// </summary> /// </summary>
public bool Visible { get; set; } public bool Visible { get; set; }
/// <summary> Grid çizgilerinin geniÅŸliÄŸini piksel cinsinden belirtir. /// <summary> Grid çizgilerinin genişliğini piksel cinsinden belirtir.
/// </summary> /// </summary>
public int Width { get; set; } = 1; public int Width { get; set; } = 1;
///// <summary> Grid çizgilerinin saydamlığını belirtir. ///// <summary> Grid çizgilerinin saydamlığını belirtir.
///// 0 - 1 aralığındadır ///// 0 - 1 aralığındadır
///// </summary> ///// </summary>
//public double Opacity { get; set; } = 1; //public double Opacity { get; set; } = 1;
} }

View file

@ -4,8 +4,8 @@ namespace Erp.Platform.ListForms;
public class ChartBorderDto public class ChartBorderDto
{ {
/// <summary>Legend in kenarlığını renklendirir. /// <summary>Legend in kenarlığını renklendirir.
/// Bu özellik aÅŸağıdaki renkleri destekler: /// Bu özellik aşağıdaki renkleri destekler:
/// Hexadecimal colors /// Hexadecimal colors
/// RGB colors /// RGB colors
/// RGBA colors /// RGBA colors
@ -14,27 +14,27 @@ public class ChartBorderDto
/// Paint server address /// Paint server address
/// </summary> /// </summary>
public string Color { get; set; } = "#d3d3d3"; public string Color { get; set; } = "#d3d3d3";
/// <summary> Legend in tüm köşelerini yuvarlatır. /// <summary> Legend in tüm köşelerini yuvarlatır.
/// </summary> /// </summary>
[Range(0, 100, ErrorMessage = "Value for {0} must be between {1} and {2}.")] [Range(0, 100, ErrorMessage = "Value for {0} must be between {1} and {2}.")]
public int CornerRadius { get; set; } = 0; public int CornerRadius { get; set; } = 0;
/// <summary> Açıklamanın kenarlığı için bir tire stili ayarlar /// <summary> Açıklamanın kenarlığıin bir tire stili ayarlar
/// Accepted Values: 'dash' | 'dot' | 'longDash' | 'solid' /// Accepted Values: 'dash' | 'dot' | 'longDash' | 'solid'
/// Default Value: 'solid' /// Default Value: 'solid'
/// solid : Kenarlık düz, sürekli bir çizgidir /// solid : Kenarlık düz, sürekli bir çizgidir
/// longDash : Kenarlık, uzun çizgiler kullanılarak görüntülenir /// longDash : Kenarlık, uzun çizgiler kullanılarak görüntülenir
/// dash : Kenarlık, tireler kullanılarak görüntülenir /// dash : Kenarlık, tireler kullanılarak görüntülenir
/// dot : Kenarlık noktalar kullanılarak görüntülenir /// dot : Kenarlık noktalar kullanılarak görüntülenir
/// Any combination of 'longDash', 'dash' and 'dot : Kenarlık, belirtilen kombinasyon tekrarlanarak görüntülenir. ÃrneÄŸin, 'dashdotdash'. /// Any combination of 'longDash', 'dash' and 'dot : Kenarlık, belirtilen kombinasyon tekrarlanarak görüntülenir. Örneğin, 'dashdotdash'.
/// </summary> /// </summary>
public string DashStyle { get; set; } = "solid"; public string DashStyle { get; set; } = "solid";
///// <summary> Açıklamanın kenarlığının saydamlığını belirtir ///// <summary> Açıklamanın kenarlığının saydamlığını belirtir
///// Bu özellik, 0 ile 1 arasında bir deÄŸer kabul eder; burada 0, kenarlığı tamamen saydam, 1 ise opak yapar. ///// Bu özellik, 0 ile 1 arasında bir değer kabul eder; burada 0, kenarlığı tamamen saydam, 1 ise opak yapar.
///// </summary> ///// </summary>
//[Range(0.1, 1, ErrorMessage = "Value for {0} must be between {1} and {2}.")] //[Range(0.1, 1, ErrorMessage = "Value for {0} must be between {1} and {2}.")]
//public double Opacity { get; set; } = 0.5; //public double Opacity { get; set; } = 0.5;
public bool Visible { get; set; } public bool Visible { get; set; }
/// <summary> Açıklamanın kenarlığının geniÅŸliÄŸini piksel cinsinden belirtir /// <summary> Açıklamanın kenarlığının genişliğini piksel cinsinden belirtir
/// </summary> /// </summary>
public int Width { get; set; } = 1; public int Width { get; set; } = 1;
} }

View file

@ -8,14 +8,14 @@ public class ChartCommonAnnotationDto
Font = new ChartFontDto(); Font = new ChartFontDto();
} }
/// <summary> Ek açıklamayı belirli bir bağımsız deÄŸiÅŸkene göre konumlandırır. /// <summary> Ek açıklamayı belirli bir bağımsız değişkene göre konumlandırır.
/// </summary> /// </summary>
public string Argument { get; set; } public string Argument { get; set; }
/// <summary> Ek açıklamanın kenarlığının görünümünü yapılandırır. /// <summary> Ek açıklamanın kenarlığının görünümünü yapılandırır.
/// </summary> /// </summary>
public ChartBorderDto Border { get; set; } public ChartBorderDto Border { get; set; }
/// <summary> Ek açıklamayı dolduran rengi belirtir. /// <summary> Ek açıklamayı dolduran rengi belirtir.
/// Bu özellik aÅŸağıdaki renkleri destekler: /// Bu özellik aşağıdaki renkleri destekler:
/// Hexadecimal colors /// Hexadecimal colors
/// RGB colors /// RGB colors
/// RGBA colors /// RGBA colors
@ -24,61 +24,61 @@ public class ChartCommonAnnotationDto
/// Paint server address /// Paint server address
/// </summary> /// </summary>
public string Color { get; set; } = "#ffffff"; public string Color { get; set; } = "#ffffff";
/// <summary> Annotations'ın açıklamasını araç ipucunda belirtir. /// <summary> Annotations'ın açıklamasını araç ipucunda belirtir.
/// </summary> /// </summary>
public string Description { get; set; } public string Description { get; set; }
public ChartFontDto Font { get; set; } public ChartFontDto Font { get; set; }
/// <summary> Ek açıklamanın yüksekliÄŸini piksel cinsinden belirtir. /// <summary> Ek açıklamanın yüksekliğini piksel cinsinden belirtir.
/// </summary> /// </summary>
public int Height { get; set; } = -1; public int Height { get; set; } = -1;
/// <summary> Açıklamada görüntülenecek görüntüyü yapılandırır. Yalnızca tür "görüntü" ise geçerlidir. /// <summary> Açıklamada görüntülenecek görüntüyü yapılandırır. Yalnızca tür "görüntü" ise geçerlidir.
/// </summary> /// </summary>
public string Image { get; set; } public string Image { get; set; }
/// <summary> Ek açıklamayı yatay olarak taşır. /// <summary> Ek açıklamayı yatay olarak taşır.
/// Bu özelliÄŸe atanan sayı, piksel cinsinden kaymayı belirtir. Negatif bir sayı notu sola kaydırır ve pozitif bir sayı onu saÄŸa kaydırır. /// Bu özelliğe atanan sayı, piksel cinsinden kaymayı belirtir. Negatif bir sayı notu sola kaydırır ve pozitif bir sayı onu sağa kaydırır.
/// </summary> /// </summary>
public int OffsetX { get; set; } = -1; public int OffsetX { get; set; } = -1;
/// <summary> Ek açıklamayı dikey olarak taşır. /// <summary> Ek açıklamayı dikey olarak taşır.
/// Bu özelliÄŸe atanan sayı, piksel cinsinden kaymayı belirtir. Negatif bir sayı ek açıklamayı yukarı kaydırır ve pozitif bir sayı onu aÅŸağı kaydırır. /// Bu özelliğe atanan sayı, piksel cinsinden kaymayı belirtir. Negatif bir sayı ek açıklamayı yukarı kaydırır ve pozitif bir sayı onu aşağı kaydırır.
/// </summary> /// </summary>
public int OffsetY { get; set; } = -1; public int OffsetY { get; set; } = -1;
/// <summary> Ek açıklamanın metni veya görüntüsü (piksel olarak belirtilir) çevresinde boÅŸ bir alan oluÅŸturmak için paddingTopBottom ile birlikte kullanılır. /// <summary> Ek açıklamanın metni veya görüntüsü (piksel olarak belirtilir) çevresinde boş bir alan oluşturmak için paddingTopBottom ile birlikte kullanılır.
/// </summary> /// </summary>
public int PaddingLeftRight { get; set; } = 10; public int PaddingLeftRight { get; set; } = 10;
/// <summary> paddingLeftRight ile birlikte, ek açıklama metninin veya görüntüsünün çevresinde boÅŸ bir alan oluÅŸturur; piksel cinsinden belirtilir. /// <summary> paddingLeftRight ile birlikte, ek açıklama metninin veya görüntüsünün çevresinde boş bir alan oluşturur; piksel cinsinden belirtilir.
/// </summary> /// </summary>
public int PaddingTopBottom { get; set; } = 10; public int PaddingTopBottom { get; set; } = 10;
/// <summary> Ek açıklamayı bir seri noktasına tutturur. Nokta dizisinin adını kabul eder. /// <summary> Ek açıklamayı bir seri noktasına tutturur. Nokta dizisinin adını kabul eder.
/// </summary> /// </summary>
public string Series { get; set; } public string Series { get; set; }
/// <summary>Ek açıklamanın metnini belirtir. Yalnızca tür "metin" ise geçerlidir. /// <summary>Ek açıklamanın metnini belirtir. Yalnızca tür "metin" ise geçerlidir.
/// </summary> /// </summary>
public string Text { get; set; } public string Text { get; set; }
/// <summary> Ek açıklama araç ipucunun etkin olup olmadığını belirtir. /// <summary> Ek açıklama araç ipucunun etkin olup olmadığını belirtir.
/// </summary> /// </summary>
public bool TooltipEnabled { get; set; } = true; public bool TooltipEnabled { get; set; } = true;
/// <summary> Ek açıklamanın metin mi, resim mi yoksa ÅŸablon mu görüntülediÄŸini belirtir. Bu gerekli bir ayardır. /// <summary> Ek açıklamanın metin mi, resim mi yoksa şablon mu görüntülediğini belirtir. Bu gerekli bir ayardır.
/// Accepted Values: 'text' | 'image' | 'custom' /// Accepted Values: 'text' | 'image' | 'custom'
/// Default Value: undefined /// Default Value: undefined
/// </summary> /// </summary>
public string Type { get; set; } public string Type { get; set; }
/// <summary> Ek açıklamayı belirtilen deÄŸer eksenindeki bir deÄŸere göre konumlandırır. /// <summary> Ek açıklamayı belirtilen değer eksenindeki bir değere göre konumlandırır.
/// </summary> /// </summary>
public string Value { get; set; } public string Value { get; set; }
/// <summary> Ek açıklamanın geniÅŸliÄŸini piksel cinsinden belirtir. /// <summary> Ek açıklamanın genişliğini piksel cinsinden belirtir.
/// </summary> /// </summary>
public int Width { get; set; } public int Width { get; set; }
/// <summary> Ek açıklama metninin tek bir satıra sığmaması durumunda nasıl kaydırılacağını belirtir. /// <summary> Ek açıklama metninin tek bir satıra sığmaması durumunda nasıl kaydırılacağını belirtir.
/// Accepted Values: 'normal' | 'breakWord' | 'none' /// Accepted Values: 'normal' | 'breakWord' | 'none'
/// normal : Metin yalnızca izin verilen kesme noktalarında (örneÄŸin, iki kelime arasındaki boÅŸluk) kesiliyor. /// normal : Metin yalnızca izin verilen kesme noktalarında (örneğin, iki kelime arasındaki boşluk) kesiliyor.
/// breakWord : Words can be broken if there are no available breakpoints in the line. /// breakWord : Words can be broken if there are no available breakpoints in the line.
/// none : Sözcük kaydırma devre dışı. /// none : Sözcük kaydırma devre dışı.
/// </summary> /// </summary>
public string WordWrap { get; set; } = "normal"; public string WordWrap { get; set; } = "normal";
/// <summary> Ek açıklamanın merkezini belirli bir piksel koordinatına konumlandırmak için y ile birlikte kullanılır. (0, 0), UI bileÅŸeninin sol üst köşesidir. /// <summary> Ek açıklamanın merkezini belirli bir piksel koordinatına konumlandırmak için y ile birlikte kullanılır. (0, 0), UI bileşeninin sol üst köşesidir.
/// </summary> /// </summary>
public int X { get; set; } public int X { get; set; }
/// <summary> Ek açıklamanın merkezini belirli bir piksel koordinatına konumlandırmak için x ile birlikte kullanılır. (0, 0), UI bileÅŸeninin sol üst köşesidir. /// <summary> Ek açıklamanın merkezini belirli bir piksel koordinatına konumlandırmak için x ile birlikte kullanılır. (0, 0), UI bileşeninin sol üst köşesidir.
/// </summary> /// </summary>
public int Y { get; set; } public int Y { get; set; }

View file

@ -11,18 +11,18 @@ public class ChartCommonAxisDto
} }
public ChartAxisGridDto Grid { get; set; } public ChartAxisGridDto Grid { get; set; }
/// <summary> Ana eksen iÅŸaretlerinin görünümünü yapılandırır. /// <summary> Ana eksen işaretlerinin görünümünü yapılandırır.
/// Şimdilik sadece string olaran implemen edildi, ihtiyaç olması durumunda ChartTitleDto benzeri bir nesne ile deÄŸiÅŸtirilebilir /// Şimdilik sadece string olaran implemen edildi, ihtiyaç olması durumunda ChartTitleDto benzeri bir nesne ile değiştirilebilir
/// </summary> /// </summary>
public string Title { get; set; } public string Title { get; set; }
/// <summary> Eksen çizgisini görünür yapar. /// <summary> Eksen çizgisini görünür yapar.
/// </summary> /// </summary>
public bool Visible { get; set; } = true; public bool Visible { get; set; } = true;
/// <summary> Eksen çizgisinin geniÅŸliÄŸini piksel cinsinden belirtir. /// <summary> Eksen çizgisinin genişliğini piksel cinsinden belirtir.
/// </summary> /// </summary>
public int Width { get; set; } = 1; public int Width { get; set; } = 1;
// ihtiyaç olunca açılacak proptert ler // ihtiyaç olunca açılacak proptert ler
// aggregatedPointsPosition // aggregatedPointsPosition
// allowDecimals // allowDecimals

View file

@ -2,40 +2,40 @@
public class ChartCommonDto public class ChartCommonDto
{ {
/// <summary> Bağımsız deÄŸiÅŸken ekseni yakınlaÅŸtırılırken veya kaydırılırken deÄŸer ekseninin visualRange deÄŸerinin ayarlanıp ayarlanmadığını belirtir. /// <summary> Bağımsız değişken ekseni yakınlaştırılırken veya kaydırılırken değer ekseninin visualRange değerinin ayarlanıp ayarlanmadığını belirtir.
/// </summary> /// </summary>
public bool AdjustOnZoom { get; set; } = true; public bool AdjustOnZoom { get; set; } = true;
/// <summary> Grafik kabının arka planını renklendirir. /// <summary> Grafik kabının arka planını renklendirir.
/// Not: HiddenInput olarak etiketlenmesinin sebebi renk seçimi için farklı bir editör kullanılmasından dolayıdır /// Not: HiddenInput olarak etiketlenmesinin sebebi renk seçimi için farklı bir editör kullanılmasından dolayıdır
/// Default Value: '#FFFFFF' /// Default Value: '#FFFFFF'
/// </summary> /// </summary>
public string ContainerBackgroundColor { get; set; } = "#FFFFFF"; public string ContainerBackgroundColor { get; set; } = "#FFFFFF";
/// <summary> Serileri ve öğelerini renklendirmek için kullanılacak paleti ayarlar. /// <summary> Serileri ve öğelerini renklendirmek için kullanılacak paleti ayarlar.
/// Accepted Values: 'Bright' | 'Harmony Light' | 'Ocean' | 'Pastel' | 'Soft' | 'Soft Pastel' | 'Vintage' | 'Violet' | 'Carmine' | 'Dark Moon' | 'Dark Violet' | 'Green Mist' | 'Soft Blue' | 'Material' | 'Office' /// Accepted Values: 'Bright' | 'Harmony Light' | 'Ocean' | 'Pastel' | 'Soft' | 'Soft Pastel' | 'Vintage' | 'Violet' | 'Carmine' | 'Dark Moon' | 'Dark Violet' | 'Green Mist' | 'Soft Blue' | 'Material' | 'Office'
/// Default Value: 'Material' /// Default Value: 'Material'
/// </summary> /// </summary>
public string Palette { get; set; } = "Material"; public string Palette { get; set; } = "Material";
/// <summary> Sayıları seri sayısından (Chart UI bileÅŸeninde) veya bir serideki noktalardan (PieChart UI bileÅŸeninde) az olduÄŸunda, paletteki renklerle ne yapılacağını belirtir. /// <summary> Sayıları seri sayısından (Chart UI bileşeninde) veya bir serideki noktalardan (PieChart UI bileşeninde) az olduğunda, paletteki renklerle ne yapılacağını belirtir.
/// Accepted Values: 'alternate' | 'blend' | 'extrapolate' /// Accepted Values: 'alternate' | 'blend' | 'extrapolate'
/// Default Value: 'blend' /// Default Value: 'blend'
/// blend : İki komÅŸu rengin bir karışımını oluÅŸturur ve paletteki bu renklerin arasına ekler. /// blend : İki komşu rengin bir karışımını oluşturur ve paletteki bu renklerin arasına ekler.
/// alternate : Sırayla normal, açık ve koyu tonlarını deÄŸiÅŸtirerek tüm palet renklerini tekrarlar. /// alternate : Sırayla normal, açık ve koyu tonlarını değiştirerek tüm palet renklerini tekrarlar.
/// extrapolate : Gölgelerini yavaÅŸ yavaÅŸ karanlıktan aydınlığa deÄŸiÅŸtirerek tüm palet renklerini tekrarlar. /// extrapolate : Gölgelerini yavaş yavaş karanlıktan aydınlığa değiştirerek tüm palet renklerini tekrarlar.
/// </summary> /// </summary>
public string PaletteExtensionMode { get; set; } = "blend"; public string PaletteExtensionMode { get; set; } = "blend";
/// <summary> PanesDto dolu ise hangisinin default olduÄŸunu belirleyen isimdir. PanesDto[0].name ismi /// <summary> PanesDto dolu ise hangisinin default olduğunu belirleyen isimdir. PanesDto[0].name ismi
/// </summary> /// </summary>
public string DefaultPane { get; set; } public string DefaultPane { get; set; }
/// <summary> UI bileÅŸeninin kullanıcı etkileÅŸimine yanıt verip vermediÄŸini belirtir. /// <summary> UI bileşeninin kullanıcı etkileşimine yanıt verip vermediğini belirtir.
/// </summary> /// </summary>
public bool Disabled { get; set; } public bool Disabled { get; set; }
/// <summary> UI bileÅŸeninin kullandığı temanın adını ayarlar. /// <summary> UI bileşeninin kullandığı temanın adını ayarlar.
/// Accepted Values: 'generic.dark' | 'generic.light' | 'generic.contrast' | 'generic.carmine' | 'generic.darkmoon' | 'generic.darkviolet' | 'generic.greenmist' | 'generic.softblue' | 'material.blue.light' | 'material.lime.light' | 'material.orange.light' | 'material.purple.light' | 'material.teal.light' /// Accepted Values: 'generic.dark' | 'generic.light' | 'generic.contrast' | 'generic.carmine' | 'generic.darkmoon' | 'generic.darkviolet' | 'generic.greenmist' | 'generic.softblue' | 'material.blue.light' | 'material.lime.light' | 'material.orange.light' | 'material.purple.light' | 'material.teal.light'
/// </summary> /// </summary>
public string Theme { get; set; } = "generic.light"; public string Theme { get; set; } = "generic.light";
// diÄŸer eklenebilecek property ler // diğer eklenebilecek property ler
// autoHidePointMarkers // autoHidePointMarkers
// barGroupPadding // barGroupPadding

View file

@ -1,11 +1,11 @@
namespace Erp.Platform.ListForms; namespace Erp.Platform.ListForms;
/// <summary> Bir grafikteki tüm bölmeler için ortak ayarları tanımlar. /// <summary> Bir grafikteki tüm bölmeler için ortak ayarları tanımlar.
/// </summary> /// </summary>
public class ChartCommonPaneDto public class ChartCommonPaneDto
{ {
/// <summary> Bölmenin arka planının rengini belirtir. /// <summary> Bölmenin arka planının rengini belirtir.
/// Bu özellik aÅŸağıdaki renkleri destekler: /// Bu özellik aşağıdaki renkleri destekler:
/// Hexadecimal colors /// Hexadecimal colors
/// RGB colors /// RGB colors
/// RGBA colors /// RGBA colors

View file

@ -1,31 +1,31 @@
namespace Erp.Platform.ListForms; namespace Erp.Platform.ListForms;
/// <summary> Grafikteki tüm seriler için ortak olan ayarları belirtir. /// <summary> Grafikteki tüm seriler için ortak olan ayarları belirtir.
/// </summary> /// </summary>
public class ChartCommonSeriesSettingsDto public class ChartCommonSeriesSettingsDto
{ {
/// <summary> Hangi veri kaynağı alanının seri noktaları için bağımsız deÄŸiÅŸkenler saÄŸladığını belirtir /// <summary> Hangi veri kaynağı alanının seri noktaları için bağımsız değişkenler sağladığını belirtir
/// Default Value: 'arg' /// Default Value: 'arg'
/// Temaler ile kullanılamaz! /// Temaler ile kullanılamaz!
/// </summary> /// </summary>
public string ArgumentField { get; set; } = "arg"; public string ArgumentField { get; set; } = "arg";
/// <summary> Seriyi bir deÄŸer eksenine baÄŸlar. /// <summary> Seriyi bir değer eksenine bağlar.
/// </summary> /// </summary>
public string Axis { get; set; } public string Axis { get; set; }
/// <summary> Aynı bağımsız deÄŸiÅŸkene sahip çubukların üst üste binmesi için çubuk serilerini gruplandırmanıza izin verir. /// <summary> Aynı bağımsız değişkene sahip çubukların üst üste binmesi için çubuk serilerini gruplandırmanıza izin verir.
/// Bu üye ÅŸu seriler tarafından kullanılır: BarSeries, RangeBarSeries /// Bu üye şu seriler tarafından kullanılır: BarSeries, RangeBarSeries
/// </summary> /// </summary>
public string BarOverlapGroup { get; set; } public string BarOverlapGroup { get; set; }
/// <summary> Göreli birimleri kullanarak bir serideki tüm çubukların dolgusunu ve dolayısıyla geniÅŸliÄŸini kontrol eder. barWidth özelliÄŸi ayarlanmışsa yoksayılır. /// <summary> Göreli birimleri kullanarak bir serideki tüm çubukların dolgusunu ve dolayısıyla genişliğini kontrol eder. barWidth özelliği ayarlanmışsa yoksayılır.
/// Bu üye ÅŸu seriler tarafından kullanılır: BarSeries, StackedBarSeries, FullStackedBarSeries, RangeBarSeries /// Bu üye şu seriler tarafından kullanılır: BarSeries, StackedBarSeries, FullStackedBarSeries, RangeBarSeries
/// </summary> /// </summary>
public int BarPadding { get; set; } public int BarPadding { get; set; }
/// <summary> Bir dizideki tüm çubuklar için piksel cinsinden ölçülen sabit bir geniÅŸlik belirtir. barPadding özelliÄŸine göre önceliklidir. /// <summary> Bir dizideki tüm çubuklar için piksel cinsinden ölçülen sabit bir genişlik belirtir. barPadding özelliğine göre önceliklidir.
/// Bu üye ÅŸu seriler tarafından kullanılır: BarSeries, StackedBarSeries, FullStackedBarSeries, RangeBarSeries /// Bu üye şu seriler tarafından kullanılır: BarSeries, StackedBarSeries, FullStackedBarSeries, RangeBarSeries
/// </summary> /// </summary>
public int BarWidth { get; set; } public int BarWidth { get; set; }
/// <summary> Serinin rengini belirtir. /// <summary> Serinin rengini belirtir.
/// Bu özellik aÅŸağıdaki renkleri destekler: /// Bu özellik aşağıdaki renkleri destekler:
/// Hexadecimal colors /// Hexadecimal colors
/// RGB colors /// RGB colors
/// RGBA colors /// RGBA colors
@ -34,67 +34,67 @@ public class ChartCommonSeriesSettingsDto
/// Paint server address /// Paint server address
/// </summary> /// </summary>
public string Color { get; set; } public string Color { get; set; }
/// <summary> Çubukların yuvarlak görünmesini saÄŸlar. Yalnızca çubuk benzeri seriler için geçerlidir. /// <summary> Çubukların yuvarlak görünmesini sağlar. Yalnızca çubuk benzeri seriler için geçerlidir.
/// Default Value: 0 /// Default Value: 0
/// Bu üye ÅŸu seriler tarafından kullanılır: BarSeries, StackedBarSeries, FullStackedBarSeries, RangeBarSeries /// Bu üye şu seriler tarafından kullanılır: BarSeries, StackedBarSeries, FullStackedBarSeries, RangeBarSeries
/// </summary> /// </summary>
public int CornerRadius { get; set; } = 0; public int CornerRadius { get; set; } = 0;
/// <summary> Açıklamanın kenarlığı için bir tire stili ayarlar /// <summary> Açıklamanın kenarlığıin bir tire stili ayarlar
/// Accepted Values: 'dash' | 'dot' | 'longDash' | 'solid' /// Accepted Values: 'dash' | 'dot' | 'longDash' | 'solid'
/// Default Value: 'solid' /// Default Value: 'solid'
/// solid : Kenarlık düz, sürekli bir çizgidir /// solid : Kenarlık düz, sürekli bir çizgidir
/// longDash : Kenarlık, uzun çizgiler kullanılarak görüntülenir /// longDash : Kenarlık, uzun çizgiler kullanılarak görüntülenir
/// dash : Kenarlık, tireler kullanılarak görüntülenir /// dash : Kenarlık, tireler kullanılarak görüntülenir
/// dot : Kenarlık noktalar kullanılarak görüntülenir /// dot : Kenarlık noktalar kullanılarak görüntülenir
/// Any combination of 'longDash', 'dash' and 'dot : Kenarlık, belirtilen kombinasyon tekrarlanarak görüntülenir. ÃrneÄŸin, 'dashdotdash'. /// Any combination of 'longDash', 'dash' and 'dot : Kenarlık, belirtilen kombinasyon tekrarlanarak görüntülenir. Örneğin, 'dashdotdash'.
/// </summary> /// </summary>
public string DashStyle { get; set; } = "solid"; public string DashStyle { get; set; } = "solid";
/// <summary> Serinin boÅŸ veri noktalarını göz ardı edip etmeyeceÄŸini belirtir. /// <summary> Serinin boş veri noktalarını göz ardı edip etmeyeceğini belirtir.
/// BoÅŸ deÄŸere sahip veri noktaları, gerçek seri noktaları üretmez. Bu nedenle eksik olması gereken yerlerde gereksiz boÅŸluklarla seriler çizilebilir. Bu boÅŸlukları kaldırmak için, ignoreEmptyPoints özelliÄŸini true olarak ayarlayın. /// Boş değere sahip veri noktaları, gerçek seri noktaları üretmez. Bu nedenle eksik olması gereken yerlerde gereksiz boşluklarla seriler çizilebilir. Bu boşlukları kaldırmak için, ignoreEmptyPoints özelliğini true olarak ayarlayın.
/// </summary> /// </summary>
public bool IgnoreEmptyPoints { get; set; } = false; public bool IgnoreEmptyPoints { get; set; } = false;
/// <summary> Serinin hangi bölmeye ait olması gerektiÄŸini belirtir. Bölmenin adını kabul eder. /// <summary> Serinin hangi bölmeye ait olması gerektiğini belirtir. Bölmenin adını kabul eder.
/// Bilgilendirme: Pane dolu ise chart ın PanesDto Property si aynı isimde bir elemanı mutlaka içermelidir /// Bilgilendirme: Pane dolu ise chart ın PanesDto Property si aynı isimde bir elemanı mutlaka içermelidir
/// </summary> /// </summary>
public string Pane { get; set; } public string Pane { get; set; }
/// <summary> rangeValue2Field özelliÄŸiyle birleÅŸtiÄŸinde, hangi veri kaynağı alanının aralık benzeri bir seri için deÄŸerler saÄŸladığını belirtir. /// <summary> rangeValue2Field özelliğiyle birleştiğinde, hangi veri kaynağı alanının aralık benzeri bir seri için değerler sağladığını belirtir.
/// Bu üye aÅŸağıdaki seriler tarafından kullanılır: /// Bu üye aşağıdaki seriler tarafından kullanılır:
/// RangeBarSeries, RangeAreaSeries /// RangeBarSeries, RangeAreaSeries
/// </summary> /// </summary>
public string RangeValue1Field { get; set; } = "val1"; public string RangeValue1Field { get; set; } = "val1";
/// <summary> rangeValue1Field özelliÄŸiyle birleÅŸtiÄŸinde, hangi veri kaynağı alanının aralık benzeri bir seri için deÄŸerler saÄŸladığını belirtir. /// <summary> rangeValue1Field özelliğiyle birleştiğinde, hangi veri kaynağı alanının aralık benzeri bir seri için değerler sağladığını belirtir.
/// Bu üye aÅŸağıdaki seriler tarafından kullanılır: /// Bu üye aşağıdaki seriler tarafından kullanılır:
/// RangeBarSeries, RangeAreaSeries /// RangeBarSeries, RangeAreaSeries
/// </summary> /// </summary>
public string RangeValue2Field { get; set; } = "val2"; public string RangeValue2Field { get; set; } = "val2";
/// <summary> Kullanıcı bir dizi seçtiÄŸinde vurgulanacak dizi öğelerini belirtir. /// <summary> Kullanıcı bir dizi seçtiğinde vurgulanacak dizi öğelerini belirtir.
/// Accepted Values: 'allArgumentPoints' | 'allSeriesPoints' | 'excludePoints' | 'includePoints' | 'none' | 'onlyPoint' /// Accepted Values: 'allArgumentPoints' | 'allSeriesPoints' | 'excludePoints' | 'includePoints' | 'none' | 'onlyPoint'
/// Seri tipine baÄŸlı olarak bu özellik farklı deÄŸerler kabul eder. Bilgi için SeriTipleri bölümünü (https://js.devexpress.com/Documentation/ApiReference/UI_Components/dxChart/Series_Types/) ziyaret edin, kullanılan seri tipini seçin ve onun selectionMode özellik açıklamasına bakın /// Seri tipine bağlı olarak bu özellik farklı değerler kabul eder. Bilgi için SeriTipleri bölümünü (https://js.devexpress.com/Documentation/ApiReference/UI_Components/dxChart/Series_Types/) ziyaret edin, kullanılan seri tipini seçin ve onun selectionMode özellik açıklamasına bakın
/// </summary> /// </summary>
public string SelectionMode { get; set; } = "none"; public string SelectionMode { get; set; } = "none";
/// <summary> Dizinin lejantta gösterilip gösterilmeyeceÄŸini belirtir. /// <summary> Dizinin lejantta gösterilip gösterilmeyeceğini belirtir.
/// </summary> /// </summary>
public bool ShowInLegend { get; set; } = true; public bool ShowInLegend { get; set; } = true;
/// <summary> Seri türünü ayarlar /// <summary> Seri türünü ayarlar
/// Default Value: 'line' /// Default Value: 'line'
/// Accepted Values: 'area' | 'bar' | 'bubble' | 'candlestick' | 'fullstackedarea' | 'fullstackedbar' | 'fullstackedline' | 'fullstackedspline' | 'fullstackedsplinearea' | 'line' | 'rangearea' | 'rangebar' | 'scatter' | 'spline' | 'splinearea' | 'stackedarea' | 'stackedbar' | 'stackedline' | 'stackedspline' | 'stackedsplinearea' | 'steparea' | 'stepline' | 'stock' /// Accepted Values: 'area' | 'bar' | 'bubble' | 'candlestick' | 'fullstackedarea' | 'fullstackedbar' | 'fullstackedline' | 'fullstackedspline' | 'fullstackedsplinearea' | 'line' | 'rangearea' | 'rangebar' | 'scatter' | 'spline' | 'splinearea' | 'stackedarea' | 'stackedbar' | 'stackedline' | 'stackedspline' | 'stackedsplinearea' | 'steparea' | 'stepline' | 'stock'
/// </summary> /// </summary>
public string Type { get; set; } public string Type { get; set; }
/// <summary> Hangi veri kaynağı alanının seri noktaları için deÄŸerler saÄŸladığını belirtir. /// <summary> Hangi veri kaynağı alanının seri noktaları için değerler sağladığını belirtir.
/// Bu üye aÅŸağıdaki seriler tarafından kullanılır: /// Bu üye aşağıdaki seriler tarafından kullanılır:
/// LineSeries, StackedLineSeries,FullStackedLineSeries,StackedSplineSeries,FullStackedSplineSeries, /// LineSeries, StackedLineSeries,FullStackedLineSeries,StackedSplineSeries,FullStackedSplineSeries,
/// SplineSeries,StepLineSeries,AreaSeries,StackedAreaSeries,Sta,kedSplineAreaSeries,FullStackedAreaSeries, /// SplineSeries,StepLineSeries,AreaSeries,StackedAreaSeries,Sta,kedSplineAreaSeries,FullStackedAreaSeries,
/// FullStackedSplineAreaSeries,SplineAreaSeries,StepAreaSeries,ScatterSeries,BarSeries,StackedBarSeries, /// FullStackedSplineAreaSeries,SplineAreaSeries,StepAreaSeries,ScatterSeries,BarSeries,StackedBarSeries,
/// FullStackedBarSeries,BubbleSeries, /// FullStackedBarSeries,BubbleSeries,
/// </summary> /// </summary>
public string ValueField { get; set; } public string ValueField { get; set; }
/// <summary> Serinin görünür olup olmayacağını belirtir. /// <summary> Serinin görünür olup olmayacağını belirtir.
/// </summary> /// </summary>
public bool Visible { get; set; } = true; public bool Visible { get; set; } = true;
/// <summary> Seri çizgisinin geniÅŸliÄŸini piksel cinsinden belirtir. Yalnızca çizgi benzeri seriler için geçerlidir. /// <summary> Seri çizgisinin genişliğini piksel cinsinden belirtir. Yalnızca çizgi benzeri seriler için geçerlidir.
/// Default Value: 2 /// Default Value: 2
/// Bu üye aÅŸağıdaki seriler tarafından kullanılır: /// Bu üye aşağıdaki seriler tarafından kullanılır:
/// LineSeries, StackedLineSeries, FullStackedLineSeries, StackedSplineSeries, FullStackedSplineSeries, SplineSeries, StepLineSeries, CandleStickSeries, StockSeries /// LineSeries, StackedLineSeries, FullStackedLineSeries, StackedSplineSeries, FullStackedSplineSeries, SplineSeries, StepLineSeries, CandleStickSeries, StockSeries
/// </summary> /// </summary>
public int Width { get; set; } = 2; public int Width { get; set; } = 2;
@ -125,9 +125,9 @@ public class ChartCommonSeriesSettingsDto
// point {} // point {}
// rangearea {} // rangearea {}
// rangebar {} // rangebar {}
// reduction {} // financial seriler için indirgeme özelliklerini belirtir. // reduction {} // financial seriler için indirgeme özelliklerini belirtir.
// scatter {} // scatter {}
// slectionStyle // Bir kullanıcı seçtiÄŸinde seri tarafından benimsenen görünümü yapılandırır. // slectionStyle // Bir kullanıcı seçtiğinde seri tarafından benimsenen görünümü yapılandırır.
// sizeField // sizeField
// spline {} // spline {}
// splinearea {} // splinearea {}

View file

@ -9,8 +9,8 @@ public class ChartCrosshairDto
VerticalLine = new ChartCrosshairLineDto(); VerticalLine = new ChartCrosshairLineDto();
} }
/// <summary> Artı iÅŸareti çizgilerinin rengini belirtir. /// <summary> Artı işareti çizgilerinin rengini belirtir.
/// Bu özellik aÅŸağıdaki renkleri destekler: /// Bu özellik aşağıdaki renkleri destekler:
/// Hexadecimal colors /// Hexadecimal colors
/// RGB colors /// RGB colors
/// RGBA colors /// RGBA colors
@ -19,34 +19,34 @@ public class ChartCrosshairDto
/// Paint server address /// Paint server address
/// </summary> /// </summary>
public string Color { get; set; } = "#f05b41"; public string Color { get; set; } = "#f05b41";
/// <summary> Artı iÅŸareti çizgilerinin kısa çizgi stilini belirtir. /// <summary> Artı işareti çizgilerinin kısa çizgi stilini belirtir.
/// Accepted Values: 'dash' | 'dot' | 'longDash' | 'solid' /// Accepted Values: 'dash' | 'dot' | 'longDash' | 'solid'
/// Default Value: 'solid' /// Default Value: 'solid'
/// solid : Kenarlık düz, sürekli bir çizgidir /// solid : Kenarlık düz, sürekli bir çizgidir
/// longDash : Kenarlık, uzun çizgiler kullanılarak görüntülenir /// longDash : Kenarlık, uzun çizgiler kullanılarak görüntülenir
/// dash : Kenarlık, tireler kullanılarak görüntülenir /// dash : Kenarlık, tireler kullanılarak görüntülenir
/// dot : Kenarlık noktalar kullanılarak görüntülenir /// dot : Kenarlık noktalar kullanılarak görüntülenir
/// Any combination of 'longDash', 'dash' and 'dot : Kenarlık, belirtilen kombinasyon tekrarlanarak görüntülenir. ÃrneÄŸin, 'dashdotdash'. /// Any combination of 'longDash', 'dash' and 'dot : Kenarlık, belirtilen kombinasyon tekrarlanarak görüntülenir. Örneğin, 'dashdotdash'.
/// </summary> /// </summary>
public string DashStyle { get; set; } = "dot"; public string DashStyle { get; set; } = "dot";
/// <summary> Artı iÅŸaretini etkinleÅŸtirir. /// <summary> Artı işaretini etkinleştirir.
/// </summary> /// </summary>
public bool Enabled { get; set; } public bool Enabled { get; set; }
///// <summary> Sürükleme kutusunun saydamlığını belirtir. ///// <summary> Sürükleme kutusunun saydamlığını belirtir.
///// 0 - 1 aralığındadır ///// 0 - 1 aralığındadır
///// </summary> ///// </summary>
//public double Opacity { get; set; } = 1; //public double Opacity { get; set; } = 1;
/// <summary> Artı iÅŸareti çizgilerinin geniÅŸliÄŸini belirtir. /// <summary> Artı işareti çizgilerinin genişliğini belirtir.
/// </summary> /// </summary>
public int Width { get; set; } = 1; public int Width { get; set; } = 1;
/// <summary> Yatay çapraz çizgiyi ayrı ayrı yapılandırır. /// <summary> Yatay çapraz çizgiyi ayrı ayrı yapılandırır.
/// </summary> /// </summary>
public ChartCrosshairLineDto HorizontalLine { get; set; } public ChartCrosshairLineDto HorizontalLine { get; set; }
/// <summary> Artı iÅŸareti etiketlerini yapılandırır. /// <summary> Artı işareti etiketlerini yapılandırır.
/// </summary> /// </summary>
public ChartLabelDto Label { get; set; } public ChartLabelDto Label { get; set; }
/// <summary> Dikey artı çizgisini ayrı ayrı yapılandırır. /// <summary> Dikey artı çizgisini ayrı ayrı yapılandırır.
/// </summary> /// </summary>
public ChartCrosshairLineDto VerticalLine { get; set; } public ChartCrosshairLineDto VerticalLine { get; set; }
} }

View file

@ -2,8 +2,8 @@
public class ChartDragBoxStyle public class ChartDragBoxStyle
{ {
/// <summary> Sürükleme kutusunun rengini belirtir. /// <summary> Sürükleme kutusunun rengini belirtir.
/// Bu özellik aÅŸağıdaki renkleri destekler: /// Bu özellik aşağıdaki renkleri destekler:
/// Hexadecimal colors /// Hexadecimal colors
/// RGB colors /// RGB colors
/// RGBA colors /// RGBA colors
@ -12,8 +12,8 @@ public class ChartDragBoxStyle
/// Paint server address /// Paint server address
/// </summary> /// </summary>
public string Color { get; set; } public string Color { get; set; }
/// <summary> Sürükleme kutusunun saydamlığını belirtir. /// <summary> Sürükleme kutusunun saydamlığını belirtir.
/// 0 - 1 aralığındadır /// 0 - 1 aralığındadır
/// </summary> /// </summary>
public double Opacity { get; set; } public double Opacity { get; set; }
} }

View file

@ -2,8 +2,8 @@
public class ChartExportDto public class ChartExportDto
{ {
/// <summary> Ortaya çıkan dosya veya belgedeki saydam bölgeleri dolduracak rengi belirtir. /// <summary> Ortaya çıkan dosya veya belgedeki saydam bölgeleri dolduracak rengi belirtir.
/// Bu özellik aÅŸağıdaki renkleri destekler: /// Bu özellik aşağıdaki renkleri destekler:
/// Hexadecimal colors /// Hexadecimal colors
/// RGB colors /// RGB colors
/// RGBA colors /// RGBA colors
@ -12,25 +12,25 @@ public class ChartExportDto
/// Paint server address /// Paint server address
/// </summary> /// </summary>
public string BackgroundColor { get; set; } = "#ffffff"; public string BackgroundColor { get; set; } = "#ffffff";
/// <summary> UI bileÅŸeninde istemci tarafında dışa aktarmayı etkinleÅŸtirir. /// <summary> UI bileşeninde istemci tarafında dışa aktarmayı etkinleştirir.
/// </summary> /// </summary>
public bool Enabled { get; set; } public bool Enabled { get; set; }
/// <summary> UI bileÅŸeninde istemci tarafında dışa aktarmayı etkinleÅŸtirir. /// <summary> UI bileşeninde istemci tarafında dışa aktarmayı etkinleştirir.
/// </summary> /// </summary>
public bool AllowExportSelectedData { get; set; } public bool AllowExportSelectedData { get; set; }
///// <summary> Dışa aktarma formatı belirtir. ///// <summary> Dışa aktarma formatı belirtir.
///// Desteklenen formatlar: 'GIF' | 'JPEG' | 'PDF' | 'PNG' | 'SVG' ///// Desteklenen formatlar: 'GIF' | 'JPEG' | 'PDF' | 'PNG' | 'SVG'
///// </summary> ///// </summary>
//public string Formats { get; set; } = "['PNG', 'PDF', 'JPEG', 'SVG', 'GIF']"; //public string Formats { get; set; } = "['PNG', 'PDF', 'JPEG', 'SVG', 'GIF']";
/// <summary> Dışa aktarılan UI bileÅŸeninin etrafına boÅŸ bir alan ekler; piksel cinsinden ölçülür. /// <summary> Dışa aktarılan UI bileşeninin etrafına boş bir alan ekler; piksel cinsinden ölçülür.
/// </summary> /// </summary>
public int Margin { get; set; } = 10; public int Margin { get; set; } = 10;
/// <summary> UI bileÅŸeninde yazdırma özelliÄŸini etkinleÅŸtirir. Yalnızca export.enabled özelliÄŸi doÄŸruysa geçerlidir. /// /// <summary> UI bileşeninde yazdırma özelliğini etkinleştirir. Yalnızca export.enabled özelliği doğruysa geçerlidir. ///
/// </summary> /// </summary>
public bool PrintingEnabled { get; set; } = true; public bool PrintingEnabled { get; set; } = true;
// svgToCanvas // HTML tuvalinde SVG iÅŸaretlemesini iÅŸleyen bir iÅŸlev. Ãzel SVG öğelerini (örneÄŸin, markerTemplate) dışa aktarmak için gereklidir. // svgToCanvas // HTML tuvalinde SVG işaretlemesini işleyen bir işlev. Özel SVG öğelerini (örneğin, markerTemplate) dışa aktarmak için gereklidir.
} }

View file

@ -1,11 +1,11 @@
namespace Erp.Platform.ListForms; namespace Erp.Platform.ListForms;
/// <summary> Artı iÅŸareti etiketleri için yazı tipi özelliklerini belirtir. /// <summary> Artı işareti etiketleri için yazı tipi özelliklerini belirtir.
/// </summary> /// </summary>
public class ChartFontDto public class ChartFontDto
{ {
/// <summary> Yazı tipi rengini belirtir. /// <summary> Yazı tipi rengini belirtir.
/// Bu özellik aÅŸağıdaki renkleri destekler: /// Bu özellik aşağıdaki renkleri destekler:
/// Hexadecimal colors /// Hexadecimal colors
/// RGB colors /// RGB colors
/// RGBA colors /// RGBA colors
@ -14,19 +14,19 @@ public class ChartFontDto
/// Paint server address /// Paint server address
/// </summary> /// </summary>
public string Color { get; set; } = "#FFFFFF"; public string Color { get; set; } = "#FFFFFF";
/// <summary> Yazı tipi ailesini belirtir. /// <summary> Yazı tipi ailesini belirtir.
/// Default Value: '"Segoe UI", "Helvetica Neue", "Trebuchet MS", Verdana, sans-serif' /// Default Value: '"Segoe UI", "Helvetica Neue", "Trebuchet MS", Verdana, sans-serif'
/// </summary> /// </summary>
public string Family { get; set; } = "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif"; public string Family { get; set; } = "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif";
///// <summary> Yazı tipi saydamlığını belirtir. ///// <summary> Yazı tipi saydamlığını belirtir.
///// 0 - 1 aralığındadır ///// 0 - 1 aralığındadır
///// </summary> ///// </summary>
//public double Opacity { get; set; } = 1; //public double Opacity { get; set; } = 1;
/// <summary> Yazı tipi boyutunu belirtir. /// <summary> Yazı tipi boyutunu belirtir.
/// </summary> /// </summary>
public int Size { get; set; } = 12; public int Size { get; set; } = 12;
/// <summary> /// <summary>
/// Yazı tipi ağırlığını belirtir. 100'lük artışlarla 100 ile 900 arasındaki deÄŸerleri kabul eder. Daha yüksek deÄŸerler kalınlığı artırır. /// Yazı tipi ağırlığını belirtir. 100'lük artışlarla 100 ile 900 arasındaki değerleri kabul eder. Daha yüksek değerler kalınlığı artırır.
/// </summary> /// </summary>
public int Weight { get; set; } = 400; public int Weight { get; set; } = 400;
} }

View file

@ -7,8 +7,8 @@ public class ChartLabelDto
Font = new ChartFontDto(); Font = new ChartFontDto();
} }
/// <summary> Etiketin arka planını boyar. /// <summary> Etiketin arka planını boyar.
/// Bu özellik aÅŸağıdaki renkleri destekler: /// Bu özellik aşağıdaki renkleri destekler:
/// Hexadecimal colors /// Hexadecimal colors
/// RGB colors /// RGB colors
/// RGBA colors /// RGBA colors
@ -17,13 +17,13 @@ public class ChartLabelDto
/// Paint server address /// Paint server address
/// </summary> /// </summary>
public string BackgroundColor { get; set; } = "#f05b41"; public string BackgroundColor { get; set; } = "#f05b41";
/// <summary> görüntülenen metni özelleÅŸtirir. /// <summary> görüntülenen metni özelleştirir.
/// Temalarda kullanılamaz. /// Temalarda kullanılamaz.
/// </summary> /// </summary>
public string CustomizeText { get; set; } public string CustomizeText { get; set; }
public ChartFontDto Font { get; set; } public ChartFontDto Font { get; set; }
public bool Visible { get; set; } public bool Visible { get; set; }
/// <summary> Artı iÅŸareti etiketinde görüntülenmeden önce bir nokta deÄŸerini/bağımsız deÄŸiÅŸkeni biçimlendirir. /// /// <summary> Artı işareti etiketinde görüntülenmeden önce bir nokta değerini/bağımsız değişkeni biçimlendirir. ///
/// Accepted Values: 'billions' | 'currency' | 'day' | 'decimal' | 'exponential' | 'fixedPoint' | 'largeNumber' | 'longDate' | 'longTime' | 'millions' | 'millisecond' | 'month' | 'monthAndDay' | 'monthAndYear' | 'percent' | 'quarter' | 'quarterAndYear' | 'shortDate' | 'shortTime' | 'thousands' | 'trillions' | 'year' | 'dayOfWeek' | 'hour' | 'longDateLongTime' | 'minute' | 'second' | 'shortDateShortTime' /// Accepted Values: 'billions' | 'currency' | 'day' | 'decimal' | 'exponential' | 'fixedPoint' | 'largeNumber' | 'longDate' | 'longTime' | 'millions' | 'millisecond' | 'month' | 'monthAndDay' | 'monthAndYear' | 'percent' | 'quarter' | 'quarterAndYear' | 'shortDate' | 'shortTime' | 'thousands' | 'trillions' | 'year' | 'dayOfWeek' | 'hour' | 'longDateLongTime' | 'minute' | 'second' | 'shortDateShortTime'
/// </summary> /// </summary>
public string Format { get; set; } public string Format { get; set; }

View file

@ -7,9 +7,9 @@ public class ChartLegendDto
Border = new ChartBorderDto(); Border = new ChartBorderDto();
} }
/// <summary> Legend in arka planını renklendirir /// <summary> Legend in arka planını renklendirir
/// Default Value: undefined /// Default Value: undefined
/// Bu özellik aÅŸağıdaki renkleri destekler: /// Bu özellik aşağıdaki renkleri destekler:
/// Hexadecimal colors /// Hexadecimal colors
/// RGB colors /// RGB colors
/// RGBA colors /// RGBA colors
@ -18,32 +18,32 @@ public class ChartLegendDto
/// Paint server address /// Paint server address
/// </summary> /// </summary>
public string BackgroundColor { get; set; } public string BackgroundColor { get; set; }
/// <summary> Legend in kenarlığını yapılandırır /// <summary> Legend in kenarlığını yapılandırır
/// </summary> /// </summary>
public ChartBorderDto Border { get; set; } public ChartBorderDto Border { get; set; }
public int ColumnCount { get; set; } public int ColumnCount { get; set; }
/// <summary>Gösterge öğelerini dikey (bir sütunda) veya yatay (bir satırda) olarak düzenler. legend.horizontalAlignment "center" ise varsayılan deÄŸer "horizontal" olur. Aksi takdirde, "dikey" dir /// <summary>Gösterge öğelerini dikey (bir sütunda) veya yatay (bir satırda) olarak düzenler. legend.horizontalAlignment "center" ise varsayılan değer "horizontal" olur. Aksi takdirde, "dikey" dir
/// Accepted Values: 'horizontal' | 'vertical' /// Accepted Values: 'horizontal' | 'vertical'
/// </summary> /// </summary>
public string Orientation { get; set; } = "vertical"; public string Orientation { get; set; } = "vertical";
/// <summary>Göstergenin grafiÄŸin çiziminin dışında mı yoksa içinde mi bulunduÄŸunu belirtir /// <summary>Göstergenin grafiğin çiziminin dışında mı yoksa içinde mi bulunduğunu belirtir
/// Accepted Values: 'inside' | 'outside' /// Accepted Values: 'inside' | 'outside'
/// </summary> /// </summary>
public string Position { get; set; } = "outside"; public string Position { get; set; } = "outside";
/// <summary>Gösterge öğelerini birkaç sıra halinde düzenler. /// <summary>Gösterge öğelerini birkaç sıra halinde düzenler.
/// </summary> /// </summary>
public int RowCount { get; set; } = 0; public int RowCount { get; set; } = 0;
/// <summary>Açıklama baÅŸlığını yapılandırır /// <summary>Açıklama başlığını yapılandırır
/// ihtiyaç olması durumunda detaylandırmak için TitleDto ile deÄŸiÅŸtirilebilir /// ihtiyaç olması durumunda detaylandırmak için TitleDto ile değiştirilebilir
/// </summary> /// </summary>
public string Title { get; set; } public string Title { get; set; }
/// <summary> Göstergenin görünürlüğünü belirtir /// <summary> Göstergenin görünürlüğünü belirtir
/// </summary> /// </summary>
public bool Visible { get; set; } = true; public bool Visible { get; set; } = true;
////İhtiyaç olması durumunda açılacak diÄŸer property ler ////İhtiyaç olması durumunda açılacak diğer property ler
///// <summary>horizontalAlignment ile birlikte göstergenin konumunu belirtir ///// <summary>horizontalAlignment ile birlikte göstergenin konumunu belirtir
///// Accepted Values: 'bottom' | 'top' ///// Accepted Values: 'bottom' | 'top'
///// </summary> ///// </summary>
//public string VerticalAlignment { get; set; } = "top"; //public string VerticalAlignment { get; set; } = "top";
@ -62,7 +62,7 @@ public class ChartLegendDto
//public string CustomizeText { get; set; } //public string CustomizeText { get; set; }
//public string CustomizeItems { get; set; } //public string CustomizeItems { get; set; }
//public string CustomizeHint { get; set; } //public string CustomizeHint { get; set; }
///// <summary> ÃÄŸe sütunları arasında piksel cinsinden boÅŸ bir alan belirtir ///// <summary> Öğe sütunları arasında piksel cinsinden boş bir alan belirtir
///// </summary> ///// </summary>
//public int ColumnItemSpacing { get; set; } = 20; //public int ColumnItemSpacing { get; set; } = 20;

View file

@ -1,16 +1,16 @@
namespace Erp.Platform.ListForms; namespace Erp.Platform.ListForms;
/// <summary> Bölme, dizi içeren bir grafik alanıdır. Bir grafikte çok sayıda seri varsa, bunlar birden çok bölme arasında dağıtılabilir. /// <summary> Bölme, dizi içeren bir grafik alanıdır. Bir grafikte çok sayıda seri varsa, bunlar birden çok bölme arasında dağıtılabilir.
/// </summary> /// </summary>
public class ChartPanesDto public class ChartPanesDto
{ {
/// <summary> Bölmenin arka planının rengini belirtir. /// <summary> Bölmenin arka planının rengini belirtir.
/// </summary> /// </summary>
public string BackgroundColor { get; set; } public string BackgroundColor { get; set; }
/// <summary>Çok bölmeli bir grafikte bölmenin yüksekliÄŸini (veya grafik döndürüldüğünde geniÅŸliÄŸini) belirtir. /// <summary>Çok bölmeli bir grafikte bölmenin yüksekliğini (veya grafik döndürüldüğünde genişliğini) belirtir.
/// </summary> /// </summary>
public int Height { get; set; } = 250; public int Height { get; set; } = 250;
/// <summary> Bölmenin adını belirtir. /// <summary> Bölmenin adını belirtir.
/// </summary> /// </summary>
public string Name { get; set; } public string Name { get; set; }

View file

@ -2,8 +2,8 @@
public class ChartScrollBarDto public class ChartScrollBarDto
{ {
/// <summary> ScrollBar ın kenarlığını renklendirir. /// <summary> ScrollBar ın kenarlığını renklendirir.
/// Bu özellik aÅŸağıdaki renkleri destekler: /// Bu özellik aşağıdaki renkleri destekler:
/// Hexadecimal colors /// Hexadecimal colors
/// RGB colors /// RGB colors
/// RGBA colors /// RGBA colors
@ -12,25 +12,25 @@ public class ChartScrollBarDto
/// Paint server address /// Paint server address
/// </summary> /// </summary>
public string Color { get; set; } = "gray"; public string Color { get; set; } = "gray";
/// <summary> Kaydırma çubuÄŸu ile grafiÄŸin çizimi arasındaki boÅŸluÄŸu piksel cinsinden belirtir. /// <summary> Kaydırma çubuğu ile grafiğin çizimi arasındaki boşluğu piksel cinsinden belirtir.
/// </summary> /// </summary>
public int Offset { get; set; } = 5; public int Offset { get; set; } = 5;
///// <summary> Kaydırma çubuÄŸunun opaklığını belirtir. ///// <summary> Kaydırma çubuğunun opaklığını belirtir.
///// /////
///// </summary> ///// </summary>
//public double Opacity { get; set; } //public double Opacity { get; set; }
/// <summary> Grafikteki kaydırma çubuÄŸunun konumunu belirtir. /// <summary> Grafikteki kaydırma çubuğunun konumunu belirtir.
/// Accepted Values: 'bottom' | 'left' | 'right' | 'top' /// Accepted Values: 'bottom' | 'left' | 'right' | 'top'
/// Default Value: 'top' /// Default Value: 'top'
/// GrafiÄŸin döndürülüp döndürülmediÄŸine baÄŸlı olarak bu özellik farklı deÄŸerler kabul eder. DöndürülmemiÅŸ bir grafikte, bu özelliÄŸe 'üst' veya 'alt' atayabilirsiniz. Döndürülmüş bir grafikte, bu özellik ya 'sol' ya da 'saÄŸ'ı kabul eder. /// Grafiğin döndürülüp döndürülmediğine bağlı olarak bu özellik farklı değerler kabul eder. Döndürülmemiş bir grafikte, bu özelliğe 'üst' veya 'alt' atayabilirsiniz. Döndürülmüş bir grafikte, bu özellik ya 'sol' ya da 'sağ'ı kabul eder.
/// </summary> /// </summary>
public string Position { get; set; } = "top"; public string Position { get; set; } = "top";
/// <summary> Kaydırma çubuÄŸunun görünüp görünmeyeceÄŸini belirtir. /// <summary> Kaydırma çubuğunun görünüp görünmeyeceğini belirtir.
/// </summary> /// </summary>
public bool Visible { get; set; } public bool Visible { get; set; }
/// <summary> Kaydırma çubuÄŸunun geniÅŸliÄŸini piksel cinsinden belirtir. /// <summary> Kaydırma çubuğunun genişliğini piksel cinsinden belirtir.
/// </summary> /// </summary>
public int Width { get; set; } = 10; public int Width { get; set; } = 10;
} }

View file

@ -2,29 +2,29 @@
public class ChartSeriesDto public class ChartSeriesDto
{ {
/// <summary> Hangi veri kaynağı alanının seri noktaları için bağımsız deÄŸiÅŸkenler saÄŸladığını belirtir /// <summary> Hangi veri kaynağı alanının seri noktaları için bağımsız değişkenler sağladığını belirtir
/// Default Value: 'arg' /// Default Value: 'arg'
/// Temalar ile kullanılamaz! /// Temalar ile kullanılamaz!
/// </summary> /// </summary>
public string ArgumentField { get; set; } = "arg"; public string ArgumentField { get; set; } = "arg";
/// <summary> Seriyi bir deÄŸer eksenine baÄŸlar. /// <summary> Seriyi bir değer eksenine bağlar.
/// </summary> /// </summary>
public string Axis { get; set; } public string Axis { get; set; }
/// <summary> Aynı bağımsız deÄŸiÅŸkene sahip çubukların üst üste binmesi için çubuk serilerini gruplandırmanıza izin verir. /// <summary> Aynı bağımsız değişkene sahip çubukların üst üste binmesi için çubuk serilerini gruplandırmanıza izin verir.
/// Bu üye ÅŸu seriler tarafından kullanılır: BarSeries, RangeBarSeries /// Bu üye şu seriler tarafından kullanılır: BarSeries, RangeBarSeries
/// </summary> /// </summary>
public string BarOverlapGroup { get; set; } public string BarOverlapGroup { get; set; }
/// <summary> Göreli birimleri kullanarak bir serideki tüm çubukların dolgusunu ve dolayısıyla geniÅŸliÄŸini kontrol eder. barWidth özelliÄŸi ayarlanmışsa yoksayılır. /// <summary> Göreli birimleri kullanarak bir serideki tüm çubukların dolgusunu ve dolayısıyla genişliğini kontrol eder. barWidth özelliği ayarlanmışsa yoksayılır.
/// Bu üye ÅŸu seriler tarafından kullanılır: BarSeries, StackedBarSeries, FullStackedBarSeries, RangeBarSeries /// Bu üye şu seriler tarafından kullanılır: BarSeries, StackedBarSeries, FullStackedBarSeries, RangeBarSeries
/// </summary> /// </summary>
public int BarPadding { get; set; } public int BarPadding { get; set; }
/// <summary> Bir dizideki tüm çubuklar için piksel cinsinden ölçülen sabit bir geniÅŸlik belirtir. barPadding özelliÄŸine göre önceliklidir. /// <summary> Bir dizideki tüm çubuklar için piksel cinsinden ölçülen sabit bir genişlik belirtir. barPadding özelliğine göre önceliklidir.
/// Bu üye ÅŸu seriler tarafından kullanılır: BarSeries, StackedBarSeries, FullStackedBarSeries, RangeBarSeries /// Bu üye şu seriler tarafından kullanılır: BarSeries, StackedBarSeries, FullStackedBarSeries, RangeBarSeries
/// </summary> /// </summary>
public int BarWidth { get; set; } public int BarWidth { get; set; }
/// <summary> Serinin rengini belirtir. /// <summary> Serinin rengini belirtir.
/// Not: HiddenInput olarak etiketlenmesinin sebebi renk seçimi için farklı bir editör kullanılmasından dolayıdır /// Not: HiddenInput olarak etiketlenmesinin sebebi renk seçimi için farklı bir editör kullanılmasından dolayıdır
/// Bu özellik aÅŸağıdaki renkleri destekler: /// Bu özellik aşağıdaki renkleri destekler:
/// Hexadecimal colors /// Hexadecimal colors
/// RGB colors /// RGB colors
/// RGBA colors /// RGBA colors
@ -33,70 +33,70 @@ public class ChartSeriesDto
/// Paint server address /// Paint server address
/// </summary> /// </summary>
public string Color { get; set; } public string Color { get; set; }
/// <summary> Çubukların yuvarlak görünmesini saÄŸlar. Yalnızca çubuk benzeri seriler için geçerlidir. /// <summary> Çubukların yuvarlak görünmesini sağlar. Yalnızca çubuk benzeri seriler için geçerlidir.
/// Default Value: 0 /// Default Value: 0
/// Bu üye ÅŸu seriler tarafından kullanılır: BarSeries, StackedBarSeries, FullStackedBarSeries, RangeBarSeries /// Bu üye şu seriler tarafından kullanılır: BarSeries, StackedBarSeries, FullStackedBarSeries, RangeBarSeries
/// </summary> /// </summary>
public int CornerRadius { get; set; } = 0; public int CornerRadius { get; set; } = 0;
/// <summary> Açıklamanın kenarlığı için bir tire stili ayarlar /// <summary> Açıklamanın kenarlığıin bir tire stili ayarlar
/// Accepted Values: 'dash' | 'dot' | 'longDash' | 'solid' /// Accepted Values: 'dash' | 'dot' | 'longDash' | 'solid'
/// Default Value: 'solid' /// Default Value: 'solid'
/// solid : Kenarlık düz, sürekli bir çizgidir /// solid : Kenarlık düz, sürekli bir çizgidir
/// longDash : Kenarlık, uzun çizgiler kullanılarak görüntülenir /// longDash : Kenarlık, uzun çizgiler kullanılarak görüntülenir
/// dash : Kenarlık, tireler kullanılarak görüntülenir /// dash : Kenarlık, tireler kullanılarak görüntülenir
/// dot : Kenarlık noktalar kullanılarak görüntülenir /// dot : Kenarlık noktalar kullanılarak görüntülenir
/// Any combination of 'longDash', 'dash' and 'dot : Kenarlık, belirtilen kombinasyon tekrarlanarak görüntülenir. ÃrneÄŸin, 'dashdotdash'. /// Any combination of 'longDash', 'dash' and 'dot : Kenarlık, belirtilen kombinasyon tekrarlanarak görüntülenir. Örneğin, 'dashdotdash'.
/// </summary> /// </summary>
public string DashStyle { get; set; } = "solid"; public string DashStyle { get; set; } = "solid";
/// <summary> Serinin boÅŸ veri noktalarını göz ardı edip etmeyeceÄŸini belirtir. /// <summary> Serinin boş veri noktalarını göz ardı edip etmeyeceğini belirtir.
/// BoÅŸ deÄŸere sahip veri noktaları, gerçek seri noktaları üretmez. Bu nedenle eksik olması gereken yerlerde gereksiz boÅŸluklarla seriler çizilebilir. Bu boÅŸlukları kaldırmak için, ignoreEmptyPoints özelliÄŸini true olarak ayarlayın. /// Boş değere sahip veri noktaları, gerçek seri noktaları üretmez. Bu nedenle eksik olması gereken yerlerde gereksiz boşluklarla seriler çizilebilir. Bu boşlukları kaldırmak için, ignoreEmptyPoints özelliğini true olarak ayarlayın.
/// </summary> /// </summary>
public bool IgnoreEmptyPoints { get; set; } = false; public bool IgnoreEmptyPoints { get; set; } = false;
/// <summary> Seriyi tanımlayan adı belirtir. /// <summary> Seriyi tanımlayan adı belirtir.
/// </summary> /// </summary>
public string Name { get; set; } public string Name { get; set; }
/// <summary> Serinin hangi bölmeye ait olması gerektiÄŸini belirtir. Bölmenin adını kabul eder. /// <summary> Serinin hangi bölmeye ait olması gerektiğini belirtir. Bölmenin adını kabul eder.
/// Bilgilendirme: Pane dolu ise chart ın PanesDto Property si aynı isimde bir elemanı mutlaka içermelidir /// Bilgilendirme: Pane dolu ise chart ın PanesDto Property si aynı isimde bir elemanı mutlaka içermelidir
/// </summary> /// </summary>
public string Pane { get; set; } public string Pane { get; set; }
/// <summary> rangeValue2Field özelliÄŸiyle birleÅŸtiÄŸinde, hangi veri kaynağı alanının aralık benzeri bir seri için deÄŸerler saÄŸladığını belirtir. /// <summary> rangeValue2Field özelliğiyle birleştiğinde, hangi veri kaynağı alanının aralık benzeri bir seri için değerler sağladığını belirtir.
/// Bu üye aÅŸağıdaki seriler tarafından kullanılır: /// Bu üye aşağıdaki seriler tarafından kullanılır:
/// RangeBarSeries, RangeAreaSeries /// RangeBarSeries, RangeAreaSeries
/// </summary> /// </summary>
public string RangeValue1Field { get; set; } = "val1"; public string RangeValue1Field { get; set; } = "val1";
/// <summary> rangeValue1Field özelliÄŸiyle birleÅŸtiÄŸinde, hangi veri kaynağı alanının aralık benzeri bir seri için deÄŸerler saÄŸladığını belirtir. /// <summary> rangeValue1Field özelliğiyle birleştiğinde, hangi veri kaynağı alanının aralık benzeri bir seri için değerler sağladığını belirtir.
/// Bu üye aÅŸağıdaki seriler tarafından kullanılır: /// Bu üye aşağıdaki seriler tarafından kullanılır:
/// RangeBarSeries, RangeAreaSeries /// RangeBarSeries, RangeAreaSeries
/// </summary> /// </summary>
public string RangeValue2Field { get; set; } = "val2"; public string RangeValue2Field { get; set; } = "val2";
/// <summary> Kullanıcı bir dizi seçtiÄŸinde vurgulanacak dizi öğelerini belirtir. /// <summary> Kullanıcı bir dizi seçtiğinde vurgulanacak dizi öğelerini belirtir.
/// Accepted Values: 'allArgumentPoints' | 'allSeriesPoints' | 'excludePoints' | 'includePoints' | 'none' | 'onlyPoint' /// Accepted Values: 'allArgumentPoints' | 'allSeriesPoints' | 'excludePoints' | 'includePoints' | 'none' | 'onlyPoint'
/// Seri tipine baÄŸlı olarak bu özellik farklı deÄŸerler kabul eder. Bilgi için SeriTipleri bölümünü (https://js.devexpress.com/Documentation/ApiReference/UI_Components/dxChart/Series_Types/) ziyaret edin, kullanılan seri tipini seçin ve onun selectionMode özellik açıklamasına bakın /// Seri tipine bağlı olarak bu özellik farklı değerler kabul eder. Bilgi için SeriTipleri bölümünü (https://js.devexpress.com/Documentation/ApiReference/UI_Components/dxChart/Series_Types/) ziyaret edin, kullanılan seri tipini seçin ve onun selectionMode özellik açıklamasına bakın
/// </summary> /// </summary>
public string SelectionMode { get; set; } = "none"; public string SelectionMode { get; set; } = "none";
/// <summary> Dizinin lejantta gösterilip gösterilmeyeceÄŸini belirtir. /// <summary> Dizinin lejantta gösterilip gösterilmeyeceğini belirtir.
/// </summary> /// </summary>
public bool ShowInLegend { get; set; } = true; public bool ShowInLegend { get; set; } = true;
/// <summary> Seri türünü ayarlar /// <summary> Seri türünü ayarlar
/// Default Value: 'line' /// Default Value: 'line'
/// Accepted Values: 'area' | 'bar' | 'bubble' | 'candlestick' | 'fullstackedarea' | 'fullstackedbar' | 'fullstackedline' | 'fullstackedspline' | 'fullstackedsplinearea' | 'line' | 'rangearea' | 'rangebar' | 'scatter' | 'spline' | 'splinearea' | 'stackedarea' | 'stackedbar' | 'stackedline' | 'stackedspline' | 'stackedsplinearea' | 'steparea' | 'stepline' | 'stock' /// Accepted Values: 'area' | 'bar' | 'bubble' | 'candlestick' | 'fullstackedarea' | 'fullstackedbar' | 'fullstackedline' | 'fullstackedspline' | 'fullstackedsplinearea' | 'line' | 'rangearea' | 'rangebar' | 'scatter' | 'spline' | 'splinearea' | 'stackedarea' | 'stackedbar' | 'stackedline' | 'stackedspline' | 'stackedsplinearea' | 'steparea' | 'stepline' | 'stock'
/// </summary> /// </summary>
public string Type { get; set; } public string Type { get; set; }
/// <summary> Hangi veri kaynağı alanının seri noktaları için deÄŸerler saÄŸladığını belirtir. /// <summary> Hangi veri kaynağı alanının seri noktaları için değerler sağladığını belirtir.
/// Bu üye aÅŸağıdaki seriler tarafından kullanılır: /// Bu üye aşağıdaki seriler tarafından kullanılır:
/// LineSeries, StackedLineSeries,FullStackedLineSeries,StackedSplineSeries,FullStackedSplineSeries, /// LineSeries, StackedLineSeries,FullStackedLineSeries,StackedSplineSeries,FullStackedSplineSeries,
/// SplineSeries,StepLineSeries,AreaSeries,StackedAreaSeries,Sta,kedSplineAreaSeries,FullStackedAreaSeries, /// SplineSeries,StepLineSeries,AreaSeries,StackedAreaSeries,Sta,kedSplineAreaSeries,FullStackedAreaSeries,
/// FullStackedSplineAreaSeries,SplineAreaSeries,StepAreaSeries,ScatterSeries,BarSeries,StackedBarSeries, /// FullStackedSplineAreaSeries,SplineAreaSeries,StepAreaSeries,ScatterSeries,BarSeries,StackedBarSeries,
/// FullStackedBarSeries,BubbleSeries, /// FullStackedBarSeries,BubbleSeries,
/// </summary> /// </summary>
public string ValueField { get; set; } public string ValueField { get; set; }
/// <summary> Serinin görünür olup olmayacağını belirtir. /// <summary> Serinin görünür olup olmayacağını belirtir.
/// </summary> /// </summary>
public bool Visible { get; set; } = true; public bool Visible { get; set; } = true;
/// <summary> Seri çizgisinin geniÅŸliÄŸini piksel cinsinden belirtir. Yalnızca çizgi benzeri seriler için geçerlidir. /// <summary> Seri çizgisinin genişliğini piksel cinsinden belirtir. Yalnızca çizgi benzeri seriler için geçerlidir.
/// Default Value: 2 /// Default Value: 2
/// Bu üye aÅŸağıdaki seriler tarafından kullanılır: /// Bu üye aşağıdaki seriler tarafından kullanılır:
/// LineSeries, StackedLineSeries, FullStackedLineSeries, StackedSplineSeries, FullStackedSplineSeries, SplineSeries, StepLineSeries, CandleStickSeries, StockSeries /// LineSeries, StackedLineSeries, FullStackedLineSeries, StackedSplineSeries, FullStackedSplineSeries, SplineSeries, StepLineSeries, CandleStickSeries, StockSeries
/// </summary> /// </summary>
public int Width { get; set; } = 2; public int Width { get; set; } = 2;
@ -113,8 +113,8 @@ public class ChartSeriesDto
// minBarSize // minBarSize
// openValueField // openValueField
// point Dto // point Dto
// reduction // financial seriler için indirgeme özelliklerini belirtir. // reduction // financial seriler için indirgeme özelliklerini belirtir.
// slectionStyle // Bir kullanıcı seçtiÄŸinde seri tarafından benimsenen görünümü yapılandırır. // slectionStyle // Bir kullanıcı seçtiğinde seri tarafından benimsenen görünümü yapılandırır.
// stack // stack
// tag // tag
// tagField // tagField
@ -122,11 +122,11 @@ public class ChartSeriesDto
public ChartLabelDto Label { get; set; } public ChartLabelDto Label { get; set; }
/// <summary> DeÄŸer özetleme iÅŸlevini belirtir. /// <summary> Değer özetleme işlevini belirtir.
/// Accepted Values: 'avg' | 'count' | 'custom' | 'max' | 'min' | 'sum' /// Accepted Values: 'avg' | 'count' | 'custom' | 'max' | 'min' | 'sum'
/// Default Value: 'sum' /// Default Value: 'sum'
/// </summary> /// </summary>
public string SummaryType { get; set; } = "sum"; public string SummaryType { get; set; } = "sum";
/// <example>'Kullanıcı Adı'</example> /// <example>'Kullanıcı Adı'</example>
public string UserId { get; set; } public string UserId { get; set; }
} }

View file

@ -3,10 +3,10 @@
public class ChartSizeDto public class ChartSizeDto
{ {
public bool UseSize { get; set; } = false; public bool UseSize { get; set; } = false;
/// <summary> UI bileÅŸeninin geniÅŸliÄŸini piksel cinsinden belirtir /// <summary> UI bileşeninin genişliğini piksel cinsinden belirtir
/// </summary> /// </summary>
public int Width { get; set; } = 400; public int Width { get; set; } = 400;
/// <summary> UI bileÅŸeninin yüksekliÄŸini piksel cinsinden belirtir /// <summary> UI bileşeninin yüksekliğini piksel cinsinden belirtir
/// </summary> /// </summary>
public int Height { get; set; } = 200; public int Height { get; set; } = 200;
} }

View file

@ -2,33 +2,33 @@
public class ChartTitleDto public class ChartTitleDto
{ {
/// <summary> BaÅŸlığın metnini belirtir /// <summary> Başlığın metnini belirtir
/// </summary> /// </summary>
public string Text { get; set; } public string Text { get; set; }
/// <summary> Dikey hizalamanın konumunu belirtir /// <summary> Dikey hizalamanın konumunu belirtir
/// Accepted Values: 'bottom' | 'top' /// Accepted Values: 'bottom' | 'top'
/// </summary> /// </summary>
public string VerticalAlignment { get; set; } = "top"; public string VerticalAlignment { get; set; } = "top";
/// <summary> Yatay yönde hizalamanın yanaşıklık konumunu belirtir /// <summary> Yatay yönde hizalamanın yanaşıklık konumunu belirtir
/// Accepted Values: 'center' | 'left' | 'right' /// Accepted Values: 'center' | 'left' | 'right'
/// </summary> /// </summary>
public string HorizontalAlignment { get; set; } = "center"; public string HorizontalAlignment { get; set; } = "center";
/// <summary> UI bileÅŸeninin altyazısını yapılandırır /// <summary> UI bileşeninin altyazısını yapılandırır
/// İhtiyaç olması durumunda alt özellikleri ile birlikte Objeye çevrilebilir /// İhtiyaç olması durumunda alt özellikleri ile birlikte Objeye çevrilebilir
/// </summary> /// </summary>
public string Subtitle { get; set; } public string Subtitle { get; set; }
/// <summary> WordWrap uygulandıktan sonra baÅŸlık ayrılan alandan taÅŸtığında baÅŸlıkla ne yapılacağını belirtir: /// <summary> WordWrap uygulandıktan sonra başlık ayrılan alandan taştığında başlıkla ne yapılacağını belirtir:
/// gizleme, kısaltma ve bir üç nokta görüntüleme veya hiçbir ÅŸey. /// gizleme, kısaltma ve bir üç nokta görüntüleme veya hiçbir şey.
/// Accepted Values: 'ellipsis' | 'hide' | 'none' /// Accepted Values: 'ellipsis' | 'hide' | 'none'
/// </summary> /// </summary>
public string TextOverflow { get; set; } = "ellipsis"; public string TextOverflow { get; set; } = "ellipsis";
/// <summary> Tek bir satıra sığmazsa baÅŸlığın nasıl kaydırılacağını belirtir. /// <summary> Tek bir satıra sığmazsa başlığın nasıl kaydırılacağını belirtir.
/// Accepted Values: 'normal' | 'breakWord' | 'none' /// Accepted Values: 'normal' | 'breakWord' | 'none'
/// "normal" Metin yalnızca izin verilen kesme noktalarında (örneÄŸin, iki kelime arasındaki boÅŸluk) kesiliyor. /// "normal" Metin yalnızca izin verilen kesme noktalarında (örneğin, iki kelime arasındaki boşluk) kesiliyor.
/// "breakWord" Satırda kullanılabilir kesme noktası yoksa sözcükler bölünebilir. /// "breakWord" Satırda kullanılabilir kesme noktası yoksa sözcükler bölünebilir.
/// "none" Sözcük kaydırma devre dışı. /// "none" Sözcük kaydırma devre dışı.
/// </summary> /// </summary>
public string WordWrap { get; set; } public string WordWrap { get; set; }
//Eklenebilir diÄŸer alanlar: object font, object subtitle, object margin //Eklenebilir diğer alanlar: object font, object subtitle, object margin
} }

View file

@ -1,6 +1,6 @@
namespace Erp.Platform.ListForms; namespace Erp.Platform.ListForms;
/// <summary> Araç ipuçlarını yapılandırır. /// <summary> Araç ipuçlarını yapılandırır.
/// </summary> /// </summary>
public class ChartTooltipDto public class ChartTooltipDto
{ {
@ -10,18 +10,18 @@ public class ChartTooltipDto
Font = new ChartFontDto() { Color = "#000000" }; Font = new ChartFontDto() { Color = "#000000" };
} }
/// <summary> Araç ipucunda görüntülenmeden önce nokta bağımsız deÄŸiÅŸkenini biçimlendirir. Puan deÄŸerini biçimlendirmek için format özelliÄŸini kullanın. /// <summary> Araç ipucunda görüntülenmeden önce nokta bağımsız değişkenini biçimlendirir. Puan değerini biçimlendirmek için format özelliğini kullanın.
/// /// Accepted Values: 'billions' | 'currency' | 'day' | 'decimal' | 'exponential' | 'fixedPoint' | 'largeNumber' | 'longDate' | 'longTime' | 'millions' | 'millisecond' | 'month' | 'monthAndDay' | 'monthAndYear' | 'percent' | 'quarter' | 'quarterAndYear' | 'shortDate' | 'shortTime' | 'thousands' | 'trillions' | 'year' | 'dayOfWeek' | 'hour' | 'longDateLongTime' | 'minute' | 'second' | 'shortDateShortTime' /// /// Accepted Values: 'billions' | 'currency' | 'day' | 'decimal' | 'exponential' | 'fixedPoint' | 'largeNumber' | 'longDate' | 'longTime' | 'millions' | 'millisecond' | 'month' | 'monthAndDay' | 'monthAndYear' | 'percent' | 'quarter' | 'quarterAndYear' | 'shortDate' | 'shortTime' | 'thousands' | 'trillions' | 'year' | 'dayOfWeek' | 'hour' | 'longDateLongTime' | 'minute' | 'second' | 'shortDateShortTime'
/// </summary> /// </summary>
public string ArgumentFormat { get; set; } public string ArgumentFormat { get; set; }
/// <summary>Bir araç ipucunun okunun uzunluÄŸunu piksel cinsinden belirtir. /// <summary>Bir araç ipucunun okunun uzunluğunu piksel cinsinden belirtir.
/// </summary> /// </summary>
public int ArrowLength { get; set; } = 10; public int ArrowLength { get; set; } = 10;
/// <summary> Bir araç ipucunun kenarlığını yapılandırır. /// <summary> Bir araç ipucunun kenarlığını yapılandırır.
/// </summary> /// </summary>
public ChartBorderDto Border { get; set; } public ChartBorderDto Border { get; set; }
/// <summary> Tüm araç ipuçlarını renklendirir. /// <summary> Tüm araç ipuçlarını renklendirir.
/// Bu özellik aÅŸağıdaki renkleri destekler: /// Bu özellik aşağıdaki renkleri destekler:
/// Hexadecimal colors /// Hexadecimal colors
/// RGB colors /// RGB colors
/// RGBA colors /// RGBA colors
@ -30,30 +30,30 @@ public class ChartTooltipDto
/// Paint server address /// Paint server address
/// </summary> /// </summary>
public string Color { get; set; } = "#ffffff"; public string Color { get; set; } = "#ffffff";
/// <summary> Araç ipuçlarını etkinleÅŸtirir. /// <summary> Araç ipuçlarını etkinleştirir.
/// </summary> /// </summary>
public bool Enabled { get; set; } public bool Enabled { get; set; }
public ChartFontDto Font { get; set; } public ChartFontDto Font { get; set; }
/// <summary> Bir deÄŸeri araç ipucunda görüntülenmeden önce biçimlendirir. /// <summary> Bir değeri araç ipucunda görüntülenmeden önce biçimlendirir.
/// /// Accepted Values: 'billions' | 'currency' | 'day' | 'decimal' | 'exponential' | 'fixedPoint' | 'largeNumber' | 'longDate' | 'longTime' | 'millions' | 'millisecond' | 'month' | 'monthAndDay' | 'monthAndYear' | 'percent' | 'quarter' | 'quarterAndYear' | 'shortDate' | 'shortTime' | 'thousands' | 'trillions' | 'year' | 'dayOfWeek' | 'hour' | 'longDateLongTime' | 'minute' | 'second' | 'shortDateShortTime' /// /// Accepted Values: 'billions' | 'currency' | 'day' | 'decimal' | 'exponential' | 'fixedPoint' | 'largeNumber' | 'longDate' | 'longTime' | 'millions' | 'millisecond' | 'month' | 'monthAndDay' | 'monthAndYear' | 'percent' | 'quarter' | 'quarterAndYear' | 'shortDate' | 'shortTime' | 'thousands' | 'trillions' | 'year' | 'dayOfWeek' | 'hour' | 'longDateLongTime' | 'minute' | 'second' | 'shortDateShortTime'
/// </summary> /// </summary>
public string Format { get; set; } public string Format { get; set; }
/// <summary> Araç ipucunun bir seri noktasının merkezinde mi yoksa kenarında mı bulunacağını belirtir. Yalnızca çubuk benzeri ve kabarcık serileri için geçerlidir. /// <summary> Araç ipucunun bir seri noktasının merkezinde mi yoksa kenarında mı bulunacağını belirtir. Yalnızca çubuk benzeri ve kabarcık serileri için geçerlidir.
/// Accepted Values: 'center' | 'edge' /// Accepted Values: 'center' | 'edge'
/// Bu üye ÅŸu seriler tarafından kullanılır: BarSeries, StackedBarSeries, FullStackedBarSeries, BubbleSeries, StockSeries, CandleStickSeries /// Bu üye şu seriler tarafından kullanılır: BarSeries, StackedBarSeries, FullStackedBarSeries, BubbleSeries, StockSeries, CandleStickSeries
/// </summary> /// </summary>
public string Location { get; set; } = "center"; public string Location { get; set; } = "center";
/// <summary> Araç ipucunun sol/saÄŸ kenarlığı ile metni arasında piksel cinsinden ölçülen boÅŸ bir alan oluÅŸturur. /// <summary> Araç ipucunun sol/sağ kenarlığı ile metni arasında piksel cinsinden ölçülen boş bir alan oluşturur.
/// </summary> /// </summary>
public int PaddingLeftRight { get; set; } = 18; public int PaddingLeftRight { get; set; } = 18;
/// <summary> Araç ipucunun üst/alt kenarlığı ile metni arasında piksel cinsinden ölçülen boÅŸ bir alan oluÅŸturur. /// <summary> Araç ipucunun üst/alt kenarlığı ile metni arasında piksel cinsinden ölçülen boş bir alan oluşturur.
/// </summary> /// </summary>
public int PaddingTopBottom { get; set; } = 15; public int PaddingTopBottom { get; set; } = 15;
/// <summary> Araç ipucunun aynı bağımsız deÄŸiÅŸkenle tüm seri noktalarında paylaşılıp paylaşılmayacağını belirtir. /// <summary> Araç ipucunun aynı bağımsız değişkenle tüm seri noktalarında paylaşılıp paylaşılmayacağını belirtir.
/// Bu özellik aÅŸağıdaki deÄŸerlerden birine sahip olabilir: /// Bu özellik aşağıdaki değerlerden birine sahip olabilir:
/// false: Araç ipucu, yalnızca fare imleciyle üzerine getirilen bir seri noktası hakkındaki bilgileri görüntüler. /// false: Araç ipucu, yalnızca fare imleciyle üzerine getirilen bir seri noktası hakkındaki bilgileri görüntüler.
/// true : Araç ipucu, üzerine gelinen noktayla aynı bağımsız deÄŸiÅŸkene sahip tüm seri noktaları hakkında bilgi görüntüler. /// true : Araç ipucu, üzerine gelinen noktayla aynı bağımsız değişkene sahip tüm seri noktaları hakkında bilgi görüntüler.
/// Bu nokta bir yığına dahilse, araç ipucu yalnızca bu yığındaki noktalar ve herhangi bir yığına (varsa) ait olmayan noktalar hakkında bilgi görüntüler. /// Bu nokta bir yığına dahilse, araç ipucu yalnızca bu yığındaki noktalar ve herhangi bir yığına (varsa) ait olmayan noktalar hakkında bilgi görüntüler.
/// </summary> /// </summary>
public bool Shared { get; set; } public bool Shared { get; set; }

View file

@ -2,7 +2,7 @@
namespace Erp.Platform.ListForms; namespace Erp.Platform.ListForms;
/// <summary> DeÄŸer eksenini yapılandırır. /// <summary> Değer eksenini yapılandırır.
/// </summary> /// </summary>
public class ChartValueAxisDto public class ChartValueAxisDto
{ {
@ -16,47 +16,47 @@ public class ChartValueAxisDto
} }
public ChartAxisGridDto Grid { get; set; } public ChartAxisGridDto Grid { get; set; }
/// <summary> DeÄŸer ekseninin adını belirtir. /// <summary> Değer ekseninin adını belirtir.
/// </summary> /// </summary>
public string Name { get; set; } public string Name { get; set; }
/// <summary> Bağımsız deÄŸiÅŸken ekseninin yerini deÄŸiÅŸtirir. /// <summary> Bağımsız değişken ekseninin yerini değiştirir.
/// Accepted Values: 'bottom' | 'left' | 'right' | 'top' /// Accepted Values: 'bottom' | 'left' | 'right' | 'top'
/// Default Value: 'left' /// Default Value: 'left'
/// Döndürülen (Rotated) özelliÄŸin deÄŸerine baÄŸlı olarak, konum (Position) farklı deÄŸerler kabul eder. /// Döndürülen (Rotated) özelliğin değerine bağlı olarak, konum (Position) farklı değerler kabul eder.
/// If (Rotated = False) => Position = "left" or "right" /// If (Rotated = False) => Position = "left" or "right"
/// If (Rotated = True) => Position = "bottom" or "top" /// If (Rotated = True) => Position = "bottom" or "top"
/// </summary> /// </summary>
public string Position { get; set; } = "left"; public string Position { get; set; } = "left";
/// <summary> Eksen baÅŸlığını yapılandırır. /// <summary> Eksen başlığını yapılandırır.
/// Şimdilik sadece string olaran implemen edildi, ihtiyaç olması durumunda ChartTitleDto benzeri bir nesne ile deÄŸiÅŸtirilebilir /// Şimdilik sadece string olaran implemen edildi, ihtiyaç olması durumunda ChartTitleDto benzeri bir nesne ile değiştirilebilir
/// </summary> /// </summary>
public string Title { get; set; } public string Title { get; set; }
/// <summary> DeÄŸerleri belirtilen bir veri türüne dönüştürür. /// <summary> Değerleri belirtilen bir veri türüne dönüştürür.
/// Accepted Values: 'datetime' | 'numeric' | 'string' /// Accepted Values: 'datetime' | 'numeric' | 'string'
/// Default Value: undefined /// Default Value: undefined
/// Veri kaynağınız sayıları veya tarihleri â€â€dizeler olarak saklıyorsa, bu özelliÄŸi kullanarak uygun veri türünü belirtin. Tarihlerin geçerli bir biçimi olduÄŸundan emin olun. /// Veri kaynağınız sayıları veya tarihleri â€â€dizeler olarak saklıyorsa, bu özelliği kullanarak uygun veri türünü belirtin. Tarihlerin geçerli bir biçimi olduğundan emin olun.
/// </summary> /// </summary>
public string ValueType { get; set; } = "numeric"; public string ValueType { get; set; } = "numeric";
/// <summary> Eksen çizgisini görünür yapar. /// <summary> Eksen çizgisini görünür yapar.
/// </summary> /// </summary>
public bool Visible { get; set; } = true; public bool Visible { get; set; } = true;
/// <summary> Eksen çizgisinin geniÅŸliÄŸini piksel cinsinden belirtir. /// <summary> Eksen çizgisinin genişliğini piksel cinsinden belirtir.
/// </summary> /// </summary>
public int Width { get; set; } = 1; public int Width { get; set; } = 1;
public List<BreakDto> Breaks { get; set; } public List<BreakDto> Breaks { get; set; }
public BreakStyleDto BreakStyle { get; set; } public BreakStyleDto BreakStyle { get; set; }
/// <summary> DeÄŸer ekseninin türünü belirtir. /// <summary> Değer ekseninin türünü belirtir.
/// Accepted Values: 'continuous' | 'discrete' | 'logarithmic' /// Accepted Values: 'continuous' | 'discrete' | 'logarithmic'
/// continuous : Sayısal ve tarih-saat deÄŸerlerini görüntüler. Bu ekseni aralıklara bölmek için tickInterval özelliÄŸini kullanın. /// continuous : Sayısal ve tarih-saat değerlerini görüntüler. Bu ekseni aralıklara bölmek için tickInterval özelliğini kullanın.
/// discrete : "Kategoriler" adı verilen dize deÄŸerlerini görüntüler. Bunları sıralamak için, kategoriler dizisini kullanın. /// discrete : "Kategoriler" adı verilen dize değerlerini görüntüler. Bunları sıralamak için, kategoriler dizisini kullanın.
/// logarithmic : Sayısal deÄŸerleri görüntüler. Her deÄŸer, bir kuvvete yükseltilmiÅŸ logaritmaTemel deÄŸeridir. ÃrneÄŸin, 10'a eÅŸit olan logaritmaTemel ÅŸu deÄŸerleri üretir: 10-2, 10-1, 100, 101, 102, vb. Logaritmik eksen, hızla büyüyen deÄŸerlerden oluÅŸan bir veri kümesini görselleÅŸtirdiÄŸinizde kullanışlıdır. /// logarithmic : Sayısal değerleri görüntüler. Her değer, bir kuvvete yükseltilmiş logaritmaTemel değeridir. Örneğin, 10'a eşit olan logaritmaTemel şu değerleri üretir: 10-2, 10-1, 100, 101, 102, vb. Logaritmik eksen, hızla büyüyen değerlerden oluşan bir veri kümesini görselleştirdiğinizde kullanışlıdır.
/// </summary> /// </summary>
public string Type { get; set; } public string Type { get; set; }
public bool AutoBreaksEnabled { get; set; } = true; public bool AutoBreaksEnabled { get; set; } = true;
public int MaxAutoBreakCount { get; set; } = 2; public int MaxAutoBreakCount { get; set; } = 2;
// ihtiyaç olunca açılacak property ler // ihtiyaç olunca açılacak property ler
// aggregatedPointsPosition // aggregatedPointsPosition
// allowDecimals // allowDecimals

View file

@ -1,7 +1,7 @@
namespace Erp.Platform.ListForms; namespace Erp.Platform.ListForms;
/// <summary> YakınlaÅŸtırmayı ve kaydırmayı yapılandırır. /// <summary> Yakınlaştırmayı ve kaydırmayı yapılandırır.
/// Bağımsız deÄŸiÅŸken ve deÄŸer eksenleri için yakınlaÅŸtırmayı ve kaydırmayı etkinleÅŸtirebilirsiniz. Belirli bir eksen için yakınlaÅŸtırmayı, kaydırmayı veya her ikisini birden etkinleÅŸtirmek için argumentAxis ve valueAxis özelliklerini ayarlayın. /// Bağımsız değişken ve değer eksenleri için yakınlaştırmayı ve kaydırmayı etkinleştirebilirsiniz. Belirli bir eksen için yakınlaştırmayı, kaydırmayı veya her ikisini birden etkinleştirmek için argumentAxis ve valueAxis özelliklerini ayarlayın.
/// </summary> /// </summary>
public class ChartZoomAndPanDto public class ChartZoomAndPanDto
{ {
@ -10,28 +10,28 @@ public class ChartZoomAndPanDto
DragBoxStyle = new ChartDragBoxStyle(); DragBoxStyle = new ChartDragBoxStyle();
} }
/// <summary> Kullanıcıların grafiÄŸi yakınlaÅŸtırmak için fare tekerleÄŸini kullanıp kullanamayacağını belirtir. Yalnızca bağımsız deÄŸiÅŸken veya deÄŸer ekseni için yakınlaÅŸtırmaya izin veriliyorsa geçerlidir. /// <summary> Kullanıcıların grafiği yakınlaştırmak için fare tekerleğini kullanıp kullanamayacağını belirtir. Yalnızca bağımsız değişken veya değer ekseni için yakınlaştırmaya izin veriliyorsa geçerlidir.
/// </summary> /// </summary>
public bool AllowMouseWheel { get; set; } = true; public bool AllowMouseWheel { get; set; } = true;
/// <summary> Kullanıcıların grafiÄŸi yakınlaÅŸtırmak veya kaydırmak için dokunma hareketlerini kullanıp kullanamayacağını belirtir. Yalnızca bağımsız deÄŸiÅŸken veya deÄŸer ekseni için yakınlaÅŸtırma ve kaydırmaya izin veriliyorsa geçerlidir. /// <summary> Kullanıcıların grafiği yakınlaştırmak veya kaydırmak için dokunma hareketlerini kullanıp kullanamayacağını belirtir. Yalnızca bağımsız değişken veya değer ekseni için yakınlaştırma ve kaydırmaya izin veriliyorsa geçerlidir.
/// </summary> /// </summary>
public bool AllowTouchGestures { get; set; } = true; public bool AllowTouchGestures { get; set; } = true;
/// <summary> Kullanıcıların bağımsız deÄŸiÅŸken eksenini yakınlaÅŸtırmasına ve/veya kaydırmasına izin verilip verilmediÄŸini belirtir. /// <summary> Kullanıcıların bağımsız değişken eksenini yakınlaştırmasına ve/veya kaydırmasına izin verilip verilmediğini belirtir.
/// Accepted Values: 'both' | 'none' | 'pan' | 'zoom' /// Accepted Values: 'both' | 'none' | 'pan' | 'zoom'
/// </summary> /// </summary>
public string ArgumentAxis { get; set; } = "none"; public string ArgumentAxis { get; set; } = "none";
/// <summary> Kullanıcıların, sürükleme hareketiyle bir alan seçerek grafiÄŸi yakınlaÅŸtırmasına olanak tanır. Yalnızca fare kullanan cihazlarda geçerlidir. /// <summary> Kullanıcıların, sürükleme hareketiyle bir alan seçerek grafiği yakınlaştırmasına olanak tanır. Yalnızca fare kullanan cihazlarda geçerlidir.
/// </summary> /// </summary>
public bool DragToZoom { get; set; } = false; public bool DragToZoom { get; set; } = false;
/// <summary> dragToZoom true olduÄŸunda kaydırmayı etkinleÅŸtiren anahtarı belirtir. Yalnızca fare kullanan cihazlarda geçerlidir. /// <summary> dragToZoom true olduğunda kaydırmayı etkinleştiren anahtarı belirtir. Yalnızca fare kullanan cihazlarda geçerlidir.
/// Accepted Values: 'alt' | 'ctrl' | 'meta' | 'shift' /// Accepted Values: 'alt' | 'ctrl' | 'meta' | 'shift'
/// </summary> /// </summary>
public string PanKey { get; set; } = "shift"; public string PanKey { get; set; } = "shift";
/// <summary> Kullanıcıların deÄŸer eksenini yakınlaÅŸtırmasına ve/veya kaydırmasına izin verilip verilmediÄŸini belirtir. /// <summary> Kullanıcıların değer eksenini yakınlaştırmasına ve/veya kaydırmasına izin verilip verilmediğini belirtir.
/// Accepted Values: 'both' | 'none' | 'pan' | 'zoom' /// Accepted Values: 'both' | 'none' | 'pan' | 'zoom'
/// </summary> /// </summary>
public string ValueAxis { get; set; } = "none"; public string ValueAxis { get; set; } = "none";
/// <summary> Kullanıcılar sürükleme hareketiyle bir alan seçerek grafiÄŸi yakınlaÅŸtırdığında görünen kutuyu yapılandırır. Yalnızca dragToZoom doÄŸruysa geçerlidir. /// <summary> Kullanıcılar sürükleme hareketiyle bir alan seçerek grafiği yakınlaştırdığında görünen kutuyu yapılandırır. Yalnızca dragToZoom doğruysa geçerlidir.
/// </summary> /// </summary>
public ChartDragBoxStyle DragBoxStyle { get; set; } public ChartDragBoxStyle DragBoxStyle { get; set; }
} }

View file

@ -1,41 +1,41 @@
namespace Erp.Platform.ListForms; namespace Erp.Platform.ListForms;
/// <summary> /// <summary>
/// TreeList için özel ayarları içerir /// TreeList için özel ayarlarıerir
/// </summary> /// </summary>
public class TreeOptionDto public class TreeOptionDto
{ {
/// <summary> /// <summary>
/// Parent kaydı belirten field adı (örn: "Id") /// Parent kaydı belirten field adırn: "Id")
/// </summary> /// </summary>
public string KeyExpr { get; set; } public string KeyExpr { get; set; }
/// <summary> /// <summary>
/// Parent kaydı belirten field adı (örn: "parentId") /// Parent kaydı belirten field adırn: "parentId")
/// </summary> /// </summary>
public string ParentIdExpr { get; set; } public string ParentIdExpr { get; set; }
/// <summary> /// <summary>
/// Alt kayıtların olup olmadığını belirten field adı (opsiyonel) /// Alt kayıtların olup olmadığını belirten field adı (opsiyonel)
/// </summary> /// </summary>
public string HasItemsExpr { get; set; } public string HasItemsExpr { get; set; }
/// <summary> /// <summary>
/// Root (en üst) seviyedeki kayıtların parent deÄŸeri (genelde null veya 0) /// Root (en üst) seviyedeki kayıtların parent değeri (genelde null veya 0)
/// </summary> /// </summary>
public object RootValue { get; set; } = null; public object RootValue { get; set; } = null;
/// <summary> /// <summary>
/// BaÅŸlangıçta açık olacak node'ların ID'leri /// Başlangıçta açık olacak node'ların ID'leri
/// </summary> /// </summary>
public object[] ExpandedRowKeys { get; set; } = []; public object[] ExpandedRowKeys { get; set; } = [];
/// <summary> /// <summary>
/// Tüm node'ları baÅŸlangıçta açık göster /// Tüm node'ları başlangıçta açık göster
/// </summary> /// </summary>
public bool AutoExpandAll { get; set; } = false; public bool AutoExpandAll { get; set; } = false;
/// <summary> /// <summary>
/// Alt kayıtlar seçildiÄŸinde parent kayıtları da seç (recursive selection) /// Alt kayıtlar seçildiğinde parent kayıtları da seç (recursive selection)
/// </summary> /// </summary>
public bool RecursiveSelection { get; set; } = false; public bool RecursiveSelection { get; set; } = false;
} }

View file

@ -2,8 +2,8 @@
public class ColumnMappingDto public class ColumnMappingDto
{ {
public string SourceColumn { get; set; } // CSV/Excel'deki sütun adı public string SourceColumn { get; set; } // CSV/Excel'deki sütun adı
public string TargetField { get; set; } // Hedef Entity içindeki alan public string TargetField { get; set; } // Hedef Entity içindeki alan
public bool IsRequired { get; set; } public bool IsRequired { get; set; }
public string DataType { get; set; } // "string", "date", "number", "boolean" public string DataType { get; set; } // "string", "date", "number", "boolean"
} }

View file

@ -7,7 +7,7 @@ public class ImportPreviewDataDto
{ {
public Guid SessionId { get; set; } public Guid SessionId { get; set; }
public List<string> Headers { get; set; } = new(); public List<string> Headers { get; set; } = new();
public List<List<string>> Rows { get; set; } = new(); // raw string olarak dönen veri hücreleri public List<List<string>> Rows { get; set; } = new(); // raw string olarak dönen veri hücreleri
public int TotalRows { get; set; } public int TotalRows { get; set; }
public int SampleSize { get; set; } public int SampleSize { get; set; }

View file

@ -119,12 +119,12 @@ public static class LookupQueryValues
$"\"Name\" AS \"Name\" " + $"\"Name\" AS \"Name\" " +
$"FROM \"{defaultDomain}\".\"dbo\".\"{FullNameTable(TableNameEnum.Branch)}\" " + $"FROM \"{defaultDomain}\".\"dbo\".\"{FullNameTable(TableNameEnum.Branch)}\" " +
$"WHERE " + $"WHERE " +
$"\"TenantId\" = '@TENANTID' " + // 🔹 Bu form doÄŸru — Replace hedefi bu. $"\"TenantId\" = '@TENANTID' " + // 🔹 Bu form doğru — Replace hedefi bu.
$"AND \"IsDeleted\" = 'false' " + $"AND \"IsDeleted\" = 'false' " +
$"AND \"Id\" IN ( " + $"AND \"Id\" IN ( " +
$"SELECT \"BranchId\" " + $"SELECT \"BranchId\" " +
$"FROM \"{FullNameTable(TableNameEnum.BranchUsers)}\" " + $"FROM \"{FullNameTable(TableNameEnum.BranchUsers)}\" " +
$"WHERE \"UserId\" = '@USERID' " + // 🔹 Bu da doÄŸru. $"WHERE \"UserId\" = '@USERID' " + // 🔹 Bu da doğru.
$") " + $") " +
$"ORDER BY \"Name\";"; $"ORDER BY \"Name\";";

View file

@ -12,5 +12,5 @@ public class UomDto : AuditedEntityDto<Guid>
public bool IsActive { get; set; } public bool IsActive { get; set; }
public decimal Rounding { get; set; } public decimal Rounding { get; set; }
public Guid UomCategoryId { get; set; } public Guid UomCategoryId { get; set; }
public string UomCategoryName { get; set; } // Listelemede gösterim için opsiyonel public string UomCategoryName { get; set; } // Listelemede gösterim için opsiyonel
} }

View file

@ -47,7 +47,7 @@ public class AuditLogAppService
foreach (var item in auditLogList) foreach (var item in auditLogList)
{ {
var dto = await MapToGetListOutputDtoAsync(item); var dto = await MapToGetListOutputDtoAsync(item);
dto.EntityChangeCount = item.EntityChanges?.Count ?? 0; // null kontrolü artık burada güvenli dto.EntityChangeCount = item.EntityChanges?.Count ?? 0; // null kontrolü artık burada güvenli
entityDtos.Add(dto); entityDtos.Add(dto);
} }

View file

@ -97,7 +97,7 @@ public class BlogAppService : PlatformAppService, IBlogAppService
await _postRepository.UpdateAsync(post); await _postRepository.UpdateAsync(post);
return await GetPostAsync(post.Id); // ✅ DTO dönülüyor return await GetPostAsync(post.Id); // ✅ DTO dönülüyor
} }
public async Task DeletePostAsync(Guid id) public async Task DeletePostAsync(Guid id)

View file

@ -59,7 +59,7 @@ public class CrudEndpointGenerateAppService : CrudAppService<
throw new Exception($"Entity with ID {entityId} not found"); throw new Exception($"Entity with ID {entityId} not found");
} }
// Migration kontrolü // Migration kontrolü
var migrationQueryable = await _migrationRepository.GetQueryableAsync(); var migrationQueryable = await _migrationRepository.GetQueryableAsync();
var migration = await migrationQueryable var migration = await migrationQueryable
.Where(x => x.EntityId == entityId && x.Status == "applied") .Where(x => x.EntityId == entityId && x.Status == "applied")
@ -70,7 +70,7 @@ public class CrudEndpointGenerateAppService : CrudAppService<
throw new Exception($"No applied migration found for entity {entity.Name}. Please apply migration first."); throw new Exception($"No applied migration found for entity {entity.Name}. Please apply migration first.");
} }
// CRUD endpointleri oluÅŸtur // CRUD endpointleri oluştur
var endpoints = new List<CrudEndpoint>(); var endpoints = new List<CrudEndpoint>();
var entityName = entity.Name; var entityName = entity.Name;
var entityDisplayName = entity.DisplayName; var entityDisplayName = entity.DisplayName;
@ -130,7 +130,7 @@ public class CrudEndpointGenerateAppService : CrudAppService<
CsharpCode = GenerateDeleteCode(entityName, entityDisplayName) CsharpCode = GenerateDeleteCode(entityName, entityDisplayName)
}); });
// Var olanları sil // Var olanları sil
var existingEndpoints = await _endpointRepository var existingEndpoints = await _endpointRepository
.GetListAsync(x => x.EntityId == entityId); .GetListAsync(x => x.EntityId == entityId);
@ -139,7 +139,7 @@ public class CrudEndpointGenerateAppService : CrudAppService<
// Yeni endpointleri ekle // Yeni endpointleri ekle
await _endpointRepository.InsertManyAsync(endpoints, autoSave: true); await _endpointRepository.InsertManyAsync(endpoints, autoSave: true);
// Entity endpoint durumu güncelle // Entity endpoint durumu güncelle
entity.EndpointStatus = "applied"; entity.EndpointStatus = "applied";
await _entityRepository.UpdateAsync(entity, autoSave: true); await _entityRepository.UpdateAsync(entity, autoSave: true);

View file

@ -189,7 +189,7 @@ public class CustomEntityAppService : CrudAppService<
public override async Task<CustomEntityDto> CreateAsync(CreateUpdateCustomEntityDto input) public override async Task<CustomEntityDto> CreateAsync(CreateUpdateCustomEntityDto input)
{ {
// Entity oluÅŸtur // Entity oluştur
var entity = new CustomEntity var entity = new CustomEntity
{ {
Menu = input.Menu, Menu = input.Menu,
@ -203,7 +203,7 @@ public class CustomEntityAppService : CrudAppService<
MigrationStatus = "pending" MigrationStatus = "pending"
}; };
// Fields ekle - sıralama ile // Fields ekle - sıralama ile
for (int i = 0; i < input.Fields.Count; i++) for (int i = 0; i < input.Fields.Count; i++)
{ {
var fieldDto = input.Fields[i]; var fieldDto = input.Fields[i];
@ -255,10 +255,10 @@ public class CustomEntityAppService : CrudAppService<
public override async Task DeleteAsync(Guid id) public override async Task DeleteAsync(Guid id)
{ {
// İlgili entity'nin var olup olmadığını kontrol et // İlgili entity'nin var olup olmadığını kontrol et
var entity = await _repository.GetAsync(id); var entity = await _repository.GetAsync(id);
// İlgili ApiMigration kayıtlarını sil // İlgili ApiMigration kayıtlarını sil
var relatedMigrations = await _migrationRepository.GetListAsync(m => m.EntityId == id); var relatedMigrations = await _migrationRepository.GetListAsync(m => m.EntityId == id);
if (relatedMigrations.Any()) if (relatedMigrations.Any())
{ {

View file

@ -36,7 +36,7 @@ public class DynamicAppServiceAppService : PlatformAppService, IDynamicServiceAp
} }
catch (Exception ex) catch (Exception ex)
{ {
Logger.LogError(ex, "Test compile sırasında hata. Tenant: {TenantId}", CurrentTenant.Id); Logger.LogError(ex, "Test compile sırasında hata. Tenant: {TenantId}", CurrentTenant.Id);
throw; throw;
} }
} }
@ -46,7 +46,7 @@ public class DynamicAppServiceAppService : PlatformAppService, IDynamicServiceAp
{ {
try try
{ {
// Önce kodu test compile et // Önce kodu test compile et
var compileResult = await _compiler.CompileAndValidateAsync(request.Code, CurrentTenant.Id); var compileResult = await _compiler.CompileAndValidateAsync(request.Code, CurrentTenant.Id);
if (!compileResult.Success) if (!compileResult.Success)
{ {
@ -57,7 +57,7 @@ public class DynamicAppServiceAppService : PlatformAppService, IDynamicServiceAp
}; };
} }
// Aynı isimde AppService var mı kontrol et // Aynı isimde AppService var mı kontrol et
var existingService = await _dynamicAppServiceRepository var existingService = await _dynamicAppServiceRepository
.FirstOrDefaultAsync(x => x.Name == request.Name && x.TenantId == CurrentTenant.Id); .FirstOrDefaultAsync(x => x.Name == request.Name && x.TenantId == CurrentTenant.Id);
@ -65,7 +65,7 @@ public class DynamicAppServiceAppService : PlatformAppService, IDynamicServiceAp
if (existingService != null) if (existingService != null)
{ {
// Mevcut servisi güncelle // Mevcut servisi güncelle
existingService.UpdateCode(request.Code); existingService.UpdateCode(request.Code);
existingService.DisplayName = request.DisplayName; existingService.DisplayName = request.DisplayName;
existingService.Description = request.Description; existingService.Description = request.Description;
@ -116,7 +116,7 @@ public class DynamicAppServiceAppService : PlatformAppService, IDynamicServiceAp
} }
else else
{ {
// Derleme hatası durumunu kaydet // Derleme hatası durumunu kaydet
appService.MarkCompilationError(loadResult.ErrorMessage); appService.MarkCompilationError(loadResult.ErrorMessage);
await _dynamicAppServiceRepository.UpdateAsync(appService); await _dynamicAppServiceRepository.UpdateAsync(appService);
@ -130,13 +130,13 @@ public class DynamicAppServiceAppService : PlatformAppService, IDynamicServiceAp
} }
catch (Exception ex) catch (Exception ex)
{ {
Logger.LogError(ex, "AppService yayınlama sırasında hata. Ad: {Name}, Tenant: {TenantId}", Logger.LogError(ex, "AppService yayınlama sırasında hata. Ad: {Name}, Tenant: {TenantId}",
request.Name, CurrentTenant.Id); request.Name, CurrentTenant.Id);
return new PublishResultDto return new PublishResultDto
{ {
Success = false, Success = false,
ErrorMessage = $"Yayınlama sırasında beklenmeyen hata: {ex.Message}" ErrorMessage = $"Yayınlama sırasında beklenmeyen hata: {ex.Message}"
}; };
} }
} }
@ -148,7 +148,7 @@ public class DynamicAppServiceAppService : PlatformAppService, IDynamicServiceAp
var queryable = await _dynamicAppServiceRepository.GetQueryableAsync(); var queryable = await _dynamicAppServiceRepository.GetQueryableAsync();
// Tenant filtresi otomatik uygulanır (IMultiTenant) // Tenant filtresi otomatik uygulanır (IMultiTenant)
var query = queryable.WhereIf(!string.IsNullOrEmpty(input.Sorting), var query = queryable.WhereIf(!string.IsNullOrEmpty(input.Sorting),
x => x.CreationTime.ToString().Contains(input.Sorting ?? "")); x => x.CreationTime.ToString().Contains(input.Sorting ?? ""));
@ -177,8 +177,8 @@ public class DynamicAppServiceAppService : PlatformAppService, IDynamicServiceAp
{ {
var appService = await _dynamicAppServiceRepository.GetAsync(id); var appService = await _dynamicAppServiceRepository.GetAsync(id);
// TODO: Runtime'dan assembly'yi kaldırma iÅŸlemi // TODO: Runtime'dan assembly'yi kaldırma işlemi
// (AssemblyLoadContext.Unload() çaÄŸrısı) // (AssemblyLoadContext.Unload() çağrısı)
await _dynamicAppServiceRepository.DeleteAsync(id); await _dynamicAppServiceRepository.DeleteAsync(id);
} }
@ -205,7 +205,7 @@ public class DynamicAppServiceAppService : PlatformAppService, IDynamicServiceAp
{ {
try try
{ {
// Service.Name üzerinden assembly adı oluÅŸtur // Service.Name üzerinden assembly adı oluştur
var assemblyName = $"{service.Name}_{service.Version}"; var assemblyName = $"{service.Name}_{service.Version}";
var result = await _compiler.CompileAndRegisterForTenantAsync( var result = await _compiler.CompileAndRegisterForTenantAsync(
CurrentTenant.Id ?? Guid.Empty, CurrentTenant.Id ?? Guid.Empty,
@ -226,7 +226,7 @@ public class DynamicAppServiceAppService : PlatformAppService, IDynamicServiceAp
catch (Exception ex) catch (Exception ex)
{ {
errorCount++; errorCount++;
Logger.LogError(ex, "AppService yeniden yükleme hatası. ID: {Id}", service.Id); Logger.LogError(ex, "AppService yeniden yükleme hatası. ID: {Id}", service.Id);
service.MarkCompilationError(ex.Message); service.MarkCompilationError(ex.Message);
await _dynamicAppServiceRepository.UpdateAsync(service); await _dynamicAppServiceRepository.UpdateAsync(service);

View file

@ -22,13 +22,13 @@ public class DynamicServiceCompiler : ITransientDependency
{ {
private readonly ILogger<DynamicServiceCompiler> _logger; private readonly ILogger<DynamicServiceCompiler> _logger;
// Tenant bazlı yüklenmiÅŸ assembly'leri takip etmek için // Tenant bazlı yüklenmiş assembly'leri takip etmek için
private static readonly ConcurrentDictionary<Guid, List<Assembly>> _tenantAssemblies = new(); private static readonly ConcurrentDictionary<Guid, List<Assembly>> _tenantAssemblies = new();
// Assembly kaydı için delegate // Assembly kaydıin delegate
public static Action<Guid, Assembly, string>? NotifyAssemblyRegistration { get; set; } public static Action<Guid, Assembly, string>? NotifyAssemblyRegistration { get; set; }
// Güvenlik için yasaklı namespace'ler // Güvenlik için yasaklı namespace'ler
private static readonly string[] ForbiddenNamespaces = { private static readonly string[] ForbiddenNamespaces = {
"System.IO", "System.IO",
"System.Diagnostics", "System.Diagnostics",
@ -41,7 +41,7 @@ public class DynamicServiceCompiler : ITransientDependency
"System.Net.NetworkInformation" "System.Net.NetworkInformation"
}; };
// Güvenlik için yasaklı sınıflar/metotlar // Güvenlik için yasaklı sınıflar/metotlar
private static readonly string[] ForbiddenTypes = { private static readonly string[] ForbiddenTypes = {
"Process", "Process",
"ProcessStartInfo", "ProcessStartInfo",
@ -65,7 +65,7 @@ public class DynamicServiceCompiler : ITransientDependency
} }
/// <summary> /// <summary>
/// Kodu derler ve validate eder, ancak assembly yüklemez /// Kodu derler ve validate eder, ancak assembly yüklemez
/// </summary> /// </summary>
public async Task<CompileResultDto> CompileAndValidateAsync(string code, Guid? tenantId = null) public async Task<CompileResultDto> CompileAndValidateAsync(string code, Guid? tenantId = null)
{ {
@ -73,7 +73,7 @@ public class DynamicServiceCompiler : ITransientDependency
try try
{ {
// Güvenlik kontrolü // Güvenlik kontrolü
var securityCheck = ValidateCodeSecurity(code); var securityCheck = ValidateCodeSecurity(code);
if (!securityCheck.Success) if (!securityCheck.Success)
{ {
@ -96,7 +96,7 @@ public class DynamicServiceCompiler : ITransientDependency
Warnings = new List<string>() Warnings = new List<string>()
}; };
// Hataları ve uyarıları topla // Hataları ve uyarıları topla
foreach (var diagnostic in emitResult.Diagnostics) foreach (var diagnostic in emitResult.Diagnostics)
{ {
var error = new CompilationErrorDto var error = new CompilationErrorDto
@ -122,10 +122,10 @@ public class DynamicServiceCompiler : ITransientDependency
if (!result.Success) if (!result.Success)
{ {
result.ErrorMessage = $"Derleme {result.Errors.Count} hata ile baÅŸarısız oldu."; result.ErrorMessage = $"Derleme {result.Errors.Count} hata ile başarısız oldu.";
} }
_logger.LogInformation("Kod derlemesi tamamlandı. BaÅŸarılı: {Success}, Süre: {Time}ms, Hata sayısı: {ErrorCount}", _logger.LogInformation("Kod derlemesi tamamlandı. Başarılı: {Success}, Süre: {Time}ms, Hata sayısı: {ErrorCount}",
result.Success, stopwatch.ElapsedMilliseconds, result.Errors?.Count ?? 0); result.Success, stopwatch.ElapsedMilliseconds, result.Errors?.Count ?? 0);
return result; return result;
@ -133,12 +133,12 @@ public class DynamicServiceCompiler : ITransientDependency
catch (Exception ex) catch (Exception ex)
{ {
stopwatch.Stop(); stopwatch.Stop();
_logger.LogError(ex, "Kod derlemesi sırasında beklenmeyen hata"); _logger.LogError(ex, "Kod derlemesi sırasında beklenmeyen hata");
return new CompileResultDto return new CompileResultDto
{ {
Success = false, Success = false,
ErrorMessage = $"Derleme sırasında hata: {ex.Message}", ErrorMessage = $"Derleme sırasında hata: {ex.Message}",
CompilationTimeMs = stopwatch.ElapsedMilliseconds, CompilationTimeMs = stopwatch.ElapsedMilliseconds,
Errors = new List<CompilationErrorDto>() Errors = new List<CompilationErrorDto>()
}; };
@ -146,20 +146,20 @@ public class DynamicServiceCompiler : ITransientDependency
} }
/// <summary> /// <summary>
/// Kodu derler ve belirtilen tenant için assembly yükler /// Kodu derler ve belirtilen tenant için assembly yükler
/// </summary> /// </summary>
public async Task<CompileResultDto> CompileAndRegisterForTenantAsync(Guid tenantId, string code, string assemblyName) public async Task<CompileResultDto> CompileAndRegisterForTenantAsync(Guid tenantId, string code, string assemblyName)
{ {
try try
{ {
// Önce validate et // Önce validate et
var validateResult = await CompileAndValidateAsync(code, tenantId); var validateResult = await CompileAndValidateAsync(code, tenantId);
if (!validateResult.Success) if (!validateResult.Success)
{ {
return validateResult; return validateResult;
} }
// Assembly oluÅŸtur // Assembly oluştur
var compilation = CreateCompilation(code, assemblyName); var compilation = CreateCompilation(code, assemblyName);
using var ms = new MemoryStream(); using var ms = new MemoryStream();
@ -172,7 +172,7 @@ public class DynamicServiceCompiler : ITransientDependency
ms.Seek(0, SeekOrigin.Begin); ms.Seek(0, SeekOrigin.Begin);
// Tenant'a özel assembly load context // Tenant'a özel assembly load context
var contextName = $"Tenant_{tenantId}_Context"; var contextName = $"Tenant_{tenantId}_Context";
var loadContext = new AssemblyLoadContext(contextName, isCollectible: true); var loadContext = new AssemblyLoadContext(contextName, isCollectible: true);
@ -197,25 +197,25 @@ public class DynamicServiceCompiler : ITransientDependency
} }
catch (Exception ex) catch (Exception ex)
{ {
_logger.LogError(ex, "Assembly yükleme sırasında hata. Tenant: {TenantId}", tenantId); _logger.LogError(ex, "Assembly yükleme sırasında hata. Tenant: {TenantId}", tenantId);
return new CompileResultDto return new CompileResultDto
{ {
Success = false, Success = false,
ErrorMessage = $"Assembly yükleme hatası: {ex.Message}", ErrorMessage = $"Assembly yükleme hatası: {ex.Message}",
Errors = new List<CompilationErrorDto>() Errors = new List<CompilationErrorDto>()
}; };
} }
} }
/// <summary> /// <summary>
/// Kod güvenlik kontrolü /// Kod güvenlik kontrolü
/// </summary> /// </summary>
private CompileResultDto ValidateCodeSecurity(string code) private CompileResultDto ValidateCodeSecurity(string code)
{ {
var errors = new List<CompilationErrorDto>(); var errors = new List<CompilationErrorDto>();
// Yasaklı namespace kontrolü // Yasaklı namespace kontrolü
foreach (var forbiddenNs in ForbiddenNamespaces) foreach (var forbiddenNs in ForbiddenNamespaces)
{ {
if (code.Contains($"using {forbiddenNs}") || code.Contains($"{forbiddenNs}.")) if (code.Contains($"using {forbiddenNs}") || code.Contains($"{forbiddenNs}."))
@ -223,7 +223,7 @@ public class DynamicServiceCompiler : ITransientDependency
errors.Add(new CompilationErrorDto errors.Add(new CompilationErrorDto
{ {
Code = "SECURITY001", Code = "SECURITY001",
Message = $"Güvenlik nedeniyle '{forbiddenNs}' namespace'i kullanılamaz", Message = $"Güvenlik nedeniyle '{forbiddenNs}' namespace'i kullanılamaz",
Severity = "Error", Severity = "Error",
Line = GetLineNumber(code, forbiddenNs), Line = GetLineNumber(code, forbiddenNs),
Column = 1 Column = 1
@ -231,7 +231,7 @@ public class DynamicServiceCompiler : ITransientDependency
} }
} }
// Yasaklı tip kontrolü // Yasaklı tip kontrolü
foreach (var forbiddenType in ForbiddenTypes) foreach (var forbiddenType in ForbiddenTypes)
{ {
if (code.Contains(forbiddenType)) if (code.Contains(forbiddenType))
@ -239,7 +239,7 @@ public class DynamicServiceCompiler : ITransientDependency
errors.Add(new CompilationErrorDto errors.Add(new CompilationErrorDto
{ {
Code = "SECURITY002", Code = "SECURITY002",
Message = $"Güvenlik nedeniyle '{forbiddenType}' tipi kullanılamaz", Message = $"Güvenlik nedeniyle '{forbiddenType}' tipi kullanılamaz",
Severity = "Error", Severity = "Error",
Line = GetLineNumber(code, forbiddenType), Line = GetLineNumber(code, forbiddenType),
Column = 1 Column = 1
@ -250,13 +250,13 @@ public class DynamicServiceCompiler : ITransientDependency
return new CompileResultDto return new CompileResultDto
{ {
Success = errors.Count == 0, Success = errors.Count == 0,
ErrorMessage = errors.Count > 0 ? "Güvenlik kontrolü baÅŸarısız" : null, ErrorMessage = errors.Count > 0 ? "Güvenlik kontrolü başarısız" : null,
Errors = errors Errors = errors
}; };
} }
/// <summary> /// <summary>
/// Roslyn compilation oluÅŸturur /// Roslyn compilation oluşturur
/// </summary> /// </summary>
private CSharpCompilation CreateCompilation(string code, string assemblyName) private CSharpCompilation CreateCompilation(string code, string assemblyName)
{ {
@ -271,12 +271,12 @@ public class DynamicServiceCompiler : ITransientDependency
new CSharpCompilationOptions( new CSharpCompilationOptions(
OutputKind.DynamicallyLinkedLibrary, OutputKind.DynamicallyLinkedLibrary,
optimizationLevel: OptimizationLevel.Debug, optimizationLevel: OptimizationLevel.Debug,
allowUnsafe: false // Güvenlik için unsafe kod yasağı allowUnsafe: false // Güvenlik için unsafe kod yasağı
)); ));
} }
/// <summary> /// <summary>
/// Varsayılan assembly referanslarını döner /// Varsayılan assembly referanslarınıner
/// </summary> /// </summary>
private List<MetadataReference> GetDefaultReferences() private List<MetadataReference> GetDefaultReferences()
{ {
@ -303,11 +303,11 @@ public class DynamicServiceCompiler : ITransientDependency
} }
catch (Exception ex) catch (Exception ex)
{ {
_logger.LogWarning(ex, "Assembly referansı eklenemedi: {Assembly}", assembly.FullName); _logger.LogWarning(ex, "Assembly referansı eklenemedi: {Assembly}", assembly.FullName);
} }
} }
// ABP Framework referansları // ABP Framework referansları
try try
{ {
var abpAssemblies = AppDomain.CurrentDomain.GetAssemblies() var abpAssemblies = AppDomain.CurrentDomain.GetAssemblies()
@ -331,7 +331,7 @@ public class DynamicServiceCompiler : ITransientDependency
} }
/// <summary> /// <summary>
/// Bir tipin ApplicationService olup olmadığını kontrol eder /// Bir tipin ApplicationService olup olmadığını kontrol eder
/// </summary> /// </summary>
private bool IsApplicationServiceType(Type type) private bool IsApplicationServiceType(Type type)
{ {
@ -350,7 +350,7 @@ public class DynamicServiceCompiler : ITransientDependency
} }
/// <summary> /// <summary>
/// Tipin ApplicationService base class'ından türediÄŸini kontrol eder /// Tipin ApplicationService base class'ından türediğini kontrol eder
/// </summary> /// </summary>
private bool HasApplicationServiceBase(Type type) private bool HasApplicationServiceBase(Type type)
{ {
@ -367,7 +367,7 @@ public class DynamicServiceCompiler : ITransientDependency
} }
/// <summary> /// <summary>
/// Kod içinde belirli bir string'in satır numarasını bulur /// Kod içinde belirli bir string'in satır numarasını bulur
/// </summary> /// </summary>
private int GetLineNumber(string code, string searchText) private int GetLineNumber(string code, string searchText)
{ {
@ -383,7 +383,7 @@ public class DynamicServiceCompiler : ITransientDependency
} }
/// <summary> /// <summary>
/// Assembly içindeki ApplicationService'lerden endpoint listesini çıkarır /// Assembly içindeki ApplicationService'lerden endpoint listesini çıkarır
/// </summary> /// </summary>
public List<string> ExtractEndpointsFromAssembly(Assembly assembly, string serviceName) public List<string> ExtractEndpointsFromAssembly(Assembly assembly, string serviceName)
{ {
@ -391,14 +391,14 @@ public class DynamicServiceCompiler : ITransientDependency
try try
{ {
// Assembly içindeki ApplicationService türlerini bul // Assembly içindeki ApplicationService türlerini bul
var appServiceTypes = assembly.GetTypes() var appServiceTypes = assembly.GetTypes()
.Where(t => IsApplicationServiceType(t) && t.Name == serviceName) .Where(t => IsApplicationServiceType(t) && t.Name == serviceName)
.ToList(); .ToList();
foreach (var serviceType in appServiceTypes) foreach (var serviceType in appServiceTypes)
{ {
// Controller adını oluÅŸtur (ABP convention: CustomerAppService -> Customer) // Controller adını oluştur (ABP convention: CustomerAppService -> Customer)
var controllerName = serviceType.Name; var controllerName = serviceType.Name;
if (controllerName.EndsWith("AppService")) if (controllerName.EndsWith("AppService"))
{ {
@ -412,14 +412,14 @@ public class DynamicServiceCompiler : ITransientDependency
// ABP kebab-case convention (DynamicCustomer -> dynamic-customer) // ABP kebab-case convention (DynamicCustomer -> dynamic-customer)
var routePrefix = ToKebabCase(controllerName); var routePrefix = ToKebabCase(controllerName);
// Public method'ları bul (async method'lar genelde Async suffix'i ile biter) // Public method'ları bul (async method'lar genelde Async suffix'i ile biter)
var methods = serviceType.GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly) var methods = serviceType.GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly)
.Where(m => !m.IsSpecialName) // Property getter/setter'ları hariç tut .Where(m => !m.IsSpecialName) // Property getter/setter'ları hariç tut
.ToList(); .ToList();
foreach (var method in methods) foreach (var method in methods)
{ {
// Method adından Async suffix'ini kaldır ve kebab-case'e çevir // Method adından Async suffix'ini kaldır ve kebab-case'e çevir
var methodName = method.Name; var methodName = method.Name;
if (methodName.EndsWith("Async")) if (methodName.EndsWith("Async"))
{ {
@ -428,10 +428,10 @@ public class DynamicServiceCompiler : ITransientDependency
var methodRoute = ToKebabCase(methodName); var methodRoute = ToKebabCase(methodName);
// HTTP verb'ü belirle (basit heuristic) // HTTP verb'ü belirle (basit heuristic)
var httpVerb = DetermineHttpVerb(method); var httpVerb = DetermineHttpVerb(method);
// Endpoint'i oluÅŸtur // Endpoint'i oluştur
var endpoint = $"{httpVerb} /api/app/{routePrefix}/{methodRoute}"; var endpoint = $"{httpVerb} /api/app/{routePrefix}/{methodRoute}";
endpoints.Add(endpoint); endpoints.Add(endpoint);
} }
@ -439,14 +439,14 @@ public class DynamicServiceCompiler : ITransientDependency
} }
catch (Exception ex) catch (Exception ex)
{ {
_logger.LogError(ex, "Endpoint çıkarma sırasında hata"); _logger.LogError(ex, "Endpoint çıkarma sırasında hata");
} }
return endpoints; return endpoints;
} }
/// <summary> /// <summary>
/// PascalCase'i kebab-case'e çevirir (DynamicCustomer -> dynamic-customer) /// PascalCase'i kebab-case'e çevirir (DynamicCustomer -> dynamic-customer)
/// </summary> /// </summary>
private string ToKebabCase(string value) private string ToKebabCase(string value)
{ {
@ -461,7 +461,7 @@ public class DynamicServiceCompiler : ITransientDependency
} }
/// <summary> /// <summary>
/// Method'un HTTP verb'ünü belirler (ABP convention'a göre) /// Method'un HTTP verb'ünü belirler (ABP convention'a göre)
/// </summary> /// </summary>
private string DetermineHttpVerb(MethodInfo method) private string DetermineHttpVerb(MethodInfo method)
{ {

View file

@ -55,13 +55,13 @@ public class FileManagementAppService : ApplicationService, IFileManagementAppSe
private string EncodePathAsId(string path) private string EncodePathAsId(string path)
{ {
// Path'deki '/' karakterlerini '|' ile deÄŸiÅŸtir URL-safe hale getirmek için // Path'deki '/' karakterlerini '|' ile değiştir URL-safe hale getirmek için
return path.Replace("/", "|"); return path.Replace("/", "|");
} }
private string DecodeIdAsPath(string id) private string DecodeIdAsPath(string id)
{ {
// ID'deki '|' karakterlerini '/' ile geri deÄŸiÅŸtir // ID'deki '|' karakterlerini '/' ile geri değiştir
return id.Replace("|", "/"); return id.Replace("|", "/");
} }
@ -127,14 +127,14 @@ public class FileManagementAppService : ApplicationService, IFileManagementAppSe
return items; return items;
} }
// Klasörleri listele // Klasörleri listele
var directories = Directory.GetDirectories(fullPath); var directories = Directory.GetDirectories(fullPath);
foreach (var dir in directories) foreach (var dir in directories)
{ {
var dirInfo = new DirectoryInfo(dir); var dirInfo = new DirectoryInfo(dir);
var relativePath = string.IsNullOrEmpty(folderPath) ? dirInfo.Name : $"{folderPath}/{dirInfo.Name}"; var relativePath = string.IsNullOrEmpty(folderPath) ? dirInfo.Name : $"{folderPath}/{dirInfo.Name}";
// Klasör içindeki öğe sayısını hesapla // Klasör içindeki öğe sayısını hesapla
var childCount = 0; var childCount = 0;
try try
{ {
@ -163,7 +163,7 @@ public class FileManagementAppService : ApplicationService, IFileManagementAppSe
}); });
} }
// Dosyaları listele // Dosyaları listele
var files = Directory.GetFiles(fullPath); var files = Directory.GetFiles(fullPath);
foreach (var file in files) foreach (var file in files)
{ {
@ -270,19 +270,19 @@ public class FileManagementAppService : ApplicationService, IFileManagementAppSe
var folderPath = Path.Combine(parentPath, input.Name); var folderPath = Path.Combine(parentPath, input.Name);
// Klasör zaten var mı kontrol et // Klasör zaten var mı kontrol et
if (Directory.Exists(folderPath)) if (Directory.Exists(folderPath))
{ {
throw new UserFriendlyException("A folder with this name already exists"); throw new UserFriendlyException("A folder with this name already exists");
} }
// Dosya ile aynı isimde bir ÅŸey var mı kontrol et // Dosya ile aynı isimde bir şey var mı kontrol et
if (File.Exists(folderPath)) if (File.Exists(folderPath))
{ {
throw new UserFriendlyException("A file with this name already exists"); throw new UserFriendlyException("A file with this name already exists");
} }
// Klasörü oluÅŸtur // Klasörü oluştur
Directory.CreateDirectory(folderPath); Directory.CreateDirectory(folderPath);
var newFolderPath = string.IsNullOrEmpty(decodedParentId) ? input.Name : $"{decodedParentId}/{input.Name}"; var newFolderPath = string.IsNullOrEmpty(decodedParentId) ? input.Name : $"{decodedParentId}/{input.Name}";
@ -350,7 +350,7 @@ public class FileManagementAppService : ApplicationService, IFileManagementAppSe
fullCdnPath = Path.Combine(fullCdnPath, decodedParentId); fullCdnPath = Path.Combine(fullCdnPath, decodedParentId);
} }
// Dizini oluÅŸtur // Dizini oluştur
Directory.CreateDirectory(fullCdnPath); Directory.CreateDirectory(fullCdnPath);
var fullFilePath = Path.Combine(fullCdnPath, uniqueFileName); var fullFilePath = Path.Combine(fullCdnPath, uniqueFileName);
@ -358,7 +358,7 @@ public class FileManagementAppService : ApplicationService, IFileManagementAppSe
long fileSize; long fileSize;
if (input.Files != null && input.Files.Length > 0) if (input.Files != null && input.Files.Length > 0)
{ {
// İlk dosyayı kullan (tek dosya upload için) // İlk dosyayı kullan (tek dosya upload için)
var file = input.Files[0]; var file = input.Files[0];
using var stream = file.GetStream(); using var stream = file.GetStream();
using var fileStream = File.Create(fullFilePath); using var fileStream = File.Create(fullFilePath);
@ -388,7 +388,7 @@ public class FileManagementAppService : ApplicationService, IFileManagementAppSe
TenantId = _currentTenant.Id?.ToString() TenantId = _currentTenant.Id?.ToString()
}; };
// File system'e kaydedildi, index güncellemeye gerek yok // File system'e kaydedildi, index güncellemeye gerek yok
return new FileItemDto return new FileItemDto
{ {
Id = metadata.Id, Id = metadata.Id,
@ -551,7 +551,7 @@ public class FileManagementAppService : ApplicationService, IFileManagementAppSe
if (Directory.Exists(fullPath)) if (Directory.Exists(fullPath))
{ {
// Klasör sil (içindeki tüm dosyalar ile birlikte) // Klasör sil (içindeki tüm dosyalar ile birlikte)
Directory.Delete(fullPath, recursive: true); Directory.Delete(fullPath, recursive: true);
} }
else if (File.Exists(fullPath)) else if (File.Exists(fullPath))
@ -593,7 +593,7 @@ public class FileManagementAppService : ApplicationService, IFileManagementAppSe
if (Directory.Exists(fullPath)) if (Directory.Exists(fullPath))
{ {
// Klasör sil (içindeki tüm dosyalar ile birlikte) // Klasör sil (içindeki tüm dosyalar ile birlikte)
Directory.Delete(fullPath, recursive: true); Directory.Delete(fullPath, recursive: true);
} }
else if (File.Exists(fullPath)) else if (File.Exists(fullPath))

View file

@ -16,5 +16,5 @@ public class FileMetadata
public string ParentId { get; set; } = string.Empty; public string ParentId { get; set; } = string.Empty;
public bool IsReadOnly { get; set; } public bool IsReadOnly { get; set; }
public string? TenantId { get; set; } public string? TenantId { get; set; }
public int? ChildCount { get; set; } // Klasörler için öğe sayısı public int? ChildCount { get; set; } // Klasörler için öğe sayısı
} }

View file

@ -436,7 +436,7 @@ public class ForumAppService : PlatformAppService, IForumAppService
topic.ReplyCount = Math.Max(0, topic.ReplyCount - 1); topic.ReplyCount = Math.Max(0, topic.ReplyCount - 1);
category.PostCount = Math.Max(0, category.PostCount ?? 0 - 1); category.PostCount = Math.Max(0, category.PostCount ?? 0 - 1);
// 🔁 Last post deÄŸiÅŸti mi kontrol et // 🔁 Last post değişti mi kontrol et
var latestPost = await _postRepository var latestPost = await _postRepository
.GetQueryableAsync() .GetQueryableAsync()
.ContinueWith(q => q.Result .ContinueWith(q => q.Result
@ -459,7 +459,7 @@ public class ForumAppService : PlatformAppService, IForumAppService
} }
else else
{ {
// Tüm postlar silindiyse // Tüm postlar silindiyse
topic.LastPostId = null; topic.LastPostId = null;
topic.LastPostDate = null; topic.LastPostDate = null;
topic.LastPostUserId = null; topic.LastPostUserId = null;
@ -496,7 +496,7 @@ public class ForumAppService : PlatformAppService, IForumAppService
post.LikeCount = Math.Max(0, post.LikeCount ?? 0 - 1); post.LikeCount = Math.Max(0, post.LikeCount ?? 0 - 1);
await _postRepository.UpdateAsync(post); await _postRepository.UpdateAsync(post);
// 🔽 Topic'in toplam beÄŸeni sayısını güncelle // 🔽 Topic'in toplam beğeni sayısınıncelle
var topic = await _topicRepository.GetAsync(post.TopicId); var topic = await _topicRepository.GetAsync(post.TopicId);
var postsInTopic = await _postRepository.GetListAsync(p => p.TopicId == topic.Id); var postsInTopic = await _postRepository.GetListAsync(p => p.TopicId == topic.Id);

View file

@ -147,14 +147,14 @@ public class IntranetAppService : PlatformAppService, IIntranetAppService
private async Task<List<MealDto>> GetMealsAsync() private async Task<List<MealDto>> GetMealsAsync()
{ {
// Bu haftanın baÅŸlangıç ve bitiÅŸ tarihlerini hesapla // Bu haftanın başlangıç ve bitiş tarihlerini hesapla
var today = DateTime.Now.Date; var today = DateTime.Now.Date;
var dayOfWeek = (int)today.DayOfWeek; var dayOfWeek = (int)today.DayOfWeek;
// Pazartesi'yi haftanın başı olarak kabul ediyoruz (ISO 8601) // Pazartesi'yi haftanın başı olarak kabul ediyoruz (ISO 8601)
var weekStart = today.AddDays(-(dayOfWeek == 0 ? 6 : dayOfWeek - 1)); var weekStart = today.AddDays(-(dayOfWeek == 0 ? 6 : dayOfWeek - 1));
var weekEnd = weekStart.AddDays(6); var weekEnd = weekStart.AddDays(6);
// Sadece bu haftanın yemeklerini getir // Sadece bu haftanın yemeklerini getir
var meals = await _mealRepository.GetListAsync(m => var meals = await _mealRepository.GetListAsync(m =>
m.Date >= weekStart && m.Date <= weekEnd); m.Date >= weekStart && m.Date <= weekEnd);
@ -192,7 +192,7 @@ public class IntranetAppService : PlatformAppService, IIntranetAppService
{ {
var dto = ObjectMapper.Map<ShuttleRoute, ShuttleRouteDto>(shuttleRoute); var dto = ObjectMapper.Map<ShuttleRoute, ShuttleRouteDto>(shuttleRoute);
// Route string'ini array'e çevir (pipe ile ayrılmış) // Route string'ini array'e çevir (pipe ile ayrılmış)
if (!string.IsNullOrEmpty(shuttleRoute.Route)) if (!string.IsNullOrEmpty(shuttleRoute.Route))
{ {
dto.Route = shuttleRoute.Route dto.Route = shuttleRoute.Route
@ -219,14 +219,14 @@ public class IntranetAppService : PlatformAppService, IIntranetAppService
var announcementDtos = new List<AnnouncementDto>(); var announcementDtos = new List<AnnouncementDto>();
// Tüm departmanları bir kez çek (performans için) // Tüm departmanları bir kez çek (performans için)
var allDepartments = await _departmentRepository.GetListAsync(); var allDepartments = await _departmentRepository.GetListAsync();
foreach (var announcement in announcements) foreach (var announcement in announcements)
{ {
var dto = ObjectMapper.Map<Announcement, AnnouncementDto>(announcement); var dto = ObjectMapper.Map<Announcement, AnnouncementDto>(announcement);
// Departments string'ini array'e çevir (pipe ile ayrılmış ID'ler) // Departments string'ini array'e çevir (pipe ile ayrılmış ID'ler)
if (!string.IsNullOrEmpty(announcement.Departments)) if (!string.IsNullOrEmpty(announcement.Departments))
{ {
var departmentIds = announcement.Departments var departmentIds = announcement.Departments
@ -234,7 +234,7 @@ public class IntranetAppService : PlatformAppService, IIntranetAppService
.Select(d => d.Trim()) .Select(d => d.Trim())
.ToArray(); .ToArray();
// ID'leri Department Name'lere çevir // ID'leri Department Name'lere çevir
var departmentNames = new List<string>(); var departmentNames = new List<string>();
foreach (var deptId in departmentIds) foreach (var deptId in departmentIds)
{ {
@ -268,28 +268,28 @@ public class IntranetAppService : PlatformAppService, IIntranetAppService
var today = DateTime.Today; var today = DateTime.Today;
var oneMonthAgo = today.AddMonths(-1); var oneMonthAgo = today.AddMonths(-1);
// Son 1 ay içerisindeki kayıtlar // Son 1 ay içerisindeki kayıtlar
var lastMonthExpenses = queryable var lastMonthExpenses = queryable
.Where(a => a.RequestDate >= oneMonthAgo && a.RequestDate <= today); .Where(a => a.RequestDate >= oneMonthAgo && a.RequestDate <= today);
// Son 1 aydaki toplam talep miktarı // Son 1 aydaki toplam talep miktarı
var totalRequested = lastMonthExpenses.Sum(a => a.Amount); var totalRequested = lastMonthExpenses.Sum(a => a.Amount);
// Son 1 aydaki onaylanan harcamaların toplamı // Son 1 aydaki onaylanan harcamaların toplamı
var totalApproved = lastMonthExpenses var totalApproved = lastMonthExpenses
.Where(a => a.Status == "approved") .Where(a => a.Status == "approved")
.Sum(a => a.Amount); .Sum(a => a.Amount);
// Son 5 kayıt // Son 5 kayıt
var last5Expenses = queryable var last5Expenses = queryable
.OrderByDescending(a => a.RequestDate) .OrderByDescending(a => a.RequestDate)
.Take(5) .Take(5)
.ToList(); .ToList();
// Map iÅŸlemleri // Map işlemleri
var last5Dtos = ObjectMapper.Map<List<Expense>, List<ExpenseDto>>(last5Expenses); var last5Dtos = ObjectMapper.Map<List<Expense>, List<ExpenseDto>>(last5Expenses);
// Dönüş DTO'su // Dönüş DTO'su
return new ExpensesDto return new ExpensesDto
{ {
TotalRequested = totalRequested, TotalRequested = totalRequested,

View file

@ -52,7 +52,7 @@ public class ListFormImportAppService : PlatformAppService, IImportAppService
if (string.IsNullOrWhiteSpace(file.FileName)) if (string.IsNullOrWhiteSpace(file.FileName))
{ {
throw new UserFriendlyException("Geçersiz dosya adı."); throw new UserFriendlyException("Geçersiz dosya adı.");
} }
// Uygunsuz karakterleri temizle // Uygunsuz karakterleri temizle
@ -77,7 +77,7 @@ public class ListFormImportAppService : PlatformAppService, IImportAppService
} }
catch (Exception ex) catch (Exception ex)
{ {
// Upload baÅŸarısız olursa status'ı failed yap // Upload başarısız olursa status'ı failed yap
session.Status = "failed"; session.Status = "failed";
Logger.LogError(ex, "File upload failed for session {SessionId}, blob: {BlobName}", session.Id, blobName); Logger.LogError(ex, "File upload failed for session {SessionId}, blob: {BlobName}", session.Id, blobName);
} }

View file

@ -170,7 +170,7 @@ public class ListFormWizardAppService(
var langTextEn = await repoLangText.FirstOrDefaultAsync(a => a.ResourceName == res && a.Key == langKey.Key && a.CultureName == cultureNameDefault) var langTextEn = await repoLangText.FirstOrDefaultAsync(a => a.ResourceName == res && a.Key == langKey.Key && a.CultureName == cultureNameDefault)
?? await repoLangText.InsertAsync(new LanguageText { ResourceName = res, Key = langKey.Key, CultureName = cultureNameDefault, Value = textEn }); ?? await repoLangText.InsertAsync(new LanguageText { ResourceName = res, Key = langKey.Key, CultureName = cultureNameDefault, Value = textEn });
var langTextTitleTr = await repoLangText.FirstOrDefaultAsync(a => a.ResourceName == res && a.Key == langKey.Key && a.CultureName == LanguageCodes.Tr) var langTextTitleTr = await repoLangText.FirstOrDefaultAsync(a => a.ResourceName == res && a.Key == langKey.Key && a.CultureName == LanguageCodes.Tr)
?? await repoLangText.InsertAsync(new LanguageText { ResourceName = res, Key = langKey.Key, CultureName = LanguageCodes.Tr, Value = textTr }); ?? await repoLangText.InsertAsync(new LanguageText { ResourceName = res, Key = langKey.Key, CultureName = LanguageCodes.En, Value = textTr });
return langKey; return langKey;
} }

View file

@ -13,8 +13,8 @@ namespace Erp.Platform.PermissionManagement;
public class PlatformGetPermissionListResultDto : GetPermissionListResultDto public class PlatformGetPermissionListResultDto : GetPermissionListResultDto
{ {
// ABP’nin orijinalinde PermissionGroupDto kullanıyor, // ABP’nin orijinalinde PermissionGroupDto kullanıyor,
// biz de kendi alt tipimizi yaratıyoruz. // biz de kendi alt tipimizi yaratıyoruz.
public new List<PlatformPermissionGroupDto> Groups { get; set; } = new(); public new List<PlatformPermissionGroupDto> Groups { get; set; } = new();
} }

View file

@ -81,8 +81,8 @@ public class PublicAppService : PlatformAppService
bodyBuilder.AppendLine($"E-Posta: {input.Email}"); bodyBuilder.AppendLine($"E-Posta: {input.Email}");
bodyBuilder.AppendLine($"Telefon: {input.PhoneNumber}"); bodyBuilder.AppendLine($"Telefon: {input.PhoneNumber}");
bodyBuilder.AppendLine($"Adres: {input.Address}"); bodyBuilder.AppendLine($"Adres: {input.Address}");
bodyBuilder.AppendLine($"Şube Sayısı: {input.NumberOfBranches}"); bodyBuilder.AppendLine($"Şube Sayısı: {input.NumberOfBranches}");
bodyBuilder.AppendLine($"Kullanıcı Sayısı: {input.NumberOfUsers}"); bodyBuilder.AppendLine($"Kullanıcı Sayısı: {input.NumberOfUsers}");
bodyBuilder.AppendLine($"Mesaj: {input.Message}"); bodyBuilder.AppendLine($"Mesaj: {input.Message}");
var SenderName = await _settingProvider.GetOrNullAsync(SeedConsts.AbpSettings.Mailing.Default.DefaultFromDisplayName); var SenderName = await _settingProvider.GetOrNullAsync(SeedConsts.AbpSettings.Mailing.Default.DefaultFromDisplayName);
@ -116,17 +116,17 @@ public class PublicAppService : PlatformAppService
postQuery = postQuery.Where(p => p.CategoryId == input.CategoryId.Value); postQuery = postQuery.Where(p => p.CategoryId == input.CategoryId.Value);
} }
// Toplam adet (sayfalama öncesi) // Toplam adet (sayfalama öncesi)
var totalCount = await AsyncExecuter.CountAsync(postQuery); var totalCount = await AsyncExecuter.CountAsync(postQuery);
// Sayfalama + sıralama // Sayfalama + sıralama
var pagedPosts = await AsyncExecuter.ToListAsync( var pagedPosts = await AsyncExecuter.ToListAsync(
postQuery postQuery
.OrderByDescending(p => p.CreationTime) .OrderByDescending(p => p.CreationTime)
.PageBy(input) .PageBy(input)
); );
// Sayfadaki kategori kayıtları // Sayfadaki kategori kayıtları
var categoryIds = pagedPosts.Select(x => x.CategoryId).Distinct().ToList(); var categoryIds = pagedPosts.Select(x => x.CategoryId).Distinct().ToList();
var pageCategories = await _categoryRepository.GetListAsync(x => categoryIds.Contains(x.Id)); var pageCategories = await _categoryRepository.GetListAsync(x => categoryIds.Contains(x.Id));
var categoryDict = pageCategories.ToDictionary(x => x.Id, x => x); var categoryDict = pageCategories.ToDictionary(x => x.Id, x => x);

View file

@ -42,7 +42,7 @@ public class ReportAppService : PlatformAppService, IReportAppService
public async Task<PagedResultDto<ReportTemplateDto>> GetTemplatesAsync(GetReportTemplatesInput input) public async Task<PagedResultDto<ReportTemplateDto>> GetTemplatesAsync(GetReportTemplatesInput input)
{ {
// IQueryable baÅŸlat - Parameters'ı include et // IQueryable başlat - Parameters'ı include et
var query = await _reportTemplateRepository.GetQueryableAsync(); var query = await _reportTemplateRepository.GetQueryableAsync();
query = query.Include(x => x.Parameters); query = query.Include(x => x.Parameters);
@ -60,10 +60,10 @@ public class ReportAppService : PlatformAppService, IReportAppService
query = query.Where(x => x.CategoryId == input.CategoryId); query = query.Where(x => x.CategoryId == input.CategoryId);
} }
// Toplam kayıt sayısı // Toplam kayıt sayısı
var totalCount = await AsyncExecuter.CountAsync(query); var totalCount = await AsyncExecuter.CountAsync(query);
// Sıralama (ABP default olarak sorting null ise Id'ye göre sıralar) // Sıralama (ABP default olarak sorting null ise Id'ye göre sıralar)
query = query.OrderBy(input.Sorting ?? nameof(ReportTemplate.Name)); query = query.OrderBy(input.Sorting ?? nameof(ReportTemplate.Name));
// Sayfalama // Sayfalama
@ -73,7 +73,7 @@ public class ReportAppService : PlatformAppService, IReportAppService
.Take(input.MaxResultCount) .Take(input.MaxResultCount)
); );
// DTO dönüşümü // DTO dönüşümü
var templateDtos = templates.Select(MapToReportTemplateDto).ToList(); var templateDtos = templates.Select(MapToReportTemplateDto).ToList();
return new PagedResultDto<ReportTemplateDto>( return new PagedResultDto<ReportTemplateDto>(
@ -134,7 +134,7 @@ public class ReportAppService : PlatformAppService, IReportAppService
public async Task<ReportTemplateDto> UpdateTemplateAsync(Guid id, UpdateReportTemplateDto input) public async Task<ReportTemplateDto> UpdateTemplateAsync(Guid id, UpdateReportTemplateDto input)
{ {
// 1) Şablonu getir ve alanlarını güncelle // 1) Şablonu getir ve alanlarınıncelle
var template = await _reportTemplateRepository.GetAsync(id); var template = await _reportTemplateRepository.GetAsync(id);
template.Name = input.Name; template.Name = input.Name;
@ -143,27 +143,27 @@ public class ReportAppService : PlatformAppService, IReportAppService
template.CategoryId = input.CategoryId; template.CategoryId = input.CategoryId;
template.Tags = JsonSerializer.Serialize(input.Tags ?? []); template.Tags = JsonSerializer.Serialize(input.Tags ?? []);
// Şablonu hemen persist et (audit alanları için de iyi olur) // Şablonu hemen persist et (audit alanlarıin de iyi olur)
await _reportTemplateRepository.UpdateAsync(template, autoSave: true); await _reportTemplateRepository.UpdateAsync(template, autoSave: true);
// 2) Parametrelerde upsert + artıklarını sil // 2) Parametrelerde upsert + artıklarını sil
var existingParams = await _reportParameterRepository.GetListAsync(p => p.TemplateId == id); var existingParams = await _reportParameterRepository.GetListAsync(p => p.TemplateId == id);
var existingById = existingParams.ToDictionary(p => p.Id, p => p); var existingById = existingParams.ToDictionary(p => p.Id, p => p);
var inputParams = input.Parameters ?? new List<UpdateReportParameterDto>(); var inputParams = input.Parameters ?? new List<UpdateReportParameterDto>();
// Id'si olan/olmayan diye ayır // Id'si olan/olmayan diye ayır
var withId = inputParams.Where(x => x.Id.HasValue).ToList(); var withId = inputParams.Where(x => x.Id.HasValue).ToList();
var withoutId = inputParams.Where(x => !x.Id.HasValue).ToList(); var withoutId = inputParams.Where(x => !x.Id.HasValue).ToList();
// 2.a) Id'si olanları güncelle (varsa) ya da ekle (yoksa) // 2.a) Id'si olanlarıncelle (varsa) ya da ekle (yoksa)
foreach (var dto in withId) foreach (var dto in withId)
{ {
var pid = dto.Id!.Value; var pid = dto.Id!.Value;
if (existingById.TryGetValue(pid, out var entity)) if (existingById.TryGetValue(pid, out var entity))
{ {
// Güncelle // Güncelle
entity.Name = dto.Name; entity.Name = dto.Name;
entity.Placeholder = dto.Placeholder; entity.Placeholder = dto.Placeholder;
entity.Type = dto.Type; entity.Type = dto.Type;
@ -172,11 +172,11 @@ public class ReportAppService : PlatformAppService, IReportAppService
entity.Description = dto.Description; entity.Description = dto.Description;
await _reportParameterRepository.UpdateAsync(entity); await _reportParameterRepository.UpdateAsync(entity);
existingById.Remove(pid); // kalanlar silinecek listesinde kalmasın existingById.Remove(pid); // kalanlar silinecek listesinde kalmasın
} }
else else
{ {
// DB'de yoksa yeni ekle (istemci Id göndermiÅŸ olabilir) // DB'de yoksa yeni ekle (istemci Id göndermiş olabilir)
var newParam = new ReportParameter( var newParam = new ReportParameter(
pid, pid,
template.Id, template.Id,
@ -217,10 +217,10 @@ public class ReportAppService : PlatformAppService, IReportAppService
await _reportParameterRepository.DeleteAsync(leftover); await _reportParameterRepository.DeleteAsync(leftover);
} }
// 3) DeÄŸiÅŸiklikleri tek seferde kaydet // 3) Değişiklikleri tek seferde kaydet
await CurrentUnitOfWork.SaveChangesAsync(); await CurrentUnitOfWork.SaveChangesAsync();
// 4) Güncel DTO'yu dön // 4) Güncel DTO'yu dön
return await GetTemplateAsync(template.Id); return await GetTemplateAsync(template.Id);
} }
@ -234,7 +234,7 @@ public class ReportAppService : PlatformAppService, IReportAppService
{ {
var query = await _generatedReportRepository.GetQueryableAsync(); var query = await _generatedReportRepository.GetQueryableAsync();
// Okuma senaryosu: tracking gerekmiyor + Template'ı eager load edelim // Okuma senaryosu: tracking gerekmiyor + Template'ı eager load edelim
query = query.AsNoTracking() query = query.AsNoTracking()
.Include(x => x.ReportTemplate); .Include(x => x.ReportTemplate);
@ -252,12 +252,12 @@ public class ReportAppService : PlatformAppService, IReportAppService
query = query.Where(x => x.TemplateId == input.TemplateId.Value); query = query.Where(x => x.TemplateId == input.TemplateId.Value);
} }
// Toplam kayıt // Toplam kayıt
var totalCount = await AsyncExecuter.CountAsync(query); var totalCount = await AsyncExecuter.CountAsync(query);
// Sıralama // Sıralama
if (!string.IsNullOrWhiteSpace(input.Sorting)) if (!string.IsNullOrWhiteSpace(input.Sorting))
query = query.OrderBy(input.Sorting); // ör. "generatedAt DESC" veya "templateName" query = query.OrderBy(input.Sorting); // ör. "generatedAt DESC" veya "templateName"
else else
query = query.OrderByDescending(x => x.CreationTime); query = query.OrderByDescending(x => x.CreationTime);
@ -287,7 +287,7 @@ public class ReportAppService : PlatformAppService, IReportAppService
throw new ArgumentException("Template not found"); throw new ArgumentException("Template not found");
} }
// HTML içeriÄŸindeki parametreleri deÄŸiÅŸtir // HTML içeriğindeki parametreleri değiştir
var generatedContent = template.HtmlContent; var generatedContent = template.HtmlContent;
foreach (var param in input.Parameters) foreach (var param in input.Parameters)
{ {

View file

@ -210,7 +210,7 @@ public class HostDataSeeder : IDataSeedContributor, ITransientDependency
{ {
var dbCtx = await _countryRepository.GetDbContextAsync(); var dbCtx = await _countryRepository.GetDbContextAsync();
// DB’de mevcut kodları set olarak al // DB’de mevcut kodları set olarak al
var existingCodes = (await dbCtx.Set<CountryGroup>() var existingCodes = (await dbCtx.Set<CountryGroup>()
.Select(c => c.Name) .Select(c => c.Name)
.ToListAsync()) .ToListAsync())
@ -221,14 +221,14 @@ public class HostDataSeeder : IDataSeedContributor, ITransientDependency
using var fs = File.OpenRead(Path.Combine("Seeds", "CountryGroups.json")); using var fs = File.OpenRead(Path.Combine("Seeds", "CountryGroups.json"));
var buffer = new List<CountryGroup>(capacity: 1000); var buffer = new List<CountryGroup>(capacity: 1000);
var seenCodes = new HashSet<string>(); // JSON içindeki duplicate’leri yakalamak için var seenCodes = new HashSet<string>(); // JSON içindeki duplicate’leri yakalamak için
await foreach (var item in JsonSerializer.DeserializeAsyncEnumerable<CountryGroupDto>(fs, options)) await foreach (var item in JsonSerializer.DeserializeAsyncEnumerable<CountryGroupDto>(fs, options))
{ {
if (item == null) continue; if (item == null) continue;
if (string.IsNullOrWhiteSpace(item.Name)) continue; // boÅŸ kodları atla if (string.IsNullOrWhiteSpace(item.Name)) continue; // boş kodları atla
// hem DB’de hem JSON içinde duplicate engelle // hem DB’de hem JSON içinde duplicate engelle
if (!seenCodes.Add(item.Name) || existingCodes.Contains(item.Name)) if (!seenCodes.Add(item.Name) || existingCodes.Contains(item.Name))
continue; continue;
@ -263,7 +263,7 @@ public class HostDataSeeder : IDataSeedContributor, ITransientDependency
{ {
var dbCtx = await _countryRepository.GetDbContextAsync(); var dbCtx = await _countryRepository.GetDbContextAsync();
// DB’de mevcut kodları set olarak al // DB’de mevcut kodları set olarak al
var existingCodes = (await dbCtx.Set<Country>() var existingCodes = (await dbCtx.Set<Country>()
.Select(c => c.Code) .Select(c => c.Code)
.ToListAsync()) .ToListAsync())
@ -274,14 +274,14 @@ public class HostDataSeeder : IDataSeedContributor, ITransientDependency
using var fs = File.OpenRead(Path.Combine("Seeds", "Countries.json")); using var fs = File.OpenRead(Path.Combine("Seeds", "Countries.json"));
var buffer = new List<Country>(capacity: 1000); var buffer = new List<Country>(capacity: 1000);
var seenCodes = new HashSet<string>(); // JSON içindeki duplicate’leri yakalamak için var seenCodes = new HashSet<string>(); // JSON içindeki duplicate’leri yakalamak için
await foreach (var item in JsonSerializer.DeserializeAsyncEnumerable<CountryDto>(fs, options)) await foreach (var item in JsonSerializer.DeserializeAsyncEnumerable<CountryDto>(fs, options))
{ {
if (item == null) continue; if (item == null) continue;
if (string.IsNullOrWhiteSpace(item.Code)) continue; // boÅŸ kodları atla if (string.IsNullOrWhiteSpace(item.Code)) continue; // boş kodları atla
// hem DB’de hem JSON içinde duplicate engelle // hem DB’de hem JSON içinde duplicate engelle
if (!seenCodes.Add(item.Code) || existingCodes.Contains(item.Code)) if (!seenCodes.Add(item.Code) || existingCodes.Contains(item.Code))
continue; continue;
@ -323,7 +323,7 @@ public class HostDataSeeder : IDataSeedContributor, ITransientDependency
{ {
var dbCtx = await _cityRepository.GetDbContextAsync(); var dbCtx = await _cityRepository.GetDbContextAsync();
// 1. Mevcut kayıtları çek (tek sorguda) // 1. Mevcut kayıtları çek (tek sorguda)
var existingCities = await dbCtx.Set<City>() var existingCities = await dbCtx.Set<City>()
.Select(d => new { d.Code }) .Select(d => new { d.Code })
.ToListAsync(); .ToListAsync();
@ -346,7 +346,7 @@ public class HostDataSeeder : IDataSeedContributor, ITransientDependency
if (item == null) continue; if (item == null) continue;
var key = $"{item.Country}.{item.Code}"; var key = $"{item.Country}.{item.Code}";
if (existingSet.Contains(key)) continue; // duplicate kontrolü if (existingSet.Contains(key)) continue; // duplicate kontrolü
buffer.Add(new City( buffer.Add(new City(
Guid.NewGuid(), Guid.NewGuid(),
@ -384,7 +384,7 @@ public class HostDataSeeder : IDataSeedContributor, ITransientDependency
{ {
var dbCtx = await _districtRepository.GetDbContextAsync(); var dbCtx = await _districtRepository.GetDbContextAsync();
// 1. Mevcut kayıtları çek (tek sorguda) // 1. Mevcut kayıtları çek (tek sorguda)
var existingDistricts = await dbCtx.Set<District>() var existingDistricts = await dbCtx.Set<District>()
.Select(d => new { d.Country, d.City, d.Name, d.Township, d.Street, d.ZipCode }) .Select(d => new { d.Country, d.City, d.Name, d.Township, d.Street, d.ZipCode })
.ToListAsync(); .ToListAsync();

View file

@ -9181,6 +9181,12 @@
"tr": "Sınıf Planlama", "tr": "Sınıf Planlama",
"en": "Class Planning" "en": "Class Planning"
}, },
{
"resourceName": "Platform",
"key": "App.SupplyChain.PaymentTerm",
"tr": "Ödeme Koşulları",
"en": "Payment Terms"
},
{ {
"resourceName": "Platform", "resourceName": "Platform",
"key": "App.SupplyChain.MaterialType", "key": "App.SupplyChain.MaterialType",
@ -9201,7 +9207,19 @@
}, },
{ {
"resourceName": "Platform", "resourceName": "Platform",
"key": "App.SupplyChain.Supplier", "key": "App.SupplyChain.SupplyType",
"tr": "Tedarikçi Tipleri",
"en": "Supply Types"
},
{
"resourceName": "Platform",
"key": "App.SupplyChain.SupplyCardType",
"tr": "Tedarikçi Kart Tipleri",
"en": "Supply Card Types"
},
{
"resourceName": "Platform",
"key": "App.SupplyChain.Supply",
"tr": "Tedarikçiler", "tr": "Tedarikçiler",
"en": "Suppliers" "en": "Suppliers"
}, },

View file

@ -3985,7 +3985,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
PermissionJson = DefaultFieldPermissionJson(AppCodes.Definitions.WorkHour), PermissionJson = DefaultFieldPermissionJson(AppCodes.Definitions.WorkHour),
PivotSettingsJson = DefaultPivotSettingsJson PivotSettingsJson = DefaultPivotSettingsJson
}, },
// Saat alanları // Saat alanları
new() { new() {
ListFormCode = listFormWorkHour.ListFormCode, ListFormCode = listFormWorkHour.ListFormCode,
CultureName = LanguageCodes.En, CultureName = LanguageCodes.En,
@ -4016,7 +4016,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
PivotSettingsJson = DefaultPivotSettingsJson, PivotSettingsJson = DefaultPivotSettingsJson,
EditorOptions = EditorOptionValues.TimeSpanOptions EditorOptions = EditorOptionValues.TimeSpanOptions
}, },
// Günlük kolonlar // Günlük kolonlar
new() new()
{ {
ListFormCode = listFormWorkHour.ListFormCode, ListFormCode = listFormWorkHour.ListFormCode,

View file

@ -523,7 +523,7 @@ public class ListFormSeeder_Coordinator : IDataSeedContributor, ITransientDepend
PivotSettingsJson = DefaultPivotSettingsJson PivotSettingsJson = DefaultPivotSettingsJson
}, },
// ÃÄŸle Arası // Öğle Arası
new() new()
{ {
ListFormCode = listFormSchedule.ListFormCode, ListFormCode = listFormSchedule.ListFormCode,
@ -570,7 +570,7 @@ public class ListFormSeeder_Coordinator : IDataSeedContributor, ITransientDepend
PivotSettingsJson = DefaultPivotSettingsJson PivotSettingsJson = DefaultPivotSettingsJson
}, },
// Günler // Günler
new() new()
{ {
ListFormCode = listFormSchedule.ListFormCode, ListFormCode = listFormSchedule.ListFormCode,
@ -1524,7 +1524,7 @@ public class ListFormSeeder_Coordinator : IDataSeedContributor, ITransientDepend
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key="Seviye",Name="Seviye" }, new () { Key="Seviye",Name="Seviye" },
new () { Key="Sınav EÄŸitimi",Name="Sınav EÄŸitimi" }, new () { Key="Sınav Eğitimi",Name="Sınav Eğitimi" },
}), }),
}), }),
ColumnCustomizationJson = DefaultColumnCustomizationJson, ColumnCustomizationJson = DefaultColumnCustomizationJson,
@ -1915,8 +1915,8 @@ public class ListFormSeeder_Coordinator : IDataSeedContributor, ITransientDepend
DisplayExpr = "name", DisplayExpr = "name",
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key="Ana",Name="Ana Öğretmen" }, new () { Key="Ana",Name="Ana Öğretmen" },
new () { Key="Ek",Name="Ek Öğretmen" }, new () { Key="Ek",Name="Ek Öğretmen" },
}), }),
}), }),
ColumnCustomizationJson = DefaultColumnCustomizationJson, ColumnCustomizationJson = DefaultColumnCustomizationJson,
@ -1939,8 +1939,8 @@ public class ListFormSeeder_Coordinator : IDataSeedContributor, ITransientDepend
DisplayExpr = "name", DisplayExpr = "name",
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key="Ana",Name="Ana Öğretmen" }, new () { Key="Ana",Name="Ana Öğretmen" },
new () { Key="Ek",Name="Ek Öğretmen" }, new () { Key="Ek",Name="Ek Öğretmen" },
}), }),
}), }),
ColumnCustomizationJson = DefaultColumnCustomizationJson, ColumnCustomizationJson = DefaultColumnCustomizationJson,
@ -1963,8 +1963,8 @@ public class ListFormSeeder_Coordinator : IDataSeedContributor, ITransientDepend
DisplayExpr = "name", DisplayExpr = "name",
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key="Ana",Name="Ana Öğretmen" }, new () { Key="Ana",Name="Ana Öğretmen" },
new () { Key="Ek",Name="Ek Öğretmen" }, new () { Key="Ek",Name="Ek Öğretmen" },
}), }),
}), }),
ColumnCustomizationJson = DefaultColumnCustomizationJson, ColumnCustomizationJson = DefaultColumnCustomizationJson,
@ -1987,8 +1987,8 @@ public class ListFormSeeder_Coordinator : IDataSeedContributor, ITransientDepend
DisplayExpr = "name", DisplayExpr = "name",
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key="Ana",Name="Ana Öğretmen" }, new () { Key="Ana",Name="Ana Öğretmen" },
new () { Key="Ek",Name="Ek Öğretmen" }, new () { Key="Ek",Name="Ek Öğretmen" },
}), }),
}), }),
ColumnCustomizationJson = DefaultColumnCustomizationJson, ColumnCustomizationJson = DefaultColumnCustomizationJson,
@ -2370,13 +2370,13 @@ public class ListFormSeeder_Coordinator : IDataSeedContributor, ITransientDepend
DisplayExpr = "name", DisplayExpr = "name",
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key= "multiple-choice", Name= "Çoktan Seçmeli" }, new () { Key= "multiple-choice", Name= "Çoktan Seçmeli" },
new () { Key= "fill-blank", Name= "BoÅŸluk Doldurma" }, new () { Key= "fill-blank", Name= "Boşluk Doldurma" },
new () { Key= "multiple-answer", Name= "Çok Yanıtlı"}, new () { Key= "multiple-answer", Name= "Çok Yanıtlı"},
new () { Key= "matching", Name= "EÅŸleÅŸtirme" }, new () { Key= "matching", Name= "Eşleştirme" },
new () { Key= "ordering", Name= "Sıralama" }, new () { Key= "ordering", Name= "Sıralama" },
new () { Key= "open-ended", Name= "Açık Uçlu" }, new () { Key= "open-ended", Name= "Açık Uçlu" },
new () { Key= "true-false", Name= "DoÄŸru-Yanlış" }, new () { Key= "true-false", Name= "Doğru-Yanlış" },
new () { Key= "calculation", Name="Hesaplama" } new () { Key= "calculation", Name="Hesaplama" }
}), }),
}), }),

View file

@ -986,20 +986,20 @@ public class ListFormSeeder_Hr : IDataSeedContributor, ITransientDependency
DisplayExpr = "name", DisplayExpr = "name",
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key= "⭐", Name= "⭐ Yıldız" }, new () { Key= "⭐", Name= "⭐ Yıldız" },
new () { Key= "🏆", Name= "🏆 Kupa" }, new () { Key= "🏆", Name= "🏆 Kupa" },
new () { Key= "🥇", Name= "🥇 Altın Madalya" }, new () { Key= "🥇", Name= "🥇 Altın Madalya" },
new () { Key= "🥈", Name= "🥈 Gümüş Madalya" }, new () { Key= "🥈", Name= "🥈 Gümüş Madalya" },
new () { Key= "🥉", Name= "🥉 Bronz Madalya" }, new () { Key= "🥉", Name= "🥉 Bronz Madalya" },
new () { Key= "👑", Name= "👑 Taç" }, new () { Key= "👑", Name= "👑 Taç" },
new () { Key= "💎", Name= "💎 Elmas" }, new () { Key= "💎", Name= "💎 Elmas" },
new () { Key= "💡", Name= "💡 Ampul" }, new () { Key= "💡", Name= "💡 Ampul" },
new () { Key= "🔥", Name= "🔥 AteÅŸ" }, new () { Key= "🔥", Name= "🔥 Ateş" },
new () { Key= "âš¡", Name= "âš¡ ŞimÅŸek" }, new () { Key= "âš¡", Name= "âš¡ Şimşek" },
new () { Key= "🎯", Name= "🎯 Hedef" }, new () { Key= "🎯", Name= "🎯 Hedef" },
new () { Key= "📈", Name= "📈 Grafik" }, new () { Key= "📈", Name= "📈 Grafik" },
new () { Key= "🚀", Name= "🚀 Roket" }, new () { Key= "🚀", Name= "🚀 Roket" },
new () { Key= "💪", Name= "💪 Güç" }, new () { Key= "💪", Name= "💪 Güç" },
new () { Key= "❤️", Name= "❤️ Kalp" } new () { Key= "❤️", Name= "❤️ Kalp" }
}), }),
}), }),
@ -3167,8 +3167,8 @@ public class ListFormSeeder_Hr : IDataSeedContributor, ITransientDependency
}) })
}, },
new() { new() {
Hint = "Ödeme & Kesinti", Hint = "Ödeme & Kesinti",
Text ="Ödeme & Kesinti", Text ="Ödeme & Kesinti",
UrlTarget="_blank", UrlTarget="_blank",
AuthName = AppCodes.Hr.Payroll + ".Update", AuthName = AppCodes.Hr.Payroll + ".Update",
Url="/admin/list/list-employees/@Id" Url="/admin/list/list-employees/@Id"
@ -3263,14 +3263,14 @@ public class ListFormSeeder_Hr : IDataSeedContributor, ITransientDependency
new () { Key= 2, Name= "02-Şubat" }, new () { Key= 2, Name= "02-Şubat" },
new () { Key= 3, Name= "03-Mart"}, new () { Key= 3, Name= "03-Mart"},
new () { Key= 4, Name= "04-Nisan" }, new () { Key= 4, Name= "04-Nisan" },
new () { Key= 5, Name= "05-Mayıs" }, new () { Key= 5, Name= "05-Mayıs" },
new () { Key= 6, Name= "06-Haziran" }, new () { Key= 6, Name= "06-Haziran" },
new () { Key= 7, Name= "07-Temmuz" }, new () { Key= 7, Name= "07-Temmuz" },
new () { Key= 8, Name= "08-AÄŸustos" }, new () { Key= 8, Name= "08-Ağustos" },
new () { Key= 9, Name= "09-Eylül" }, new () { Key= 9, Name= "09-Eylül" },
new () { Key=10, Name= "10-Ekim" }, new () { Key=10, Name= "10-Ekim" },
new () { Key=11, Name= "11-Kasım" }, new () { Key=11, Name= "11-Kasım" },
new () { Key=12, Name= "12-Aralık" }, new () { Key=12, Name= "12-Aralık" },
}), }),
}), }),
ValidationRuleJson = DefaultValidationRuleRequiredJson, ValidationRuleJson = DefaultValidationRuleRequiredJson,

View file

@ -612,28 +612,28 @@ public class ListFormSeeder_Intranet : IDataSeedContributor, ITransientDependenc
IsDeleted = false, IsDeleted = false,
LookupJson = JsonSerializer.Serialize(new LookupDto LookupJson = JsonSerializer.Serialize(new LookupDto
{ {
//TODO: Materials kısmında Query olarak getirmeli //TODO: Materials kısmında Query olarak getirmeli
DataSourceType = UiLookupDataSourceTypeEnum.StaticData, DataSourceType = UiLookupDataSourceTypeEnum.StaticData,
DisplayExpr = "name", DisplayExpr = "name",
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key="Mercimek Çorbası", Name="Mercimek Çorbası" }, new () { Key="Mercimek Çorbası", Name="Mercimek Çorbası" },
new () { Key="Tavuk Şinitzel", Name="Tavuk Şinitzel" }, new () { Key="Tavuk Şinitzel", Name="Tavuk Şinitzel" },
new () { Key="Bulgur Pilavı", Name="Bulgur Pilavı" }, new () { Key="Bulgur Pilavı", Name="Bulgur Pilavı" },
new () { Key="Salata", Name="Salata" }, new () { Key="Salata", Name="Salata" },
new () { Key="Meyve", Name="Meyve" }, new () { Key="Meyve", Name="Meyve" },
new () { Key="Domates Çorbası", Name="Domates Çorbası" }, new () { Key="Domates Çorbası", Name="Domates Çorbası" },
new () { Key="Etli Kuru Fasulye", Name="Etli Kuru Fasulye" }, new () { Key="Etli Kuru Fasulye", Name="Etli Kuru Fasulye" },
new () { Key="Pilav", Name="Pilav" }, new () { Key="Pilav", Name="Pilav" },
new () { Key="TurÅŸu", Name="TurÅŸu" }, new () { Key="Turşu", Name="Turşu" },
new () { Key="Komposto", Name="Komposto" }, new () { Key="Komposto", Name="Komposto" },
new () { Key="Tarator", Name="Tarator" }, new () { Key="Tarator", Name="Tarator" },
new () { Key="Köfte", Name="Köfte" }, new () { Key="Köfte", Name="Köfte" },
new () { Key="Patates Püresi", Name="Patates Püresi" }, new () { Key="Patates Püresi", Name="Patates Püresi" },
new () { Key="YoÄŸurtlu Kabak Salatası", Name="YoÄŸurtlu Kabak Salatası" }, new () { Key="Yoğurtlu Kabak Salatası", Name="Yoğurtlu Kabak Salatası" },
new () { Key="Fırında Levrek", Name="Fırında Levrek" }, new () { Key="Fırında Levrek", Name="Fırında Levrek" },
new () { Key="Kuskus", Name="Kuskus" }, new () { Key="Kuskus", Name="Kuskus" },
new () { Key="Roka Salatası", Name="Roka Salatası" } new () { Key="Roka Salatası", Name="Roka Salatası" }
}), }),
}), }),
ValidationRuleJson = DefaultValidationRuleRequiredJson, ValidationRuleJson = DefaultValidationRuleRequiredJson,
@ -1098,13 +1098,13 @@ public class ListFormSeeder_Intranet : IDataSeedContributor, ITransientDependenc
DisplayExpr = "name", DisplayExpr = "name",
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key= "Kadıköy İskele", Name= "Kadıköy İskele" }, new () { Key= "Kadıköy İskele", Name= "Kadıy İskele" },
new () { Key= "Bostancı", Name= "Bostancı" }, new () { Key= "Bostancı", Name= "Bostancı" },
new () { Key= "Acıbadem", Name="Acıbadem" }, new () { Key= "Acıbadem", Name="Acıbadem" },
new () { Key= "Kozyatağı", Name="Kozyatağı" }, new () { Key= "Kozyatağı", Name="Kozyatağı" },
new () { Key= "Ofis", Name="Ofis" }, new () { Key= "Ofis", Name="Ofis" },
new () { Key= "Üsküdar Meydanı", Name="Üsküdar Meydanı" }, new () { Key= "Üsküdar Meydanı", Name="Üsküdar Meydanı" },
new () { Key= "Kısıklı", Name="Kısıklı" }, new () { Key= "Kısıklı", Name="Kısıklı" },
new () { Key= "Bulgurlu", Name="Bulgurlu" }, new () { Key= "Bulgurlu", Name="Bulgurlu" },
new () { Key= "Ümraniye", Name="Ümraniye" }, new () { Key= "Ümraniye", Name="Ümraniye" },
}), }),

View file

@ -644,13 +644,13 @@ public class ListFormSeeder_Participant : IDataSeedContributor, ITransientDepend
DisplayExpr = "name", DisplayExpr = "name",
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key="KiÅŸisel",Name="KiÅŸisel" }, new () { Key="Kişisel",Name="Kişisel" },
new () { Key="Fiyat / Bütçe",Name="Fiyat / Bütçe" }, new () { Key="Fiyat / Bütçe",Name="Fiyat / Bütçe" },
new () { Key="Ürün / Hizmet",Name="Ürün / Hizmet" }, new () { Key="Ürün / Hizmet",Name="Ürün / Hizmet" },
new () { Key="Rekabet",Name="Rekabet" }, new () { Key="Rekabet",Name="Rekabet" },
new () { Key="Zamanlama",Name="Zamanlama" }, new () { Key="Zamanlama",Name="Zamanlama" },
new () { Key="Lokasyon",Name="Lokasyon" }, new () { Key="Lokasyon",Name="Lokasyon" },
new () { Key="İletiÅŸim",Name="İletiÅŸim" }, new () { Key="İletişim",Name="İletişim" },
}), }),
}), }),
ColumnCustomizationJson = DefaultColumnCustomizationJson, ColumnCustomizationJson = DefaultColumnCustomizationJson,

View file

@ -3908,8 +3908,8 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency
}, },
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",
}, },

View file

@ -512,13 +512,6 @@
"App.Coordinator.Tests" "App.Coordinator.Tests"
] ]
}, },
{
"key": "admin.supplychain.suppliers",
"path": "/admin/supplychain/suppliers",
"componentPath": "@/views/supplychain/components/SupplierCards",
"routeType": "protected",
"authority": null
},
{ {
"key": "admin.supplychain.requests", "key": "admin.supplychain.requests",
"path": "/admin/supplychain/requests", "path": "/admin/supplychain/requests",
@ -2392,19 +2385,49 @@
}, },
{ {
"ParentCode": "App.SupplyChain", "ParentCode": "App.SupplyChain",
"Code": "App.SupplyChain.Supplier", "Code": "App.SupplyChain.PaymentTerm",
"DisplayName": "App.SupplyChain.Supplier", "DisplayName": "App.SupplyChain.PaymentTerm",
"Order": 4, "Order": 4,
"Url": "/admin/supplychain/suppliers", "Url": "/admin/list/list-paymentterm",
"Icon": "FcDebt",
"RequiredPermissionName": "App.SupplyChain.PaymentTerm",
"IsDisabled": false
},
{
"ParentCode": "App.SupplyChain",
"Code": "App.SupplyChain.SupplyType",
"DisplayName": "App.SupplyChain.SupplyType",
"Order": 5,
"Url": "/admin/list/list-supplytype",
"Icon": "FcTreeStructure",
"RequiredPermissionName": "App.SupplyChain.SupplyType",
"IsDisabled": false
},
{
"ParentCode": "App.SupplyChain",
"Code": "App.SupplyChain.SupplyCardType",
"DisplayName": "App.SupplyChain.SupplyCardType",
"Order": 6,
"Url": "/admin/list/list-supplycardtype",
"Icon": "FcComboChart",
"RequiredPermissionName": "App.SupplyChain.SupplyCardType",
"IsDisabled": false
},
{
"ParentCode": "App.SupplyChain",
"Code": "App.SupplyChain.Supply",
"DisplayName": "App.SupplyChain.Supply",
"Order": 7,
"Url": "/admin/list/list-supply",
"Icon": "FcBusiness", "Icon": "FcBusiness",
"RequiredPermissionName": "App.SupplyChain.Supplier", "RequiredPermissionName": "App.SupplyChain.Supply",
"IsDisabled": false "IsDisabled": false
}, },
{ {
"ParentCode": "App.SupplyChain", "ParentCode": "App.SupplyChain",
"Code": "App.SupplyChain.Request", "Code": "App.SupplyChain.Request",
"DisplayName": "App.SupplyChain.Request", "DisplayName": "App.SupplyChain.Request",
"Order": 5, "Order": 8,
"Url": "/admin/supplychain/requests", "Url": "/admin/supplychain/requests",
"Icon": "FcServices", "Icon": "FcServices",
"RequiredPermissionName": "App.SupplyChain.Request", "RequiredPermissionName": "App.SupplyChain.Request",
@ -2414,7 +2437,7 @@
"ParentCode": "App.SupplyChain", "ParentCode": "App.SupplyChain",
"Code": "App.SupplyChain.Quotation", "Code": "App.SupplyChain.Quotation",
"DisplayName": "App.SupplyChain.Quotation", "DisplayName": "App.SupplyChain.Quotation",
"Order": 7, "Order": 9,
"Url": "/admin/supplychain/quotations", "Url": "/admin/supplychain/quotations",
"Icon": "FcSurvey", "Icon": "FcSurvey",
"RequiredPermissionName": "App.SupplyChain.Quotation", "RequiredPermissionName": "App.SupplyChain.Quotation",
@ -2424,7 +2447,7 @@
"ParentCode": "App.SupplyChain", "ParentCode": "App.SupplyChain",
"Code": "App.SupplyChain.Approval", "Code": "App.SupplyChain.Approval",
"DisplayName": "App.SupplyChain.Approval", "DisplayName": "App.SupplyChain.Approval",
"Order": 8, "Order": 10,
"Url": "/admin/supplychain/approvals", "Url": "/admin/supplychain/approvals",
"Icon": "FcApproval", "Icon": "FcApproval",
"RequiredPermissionName": "App.SupplyChain.Approval", "RequiredPermissionName": "App.SupplyChain.Approval",
@ -2434,7 +2457,7 @@
"ParentCode": "App.SupplyChain", "ParentCode": "App.SupplyChain",
"Code": "App.SupplyChain.Order", "Code": "App.SupplyChain.Order",
"DisplayName": "App.SupplyChain.Order", "DisplayName": "App.SupplyChain.Order",
"Order": 9, "Order": 11,
"Url": "/admin/supplychain/orders", "Url": "/admin/supplychain/orders",
"Icon": "FcShop", "Icon": "FcShop",
"RequiredPermissionName": "App.SupplyChain.Order", "RequiredPermissionName": "App.SupplyChain.Order",
@ -2444,7 +2467,7 @@
"ParentCode": "App.SupplyChain", "ParentCode": "App.SupplyChain",
"Code": "App.SupplyChain.Delivery", "Code": "App.SupplyChain.Delivery",
"DisplayName": "App.SupplyChain.Delivery", "DisplayName": "App.SupplyChain.Delivery",
"Order": 10, "Order": 12,
"Url": "/admin/supplychain/delivery", "Url": "/admin/supplychain/delivery",
"Icon": "FcShipped", "Icon": "FcShipped",
"RequiredPermissionName": "App.SupplyChain.Delivery", "RequiredPermissionName": "App.SupplyChain.Delivery",

View file

@ -5431,6 +5431,195 @@
"MultiTenancySide": 2, "MultiTenancySide": 2,
"MenuGroup": "Kurs" "MenuGroup": "Kurs"
}, },
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.PaymentTerm",
"ParentName": null,
"DisplayName": "App.SupplyChain.PaymentTerm",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.PaymentTerm.Create",
"ParentName": "App.SupplyChain.PaymentTerm",
"DisplayName": "Create",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.PaymentTerm.Update",
"ParentName": "App.SupplyChain.PaymentTerm",
"DisplayName": "Update",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.PaymentTerm.Delete",
"ParentName": "App.SupplyChain.PaymentTerm",
"DisplayName": "Delete",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.PaymentTerm.Export",
"ParentName": "App.SupplyChain.PaymentTerm",
"DisplayName": "Export",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.PaymentTerm.Import",
"ParentName": "App.SupplyChain.PaymentTerm",
"DisplayName": "Import",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.PaymentTerm.Activity",
"ParentName": "App.SupplyChain.PaymentTerm",
"DisplayName": "Activity",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.SupplyType",
"ParentName": null,
"DisplayName": "App.SupplyChain.SupplyType",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.SupplyType.Create",
"ParentName": "App.SupplyChain.SupplyType",
"DisplayName": "Create",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.SupplyType.Update",
"ParentName": "App.SupplyChain.SupplyType",
"DisplayName": "Update",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.SupplyType.Delete",
"ParentName": "App.SupplyChain.SupplyType",
"DisplayName": "Delete",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.SupplyType.Export",
"ParentName": "App.SupplyChain.SupplyType",
"DisplayName": "Export",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.SupplyType.Import",
"ParentName": "App.SupplyChain.SupplyType",
"DisplayName": "Import",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.SupplyType.Activity",
"ParentName": "App.SupplyChain.SupplyType",
"DisplayName": "Activity",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.SupplyCardType",
"ParentName": null,
"DisplayName": "App.SupplyChain.SupplyCardType",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.SupplyCardType.Create",
"ParentName": "App.SupplyChain.SupplyCardType",
"DisplayName": "Create",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.SupplyCardType.Update",
"ParentName": "App.SupplyChain.SupplyCardType",
"DisplayName": "Update",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.SupplyCardType.Delete",
"ParentName": "App.SupplyChain.SupplyCardType",
"DisplayName": "Delete",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.SupplyCardType.Export",
"ParentName": "App.SupplyChain.SupplyCardType",
"DisplayName": "Export",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.SupplyCardType.Import",
"ParentName": "App.SupplyChain.SupplyCardType",
"DisplayName": "Import",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.SupplyCardType.Activity",
"ParentName": "App.SupplyChain.SupplyCardType",
"DisplayName": "Activity",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{ {
"GroupName": "App.SupplyChain", "GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.MaterialType", "Name": "App.SupplyChain.MaterialType",
@ -5622,17 +5811,17 @@
}, },
{ {
"GroupName": "App.SupplyChain", "GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.Supplier", "Name": "App.SupplyChain.Supply",
"ParentName": null, "ParentName": null,
"DisplayName": "App.SupplyChain.Supplier", "DisplayName": "App.SupplyChain.Supply",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp"
}, },
{ {
"GroupName": "App.SupplyChain", "GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.Supplier.Create", "Name": "App.SupplyChain.Supply.Create",
"ParentName": "App.SupplyChain.Supplier", "ParentName": "App.SupplyChain.Supply",
"DisplayName": "Create", "DisplayName": "Create",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -5640,8 +5829,8 @@
}, },
{ {
"GroupName": "App.SupplyChain", "GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.Supplier.Update", "Name": "App.SupplyChain.Supply.Update",
"ParentName": "App.SupplyChain.Supplier", "ParentName": "App.SupplyChain.Supply",
"DisplayName": "Update", "DisplayName": "Update",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -5649,8 +5838,8 @@
}, },
{ {
"GroupName": "App.SupplyChain", "GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.Supplier.Delete", "Name": "App.SupplyChain.Supply.Delete",
"ParentName": "App.SupplyChain.Supplier", "ParentName": "App.SupplyChain.Supply",
"DisplayName": "Delete", "DisplayName": "Delete",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -5658,8 +5847,8 @@
}, },
{ {
"GroupName": "App.SupplyChain", "GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.Supplier.Export", "Name": "App.SupplyChain.Supply.Export",
"ParentName": "App.SupplyChain.Supplier", "ParentName": "App.SupplyChain.Supply",
"DisplayName": "Export", "DisplayName": "Export",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -5667,8 +5856,8 @@
}, },
{ {
"GroupName": "App.SupplyChain", "GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.Supplier.Import", "Name": "App.SupplyChain.Supply.Import",
"ParentName": "App.SupplyChain.Supplier", "ParentName": "App.SupplyChain.Supply",
"DisplayName": "Import", "DisplayName": "Import",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -5676,8 +5865,8 @@
}, },
{ {
"GroupName": "App.SupplyChain", "GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.Supplier.Activity", "Name": "App.SupplyChain.Supply.Activity",
"ParentName": "App.SupplyChain.Supplier", "ParentName": "App.SupplyChain.Supply",
"DisplayName": "Activity", "DisplayName": "Activity",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -10474,4 +10663,4 @@
"MenuGroup": "Erp" "MenuGroup": "Erp"
} }
] ]
} }

View file

@ -518,10 +518,10 @@ public static class PlatformConsts
public const string MaterialType = "list-materialtype"; public const string MaterialType = "list-materialtype";
public const string MaterialGroup = "list-materialgroup"; public const string MaterialGroup = "list-materialgroup";
public const string Material = "list-material"; public const string Material = "list-material";
// public const string Supplier = "list-supplier"; public const string Supply = "list-supply";
// public const string PurchaseOrder = "list-purchaseorder"; public const string PaymentTerm = "list-paymentterm";
// public const string Inventory = "list-inventory"; public const string SupplyType = "list-supplytype";
public const string SupplyCardType = "list-supplycardtype";
} }
} }

View file

@ -3,7 +3,7 @@
public class StatDto public class StatDto
{ {
public string Icon { get; set; } public string Icon { get; set; }
public string Value { get; set; } // number/string farkını normalize ettik public string Value { get; set; } // number/string farkını normalize ettik
public string LabelKey { get; set; } public string LabelKey { get; set; }
public bool? UseCounter { get; set; } public bool? UseCounter { get; set; }
public int? CounterEnd { get; set; } public int? CounterEnd { get; set; }

View file

@ -7,7 +7,7 @@ public static class TableNameResolver
{ {
public const string ViewPrefix = "V_"; public const string ViewPrefix = "V_";
// Tüm tabloların hangi prefix tipine ve menü grubuna ait olduÄŸunu belirten harita // Tüm tabloların hangi prefix tipine ve menü grubuna ait olduğunu belirten harita
private static readonly Dictionary<string, (Func<MenuPrefix, TableNameEnum, string> Method, MenuPrefix PrefixGroup)> private static readonly Dictionary<string, (Func<MenuPrefix, TableNameEnum, string> Method, MenuPrefix PrefixGroup)>
_map = new(StringComparer.OrdinalIgnoreCase) _map = new(StringComparer.OrdinalIgnoreCase)
{ {
@ -185,10 +185,10 @@ public static class TableNameResolver
public static string GetFullTableName(string tableName) public static string GetFullTableName(string tableName)
{ {
if (!Enum.TryParse<TableNameEnum>(tableName, out var tableEnum)) if (!Enum.TryParse<TableNameEnum>(tableName, out var tableEnum))
throw new ArgumentException($"'{tableName}' geçerli bir TableNameEnum deÄŸil."); throw new ArgumentException($"'{tableName}' geçerli bir TableNameEnum değil.");
if (!_map.TryGetValue(tableName, out var entry)) if (!_map.TryGetValue(tableName, out var entry))
throw new KeyNotFoundException($"'{tableName}' için tablo eÅŸlemesi bulunamadı."); throw new KeyNotFoundException($"'{tableName}' için tablo eşlemesi bulunamadı.");
return entry.Method(entry.PrefixGroup, tableEnum); return entry.Method(entry.PrefixGroup, tableEnum);
} }
@ -196,10 +196,10 @@ public static class TableNameResolver
public static string GetFullViewName(string tableName) public static string GetFullViewName(string tableName)
{ {
if (!Enum.TryParse<TableNameEnum>(tableName, out var tableEnum)) if (!Enum.TryParse<TableNameEnum>(tableName, out var tableEnum))
throw new ArgumentException($"'{tableName}' geçerli bir TableNameEnum deÄŸil."); throw new ArgumentException($"'{tableName}' geçerli bir TableNameEnum değil.");
if (!_map.TryGetValue(tableName, out var entry)) if (!_map.TryGetValue(tableName, out var entry))
throw new KeyNotFoundException($"'{tableName}' için tablo eÅŸlemesi bulunamadı."); throw new KeyNotFoundException($"'{tableName}' için tablo eşlemesi bulunamadı.");
return ViewPrefix + entry.Method(entry.PrefixGroup, tableEnum); return ViewPrefix + entry.Method(entry.PrefixGroup, tableEnum);
} }

View file

@ -20,7 +20,7 @@ public class BlobManager : DomainService
private IBlobContainer GetContainer(string containerName) private IBlobContainer GetContainer(string containerName)
{ {
// containerName bir sınıfa baÄŸlı deÄŸil, sadece string // containerName bir sınıfa bağlı değil, sadece string
return _blobContainerFactory.Create(containerName); return _blobContainerFactory.Create(containerName);
} }

View file

@ -65,11 +65,11 @@ public class BranchSeedManager : DomainService
if (items == null) if (items == null)
{ {
result.Success = false; result.Success = false;
result.Message = "BranchData.json okunamadı veya format hatalı."; result.Message = "BranchData.json okunamadı veya format hatalı.";
return result; return result;
} }
// Yardımcı fonksiyon: kolay log ekleme // Yardımcı fonksiyon: kolay log ekleme
BranchSeedDetail CreateLog(string entity) => BranchSeedDetail CreateLog(string entity) =>
new() new()
{ {
@ -381,7 +381,7 @@ public class BranchSeedManager : DomainService
} }
result.Success = true; result.Success = true;
result.Message = $"Seed iÅŸlemi baÅŸarıyla tamamlandı. Toplam {result.TotalInsertedCount} kayıt eklendi."; result.Message = $"Seed işlemi başarıyla tamamlandı. Toplam {result.TotalInsertedCount} kayıt eklendi.";
return result; return result;
} }
catch (Exception ex) catch (Exception ex)

View file

@ -493,6 +493,10 @@ public static class SeedConsts
public const string MaterialType = Default + ".MaterialType"; public const string MaterialType = Default + ".MaterialType";
public const string MaterialGroup = Default + ".MaterialGroup"; public const string MaterialGroup = Default + ".MaterialGroup";
public const string Material = Default + ".Material"; public const string Material = Default + ".Material";
public const string Supply = Default + ".Supply";
public const string PaymentTerm = Default + ".PaymentTerm";
public const string SupplyType = Default + ".SupplyType";
public const string SupplyCardType = Default + ".SupplyCardType";
} }
public static class Accounting public static class Accounting

View file

@ -12,7 +12,7 @@ public class Level : FullAuditedEntity<Guid>, IMultiTenant
public Guid ClassTypeId { get; set; } // SinifTipiID (FK) public Guid ClassTypeId { get; set; } // SinifTipiID (FK)
public string LevelType { get; set; } // SeviyeTipi public string LevelType { get; set; } // SeviyeTipi
public string Name { get; set; } // SeviyeKodu public string Name { get; set; } // SeviyeKodu
public int Order { get; set; } // Sıra Numarası public int Order { get; set; } // Sıra Numarası
public int LessonCount { get; set; } // DersSayisi public int LessonCount { get; set; } // DersSayisi
public string Status { get; set; } // Durum public string Status { get; set; } // Durum
public int? LessonDuration { get; set; } // DersSuresi public int? LessonDuration { get; set; } // DersSuresi

View file

@ -20,7 +20,7 @@ public class Schedule : FullAuditedEntity<Guid>, IMultiTenant
public int LessonBreakMinute { get; set; } public int LessonBreakMinute { get; set; }
public int LessonCount { get; set; } public int LessonCount { get; set; }
// ÃÄŸle arası // Öğle arası
public string LunchTime { get; set; } public string LunchTime { get; set; }
public int? LunchMinute { get; set; } public int? LunchMinute { get; set; }
public bool? IncludeLunch { get; set; } public bool? IncludeLunch { get; set; }

View file

@ -8,7 +8,7 @@ public class Currency : FullAuditedEntity<Guid>
public string Code { get; set; } // TRY, USD, EUR public string Code { get; set; } // TRY, USD, EUR
public string Symbol { get; set; } // ₺, $, etc. public string Symbol { get; set; } // ₺, $, etc.
public string Name { get; set; } // Turkish lira, US dollar, ... public string Name { get; set; } // Turkish lira, US dollar, ...
public decimal Rate { get; set; } // TRY başına deÄŸer public decimal Rate { get; set; } // TRY başına değer
public bool IsActive { get; set; } public bool IsActive { get; set; }
public DateTime? LastUpdated { get; set; } public DateTime? LastUpdated { get; set; }
} }

View file

@ -25,7 +25,7 @@ public class CustomEntity : FullAuditedEntity<Guid>, IMultiTenant
public CustomEntity() public CustomEntity()
{ {
Id = Guid.NewGuid(); // Burada eriÅŸim mümkün çünkü sınıfın içi Id = Guid.NewGuid(); // Burada erişim mümkün çünkü sınıfın içi
} }
} }
@ -45,7 +45,7 @@ public class CustomEntityField : FullAuditedEntity<Guid>
public CustomEntityField() public CustomEntityField()
{ {
Id = Guid.NewGuid(); // Burada eriÅŸim mümkün çünkü sınıfın içi Id = Guid.NewGuid(); // Burada erişim mümkün çünkü sınıfın içi
} }
} }

View file

@ -7,7 +7,7 @@ using Volo.Abp.MultiTenancy;
namespace Erp.Platform.Entities; namespace Erp.Platform.Entities;
/// <summary> /// <summary>
/// Tenant bazında dinamik olarak tanımlanmış AppService'lerin kod ve meta verilerini saklar /// Tenant bazında dinamik olarak tanımlanmış AppService'lerin kod ve meta verilerini saklar
/// </summary> /// </summary>
public class DynamicService : FullAuditedEntity<Guid>, IMultiTenant public class DynamicService : FullAuditedEntity<Guid>, IMultiTenant
{ {
@ -17,26 +17,26 @@ public class DynamicService : FullAuditedEntity<Guid>, IMultiTenant
public Guid? TenantId { get; set; } public Guid? TenantId { get; set; }
/// <summary> /// <summary>
/// AppService'in benzersiz adı (örn: "DynamicCustomerService") /// AppService'in benzersiz adırn: "DynamicCustomerService")
/// </summary> /// </summary>
[Required] [Required]
[StringLength(256)] [StringLength(256)]
public string Name { get; set; } public string Name { get; set; }
/// <summary> /// <summary>
/// AppService'in kullanıcı dostu baÅŸlığı /// AppService'in kullanıcı dostu başlığı
/// </summary> /// </summary>
[StringLength(512)] [StringLength(512)]
public string? DisplayName { get; set; } public string? DisplayName { get; set; }
/// <summary> /// <summary>
/// AppService açıklaması /// AppService açıklaması
/// </summary> /// </summary>
[StringLength(2000)] [StringLength(2000)]
public string? Description { get; set; } public string? Description { get; set; }
/// <summary> /// <summary>
/// Tam C# sınıf kodu (using'ler ve namespace dahil) /// Tam C# sınıf kodu (using'ler ve namespace dahil)
/// </summary> /// </summary>
[Required] [Required]
public string Code { get; set; } public string Code { get; set; }
@ -52,34 +52,34 @@ public class DynamicService : FullAuditedEntity<Guid>, IMultiTenant
public CompilationStatus CompilationStatus { get; set; } public CompilationStatus CompilationStatus { get; set; }
/// <summary> /// <summary>
/// Son derleme hatası (varsa) /// Son derleme hatası (varsa)
/// </summary> /// </summary>
public string? LastCompilationError { get; set; } public string? LastCompilationError { get; set; }
/// <summary> /// <summary>
/// Son baÅŸarılı derleme zamanı /// Son başarılı derleme zamanı
/// </summary> /// </summary>
public DateTime? LastSuccessfulCompilation { get; set; } public DateTime? LastSuccessfulCompilation { get; set; }
/// <summary> /// <summary>
/// Kod versiyonu (her güncelleme ile artan numara) /// Kod versiyonu (her güncelleme ile artan numara)
/// </summary> /// </summary>
public int Version { get; set; } public int Version { get; set; }
/// <summary> /// <summary>
/// Kod hash'i (deÄŸiÅŸiklik kontrolü için) /// Kod hash'i (değişiklik kontrolü için)
/// </summary> /// </summary>
[StringLength(64)] [StringLength(64)]
public string? CodeHash { get; set; } public string? CodeHash { get; set; }
/// <summary> /// <summary>
/// AppService'in kullandığı ana entity türü (opsiyonel) /// AppService'in kullandığı ana entity türü (opsiyonel)
/// </summary> /// </summary>
[StringLength(256)] [StringLength(256)]
public string? PrimaryEntityType { get; set; } public string? PrimaryEntityType { get; set; }
/// <summary> /// <summary>
/// Swagger'da görünecek controller adı /// Swagger'da görünecek controller adı
/// </summary> /// </summary>
[StringLength(256)] [StringLength(256)]
public string? ControllerName { get; set; } public string? ControllerName { get; set; }
@ -104,7 +104,7 @@ public class DynamicService : FullAuditedEntity<Guid>, IMultiTenant
} }
/// <summary> /// <summary>
/// Kodu günceller ve versiyonu artırır /// Kodu günceller ve versiyonu artırır
/// </summary> /// </summary>
public void UpdateCode(string newCode) public void UpdateCode(string newCode)
{ {
@ -121,7 +121,7 @@ public class DynamicService : FullAuditedEntity<Guid>, IMultiTenant
} }
/// <summary> /// <summary>
/// Derleme baÅŸarısını iÅŸaretler /// Derleme başarısınıaretler
/// </summary> /// </summary>
public void MarkCompilationSuccess() public void MarkCompilationSuccess()
{ {
@ -131,7 +131,7 @@ public class DynamicService : FullAuditedEntity<Guid>, IMultiTenant
} }
/// <summary> /// <summary>
/// Derleme hatasını iÅŸaretler /// Derleme hatasınıaretler
/// </summary> /// </summary>
public void MarkCompilationError(string error) public void MarkCompilationError(string error)
{ {
@ -153,22 +153,22 @@ public class DynamicService : FullAuditedEntity<Guid>, IMultiTenant
public enum CompilationStatus public enum CompilationStatus
{ {
/// <summary> /// <summary>
/// Henüz derlenmedi /// Henüz derlenmedi
/// </summary> /// </summary>
Pending = 0, Pending = 0,
/// <summary> /// <summary>
/// Derleme baÅŸarılı /// Derleme başarılı
/// </summary> /// </summary>
Success = 1, Success = 1,
/// <summary> /// <summary>
/// Derleme baÅŸarısız /// Derleme başarısız
/// </summary> /// </summary>
Failed = 2, Failed = 2,
/// <summary> /// <summary>
/// Derleme iÅŸlemi devam ediyor /// Derleme işlemi devam ediyor
/// </summary> /// </summary>
InProgress = 3 InProgress = 3
} }

View file

@ -11,7 +11,7 @@ public class QuestionPool : FullAuditedEntity<Guid>, IMultiTenant
public string Name { get; set; } public string Name { get; set; }
public string Description { get; set; } public string Description { get; set; }
public string Tags { get; set; } // İstersen JSON veya ayrı tablo da olabilir public string Tags { get; set; } // İstersen JSON veya ayrı tablo da olabilir
public ICollection<Question> Questions { get; set; } = new List<Question>(); public ICollection<Question> Questions { get; set; } = new List<Question>();

View file

@ -8,10 +8,10 @@ public class QuestionTag : FullAuditedEntity<Guid>, IMultiTenant
{ {
public Guid? TenantId; public Guid? TenantId;
public string Name { get; set; } // Etiket adı (ör: Grammar) public string Name { get; set; } // Etiket adır: Grammar)
public string Description { get; set; } // Açıklama public string Description { get; set; } // Açıklama
public string Color { get; set; } // Renk kodu (ör: #3B82F6) public string Color { get; set; } // Renk kodu (ör: #3B82F6)
public int UsageCount { get; set; } // Kullanım sayısı public int UsageCount { get; set; } // Kullanım sayısı
Guid? IMultiTenant.TenantId => TenantId; Guid? IMultiTenant.TenantId => TenantId;
} }

View file

@ -5,16 +5,16 @@ using Volo.Abp.MultiTenancy;
namespace Erp.Platform.Entities namespace Erp.Platform.Entities
{ {
// İnsan Kaynakları Fazla Mesai // İnsan Kaynakları Fazla Mesai
public class Overtime : FullAuditedEntity<Guid>, IMultiTenant public class Overtime : FullAuditedEntity<Guid>, IMultiTenant
{ {
public Guid? TenantId { get; set; } public Guid? TenantId { get; set; }
// İliÅŸkisel alanlar // İlişkisel alanlar
public Guid EmployeeId { get; set; } public Guid EmployeeId { get; set; }
public Employee Employee { get; set; } public Employee Employee { get; set; }
// Fazla mesai detayları // Fazla mesai detayları
public DateTime Date { get; set; } public DateTime Date { get; set; }
public DateTime StartTime { get; set; } public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; } public DateTime EndTime { get; set; }

View file

@ -12,14 +12,14 @@ public class Announcement : FullAuditedEntity<Guid>, IMultiTenant
public string Excerpt { get; set; } public string Excerpt { get; set; }
public string Content { get; set; } public string Content { get; set; }
public string ImageUrl { get; set; } public string ImageUrl { get; set; }
public string Category { get; set; } // ÃrneÄŸin: "Genel", "Etkinlik", "Duyuru" public string Category { get; set; } // Örneğin: "Genel", "Etkinlik", "Duyuru"
public Guid? EmployeeId { get; set; } // Employee referansı metin olarak saklanır public Guid? EmployeeId { get; set; } // Employee referansı metin olarak saklanır
public Employee Employee { get; set; } public Employee Employee { get; set; }
public DateTime PublishDate { get; set; } public DateTime PublishDate { get; set; }
public DateTime? ExpiryDate { get; set; } public DateTime? ExpiryDate { get; set; }
public bool IsPinned { get; set; } public bool IsPinned { get; set; }
public int ViewCount { get; set; } public int ViewCount { get; set; }
public string Departments { get; set; } // ["Yazılım GeliÅŸtirme"] public string Departments { get; set; } // ["Yazılım Geliştirme"]
public string Attachments { get; set; } // [{name,url,size}] public string Attachments { get; set; } // [{name,url,size}]
} }

View file

@ -17,8 +17,8 @@ public class Reservation : FullAuditedEntity<Guid>, IMultiTenant
public DateTime StartDate { get; set; } public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; } public DateTime EndDate { get; set; }
public string Purpose { get; set; } //Amaç public string Purpose { get; set; } //Amaç
public int? Participants { get; set; } //Katılımcı Sayısı public int? Participants { get; set; } //Katılımcı Sayısı
public string Notes { get; set; } public string Notes { get; set; }
public string Status { get; set; } // pending | approved | rejected | completed public string Status { get; set; } // pending | approved | rejected | completed
} }

View file

@ -14,7 +14,7 @@ public class Partner : FullAuditedEntity<Guid>, IMultiTenant
public string Code { get; set; } public string Code { get; set; }
public string Name { get; set; } public string Name { get; set; }
public PartnerType PartyType { get; set; } public string PartyType { get; set; }
public Guid? SectorId { get; set; } public Guid? SectorId { get; set; }
public Sector? Sector { get; set; } public Sector? Sector { get; set; }
@ -44,7 +44,7 @@ public class Partner : FullAuditedEntity<Guid>, IMultiTenant
public decimal CreditLimit { get; set; } public decimal CreditLimit { get; set; }
public DateTime? LastOrderDate { get; set; } public DateTime? LastOrderDate { get; set; }
public PartnerStatus Status { get; set; } public string Status { get; set; }
public ICollection<PartnerBank> Banks { get; set; } public ICollection<PartnerBank> Banks { get; set; }
public ICollection<PartnerCertificate> Certificates { get; set; } public ICollection<PartnerCertificate> Certificates { get; set; }
@ -63,8 +63,8 @@ public class Partner : FullAuditedEntity<Guid>, IMultiTenant
public string? TeamCode { get; set; } // Organization Unit Code public string? TeamCode { get; set; } // Organization Unit Code
public decimal TotalRevenue { get; set; } // Toplam Gelir public decimal TotalRevenue { get; set; } // Toplam Gelir
public decimal AverageOrderValue { get; set; } // Ortalama SipariÅŸ DeÄŸeri public decimal AverageOrderValue { get; set; } // Ortalama Sipariş Değeri
public decimal LifetimeValue { get; set; } // Müşteri Ãmrü DeÄŸeri public decimal LifetimeValue { get; set; } // Müşteri Ömrü Değeri
//Supplier ile ilgili bilgiler //Supplier ile ilgili bilgiler
public Guid? SupplierTypeId { get; set; } public Guid? SupplierTypeId { get; set; }

View file

@ -11,12 +11,12 @@ public class PartnerBank : FullAuditedEntity<Guid>, IMultiTenant
public Partner Partner { get; set; } public Partner Partner { get; set; }
public string BankName { get; set; } public string BankName { get; set; }
public string AccountNumber { get; set; } //Hesap Numarası public string AccountNumber { get; set; } //Hesap Numarası
public string Iban { get; set; } //IBAN public string Iban { get; set; } //IBAN
public string SwiftCode { get; set; } //BIC public string SwiftCode { get; set; } //BIC
public string AccountOwner { get; set; } //Hesap Sahibi public string AccountOwner { get; set; } //Hesap Sahibi
public string BranchName { get; set; } //Şube Adı public string BranchName { get; set; } //Şube Adı
public string AccountType { get; set; } //Hesap Türü public string AccountType { get; set; } //Hesap Türü
public Guid? CurrencyId { get; set; } public Guid? CurrencyId { get; set; }
public Currency? Currency { get; set; } public Currency? Currency { get; set; }

View file

@ -1,18 +0,0 @@
using System.Runtime.Serialization;
namespace Erp.Platform.Entities;
public enum PartnerStatus
{
[EnumMember(Value = "Prospect")]
Prospect, // Aday
[EnumMember(Value = "Active")]
Active, // Aktif
[EnumMember(Value = "Inactive")]
Inactive, // Pasif
[EnumMember(Value = "Blocked")]
Blocked, // EngellenmiÅŸ
}

View file

@ -1,12 +0,0 @@
using System.Runtime.Serialization;
namespace Erp.Platform.Entities;
public enum PartnerType
{
[EnumMember(Value = "Customer")]
Customer, // Müşteri
[EnumMember(Value = "Supplier")]
Supplier, // Tedarikçi
}

View file

@ -9,6 +9,9 @@ public class PaymentTerm : FullAuditedEntity<Guid>, IMultiTenant
public Guid? TenantId { get; set; } public Guid? TenantId { get; set; }
public string Name { get; set; } public string Name { get; set; }
public string Description { get; set; }
public bool IsActive { get; set; }
} }

View file

@ -5,7 +5,7 @@ using Volo.Abp.Domain.Values;
namespace Erp.Platform.Queries; namespace Erp.Platform.Queries;
/// <summary> /// <summary>
/// Break tanımı /// Break tanımı
/// </summary> /// </summary>
public class Break : ValueObject public class Break : ValueObject
{ {
@ -17,7 +17,7 @@ public class Break : ValueObject
[JsonPropertyName("EndValue")] [JsonPropertyName("EndValue")]
public int EndValue { get; private set; } public int EndValue { get; private set; }
public Break() { } // JSON için gerekli public Break() { } // JSON için gerekli
protected override IEnumerable<object> GetAtomicValues() protected override IEnumerable<object> GetAtomicValues()
{ {

View file

@ -18,7 +18,7 @@ public class BreakStyle : ValueObject
[JsonPropertyName("Width")] [JsonPropertyName("Width")]
public int Width { get; private set; } public int Width { get; private set; }
// JSON deserialization için parametresiz public ctor bırak // JSON deserialization için parametresiz public ctor bırak
public BreakStyle() { } public BreakStyle() { }
protected override IEnumerable<object> GetAtomicValues() protected override IEnumerable<object> GetAtomicValues()

View file

@ -5,7 +5,7 @@ using Volo.Abp.Domain.Values;
namespace Erp.Platform.Queries; namespace Erp.Platform.Queries;
/// <summary> /// <summary>
/// Grid tanımı /// Grid tanımı
/// </summary> /// </summary>
public class ChartAxisGrid : ValueObject public class ChartAxisGrid : ValueObject
{ {
@ -21,7 +21,7 @@ public class ChartAxisGrid : ValueObject
[JsonPropertyName("Width")] [JsonPropertyName("Width")]
public int Width { get; private set; } public int Width { get; private set; }
public ChartAxisGrid() { } // JSON için gerekli public ChartAxisGrid() { } // JSON için gerekli
protected override IEnumerable<object> GetAtomicValues() protected override IEnumerable<object> GetAtomicValues()
{ {

View file

@ -21,7 +21,7 @@ public class ChartBorder : ValueObject
[JsonInclude] [JsonInclude]
public int Width { get; private set; } = 1; public int Width { get; private set; } = 1;
public ChartBorder() { } // JSON deserialize için parametresiz public ctor public ChartBorder() { } // JSON deserialize için parametresiz public ctor
protected override IEnumerable<object> GetAtomicValues() protected override IEnumerable<object> GetAtomicValues()
{ {

View file

@ -9,7 +9,7 @@ public class ChartPanes : ValueObject
public int Height { get; private set; } = 250; public int Height { get; private set; } = 250;
public string Name { get; private set; } public string Name { get; private set; }
private ChartPanes() { } // EF Core / JSON için private ChartPanes() { } // EF Core / JSON için
public ChartPanes(string name, int height, string backgroundColor) public ChartPanes(string name, int height, string backgroundColor)
{ {

View file

@ -39,7 +39,7 @@ public class DefaultValueHelper : ITransientDependency
.Replace(PlatformConsts.DefaultValues.Month, now.Month.ToString(CultureInfo.InvariantCulture)) .Replace(PlatformConsts.DefaultValues.Month, now.Month.ToString(CultureInfo.InvariantCulture))
.Replace(PlatformConsts.DefaultValues.Year, now.Year.ToString(CultureInfo.InvariantCulture)); .Replace(PlatformConsts.DefaultValues.Year, now.Year.ToString(CultureInfo.InvariantCulture));
// 🔹 TenantId özel durumu: NULL => IS NULL, varsa => = 'GUID' // 🔹 TenantId özel durumu: NULL => IS NULL, varsa => = 'GUID'
if (_currentTenant?.Id.HasValue == true) if (_currentTenant?.Id.HasValue == true)
{ {
result = result.Replace( result = result.Replace(

View file

@ -145,7 +145,7 @@ public class DynamicEntityManager : IDynamicEntityManager
using var command = connection.CreateCommand(); using var command = connection.CreateCommand();
command.CommandText = query; command.CommandText = query;
// ⭐️⭐️⭐️ Kritik satır: // ⭐️⭐️⭐️ Kritik satır:
command.Transaction = dbContext.Database.CurrentTransaction?.GetDbTransaction(); command.Transaction = dbContext.Database.CurrentTransaction?.GetDbTransaction();
using var reader = await command.ExecuteReaderAsync(); using var reader = await command.ExecuteReaderAsync();

View file

@ -203,15 +203,15 @@ public class PlatformDbContext :
public DbSet<PaymentTerm> PaymentTerms { get; set; } public DbSet<PaymentTerm> PaymentTerms { get; set; }
public DbSet<Partner> Partners { get; set; } public DbSet<Partner> Partners { get; set; }
public DbSet<PartnerBank> PartnerBanks { get; set; }
public DbSet<PartnerCertificate> PartnerCertificates { get; set; }
public DbSet<PartnerContact> PartnerContacts { get; set; }
public DbSet<SupplyType> SupplyTypes { get; set; } public DbSet<SupplyType> SupplyTypes { get; set; }
public DbSet<SupplyCardType> SupplyCardTypes { get; set; } public DbSet<SupplyCardType> SupplyCardTypes { get; set; }
public DbSet<CustomerType> CustomerTypes { get; set; } public DbSet<CustomerType> CustomerTypes { get; set; }
public DbSet<CustomerSegment> CustomerSegments { get; set; } public DbSet<CustomerSegment> CustomerSegments { get; set; }
public DbSet<PartnerBank> PartnerBanks { get; set; }
public DbSet<PartnerCertificate> PartnerCertificates { get; set; }
public DbSet<PartnerContact> PartnerContacts { get; set; }
#endregion #endregion
#region Accounting #region Accounting
@ -2283,6 +2283,8 @@ public class PlatformDbContext :
b.ConfigureByConvention(); b.ConfigureByConvention();
b.Property(x => x.Name).IsRequired().HasMaxLength(100); b.Property(x => x.Name).IsRequired().HasMaxLength(100);
b.Property(x => x.Description).IsRequired().HasMaxLength(500);
b.Property(x => x.IsActive).HasDefaultValue(true);
}); });
builder.Entity<SupplyType>(b => builder.Entity<SupplyType>(b =>
@ -2332,8 +2334,12 @@ public class PlatformDbContext :
b.Property(p => p.Code).IsRequired().HasMaxLength(64); b.Property(p => p.Code).IsRequired().HasMaxLength(64);
b.Property(p => p.Name).IsRequired().HasMaxLength(256); b.Property(p => p.Name).IsRequired().HasMaxLength(256);
b.Property(p => p.PartyType).IsRequired().HasMaxLength(32);
b.Property(p => p.SectorId).IsRequired();
b.Property(p => p.TaxNumber).IsRequired(); b.Property(p => p.TaxNumber).IsRequired();
b.Property(p => p.TaxOffice).HasMaxLength(128); b.Property(p => p.TaxOffice).HasMaxLength(128);
b.Property(p => p.CurrencyId).IsRequired();
b.Property(p => p.PaymentTermId).IsRequired();
b.Property(p => p.Country).IsRequired().HasMaxLength(64); b.Property(p => p.Country).IsRequired().HasMaxLength(64);
b.Property(p => p.City).IsRequired().HasMaxLength(64); b.Property(p => p.City).IsRequired().HasMaxLength(64);
b.Property(p => p.District).HasMaxLength(64); b.Property(p => p.District).HasMaxLength(64);
@ -2341,13 +2347,13 @@ public class PlatformDbContext :
b.Property(p => p.Address1).HasMaxLength(256); b.Property(p => p.Address1).HasMaxLength(256);
b.Property(p => p.Address2).HasMaxLength(256); b.Property(p => p.Address2).HasMaxLength(256);
b.Property(p => p.PostalCode).HasMaxLength(16); b.Property(p => p.PostalCode).HasMaxLength(16);
b.Property(p => p.PhoneNumber).HasMaxLength(20); b.Property(p => p.PhoneNumber).IsRequired().HasMaxLength(20);
b.Property(p => p.MobileNumber).HasMaxLength(20); b.Property(p => p.MobileNumber).HasMaxLength(20);
b.Property(p => p.FaxNumber).HasMaxLength(20); b.Property(p => p.FaxNumber).HasMaxLength(20);
b.Property(p => p.Email).HasMaxLength(128); b.Property(p => p.Email).IsRequired().HasMaxLength(128);
b.Property(p => p.Website).HasMaxLength(128); b.Property(p => p.Website).HasMaxLength(128);
b.Property(p => p.Status).IsRequired();
b.Property(p => p.CreditLimit).HasPrecision(18, 2).HasDefaultValue(0); b.Property(p => p.CreditLimit).HasPrecision(18, 2).HasDefaultValue(0);
b.Property(p => p.Status).IsRequired().HasMaxLength(10);
//Supplier configuration //Supplier configuration
b.Property(x => x.CardNumber).HasMaxLength(64); b.Property(x => x.CardNumber).HasMaxLength(64);

View file

@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace Erp.Platform.Migrations namespace Erp.Platform.Migrations
{ {
[DbContext(typeof(PlatformDbContext))] [DbContext(typeof(PlatformDbContext))]
[Migration("20251111192837_Initial")] [Migration("20251112124138_Initial")]
partial class Initial partial class Initial
{ {
/// <inheritdoc /> /// <inheritdoc />
@ -6615,7 +6615,7 @@ namespace Erp.Platform.Migrations
.HasColumnType("decimal(18,2)") .HasColumnType("decimal(18,2)")
.HasDefaultValue(0m); .HasDefaultValue(0m);
b.Property<Guid?>("CurrencyId") b.Property<Guid>("CurrencyId")
.HasColumnType("uniqueidentifier"); .HasColumnType("uniqueidentifier");
b.Property<decimal>("CurrentBalance") b.Property<decimal>("CurrentBalance")
@ -6649,6 +6649,7 @@ namespace Erp.Platform.Migrations
.HasColumnType("nvarchar(64)"); .HasColumnType("nvarchar(64)");
b.Property<string>("Email") b.Property<string>("Email")
.IsRequired()
.HasMaxLength(128) .HasMaxLength(128)
.HasColumnType("nvarchar(128)"); .HasColumnType("nvarchar(128)");
@ -6691,16 +6692,19 @@ namespace Erp.Platform.Migrations
.HasMaxLength(256) .HasMaxLength(256)
.HasColumnType("nvarchar(256)"); .HasColumnType("nvarchar(256)");
b.Property<int>("PartyType") b.Property<string>("PartyType")
.HasColumnType("int"); .IsRequired()
.HasMaxLength(32)
.HasColumnType("nvarchar(32)");
b.Property<Guid?>("PaymentTermId") b.Property<Guid>("PaymentTermId")
.HasColumnType("uniqueidentifier"); .HasColumnType("uniqueidentifier");
b.Property<string>("PerformanceMetricsJson") b.Property<string>("PerformanceMetricsJson")
.HasColumnType("text"); .HasColumnType("text");
b.Property<string>("PhoneNumber") b.Property<string>("PhoneNumber")
.IsRequired()
.HasMaxLength(20) .HasMaxLength(20)
.HasColumnType("nvarchar(20)"); .HasColumnType("nvarchar(20)");
@ -6708,11 +6712,13 @@ namespace Erp.Platform.Migrations
.HasMaxLength(16) .HasMaxLength(16)
.HasColumnType("nvarchar(16)"); .HasColumnType("nvarchar(16)");
b.Property<Guid?>("SectorId") b.Property<Guid>("SectorId")
.HasColumnType("uniqueidentifier"); .HasColumnType("uniqueidentifier");
b.Property<int>("Status") b.Property<string>("Status")
.HasColumnType("int"); .IsRequired()
.HasMaxLength(10)
.HasColumnType("nvarchar(10)");
b.Property<string>("Street") b.Property<string>("Street")
.HasMaxLength(128) .HasMaxLength(128)
@ -7118,6 +7124,16 @@ namespace Erp.Platform.Migrations
.HasColumnType("datetime2") .HasColumnType("datetime2")
.HasColumnName("DeletionTime"); .HasColumnName("DeletionTime");
b.Property<string>("Description")
.IsRequired()
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property<bool>("IsActive")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(true);
b.Property<bool>("IsDeleted") b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
.HasColumnType("bit") .HasColumnType("bit")
@ -13194,7 +13210,9 @@ namespace Erp.Platform.Migrations
b.HasOne("Erp.Platform.Entities.Currency", "Currency") b.HasOne("Erp.Platform.Entities.Currency", "Currency")
.WithMany() .WithMany()
.HasForeignKey("CurrencyId"); .HasForeignKey("CurrencyId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Erp.Platform.Entities.CustomerSegment", "CustomerSegment") b.HasOne("Erp.Platform.Entities.CustomerSegment", "CustomerSegment")
.WithMany("Partners") .WithMany("Partners")
@ -13212,11 +13230,15 @@ namespace Erp.Platform.Migrations
b.HasOne("Erp.Platform.Entities.PaymentTerm", "PaymentTerm") b.HasOne("Erp.Platform.Entities.PaymentTerm", "PaymentTerm")
.WithMany() .WithMany()
.HasForeignKey("PaymentTermId"); .HasForeignKey("PaymentTermId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Erp.Platform.Entities.Sector", "Sector") b.HasOne("Erp.Platform.Entities.Sector", "Sector")
.WithMany() .WithMany()
.HasForeignKey("SectorId"); .HasForeignKey("SectorId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Erp.Platform.Entities.SupplyType", "SupplierType") b.HasOne("Erp.Platform.Entities.SupplyType", "SupplierType")
.WithMany("Partners") .WithMany("Partners")

View file

@ -2330,6 +2330,8 @@ namespace Erp.Platform.Migrations
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
Name = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false), Name = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false),
Description = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: false),
IsActive = table.Column<bool>(type: "bit", nullable: false, defaultValue: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false), CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true), LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
@ -4090,8 +4092,8 @@ namespace Erp.Platform.Migrations
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
Code = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false), Code = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
Name = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: false), Name = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: false),
PartyType = table.Column<int>(type: "int", nullable: false), PartyType = table.Column<string>(type: "nvarchar(32)", maxLength: 32, nullable: false),
SectorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), SectorId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TaxNumber = table.Column<long>(type: "bigint", nullable: false), TaxNumber = table.Column<long>(type: "bigint", nullable: false),
TaxOffice = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: true), TaxOffice = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: true),
Country = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false), Country = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
@ -4102,15 +4104,15 @@ namespace Erp.Platform.Migrations
Address2 = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: true), Address2 = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: true),
PostalCode = table.Column<string>(type: "nvarchar(16)", maxLength: 16, nullable: true), PostalCode = table.Column<string>(type: "nvarchar(16)", maxLength: 16, nullable: true),
MobileNumber = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true), MobileNumber = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true),
PhoneNumber = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true), PhoneNumber = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: false),
FaxNumber = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true), FaxNumber = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true),
Email = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: true), Email = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: false),
Website = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: true), Website = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: true),
CurrencyId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), CurrencyId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
PaymentTermId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), PaymentTermId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
CreditLimit = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: false, defaultValue: 0m), CreditLimit = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: false, defaultValue: 0m),
LastOrderDate = table.Column<DateTime>(type: "datetime2", nullable: true), LastOrderDate = table.Column<DateTime>(type: "datetime2", nullable: true),
Status = table.Column<int>(type: "int", nullable: false), Status = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: false),
CustomerTypeId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), CustomerTypeId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
CustomerSegmentId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), CustomerSegmentId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
AssignedEmployeeId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), AssignedEmployeeId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
@ -4154,17 +4156,20 @@ namespace Erp.Platform.Migrations
name: "FK_Adm_T_Partner_Sas_H_Currency_CurrencyId", name: "FK_Adm_T_Partner_Sas_H_Currency_CurrencyId",
column: x => x.CurrencyId, column: x => x.CurrencyId,
principalTable: "Sas_H_Currency", principalTable: "Sas_H_Currency",
principalColumn: "Id"); principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey( table.ForeignKey(
name: "FK_Adm_T_Partner_Sas_T_Sector_SectorId", name: "FK_Adm_T_Partner_Sas_T_Sector_SectorId",
column: x => x.SectorId, column: x => x.SectorId,
principalTable: "Sas_T_Sector", principalTable: "Sas_T_Sector",
principalColumn: "Id"); principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey( table.ForeignKey(
name: "FK_Adm_T_Partner_Scp_T_PaymentTerm_PaymentTermId", name: "FK_Adm_T_Partner_Scp_T_PaymentTerm_PaymentTermId",
column: x => x.PaymentTermId, column: x => x.PaymentTermId,
principalTable: "Scp_T_PaymentTerm", principalTable: "Scp_T_PaymentTerm",
principalColumn: "Id"); principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey( table.ForeignKey(
name: "FK_Adm_T_Partner_Scp_T_SupplyCardType_SupplyCardTypeId", name: "FK_Adm_T_Partner_Scp_T_SupplyCardType_SupplyCardTypeId",
column: x => x.SupplyCardTypeId, column: x => x.SupplyCardTypeId,

View file

@ -6612,7 +6612,7 @@ namespace Erp.Platform.Migrations
.HasColumnType("decimal(18,2)") .HasColumnType("decimal(18,2)")
.HasDefaultValue(0m); .HasDefaultValue(0m);
b.Property<Guid?>("CurrencyId") b.Property<Guid>("CurrencyId")
.HasColumnType("uniqueidentifier"); .HasColumnType("uniqueidentifier");
b.Property<decimal>("CurrentBalance") b.Property<decimal>("CurrentBalance")
@ -6646,6 +6646,7 @@ namespace Erp.Platform.Migrations
.HasColumnType("nvarchar(64)"); .HasColumnType("nvarchar(64)");
b.Property<string>("Email") b.Property<string>("Email")
.IsRequired()
.HasMaxLength(128) .HasMaxLength(128)
.HasColumnType("nvarchar(128)"); .HasColumnType("nvarchar(128)");
@ -6688,16 +6689,19 @@ namespace Erp.Platform.Migrations
.HasMaxLength(256) .HasMaxLength(256)
.HasColumnType("nvarchar(256)"); .HasColumnType("nvarchar(256)");
b.Property<int>("PartyType") b.Property<string>("PartyType")
.HasColumnType("int"); .IsRequired()
.HasMaxLength(32)
.HasColumnType("nvarchar(32)");
b.Property<Guid?>("PaymentTermId") b.Property<Guid>("PaymentTermId")
.HasColumnType("uniqueidentifier"); .HasColumnType("uniqueidentifier");
b.Property<string>("PerformanceMetricsJson") b.Property<string>("PerformanceMetricsJson")
.HasColumnType("text"); .HasColumnType("text");
b.Property<string>("PhoneNumber") b.Property<string>("PhoneNumber")
.IsRequired()
.HasMaxLength(20) .HasMaxLength(20)
.HasColumnType("nvarchar(20)"); .HasColumnType("nvarchar(20)");
@ -6705,11 +6709,13 @@ namespace Erp.Platform.Migrations
.HasMaxLength(16) .HasMaxLength(16)
.HasColumnType("nvarchar(16)"); .HasColumnType("nvarchar(16)");
b.Property<Guid?>("SectorId") b.Property<Guid>("SectorId")
.HasColumnType("uniqueidentifier"); .HasColumnType("uniqueidentifier");
b.Property<int>("Status") b.Property<string>("Status")
.HasColumnType("int"); .IsRequired()
.HasMaxLength(10)
.HasColumnType("nvarchar(10)");
b.Property<string>("Street") b.Property<string>("Street")
.HasMaxLength(128) .HasMaxLength(128)
@ -7115,6 +7121,16 @@ namespace Erp.Platform.Migrations
.HasColumnType("datetime2") .HasColumnType("datetime2")
.HasColumnName("DeletionTime"); .HasColumnName("DeletionTime");
b.Property<string>("Description")
.IsRequired()
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property<bool>("IsActive")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(true);
b.Property<bool>("IsDeleted") b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
.HasColumnType("bit") .HasColumnType("bit")
@ -13191,7 +13207,9 @@ namespace Erp.Platform.Migrations
b.HasOne("Erp.Platform.Entities.Currency", "Currency") b.HasOne("Erp.Platform.Entities.Currency", "Currency")
.WithMany() .WithMany()
.HasForeignKey("CurrencyId"); .HasForeignKey("CurrencyId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Erp.Platform.Entities.CustomerSegment", "CustomerSegment") b.HasOne("Erp.Platform.Entities.CustomerSegment", "CustomerSegment")
.WithMany("Partners") .WithMany("Partners")
@ -13209,11 +13227,15 @@ namespace Erp.Platform.Migrations
b.HasOne("Erp.Platform.Entities.PaymentTerm", "PaymentTerm") b.HasOne("Erp.Platform.Entities.PaymentTerm", "PaymentTerm")
.WithMany() .WithMany()
.HasForeignKey("PaymentTermId"); .HasForeignKey("PaymentTermId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Erp.Platform.Entities.Sector", "Sector") b.HasOne("Erp.Platform.Entities.Sector", "Sector")
.WithMany() .WithMany()
.HasForeignKey("SectorId"); .HasForeignKey("SectorId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Erp.Platform.Entities.SupplyType", "SupplierType") b.HasOne("Erp.Platform.Entities.SupplyType", "SupplierType")
.WithMany("Partners") .WithMany("Partners")

Some files were not shown because too many files have changed in this diff Show more