From 90b2fd2eab5ae2317f42bf72bde252f7e63b6266 Mon Sep 17 00:00:00 2001 From: mahan Date: Wed, 14 Jan 2026 10:13:57 +0330 Subject: [PATCH 1/4] add order for skills in set time --- .../ProjectSetTimeDetailsQueryHandler.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/ProjectSetTimeDetails/ProjectSetTimeDetailsQueryHandler.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/ProjectSetTimeDetails/ProjectSetTimeDetailsQueryHandler.cs index aee31370..b3600159 100644 --- a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/ProjectSetTimeDetails/ProjectSetTimeDetailsQueryHandler.cs +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/ProjectSetTimeDetails/ProjectSetTimeDetailsQueryHandler.cs @@ -56,6 +56,7 @@ public class ProjectSetTimeDetailsQueryHandler var skills = await _context.Skills .AsNoTracking() + .OrderBy(x=>x.CreationDate) .ToListAsync(cancellationToken); var res = new ProjectSetTimeResponse( @@ -84,7 +85,7 @@ public class ProjectSetTimeDetailsQueryHandler UserId = section?.OriginalAssignedUserId ?? 0, SkillId = skill.Id, }; - }).OrderBy(x => x.SkillId).ToList(), + }).ToList(), task.Id, level); @@ -114,6 +115,7 @@ public class ProjectSetTimeDetailsQueryHandler var skills = await _context.Skills .AsNoTracking() + .OrderBy(x=>x.CreationDate) .ToListAsync(cancellationToken); var res = new ProjectSetTimeResponse( @@ -135,7 +137,7 @@ public class ProjectSetTimeDetailsQueryHandler UserId = section?.UserId ?? 0, SkillId = skill.Id, }; - }).OrderBy(x => x.SkillId).ToList(), + }).ToList(), phase.Id, level); @@ -165,6 +167,7 @@ public class ProjectSetTimeDetailsQueryHandler var skills = await _context.Skills .AsNoTracking() + .OrderBy(x=>x.CreationDate) .ToListAsync(cancellationToken); var res = new ProjectSetTimeResponse( @@ -186,7 +189,7 @@ public class ProjectSetTimeDetailsQueryHandler UserId = section?.UserId ?? 0, SkillId = skill.Id, }; - }).OrderBy(x => x.SkillId).ToList(), + }).ToList(), project.Id, level); From 73e6681baa8d9feb91b1fc7a49333c43d3e9ceea Mon Sep 17 00:00:00 2001 From: mahan Date: Wed, 14 Jan 2026 10:46:44 +0330 Subject: [PATCH 2/4] add message type to search query --- .../TaskChat/Queries/GetMessages/GetMessagesQuery.cs | 9 ++++++++- .../Controllers/ProgramManager/TaskChatController.cs | 5 ++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/TaskChat/Queries/GetMessages/GetMessagesQuery.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/TaskChat/Queries/GetMessages/GetMessagesQuery.cs index fbc3e3b8..d4e240b4 100644 --- a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/TaskChat/Queries/GetMessages/GetMessagesQuery.cs +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/TaskChat/Queries/GetMessages/GetMessagesQuery.cs @@ -1,6 +1,7 @@ using GozareshgirProgramManager.Application._Common.Interfaces; using GozareshgirProgramManager.Application._Common.Models; using GozareshgirProgramManager.Application.Modules.TaskChat.DTOs; +using GozareshgirProgramManager.Domain.TaskChatAgg.Enums; using MediatR; using Microsoft.EntityFrameworkCore; @@ -8,6 +9,7 @@ namespace GozareshgirProgramManager.Application.Modules.TaskChat.Queries.GetMess public record GetMessagesQuery( Guid TaskId, + MessageType? MessageType, int Page = 1, int PageSize = 50 ) : IBaseQuery>; @@ -34,7 +36,12 @@ public class GetMessagesQueryHandler : IBaseQueryHandler m.TaskId == request.TaskId && !m.IsDeleted) .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); diff --git a/ServiceHost/Areas/Admin/Controllers/ProgramManager/TaskChatController.cs b/ServiceHost/Areas/Admin/Controllers/ProgramManager/TaskChatController.cs index 39983e00..8d579bfc 100644 --- a/ServiceHost/Areas/Admin/Controllers/ProgramManager/TaskChatController.cs +++ b/ServiceHost/Areas/Admin/Controllers/ProgramManager/TaskChatController.cs @@ -8,6 +8,7 @@ using GozareshgirProgramManager.Application.Modules.TaskChat.DTOs; using GozareshgirProgramManager.Application.Modules.TaskChat.Queries.GetMessages; using GozareshgirProgramManager.Application.Modules.TaskChat.Queries.GetPinnedMessages; using GozareshgirProgramManager.Application.Modules.TaskChat.Queries.SearchMessages; +using GozareshgirProgramManager.Domain.TaskChatAgg.Enums; using MediatR; using Microsoft.AspNetCore.Mvc; using ServiceHost.BaseControllers; @@ -30,15 +31,17 @@ public class TaskChatController : ProgramManagerBaseController /// دریافت لیست پیام‌های یک تسک /// /// شناسه تسک + /// نوع پیام /// صفحه (پیش‌فرض: 1) /// تعداد در هر صفحه (پیش‌فرض: 50) [HttpGet("{taskId:guid}/messages")] public async Task>>> GetMessages( Guid taskId, + [FromQuery] MessageType? messageType, [FromQuery] int page = 1, [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); return result; } From 5508d4e88f3fd8629256f899fdb44d2db184651b Mon Sep 17 00:00:00 2001 From: gozareshgir Date: Wed, 14 Jan 2026 14:39:51 +0330 Subject: [PATCH 3/4] Checkout Compute Minuts Base --- .../CreateOrEditCheckoutCommandHandler.cs | 30 ++++++++++++++----- .../GetUserToGroupCreatingQueryHandler.cs | 13 ++++---- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Checkouts/Commands/CreateCheckout/CreateOrEditCheckoutCommandHandler.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Checkouts/Commands/CreateCheckout/CreateOrEditCheckoutCommandHandler.cs index 9b3fdcb8..0c1343e5 100644 --- a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Checkouts/Commands/CreateCheckout/CreateOrEditCheckoutCommandHandler.cs +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Checkouts/Commands/CreateCheckout/CreateOrEditCheckoutCommandHandler.cs @@ -209,22 +209,38 @@ public class CreateOrEditCheckoutCommandHandler : IBaseCommandHandler monthlySalaryDefined ? monthlySalaryDefined : monthlySalaryPay; + ////حقوق نهایی + //var monthlySalaryPay = (totalHoursWorked * monthlySalaryDefined) / mandatoryHours; + //// اگر اضافه کار داشت حقوق تعین شده به عنوان حقوق نهایی در نظر گرفته میشود + //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; + + //تناسب به دقیقه + #region MyRegion + + //var monthlySalaryDefinedTest = monthlySalaryDefined * mandatoryHours; + //var monthlySalaryPayTest = totalHoursWorked * monthlySalaryDefined; + ////// اگر اضافه کار داشت حقوق تعین شده به عنوان حقوق نهایی در نظر گرفته میشود + //monthlySalaryPayTest = monthlySalaryPayTest > monthlySalaryDefinedTest ? monthlySalaryDefinedTest : monthlySalaryPayTest; + //////حقوق کسر شده + //var deductionFromSalaryTest = monthlySalaryDefinedTest - monthlySalaryPayTest; + + #endregion + var computeResult = new ComputeResultDto { MandatoryHours = mandatoryHours, MonthlySalaryPay = monthlySalaryPay, - DeductionFromSalary = deductionFromSalary, + DeductionFromSalary = 0 /*deductionFromSalary*/, RemainingHours = remainingTime }; Console.WriteLine(mandatoryHours); diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Checkouts/Queries/GetUserToGropCreate/GetUserToGroupCreatingQueryHandler.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Checkouts/Queries/GetUserToGropCreate/GetUserToGroupCreatingQueryHandler.cs index 1b04026a..ad4812c9 100644 --- a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Checkouts/Queries/GetUserToGropCreate/GetUserToGroupCreatingQueryHandler.cs +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Checkouts/Queries/GetUserToGropCreate/GetUserToGroupCreatingQueryHandler.cs @@ -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.Modules.SalaryPaymentSettings.Queries.GetUserListWhoHaveSettings; using GozareshgirProgramManager.Domain._Common; using GozareshgirProgramManager.Domain.CheckoutAgg.Enums; using Microsoft.EntityFrameworkCore; -using PersianTools.Core; +using PersianDateTime = PersianTools.Core.PersianDateTime; namespace GozareshgirProgramManager.Application.Modules.Checkouts.Queries.GetUserToGropCreate; @@ -45,8 +46,8 @@ public class GetUserToGroupCreatingQueryHandler : IBaseQueryHandler x.CheckoutStartDate < lastMonthStart - && x.CheckoutEndDate >= lastMonthStart) + .Where(x => x.CheckoutStartDate < lastMonthEnd + && x.CheckoutEndDate > selectedDate) on u.Id equals ch.UserId into chJoin from ch in chJoin.DefaultIfEmpty() From 21302803b6e3db426d381d1d06c93a4e10e7eba5 Mon Sep 17 00:00:00 2001 From: gozareshgir Date: Mon, 19 Jan 2026 12:32:51 +0330 Subject: [PATCH 4/4] insurance WorkingDays bug Fixed --- CompanyManagment.Application/InsuranceListApplication.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CompanyManagment.Application/InsuranceListApplication.cs b/CompanyManagment.Application/InsuranceListApplication.cs index d0fbb990..47697d80 100644 --- a/CompanyManagment.Application/InsuranceListApplication.cs +++ b/CompanyManagment.Application/InsuranceListApplication.cs @@ -1524,7 +1524,8 @@ public class InsuranceListApplication : IInsuranceListApplication var dateOfBirth = employeeData.DateOfBirthGr.ToFarsi(); var dateOfIssue = employeeData.DateOfIssueGr.ToFarsi(); 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 startWorkFa = employeeData.StartWorkDateGr.ToFarsi(); var workshop = _workShopRepository.GetDetails(workshopId); @@ -1606,7 +1607,7 @@ public class InsuranceListApplication : IInsuranceListApplication MaritalStatus = employeeData.MaritalStatus, StartMonthCurrent = startMonthFa, - WorkingDays = workingDays.countWorkingDays, + WorkingDays = employeeData.WorkingDays, StartWorkDate = startWorkFa, StartWorkDateGr = employeeData.StartWorkDateGr, LeftWorkDate = leftWorkFa,