diff --git a/CompanyManagment.App.Contracts/Loan/ILoanApplication.cs b/CompanyManagment.App.Contracts/Loan/ILoanApplication.cs index f55f3132..0e29fb6a 100644 --- a/CompanyManagment.App.Contracts/Loan/ILoanApplication.cs +++ b/CompanyManagment.App.Contracts/Loan/ILoanApplication.cs @@ -21,6 +21,6 @@ public class LoanGroupedViewModel { public List GroupedByDate { get; set; } public ListGroupedByEmployee { get; set; } - public List LoanListViewModel { get; set; } + public PagedResult LoanListViewModel { get; set; } } diff --git a/CompanyManagment.App.Contracts/Loan/LoanSearchViewModel.cs b/CompanyManagment.App.Contracts/Loan/LoanSearchViewModel.cs index f1bf0c5a..8a5b5b8b 100644 --- a/CompanyManagment.App.Contracts/Loan/LoanSearchViewModel.cs +++ b/CompanyManagment.App.Contracts/Loan/LoanSearchViewModel.cs @@ -16,5 +16,6 @@ public class LoanSearchViewModel public string EndDate { get; set; } public int PageIndex { get; set; } + public int PageSize { get; set; } = 30; public bool ShowAsGrouped { get; set; } } diff --git a/CompanyManagment.EFCore/Repository/LoanRepository.cs b/CompanyManagment.EFCore/Repository/LoanRepository.cs index 05c681e7..bdfcec42 100644 --- a/CompanyManagment.EFCore/Repository/LoanRepository.cs +++ b/CompanyManagment.EFCore/Repository/LoanRepository.cs @@ -171,22 +171,29 @@ public class LoanRepository : RepositoryBase, ILoanRepository query = query.Where(x => x.StartInstallmentPayment >= startDate && x.StartInstallmentPayment <= endDate); } - result.LoanListViewModel = query.OrderByDescending(x => x.StartInstallmentPayment).Skip(searchModel.PageIndex) - .Take(30).ToList() - .Select(x => new LoanViewModel() - { - EmployeeFullName = employees.FirstOrDefault(e => e.id == x.EmployeeId).FullName, - PersonnelCode = personnelCodes.FirstOrDefault(p => p.EmployeeId == x.EmployeeId).PersonnelCode.ToString(), - Amount = x.Amount.ToMoney(), - AmountPerMonth = x.AmountPerMonth.ToMoney(), - StartDateTime = x.StartInstallmentPayment.ToFarsi(), - Count = x.Count, - Id = x.id, - WorkshopId = x.WorkshopId, - EmployeeId = x.EmployeeId, - YearFa = pc.GetYear(x.StartInstallmentPayment).ToString(), + result.LoanListViewModel = new PagedResult() + { + TotalCount = query.Count(), + List = query.OrderByDescending(x => x.StartInstallmentPayment) + .ApplyPagination(searchModel.PageIndex, searchModel.PageSize) + .Take(30).ToList() + .Select(x => new LoanViewModel() + { + EmployeeFullName = employees.FirstOrDefault(e => e.id == x.EmployeeId).FullName, + PersonnelCode = personnelCodes.FirstOrDefault(p => p.EmployeeId == x.EmployeeId).PersonnelCode + .ToString(), + Amount = x.Amount.ToMoney(), + AmountPerMonth = x.AmountPerMonth.ToMoney(), + StartDateTime = x.StartInstallmentPayment.ToFarsi(), + Count = x.Count, + Id = x.id, + WorkshopId = x.WorkshopId, + EmployeeId = x.EmployeeId, + YearFa = pc.GetYear(x.StartInstallmentPayment).ToString(), + + }).ToList() + }; - }).ToList(); return result; } diff --git a/ServiceHost/Areas/Client/Controllers/LoanController.cs b/ServiceHost/Areas/Client/Controllers/LoanController.cs new file mode 100644 index 00000000..b13e6bfc --- /dev/null +++ b/ServiceHost/Areas/Client/Controllers/LoanController.cs @@ -0,0 +1,59 @@ +using _0_Framework.Application; +using _0_Framework.Domain.CustomizeCheckoutShared.Enums; +using CompanyManagment.App.Contracts.Loan; +using Microsoft.AspNetCore.Mvc; +using ServiceHost.BaseControllers; + +namespace ServiceHost.Areas.Client.Controllers; + +public class LoanController: ClientBaseController +{ + private readonly ILoanApplication _loanApplication; + private readonly long _workshopId; + + public LoanController(ILoanApplication loanApplication, IAuthHelper authHelper) + { + _loanApplication = loanApplication; + _workshopId= authHelper.GetWorkshopId(); + } + [HttpGet] + public ActionResult GetList(LoanSearchViewModel searchModel) + { + searchModel.WorkshopId = _workshopId; + var loans = _loanApplication.GetSearchListAsGrouped(searchModel); + return loans; + } + + [HttpGet("{id}")] + public async Task> GetDetails(long id) + { + var loan = await _loanApplication.GetDetails(id); + return loan; + } + + [HttpPost] + public ActionResult Create([FromBody] CreateLoanViewModel command) + { + var result = _loanApplication.Create(command); + return result; + } + + [HttpGet("create/installments")] + public ActionResult> CalculateLoanInstallment(string amount, + int installmentCount, string loanStartDate, bool getRounded) + { + var installments = + _loanApplication.CalculateLoanInstallment(amount, installmentCount, loanStartDate, getRounded); + return installments; + } + + [HttpDelete("{id}")] + public ActionResult Remove(long id) + { + var result = _loanApplication.Remove(id); + return result; + } + + + +} \ No newline at end of file