From 26517c20d825468f924f6acec9a5db2c28831a88 Mon Sep 17 00:00:00 2001 From: gozareshgir Date: Thu, 29 Jan 2026 13:35:22 +0330 Subject: [PATCH] some change --- 0_Framework/Application/Tools.cs | 108 ++++++++++++++++++ .../CheckoutAgg/ICheckoutRepository.cs | 3 +- .../CheckoutApplication.cs | 2 +- .../Repository/CheckoutRepository.cs | 25 +++- .../Admin/Controllers/CheckoutController.cs | 15 ++- 5 files changed, 148 insertions(+), 5 deletions(-) diff --git a/0_Framework/Application/Tools.cs b/0_Framework/Application/Tools.cs index 47de9e95..4a7ee562 100644 --- a/0_Framework/Application/Tools.cs +++ b/0_Framework/Application/Tools.cs @@ -650,7 +650,115 @@ public static class Tools return y2; } + /// + /// تاریخ شمسی میگیرد و پایان ماه را به میلادی برمیگرداند + /// + /// + /// + public static DateTime FindeEndOfMonthReturnGr(this string date) + { + string y2 = string.Empty; + var year = Convert.ToInt32(date.Substring(0, 4)); + var month = Convert.ToInt32(date.Substring(5, 2)); + var YearD = date.Substring(0, 4); + var MonthD = date.Substring(5, 2); + if (month <= 6) + { + y2 = $"{YearD}/{MonthD}/31"; + } + else if (month > 6 && month < 12) + { + y2 = $"{YearD}/{MonthD}/30"; + } + else if (month == 12) + { + switch (year) + { + case 1346: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1350: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1354: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1358: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1362: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1366: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1370: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1375: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1379: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1383: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1387: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1391: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1395: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1399: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1403: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1408: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1412: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1416: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1420: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1424: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1428: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1432: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1436: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1441: + y2 = $"{YearD}/{MonthD}/30"; + break; + case 1445: + y2 = $"{YearD}/{MonthD}/30"; + break; + default: + y2 = $"{YearD}/{MonthD}/29"; + break; + + } + } + + return y2.ToGeorgianDateTime(); + } /// /// تعداد روزهای سال را برمیگرداند /// اگر کبیسهد بود سال 366 روزه برمیگرداند diff --git a/Company.Domain/CheckoutAgg/ICheckoutRepository.cs b/Company.Domain/CheckoutAgg/ICheckoutRepository.cs index 23a6b262..4b110f84 100644 --- a/Company.Domain/CheckoutAgg/ICheckoutRepository.cs +++ b/Company.Domain/CheckoutAgg/ICheckoutRepository.cs @@ -111,11 +111,12 @@ public interface ICheckoutRepository : IRepository /// دریافت قردادها و جداول وابسته برای ایجاد فیش /// /// + /// /// /// /// Task> GetContractsAndIncludeDataDataToCreateCheckout( - List ids, string month, long workshopId); + List ids, string year, string month, long workshopId); #endregion } \ No newline at end of file diff --git a/CompanyManagment.Application/CheckoutApplication.cs b/CompanyManagment.Application/CheckoutApplication.cs index 035aeeba..11eedd3b 100644 --- a/CompanyManagment.Application/CheckoutApplication.cs +++ b/CompanyManagment.Application/CheckoutApplication.cs @@ -840,7 +840,7 @@ public class CheckoutApplication : ICheckoutApplication #endregion var getContcatsData = await - _checkoutRepository.GetContractsAndIncludeDataDataToCreateCheckout(ids, month, workshopId); + _checkoutRepository.GetContractsAndIncludeDataDataToCreateCheckout(ids, year, month, workshopId); return getContcatsData; } #endregion diff --git a/CompanyManagment.EFCore/Repository/CheckoutRepository.cs b/CompanyManagment.EFCore/Repository/CheckoutRepository.cs index b9ca4e43..0fffff4f 100644 --- a/CompanyManagment.EFCore/Repository/CheckoutRepository.cs +++ b/CompanyManagment.EFCore/Repository/CheckoutRepository.cs @@ -2762,8 +2762,11 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos return employees; } - public async Task> GetContractsAndIncludeDataDataToCreateCheckout(List ids, string month, long workshopId) + public async Task> GetContractsAndIncludeDataDataToCreateCheckout(List ids,string year, string month, long workshopId) { + var checkoutSelectedStartFa = $"{year}/{month}/01"; + var checkoutSelectedStart = checkoutSelectedStartFa.ToGeorgianDateTime(); + var checkoutSelectedEnd = checkoutSelectedStartFa.FindeEndOfMonthReturnGr(); var op = new OperationResult(); var watcher = new Stopwatch(); watcher.Start(); @@ -3923,6 +3926,26 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos timer.Start(); var separation = new List(); var seprationData = getContracts.Select(x => new { x.EmployeeId, x.ContarctStart, x.ContractEnd }).ToList(); + + foreach (var contract in seprationData) + { + var start = new DateTime(); + var end = new DateTime(); + for (var current = contract.ContarctStart; current <= contract.ContractEnd; current=current.AddDays(1)) + { + if (start == new DateTime() && current >= checkoutSelectedStart && current <= checkoutSelectedEnd) + { + start = current; + } + + if (end == new DateTime() && current == checkoutSelectedEnd) + { + end = current; + } + } + } + + foreach (var item in seprationData) { bool hasLeft = false; diff --git a/ServiceHost/Areas/Admin/Controllers/CheckoutController.cs b/ServiceHost/Areas/Admin/Controllers/CheckoutController.cs index a3bc805b..9be056d6 100644 --- a/ServiceHost/Areas/Admin/Controllers/CheckoutController.cs +++ b/ServiceHost/Areas/Admin/Controllers/CheckoutController.cs @@ -133,8 +133,13 @@ public class CheckoutController : AdminBaseController } + /// + /// ایجاد فیش حقوقی + /// + /// + /// [HttpPost] - public async Task> CreateCheckout() + public async Task> CreateCheckout([FromBody]TestCreateCheckout command) { var ids = new List() @@ -164,10 +169,16 @@ public class CheckoutController : AdminBaseController }; - var test = await _checkoutApplication.CreateCheckoutApi(ids, "1404", "10", 499); + var test = await _checkoutApplication.CreateCheckoutApi(ids, command.year, command.Month, command.WorkshopId); return test; } #endregion } +public class TestCreateCheckout +{ + public string year { get; set; } + public string Month { get; set; } + public long WorkshopId { get; set; } +} \ No newline at end of file