Merge branch 'Feature/InstitutionContract/add-registration-style' into Main

This commit is contained in:
2025-09-22 14:45:35 +03:30
19 changed files with 23219 additions and 270 deletions

View File

@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Security.Cryptography;
using _0_Framework.Application;
using _0_Framework.Domain;
using Company.Domain.InstitutionContractContactInfoAgg;
using CompanyManagment.App.Contracts.InstitutionContract;
@@ -16,7 +15,8 @@ public class InstitutionContract : EntityBase
string address, DateTime contractStartGr, string contractStartFa, DateTime contractEndGr,
string contractEndFa, double contractAmount, double dailyCompenseation, double obligation,
double totalAmount, int extensionNo, string workshopManualCount, string employeeManualCount, string description,
string officialCompany, string typeOfcontract, string hasValueAddedTax, double valueAddedTax)
string officialCompany, string typeOfcontract, string hasValueAddedTax, double valueAddedTax,
List<InstitutionContractWorkshopDetail> workshopDetails)
{
ContractNo = contractNo;
RepresentativeId = representativeId;
@@ -48,29 +48,39 @@ public class InstitutionContract : EntityBase
TypeOfContract = typeOfcontract;
HasValueAddedTax = hasValueAddedTax;
ValueAddedTax = valueAddedTax;
Status = InstitutionContractStatus.Incomplete;
VerificationStatus = InstitutionContractVerificationStatus.PendingForVerify;
ContactInfoList = [];
WorkshopDetails = [];
Installments = [];
WorkshopGroup = new InstitutionContractWorkshopGroup(0, workshopDetails);
}
public string ContractNo { get; private set; }
public long RepresentativeId { get; private set; }
public string RepresentativeName { get; private set; }
public long ContractingPartyId { get; private set; }
public string ContractingPartyName { get; private set; }
public DateTime ContractDateGr { get; private set; }
public string ContractDateFa { get; private set; }
public string State { get; private set; }
public string City { get; private set; }
public string Address { get; private set; }
//public long ContactInfoId { get; private set; }
public DateTime ContractStartGr { get; private set; }
public string ContractStartFa { get; private set; }
public DateTime ContractEndGr { get; private set; }
public string ContractEndFa { get; private set; }
// مبلغ قرارداد
@@ -84,28 +94,40 @@ public class InstitutionContract : EntityBase
// مبلغ کل قرارداد
public double TotalAmount { get; private set; }
public string WorkshopManualCount { get; private set; }
public string EmployeeManualCount { get; private set; }
public string IsActiveString { get; private set; }
public int ExtensionNo { get; private set; }
public string Description { get; private set; }
public string Signature { get; private set; }
public string OfficialCompany { get; private set; }
public string TypeOfContract { get; private set; }
public string HasValueAddedTax { get; set; }
public double ValueAddedTax { get; set; }
public InstitutionContractStatus Status { get; private set; }
public List<InstitutionContractWorkshopDetail> WorkshopDetails { get; set; }
public string WorkshopManualCount { get; private set; }
public string EmployeeManualCount { get; private set; }
public string IsActiveString { get; private set; }
public int ExtensionNo { get; private set; }
public string Description { get; private set; }
public string Signature { get; private set; }
public string OfficialCompany { get; private set; }
public string TypeOfContract { get; private set; }
public string HasValueAddedTax { get; set; }
public double ValueAddedTax { get; set; }
public InstitutionContractVerificationStatus VerificationStatus { get; private set; }
public InstitutionContractWorkshopGroup WorkshopGroup { get; private set; }
public List<InstitutionContractContactInfo> ContactInfoList { get; set; }
public List<InstitutionContractInstallment> Installments { get; set; }
public List<InstitutionContractAmendment> Amendments { get; private set; }
public InstitutionContract()
{
ContactInfoList = [];
WorkshopDetails = [];
Installments = [];
}
@@ -164,176 +186,90 @@ public class InstitutionContract : EntityBase
this.Signature = "0";
}
public void Complete()
public void Verified()
{
Status = InstitutionContractStatus.Completed;
VerificationStatus = InstitutionContractVerificationStatus.Verified;
}
public void SetWorkshopDetails(List<InstitutionContractWorkshopDetail> commandWorkshops)
{
WorkshopDetails = commandWorkshops;
}
public void SetInstallments(List<InstitutionContractInstallment> installments)
{
Installments = installments;
}
}
public class InstitutionContractWorkshopDetail:EntityBase
public class InstitutionContractAmendment : EntityBase
{
public InstitutionContractWorkshopDetail(string workshopName, bool hasRollCallPlan,
bool hasCustomizeCheckoutPlan, bool hasContractPlan,bool hasContractPlanInPerson,bool hasInsurancePlan,bool hasInsurancePlanInPerson,
int personnelCount, double price)
{
WorkshopName = workshopName;
HasRollCallPlan = hasRollCallPlan;
HasCustomizeCheckoutPlan = hasCustomizeCheckoutPlan;
HasContractPlan = hasContractPlan;
HasContractPlanInPerson = hasContractPlanInPerson;
HasInsurancePlan = hasInsurancePlan;
HasInsurancePlanInPerson = hasInsurancePlanInPerson;
PersonnelCount = personnelCount;
WorkshopCreated = false;
Price = price;
Employers = [];
}
public long InstitutionContractId { get; set; }
public List<InstitutionContractInstallment> Installments { get; set; }
public double Amount { get; set; }
public bool HasInstallment { get; set; }
public List<InstitutionContractAmendmentChange> AmendmentChanges { get; set; }
}
/// <summary>
/// شناسه کارگاه
/// </summary>
public long? WorkshopId { get; private set; }
/// <summary>
/// نام کارگاه
/// </summary>
public string WorkshopName { get; private set; }
public class InstitutionContractAmendmentChange : EntityBase
{
public long InstitutionContractAmendmentId { get; private set; }
public InstitutionContractAmendment InstitutionContractAmendment { get; private set; }
public InstitutionContractAmendmentChangeType ChangeType { get; private set; }
public DateTime ChangeDateGr { get; private set; }
/// <summary>
/// پلن حضور و غیاب
/// </summary>
public bool HasRollCallPlan { get; private set; }
public bool? HasRollCallPlan { get; private set; }
/// <summary>
/// پلن فیش غیر رسمی
/// </summary>
public bool HasCustomizeCheckoutPlan { get; private set; }
public bool? HasCustomizeCheckoutPlan { get; private set; }
/// <summary>
/// پلن قرارداد و تصفیه
/// </summary>
public bool HasContractPlan { get; private set; }
public bool? HasContractPlan { get; private set; }
/// <summary>
/// پلن قرارداد و تصفیه حضوری
/// </summary>
public bool HasContractPlanInPerson { get; private set; }
public bool? HasContractPlanInPerson { get; private set; }
/// <summary>
/// پلن بیمه
/// </summary>
public bool HasInsurancePlan { get; private set; }
public bool? HasInsurancePlan { get; private set; }
/// <summary>
/// پلن بیمه حضوری
/// </summary>
public bool HasInsurancePlanInPerson { get; private set; }
public int PersonnelCount { get; private set; }
public bool WorkshopCreated { get; private set; }
public bool? HasInsurancePlanInPerson { get; private set; }
/// <summary>
/// شناسه قرارداد نهاد مرتبط
/// تعداد پرسنل
/// </summary>
public long InstitutionContractId { get; private set; }
public int? PersonnelCount { get; private set; }
/// <summary>
/// Navigation property to InstitutionContract
/// تعداد کارگاه
/// </summary>
public InstitutionContract InstitutionContract { get; private set; }
public double Price { get; private set; }
private InstitutionContractWorkshopDetail()
{
}
public List<InstitutionContractWorkshopDetailEmployer> Employers { get; private set; } = new();
public void SetEmployers(List<long> employerIds)
{
Employers.Clear();
foreach (var employerId in employerIds)
{
Employers.Add(new InstitutionContractWorkshopDetailEmployer(id, employerId));
}
}
public void AddEmployer(long employerId)
{
if (Employers.Exists(x => x.EmployerId == employerId))
return;
Employers.Add(new InstitutionContractWorkshopDetailEmployer(id, employerId));
}
public void Edit(bool hasAttendancePlan, bool hasUnofficialPayslipPlan, bool hasContractSettlementPlan)
{
HasRollCallPlan = hasAttendancePlan;
HasCustomizeCheckoutPlan = hasUnofficialPayslipPlan;
HasContractPlan = hasContractSettlementPlan;
}
public void SetWorkshopId(long workshopId)
{
WorkshopId = workshopId;
WorkshopCreated = true;
}
public long? WorkshopDetailsId { get; private set; }
}
public enum InstitutionContractStatus
public enum InstitutionContractAmendmentChangeType
{
/// <summary>
/// ناتمام - قرارداد هنوز تکمیل نشده و نیاز به انجام کارهای بیشتر دارد
/// </summary>
Incomplete = 0,
/// <summary>
/// تکمیل شده - قرارداد به طور کامل انجام شده و نهایی شده است
/// </summary>
Completed = 1
PersonCount,
Services,
WorkshopCreated
}
public class InstitutionContractInstallment
public enum InstitutionContractVerificationStatus
{
public InstitutionContractInstallment(DateTime installmentDateGr, double amount,
string description)
{
InstallmentDateGr = installmentDateGr;
InstallmentDateFa = installmentDateGr.ToFarsi();
Amount = amount;
Description = description;
}
/// <summary>
/// در انتظار تایید
/// </summary>
PendingForVerify = 0,
public long Id { get; private set; }
public DateTime InstallmentDateGr { get; private set; }
public string InstallmentDateFa { get; private set; }
public double Amount { get; private set; }
public string Description { get; private set; }
public long InstitutionContractId { get; private set; }
public InstitutionContract InstitutionContract { get; private set; }
}
public class InstitutionContractWorkshopDetailEmployer : EntityBase
{
public long InstitutionContractWorkshopDetailId { get; private set; }
public long EmployerId { get; private set; }
public InstitutionContractWorkshopDetailEmployer(long institutionContractWorkshopDetailId, long employerId)
{
InstitutionContractWorkshopDetailId = institutionContractWorkshopDetailId;
EmployerId = employerId;
}
private InstitutionContractWorkshopDetailEmployer() { }
/// <summary>
/// تایید شده
/// </summary>
Verified = 1
}

