Compare commits

..

11 Commits

Author SHA1 Message Date
69f4819bf6 Add Migration For Reward checkout 2026-01-24 16:58:45 +03:30
gozareshgir
1257e15b62 changeMapping 2026-01-24 16:45:10 +03:30
gozareshgir
331fb24a99 CheckoutReward 2026-01-24 16:29:01 +03:30
900b4b3f4d add convention for print InstitutionContract for pending data 2026-01-22 12:58:43 +03:30
bdc6f95af8 fix activate all after create new 2026-01-22 12:26:13 +03:30
gozareshgir
21302803b6 insurance WorkingDays bug Fixed 2026-01-19 12:32:51 +03:30
gozareshgir
8ec13ffae1 Merge branch 'master' of https://pm.gozareshgir.ir/gozareshgir/OriginalGozareshgir 2026-01-14 14:40:50 +03:30
gozareshgir
5508d4e88f Checkout Compute Minuts Base 2026-01-14 14:39:51 +03:30
43abb74c61 Merge branch 'Feature/program-manager/chat'
# Conflicts:
#	ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/TaskChat/Queries/GetMessages/GetMessagesQuery.cs
2026-01-14 10:57:07 +03:30
73e6681baa add message type to search query 2026-01-14 10:46:44 +03:30
90b2fd2eab add order for skills in set time 2026-01-14 10:13:57 +03:30
24 changed files with 11958 additions and 209 deletions

View File

@@ -31,7 +31,7 @@ public class Checkout : EntityBase
string overNightWorkValue, string fridayWorkValue, string rotatingShifValue, string absenceValue, string overNightWorkValue, string fridayWorkValue, string rotatingShifValue, string absenceValue,
string totalDayOfLeaveCompute, string totalDayOfYearsCompute, string totalDayOfBunosesCompute, string totalDayOfLeaveCompute, string totalDayOfYearsCompute, string totalDayOfBunosesCompute,
ICollection<CheckoutLoanInstallment> loanInstallments, ICollection<CheckoutLoanInstallment> loanInstallments,
ICollection<CheckoutSalaryAid> salaryAids, CheckoutRollCall checkoutRollCall, TimeSpan employeeMandatoryHours, bool hasInsuranceShareTheSameAsList) ICollection<CheckoutSalaryAid> salaryAids, CheckoutRollCall checkoutRollCall, TimeSpan employeeMandatoryHours, bool hasInsuranceShareTheSameAsList, ICollection<CheckoutReward> rewards,double rewardPay)
{ {
EmployeeFullName = employeeFullName; EmployeeFullName = employeeFullName;
FathersName = fathersName; FathersName = fathersName;
@@ -71,7 +71,7 @@ public class Checkout : EntityBase
TotalClaims = totalClaims; TotalClaims = totalClaims;
TotalDeductions = totalDeductions; TotalDeductions = totalDeductions;
TotalPayment = totalPayment; TotalPayment = totalPayment;
RewardPay = 0; RewardPay = rewardPay;
IsActiveString = "true"; IsActiveString = "true";
Signature = signature; Signature = signature;
MarriedAllowance = marriedAllowance; MarriedAllowance = marriedAllowance;
@@ -93,6 +93,7 @@ public class Checkout : EntityBase
CheckoutRollCall = checkoutRollCall; CheckoutRollCall = checkoutRollCall;
EmployeeMandatoryHours = employeeMandatoryHours; EmployeeMandatoryHours = employeeMandatoryHours;
HasInsuranceShareTheSameAsList = hasInsuranceShareTheSameAsList; HasInsuranceShareTheSameAsList = hasInsuranceShareTheSameAsList;
Rewards = rewards;
} }
@@ -130,7 +131,7 @@ public class Checkout : EntityBase
public double BonusesPay { get; private set; } public double BonusesPay { get; private set; }
public double YearsPay { get; private set; } public double YearsPay { get; private set; }
public double LeavePay { get; private set; } public double LeavePay { get; private set; }
public double? RewardPay { get; private set; } public double RewardPay { get; private set; }
public double InsuranceDeduction { get; private set; } public double InsuranceDeduction { get; private set; }
public double TaxDeducation { get; private set; } public double TaxDeducation { get; private set; }
public double InstallmentDeduction { get; private set; } public double InstallmentDeduction { get; private set; }
@@ -223,6 +224,8 @@ public class Checkout : EntityBase
public ICollection<CheckoutLoanInstallment> LoanInstallments { get; set; } = []; public ICollection<CheckoutLoanInstallment> LoanInstallments { get; set; } = [];
public ICollection<CheckoutSalaryAid> SalaryAids { get; set; } = []; public ICollection<CheckoutSalaryAid> SalaryAids { get; set; } = [];
public ICollection<CheckoutReward> Rewards { get; set; } = [];
public CheckoutRollCall CheckoutRollCall { get; private set; } public CheckoutRollCall CheckoutRollCall { get; private set; }
#endregion #endregion
@@ -239,7 +242,7 @@ public class Checkout : EntityBase
double insuranceDeduction, double taxDeducation, double installmentDeduction, double insuranceDeduction, double taxDeducation, double installmentDeduction,
double salaryAidDeduction, double absenceDeduction, string sumOfWorkingDays double salaryAidDeduction, double absenceDeduction, string sumOfWorkingDays
, string archiveCode, string personnelCode, , string archiveCode, string personnelCode,
string totalClaims, string totalDeductions, double totalPayment, double? rewardPay) string totalClaims, string totalDeductions, double totalPayment, double rewardPay)
{ {
EmployeeFullName = employeeFullName; EmployeeFullName = employeeFullName;
FathersName = fathersName; FathersName = fathersName;
@@ -337,6 +340,11 @@ public class Checkout : EntityBase
InstallmentDeduction = installmentsAmount; InstallmentDeduction = installmentsAmount;
} }
public void SetReward(ICollection<CheckoutReward> rewards, double rewardAmount)
{
RewardPay = rewardAmount;
Rewards = rewards;
}
public void SetCheckoutRollCall(CheckoutRollCall checkoutRollCall) public void SetCheckoutRollCall(CheckoutRollCall checkoutRollCall)
{ {
CheckoutRollCall = checkoutRollCall; CheckoutRollCall = checkoutRollCall;

View File

@@ -0,0 +1,56 @@
using System;
namespace Company.Domain.CheckoutAgg.ValueObjects;
public class CheckoutReward
{
public CheckoutReward(string amount, double amountDouble, string grantDateFa, DateTime grantDateGr, string description, string title)
{
Amount = amount;
AmountDouble = amountDouble;
GrantDateFa = grantDateFa;
GrantDateGr = grantDateGr;
Description = description;
Title = title;
}
/// <summary>
/// مبلغ پاداش
/// string
/// </summary>
public string Amount { get; set; }
/// <summary>
/// مبلغ پاداش
/// double
/// </summary>
public double AmountDouble { get; set; }
/// <summary>
/// تاریخ اعطاء
/// شمسی
/// </summary>
public string GrantDateFa { get; set; }
/// <summary>
/// تاریخ اعطاء
/// میلادی
/// </summary>
public DateTime GrantDateGr { get; set; }
/// <summary>
/// توضیحات
/// </summary>
public string Description { get; set; }
/// <summary>
/// عنوان
/// </summary>
public string Title { get; set; }
/// <summary>
/// آی دی پاداش
/// </summary>
public long EntityId { get; set; }
}

View File

@@ -1,15 +1,16 @@
using System; using _0_Framework.Domain;
using System.Collections.Generic;
using System.Threading.Tasks;
using _0_Framework.Domain;
using Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities; using Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities;
using CompanyManagment.App.Contracts.Contract; using CompanyManagment.App.Contracts.Contract;
using CompanyManagment.App.Contracts.CustomizeCheckout; using CompanyManagment.App.Contracts.CustomizeCheckout;
using CompanyManagment.App.Contracts.Leave; using CompanyManagment.App.Contracts.Leave;
using CompanyManagment.App.Contracts.Loan; using CompanyManagment.App.Contracts.Loan;
using CompanyManagment.App.Contracts.Reward;
using CompanyManagment.App.Contracts.RollCall; using CompanyManagment.App.Contracts.RollCall;
using CompanyManagment.App.Contracts.SalaryAid; using CompanyManagment.App.Contracts.SalaryAid;
using CompanyManagment.App.Contracts.WorkingHoursTemp; using CompanyManagment.App.Contracts.WorkingHoursTemp;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Company.Domain.RollCallAgg; namespace Company.Domain.RollCallAgg;
@@ -53,6 +54,9 @@ public interface IRollCallMandatoryRepository : IRepository<long, RollCall>
List<SalaryAidViewModel> SalaryAidsForCheckout(long employeeId, long workshopId, DateTime checkoutStart, List<SalaryAidViewModel> SalaryAidsForCheckout(long employeeId, long workshopId, DateTime checkoutStart,
DateTime checkoutEnd); DateTime checkoutEnd);
List<RewardViewModel> RewardForCheckout(long employeeId, long workshopId, DateTime checkoutEnd,
DateTime checkoutStart);
Task<ComputingViewModel> RotatingShiftReport(long workshopId, long employeeId, DateTime contractStart, Task<ComputingViewModel> RotatingShiftReport(long workshopId, long employeeId, DateTime contractStart,
DateTime contractEnd, string shiftwork, bool hasRollCall, CreateWorkingHoursTemp command,bool holidayWorking); DateTime contractEnd, string shiftwork, bool hasRollCall, CreateWorkingHoursTemp command,bool holidayWorking);
} }

