From f0feac9601f1aa2b66a92fadeaa289dcd59ab643 Mon Sep 17 00:00:00 2001 From: mahan Date: Wed, 14 Jan 2026 19:27:23 +0330 Subject: [PATCH 1/4] add salary aid controller --- .../Client/Controllers/SalaryAidController.cs | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 ServiceHost/Areas/Client/Controllers/SalaryAidController.cs diff --git a/ServiceHost/Areas/Client/Controllers/SalaryAidController.cs b/ServiceHost/Areas/Client/Controllers/SalaryAidController.cs new file mode 100644 index 00000000..cea07f23 --- /dev/null +++ b/ServiceHost/Areas/Client/Controllers/SalaryAidController.cs @@ -0,0 +1,23 @@ +using CompanyManagment.App.Contracts.SalaryAid; +using Microsoft.AspNetCore.Mvc; +using ServiceHost.BaseControllers; + +namespace ServiceHost.Areas.Client.Controllers; + +public class SalaryAidController:ClientBaseController +{ + private readonly ISalaryAidApplication _salaryAidApplication; + + public SalaryAidController(ISalaryAidApplication salaryAidApplication) + { + _salaryAidApplication = salaryAidApplication; + } + + [HttpGet] + public ActionResult GetList(SalaryAidSearchViewModel searchModel) + { + var result = _salaryAidApplication.GetSearchListAsGrouped(searchModel); + return Ok(result); + } + +} \ No newline at end of file From b22aa86aea45440b08ba81a92f0bc948b131b29f Mon Sep 17 00:00:00 2001 From: mahan Date: Thu, 15 Jan 2026 10:35:43 +0330 Subject: [PATCH 2/4] add create - edit - remove salary aid api controller --- .../SalaryAid/CreateSalaryAidViewModel.cs | 1 - .../Client/Controllers/SalaryAidController.cs | 67 ++++++++++++++++++- 2 files changed, 64 insertions(+), 4 deletions(-) diff --git a/CompanyManagment.App.Contracts/SalaryAid/CreateSalaryAidViewModel.cs b/CompanyManagment.App.Contracts/SalaryAid/CreateSalaryAidViewModel.cs index 18d88d02..32112ff5 100644 --- a/CompanyManagment.App.Contracts/SalaryAid/CreateSalaryAidViewModel.cs +++ b/CompanyManagment.App.Contracts/SalaryAid/CreateSalaryAidViewModel.cs @@ -8,7 +8,6 @@ public class CreateSalaryAidViewModel public long WorkshopId { get; set; } public string Amount { get; set; } public string SalaryDateTime { get; set; } - public string CalculationDateTime { get; set; } public string NationalCode { get; set; } public int CalculationMonth { get; set; } public int CalculationYear { get; set; } diff --git a/ServiceHost/Areas/Client/Controllers/SalaryAidController.cs b/ServiceHost/Areas/Client/Controllers/SalaryAidController.cs index cea07f23..a7641788 100644 --- a/ServiceHost/Areas/Client/Controllers/SalaryAidController.cs +++ b/ServiceHost/Areas/Client/Controllers/SalaryAidController.cs @@ -1,3 +1,4 @@ +using _0_Framework.Application; using CompanyManagment.App.Contracts.SalaryAid; using Microsoft.AspNetCore.Mvc; using ServiceHost.BaseControllers; @@ -7,17 +8,77 @@ namespace ServiceHost.Areas.Client.Controllers; public class SalaryAidController:ClientBaseController { private readonly ISalaryAidApplication _salaryAidApplication; + private readonly long _workshopId; - public SalaryAidController(ISalaryAidApplication salaryAidApplication) + public SalaryAidController(ISalaryAidApplication salaryAidApplication,IAuthHelper authHelper) { _salaryAidApplication = salaryAidApplication; + _workshopId = authHelper.GetWorkshopId(); } [HttpGet] - public ActionResult GetList(SalaryAidSearchViewModel searchModel) + public ActionResult GetList([FromQuery]SalaryAidSearchViewModel searchModel) { var result = _salaryAidApplication.GetSearchListAsGrouped(searchModel); return Ok(result); } - + + [HttpPost] + public ActionResult Create([FromBody]CreateSalaryAidRequest request) + { + var command = new CreateSalaryAidViewModel() + { + Amount = request.Amount.ToMoney(), + CalculationMonth = request.CalculationMonth, + CalculationYear = request.CalculationYear, + EmployeeIds = request.EmployeeIds, + WorkshopId = _workshopId, + SalaryDateTime = request.SalaryDateTime, + + }; + var result = _salaryAidApplication.Create(command); + return result; + } + + [HttpPut] + public ActionResult Edit([FromBody]EditSalaryAidRequest request) + { + var command = new EditSalaryAidViewModel() + { + Id = request.Id, + Amount = request.Amount.ToMoney(), + CalculationMonth = request.CalculationMonth, + CalculationYear = request.CalculationYear, + SalaryDateTime = request.SalaryDateTime, + WorkshopId = _workshopId, + }; + var result = _salaryAidApplication.Edit(command); + return result; + } + + [HttpDelete("{id:long}")] + public ActionResult Delete(long id) + { + var result = _salaryAidApplication.Remove(id); + return result; + } +} + +public class EditSalaryAidRequest +{ + public long Id { get; set; } + public long EmployeeId { get; set; } + public double Amount { get; set; } + public string SalaryDateTime { get; set; } + public int CalculationMonth { get; set; } + public int CalculationYear { get; set; } +} + +public class CreateSalaryAidRequest +{ + public List EmployeeIds { get; set; } + public double Amount { get; set; } + public string SalaryDateTime { get; set; } + public int CalculationMonth { get; set; } + public int CalculationYear { get; set; } } \ No newline at end of file From a0d2023a6c2582a6dba97c96c97098f918953b65 Mon Sep 17 00:00:00 2001 From: mahan Date: Thu, 5 Feb 2026 10:32:08 +0330 Subject: [PATCH 3/4] add Excel validation for salary aid import and update pagination in salary aid list --- .../SalaryAid/SalaryAidSearchViewModel.cs | 4 +- .../SalaryAid/SalaryAidsGroupedViewModel.cs | 3 +- .../Repository/SalaryAidRepository.cs | 39 +++++++++++-------- .../Client/Controllers/SalaryAidController.cs | 12 +++++- 4 files changed, 37 insertions(+), 21 deletions(-) diff --git a/CompanyManagment.App.Contracts/SalaryAid/SalaryAidSearchViewModel.cs b/CompanyManagment.App.Contracts/SalaryAid/SalaryAidSearchViewModel.cs index c6625186..095a65f6 100644 --- a/CompanyManagment.App.Contracts/SalaryAid/SalaryAidSearchViewModel.cs +++ b/CompanyManagment.App.Contracts/SalaryAid/SalaryAidSearchViewModel.cs @@ -3,15 +3,15 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using _0_Framework.Application; namespace CompanyManagment.App.Contracts.SalaryAid; -public class SalaryAidSearchViewModel +public class SalaryAidSearchViewModel:PaginationRequest { public string StartDate { get; set; } public string EndDate { get; set; } public long EmployeeId { get; set; } public long WorkshopId { get; set; } - public int PageIndex { get; set; } public bool ShowAsGrouped { get; set; } } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/SalaryAid/SalaryAidsGroupedViewModel.cs b/CompanyManagment.App.Contracts/SalaryAid/SalaryAidsGroupedViewModel.cs index 4787c202..a6c16bc9 100644 --- a/CompanyManagment.App.Contracts/SalaryAid/SalaryAidsGroupedViewModel.cs +++ b/CompanyManagment.App.Contracts/SalaryAid/SalaryAidsGroupedViewModel.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Security.Cryptography; +using _0_Framework.Application; namespace CompanyManagment.App.Contracts.SalaryAid; @@ -7,7 +8,7 @@ public class SalaryAidsGroupedViewModel { public List GroupedByEmployee { get; set; } public List GroupedByDate { get; set; } - public List SalaryAidListViewModels { get; set; } + public PagedResult SalaryAidListViewModels { get; set; } } diff --git a/CompanyManagment.EFCore/Repository/SalaryAidRepository.cs b/CompanyManagment.EFCore/Repository/SalaryAidRepository.cs index caf85912..d34cc35f 100644 --- a/CompanyManagment.EFCore/Repository/SalaryAidRepository.cs +++ b/CompanyManagment.EFCore/Repository/SalaryAidRepository.cs @@ -197,23 +197,28 @@ public class SalaryAidRepository : RepositoryBase, ISalaryAidRe query = query.Where(x => x.SalaryAidDateTime >= startDate && x.SalaryAidDateTime <= endDate); } - result.SalaryAidListViewModels = query.OrderByDescending(x => x.SalaryAidDateTime).Skip(searchModel.PageIndex).Take(30).ToList().Select( - x => new SalaryAidViewModel() - { - Amount = x.Amount.ToMoney(), - CreationDate = x.CreationDate.ToFarsi(), - Id = x.id, - EmployeeId = x.EmployeeId, - SalaryAidDateTimeFa = x.SalaryAidDateTime.ToFarsi(), - SalaryAidDateTimeGe = x.SalaryAidDateTime, - WorkshopId = x.WorkshopId, - YearFa = x.SalaryAidDateTime.ToFarsi().Substring(0, 4), - MonthFa = x.SalaryAidDateTime.ToFarsi().Substring(5, 2), - PersonnelCode = personnelCodes.FirstOrDefault(p => p.EmployeeId == x.EmployeeId).PersonnelCode.ToString(), - EmployeeFullName = employees.FirstOrDefault(e => e.id == x.EmployeeId).FullName, - AmountDouble = x.Amount, - }).ToList(); - + result.SalaryAidListViewModels = new PagedResult() + { + TotalCount = query.Count(), + List = query.OrderByDescending(x => x.SalaryAidDateTime).ApplyPagination(searchModel.PageIndex,searchModel.PageSize).ToList() + .Select(x => new SalaryAidViewModel() + { + Amount = x.Amount.ToMoney(), + CreationDate = x.CreationDate.ToFarsi(), + Id = x.id, + EmployeeId = x.EmployeeId, + SalaryAidDateTimeFa = x.SalaryAidDateTime.ToFarsi(), + SalaryAidDateTimeGe = x.SalaryAidDateTime, + WorkshopId = x.WorkshopId, + YearFa = x.SalaryAidDateTime.ToFarsi().Substring(0, 4), + MonthFa = x.SalaryAidDateTime.ToFarsi().Substring(5, 2), + PersonnelCode = personnelCodes.FirstOrDefault(p => p.EmployeeId == x.EmployeeId).PersonnelCode + .ToString(), + EmployeeFullName = employees.FirstOrDefault(e => e.id == x.EmployeeId).FullName, + AmountDouble = x.Amount, + }).ToList() + }; + return result; } diff --git a/ServiceHost/Areas/Client/Controllers/SalaryAidController.cs b/ServiceHost/Areas/Client/Controllers/SalaryAidController.cs index a7641788..78d21157 100644 --- a/ServiceHost/Areas/Client/Controllers/SalaryAidController.cs +++ b/ServiceHost/Areas/Client/Controllers/SalaryAidController.cs @@ -1,4 +1,5 @@ using _0_Framework.Application; +using CompanyManagement.Infrastructure.Excel.SalaryAid; using CompanyManagment.App.Contracts.SalaryAid; using Microsoft.AspNetCore.Mvc; using ServiceHost.BaseControllers; @@ -9,10 +10,12 @@ public class SalaryAidController:ClientBaseController { private readonly ISalaryAidApplication _salaryAidApplication; private readonly long _workshopId; + private readonly SalaryAidImportExcel _salaryAidImportExcel; - public SalaryAidController(ISalaryAidApplication salaryAidApplication,IAuthHelper authHelper) + public SalaryAidController(ISalaryAidApplication salaryAidApplication,IAuthHelper authHelper, SalaryAidImportExcel salaryAidImportExcel) { _salaryAidApplication = salaryAidApplication; + _salaryAidImportExcel = salaryAidImportExcel; _workshopId = authHelper.GetWorkshopId(); } @@ -62,6 +65,13 @@ public class SalaryAidController:ClientBaseController var result = _salaryAidApplication.Remove(id); return result; } + + public ActionResult> OnPostValidateExcel(IFormFile excel) + { + var validation = _salaryAidImportExcel.ReadAndValidateExcel(excel, _workshopId); + + return validation; + } } public class EditSalaryAidRequest From ffe8fa67e2b18c8f9906cb13296803315ca2d69b Mon Sep 17 00:00:00 2001 From: mahan Date: Thu, 5 Feb 2026 10:33:09 +0330 Subject: [PATCH 4/4] refactor salary aid controller to update Excel validation endpoint --- ServiceHost/Areas/Client/Controllers/SalaryAidController.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ServiceHost/Areas/Client/Controllers/SalaryAidController.cs b/ServiceHost/Areas/Client/Controllers/SalaryAidController.cs index 78d21157..5cb85812 100644 --- a/ServiceHost/Areas/Client/Controllers/SalaryAidController.cs +++ b/ServiceHost/Areas/Client/Controllers/SalaryAidController.cs @@ -65,8 +65,8 @@ public class SalaryAidController:ClientBaseController var result = _salaryAidApplication.Remove(id); return result; } - - public ActionResult> OnPostValidateExcel(IFormFile excel) + [HttpPost("validate-excel")] + public ActionResult> ValidateExcel(IFormFile excel) { var validation = _salaryAidImportExcel.ReadAndValidateExcel(excel, _workshopId);