View File

@@ -0,0 +1,28 @@
using System;
using _0_Framework.Application;
namespace Company.Domain.InstitutionContractAgg;
public class InstitutionContractInstallment
{
public InstitutionContractInstallment(DateTime installmentDateGr, double amount,
string description)
{
InstallmentDateGr = installmentDateGr;
InstallmentDateFa = installmentDateGr.ToFarsi();
Amount = amount;
Description = description;
}
public long Id { get; private set; }
public DateTime InstallmentDateGr { get; private set; }
public string InstallmentDateFa { get; private set; }
public double Amount { get; private set; }
public string Description { get; private set; }
public long InstitutionContractId { get; private set; }
public long? InstitutionContractAmendmentId { get; private set; }
public InstitutionContract InstitutionContract { get; private set; }
public InstitutionContractAmendment InstitutionContractAmendment { get; set; }
}

View File

@@ -0,0 +1,87 @@
using System.Collections.Generic;
using _0_Framework.Domain;
using CompanyManagment.App.Contracts.InstitutionContract;
namespace Company.Domain.InstitutionContractAgg;
public class InstitutionContractWorkshopDetail:EntityBase
{
public InstitutionContractWorkshopDetail(string workshopName, bool hasRollCallPlan,bool hasRollCallPlanInPerson,
bool hasCustomizeCheckoutPlan, bool hasContractPlan,bool hasContractPlanInPerson,bool hasInsurancePlan,bool hasInsurancePlanInPerson,
int personnelCount, double price)
{
WorkshopName = workshopName;
Services = new WorkshopServices(hasInsurancePlan, hasInsurancePlanInPerson,
hasContractPlan, hasContractPlanInPerson, hasRollCallPlan, hasRollCallPlanInPerson,hasCustomizeCheckoutPlan);
PersonnelCount = personnelCount;
WorkshopCreated = false;
Price = price;
Employers = [];
}
/// <summary>
/// شناسه کارگاه
/// </summary>
public long? WorkshopId { get; private set; }
/// <summary>
/// نام کارگاه
/// </summary>
public string WorkshopName { get; private set; }
public WorkshopServices Services { get; set; }
public int PersonnelCount { get; private set; }
public bool WorkshopCreated { get; private set; }
/// <summary>
/// شناسه قرارداد نهاد مرتبط
/// </summary>
public long InstitutionContractId { get; private set; }
public long InstitutionContractWorkshopGroupId { get; set; }
public double Price { get; private set; }
private InstitutionContractWorkshopDetail()
{
}
public List<InstitutionContractWorkshopDetailEmployer> Employers { get; private set; } = new();
public void SetEmployers(List<long> employerIds)
{
Employers.Clear();
foreach (var employerId in employerIds)
{
Employers.Add(new InstitutionContractWorkshopDetailEmployer(id, employerId));
}
}
public void AddEmployer(long employerId)
{
if (Employers.Exists(x => x.EmployerId == employerId))
return;
Employers.Add(new InstitutionContractWorkshopDetailEmployer(id, employerId));
}
public void SetWorkshopId(long workshopId)
{
WorkshopId = workshopId;
WorkshopCreated = true;
}
}
public class InstitutionContractWorkshopDetailEmployer : EntityBase
{
public long InstitutionContractWorkshopDetailId { get; private set; }
public long EmployerId { get; private set; }
public InstitutionContractWorkshopDetailEmployer(long institutionContractWorkshopDetailId, long employerId)
{
InstitutionContractWorkshopDetailId = institutionContractWorkshopDetailId;
EmployerId = employerId;
}
private InstitutionContractWorkshopDetailEmployer() { }
}

View File

@@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.Linq;
using _0_Framework_b.Domain;
namespace Company.Domain.InstitutionContractAgg;
public class InstitutionContractWorkshopGroup : EntityBase
{
private InstitutionContractWorkshopGroup()
{
}
public long InstitutionContractId { get; private set; }
public InstitutionContract InstitutionContract { get; set; }
public List<InstitutionContractWorkshopDetail> InitialWorkshopDetails { get; private set; }
public List<InstitutionContractWorkshopDetail> CurrentWorkshopDetails { get; private set; }
public DateTime LastModifiedDate { get; private set; }
public bool HasChanges => !InitialWorkshopDetails.SequenceEqual(CurrentWorkshopDetails);
public InstitutionContractWorkshopGroup(long institutionContractId,
List<InstitutionContractWorkshopDetail> initialDetails)
{
InstitutionContractId = institutionContractId;
InitialWorkshopDetails = initialDetails;
CurrentWorkshopDetails = new List<InstitutionContractWorkshopDetail>(initialDetails);
InitialWorkshopDetails = new List<InstitutionContractWorkshopDetail>(initialDetails);
LastModifiedDate = DateTime.Now;
}
public void UpdateCurrentWorkshops(List<InstitutionContractWorkshopDetail> updatedDetails)
{
CurrentWorkshopDetails = updatedDetails;
LastModifiedDate = DateTime.Now;
}
}

View File

@@ -0,0 +1,23 @@
namespace Company.Domain.InstitutionContractAgg;
public class WorkshopServices
{
public WorkshopServices(bool insurance, bool insuranceInPerson, bool contract, bool contractInPerson, bool rollCall, bool rollCallInPerson, bool customizeCheckout)
{
Insurance = insurance;
InsuranceInPerson = insuranceInPerson;
Contract = contract;
ContractInPerson = contractInPerson;
RollCall = rollCall;
CustomizeCheckout = customizeCheckout;
RollCallInPerson = rollCallInPerson;
}
public bool Insurance { get; private set; }
public bool InsuranceInPerson { get; private set; }
public bool Contract { get; private set; }
public bool ContractInPerson { get; private set; }
public bool RollCall { get; private set; }
public bool RollCallInPerson { get; private set; }
public bool CustomizeCheckout { get; private set; }
}

View File

@@ -85,4 +85,24 @@ public class GetInstitutionContractListItemsViewModel
public bool IsExpired { get; set; }
public long ContractingPartyId { get; set; }
public List<InstitutionContractListWorkshop> Workshops { get; set; }
}
public class InstitutionContractListWorkshop
{
public string WorkshopName { get; set; }
public int EmployeeCount { get; set; }
public WorkshopServicesViewModel WorkshopServices { get; set; }
}
public class WorkshopServicesViewModel
{
public bool Insurance { get; set; }
public bool InsuranceInPerson { get; set; }
public bool Contract { get; set; }
public bool ContractInPerson { get; set; }
public bool RollCall { get; set; }
public bool RollCallInPerson { get; set; }
public bool CustomizeCheckout { get; set; }
}

View File