View File

@@ -193,4 +193,9 @@ public class CreateCheckout
/// پایه سنوات قبل از تاثیر ساعت کار /// پایه سنوات قبل از تاثیر ساعت کار
/// </summary> /// </summary>
public double BaseYearUnAffected { get; set; } public double BaseYearUnAffected { get; set; }
/// <summary>
/// آیا برای محاسبه پاداش مجاز است
/// </summary>
public bool RewardPayCompute { get; set; }
} }

View File

@@ -151,6 +151,9 @@ public class CreateWorkshop
/// تصفیه حساب بصورت استاتیک محاصبه شود /// تصفیه حساب بصورت استاتیک محاصبه شود
/// </summary> /// </summary>
public bool IsStaticCheckout { get; set; } public bool IsStaticCheckout { get; set; }
/// <summary>
/// آیا پاداش در فیش حقوقی محاسبه شود
/// </summary>
public bool RewardComputeOnCheckout { get; set; }
} }

View File

@@ -240,6 +240,16 @@ public class CheckoutApplication : ICheckoutApplication
command.InstallmentDeduction = loanInstallments.Sum(x => x.AmountForMonth.MoneyToDouble()); command.InstallmentDeduction = loanInstallments.Sum(x => x.AmountForMonth.MoneyToDouble());
var rewards = new List<CheckoutReward>();
double rewardPay = 0;
if (command.RewardPayCompute)
{
rewards = _rollCallMandatoryRepository.RewardForCheckout(command.EmployeeId, command.WorkshopId, checkoutStart.ToGeorgianDateTime(), checkoutEnd.ToGeorgianDateTime())
.Select(x => new CheckoutReward(x.Amount, x.AmountDouble, x.GrantDateFa, x.GrantDateGr, x.Description, x.Title)).ToList();
rewardPay = rewards.Sum(x => x.AmountDouble);
}
@@ -361,7 +371,7 @@ public class CheckoutApplication : ICheckoutApplication
var totalClaimsDouble = monthlyWage + bacicYears + consumableItem + housingAllowance + marriedAllowance + command.OvertimePay + var totalClaimsDouble = monthlyWage + bacicYears + consumableItem + housingAllowance + marriedAllowance + command.OvertimePay +
command.NightworkPay + familyAllowance + bunos + years + command.LeavePay + command.FridayPay + command.ShiftPay; command.NightworkPay + familyAllowance + bunos + years + command.LeavePay + command.FridayPay + command.ShiftPay + rewardPay;
var totalClaims = totalClaimsDouble.ToMoney(); var totalClaims = totalClaimsDouble.ToMoney();
var totalDeductionDouble = insuranceDeduction + command.AbsenceDeduction + command.InstallmentDeduction + command.SalaryAidDeduction; var totalDeductionDouble = insuranceDeduction + command.AbsenceDeduction + command.InstallmentDeduction + command.SalaryAidDeduction;
var totalDeductions = totalDeductionDouble.ToMoney(); var totalDeductions = totalDeductionDouble.ToMoney();
@@ -386,7 +396,7 @@ public class CheckoutApplication : ICheckoutApplication
, command.OvertimePay, command.NightworkPay, command.FridayPay, 0, command.ShiftPay, familyAllowance, bunos, years, command.LeavePay, insuranceDeduction, 0, command.InstallmentDeduction, command.SalaryAidDeduction, command.AbsenceDeduction, sumOfWorkingDays, , command.OvertimePay, command.NightworkPay, command.FridayPay, 0, command.ShiftPay, familyAllowance, bunos, years, command.LeavePay, insuranceDeduction, 0, command.InstallmentDeduction, command.SalaryAidDeduction, command.AbsenceDeduction, sumOfWorkingDays,
command.ArchiveCode, command.PersonnelCode, totalClaims, totalDeductions, totalPayment, command.Signature, marriedAllowance, command.LeaveCheckout, command.CreditLeaves, command.AbsencePeriod, command.AverageHoursPerDay, command.HasRollCall, command.OverTimeWorkValue, command.OverNightWorkValue command.ArchiveCode, command.PersonnelCode, totalClaims, totalDeductions, totalPayment, command.Signature, marriedAllowance, command.LeaveCheckout, command.CreditLeaves, command.AbsencePeriod, command.AverageHoursPerDay, command.HasRollCall, command.OverTimeWorkValue, command.OverNightWorkValue
, command.FridayWorkValue, command.RotatingShiftValue, command.AbsenceValue, command.TotalDayOfLeaveCompute, command.TotalDayOfYearsCompute, command.TotalDayOfBunosesCompute, , command.FridayWorkValue, command.RotatingShiftValue, command.AbsenceValue, command.TotalDayOfLeaveCompute, command.TotalDayOfYearsCompute, command.TotalDayOfBunosesCompute,
loanInstallments, salaryAids,checkoutRollCall,command.EmployeeMandatoryHours, hasInsuranceShareTheSameAsList); loanInstallments, salaryAids,checkoutRollCall,command.EmployeeMandatoryHours, hasInsuranceShareTheSameAsList, rewards, rewardPay);
_checkoutRepository.CreateCkeckout(checkout).GetAwaiter().GetResult(); _checkoutRepository.CreateCkeckout(checkout).GetAwaiter().GetResult();
//_checkoutRepository.SaveChanges(); //_checkoutRepository.SaveChanges();

View File

