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; } }