Kullanıcı tanımlamaları genişletildi ayrıca Intranet Hr taşındı
This commit is contained in:
parent
fbaedd08df
commit
b6797950b2
80 changed files with 13752 additions and 6457 deletions
|
|
@ -1168,7 +1168,7 @@ bir kez çalışır; açılış verisi çekme ve `refs` üzerinden ilk durumu ku
|
|||
`BackgroundWorker` kaydı (`Sas_H_BackgroundWorker`, ekran Saas › Background Workers ›
|
||||
Recurring Jobs) `WorkerType: 1` (MailQueueWorker) ise gövde bu modüldür
|
||||
(`api/modules/Sozsoft.MailQueue`). Diğer tipler: `2` SqlWorker (`BeforeSp`/`AfterSp`) · `3`
|
||||
NotificationWorker · `4` SessionCleanupWorker · `5` BackupWorker. `Scope`: `1` Host · `2` Tenant ·
|
||||
NotificationWorker · `4` SessionCleanupWorker · `5` BackupWorker · `6` ProbationReminderWorker. `Scope`: `1` Host · `2` Tenant ·
|
||||
`3` All (host + her kiracı) — kiracı tablosuna dokunan iş `Host` olamaz (`README.md` §14). Hazır
|
||||
işler `data/App.BackgroundWorkers.RecurringJobs.json` ile gelir.
|
||||
|
||||
|
|
@ -1256,6 +1256,7 @@ soneklerini alır.
|
|||
| **Definitions › AiBot** | `App.Definitions.AiBot` | `Sas_H_AiBot` | host | Yapay zekâ asistanı tanımı (`Name`, `ApiUrl`, `Tenants`); `/admin/ai` bu kayıtları kullanır. |
|
||||
| **Definitions › Global Search** | `App.Definitions.GlobalSearch` | `Sas_T_GlobalSearch` | tenant | Üretilen ekranın üst aramada çıkması için kayıt: `System`, `Group`, `Term`, `Weight`, `Url`. |
|
||||
| **Definitions › Contact Title** | `App.Definitions.ContactTitle` | `Sas_H_ContactTitle` | host | Ünvan/hitap lookup'ı (`Title`, `Abbreviation`). |
|
||||
| **Definitions › Termination Reasons** | `App.Definitions.TerminationReason` | `Sas_H_TerminationReason` | host | SGK işten çıkış kodları (`Code`, `Name`, `IsActive`); mevzuat kodu olduğu için bütün kiracılarda ortaktır. Seed `data/App.Definitions.TerminationReason.json` (06/07 mülga). Kullanıcının `TerminationReasonId` alanı `LookupQueryValues.TerminationReasonValues` ile buraya bağlanır. |
|
||||
| **Definitions › Currency** | `App.Definitions.Currency` | `Sas_H_Currency` | host | Para birimi + `Rate`. Tutar alanı olan ekranın kur lookup'ı ve `DbQuery` varsayılanı buradan beslenir. |
|
||||
| **Definitions › Country Group / Country / City / District** | `App.Definitions.CountryGroup` · `.Country` · `.City` · `.District` | `Sas_H_CountryGroup` · `Sas_H_Country` · `Sas_H_City` · `Sas_H_District` | host | Adres alanlarının hazır cascade zinciri (dört ayrı menü ve seed dosyası; `Order` sırası grup → ülke → il → ilçe). `Country` ayrıca `PhoneCode`, `PhoneNumberFormat`, `ZipRequired`, `StateRequired`, `TaxLabel` taşır — adres doğrulaması için kullan. |
|
||||
| **Public › Products / Payment Methods / Installment Options** | `App.Orders.Products` · `.PaymentMethods` · `.InstallmentOptions` | `Sas_H_Product` · `Sas_H_PaymentMethod` · `Sas_H_InstallmentOption` | host | Ürün, ödeme yöntemi (`Commission`), taksit — satış/abonelik ekranlarının ve public `/products` sayfasının kaynağı. |
|
||||
|
|
@ -1304,19 +1305,17 @@ ekranları ABP tablolarıdır, Licence/Dev Request host tablolarını okur.
|
|||
| **Bildirimler › Bildirimler** | `App.Notifications.Notification` | `Adm_T_Notification` | Hem kuyruk günlüğü hem elle gönderim ekranı: liste kural motorunun ürettiklerini de gösterir, ekleme formu alıcı × kanal açılımını kuyruğa yazar (`InsertServiceAddress = list-form-dynamic-api/notification-insert`; `dxTagBox` çoklu alıcı/kanal). Tip her zaman `Manuel`, güncelleme kapalı. Ayrı bir manuel gönderim tablosu yoktur. Ayrıntı: `README.md` §13.5.1. |
|
||||
| **Agenda** | `App.Agenda` | `Adm_T_Agenda` | **Takvim (Scheduler) düzeninin** referansı (`DefaultLayout: scheduler`): `StartDate`, `EndDate`, `AllDay`, `RecurrenceRule`, `RecurrenceException`. Tekrarlayan randevu isteği kod gerektirmez. |
|
||||
| **Settings** | `App.Setting` · `/admin/settings` | — | `SettingDefinition` kayıtlarından üretilen ayar ekranı; değerler burada girilir. |
|
||||
| **Intranet › Announcement** | `App.Intranet.Announcement` (alt formlar Like/Comment) | `Adm_T_Announcement` · `Adm_T_AnnouncementLike` · `Adm_T_AnnouncementComment` | Duyuru + beğeni + yorum: **ana kayıt / alt etkileşim** kalıbının hazır örneği. |
|
||||
| **Intranet › Survey** | `App.Intranet.Survey` (alt form Question → Option; Response → Answer) | `Adm_T_Survey` · `Adm_T_SurveyQuestion` · `Adm_T_SurveyQuestionOption` · `Adm_T_SurveyResponse` · `Adm_T_SurveyAnswer` | Anket motoru; soru–seçenek–yanıt zinciri **iki seviyeli alt form** ihtiyacının referansıdır. |
|
||||
| **Intranet › Social Post** | `App.Intranet.SocialPost` | `Adm_T_SocialPost` · `Adm_T_SocialComment` · `Adm_T_SocialLike` (+ `SocialPollOption`, `SocialMedia`, `SocialLocation`) | Kurum içi akış; `IsLiked`, `IsOwnPost` gibi hesaplanmış kolonların view içinde üretilmesine örnek. Alt formlar: `App.Intranet.SocialMedia`, `SocialComment`, `SocialLike` (`Id` → `SocialPostId`); anket seçenekleri (`App.Intranet.SocialPollOption`) medyaya bağlı olduğu için `SocialMedia` ekranının alt formudur (`Id` → `SocialMediaId`). |
|
||||
| **Intranet › Event Type / Category / Event** | `App.Intranet.Events.EventType` · `.EventCategory` · `.Event` | `Adm_T_EventType` · `Adm_T_EventCategory` · `Adm_T_Event` · `Adm_T_EventPhoto` · `Adm_T_EventLike` · `Adm_T_EventComment` | Etkinlik yönetimi; foto ve katılımcı sayacı olan kayıt kalıbı. `EventLike`/`EventComment` alt formdur, `EventPhoto` menüde yer almaz; yetkileri `App.Intranet.Events.Event` altındadır. `Adm_T_EventPhoto` tablosu `sql/object/Adm_T_EventPhoto.sql` ile oluşturulur. |
|
||||
| **Intranet › Documents** | `App.Intranet.Document` · `/admin/intranet-documents` | Dosya yöneticisi (`intranet` / `intranet\|_passive` klasörleri) | Kurum içi doküman paylaşımı — aktif/pasif klasör, yükleme, taşıma, toplu silme. Doküman listesi isteği yeni tablo gerektirmez. |
|
||||
| **Restrictions › Work Hour** | `App.Restrictions.WorkHour` | `Adm_T_WorkHour` | Gün bazlı çalışma saati (`Monday`…`Sunday`, `StartTime`, `EndTime`); kullanıcıya `AbpUsers.WorkHour` ile bağlanır. "Sadece mesai saatinde girilebilsin" burada çözülür. |
|
||||
| **Restrictions › IP Restrictions** | `App.Restrictions.IpRestrictions` | `Adm_T_IpRestriction` | `ResourceType` + `ResourceId` + `IP` — kullanıcı/rol bazlı IP kısıtı. |
|
||||
| **Identity › Permission Groups / Permissions** | `Abp.Identity.PermissionGroups` · `Abp.Identity.Permissions` | `AbpPermissionGroups` · `AbpPermissions` | Yetki ağacı (tree düzeni). Yeni ekranın yetkileri burada görünür; `Modules` kolonu yetkiyi modüllere bağlar (pipe ile çoklu), `Order` kardeşler arası sıradır. Seed: `data/Abp.Identity.Permission{Groups,s}.json`. |
|
||||
| **Identity › Claim Type** | `App.IdentityManagement.ClaimType` | `AbpClaimTypes` | Kullanıcıya ek alan (claim) tanımı: `ValueType`, `Regex`, `Required`, `IsStatic`. |
|
||||
| **Identity › Roles** | `AbpIdentity.Roles` | `AbpRoles` | Rol yönetimi + `RolesPermission` diyaloğu; yeni ekranın yetkisi role buradan verilir. Yazma `list-form-dynamic-api/role-*`. |
|
||||
| **Identity › Users** | `AbpIdentity.Users` · detay `/admin/users/detail/:userId` | `AbpUsers` | Kullanıcı yönetimi + `UsersPermission` diyaloğu, **KPI widget'ları** ve `list-form-dynamic-api/user-*` ile devredilen yazma. Kullanıcı `WorkHour`, `DepartmentId`, `JobPositionId`, `Gender` (`Male`/`Female`, `App.StaticLookup.*`) ve `HomeAddress` alanlarını liste ve formda taşır; kişisel ve kimlik bilgileri (`IdentityNumber`, `BirthDate`, `EducationLevel`, `Nationality`, `SskNo`…) detay ekranındadır. Detaydaki **Sağlık Kartı** sekmesi `BloodType` ile soy geçmişini (`{Mother,Father,Sibling,Child}HealthStatus` — `Alive`/`Deceased`, `App.StaticLookup.*` — ve `…HealthNote`) ve öz geçmişini (`ChronicDisease`, `TetanusVaccination`, `HepatitisVaccination`, `OtherVaccination`) taşır; sekme dört gruptur (Soy/Öz Geçmişi, Laboratuvar - Fizik Muayene `Lab*`/`Exam*`, Anamnez `Complaint*`/`Diagnosis*` + 3-10. sorular, Sonuç `FitForWork*`/`ShiftWorkFit`/`NightWorkFit`). Sonuçtaki hekim (`FitnessDoctorId`, `ShiftNightDoctorId`) wizard tablosu `Hr_T_Doctor`'dan `LookupQueryValues.TenantDoctorValues` ile seçilir; diploma ve işyeri hekimliği belgesi hekimden gösterilir, kullanıcıya yazılmaz. Bu alanların hepsi listede gizli alandır; arayüz `user-management/HealthCardTab.tsx`. Kullanıcı seçen her lookup bu bilgileri `AbpUsers`'tan okur ve kopya kolon aynı ad/tip/değer kümesiyle açılır (`lowcode.instructions.md` §0.12 madde 5). Yeni bir kullanıcı alanı = `PlatformConsts.AbpIdentity.User` + `AbpIdentityUserExtensions` + EF eşlemesi ve migration + `UserInfoViewModel` (detay/profil) + `CreateUpdateUserInput` ve `user-insert`/`user-update` (liste) + `ListFormSeeder_Administration` alanı. |
|
||||
| **Identity › Users** | `AbpIdentity.Users` · detay `/admin/users/detail/:userId` | `AbpUsers` | Kullanıcı yönetimi + `UsersPermission` diyaloğu, **KPI widget'ları** ve `list-form-dynamic-api/user-*` ile devredilen yazma. Kullanıcı `WorkHour`, `DepartmentId`, `JobPositionId`, `Gender` (`Male`/`Female`, `App.StaticLookup.*`) ve `HomeAddress` alanlarını liste ve formda taşır; kişisel ve kimlik bilgileri (`IdentityNumber`, `BirthDate`, `EducationLevel`, `Nationality`, `SskNo`…) detay ekranındadır. Detay sekmeleri karışmasın diye gruplanmıştır: **General** (iletişim + ikinci e-posta/telefon, ek bilgi, avatar, askerlik `MilitaryStatus`/`MilitaryPostponeEndDate`, engellilik `IsDisabled`/`DisabilityRate`/`DisabilityReport` — rapor base64, 5 MB), **Identity** (nüfus cüzdanı, doğum ve aile, uyruk Türkiye değilse yabancı uyruk `Passport*`/`WorkPermit*`), **Work** (organizasyon `RegistrationNo`/`SskNo`/`ShiftId`/`PdksCardNo`, sözleşme `EmploymentType`/`ContractType`/`ContractEndDate`/`ProbationEndDate`/`SeniorityStartDate`, çıkış `TerminationDate`/`TerminationReasonId`/`TerminationNote`, sürücü belgesi `DrivingLicense*` — sınıflar `|` ile, iletişim kanalları; altında iş deneyimi), **Education & Skills** (en yüksek `EducationLevel` + eğitim/dil/yetenek/belge alt listeleri), **Family / Emergency**, **Financial** (`BankName`, `Iban`, `SalaryType`, `GrossSalary`, `SalaryCurrency` + yan haklar), Health, Permissions, Lockout, Claims. Deneme süresi işe girişten en fazla dört ay sonra biter (`UpdateUserAsync` ve ekran doğrular). Ücret alanları `UserInfoViewModel`'de taşınmaz — o model intranet doğum günü listesine de akar; `GET {id}/financial` / `PUT financial` uçlarından okunur, yetki detayınkiyle aynıdır (`AbpIdentity.Users.Update`). Aynı sebeple `DisabilityReport` yalnızca `GetByIdAsync`'te doldurulur. `ShiftId`, `TerminationReasonId`, `SalaryCurrency` seçenekleri ekranda `list-form-select/lookup` ile bu ListForm'un alan lookup'larından okunur (`useUserFieldLookup`). Detaydaki **Sağlık Kartı** sekmesi `BloodType` ile soy geçmişini (`{Mother,Father,Sibling,Child}HealthStatus` — `Alive`/`Deceased`, `App.StaticLookup.*` — ve `…HealthNote`) ve öz geçmişini (`ChronicDisease`, `TetanusVaccination`, `HepatitisVaccination`, `OtherVaccination`) taşır; sekme dört gruptur (Soy/Öz Geçmişi, Laboratuvar - Fizik Muayene `Lab*`/`Exam*`, Anamnez `Complaint*`/`Diagnosis*` + 3-10. sorular, Sonuç `FitForWork*`/`ShiftWorkFit`/`NightWorkFit`). Sonuçtaki hekim (`FitnessDoctorId`, `ShiftNightDoctorId`) wizard tablosu `Hr_T_Doctor`'dan `LookupQueryValues.TenantDoctorValues` ile seçilir; diploma ve işyeri hekimliği belgesi hekimden gösterilir, kullanıcıya yazılmaz. Bu alanların hepsi listede gizli alandır; arayüz `user-management/HealthCardTab.tsx`. Kullanıcı seçen her lookup bu bilgileri `AbpUsers`'tan okur ve kopya kolon aynı ad/tip/değer kümesiyle açılır (`lowcode.instructions.md` §0.12 madde 5). Yeni bir kullanıcı alanı = `PlatformConsts.AbpIdentity.User` + `AbpIdentityUserExtensions` + EF eşlemesi ve migration + `UserInfoViewModel` (detay/profil) + `CreateUpdateUserInput` ve `user-insert`/`user-update` (liste) + `ListFormSeeder_Administration` alanı. |
|
||||
| **Identity › Users › Work Experience** | `App.IdentityManagement.UserWorkExperience` (menüsüz alt liste) | `Adm_T_UserWorkExperience` | Kullanıcının daha önce çalıştığı yerler: `CompanyName`, `SectorId` (Sektörler lookup'ı, `LookupQueryValues.TenantSectorValues`), `StartDate`, `EndDate`, `JobDescription` (HtmlEditor). Entity `IMultiTenant`; kullanıcı detayının Work sekmesinde `PlatformViewHost` ile `UserId` filtresiyle gömülüdür, yeni satır `UserId`'yi filtreden alır. Kendi yetkisi yoktur: okuma `AbpIdentity.Users`, ekleme/güncelleme/silme detay sayfasının yetkisi `AbpIdentity.Users.Update`. |
|
||||
| **Identity › Users › Health Card lists** | `App.IdentityManagement.UserPeriodicExamination` · `.UserPatientProtocol` · `.UserSickLeave` (menüsüz alt listeler) | `Adm_T_UserPeriodicExamination` · `Adm_T_UserPatientProtocol` · `Adm_T_UserSickLeave` | Periyodik muayene (hekim `Hr_T_Doctor`'dan, diploma no seçimde `EditorScript.Copy` ile kopyalanır), hasta protokol defteri (`ProtocolType`/`ProtocolResult` statik lookup) ve istirahat listesi (`Days` tarihlerden `EditorScript.Days` ile hesaplanır). Entity'ler `IMultiTenant`; Sağlık Kartı sekmesinde (`HealthCardTab.tsx`) `UserId` filtresiyle gömülüdür. Yetki Work Experience ile aynıdır: okuma `AbpIdentity.Users`, ekleme/güncelleme/silme `AbpIdentity.Users.Update`. |
|
||||
| **Identity › Users › Education & Skills lists** | `App.IdentityManagement.UserEducation` · `.UserLanguage` · `.UserSkill` · `.UserCertificate` (menüsüz alt listeler) | `Adm_T_UserEducation` · `Adm_T_UserLanguage` · `Adm_T_UserSkill` · `Adm_T_UserCertificate` | Eğitim geçmişi (`EducationLevel` kullanıcınınkiyle aynı değerler, `SchoolName`, `Department`, `StartDate`, `EndDate`, `IsGraduated`), yabancı dil (`SkillId` → `Languages` tipindeki `Hr_T_Skill`, `SkillLevelId` dilin tipine ait `Hr_T_SkillLevel`, cascade), yetenek (`SkillId` → `Languages` dışındaki tipler, `Level` 1-5 statik lookup, check constraint) ve yeterlilik belgesi (`CertificateId` → wizard tablosu `Hr_T_Certificate`, EF ilişkisi yok; `CertificateNo`, `IssuedBy`, `IssueDate`, `ExpiryDate`). Lookup'lar `LookupQueryValues.Tenant{LanguageSkill,SkillLevelBySkill,NonLanguageSkill,Certificate}Values`. `EducationSkillsTab.tsx`; yetki Work Experience ile aynıdır. |
|
||||
| **Identity › Users › Family / Emergency lists** | `App.IdentityManagement.UserFamilyMember` · `.UserEmergencyContact` | `Adm_T_UserFamilyMember` · `Adm_T_UserEmergencyContact` | Eş ve çocuklar (`Relationship` `Spouse`/`Child`, ad, TC, doğum tarihi, `EmploymentStatus`, `IsInsuranceCovered`, `IsBenefitCovered`) ve acil durum kişileri (ad, `Relationship`, telefon). `FamilyEmergencyTab.tsx`; yetki Work Experience ile aynıdır. |
|
||||
| **Identity › Users › Benefits** | `App.IdentityManagement.UserBenefit` | `Adm_T_UserBenefit` | Yan haklar (`BenefitType` statik lookup `App.StaticLookup.Benefit*`, `Amount`, `StartDate`, `EndDate`, `Note`); Financial sekmesinde (`FinancialTab.tsx`). Yetki Work Experience ile aynıdır. |
|
||||
| **Identity › Organization Units** | `Abp.Identity.OrganizationUnits` · `/admin/ous` | ABP OU tabloları | Birim ağacı. Ekranı `IsOrganizationUnit = true` yaparsan veri bu ağaca göre süzülür; bildirim alıcısı da OU olabilir. |
|
||||
| **Identity › Audit Logs** | `App.IdentityManagement.AuditLogs` | `AbpAuditLogs` | İstek denetim kaydı + `AuditLogDetail` diyaloğu. "Kim ne zaman ne yaptı" isteği yeni tablo gerektirmez. |
|
||||
| **Identity › Sessions** | `App.IdentityManagement.Sessions` | `AbpSessions` | Açık oturumlar; `UiEvalService.ApiKickUser` ile oturum düşürme (`lowcode` §9.13). |
|
||||
|
|
@ -1353,6 +1352,10 @@ ListForm kodu / menü kodu / yetki adı / dil anahtarı `App.Hr.*`, seed dosyas
|
|||
seeder `ListFormSeeder_Hr.cs` (`SeedConsts.AppCodes.Hr`, `PlatformConsts.AppCodes.Hr`), entity
|
||||
klasörü `Entities/Tenant/Hr/Definitions`. Tanımlar alt menüsü `App.Hr.Definitions`'tır
|
||||
(`App.Platform.Definitions` başlığı); Organizasyon Şeması doğrudan `App.Hr` altındadır.
|
||||
Intranet de bu moduldedir: menü `App.Hr.Intranet`, ekran/yetki kodları `App.Hr.Intranet.*`
|
||||
(`SeedConsts.AppCodes.Intranet`), tablolar `Hr_T_{Announcement,Survey*,Social*,Event*}` ve mesajlaşma
|
||||
`Hr_T_MessengerConversation*`, entity klasörü `Entities/Tenant/Hr/Intranet`. `Sas_T_IntranetWidget`
|
||||
(Developer Kit › Intranet Widgets) Saas'ta kalır; kayıtlarının `PermissionName` değerleri `App.Hr.Intranet.*.Widget`'tır.
|
||||
|
||||
İK yetkilerinin `Modules` değeri `Sas|Hr`'dir: host (`Sas`) her zaman görür, kiracı yalnızca modül
|
||||
listesinde `Hr` varsa görür (modül listesi boş kiracıda süzme yoktur — `MenuAppService`,
|
||||
|
|
@ -1367,6 +1370,11 @@ listesinde `Hr` varsa görür (modül listesi boş kiracıda süzme yoktur — `
|
|||
| **Definitions › Department** | `App.Hr.Department` | `Hr_T_Department` | tenant | **Şube bazlı** departman ağacı: ilk sütun `BranchId` (Şube Adı; `LookupQueryValues.TenantBranchValues`, zorunlu), `ParentId` lookup'ı seçili şubenin departmanlarına süzülür (`BranchDepartmentValues`, cascade `BranchId`). `ParentId` ile **ağaç (TreeList) düzeninin** referansı; personel/onay ekranlarının departman lookup'ı. Tekil indeks `TenantId + BranchId + Name`. Seed `data/App.Hr.Department.json`. |
|
||||
| **Definitions › Job Position** | `App.Hr.JobPosition` | `Hr_T_JobPosition` | tenant | Ünvan ağacı. Form sırası `BranchId` → `DepartmentId` (şubeye göre süzülür) → `Name` → `ParentId` (departmana göre süzülür); şube değişince departman ve üst görev temizlenir (`CascadeEmptyFields`). **İki kademeli cascade** örneği. Seed `data/App.Hr.JobPosition.json`. |
|
||||
| **Org Chart** | `App.Hr.OrgChart` · `/admin/organization` | `Hr_T_Department` · `Hr_T_JobPosition` | tenant | Departman/ünvan verisinin organizasyon şeması görünümü (özel React sayfası `hr/OrgChart`, veri `api/app/org-chart`). Menü ve route aynı yetkiyi ister. |
|
||||
| **Intranet › Announcement** | `App.Hr.Intranet.Announcement` (alt formlar Like/Comment) | `Hr_T_Announcement` · `Hr_T_AnnouncementLike` · `Hr_T_AnnouncementComment` | tenant | Duyuru + beğeni + yorum: **ana kayıt / alt etkileşim** kalıbının hazır örneği. |
|
||||
| **Intranet › Survey** | `App.Hr.Intranet.Survey` (alt form Question → Option; Response → Answer) | `Hr_T_Survey` · `Hr_T_SurveyQuestion` · `Hr_T_SurveyQuestionOption` · `Hr_T_SurveyResponse` · `Hr_T_SurveyAnswer` | tenant | Anket motoru; soru–seçenek–yanıt zinciri **iki seviyeli alt form** ihtiyacının referansıdır. |
|
||||
| **Intranet › Social Post** | `App.Hr.Intranet.SocialPost` | `Hr_T_SocialPost` · `Hr_T_SocialComment` · `Hr_T_SocialLike` (+ `SocialPollOption`, `SocialMedia`, `SocialLocation`) | tenant | Kurum içi akış; `IsLiked`, `IsOwnPost` gibi hesaplanmış kolonların view içinde üretilmesine örnek. Alt formlar: `App.Hr.Intranet.SocialMedia`, `SocialComment`, `SocialLike` (`Id` → `SocialPostId`); anket seçenekleri (`App.Hr.Intranet.SocialPollOption`) medyaya bağlı olduğu için `SocialMedia` ekranının alt formudur (`Id` → `SocialMediaId`). |
|
||||
| **Intranet › Event Type / Category / Event** | `App.Hr.Intranet.Events.EventType` · `.EventCategory` · `.Event` | `Hr_T_EventType` · `Hr_T_EventCategory` · `Hr_T_Event` · `Hr_T_EventPhoto` · `Hr_T_EventLike` · `Hr_T_EventComment` | tenant | Etkinlik yönetimi; foto ve katılımcı sayacı olan kayıt kalıbı. `EventLike`/`EventComment` alt formdur, `EventPhoto` menüde yer almaz; yetkileri `App.Hr.Intranet.Events.Event` altındadır. `Hr_T_EventPhoto` tablosu `sql/object/Hr_T_EventPhoto.sql` ile oluşturulur. |
|
||||
| **Intranet › Documents** | `App.Hr.Intranet.Document` · `/admin/intranet-documents` | Dosya yöneticisi (`intranet` / `intranet\|_passive` klasörleri) | tenant | Kurum içi doküman paylaşımı — aktif/pasif klasör, yükleme, taşıma, toplu silme. Doküman listesi isteği yeni tablo gerektirmez. |
|
||||
|
||||
**Şube bilgisi:** `Department.BranchId` ve `JobPosition.BranchId` (`Guid`, **zorunlu** — kolon `NOT NULL`, formda
|
||||
zorunlu alan; değer `Sas_T_Branch.Id`) şubeyi taşır; ekranlar `IsBranch = false`'tur (satırlar kullanıcının şube atamasına göre süzülmez, şube
|
||||
|
|
@ -1410,7 +1418,7 @@ görünürlük `checkPermission` ile bileşen içinde kurulur (`lowcode` §7.5).
|
|||
| `/admin/reports/:report/{view,design}/:id?/:listFormCode?` | `DevexpressReportViewer` · `DevexpressReportDesigner` | — |
|
||||
| `/admin/settings` | `settings/Settings` | `App.Setting` |
|
||||
| `/admin/files` | `admin/files/FileManager` | `App.Files` |
|
||||
| `/admin/intranet-documents` | `intranet/documents/IntranetDocuments` | `App.Intranet.Document` |
|
||||
| `/admin/intranet-documents` | `intranet/documents/IntranetDocuments` | `App.Hr.Intranet.Document` |
|
||||
| `/admin/ous` · `/admin/organization` | `organization-unit/OrganizationUnits` · `hr/OrgChart` | `Abp.Identity.OrganizationUnits` · `App.Hr.OrgChart` (menü ile aynı — §12.4) |
|
||||
| `/admin/forum` | `forum/Forum` | `App.ForumManagement.Publish` |
|
||||
| `/admin/videoroom/{dashboard,list,room/:id}` | `admin/videoroom/{Dashboard,RoomList,RoomDetail}` | `App.Videoroom{,.List,.Detail}` |
|
||||
|
|
|
|||
20
.github/instructions/lowcode.instructions.md
vendored
20
.github/instructions/lowcode.instructions.md
vendored
|
|
@ -746,11 +746,20 @@ Kısa ve karar odaklı yaz; talebi tekrar anlatma.
|
|||
(`dxTextArea`, `dxHtmlEditor`) de `nvarchar(MAX)`'tir.
|
||||
**Kullanıcı (çalışan) bilgisi `AbpUsers`'tan okunur.** Kullanıcıya ait her bilgi kullanıcı
|
||||
kaydında durur: `IdentityNumber` (TC), `BirthDate`, `BirthPlace`, `Gender` (`Male`/`Female`),
|
||||
`HomeAddress`, `EducationLevel`, `GraduationSchool`, `BloodType`, sağlık kartı alanları
|
||||
`HomeAddress`, `EducationLevel`, `BloodType`, sağlık kartı alanları
|
||||
(`{Mother,Father,Sibling,Child}HealthStatus`/`…HealthNote`, `ChronicDisease`, `…Vaccination`, `Lab*`, `Exam*`,
|
||||
`Complaint*`, `Diagnosis*`, anamnez soruları, `FitForWork*`, `ShiftWorkFit`, `NightWorkFit`, `*DoctorId`), `Nationality`, `MaritalStatus`,
|
||||
`SskNo`, `HireDate`, `DepartmentId`, `JobPositionId`, `WorkHour`, kimlik kartı alanları
|
||||
(`SerialNo`, `Province`, `District`, `FatherName`, `MotherName`…). Kullanıcı seçen bir lookup bu
|
||||
(`SerialNo`, `Province`, `District`, `FatherName`, `MotherName`…), yabancı uyruk alanları
|
||||
(`PassportNo`, `PassportExpiryDate`, `WorkPermitNo`, `WorkPermitEndDate`), askerlik ve engellilik
|
||||
(`MilitaryStatus` — `Done`/`Exempt`/`Postponed`/`NotDone`, `MilitaryPostponeEndDate`, `IsDisabled`,
|
||||
`DisabilityRate`), çalışma bilgisi (`RegistrationNo` sicil no, `EmploymentType` — `FullTime`/`PartTime`,
|
||||
`ContractType` — `Indefinite`/`Definite`, `ContractEndDate`, `ProbationEndDate`, `SeniorityStartDate`,
|
||||
`TerminationDate`, `TerminationReasonId` → `Sas_H_TerminationReason`, `ShiftId` → `Hr_T_Shift`,
|
||||
`PdksCardNo`, `DrivingLicense*`). Birden çok satırlı bilgiler kullanıcının alt tablolarındadır:
|
||||
eğitim geçmişi `Adm_T_UserEducation` (tek `GraduationSchool` alanı kaldırıldı), yabancı dil
|
||||
`Adm_T_UserLanguage`, yetenek `Adm_T_UserSkill`, yeterlilik belgesi `Adm_T_UserCertificate`, eş/çocuk
|
||||
`Adm_T_UserFamilyMember`, acil durum kişisi `Adm_T_UserEmergencyContact`, yan hak `Adm_T_UserBenefit`. Kullanıcı seçen bir lookup bu
|
||||
kolonları doğrudan `u.` ile seçer; başka bir ekranın tablosundaki son kayıttan (`OUTER APPLY
|
||||
(SELECT TOP 1 …)`, `COALESCE(önceki kayıt…)`) türetmez — o tablolar kullanıcıyı değil kendi
|
||||
kaydını tutar. Ekranın tablosu bu bilginin kopyasını tutacaksa kolon **aynı ad, aynı tip/boy ve
|
||||
|
|
@ -885,7 +894,7 @@ Query'de üretilmez (kaynak tablo adı değildir), gerekiyorsa elle yazılır.
|
|||
`required` `numeric` `range` `stringLength` `custom` `compare` `pattern` `email` `async` (§4.3.6)
|
||||
|
||||
**`WorkerType`** (`WorkerTypeEnum`) — `1` MailQueueWorker · `2` SqlWorker ·
|
||||
`3` NotificationWorker · `4` SessionCleanupWorker · `5` BackupWorker (§9.10)
|
||||
`3` NotificationWorker · `4` SessionCleanupWorker · `5` BackupWorker · `6` ProbationReminderWorker (§9.10)
|
||||
|
||||
**`Scope`** (`WorkerScopeEnum`) — `1` Host · `2` Tenant · `3` All (önce host, sonra her kiracı) (§9.10)
|
||||
|
||||
|
|
@ -4159,7 +4168,7 @@ Ekranlar: `App.BackgroundWorkers.RecurringJobs` (tanımlar) ve `App.BackgroundWo
|
|||
| --- | --- |
|
||||
| `Name` | Benzersiz ad; dağıtık kilit (`DistributedLock`) bu adla alınır — aynı iş iki sunucuda aynı anda çalışmaz |
|
||||
| `Cron` | Cron ifadesi (`*/5 * * * *`, `0 3 * * *`) |
|
||||
| `WorkerType` | `1` MailQueueWorker · `2` SqlWorker · `3` NotificationWorker · `4` SessionCleanupWorker · `5` BackupWorker |
|
||||
| `WorkerType` | `1` MailQueueWorker · `2` SqlWorker · `3` NotificationWorker · `4` SessionCleanupWorker · `5` BackupWorker · `6` ProbationReminderWorker |
|
||||
| `Scope` | `1` Host (varsayılan) · `2` Tenant · `3` All — aşağıda **Kapsam** |
|
||||
| `DataSourceCode` | `BeforeSp` / `AfterSp` hangi bağlantıda çalışacak |
|
||||
| `BeforeSp` / `AfterSp` | İş gövdesinden **önce ve sonra** çağrılan stored procedure adları |
|
||||
|
|
@ -4218,6 +4227,7 @@ kurulur, kod yazılmaz:
|
|||
| Zamanlanmış e-posta (rapor maili, hatırlatma) | `WorkerType: 1` + `Options` (Mail şablonu + `TableName`) + kuyruğa satır yazan `BeforeSp` |
|
||||
| Olay bazlı bildirimlerin dağıtımı | `WorkerType: 3` + `Scope: 3` (kuyruğu host ve her kiracı için boşaltır) + Notification Type/Rule kayıtları (§9.11) |
|
||||
| Oturum temizliği / yedekleme | `WorkerType: 4` / `5` (+ `App:BackupPath`) |
|
||||
| Deneme süresi bitiş hatırlatması | `WorkerType: 6` + `Scope: 3`; bildirim tipi `DenemeSuresiBitiyor`, alıcı/kanal tipin kurallarından |
|
||||
|
||||
**Zamanlanmış e-posta (`MailQueueWorker`)** — "her sabah geciken siparişler listesi şu kişilere
|
||||
mail atılsın" isteğinin yolu budur. Worker'ın `Options` alanı bir `MailQueueWorkerOptions`
|
||||
|
|
@ -4355,7 +4365,7 @@ kullanılacağı** `lowcode-reference.instructions.md` §12'dedir.
|
|||
| "Belirli saatlerde/IP'lerden girilsin" | Work Hours · IP Restrictions | `/admin/list/App.Restrictions.WorkHour` |
|
||||
| "Dosya yükleme/yönetme" | File Manager | `/admin/files` |
|
||||
| "Global aramada çıksın" | Global Search kayıtları (`System`, `Group`, `Term`, `Weight`, `Url`) | `/admin/list/App.Definitions.GlobalSearch` |
|
||||
| "Duyuru, anket, sosyal akış, etkinlik" | Intranet ekranları | `/admin/list/App.Intranet.*` |
|
||||
| "Duyuru, anket, sosyal akış, etkinlik" | İK › Intranet ekranları | `/admin/list/App.Hr.Intranet.*` |
|
||||
| "Para birimi, ülke/il/ilçe, birim, sektör…" | Definitions ekranları | `/admin/list/App.Definitions.*` |
|
||||
| "Departman, pozisyon/ünvan, yetkinlik, organizasyon şeması" | İK › Definitions · Org Chart (şube bazlı departman/pozisyon) | `/admin/list/App.Hr.*` · `/admin/organization` |
|
||||
| "Menü düzeni" | Menu Manager (§9.7) | `/admin/menuManager` |
|
||||
|
|
|
|||
|
|
@ -933,8 +933,8 @@ kimlikle kurulur (`PlatformConsts.Branches.BranchIdDefaultValue`) ve
|
|||
**Yetki kodları** `PlatformConsts.AppCodes` içinde merkezî olarak tanımlıdır ve
|
||||
`configs/seeds/host/data/Abp.Identity.Permissions.json` ile seed edilir (gruplar:
|
||||
`Abp.Identity.PermissionGroups.json` — `App.Saas` (1), `App.Administration` (2), `App.Hr` (3)).
|
||||
Ana yetki kökleri: `App.Saas`, `App.Branches`, `App.Intranet.*`,
|
||||
`App.Definitions.*`, `App.Hr.*`, `App.Restrictions.*`, `App.Languages.*`, `App.Listforms.*`,
|
||||
Ana yetki kökleri: `App.Saas`, `App.Branches`,
|
||||
`App.Definitions.*`, `App.Hr.*` (Intranet dahil, `App.Hr.Intranet.*`), `App.Restrictions.*`, `App.Languages.*`, `App.Listforms.*`,
|
||||
`App.Notifications.*`, `App.BackgroundWorkers.*`, `App.Menus.*`, `App.DeveloperKit.*`,
|
||||
`App.SqlQueryManager.*`,
|
||||
`App.Orders.*`, `App.BlogManagement.*`, `App.IdentityManagement.*`, `App.Reports.*`,
|
||||
|
|
@ -1699,6 +1699,7 @@ ekranlarından yapılır; yetkiler `App.BackgroundWorkers.RecurringJobs` ve `.Jo
|
|||
| `NotificationWorker` | Bildirim kurallarını değerlendirir ve gönderir. |
|
||||
| `SessionCleanupWorker` | Süresi dolmuş oturumları temizler. |
|
||||
| `BackupWorker` | Veritabanı yedeği alır ve eski yedekleri temizler. |
|
||||
| `ProbationReminderWorker` | Deneme süresinin bitmesine 15 gün kalan çalışanlar için `DenemeSuresiBitiyor` bildirim tipinin kurallarını işletir (`Scope: All`, her gün 08:00). |
|
||||
|
||||
**Kapsam (`Scope`).** İş kaydı her zaman host tablosundadır (`Sas_H_BackgroundWorker`); işin
|
||||
**gövdesinin** hangi kiracı bağlamında kaç kez çalışacağını `Scope` belirler
|
||||
|
|
@ -2031,7 +2032,7 @@ configs/seeds/
|
|||
│ │ # App.Menus.{Routes,Module,Menu}.json — route/modül/menü ağacı
|
||||
│ │ # Abp.Identity.Permission{Groups,s}.json — yetki tanımları
|
||||
│ │ # App.Definitions.{CountryGroup,Country,City,District}.json — adres zinciri
|
||||
│ │ # App.Definitions.{Currency,ContactTitle,AiBot}.json — para birimi, hitap, AI bot
|
||||
│ │ # App.Definitions.{Currency,ContactTitle,AiBot,TerminationReason}.json — para birimi, hitap, AI bot, SGK çıkış kodu
|
||||
│ │ # App.Hr.{SkillType,SkillLevel,Skill}.json — İK yetkinlik tanımları
|
||||
│ │ # App.Hr.{Department,JobPosition}.json — İK departman → pozisyon (BranchId ile şubeye bağlı)
|
||||
│ │ # App.Notifications.Notification{Templates,Types,Rules}.json — bildirim şablonu, tipi → kuralı
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
using System;
|
||||
|
||||
namespace Sozsoft.Platform.Identity.Dto;
|
||||
|
||||
/// <summary>
|
||||
/// Kullanicinin banka ve ucret bilgisi. <see cref="UserInfoViewModel"/> intranet listelerine de
|
||||
/// aktigi icin bu alanlar orada tasinmaz; kullanici detayinin ayri ucundan okunup yazilir.
|
||||
/// </summary>
|
||||
public class UserFinancialDto
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public string BankName { get; set; }
|
||||
public string Iban { get; set; }
|
||||
public string SalaryType { get; set; }
|
||||
public decimal? GrossSalary { get; set; }
|
||||
public string SalaryCurrency { get; set; }
|
||||
}
|
||||
|
|
@ -67,7 +67,6 @@ public class UserInfoViewModel : ExtensibleObject
|
|||
public DateTime? MarriageDate { get; set; }
|
||||
public string HomeAddress { get; set; }
|
||||
public string EducationLevel { get; set; }
|
||||
public string GraduationSchool { get; set; }
|
||||
public string BloodType { get; set; }
|
||||
public string MotherHealthStatus { get; set; }
|
||||
public string MotherHealthNote { get; set; }
|
||||
|
|
@ -145,4 +144,30 @@ public class UserInfoViewModel : ExtensibleObject
|
|||
public bool? ShiftWorkFit { get; set; }
|
||||
public bool? NightWorkFit { get; set; }
|
||||
public Guid? ShiftNightDoctorId { get; set; }
|
||||
public string SecondaryEmail { get; set; }
|
||||
public string SecondaryPhoneNumber { get; set; }
|
||||
public string MilitaryStatus { get; set; }
|
||||
public DateTime? MilitaryPostponeEndDate { get; set; }
|
||||
public bool IsDisabled { get; set; }
|
||||
public int? DisabilityRate { get; set; }
|
||||
public string DisabilityReport { get; set; }
|
||||
public string DisabilityReportFileName { get; set; }
|
||||
public string PassportNo { get; set; }
|
||||
public DateTime? PassportExpiryDate { get; set; }
|
||||
public string WorkPermitNo { get; set; }
|
||||
public DateTime? WorkPermitEndDate { get; set; }
|
||||
public string RegistrationNo { get; set; }
|
||||
public string EmploymentType { get; set; }
|
||||
public string ContractType { get; set; }
|
||||
public DateTime? ContractEndDate { get; set; }
|
||||
public DateTime? ProbationEndDate { get; set; }
|
||||
public DateTime? SeniorityStartDate { get; set; }
|
||||
public Guid? TerminationReasonId { get; set; }
|
||||
public string TerminationNote { get; set; }
|
||||
public Guid? ShiftId { get; set; }
|
||||
public string PdksCardNo { get; set; }
|
||||
public string DrivingLicenseClass { get; set; }
|
||||
public string DrivingLicenseNo { get; set; }
|
||||
public DateTime? DrivingLicenseIssueDate { get; set; }
|
||||
public DateTime? DrivingLicenseExpiryDate { get; set; }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -368,6 +368,81 @@ public static class LookupQueryValues
|
|||
$"WHERE \"IsDeleted\" = 'false' " +
|
||||
$"ORDER BY \"QuestionText\";";
|
||||
|
||||
/// <summary>Hr_T_Shift wizard ile uretilen bir tablodur (entity'si yoktur); kullanici bir vardiyaya baglanir.</summary>
|
||||
public static string TenantShiftValues =
|
||||
$"SELECT " +
|
||||
$"\"Id\" AS \"Key\", " +
|
||||
$"\"Name\" + ' (' + \"StartTime\" + '-' + \"EndTime\" + ')' AS \"Name\" " +
|
||||
$"FROM \"Hr_T_Shift\" " +
|
||||
$"WHERE " +
|
||||
$"\"IsDeleted\" = 'false' " +
|
||||
$"AND \"IsActive\" = 'true' " +
|
||||
$"AND \"TenantId\" = '@TENANTID' " +
|
||||
$"ORDER BY \"StartTime\";";
|
||||
|
||||
/// <summary>SGK cikis kodlari host tanimidir; kiraci filtresi yoktur, kod adla birlikte gosterilir.</summary>
|
||||
public static string TerminationReasonValues =
|
||||
$"SELECT " +
|
||||
$"\"Id\" AS \"Key\", " +
|
||||
$"\"Code\" + ' - ' + \"Name\" AS \"Name\" " +
|
||||
$"FROM \"{FullNameTable(TableNameEnum.TerminationReason)}\" " +
|
||||
$"WHERE " +
|
||||
$"\"IsDeleted\" = 'false' " +
|
||||
$"AND \"IsActive\" = 'true' " +
|
||||
$"ORDER BY \"Code\";";
|
||||
|
||||
/// <summary>Hr_T_Certificate wizard ile uretilen bir tablodur; kullanicinin belgesi buradaki tanima baglanir.</summary>
|
||||
public static string TenantCertificateValues =
|
||||
$"SELECT " +
|
||||
$"\"Id\" AS \"Key\", " +
|
||||
$"\"Name\" AS \"Name\" " +
|
||||
$"FROM \"Hr_T_Certificate\" " +
|
||||
$"WHERE " +
|
||||
$"\"IsDeleted\" = 'false' " +
|
||||
$"AND \"IsActive\" = 'true' " +
|
||||
$"AND \"TenantId\" = '@TENANTID' " +
|
||||
$"ORDER BY \"Name\";";
|
||||
|
||||
// Diller de bir yetenek tipidir (Languages); dil listesi o tipe, yetenek listesi diger tiplere suzulur.
|
||||
private const string LanguageSkillTypeName = "Languages";
|
||||
|
||||
public static string TenantLanguageSkillValues =
|
||||
$"SELECT " +
|
||||
$"s.\"Id\" AS \"Key\", " +
|
||||
$"s.\"Name\" AS \"Name\" " +
|
||||
$"FROM \"{FullNameTable(TableNameEnum.Skill)}\" s " +
|
||||
$"INNER JOIN \"{FullNameTable(TableNameEnum.SkillType)}\" t ON t.\"Id\" = s.\"SkillTypeId\" " +
|
||||
$"WHERE " +
|
||||
$"s.\"IsDeleted\" = 'false' " +
|
||||
$"AND t.\"Name\" = '{LanguageSkillTypeName}' " +
|
||||
$"AND s.\"TenantId\" = '@TENANTID' " +
|
||||
$"ORDER BY s.\"Name\";";
|
||||
|
||||
/// <summary>Secilen dilin tipine ait seviyeler (A1-C2); <c>@param0</c> dilin <c>SkillId</c>'sidir.</summary>
|
||||
public static string TenantSkillLevelBySkillValues =
|
||||
$"SELECT " +
|
||||
$"l.\"Id\" AS \"Key\", " +
|
||||
$"l.\"Name\" AS \"Name\" " +
|
||||
$"FROM \"{FullNameTable(TableNameEnum.SkillLevel)}\" l " +
|
||||
$"INNER JOIN \"{FullNameTable(TableNameEnum.Skill)}\" s ON s.\"SkillTypeId\" = l.\"SkillTypeId\" " +
|
||||
$"WHERE " +
|
||||
$"(s.\"Id\" = @param0 OR @param0 IS NULL) " +
|
||||
$"AND l.\"IsDeleted\" = 'false' " +
|
||||
$"AND l.\"TenantId\" = '@TENANTID' " +
|
||||
$"ORDER BY l.\"Progress\";";
|
||||
|
||||
public static string TenantNonLanguageSkillValues =
|
||||
$"SELECT " +
|
||||
$"s.\"Id\" AS \"Key\", " +
|
||||
$"t.\"Name\" + ' - ' + s.\"Name\" AS \"Name\" " +
|
||||
$"FROM \"{FullNameTable(TableNameEnum.Skill)}\" s " +
|
||||
$"INNER JOIN \"{FullNameTable(TableNameEnum.SkillType)}\" t ON t.\"Id\" = s.\"SkillTypeId\" " +
|
||||
$"WHERE " +
|
||||
$"s.\"IsDeleted\" = 'false' " +
|
||||
$"AND t.\"Name\" <> '{LanguageSkillTypeName}' " +
|
||||
$"AND s.\"TenantId\" = '@TENANTID' " +
|
||||
$"ORDER BY t.\"Name\", s.\"Name\";";
|
||||
|
||||
public static string TechnicalSkillsValues =
|
||||
$"SELECT " +
|
||||
$"\"Name\" AS \"Key\", " +
|
||||
|
|
|
|||
|
|
@ -66,7 +66,6 @@ public partial class IdentityUserToUserInfoViewModelMapper : MapperBase<Identity
|
|||
[MapperIgnoreTarget(nameof(UserInfoViewModel.FitForWorkJob))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.FitnessDoctorId))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.Gender))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.GraduationSchool))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.HadSurgery))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.HadSurgeryNote))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.HadWorkAccident))]
|
||||
|
|
@ -119,6 +118,32 @@ public partial class IdentityUserToUserInfoViewModelMapper : MapperBase<Identity
|
|||
[MapperIgnoreTarget(nameof(UserInfoViewModel.UnderTreatment))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.UnderTreatmentNote))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.UserType))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.SecondaryEmail))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.SecondaryPhoneNumber))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.MilitaryStatus))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.MilitaryPostponeEndDate))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.IsDisabled))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.DisabilityRate))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.DisabilityReport))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.DisabilityReportFileName))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.PassportNo))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.PassportExpiryDate))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.WorkPermitNo))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.WorkPermitEndDate))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.RegistrationNo))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.EmploymentType))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.ContractType))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.ContractEndDate))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.ProbationEndDate))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.SeniorityStartDate))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.TerminationReasonId))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.TerminationNote))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.ShiftId))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.PdksCardNo))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.DrivingLicenseClass))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.DrivingLicenseNo))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.DrivingLicenseIssueDate))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.DrivingLicenseExpiryDate))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.Village))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.VolumeNo))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.WorkHour))]
|
||||
|
|
@ -186,7 +211,6 @@ public partial class IdentityUserToUserInfoViewModelMapper : MapperBase<Identity
|
|||
[MapperIgnoreTarget(nameof(UserInfoViewModel.FitForWorkJob))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.FitnessDoctorId))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.Gender))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.GraduationSchool))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.HadSurgery))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.HadSurgeryNote))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.HadWorkAccident))]
|
||||
|
|
@ -239,6 +263,32 @@ public partial class IdentityUserToUserInfoViewModelMapper : MapperBase<Identity
|
|||
[MapperIgnoreTarget(nameof(UserInfoViewModel.UnderTreatment))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.UnderTreatmentNote))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.UserType))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.SecondaryEmail))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.SecondaryPhoneNumber))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.MilitaryStatus))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.MilitaryPostponeEndDate))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.IsDisabled))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.DisabilityRate))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.DisabilityReport))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.DisabilityReportFileName))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.PassportNo))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.PassportExpiryDate))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.WorkPermitNo))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.WorkPermitEndDate))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.RegistrationNo))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.EmploymentType))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.ContractType))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.ContractEndDate))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.ProbationEndDate))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.SeniorityStartDate))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.TerminationReasonId))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.TerminationNote))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.ShiftId))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.PdksCardNo))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.DrivingLicenseClass))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.DrivingLicenseNo))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.DrivingLicenseIssueDate))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.DrivingLicenseExpiryDate))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.Village))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.VolumeNo))]
|
||||
[MapperIgnoreTarget(nameof(UserInfoViewModel.WorkHour))]
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ using Sozsoft.Platform.BlobStoring;
|
|||
using Sozsoft.Platform.Entities;
|
||||
using Sozsoft.Platform.Extensions;
|
||||
using Sozsoft.Platform.Identity.Dto;
|
||||
using Volo.Abp;
|
||||
using Volo.Abp.Application.Services;
|
||||
using Volo.Abp.Domain.Repositories;
|
||||
using Volo.Abp.Guids;
|
||||
|
|
@ -173,6 +174,8 @@ public class PlatformIdentityAppService : ApplicationService
|
|||
ConcurrencyStamp = user.ConcurrencyStamp,
|
||||
LastPasswordChangeTime = user.LastPasswordChangeTime,
|
||||
Avatar = user.GetAvatar(),
|
||||
// Rapor dosyasi ortak esleme yerine yalnizca detayda doldurulur; ortak esleme intranet listelerine de akar.
|
||||
DisabilityReport = user.GetDisabilityReport(),
|
||||
|
||||
EmailConfirmed = user.EmailConfirmed,
|
||||
PhoneNumberConfirmed = user.PhoneNumberConfirmed,
|
||||
|
|
@ -254,6 +257,14 @@ public class PlatformIdentityAppService : ApplicationService
|
|||
|
||||
public async Task UpdateUserAsync(UserInfoViewModel UserInfo)
|
||||
{
|
||||
// 4857 s. Is Kanunu md. 15: deneme suresi en fazla iki ay, toplu sozlesmeyle dort ay.
|
||||
// Hangi sinirin gecerli oldugu sozlesmeye bagli oldugu icin ust sinir dort aydir.
|
||||
if (UserInfo.HireDate.HasValue && UserInfo.ProbationEndDate.HasValue
|
||||
&& (UserInfo.ProbationEndDate < UserInfo.HireDate || UserInfo.ProbationEndDate > UserInfo.HireDate.Value.AddMonths(4)))
|
||||
{
|
||||
throw new UserFriendlyException(L["Abp.Identity.User.ProbationPeriodInvalid"]);
|
||||
}
|
||||
|
||||
var user = await UserManager.GetByIdAsync(UserInfo.Id);
|
||||
|
||||
user.Name = UserInfo.Name;
|
||||
|
|
@ -287,7 +298,6 @@ public class PlatformIdentityAppService : ApplicationService
|
|||
user.SetMarriageDate(UserInfo.MarriageDate);
|
||||
user.SetHomeAddress(UserInfo.HomeAddress);
|
||||
user.SetEducationLevel(UserInfo.EducationLevel);
|
||||
user.SetGraduationSchool(UserInfo.GraduationSchool);
|
||||
user.SetBloodType(UserInfo.BloodType);
|
||||
user.SetMotherHealthStatus(UserInfo.MotherHealthStatus);
|
||||
user.SetMotherHealthNote(UserInfo.MotherHealthNote);
|
||||
|
|
@ -365,12 +375,68 @@ public class PlatformIdentityAppService : ApplicationService
|
|||
user.SetShiftWorkFit(UserInfo.ShiftWorkFit);
|
||||
user.SetNightWorkFit(UserInfo.NightWorkFit);
|
||||
user.SetShiftNightDoctorId(UserInfo.ShiftNightDoctorId);
|
||||
user.SetSecondaryEmail(UserInfo.SecondaryEmail);
|
||||
user.SetSecondaryPhoneNumber(UserInfo.SecondaryPhoneNumber);
|
||||
user.SetMilitaryStatus(UserInfo.MilitaryStatus);
|
||||
user.SetMilitaryPostponeEndDate(UserInfo.MilitaryPostponeEndDate);
|
||||
user.SetIsDisabled(UserInfo.IsDisabled);
|
||||
user.SetDisabilityRate(UserInfo.DisabilityRate);
|
||||
user.SetDisabilityReport(UserInfo.DisabilityReport);
|
||||
user.SetDisabilityReportFileName(UserInfo.DisabilityReportFileName);
|
||||
user.SetPassportNo(UserInfo.PassportNo);
|
||||
user.SetPassportExpiryDate(UserInfo.PassportExpiryDate);
|
||||
user.SetWorkPermitNo(UserInfo.WorkPermitNo);
|
||||
user.SetWorkPermitEndDate(UserInfo.WorkPermitEndDate);
|
||||
user.SetRegistrationNo(UserInfo.RegistrationNo);
|
||||
user.SetEmploymentType(UserInfo.EmploymentType);
|
||||
user.SetContractType(UserInfo.ContractType);
|
||||
user.SetContractEndDate(UserInfo.ContractEndDate);
|
||||
user.SetProbationEndDate(UserInfo.ProbationEndDate);
|
||||
user.SetSeniorityStartDate(UserInfo.SeniorityStartDate);
|
||||
user.SetTerminationReasonId(UserInfo.TerminationReasonId);
|
||||
user.SetTerminationNote(UserInfo.TerminationNote);
|
||||
user.SetShiftId(UserInfo.ShiftId);
|
||||
user.SetPdksCardNo(UserInfo.PdksCardNo);
|
||||
user.SetDrivingLicenseClass(UserInfo.DrivingLicenseClass);
|
||||
user.SetDrivingLicenseNo(UserInfo.DrivingLicenseNo);
|
||||
user.SetDrivingLicenseIssueDate(UserInfo.DrivingLicenseIssueDate);
|
||||
user.SetDrivingLicenseExpiryDate(UserInfo.DrivingLicenseExpiryDate);
|
||||
user.SetAvatar(UserInfo.Avatar);
|
||||
user.SetUserType(UserInfo.UserType);
|
||||
|
||||
(await UserManager.UpdateAsync(user)).CheckErrors();
|
||||
}
|
||||
|
||||
[Authorize(IdentityPermissions.Users.Update)]
|
||||
public async Task<UserFinancialDto> GetFinancialAsync(Guid id)
|
||||
{
|
||||
var user = await UserManager.GetByIdAsync(id);
|
||||
|
||||
return new UserFinancialDto
|
||||
{
|
||||
Id = user.Id,
|
||||
BankName = user.GetBankName(),
|
||||
Iban = user.GetIban(),
|
||||
SalaryType = user.GetSalaryType(),
|
||||
GrossSalary = user.GetGrossSalary(),
|
||||
SalaryCurrency = user.GetSalaryCurrency(),
|
||||
};
|
||||
}
|
||||
|
||||
[Authorize(IdentityPermissions.Users.Update)]
|
||||
public async Task UpdateFinancialAsync(UserFinancialDto input)
|
||||
{
|
||||
var user = await UserManager.GetByIdAsync(input.Id);
|
||||
|
||||
user.SetBankName(input.BankName);
|
||||
user.SetIban(input.Iban?.Replace(" ", string.Empty).ToUpperInvariant());
|
||||
user.SetSalaryType(input.SalaryType);
|
||||
user.SetGrossSalary(input.GrossSalary);
|
||||
user.SetSalaryCurrency(input.SalaryCurrency);
|
||||
|
||||
(await UserManager.UpdateAsync(user)).CheckErrors();
|
||||
}
|
||||
|
||||
[Authorize(IdentityPermissions.Users.Update)]
|
||||
public async Task UpdateAvatarAsync([FromForm] UserAvatarUpdateInput input)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -43,7 +43,6 @@ public static class UserInfoViewModelMappingExtensions
|
|||
userInfoViewModel.MarriageDate = user.GetMarriageDate();
|
||||
userInfoViewModel.HomeAddress = user.GetHomeAddress();
|
||||
userInfoViewModel.EducationLevel = user.GetEducationLevel();
|
||||
userInfoViewModel.GraduationSchool = user.GetGraduationSchool();
|
||||
userInfoViewModel.BloodType = user.GetBloodType();
|
||||
userInfoViewModel.MotherHealthStatus = user.GetMotherHealthStatus();
|
||||
userInfoViewModel.MotherHealthNote = user.GetMotherHealthNote();
|
||||
|
|
@ -121,6 +120,31 @@ public static class UserInfoViewModelMappingExtensions
|
|||
userInfoViewModel.ShiftWorkFit = user.GetShiftWorkFit();
|
||||
userInfoViewModel.NightWorkFit = user.GetNightWorkFit();
|
||||
userInfoViewModel.ShiftNightDoctorId = user.GetShiftNightDoctorId();
|
||||
userInfoViewModel.SecondaryEmail = user.GetSecondaryEmail();
|
||||
userInfoViewModel.SecondaryPhoneNumber = user.GetSecondaryPhoneNumber();
|
||||
userInfoViewModel.MilitaryStatus = user.GetMilitaryStatus();
|
||||
userInfoViewModel.MilitaryPostponeEndDate = user.GetMilitaryPostponeEndDate();
|
||||
userInfoViewModel.IsDisabled = user.GetIsDisabled();
|
||||
userInfoViewModel.DisabilityRate = user.GetDisabilityRate();
|
||||
userInfoViewModel.DisabilityReportFileName = user.GetDisabilityReportFileName();
|
||||
userInfoViewModel.PassportNo = user.GetPassportNo();
|
||||
userInfoViewModel.PassportExpiryDate = user.GetPassportExpiryDate();
|
||||
userInfoViewModel.WorkPermitNo = user.GetWorkPermitNo();
|
||||
userInfoViewModel.WorkPermitEndDate = user.GetWorkPermitEndDate();
|
||||
userInfoViewModel.RegistrationNo = user.GetRegistrationNo();
|
||||
userInfoViewModel.EmploymentType = user.GetEmploymentType();
|
||||
userInfoViewModel.ContractType = user.GetContractType();
|
||||
userInfoViewModel.ContractEndDate = user.GetContractEndDate();
|
||||
userInfoViewModel.ProbationEndDate = user.GetProbationEndDate();
|
||||
userInfoViewModel.SeniorityStartDate = user.GetSeniorityStartDate();
|
||||
userInfoViewModel.TerminationReasonId = user.GetTerminationReasonId();
|
||||
userInfoViewModel.TerminationNote = user.GetTerminationNote();
|
||||
userInfoViewModel.ShiftId = user.GetShiftId();
|
||||
userInfoViewModel.PdksCardNo = user.GetPdksCardNo();
|
||||
userInfoViewModel.DrivingLicenseClass = user.GetDrivingLicenseClass();
|
||||
userInfoViewModel.DrivingLicenseNo = user.GetDrivingLicenseNo();
|
||||
userInfoViewModel.DrivingLicenseIssueDate = user.GetDrivingLicenseIssueDate();
|
||||
userInfoViewModel.DrivingLicenseExpiryDate = user.GetDrivingLicenseExpiryDate();
|
||||
|
||||
return userInfoViewModel;
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1622,6 +1622,145 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency
|
|||
}
|
||||
#endregion
|
||||
|
||||
#region TerminationReason
|
||||
listFormName = AppCodes.Definitions.TerminationReason;
|
||||
if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == listFormName))
|
||||
{
|
||||
var listForm = await _listFormRepository.InsertAsync(
|
||||
new ListForm()
|
||||
{
|
||||
ListFormType = ListFormTypeEnum.List,
|
||||
PageSize = 10,
|
||||
ExportJson = DefaultExportJson,
|
||||
IsSubForm = false,
|
||||
ShowNote = false,
|
||||
LayoutJson = DefaultLayoutJson(),
|
||||
CultureName = LanguageCodes.En,
|
||||
ListFormCode = listFormName,
|
||||
Name = listFormName,
|
||||
Title = listFormName,
|
||||
DataSourceCode = SeedConsts.DataSources.DefaultCode,
|
||||
IsTenant = false,
|
||||
IsBranch = false,
|
||||
IsOrganizationUnit = false,
|
||||
Description = $"{listFormName}.Description",
|
||||
SelectCommandType = SelectCommandTypeEnum.Table,
|
||||
SelectCommand = TableNameResolver.GetFullTableName(nameof(TableNameEnum.TerminationReason)),
|
||||
KeyFieldName = "Id",
|
||||
KeyFieldDbSourceType = DbType.Guid,
|
||||
SeedFilePath = SeedPathResolver.GetDataFilePath(listFormName),
|
||||
SeedSyncInsert = false,
|
||||
SeedSyncUpdate = false,
|
||||
SeedSyncDelete = false,
|
||||
DefaultFilter = DefaultFilterJson,
|
||||
SortMode = GridOptions.SortModeSingle,
|
||||
FilterRowJson = DefaultFilterRowJson(),
|
||||
HeaderFilterJson = DefaultHeaderFilterJson(),
|
||||
SearchPanelJson = DefaultSearchPanelJson(),
|
||||
GroupPanelJson = DefaultGroupPanelJson(),
|
||||
SelectionJson = DefaultSelectionSingleJson,
|
||||
ColumnOptionJson = DefaultColumnOptionJson(),
|
||||
PermissionJson = DefaultPermissionJson(listFormName),
|
||||
DeleteCommand = DefaultDeleteCommand(nameof(TableNameEnum.TerminationReason)),
|
||||
DeleteFieldsDefaultValueJson = DefaultDeleteFieldsDefaultValueJson(),
|
||||
PagerOptionJson = DefaultPagerOptionJson,
|
||||
EditingOptionJson = DefaultEditingOptionJson(listFormName, 500, 350, true, true, true, true, false),
|
||||
EditingFormJson = JsonSerializer.Serialize(new List<EditingFormDto>
|
||||
{
|
||||
new() {
|
||||
Order = 1, ColCount = 1, ColSpan = 1, ItemType = "group" },
|
||||
}),
|
||||
InsertFieldsDefaultValueJson = DefaultInsertFieldsDefaultValueJson(),
|
||||
FormFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] {
|
||||
new() { FieldName = "IsActive", FieldDbType = DbType.Boolean, Value = "true", CustomValueType = FieldCustomValueTypeEnum.Value },
|
||||
}),
|
||||
});
|
||||
|
||||
#region TerminationReason Fields
|
||||
await _listFormFieldRepository.InsertManyAsync([
|
||||
new() {
|
||||
ListFormCode = listForm.ListFormCode,
|
||||
CultureName = LanguageCodes.En,
|
||||
SourceDbType = DbType.Guid,
|
||||
FieldName = "Id",
|
||||
CaptionName = "App.Listform.ListformField.Id",
|
||||
Width = 0,
|
||||
ListOrderNo = 1,
|
||||
Visible = false,
|
||||
IsActive = true,
|
||||
|
||||
ColumnCustomizationJson = DefaultColumnCustomizationJson,
|
||||
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
|
||||
PivotSettingsJson = DefaultPivotSettingsJson
|
||||
},
|
||||
new() {
|
||||
ListFormCode = listForm.ListFormCode,
|
||||
CultureName = LanguageCodes.En,
|
||||
SourceDbType = DbType.String,
|
||||
FieldName = "Code",
|
||||
EditGroupOrderNo = 1,
|
||||
EditOrderNo = 1,
|
||||
EditorType2 = EditorTypes.dxTextBox,
|
||||
ColSpan = 1,
|
||||
CaptionName = "App.Listform.ListformField.Code",
|
||||
Width = 0,
|
||||
ListOrderNo = 2,
|
||||
Visible = true,
|
||||
IsActive = true,
|
||||
|
||||
AllowSearch = true,
|
||||
SortIndex = 1,
|
||||
SortDirection = GridColumnOptions.SortOrderAsc,
|
||||
ValidationRuleJson = DefaultValidationRuleRequiredJson,
|
||||
ColumnCustomizationJson = DefaultColumnCustomizationJson,
|
||||
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
|
||||
PivotSettingsJson = DefaultPivotSettingsJson
|
||||
},
|
||||
new() {
|
||||
ListFormCode = listForm.ListFormCode,
|
||||
CultureName = LanguageCodes.En,
|
||||
SourceDbType = DbType.String,
|
||||
FieldName = "Name",
|
||||
EditGroupOrderNo = 1,
|
||||
EditOrderNo = 2,
|
||||
EditorType2 = EditorTypes.dxTextBox,
|
||||
ColSpan = 1,
|
||||
CaptionName = "App.Listform.ListformField.Name",
|
||||
Width = 0,
|
||||
ListOrderNo = 3,
|
||||
Visible = true,
|
||||
IsActive = true,
|
||||
|
||||
AllowSearch = true,
|
||||
ValidationRuleJson = DefaultValidationRuleRequiredJson,
|
||||
ColumnCustomizationJson = DefaultColumnCustomizationJson,
|
||||
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
|
||||
PivotSettingsJson = DefaultPivotSettingsJson
|
||||
},
|
||||
new() {
|
||||
ListFormCode = listForm.ListFormCode,
|
||||
CultureName = LanguageCodes.En,
|
||||
SourceDbType = DbType.Boolean,
|
||||
FieldName = "IsActive",
|
||||
EditGroupOrderNo = 1,
|
||||
EditOrderNo = 3,
|
||||
EditorType2 = EditorTypes.dxCheckBox,
|
||||
ColSpan = 1,
|
||||
CaptionName = "App.Listform.ListformField.IsActive",
|
||||
Width = 0,
|
||||
ListOrderNo = 4,
|
||||
Visible = true,
|
||||
IsActive = true,
|
||||
|
||||
ColumnCustomizationJson = DefaultColumnCustomizationJson,
|
||||
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
|
||||
PivotSettingsJson = DefaultPivotSettingsJson
|
||||
},
|
||||
]);
|
||||
#endregion
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Currency
|
||||
listFormName = AppCodes.Definitions.Currency;
|
||||
if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == listFormName))
|
||||
|
|
@ -4377,6 +4516,7 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency
|
|||
new() { Key=3, Name="App.StaticLookup.NotificationWorker" },
|
||||
new() { Key=4, Name="App.StaticLookup.SessionCleanupWorker" },
|
||||
new() { Key=5, Name="App.StaticLookup.BackupWorker" },
|
||||
new() { Key=6, Name="App.StaticLookup.ProbationReminderWorker" },
|
||||
}),
|
||||
}),
|
||||
ValidationRuleJson = DefaultValidationRuleRequiredJson,
|
||||
|
|
|
|||
|
|
@ -150,7 +150,6 @@ public class PlatformIdentityDataSeeder : IdentityDataSeeder
|
|||
adminUser.SetNationality(PlatformConsts.AbpIdentity.User.AdminNationalityDefaultValue);
|
||||
adminUser.SetBloodType(PlatformConsts.AbpIdentity.User.AdminBloodTypeDefaultValue);
|
||||
adminUser.SetEducationLevel(PlatformConsts.AbpIdentity.User.AdminEducationLevelDefaultValue);
|
||||
adminUser.SetGraduationSchool(PlatformConsts.AbpIdentity.User.AdminGraduationSchoolDefaultValue);
|
||||
adminUser.SetHomeAddress(PlatformConsts.AbpIdentity.User.AdminHomeAddressDefaultValue);
|
||||
adminUser.SetBirthDate(PlatformConsts.AbpIdentity.User.AdminBirthDateDefaultValue);
|
||||
adminUser.SetBirthPlace(PlatformConsts.AbpIdentity.User.AdminBirthPlaceDefaultValue);
|
||||
|
|
|
|||
|
|
@ -101,5 +101,13 @@ public enum TableNameEnum
|
|||
UserWorkExperience,
|
||||
UserPeriodicExamination,
|
||||
UserPatientProtocol,
|
||||
UserSickLeave
|
||||
UserSickLeave,
|
||||
UserEducation,
|
||||
UserLanguage,
|
||||
UserSkill,
|
||||
UserCertificate,
|
||||
UserFamilyMember,
|
||||
UserEmergencyContact,
|
||||
UserBenefit,
|
||||
TerminationReason
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,5 +7,6 @@ public enum WorkerTypeEnum
|
|||
NotificationWorker = 3,
|
||||
SessionCleanupWorker = 4,
|
||||
BackupWorker = 5,
|
||||
ProbationReminderWorker = 6,
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -116,7 +116,6 @@ public static class PlatformConsts
|
|||
public const string TelegramChatId = "TelegramChatId";
|
||||
public const string HomeAddress = "HomeAddress";
|
||||
public const string EducationLevel = "EducationLevel";
|
||||
public const string GraduationSchool = "GraduationSchool";
|
||||
public const string BloodType = "BloodType";
|
||||
public const string MotherHealthStatus = "MotherHealthStatus";
|
||||
public const string MotherHealthNote = "MotherHealthNote";
|
||||
|
|
@ -221,6 +220,40 @@ public static class PlatformConsts
|
|||
public const string MaritalStatus = "MaritalStatus";
|
||||
public const string MarriageDate = "MarriageDate";
|
||||
|
||||
public const string SecondaryEmail = "SecondaryEmail";
|
||||
public const string SecondaryPhoneNumber = "SecondaryPhoneNumber";
|
||||
public const string MilitaryStatus = "MilitaryStatus";
|
||||
public const string MilitaryPostponeEndDate = "MilitaryPostponeEndDate";
|
||||
public const string IsDisabled = "IsDisabled";
|
||||
public const string DisabilityRate = "DisabilityRate";
|
||||
public const string DisabilityReport = "DisabilityReport";
|
||||
public const string DisabilityReportFileName = "DisabilityReportFileName";
|
||||
public const string PassportNo = "PassportNo";
|
||||
public const string PassportExpiryDate = "PassportExpiryDate";
|
||||
public const string WorkPermitNo = "WorkPermitNo";
|
||||
public const string WorkPermitEndDate = "WorkPermitEndDate";
|
||||
|
||||
public const string RegistrationNo = "RegistrationNo";
|
||||
public const string EmploymentType = "EmploymentType";
|
||||
public const string ContractType = "ContractType";
|
||||
public const string ContractEndDate = "ContractEndDate";
|
||||
public const string ProbationEndDate = "ProbationEndDate";
|
||||
public const string SeniorityStartDate = "SeniorityStartDate";
|
||||
public const string TerminationReasonId = "TerminationReasonId";
|
||||
public const string TerminationNote = "TerminationNote";
|
||||
public const string ShiftId = "ShiftId";
|
||||
public const string PdksCardNo = "PdksCardNo";
|
||||
public const string DrivingLicenseClass = "DrivingLicenseClass";
|
||||
public const string DrivingLicenseNo = "DrivingLicenseNo";
|
||||
public const string DrivingLicenseIssueDate = "DrivingLicenseIssueDate";
|
||||
public const string DrivingLicenseExpiryDate = "DrivingLicenseExpiryDate";
|
||||
|
||||
public const string BankName = "BankName";
|
||||
public const string Iban = "Iban";
|
||||
public const string SalaryType = "SalaryType";
|
||||
public const string GrossSalary = "GrossSalary";
|
||||
public const string SalaryCurrency = "SalaryCurrency";
|
||||
|
||||
public const string UserLockedOutMessage = GroupName + ".UserLockedOutMessage";
|
||||
public const string InvalidUserNameOrPassword = GroupName + ".InvalidUserNameOrPassword";
|
||||
public const string ResendEmailConfirmedError = GroupName + ".ResendEmailConfirmedError";
|
||||
|
|
@ -252,7 +285,6 @@ public static class PlatformConsts
|
|||
public const string AdminNationalityDefaultValue = "Türkiye";
|
||||
public const string AdminBloodTypeDefaultValue = "B Rh+";
|
||||
public const string AdminEducationLevelDefaultValue = "Yüksek Lisans";
|
||||
public const string AdminGraduationSchoolDefaultValue = "Boğaziçi Üniversitesi";
|
||||
public const string AdminHomeAddressDefaultValue = "İstanbul, Türkiye";
|
||||
public static readonly DateTime AdminBirthDateDefaultValue = new(1981, 8, 27);
|
||||
public const string AdminBirthPlaceDefaultValue = "Kadıköy, İstanbul";
|
||||
|
|
@ -473,7 +505,8 @@ public static class PlatformConsts
|
|||
|
||||
public static class Intranet
|
||||
{
|
||||
public const string Default = Prefix.App + ".Intranet";
|
||||
// Intranet Hr modulundedir; kod modul kokunu tasir (tablo Hr_T_*, yetki App.Hr grubu).
|
||||
public const string Default = Prefix.App + ".Hr.Intranet";
|
||||
|
||||
public const string Announcement = Default + ".Announcement";
|
||||
|
||||
|
|
@ -503,6 +536,7 @@ public static class PlatformConsts
|
|||
public const string Country = Default + ".Country";
|
||||
public const string City = Default + ".City";
|
||||
public const string District = Default + ".District";
|
||||
public const string TerminationReason = Default + ".TerminationReason";
|
||||
|
||||
public const string Sector = Default + ".Sector";
|
||||
public const string UomCategory = Default + ".UomCategory";
|
||||
|
|
@ -704,6 +738,13 @@ public static class PlatformConsts
|
|||
public const string UserPeriodicExamination = Default + ".UserPeriodicExamination";
|
||||
public const string UserPatientProtocol = Default + ".UserPatientProtocol";
|
||||
public const string UserSickLeave = Default + ".UserSickLeave";
|
||||
public const string UserEducation = Default + ".UserEducation";
|
||||
public const string UserLanguage = Default + ".UserLanguage";
|
||||
public const string UserSkill = Default + ".UserSkill";
|
||||
public const string UserCertificate = Default + ".UserCertificate";
|
||||
public const string UserFamilyMember = Default + ".UserFamilyMember";
|
||||
public const string UserEmergencyContact = Default + ".UserEmergencyContact";
|
||||
public const string UserBenefit = Default + ".UserBenefit";
|
||||
}
|
||||
|
||||
public static class Reports
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ public static class TableNameResolver
|
|||
{ nameof(TableNameEnum.Country), (TablePrefix.PlatformByName, MenuPrefix.Sas) },
|
||||
{ nameof(TableNameEnum.City), (TablePrefix.PlatformByName, MenuPrefix.Sas) },
|
||||
{ nameof(TableNameEnum.District), (TablePrefix.PlatformByName, MenuPrefix.Sas) },
|
||||
{ nameof(TableNameEnum.TerminationReason), (TablePrefix.PlatformByName, MenuPrefix.Sas) },
|
||||
{ nameof(TableNameEnum.Branch), (TablePrefix.TenantByName, MenuPrefix.Sas) },
|
||||
{ nameof(TableNameEnum.BranchUsers), (TablePrefix.TenantByName, MenuPrefix.Sas) },
|
||||
{ nameof(TableNameEnum.SettingDefinition), (TablePrefix.PlatformByName, MenuPrefix.Sas) },
|
||||
|
|
@ -87,6 +88,13 @@ public static class TableNameResolver
|
|||
{ nameof(TableNameEnum.UserPeriodicExamination), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.UserPatientProtocol), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.UserSickLeave), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.UserEducation), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.UserLanguage), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.UserSkill), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.UserCertificate), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.UserFamilyMember), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.UserEmergencyContact), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.UserBenefit), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.NotificationTemplate), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.NotificationType), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.NotificationRule), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
|
|
@ -94,28 +102,28 @@ public static class TableNameResolver
|
|||
|
||||
// 🔹 INTRANET TABLOLARI
|
||||
{ nameof(TableNameEnum.IntranetWidget), (TablePrefix.TenantByName, MenuPrefix.Sas) },
|
||||
{ nameof(TableNameEnum.Announcement), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.AnnouncementComment), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.AnnouncementLike), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.Survey), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.SurveyQuestion), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.SurveyQuestionOption), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.SurveyResponse), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.SurveyAnswer), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.SocialPost), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.SocialLocation), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.SocialMedia), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.SocialPollOption), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.SocialComment), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.SocialLike), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.EventLike), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.EventCategory), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.EventType), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.Event), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.EventPhoto), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.EventComment), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.MessengerConversation), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.MessengerConversationMessage), (TablePrefix.TenantByName, MenuPrefix.Administration) },
|
||||
{ nameof(TableNameEnum.Announcement), (TablePrefix.TenantByName, MenuPrefix.Hr) },
|
||||
{ nameof(TableNameEnum.AnnouncementComment), (TablePrefix.TenantByName, MenuPrefix.Hr) },
|
||||
{ nameof(TableNameEnum.AnnouncementLike), (TablePrefix.TenantByName, MenuPrefix.Hr) },
|
||||
{ nameof(TableNameEnum.Survey), (TablePrefix.TenantByName, MenuPrefix.Hr) },
|
||||
{ nameof(TableNameEnum.SurveyQuestion), (TablePrefix.TenantByName, MenuPrefix.Hr) },
|
||||
{ nameof(TableNameEnum.SurveyQuestionOption), (TablePrefix.TenantByName, MenuPrefix.Hr) },
|
||||
{ nameof(TableNameEnum.SurveyResponse), (TablePrefix.TenantByName, MenuPrefix.Hr) },
|
||||
{ nameof(TableNameEnum.SurveyAnswer), (TablePrefix.TenantByName, MenuPrefix.Hr) },
|
||||
{ nameof(TableNameEnum.SocialPost), (TablePrefix.TenantByName, MenuPrefix.Hr) },
|
||||
{ nameof(TableNameEnum.SocialLocation), (TablePrefix.TenantByName, MenuPrefix.Hr) },
|
||||
{ nameof(TableNameEnum.SocialMedia), (TablePrefix.TenantByName, MenuPrefix.Hr) },
|
||||
{ nameof(TableNameEnum.SocialPollOption), (TablePrefix.TenantByName, MenuPrefix.Hr) },
|
||||
{ nameof(TableNameEnum.SocialComment), (TablePrefix.TenantByName, MenuPrefix.Hr) },
|
||||
{ nameof(TableNameEnum.SocialLike), (TablePrefix.TenantByName, MenuPrefix.Hr) },
|
||||
{ nameof(TableNameEnum.EventLike), (TablePrefix.TenantByName, MenuPrefix.Hr) },
|
||||
{ nameof(TableNameEnum.EventCategory), (TablePrefix.TenantByName, MenuPrefix.Hr) },
|
||||
{ nameof(TableNameEnum.EventType), (TablePrefix.TenantByName, MenuPrefix.Hr) },
|
||||
{ nameof(TableNameEnum.Event), (TablePrefix.TenantByName, MenuPrefix.Hr) },
|
||||
{ nameof(TableNameEnum.EventPhoto), (TablePrefix.TenantByName, MenuPrefix.Hr) },
|
||||
{ nameof(TableNameEnum.EventComment), (TablePrefix.TenantByName, MenuPrefix.Hr) },
|
||||
{ nameof(TableNameEnum.MessengerConversation), (TablePrefix.TenantByName, MenuPrefix.Hr) },
|
||||
{ nameof(TableNameEnum.MessengerConversationMessage), (TablePrefix.TenantByName, MenuPrefix.Hr) },
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -133,6 +133,10 @@ public class PlatformBackgroundWorker : PlatformDomainService, IPlatformBackgrou
|
|||
{
|
||||
await LazyServiceProvider.GetRequiredService<ISessionCleanupWorker>().StartAsync(cancellationToken);
|
||||
}
|
||||
else if (Worker.WorkerType == WorkerTypeEnum.ProbationReminderWorker)
|
||||
{
|
||||
await LazyServiceProvider.GetRequiredService<ProbationReminderWorker>().StartAsync(cancellationToken);
|
||||
}
|
||||
|
||||
// Call AfterSp
|
||||
if (!Worker.AfterSp.IsNullOrWhiteSpace())
|
||||
|
|
|
|||
|
|
@ -0,0 +1,57 @@
|
|||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.Localization;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Sozsoft.Notifications.Domain;
|
||||
using Sozsoft.Notifications.Entities;
|
||||
using Sozsoft.Platform.Extensions;
|
||||
using Sozsoft.Platform.Localization;
|
||||
using Volo.Abp.DependencyInjection;
|
||||
using Volo.Abp.Domain.Repositories;
|
||||
using Volo.Abp.Identity;
|
||||
using Volo.Abp.Timing;
|
||||
|
||||
namespace Sozsoft.Platform.BackgroundWorkers;
|
||||
|
||||
/// <summary>
|
||||
/// Deneme suresi biten calisanlar icin hatirlatma. Gunluk calisir ve bitisine tam
|
||||
/// <see cref="ReminderDays"/> gun kalan her calisan icin bildirim tipinin kurallarini isletir;
|
||||
/// alici ve kanal kuraldan gelir, boylece kimin haberdar olacagi ekrandan degistirilir.
|
||||
/// Gun esitligi aranir, aralik degil: is gunde bir kez calistigi icin ayni calisan icin tek
|
||||
/// bildirim uretilir.
|
||||
/// </summary>
|
||||
public class ProbationReminderWorker(
|
||||
IReadOnlyRepository<IdentityUser, Guid> userRepository,
|
||||
IReadOnlyRepository<NotificationType, Guid> notificationTypeRepository,
|
||||
INotificationManager notificationManager,
|
||||
IStringLocalizer<PlatformResource> localizer,
|
||||
IClock clock,
|
||||
ILogger<ProbationReminderWorker> logger) : ITransientDependency
|
||||
{
|
||||
public const string NotificationTypeName = "DenemeSuresiBitiyor";
|
||||
public const int ReminderDays = 15;
|
||||
|
||||
public async Task StartAsync(CancellationToken cancellationToken = default)
|
||||
{
|
||||
var notificationType = await notificationTypeRepository.FirstOrDefaultAsync(
|
||||
a => a.Name == NotificationTypeName, cancellationToken);
|
||||
|
||||
// Tip kiraciya aittir; silinmis ya da hic kopyalanmamissa hatirlatma kapatilmis sayilir.
|
||||
if (notificationType is null)
|
||||
{
|
||||
logger.LogInformation("Notification type {Name} not found, probation reminder skipped.", NotificationTypeName);
|
||||
return;
|
||||
}
|
||||
|
||||
var targetDate = clock.Now.Date.AddDays(ReminderDays);
|
||||
var users = await userRepository.GetListAsync(a => a.IsActive, cancellationToken: cancellationToken);
|
||||
|
||||
foreach (var user in users.Where(u => u.GetProbationEndDate()?.Date == targetDate && u.GetTerminationDate() is null))
|
||||
{
|
||||
var message = localizer["App.Notifications.ProbationEnding", $"{user.Name} {user.Surname}".Trim(), targetDate.ToString("dd.MM.yyyy")];
|
||||
await notificationManager.SendNotificationAsync(notificationType.Id, message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -325,7 +325,8 @@ public static class SeedConsts
|
|||
|
||||
public static class Intranet
|
||||
{
|
||||
public const string Default = Prefix.App + ".Intranet";
|
||||
// Intranet Hr modulundedir; kod modul kokunu tasir (tablo Hr_T_*, yetki App.Hr grubu).
|
||||
public const string Default = Prefix.App + ".Hr.Intranet";
|
||||
|
||||
public const string Announcement = Default + ".Announcement";
|
||||
public const string AnnouncementLike = Announcement + ".AnnouncementLike";
|
||||
|
|
@ -364,6 +365,7 @@ public static class SeedConsts
|
|||
public const string Country = Default + ".Country";
|
||||
public const string City = Default + ".City";
|
||||
public const string District = Default + ".District";
|
||||
public const string TerminationReason = Default + ".TerminationReason";
|
||||
|
||||
public const string Sector = Default + ".Sector";
|
||||
public const string UomCategory = Default + ".UomCategory";
|
||||
|
|
@ -498,6 +500,13 @@ public static class SeedConsts
|
|||
public const string UserPeriodicExamination = Default + ".UserPeriodicExamination";
|
||||
public const string UserPatientProtocol = Default + ".UserPatientProtocol";
|
||||
public const string UserSickLeave = Default + ".UserSickLeave";
|
||||
public const string UserEducation = Default + ".UserEducation";
|
||||
public const string UserLanguage = Default + ".UserLanguage";
|
||||
public const string UserSkill = Default + ".UserSkill";
|
||||
public const string UserCertificate = Default + ".UserCertificate";
|
||||
public const string UserFamilyMember = Default + ".UserFamilyMember";
|
||||
public const string UserEmergencyContact = Default + ".UserEmergencyContact";
|
||||
public const string UserBenefit = Default + ".UserBenefit";
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
using System;
|
||||
using Volo.Abp.Domain.Entities.Auditing;
|
||||
|
||||
namespace Sozsoft.Platform.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// SGK isten cikis kodlari. Kodlar mevzuatla belirlendigi ve butun kiracilarda ayni oldugu icin
|
||||
/// tanim host tablosundadir; kullanicinin <c>TerminationReasonId</c> alani buraya baglanir.
|
||||
/// </summary>
|
||||
public class TerminationReason : FullAuditedEntity<Guid>
|
||||
{
|
||||
public string Code { get; set; }
|
||||
public string Name { get; set; }
|
||||
public bool IsActive { get; set; }
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
using System;
|
||||
using Volo.Abp.Domain.Entities.Auditing;
|
||||
using Volo.Abp.MultiTenancy;
|
||||
|
||||
namespace Sozsoft.Platform.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// Kullaniciya taninan yan haklar (yemek, yol, ozel saglik sigortasi...). Financial sekmesinde
|
||||
/// ucret bilgisinin altinda listelenir.
|
||||
/// </summary>
|
||||
public class UserBenefit : FullAuditedEntity<Guid>, IMultiTenant
|
||||
{
|
||||
public Guid? TenantId { get; set; }
|
||||
|
||||
public Guid UserId { get; set; }
|
||||
public string BenefitType { get; set; }
|
||||
public decimal? Amount { get; set; }
|
||||
public DateTime? StartDate { get; set; }
|
||||
public DateTime? EndDate { get; set; }
|
||||
public string Note { get; set; }
|
||||
|
||||
Guid? IMultiTenant.TenantId => TenantId;
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
using System;
|
||||
using Volo.Abp.Domain.Entities.Auditing;
|
||||
using Volo.Abp.MultiTenancy;
|
||||
|
||||
namespace Sozsoft.Platform.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// Kullanicinin mesleki yeterlilik belgeleri. Belge adi Hr_T_Certificate tanimindan gelir; o tablo
|
||||
/// low-code oldugu icin EF iliskisi kurulmaz, baglanti ekran lookup'iyla saglanir.
|
||||
/// </summary>
|
||||
public class UserCertificate : FullAuditedEntity<Guid>, IMultiTenant
|
||||
{
|
||||
public Guid? TenantId { get; set; }
|
||||
|
||||
public Guid UserId { get; set; }
|
||||
public Guid CertificateId { get; set; }
|
||||
public string CertificateNo { get; set; }
|
||||
public string IssuedBy { get; set; }
|
||||
public DateTime? IssueDate { get; set; }
|
||||
public DateTime? ExpiryDate { get; set; }
|
||||
public string Note { get; set; }
|
||||
|
||||
Guid? IMultiTenant.TenantId => TenantId;
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
using System;
|
||||
using Volo.Abp.Domain.Entities.Auditing;
|
||||
using Volo.Abp.MultiTenancy;
|
||||
|
||||
namespace Sozsoft.Platform.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// Kullanicinin okudugu okullar. Tek bir mezuniyet alani birden cok okulu tasiyamadigi icin
|
||||
/// egitim gecmisi ayri tabloda tutulur; kullanici detayindaki Education & Skills sekmesinde listelenir.
|
||||
/// </summary>
|
||||
public class UserEducation : FullAuditedEntity<Guid>, IMultiTenant
|
||||
{
|
||||
public Guid? TenantId { get; set; }
|
||||
|
||||
public Guid UserId { get; set; }
|
||||
public string EducationLevel { get; set; }
|
||||
public string SchoolName { get; set; }
|
||||
public string Department { get; set; }
|
||||
public DateTime? StartDate { get; set; }
|
||||
public DateTime? EndDate { get; set; }
|
||||
public bool IsGraduated { get; set; }
|
||||
|
||||
Guid? IMultiTenant.TenantId => TenantId;
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
using System;
|
||||
using Volo.Abp.Domain.Entities.Auditing;
|
||||
using Volo.Abp.MultiTenancy;
|
||||
|
||||
namespace Sozsoft.Platform.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// Acil durumda aranacak kisiler. Aile uyesi olmak zorunda olmadigi icin aile tablosundan ayridir.
|
||||
/// </summary>
|
||||
public class UserEmergencyContact : FullAuditedEntity<Guid>, IMultiTenant
|
||||
{
|
||||
public Guid? TenantId { get; set; }
|
||||
|
||||
public Guid UserId { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string Relationship { get; set; }
|
||||
public string PhoneNumber { get; set; }
|
||||
|
||||
Guid? IMultiTenant.TenantId => TenantId;
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
using System;
|
||||
using Volo.Abp.Domain.Entities.Auditing;
|
||||
using Volo.Abp.MultiTenancy;
|
||||
|
||||
namespace Sozsoft.Platform.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// Kullanicinin esi ve cocuklari. Sigorta ve yan hak kapsami kisi bazinda isaretlenir; bordro ve
|
||||
/// ozel saglik sigortasi listeleri bu bayraklardan uretilir.
|
||||
/// </summary>
|
||||
public class UserFamilyMember : FullAuditedEntity<Guid>, IMultiTenant
|
||||
{
|
||||
public Guid? TenantId { get; set; }
|
||||
|
||||
public Guid UserId { get; set; }
|
||||
public string Relationship { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string Surname { get; set; }
|
||||
public string IdentityNumber { get; set; }
|
||||
public DateTime? BirthDate { get; set; }
|
||||
public string EmploymentStatus { get; set; }
|
||||
public bool IsInsuranceCovered { get; set; }
|
||||
public bool IsBenefitCovered { get; set; }
|
||||
|
||||
Guid? IMultiTenant.TenantId => TenantId;
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
using System;
|
||||
using Volo.Abp.Domain.Entities.Auditing;
|
||||
using Volo.Abp.MultiTenancy;
|
||||
|
||||
namespace Sozsoft.Platform.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// Kullanicinin bildigi yabanci diller. Dil <see cref="Skill"/> tanimindan, seviye o dilin yetenek
|
||||
/// tipine ait <see cref="SkillLevel"/> kayitlarindan (A1-C2) secilir.
|
||||
/// </summary>
|
||||
public class UserLanguage : FullAuditedEntity<Guid>, IMultiTenant
|
||||
{
|
||||
public Guid? TenantId { get; set; }
|
||||
|
||||
public Guid UserId { get; set; }
|
||||
public Guid SkillId { get; set; }
|
||||
public Guid? SkillLevelId { get; set; }
|
||||
public string Note { get; set; }
|
||||
|
||||
Guid? IMultiTenant.TenantId => TenantId;
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
using System;
|
||||
using Volo.Abp.Domain.Entities.Auditing;
|
||||
using Volo.Abp.MultiTenancy;
|
||||
|
||||
namespace Sozsoft.Platform.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// Kullanicinin yetenekleri. Yetenek <see cref="Skill"/> tanimindan secilir; seviye tipten bagimsiz
|
||||
/// 1-5 olcegindedir, boylece farkli tipteki yetenekler ayni olcekte karsilastirilir.
|
||||
/// </summary>
|
||||
public class UserSkill : FullAuditedEntity<Guid>, IMultiTenant
|
||||
{
|
||||
public Guid? TenantId { get; set; }
|
||||
|
||||
public Guid UserId { get; set; }
|
||||
public Guid SkillId { get; set; }
|
||||
public int Level { get; set; }
|
||||
public string Note { get; set; }
|
||||
|
||||
Guid? IMultiTenant.TenantId => TenantId;
|
||||
}
|
||||
|
|
@ -331,16 +331,6 @@ public static class AbpIdentityUserExtensions
|
|||
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.EducationLevel);
|
||||
}
|
||||
|
||||
//GraduationSchool
|
||||
public static void SetGraduationSchool(this IdentityUser user, string value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.GraduationSchool, value);
|
||||
}
|
||||
public static string GetGraduationSchool(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.GraduationSchool);
|
||||
}
|
||||
|
||||
//BloodType
|
||||
public static void SetBloodType(this IdentityUser user, string value)
|
||||
{
|
||||
|
|
@ -1110,5 +1100,314 @@ public static class AbpIdentityUserExtensions
|
|||
{
|
||||
return user.GetProperty<Guid?>(PlatformConsts.AbpIdentity.User.ShiftNightDoctorId);
|
||||
}
|
||||
}
|
||||
|
||||
//SecondaryEmail
|
||||
public static void SetSecondaryEmail(this IdentityUser user, string value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.SecondaryEmail, value);
|
||||
}
|
||||
public static string GetSecondaryEmail(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.SecondaryEmail);
|
||||
}
|
||||
|
||||
//SecondaryPhoneNumber
|
||||
public static void SetSecondaryPhoneNumber(this IdentityUser user, string value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.SecondaryPhoneNumber, value);
|
||||
}
|
||||
public static string GetSecondaryPhoneNumber(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.SecondaryPhoneNumber);
|
||||
}
|
||||
|
||||
//MilitaryStatus
|
||||
public static void SetMilitaryStatus(this IdentityUser user, string value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.MilitaryStatus, value);
|
||||
}
|
||||
public static string GetMilitaryStatus(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.MilitaryStatus);
|
||||
}
|
||||
|
||||
//MilitaryPostponeEndDate
|
||||
public static void SetMilitaryPostponeEndDate(this IdentityUser user, DateTime? value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.MilitaryPostponeEndDate, value);
|
||||
}
|
||||
public static DateTime? GetMilitaryPostponeEndDate(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<DateTime?>(PlatformConsts.AbpIdentity.User.MilitaryPostponeEndDate);
|
||||
}
|
||||
|
||||
//IsDisabled
|
||||
public static void SetIsDisabled(this IdentityUser user, bool value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.IsDisabled, value);
|
||||
}
|
||||
public static bool GetIsDisabled(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<bool>(PlatformConsts.AbpIdentity.User.IsDisabled);
|
||||
}
|
||||
|
||||
//DisabilityRate
|
||||
public static void SetDisabilityRate(this IdentityUser user, int? value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.DisabilityRate, value);
|
||||
}
|
||||
public static int? GetDisabilityRate(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<int?>(PlatformConsts.AbpIdentity.User.DisabilityRate);
|
||||
}
|
||||
|
||||
//DisabilityReport
|
||||
public static void SetDisabilityReport(this IdentityUser user, string value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.DisabilityReport, value);
|
||||
}
|
||||
public static string GetDisabilityReport(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.DisabilityReport);
|
||||
}
|
||||
|
||||
//DisabilityReportFileName
|
||||
public static void SetDisabilityReportFileName(this IdentityUser user, string value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.DisabilityReportFileName, value);
|
||||
}
|
||||
public static string GetDisabilityReportFileName(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.DisabilityReportFileName);
|
||||
}
|
||||
|
||||
//PassportNo
|
||||
public static void SetPassportNo(this IdentityUser user, string value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.PassportNo, value);
|
||||
}
|
||||
public static string GetPassportNo(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.PassportNo);
|
||||
}
|
||||
|
||||
//PassportExpiryDate
|
||||
public static void SetPassportExpiryDate(this IdentityUser user, DateTime? value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.PassportExpiryDate, value);
|
||||
}
|
||||
public static DateTime? GetPassportExpiryDate(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<DateTime?>(PlatformConsts.AbpIdentity.User.PassportExpiryDate);
|
||||
}
|
||||
|
||||
//WorkPermitNo
|
||||
public static void SetWorkPermitNo(this IdentityUser user, string value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.WorkPermitNo, value);
|
||||
}
|
||||
public static string GetWorkPermitNo(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.WorkPermitNo);
|
||||
}
|
||||
|
||||
//WorkPermitEndDate
|
||||
public static void SetWorkPermitEndDate(this IdentityUser user, DateTime? value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.WorkPermitEndDate, value);
|
||||
}
|
||||
public static DateTime? GetWorkPermitEndDate(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<DateTime?>(PlatformConsts.AbpIdentity.User.WorkPermitEndDate);
|
||||
}
|
||||
|
||||
//RegistrationNo
|
||||
public static void SetRegistrationNo(this IdentityUser user, string value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.RegistrationNo, value);
|
||||
}
|
||||
public static string GetRegistrationNo(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.RegistrationNo);
|
||||
}
|
||||
|
||||
//EmploymentType
|
||||
public static void SetEmploymentType(this IdentityUser user, string value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.EmploymentType, value);
|
||||
}
|
||||
public static string GetEmploymentType(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.EmploymentType);
|
||||
}
|
||||
|
||||
//ContractType
|
||||
public static void SetContractType(this IdentityUser user, string value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.ContractType, value);
|
||||
}
|
||||
public static string GetContractType(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.ContractType);
|
||||
}
|
||||
|
||||
//ContractEndDate
|
||||
public static void SetContractEndDate(this IdentityUser user, DateTime? value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.ContractEndDate, value);
|
||||
}
|
||||
public static DateTime? GetContractEndDate(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<DateTime?>(PlatformConsts.AbpIdentity.User.ContractEndDate);
|
||||
}
|
||||
|
||||
//ProbationEndDate
|
||||
public static void SetProbationEndDate(this IdentityUser user, DateTime? value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.ProbationEndDate, value);
|
||||
}
|
||||
public static DateTime? GetProbationEndDate(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<DateTime?>(PlatformConsts.AbpIdentity.User.ProbationEndDate);
|
||||
}
|
||||
|
||||
//SeniorityStartDate
|
||||
public static void SetSeniorityStartDate(this IdentityUser user, DateTime? value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.SeniorityStartDate, value);
|
||||
}
|
||||
public static DateTime? GetSeniorityStartDate(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<DateTime?>(PlatformConsts.AbpIdentity.User.SeniorityStartDate);
|
||||
}
|
||||
|
||||
//TerminationReasonId
|
||||
public static void SetTerminationReasonId(this IdentityUser user, Guid? value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.TerminationReasonId, value);
|
||||
}
|
||||
public static Guid? GetTerminationReasonId(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<Guid?>(PlatformConsts.AbpIdentity.User.TerminationReasonId);
|
||||
}
|
||||
|
||||
//TerminationNote
|
||||
public static void SetTerminationNote(this IdentityUser user, string value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.TerminationNote, value);
|
||||
}
|
||||
public static string GetTerminationNote(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.TerminationNote);
|
||||
}
|
||||
|
||||
//ShiftId
|
||||
public static void SetShiftId(this IdentityUser user, Guid? value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.ShiftId, value);
|
||||
}
|
||||
public static Guid? GetShiftId(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<Guid?>(PlatformConsts.AbpIdentity.User.ShiftId);
|
||||
}
|
||||
|
||||
//PdksCardNo
|
||||
public static void SetPdksCardNo(this IdentityUser user, string value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.PdksCardNo, value);
|
||||
}
|
||||
public static string GetPdksCardNo(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.PdksCardNo);
|
||||
}
|
||||
|
||||
//DrivingLicenseClass
|
||||
public static void SetDrivingLicenseClass(this IdentityUser user, string value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.DrivingLicenseClass, value);
|
||||
}
|
||||
public static string GetDrivingLicenseClass(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.DrivingLicenseClass);
|
||||
}
|
||||
|
||||
//DrivingLicenseNo
|
||||
public static void SetDrivingLicenseNo(this IdentityUser user, string value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.DrivingLicenseNo, value);
|
||||
}
|
||||
public static string GetDrivingLicenseNo(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.DrivingLicenseNo);
|
||||
}
|
||||
|
||||
//DrivingLicenseIssueDate
|
||||
public static void SetDrivingLicenseIssueDate(this IdentityUser user, DateTime? value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.DrivingLicenseIssueDate, value);
|
||||
}
|
||||
public static DateTime? GetDrivingLicenseIssueDate(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<DateTime?>(PlatformConsts.AbpIdentity.User.DrivingLicenseIssueDate);
|
||||
}
|
||||
|
||||
//DrivingLicenseExpiryDate
|
||||
public static void SetDrivingLicenseExpiryDate(this IdentityUser user, DateTime? value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.DrivingLicenseExpiryDate, value);
|
||||
}
|
||||
public static DateTime? GetDrivingLicenseExpiryDate(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<DateTime?>(PlatformConsts.AbpIdentity.User.DrivingLicenseExpiryDate);
|
||||
}
|
||||
|
||||
//BankName
|
||||
public static void SetBankName(this IdentityUser user, string value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.BankName, value);
|
||||
}
|
||||
public static string GetBankName(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.BankName);
|
||||
}
|
||||
|
||||
//Iban
|
||||
public static void SetIban(this IdentityUser user, string value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.Iban, value);
|
||||
}
|
||||
public static string GetIban(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.Iban);
|
||||
}
|
||||
|
||||
//SalaryType
|
||||
public static void SetSalaryType(this IdentityUser user, string value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.SalaryType, value);
|
||||
}
|
||||
public static string GetSalaryType(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.SalaryType);
|
||||
}
|
||||
|
||||
//GrossSalary
|
||||
public static void SetGrossSalary(this IdentityUser user, decimal? value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.GrossSalary, value);
|
||||
}
|
||||
public static decimal? GetGrossSalary(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<decimal?>(PlatformConsts.AbpIdentity.User.GrossSalary);
|
||||
}
|
||||
|
||||
//SalaryCurrency
|
||||
public static void SetSalaryCurrency(this IdentityUser user, string value)
|
||||
{
|
||||
user.SetProperty(PlatformConsts.AbpIdentity.User.SalaryCurrency, value);
|
||||
}
|
||||
public static string GetSalaryCurrency(this IdentityUser user)
|
||||
{
|
||||
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.SalaryCurrency);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ public class PlatformDbContext :
|
|||
public DbSet<Note> Activities { get; set; }
|
||||
public DbSet<IpRestriction> IpRestrictions { get; set; }
|
||||
public DbSet<ContactTitle> ContactTitles { get; set; }
|
||||
public DbSet<TerminationReason> TerminationReasons { get; set; }
|
||||
public DbSet<Currency> Currencies { get; set; }
|
||||
public DbSet<CountryGroup> CountryGroups { get; set; }
|
||||
public DbSet<Country> Countries { get; set; }
|
||||
|
|
@ -103,6 +104,13 @@ public class PlatformDbContext :
|
|||
public DbSet<UserPeriodicExamination> UserPeriodicExaminations { get; set; }
|
||||
public DbSet<UserPatientProtocol> UserPatientProtocols { get; set; }
|
||||
public DbSet<UserSickLeave> UserSickLeaves { get; set; }
|
||||
public DbSet<UserEducation> UserEducations { get; set; }
|
||||
public DbSet<UserLanguage> UserLanguages { get; set; }
|
||||
public DbSet<UserSkill> UserSkills { get; set; }
|
||||
public DbSet<UserCertificate> UserCertificates { get; set; }
|
||||
public DbSet<UserFamilyMember> UserFamilyMembers { get; set; }
|
||||
public DbSet<UserEmergencyContact> UserEmergencyContacts { get; set; }
|
||||
public DbSet<UserBenefit> UserBenefits { get; set; }
|
||||
public DbSet<SkillType> SkillTypes { get; set; }
|
||||
public DbSet<DevRequest> DevRequests { get; set; }
|
||||
public DbSet<Agenda> Agendas { get; set; }
|
||||
|
|
@ -833,6 +841,116 @@ public class PlatformDbContext :
|
|||
b.HasIndex(x => new { x.TenantId, x.UserId });
|
||||
});
|
||||
|
||||
builder.Entity<UserEducation>(b =>
|
||||
{
|
||||
b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.UserEducation)), Prefix.DbSchema);
|
||||
b.ConfigureByConvention();
|
||||
|
||||
b.Property(x => x.UserId).IsRequired();
|
||||
b.Property(x => x.EducationLevel).IsRequired().HasMaxLength(32);
|
||||
b.Property(x => x.SchoolName).IsRequired().HasMaxLength(256);
|
||||
b.Property(x => x.Department).IsRequired(false).HasMaxLength(256);
|
||||
b.Property(x => x.IsGraduated).HasDefaultValue(true);
|
||||
|
||||
b.HasIndex(x => new { x.TenantId, x.UserId });
|
||||
});
|
||||
|
||||
builder.Entity<UserLanguage>(b =>
|
||||
{
|
||||
b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.UserLanguage)), Prefix.DbSchema);
|
||||
b.ConfigureByConvention();
|
||||
|
||||
b.Property(x => x.UserId).IsRequired();
|
||||
b.Property(x => x.SkillId).IsRequired();
|
||||
b.Property(x => x.Note).IsRequired(false).HasMaxLength(512);
|
||||
|
||||
b.HasIndex(x => new { x.TenantId, x.UserId, x.SkillId }).IsUnique().HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.HasOne<Skill>()
|
||||
.WithMany()
|
||||
.HasForeignKey(x => x.SkillId)
|
||||
.OnDelete(DeleteBehavior.Restrict);
|
||||
|
||||
b.HasOne<SkillLevel>()
|
||||
.WithMany()
|
||||
.HasForeignKey(x => x.SkillLevelId)
|
||||
.OnDelete(DeleteBehavior.Restrict);
|
||||
});
|
||||
|
||||
builder.Entity<UserSkill>(b =>
|
||||
{
|
||||
b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.UserSkill)), Prefix.DbSchema);
|
||||
b.ConfigureByConvention();
|
||||
|
||||
b.Property(x => x.UserId).IsRequired();
|
||||
b.Property(x => x.SkillId).IsRequired();
|
||||
b.Property(x => x.Level).IsRequired();
|
||||
b.Property(x => x.Note).IsRequired(false).HasMaxLength(512);
|
||||
|
||||
b.HasIndex(x => new { x.TenantId, x.UserId, x.SkillId }).IsUnique().HasFilter("[IsDeleted] = 0");
|
||||
b.ToTable(t => t.HasCheckConstraint("CK_UserSkill_Level", "[Level] BETWEEN 1 AND 5"));
|
||||
|
||||
b.HasOne<Skill>()
|
||||
.WithMany()
|
||||
.HasForeignKey(x => x.SkillId)
|
||||
.OnDelete(DeleteBehavior.Restrict);
|
||||
});
|
||||
|
||||
builder.Entity<UserCertificate>(b =>
|
||||
{
|
||||
b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.UserCertificate)), Prefix.DbSchema);
|
||||
b.ConfigureByConvention();
|
||||
|
||||
b.Property(x => x.UserId).IsRequired();
|
||||
b.Property(x => x.CertificateId).IsRequired();
|
||||
b.Property(x => x.CertificateNo).IsRequired(false).HasMaxLength(64);
|
||||
b.Property(x => x.IssuedBy).IsRequired(false).HasMaxLength(256);
|
||||
b.Property(x => x.Note).IsRequired(false).HasMaxLength(512);
|
||||
|
||||
b.HasIndex(x => new { x.TenantId, x.UserId });
|
||||
});
|
||||
|
||||
builder.Entity<UserFamilyMember>(b =>
|
||||
{
|
||||
b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.UserFamilyMember)), Prefix.DbSchema);
|
||||
b.ConfigureByConvention();
|
||||
|
||||
b.Property(x => x.UserId).IsRequired();
|
||||
b.Property(x => x.Relationship).IsRequired().HasMaxLength(16);
|
||||
b.Property(x => x.Name).IsRequired().HasMaxLength(128);
|
||||
b.Property(x => x.Surname).IsRequired(false).HasMaxLength(128);
|
||||
b.Property(x => x.IdentityNumber).IsRequired(false).HasMaxLength(15);
|
||||
b.Property(x => x.EmploymentStatus).IsRequired(false).HasMaxLength(16);
|
||||
|
||||
b.HasIndex(x => new { x.TenantId, x.UserId });
|
||||
});
|
||||
|
||||
builder.Entity<UserEmergencyContact>(b =>
|
||||
{
|
||||
b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.UserEmergencyContact)), Prefix.DbSchema);
|
||||
b.ConfigureByConvention();
|
||||
|
||||
b.Property(x => x.UserId).IsRequired();
|
||||
b.Property(x => x.Name).IsRequired().HasMaxLength(256);
|
||||
b.Property(x => x.Relationship).IsRequired().HasMaxLength(16);
|
||||
b.Property(x => x.PhoneNumber).IsRequired().HasMaxLength(32);
|
||||
|
||||
b.HasIndex(x => new { x.TenantId, x.UserId });
|
||||
});
|
||||
|
||||
builder.Entity<UserBenefit>(b =>
|
||||
{
|
||||
b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.UserBenefit)), Prefix.DbSchema);
|
||||
b.ConfigureByConvention();
|
||||
|
||||
b.Property(x => x.UserId).IsRequired();
|
||||
b.Property(x => x.BenefitType).IsRequired().HasMaxLength(32);
|
||||
b.Property(x => x.Amount).HasPrecision(18, 2);
|
||||
b.Property(x => x.Note).IsRequired(false).HasMaxLength(512);
|
||||
|
||||
b.HasIndex(x => new { x.TenantId, x.UserId });
|
||||
});
|
||||
|
||||
// Definitions
|
||||
builder.Entity<Sector>(b =>
|
||||
{
|
||||
|
|
@ -855,6 +973,18 @@ public class PlatformDbContext :
|
|||
b.HasIndex(x => new { x.Title }).IsUnique().HasFilter("[IsDeleted] = 0");
|
||||
});
|
||||
|
||||
builder.Entity<TerminationReason>(b =>
|
||||
{
|
||||
b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.TerminationReason)), Prefix.DbSchema);
|
||||
b.ConfigureByConvention();
|
||||
|
||||
b.Property(x => x.Code).IsRequired().HasMaxLength(8);
|
||||
b.Property(x => x.Name).IsRequired().HasMaxLength(256);
|
||||
b.Property(x => x.IsActive).HasDefaultValue(true);
|
||||
|
||||
b.HasIndex(x => new { x.Code }).IsUnique().HasFilter("[IsDeleted] = 0");
|
||||
});
|
||||
|
||||
builder.Entity<Currency>(b =>
|
||||
{
|
||||
b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.Currency)), Prefix.DbSchema);
|
||||
|
|
|
|||
|
|
@ -310,13 +310,283 @@ public static class PlatformEfCoreEntityExtensionMappings
|
|||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, string>(
|
||||
PlatformConsts.AbpIdentity.User.GraduationSchool,
|
||||
PlatformConsts.AbpIdentity.User.SecondaryEmail,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasMaxLength(256).HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, string>(
|
||||
PlatformConsts.AbpIdentity.User.SecondaryPhoneNumber,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasMaxLength(32).HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, string>(
|
||||
PlatformConsts.AbpIdentity.User.MilitaryStatus,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasMaxLength(16).HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, DateTime?>(
|
||||
PlatformConsts.AbpIdentity.User.MilitaryPostponeEndDate,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, bool>(
|
||||
PlatformConsts.AbpIdentity.User.IsDisabled,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.IsRequired().HasDefaultValue(false);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, int?>(
|
||||
PlatformConsts.AbpIdentity.User.DisabilityRate,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, string>(
|
||||
PlatformConsts.AbpIdentity.User.DisabilityReport,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, string>(
|
||||
PlatformConsts.AbpIdentity.User.DisabilityReportFileName,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasMaxLength(256).HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, string>(
|
||||
PlatformConsts.AbpIdentity.User.PassportNo,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasMaxLength(32).HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, DateTime?>(
|
||||
PlatformConsts.AbpIdentity.User.PassportExpiryDate,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, string>(
|
||||
PlatformConsts.AbpIdentity.User.WorkPermitNo,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasMaxLength(64).HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, DateTime?>(
|
||||
PlatformConsts.AbpIdentity.User.WorkPermitEndDate,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, string>(
|
||||
PlatformConsts.AbpIdentity.User.RegistrationNo,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasMaxLength(32).HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, string>(
|
||||
PlatformConsts.AbpIdentity.User.EmploymentType,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasMaxLength(16).HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, string>(
|
||||
PlatformConsts.AbpIdentity.User.ContractType,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasMaxLength(16).HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, DateTime?>(
|
||||
PlatformConsts.AbpIdentity.User.ContractEndDate,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, DateTime?>(
|
||||
PlatformConsts.AbpIdentity.User.ProbationEndDate,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, DateTime?>(
|
||||
PlatformConsts.AbpIdentity.User.SeniorityStartDate,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, Guid?>(
|
||||
PlatformConsts.AbpIdentity.User.TerminationReasonId,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, string>(
|
||||
PlatformConsts.AbpIdentity.User.TerminationNote,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasMaxLength(512).HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, Guid?>(
|
||||
PlatformConsts.AbpIdentity.User.ShiftId,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, string>(
|
||||
PlatformConsts.AbpIdentity.User.PdksCardNo,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasMaxLength(64).HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, string>(
|
||||
PlatformConsts.AbpIdentity.User.DrivingLicenseClass,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasMaxLength(64).HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, string>(
|
||||
PlatformConsts.AbpIdentity.User.DrivingLicenseNo,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasMaxLength(32).HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, DateTime?>(
|
||||
PlatformConsts.AbpIdentity.User.DrivingLicenseIssueDate,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, DateTime?>(
|
||||
PlatformConsts.AbpIdentity.User.DrivingLicenseExpiryDate,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, string>(
|
||||
PlatformConsts.AbpIdentity.User.BankName,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasMaxLength(128).HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, string>(
|
||||
PlatformConsts.AbpIdentity.User.Iban,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasMaxLength(34).HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, string>(
|
||||
PlatformConsts.AbpIdentity.User.SalaryType,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasMaxLength(16).HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, decimal?>(
|
||||
PlatformConsts.AbpIdentity.User.GrossSalary,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasPrecision(18, 2).HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, string>(
|
||||
PlatformConsts.AbpIdentity.User.SalaryCurrency,
|
||||
(entityBuilder, propertyBuilder) =>
|
||||
{
|
||||
propertyBuilder.HasMaxLength(8).HasDefaultValue(null);
|
||||
}
|
||||
);
|
||||
|
||||
ObjectExtensionManager.Instance
|
||||
.MapEfCoreProperty<IdentityUser, string>(
|
||||
PlatformConsts.AbpIdentity.User.BloodType,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
|
|||
namespace Sozsoft.Platform.Migrations
|
||||
{
|
||||
[DbContext(typeof(PlatformDbContext))]
|
||||
[Migration("20261001063425_Initial")]
|
||||
[Migration("20261002230416_Initial")]
|
||||
partial class Initial
|
||||
{
|
||||
/// <inheritdoc />
|
||||
|
|
@ -930,7 +930,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
.IsUnique()
|
||||
.HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.ToTable("Adm_T_Announcement", (string)null);
|
||||
b.ToTable("Hr_T_Announcement", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.AnnouncementComment", b =>
|
||||
|
|
@ -992,7 +992,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.HasIndex("AnnouncementId");
|
||||
|
||||
b.ToTable("Adm_T_AnnouncementComment", (string)null);
|
||||
b.ToTable("Hr_T_AnnouncementComment", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.AnnouncementLike", b =>
|
||||
|
|
@ -1046,7 +1046,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
.IsUnique()
|
||||
.HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.ToTable("Adm_T_AnnouncementLike", (string)null);
|
||||
b.ToTable("Hr_T_AnnouncementLike", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.BackgroundWorker", b =>
|
||||
|
|
@ -2727,7 +2727,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
.IsUnique()
|
||||
.HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.ToTable("Adm_T_Event", (string)null);
|
||||
b.ToTable("Hr_T_Event", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.EventCategory", b =>
|
||||
|
|
@ -2780,7 +2780,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
.IsUnique()
|
||||
.HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.ToTable("Adm_T_EventCategory", (string)null);
|
||||
b.ToTable("Hr_T_EventCategory", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.EventComment", b =>
|
||||
|
|
@ -2841,7 +2841,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.HasIndex("EventId");
|
||||
|
||||
b.ToTable("Adm_T_EventComment", (string)null);
|
||||
b.ToTable("Hr_T_EventComment", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.EventLike", b =>
|
||||
|
|
@ -2895,7 +2895,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
.IsUnique()
|
||||
.HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.ToTable("Adm_T_EventLike", (string)null);
|
||||
b.ToTable("Hr_T_EventLike", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.EventType", b =>
|
||||
|
|
@ -2948,7 +2948,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
.IsUnique()
|
||||
.HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.ToTable("Adm_T_EventType", (string)null);
|
||||
b.ToTable("Hr_T_EventType", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.GlobalSearch", b =>
|
||||
|
|
@ -4205,7 +4205,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("Adm_T_MessengerConversation", (string)null);
|
||||
b.ToTable("Hr_T_MessengerConversation", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.MessengerConversationMessage", b =>
|
||||
|
|
@ -4284,7 +4284,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.HasIndex("TenantId", "ConversationId", "SentAt");
|
||||
|
||||
b.ToTable("Adm_T_MessengerConversationMessage", (string)null);
|
||||
b.ToTable("Hr_T_MessengerConversationMessage", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.Module", b =>
|
||||
|
|
@ -5378,7 +5378,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.HasIndex("SocialPostId");
|
||||
|
||||
b.ToTable("Adm_T_SocialComment", (string)null);
|
||||
b.ToTable("Hr_T_SocialComment", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.SocialLike", b =>
|
||||
|
|
@ -5432,7 +5432,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
.IsUnique()
|
||||
.HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.ToTable("Adm_T_SocialLike", (string)null);
|
||||
b.ToTable("Hr_T_SocialLike", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.SocialLocation", b =>
|
||||
|
|
@ -5501,7 +5501,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
b.HasIndex("SocialPostId")
|
||||
.IsUnique();
|
||||
|
||||
b.ToTable("Adm_T_SocialLocation", (string)null);
|
||||
b.ToTable("Hr_T_SocialLocation", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.SocialMedia", b =>
|
||||
|
|
@ -5573,7 +5573,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
b.HasIndex("SocialPostId")
|
||||
.IsUnique();
|
||||
|
||||
b.ToTable("Adm_T_SocialMedia", (string)null);
|
||||
b.ToTable("Hr_T_SocialMedia", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.SocialPollOption", b =>
|
||||
|
|
@ -5630,7 +5630,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.HasIndex("SocialMediaId");
|
||||
|
||||
b.ToTable("Adm_T_SocialPollOption", (string)null);
|
||||
b.ToTable("Hr_T_SocialPollOption", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.SocialPost", b =>
|
||||
|
|
@ -5696,7 +5696,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("Adm_T_SocialPost", (string)null);
|
||||
b.ToTable("Hr_T_SocialPost", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.Survey", b =>
|
||||
|
|
@ -5769,7 +5769,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
.IsUnique()
|
||||
.HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.ToTable("Adm_T_Survey", (string)null);
|
||||
b.ToTable("Hr_T_Survey", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.SurveyAnswer", b =>
|
||||
|
|
@ -5833,7 +5833,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.HasIndex("ResponseId");
|
||||
|
||||
b.ToTable("Adm_T_SurveyAnswer", (string)null);
|
||||
b.ToTable("Hr_T_SurveyAnswer", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.SurveyQuestion", b =>
|
||||
|
|
@ -5898,7 +5898,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.HasIndex("SurveyId");
|
||||
|
||||
b.ToTable("Adm_T_SurveyQuestion", (string)null);
|
||||
b.ToTable("Hr_T_SurveyQuestion", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.SurveyQuestionOption", b =>
|
||||
|
|
@ -5955,7 +5955,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.HasIndex("QuestionId");
|
||||
|
||||
b.ToTable("Adm_T_SurveyQuestionOption", (string)null);
|
||||
b.ToTable("Hr_T_SurveyQuestionOption", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.SurveyResponse", b =>
|
||||
|
|
@ -6010,7 +6010,66 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.HasIndex("SurveyId");
|
||||
|
||||
b.ToTable("Adm_T_SurveyResponse", (string)null);
|
||||
b.ToTable("Hr_T_SurveyResponse", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.TerminationReason", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<string>("Code")
|
||||
.IsRequired()
|
||||
.HasMaxLength(8)
|
||||
.HasColumnType("nvarchar(8)");
|
||||
|
||||
b.Property<DateTime>("CreationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("CreationTime");
|
||||
|
||||
b.Property<Guid?>("CreatorId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("CreatorId");
|
||||
|
||||
b.Property<Guid?>("DeleterId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("DeleterId");
|
||||
|
||||
b.Property<DateTime?>("DeletionTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("DeletionTime");
|
||||
|
||||
b.Property<bool>("IsActive")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(true);
|
||||
|
||||
b.Property<bool>("IsDeleted")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(false)
|
||||
.HasColumnName("IsDeleted");
|
||||
|
||||
b.Property<DateTime?>("LastModificationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("LastModificationTime");
|
||||
|
||||
b.Property<Guid?>("LastModifierId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("LastModifierId");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("nvarchar(256)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("Code")
|
||||
.IsUnique()
|
||||
.HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.ToTable("Sas_H_TerminationReason", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.Uom", b =>
|
||||
|
|
@ -6144,6 +6203,427 @@ namespace Sozsoft.Platform.Migrations
|
|||
b.ToTable("Adm_T_UomCategory", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserBenefit", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<decimal?>("Amount")
|
||||
.HasPrecision(18, 2)
|
||||
.HasColumnType("decimal(18,2)");
|
||||
|
||||
b.Property<string>("BenefitType")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("nvarchar(32)");
|
||||
|
||||
b.Property<DateTime>("CreationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("CreationTime");
|
||||
|
||||
b.Property<Guid?>("CreatorId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("CreatorId");
|
||||
|
||||
b.Property<Guid?>("DeleterId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("DeleterId");
|
||||
|
||||
b.Property<DateTime?>("DeletionTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("DeletionTime");
|
||||
|
||||
b.Property<DateTime?>("EndDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<bool>("IsDeleted")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(false)
|
||||
.HasColumnName("IsDeleted");
|
||||
|
||||
b.Property<DateTime?>("LastModificationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("LastModificationTime");
|
||||
|
||||
b.Property<Guid?>("LastModifierId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("LastModifierId");
|
||||
|
||||
b.Property<string>("Note")
|
||||
.HasMaxLength(512)
|
||||
.HasColumnType("nvarchar(512)");
|
||||
|
||||
b.Property<DateTime?>("StartDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<Guid?>("TenantId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("TenantId");
|
||||
|
||||
b.Property<Guid>("UserId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("TenantId", "UserId");
|
||||
|
||||
b.ToTable("Adm_T_UserBenefit", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserCertificate", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<Guid>("CertificateId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<string>("CertificateNo")
|
||||
.HasMaxLength(64)
|
||||
.HasColumnType("nvarchar(64)");
|
||||
|
||||
b.Property<DateTime>("CreationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("CreationTime");
|
||||
|
||||
b.Property<Guid?>("CreatorId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("CreatorId");
|
||||
|
||||
b.Property<Guid?>("DeleterId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("DeleterId");
|
||||
|
||||
b.Property<DateTime?>("DeletionTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("DeletionTime");
|
||||
|
||||
b.Property<DateTime?>("ExpiryDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<bool>("IsDeleted")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(false)
|
||||
.HasColumnName("IsDeleted");
|
||||
|
||||
b.Property<DateTime?>("IssueDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<string>("IssuedBy")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("nvarchar(256)");
|
||||
|
||||
b.Property<DateTime?>("LastModificationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("LastModificationTime");
|
||||
|
||||
b.Property<Guid?>("LastModifierId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("LastModifierId");
|
||||
|
||||
b.Property<string>("Note")
|
||||
.HasMaxLength(512)
|
||||
.HasColumnType("nvarchar(512)");
|
||||
|
||||
b.Property<Guid?>("TenantId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("TenantId");
|
||||
|
||||
b.Property<Guid>("UserId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("TenantId", "UserId");
|
||||
|
||||
b.ToTable("Adm_T_UserCertificate", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserEducation", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<DateTime>("CreationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("CreationTime");
|
||||
|
||||
b.Property<Guid?>("CreatorId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("CreatorId");
|
||||
|
||||
b.Property<Guid?>("DeleterId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("DeleterId");
|
||||
|
||||
b.Property<DateTime?>("DeletionTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("DeletionTime");
|
||||
|
||||
b.Property<string>("Department")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("nvarchar(256)");
|
||||
|
||||
b.Property<string>("EducationLevel")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("nvarchar(32)");
|
||||
|
||||
b.Property<DateTime?>("EndDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<bool>("IsDeleted")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(false)
|
||||
.HasColumnName("IsDeleted");
|
||||
|
||||
b.Property<bool>("IsGraduated")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(true);
|
||||
|
||||
b.Property<DateTime?>("LastModificationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("LastModificationTime");
|
||||
|
||||
b.Property<Guid?>("LastModifierId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("LastModifierId");
|
||||
|
||||
b.Property<string>("SchoolName")
|
||||
.IsRequired()
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("nvarchar(256)");
|
||||
|
||||
b.Property<DateTime?>("StartDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<Guid?>("TenantId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("TenantId");
|
||||
|
||||
b.Property<Guid>("UserId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("TenantId", "UserId");
|
||||
|
||||
b.ToTable("Adm_T_UserEducation", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserEmergencyContact", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<DateTime>("CreationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("CreationTime");
|
||||
|
||||
b.Property<Guid?>("CreatorId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("CreatorId");
|
||||
|
||||
b.Property<Guid?>("DeleterId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("DeleterId");
|
||||
|
||||
b.Property<DateTime?>("DeletionTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("DeletionTime");
|
||||
|
||||
b.Property<bool>("IsDeleted")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(false)
|
||||
.HasColumnName("IsDeleted");
|
||||
|
||||
b.Property<DateTime?>("LastModificationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("LastModificationTime");
|
||||
|
||||
b.Property<Guid?>("LastModifierId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("LastModifierId");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("nvarchar(256)");
|
||||
|
||||
b.Property<string>("PhoneNumber")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("nvarchar(32)");
|
||||
|
||||
b.Property<string>("Relationship")
|
||||
.IsRequired()
|
||||
.HasMaxLength(16)
|
||||
.HasColumnType("nvarchar(16)");
|
||||
|
||||
b.Property<Guid?>("TenantId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("TenantId");
|
||||
|
||||
b.Property<Guid>("UserId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("TenantId", "UserId");
|
||||
|
||||
b.ToTable("Adm_T_UserEmergencyContact", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserFamilyMember", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<DateTime?>("BirthDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<DateTime>("CreationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("CreationTime");
|
||||
|
||||
b.Property<Guid?>("CreatorId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("CreatorId");
|
||||
|
||||
b.Property<Guid?>("DeleterId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("DeleterId");
|
||||
|
||||
b.Property<DateTime?>("DeletionTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("DeletionTime");
|
||||
|
||||
b.Property<string>("EmploymentStatus")
|
||||
.HasMaxLength(16)
|
||||
.HasColumnType("nvarchar(16)");
|
||||
|
||||
b.Property<string>("IdentityNumber")
|
||||
.HasMaxLength(15)
|
||||
.HasColumnType("nvarchar(15)");
|
||||
|
||||
b.Property<bool>("IsBenefitCovered")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<bool>("IsDeleted")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(false)
|
||||
.HasColumnName("IsDeleted");
|
||||
|
||||
b.Property<bool>("IsInsuranceCovered")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<DateTime?>("LastModificationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("LastModificationTime");
|
||||
|
||||
b.Property<Guid?>("LastModifierId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("LastModifierId");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasMaxLength(128)
|
||||
.HasColumnType("nvarchar(128)");
|
||||
|
||||
b.Property<string>("Relationship")
|
||||
.IsRequired()
|
||||
.HasMaxLength(16)
|
||||
.HasColumnType("nvarchar(16)");
|
||||
|
||||
b.Property<string>("Surname")
|
||||
.HasMaxLength(128)
|
||||
.HasColumnType("nvarchar(128)");
|
||||
|
||||
b.Property<Guid?>("TenantId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("TenantId");
|
||||
|
||||
b.Property<Guid>("UserId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("TenantId", "UserId");
|
||||
|
||||
b.ToTable("Adm_T_UserFamilyMember", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserLanguage", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<DateTime>("CreationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("CreationTime");
|
||||
|
||||
b.Property<Guid?>("CreatorId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("CreatorId");
|
||||
|
||||
b.Property<Guid?>("DeleterId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("DeleterId");
|
||||
|
||||
b.Property<DateTime?>("DeletionTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("DeletionTime");
|
||||
|
||||
b.Property<bool>("IsDeleted")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(false)
|
||||
.HasColumnName("IsDeleted");
|
||||
|
||||
b.Property<DateTime?>("LastModificationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("LastModificationTime");
|
||||
|
||||
b.Property<Guid?>("LastModifierId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("LastModifierId");
|
||||
|
||||
b.Property<string>("Note")
|
||||
.HasMaxLength(512)
|
||||
.HasColumnType("nvarchar(512)");
|
||||
|
||||
b.Property<Guid>("SkillId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<Guid?>("SkillLevelId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<Guid?>("TenantId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("TenantId");
|
||||
|
||||
b.Property<Guid>("UserId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("SkillId");
|
||||
|
||||
b.HasIndex("SkillLevelId");
|
||||
|
||||
b.HasIndex("TenantId", "UserId", "SkillId")
|
||||
.IsUnique()
|
||||
.HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.ToTable("Adm_T_UserLanguage", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserPatientProtocol", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
|
|
@ -6361,6 +6841,72 @@ namespace Sozsoft.Platform.Migrations
|
|||
b.ToTable("Adm_T_UserSickLeave", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserSkill", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<DateTime>("CreationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("CreationTime");
|
||||
|
||||
b.Property<Guid?>("CreatorId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("CreatorId");
|
||||
|
||||
b.Property<Guid?>("DeleterId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("DeleterId");
|
||||
|
||||
b.Property<DateTime?>("DeletionTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("DeletionTime");
|
||||
|
||||
b.Property<bool>("IsDeleted")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(false)
|
||||
.HasColumnName("IsDeleted");
|
||||
|
||||
b.Property<DateTime?>("LastModificationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("LastModificationTime");
|
||||
|
||||
b.Property<Guid?>("LastModifierId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("LastModifierId");
|
||||
|
||||
b.Property<int>("Level")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("Note")
|
||||
.HasMaxLength(512)
|
||||
.HasColumnType("nvarchar(512)");
|
||||
|
||||
b.Property<Guid>("SkillId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<Guid?>("TenantId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("TenantId");
|
||||
|
||||
b.Property<Guid>("UserId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("SkillId");
|
||||
|
||||
b.HasIndex("TenantId", "UserId", "SkillId")
|
||||
.IsUnique()
|
||||
.HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.ToTable("Adm_T_UserSkill", null, t =>
|
||||
{
|
||||
t.HasCheckConstraint("CK_UserSkill_Level", "[Level] BETWEEN 1 AND 5");
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserWorkExperience", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
|
|
@ -8028,6 +8574,10 @@ namespace Sozsoft.Platform.Migrations
|
|||
.HasMaxLength(512)
|
||||
.HasColumnType("nvarchar(512)");
|
||||
|
||||
b.Property<string>("BankName")
|
||||
.HasMaxLength(128)
|
||||
.HasColumnType("nvarchar(128)");
|
||||
|
||||
b.Property<DateTime?>("BirthDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
|
|
@ -8079,6 +8629,13 @@ namespace Sozsoft.Platform.Migrations
|
|||
.HasColumnType("nvarchar(40)")
|
||||
.HasColumnName("ConcurrencyStamp");
|
||||
|
||||
b.Property<DateTime?>("ContractEndDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<string>("ContractType")
|
||||
.HasMaxLength(16)
|
||||
.HasColumnType("nvarchar(16)");
|
||||
|
||||
b.Property<DateTime>("CreationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("CreationTime");
|
||||
|
|
@ -8135,10 +8692,34 @@ namespace Sozsoft.Platform.Migrations
|
|||
.HasMaxLength(512)
|
||||
.HasColumnType("nvarchar(512)");
|
||||
|
||||
b.Property<int?>("DisabilityRate")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("DisabilityReport")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("DisabilityReportFileName")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("nvarchar(256)");
|
||||
|
||||
b.Property<string>("District")
|
||||
.HasMaxLength(128)
|
||||
.HasColumnType("nvarchar(128)");
|
||||
|
||||
b.Property<string>("DrivingLicenseClass")
|
||||
.HasMaxLength(64)
|
||||
.HasColumnType("nvarchar(64)");
|
||||
|
||||
b.Property<DateTime?>("DrivingLicenseExpiryDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<DateTime?>("DrivingLicenseIssueDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<string>("DrivingLicenseNo")
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("nvarchar(32)");
|
||||
|
||||
b.Property<string>("EducationLevel")
|
||||
.HasMaxLength(128)
|
||||
.HasColumnType("nvarchar(128)");
|
||||
|
|
@ -8155,6 +8736,10 @@ namespace Sozsoft.Platform.Migrations
|
|||
.HasDefaultValue(false)
|
||||
.HasColumnName("EmailConfirmed");
|
||||
|
||||
b.Property<string>("EmploymentType")
|
||||
.HasMaxLength(16)
|
||||
.HasColumnType("nvarchar(16)");
|
||||
|
||||
b.Property<int>("EntityVersion")
|
||||
.HasColumnType("int");
|
||||
|
||||
|
|
@ -8258,9 +8843,9 @@ namespace Sozsoft.Platform.Migrations
|
|||
.HasMaxLength(16)
|
||||
.HasColumnType("nvarchar(16)");
|
||||
|
||||
b.Property<string>("GraduationSchool")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("nvarchar(256)");
|
||||
b.Property<decimal?>("GrossSalary")
|
||||
.HasPrecision(18, 2)
|
||||
.HasColumnType("decimal(18,2)");
|
||||
|
||||
b.Property<bool?>("HadSurgery")
|
||||
.HasColumnType("bit");
|
||||
|
|
@ -8294,6 +8879,10 @@ namespace Sozsoft.Platform.Migrations
|
|||
.HasMaxLength(512)
|
||||
.HasColumnType("nvarchar(512)");
|
||||
|
||||
b.Property<string>("Iban")
|
||||
.HasMaxLength(34)
|
||||
.HasColumnType("nvarchar(34)");
|
||||
|
||||
b.Property<string>("IdentityNumber")
|
||||
.HasMaxLength(15)
|
||||
.HasColumnType("nvarchar(15)");
|
||||
|
|
@ -8308,6 +8897,11 @@ namespace Sozsoft.Platform.Migrations
|
|||
.HasDefaultValue(false)
|
||||
.HasColumnName("IsDeleted");
|
||||
|
||||
b.Property<bool>("IsDisabled")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(false);
|
||||
|
||||
b.Property<bool>("IsExternal")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
|
|
@ -8395,6 +8989,13 @@ namespace Sozsoft.Platform.Migrations
|
|||
b.Property<DateTime?>("MarriageDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<DateTime?>("MilitaryPostponeEndDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<string>("MilitaryStatus")
|
||||
.HasMaxLength(16)
|
||||
.HasColumnType("nvarchar(16)");
|
||||
|
||||
b.Property<string>("MotherHealthNote")
|
||||
.HasMaxLength(512)
|
||||
.HasColumnType("nvarchar(512)");
|
||||
|
|
@ -8442,11 +9043,22 @@ namespace Sozsoft.Platform.Migrations
|
|||
.HasMaxLength(512)
|
||||
.HasColumnType("nvarchar(512)");
|
||||
|
||||
b.Property<DateTime?>("PassportExpiryDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<string>("PassportNo")
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("nvarchar(32)");
|
||||
|
||||
b.Property<string>("PasswordHash")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("nvarchar(256)")
|
||||
.HasColumnName("PasswordHash");
|
||||
|
||||
b.Property<string>("PdksCardNo")
|
||||
.HasMaxLength(64)
|
||||
.HasColumnType("nvarchar(64)");
|
||||
|
||||
b.Property<string>("PhoneNumber")
|
||||
.HasMaxLength(16)
|
||||
.HasColumnType("nvarchar(16)")
|
||||
|
|
@ -8458,19 +9070,45 @@ namespace Sozsoft.Platform.Migrations
|
|||
.HasDefaultValue(false)
|
||||
.HasColumnName("PhoneNumberConfirmed");
|
||||
|
||||
b.Property<DateTime?>("ProbationEndDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<string>("Province")
|
||||
.HasMaxLength(128)
|
||||
.HasColumnType("nvarchar(128)");
|
||||
|
||||
b.Property<string>("RegistrationNo")
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("nvarchar(32)");
|
||||
|
||||
b.Property<string>("RocketUsername")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("SalaryCurrency")
|
||||
.HasMaxLength(8)
|
||||
.HasColumnType("nvarchar(8)");
|
||||
|
||||
b.Property<string>("SalaryType")
|
||||
.HasMaxLength(16)
|
||||
.HasColumnType("nvarchar(16)");
|
||||
|
||||
b.Property<string>("SecondaryEmail")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("nvarchar(256)");
|
||||
|
||||
b.Property<string>("SecondaryPhoneNumber")
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("nvarchar(32)");
|
||||
|
||||
b.Property<string>("SecurityStamp")
|
||||
.IsRequired()
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("nvarchar(256)")
|
||||
.HasColumnName("SecurityStamp");
|
||||
|
||||
b.Property<DateTime?>("SeniorityStartDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<string>("SequenceNo")
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("nvarchar(32)");
|
||||
|
|
@ -8479,6 +9117,9 @@ namespace Sozsoft.Platform.Migrations
|
|||
.HasMaxLength(32)
|
||||
.HasColumnType("nvarchar(32)");
|
||||
|
||||
b.Property<Guid?>("ShiftId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<Guid?>("ShiftNightDoctorId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
|
|
@ -8524,6 +9165,13 @@ namespace Sozsoft.Platform.Migrations
|
|||
b.Property<DateTime?>("TerminationDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<string>("TerminationNote")
|
||||
.HasMaxLength(512)
|
||||
.HasColumnType("nvarchar(512)");
|
||||
|
||||
b.Property<Guid?>("TerminationReasonId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<string>("TetanusVaccination")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("nvarchar(256)");
|
||||
|
|
@ -8563,6 +9211,13 @@ namespace Sozsoft.Platform.Migrations
|
|||
b.Property<string>("WorkHour")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<DateTime?>("WorkPermitEndDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<string>("WorkPermitNo")
|
||||
.HasMaxLength(64)
|
||||
.HasColumnType("nvarchar(64)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("Email");
|
||||
|
|
@ -9916,6 +10571,29 @@ namespace Sozsoft.Platform.Migrations
|
|||
b.Navigation("UomCategory");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserLanguage", b =>
|
||||
{
|
||||
b.HasOne("Sozsoft.Platform.Entities.Skill", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("SkillId")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Sozsoft.Platform.Entities.SkillLevel", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("SkillLevelId")
|
||||
.OnDelete(DeleteBehavior.Restrict);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserSkill", b =>
|
||||
{
|
||||
b.HasOne("Sozsoft.Platform.Entities.Skill", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("SkillId")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserWorkExperience", b =>
|
||||
{
|
||||
b.HasOne("Sozsoft.Platform.Entities.Sector", null)
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -927,7 +927,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
.IsUnique()
|
||||
.HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.ToTable("Adm_T_Announcement", (string)null);
|
||||
b.ToTable("Hr_T_Announcement", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.AnnouncementComment", b =>
|
||||
|
|
@ -989,7 +989,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.HasIndex("AnnouncementId");
|
||||
|
||||
b.ToTable("Adm_T_AnnouncementComment", (string)null);
|
||||
b.ToTable("Hr_T_AnnouncementComment", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.AnnouncementLike", b =>
|
||||
|
|
@ -1043,7 +1043,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
.IsUnique()
|
||||
.HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.ToTable("Adm_T_AnnouncementLike", (string)null);
|
||||
b.ToTable("Hr_T_AnnouncementLike", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.BackgroundWorker", b =>
|
||||
|
|
@ -2724,7 +2724,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
.IsUnique()
|
||||
.HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.ToTable("Adm_T_Event", (string)null);
|
||||
b.ToTable("Hr_T_Event", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.EventCategory", b =>
|
||||
|
|
@ -2777,7 +2777,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
.IsUnique()
|
||||
.HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.ToTable("Adm_T_EventCategory", (string)null);
|
||||
b.ToTable("Hr_T_EventCategory", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.EventComment", b =>
|
||||
|
|
@ -2838,7 +2838,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.HasIndex("EventId");
|
||||
|
||||
b.ToTable("Adm_T_EventComment", (string)null);
|
||||
b.ToTable("Hr_T_EventComment", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.EventLike", b =>
|
||||
|
|
@ -2892,7 +2892,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
.IsUnique()
|
||||
.HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.ToTable("Adm_T_EventLike", (string)null);
|
||||
b.ToTable("Hr_T_EventLike", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.EventType", b =>
|
||||
|
|
@ -2945,7 +2945,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
.IsUnique()
|
||||
.HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.ToTable("Adm_T_EventType", (string)null);
|
||||
b.ToTable("Hr_T_EventType", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.GlobalSearch", b =>
|
||||
|
|
@ -4202,7 +4202,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("Adm_T_MessengerConversation", (string)null);
|
||||
b.ToTable("Hr_T_MessengerConversation", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.MessengerConversationMessage", b =>
|
||||
|
|
@ -4281,7 +4281,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.HasIndex("TenantId", "ConversationId", "SentAt");
|
||||
|
||||
b.ToTable("Adm_T_MessengerConversationMessage", (string)null);
|
||||
b.ToTable("Hr_T_MessengerConversationMessage", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.Module", b =>
|
||||
|
|
@ -5375,7 +5375,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.HasIndex("SocialPostId");
|
||||
|
||||
b.ToTable("Adm_T_SocialComment", (string)null);
|
||||
b.ToTable("Hr_T_SocialComment", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.SocialLike", b =>
|
||||
|
|
@ -5429,7 +5429,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
.IsUnique()
|
||||
.HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.ToTable("Adm_T_SocialLike", (string)null);
|
||||
b.ToTable("Hr_T_SocialLike", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.SocialLocation", b =>
|
||||
|
|
@ -5498,7 +5498,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
b.HasIndex("SocialPostId")
|
||||
.IsUnique();
|
||||
|
||||
b.ToTable("Adm_T_SocialLocation", (string)null);
|
||||
b.ToTable("Hr_T_SocialLocation", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.SocialMedia", b =>
|
||||
|
|
@ -5570,7 +5570,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
b.HasIndex("SocialPostId")
|
||||
.IsUnique();
|
||||
|
||||
b.ToTable("Adm_T_SocialMedia", (string)null);
|
||||
b.ToTable("Hr_T_SocialMedia", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.SocialPollOption", b =>
|
||||
|
|
@ -5627,7 +5627,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.HasIndex("SocialMediaId");
|
||||
|
||||
b.ToTable("Adm_T_SocialPollOption", (string)null);
|
||||
b.ToTable("Hr_T_SocialPollOption", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.SocialPost", b =>
|
||||
|
|
@ -5693,7 +5693,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("Adm_T_SocialPost", (string)null);
|
||||
b.ToTable("Hr_T_SocialPost", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.Survey", b =>
|
||||
|
|
@ -5766,7 +5766,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
.IsUnique()
|
||||
.HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.ToTable("Adm_T_Survey", (string)null);
|
||||
b.ToTable("Hr_T_Survey", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.SurveyAnswer", b =>
|
||||
|
|
@ -5830,7 +5830,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.HasIndex("ResponseId");
|
||||
|
||||
b.ToTable("Adm_T_SurveyAnswer", (string)null);
|
||||
b.ToTable("Hr_T_SurveyAnswer", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.SurveyQuestion", b =>
|
||||
|
|
@ -5895,7 +5895,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.HasIndex("SurveyId");
|
||||
|
||||
b.ToTable("Adm_T_SurveyQuestion", (string)null);
|
||||
b.ToTable("Hr_T_SurveyQuestion", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.SurveyQuestionOption", b =>
|
||||
|
|
@ -5952,7 +5952,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.HasIndex("QuestionId");
|
||||
|
||||
b.ToTable("Adm_T_SurveyQuestionOption", (string)null);
|
||||
b.ToTable("Hr_T_SurveyQuestionOption", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.SurveyResponse", b =>
|
||||
|
|
@ -6007,7 +6007,66 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.HasIndex("SurveyId");
|
||||
|
||||
b.ToTable("Adm_T_SurveyResponse", (string)null);
|
||||
b.ToTable("Hr_T_SurveyResponse", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.TerminationReason", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<string>("Code")
|
||||
.IsRequired()
|
||||
.HasMaxLength(8)
|
||||
.HasColumnType("nvarchar(8)");
|
||||
|
||||
b.Property<DateTime>("CreationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("CreationTime");
|
||||
|
||||
b.Property<Guid?>("CreatorId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("CreatorId");
|
||||
|
||||
b.Property<Guid?>("DeleterId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("DeleterId");
|
||||
|
||||
b.Property<DateTime?>("DeletionTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("DeletionTime");
|
||||
|
||||
b.Property<bool>("IsActive")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(true);
|
||||
|
||||
b.Property<bool>("IsDeleted")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(false)
|
||||
.HasColumnName("IsDeleted");
|
||||
|
||||
b.Property<DateTime?>("LastModificationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("LastModificationTime");
|
||||
|
||||
b.Property<Guid?>("LastModifierId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("LastModifierId");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("nvarchar(256)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("Code")
|
||||
.IsUnique()
|
||||
.HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.ToTable("Sas_H_TerminationReason", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.Uom", b =>
|
||||
|
|
@ -6141,6 +6200,427 @@ namespace Sozsoft.Platform.Migrations
|
|||
b.ToTable("Adm_T_UomCategory", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserBenefit", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<decimal?>("Amount")
|
||||
.HasPrecision(18, 2)
|
||||
.HasColumnType("decimal(18,2)");
|
||||
|
||||
b.Property<string>("BenefitType")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("nvarchar(32)");
|
||||
|
||||
b.Property<DateTime>("CreationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("CreationTime");
|
||||
|
||||
b.Property<Guid?>("CreatorId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("CreatorId");
|
||||
|
||||
b.Property<Guid?>("DeleterId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("DeleterId");
|
||||
|
||||
b.Property<DateTime?>("DeletionTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("DeletionTime");
|
||||
|
||||
b.Property<DateTime?>("EndDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<bool>("IsDeleted")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(false)
|
||||
.HasColumnName("IsDeleted");
|
||||
|
||||
b.Property<DateTime?>("LastModificationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("LastModificationTime");
|
||||
|
||||
b.Property<Guid?>("LastModifierId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("LastModifierId");
|
||||
|
||||
b.Property<string>("Note")
|
||||
.HasMaxLength(512)
|
||||
.HasColumnType("nvarchar(512)");
|
||||
|
||||
b.Property<DateTime?>("StartDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<Guid?>("TenantId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("TenantId");
|
||||
|
||||
b.Property<Guid>("UserId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("TenantId", "UserId");
|
||||
|
||||
b.ToTable("Adm_T_UserBenefit", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserCertificate", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<Guid>("CertificateId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<string>("CertificateNo")
|
||||
.HasMaxLength(64)
|
||||
.HasColumnType("nvarchar(64)");
|
||||
|
||||
b.Property<DateTime>("CreationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("CreationTime");
|
||||
|
||||
b.Property<Guid?>("CreatorId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("CreatorId");
|
||||
|
||||
b.Property<Guid?>("DeleterId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("DeleterId");
|
||||
|
||||
b.Property<DateTime?>("DeletionTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("DeletionTime");
|
||||
|
||||
b.Property<DateTime?>("ExpiryDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<bool>("IsDeleted")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(false)
|
||||
.HasColumnName("IsDeleted");
|
||||
|
||||
b.Property<DateTime?>("IssueDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<string>("IssuedBy")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("nvarchar(256)");
|
||||
|
||||
b.Property<DateTime?>("LastModificationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("LastModificationTime");
|
||||
|
||||
b.Property<Guid?>("LastModifierId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("LastModifierId");
|
||||
|
||||
b.Property<string>("Note")
|
||||
.HasMaxLength(512)
|
||||
.HasColumnType("nvarchar(512)");
|
||||
|
||||
b.Property<Guid?>("TenantId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("TenantId");
|
||||
|
||||
b.Property<Guid>("UserId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("TenantId", "UserId");
|
||||
|
||||
b.ToTable("Adm_T_UserCertificate", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserEducation", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<DateTime>("CreationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("CreationTime");
|
||||
|
||||
b.Property<Guid?>("CreatorId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("CreatorId");
|
||||
|
||||
b.Property<Guid?>("DeleterId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("DeleterId");
|
||||
|
||||
b.Property<DateTime?>("DeletionTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("DeletionTime");
|
||||
|
||||
b.Property<string>("Department")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("nvarchar(256)");
|
||||
|
||||
b.Property<string>("EducationLevel")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("nvarchar(32)");
|
||||
|
||||
b.Property<DateTime?>("EndDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<bool>("IsDeleted")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(false)
|
||||
.HasColumnName("IsDeleted");
|
||||
|
||||
b.Property<bool>("IsGraduated")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(true);
|
||||
|
||||
b.Property<DateTime?>("LastModificationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("LastModificationTime");
|
||||
|
||||
b.Property<Guid?>("LastModifierId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("LastModifierId");
|
||||
|
||||
b.Property<string>("SchoolName")
|
||||
.IsRequired()
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("nvarchar(256)");
|
||||
|
||||
b.Property<DateTime?>("StartDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<Guid?>("TenantId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("TenantId");
|
||||
|
||||
b.Property<Guid>("UserId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("TenantId", "UserId");
|
||||
|
||||
b.ToTable("Adm_T_UserEducation", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserEmergencyContact", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<DateTime>("CreationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("CreationTime");
|
||||
|
||||
b.Property<Guid?>("CreatorId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("CreatorId");
|
||||
|
||||
b.Property<Guid?>("DeleterId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("DeleterId");
|
||||
|
||||
b.Property<DateTime?>("DeletionTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("DeletionTime");
|
||||
|
||||
b.Property<bool>("IsDeleted")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(false)
|
||||
.HasColumnName("IsDeleted");
|
||||
|
||||
b.Property<DateTime?>("LastModificationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("LastModificationTime");
|
||||
|
||||
b.Property<Guid?>("LastModifierId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("LastModifierId");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("nvarchar(256)");
|
||||
|
||||
b.Property<string>("PhoneNumber")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("nvarchar(32)");
|
||||
|
||||
b.Property<string>("Relationship")
|
||||
.IsRequired()
|
||||
.HasMaxLength(16)
|
||||
.HasColumnType("nvarchar(16)");
|
||||
|
||||
b.Property<Guid?>("TenantId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("TenantId");
|
||||
|
||||
b.Property<Guid>("UserId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("TenantId", "UserId");
|
||||
|
||||
b.ToTable("Adm_T_UserEmergencyContact", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserFamilyMember", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<DateTime?>("BirthDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<DateTime>("CreationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("CreationTime");
|
||||
|
||||
b.Property<Guid?>("CreatorId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("CreatorId");
|
||||
|
||||
b.Property<Guid?>("DeleterId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("DeleterId");
|
||||
|
||||
b.Property<DateTime?>("DeletionTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("DeletionTime");
|
||||
|
||||
b.Property<string>("EmploymentStatus")
|
||||
.HasMaxLength(16)
|
||||
.HasColumnType("nvarchar(16)");
|
||||
|
||||
b.Property<string>("IdentityNumber")
|
||||
.HasMaxLength(15)
|
||||
.HasColumnType("nvarchar(15)");
|
||||
|
||||
b.Property<bool>("IsBenefitCovered")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<bool>("IsDeleted")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(false)
|
||||
.HasColumnName("IsDeleted");
|
||||
|
||||
b.Property<bool>("IsInsuranceCovered")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<DateTime?>("LastModificationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("LastModificationTime");
|
||||
|
||||
b.Property<Guid?>("LastModifierId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("LastModifierId");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasMaxLength(128)
|
||||
.HasColumnType("nvarchar(128)");
|
||||
|
||||
b.Property<string>("Relationship")
|
||||
.IsRequired()
|
||||
.HasMaxLength(16)
|
||||
.HasColumnType("nvarchar(16)");
|
||||
|
||||
b.Property<string>("Surname")
|
||||
.HasMaxLength(128)
|
||||
.HasColumnType("nvarchar(128)");
|
||||
|
||||
b.Property<Guid?>("TenantId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("TenantId");
|
||||
|
||||
b.Property<Guid>("UserId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("TenantId", "UserId");
|
||||
|
||||
b.ToTable("Adm_T_UserFamilyMember", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserLanguage", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<DateTime>("CreationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("CreationTime");
|
||||
|
||||
b.Property<Guid?>("CreatorId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("CreatorId");
|
||||
|
||||
b.Property<Guid?>("DeleterId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("DeleterId");
|
||||
|
||||
b.Property<DateTime?>("DeletionTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("DeletionTime");
|
||||
|
||||
b.Property<bool>("IsDeleted")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(false)
|
||||
.HasColumnName("IsDeleted");
|
||||
|
||||
b.Property<DateTime?>("LastModificationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("LastModificationTime");
|
||||
|
||||
b.Property<Guid?>("LastModifierId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("LastModifierId");
|
||||
|
||||
b.Property<string>("Note")
|
||||
.HasMaxLength(512)
|
||||
.HasColumnType("nvarchar(512)");
|
||||
|
||||
b.Property<Guid>("SkillId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<Guid?>("SkillLevelId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<Guid?>("TenantId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("TenantId");
|
||||
|
||||
b.Property<Guid>("UserId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("SkillId");
|
||||
|
||||
b.HasIndex("SkillLevelId");
|
||||
|
||||
b.HasIndex("TenantId", "UserId", "SkillId")
|
||||
.IsUnique()
|
||||
.HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.ToTable("Adm_T_UserLanguage", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserPatientProtocol", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
|
|
@ -6358,6 +6838,72 @@ namespace Sozsoft.Platform.Migrations
|
|||
b.ToTable("Adm_T_UserSickLeave", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserSkill", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<DateTime>("CreationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("CreationTime");
|
||||
|
||||
b.Property<Guid?>("CreatorId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("CreatorId");
|
||||
|
||||
b.Property<Guid?>("DeleterId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("DeleterId");
|
||||
|
||||
b.Property<DateTime?>("DeletionTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("DeletionTime");
|
||||
|
||||
b.Property<bool>("IsDeleted")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(false)
|
||||
.HasColumnName("IsDeleted");
|
||||
|
||||
b.Property<DateTime?>("LastModificationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("LastModificationTime");
|
||||
|
||||
b.Property<Guid?>("LastModifierId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("LastModifierId");
|
||||
|
||||
b.Property<int>("Level")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("Note")
|
||||
.HasMaxLength(512)
|
||||
.HasColumnType("nvarchar(512)");
|
||||
|
||||
b.Property<Guid>("SkillId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<Guid?>("TenantId")
|
||||
.HasColumnType("uniqueidentifier")
|
||||
.HasColumnName("TenantId");
|
||||
|
||||
b.Property<Guid>("UserId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("SkillId");
|
||||
|
||||
b.HasIndex("TenantId", "UserId", "SkillId")
|
||||
.IsUnique()
|
||||
.HasFilter("[IsDeleted] = 0");
|
||||
|
||||
b.ToTable("Adm_T_UserSkill", null, t =>
|
||||
{
|
||||
t.HasCheckConstraint("CK_UserSkill_Level", "[Level] BETWEEN 1 AND 5");
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserWorkExperience", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
|
|
@ -8025,6 +8571,10 @@ namespace Sozsoft.Platform.Migrations
|
|||
.HasMaxLength(512)
|
||||
.HasColumnType("nvarchar(512)");
|
||||
|
||||
b.Property<string>("BankName")
|
||||
.HasMaxLength(128)
|
||||
.HasColumnType("nvarchar(128)");
|
||||
|
||||
b.Property<DateTime?>("BirthDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
|
|
@ -8076,6 +8626,13 @@ namespace Sozsoft.Platform.Migrations
|
|||
.HasColumnType("nvarchar(40)")
|
||||
.HasColumnName("ConcurrencyStamp");
|
||||
|
||||
b.Property<DateTime?>("ContractEndDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<string>("ContractType")
|
||||
.HasMaxLength(16)
|
||||
.HasColumnType("nvarchar(16)");
|
||||
|
||||
b.Property<DateTime>("CreationTime")
|
||||
.HasColumnType("datetime2")
|
||||
.HasColumnName("CreationTime");
|
||||
|
|
@ -8132,10 +8689,34 @@ namespace Sozsoft.Platform.Migrations
|
|||
.HasMaxLength(512)
|
||||
.HasColumnType("nvarchar(512)");
|
||||
|
||||
b.Property<int?>("DisabilityRate")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("DisabilityReport")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("DisabilityReportFileName")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("nvarchar(256)");
|
||||
|
||||
b.Property<string>("District")
|
||||
.HasMaxLength(128)
|
||||
.HasColumnType("nvarchar(128)");
|
||||
|
||||
b.Property<string>("DrivingLicenseClass")
|
||||
.HasMaxLength(64)
|
||||
.HasColumnType("nvarchar(64)");
|
||||
|
||||
b.Property<DateTime?>("DrivingLicenseExpiryDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<DateTime?>("DrivingLicenseIssueDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<string>("DrivingLicenseNo")
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("nvarchar(32)");
|
||||
|
||||
b.Property<string>("EducationLevel")
|
||||
.HasMaxLength(128)
|
||||
.HasColumnType("nvarchar(128)");
|
||||
|
|
@ -8152,6 +8733,10 @@ namespace Sozsoft.Platform.Migrations
|
|||
.HasDefaultValue(false)
|
||||
.HasColumnName("EmailConfirmed");
|
||||
|
||||
b.Property<string>("EmploymentType")
|
||||
.HasMaxLength(16)
|
||||
.HasColumnType("nvarchar(16)");
|
||||
|
||||
b.Property<int>("EntityVersion")
|
||||
.HasColumnType("int");
|
||||
|
||||
|
|
@ -8255,9 +8840,9 @@ namespace Sozsoft.Platform.Migrations
|
|||
.HasMaxLength(16)
|
||||
.HasColumnType("nvarchar(16)");
|
||||
|
||||
b.Property<string>("GraduationSchool")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("nvarchar(256)");
|
||||
b.Property<decimal?>("GrossSalary")
|
||||
.HasPrecision(18, 2)
|
||||
.HasColumnType("decimal(18,2)");
|
||||
|
||||
b.Property<bool?>("HadSurgery")
|
||||
.HasColumnType("bit");
|
||||
|
|
@ -8291,6 +8876,10 @@ namespace Sozsoft.Platform.Migrations
|
|||
.HasMaxLength(512)
|
||||
.HasColumnType("nvarchar(512)");
|
||||
|
||||
b.Property<string>("Iban")
|
||||
.HasMaxLength(34)
|
||||
.HasColumnType("nvarchar(34)");
|
||||
|
||||
b.Property<string>("IdentityNumber")
|
||||
.HasMaxLength(15)
|
||||
.HasColumnType("nvarchar(15)");
|
||||
|
|
@ -8305,6 +8894,11 @@ namespace Sozsoft.Platform.Migrations
|
|||
.HasDefaultValue(false)
|
||||
.HasColumnName("IsDeleted");
|
||||
|
||||
b.Property<bool>("IsDisabled")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
.HasDefaultValue(false);
|
||||
|
||||
b.Property<bool>("IsExternal")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bit")
|
||||
|
|
@ -8392,6 +8986,13 @@ namespace Sozsoft.Platform.Migrations
|
|||
b.Property<DateTime?>("MarriageDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<DateTime?>("MilitaryPostponeEndDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<string>("MilitaryStatus")
|
||||
.HasMaxLength(16)
|
||||
.HasColumnType("nvarchar(16)");
|
||||
|
||||
b.Property<string>("MotherHealthNote")
|
||||
.HasMaxLength(512)
|
||||
.HasColumnType("nvarchar(512)");
|
||||
|
|
@ -8439,11 +9040,22 @@ namespace Sozsoft.Platform.Migrations
|
|||
.HasMaxLength(512)
|
||||
.HasColumnType("nvarchar(512)");
|
||||
|
||||
b.Property<DateTime?>("PassportExpiryDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<string>("PassportNo")
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("nvarchar(32)");
|
||||
|
||||
b.Property<string>("PasswordHash")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("nvarchar(256)")
|
||||
.HasColumnName("PasswordHash");
|
||||
|
||||
b.Property<string>("PdksCardNo")
|
||||
.HasMaxLength(64)
|
||||
.HasColumnType("nvarchar(64)");
|
||||
|
||||
b.Property<string>("PhoneNumber")
|
||||
.HasMaxLength(16)
|
||||
.HasColumnType("nvarchar(16)")
|
||||
|
|
@ -8455,19 +9067,45 @@ namespace Sozsoft.Platform.Migrations
|
|||
.HasDefaultValue(false)
|
||||
.HasColumnName("PhoneNumberConfirmed");
|
||||
|
||||
b.Property<DateTime?>("ProbationEndDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<string>("Province")
|
||||
.HasMaxLength(128)
|
||||
.HasColumnType("nvarchar(128)");
|
||||
|
||||
b.Property<string>("RegistrationNo")
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("nvarchar(32)");
|
||||
|
||||
b.Property<string>("RocketUsername")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("SalaryCurrency")
|
||||
.HasMaxLength(8)
|
||||
.HasColumnType("nvarchar(8)");
|
||||
|
||||
b.Property<string>("SalaryType")
|
||||
.HasMaxLength(16)
|
||||
.HasColumnType("nvarchar(16)");
|
||||
|
||||
b.Property<string>("SecondaryEmail")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("nvarchar(256)");
|
||||
|
||||
b.Property<string>("SecondaryPhoneNumber")
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("nvarchar(32)");
|
||||
|
||||
b.Property<string>("SecurityStamp")
|
||||
.IsRequired()
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("nvarchar(256)")
|
||||
.HasColumnName("SecurityStamp");
|
||||
|
||||
b.Property<DateTime?>("SeniorityStartDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<string>("SequenceNo")
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("nvarchar(32)");
|
||||
|
|
@ -8476,6 +9114,9 @@ namespace Sozsoft.Platform.Migrations
|
|||
.HasMaxLength(32)
|
||||
.HasColumnType("nvarchar(32)");
|
||||
|
||||
b.Property<Guid?>("ShiftId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<Guid?>("ShiftNightDoctorId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
|
|
@ -8521,6 +9162,13 @@ namespace Sozsoft.Platform.Migrations
|
|||
b.Property<DateTime?>("TerminationDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<string>("TerminationNote")
|
||||
.HasMaxLength(512)
|
||||
.HasColumnType("nvarchar(512)");
|
||||
|
||||
b.Property<Guid?>("TerminationReasonId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.Property<string>("TetanusVaccination")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("nvarchar(256)");
|
||||
|
|
@ -8560,6 +9208,13 @@ namespace Sozsoft.Platform.Migrations
|
|||
b.Property<string>("WorkHour")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<DateTime?>("WorkPermitEndDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<string>("WorkPermitNo")
|
||||
.HasMaxLength(64)
|
||||
.HasColumnType("nvarchar(64)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("Email");
|
||||
|
|
@ -9913,6 +10568,29 @@ namespace Sozsoft.Platform.Migrations
|
|||
b.Navigation("UomCategory");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserLanguage", b =>
|
||||
{
|
||||
b.HasOne("Sozsoft.Platform.Entities.Skill", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("SkillId")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Sozsoft.Platform.Entities.SkillLevel", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("SkillLevelId")
|
||||
.OnDelete(DeleteBehavior.Restrict);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserSkill", b =>
|
||||
{
|
||||
b.HasOne("Sozsoft.Platform.Entities.Skill", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("SkillId")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Sozsoft.Platform.Entities.UserWorkExperience", b =>
|
||||
{
|
||||
b.HasOne("Sozsoft.Platform.Entities.Sector", null)
|
||||
|
|
|
|||
|
|
@ -143,7 +143,6 @@ public class TenantIdentityDataSeeder : IdentityDataSeeder
|
|||
adminUser.SetNationality(PlatformConsts.AbpIdentity.User.AdminNationalityDefaultValue);
|
||||
adminUser.SetBloodType(PlatformConsts.AbpIdentity.User.AdminBloodTypeDefaultValue);
|
||||
adminUser.SetEducationLevel(PlatformConsts.AbpIdentity.User.AdminEducationLevelDefaultValue);
|
||||
adminUser.SetGraduationSchool(PlatformConsts.AbpIdentity.User.AdminGraduationSchoolDefaultValue);
|
||||
adminUser.SetHomeAddress(PlatformConsts.AbpIdentity.User.AdminHomeAddressDefaultValue);
|
||||
adminUser.SetBirthDate(PlatformConsts.AbpIdentity.User.AdminBirthDateDefaultValue);
|
||||
adminUser.SetBirthPlace(PlatformConsts.AbpIdentity.User.AdminBirthPlaceDefaultValue);
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -42,6 +42,16 @@
|
|||
"BeforeSp": "Sas_H_ListFormFieldsDictionaryJson_SaveDbTableColumns",
|
||||
"AfterSp": null,
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "cfb3c495-75b3-57cf-8b77-1ef74be1767e",
|
||||
"Name": "Probation Reminder Worker",
|
||||
"Cron": "0 8 * * *",
|
||||
"WorkerType": 6,
|
||||
"Scope": 3,
|
||||
"BeforeSp": null,
|
||||
"AfterSp": null,
|
||||
"IsActive": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
295
configs/seeds/host/data/App.Definitions.TerminationReason.json
Normal file
295
configs/seeds/host/data/App.Definitions.TerminationReason.json
Normal file
|
|
@ -0,0 +1,295 @@
|
|||
{
|
||||
"ListFormCode": "App.Definitions.TerminationReason",
|
||||
"KeyFieldName": "Id",
|
||||
"GeneratedAt": "2026-10-03T00:00:00Z",
|
||||
"Rows": [
|
||||
{
|
||||
"Id": "94addf13-e695-587d-a25d-02381e6851d5",
|
||||
"Code": "01",
|
||||
"Name": "Deneme süreli iş sözleşmesinin işverence feshi",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "c0af30f8-98bf-5453-8866-693b657fac35",
|
||||
"Code": "02",
|
||||
"Name": "Deneme süreli iş sözleşmesinin işçi tarafından feshi",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "1ceac52c-1276-520f-a3cd-60f40df601a3",
|
||||
"Code": "03",
|
||||
"Name": "Belirsiz süreli iş sözleşmesinin işçi tarafından feshi (istifa)",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "9a9859c7-ff8f-52a2-8d3d-377f006a8b70",
|
||||
"Code": "04",
|
||||
"Name": "Belirsiz süreli iş sözleşmesinin işveren tarafından haklı sebep bildirilmeden feshi",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "76d5dead-60de-5620-a75d-9a64f11e0804",
|
||||
"Code": "05",
|
||||
"Name": "Belirli süreli iş sözleşmesinin sona ermesi",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "25dea72b-9b19-59b9-948e-ebb970dfbcd5",
|
||||
"Code": "08",
|
||||
"Name": "Emeklilik (yaşlılık) veya toptan ödeme nedeniyle",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "76bf0e54-5aed-566c-9422-25bb00f9f545",
|
||||
"Code": "09",
|
||||
"Name": "Malulen emeklilik nedeniyle",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "8b8f2134-99ce-5754-b73f-b642f2d299bc",
|
||||
"Code": "10",
|
||||
"Name": "Ölüm",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "3cbf570d-cdbb-5090-8020-3abbb20b957c",
|
||||
"Code": "11",
|
||||
"Name": "İş kazası sonucu ölüm",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "a7857aa4-3ec4-5147-b862-3b2294214910",
|
||||
"Code": "12",
|
||||
"Name": "Askerlik",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "89a00623-4c85-5c9c-9988-6ae1d6ef26e4",
|
||||
"Code": "13",
|
||||
"Name": "Kadın işçinin evlenmesi",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "859f6c31-a1a0-50cd-8362-7ee0f6a70f09",
|
||||
"Code": "14",
|
||||
"Name": "Emeklilik için yaş dışında diğer şartların tamamlanması",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "92658903-ce30-50eb-ad94-b7e57c872720",
|
||||
"Code": "15",
|
||||
"Name": "Toplu işçi çıkarma",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "50dae346-0f4a-54e6-b713-5ec201568454",
|
||||
"Code": "16",
|
||||
"Name": "Sözleşme sona ermeden sigortalının aynı işverene ait diğer işyerine nakli",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "5a97685a-942c-5717-8b40-f032a15d2764",
|
||||
"Code": "17",
|
||||
"Name": "İşyerinin kapanması",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "4246212d-3a10-5a0b-97ac-91891de13212",
|
||||
"Code": "18",
|
||||
"Name": "İşin sona ermesi",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "dc375100-d81d-549f-8db7-6cfbf00a589a",
|
||||
"Code": "19",
|
||||
"Name": "Mevsim bitimi (iş akdi askıya alınan)",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "1a574af7-d557-513d-90a7-4aca193bd338",
|
||||
"Code": "20",
|
||||
"Name": "Kampanya bitimi (iş akdi askıya alınan)",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "a7e4cdd4-4bac-5890-b2a2-c9a211404a3d",
|
||||
"Code": "21",
|
||||
"Name": "Statü değişikliği",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "799ad77d-2297-56e6-8e51-9d7c14af2d6f",
|
||||
"Code": "22",
|
||||
"Name": "Diğer nedenler",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "01b97a86-0d5f-5b3b-8f05-a7c482894958",
|
||||
"Code": "23",
|
||||
"Name": "İşçi tarafından zorunlu nedenle fesih",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "6f9c70f6-f46f-5b27-9938-a6bcb5d79b6e",
|
||||
"Code": "24",
|
||||
"Name": "İşçi tarafından sağlık nedeniyle fesih",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "d539b2a8-9107-5e72-abd3-3fa7222f4a0a",
|
||||
"Code": "25",
|
||||
"Name": "İşçi tarafından işverenin ahlak ve iyi niyet kurallarına aykırı davranışı nedeniyle fesih",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "e097ba43-d4ef-548d-8e39-9bd38d4ad567",
|
||||
"Code": "26",
|
||||
"Name": "Disiplin kurulu kararı ile fesih",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "80ef6852-a852-556e-ad21-cf2b82f50835",
|
||||
"Code": "27",
|
||||
"Name": "İşveren tarafından zorunlu nedenlerle ve tutukluluk nedeniyle fesih",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "6adacf93-45da-5879-a128-bad75e43eae3",
|
||||
"Code": "28",
|
||||
"Name": "İşveren tarafından sağlık nedeniyle fesih",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "9e9ebc6e-ec77-5740-9d11-367165c5c09f",
|
||||
"Code": "29",
|
||||
"Name": "İşveren tarafından işçinin ahlak ve iyi niyet kurallarına aykırı davranışı nedeniyle fesih",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "e8e8f5ae-1a94-5d90-9d7b-ccb0e97ae32c",
|
||||
"Code": "30",
|
||||
"Name": "Vize süresinin bitimi",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "92f268a8-e4ea-5157-8071-986211594651",
|
||||
"Code": "31",
|
||||
"Name": "Borçlar Kanunu, Sendikalar Kanunu, Grev ve Lokavt Kanunu kapsamında kendi istek ve kusuru dışında fesih",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "dd6e61c6-6d81-5b37-bc39-8a6c37ecd107",
|
||||
"Code": "32",
|
||||
"Name": "4046 sayılı Kanunun 21. maddesine göre özelleştirme nedeniyle fesih",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "03eb27f5-0551-599e-9d59-cdb7c45a65cc",
|
||||
"Code": "33",
|
||||
"Name": "Gazeteci tarafından sözleşmenin feshi",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "9fdf06ae-743d-5c8c-818e-f7a1fe04db6a",
|
||||
"Code": "34",
|
||||
"Name": "İşyerinin devri, işin veya işyerinin niteliğinin değişmesi nedeniyle fesih",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "fefaa557-64ec-5ef6-a726-ab45fa1e7d86",
|
||||
"Code": "35",
|
||||
"Name": "6495 S.K. nedeniyle Devlet Memurluğuna geçiş",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "f1e81dec-cd1d-5d0d-882e-06bf0af78d91",
|
||||
"Code": "36",
|
||||
"Name": "KHK ile işyerinin kapatılması",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "b77e868b-e6a1-5ca9-a355-4403b0c150fb",
|
||||
"Code": "37",
|
||||
"Name": "KHK ile kamu görevinden çıkarma",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "68b11493-da9e-560f-b26c-24d09d219c00",
|
||||
"Code": "38",
|
||||
"Name": "Doğum nedeniyle işten ayrılma",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "03349245-0b7b-5ecc-8dfa-47d1829cc1af",
|
||||
"Code": "39",
|
||||
"Name": "696 KHK ile kamu işçiliğine geçiş",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "998d2f21-5167-58fe-a79e-f5b204d5a777",
|
||||
"Code": "40",
|
||||
"Name": "696 KHK ile kamu işçiliğine geçilmemesi sebebiyle çıkış",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "e8a0b3fc-f0aa-5fc8-9ab8-c2bebcd3734d",
|
||||
"Code": "41",
|
||||
"Name": "Resmi ilan ve reklamların yayınlanmasına ilişkin yönetmeliğin 9. maddesi kapsamında çıkış",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "55fdcfd6-cdb5-5cd2-9cc5-31369ef0dd0c",
|
||||
"Code": "42",
|
||||
"Name": "4857 S.K. 25-II-a: Sözleşme yapıldığı sırada gerekli niteliklerin bulunmadığı konusunda işvereni yanıltma",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "9dcacb0c-88e4-5e35-88f9-7f7ae39d4db0",
|
||||
"Code": "43",
|
||||
"Name": "4857 S.K. 25-II-b: İşveren veya aile üyelerinin şeref ve namusuna dokunacak söz ve davranış",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "2e3bbf98-9cb0-5e3c-b528-a718bf3b16ec",
|
||||
"Code": "44",
|
||||
"Name": "4857 S.K. 25-II-c: İşverenin başka bir işçisine cinsel tacizde bulunma",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "ec2c4201-fa8d-52c1-a5b1-168c3caccc54",
|
||||
"Code": "45",
|
||||
"Name": "4857 S.K. 25-II-d: İşverene, aile üyelerine veya başka bir işçiye sataşma, işyerine sarhoş ya da uyuşturucu kullanarak gelme",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "2ec0ea60-9bdf-53c9-b099-4521825cf38d",
|
||||
"Code": "46",
|
||||
"Name": "4857 S.K. 25-II-e: Doğruluk ve bağlılığa uymayan davranışlar (hırsızlık, sır verme vb.)",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "74a53d9d-4584-593b-941e-3f97fbc3e11f",
|
||||
"Code": "47",
|
||||
"Name": "4857 S.K. 25-II-f: İşyerinde yedi günden fazla hapisle cezalandırılan ve ertelenmeyen suç işleme",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "38f45641-e62a-5c42-a9f2-f137c58ea41f",
|
||||
"Code": "48",
|
||||
"Name": "4857 S.K. 25-II-g: İzinsiz veya haklı bir nedene dayanmaksızın devamsızlık",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "ab33c7d3-9dcc-524c-b018-591df27a81ae",
|
||||
"Code": "49",
|
||||
"Name": "4857 S.K. 25-II-h: Yapmakla ödevli olduğu görevleri hatırlatıldığı hâlde yapmamakta ısrar",
|
||||
"IsActive": true
|
||||
},
|
||||
{
|
||||
"Id": "5d95eebf-9951-5046-9771-38a5da5c6dff",
|
||||
"Code": "50",
|
||||
"Name": "4857 S.K. 25-II-ı: İş güvenliğini tehlikeye düşürme veya işyerine zarar verme",
|
||||
"IsActive": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
"Id": "f0c19fb9-6817-5401-99db-64f77e970b1e",
|
||||
"Code": "documents",
|
||||
"Name": "Documents",
|
||||
"LabelKey": "App.Intranet.Documents",
|
||||
"LabelKey": "App.Hr.Intranet.Documents",
|
||||
"SourceType": 0,
|
||||
"ComponentName": "",
|
||||
"PermissionName": "App.Files.Widget",
|
||||
|
|
@ -36,7 +36,7 @@
|
|||
"LabelKey": "App.DashboardWidget.Surveys",
|
||||
"SourceType": 0,
|
||||
"ComponentName": "",
|
||||
"PermissionName": "App.Intranet.Survey.Widget",
|
||||
"PermissionName": "App.Hr.Intranet.Survey.Widget",
|
||||
"Column": 0,
|
||||
"Order": 30,
|
||||
"Props": "",
|
||||
|
|
@ -49,7 +49,7 @@
|
|||
"LabelKey": "App.DashboardWidget.SocialWall",
|
||||
"SourceType": 0,
|
||||
"ComponentName": "",
|
||||
"PermissionName": "App.Intranet.SocialPost.Widget",
|
||||
"PermissionName": "App.Hr.Intranet.SocialPost.Widget",
|
||||
"Column": 1,
|
||||
"Order": 40,
|
||||
"Props": "",
|
||||
|
|
@ -59,10 +59,10 @@
|
|||
"Id": "6ea6a7ca-a4ec-58c9-b049-dc9fccca9256",
|
||||
"Code": "announcements",
|
||||
"Name": "Announcements",
|
||||
"LabelKey": "App.Intranet.Announcement",
|
||||
"LabelKey": "App.Hr.Intranet.Announcement",
|
||||
"SourceType": 0,
|
||||
"ComponentName": "",
|
||||
"PermissionName": "App.Intranet.Announcement.Widget",
|
||||
"PermissionName": "App.Hr.Intranet.Announcement.Widget",
|
||||
"Column": 2,
|
||||
"Order": 50,
|
||||
"Props": "",
|
||||
|
|
@ -75,7 +75,7 @@
|
|||
"LabelKey": "App.DashboardWidget.Events",
|
||||
"SourceType": 0,
|
||||
"ComponentName": "",
|
||||
"PermissionName": "App.Intranet.Events.Event.Widget",
|
||||
"PermissionName": "App.Hr.Intranet.Events.Event.Widget",
|
||||
"Column": 2,
|
||||
"Order": 60,
|
||||
"Props": "",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"ListFormCode": "App.Intranet.Announcement",
|
||||
"ListFormCode": "App.Hr.Intranet.Announcement",
|
||||
"KeyFieldName": "Id",
|
||||
"GeneratedAt": "2026-09-04T00:00:00Z",
|
||||
"Order": 0,
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"ListFormCode": "App.Intranet.Events.Event",
|
||||
"ListFormCode": "App.Hr.Intranet.Events.Event",
|
||||
"KeyFieldName": "Id",
|
||||
"GeneratedAt": "2026-09-04T00:00:00Z",
|
||||
"Order": 20,
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"ListFormCode": "App.Intranet.Events.EventCategory",
|
||||
"ListFormCode": "App.Hr.Intranet.Events.EventCategory",
|
||||
"KeyFieldName": "Id",
|
||||
"GeneratedAt": "2026-09-04T00:00:00Z",
|
||||
"Order": 10,
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"ListFormCode": "App.Intranet.Events.EventComment",
|
||||
"ListFormCode": "App.Hr.Intranet.Events.EventComment",
|
||||
"KeyFieldName": "Id",
|
||||
"GeneratedAt": "2026-09-04T00:00:00Z",
|
||||
"Order": 30,
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"ListFormCode": "App.Intranet.Events.EventType",
|
||||
"ListFormCode": "App.Hr.Intranet.Events.EventType",
|
||||
"KeyFieldName": "Id",
|
||||
"GeneratedAt": "2026-09-04T00:00:00Z",
|
||||
"Order": 10,
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"ListFormCode": "App.Intranet.SocialComment",
|
||||
"ListFormCode": "App.Hr.Intranet.SocialComment",
|
||||
"KeyFieldName": "Id",
|
||||
"GeneratedAt": "2026-09-04T00:00:00Z",
|
||||
"Order": 20,
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"ListFormCode": "App.Intranet.SocialLike",
|
||||
"ListFormCode": "App.Hr.Intranet.SocialLike",
|
||||
"KeyFieldName": "Id",
|
||||
"GeneratedAt": "2026-09-04T00:00:00Z",
|
||||
"Order": 20,
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"ListFormCode": "App.Intranet.SocialMedia",
|
||||
"ListFormCode": "App.Hr.Intranet.SocialMedia",
|
||||
"KeyFieldName": "Id",
|
||||
"GeneratedAt": "2026-09-04T00:00:00Z",
|
||||
"Order": 20,
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"ListFormCode": "App.Intranet.SocialPollOption",
|
||||
"ListFormCode": "App.Hr.Intranet.SocialPollOption",
|
||||
"KeyFieldName": "Id",
|
||||
"GeneratedAt": "2026-09-04T00:00:00Z",
|
||||
"Order": 30,
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"ListFormCode": "App.Intranet.SocialPost",
|
||||
"ListFormCode": "App.Hr.Intranet.SocialPost",
|
||||
"KeyFieldName": "Id",
|
||||
"GeneratedAt": "2026-09-04T00:00:00Z",
|
||||
"Order": 10,
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"ListFormCode": "App.Intranet.Survey",
|
||||
"ListFormCode": "App.Hr.Intranet.Survey",
|
||||
"KeyFieldName": "Id",
|
||||
"GeneratedAt": "2026-09-04T00:00:00Z",
|
||||
"Order": 10,
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"ListFormCode": "App.Intranet.SurveyQuestion",
|
||||
"ListFormCode": "App.Hr.Intranet.SurveyQuestion",
|
||||
"KeyFieldName": "Id",
|
||||
"GeneratedAt": "2026-09-04T00:00:00Z",
|
||||
"Order": 20,
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"ListFormCode": "App.Intranet.SurveyQuestionOption",
|
||||
"ListFormCode": "App.Hr.Intranet.SurveyQuestionOption",
|
||||
"KeyFieldName": "Id",
|
||||
"GeneratedAt": "2026-09-04T00:00:00Z",
|
||||
"Order": 30,
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -259,6 +259,21 @@
|
|||
"ElementId": null,
|
||||
"ModuleId": "Sas"
|
||||
},
|
||||
{
|
||||
"Id": "f1effbfd-7fec-5056-845c-6223010eb2d6",
|
||||
"Code": "App.Definitions.TerminationReason",
|
||||
"DisplayName": "App.Definitions.TerminationReason",
|
||||
"Order": 9,
|
||||
"Url": "/admin/list/App.Definitions.TerminationReason",
|
||||
"Icon": "FcExport",
|
||||
"ParentCode": "App.Saas.Definitions",
|
||||
"RequiredPermissionName": "App.Definitions.TerminationReason",
|
||||
"CssClass": null,
|
||||
"Target": null,
|
||||
"IsDisabled": false,
|
||||
"ElementId": null,
|
||||
"ModuleId": "Sas"
|
||||
},
|
||||
{
|
||||
"Id": "b7c6c711-5b7d-413d-8ae8-530b18a22c2a",
|
||||
"Code": "App.Public",
|
||||
|
|
@ -1039,131 +1054,11 @@
|
|||
"ElementId": null,
|
||||
"ModuleId": "Adm"
|
||||
},
|
||||
{
|
||||
"Id": "aaef98c6-ab15-4097-9d32-d611db7de57d",
|
||||
"Code": "App.Administration.Intranet",
|
||||
"DisplayName": "App.Intranet",
|
||||
"Order": 7,
|
||||
"Url": null,
|
||||
"Icon": "FcConferenceCall",
|
||||
"ParentCode": "App.Administration",
|
||||
"RequiredPermissionName": null,
|
||||
"CssClass": null,
|
||||
"Target": null,
|
||||
"IsDisabled": false,
|
||||
"ElementId": null,
|
||||
"ModuleId": "Adm"
|
||||
},
|
||||
{
|
||||
"Id": "5cef6234-ae2d-4963-b7aa-84f58c5d1e8a",
|
||||
"Code": "App.Intranet.Announcement",
|
||||
"DisplayName": "App.Intranet.Announcement",
|
||||
"Order": 1,
|
||||
"Url": "/admin/list/App.Intranet.Announcement",
|
||||
"Icon": "FcAdvertising",
|
||||
"ParentCode": "App.Administration.Intranet",
|
||||
"RequiredPermissionName": "App.Intranet.Announcement",
|
||||
"CssClass": null,
|
||||
"Target": null,
|
||||
"IsDisabled": false,
|
||||
"ElementId": null,
|
||||
"ModuleId": "Adm"
|
||||
},
|
||||
{
|
||||
"Id": "8eea0d26-4da7-4def-8228-bd340b518b29",
|
||||
"Code": "App.Intranet.Survey",
|
||||
"DisplayName": "App.Intranet.Survey",
|
||||
"Order": 2,
|
||||
"Url": "/admin/list/App.Intranet.Survey",
|
||||
"Icon": "FcTodoList",
|
||||
"ParentCode": "App.Administration.Intranet",
|
||||
"RequiredPermissionName": "App.Intranet.Survey",
|
||||
"CssClass": null,
|
||||
"Target": null,
|
||||
"IsDisabled": false,
|
||||
"ElementId": null,
|
||||
"ModuleId": "Adm"
|
||||
},
|
||||
{
|
||||
"Id": "216da72b-e243-4f07-afaa-04a7b79dc977",
|
||||
"Code": "App.Intranet.SocialPost",
|
||||
"DisplayName": "App.Intranet.SocialPost",
|
||||
"Order": 3,
|
||||
"Url": "/admin/list/App.Intranet.SocialPost",
|
||||
"Icon": "FcComments",
|
||||
"ParentCode": "App.Administration.Intranet",
|
||||
"RequiredPermissionName": "App.Intranet.SocialPost",
|
||||
"CssClass": null,
|
||||
"Target": null,
|
||||
"IsDisabled": false,
|
||||
"ElementId": null,
|
||||
"ModuleId": "Adm"
|
||||
},
|
||||
{
|
||||
"Id": "01246207-7a2e-43cc-82b1-3a475b242926",
|
||||
"Code": "App.Intranet.Events.EventType",
|
||||
"DisplayName": "App.Intranet.Events.EventType",
|
||||
"Order": 4,
|
||||
"Url": "/admin/list/App.Intranet.Events.EventType",
|
||||
"Icon": "FcPlanner",
|
||||
"ParentCode": "App.Administration.Intranet",
|
||||
"RequiredPermissionName": "App.Intranet.Events.EventType",
|
||||
"CssClass": null,
|
||||
"Target": null,
|
||||
"IsDisabled": false,
|
||||
"ElementId": null,
|
||||
"ModuleId": "Adm"
|
||||
},
|
||||
{
|
||||
"Id": "319118e2-1a91-44e2-8f4d-45b7327d4975",
|
||||
"Code": "App.Intranet.Events.EventCategory",
|
||||
"DisplayName": "App.Intranet.Events.EventCategory",
|
||||
"Order": 5,
|
||||
"Url": "/admin/list/App.Intranet.Events.EventCategory",
|
||||
"Icon": "FcTreeStructure",
|
||||
"ParentCode": "App.Administration.Intranet",
|
||||
"RequiredPermissionName": "App.Intranet.Events.EventCategory",
|
||||
"CssClass": null,
|
||||
"Target": null,
|
||||
"IsDisabled": false,
|
||||
"ElementId": null,
|
||||
"ModuleId": "Adm"
|
||||
},
|
||||
{
|
||||
"Id": "7efe2b4b-407d-4bb8-9350-fa89b759111b",
|
||||
"Code": "App.Intranet.Events.Event",
|
||||
"DisplayName": "App.Intranet.Events.Event",
|
||||
"Order": 6,
|
||||
"Url": "/admin/list/App.Intranet.Events.Event",
|
||||
"Icon": "FcCalendar",
|
||||
"ParentCode": "App.Administration.Intranet",
|
||||
"RequiredPermissionName": "App.Intranet.Events.Event",
|
||||
"CssClass": null,
|
||||
"Target": null,
|
||||
"IsDisabled": false,
|
||||
"ElementId": null,
|
||||
"ModuleId": "Adm"
|
||||
},
|
||||
{
|
||||
"Id": "9ef2a858-1465-407c-9636-c8802a5119d4",
|
||||
"Code": "App.Intranet.Document",
|
||||
"DisplayName": "App.Intranet.Document",
|
||||
"Order": 7,
|
||||
"Url": "/admin/intranet-documents",
|
||||
"Icon": "FcOpenedFolder",
|
||||
"ParentCode": "App.Administration.Intranet",
|
||||
"RequiredPermissionName": "App.Intranet.Document",
|
||||
"CssClass": null,
|
||||
"Target": null,
|
||||
"IsDisabled": false,
|
||||
"ElementId": null,
|
||||
"ModuleId": "Adm"
|
||||
},
|
||||
{
|
||||
"Id": "e599782a-f3bd-4f9e-9750-d23c55460876",
|
||||
"Code": "App.Administration.Restrictions",
|
||||
"DisplayName": "App.Platform.Restrictions",
|
||||
"Order": 8,
|
||||
"Order": 7,
|
||||
"Url": null,
|
||||
"Icon": "FaLock",
|
||||
"ParentCode": "App.Administration",
|
||||
|
|
@ -1208,7 +1103,7 @@
|
|||
"Id": "92c4e9c7-7272-4cf5-934f-9b6c37172942",
|
||||
"Code": "Abp.Identity",
|
||||
"DisplayName": "Abp.Identity",
|
||||
"Order": 9,
|
||||
"Order": 8,
|
||||
"Url": null,
|
||||
"Icon": "FcConferenceCall",
|
||||
"ParentCode": "App.Administration",
|
||||
|
|
@ -1343,7 +1238,7 @@
|
|||
"Id": "d4e11975-a4d9-4444-b742-e7eb651386fb",
|
||||
"Code": "App.Reports.Management",
|
||||
"DisplayName": "App.Reports.Management",
|
||||
"Order": 10,
|
||||
"Order": 9,
|
||||
"Url": null,
|
||||
"Icon": "FcDocument",
|
||||
"ParentCode": "App.Administration",
|
||||
|
|
@ -1388,7 +1283,7 @@
|
|||
"Id": "2df27f03-9f1e-455c-9c0d-05ffccfe9312",
|
||||
"Code": "App.Videoroom",
|
||||
"DisplayName": "App.Videoroom",
|
||||
"Order": 11,
|
||||
"Order": 10,
|
||||
"Url": "/admin/videoroom/dashboard",
|
||||
"Icon": "FcVideoCall",
|
||||
"ParentCode": "App.Administration",
|
||||
|
|
@ -1403,7 +1298,7 @@
|
|||
"Id": "5e5180bf-5b4d-4f3d-9a42-795942600bbf",
|
||||
"Code": "App.Forum",
|
||||
"DisplayName": "App.Forum",
|
||||
"Order": 12,
|
||||
"Order": 11,
|
||||
"Url": "/admin/forum",
|
||||
"Icon": "FcLink",
|
||||
"ParentCode": "App.Administration",
|
||||
|
|
@ -1818,6 +1713,126 @@
|
|||
"IsDisabled": false,
|
||||
"ElementId": null,
|
||||
"ModuleId": "Hr"
|
||||
},
|
||||
{
|
||||
"Id": "aaef98c6-ab15-4097-9d32-d611db7de57d",
|
||||
"Code": "App.Hr.Intranet",
|
||||
"DisplayName": "App.Hr.Intranet",
|
||||
"Order": 9,
|
||||
"Url": null,
|
||||
"Icon": "FcConferenceCall",
|
||||
"ParentCode": "App.Hr",
|
||||
"RequiredPermissionName": null,
|
||||
"CssClass": null,
|
||||
"Target": null,
|
||||
"IsDisabled": false,
|
||||
"ElementId": null,
|
||||
"ModuleId": "Hr"
|
||||
},
|
||||
{
|
||||
"Id": "5cef6234-ae2d-4963-b7aa-84f58c5d1e8a",
|
||||
"Code": "App.Hr.Intranet.Announcement",
|
||||
"DisplayName": "App.Hr.Intranet.Announcement",
|
||||
"Order": 1,
|
||||
"Url": "/admin/list/App.Hr.Intranet.Announcement",
|
||||
"Icon": "FcAdvertising",
|
||||
"ParentCode": "App.Hr.Intranet",
|
||||
"RequiredPermissionName": "App.Hr.Intranet.Announcement",
|
||||
"CssClass": null,
|
||||
"Target": null,
|
||||
"IsDisabled": false,
|
||||
"ElementId": null,
|
||||
"ModuleId": "Hr"
|
||||
},
|
||||
{
|
||||
"Id": "8eea0d26-4da7-4def-8228-bd340b518b29",
|
||||
"Code": "App.Hr.Intranet.Survey",
|
||||
"DisplayName": "App.Hr.Intranet.Survey",
|
||||
"Order": 2,
|
||||
"Url": "/admin/list/App.Hr.Intranet.Survey",
|
||||
"Icon": "FcTodoList",
|
||||
"ParentCode": "App.Hr.Intranet",
|
||||
"RequiredPermissionName": "App.Hr.Intranet.Survey",
|
||||
"CssClass": null,
|
||||
"Target": null,
|
||||
"IsDisabled": false,
|
||||
"ElementId": null,
|
||||
"ModuleId": "Hr"
|
||||
},
|
||||
{
|
||||
"Id": "216da72b-e243-4f07-afaa-04a7b79dc977",
|
||||
"Code": "App.Hr.Intranet.SocialPost",
|
||||
"DisplayName": "App.Hr.Intranet.SocialPost",
|
||||
"Order": 3,
|
||||
"Url": "/admin/list/App.Hr.Intranet.SocialPost",
|
||||
"Icon": "FcComments",
|
||||
"ParentCode": "App.Hr.Intranet",
|
||||
"RequiredPermissionName": "App.Hr.Intranet.SocialPost",
|
||||
"CssClass": null,
|
||||
"Target": null,
|
||||
"IsDisabled": false,
|
||||
"ElementId": null,
|
||||
"ModuleId": "Hr"
|
||||
},
|
||||
{
|
||||
"Id": "01246207-7a2e-43cc-82b1-3a475b242926",
|
||||
"Code": "App.Hr.Intranet.Events.EventType",
|
||||
"DisplayName": "App.Hr.Intranet.Events.EventType",
|
||||
"Order": 4,
|
||||
"Url": "/admin/list/App.Hr.Intranet.Events.EventType",
|
||||
"Icon": "FcPlanner",
|
||||
"ParentCode": "App.Hr.Intranet",
|
||||
"RequiredPermissionName": "App.Hr.Intranet.Events.EventType",
|
||||
"CssClass": null,
|
||||
"Target": null,
|
||||
"IsDisabled": false,
|
||||
"ElementId": null,
|
||||
"ModuleId": "Hr"
|
||||
},
|
||||
{
|
||||
"Id": "319118e2-1a91-44e2-8f4d-45b7327d4975",
|
||||
"Code": "App.Hr.Intranet.Events.EventCategory",
|
||||
"DisplayName": "App.Hr.Intranet.Events.EventCategory",
|
||||
"Order": 5,
|
||||
"Url": "/admin/list/App.Hr.Intranet.Events.EventCategory",
|
||||
"Icon": "FcTreeStructure",
|
||||
"ParentCode": "App.Hr.Intranet",
|
||||
"RequiredPermissionName": "App.Hr.Intranet.Events.EventCategory",
|
||||
"CssClass": null,
|
||||
"Target": null,
|
||||
"IsDisabled": false,
|
||||
"ElementId": null,
|
||||
"ModuleId": "Hr"
|
||||
},
|
||||
{
|
||||
"Id": "7efe2b4b-407d-4bb8-9350-fa89b759111b",
|
||||
"Code": "App.Hr.Intranet.Events.Event",
|
||||
"DisplayName": "App.Hr.Intranet.Events.Event",
|
||||
"Order": 6,
|
||||
"Url": "/admin/list/App.Hr.Intranet.Events.Event",
|
||||
"Icon": "FcCalendar",
|
||||
"ParentCode": "App.Hr.Intranet",
|
||||
"RequiredPermissionName": "App.Hr.Intranet.Events.Event",
|
||||
"CssClass": null,
|
||||
"Target": null,
|
||||
"IsDisabled": false,
|
||||
"ElementId": null,
|
||||
"ModuleId": "Hr"
|
||||
},
|
||||
{
|
||||
"Id": "9ef2a858-1465-407c-9636-c8802a5119d4",
|
||||
"Code": "App.Hr.Intranet.Document",
|
||||
"DisplayName": "App.Hr.Intranet.Document",
|
||||
"Order": 7,
|
||||
"Url": "/admin/intranet-documents",
|
||||
"Icon": "FcOpenedFolder",
|
||||
"ParentCode": "App.Hr.Intranet",
|
||||
"RequiredPermissionName": "App.Hr.Intranet.Document",
|
||||
"CssClass": null,
|
||||
"Target": null,
|
||||
"IsDisabled": false,
|
||||
"ElementId": null,
|
||||
"ModuleId": "Hr"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -733,7 +733,7 @@
|
|||
"ComponentType": "normal",
|
||||
"ComponentPath": "@/views/intranet/documents/IntranetDocuments",
|
||||
"RouteType": "protected",
|
||||
"Authority": "App.Intranet.Document",
|
||||
"Authority": "App.Hr.Intranet.Document",
|
||||
"SeoTitle": null,
|
||||
"SeoDescription": null,
|
||||
"SeoKeywords": null,
|
||||
|
|
|
|||
|
|
@ -34,6 +34,16 @@
|
|||
"IsFixed": false,
|
||||
"IsCustomized": false
|
||||
},
|
||||
{
|
||||
"Id": "940fb243-3d79-59cd-8cda-26c59a143306",
|
||||
"NotificationTypeId": "8eaa322e-76bb-592a-8200-666442c03e23",
|
||||
"RecipientType": "Role",
|
||||
"RecipientId": "admin",
|
||||
"Channel": "UiActivity",
|
||||
"IsActive": true,
|
||||
"IsFixed": false,
|
||||
"IsCustomized": false
|
||||
},
|
||||
{
|
||||
"Id": "7d2e5a90-1c84-5b37-9e62-8a4f0d3b6c22",
|
||||
"NotificationTypeId": "3f6c8b41-9d27-5a63-8f1e-4b0a9c6d2e11",
|
||||
|
|
|
|||
|
|
@ -19,6 +19,11 @@
|
|||
"Name": "YeniKullanici",
|
||||
"Description": "Sisteme yeni bir kullanıcı eklendiğinde tetiklenir. Yönetici ekibin yetki ve rol atamasını yapması için haberdar olmasını sağlar."
|
||||
},
|
||||
{
|
||||
"Id": "8eaa322e-76bb-592a-8200-666442c03e23",
|
||||
"Name": "DenemeSuresiBitiyor",
|
||||
"Description": "Bir çalışanın deneme süresinin bitmesine 15 gün kaldığında tetiklenir. İK ve yöneticinin sözleşmeyi sürdürme ya da deneme süresi içinde fesih kararını zamanında vermesi içindir; mesajda çalışanın adı ve bitiş tarihi geçer. Tetikleyici her gün çalışan Probation Reminder Worker işidir (kullanıcının ProbationEndDate alanı)."
|
||||
},
|
||||
{
|
||||
"Id": "3f6c8b41-9d27-5a63-8f1e-4b0a9c6d2e11",
|
||||
"Name": "Manuel",
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ const intranetDashboardNavItem: NavigationTree = {
|
|||
key: ROUTES_ENUM.protected.dashboard,
|
||||
path: ROUTES_ENUM.protected.dashboard,
|
||||
title: 'Intranet',
|
||||
translateKey: 'App.Intranet',
|
||||
translateKey: 'App.Hr.Intranet',
|
||||
icon: 'FaHome',
|
||||
type: 'item',
|
||||
authority: [],
|
||||
|
|
|
|||
|
|
@ -170,7 +170,6 @@ export interface UserInfoViewModel extends ExtensibleObject {
|
|||
marriageDate?: Date | string
|
||||
homeAddress?: string
|
||||
educationLevel?: string
|
||||
graduationSchool?: string
|
||||
bloodType?: string
|
||||
motherHealthStatus?: string
|
||||
motherHealthNote?: string
|
||||
|
|
@ -248,6 +247,32 @@ export interface UserInfoViewModel extends ExtensibleObject {
|
|||
shiftWorkFit?: boolean
|
||||
nightWorkFit?: boolean
|
||||
shiftNightDoctorId?: string
|
||||
secondaryEmail?: string
|
||||
secondaryPhoneNumber?: string
|
||||
militaryStatus?: string
|
||||
militaryPostponeEndDate?: Date | string
|
||||
isDisabled: boolean
|
||||
disabilityRate?: number
|
||||
disabilityReport?: string
|
||||
disabilityReportFileName?: string
|
||||
passportNo?: string
|
||||
passportExpiryDate?: Date | string
|
||||
workPermitNo?: string
|
||||
workPermitEndDate?: Date | string
|
||||
registrationNo?: string
|
||||
employmentType?: string
|
||||
contractType?: string
|
||||
contractEndDate?: Date | string
|
||||
probationEndDate?: Date | string
|
||||
seniorityStartDate?: Date | string
|
||||
terminationReasonId?: string
|
||||
terminationNote?: string
|
||||
shiftId?: string
|
||||
pdksCardNo?: string
|
||||
drivingLicenseClass?: string
|
||||
drivingLicenseNo?: string
|
||||
drivingLicenseIssueDate?: Date | string
|
||||
drivingLicenseExpiryDate?: Date | string
|
||||
}
|
||||
|
||||
export interface AssignedRoleViewModel {
|
||||
|
|
@ -292,3 +317,13 @@ export interface UserClaimModel {
|
|||
claimType: string
|
||||
claimValue: string
|
||||
}
|
||||
|
||||
/** Banka ve ücret bilgisi; `UserInfoViewModel` içinde taşınmaz, ayrı yetkiyle okunur. */
|
||||
export interface UserFinancialDto {
|
||||
id: string
|
||||
bankName?: string
|
||||
iban?: string
|
||||
salaryType?: string
|
||||
grossSalary?: number
|
||||
salaryCurrency?: string
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import {
|
|||
PermissionDefinitionRecord,
|
||||
UpdatePermissionsDto,
|
||||
UserClaimModel,
|
||||
UserFinancialDto,
|
||||
UserInfoViewModel,
|
||||
} from '@/proxy/admin/models'
|
||||
import { ListResultDto, PagedAndSortedResultRequestDto, PagedResultDto } from '../proxy'
|
||||
|
|
@ -63,6 +64,19 @@ export const putUserDetail = (input: UserInfoViewModel) =>
|
|||
data: input,
|
||||
})
|
||||
|
||||
export const getUserFinancial = (userId: string) =>
|
||||
apiService.fetchData<UserFinancialDto>({
|
||||
method: 'GET',
|
||||
url: `/api/app/platform-identity/${userId}/financial`,
|
||||
})
|
||||
|
||||
export const putUserFinancial = (input: UserFinancialDto) =>
|
||||
apiService.fetchData({
|
||||
method: 'PUT',
|
||||
url: `/api/app/platform-identity/financial`,
|
||||
data: input,
|
||||
})
|
||||
|
||||
export const putUserAvatar = (input: UserAvatarUpdateInput) => {
|
||||
const formData = new FormData()
|
||||
formData.append('userId', input.userId)
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@ import {
|
|||
FaPhone,
|
||||
FaPlus,
|
||||
FaHome,
|
||||
FaUniversity,
|
||||
} from 'react-icons/fa'
|
||||
import * as Yup from 'yup'
|
||||
import { ProfileDto, UpdateProfileDto } from '@/proxy/account/models'
|
||||
|
|
@ -352,14 +351,6 @@ const General = () => {
|
|||
)}
|
||||
/>
|
||||
</FormItem>
|
||||
<FormItem label={translate('::Abp.Account.GraduationSchool')}>
|
||||
<Input
|
||||
disabled
|
||||
type="text"
|
||||
prefix={<FaUniversity className="text-xl" />}
|
||||
value={getProfileExtraValue('GraduationSchool')}
|
||||
></Input>
|
||||
</FormItem>
|
||||
<FormItem label={translate('::Abp.Account.BloodType')}>
|
||||
<Select<SelectBoxOption>
|
||||
isDisabled
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
110
ui/src/views/admin/user-management/EducationSkillsTab.tsx
Normal file
110
ui/src/views/admin/user-management/EducationSkillsTab.tsx
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
import { Button, FormContainer, Notification, Tabs, toast } from '@/components/ui'
|
||||
import TabContent from '@/components/ui/Tabs/TabContent'
|
||||
import TabList from '@/components/ui/Tabs/TabList'
|
||||
import TabNav from '@/components/ui/Tabs/TabNav'
|
||||
import PlatformViewHost from '@/components/componentEditor/PlatformViewHost'
|
||||
import { UserInfoViewModel } from '@/proxy/admin/models'
|
||||
import { putUserDetail } from '@/services/identity.service'
|
||||
import { useLocalization } from '@/utils/hooks/useLocalization'
|
||||
import { Form, Formik } from 'formik'
|
||||
import { useMemo } from 'react'
|
||||
import { SelectField } from './userFormFields'
|
||||
|
||||
/** Kullanıcıya göre süzülen alt listeler; sekme adı = ListForm kodunun son parçası. */
|
||||
const educationLists = ['UserEducation', 'UserLanguage', 'UserSkill', 'UserCertificate']
|
||||
|
||||
/** Değerler eğitim geçmişi listesiyle aynıdır; en yüksek düzey bordro ve raporlar için ayrıca tutulur. */
|
||||
const educationLevels = [
|
||||
['İlkokul', 'Primary'],
|
||||
['Ortaokul', 'MiddleSchool'],
|
||||
['Lise', 'HighSchool'],
|
||||
['Ön Lisans', 'Associate'],
|
||||
['Lisans', 'Bachelor'],
|
||||
['Yüksek Lisans', 'Master'],
|
||||
['Doktora', 'PhD'],
|
||||
] as const
|
||||
|
||||
interface EducationSkillsTabProps {
|
||||
userDetails: UserInfoViewModel
|
||||
onSaved: () => void
|
||||
}
|
||||
|
||||
function EducationSkillsTab({ userDetails, onSaved }: EducationSkillsTabProps) {
|
||||
const { translate } = useLocalization()
|
||||
// Yeni satırın UserId değeri de bu filtreden dolar (applyNewRowDefaults).
|
||||
const userSearchParams = useMemo(
|
||||
() => new URLSearchParams({ filter: JSON.stringify(['UserId', '=', userDetails.id]) }),
|
||||
[userDetails.id],
|
||||
)
|
||||
|
||||
return (
|
||||
<>
|
||||
<Formik
|
||||
enableReinitialize
|
||||
initialValues={userDetails}
|
||||
onSubmit={async (values, { setSubmitting }) => {
|
||||
setSubmitting(true)
|
||||
await putUserDetail({ ...values })
|
||||
toast.push(
|
||||
<Notification type="success" duration={2000}>
|
||||
{translate('::App.Platform.Save')}
|
||||
</Notification>,
|
||||
{ placement: 'bottom-end' },
|
||||
)
|
||||
onSaved()
|
||||
setSubmitting(false)
|
||||
}}
|
||||
>
|
||||
{({ isSubmitting }) => (
|
||||
<Form>
|
||||
<FormContainer size="md">
|
||||
<div className="flex flex-col md:flex-row md:items-end gap-4">
|
||||
<div className="md:w-72">
|
||||
<SelectField
|
||||
name="educationLevel"
|
||||
label={translate('::Abp.Account.EducationLevel')}
|
||||
options={educationLevels.map(([value, key]) => ({
|
||||
value,
|
||||
label: translate(`::App.EducationLevel.${key}`),
|
||||
}))}
|
||||
/>
|
||||
</div>
|
||||
<div className="mb-7">
|
||||
<Button variant="solid" loading={isSubmitting} type="submit">
|
||||
{isSubmitting
|
||||
? translate('::App.Platform.Saving')
|
||||
: translate('::App.Platform.Save')}
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
</FormContainer>
|
||||
</Form>
|
||||
)}
|
||||
</Formik>
|
||||
|
||||
<Tabs defaultValue={educationLists[0]}>
|
||||
<TabList>
|
||||
{educationLists.map((code) => (
|
||||
<TabNav key={code} value={code}>
|
||||
{translate(`::App.IdentityManagement.${code}`)}
|
||||
</TabNav>
|
||||
))}
|
||||
</TabList>
|
||||
{educationLists.map((code) => (
|
||||
<TabContent key={code} value={code}>
|
||||
<div className="pt-4">
|
||||
<PlatformViewHost
|
||||
view="List"
|
||||
listFormCode={`App.IdentityManagement.${code}`}
|
||||
height="320px"
|
||||
searchParams={userSearchParams}
|
||||
/>
|
||||
</div>
|
||||
</TabContent>
|
||||
))}
|
||||
</Tabs>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
export default EducationSkillsTab
|
||||
33
ui/src/views/admin/user-management/FamilyEmergencyTab.tsx
Normal file
33
ui/src/views/admin/user-management/FamilyEmergencyTab.tsx
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
import PlatformViewHost from '@/components/componentEditor/PlatformViewHost'
|
||||
import { useLocalization } from '@/utils/hooks/useLocalization'
|
||||
import { useMemo } from 'react'
|
||||
|
||||
/** Aile ve acil durum kişileri yalnızca alt listedir; kullanıcı kaydında alan taşımaz. */
|
||||
const familyLists = ['UserFamilyMember', 'UserEmergencyContact']
|
||||
|
||||
function FamilyEmergencyTab({ userId }: { userId: string }) {
|
||||
const { translate } = useLocalization()
|
||||
// Yeni satırın UserId değeri de bu filtreden dolar (applyNewRowDefaults).
|
||||
const userSearchParams = useMemo(
|
||||
() => new URLSearchParams({ filter: JSON.stringify(['UserId', '=', userId]) }),
|
||||
[userId],
|
||||
)
|
||||
|
||||
return (
|
||||
<div className="flex flex-col gap-6">
|
||||
{familyLists.map((code) => (
|
||||
<div key={code}>
|
||||
<h6 className="mb-2">{translate(`::App.IdentityManagement.${code}`)}</h6>
|
||||
<PlatformViewHost
|
||||
view="List"
|
||||
listFormCode={`App.IdentityManagement.${code}`}
|
||||
height="320px"
|
||||
searchParams={userSearchParams}
|
||||
/>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export default FamilyEmergencyTab
|
||||
124
ui/src/views/admin/user-management/FinancialTab.tsx
Normal file
124
ui/src/views/admin/user-management/FinancialTab.tsx
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
import { Button, FormContainer, Notification, toast } from '@/components/ui'
|
||||
import PlatformViewHost from '@/components/componentEditor/PlatformViewHost'
|
||||
import { UserFinancialDto } from '@/proxy/admin/models'
|
||||
import { getUserFinancial, putUserFinancial } from '@/services/identity.service'
|
||||
import { useLocalization } from '@/utils/hooks/useLocalization'
|
||||
import { Form, Formik } from 'formik'
|
||||
import { useCallback, useEffect, useMemo, useState } from 'react'
|
||||
import { FaMoneyBillWave, FaUniversity } from 'react-icons/fa'
|
||||
import { Section, SelectField, TextField } from './userFormFields'
|
||||
import { useUserFieldLookup } from './useUserFieldLookup'
|
||||
|
||||
const salaryTypes = ['Monthly', 'Daily', 'Hourly']
|
||||
|
||||
// Ülke kodu + kontrol hanesi + 11-30 karakter (ISO 13616); TR IBAN'ı 26 karakterdir.
|
||||
const IBAN_PATTERN = /^[A-Z]{2}\d{2}[A-Z0-9]{11,30}$/
|
||||
|
||||
function FinancialTab({ userId }: { userId: string }) {
|
||||
const { translate } = useLocalization()
|
||||
const [financial, setFinancial] = useState<UserFinancialDto>()
|
||||
const currencyOptions = useUserFieldLookup('SalaryCurrency')
|
||||
const userSearchParams = useMemo(
|
||||
() => new URLSearchParams({ filter: JSON.stringify(['UserId', '=', userId]) }),
|
||||
[userId],
|
||||
)
|
||||
|
||||
const load = useCallback(async () => {
|
||||
const { data } = await getUserFinancial(userId)
|
||||
setFinancial(data)
|
||||
}, [userId])
|
||||
|
||||
useEffect(() => {
|
||||
setFinancial(undefined)
|
||||
load()
|
||||
}, [load])
|
||||
|
||||
if (!financial) {
|
||||
return null
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<Formik
|
||||
enableReinitialize
|
||||
initialValues={financial}
|
||||
validate={(values) => {
|
||||
const iban = values.iban?.replace(/\s/g, '').toUpperCase()
|
||||
return iban && !IBAN_PATTERN.test(iban)
|
||||
? { iban: translate('::Abp.Identity.User.Financial.InvalidIban') }
|
||||
: {}
|
||||
}}
|
||||
onSubmit={async (values, { setSubmitting }) => {
|
||||
setSubmitting(true)
|
||||
await putUserFinancial({ ...values })
|
||||
toast.push(
|
||||
<Notification type="success" duration={2000}>
|
||||
{translate('::App.Platform.Save')}
|
||||
</Notification>,
|
||||
{ placement: 'bottom-end' },
|
||||
)
|
||||
await load()
|
||||
setSubmitting(false)
|
||||
}}
|
||||
>
|
||||
{({ isSubmitting, errors }) => (
|
||||
<Form>
|
||||
<FormContainer size="md">
|
||||
<div className="grid grid-cols-1 lg:grid-cols-2 gap-5">
|
||||
<Section title={translate('::Abp.Identity.User.Financial.Bank')}>
|
||||
<TextField
|
||||
name="bankName"
|
||||
label={translate('::App.Listform.ListformField.BankName')}
|
||||
icon={<FaUniversity className="text-xl" />}
|
||||
/>
|
||||
<TextField name="iban" label={translate('::App.Listform.ListformField.Iban')} />
|
||||
{errors.iban && <div className="text-red-500 text-sm -mt-5 mb-4">{errors.iban}</div>}
|
||||
</Section>
|
||||
<Section title={translate('::Abp.Identity.User.Financial.Salary')}>
|
||||
<div className="grid grid-cols-1 md:grid-cols-3 gap-x-4">
|
||||
<SelectField
|
||||
name="salaryType"
|
||||
label={translate('::Abp.Identity.User.UserInformation.SalaryType')}
|
||||
options={salaryTypes.map((value) => ({
|
||||
value,
|
||||
label: translate(`::App.StaticLookup.${value}`),
|
||||
}))}
|
||||
/>
|
||||
<TextField
|
||||
type="number"
|
||||
name="grossSalary"
|
||||
label={translate('::Abp.Identity.User.UserInformation.GrossSalary')}
|
||||
icon={<FaMoneyBillWave className="text-xl" />}
|
||||
/>
|
||||
<SelectField
|
||||
name="salaryCurrency"
|
||||
label={translate('::App.Listform.ListformField.Currency')}
|
||||
options={currencyOptions}
|
||||
/>
|
||||
</div>
|
||||
</Section>
|
||||
</div>
|
||||
</FormContainer>
|
||||
<div className="mt-4 ltr:text-right">
|
||||
<Button variant="solid" loading={isSubmitting} type="submit">
|
||||
{isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
|
||||
</Button>
|
||||
</div>
|
||||
</Form>
|
||||
)}
|
||||
</Formik>
|
||||
|
||||
<div className="mt-6">
|
||||
<h6 className="mb-2">{translate('::App.IdentityManagement.UserBenefit')}</h6>
|
||||
<PlatformViewHost
|
||||
view="List"
|
||||
listFormCode="App.IdentityManagement.UserBenefit"
|
||||
height="320px"
|
||||
searchParams={userSearchParams}
|
||||
/>
|
||||
</div>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
export default FinancialTab
|
||||
39
ui/src/views/admin/user-management/useUserFieldLookup.ts
Normal file
39
ui/src/views/admin/user-management/useUserFieldLookup.ts
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
import { dynamicFetch } from '@/services/form.service'
|
||||
import { SelectBoxOption } from '@/types/shared'
|
||||
import { useEffect, useState } from 'react'
|
||||
|
||||
/**
|
||||
* Seçenekleri kullanıcı ekranının (AbpIdentity.Users) alan lookup'ından okur. Sorgu ve kiracı
|
||||
* süzmesi ListForm alanında tanımlıdır; ekran ikinci bir sorgu kopyası taşımaz.
|
||||
*/
|
||||
export const useUserFieldLookup = (fieldName: string) => {
|
||||
const [options, setOptions] = useState<SelectBoxOption[]>([])
|
||||
|
||||
useEffect(() => {
|
||||
let active = true
|
||||
const load = async () => {
|
||||
try {
|
||||
const response = await dynamicFetch('list-form-select/lookup', 'POST', null, {
|
||||
listFormCode: 'AbpIdentity.Users',
|
||||
listFormFieldName: fieldName,
|
||||
})
|
||||
const rows = Array.isArray(response?.data) ? response.data : []
|
||||
if (active) {
|
||||
setOptions(
|
||||
rows.map((row: Record<string, string>) => ({ value: row.Key, label: row.Name })),
|
||||
)
|
||||
}
|
||||
} catch {
|
||||
if (active) {
|
||||
setOptions([])
|
||||
}
|
||||
}
|
||||
}
|
||||
load()
|
||||
return () => {
|
||||
active = false
|
||||
}
|
||||
}, [fieldName])
|
||||
|
||||
return options
|
||||
}
|
||||
85
ui/src/views/admin/user-management/userFormFields.tsx
Normal file
85
ui/src/views/admin/user-management/userFormFields.tsx
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
import { Checkbox, DatePicker, FormItem, Input, Select } from '@/components/ui'
|
||||
import { SelectBoxOption } from '@/types/shared'
|
||||
import dayjs from 'dayjs'
|
||||
import { Field, FieldProps } from 'formik'
|
||||
import { ReactNode } from 'react'
|
||||
|
||||
/** Kullanıcı detayındaki bir bilgi grubu; sekme içinde başlıklı çerçeve olarak çizilir. */
|
||||
export const Section = ({ title, children }: { title: string; children: ReactNode }) => (
|
||||
<div className="border rounded-lg p-4">
|
||||
<h6 className="mb-4">{title}</h6>
|
||||
{children}
|
||||
</div>
|
||||
)
|
||||
|
||||
interface FieldBaseProps {
|
||||
name: string
|
||||
label: string
|
||||
icon?: ReactNode
|
||||
disabled?: boolean
|
||||
}
|
||||
|
||||
export const TextField = ({ name, label, icon, disabled, type = 'text' }: FieldBaseProps & { type?: string }) => (
|
||||
<FormItem label={label}>
|
||||
<Field type={type} name={name} placeholder={label} component={Input} prefix={icon} disabled={disabled} />
|
||||
</FormItem>
|
||||
)
|
||||
|
||||
export const DateField = ({ name, label, icon, disabled, error }: FieldBaseProps & { error?: string }) => (
|
||||
<FormItem label={label} invalid={!!error} errorMessage={error}>
|
||||
<Field name={name}>
|
||||
{({ field, form }: FieldProps) => (
|
||||
<DatePicker
|
||||
field={field}
|
||||
form={form}
|
||||
value={field.value ? dayjs(field.value).toDate() : null}
|
||||
placeholder={label}
|
||||
inputPrefix={icon}
|
||||
disabled={disabled}
|
||||
onChange={(date) =>
|
||||
form.setFieldValue(field.name, date ? dayjs(date).format('YYYY-MM-DDTHH:mm:ss') : null)
|
||||
}
|
||||
/>
|
||||
)}
|
||||
</Field>
|
||||
</FormItem>
|
||||
)
|
||||
|
||||
export const CheckboxField = ({ name, label }: FieldBaseProps) => (
|
||||
<FormItem layout="horizontal" labelClass="!justify-start" labelWidth="50%" label={label}>
|
||||
<Field name={name} component={Checkbox} />
|
||||
</FormItem>
|
||||
)
|
||||
|
||||
interface SelectFieldProps extends FieldBaseProps {
|
||||
options: SelectBoxOption[]
|
||||
/** Çok değerli alanlar tek metin kolonunda `|` ile saklanır (platform sözleşmesi). */
|
||||
isMulti?: boolean
|
||||
}
|
||||
|
||||
export const SelectField = ({ name, label, options, isMulti, disabled }: SelectFieldProps) => (
|
||||
<FormItem label={label}>
|
||||
<Field name={name}>
|
||||
{({ field, form }: FieldProps<string | null>) => {
|
||||
const selected = isMulti ? (field.value ?? '').split('|').filter(Boolean) : [field.value]
|
||||
return (
|
||||
<Select
|
||||
isClearable
|
||||
field={field}
|
||||
form={form}
|
||||
options={options}
|
||||
isMulti={isMulti}
|
||||
isDisabled={disabled}
|
||||
value={options.filter((o) => selected.includes(o.value ?? ''))}
|
||||
onChange={(option) => {
|
||||
const value = isMulti
|
||||
? ((option as SelectBoxOption[] | null) ?? []).map((o) => o.value).join('|') || null
|
||||
: ((option as SelectBoxOption | null)?.value ?? null)
|
||||
form.setFieldValue(field.name, value)
|
||||
}}
|
||||
/>
|
||||
)
|
||||
}}
|
||||
</Field>
|
||||
</FormItem>
|
||||
)
|
||||
|
|
@ -34,9 +34,9 @@ import {
|
|||
const TOAST_PLACEMENT = { placement: 'bottom-end' } as const
|
||||
|
||||
const PERMISSION = {
|
||||
UPLOAD: 'App.Intranet.Document.Create',
|
||||
UPDATE: 'App.Intranet.Document.Update',
|
||||
DELETE: 'App.Intranet.Document.Delete',
|
||||
UPLOAD: 'App.Hr.Intranet.Document.Create',
|
||||
UPDATE: 'App.Hr.Intranet.Document.Update',
|
||||
DELETE: 'App.Hr.Intranet.Document.Delete',
|
||||
} as const
|
||||
|
||||
type ViewMode = 'kanban' | 'list'
|
||||
|
|
@ -91,7 +91,7 @@ const IntranetDocuments = () => {
|
|||
setSelectedIds([])
|
||||
} catch (error) {
|
||||
console.error('Failed to load intranet documents:', error)
|
||||
notify('danger', translate('::App.Intranet.Document.LoadFailed'))
|
||||
notify('danger', translate('::App.Hr.Intranet.Document.LoadFailed'))
|
||||
setDocuments([])
|
||||
} finally {
|
||||
setLoading(false)
|
||||
|
|
@ -124,7 +124,7 @@ const IntranetDocuments = () => {
|
|||
} else {
|
||||
grouped.set(key, {
|
||||
key,
|
||||
label: key ? key.toUpperCase() : translate('::App.Intranet.Document.Unknown'),
|
||||
label: key ? key.toUpperCase() : translate('::App.Hr.Intranet.Document.Unknown'),
|
||||
items: [item],
|
||||
})
|
||||
}
|
||||
|
|
@ -177,7 +177,7 @@ const IntranetDocuments = () => {
|
|||
|
||||
const uploadPendingFiles = async () => {
|
||||
if (pendingUploads.some((item) => !item.name.trim())) {
|
||||
notify('warning', translate('::App.Intranet.Document.DisplayNameHint'))
|
||||
notify('warning', translate('::App.Hr.Intranet.Document.DisplayNameHint'))
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -195,7 +195,7 @@ const IntranetDocuments = () => {
|
|||
setUploadOpen(false)
|
||||
setPendingUploads([])
|
||||
await load()
|
||||
notify('success', translate('::App.Intranet.Document.Uploaded'))
|
||||
notify('success', translate('::App.Hr.Intranet.Document.Uploaded'))
|
||||
} catch (error) {
|
||||
console.error('Intranet document upload failed:', error)
|
||||
notify('danger', translate('::App.Platform.Error'))
|
||||
|
|
@ -215,7 +215,7 @@ const IntranetDocuments = () => {
|
|||
tenantId,
|
||||
)
|
||||
await load()
|
||||
notify('success', translate('::App.Intranet.Document.StatusChanged'))
|
||||
notify('success', translate('::App.Hr.Intranet.Document.StatusChanged'))
|
||||
} catch (error) {
|
||||
console.error('Failed to change publication state:', error)
|
||||
notify('danger', translate('::App.Platform.Error'))
|
||||
|
|
@ -230,7 +230,7 @@ const IntranetDocuments = () => {
|
|||
await fileManagementService.bulkDeleteItems(selectedIds, tenantId)
|
||||
setDeleteOpen(false)
|
||||
await load()
|
||||
notify('success', translate('::App.Intranet.Document.Deleted'))
|
||||
notify('success', translate('::App.Hr.Intranet.Document.Deleted'))
|
||||
} catch (error) {
|
||||
console.error('Failed to delete intranet documents:', error)
|
||||
notify('danger', translate('::App.Platform.Error'))
|
||||
|
|
@ -259,7 +259,7 @@ const IntranetDocuments = () => {
|
|||
: 'bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-300'
|
||||
}
|
||||
>
|
||||
{translate(isActive ? '::App.Intranet.Document.Active' : '::App.Intranet.Document.Passive')}
|
||||
{translate(isActive ? '::App.Hr.Intranet.Document.Active' : '::App.Hr.Intranet.Document.Passive')}
|
||||
</Tag>
|
||||
)
|
||||
|
||||
|
|
@ -272,8 +272,8 @@ const IntranetDocuments = () => {
|
|||
size="xs"
|
||||
title={translate(
|
||||
document.isActive
|
||||
? '::App.Intranet.Document.Unpublish'
|
||||
: '::App.Intranet.Document.Publish',
|
||||
? '::App.Hr.Intranet.Document.Unpublish'
|
||||
: '::App.Hr.Intranet.Document.Publish',
|
||||
)}
|
||||
variant="plain"
|
||||
onClick={() => changePublication([document], !document.isActive)}
|
||||
|
|
@ -318,7 +318,7 @@ const IntranetDocuments = () => {
|
|||
const renderKanban = () =>
|
||||
columns.length === 0 ? (
|
||||
<div className="py-20 text-center text-sm text-gray-500 dark:text-gray-400">
|
||||
{translate('::App.Intranet.Document.Empty')}
|
||||
{translate('::App.Hr.Intranet.Document.Empty')}
|
||||
</div>
|
||||
) : (
|
||||
<div className="grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4">
|
||||
|
|
@ -347,7 +347,7 @@ const IntranetDocuments = () => {
|
|||
<th className="px-3 py-2">{translate('::App.Listform.ListformField.Name')}</th>
|
||||
<th className="px-3 py-2">{translate('::App.Listform.ListformField.Type')}</th>
|
||||
<th className="px-3 py-2">{translate('::App.Listform.ListformField.Size')}</th>
|
||||
<th className="px-3 py-2">{translate('::App.Intranet.Document.Active')}</th>
|
||||
<th className="px-3 py-2">{translate('::App.Hr.Intranet.Document.Active')}</th>
|
||||
<th className="px-3 py-2" />
|
||||
</tr>
|
||||
</thead>
|
||||
|
|
@ -381,7 +381,7 @@ const IntranetDocuments = () => {
|
|||
{visibleDocuments.length === 0 && (
|
||||
<tr>
|
||||
<td className="px-3 py-8 text-center text-gray-400" colSpan={6}>
|
||||
{translate('::App.Intranet.Document.Empty')}
|
||||
{translate('::App.Hr.Intranet.Document.Empty')}
|
||||
</td>
|
||||
</tr>
|
||||
)}
|
||||
|
|
@ -392,7 +392,7 @@ const IntranetDocuments = () => {
|
|||
|
||||
return (
|
||||
<Container className="px-1">
|
||||
<PageTitle title={translate('::App.Intranet.Document')} />
|
||||
<PageTitle title={translate('::App.Hr.Intranet.Document')} />
|
||||
|
||||
<div className="mb-4 mt-2 flex flex-col gap-3 rounded-lg border border-gray-200 p-3 dark:border-gray-700 lg:flex-row lg:items-center lg:justify-between">
|
||||
<div className="flex flex-wrap items-center gap-2">
|
||||
|
|
@ -415,7 +415,7 @@ const IntranetDocuments = () => {
|
|||
size="sm"
|
||||
onClick={() => changePublication(publishable, true)}
|
||||
>
|
||||
{translate('::App.Intranet.Document.Publish')}
|
||||
{translate('::App.Hr.Intranet.Document.Publish')}
|
||||
</Button>
|
||||
<Button
|
||||
disabled={busy || unpublishable.length === 0}
|
||||
|
|
@ -423,7 +423,7 @@ const IntranetDocuments = () => {
|
|||
size="sm"
|
||||
onClick={() => changePublication(unpublishable, false)}
|
||||
>
|
||||
{translate('::App.Intranet.Document.Unpublish')}
|
||||
{translate('::App.Hr.Intranet.Document.Unpublish')}
|
||||
</Button>
|
||||
</>
|
||||
)}
|
||||
|
|
@ -444,7 +444,7 @@ const IntranetDocuments = () => {
|
|||
|
||||
<div className="flex flex-wrap items-center gap-3">
|
||||
<Checkbox checked={showUnpublished} onChange={setShowUnpublished}>
|
||||
{translate('::App.Intranet.Document.ShowUnpublished')}
|
||||
{translate('::App.Hr.Intranet.Document.ShowUnpublished')}
|
||||
</Checkbox>
|
||||
<Input
|
||||
className="w-full sm:w-56"
|
||||
|
|
@ -458,14 +458,14 @@ const IntranetDocuments = () => {
|
|||
<Button
|
||||
icon={<FaTh />}
|
||||
size="sm"
|
||||
title={translate('::App.Intranet.Document.KanbanView')}
|
||||
title={translate('::App.Hr.Intranet.Document.KanbanView')}
|
||||
variant={viewMode === 'kanban' ? 'solid' : 'default'}
|
||||
onClick={() => setViewMode('kanban')}
|
||||
/>
|
||||
<Button
|
||||
icon={<FaList />}
|
||||
size="sm"
|
||||
title={translate('::App.Intranet.Document.ListView')}
|
||||
title={translate('::App.Hr.Intranet.Document.ListView')}
|
||||
variant={viewMode === 'list' ? 'solid' : 'default'}
|
||||
onClick={() => setViewMode('list')}
|
||||
/>
|
||||
|
|
@ -502,7 +502,7 @@ const IntranetDocuments = () => {
|
|||
<Dialog isOpen={uploadOpen} onClose={closeUpload} onRequestClose={closeUpload}>
|
||||
<h5 className="mb-1">{translate('::App.Platform.Upload')}</h5>
|
||||
<p className="mb-4 text-xs text-gray-500 dark:text-gray-400">
|
||||
{translate('::App.Intranet.Document.DisplayNameHint')}
|
||||
{translate('::App.Hr.Intranet.Document.DisplayNameHint')}
|
||||
</p>
|
||||
<div className="max-h-80 space-y-3 overflow-y-auto pr-1">
|
||||
{pendingUploads.map((item, index) => (
|
||||
|
|
@ -517,7 +517,7 @@ const IntranetDocuments = () => {
|
|||
{item.file.name} · {formatFileSize(item.file.size)}
|
||||
</div>
|
||||
<Input
|
||||
placeholder={translate('::App.Intranet.Document.DisplayName')}
|
||||
placeholder={translate('::App.Hr.Intranet.Document.DisplayName')}
|
||||
size="sm"
|
||||
suffix={<span className="text-xs text-gray-400">{item.extension}</span>}
|
||||
value={item.name}
|
||||
|
|
@ -555,7 +555,7 @@ const IntranetDocuments = () => {
|
|||
onRequestClose={() => !busy && setDeleteOpen(false)}
|
||||
>
|
||||
<h5 className="mb-4">{translate('::App.Platform.Delete')}</h5>
|
||||
<p className="mb-2 text-sm">{translate('::App.Intranet.Document.DeleteConfirm')}</p>
|
||||
<p className="mb-2 text-sm">{translate('::App.Hr.Intranet.Document.DeleteConfirm')}</p>
|
||||
<ul className="mb-4 max-h-48 list-disc overflow-y-auto pl-5 text-sm text-gray-600 dark:text-gray-300">
|
||||
{selectedDocuments.map((item) => (
|
||||
<li key={item.id}>{item.name}</li>
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ const Documents: React.FC<{ documents: DocumentDto[] }> = ({ documents }) => {
|
|||
<div className="flex items-center justify-between">
|
||||
<h2 className="text-base font-semibold text-gray-900 dark:text-white flex items-center gap-2">
|
||||
<FaFileAlt className="w-5 h-5" />
|
||||
{translate('::App.Intranet.Document')}
|
||||
{translate('::App.Hr.Intranet.Document')}
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in a new issue