@@ -1569,7 +1569,7 @@ public class InstitutionContractApplication : IInstitutionContractApplication
var previousInstitutionContract = await _institutionContractRepository var previousInstitutionContract = await _institutionContractRepository
.GetPreviousContract(institutionContract.id); .GetPreviousContract(institutionContract.id);
previousInstitutionContract?.DeActive(); previousInstitutionContract?.DeActive();
ReActiveAllAfterCreateNew(institutionContract.ContractingPartyId); await _contractingPartyRepository.ActiveAllAsync(institutionContract.ContractingPartyId);
await _institutionContractRepository.SaveChangesAsync(); await _institutionContractRepository.SaveChangesAsync();
return op.Succcedded(); return op.Succcedded();
} }

View File

@@ -1524,7 +1524,8 @@ public class InsuranceListApplication : IInsuranceListApplication
var dateOfBirth = employeeData.DateOfBirthGr.ToFarsi(); var dateOfBirth = employeeData.DateOfBirthGr.ToFarsi();
var dateOfIssue = employeeData.DateOfIssueGr.ToFarsi(); var dateOfIssue = employeeData.DateOfIssueGr.ToFarsi();
var leftDate = employeeData.LeftWorkDateGr != null ? employeeData.LeftWorkDateGr.Value.AddDays(-1) : new DateTime(); var leftDate = employeeData.LeftWorkDateGr != null ? employeeData.LeftWorkDateGr.Value.AddDays(-1) : new DateTime();
var workingDays = Tools.GetEmployeeInsuranceWorkingDays(employeeData.StartWorkDateGr, leftDate, startDateGr, endDateGr, employeeData.EmployeeId);
var workingDays = Tools.GetEmployeeInsuranceWorkingDays(employeeData.StartWorkDateGr, leftDate, startDateGr, endDateGr, employeeData.EmployeeId);
var leftWorkFa = workingDays.hasLeftWorkInMonth ? employeeData.LeftWorkDateGr.ToFarsi() : ""; var leftWorkFa = workingDays.hasLeftWorkInMonth ? employeeData.LeftWorkDateGr.ToFarsi() : "";
var startWorkFa = employeeData.StartWorkDateGr.ToFarsi(); var startWorkFa = employeeData.StartWorkDateGr.ToFarsi();
var workshop = _workShopRepository.GetDetails(workshopId); var workshop = _workShopRepository.GetDetails(workshopId);
@@ -1606,7 +1607,7 @@ public class InsuranceListApplication : IInsuranceListApplication
MaritalStatus = employeeData.MaritalStatus, MaritalStatus = employeeData.MaritalStatus,
StartMonthCurrent = startMonthFa, StartMonthCurrent = startMonthFa,
WorkingDays = workingDays.countWorkingDays, WorkingDays = employeeData.WorkingDays,
StartWorkDate = startWorkFa, StartWorkDate = startWorkFa,
StartWorkDateGr = employeeData.StartWorkDateGr, StartWorkDateGr = employeeData.StartWorkDateGr,
LeftWorkDate = leftWorkFa, LeftWorkDate = leftWorkFa,

View File