@@ -201,7 +201,7 @@ public class InstitutionContractApplication : IInstitutionContractApplication
command.ContractStartFa, contractEndGr, command.ContractEndFa, command.ContractAmount,
command.DailyCompenseation, command.Obligation,
command.TotalAmount, 0, command.WorkshopManualCount, command.EmployeeManualCount, command.Description,
command.OfficialCompany, command.TypeOfContract, command.HasValueAddedTax, command.ValueAddedTax);
command.OfficialCompany, command.TypeOfContract, command.HasValueAddedTax, command.ValueAddedTax,[]);
_institutionContractRepository.Create(createContract);
_institutionContractRepository.SaveChanges();
@@ -310,7 +310,7 @@ public class InstitutionContractApplication : IInstitutionContractApplication
command.DailyCompenseation, command.Obligation,
command.TotalAmount, command.ExtensionNo, command.WorkshopManualCount, command.EmployeeManualCount,
command.Description, command.OfficialCompany, command.TypeOfContract, command.HasValueAddedTax,
command.ValueAddedTax);
command.ValueAddedTax,[]);
_institutionContractRepository.Create(createContract);
_institutionContractRepository.SaveChanges();
@@ -966,6 +966,11 @@ public class InstitutionContractApplication : IInstitutionContractApplication
var contractingPartyFullName = contractingParty.FName + " " + contractingParty.LName;
var workshopDetails = command.Workshops.Select(x =>
new InstitutionContractWorkshopDetail(x.WorkshopName, x.HasRollCallPlan,false, x.HasCustomizeCheckoutPlan,
x.HasContractPlan, x.HasContractPlanInPerson,x.HasInsurancePlan,x.HasInsurancePlanInPerson,x.PersonnelCount, x.Price)).ToList();
var entity = new InstitutionContract(contractNo, command.RepresentativeId, representative.FullName,
contractingParty.id,
contractingPartyFullName, contractDateGr, contractDateFa, command.Province, command.City, command.Address,
@@ -974,14 +979,9 @@ public class InstitutionContractApplication : IInstitutionContractApplication
command.Obligation, command.TotalAmount, 0,
command.Workshops.Count.ToString(),
command.Workshops.Sum(x => x.PersonnelCount).ToString(), command.Description,
"NotOfficial", "JobRelation", hasValueAddedTax
, command.TaxAmount);
var workshopDetails = command.Workshops.Select(x =>
new InstitutionContractWorkshopDetail(x.WorkshopName, x.HasRollCallPlan, x.HasCustomizeCheckoutPlan,
x.HasContractPlan, x.HasContractPlanInPerson,x.HasInsurancePlan,x.HasInsurancePlanInPerson,x.PersonnelCount, x.Price)).ToList();
"NotOfficial", "JobRelation", hasValueAddedTax,
command.TaxAmount,workshopDetails);
var financialStatement = new FinancialStatment(contractingParty.id, contractingPartyFullName);
if (command.IsInstallment)
@@ -1015,8 +1015,7 @@ public class InstitutionContractApplication : IInstitutionContractApplication
"پرداخت کل سرویس", "debt", "بابت خدمات", command.TotalAmount, 0, 0);
financialStatement.AddFinancialTransaction(financialTransaction);
}
entity.SetWorkshopDetails(workshopDetails);
await _financialStatmentRepository.CreateAsync(financialStatement);
await _institutionContractRepository.CreateAsync(entity);
await _institutionContractRepository.SaveChangesAsync();

View File

