diff --git a/0_Framework/InfraStructure/QueryableExtensions.cs b/0_Framework/InfraStructure/QueryableExtensions.cs index 8d28d29f..bcfb7bc6 100644 --- a/0_Framework/InfraStructure/QueryableExtensions.cs +++ b/0_Framework/InfraStructure/QueryableExtensions.cs @@ -5,14 +5,14 @@ namespace _0_Framework.InfraStructure; public static class QueryableExtensions { - public static IQueryable ApplyPagination(this IQueryable query, int page, int pageSize) + public static IQueryable ApplyPagination(this IQueryable query, int page, int pageSize = 30) { if (page <= 0) page = 1; if (pageSize <= 0) pageSize = 10; return query.Skip((page - 1) * pageSize).Take(pageSize); } - public static IEnumerable ApplyPagination(this IEnumerable source, int page, int pageSize) + public static IEnumerable ApplyPagination(this IEnumerable source, int page, int pageSize = 30) { if (page <= 0) page = 1; if (pageSize <= 0) pageSize = 10; diff --git a/Company.Domain/InsuranceListAgg/IInsuranceListRepository.cs b/Company.Domain/InsuranceListAgg/IInsuranceListRepository.cs index 1ff57039..2e7fda1d 100644 --- a/Company.Domain/InsuranceListAgg/IInsuranceListRepository.cs +++ b/Company.Domain/InsuranceListAgg/IInsuranceListRepository.cs @@ -67,6 +67,8 @@ public interface IInsuranceListRepository:IRepository Task GetTabCounts(InsuranceListSearchModel searchModel); #endregion + + Task> GetNotCreatedWorkshop(InsuranceListSearchModel searchModel); } diff --git a/CompanyManagment.App.Contracts/InsuranceList/IInsuranceListApplication.cs b/CompanyManagment.App.Contracts/InsuranceList/IInsuranceListApplication.cs index a93637cb..51e29b09 100644 --- a/CompanyManagment.App.Contracts/InsuranceList/IInsuranceListApplication.cs +++ b/CompanyManagment.App.Contracts/InsuranceList/IInsuranceListApplication.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using _0_Framework.Application; using CompanyManagment.App.Contracts.InsuranceList; using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; namespace CompanyManagment.App.Contracts.InsuranceList; @@ -47,4 +48,6 @@ public interface IInsuranceListApplication Task GetTabCounts(InsuranceListSearchModel searchModel); #endregion + + Task> GetNotCreatedWorkshop(InsuranceListSearchModel searchModel); } \ No newline at end of file diff --git a/CompanyManagment.Application/InsuranceListApplication.cs b/CompanyManagment.Application/InsuranceListApplication.cs index 3e5b1d16..2c0e032e 100644 --- a/CompanyManagment.Application/InsuranceListApplication.cs +++ b/CompanyManagment.Application/InsuranceListApplication.cs @@ -2366,5 +2366,10 @@ public class InsuranceListApplication : IInsuranceListApplication return _insuranceListRepositpry.GetTabCounts(searchModel); } + public async Task> GetNotCreatedWorkshop(InsuranceListSearchModel searchModel) + { + return await _insuranceListRepositpry.GetNotCreatedWorkshop(searchModel); + } + #endregion } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/InsuranceListRepository.cs b/CompanyManagment.EFCore/Repository/InsuranceListRepository.cs index 1419fd36..94cc98f4 100644 --- a/CompanyManagment.EFCore/Repository/InsuranceListRepository.cs +++ b/CompanyManagment.EFCore/Repository/InsuranceListRepository.cs @@ -342,43 +342,7 @@ public class InsuranceListRepository : RepositoryBase, IIns var acountId = _authHelper.CurrentAccountId(); var workshopIds = _context.WorkshopAccounts.Where(x => x.AccountId == acountId).Select(x => x.WorkshopId); - - #region sample - - //var query = _context.InsuranceListSet - // .Where(x => workshopIds.Contains(x.WorkshopId)) - // .Join(_context.Workshops.Include(x => x.InsuranceWorkshopInfo), - // insurance => insurance.WorkshopId, - // workshop => workshop.id, - // (insurance, workshop) => new { insurance, workshop }) - // .Join(_context.WorkshopEmployers, - // result => result.workshop.id, - // employer => employer.WorkshopId, - // (result, employer) => new InsuranceListViewModel - // { - // Id = result.insurance.id, - // Year = result.insurance.Year, - // MonthNumber = result.insurance.Month, - // Month = result.insurance.Month.GetMonthByNumber(), - // WorkShopId = result.insurance.WorkshopId, - // WorkShopCode = result.workshop.InsuranceWorkshopInfo != null ? result.workshop.InsuranceWorkshopInfo.InsuranceCode : result.workshop.InsuranceCode, - // WorkShopName = result.workshop.InsuranceWorkshopInfo != null ? result.workshop.InsuranceWorkshopInfo.WorkshopName : result.workshop.WorkshopFullName, - // TypeOfInsuranceSend = result.workshop.TypeOfInsuranceSend == "NormalList" ? "عادی" : - // result.workshop.TypeOfInsuranceSend == "Govermentlist" ? "کمک دولت" : - // result.workshop.TypeOfInsuranceSend == "Familylist" ? "خانوادگی" : "", - // FixedSalary = result.workshop.FixedSalary, - // StrFixedSalary = result.workshop.FixedSalary ? "دارد" : "ندارد", - // EmployerName = result.workshop.InsuranceWorkshopInfo != null ? result.workshop.InsuranceWorkshopInfo.EmployerName : result.workshop.WorkshopFullName, - // Branch = "", - // City = "", - // ConfirmSentlist = result.insurance.ConfirmSentlist, - // IsBlockCantracingParty = "", - // EmployerId = employer.EmployerId, - - // }); - - - #endregion + var query = _context.InsuranceListSet .Where(x => workshopIds.Contains(x.WorkshopId)) @@ -1509,6 +1473,7 @@ public class InsuranceListRepository : RepositoryBase, IIns var workshopIds = _context.WorkshopAccounts .Where(a => a.AccountId == acountId) .Select(a => a.WorkshopId); + var query = _context.InsuranceListSet .Where(x => workshopIds.Contains(x.WorkshopId)) .Join(_context.Workshops.Include(x => x.InsuranceWorkshopInfo), @@ -1605,7 +1570,59 @@ public class InsuranceListRepository : RepositoryBase, IIns } - /// + public async Task> GetNotCreatedWorkshop(InsuranceListSearchModel searchModel) + { + if (string.IsNullOrEmpty(searchModel.Month) || string.IsNullOrEmpty(searchModel.Year) ) + { + return []; + } + var acountId = _authHelper.CurrentAccountId(); + var accountWorkshopIds = _context.WorkshopAccounts.Where(x => x.AccountId == acountId) + .Select(x => x.WorkshopId); + + var insuranceWorkshops = _context.Workshops + .Where(x=>x.InsuranceCode != null && x.InsuranceCode.Length >=10 && accountWorkshopIds.Contains(x.id) && x.IsActiveString== "true"); + + + var existInsurances = _context.InsuranceListSet + .Where(x=>x.Month == searchModel.Month&& x.Year == searchModel.Year).AsQueryable(); + + var notCreatedWorkshop = insuranceWorkshops.Where(w=>!existInsurances.Select(x=>x.WorkshopId).Contains(w.id)); + + var res = await notCreatedWorkshop + .GroupJoin(_context.WorkshopEmployers, + workshop => workshop.id, + workshopEmployer => workshopEmployer.WorkshopId, + (workshop, workshopEmployer) => new { workshop, workshopEmployer }) + .SelectMany(x => x.workshopEmployer.DefaultIfEmpty(), (x, workshopEmployer) => new { x.workshop, workshopEmployer }) + .GroupJoin(_context.Employers, + allResult => allResult.workshopEmployer.EmployerId, + employer => employer.id, + (allResult, employer) => new { allResult.workshop, allResult.workshopEmployer, employer }) + .SelectMany(x => x.employer.DefaultIfEmpty(), (x, employer) => new { x.workshop, x.workshopEmployer, employer }) + .Select(x => new InsuranceListViewModel + { + WorkShopId = x.workshop.id, + WorkShopCode = x.workshop.InsuranceCode, + WorkShopName = x.workshop.InsuranceWorkshopInfo != null ? x.workshop.InsuranceWorkshopInfo.WorkshopName : x.workshop.WorkshopFullName, + EmployerName = x.employer != null ? x.employer.FullName : (x.workshop.InsuranceWorkshopInfo != null ? x.workshop.InsuranceWorkshopInfo.EmployerName : x.workshop.WorkshopFullName), + Year = searchModel.Year, + Month = searchModel.Month, + TypeOfInsuranceSend = x.workshop.TypeOfInsuranceSend == "NormalList" ? "عادی" : + x.workshop.TypeOfInsuranceSend == "Govermentlist" ? "کمک دولت" : + x.workshop.TypeOfInsuranceSend == "Familylist" ? "خانوادگی" : "", + FixedSalary = (bool)x.workshop.FixedSalary, + StrFixedSalary = (bool)x.workshop.FixedSalary ? "دارد" : "ندارد", + EmployerId = x.workshopEmployer != null ? x.workshopEmployer.EmployerId : 0, + ArchiveCode = x.workshop.ArchiveCode, + City = x.workshop.City, + }).Skip(searchModel.PageIndex).Take(30).ToListAsync(); + + return res; + + } + + /// /// /// /// diff --git a/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/Index.cshtml b/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/Index.cshtml index cc37be84..63560c20 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/Index.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/Index.cshtml @@ -320,6 +320,11 @@
+ + +
+
+ + +
+ +
+
+ بازرسی: + ${booleanSvgResponse(item.inspectionDone)} +
+ +
+ بدهی: + ${booleanSvgResponse(item.debtDone)} +
+
+ +
+
+ تاییده کارفرما: + ${booleanSvgResponse(item.employerApproved)} +
+ +
+ ارسال لیست: + ${booleanSvgResponse(item.confirmSentlist, item.employerApprovalStatus)} +
+
+ +
+
+ شعبه تامین اجتماعی: + ${item.branch === `` ? `-` : item.branch} +
+ +
+ لیست مقطوع: + ${item.strFixedSalary} +
+
+ +
+
+ شهرستان: + ${item.city === `` ? `-` : item.city} +
+ +
+ نوع ارسال لیست: + ${item.typeOfInsuranceSend} +
+
+ +
+
+ نام کافرما: + ${item.employerName} +
+
+ +
+ +
+ +
+
`; + + pageIndexJs++; + }); + } else { + var emptyHtml = ``; + if (pageIndexJs === responseData.length) { + emptyHtml = ` +
+
+ +
اطلاعاتی وجود ندارد.
+
+
`; + } + + html += emptyHtml; + htmlMobile += emptyHtml; + hasMoreData = false; + } + + $("#load-data-html").append(html); + $("#load-data-html-mobile").append(htmlMobile); + }); + } +} function removeSearch() { window.location.href = baseUrl; } @@ -207,6 +475,7 @@ async function loadGetTabCounts() { try { var response = await ajaxService.get(ajaxGetTabCountsUrl, searchModel, true); + updateStatus('notStarted', response.notStarted); updateStatus('inProgress', response.inProgress); updateStatus('readyToSendList', response.readyToSendList); @@ -234,7 +503,10 @@ $(window).scroll(function () { if ($(window).scrollTop() + $(window).height() > $(document).height() - 600) { var $activeTab = $('.tab-bar__tab--active'); var activeValue = $activeTab.val(); - loadSearchNew(activeValue); + if (activeValue==="4") + loadNotCreatedData(); + else + loadSearchNew(activeValue); } if ($(this).scrollTop() > 100) { @@ -249,7 +521,7 @@ function loadSearchNew(status = 0) { var html = ""; var htmlMobile = ""; - + var paramsUrl = UrlParamsBuilder.readParams([ "year", "month", @@ -277,25 +549,26 @@ function loadSearchNew(status = 0) { }; var b = pageIndexJs % 30; - + if (b === 0 && hasMoreData) { ajaxService.get(ajaxSearchNewUrl, searchModel, false) .then(response => { var responseData = response.data; - if (responseData.length > 0) { + if (responseData.length > 0) { responseData.forEach(function (item) { + var n = pageIndexJs + 1; var pathDSKKAR00 = item.workShopId + "\\" + item.year + "_" + item.month + "\\DSKKAR00.dbf"; var pathDSKWOR00 = item.workShopId + "\\" + item.year + "_" + item.month + "\\DSKWOR00.dbf"; - + const rowBgClass = item.isBlockCantracingParty === "true" ? "tw-bg-[#b1c3c3] hover:tw-bg-[#bbc6c6]" : item.confirmSentlist - ? "tw-bg-[#d8f5d2] hover:tw-bg-[#c7ebc0]" - : (n % 2 === 0 - ? "tw-bg-[#ecffff] hover:tw-bg-[#C9F0F0]" - : "tw-bg-[#ddf4f4] hover:tw-bg-[#C9F0F0]"); + ? "tw-bg-[#d8f5d2] hover:tw-bg-[#c7ebc0]" + : (n % 2 === 0 + ? "tw-bg-[#ecffff] hover:tw-bg-[#C9F0F0]" + : "tw-bg-[#ddf4f4] hover:tw-bg-[#C9F0F0]"); html += `
@@ -307,7 +580,8 @@ function loadSearchNew(status = 0) {
${item.year}
${convertMonthToString(item.month)}
-
${item.archiveCode}
+
${item.archiveCode}
+
${item.workShopCode}
@@ -389,8 +663,9 @@ function loadSearchNew(status = 0) {
${item.year}
-
${convertMonthToString(item.month)}
-
${item.archiveCode}
+
${convertMonthToString(item.month)}
+
${item.archiveCode}
+
${item.workShopName}
@@ -505,7 +780,7 @@ function loadSearchNew(status = 0) { function generateButtons(item, pathDSKKAR00, pathDSKWOR00) { var html = ''; var htmlMobile = ''; - + var canShowActions = (currentAccountId === 1 && item.confirmSentlist) || !item.confirmSentlist; var isDisabled = item.isBlockCantracingParty === 'true' ? 'disable' : ''; @@ -548,11 +823,11 @@ function generateButtons(item, pathDSKKAR00, pathDSKWOR00) { } //if (item.inspectionDone && item.debtDone && item.employerApproved && item.confirmSentlist) { - //if (item.inspectionDone || item.debtDone || item.employerApproved || item.confirmSentlist) { + if (item.inspectionDone || item.debtDone || item.employerApproved || item.confirmSentlist) { // Confirm List and Print Button if (hasPermission_80215) { html += ` - + @@ -564,7 +839,7 @@ function generateButtons(item, pathDSKKAR00, pathDSKWOR00) { پرینت `; } - //} + } if (item.inspectionDone || item.debtDone || item.employerApproved || item.confirmSentlist) { // Summary List and Print Button @@ -627,7 +902,7 @@ function booleanSvgResponse(bool, employerApprovalStatus) { var isWrittenVerbal = employerApprovalStatus === 1; var svg = ``; - if (bool) { + if (bool) { svg = ` @@ -687,7 +962,7 @@ function convertMonthToString(value) { result = "بدون ماه"; break; } - + return result; } @@ -827,8 +1102,8 @@ searchBoxWorkshop.on('keyup keypress', function (e) { //keyboard Arrow Key Select And Enter liListWorkshop = $('#empWorkshop ul li'); mixContainerAndSerchResultWorkshop.animate({ - scrollTop: $(liListWorkshop.eq(0)).offset().top - containerWorkshop.offset().top + containerWorkshop.scrollTop() - }, + scrollTop: $(liListWorkshop.eq(0)).offset().top - containerWorkshop.offset().top + containerWorkshop.scrollTop() + }, 50); if (e.which === 40) {// if ArrowUp if (countWorkshop > 0 && countWorkshop <= liListWorkshop.length) { @@ -840,8 +1115,8 @@ searchBoxWorkshop.on('keyup keypress', function (e) { if (countWorkshop > 4) { //ScrollDown mixContainerAndSerchResultWorkshop.animate({ - scrollTop: $(liPointerWorkshop).offset().top - containerWorkshop.offset().top + containerWorkshop.scrollTop() - }, + scrollTop: $(liPointerWorkshop).offset().top - containerWorkshop.offset().top + containerWorkshop.scrollTop() + }, 50); } countWorkshop += 1; @@ -984,8 +1259,8 @@ searchBoxEmployer.on('keyup keypress', function (e) { //keyboard Arrow Key Select And Enter liListEmployer = $('#empEmployer ul li'); mixContainerAndSerchResultEmployer.animate({ - scrollTop: $(liListEmployer.eq(0)).offset().top - containerEmployer.offset().top + containerEmployer.scrollTop() - }, + scrollTop: $(liListEmployer.eq(0)).offset().top - containerEmployer.offset().top + containerEmployer.scrollTop() + }, 50); if (e.which === 40) {// if ArrowUp if (countEmployer > 0 && countEmployer <= liListEmployer.length) { @@ -997,8 +1272,8 @@ searchBoxEmployer.on('keyup keypress', function (e) { if (countEmployer > 4) { //ScrollDown mixContainerAndSerchResultEmployer.animate({ - scrollTop: $(liPointerEmployer).offset().top - containerEmployer.offset().top + containerEmployer.scrollTop() - }, + scrollTop: $(liPointerEmployer).offset().top - containerEmployer.offset().top + containerEmployer.scrollTop() + }, 50); } countEmployer += 1; @@ -1017,8 +1292,8 @@ searchBoxEmployer.on('keyup keypress', function (e) { liPointerEmployer = liListEmployer.eq(countEmployer); //ScrollUp mixContainerAndSerchResultEmployer.animate({ - scrollTop: $(liPointerEmployer).offset().top - containerEmployer.offset().top + containerEmployer.scrollTop() - }, + scrollTop: $(liPointerEmployer).offset().top - containerEmployer.offset().top + containerEmployer.scrollTop() + }, 50); } }