@@ -34,7 +34,7 @@ class CheckoutMapping : IEntityTypeConfiguration<Checkout>
builder.Property(x => x.FamilyAllowance); builder.Property(x => x.FamilyAllowance);
builder.Property(x => x.HousingAllowance); builder.Property(x => x.HousingAllowance);
builder.Property(x => x.ConsumableItems); builder.Property(x => x.ConsumableItems);
builder.Property(x => x.RewardPay).HasColumnType("float").IsRequired(false); builder.Property(x => x.RewardPay);
builder.Property(x => x.LeaveCheckout); builder.Property(x => x.LeaveCheckout);
builder.Property(x => x.CreditLeaves); builder.Property(x => x.CreditLeaves);
@@ -82,6 +82,15 @@ class CheckoutMapping : IEntityTypeConfiguration<Checkout>
salaryAid.Property(x => x.CalculationDateTimeFa).HasMaxLength(15); salaryAid.Property(x => x.CalculationDateTimeFa).HasMaxLength(15);
}); });
builder.OwnsMany(x => x.Rewards, reward =>
{
reward.Property(x => x.Description).HasColumnType("ntext");
reward.Property(x => x.Title).HasMaxLength(255);
reward.Property(x=> x.Amount).HasMaxLength(25);
reward.Property(x => x.GrantDateFa).HasMaxLength(10);
});
builder.OwnsOne(x => x.CheckoutRollCall, rollCall => builder.OwnsOne(x => x.CheckoutRollCall, rollCall =>
{ {
rollCall.Property(x => x.TotalPresentTimeSpan).HasTimeSpanConversion(); rollCall.Property(x => x.TotalPresentTimeSpan).HasTimeSpanConversion();

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,66 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CompanyManagment.EFCore.Migrations
{
/// <inheritdoc />
public partial class AddRewardtocheckout : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<double>(
name: "RewardPay",
table: "Checkouts",
type: "float",
nullable: false,
defaultValue: 0.0,
oldClrType: typeof(double),
oldType: "float",
oldNullable: true);
migrationBuilder.CreateTable(
name: "CheckoutReward",
columns: table => new
{
Checkoutid = table.Column<long>(type: "bigint", nullable: false),
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Amount = table.Column<string>(type: "nvarchar(25)", maxLength: 25, nullable: true),
AmountDouble = table.Column<double>(type: "float", nullable: false),
GrantDateFa = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true),
GrantDateGr = table.Column<DateTime>(type: "datetime2", nullable: false),
Description = table.Column<string>(type: "ntext", nullable: true),
Title = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true),
EntityId = table.Column<long>(type: "bigint", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_CheckoutReward", x => new { x.Checkoutid, x.Id });
table.ForeignKey(
name: "FK_CheckoutReward_Checkouts_Checkoutid",
column: x => x.Checkoutid,
principalTable: "Checkouts",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "CheckoutReward");
migrationBuilder.AlterColumn<double>(
name: "RewardPay",
table: "Checkouts",
type: "float",
nullable: true,
oldClrType: typeof(double),
oldType: "float");
}
}
}

View File

@@ -635,7 +635,7 @@ namespace CompanyManagment.EFCore.Migrations
.HasMaxLength(10) .HasMaxLength(10)
.HasColumnType("nvarchar(10)"); .HasColumnType("nvarchar(10)");
b.Property<double?>("RewardPay") b.Property<double>("RewardPay")
.HasColumnType("float"); .HasColumnType("float");
b.Property<string>("RotatingShiftValue") b.Property<string>("RotatingShiftValue")
@@ -7501,6 +7501,49 @@ namespace CompanyManagment.EFCore.Migrations
.HasForeignKey("Checkoutid"); .HasForeignKey("Checkoutid");
}); });
b.OwnsMany("Company.Domain.CheckoutAgg.ValueObjects.CheckoutReward", "Rewards", b1 =>
{
b1.Property<long>("Checkoutid")
.HasColumnType("bigint");
b1.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property<int>("Id"));
b1.Property<string>("Amount")
.HasMaxLength(25)
.HasColumnType("nvarchar(25)");
b1.Property<double>("AmountDouble")
.HasColumnType("float");
b1.Property<string>("Description")
.HasColumnType("ntext");
b1.Property<long>("EntityId")
.HasColumnType("bigint");
b1.Property<string>("GrantDateFa")
.HasMaxLength(10)
.HasColumnType("nvarchar(10)");
b1.Property<DateTime>("GrantDateGr")
.HasColumnType("datetime2");
b1.Property<string>("Title")
.HasMaxLength(255)
.HasColumnType("nvarchar(255)");
b1.HasKey("Checkoutid", "Id");
b1.ToTable("CheckoutReward");
b1.WithOwner()
.HasForeignKey("Checkoutid");
});
b.OwnsMany("Company.Domain.CheckoutAgg.ValueObjects.CheckoutSalaryAid", "SalaryAids", b1 => b.OwnsMany("Company.Domain.CheckoutAgg.ValueObjects.CheckoutSalaryAid", "SalaryAids", b1 =>
{ {
b1.Property<long>("Checkoutid") b1.Property<long>("Checkoutid")
@@ -7545,6 +7588,8 @@ namespace CompanyManagment.EFCore.Migrations
b.Navigation("LoanInstallments"); b.Navigation("LoanInstallments");
b.Navigation("Rewards");
b.Navigation("SalaryAids"); b.Navigation("SalaryAids");
b.Navigation("Workshop"); b.Navigation("Workshop");

View File

@@ -531,6 +531,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
entity.SetSalaryAid(command.SalaryAids, command.SalaryAidDeduction); entity.SetSalaryAid(command.SalaryAids, command.SalaryAidDeduction);
entity.SetLoanInstallment(command.LoanInstallments, command.InstallmentDeduction); entity.SetLoanInstallment(command.LoanInstallments, command.InstallmentDeduction);
entity.SetReward(command.Rewards,command.RewardPay);
entity.SetCheckoutRollCall(command.CheckoutRollCall); entity.SetCheckoutRollCall(command.CheckoutRollCall);
entity.SetEmployeeMandatoryHours(command.EmployeeMandatoryHours); entity.SetEmployeeMandatoryHours(command.EmployeeMandatoryHours);
if(command.HasInsuranceShareTheSameAsList) if(command.HasInsuranceShareTheSameAsList)
@@ -934,7 +935,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
TotalClaims = item.TotalClaims, TotalClaims = item.TotalClaims,
TotalDeductions = item.TotalDeductions, TotalDeductions = item.TotalDeductions,
TotalPayment = item.TotalPayment.ToMoney(), TotalPayment = item.TotalPayment.ToMoney(),
RewardPay = item.RewardPay.ToMoneyNullable(), RewardPay = item.RewardPay.ToMoney(),
ContractStartGr = item.ContractStart, ContractStartGr = item.ContractStart,
ContractEndGr = item.ContractEnd, ContractEndGr = item.ContractEnd,
IsLeft = false, IsLeft = false,
@@ -1335,7 +1336,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
TotalClaims = x.TotalClaims, TotalClaims = x.TotalClaims,
TotalDeductions = x.TotalDeductions, TotalDeductions = x.TotalDeductions,
TotalPayment = x.TotalPayment.ToMoney(), TotalPayment = x.TotalPayment.ToMoney(),
RewardPay = x.RewardPay.ToMoneyNullable(), RewardPay = x.RewardPay.ToMoney(),
ContractStartGr = x.ContractStart, ContractStartGr = x.ContractStart,
ContractEndGr = x.ContractEnd, ContractEndGr = x.ContractEnd,
IsLeft = false, IsLeft = false,

View File

@@ -124,69 +124,69 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
public EditInstitutionContract GetDetails(long id) public EditInstitutionContract GetDetails(long id)
{ {
return _context.InstitutionContractSet.Select(x => new EditInstitutionContract() return _context.InstitutionContractSet.Select(x => new EditInstitutionContract()
{ {
Id = x.id, Id = x.id,
ContractNo = x.ContractNo, ContractNo = x.ContractNo,
ContractStartGr = x.ContractStartGr, ContractStartGr = x.ContractStartGr,
ContractStartFa = x.ContractStartFa, ContractStartFa = x.ContractStartFa,
ContractEndGr = x.ContractEndGr, ContractEndGr = x.ContractEndGr,
ContractEndFa = x.ContractEndFa, ContractEndFa = x.ContractEndFa,
RepresentativeName = x.RepresentativeName, RepresentativeName = x.RepresentativeName,
ContractingPartyName = x.ContractingPartyName, ContractingPartyName = x.ContractingPartyName,
RepresentativeId = x.RepresentativeId, RepresentativeId = x.RepresentativeId,
ContractingPartyId = x.ContractingPartyId, ContractingPartyId = x.ContractingPartyId,
ContractDateFa = x.ContractDateFa, ContractDateFa = x.ContractDateFa,
State = x.State, State = x.State,
City = x.City, City = x.City,
Address = x.Address, Address = x.Address,
Description = x.Description, Description = x.Description,
WorkshopManualCount = x.WorkshopManualCount, WorkshopManualCount = x.WorkshopManualCount,
EmployeeManualCount = x.EmployeeManualCount, EmployeeManualCount = x.EmployeeManualCount,
ContractAmountString = x.ContractAmount.ToMoney(), ContractAmountString = x.ContractAmount.ToMoney(),
ContractAmount = x.ContractAmount, ContractAmount = x.ContractAmount,
DailyCompenseationString = x.DailyCompenseation.ToMoney(), DailyCompenseationString = x.DailyCompenseation.ToMoney(),
ObligationString = x.Obligation.ToMoney(), ObligationString = x.Obligation.ToMoney(),
TotalAmountString = x.TotalAmount.ToMoney(), TotalAmountString = x.TotalAmount.ToMoney(),
ExtensionNo = x.ExtensionNo, ExtensionNo = x.ExtensionNo,
OfficialCompany = x.OfficialCompany, OfficialCompany = x.OfficialCompany,
TypeOfContract = x.TypeOfContract, TypeOfContract = x.TypeOfContract,
Signature = x.Signature, Signature = x.Signature,
HasValueAddedTax = x.HasValueAddedTax, HasValueAddedTax = x.HasValueAddedTax,
ValueAddedTax = x.ValueAddedTax, ValueAddedTax = x.ValueAddedTax,
}) })
.FirstOrDefault(x => x.Id == id); .FirstOrDefault(x => x.Id == id);
} }
public EditInstitutionContract GetFirstContract(long contractingPartyId, string typeOfContract) public EditInstitutionContract GetFirstContract(long contractingPartyId, string typeOfContract)
{ {
return _context.InstitutionContractSet.Select(x => new EditInstitutionContract() return _context.InstitutionContractSet.Select(x => new EditInstitutionContract()
{ {
Id = x.id, Id = x.id,
ContractNo = x.ContractNo, ContractNo = x.ContractNo,
ContractStartGr = x.ContractStartGr, ContractStartGr = x.ContractStartGr,
ContractStartFa = x.ContractStartFa, ContractStartFa = x.ContractStartFa,
ContractEndGr = x.ContractEndGr, ContractEndGr = x.ContractEndGr,
ContractEndFa = x.ContractEndFa, ContractEndFa = x.ContractEndFa,
RepresentativeName = x.RepresentativeName, RepresentativeName = x.RepresentativeName,
ContractingPartyName = x.ContractingPartyName, ContractingPartyName = x.ContractingPartyName,
RepresentativeId = x.RepresentativeId, RepresentativeId = x.RepresentativeId,
ContractingPartyId = x.ContractingPartyId, ContractingPartyId = x.ContractingPartyId,
ContractDateFa = x.ContractDateFa, ContractDateFa = x.ContractDateFa,
State = x.State, State = x.State,
City = x.City, City = x.City,
Address = x.Address, Address = x.Address,
Description = x.Description, Description = x.Description,
WorkshopManualCount = x.WorkshopManualCount, WorkshopManualCount = x.WorkshopManualCount,
EmployeeManualCount = x.EmployeeManualCount, EmployeeManualCount = x.EmployeeManualCount,
ContractAmountString = x.ContractAmount.ToMoney(), ContractAmountString = x.ContractAmount.ToMoney(),
DailyCompenseationString = x.DailyCompenseation.ToMoney(), DailyCompenseationString = x.DailyCompenseation.ToMoney(),
ObligationString = x.Obligation.ToMoney(), ObligationString = x.Obligation.ToMoney(),
TotalAmountString = x.TotalAmount.ToMoney(), TotalAmountString = x.TotalAmount.ToMoney(),
ExtensionNo = x.ExtensionNo, ExtensionNo = x.ExtensionNo,
OfficialCompany = x.OfficialCompany, OfficialCompany = x.OfficialCompany,
TypeOfContract = x.TypeOfContract, TypeOfContract = x.TypeOfContract,
Signature = x.Signature Signature = x.Signature
}) })
.Where(x => x.ContractingPartyId == contractingPartyId && x.TypeOfContract == typeOfContract) .Where(x => x.ContractingPartyId == contractingPartyId && x.TypeOfContract == typeOfContract)
.OrderBy(x => x.ExtensionNo).FirstOrDefault(); .OrderBy(x => x.ExtensionNo).FirstOrDefault();
} }
@@ -604,40 +604,40 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
}).ToList(), }).ToList(),
}).ToList(); }).ToList();
listQuery = listQuery.Select(x => new InstitutionContractViewModel() listQuery = listQuery.Select(x => new InstitutionContractViewModel()
{ {
Id = x.Id, Id = x.Id,
ContractNo = x.ContractNo, ContractNo = x.ContractNo,
ContractStartGr = x.ContractStartGr, ContractStartGr = x.ContractStartGr,
ContractStartFa = x.ContractStartFa, ContractStartFa = x.ContractStartFa,
ContractEndGr = x.ContractEndGr, ContractEndGr = x.ContractEndGr,
ContractEndFa = x.ContractEndFa, ContractEndFa = x.ContractEndFa,
RepresentativeId = x.RepresentativeId, RepresentativeId = x.RepresentativeId,
RepresentativeName = x.RepresentativeName, RepresentativeName = x.RepresentativeName,
ContractingPartyName = x.ContractingPartyName, ContractingPartyName = x.ContractingPartyName,
ContractingPartyId = x.ContractingPartyId, ContractingPartyId = x.ContractingPartyId,
ContractAmount = x.ContractAmount, ContractAmount = x.ContractAmount,
TotalAmount = x.TotalAmount, TotalAmount = x.TotalAmount,
SearchAmount = x.SearchAmount, SearchAmount = x.SearchAmount,
IsActiveString = x.IsActiveString, IsActiveString = x.IsActiveString,
OfficialCompany = x.OfficialCompany, OfficialCompany = x.OfficialCompany,
TypeOfContract = x.TypeOfContract, TypeOfContract = x.TypeOfContract,
Signature = x.Signature, Signature = x.Signature,
ExpireColor = x.ExpireColor, ExpireColor = x.ExpireColor,
IsExpier = x.IsExpier, IsExpier = x.IsExpier,
BalanceDouble = x.BalanceDouble, BalanceDouble = x.BalanceDouble,
BalanceStr = x.BalanceStr, BalanceStr = x.BalanceStr,
EmployerViewModels = x.EmployerViewModels, EmployerViewModels = x.EmployerViewModels,
EmployerNo = x.EmployerNo, EmployerNo = x.EmployerNo,
EmployerName = x.EmployerViewModels.Select(n => n.FullName).FirstOrDefault(), EmployerName = x.EmployerViewModels.Select(n => n.FullName).FirstOrDefault(),
WorkshopViewModels = x.WorkshopViewModels, WorkshopViewModels = x.WorkshopViewModels,
WorkshopCount = x.WorkshopCount, WorkshopCount = x.WorkshopCount,
IsContractingPartyBlock = x.IsContractingPartyBlock, IsContractingPartyBlock = x.IsContractingPartyBlock,
BlockTimes = x.BlockTimes, BlockTimes = x.BlockTimes,
EmployeeCount = EmployeeCount =
((x.WorkshopViewModels.Sum(w => w.LeftWorkIds.Count)) + (x.WorkshopViewModels.Sum(w => ((x.WorkshopViewModels.Sum(w => w.LeftWorkIds.Count)) + (x.WorkshopViewModels.Sum(w =>
w.InsuranceLeftWorkIds.Count(c => !w.LeftWorkIds.Contains(c))))).ToString(), w.InsuranceLeftWorkIds.Count(c => !w.LeftWorkIds.Contains(c))))).ToString(),
ArchiveCode = x.WorkshopViewModels.Count > 0 ? ArchiveCodeFinder(x.WorkshopViewModels) : 0, ArchiveCode = x.WorkshopViewModels.Count > 0 ? ArchiveCodeFinder(x.WorkshopViewModels) : 0,
}).OrderBy(x => x.WorkshopCount != "0" && string.IsNullOrWhiteSpace(x.ExpireColor)) }).OrderBy(x => x.WorkshopCount != "0" && string.IsNullOrWhiteSpace(x.ExpireColor))
.ThenBy(x => x.WorkshopCount == "0" && string.IsNullOrWhiteSpace(x.ExpireColor)) .ThenBy(x => x.WorkshopCount == "0" && string.IsNullOrWhiteSpace(x.ExpireColor))
.ThenBy(x => x.IsExpier == "true") .ThenBy(x => x.IsExpier == "true")
.ThenBy(x => x.ExpireColor == "purple") .ThenBy(x => x.ExpireColor == "purple")
@@ -1474,7 +1474,8 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
IsInPersonContract = workshopGroup?.CurrentWorkshops IsInPersonContract = workshopGroup?.CurrentWorkshops
.Any(y => y.Services.ContractInPerson) ?? true, .Any(y => y.Services.ContractInPerson) ?? true,
IsOldContract = x.contract.SigningType == InstitutionContractSigningType.Legacy, IsOldContract = x.contract.SigningType == InstitutionContractSigningType.Legacy,
InstitutionContractIsSentFlag = sendFlags.ContainsKey(x.contract.id) ? sendFlags[x.contract.id] : false InstitutionContractIsSentFlag =
sendFlags.ContainsKey(x.contract.id) ? sendFlags[x.contract.id] : false
}; };
}).ToList() }).ToList()
}; };
@@ -3358,9 +3359,17 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
OneMonthPrice = institution.ContractAmountWithTax.ToMoney(), OneMonthPrice = institution.ContractAmountWithTax.ToMoney(),
OneMonthWithoutTax = institution.ContractAmount.ToMoney(), OneMonthWithoutTax = institution.ContractAmount.ToMoney(),
OneMonthTax = institution.ContractAmountTax.ToMoney(), OneMonthTax = institution.ContractAmountTax.ToMoney(),
VerifierFullName = institution.VerifierFullName, VerifierFullName =
VerifierPhoneNumber = institution.VerifierPhoneNumber, institution.VerificationStatus == InstitutionContractVerificationStatus.PendingForVerify
VerifyCode = institution.VerifyCode, ? null
: institution.VerifierFullName,
VerifierPhoneNumber =
institution.VerificationStatus == InstitutionContractVerificationStatus.PendingForVerify
? null
: institution.VerifierPhoneNumber,
VerifyCode = institution.VerificationStatus == InstitutionContractVerificationStatus.PendingForVerify
? null
: institution.VerifyCode,
VerifyDate = institution.VerifyCodeCreation.ToFarsi(), VerifyDate = institution.VerifyCodeCreation.ToFarsi(),
VerifyTime = institution.VerifyCodeCreation.ToString("HH:mm:ss"), VerifyTime = institution.VerifyCodeCreation.ToString("HH:mm:ss"),
Workshops = institution.WorkshopGroup.InitialWorkshops Workshops = institution.WorkshopGroup.InitialWorkshops
@@ -3563,10 +3572,6 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
#endregion #endregion
#region PrivateMetods #region PrivateMetods
/// <summary> /// <summary>
@@ -3611,11 +3616,8 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
#endregion #endregion
//ایجاد سند مالی ماهانه //ایجاد سند مالی ماهانه
#region CreateMontlyTransaction #region CreateMontlyTransaction
/// <summary> /// <summary>
@@ -3625,7 +3627,6 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
public async Task CreateTransactionForInstitutionContracts(DateTime endOfMonthGr, string endOfMonthFa, public async Task CreateTransactionForInstitutionContracts(DateTime endOfMonthGr, string endOfMonthFa,
string description) string description)
{ {
#region FindeNextMonth 1th #region FindeNextMonth 1th
var firstDayOfMonthGr = ($"{endOfMonthFa.Substring(0, 8)}01").ToGeorgianDateTime(); var firstDayOfMonthGr = ($"{endOfMonthFa.Substring(0, 8)}01").ToGeorgianDateTime();
@@ -3656,7 +3657,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
SigningType = x.SigningType, SigningType = x.SigningType,
InstallmentList = x.Installments InstallmentList = x.Installments
.Select(ins => new InstitutionContractInstallmentViewModel .Select(ins => new InstitutionContractInstallmentViewModel
{ AmountDouble = ins.Amount, InstallmentDateGr = ins.InstallmentDateGr }) { AmountDouble = ins.Amount, InstallmentDateGr = ins.InstallmentDateGr })
.OrderBy(ins => ins.InstallmentDateGr).Skip(1).ToList(), .OrderBy(ins => ins.InstallmentDateGr).Skip(1).ToList(),
}).Where(x => }).Where(x =>
x.ContractStartGr < endOfMonthGr && x.ContractEndGr >= endOfMonthGr && x.ContractAmountDouble > 0 && x.ContractStartGr < endOfMonthGr && x.ContractEndGr >= endOfMonthGr && x.ContractAmountDouble > 0 &&
@@ -3703,7 +3704,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
SigningType = x.SigningType, SigningType = x.SigningType,
InstallmentList = x.Installments InstallmentList = x.Installments
.Select(ins => new InstitutionContractInstallmentViewModel .Select(ins => new InstitutionContractInstallmentViewModel
{ AmountDouble = ins.Amount, InstallmentDateGr = ins.InstallmentDateGr }) { AmountDouble = ins.Amount, InstallmentDateGr = ins.InstallmentDateGr })
.OrderBy(ins => ins.InstallmentDateGr).Skip(1).ToList(), .OrderBy(ins => ins.InstallmentDateGr).Skip(1).ToList(),
}).ToListAsync(); }).ToListAsync();
@@ -4008,8 +4009,6 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
} }
public async Task<long> GetIdByInstallmentId(long installmentId) public async Task<long> GetIdByInstallmentId(long installmentId)
{ {
return await _context.InstitutionContractSet.Include(x => x.Installments) return await _context.InstitutionContractSet.Include(x => x.Installments)
@@ -4445,7 +4444,6 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
Id = 0, Id = 0,
IdNumberSerial = "", IdNumberSerial = "",
IdNumberSeri = "", IdNumberSeri = "",
}; };
creationTemp.SetContractingPartyInfo(request.LegalType, real, legal); creationTemp.SetContractingPartyInfo(request.LegalType, real, legal);
} }
@@ -5221,11 +5219,6 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
#endregion #endregion
#region CustomViewModels #region CustomViewModels
public class WorkshopsAndEmployeeViewModel public class WorkshopsAndEmployeeViewModel

