From fedfc372d03761325fdb60c11d6c6f43da32c8f7 Mon Sep 17 00:00:00 2001 From: mahan Date: Mon, 2 Feb 2026 10:22:34 +0330 Subject: [PATCH] add BankController and methods for retrieving bank list; update EmployeeBankInfoController with Excel download functionality --- Company.Domain/BankAgg/IBankRepository.cs | 1 + .../Bank/IBankApplication.cs | 7 ++++ .../BankApplication.cs | 5 +++ .../Repository/BankRepository.cs | 9 ++++ .../Controllers/EmployeeBankInfoController.cs | 42 ++++++++++++++++--- .../Company/EmployeesBankInfo/Index.cshtml.cs | 2 + ServiceHost/Controllers/BankController.cs | 25 +++++++++++ 7 files changed, 86 insertions(+), 5 deletions(-) create mode 100644 ServiceHost/Controllers/BankController.cs diff --git a/Company.Domain/BankAgg/IBankRepository.cs b/Company.Domain/BankAgg/IBankRepository.cs index 96cf189d..b1eca6dd 100644 --- a/Company.Domain/BankAgg/IBankRepository.cs +++ b/Company.Domain/BankAgg/IBankRepository.cs @@ -8,5 +8,6 @@ namespace Company.Domain.BankAgg { public void Remove(Bank entity); List Search(string name); + List GetBanksForSelectList(); } } diff --git a/CompanyManagment.App.Contracts/Bank/IBankApplication.cs b/CompanyManagment.App.Contracts/Bank/IBankApplication.cs index be5d7843..e77021fc 100644 --- a/CompanyManagment.App.Contracts/Bank/IBankApplication.cs +++ b/CompanyManagment.App.Contracts/Bank/IBankApplication.cs @@ -10,5 +10,12 @@ namespace CompanyManagment.App.Contracts.Bank OperationResult Create(CreateBank command); OperationResult Edit(EditBank command); List Search(string name); + List GetBanksForSelectList(); + + } + + public class BankSelectList:SelectListViewModel + { + } } diff --git a/CompanyManagment.Application/BankApplication.cs b/CompanyManagment.Application/BankApplication.cs index d4c0a44d..ef26abc4 100644 --- a/CompanyManagment.Application/BankApplication.cs +++ b/CompanyManagment.Application/BankApplication.cs @@ -104,5 +104,10 @@ namespace CompanyManagment.Application Id = x.Id }).ToList(); } + + public List GetBanksForSelectList() + { + return _bankRepository.GetBanksForSelectList(); + } } } diff --git a/CompanyManagment.EFCore/Repository/BankRepository.cs b/CompanyManagment.EFCore/Repository/BankRepository.cs index 0dbb5d07..4c137bd9 100644 --- a/CompanyManagment.EFCore/Repository/BankRepository.cs +++ b/CompanyManagment.EFCore/Repository/BankRepository.cs @@ -31,4 +31,13 @@ public class BankRepository:RepositoryBase,IBankRepository BankLogoPictureMediaId = x.BankLogoMediaId }).ToList(); } + + public List GetBanksForSelectList() + { + return context.Banks.Select(x => new BankSelectList() + { + Id = x.id, + Text = x.BankName + }).ToList(); + } } \ No newline at end of file diff --git a/ServiceHost/Areas/Client/Controllers/EmployeeBankInfoController.cs b/ServiceHost/Areas/Client/Controllers/EmployeeBankInfoController.cs index dbf0ad4f..ade64458 100644 --- a/ServiceHost/Areas/Client/Controllers/EmployeeBankInfoController.cs +++ b/ServiceHost/Areas/Client/Controllers/EmployeeBankInfoController.cs @@ -1,5 +1,6 @@ using _0_Framework.Application; using CompanyManagment.App.Contracts.EmployeeBankInformation; +using CompanyManagement.Infrastructure.Excel.EmployeeBankInfo; using Microsoft.AspNetCore.Mvc; using ServiceHost.BaseControllers; @@ -30,20 +31,51 @@ public class EmployeeBankInfoController : ClientBaseController return await _employeeBankInformationApplication.GetDetailsByEmployeeIdAsync(_workshopId, employeeId); } - public ActionResult Create(CreateEmployeeInformation command) + [HttpPost] + public ActionResult Create([FromBody]CreateEmployeeInformation command) { command.WorkshopId = _workshopId; return _employeeBankInformationApplication.Create(command); } - - public ActionResult Edit(EditEmployeeInformation command) + [HttpPut] + public ActionResult Edit([FromBody]EditEmployeeInformation command) { command.WorkshopId = _workshopId; return _employeeBankInformationApplication.Edit(command); } - - public ActionResult Remove(long id) + [HttpDelete] + public ActionResult Remove([FromQuery]long id) { return _employeeBankInformationApplication.Remove(id); } + + [HttpPost] + public ActionResult DownloadExcel([FromBody]DownloadExcelRequest request) + { + + var employeeBankInformationViewModelForExcels = _employeeBankInformationApplication.SearchForExcel(_workshopId, + new EmployeeBankInformationSearchModel() { EmployeeBankInfoIds = request.Ids }); + + var resultViewModel = employeeBankInformationViewModelForExcels.Select(x => new EmployeeBankInfoExcelViewModel + { + Name = x.EmployeeName, + BankAccounts = x.BankInformationList.Select(b => new BankInfoExcelViewModel() + { + IsDefault = b.IsDefault, + ShebaNumber = b.ShebaNumber, + AccountNumber = b.BankAccountNumber, + BankName = b.BankName, + CardNumber = b.CardNumber + }).ToList() + }).ToList(); + + var bytes = EmployeeBankInfoExcelGenerator.Generate(resultViewModel); + return File(bytes, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + $"اطلاعات بانکی پرسنل.xlsx"); + } +} +public class DownloadExcelRequest +{ + public List Ids { get; set; } } \ No newline at end of file diff --git a/ServiceHost/Areas/Client/Pages/Company/EmployeesBankInfo/Index.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/EmployeesBankInfo/Index.cshtml.cs index 53b162ef..b198a692 100644 --- a/ServiceHost/Areas/Client/Pages/Company/EmployeesBankInfo/Index.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/EmployeesBankInfo/Index.cshtml.cs @@ -8,6 +8,8 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using System.Security.Claims; using CompanyManagement.Infrastructure.Excel.EmployeeBankInfo; +using CompanyManagment.App.Contracts.Bank; +using CompanyManagement.Infrastructure.Excel.EmployeeBankInfo; namespace ServiceHost.Areas.Client.Pages.Company.EmployeesBankInfo { diff --git a/ServiceHost/Controllers/BankController.cs b/ServiceHost/Controllers/BankController.cs new file mode 100644 index 00000000..b9368ef9 --- /dev/null +++ b/ServiceHost/Controllers/BankController.cs @@ -0,0 +1,25 @@ +using CompanyManagment.App.Contracts.Bank; +using Microsoft.AspNetCore.Mvc; +using ServiceHost.BaseControllers; + +namespace ServiceHost.Controllers; + +public class BankController : GeneralBaseController +{ + private readonly IBankApplication _bankApplication; + + public BankController(IBankApplication bankApplication) + { + _bankApplication = bankApplication; + } + + /// + /// دریافت لیست بانک‌ها برای SelectList + /// + /// + [HttpGet] + public ActionResult> GetBankList() + { + return _bankApplication.GetBanksForSelectList(); + } +}