diff --git a/0_Framework/Application/StaticWorkshopAccounts.cs b/0_Framework/Application/StaticWorkshopAccounts.cs
new file mode 100644
index 00000000..4a180d1a
--- /dev/null
+++ b/0_Framework/Application/StaticWorkshopAccounts.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+
+namespace _0_Framework.Application;
+
+public static class StaticWorkshopAccounts
+{
+ ///
+ /// لیستی آی دی نقش هایی که در زمان ساخت یا ویرایش کارگاه استفاده می شوند
+ /// 3 : قرارداد ارشد
+ /// 5 : قرارداد ساده
+ /// 7 : بیمه ارشد
+ /// 8 : بیمه ساده
+ ///
+ public static List SelectedAccountsRoleIds = [3, 5, 7, 8];
+
+ ///
+ /// لیست اکانتهایی که به همه کارگاه ها باید دسترسی داشته باشند
+ /// 2 - صادق فرخی
+ /// 3 - میلاد مصباح
+ /// 380 - افروز نظری
+ /// 381 - مهدی قربانی
+ ///
+ public static List StaticAccountIds = [2, 3, 380, 381];
+
+ ///
+ /// این تاریخ در جدول اکانت لفت ورک به این معنیست
+ /// که کاربر همچنان به کارگاه دسترسی دارد
+ ///
+ public static DateTime ContinuesWorkingDate = new DateTime(2150, 1, 1);
+}
\ No newline at end of file
diff --git a/AccountManagement.Application.Contracts/Account/WorkshopAdminListsViewModel.cs b/AccountManagement.Application.Contracts/Account/WorkshopAdminListsViewModel.cs
new file mode 100644
index 00000000..6384b9ef
--- /dev/null
+++ b/AccountManagement.Application.Contracts/Account/WorkshopAdminListsViewModel.cs
@@ -0,0 +1,12 @@
+using System.Collections.Generic;
+
+namespace AccountManagement.Application.Contracts.Account;
+
+public class WorkshopAdminListsViewModel
+{
+ public List JuniorContractAdmins { get; set; }
+ public List SeniorContractAdmins { get; set; }
+ public List JuniorInsuranceAdmins { get; set; }
+ public List SeniorInsuranceAdmins { get; set; }
+
+}
\ No newline at end of file
diff --git a/AccountManagement.Domain/AccountAgg/IAccountRepository.cs b/AccountManagement.Domain/AccountAgg/IAccountRepository.cs
index 570c81af..6279567f 100644
--- a/AccountManagement.Domain/AccountAgg/IAccountRepository.cs
+++ b/AccountManagement.Domain/AccountAgg/IAccountRepository.cs
@@ -29,6 +29,10 @@ namespace AccountManagement.Domain.AccountAgg
List GetAccountsDeactivePositionValue(long Positionid);
#endregion
+ List GetAdminAccountsNew();
+
+ List GetAccountsToEditWorkshop(long workshopId);
+
}
}
diff --git a/AccountManagement.Domain/AccountLeftWorkAgg/AccountLeftWork.cs b/AccountManagement.Domain/AccountLeftWorkAgg/AccountLeftWork.cs
index 5d13a1a3..00d5a7d8 100644
--- a/AccountManagement.Domain/AccountLeftWorkAgg/AccountLeftWork.cs
+++ b/AccountManagement.Domain/AccountLeftWorkAgg/AccountLeftWork.cs
@@ -2,26 +2,56 @@
using _0_Framework.Domain;
using AccountManagement.Application.Contracts.Account;
using AccountManagement.Domain.AccountAgg;
+using AccountManagement.Domain.RoleAgg;
namespace AccountManagement.Domain.AccountLeftWorkAgg;
public class AccountLeftWork : EntityBase
{
- public AccountLeftWork(DateTime startWorkGr, DateTime leftWorkGr, long accountId)
+ public AccountLeftWork(DateTime startWorkGr, DateTime leftWorkGr, long accountId, long workshopId, long roleId)
{
StartWorkGr = startWorkGr;
LeftWorkGr = leftWorkGr;
AccountId = accountId;
- }
+ WorkshopId = workshopId;
+ RoleId = roleId;
+ IsActive = leftWorkGr > DateTime.Now;
+ }
- public DateTime StartWorkGr { get; private set; }
+ public AccountLeftWork(DateTime startWorkGr, DateTime leftWorkGr, long accountId, long workshopId, long roleId, bool isActive)
+ {
+ StartWorkGr = startWorkGr;
+ LeftWorkGr = leftWorkGr;
+ AccountId = accountId;
+ WorkshopId = workshopId;
+ RoleId = roleId;
+ IsActive = isActive;
+ }
+
+
+
+
+ public DateTime StartWorkGr { get; private set; }
public DateTime LeftWorkGr { get; private set; }
+ public long WorkshopId { get; private set; }
+ public long RoleId { get; private set; }
public long AccountId { get; private set; }
+ public bool IsActive { get; private set; }
public Account Account { get; set; }
- public void Edit(DateTime startWorkGr, DateTime leftWorkGr)
+ public void Edit(DateTime startWorkGr, DateTime leftWorkGr,long workshopId,long roleId,bool isActive)
{
StartWorkGr = startWorkGr;
LeftWorkGr = leftWorkGr;
- }
+ WorkshopId = workshopId;
+ RoleId = roleId;
+ IsActive = leftWorkGr > DateTime.Now && isActive;
+ }
+
+ public void DeActive(DateTime startWorkGr, DateTime leftWorkGr)
+ {
+ StartWorkGr = startWorkGr;
+ LeftWorkGr = leftWorkGr;
+ IsActive = false;
+ }
}
\ No newline at end of file
diff --git a/AccountManagement.Domain/AccountLeftWorkAgg/IAccountLeftworkRepository.cs b/AccountManagement.Domain/AccountLeftWorkAgg/IAccountLeftworkRepository.cs
index f9c943a5..c69d5653 100644
--- a/AccountManagement.Domain/AccountLeftWorkAgg/IAccountLeftworkRepository.cs
+++ b/AccountManagement.Domain/AccountLeftWorkAgg/IAccountLeftworkRepository.cs
@@ -19,4 +19,6 @@ public interface IAccountLeftworkRepository : IRepository
string startDate,
string leftDate,
long accountId);
+
+
}
\ No newline at end of file
diff --git a/AccountMangement.Infrastructure.EFCore/Migrations/20250302141707_cAccountLeftWorkChangedToNew.Designer.cs b/AccountMangement.Infrastructure.EFCore/Migrations/20250302141707_cAccountLeftWorkChangedToNew.Designer.cs
new file mode 100644
index 00000000..158851c4
--- /dev/null
+++ b/AccountMangement.Infrastructure.EFCore/Migrations/20250302141707_cAccountLeftWorkChangedToNew.Designer.cs
@@ -0,0 +1,1267 @@
+//
+using System;
+using AccountMangement.Infrastructure.EFCore;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace AccountMangement.Infrastructure.EFCore.Migrations
+{
+ [DbContext(typeof(AccountContext))]
+ [Migration("20250302141707_cAccountLeftWorkChangedToNew")]
+ partial class cAccountLeftWorkChangedToNew
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "8.0.10")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
+
+ modelBuilder.Entity("AccountManagement.Domain.AccountAgg.Account", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("AdminAreaPermission")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("ClientAriaPermission")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Email")
+ .HasMaxLength(150)
+ .HasColumnType("nvarchar(150)");
+
+ b.Property("Fullname")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.Property("IsActiveString")
+ .HasMaxLength(6)
+ .HasColumnType("nvarchar(6)");
+
+ b.Property("Mobile")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)");
+
+ b.Property("NationalCode")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("Password")
+ .IsRequired()
+ .HasMaxLength(1000)
+ .HasColumnType("nvarchar(1000)");
+
+ b.Property("PositionId")
+ .HasMaxLength(10)
+ .HasColumnType("bigint");
+
+ b.Property("PositionIsActive")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)");
+
+ b.Property("ProfilePhoto")
+ .HasMaxLength(500)
+ .HasColumnType("nvarchar(500)");
+
+ b.Property("RoleId")
+ .HasColumnType("bigint");
+
+ b.Property("RoleName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.Property("Username")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.Property("VerifyCode")
+ .HasMaxLength(1000)
+ .HasColumnType("nvarchar(1000)");
+
+ b.HasKey("id");
+
+ b.HasIndex("PositionId");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("Accounts", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.AccountLeftWorkAgg.AccountLeftWork", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("AccountId")
+ .HasColumnType("bigint");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("IsActive")
+ .HasColumnType("bit");
+
+ b.Property("LeftWorkGr")
+ .HasColumnType("datetime2");
+
+ b.Property("RoleId")
+ .HasColumnType("bigint");
+
+ b.Property("StartWorkGr")
+ .HasColumnType("datetime2");
+
+ b.Property("WorkshopId")
+ .HasColumnType("bigint");
+
+ b.HasKey("id");
+
+ b.HasIndex("AccountId");
+
+ b.ToTable("AccountLeftWork", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.AdminResponseAgg.AdminResponse", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("AdminAccountId")
+ .HasColumnType("bigint");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("IsActiveString")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)");
+
+ b.Property("Response")
+ .HasColumnType("ntext");
+
+ b.Property("TicketId")
+ .HasColumnType("bigint");
+
+ b.HasKey("id");
+
+ b.HasIndex("TicketId");
+
+ b.ToTable("AdminResponses", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.AdminResponseMediaAgg.AdminResponseMedia", b =>
+ {
+ b.Property("AdminResponseId")
+ .HasColumnType("bigint");
+
+ b.Property("MediaId")
+ .HasColumnType("bigint");
+
+ b.HasKey("AdminResponseId", "MediaId");
+
+ b.HasIndex("MediaId");
+
+ b.ToTable("AdminResponseMedias", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.AssignAgg.Assign", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("AcceptedTimeRequest")
+ .HasColumnType("int");
+
+ b.Property("AssignedId")
+ .HasColumnType("bigint");
+
+ b.Property("AssignedName")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("AssignedPositionValue")
+ .HasColumnType("int");
+
+ b.Property("AssignerId")
+ .HasColumnType("bigint");
+
+ b.Property("AssignerPositionValue")
+ .HasColumnType("int");
+
+ b.Property("CancelDescription")
+ .HasColumnType("ntext");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("DoneDescription")
+ .HasColumnType("ntext");
+
+ b.Property("EndTaskDate")
+ .HasColumnType("datetime2");
+
+ b.Property("FirstTimeCreation")
+ .HasColumnType("bit");
+
+ b.Property("IsCancel")
+ .HasColumnType("bit");
+
+ b.Property("IsCanceledRequest")
+ .HasColumnType("bit");
+
+ b.Property("IsDone")
+ .HasColumnType("bit");
+
+ b.Property("IsDoneRequest")
+ .HasColumnType("bit");
+
+ b.Property("RequestDate")
+ .HasColumnType("datetime2");
+
+ b.Property("TaskId")
+ .HasColumnType("bigint");
+
+ b.Property("TimeRequest")
+ .HasColumnType("bit");
+
+ b.Property("TimeRequestDescription")
+ .HasColumnType("ntext");
+
+ b.HasKey("id");
+
+ b.HasIndex("TaskId");
+
+ b.ToTable("Assigns", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.CameraAccountAgg.CameraAccount", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("AccountId")
+ .HasColumnType("bigint");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("IsActiveSting")
+ .IsRequired()
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)");
+
+ b.Property("Mobile")
+ .HasMaxLength(11)
+ .HasColumnType("nvarchar(11)");
+
+ b.Property("Password")
+ .IsRequired()
+ .HasMaxLength(1000)
+ .HasColumnType("nvarchar(1000)");
+
+ b.Property("Username")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.Property("WorkshopId")
+ .HasColumnType("bigint");
+
+ b.Property("WorkshopName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.HasKey("id");
+
+ b.HasIndex("AccountId");
+
+ b.ToTable("CameraAccounts", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.ClientResponseAgg.ClientResponse", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Response")
+ .HasColumnType("ntext");
+
+ b.Property("TicketId")
+ .HasColumnType("bigint");
+
+ b.HasKey("id");
+
+ b.HasIndex("TicketId");
+
+ b.ToTable("ClientResponses", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.ClientResponseMediaAgg.ClientResponseMedia", b =>
+ {
+ b.Property("ClientResponseId")
+ .HasColumnType("bigint");
+
+ b.Property("MediaId")
+ .HasColumnType("bigint");
+
+ b.HasKey("ClientResponseId", "MediaId");
+
+ b.HasIndex("MediaId");
+
+ b.ToTable("ClientResponseMedias", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.MediaAgg.Media", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("Category")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Path")
+ .HasColumnType("ntext");
+
+ b.Property("ServiceName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Type")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.HasKey("id");
+
+ b.ToTable("Medias", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.PositionAgg.Position", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("PositionName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("PositionValue")
+ .HasMaxLength(2)
+ .HasColumnType("int");
+
+ b.HasKey("id");
+
+ b.ToTable("Positions", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.RoleAgg.Role", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.HasKey("id");
+
+ b.ToTable("Roles", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.SubAccountAgg.SubAccount", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("AccountId")
+ .HasColumnType("bigint");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("FName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("IsActive")
+ .IsRequired()
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)");
+
+ b.Property("LName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("NationalCode")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("Password")
+ .IsRequired()
+ .HasMaxLength(1000)
+ .HasColumnType("nvarchar(1000)");
+
+ b.Property("PhoneNumber")
+ .IsRequired()
+ .HasMaxLength(11)
+ .HasColumnType("nvarchar(11)");
+
+ b.Property("ProfilePhoto")
+ .HasMaxLength(500)
+ .HasColumnType("nvarchar(500)");
+
+ b.Property("SubAccountRoleId")
+ .HasColumnType("bigint");
+
+ b.Property("Username")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.Property("VerifyCode")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.HasKey("id");
+
+ b.HasIndex("SubAccountRoleId");
+
+ b.ToTable("SubAccounts", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.SubAccountPermissionSubtitle1Agg.SubAccountPermissionSubtitle1", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("Code")
+ .HasMaxLength(15)
+ .HasColumnType("int");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.HasKey("id");
+
+ b.ToTable("SubAccountPermissionSubtitle1", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.SubAccountPermissionSubtitle2Agg.SubAccountPermissionSubtitle2", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("Code")
+ .HasMaxLength(15)
+ .HasColumnType("int");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("ParentId")
+ .HasColumnType("bigint");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.HasKey("id");
+
+ b.HasIndex("ParentId");
+
+ b.ToTable("SubAccountPermissionSubtitle2", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.SubAccountPermissionSubtitle3Agg.SubAccountPermissionSubtitle3", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("Code")
+ .HasMaxLength(15)
+ .HasColumnType("int");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("ParentId")
+ .HasColumnType("bigint");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.HasKey("id");
+
+ b.HasIndex("ParentId");
+
+ b.ToTable("SubAccountPermissionSubtitle3", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.SubAccountPermissionSubtitle4Agg.SubAccountPermissionSubtitle4", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("Code")
+ .HasMaxLength(15)
+ .HasColumnType("int");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("ParentId")
+ .HasColumnType("bigint");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.HasKey("id");
+
+ b.HasIndex("ParentId");
+
+ b.ToTable("SubAccountPermissionSubtitle4", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.SubAccountRoleAgg.SubAccountRole", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("AccountId")
+ .HasColumnType("bigint");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Title")
+ .HasMaxLength(60)
+ .HasColumnType("nvarchar(60)");
+
+ b.HasKey("id");
+
+ b.ToTable("SubAccountRoles", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.TaskAgg.Tasks", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("ContractingPartyName")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Description")
+ .HasColumnType("ntext");
+
+ b.Property("IsActiveString")
+ .HasMaxLength(7)
+ .HasColumnType("nvarchar(7)");
+
+ b.Property("SenderId")
+ .HasColumnType("bigint");
+
+ b.Property("StartTaskDate")
+ .HasColumnType("datetime2");
+
+ b.Property("TaskScheduleId")
+ .HasColumnType("bigint");
+
+ b.Property("TicketId")
+ .HasColumnType("bigint");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.HasKey("id");
+
+ b.HasIndex("TaskScheduleId");
+
+ b.ToTable("TasksManager", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.TaskMediaAgg.TaskMedia", b =>
+ {
+ b.Property("MediaId")
+ .HasColumnType("bigint");
+
+ b.Property("TaskId")
+ .HasColumnType("bigint");
+
+ b.HasKey("MediaId", "TaskId");
+
+ b.HasIndex("TaskId");
+
+ b.ToTable("TasksMedias", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.TaskMessageAgg.TaskMessage", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("AssignId")
+ .HasColumnType("bigint");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Message")
+ .HasColumnType("ntext");
+
+ b.Property("RequestedDateFa")
+ .HasMaxLength(25)
+ .HasColumnType("nvarchar(25)");
+
+ b.Property("TypeOfMessage")
+ .HasMaxLength(30)
+ .HasColumnType("nvarchar(30)");
+
+ b.HasKey("id");
+
+ b.HasIndex("AssignId");
+
+ b.ToTable("TaskMessages", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.TaskMessageItemsAgg.TaskMessageItems", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("ReceiverAccountId")
+ .HasColumnType("bigint");
+
+ b.Property("SenderAccountId")
+ .HasColumnType("bigint");
+
+ b.Property("TaskMessageId")
+ .HasColumnType("bigint");
+
+ b.HasKey("id");
+
+ b.HasIndex("TaskMessageId");
+
+ b.ToTable("TaskMessageItems", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.TaskScheduleAgg.TaskSchedule", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("Count")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("LastEndTaskDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Type")
+ .HasMaxLength(12)
+ .HasColumnType("nvarchar(12)");
+
+ b.Property("UnitNumber")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("UnitType")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.HasKey("id");
+
+ b.ToTable("TaskSchedules", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.TaskSubjectAgg.TaskSubject", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Subject")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.HasKey("id");
+
+ b.ToTable("TaskSubjects", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.TicketAccessAccountAgg.TicketAccessAccount", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("AccountId")
+ .HasColumnType("bigint");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.HasKey("id");
+
+ b.ToTable("TicketAccessAccounts", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.TicketAgg.Ticket", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("ContractingPartyName")
+ .HasMaxLength(155)
+ .HasColumnType("nvarchar(155)");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Description")
+ .HasColumnType("ntext");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("SenderId")
+ .HasColumnType("bigint");
+
+ b.Property("Status")
+ .HasMaxLength(30)
+ .HasColumnType("nvarchar(30)");
+
+ b.Property("SubAccountSenderId")
+ .HasColumnType("bigint");
+
+ b.Property("TicketNumber")
+ .HasMaxLength(12)
+ .HasColumnType("nvarchar(12)");
+
+ b.Property("TicketType")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Title")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("WorkshopId")
+ .HasColumnType("bigint");
+
+ b.HasKey("id");
+
+ b.ToTable("Tickets", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.TicketMediasAgg.TicketMedia", b =>
+ {
+ b.Property("TicketId")
+ .HasColumnType("bigint");
+
+ b.Property("MediaId")
+ .HasColumnType("bigint");
+
+ b.HasKey("TicketId", "MediaId");
+
+ b.HasIndex("MediaId");
+
+ b.ToTable("TicketMedias", (string)null);
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.AccountAgg.Account", b =>
+ {
+ b.HasOne("AccountManagement.Domain.PositionAgg.Position", "Position")
+ .WithMany("Accounts")
+ .HasForeignKey("PositionId");
+
+ b.HasOne("AccountManagement.Domain.RoleAgg.Role", "Role")
+ .WithMany("Accounts")
+ .HasForeignKey("RoleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Position");
+
+ b.Navigation("Role");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.AccountLeftWorkAgg.AccountLeftWork", b =>
+ {
+ b.HasOne("AccountManagement.Domain.AccountAgg.Account", "Account")
+ .WithMany("AccountLeftWorkList")
+ .HasForeignKey("AccountId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Account");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.AdminResponseAgg.AdminResponse", b =>
+ {
+ b.HasOne("AccountManagement.Domain.TicketAgg.Ticket", "Ticket")
+ .WithMany("AdminResponses")
+ .HasForeignKey("TicketId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Ticket");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.AdminResponseMediaAgg.AdminResponseMedia", b =>
+ {
+ b.HasOne("AccountManagement.Domain.AdminResponseAgg.AdminResponse", "AdminResponse")
+ .WithMany("AdminResponseMedias")
+ .HasForeignKey("AdminResponseId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("AccountManagement.Domain.MediaAgg.Media", "Media")
+ .WithMany("AdminResponseMedias")
+ .HasForeignKey("MediaId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("AdminResponse");
+
+ b.Navigation("Media");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.AssignAgg.Assign", b =>
+ {
+ b.HasOne("AccountManagement.Domain.TaskAgg.Tasks", "Task")
+ .WithMany("Assigns")
+ .HasForeignKey("TaskId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.Navigation("Task");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.CameraAccountAgg.CameraAccount", b =>
+ {
+ b.HasOne("AccountManagement.Domain.AccountAgg.Account", "Account")
+ .WithMany("CameraAccounts")
+ .HasForeignKey("AccountId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Account");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.ClientResponseAgg.ClientResponse", b =>
+ {
+ b.HasOne("AccountManagement.Domain.TicketAgg.Ticket", "Ticket")
+ .WithMany("ClientResponses")
+ .HasForeignKey("TicketId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Ticket");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.ClientResponseMediaAgg.ClientResponseMedia", b =>
+ {
+ b.HasOne("AccountManagement.Domain.ClientResponseAgg.ClientResponse", "ClientResponse")
+ .WithMany("ClientResponseMedias")
+ .HasForeignKey("ClientResponseId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("AccountManagement.Domain.MediaAgg.Media", "Media")
+ .WithMany("ClientResponseMedias")
+ .HasForeignKey("MediaId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("ClientResponse");
+
+ b.Navigation("Media");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.RoleAgg.Role", b =>
+ {
+ b.OwnsMany("AccountManagement.Domain.RoleAgg.Permission", "Permissions", b1 =>
+ {
+ b1.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id"));
+
+ b1.Property("Code")
+ .HasColumnType("int");
+
+ b1.Property("RoleId")
+ .HasColumnType("bigint");
+
+ b1.HasKey("Id");
+
+ b1.HasIndex("RoleId");
+
+ b1.ToTable("RolePermissions", (string)null);
+
+ b1.WithOwner("Role")
+ .HasForeignKey("RoleId");
+
+ b1.Navigation("Role");
+ });
+
+ b.Navigation("Permissions");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.SubAccountAgg.SubAccount", b =>
+ {
+ b.HasOne("AccountManagement.Domain.SubAccountRoleAgg.SubAccountRole", "SubAccountRole")
+ .WithMany("SubAccounts")
+ .HasForeignKey("SubAccountRoleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("SubAccountRole");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.SubAccountPermissionSubtitle2Agg.SubAccountPermissionSubtitle2", b =>
+ {
+ b.HasOne("AccountManagement.Domain.SubAccountPermissionSubtitle1Agg.SubAccountPermissionSubtitle1", "Parent")
+ .WithMany("Children")
+ .HasForeignKey("ParentId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Parent");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.SubAccountPermissionSubtitle3Agg.SubAccountPermissionSubtitle3", b =>
+ {
+ b.HasOne("AccountManagement.Domain.SubAccountPermissionSubtitle2Agg.SubAccountPermissionSubtitle2", "Parent")
+ .WithMany("Children")
+ .HasForeignKey("ParentId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Parent");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.SubAccountPermissionSubtitle4Agg.SubAccountPermissionSubtitle4", b =>
+ {
+ b.HasOne("AccountManagement.Domain.SubAccountPermissionSubtitle3Agg.SubAccountPermissionSubtitle3", "Parent")
+ .WithMany("Children")
+ .HasForeignKey("ParentId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Parent");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.SubAccountRoleAgg.SubAccountRole", b =>
+ {
+ b.OwnsMany("AccountManagement.Domain.SubAccountRoleAgg.SubAccountRolePermission", "RolePermissions", b1 =>
+ {
+ b1.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id"));
+
+ b1.Property("PermissionCode")
+ .HasColumnType("int");
+
+ b1.Property("SubAccountRoleId")
+ .HasColumnType("bigint");
+
+ b1.HasKey("id");
+
+ b1.HasIndex("SubAccountRoleId");
+
+ b1.ToTable("SubAccountRolePermissions", (string)null);
+
+ b1.WithOwner("SubAccountRole")
+ .HasForeignKey("SubAccountRoleId");
+
+ b1.Navigation("SubAccountRole");
+ });
+
+ b.Navigation("RolePermissions");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.TaskAgg.Tasks", b =>
+ {
+ b.HasOne("AccountManagement.Domain.TaskScheduleAgg.TaskSchedule", "TaskSchedule")
+ .WithMany("TasksList")
+ .HasForeignKey("TaskScheduleId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.Navigation("TaskSchedule");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.TaskMediaAgg.TaskMedia", b =>
+ {
+ b.HasOne("AccountManagement.Domain.MediaAgg.Media", "Media")
+ .WithMany("TaskMedias")
+ .HasForeignKey("MediaId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("AccountManagement.Domain.TaskAgg.Tasks", "Tasks")
+ .WithMany("TaskMedias")
+ .HasForeignKey("TaskId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Media");
+
+ b.Navigation("Tasks");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.TaskMessageAgg.TaskMessage", b =>
+ {
+ b.HasOne("AccountManagement.Domain.AssignAgg.Assign", "Assign")
+ .WithMany("TaskMessageList")
+ .HasForeignKey("AssignId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Assign");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.TaskMessageItemsAgg.TaskMessageItems", b =>
+ {
+ b.HasOne("AccountManagement.Domain.TaskMessageAgg.TaskMessage", "TaskMessage")
+ .WithMany("TaskMessageItemsList")
+ .HasForeignKey("TaskMessageId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("TaskMessage");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.TicketMediasAgg.TicketMedia", b =>
+ {
+ b.HasOne("AccountManagement.Domain.MediaAgg.Media", "Media")
+ .WithMany("TicketMedias")
+ .HasForeignKey("MediaId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("AccountManagement.Domain.TicketAgg.Ticket", "Ticket")
+ .WithMany("TicketMedias")
+ .HasForeignKey("TicketId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Media");
+
+ b.Navigation("Ticket");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.AccountAgg.Account", b =>
+ {
+ b.Navigation("AccountLeftWorkList");
+
+ b.Navigation("CameraAccounts");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.AdminResponseAgg.AdminResponse", b =>
+ {
+ b.Navigation("AdminResponseMedias");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.AssignAgg.Assign", b =>
+ {
+ b.Navigation("TaskMessageList");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.ClientResponseAgg.ClientResponse", b =>
+ {
+ b.Navigation("ClientResponseMedias");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.MediaAgg.Media", b =>
+ {
+ b.Navigation("AdminResponseMedias");
+
+ b.Navigation("ClientResponseMedias");
+
+ b.Navigation("TaskMedias");
+
+ b.Navigation("TicketMedias");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.PositionAgg.Position", b =>
+ {
+ b.Navigation("Accounts");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.RoleAgg.Role", b =>
+ {
+ b.Navigation("Accounts");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.SubAccountPermissionSubtitle1Agg.SubAccountPermissionSubtitle1", b =>
+ {
+ b.Navigation("Children");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.SubAccountPermissionSubtitle2Agg.SubAccountPermissionSubtitle2", b =>
+ {
+ b.Navigation("Children");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.SubAccountPermissionSubtitle3Agg.SubAccountPermissionSubtitle3", b =>
+ {
+ b.Navigation("Children");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.SubAccountRoleAgg.SubAccountRole", b =>
+ {
+ b.Navigation("SubAccounts");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.TaskAgg.Tasks", b =>
+ {
+ b.Navigation("Assigns");
+
+ b.Navigation("TaskMedias");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.TaskMessageAgg.TaskMessage", b =>
+ {
+ b.Navigation("TaskMessageItemsList");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.TaskScheduleAgg.TaskSchedule", b =>
+ {
+ b.Navigation("TasksList");
+ });
+
+ modelBuilder.Entity("AccountManagement.Domain.TicketAgg.Ticket", b =>
+ {
+ b.Navigation("AdminResponses");
+
+ b.Navigation("ClientResponses");
+
+ b.Navigation("TicketMedias");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/AccountMangement.Infrastructure.EFCore/Migrations/20250302141707_cAccountLeftWorkChangedToNew.cs b/AccountMangement.Infrastructure.EFCore/Migrations/20250302141707_cAccountLeftWorkChangedToNew.cs
new file mode 100644
index 00000000..59ec6232
--- /dev/null
+++ b/AccountMangement.Infrastructure.EFCore/Migrations/20250302141707_cAccountLeftWorkChangedToNew.cs
@@ -0,0 +1,51 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace AccountMangement.Infrastructure.EFCore.Migrations
+{
+ ///
+ public partial class cAccountLeftWorkChangedToNew : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AddColumn(
+ name: "IsActive",
+ table: "AccountLeftWork",
+ type: "bit",
+ nullable: false,
+ defaultValue: false);
+
+ migrationBuilder.AddColumn(
+ name: "RoleId",
+ table: "AccountLeftWork",
+ type: "bigint",
+ nullable: false,
+ defaultValue: 0L);
+
+ migrationBuilder.AddColumn(
+ name: "WorkshopId",
+ table: "AccountLeftWork",
+ type: "bigint",
+ nullable: false,
+ defaultValue: 0L);
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropColumn(
+ name: "IsActive",
+ table: "AccountLeftWork");
+
+ migrationBuilder.DropColumn(
+ name: "RoleId",
+ table: "AccountLeftWork");
+
+ migrationBuilder.DropColumn(
+ name: "WorkshopId",
+ table: "AccountLeftWork");
+ }
+ }
+}
diff --git a/AccountMangement.Infrastructure.EFCore/Migrations/AccountContextModelSnapshot.cs b/AccountMangement.Infrastructure.EFCore/Migrations/AccountContextModelSnapshot.cs
index d191b577..61675f0e 100644
--- a/AccountMangement.Infrastructure.EFCore/Migrations/AccountContextModelSnapshot.cs
+++ b/AccountMangement.Infrastructure.EFCore/Migrations/AccountContextModelSnapshot.cs
@@ -119,12 +119,21 @@ namespace AccountMangement.Infrastructure.EFCore.Migrations
b.Property("CreationDate")
.HasColumnType("datetime2");
+ b.Property("IsActive")
+ .HasColumnType("bit");
+
b.Property("LeftWorkGr")
.HasColumnType("datetime2");
+ b.Property("RoleId")
+ .HasColumnType("bigint");
+
b.Property("StartWorkGr")
.HasColumnType("datetime2");
+ b.Property("WorkshopId")
+ .HasColumnType("bigint");
+
b.HasKey("id");
b.HasIndex("AccountId");
diff --git a/AccountMangement.Infrastructure.EFCore/Repository/AccountLeftworkRepository.cs b/AccountMangement.Infrastructure.EFCore/Repository/AccountLeftworkRepository.cs
index 8fa75641..245efbaa 100644
--- a/AccountMangement.Infrastructure.EFCore/Repository/AccountLeftworkRepository.cs
+++ b/AccountMangement.Infrastructure.EFCore/Repository/AccountLeftworkRepository.cs
@@ -114,18 +114,20 @@ public class AccountLeftworkRepository : RepositoryBase,
return operationResult.Failed("تاریخ شروع بکار و ترک کار برابرند");
var oldLefts = _accountContext.AccountLeftWorks.Where(x => x.AccountId == accountId).ToList();
_accountContext.AccountLeftWorks.RemoveRange(oldLefts);
- Create(new AccountLeftWork(start, leftWorkGr, accountId));
- SaveChanges();
- var workshopAccountViewModel = workshopAccountList.Select(x => new WorkshopAccountViewModel()
- {
- AccountId = x.AccountId,
- WorkshopId = x.WorkshopId,
- Insurance = x.Insurance,
- ContractAndCheckout = x.ContractAndCheckout,
- Tax = x.Tax,
- IsActiveSting = x.IsActiveSting
- }).ToList();
- _workshopAccountRepository.SaveWorkshopAccount(workshopAccountViewModel);
+ //Create(new AccountLeftWork(start, leftWorkGr, accountId));
+ //SaveChanges();
+ //var workshopAccountViewModel = workshopAccountList.Select(x => new WorkshopAccountViewModel()
+ //{
+ // AccountId = x.AccountId,
+ // WorkshopId = x.WorkshopId,
+ // Insurance = x.Insurance,
+ // ContractAndCheckout = x.ContractAndCheckout,
+ // Tax = x.Tax,
+ // IsActiveSting = x.IsActiveSting
+ //}).ToList();
+ //_workshopAccountRepository.SaveWorkshopAccount(workshopAccountViewModel);
return operationResult.Succcedded();
}
+
+
}
diff --git a/AccountMangement.Infrastructure.EFCore/Repository/AccountRepository.cs b/AccountMangement.Infrastructure.EFCore/Repository/AccountRepository.cs
index 537f5ab1..60d857aa 100644
--- a/AccountMangement.Infrastructure.EFCore/Repository/AccountRepository.cs
+++ b/AccountMangement.Infrastructure.EFCore/Repository/AccountRepository.cs
@@ -279,6 +279,39 @@ public class AccountRepository : RepositoryBase, IAccountReposito
Fullname = x.Fullname
}).ToList();
}
+
+ public List GetAdminAccountsNew()
+ {
+ List roleIds = _0_Framework.Application.StaticWorkshopAccounts.SelectedAccountsRoleIds;
+
+ return _context.Accounts
+ .Where(x => x.IsActiveString == "true" && roleIds.Contains(x.RoleId))
+ .Select(x => new AccountViewModel
+ {
+ Id = x.id,
+ Fullname = x.Fullname,
+ RoleName = x.RoleName,
+ Username = x.Username,
+ RoleId = x.RoleId,
+
+ }).ToList();
+ }
+
+ public List GetAccountsToEditWorkshop(long workshopId)
+ {
+ List roleIds = _0_Framework.Application.StaticWorkshopAccounts.SelectedAccountsRoleIds;
+ return _context.AccountLeftWorks
+ .Where(x => x.WorkshopId == workshopId && roleIds.Contains(x.RoleId))
+ .Include(x => x.Account)
+ .Select(x => new AccountViewModel
+ {
+ Id = x.AccountId,
+ Fullname = x.Account.Fullname,
+ RoleName = x.Account.RoleName,
+ RoleId = x.RoleId,
+ IsActiveString = x.IsActive ? "true" : "false",
+ }).ToList();
+ }
//public List GetAdminAccounts()
//{
// return _context.Accounts.Where(x=>x.AdminAreaPermission == "true" && x.IsActiveString == "true").Select(x => new AccountViewModel()
diff --git a/Company.Domain/LeftWorkAgg/ILeftWorkRepository.cs b/Company.Domain/LeftWorkAgg/ILeftWorkRepository.cs
index f3fdf81a..4a1f37eb 100644
--- a/Company.Domain/LeftWorkAgg/ILeftWorkRepository.cs
+++ b/Company.Domain/LeftWorkAgg/ILeftWorkRepository.cs
@@ -25,7 +25,7 @@ public interface ILeftWorkRepository : IRepository
/// تاریخی که بین شروع کار و ترک کار باشد
/// یک کلاس از جنس اطلاعات ترک کار
LeftWorkViewModel GetByDateAndWorkshopIdAndEmployeeId(long workshopId, long employeeId, DateTime dateTime);
- List GetEmployeeIdsByWorkshopIdActiveInDates(long workshopId, DateTime start, DateTime end);
+ List GetAllEmployeeIdsInWorkshop(long workshopId);
#endregion
List GetLeftPersonelByWorkshopId(List workshopIds);
diff --git a/Company.Domain/WorkshopAgg/IWorkshopRepository.cs b/Company.Domain/WorkshopAgg/IWorkshopRepository.cs
index ae70a623..1a9cc9c4 100644
--- a/Company.Domain/WorkshopAgg/IWorkshopRepository.cs
+++ b/Company.Domain/WorkshopAgg/IWorkshopRepository.cs
@@ -72,6 +72,19 @@ public interface IWorkshopRepository : IRepository
///
List GetWorkshopSelectListInsuransce();
- #endregion
-
+ #endregion
+ ///
+ /// ایجاد دسترسی برای کاربران ادمین در زمان ایجاد کارگاه
+ ///
+ ///
+ ///
+ ///
+ OperationResult CreateAccountLeftWorkAndWorkshopAccounts(List accountIds, long workshopId);
+ ///
+ /// ویرایش دسترسی کاربران ادمین به کارگاه در زمان ویرایش کارگاه
+ ///
+ ///
+ ///
+ ///
+ OperationResult EditAccountLeftWorkAndWorkshopAccounts(List accountIds, long workshopId);
}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Workshop/CreateWorkshop.cs b/CompanyManagment.App.Contracts/Workshop/CreateWorkshop.cs
index d920bf4c..42a6ce60 100644
--- a/CompanyManagment.App.Contracts/Workshop/CreateWorkshop.cs
+++ b/CompanyManagment.App.Contracts/Workshop/CreateWorkshop.cs
@@ -68,15 +68,40 @@ public class CreateWorkshop
public List EmployerIdList { get; set; }
public CreateWorkshopPlan CreatePlan {get; set; }
+
public List AccountsList { get; set; }
+ public List Type { get; set; }
+
+ #region Pooya
+ ///
+ /// قرارداد ارشد
+ ///
+ public List JuniorContractAccountsList { get; set; }
+ ///
+ /// قرارداد ساده
+ ///
+ public List SeniorContractAccountsList { get; set; }
+ ///
+ /// بیمه ساده
+ ///
+ public List JuniorInsuranceAccountsList { get; set; }
+ ///
+ /// بیمه ارشد
+ ///
+ public List SeniorInsuranceAccountList { get; set; }
+
+ #endregion
+
+
public List AccountIdsList { get; set; }
public SelectList InsuranceJobViewModels { get; set; }
public List PermissionIds { get; set; }
public long CurrentAccoutRoleId { get; set; }
#region Vafa
- public List InAccountIdsList { get; set; }
- public string HasRollCallFreeVip { get; set; }
+ public List DeActiveAccounts { get; set; }
+ public List ActiveAccounts { get; set; }
+ public string HasRollCallFreeVip { get; set; }
#endregion
diff --git a/CompanyManagment.Application/EmployeeDocumentsApplication.cs b/CompanyManagment.Application/EmployeeDocumentsApplication.cs
index 28ca3fae..1f803326 100644
--- a/CompanyManagment.Application/EmployeeDocumentsApplication.cs
+++ b/CompanyManagment.Application/EmployeeDocumentsApplication.cs
@@ -621,7 +621,7 @@ namespace CompanyManagment.Application
#region Create EmployeeDocuments Record For Newly Added Employees
var existingEmployeesWithDocs = _employeeDocumentsRepository.GetEmployeeIds(cmd.WorkshopId);
- var existingEmployeeIds = _leftWorkRepository.GetEmployeeIdsByWorkshopIdActiveInDates(cmd.WorkshopId, DateTime.Now, DateTime.Now);
+ var existingEmployeeIds = _leftWorkRepository.GetAllEmployeeIdsInWorkshop(cmd.WorkshopId);
var newEmployeeIds = existingEmployeeIds.Except(existingEmployeesWithDocs).ToList();
if (newEmployeeIds.Any())
@@ -1022,7 +1022,7 @@ namespace CompanyManagment.Application
var existingEmployeesWithDocs = _employeeDocumentsRepository.GetEmployeeIds(cmd.WorkshopId);
var existingEmployeeIds =
- _leftWorkRepository.GetEmployeeIdsByWorkshopIdActiveInDates(cmd.WorkshopId, DateTime.Now, DateTime.Now);
+ _leftWorkRepository.GetAllEmployeeIdsInWorkshop(cmd.WorkshopId);
var newEmployeeIds = existingEmployeeIds.Except(existingEmployeesWithDocs).ToList();
@@ -1070,7 +1070,7 @@ namespace CompanyManagment.Application
var existingEmployeesWithDocs = _employeeDocumentsRepository.GetEmployeeIds(workshopId);
var existingEmployeeIds =
- _leftWorkRepository.GetEmployeeIdsByWorkshopIdActiveInDates(workshopId, DateTime.Now, DateTime.Now);
+ _leftWorkRepository.GetAllEmployeeIdsInWorkshop(workshopId);
var newEmployeeIds = existingEmployeeIds.Except(existingEmployeesWithDocs).ToList();
if (newEmployeeIds.Any())
diff --git a/CompanyManagment.Application/WorkshopAppliction.cs b/CompanyManagment.Application/WorkshopAppliction.cs
index a7d06170..14be5b57 100644
--- a/CompanyManagment.Application/WorkshopAppliction.cs
+++ b/CompanyManagment.Application/WorkshopAppliction.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Transactions;
using _0_Framework.Application;
using AccountManagement.Application.Contracts.Account;
using AccountManagement.Domain.AccountAgg;
@@ -177,8 +178,8 @@ public class WorkshopAppliction : IWorkshopApplication
_workshopRepository.EmployerWorkshop(workshop.id, e);
}
-
- _workshopRepository.WorkshopAccounts(accountIds, workshop.id);
+
+ var op = _workshopRepository.CreateAccountLeftWorkAndWorkshopAccounts(accountIds, workshop.id);
@@ -188,6 +189,7 @@ public class WorkshopAppliction : IWorkshopApplication
public OperationResult Edit(EditWorkshop command)
{
+ using var transaction = new TransactionScope();
var leftSearch = new LeftWorkSearchModel()
{
WorkshopId = command.Id
@@ -318,7 +320,7 @@ public class WorkshopAppliction : IWorkshopApplication
{
_workshopRepository.EmployerWorkshop(workshop.id, e);
}
- _workshopRepository.WorkshopAccounts(accountIds, workshop.id);
+ var op = _workshopRepository.EditAccountLeftWorkAndWorkshopAccounts(accountIds, workshop.id);
foreach (var item in leftWork)
{
var editLeft = _leftWorkRepository.Get(item.Id);
@@ -327,6 +329,7 @@ public class WorkshopAppliction : IWorkshopApplication
_leftWorkRepository.SaveChanges();
}
+ transaction.Complete();
return operation.Succcedded();
}
diff --git a/CompanyManagment.EFCore/Repository/EmployeeDocumentsRepository.cs b/CompanyManagment.EFCore/Repository/EmployeeDocumentsRepository.cs
index b717fc3c..be5f4cef 100644
--- a/CompanyManagment.EFCore/Repository/EmployeeDocumentsRepository.cs
+++ b/CompanyManagment.EFCore/Repository/EmployeeDocumentsRepository.cs
@@ -14,6 +14,7 @@ using _0_Framework.Application;
using AccountManagement.Application.Contracts.Media;
using Company.Domain.empolyerAgg;
using Company.Domain.LeftWorkAgg;
+using System.Collections;
namespace CompanyManagment.EFCore.Repository
{
@@ -186,26 +187,52 @@ namespace CompanyManagment.EFCore.Repository
}
- //get the last leftworks in each workshop for selected employees where the leftwork
- var passedLeftWorks = _companyContext.LeftWorkList
- .Where(x => query.Any(y => y.EmployeeId == x.EmployeeId &&
- y.WorkshopId == cmd.WorkshopId && x.LeftWorkDate <= DateTime.Now.Date))
- .Select(x => x.EmployeeId).AsEnumerable();
+ var now = DateTime.Now.Date;
+
+ //پرسنل قرارداد این کارگاه
+ var contractEmployees = _companyContext.LeftWorkList
+ .Where(x => x.WorkshopId == cmd.WorkshopId);
+ //پرسنل فعال در قرارداد
+ var contractActiveEmployeeIds = contractEmployees
+ .Where(x => x.LeftWorkDate == new DateTime(2121, 3, 21) && x.StartWorkDate.Date <= now).Select(x => x.EmployeeId).ToList();
+ //پرسنل غیر فعال قرارداد
+ var contractDeActivedEmployeeIds = contractEmployees
+ .Where(x => x.LeftWorkDate.Date <= now && !contractActiveEmployeeIds.Contains(x.EmployeeId))
+ .Select(x => x.EmployeeId).ToList();
+
+ //پرسنل بیمه این کارگاه
+ var insuranceEmployees = _companyContext.LeftWorkInsuranceList
+ .Where(x => x.WorkshopId == cmd.WorkshopId);
+ //پرسنل فعال در بیمه
+ var insuranceActiveEmployeeIds = insuranceEmployees
+ .Where(x => x.LeftWorkDate == null && x.StartWorkDate.Date <= now).Select(x => x.EmployeeId).ToList();
+ //پرسنل غیر فعال بیمه
+ var insuranceDeActivedEmployeeIds = insuranceEmployees
+ .Where(x => x.LeftWorkDate.Value.Date <= now && !contractActiveEmployeeIds.Contains(x.EmployeeId))
+ .Select(x => x.EmployeeId).ToList();
+
+ // پرسنل هر دو لیست که غیر فعال هستند
+ var activeEmployees = contractActiveEmployeeIds.Concat(insuranceActiveEmployeeIds).Distinct().ToList();
+ // پرسنل هر دو لیست که فعال هستند
+ var deActiveEmployees = contractDeActivedEmployeeIds.Concat(insuranceDeActivedEmployeeIds).Distinct().ToList();
+
+ //پرسنل غیر فعالی که یا در هر دو غیرفعال هستند یا فقط در یکی استارت خورده و غیر فعال شده اند
+ var deActivedEmployeesIdlist = deActiveEmployees.Where(x => !activeEmployees.Contains(x)).ToList();
List employeeDocuments;
switch (cmd.Mode)
{
- case EmployeeDocumentSearchMode.All:
- employeeDocuments = query.OrderBy(x => passedLeftWorks.Any(y => x.EmployeeId == y))
- .Skip(cmd.PageIndex).Take(30).ToList();
- break;
+ // case EmployeeDocumentSearchMode.All:
+ //employeeDocuments = query.OrderBy(x => passedLeftWorks.Any(y => x.EmployeeId == y))
+ // .Skip(cmd.PageIndex).Take(30).ToList();
+ //break;
case EmployeeDocumentSearchMode.ActiveEmployees:
- employeeDocuments = query.Where(x => passedLeftWorks.All(y => x.EmployeeId != y))
- .OrderByDescending(x => x.id).Skip(cmd.PageIndex).Take(30).ToList();
- break;
+ employeeDocuments = query.Where(q => deActivedEmployeesIdlist.All(deActived => q.EmployeeId != deActived))
+ .OrderByDescending(x => x.id).Skip(cmd.PageIndex).Take(30).ToList();
+ break;
case EmployeeDocumentSearchMode.DeactiveEmployees:
- employeeDocuments = query.Where(x => passedLeftWorks.Any(y => x.EmployeeId == y))
+ employeeDocuments = query.Where(x => deActivedEmployeesIdlist.Any(deActived => x.EmployeeId == deActived))
.OrderByDescending(x => x.id).Skip(cmd.PageIndex).Take(30).ToList();
break;
default:
@@ -250,7 +277,7 @@ namespace CompanyManagment.EFCore.Repository
NationalCardRear =GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.NationalCardRear),
MilitaryServiceCard= GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.MilitaryServiceCard),
EmployeePicture = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.EmployeePicture),
- IsBlack = passedLeftWorks.Any(y => y == x.EmployeeId) ? "true" : "false",
+ IsBlack = deActivedEmployeesIdlist.Any(y => y == x.EmployeeId) ? "true" : "false",
EmployerFullName = employerFullName,
IsSentToChecker = x.IsSentToChecker,
PersonnelCode = personnelCodes.FirstOrDefault(y=>y.EmployeeId == x.EmployeeId)?.PersonnelCode??0
@@ -270,29 +297,51 @@ namespace CompanyManagment.EFCore.Repository
query = query.Where(x => (x.Employee.FName + " " + x.Employee.LName).Contains(cmd.EmployeeName));
}
+ var now = DateTime.Now.Date;
+
+ //پرسنل قرارداد این کارگاه
+ var contractEmployees = _companyContext.LeftWorkList
+ .Where(x => x.WorkshopId == cmd.WorkshopId);
+ //پرسنل فعال در قرارداد
+ var contractActiveEmployeeIds = contractEmployees
+ .Where(x=> x.LeftWorkDate == new DateTime(2121, 3, 21) && x.StartWorkDate.Date <= now).Select(x => x.EmployeeId).ToList();
+ //پرسنل غیر فعال قرارداد
+ var contractDeActivedEmployeeIds = contractEmployees
+ .Where(x=> x.LeftWorkDate.Date <= now && !contractActiveEmployeeIds.Contains(x.EmployeeId))
+ .Select(x=>x.EmployeeId).ToList();
- //get the last leftworks in each workshop for selected employees where the leftwork
- var passedLeftWorks = _companyContext.LeftWorkList
- .Where(x => query.Any(y => y.EmployeeId == x.EmployeeId && y.WorkshopId == cmd.WorkshopId && x.LeftWorkDate <= DateTime.Now.Date))
- .Select(x => x.EmployeeId).AsEnumerable();
+ //پرسنل بیمه این کارگاه
+ var insuranceEmployees = _companyContext.LeftWorkInsuranceList
+ .Where(x => x.WorkshopId == cmd.WorkshopId);
+ //پرسنل فعال در بیمه
+ var insuranceActiveEmployeeIds = insuranceEmployees
+ .Where(x => x.LeftWorkDate == null && x.StartWorkDate.Date <= now).Select(x => x.EmployeeId).ToList();
+ //پرسنل غیر فعال بیمه
+ var insuranceDeActivedEmployeeIds = insuranceEmployees
+ .Where(x => x.LeftWorkDate.Value.Date <= now && !contractActiveEmployeeIds.Contains(x.EmployeeId))
+ .Select(x => x.EmployeeId).ToList();
+
+ // پرسنل هر دو لیست که غیر فعال هستند
+ var activeEmployees = contractActiveEmployeeIds.Concat(insuranceActiveEmployeeIds).Distinct().ToList();
+ // پرسنل هر دو لیست که فعال هستند
+ var deActiveEmployees = contractDeActivedEmployeeIds.Concat(insuranceDeActivedEmployeeIds).Distinct().ToList();
+
+ //پرسنل غیر فعالی که یا در هر دو غیرفعال هستند یا فقط در یکی استارت خورده و غیر فعال شده اند
+ var deActivedEmployeesIdlist = deActiveEmployees.Where(x => !activeEmployees.Contains(x)).ToList();
- var passedInsuranceLeftWorks = _companyContext.LeftWorkInsuranceList
- .Where(x => query.Any(y => y.EmployeeId == x.EmployeeId && y.WorkshopId == cmd.WorkshopId && x.LeftWorkDate <= DateTime.Now.Date))
- .Select(x => x.EmployeeId).AsEnumerable();
- passedLeftWorks = passedLeftWorks.Concat(passedInsuranceLeftWorks).Distinct();
List employeeDocuments;
switch (cmd.Mode)
{
- case EmployeeDocumentSearchMode.All:
- employeeDocuments = query.OrderBy(x => passedLeftWorks.Any(y => x.EmployeeId == y)).Skip(cmd.PageIndex).Take(30).ToList();
- break;
+ //case EmployeeDocumentSearchMode.All:
+ // employeeDocuments = query.OrderBy(x => passedLeftWorks.Any(y => x.EmployeeId == y)).Skip(cmd.PageIndex).Take(30).ToList();
+ // break;
case EmployeeDocumentSearchMode.ActiveEmployees:
- employeeDocuments = query.Where(x => passedLeftWorks.All(y => x.EmployeeId != y))
+ employeeDocuments = query.Where(q => deActivedEmployeesIdlist.All(deActived => q.EmployeeId != deActived))
.OrderByDescending(x => x.id).Skip(cmd.PageIndex).Take(30).ToList();
break;
case EmployeeDocumentSearchMode.DeactiveEmployees:
- employeeDocuments = query.Where(x => passedLeftWorks.Any(y => x.EmployeeId == y))
+ employeeDocuments = query.Where(x => deActivedEmployeesIdlist.Any(deActived => x.EmployeeId == deActived))
.OrderByDescending(x => x.id).Skip(cmd.PageIndex).Take(30).ToList();
break;
default:
@@ -334,7 +383,7 @@ namespace CompanyManagment.EFCore.Repository
NationalCardRear = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.NationalCardRear),
MilitaryServiceCard = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.MilitaryServiceCard),
EmployeePicture = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.EmployeePicture),
- IsBlack = passedLeftWorks.Any(y => y == x.EmployeeId) ? "true" : "false",
+ IsBlack = deActivedEmployeesIdlist.Any(y => y == x.EmployeeId) ? "true" : "false",
EmployerFullName = employerFullName,
PersonnelCode = personnelCodes.FirstOrDefault(y => y.EmployeeId == x.EmployeeId)?.PersonnelCode ?? 0
};
diff --git a/CompanyManagment.EFCore/Repository/LeftWorkRepository.cs b/CompanyManagment.EFCore/Repository/LeftWorkRepository.cs
index 01f1ff7f..86d00b13 100644
--- a/CompanyManagment.EFCore/Repository/LeftWorkRepository.cs
+++ b/CompanyManagment.EFCore/Repository/LeftWorkRepository.cs
@@ -196,13 +196,13 @@ public class LeftWorkRepository : RepositoryBase, ILeftWorkRepos
};
}
- public List GetEmployeeIdsByWorkshopIdActiveInDates(long workshopId, DateTime start, DateTime end)
+ public List GetAllEmployeeIdsInWorkshop(long workshopId)
{
var leftWorks = _context.LeftWorkList
- .Where(x => x.WorkshopId == workshopId && x.LeftWorkDate.AddDays(-1) >= start && x.StartWorkDate.Date <= end.Date)
+ .Where(x => x.WorkshopId == workshopId)
.GroupBy(x => x.EmployeeId).Select(x => x.Key).ToList();
var insuranceLeftWork = _context.LeftWorkInsuranceList
- .Where(x => x.WorkshopId == workshopId && (x.LeftWorkDate == null && x.StartWorkDate <= start) || (x.LeftWorkDate != null && x.LeftWorkDate.Value.AddDays(-1) >= start && x.StartWorkDate.Date <= end.Date))
+ .Where(x => x.WorkshopId == workshopId)
.GroupBy(x => x.EmployeeId).Select(x => x.Key).ToList();
return leftWorks.Concat(insuranceLeftWork).Distinct().ToList();
}
diff --git a/CompanyManagment.EFCore/Repository/WorkshopRepository.cs b/CompanyManagment.EFCore/Repository/WorkshopRepository.cs
index 7274d640..c2381301 100644
--- a/CompanyManagment.EFCore/Repository/WorkshopRepository.cs
+++ b/CompanyManagment.EFCore/Repository/WorkshopRepository.cs
@@ -6,6 +6,7 @@ using System.Linq;
using _0_Framework.Application;
using _0_Framework.InfraStructure;
using AccountManagement.Application.Contracts.Account;
+using AccountManagement.Domain.AccountLeftWorkAgg;
using AccountMangement.Infrastructure.EFCore;
using Company.Domain.EmployeeAgg;
using Company.Domain.empolyerAgg;
@@ -1541,5 +1542,199 @@ public class WorkshopRepository : RepositoryBase accountIds, long workshopId)
+ {
+ OperationResult op = new();
+
+ var startGr = ($"{(DateTime.Now.ToFarsi().Substring(0, 8))}01").ToGeorgianDateTime();
+ var continueWorking = _0_Framework.Application.StaticWorkshopAccounts.ContinuesWorkingDate;
+ var staticAccountIds = _0_Framework.Application.StaticWorkshopAccounts.StaticAccountIds;
+
+
+ var accountIdList = staticAccountIds.Concat(accountIds).ToList();
+ var selectedAccountsPlusStaticAccounts = _accountContext.Accounts.Where(x => accountIdList.Contains(x.id)).ToList();
+ foreach (var item in selectedAccountsPlusStaticAccounts)
+ {
+ _context.WorkshopAccounts.Add(new WorkshopAccount()
+ {
+
+ WorkshopId = workshopId,
+ AccountId = item.id
+
+ });
+ _context.SaveChanges();
+
+
+ }
+
+
+ var toBeCreateAccountLeftWork = _accountContext.Accounts.Where(x => accountIds.Contains(x.id)).ToList();
+
+ foreach (var item in toBeCreateAccountLeftWork)
+ {
+ _accountContext.AccountLeftWorks.Add(new AccountLeftWork(startGr, continueWorking, item.id, workshopId, item.RoleId));
+ _accountContext.SaveChanges();
+ }
+
+
+
+ return op.Succcedded();
+ }
+
+ public OperationResult EditAccountLeftWorkAndWorkshopAccounts(List accountIds, long workshopId)
+ {
+ List roleIds = _0_Framework.Application.StaticWorkshopAccounts.SelectedAccountsRoleIds;
+ var goStartFa = $"{(DateTime.Now.ToFarsi().Substring(0, 8))}01";
+ var goStartGr = goStartFa.ToGeorgianDateTime();
+ var goEndGr = goStartFa.ToGeorgianDateTime().AddDays(-1);
+ var continueWorking = _0_Framework.Application.StaticWorkshopAccounts.ContinuesWorkingDate;
+ var staticAccountIds = _0_Framework.Application.StaticWorkshopAccounts.StaticAccountIds;
+
+ if (accountIds.Count == 0)
+ return new OperationResult();
+
+ //اکانت های انتخاب شده در ویرایش
+ var selectedAccounts = _accountContext.Accounts.Where(x => accountIds.Contains(x.id)).ToList();
+ if (!selectedAccounts.Any())
+ return new OperationResult();
+
+ //اکانتهایی که در جدول اکانت لفت ورک به این کارگاه دسترسی دارند و نقش های مشخص شده را دارند
+ var accountLeftworksAreActiveNow = _accountContext.AccountLeftWorks.Where(x => x.WorkshopId == workshopId && roleIds.Contains(x.RoleId) && x.IsActive).ToList();
+
+ //ورکشاپ اکانتهای این کارگاه رو بیار
+ var workshopAccountsAreAcceseNow = _context.WorkshopAccounts.Where(x => x.WorkshopId == workshopId).ToList();
+ var workshopAccountsAreAcceseNowIdList = workshopAccountsAreAcceseNow.Select(x => x.AccountId).ToList();
+ // اکانتهایی که با نقش های تعریف شده استاتیک دسترسی دارند به کارگاه
+ var accountsHaveStaticRolesNow = _accountContext.Accounts
+ .Where(x => workshopAccountsAreAcceseNowIdList.Contains(x.id))
+ .Where(x => roleIds.Contains(x.RoleId)).ToList();
+
+ // به ازای هر یک از اکانت های انتخاب شده در ویرایش
+ foreach (var account in selectedAccounts)
+ {
+ //اگر اکانت انتخاب شده در جدول اکانت لفت ورک نبود یا فعال نبود
+ if (!accountLeftworksAreActiveNow.Any(x => x.RoleId == account.RoleId && x.AccountId == account.id))
+ {
+ //اکانت لفت ورکی که قبلا این نقش را داشته بیار
+ var accountLeftworkToBeDeActiveAcount = accountLeftworksAreActiveNow.FirstOrDefault(x => x.RoleId == account.RoleId);
+ if (accountLeftworkToBeDeActiveAcount != null)
+ {
+ var start = accountLeftworkToBeDeActiveAcount.StartWorkGr > goEndGr ? goEndGr : accountLeftworkToBeDeActiveAcount.StartWorkGr;
+ //غیر فعالش کن
+ accountLeftworkToBeDeActiveAcount.DeActive(start, goEndGr);
+
+
+
+ }
+
+ //برای اکانت جدید لفت ورک اکانت بساز
+ var create = new AccountLeftWork(goStartGr, continueWorking, account.id, workshopId, account.RoleId, true);
+ _accountContext.AccountLeftWorks.Add(create);
+ _accountContext.SaveChanges();
+
+ }
+
+ //اگر اکانت انتخاب شده با این نقش به کارگاه وصل نبود
+ if (!accountsHaveStaticRolesNow.Any(x => x.RoleId == account.RoleId && x.id == account.id))
+ {
+ // اکانتی که قبلا این نقش را داشته
+ var accountHasTheRole = accountsHaveStaticRolesNow.FirstOrDefault(x => x.RoleId == account.RoleId);
+ if (accountHasTheRole != null)
+ {
+ //ورکشاپ اکانت دسترسی این کارگاه رو بیار
+ var workshopAccountToBeRemove =
+ workshopAccountsAreAcceseNow.FirstOrDefault(x => x.AccountId == accountHasTheRole.id);
+ if (workshopAccountToBeRemove != null)
+ {
+ //حذفش کن
+ _context.WorkshopAccounts.Remove(workshopAccountToBeRemove);
+
+ }
+ }
+
+
+ //برای اکانت جدید ورکشاپ اکانت بساز
+ _context.WorkshopAccounts.Add(new WorkshopAccount()
+ {
+
+ WorkshopId = workshopId,
+ AccountId = account.id
+
+ });
+ _context.SaveChanges();
+ }
+ }
+
+ //اگر تعداد اکانتهای انتخاب شده کمتر از 4 نقش استاتیک بود
+ if (accountIds.Count < 4)
+ {
+ //رول های انتخاب شده
+ var roleBeActive = selectedAccounts.Select(x => x.RoleId).ToList();
+ // رول هایی که باید دسترسی اکانتشان حذف شود
+ var roleBeRemove = roleIds.Except(roleBeActive).ToList();
+
+ var accountsBeRemoveList = accountLeftworksAreActiveNow.Where(x => roleBeRemove.Contains(x.RoleId)).ToList();
+
+ foreach (var accountBeRemove in accountsBeRemoveList)
+ {
+
+ //اکانت لفت ورکی که قبلا این نقش را داشته بیار
+ var accountLeftworkToBeDeActiveAcount = accountLeftworksAreActiveNow.FirstOrDefault(x => x.RoleId == accountBeRemove.RoleId);
+ if (accountLeftworkToBeDeActiveAcount != null)
+ {
+ var start = accountLeftworkToBeDeActiveAcount.StartWorkGr > goEndGr ? goEndGr : accountLeftworkToBeDeActiveAcount.StartWorkGr;
+ //غیر فعالش کن
+ accountLeftworkToBeDeActiveAcount.DeActive(start, goEndGr);
+ _accountContext.SaveChanges();
+ }
+
+ //ورکشاپ اکانت دسترسی این نقش رو بیار
+ var workshopAccountToBeRemove =
+ workshopAccountsAreAcceseNow.FirstOrDefault(x => x.AccountId == accountBeRemove.id);
+ if (workshopAccountToBeRemove != null)
+ {
+ //حذفش کن
+ _context.WorkshopAccounts.Remove(workshopAccountToBeRemove);
+ _context.SaveChanges();
+ }
+
+ }
+ }
+
+ //حذف ورکشاپ اکانتهای اضافی
+ var accountIdList = staticAccountIds.Concat(accountIds).ToList();
+ var otherAccessTobeRemove = _context.WorkshopAccounts.Where(x => x.WorkshopId == workshopId)
+ .Where(x => !accountIdList.Contains(x.AccountId)).ToList();
+ _context.WorkshopAccounts.RemoveRange(otherAccessTobeRemove);
+
+ //اگر اکانتی از اکانتهای ثابت دسترسی نداشت اضافه کن
+ foreach (var starticAccount in staticAccountIds)
+ {
+ var checkExist = workshopAccountsAreAcceseNow.Any(x => x.AccountId == starticAccount);
+
+ if (!checkExist)
+ {
+ //var acc = _accountContext.Accounts.FirstOrDefault(x => x.id == starticAccount);
+ //if (acc != null)
+ //{
+
+ //}
+ _context.WorkshopAccounts.Add(new WorkshopAccount()
+ {
+ WorkshopId = workshopId,
+ AccountId = starticAccount
+ });
+
+ }
+
+ }
+ _context.SaveChanges();
+
+
+
+ return new OperationResult().Succcedded();
+
+ }
+
+ #endregion
}
\ No newline at end of file
diff --git a/ServiceHost/Areas/Admin/Pages/Company/Workshops/CreateWorkshop.cshtml.cs b/ServiceHost/Areas/Admin/Pages/Company/Workshops/CreateWorkshop.cshtml.cs
index 73b4aacd..9543c613 100644
--- a/ServiceHost/Areas/Admin/Pages/Company/Workshops/CreateWorkshop.cshtml.cs
+++ b/ServiceHost/Areas/Admin/Pages/Company/Workshops/CreateWorkshop.cshtml.cs
@@ -41,13 +41,15 @@ namespace ServiceHost.Areas.Admin.Pages.Company.Workshops
Id = x.Id,
InsuranceJobTitle = x.InsuranceJobTitle + " | " + x.EconomicCode,
}).ToList();
-
+ var accounts = _accountRepository.GetAdminAccountsNew();
var command = new CreateWorkshop
{
Employers = _EmployerApplication.GetAllEmployers(),
- AccountsList = _accountRepository.GetAccounts()
- .Where(x => x.AdminAreaPermission == "true" && x.Id != 2 && x.Id != 3)
- .ToList(),
+ AccountsList = accounts,
+ SeniorContractAccountsList = accounts.Where(x => x.RoleId == 3).ToList(),
+ JuniorContractAccountsList = accounts.Where(x => x.RoleId == 5).ToList(),
+ SeniorInsuranceAccountList = accounts.Where(x => x.RoleId == 7).ToList(),
+ JuniorInsuranceAccountsList = accounts.Where(x => x.RoleId == 8).ToList(),
InsuranceJobViewModels = new SelectList(insuranceJob, "Id", "InsuranceJobTitle"),
};
diff --git a/ServiceHost/Areas/Admin/Pages/Company/Workshops/EditWorkshop.cshtml.cs b/ServiceHost/Areas/Admin/Pages/Company/Workshops/EditWorkshop.cshtml.cs
index addf7b74..531c1e90 100644
--- a/ServiceHost/Areas/Admin/Pages/Company/Workshops/EditWorkshop.cshtml.cs
+++ b/ServiceHost/Areas/Admin/Pages/Company/Workshops/EditWorkshop.cshtml.cs
@@ -12,7 +12,6 @@ using Company.Domain.WorkshopAgg;
using CompanyManagment.App.Contracts.RollCall;
using CompanyManagment.App.Contracts.RollCallService;
using CompanyManagment.EFCore.Repository;
-using CompanyManagment.EFCore.Migrations;
namespace ServiceHost.Areas.Admin.Pages.Company.Workshops
{
@@ -33,6 +32,7 @@ namespace ServiceHost.Areas.Admin.Pages.Company.Workshops
public bool HasPermissionWorkshopInfo;
public bool HasPermissionContract;
public bool HasPermissionInsurance;
+ public List DeactivatedAccounts;
public EditWorkshopModel(IWorkshopApplication workshopApplication, IWorkshopRepository workshopRepository, IEmployerApplication employerApplication, IAccountRepository accountRepository, IInsuranceJobApplication insuranceJobApplication, IAuthHelper authHelper, IRollCallServiceApplication rollCallServiceApplication)
{
@@ -65,16 +65,36 @@ namespace ServiceHost.Areas.Admin.Pages.Company.Workshops
if (RollCallService != null)
RollCallService.EndServiceToFarsiDuration = RollCallService.EndServiceStr.ToFarsiDuration2();
- var workshop = _workshopApplication.GetDetails(id);
+ var allAccounts = _accountRepository.GetAccountsToEditWorkshop(id);
+
+ var activeAccounts = allAccounts.Where(x => x.IsActiveString == "true").ToList();
+
+ DeactivatedAccounts = allAccounts.Except(activeAccounts).ToList();
+
+ var workshop = _workshopApplication.GetDetails(id);
+
workshop.Employers = _EmployerApplication.GetAllEmployers();
- workshop.AccountsList = _accountRepository.GetAccounts()
- .Where(x => x.AdminAreaPermission == "true" && !_workshopRepository.GetWorkshopAccountRelation(id).Contains(x.Id))
- .ToList();
+
+ workshop.AccountsList = activeAccounts;
+
+ var adminAccounts = _accountRepository.GetAdminAccountsNew();
+ workshop.SeniorContractAccountsList = adminAccounts.Where(x => x.RoleId == 3).ToList();
+ workshop.JuniorContractAccountsList = adminAccounts.Where(x => x.RoleId == 5).ToList();
+ workshop.SeniorInsuranceAccountList = adminAccounts.Where(x => x.RoleId == 7).ToList();
+ workshop.JuniorInsuranceAccountsList = adminAccounts.Where(x => x.RoleId == 8).ToList();
+
+
+
+
workshop.EmployerIdList = _workshopRepository.GetRelation(id);
workshop.AccountIdsList = _workshopRepository.GetWorkshopAccountRelation(id);
- workshop.InAccountIdsList = _accountRepository.GetAccounts()
- .Where(x => _workshopRepository.GetWorkshopAccountRelation(id).Contains(x.Id))
- .ToList();
+
+ workshop.DeActiveAccounts = allAccounts.Except(activeAccounts).ToList();
+ workshop.ActiveAccounts = activeAccounts;
+ //workshop.InAccountIdsList = _accountRepository.GetAccounts()
+ // .Where(x => _workshopRepository.GetWorkshopAccountRelation(id).Contains(x.Id))
+ // .ToList();
+
workshop.InsuranceJobViewModels = new SelectList(insuranceJob, "Id", "InsuranceJobTitle");
Message = workshop.ArchiveCode;
workshop.PermissionIds = permissionIds;
diff --git a/ServiceHost/Areas/Admin/Pages/Company/Workshops/_CreateForms/FormPermissionAccount.cshtml b/ServiceHost/Areas/Admin/Pages/Company/Workshops/_CreateForms/FormPermissionAccount.cshtml
index f9b16385..bd665c7c 100644
--- a/ServiceHost/Areas/Admin/Pages/Company/Workshops/_CreateForms/FormPermissionAccount.cshtml
+++ b/ServiceHost/Areas/Admin/Pages/Company/Workshops/_CreateForms/FormPermissionAccount.cshtml
@@ -1,202 +1,165 @@
@model CompanyManagment.App.Contracts.Workshop.CreateWorkshop
@{
-
+ string adminVersion = _0_Framework.Application.Version.AdminVersion;
+
+
}
+