View File

@@ -74,7 +74,7 @@ public class ReportClientRepository : IReportClientRepository
TotalClaims = x.TotalClaims, TotalClaims = x.TotalClaims,
TotalDeductions = x.TotalDeductions, TotalDeductions = x.TotalDeductions,
TotalPayment = x.TotalPayment.ToMoney(), TotalPayment = x.TotalPayment.ToMoney(),
RewardPay = x.RewardPay.ToMoneyNullable(), RewardPay = x.RewardPay.ToMoney(),
MarriedAllowance = x.MarriedAllowance.ToMoney(), MarriedAllowance = x.MarriedAllowance.ToMoney(),
}).Where(x => x.WorkshopId == workshopId); }).Where(x => x.WorkshopId == workshopId);
@@ -448,7 +448,7 @@ public class ReportClientRepository : IReportClientRepository
TotalClaims = x.TotalClaims, TotalClaims = x.TotalClaims,
TotalDeductions = x.TotalDeductions, TotalDeductions = x.TotalDeductions,
TotalPayment = x.TotalPayment.ToMoney(), TotalPayment = x.TotalPayment.ToMoney(),
RewardPay = x.RewardPay.ToMoneyNullable(), RewardPay = x.RewardPay.ToMoney(),
MarriedAllowance = x.MarriedAllowance.ToMoney(), MarriedAllowance = x.MarriedAllowance.ToMoney(),
}).Where(x => x.WorkshopId == workshopId); }).Where(x => x.WorkshopId == workshopId);

