using _0_Framework.Application;
using _0_Framework.Exceptions;
using CompanyManagment.App.Contracts.ContractingPartyBankAccounts;
using CompanyManagment.App.Contracts.PaymentInstrument;
using Microsoft.AspNetCore.Mvc;
using ServiceHost.BaseControllers;
namespace ServiceHost.Areas.Admin.Controllers;
public class PaymentInstrumentController:AdminBaseController
{
private readonly IPaymentInstrumentApplication _paymentInstrumentApplication;
private readonly IContractingPartyBankAccountsApplication _contractingPartyBankAccountsApplication;
public PaymentInstrumentController(IPaymentInstrumentApplication paymentInstrumentApplication, IContractingPartyBankAccountsApplication contractingPartyBankAccountsApplication)
{
_paymentInstrumentApplication = paymentInstrumentApplication;
_contractingPartyBankAccountsApplication = contractingPartyBankAccountsApplication;
}
///
///لیست اطلاعات بانکی جاری شرکا
///
///
///
[HttpGet]
public async Task> List(PaymentInstrumentSearchModel searchModel)
{
var list =await _paymentInstrumentApplication.GetList(searchModel);
return list;
}
///
/// ایجاد اطلاعات بانکی
///
///
///
[HttpPost("bankAccount")]
public async Task> CreateBankAccount([FromBody] List command)
{
var result = await _paymentInstrumentApplication.CreateBankAccount(command);
return result;
}
///
/// ایجاد اطلاعات دستگاه پوز
///
///
///
[HttpPost("pos")]
public async Task> CreatePos([FromBody]CreatePosPaymentInstrument command)
{
var result =await _paymentInstrumentApplication.CreatePos(command);
return result;
}
///
/// گرفتن عنوان ها
///
///
[HttpGet("group")]
public async Task>> GetGroups()
{
var result = await _paymentInstrumentApplication.GetGroup();
return result;
}
///
/// ایجاد عنوان
///
///
///
[HttpPost("group")]
public async Task> CreateGroup([FromBody]CreateBankPaymentInstrumentGroup command)
{
var result = await _paymentInstrumentApplication.CreateGroup(command);
return result;
}
///
/// ویرایش عنوان
///
///
///
[HttpPut("group")]
public async Task> EditGroup([FromBody]EditBankPaymentInstrumentGroup command)
{
var result = await _paymentInstrumentApplication.EditGroup(command);
return result;
}
///
/// حذف عنوان
///
///
///
[HttpDelete("group/{id}")]
public async Task> DeleteGroup(long id)
{
var result = await _paymentInstrumentApplication.DeleteGroup(id);
return result;
}
///
/// دریافت لیست شناسههای دستگاه پوز به صورت رشته
///
/// عبارت جستجو
/// مقدار انتخاب شده
/// لیست شناسههای دستگاه پوز
[HttpGet("pos-terminal-id-select")]
public async Task>> GetPosTerminalIdSelectList(string search, string selected)
{
return await _paymentInstrumentApplication.PosTerminalIdSelectList(search, selected);
}
///
/// دریافت لیست شمارههای شبا به صورت رشته
///
/// عبارت جستجو
/// مقدار انتخاب شده
/// لیست شمارههای شبا
[HttpGet("iban-select")]
public async Task>> GetIbanSelectList(string search, string selected)
{
var paymentIban = await _paymentInstrumentApplication.IbanSelectList(search, selected);
var contractingIban = await _contractingPartyBankAccountsApplication.IBanSelectList(search, selected);
var combinedList = new List();
if (paymentIban != null)
{
combinedList.AddRange(paymentIban);
}
if (contractingIban != null)
{
combinedList.AddRange(contractingIban);
}
return combinedList.Distinct().ToList();
}
///
/// دریافت لیست شمارههای حساب به صورت رشته
///
/// عبارت جستجو
/// مقدار انتخاب شده
/// لیست شمارههای حساب
[HttpGet("account-number-select")]
public async Task>> GetAccountNumberSelectList(string search, string selected)
{
var paymentAccountNumbers = await _paymentInstrumentApplication.AccountNumberSelectList(search, selected);
var contractingAccountNumbers = await _contractingPartyBankAccountsApplication.AccountNumberSelectList(search, selected);
var combinedList = new List();
if (paymentAccountNumbers != null)
{
combinedList.AddRange(paymentAccountNumbers);
}
if (contractingAccountNumbers != null)
{
combinedList.AddRange(contractingAccountNumbers);
}
return combinedList.Distinct().ToList();
}
///
/// دریافت لیست شمارههای کارت به صورت رشته
///
/// عبارت جستجو
/// مقدار انتخاب شده
/// لیست شمارههای کارت
[HttpGet("card-number-select")]
public async Task>> GetCardNumberSelectList(string search, string selected)
{
var paymentCardNumbers = await _paymentInstrumentApplication.CardNumberSelectList(search, selected);
var contractingCardNumbers = await _contractingPartyBankAccountsApplication.CardNumberSelectList(search, selected);
var combinedList = new List();
if (paymentCardNumbers != null)
{
combinedList.AddRange(paymentCardNumbers);
}
if (contractingCardNumbers != null)
{
combinedList.AddRange(contractingCardNumbers);
}
return combinedList.Distinct().ToList();
}
///
/// دریافت لیست نام صاحبان حساب به صورت رشته
///
/// عبارت جستجو
/// مقدار انتخاب شده
/// لیست نام صاحبان حساب
[HttpGet("account-holder-contracting-party-name-select")]
public async Task>> GetAccountHolderNameAndContractingPartyNameSelectList(string search, string selected)
{
var paymentAccountHolders = await _paymentInstrumentApplication.AccountHolderNameSelectList(search, selected);
var contractingAccountHolders = await _contractingPartyBankAccountsApplication.GetAccountHolderNameSelectList(search, selected);
var contractingNames = await _contractingPartyBankAccountsApplication.ContractingPartyNamesSelectList(search, selected);
var combinedList = new List();
if (paymentAccountHolders != null)
{
combinedList.AddRange(paymentAccountHolders);
}
if (contractingAccountHolders != null)
{
combinedList.AddRange(contractingAccountHolders);
}
if (contractingNames != null)
combinedList.AddRange(contractingNames);
return combinedList.Distinct().ToList();
}
[HttpPost("bank-account-inquiry")]
public async Task> GetBankInquiry([FromBody]InquiryContractingPartyBankDetailsRequest command)
{
return await _contractingPartyBankAccountsApplication.InquiryContractingPartyBankDetails(command);
}
}
public class BankInquiryRequest
{
public string CardNumber { get; set; }
public string IBan { get; set; }
public string AccountNumber { get; set; }
public string BankName { get; set; }
}
public class BankInquiryResponse
{
public string CardNumber { get; set; }
public string IBan { get; set; }
public string AccountNumber { get; set; }
public string BankName { get; set; }
public string AccountHolderName { get; set; }
}