using System.Collections.Generic; using System.Threading.Tasks; using _0_Framework.Application; using Company.Domain.PaymentInstrumentAgg; using CompanyManagment.App.Contracts.PaymentInstrument; namespace CompanyManagment.Application; public class PaymentInstrumentApplication:IPaymentInstrumentApplication { private readonly IPaymentInstrumentRepository _paymentInstrumentRepository; private readonly IPaymentInstrumentGroupRepository _paymentInstrumentGroupRepository; public PaymentInstrumentApplication(IPaymentInstrumentRepository paymentInstrumentRepository, IPaymentInstrumentGroupRepository paymentInstrumentGroupRepository) { _paymentInstrumentRepository = paymentInstrumentRepository; _paymentInstrumentGroupRepository = paymentInstrumentGroupRepository; } public async Task CreateBankAccount(CreateBankPaymentInstrument command) { var op = new OperationResult(); if (command.IsAuth) { if (string.IsNullOrWhiteSpace(command.AccountNumber)) { return op.Failed("شماره حساب نمیتواند خالی باشد"); } if (string.IsNullOrWhiteSpace(command.IBan)) { return op.Failed("شماره شبا نمیتواند خالی باشد"); } if (string.IsNullOrWhiteSpace(command.CardNumber)) { return op.Failed("شماره کارت نمیتواند خالی باشد"); } if (string.IsNullOrWhiteSpace(command.AccountHolderName)) { return op.Failed("نام صاحب حساب نمیتواند خالی باشد"); } } var entity = PaymentInstrument.CreateBankAccount(command.CardNumber, command.AccountHolderName, command.AccountNumber, command.IBan, command.IsAuth,command.PaymentInstrumentGroupId); await _paymentInstrumentRepository.CreateAsync(entity); await _paymentInstrumentRepository.SaveChangesAsync(); return op.Succcedded(); } public async Task CreateBankAccount(List commands) { var op = new OperationResult(); foreach (var command in commands) { if (command.IsAuth) { if (string.IsNullOrWhiteSpace(command.AccountNumber)) { return op.Failed("شماره حساب نمیتواند خالی باشد"); } if (string.IsNullOrWhiteSpace(command.IBan)) { return op.Failed("شماره شبا نمیتواند خالی باشد"); } if (string.IsNullOrWhiteSpace(command.CardNumber)) { return op.Failed("شماره کارت نمیتواند خالی باشد"); } if (string.IsNullOrWhiteSpace(command.AccountHolderName)) { return op.Failed("نام صاحب حساب نمیتواند خالی باشد"); } } var entity = PaymentInstrument.CreateBankAccount(command.CardNumber, command.AccountHolderName, command.AccountNumber, command.IBan, command.IsAuth,command.PaymentInstrumentGroupId); await _paymentInstrumentRepository.CreateAsync(entity); } await _paymentInstrumentRepository.SaveChangesAsync(); return op.Succcedded(); } public async Task CreatePos(CreatePosPaymentInstrument command) { var op = new OperationResult(); if (string.IsNullOrWhiteSpace(command.PosTerminalId)) { return op.Failed("شناسه دستگاه یوزر نمیتواند خالی باشد"); } var entity = PaymentInstrument.CreatePosType(command.PosTerminalId, command.Description,command.PaymentInstrumentGroupId); await _paymentInstrumentRepository.CreateAsync(entity); await _paymentInstrumentRepository.SaveChangesAsync(); return op.Succcedded(); } public async Task CreatePos(List commands) { var op = new OperationResult(); foreach (var command in commands) { if (string.IsNullOrWhiteSpace(command.PosTerminalId)) { return op.Failed("شناسه دستگاه یوزر نمیتواند خالی باشد"); } var entity = PaymentInstrument.CreatePosType(command.PosTerminalId, command.Description,command.PaymentInstrumentGroupId); await _paymentInstrumentRepository.CreateAsync(entity); } await _paymentInstrumentRepository.SaveChangesAsync(); return op.Succcedded(); } public async Task GetList(PaymentInstrumentSearchModel searchModel) { return await _paymentInstrumentRepository.GetList(searchModel); } public async Task CreateGroup(CreateBankPaymentInstrumentGroup command) { var op = new OperationResult(); if (string.IsNullOrWhiteSpace(command.Name)) { return op.Failed("لطفا عنوان خودرا وارد کنید"); } var instrumentGroup = new PaymentInstrumentGroup(command.Name); await _paymentInstrumentGroupRepository.CreateAsync(instrumentGroup); await _paymentInstrumentGroupRepository.SaveChangesAsync(); return op.Succcedded(); } public async Task EditGroup(EditBankPaymentInstrumentGroup command) { var op = new OperationResult(); if (string.IsNullOrWhiteSpace(command.Name)) { return op.Failed("لطفا عنوان خودرا وارد کنید"); } var paymentInstrumentGroup = _paymentInstrumentGroupRepository.Get(command.Id); if (paymentInstrumentGroup == null) { return op.Failed("عنوان مورد نظر یافت نشد"); } paymentInstrumentGroup.Edit(command.Name); await _paymentInstrumentGroupRepository.SaveChangesAsync(); return op.Succcedded(); } public async Task DeleteGroup(long id) { var op = new OperationResult(); var paymentInstrumentGroup = _paymentInstrumentGroupRepository.Get(id); if (paymentInstrumentGroup == null) { return op.Failed("عنوان مورد نظر یافت نشد"); } paymentInstrumentGroup.DeActive(); await _paymentInstrumentGroupRepository.SaveChangesAsync(); return op.Succcedded(); } public async Task> GetGroup() { return await _paymentInstrumentGroupRepository.GetList(); } public async Task> GetPosTerminalSelectList(string search) { return await _paymentInstrumentRepository.GetPosTerminalSelectList(search); } public async Task> PosTerminalIdSelectList(string search, string selected) { return await _paymentInstrumentRepository.PosTerminalIdSelectList(search, selected); } public async Task> IbanSelectList(string search, string selected) { return await _paymentInstrumentRepository.IbanSelectList(search, selected); } public async Task> AccountNumberSelectList(string search, string selected) { return await _paymentInstrumentRepository.AccountNumberSelectList(search, selected); } public async Task> CardNumberSelectList(string search, string selected) { return await _paymentInstrumentRepository.CardNumberSelectList(search, selected); } public async Task> AccountHolderNameSelectList(string search, string selected) { return await _paymentInstrumentRepository.AccountHolderNameSelectList(search, selected); } }