View File

@@ -5199,7 +5199,7 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
}; };
} }
private List<RewardViewModel> RewardForCheckout(long employeeId, long workshopId, DateTime checkoutEnd, public List<RewardViewModel> RewardForCheckout(long employeeId, long workshopId, DateTime checkoutEnd,
DateTime checkoutStart) DateTime checkoutStart)
{ {
return _context.Rewards.Where(x => return _context.Rewards.Where(x =>

View File

@@ -160,7 +160,9 @@ public class WorkshopRepository : RepositoryBase<long, Company.Domain.WorkshopAg
public EditWorkshop GetDetails(long id) public EditWorkshop GetDetails(long id)
{ {
var emp = _context.WorkshopEmployers.Where(x => x.WorkshopId == id) var emp = _context.WorkshopEmployers.Where(x => x.WorkshopId == id)
.Select(x => x.EmployerId).ToList(); .Select(x => x.Employer).ToList();
var contractingPart = emp.Select(x => x.ContractingPartyId).ToList();
bool rewardCompute = contractingPart.Any(x=>x == 30804);
return _context.Workshops.Select(x => new EditWorkshop return _context.Workshops.Select(x => new EditWorkshop
{ {
Id = x.id, Id = x.id,
@@ -193,7 +195,7 @@ public class WorkshopRepository : RepositoryBase<long, Company.Domain.WorkshopAg
BonusesOptions = string.IsNullOrWhiteSpace(x.BonusesOptions) ? "EndOfContract1402leftWork1403" : x.BonusesOptions, BonusesOptions = string.IsNullOrWhiteSpace(x.BonusesOptions) ? "EndOfContract1402leftWork1403" : x.BonusesOptions,
YearsOptions = x.YearsOptions, YearsOptions = x.YearsOptions,
IsOldContract = x.IsOldContract, IsOldContract = x.IsOldContract,
EmployerIdList = emp, EmployerIdList = emp.Select(e=>e.id).ToList(),
HasRollCallFreeVip = x.HasRollCallFreeVip, HasRollCallFreeVip = x.HasRollCallFreeVip,
WorkshopHolidayWorking = x.WorkshopHolidayWorking, WorkshopHolidayWorking = x.WorkshopHolidayWorking,
InsuranceCheckoutOvertime = x.InsuranceCheckoutOvertime, InsuranceCheckoutOvertime = x.InsuranceCheckoutOvertime,
@@ -205,6 +207,7 @@ public class WorkshopRepository : RepositoryBase<long, Company.Domain.WorkshopAg
SignCheckout = x.SignCheckout, SignCheckout = x.SignCheckout,
RotatingShiftCompute = x.RotatingShiftCompute, RotatingShiftCompute = x.RotatingShiftCompute,
IsStaticCheckout = x.IsStaticCheckout, IsStaticCheckout = x.IsStaticCheckout,
RewardComputeOnCheckout = rewardCompute
}).FirstOrDefault(x => x.Id == id); }).FirstOrDefault(x => x.Id == id);
} }

View File

@@ -209,22 +209,38 @@ public class CreateOrEditCheckoutCommandHandler : IBaseCommandHandler<CreateOrEd
} }
} }
//حقوق نهایی ////حقوق نهایی
var monthlySalaryPay = (totalHoursWorked * monthlySalaryDefined) / mandatoryHours; //var monthlySalaryPay = (totalHoursWorked * monthlySalaryDefined) / mandatoryHours;
// اگر اضافه کار داشت حقوق تعین شده به عنوان حقوق نهایی در نظر گرفته میشود //// اگر اضافه کار داشت حقوق تعین شده به عنوان حقوق نهایی در نظر گرفته میشود
monthlySalaryPay = monthlySalaryPay > monthlySalaryDefined ? monthlySalaryDefined : monthlySalaryPay; //monthlySalaryPay = monthlySalaryPay > monthlySalaryDefined ? monthlySalaryDefined : monthlySalaryPay;
//حقوق کسر شده ////حقوق کسر شده
var deductionFromSalary = monthlySalaryDefined - monthlySalaryPay; //var deductionFromSalary = monthlySalaryDefined - monthlySalaryPay;
//new chang salary compute
var monthlySalaryPay = totalHoursWorked * monthlySalaryDefined;
//زمان باقی مانده //زمان باقی مانده
var remainingTime = totalHoursWorked - mandatoryHours; var remainingTime = totalHoursWorked - mandatoryHours;
//تناسب به دقیقه
#region MyRegion
//var monthlySalaryDefinedTest = monthlySalaryDefined * mandatoryHours;
//var monthlySalaryPayTest = totalHoursWorked * monthlySalaryDefined;
////// اگر اضافه کار داشت حقوق تعین شده به عنوان حقوق نهایی در نظر گرفته میشود
//monthlySalaryPayTest = monthlySalaryPayTest > monthlySalaryDefinedTest ? monthlySalaryDefinedTest : monthlySalaryPayTest;
//////حقوق کسر شده
//var deductionFromSalaryTest = monthlySalaryDefinedTest - monthlySalaryPayTest;
#endregion
var computeResult = new ComputeResultDto var computeResult = new ComputeResultDto
{ {
MandatoryHours = mandatoryHours, MandatoryHours = mandatoryHours,
MonthlySalaryPay = monthlySalaryPay, MonthlySalaryPay = monthlySalaryPay,
DeductionFromSalary = deductionFromSalary, DeductionFromSalary = 0 /*deductionFromSalary*/,
RemainingHours = remainingTime RemainingHours = remainingTime
}; };
Console.WriteLine(mandatoryHours); Console.WriteLine(mandatoryHours);