@@ -1112,7 +1112,8 @@ public class WorkshopAppliction : IWorkshopApplication
accountIds.Add(command.SeniorInsuranceAccountId);
accountIds.Add(command.JuniorInsuranceAccountId);
var op = _workshopRepository.CreateAccountLeftWorkAndWorkshopAccounts(accountIds.Distinct().ToList(),
var op = _workshopRepository
.CreateAccountLeftWorkAndWorkshopAccounts(accountIds.Distinct().ToList(),
workshop.id);
_institutionContractRepository.UpdateStatusIfNeeded(institutionContract.id);

View File

@@ -274,7 +274,7 @@ public class CompanyContext : DbContext
public DbSet<InsuranceJobAndJobs> InsuranceJobAndJobsSet { get; set; }
public DbSet<InstitutionContractContactInfo> InstitutionContractContactInfos { get; set; }
public DbSet<InstitutionContract> InstitutionContractSet { get; set; }
public DbSet<InstitutionContractWorkshopDetail> InstitutionContractWorkshopDetails { get; set; }
public DbSet<InstitutionContractWorkshopGroup> InstitutionContractWorkshopGroups { get; set; }
public DbSet<FileEmployer> FileEmployerSet { get; set; }
public DbSet<FileEmployee> FileEmployeeSet { get; set; }
public DbSet<Representative> RepresentativeSet { get; set; }

View File

@@ -29,13 +29,8 @@ public class InstitutionContractMapping : IEntityTypeConfiguration<InstitutionCo
builder.Property(x => x.TypeOfContract).HasMaxLength(30);
builder.Property(x => x.HasValueAddedTax).HasMaxLength(10);
builder.Property(x => x.Status).HasConversion<string>().HasMaxLength(122);
builder.Property(x => x.VerificationStatus).HasConversion<string>().HasMaxLength(122);
// Configure simple relationship with WorkshopDetails for Include() support
builder.HasMany(x => x.WorkshopDetails)
.WithOne(x => x.InstitutionContract)
.HasForeignKey(x => x.InstitutionContractId);
builder.HasMany(x => x.Installments)
.WithOne(x => x.InstitutionContract)
.HasForeignKey(x => x.InstitutionContractId);

View File

@@ -1,33 +0,0 @@
using Company.Domain.InstitutionContractAgg;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace CompanyManagment.EFCore.Mapping;
public class InstitutionContractWorkshopDetailMapping : IEntityTypeConfiguration<InstitutionContractWorkshopDetail>
{
public void Configure(EntityTypeBuilder<InstitutionContractWorkshopDetail> builder)
{
builder.ToTable("InstitutionContractWorkshopDetail");
builder.HasKey(x => x.id);
builder.Property(x => x.WorkshopName).HasMaxLength(100);
builder.Property(x => x.WorkshopId).IsRequired(false);
// Configure relationship with InstitutionContract
builder.HasOne(x => x.InstitutionContract)
.WithMany(x => x.WorkshopDetails)
.HasForeignKey(x => x.InstitutionContractId);
// Configure OwnsMany relationship with Employers
builder.OwnsMany(x => x.Employers, employer =>
{
employer.ToTable("InstitutionContractWorkshopDetailEmployers");
employer.HasKey(x => x.id);
employer.WithOwner().HasForeignKey(x => x.InstitutionContractWorkshopDetailId);
employer.Property(x => x.EmployerId).IsRequired();
employer.HasIndex(x => new { x.InstitutionContractWorkshopDetailId, x.EmployerId })
.IsUnique();
});
}
}

View File

@@ -0,0 +1,80 @@
using Company.Domain.InstitutionContractAgg;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace CompanyManagment.EFCore.Mapping;
public class InstitutionContractWorkshopGroupDetailMapping : IEntityTypeConfiguration<InstitutionContractWorkshopGroup>
{
public void Configure(EntityTypeBuilder<InstitutionContractWorkshopGroup> builder)
{
builder.HasKey(x => x.id);
builder.Property(x => x.LastModifiedDate)
.IsRequired();
// Configure relationship with InstitutionContract
builder.HasOne(x=>x.InstitutionContract)
.WithOne(x => x.WorkshopGroup)
.HasForeignKey<InstitutionContractWorkshopGroup>(x=>x.InstitutionContractId);
// Configure owned collections for workshop details
builder.OwnsMany(x => x.InitialWorkshopDetails, initialDetails =>
{
initialDetails.HasKey(x => x.id);
initialDetails.ToTable("InstitutionContractInitialWorkshopDetails");
initialDetails.WithOwner().HasForeignKey(x => x.InstitutionContractWorkshopGroupId);
initialDetails.Property(x => x.WorkshopName).HasMaxLength(100);
initialDetails.Property(x => x.WorkshopId).IsRequired(false);
initialDetails.OwnsOne(x => x.Services, service =>
{
service.Property(x => x.Contract).IsRequired();
service.Property(x => x.ContractInPerson).IsRequired();
service.Property(x => x.Insurance).IsRequired();
service.Property(x => x.InsuranceInPerson).IsRequired();
service.Property(x => x.RollCall).IsRequired();
service.Property(x => x.CustomizeCheckout).IsRequired();
});
initialDetails.OwnsMany(x => x.Employers, employer =>
{
employer.ToTable("InstitutionContractInitialWorkshopDetailEmployers");
employer.HasKey(x => x.id);
employer.WithOwner().HasForeignKey(x => x.InstitutionContractWorkshopDetailId);
employer.Property(x => x.EmployerId).IsRequired();
employer.HasIndex(x => new { x.InstitutionContractWorkshopDetailId, x.EmployerId })
.IsUnique();
});
});
builder.OwnsMany(x => x.CurrentWorkshopDetails, currentDetails =>
{
currentDetails.HasKey(x => x.id);
currentDetails.ToTable("InstitutionContractCurrentWorkshopDetails"); // Changed table name
currentDetails.WithOwner().HasForeignKey(x => x.InstitutionContractWorkshopGroupId);
currentDetails.Property(x => x.WorkshopName).HasMaxLength(100);
currentDetails.Property(x => x.WorkshopId).IsRequired(false);
currentDetails.OwnsOne(x => x.Services, service =>
{
service.Property(x => x.Contract).IsRequired();
service.Property(x => x.ContractInPerson).IsRequired();
service.Property(x => x.Insurance).IsRequired();
service.Property(x => x.InsuranceInPerson).IsRequired();
service.Property(x => x.RollCall).IsRequired();
service.Property(x => x.CustomizeCheckout).IsRequired();
});
currentDetails.OwnsMany(x => x.Employers, employer =>
{
employer.ToTable("InstitutionContractCurrentWorkshopDetailEmployers"); // Changed table name
employer.HasKey(x => x.id);
employer.WithOwner().HasForeignKey(x => x.InstitutionContractWorkshopDetailId);
employer.Property(x => x.EmployerId).IsRequired();
employer.HasIndex(x => new { x.InstitutionContractWorkshopDetailId, x.EmployerId })
.IsUnique();
});
});
}
}

View File

@@ -0,0 +1,366 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CompanyManagment.EFCore.Migrations
{
/// <inheritdoc />
public partial class Addnewinstitutioncontractproperties : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "InstitutionContractWorkshopDetailEmployers");
migrationBuilder.DropTable(
name: "InstitutionContractWorkshopDetail");
migrationBuilder.RenameColumn(
name: "Status",
table: "InstitutionContracts",
newName: "VerificationStatus");
migrationBuilder.AddColumn<long>(
name: "InstitutionContractAmendmentId",
table: "InstitutionContractInstallments",
type: "bigint",
nullable: true);
migrationBuilder.CreateTable(
name: "InstitutionContractAmendment",
columns: table => new
{
id = table.Column<long>(type: "bigint", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
InstitutionContractId = table.Column<long>(type: "bigint", nullable: false),
Amount = table.Column<double>(type: "float", nullable: false),
HasInstallment = table.Column<bool>(type: "bit", nullable: false),
CreationDate = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_InstitutionContractAmendment", x => x.id);
table.ForeignKey(
name: "FK_InstitutionContractAmendment_InstitutionContracts_InstitutionContractId",
column: x => x.InstitutionContractId,
principalTable: "InstitutionContracts",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "InstitutionContractWorkshopGroup",
columns: table => new
{
id = table.Column<long>(type: "bigint", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
InstitutionContractId = table.Column<long>(type: "bigint", nullable: false),
LastModifiedDate = table.Column<DateTime>(type: "datetime2", nullable: false),
CreationDate = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_InstitutionContractWorkshopGroup", x => x.id);
table.ForeignKey(
name: "FK_InstitutionContractWorkshopGroup_InstitutionContracts_InstitutionContractId",
column: x => x.InstitutionContractId,
principalTable: "InstitutionContracts",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "InstitutionContractAmendmentChange",
columns: table => new
{
id = table.Column<long>(type: "bigint", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
InstitutionContractAmendmentId = table.Column<long>(type: "bigint", nullable: false),
ChangeType = table.Column<int>(type: "int", nullable: false),
ChangeDateGr = table.Column<DateTime>(type: "datetime2", nullable: false),
HasRollCallPlan = table.Column<bool>(type: "bit", nullable: true),
HasCustomizeCheckoutPlan = table.Column<bool>(type: "bit", nullable: true),
HasContractPlan = table.Column<bool>(type: "bit", nullable: true),
HasContractPlanInPerson = table.Column<bool>(type: "bit", nullable: true),
HasInsurancePlan = table.Column<bool>(type: "bit", nullable: true),
HasInsurancePlanInPerson = table.Column<bool>(type: "bit", nullable: true),
PersonnelCount = table.Column<int>(type: "int", nullable: true),
WorkshopDetailsId = table.Column<long>(type: "bigint", nullable: true),
CreationDate = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_InstitutionContractAmendmentChange", x => x.id);
table.ForeignKey(
name: "FK_InstitutionContractAmendmentChange_InstitutionContractAmendment_InstitutionContractAmendmentId",
column: x => x.InstitutionContractAmendmentId,
principalTable: "InstitutionContractAmendment",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "InstitutionContractCurrentWorkshopDetails",
columns: table => new
{
id = table.Column<long>(type: "bigint", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
WorkshopId = table.Column<long>(type: "bigint", nullable: true),
WorkshopName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true),
HasRollCallPlan = table.Column<bool>(type: "bit", nullable: false),
HasCustomizeCheckoutPlan = table.Column<bool>(type: "bit", nullable: false),
HasContractPlan = table.Column<bool>(type: "bit", nullable: false),
HasContractPlanInPerson = table.Column<bool>(type: "bit", nullable: false),
HasInsurancePlan = table.Column<bool>(type: "bit", nullable: false),
HasInsurancePlanInPerson = table.Column<bool>(type: "bit", nullable: false),
PersonnelCount = table.Column<int>(type: "int", nullable: false),
WorkshopCreated = table.Column<bool>(type: "bit", nullable: false),
InstitutionContractId = table.Column<long>(type: "bigint", nullable: false),
InstitutionContractWorkshopGroupId = table.Column<long>(type: "bigint", nullable: false),
Price = table.Column<double>(type: "float", nullable: false),
CreationDate = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_InstitutionContractCurrentWorkshopDetails", x => x.id);
table.ForeignKey(
name: "FK_InstitutionContractCurrentWorkshopDetails_InstitutionContractWorkshopGroup_InstitutionContractWorkshopGroupId",
column: x => x.InstitutionContractWorkshopGroupId,
principalTable: "InstitutionContractWorkshopGroup",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "InstitutionContractInitialWorkshopDetails",
columns: table => new
{
id = table.Column<long>(type: "bigint", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
WorkshopId = table.Column<long>(type: "bigint", nullable: true),
WorkshopName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true),
HasRollCallPlan = table.Column<bool>(type: "bit", nullable: false),
HasCustomizeCheckoutPlan = table.Column<bool>(type: "bit", nullable: false),
HasContractPlan = table.Column<bool>(type: "bit", nullable: false),
HasContractPlanInPerson = table.Column<bool>(type: "bit", nullable: false),
HasInsurancePlan = table.Column<bool>(type: "bit", nullable: false),
HasInsurancePlanInPerson = table.Column<bool>(type: "bit", nullable: false),
PersonnelCount = table.Column<int>(type: "int", nullable: false),
WorkshopCreated = table.Column<bool>(type: "bit", nullable: false),
InstitutionContractId = table.Column<long>(type: "bigint", nullable: false),
InstitutionContractWorkshopGroupId = table.Column<long>(type: "bigint", nullable: false),
Price = table.Column<double>(type: "float", nullable: false),
CreationDate = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_InstitutionContractInitialWorkshopDetails", x => x.id);
table.ForeignKey(
name: "FK_InstitutionContractInitialWorkshopDetails_InstitutionContractWorkshopGroup_InstitutionContractWorkshopGroupId",
column: x => x.InstitutionContractWorkshopGroupId,
principalTable: "InstitutionContractWorkshopGroup",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "InstitutionContractCurrentWorkshopDetailEmployers",
columns: table => new
{
id = table.Column<long>(type: "bigint", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
InstitutionContractWorkshopDetailId = table.Column<long>(type: "bigint", nullable: false),
EmployerId = table.Column<long>(type: "bigint", nullable: false),
CreationDate = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_InstitutionContractCurrentWorkshopDetailEmployers", x => x.id);
table.ForeignKey(
name: "FK_InstitutionContractCurrentWorkshopDetailEmployers_InstitutionContractCurrentWorkshopDetails_InstitutionContractWorkshopDetai~",
column: x => x.InstitutionContractWorkshopDetailId,
principalTable: "InstitutionContractCurrentWorkshopDetails",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "InstitutionContractInitialWorkshopDetailEmployers",
columns: table => new
{
id = table.Column<long>(type: "bigint", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
InstitutionContractWorkshopDetailId = table.Column<long>(type: "bigint", nullable: false),
EmployerId = table.Column<long>(type: "bigint", nullable: false),
CreationDate = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_InstitutionContractInitialWorkshopDetailEmployers", x => x.id);
table.ForeignKey(
name: "FK_InstitutionContractInitialWorkshopDetailEmployers_InstitutionContractInitialWorkshopDetails_InstitutionContractWorkshopDetai~",
column: x => x.InstitutionContractWorkshopDetailId,
principalTable: "InstitutionContractInitialWorkshopDetails",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_InstitutionContractInstallments_InstitutionContractAmendmentId",
table: "InstitutionContractInstallments",
column: "InstitutionContractAmendmentId");
migrationBuilder.CreateIndex(
name: "IX_InstitutionContractAmendment_InstitutionContractId",
table: "InstitutionContractAmendment",
column: "InstitutionContractId");
migrationBuilder.CreateIndex(
name: "IX_InstitutionContractAmendmentChange_InstitutionContractAmendmentId",
table: "InstitutionContractAmendmentChange",
column: "InstitutionContractAmendmentId");
migrationBuilder.CreateIndex(
name: "IX_InstitutionContractCurrentWorkshopDetailEmployers_InstitutionContractWorkshopDetailId_EmployerId",
table: "InstitutionContractCurrentWorkshopDetailEmployers",
columns: new[] { "InstitutionContractWorkshopDetailId", "EmployerId" },
unique: true);
migrationBuilder.CreateIndex(
name: "IX_InstitutionContractCurrentWorkshopDetails_InstitutionContractWorkshopGroupId",
table: "InstitutionContractCurrentWorkshopDetails",
column: "InstitutionContractWorkshopGroupId");
migrationBuilder.CreateIndex(
name: "IX_InstitutionContractInitialWorkshopDetailEmployers_InstitutionContractWorkshopDetailId_EmployerId",
table: "InstitutionContractInitialWorkshopDetailEmployers",
columns: new[] { "InstitutionContractWorkshopDetailId", "EmployerId" },
unique: true);
migrationBuilder.CreateIndex(
name: "IX_InstitutionContractInitialWorkshopDetails_InstitutionContractWorkshopGroupId",
table: "InstitutionContractInitialWorkshopDetails",
column: "InstitutionContractWorkshopGroupId");
migrationBuilder.CreateIndex(
name: "IX_InstitutionContractWorkshopGroup_InstitutionContractId",
table: "InstitutionContractWorkshopGroup",
column: "InstitutionContractId",
unique: true);
migrationBuilder.AddForeignKey(
name: "FK_InstitutionContractInstallments_InstitutionContractAmendment_InstitutionContractAmendmentId",
table: "InstitutionContractInstallments",
column: "InstitutionContractAmendmentId",
principalTable: "InstitutionContractAmendment",
principalColumn: "id");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_InstitutionContractInstallments_InstitutionContractAmendment_InstitutionContractAmendmentId",
table: "InstitutionContractInstallments");
migrationBuilder.DropTable(
name: "InstitutionContractAmendmentChange");
migrationBuilder.DropTable(
name: "InstitutionContractCurrentWorkshopDetailEmployers");
migrationBuilder.DropTable(
name: "InstitutionContractInitialWorkshopDetailEmployers");
migrationBuilder.DropTable(
name: "InstitutionContractAmendment");
migrationBuilder.DropTable(
name: "InstitutionContractCurrentWorkshopDetails");
migrationBuilder.DropTable(
name: "InstitutionContractInitialWorkshopDetails");
migrationBuilder.DropTable(
name: "InstitutionContractWorkshopGroup");
migrationBuilder.DropIndex(
name: "IX_InstitutionContractInstallments_InstitutionContractAmendmentId",
table: "InstitutionContractInstallments");
migrationBuilder.DropColumn(
name: "InstitutionContractAmendmentId",
table: "InstitutionContractInstallments");
migrationBuilder.RenameColumn(
name: "VerificationStatus",
table: "InstitutionContracts",
newName: "Status");
migrationBuilder.CreateTable(
name: "InstitutionContractWorkshopDetail",
columns: table => new
{
id = table.Column<long>(type: "bigint", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
InstitutionContractId = table.Column<long>(type: "bigint", nullable: false),
CreationDate = table.Column<DateTime>(type: "datetime2", nullable: false),
HasContractPlan = table.Column<bool>(type: "bit", nullable: false),
HasContractPlanInPerson = table.Column<bool>(type: "bit", nullable: false),
HasCustomizeCheckoutPlan = table.Column<bool>(type: "bit", nullable: false),
HasInsurancePlan = table.Column<bool>(type: "bit", nullable: false),
HasInsurancePlanInPerson = table.Column<bool>(type: "bit", nullable: false),
HasRollCallPlan = table.Column<bool>(type: "bit", nullable: false),
PersonnelCount = table.Column<int>(type: "int", nullable: false),
Price = table.Column<double>(type: "float", nullable: false),
WorkshopCreated = table.Column<bool>(type: "bit", nullable: false),
WorkshopId = table.Column<long>(type: "bigint", nullable: true),
WorkshopName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_InstitutionContractWorkshopDetail", x => x.id);
table.ForeignKey(
name: "FK_InstitutionContractWorkshopDetail_InstitutionContracts_InstitutionContractId",
column: x => x.InstitutionContractId,
principalTable: "InstitutionContracts",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "InstitutionContractWorkshopDetailEmployers",
columns: table => new
{
id = table.Column<long>(type: "bigint", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
CreationDate = table.Column<DateTime>(type: "datetime2", nullable: false),
EmployerId = table.Column<long>(type: "bigint", nullable: false),
InstitutionContractWorkshopDetailId = table.Column<long>(type: "bigint", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_InstitutionContractWorkshopDetailEmployers", x => x.id);
table.ForeignKey(
name: "FK_InstitutionContractWorkshopDetailEmployers_InstitutionContractWorkshopDetail_InstitutionContractWorkshopDetailId",
column: x => x.InstitutionContractWorkshopDetailId,
principalTable: "InstitutionContractWorkshopDetail",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_InstitutionContractWorkshopDetail_InstitutionContractId",
table: "InstitutionContractWorkshopDetail",
column: "InstitutionContractId");
migrationBuilder.CreateIndex(
name: "IX_InstitutionContractWorkshopDetailEmployers_InstitutionContractWorkshopDetailId_EmployerId",
table: "InstitutionContractWorkshopDetailEmployers",
columns: new[] { "InstitutionContractWorkshopDetailId", "EmployerId" },
unique: true);
}
}
}

View File

@@ -0,0 +1,398 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CompanyManagment.EFCore.Migrations
{
/// <inheritdoc />
public partial class AddWorkshopservicesForInstitutionWorkshopDetails : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_InstitutionContractCurrentWorkshopDetails_InstitutionContractWorkshopGroup_InstitutionContractWorkshopGroupId",
table: "InstitutionContractCurrentWorkshopDetails");
migrationBuilder.DropForeignKey(
name: "FK_InstitutionContractInitialWorkshopDetails_InstitutionContractWorkshopGroup_InstitutionContractWorkshopGroupId",
table: "InstitutionContractInitialWorkshopDetails");
migrationBuilder.DropForeignKey(
name: "FK_InstitutionContractWorkshopGroup_InstitutionContracts_InstitutionContractId",
table: "InstitutionContractWorkshopGroup");
migrationBuilder.DropPrimaryKey(
name: "PK_InstitutionContractWorkshopGroup",
table: "InstitutionContractWorkshopGroup");
migrationBuilder.DropColumn(
name: "HasContractPlan",
table: "InstitutionContractInitialWorkshopDetails");
migrationBuilder.DropColumn(
name: "HasContractPlanInPerson",
table: "InstitutionContractInitialWorkshopDetails");
migrationBuilder.DropColumn(
name: "HasCustomizeCheckoutPlan",
table: "InstitutionContractInitialWorkshopDetails");
migrationBuilder.DropColumn(
name: "HasInsurancePlan",
table: "InstitutionContractInitialWorkshopDetails");
migrationBuilder.DropColumn(
name: "HasInsurancePlanInPerson",
table: "InstitutionContractInitialWorkshopDetails");
migrationBuilder.DropColumn(
name: "HasRollCallPlan",
table: "InstitutionContractInitialWorkshopDetails");
migrationBuilder.DropColumn(
name: "HasContractPlan",
table: "InstitutionContractCurrentWorkshopDetails");
migrationBuilder.DropColumn(
name: "HasContractPlanInPerson",
table: "InstitutionContractCurrentWorkshopDetails");
migrationBuilder.DropColumn(
name: "HasCustomizeCheckoutPlan",
table: "InstitutionContractCurrentWorkshopDetails");
migrationBuilder.DropColumn(
name: "HasInsurancePlan",
table: "InstitutionContractCurrentWorkshopDetails");
migrationBuilder.DropColumn(
name: "HasInsurancePlanInPerson",
table: "InstitutionContractCurrentWorkshopDetails");
migrationBuilder.DropColumn(
name: "HasRollCallPlan",
table: "InstitutionContractCurrentWorkshopDetails");
migrationBuilder.RenameTable(
name: "InstitutionContractWorkshopGroup",
newName: "InstitutionContractWorkshopGroups");
migrationBuilder.RenameIndex(
name: "IX_InstitutionContractWorkshopGroup_InstitutionContractId",
table: "InstitutionContractWorkshopGroups",
newName: "IX_InstitutionContractWorkshopGroups_InstitutionContractId");
migrationBuilder.AddColumn<bool>(
name: "Services_Contract",
table: "InstitutionContractInitialWorkshopDetails",
type: "bit",
nullable: true);
migrationBuilder.AddColumn<bool>(
name: "Services_ContractInPerson",
table: "InstitutionContractInitialWorkshopDetails",
type: "bit",
nullable: true);
migrationBuilder.AddColumn<bool>(
name: "Services_CustomizeCheckout",
table: "InstitutionContractInitialWorkshopDetails",
type: "bit",
nullable: true);
migrationBuilder.AddColumn<bool>(
name: "Services_Insurance",
table: "InstitutionContractInitialWorkshopDetails",
type: "bit",
nullable: true);
migrationBuilder.AddColumn<bool>(
name: "Services_InsuranceInPerson",
table: "InstitutionContractInitialWorkshopDetails",
type: "bit",
nullable: true);
migrationBuilder.AddColumn<bool>(
name: "Services_RollCall",
table: "InstitutionContractInitialWorkshopDetails",
type: "bit",
nullable: true);
migrationBuilder.AddColumn<bool>(
name: "Services_RollCallInPerson",
table: "InstitutionContractInitialWorkshopDetails",
type: "bit",
nullable: true);
migrationBuilder.AddColumn<bool>(
name: "Services_Contract",
table: "InstitutionContractCurrentWorkshopDetails",
type: "bit",
nullable: true);
migrationBuilder.AddColumn<bool>(
name: "Services_ContractInPerson",
table: "InstitutionContractCurrentWorkshopDetails",
type: "bit",
nullable: true);
migrationBuilder.AddColumn<bool>(
name: "Services_CustomizeCheckout",
table: "InstitutionContractCurrentWorkshopDetails",
type: "bit",
nullable: true);
migrationBuilder.AddColumn<bool>(
name: "Services_Insurance",
table: "InstitutionContractCurrentWorkshopDetails",
type: "bit",
nullable: true);
migrationBuilder.AddColumn<bool>(
name: "Services_InsuranceInPerson",
table: "InstitutionContractCurrentWorkshopDetails",
type: "bit",
nullable: true);
migrationBuilder.AddColumn<bool>(
name: "Services_RollCall",
table: "InstitutionContractCurrentWorkshopDetails",
type: "bit",
nullable: true);
migrationBuilder.AddColumn<bool>(
name: "Services_RollCallInPerson",
table: "InstitutionContractCurrentWorkshopDetails",
type: "bit",
nullable: true);
migrationBuilder.AddPrimaryKey(
name: "PK_InstitutionContractWorkshopGroups",
table: "InstitutionContractWorkshopGroups",
column: "id");
migrationBuilder.AddForeignKey(
name: "FK_InstitutionContractCurrentWorkshopDetails_InstitutionContractWorkshopGroups_InstitutionContractWorkshopGroupId",
table: "InstitutionContractCurrentWorkshopDetails",
column: "InstitutionContractWorkshopGroupId",
principalTable: "InstitutionContractWorkshopGroups",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_InstitutionContractInitialWorkshopDetails_InstitutionContractWorkshopGroups_InstitutionContractWorkshopGroupId",
table: "InstitutionContractInitialWorkshopDetails",
column: "InstitutionContractWorkshopGroupId",
principalTable: "InstitutionContractWorkshopGroups",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_InstitutionContractWorkshopGroups_InstitutionContracts_InstitutionContractId",
table: "InstitutionContractWorkshopGroups",
column: "InstitutionContractId",
principalTable: "InstitutionContracts",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_InstitutionContractCurrentWorkshopDetails_InstitutionContractWorkshopGroups_InstitutionContractWorkshopGroupId",
table: "InstitutionContractCurrentWorkshopDetails");
migrationBuilder.DropForeignKey(
name: "FK_InstitutionContractInitialWorkshopDetails_InstitutionContractWorkshopGroups_InstitutionContractWorkshopGroupId",
table: "InstitutionContractInitialWorkshopDetails");
migrationBuilder.DropForeignKey(
name: "FK_InstitutionContractWorkshopGroups_InstitutionContracts_InstitutionContractId",
table: "InstitutionContractWorkshopGroups");
migrationBuilder.DropPrimaryKey(
name: "PK_InstitutionContractWorkshopGroups",
table: "InstitutionContractWorkshopGroups");
migrationBuilder.DropColumn(
name: "Services_Contract",
table: "InstitutionContractInitialWorkshopDetails");
migrationBuilder.DropColumn(
name: "Services_ContractInPerson",
table: "InstitutionContractInitialWorkshopDetails");
migrationBuilder.DropColumn(
name: "Services_CustomizeCheckout",
table: "InstitutionContractInitialWorkshopDetails");
migrationBuilder.DropColumn(
name: "Services_Insurance",
table: "InstitutionContractInitialWorkshopDetails");
migrationBuilder.DropColumn(
name: "Services_InsuranceInPerson",
table: "InstitutionContractInitialWorkshopDetails");
migrationBuilder.DropColumn(
name: "Services_RollCall",
table: "InstitutionContractInitialWorkshopDetails");
migrationBuilder.DropColumn(
name: "Services_RollCallInPerson",
table: "InstitutionContractInitialWorkshopDetails");
migrationBuilder.DropColumn(
name: "Services_Contract",
table: "InstitutionContractCurrentWorkshopDetails");
migrationBuilder.DropColumn(
name: "Services_ContractInPerson",
table: "InstitutionContractCurrentWorkshopDetails");
migrationBuilder.DropColumn(
name: "Services_CustomizeCheckout",
table: "InstitutionContractCurrentWorkshopDetails");
migrationBuilder.DropColumn(
name: "Services_Insurance",
table: "InstitutionContractCurrentWorkshopDetails");
migrationBuilder.DropColumn(
name: "Services_InsuranceInPerson",
table: "InstitutionContractCurrentWorkshopDetails");
migrationBuilder.DropColumn(
name: "Services_RollCall",
table: "InstitutionContractCurrentWorkshopDetails");
migrationBuilder.DropColumn(
name: "Services_RollCallInPerson",
table: "InstitutionContractCurrentWorkshopDetails");
migrationBuilder.RenameTable(
name: "InstitutionContractWorkshopGroups",
newName: "InstitutionContractWorkshopGroup");
migrationBuilder.RenameIndex(
name: "IX_InstitutionContractWorkshopGroups_InstitutionContractId",
table: "InstitutionContractWorkshopGroup",
newName: "IX_InstitutionContractWorkshopGroup_InstitutionContractId");
migrationBuilder.AddColumn<bool>(
name: "HasContractPlan",
table: "InstitutionContractInitialWorkshopDetails",
type: "bit",
nullable: false,
defaultValue: false);
migrationBuilder.AddColumn<bool>(
name: "HasContractPlanInPerson",
table: "InstitutionContractInitialWorkshopDetails",
type: "bit",
nullable: false,
defaultValue: false);
migrationBuilder.AddColumn<bool>(
name: "HasCustomizeCheckoutPlan",
table: "InstitutionContractInitialWorkshopDetails",
type: "bit",
nullable: false,
defaultValue: false);
migrationBuilder.AddColumn<bool>(
name: "HasInsurancePlan",
table: "InstitutionContractInitialWorkshopDetails",
type: "bit",
nullable: false,
defaultValue: false);
migrationBuilder.AddColumn<bool>(
name: "HasInsurancePlanInPerson",
table: "InstitutionContractInitialWorkshopDetails",
type: "bit",
nullable: false,
defaultValue: false);
migrationBuilder.AddColumn<bool>(
name: "HasRollCallPlan",
table: "InstitutionContractInitialWorkshopDetails",
type: "bit",
nullable: false,
defaultValue: false);
migrationBuilder.AddColumn<bool>(
name: "HasContractPlan",
table: "InstitutionContractCurrentWorkshopDetails",
type: "bit",
nullable: false,
defaultValue: false);
migrationBuilder.AddColumn<bool>(
name: "HasContractPlanInPerson",
table: "InstitutionContractCurrentWorkshopDetails",
type: "bit",
nullable: false,
defaultValue: false);
migrationBuilder.AddColumn<bool>(
name: "HasCustomizeCheckoutPlan",
table: "InstitutionContractCurrentWorkshopDetails",
type: "bit",
nullable: false,
defaultValue: false);
migrationBuilder.AddColumn<bool>(
name: "HasInsurancePlan",
table: "InstitutionContractCurrentWorkshopDetails",
type: "bit",
nullable: false,
defaultValue: false);
migrationBuilder.AddColumn<bool>(
name: "HasInsurancePlanInPerson",
table: "InstitutionContractCurrentWorkshopDetails",
type: "bit",
nullable: false,
defaultValue: false);
migrationBuilder.AddColumn<bool>(
name: "HasRollCallPlan",
table: "InstitutionContractCurrentWorkshopDetails",
type: "bit",
nullable: false,
defaultValue: false);
migrationBuilder.AddPrimaryKey(
name: "PK_InstitutionContractWorkshopGroup",
table: "InstitutionContractWorkshopGroup",
column: "id");
migrationBuilder.AddForeignKey(
name: "FK_InstitutionContractCurrentWorkshopDetails_InstitutionContractWorkshopGroup_InstitutionContractWorkshopGroupId",
table: "InstitutionContractCurrentWorkshopDetails",
column: "InstitutionContractWorkshopGroupId",
principalTable: "InstitutionContractWorkshopGroup",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_InstitutionContractInitialWorkshopDetails_InstitutionContractWorkshopGroup_InstitutionContractWorkshopGroupId",
table: "InstitutionContractInitialWorkshopDetails",
column: "InstitutionContractWorkshopGroupId",
principalTable: "InstitutionContractWorkshopGroup",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_InstitutionContractWorkshopGroup_InstitutionContracts_InstitutionContractId",
table: "InstitutionContractWorkshopGroup",
column: "InstitutionContractId",
principalTable: "InstitutionContracts",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
}
}
}

View File

@@ -3124,11 +3124,6 @@ namespace CompanyManagment.EFCore.Migrations
.HasMaxLength(20)
.HasColumnType("nvarchar(20)");
b.Property<string>("Status")
.IsRequired()
.HasMaxLength(122)
.HasColumnType("nvarchar(122)");
b.Property<double>("TotalAmount")
.HasColumnType("float");
@@ -3139,6 +3134,11 @@ namespace CompanyManagment.EFCore.Migrations
b.Property<double>("ValueAddedTax")
.HasColumnType("float");
b.Property<string>("VerificationStatus")
.IsRequired()
.HasMaxLength(122)
.HasColumnType("nvarchar(122)");
b.Property<string>("WorkshopManualCount")
.HasMaxLength(5)
.HasColumnType("nvarchar(5)");
@@ -3148,6 +3148,84 @@ namespace CompanyManagment.EFCore.Migrations
b.ToTable("InstitutionContracts", (string)null);
});
modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractAmendment", b =>
{
b.Property<long>("id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("id"));
b.Property<double>("Amount")
.HasColumnType("float");
b.Property<DateTime>("CreationDate")
.HasColumnType("datetime2");
b.Property<bool>("HasInstallment")
.HasColumnType("bit");
b.Property<long>("InstitutionContractId")
.HasColumnType("bigint");
b.HasKey("id");
b.HasIndex("InstitutionContractId");
b.ToTable("InstitutionContractAmendment");
});
modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractAmendmentChange", b =>
{
b.Property<long>("id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("id"));
b.Property<DateTime>("ChangeDateGr")
.HasColumnType("datetime2");
b.Property<int>("ChangeType")
.HasColumnType("int");
b.Property<DateTime>("CreationDate")
.HasColumnType("datetime2");
b.Property<bool?>("HasContractPlan")
.HasColumnType("bit");
b.Property<bool?>("HasContractPlanInPerson")
.HasColumnType("bit");
b.Property<bool?>("HasCustomizeCheckoutPlan")
.HasColumnType("bit");
b.Property<bool?>("HasInsurancePlan")
.HasColumnType("bit");
b.Property<bool?>("HasInsurancePlanInPerson")
.HasColumnType("bit");
b.Property<bool?>("HasRollCallPlan")
.HasColumnType("bit");
b.Property<long>("InstitutionContractAmendmentId")
.HasColumnType("bigint");
b.Property<int?>("PersonnelCount")
.HasColumnType("int");
b.Property<long?>("WorkshopDetailsId")
.HasColumnType("bigint");
b.HasKey("id");
b.HasIndex("InstitutionContractAmendmentId");
b.ToTable("InstitutionContractAmendmentChange");
});
modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractInstallment", b =>
{
b.Property<long>("Id")
@@ -3171,17 +3249,22 @@ namespace CompanyManagment.EFCore.Migrations
b.Property<DateTime>("InstallmentDateGr")
.HasColumnType("datetime2");
b.Property<long?>("InstitutionContractAmendmentId")
.HasColumnType("bigint");
b.Property<long>("InstitutionContractId")
.HasColumnType("bigint");
b.HasKey("Id");
b.HasIndex("InstitutionContractAmendmentId");
b.HasIndex("InstitutionContractId");
b.ToTable("InstitutionContractInstallments", (string)null);
});
modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopDetail", b =>
modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopGroup", b =>
{
b.Property<long>("id")
.ValueGeneratedOnAdd()
@@ -3192,48 +3275,18 @@ namespace CompanyManagment.EFCore.Migrations
b.Property<DateTime>("CreationDate")
.HasColumnType("datetime2");
b.Property<bool>("HasContractPlan")
.HasColumnType("bit");
b.Property<bool>("HasContractPlanInPerson")
.HasColumnType("bit");
b.Property<bool>("HasCustomizeCheckoutPlan")
.HasColumnType("bit");
b.Property<bool>("HasInsurancePlan")
.HasColumnType("bit");
b.Property<bool>("HasInsurancePlanInPerson")
.HasColumnType("bit");
b.Property<bool>("HasRollCallPlan")
.HasColumnType("bit");
b.Property<long>("InstitutionContractId")
.HasColumnType("bigint");
b.Property<int>("PersonnelCount")
.HasColumnType("int");
b.Property<double>("Price")
.HasColumnType("float");
b.Property<bool>("WorkshopCreated")
.HasColumnType("bit");
b.Property<long?>("WorkshopId")
.HasColumnType("bigint");
b.Property<string>("WorkshopName")
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property<DateTime>("LastModifiedDate")
.HasColumnType("datetime2");
b.HasKey("id");
b.HasIndex("InstitutionContractId");
b.HasIndex("InstitutionContractId")
.IsUnique();
b.ToTable("InstitutionContractWorkshopDetail", (string)null);
b.ToTable("InstitutionContractWorkshopGroups");
});
modelBuilder.Entity("Company.Domain.InstitutionContractContactInfoAgg.InstitutionContractContactInfo", b =>
@@ -9638,8 +9691,32 @@ namespace CompanyManagment.EFCore.Migrations
b.Navigation("Holidayss");
});
modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractAmendment", b =>
{
b.HasOne("Company.Domain.InstitutionContractAgg.InstitutionContract", null)
.WithMany("Amendments")
.HasForeignKey("InstitutionContractId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractAmendmentChange", b =>
{
b.HasOne("Company.Domain.InstitutionContractAgg.InstitutionContractAmendment", "InstitutionContractAmendment")
.WithMany("AmendmentChanges")
.HasForeignKey("InstitutionContractAmendmentId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("InstitutionContractAmendment");
});
modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractInstallment", b =>
{
b.HasOne("Company.Domain.InstitutionContractAgg.InstitutionContractAmendment", "InstitutionContractAmendment")
.WithMany("Installments")
.HasForeignKey("InstitutionContractAmendmentId");
b.HasOne("Company.Domain.InstitutionContractAgg.InstitutionContract", "InstitutionContract")
.WithMany("Installments")
.HasForeignKey("InstitutionContractId")
@@ -9647,17 +9724,19 @@ namespace CompanyManagment.EFCore.Migrations
.IsRequired();
b.Navigation("InstitutionContract");
b.Navigation("InstitutionContractAmendment");
});
modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopDetail", b =>
modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopGroup", b =>
{
b.HasOne("Company.Domain.InstitutionContractAgg.InstitutionContract", "InstitutionContract")
.WithMany("WorkshopDetails")
.HasForeignKey("InstitutionContractId")
.WithOne("WorkshopGroup")
.HasForeignKey("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopGroup", "InstitutionContractId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.OwnsMany("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopDetailEmployer", "Employers", b1 =>
b.OwnsMany("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopDetail", "CurrentWorkshopDetails", b1 =>
{
b1.Property<long>("id")
.ValueGeneratedOnAdd()
@@ -9668,24 +9747,216 @@ namespace CompanyManagment.EFCore.Migrations
b1.Property<DateTime>("CreationDate")
.HasColumnType("datetime2");
b1.Property<long>("EmployerId")
b1.Property<long>("InstitutionContractId")
.HasColumnType("bigint");
b1.Property<long>("InstitutionContractWorkshopDetailId")
b1.Property<long>("InstitutionContractWorkshopGroupId")
.HasColumnType("bigint");
b1.Property<int>("PersonnelCount")
.HasColumnType("int");
b1.Property<double>("Price")
.HasColumnType("float");
b1.Property<bool>("WorkshopCreated")
.HasColumnType("bit");
b1.Property<long?>("WorkshopId")
.HasColumnType("bigint");
b1.Property<string>("WorkshopName")
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b1.HasKey("id");
b1.HasIndex("InstitutionContractWorkshopDetailId", "EmployerId")
.IsUnique();
b1.HasIndex("InstitutionContractWorkshopGroupId");
b1.ToTable("InstitutionContractWorkshopDetailEmployers", (string)null);
b1.ToTable("InstitutionContractCurrentWorkshopDetails", (string)null);
b1.WithOwner()
.HasForeignKey("InstitutionContractWorkshopDetailId");
.HasForeignKey("InstitutionContractWorkshopGroupId");
b1.OwnsMany("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopDetailEmployer", "Employers", b2 =>
{
b2.Property<long>("id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property<long>("id"));
b2.Property<DateTime>("CreationDate")
.HasColumnType("datetime2");
b2.Property<long>("EmployerId")
.HasColumnType("bigint");
b2.Property<long>("InstitutionContractWorkshopDetailId")
.HasColumnType("bigint");
b2.HasKey("id");
b2.HasIndex("InstitutionContractWorkshopDetailId", "EmployerId")
.IsUnique();
b2.ToTable("InstitutionContractCurrentWorkshopDetailEmployers", (string)null);
b2.WithOwner()
.HasForeignKey("InstitutionContractWorkshopDetailId");
});
b1.OwnsOne("CompanyManagment.App.Contracts.InstitutionContract.WorkshopServices", "Services", b2 =>
{
b2.Property<long>("InstitutionContractWorkshopDetailid")
.HasColumnType("bigint");
b2.Property<bool>("Contract")
.HasColumnType("bit");
b2.Property<bool>("ContractInPerson")
.HasColumnType("bit");
b2.Property<bool>("CustomizeCheckout")
.HasColumnType("bit");
b2.Property<bool>("Insurance")
.HasColumnType("bit");
b2.Property<bool>("InsuranceInPerson")
.HasColumnType("bit");
b2.Property<bool>("RollCall")
.HasColumnType("bit");
b2.Property<bool>("RollCallInPerson")
.HasColumnType("bit");
b2.HasKey("InstitutionContractWorkshopDetailid");
b2.ToTable("InstitutionContractCurrentWorkshopDetails");
b2.WithOwner()
.HasForeignKey("InstitutionContractWorkshopDetailid");
});
b1.Navigation("Employers");
b1.Navigation("Services");
});
b.Navigation("Employers");
b.OwnsMany("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopDetail", "InitialWorkshopDetails", b1 =>
{
b1.Property<long>("id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property<long>("id"));
b1.Property<DateTime>("CreationDate")
.HasColumnType("datetime2");
b1.Property<long>("InstitutionContractId")
.HasColumnType("bigint");
b1.Property<long>("InstitutionContractWorkshopGroupId")
.HasColumnType("bigint");
b1.Property<int>("PersonnelCount")
.HasColumnType("int");
b1.Property<double>("Price")
.HasColumnType("float");
b1.Property<bool>("WorkshopCreated")
.HasColumnType("bit");
b1.Property<long?>("WorkshopId")
.HasColumnType("bigint");
b1.Property<string>("WorkshopName")
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b1.HasKey("id");
b1.HasIndex("InstitutionContractWorkshopGroupId");
b1.ToTable("InstitutionContractInitialWorkshopDetails", (string)null);
b1.WithOwner()
.HasForeignKey("InstitutionContractWorkshopGroupId");
b1.OwnsMany("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopDetailEmployer", "Employers", b2 =>
{
b2.Property<long>("id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property<long>("id"));
b2.Property<DateTime>("CreationDate")
.HasColumnType("datetime2");
b2.Property<long>("EmployerId")
.HasColumnType("bigint");
b2.Property<long>("InstitutionContractWorkshopDetailId")
.HasColumnType("bigint");
b2.HasKey("id");
b2.HasIndex("InstitutionContractWorkshopDetailId", "EmployerId")
.IsUnique();
b2.ToTable("InstitutionContractInitialWorkshopDetailEmployers", (string)null);
b2.WithOwner()
.HasForeignKey("InstitutionContractWorkshopDetailId");
});
b1.OwnsOne("CompanyManagment.App.Contracts.InstitutionContract.WorkshopServices", "Services", b2 =>
{
b2.Property<long>("InstitutionContractWorkshopDetailid")
.HasColumnType("bigint");
b2.Property<bool>("Contract")
.HasColumnType("bit");
b2.Property<bool>("ContractInPerson")
.HasColumnType("bit");
b2.Property<bool>("CustomizeCheckout")
.HasColumnType("bit");
b2.Property<bool>("Insurance")
.HasColumnType("bit");
b2.Property<bool>("InsuranceInPerson")
.HasColumnType("bit");
b2.Property<bool>("RollCall")
.HasColumnType("bit");
b2.Property<bool>("RollCallInPerson")
.HasColumnType("bit");
b2.HasKey("InstitutionContractWorkshopDetailid");
b2.ToTable("InstitutionContractInitialWorkshopDetails");
b2.WithOwner()
.HasForeignKey("InstitutionContractWorkshopDetailid");
});
b1.Navigation("Employers");
b1.Navigation("Services");
});
b.Navigation("CurrentWorkshopDetails");
b.Navigation("InitialWorkshopDetails");
b.Navigation("InstitutionContract");
});
@@ -10401,11 +10672,20 @@ namespace CompanyManagment.EFCore.Migrations
modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContract", b =>
{
b.Navigation("Amendments");
b.Navigation("ContactInfoList");
b.Navigation("Installments");
b.Navigation("WorkshopDetails");
b.Navigation("WorkshopGroup");
});
modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractAmendment", b =>
{
b.Navigation("AmendmentChanges");
b.Navigation("Installments");
});
modelBuilder.Entity("Company.Domain.InsurancJobAgg.InsuranceJob", b =>

View File

@@ -1016,6 +1016,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
InstitutionContractListSearchModel searchModel)
{
var query = _context.InstitutionContractSet
.Include(x=>x.WorkshopGroup)
.Include(x => x.ContactInfoList);
var now = DateTime.Today;
@@ -1223,6 +1224,30 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
var archiveCode = minArchiveCode == 10000000 ? 0 : minArchiveCode;
var status = Enum.Parse<InstitutionContractListStatus>(x.StatusPriority.ToString());
var workshopDetails = x.contract.WorkshopGroup.CurrentWorkshopDetails.Select(w=>
{
Workshop workshopSelected = null;
if (w.WorkshopId != null && workshops.Select(ww => ww.id).Contains(w.WorkshopId.Value))
{
workshopSelected = workshops.First(ww => ww.id == w.WorkshopId.Value);
}
return new InstitutionContractListWorkshop()
{
EmployeeCount = w.PersonnelCount,
WorkshopName = workshopSelected?.WorkshopName??w.WorkshopName,
WorkshopServices = new WorkshopServicesViewModel()
{
Contract =w.Services.Contract,
ContractInPerson = w.Services.ContractInPerson,
CustomizeCheckout = w.Services.CustomizeCheckout,
Insurance = w.Services.Insurance,
InsuranceInPerson = w.Services.InsuranceInPerson,
RollCall = w.Services.RollCall,
RollCallInPerson = w.Services.RollCallInPerson
}
};
}).ToList();
return new GetInstitutionContractListItemsViewModel()
{
ContractAmount = x.contract.ContractAmount,
@@ -1244,12 +1269,13 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
ListStatus = status,
IsExpired = x.contract.ContractEndGr <= endThisMontGr,
ContractingPartyId = x.contractingParty.id,
Workshops = workshopDetails
};
}).ToList()
};
return res;
}
public async Task<GetInstitutionContractListStatsViewModel> GetListStats(
InstitutionContractListSearchModel searchModel)
{
@@ -1443,8 +1469,8 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
public async Task<List<RegistrationWorkflowMainListViewModel>> RegistrationWorkflowMainList()
{
return await _context.InstitutionContractSet.Where(x => x.Status == InstitutionContractStatus.Incomplete)
.Include(x => x.WorkshopDetails)
return await _context.InstitutionContractSet.Where(x => x.VerificationStatus == InstitutionContractVerificationStatus.Verified)
.Include(x => x.WorkshopGroup)
.Join(_context.PersonalContractingParties,
institutionContract => institutionContract.ContractingPartyId,
contractingParty => contractingParty.id,
@@ -1455,9 +1481,9 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
ContractingPartyFullName = $"{x.contractingParty.FName} {x.contractingParty.LName}",
Phone = x.contractingParty.Phone,
Amount = x.institutionContract.TotalAmount,
DoneWorkshops = x.institutionContract.WorkshopDetails.Count(w => w.WorkshopCreated),
TotalWorkshops = x.institutionContract.WorkshopDetails.Count(),
UnDoneWorkshops = x.institutionContract.WorkshopDetails.Count(w => !w.WorkshopCreated),
DoneWorkshops = x.institutionContract.WorkshopGroup.InitialWorkshopDetails.Count(w => w.WorkshopCreated),
TotalWorkshops = x.institutionContract.WorkshopGroup.InitialWorkshopDetails.Count(),
UnDoneWorkshops = x.institutionContract.WorkshopGroup.InitialWorkshopDetails.Count(w => !w.WorkshopCreated),
ContractingPartyId = x.contractingParty.id
}).ToListAsync();
}
@@ -1471,14 +1497,14 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
{
// دریافت قرارداد نهاد همراه با جزئیات کارگاه‌ها
var institutionContract = await _context.InstitutionContractSet
.Include(x => x.WorkshopDetails)
.Include(x => x.WorkshopGroup)
.FirstOrDefaultAsync(x => x.id == institutionContractId);
if (institutionContract == null)
throw new NotFoundException("قرارداد مؤسسه یافت نشد");
// استخراج شناسه‌های کارگاه‌هایی که ایجاد شده‌اند
var workshopIds = institutionContract.WorkshopDetails
var workshopIds = institutionContract.WorkshopGroup.InitialWorkshopDetails
.Where(x => x.WorkshopId != null)
.Select(x => x.WorkshopId.Value)
.ToList();
@@ -1489,7 +1515,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
.ToListAsync();
// استخراج تمامی شناسه‌های کارفرمایان از جزئیات کارگاه‌ها
var allEmployerIds = institutionContract.WorkshopDetails
var allEmployerIds = institutionContract.WorkshopGroup.InitialWorkshopDetails
.SelectMany(x => x.Employers.Select(e => e.EmployerId))
.Distinct()
.ToList();
@@ -1502,7 +1528,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
.ToDictionary(e => e.id, e => e);
// ساخت نتیجه نهایی با استفاده از داده‌های از پیش بارگذاری شده
var items = institutionContract.WorkshopDetails.Select(workshopDetail =>
var items = institutionContract.WorkshopGroup.InitialWorkshopDetails.Select(workshopDetail =>
{
// پیدا کردن کارگاه مرتبط
var workshop = workshops.FirstOrDefault(w => w.id == workshopDetail.WorkshopId);
@@ -1590,29 +1616,31 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
public async Task<InstitutionContractWorkshopDetail> GetInstitutionWorkshopDetails(
long institutionWorkshopDetailsId)
{
return await _context.InstitutionContractWorkshopDetails.FirstOrDefaultAsync(x =>
x.id == institutionWorkshopDetailsId);
var group= await _context.InstitutionContractWorkshopGroups
.FirstOrDefaultAsync(x => x.CurrentWorkshopDetails.Any(a=>a.id == institutionWorkshopDetailsId));
return group.CurrentWorkshopDetails.FirstOrDefault(x => x.id == institutionWorkshopDetailsId);
}
public async Task<InstitutionContract> GetIncludeWorkshopDetailsAsync(long institutionContractId)
{
return await _context.InstitutionContractSet
.Include(x => x.WorkshopDetails)
.Include(x => x.WorkshopGroup)
.FirstOrDefaultAsync(x => x.id == institutionContractId);
}
public void UpdateStatusIfNeeded(long institutionContractId)
{
var institutionContract = _context.InstitutionContractSet
.Include(x => x.WorkshopDetails)
.Include(x => x.WorkshopGroup)
.FirstOrDefault(x => x.id == institutionContractId);
if (institutionContract == null)
throw new NotFoundException("قرارداد مؤسسه یافت نشد");
if (institutionContract.Status == InstitutionContractStatus.Completed)
if (institutionContract.VerificationStatus == InstitutionContractVerificationStatus.Verified)
return;
if (institutionContract.WorkshopDetails.All(x => x.WorkshopCreated))
institutionContract.Complete();
if (institutionContract.WorkshopGroup.InitialWorkshopDetails.All(x => x.WorkshopCreated))
institutionContract.Verified();
_context.SaveChanges();
}

View File

@@ -14,7 +14,6 @@
//server
"MesbahDbServer": "Data Source=171.22.24.15;Initial Catalog=mesbah_db;Persist Security Info=False;User ID=ir_db;Password=R2rNp[170]18[3019]#@ATt;TrustServerCertificate=true;",
//local
"MesbahDb": "Data Source=.;Initial Catalog=mesbah_db;Integrated Security=True;TrustServerCertificate=true;",