using _0_Framework.Application;
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] CreateBankPaymentInstrument 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.IsSuccedded)
{
combinedList.AddRange(paymentIban.Data??[]);
}
if (contractingIban.IsSuccedded)
{
combinedList.AddRange(contractingIban.Data??[]);
}
return new OperationResult>().Succcedded(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.IsSuccedded)
{
combinedList.AddRange(paymentAccountNumbers.Data??[]);
}
if (contractingAccountNumbers.IsSuccedded)
{
combinedList.AddRange(contractingAccountNumbers.Data??[]);
}
return new OperationResult>().Succcedded(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.IsSuccedded)
{
combinedList.AddRange(paymentCardNumbers.Data??[]);
}
if (contractingCardNumbers.IsSuccedded)
{
combinedList.AddRange(contractingCardNumbers.Data??[]);
}
return new OperationResult>().Succcedded(combinedList.Distinct().ToList());
}
}