View File

@@ -1,10 +1,11 @@
using GozareshgirProgramManager.Application._Common.Interfaces; using DNTPersianUtils.Core;
using GozareshgirProgramManager.Application._Common.Interfaces;
using GozareshgirProgramManager.Application._Common.Models; using GozareshgirProgramManager.Application._Common.Models;
using GozareshgirProgramManager.Application.Modules.SalaryPaymentSettings.Queries.GetUserListWhoHaveSettings; using GozareshgirProgramManager.Application.Modules.SalaryPaymentSettings.Queries.GetUserListWhoHaveSettings;
using GozareshgirProgramManager.Domain._Common; using GozareshgirProgramManager.Domain._Common;
using GozareshgirProgramManager.Domain.CheckoutAgg.Enums; using GozareshgirProgramManager.Domain.CheckoutAgg.Enums;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using PersianTools.Core; using PersianDateTime = PersianTools.Core.PersianDateTime;
namespace GozareshgirProgramManager.Application.Modules.Checkouts.Queries.GetUserToGropCreate; namespace GozareshgirProgramManager.Application.Modules.Checkouts.Queries.GetUserToGropCreate;
@@ -45,8 +46,8 @@ public class GetUserToGroupCreatingQueryHandler : IBaseQueryHandler<GetUserToGro
"ایجاد فیش فقط برای ماه های گذشته امکان پذیر است"); "ایجاد فیش فقط برای ماه های گذشته امکان پذیر است");
var lastMonthStart = lastMonth; //var lastMonthStart = lastMonth;
var lastMonthEnd = lastMonth; var lastMonthEnd = ((selectedDate.ToFarsi().FindeEndOfMonth())).ToGeorgianDateTime();
var query = var query =
await (from u in _context.Users await (from u in _context.Users
@@ -60,8 +61,8 @@ public class GetUserToGroupCreatingQueryHandler : IBaseQueryHandler<GetUserToGro
// LEFT JOIN // LEFT JOIN
//فیش //فیش
join ch in _context.Checkouts join ch in _context.Checkouts
.Where(x => x.CheckoutStartDate < lastMonthStart .Where(x => x.CheckoutStartDate < lastMonthEnd
&& x.CheckoutEndDate >= lastMonthStart) && x.CheckoutEndDate > selectedDate)
on u.Id equals ch.UserId into chJoin on u.Id equals ch.UserId into chJoin
from ch in chJoin.DefaultIfEmpty() from ch in chJoin.DefaultIfEmpty()

View File

@@ -56,6 +56,7 @@ public class ProjectSetTimeDetailsQueryHandler
var skills = await _context.Skills var skills = await _context.Skills
.AsNoTracking() .AsNoTracking()
.OrderBy(x=>x.CreationDate)
.ToListAsync(cancellationToken); .ToListAsync(cancellationToken);
var res = new ProjectSetTimeResponse( var res = new ProjectSetTimeResponse(
@@ -84,7 +85,7 @@ public class ProjectSetTimeDetailsQueryHandler
UserId = section?.OriginalAssignedUserId ?? 0, UserId = section?.OriginalAssignedUserId ?? 0,
SkillId = skill.Id, SkillId = skill.Id,
}; };
}).OrderBy(x => x.SkillId).ToList(), }).ToList(),
task.Id, task.Id,
level); level);
@@ -114,6 +115,7 @@ public class ProjectSetTimeDetailsQueryHandler
var skills = await _context.Skills var skills = await _context.Skills
.AsNoTracking() .AsNoTracking()
.OrderBy(x=>x.CreationDate)
.ToListAsync(cancellationToken); .ToListAsync(cancellationToken);
var res = new ProjectSetTimeResponse( var res = new ProjectSetTimeResponse(
@@ -135,7 +137,7 @@ public class ProjectSetTimeDetailsQueryHandler
UserId = section?.UserId ?? 0, UserId = section?.UserId ?? 0,
SkillId = skill.Id, SkillId = skill.Id,
}; };
}).OrderBy(x => x.SkillId).ToList(), }).ToList(),
phase.Id, phase.Id,
level); level);
@@ -165,6 +167,7 @@ public class ProjectSetTimeDetailsQueryHandler
var skills = await _context.Skills var skills = await _context.Skills
.AsNoTracking() .AsNoTracking()
.OrderBy(x=>x.CreationDate)
.ToListAsync(cancellationToken); .ToListAsync(cancellationToken);
var res = new ProjectSetTimeResponse( var res = new ProjectSetTimeResponse(
@@ -186,7 +189,7 @@ public class ProjectSetTimeDetailsQueryHandler
UserId = section?.UserId ?? 0, UserId = section?.UserId ?? 0,
SkillId = skill.Id, SkillId = skill.Id,
}; };
}).OrderBy(x => x.SkillId).ToList(), }).ToList(),
project.Id, project.Id,
level); level);

