using Back.Common; using Microsoft.IdentityModel.Tokens; using TaxCollectData.Library.Business; using TaxCollectData.Library.Dto.Config; using TaxCollectData.Library.Dto.Content; using TaxCollectData.Library.Dto.Properties; using TaxCollectData.Library.Dto.Transfer; using TaxCollectData.Library.Enums; namespace Back.Services { public class ActionTaxPayer { private string _UniqueMemory; private string _PrivateKey; private readonly servCompany _servCompany; public ActionTaxPayer(servCompany servCompany) { _servCompany = servCompany; } public string GenerateTaxid(string FactorNo, string InvoiceDate) { return TaxApiService.Instance.TaxIdGenerator.GenerateTaxId(_UniqueMemory, Convert.ToInt64(FactorNo), InvoiceDate.ToMiladi()); } public async Task GetResultByUid(int CompanyID, string uid) { if (!await login(CompanyID)) return null; var uidAndFiscalId = new UidAndFiscalId(uid, _UniqueMemory); var inquiryResultModels = TaxApiService.Instance.TaxApis.InquiryByUidAndFiscalId(new() { uidAndFiscalId }); if (inquiryResultModels.Count > 0) return inquiryResultModels[0]; return null; } public async Task> SendInvoice(int CompanyID,InvoiceHeaderDto header, List InvoiceBody, PaymentDto payment) { if (!await login(CompanyID)) return null; return await TaxApiService.Instance.TaxApis.SendInvoicesAsync(new List() { new() { Header =header,Body =InvoiceBody,Payments = new() {payment} } } , null); } public async Task GetEconomicCodeInformation(string Item) { return await TaxApiService.Instance.TaxApis.GetEconomicCodeInformationAsync(Item); } //-------------------internal public async Task login(int CompanyID) { try { #region TokenTax var resquth = await _servCompany.GetTaxAuth(CompanyID); if (string.IsNullOrEmpty(resquth.UniqueMemory) || string.IsNullOrEmpty(resquth.PrivateKey)) return false; if (!string.IsNullOrEmpty(resquth.UniqueMemory) && !string.IsNullOrEmpty(resquth.PrivateKey)) { _UniqueMemory = resquth.UniqueMemory; _PrivateKey = resquth.PrivateKey; TaxApiService.Instance.Init(_UniqueMemory, new SignatoryConfig(_PrivateKey, null), new NormalProperties(ClientType.SELF_TSP), "https://tp.tax.gov.ir/req/api/"); await TaxApiService.Instance.TaxApis.GetServerInformationAsync(); } #endregion if (TaxApiService.Instance.TaxApis.GetToken() is null) { if (await TaxApiService.Instance.TaxApis.RequestTokenAsync() == null) return false; } return true; } catch (Exception) { return false; } } } }