add transaction controller and create api
edit institutionContractController.cs and add excel download
This commit is contained in:
@@ -13,6 +13,7 @@ namespace Company.Domain.FinancialStatmentAgg;
|
||||
public interface IFinancialStatmentRepository : IRepository<long, FinancialStatment>
|
||||
{
|
||||
|
||||
[Obsolete("این متد منسوخ شده است. لطفاً از متد GetDetailsByContractingParty استفاده کنید.")]
|
||||
FinancialStatmentViewModel GetDetailsByContractingPartyId(long contractingPartyId);
|
||||
List<FinancialStatmentViewModel> Search(FinancialStatmentSearchModel searchModel);
|
||||
Task<ClientFinancialStatementViewModel> GetClientFinancialStatement(long accountId,
|
||||
@@ -21,4 +22,5 @@ public interface IFinancialStatmentRepository : IRepository<long, FinancialStatm
|
||||
Task<OperationResult<ClientFinancialStatementViewModel>> GetDetailsByPublicId(string publicId);
|
||||
Task<GetFinancialStatementBalanceAmount> GetBalanceAmount(long id);
|
||||
Task<double> GetClientDebtAmount(long accountId);
|
||||
Task<FinancialStatmentDetailsByContractingPartyViewModel> GetDetailsByContractingParty(long contractingPartyId);
|
||||
}
|
||||
@@ -30,5 +30,5 @@ public class ClientFinancialStatementViewModel
|
||||
/// <summary>
|
||||
/// تراکنش ها
|
||||
/// </summary>
|
||||
public List<ClientFinancialTransactionViewModel> Transactions { get; set; }
|
||||
public List<FinancialTransactionDetailViewModel> Transactions { get; set; }
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace CompanyManagment.App.Contracts.FinancialStatment;
|
||||
|
||||
public class ClientFinancialTransactionViewModel
|
||||
public class FinancialTransactionDetailViewModel
|
||||
{
|
||||
/// <summary>
|
||||
/// زمان و تاریخ میلادی
|
||||
@@ -1,4 +1,5 @@
|
||||
using _0_Framework.Application;
|
||||
using System;
|
||||
using _0_Framework.Application;
|
||||
using CompanyManagment.App.Contracts.FinancilTransaction;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System.Collections.Generic;
|
||||
@@ -19,6 +20,7 @@ public interface IFinancialStatmentApplication
|
||||
OperationResult Create(CreateFinancialStatment command);
|
||||
|
||||
List<FinancialStatmentViewModel> Search(FinancialStatmentSearchModel searchModel);
|
||||
[Obsolete("این متد منسوخ شده است. لطفاً از متد GetDetailsByContractingParty استفاده کنید.")]
|
||||
FinancialStatmentViewModel GetDetailsByContractingPartyId(long contractingPartyId);
|
||||
|
||||
/// <summary>
|
||||
@@ -30,6 +32,7 @@ public interface IFinancialStatmentApplication
|
||||
Task<ClientFinancialStatementViewModel> GetClientFinancialStatement(ClientFinancialStatementSearchModel searchModel,
|
||||
long accountId);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// نمایش اطلاعات صورت حساب مالی کلاینت بر اساس کد هش
|
||||
/// </summary>
|
||||
@@ -50,6 +53,44 @@ public interface IFinancialStatmentApplication
|
||||
/// <param name="accountId"></param>
|
||||
/// <returns></returns>
|
||||
Task<double> GetClientDebtAmount(long accountId);
|
||||
|
||||
/// <summary>
|
||||
/// جزئیات بر اساس
|
||||
/// </summary>
|
||||
/// <param name="contractingPartyId"></param>
|
||||
/// <returns></returns>
|
||||
Task<FinancialStatmentDetailsByContractingPartyViewModel> GetDetailsByContractingParty(long contractingPartyId);
|
||||
}
|
||||
|
||||
public class FinancialStatmentDetailsByContractingPartyViewModel
|
||||
{
|
||||
/// <summary>
|
||||
/// آیدی FinancialStatement
|
||||
/// </summary>
|
||||
public long Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// نام طرف حساب
|
||||
/// </summary>
|
||||
public string ContractingPartyName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// جمع بدهکاری
|
||||
/// </summary>
|
||||
public double TotalDebt { get; set; }
|
||||
/// <summary>
|
||||
/// جمع بستانکاری
|
||||
/// </summary>
|
||||
public double TotalCredit { get; set; }
|
||||
/// <summary>
|
||||
/// مبلغ قابل پرداخت
|
||||
/// </summary>
|
||||
public double TotalAmountPayable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// تراکنش ها
|
||||
/// </summary>
|
||||
public List<FinancialTransactionDetailViewModel> List { get; set; }
|
||||
}
|
||||
|
||||
public class GetFinancialStatementBalanceAmount
|
||||
|
||||
@@ -196,4 +196,9 @@ public class FinancialStatmentApplication : IFinancialStatmentApplication
|
||||
{
|
||||
return _financialStatmentRepository.GetClientDebtAmount(accountId);
|
||||
}
|
||||
|
||||
public async Task<FinancialStatmentDetailsByContractingPartyViewModel> GetDetailsByContractingParty(long contractingPartyId)
|
||||
{
|
||||
return await _financialStatmentRepository.GetDetailsByContractingParty(contractingPartyId);
|
||||
}
|
||||
}
|
||||
@@ -153,7 +153,7 @@ public class FinancialStatmentRepository : RepositoryBase<long, FinancialStatmen
|
||||
}
|
||||
}
|
||||
|
||||
return new ClientFinancialTransactionViewModel()
|
||||
return new FinancialTransactionDetailViewModel()
|
||||
{
|
||||
DateTimeGr = t.TdateGr,
|
||||
DateFa = t.TdateGr.ToFarsi(),
|
||||
@@ -194,7 +194,7 @@ public class FinancialStatmentRepository : RepositoryBase<long, FinancialStatmen
|
||||
TotalCredit = financialStatement.FinancialTransactionList.Sum(x => x.Creditor),
|
||||
TotalDebt = financialStatement.FinancialTransactionList.Sum(x => x.Deptor),
|
||||
ContractingPartyName = financialStatement.ContractingPartyName,
|
||||
Transactions = financialStatement.FinancialTransactionList.Select(t => new ClientFinancialTransactionViewModel()
|
||||
Transactions = financialStatement.FinancialTransactionList.Select(t => new FinancialTransactionDetailViewModel()
|
||||
{
|
||||
DateTimeGr = t.TdateGr,
|
||||
DateFa = t.TdateGr.ToFarsi(),
|
||||
@@ -248,5 +248,39 @@ public class FinancialStatmentRepository : RepositoryBase<long, FinancialStatmen
|
||||
|
||||
}
|
||||
|
||||
|
||||
public async Task<FinancialStatmentDetailsByContractingPartyViewModel> GetDetailsByContractingParty(long contractingPartyId)
|
||||
{
|
||||
|
||||
|
||||
var financialStatement = await _context.FinancialStatments
|
||||
.Include(x=>x.FinancialTransactionList)
|
||||
.FirstOrDefaultAsync(x=>x.ContractingPartyId == contractingPartyId);
|
||||
|
||||
if (financialStatement == null)
|
||||
{
|
||||
throw new NotFoundException("وضعیت مالی مورد نظر یافت نشد");
|
||||
}
|
||||
|
||||
var res = new FinancialStatmentDetailsByContractingPartyViewModel()
|
||||
{
|
||||
Id = financialStatement.id,
|
||||
TotalAmountPayable = financialStatement.FinancialTransactionList.Sum(x => x.Deptor) - financialStatement.FinancialTransactionList.Sum(x => x.Creditor),
|
||||
TotalCredit = financialStatement.FinancialTransactionList.Sum(x => x.Creditor),
|
||||
TotalDebt = financialStatement.FinancialTransactionList.Sum(x => x.Deptor),
|
||||
ContractingPartyName = financialStatement.ContractingPartyName,
|
||||
List = financialStatement.FinancialTransactionList.Select(t => new FinancialTransactionDetailViewModel()
|
||||
{
|
||||
DateTimeGr = t.TdateGr,
|
||||
DateFa = t.TdateGr.ToFarsi(),
|
||||
TimeFa = $"{t.TdateGr:HH:mm}",
|
||||
Description = t.DescriptionOption + " " + t.Description,
|
||||
Debtor = t.Deptor,
|
||||
Creditor = t.Creditor,
|
||||
Balance = t.Balance,
|
||||
Type = t.TypeOfTransaction == "debt" ? FinancialTransactionType.Debt : FinancialTransactionType.Credit,
|
||||
TypeStr = t.TypeOfTransaction == "debt" ? "ایجاد درآمد" : "دریافت درآمد"
|
||||
}).OrderByDescending(t => t.DateTimeGr).ToList(),
|
||||
};
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
using _0_Framework.Application;
|
||||
using CompanyManagment.App.Contracts.FinancialStatment;
|
||||
using CompanyManagment.App.Contracts.FinancilTransaction;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using PersianTools.Core;
|
||||
using ServiceHost.BaseControllers;
|
||||
|
||||
namespace ServiceHost.Areas.Admin.Controllers;
|
||||
|
||||
public class FinancialStatementController : AdminBaseController
|
||||
{
|
||||
private readonly IFinancialStatmentApplication _financialStatementApplication;
|
||||
private readonly IFinancialTransactionApplication _financialTransactionApplication;
|
||||
|
||||
public FinancialStatementController(IFinancialStatmentApplication financialStatementApplication,
|
||||
IFinancialTransactionApplication financialTransactionApplication)
|
||||
{
|
||||
_financialStatementApplication = financialStatementApplication;
|
||||
_financialTransactionApplication = financialTransactionApplication;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// گرفتن جزئیات وضعیت مالی با آیدی طرف حساب
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("contracting-party/{id}")]
|
||||
public async Task<ActionResult<FinancialStatmentDetailsByContractingPartyViewModel>>
|
||||
GetDetailsByContractingParty(long id)
|
||||
{
|
||||
var data = await _financialStatementApplication.GetDetailsByContractingParty(id);
|
||||
return data;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// گرفتن جزییات ویرایش
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("edit/{id}")]
|
||||
public ActionResult<EditFinancialTransaction> GetEditDetails(long id)
|
||||
{
|
||||
var res = _financialTransactionApplication.GetDetails(id);
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// حذف بلاک
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("removeBlocked/{id}")]
|
||||
public ActionResult<OperationResult> RemoveBlocked(long id)
|
||||
{
|
||||
var res = _financialTransactionApplication.RemoveBlocked(id);
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// ایجاد
|
||||
/// </summary>
|
||||
/// <param name="command"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public ActionResult<OperationResult> Create([FromBody] CreateFinancialStatment command)
|
||||
{
|
||||
var res = _financialStatementApplication.Create(command);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// ویرایش
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPut]
|
||||
public ActionResult<OperationResult> Edit([FromBody] EditFinancialTransactionRequest request)
|
||||
{
|
||||
var command = new EditFinancialTransaction
|
||||
{
|
||||
Id = request.Id,
|
||||
TdateFa = request.TDateFa,
|
||||
TypeOfTransaction = request.TypeOfTransaction,
|
||||
DescriptionOption = request.DescriptionOption,
|
||||
Description = request.Description,
|
||||
DeptorString = request.DeptorString,
|
||||
CreditorString = request.CreditorString
|
||||
};
|
||||
var result = _financialTransactionApplication.Edit(command);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// حذف
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpDelete("{id}")]
|
||||
public IActionResult RemoveTransaction(long id)
|
||||
{
|
||||
var res = _financialTransactionApplication.RemoveFinancialTransaction(id);
|
||||
if (res.IsSuccedded)
|
||||
return new JsonResult(new
|
||||
{
|
||||
success = true
|
||||
});
|
||||
return new JsonResult(new
|
||||
{
|
||||
success = false
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public record EditFinancialTransactionRequest(
|
||||
long Id,
|
||||
string TDateFa,
|
||||
string TypeOfTransaction,
|
||||
string DescriptionOption,
|
||||
string Description,
|
||||
string DeptorString,
|
||||
string CreditorString);
|
||||
@@ -1,5 +1,6 @@
|
||||
using _0_Framework.Application;
|
||||
using AccountManagement.Application.Contracts.Account;
|
||||
using CompanyManagement.Infrastructure.Excel.InstitutionContract;
|
||||
using CompanyManagment.App.Contracts.InstitutionContract;
|
||||
using CompanyManagment.App.Contracts.InstitutionContractContactinfo;
|
||||
using CompanyManagment.App.Contracts.PersonalContractingParty;
|
||||
@@ -51,6 +52,7 @@ public class institutionContractController : AdminBaseController
|
||||
{
|
||||
return await _institutionContractApplication.GetListStats(searchModel);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// ایجاد
|
||||
/// </summary>
|
||||
@@ -306,4 +308,55 @@ public class institutionContractController : AdminBaseController
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// بلاک طرف حساب
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("block-contracting-party")]
|
||||
public IActionResult OnPostBlockContractingParty(long id)
|
||||
{
|
||||
var result = _contractingPartyApplication.Block(id);
|
||||
var afterActtion = _contractingPartyApplication.GetDetails(id);
|
||||
return new JsonResult(new
|
||||
{
|
||||
isSuccedded = result.IsSuccedded,
|
||||
isBlock = afterActtion.IsBlock,
|
||||
blockTimes = afterActtion.BlockTimes
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// آنبلاک طرف حساب
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("unblock-contracting-party")]
|
||||
public IActionResult OnPostUnBlockContractingParty(long id)
|
||||
{
|
||||
var result = _contractingPartyApplication.DisableBlock(id);
|
||||
var afterActtion = _contractingPartyApplication.GetDetails(id);
|
||||
return new JsonResult(new
|
||||
{
|
||||
isSuccedded = result.IsSuccedded,
|
||||
isBlock = afterActtion.IsBlock,
|
||||
blockTimes = afterActtion.BlockTimes
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// دانلود اکسل
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("excel")]
|
||||
public IActionResult OnGetDownloadExcel()
|
||||
{
|
||||
var institutionContractViewModels =
|
||||
_institutionContractApplication.NewSearch(new() { IsActiveString = "both", TypeOfContract = "both" });
|
||||
var bytes = InstitutionContractExcelGenerator.GenerateExcel(institutionContractViewModels);
|
||||
return File(bytes,
|
||||
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
||||
$"قرارداد های مالی.xlsx");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user