View File

@@ -1,12 +1,15 @@
using GozareshgirProgramManager.Application._Common.Interfaces; using GozareshgirProgramManager.Application._Common.Interfaces;
using GozareshgirProgramManager.Application._Common.Models; using GozareshgirProgramManager.Application._Common.Models;
using GozareshgirProgramManager.Application.Modules.TaskChat.DTOs; using GozareshgirProgramManager.Application.Modules.TaskChat.DTOs;
using GozareshgirProgramManager.Domain.TaskChatAgg.Enums;
using MediatR;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
namespace GozareshgirProgramManager.Application.Modules.TaskChat.Queries.GetMessages; namespace GozareshgirProgramManager.Application.Modules.TaskChat.Queries.GetMessages;
public record GetMessagesQuery( public record GetMessagesQuery(
Guid TaskId, Guid TaskId,
MessageType? MessageType,
int Page = 1, int Page = 1,
int PageSize = 50 int PageSize = 50
) : IBaseQuery<PaginationResult<MessageDto>>; ) : IBaseQuery<PaginationResult<MessageDto>>;
@@ -66,7 +69,12 @@ public class GetMessagesQueryHandler : IBaseQueryHandler<GetMessagesQuery, Pagin
var query = _context.TaskChatMessages var query = _context.TaskChatMessages
.Where(m => m.TaskId == request.TaskId && !m.IsDeleted) .Where(m => m.TaskId == request.TaskId && !m.IsDeleted)
.Include(m => m.ReplyToMessage) .Include(m => m.ReplyToMessage)
.OrderBy(m => m.CreationDate); .OrderBy(m => m.CreationDate).AsQueryable();
if (request.MessageType.HasValue)
{
query = query.Where(m => m.MessageType == request.MessageType.Value);
}
var totalCount = await query.CountAsync(cancellationToken); var totalCount = await query.CountAsync(cancellationToken);

View File

@@ -8,6 +8,7 @@ using GozareshgirProgramManager.Application.Modules.TaskChat.DTOs;
using GozareshgirProgramManager.Application.Modules.TaskChat.Queries.GetMessages; using GozareshgirProgramManager.Application.Modules.TaskChat.Queries.GetMessages;
using GozareshgirProgramManager.Application.Modules.TaskChat.Queries.GetPinnedMessages; using GozareshgirProgramManager.Application.Modules.TaskChat.Queries.GetPinnedMessages;
using GozareshgirProgramManager.Application.Modules.TaskChat.Queries.SearchMessages; using GozareshgirProgramManager.Application.Modules.TaskChat.Queries.SearchMessages;
using GozareshgirProgramManager.Domain.TaskChatAgg.Enums;
using MediatR; using MediatR;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using ServiceHost.BaseControllers; using ServiceHost.BaseControllers;
@@ -30,15 +31,17 @@ public class TaskChatController : ProgramManagerBaseController
/// دریافت لیست پیام‌های یک تسک /// دریافت لیست پیام‌های یک تسک
/// </summary> /// </summary>
/// <param name="taskId">شناسه تسک</param> /// <param name="taskId">شناسه تسک</param>
/// <param name="messageType">نوع پیام</param>
/// <param name="page">صفحه (پیش‌فرض: 1)</param> /// <param name="page">صفحه (پیش‌فرض: 1)</param>
/// <param name="pageSize">تعداد در هر صفحه (پیش‌فرض: 50)</param> /// <param name="pageSize">تعداد در هر صفحه (پیش‌فرض: 50)</param>
[HttpGet("{taskId:guid}/messages")] [HttpGet("{taskId:guid}/messages")]
public async Task<ActionResult<OperationResult<PaginationResult<MessageDto>>>> GetMessages( public async Task<ActionResult<OperationResult<PaginationResult<MessageDto>>>> GetMessages(
Guid taskId, Guid taskId,
[FromQuery] MessageType? messageType,
[FromQuery] int page = 1, [FromQuery] int page = 1,
[FromQuery] int pageSize = 50) [FromQuery] int pageSize = 50)
{ {
var query = new GetMessagesQuery(taskId, page, pageSize); var query = new GetMessagesQuery(taskId,messageType, page, pageSize);
var result = await _mediator.Send(query); var result = await _mediator.Send(query);
return result; return result;
} }

View File

@@ -794,7 +794,8 @@ public class IndexModel : PageModel
watch.Stop(); watch.Stop();
#endregion #endregion
var firstContract = _contractApplication.GetDetails(ContractsId[0]);
var workshop = _workshopApplication.GetDetails(firstContract.WorkshopIds);
//int i = 0; //int i = 0;
foreach (var item in ContractsId) foreach (var item in ContractsId)
@@ -809,7 +810,7 @@ public class IndexModel : PageModel
if (separation.checker) if (separation.checker)
{ {
//workshopInfo //workshopInfo
var workshop = _workshopApplication.GetDetails(contract.WorkshopIds);
var employeeOptions = var employeeOptions =
_employeeComputeOptionsApplication.GetAllByWorkshopId(contract.WorkshopIds); _employeeComputeOptionsApplication.GetAllByWorkshopId(contract.WorkshopIds);
@@ -1212,7 +1213,7 @@ public class IndexModel : PageModel
#endregion #endregion
RewardPayCompute = workshop.RewardComputeOnCheckout,
}; };
_checkoutApplication.Create(command); _checkoutApplication.Create(command);

View File

@@ -1,53 +0,0 @@
using _0_Framework.Application;
using CompanyManagment.App.Contracts.Reward;
using Microsoft.AspNetCore.Mvc;
using ServiceHost.BaseControllers;
namespace ServiceHost.Areas.Client.Controllers;
public class RewardController:ClientBaseController
{
private readonly IRewardApplication _rewardApplication;
private readonly long _workshopId;
public RewardController(IRewardApplication rewardApplication, IAuthHelper authHelper)
{
_rewardApplication = rewardApplication;
_workshopId = authHelper.GetWorkshopId();
}
[HttpGet]
public ActionResult<RewardsGroupedViewModel> GetList(RewardSearchModel searchModel)
{
searchModel.WorkshopId = _workshopId;
var res = _rewardApplication.GetSearchListAsGrouped(searchModel);
return res;
}
[HttpPost]
public ActionResult<OperationResult> Create(CreateRewardViewModel create)
{
create.WorkshopId = _workshopId;
return _rewardApplication.Create(create);
}
[HttpPut]
public ActionResult<OperationResult> Edit(EditRewardViewModel edit)
{
edit.WorkshopId = _workshopId;
return _rewardApplication.Edit(edit);
}
[HttpDelete]
public ActionResult<OperationResult> Delete(long id)
{
return _rewardApplication.Remove(id);
}
[HttpGet("{id:long}")]
public ActionResult<EditRewardViewModel> Details(long id)
{
return _rewardApplication.GetDetails(id);
}
}