This commit is contained in:
mmrbnjd
2025-10-03 23:30:01 +03:30
parent ef2cf5ff30
commit 4df6c87012
34 changed files with 908 additions and 555 deletions

View File

@@ -0,0 +1,5 @@
{
"version": 1,
"isRoot": true,
"tools": {}
}

View File

@@ -4,12 +4,15 @@
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>3a1884b0-3dfb-48c8-8b55-fac6d02b8d35</UserSecretsId>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Blazor.PersianDatePicker" Version="2.1.0" />
<PackageReference Include="Melipayamak.RestClient" Version="1.0.0" />
<PackageReference Include="Microsoft.Data.SqlClient" Version="5.2.0" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.21.0" />
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.5" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
<PackageReference Include="FluentValidation" Version="11.9.0" />
@@ -25,7 +28,7 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="System.Drawing.Common" Version="9.0.0" />
<PackageReference Include="TaxCollectData.Library" Version="0.0.23" />
</ItemGroup>
<ItemGroup>
@@ -36,10 +39,4 @@
<ProjectReference Include="..\Shared\Shared.csproj" />
</ItemGroup>
<ItemGroup>
<Reference Include="Service">
<HintPath>C:\Dlls\Service.dll</HintPath>
</Reference>
</ItemGroup>
</Project>

View File

@@ -4,7 +4,6 @@ using Back.Services;
using Back.Validations;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Service;
using Shared.DTOs;
using System.Net;
using System.Reflection.Emit;

View File

@@ -6,18 +6,10 @@ using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.HttpResults;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json;
using Org.BouncyCastle.Asn1.Cmp;
using Org.BouncyCastle.Ocsp;
using Org.BouncyCastle.Utilities;
using Shared.DTOs;
using Shared.DTOs.Serch;
using System;
using System.Security.Cryptography;
using TaxCollectData.Library.Dto.Content;
using TaxCollectData.Library.Dto.Transfer;
using static Shared.DTOs._TaxPayer;
using static System.Collections.Specialized.BitVector32;
namespace Back.Controllers
{
@@ -152,326 +144,326 @@ namespace Back.Controllers
[HttpGet("SendInvoice/{InvoiceID}")]
public async Task<ActionResult<bool>> SendInvoice(int InvoiceID)
{
//return BadRequest(new List<string> { "در حال حاضر سامانه مودیان در دسترس نمی باشد" });
return BadRequest(new List<string> { "در حال حاضر سامانه مودیان در دسترس نمی باشد" });
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
var UserID = claim.Value;
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
if (!await _actionTaxPayer.login(user.RolUsers.First().CompanyID))
return BadRequest(new List<string> { "خطا در احراز هویت سازمان مالیاتی" });
//var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
//var UserID = claim.Value;
//var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
//if (!await _actionTaxPayer.login(user.RolUsers.First().CompanyID))
// return BadRequest(new List<string> { "خطا در احراز هویت سازمان مالیاتی" });
var result = await _servTaxPayer.GetInvoice(user.RolUsers.First().CompanyID, InvoiceID);
if (result == null)
return BadRequest(new List<string> { "صورتحساب یافت نشد" });
//var result = await _servTaxPayer.GetInvoice(user.RolUsers.First().CompanyID, InvoiceID);
//if (result == null)
// return BadRequest(new List<string> { "صورتحساب یافت نشد" });
else
{
if (!result.PatternID.HasValue)
return BadRequest(new List<string> { "ابتدا برای این صورتحساب الگو در نظر بگیرید" });
//else
//{
// if (!result.PatternID.HasValue)
// return BadRequest(new List<string> { "ابتدا برای این صورتحساب الگو در نظر بگیرید" });
if (result.invoiceType == InvoiceType.Bidding)
return BadRequest(new List<string> { "صورتحساب در وضعیت پیش نویس نمیتواند ارسال شود" });
// if (result.invoiceType == InvoiceType.Bidding)
// return BadRequest(new List<string> { "صورتحساب در وضعیت پیش نویس نمیتواند ارسال شود" });
if (await _servTaxPayer.ExistSuccessfulorSendorpendingInvoice(result))
return BadRequest(new List<string> { "این صورتحساب قبلا به سازمان ارسال شده" });
// if (await _servTaxPayer.ExistSuccessfulorSendorpendingInvoice(result))
// return BadRequest(new List<string> { "این صورتحساب قبلا به سازمان ارسال شده" });
if ((result.invoiceType == InvoiceType.BackFrmSale || result.invoiceType == InvoiceType.Repair)
&& !result.BillReference.HasValue)
return BadRequest(new List<string> { "در وضعیت برگشت از فروش و اصلاحی باید صورتحساب مرجع وجود داشته باشد" });
// if ((result.invoiceType == InvoiceType.BackFrmSale || result.invoiceType == InvoiceType.Repair)
// && !result.BillReference.HasValue)
// return BadRequest(new List<string> { "در وضعیت برگشت از فروش و اصلاحی باید صورتحساب مرجع وجود داشته باشد" });
if ((result.invoiceType == InvoiceType.BackFrmSale || result.invoiceType == InvoiceType.Repair)
&& !await _servTaxPayer.ExistSuccessfulorSendorpendingInvoice(result.invoice))
return BadRequest(new List<string> { "در وضعیت برگشت از فروش و اصلاحی باید صورتحساب مرجع به سامانه مودیان ارسال شده باشد" });
// if ((result.invoiceType == InvoiceType.BackFrmSale || result.invoiceType == InvoiceType.Repair)
// && !await _servTaxPayer.ExistSuccessfulorSendorpendingInvoice(result.invoice))
// return BadRequest(new List<string> { "در وضعیت برگشت از فروش و اصلاحی باید صورتحساب مرجع به سامانه مودیان ارسال شده باشد" });
if (result.invoiceType == InvoiceType.Cancellation && string.IsNullOrEmpty(result.taxid))
{
return BadRequest(new List<string> { "صورتحساب در وضعیت ابطالی باید صورتحساب مرجع آن به سامانه مودیان ارسال شده باشد" });
// if (result.invoiceType == InvoiceType.Cancellation && string.IsNullOrEmpty(result.taxid))
// {
// return BadRequest(new List<string> { "صورتحساب در وضعیت ابطالی باید صورتحساب مرجع آن به سامانه مودیان ارسال شده باشد" });
}
#region Inital Send
InvoiceHeaderDto header = new InvoiceHeaderDto();
PreparationHeaderTaxInvoice preparation = new PreparationHeaderTaxInvoice(result, _actionTaxPayer);
// }
// #region Inital Send
// InvoiceHeaderDto header = new InvoiceHeaderDto();
// PreparationHeaderTaxInvoice preparation = new PreparationHeaderTaxInvoice(result, _actionTaxPayer);
int level = result.pattern.ID;
// int level = result.pattern.ID;
//header
#region header
header = new InvoiceHeaderDto
{
//شماره منحصر به فرد مالیاتی
Taxid = preparation.Taxid,
//زمان صدور
Indatim = preparation.Indatim,
//زمان ایجاد
Indati2m = preparation.Indati2m,
// صورتحساب نوع *
Inty = preparation.Inty,
//سریال صورت حساب
Inno = preparation.Inno,
//شماره منحصر به فرد مالیاتی صورتحساب مرجع
Irtaxid = preparation.Irtaxid,
//الگوی صورتحساب *
Inp = preparation.Inp,
//موضوع صورتحساب *
Ins = preparation.Ins,
//شماره اقتصادی فروشنده به جاش شناسه ملی داده شد
Tins = preparation.Tins,
//نوع شخص خریدار
Tob = preparation.Tob,
//شماره/شناسه ملی/شناسه مشارکت مدنی / کد فراگیر
Bid = preparation.Bid,
//شماره اقتصادی خریدار
Tinb = preparation.Tinb,
//کد شعبه فروشنده
Sbc = preparation.Sbc,
//کد پستی خریدار
Bpc = preparation.Bpc,
//کد شعبه خریدار
Bbc = preparation.Bbc,
//نوع پرواز
Ft = preparation.Ft,
//شماره گذرنامه خریدار
Bpn = preparation.Bpn,
//شماره پروانه گمرکی
Scln = preparation.Scln,
//کد گمرک محل اظهار فروشنده
Scc = preparation.Scc,
//شماره کدتاژ اظهارنامه گمرکی
Cdcn = preparation.Cdcn,
//تاریخ کوتاژ اظهارنامه گمرکی
Cdcd = preparation.Cdcd,
//شناسه یکتای ثبت قزارداد فروشنده
Crn = preparation.Crn,
//شماره اشتراک/شناسه قبض بهره بردار
Billid = preparation.Billid,
//مجموع مبلغ قبل از کسر تخفیف
Tprdis = preparation.Tprdis,
//مجموع تخفیفات
Tdis = preparation.Tdis,
// مجموع مبلغ پس از کسر تخفیف
Tadis = preparation.Tadis,
//مجموع مالیات بر ارزش افزوده
Tvam = preparation.Tvam,
// مجموع سایر مالیات، عوارض و وجوه قانونی
Todam = preparation.Todam,
//صورتحساب مجموع
Tbill = preparation.Tbill,
//مجموع وزن خالض
Tonw = preparation.Tonw,
//مجموع ارزش ریالی
Torv = preparation.Torv,
//مجموع ارزش ارزی
Tocv = preparation.Tocv,
// تسویه روش
Setm = preparation.Setm,
//نقدی پرداختی مبلغ
Cap = preparation.Cap,
//پرداختی نسیه
Insp = preparation.Insp,
//مجموع سهم مالیات بر ارزش افزوده از پرداخت
Tvop = preparation.Tvop,
//مالیات موضوع 17
Tax17 = preparation.Tax17,
//شماره اقتصادی آژانس
Tinc = preparation.Tinc,
//تاریخ اعلامیه فروش
Asd=null,
//شماره اعلامیه فروش
Asn = null,
//شماره ناوگان
Cno=null,
//شهر مقصد
Dci = null,
//کشور مقصد
Dco = null,
//کد ملی/ کد فراگیر اتباع غیر ایرانی راننده) در حمل و نقل جاده ای(
Did = null,
//شماره بارنامه
Lno = null,
//شماره بارنامه مرجع
Lrno = null,
//نوع بارنامه/ نوع حمل
Lt = null,
//شهر مبدا
Oci = null,
//کشور مبدا
Ocu = null,
//شناسه ملی/ شماره ملی/ شناسه مشارکت مدنی/ کد فراگیر اتباع غیر ایرانی گیرنده
Rid = null,
//کالاهای حمل شده
Sg = new List<ShippingGoodDto>(),
//شناسه ملی/ شماره ملی/ شناسه مشارکت مدنی / کد فراگیر اتباع غیر ایرانی فرستنده
Tid =null
// //header
// #region header
// header = new InvoiceHeaderDto
// {
// //شماره منحصر به فرد مالیاتی
// Taxid = preparation.Taxid,
// //زمان صدور
// Indatim = preparation.Indatim,
// //زمان ایجاد
// Indati2m = preparation.Indati2m,
// // صورتحساب نوع *
// Inty = preparation.Inty,
// //سریال صورت حساب
// Inno = preparation.Inno,
// //شماره منحصر به فرد مالیاتی صورتحساب مرجع
// Irtaxid = preparation.Irtaxid,
// //الگوی صورتحساب *
// Inp = preparation.Inp,
// //موضوع صورتحساب *
// Ins = preparation.Ins,
// //شماره اقتصادی فروشنده به جاش شناسه ملی داده شد
// Tins = preparation.Tins,
// //نوع شخص خریدار
// Tob = preparation.Tob,
// //شماره/شناسه ملی/شناسه مشارکت مدنی / کد فراگیر
// Bid = preparation.Bid,
// //شماره اقتصادی خریدار
// Tinb = preparation.Tinb,
// //کد شعبه فروشنده
// Sbc = preparation.Sbc,
// //کد پستی خریدار
// Bpc = preparation.Bpc,
// //کد شعبه خریدار
// Bbc = preparation.Bbc,
// //نوع پرواز
// Ft = preparation.Ft,
// //شماره گذرنامه خریدار
// Bpn = preparation.Bpn,
// //شماره پروانه گمرکی
// Scln = preparation.Scln,
// //کد گمرک محل اظهار فروشنده
// Scc = preparation.Scc,
// //شماره کدتاژ اظهارنامه گمرکی
// Cdcn = preparation.Cdcn,
// //تاریخ کوتاژ اظهارنامه گمرکی
// Cdcd = preparation.Cdcd,
// //شناسه یکتای ثبت قزارداد فروشنده
// Crn = preparation.Crn,
// //شماره اشتراک/شناسه قبض بهره بردار
// Billid = preparation.Billid,
// //مجموع مبلغ قبل از کسر تخفیف
// Tprdis = preparation.Tprdis,
// //مجموع تخفیفات
// Tdis = preparation.Tdis,
// // مجموع مبلغ پس از کسر تخفیف
// Tadis = preparation.Tadis,
// //مجموع مالیات بر ارزش افزوده
// Tvam = preparation.Tvam,
// // مجموع سایر مالیات، عوارض و وجوه قانونی
// Todam = preparation.Todam,
// //صورتحساب مجموع
// Tbill = preparation.Tbill,
// //مجموع وزن خالض
// Tonw = preparation.Tonw,
// //مجموع ارزش ریالی
// Torv = preparation.Torv,
// //مجموع ارزش ارزی
// Tocv = preparation.Tocv,
// // تسویه روش
// Setm = preparation.Setm,
// //نقدی پرداختی مبلغ
// Cap = preparation.Cap,
// //پرداختی نسیه
// Insp = preparation.Insp,
// //مجموع سهم مالیات بر ارزش افزوده از پرداخت
// Tvop = preparation.Tvop,
// //مالیات موضوع 17
// Tax17 = preparation.Tax17,
// //شماره اقتصادی آژانس
// Tinc = preparation.Tinc,
// //تاریخ اعلامیه فروش
// Asd=null,
// //شماره اعلامیه فروش
// Asn = null,
// //شماره ناوگان
// Cno=null,
// //شهر مقصد
// Dci = null,
// //کشور مقصد
// Dco = null,
// //کد ملی/ کد فراگیر اتباع غیر ایرانی راننده) در حمل و نقل جاده ای(
// Did = null,
// //شماره بارنامه
// Lno = null,
// //شماره بارنامه مرجع
// Lrno = null,
// //نوع بارنامه/ نوع حمل
// Lt = null,
// //شهر مبدا
// Oci = null,
// //کشور مبدا
// Ocu = null,
// //شناسه ملی/ شماره ملی/ شناسه مشارکت مدنی/ کد فراگیر اتباع غیر ایرانی گیرنده
// Rid = null,
// //کالاهای حمل شده
// Sg = new List<ShippingGoodDto>(),
// //شناسه ملی/ شماره ملی/ شناسه مشارکت مدنی / کد فراگیر اتباع غیر ایرانی فرستنده
// Tid =null
};
#endregion header
// };
// #endregion header
//body
List<InvoiceBodyDto> InvoiceBody = new List<InvoiceBodyDto>();
foreach (var bitem in result.invoiceDetails)
{
InvoiceBodyDto item = new InvoiceBodyDto();
PreparationBodyTaxInvoice preparationBody = new PreparationBodyTaxInvoice(bitem, level);
#region body
// //body
// List<InvoiceBodyDto> InvoiceBody = new List<InvoiceBodyDto>();
// foreach (var bitem in result.invoiceDetails)
// {
// InvoiceBodyDto item = new InvoiceBodyDto();
// PreparationBodyTaxInvoice preparationBody = new PreparationBodyTaxInvoice(bitem, level);
// #region body
item = new InvoiceBodyDto
{
//شناسه کالا / خدمت
Sstid = preparationBody.Sstid,
//شرح کاال/خدمت
Sstt = preparationBody.Sstt,
// تعداد
Am = preparationBody.Am,
//واحد اندازه گیری
Mu = preparationBody.Mu,
//وزن خالص
Nw= preparationBody.Nw,
// مبلغ واحد
Fee = preparationBody.Fee,
//میزان ارز
Cfee = preparationBody.Cfee ,
//نوع ارز
Cut = preparationBody.Cut,
//نرخ برابری ارز با ریال
Exr = preparationBody.Exr,
// ارزش ریالی کاا
Ssrv= preparationBody.Ssrv,
// ارزش ارزی کاا
Sscv= preparationBody.Sscv,
//مبلغ قبل از تخفیف
Prdis = preparationBody.Prdis,
//مبلغ تخفیف
Dis = preparationBody.Dis,
//مبلغ بعد از تخفیف
Adis = preparationBody.Adis,
//نرخ مالیات بر ارزش افزوده
Vra = preparationBody.Vra,
//مبلغ مالیات بر ارزش افزوده
Vam = preparationBody.Vam,
//موضوع سایر مالیات و عوارض
Odt = preparationBody.Odt,
//نرخ سایر مالیات و عوارض
Odr = preparationBody.Odr,
//مبلغ سایر مالیات و عوارض
Odam = preparationBody.Odam,
//موضوع سایر وجوه قانونی
Olt = preparationBody.Olt,
//نرخ سایر وجوه قانونی
Olr = preparationBody.Olr,
//مبلغ سایر وجوه قانونی
Olam = preparationBody.Olam,
//اجرت ساخت
Consfee = preparationBody.Consfee,
// سود فروشنده
Spro= preparationBody.Spro,
//حقالعمل
Bros= preparationBody.Bros,
//جمع کل اجرت، حقالعمل و سود
Tcpbs= preparationBody.Tcpbs,
//سهم نقدی از پرداخت
Cop = preparationBody.Cop,
//سهم مالیات بر لرزش افزوده از پرداخت
Vop = preparationBody.Vop,
//شناسه یکتای ثبت قرارداد حق العمل کاری
Bsrn = preparationBody.Bsrn,
// مبلغ کل کالا / خدمت
Tsstam = preparationBody.Tsstam,
//عیار
Cui = preparationBody.Cui,
// نرخ خرید ارز
Cpr = preparationBody.Cpr,
//ماخذ مالیات بر ارزش افزوده در الگوی فروش ارز
Sovat = preparationBody.Sovat
};
#endregion
InvoiceBody.Add(item);
}
// item = new InvoiceBodyDto
// {
// //شناسه کالا / خدمت
// Sstid = preparationBody.Sstid,
// //شرح کاال/خدمت
// Sstt = preparationBody.Sstt,
// // تعداد
// Am = preparationBody.Am,
// //واحد اندازه گیری
// Mu = preparationBody.Mu,
// //وزن خالص
// Nw= preparationBody.Nw,
// // مبلغ واحد
// Fee = preparationBody.Fee,
// //میزان ارز
// Cfee = preparationBody.Cfee ,
// //نوع ارز
// Cut = preparationBody.Cut,
// //نرخ برابری ارز با ریال
// Exr = preparationBody.Exr,
// // ارزش ریالی کاا
// Ssrv= preparationBody.Ssrv,
// // ارزش ارزی کاا
// Sscv= preparationBody.Sscv,
// //مبلغ قبل از تخفیف
// Prdis = preparationBody.Prdis,
// //مبلغ تخفیف
// Dis = preparationBody.Dis,
// //مبلغ بعد از تخفیف
// Adis = preparationBody.Adis,
// //نرخ مالیات بر ارزش افزوده
// Vra = preparationBody.Vra,
// //مبلغ مالیات بر ارزش افزوده
// Vam = preparationBody.Vam,
// //موضوع سایر مالیات و عوارض
// Odt = preparationBody.Odt,
// //نرخ سایر مالیات و عوارض
// Odr = preparationBody.Odr,
// //مبلغ سایر مالیات و عوارض
// Odam = preparationBody.Odam,
// //موضوع سایر وجوه قانونی
// Olt = preparationBody.Olt,
// //نرخ سایر وجوه قانونی
// Olr = preparationBody.Olr,
// //مبلغ سایر وجوه قانونی
// Olam = preparationBody.Olam,
// //اجرت ساخت
// Consfee = preparationBody.Consfee,
// // سود فروشنده
// Spro= preparationBody.Spro,
// //حقالعمل
// Bros= preparationBody.Bros,
// //جمع کل اجرت، حقالعمل و سود
// Tcpbs= preparationBody.Tcpbs,
// //سهم نقدی از پرداخت
// Cop = preparationBody.Cop,
// //سهم مالیات بر لرزش افزوده از پرداخت
// Vop = preparationBody.Vop,
// //شناسه یکتای ثبت قرارداد حق العمل کاری
// Bsrn = preparationBody.Bsrn,
// // مبلغ کل کالا / خدمت
// Tsstam = preparationBody.Tsstam,
// //عیار
// Cui = preparationBody.Cui,
// // نرخ خرید ارز
// Cpr = preparationBody.Cpr,
// //ماخذ مالیات بر ارزش افزوده در الگوی فروش ارز
// Sovat = preparationBody.Sovat
// };
// #endregion
// InvoiceBody.Add(item);
// }
//Pay
List<PaymentDto> InvoicePay = new List<PaymentDto>();
if (result.setm==1 || result.setm == 3)
{
if (level != 10)
foreach (var pitem in result.payments)
{
// //Pay
// List<PaymentDto> InvoicePay = new List<PaymentDto>();
// if (result.setm==1 || result.setm == 3)
// {
// if (level != 10)
// foreach (var pitem in result.payments)
// {
PaymentDto payment = new PaymentDto();
payment = new PaymentDto
{
Iinn = pitem.iinn,
Acn = pitem.acn,
Trmn = pitem.trmn,
Pmt = pitem.pmt,
Trn = pitem.trn,
Pcn = pitem.pcn,
Pid = pitem.pid,
Pdt = pitem.pdt,
Pv = pitem.pv,
// PaymentDto payment = new PaymentDto();
// payment = new PaymentDto
// {
// Iinn = pitem.iinn,
// Acn = pitem.acn,
// Trmn = pitem.trmn,
// Pmt = pitem.pmt,
// Trn = pitem.trn,
// Pcn = pitem.pcn,
// Pid = pitem.pid,
// Pdt = pitem.pdt,
// Pv = pitem.pv,
};
// };
InvoicePay.Add(payment);
}
}
// InvoicePay.Add(payment);
// }
// }
var responseModel = await _actionTaxPayer.SendInvoice(user.RolUsers.First().CompanyID, header, InvoiceBody, InvoicePay);
if (responseModel == null)
{
return BadRequest(new List<string> { "خطا در ورود به سامانه مودیان" });
}
else if (responseModel.Status == 200 && (responseModel.Body.Errors == null || responseModel.Body.Errors.Count == 0))
{
foreach (var item in responseModel.Body.Result)
{
// var responseModel = await _actionTaxPayer.SendInvoice(user.RolUsers.First().CompanyID, header, InvoiceBody, InvoicePay);
// if (responseModel == null)
// {
// return BadRequest(new List<string> { "خطا در ورود به سامانه مودیان" });
// }
// else if (responseModel.Status == 200 && (responseModel.Body.Errors == null || responseModel.Body.Errors.Count == 0))
// {
// foreach (var item in responseModel.Body.Result)
// {
var ressenttax = new SentTax
{
InvoiceID = result.ID,
Date = DateTime.Now.ConvertMiladiToShamsi(),
Time = $"{DateTime.Now.Hour}:{DateTime.Now.Minute}:{DateTime.Now.Second}",
InvoiceType = result.invoiceType,
ReferenceNumber = item.ReferenceNumber,
uId = item.Uid,
SentStatus = SentStatus.Send,
InvoiceModel = JsonConvert.SerializeObject(result, Formatting.Indented, new JsonSerializerSettings
{
PreserveReferencesHandling = PreserveReferencesHandling.Objects
}),
ResponseModel = JsonConvert.SerializeObject(responseModel)
// var ressenttax = new SentTax
// {
// InvoiceID = result.ID,
// Date = DateTime.Now.ConvertMiladiToShamsi(),
// Time = $"{DateTime.Now.Hour}:{DateTime.Now.Minute}:{DateTime.Now.Second}",
// InvoiceType = result.invoiceType,
// ReferenceNumber = item.ReferenceNumber,
// uId = item.Uid,
// SentStatus = SentStatus.Send,
// InvoiceModel = JsonConvert.SerializeObject(result, Formatting.Indented, new JsonSerializerSettings
// {
// PreserveReferencesHandling = PreserveReferencesHandling.Objects
// }),
// ResponseModel = JsonConvert.SerializeObject(responseModel)
};
await _servTaxPayer.AddSentTax(ressenttax);
}
result.taxid = header.Taxid;
result.irtaxid = header.Irtaxid;
return Ok(await _servTaxPayer.UpdateInvoice(result));
}
else
{
string errors = "";
foreach (var item in responseModel.Body.Errors)
errors += '\n' + $"{item.ErrorCode}:{item.Detail}";
// };
// await _servTaxPayer.AddSentTax(ressenttax);
// }
// result.taxid = header.Taxid;
// result.irtaxid = header.Irtaxid;
// return Ok(await _servTaxPayer.UpdateInvoice(result));
// }
// else
// {
// string errors = "";
// foreach (var item in responseModel.Body.Errors)
// errors += '\n' + $"{item.ErrorCode}:{item.Detail}";
return BadRequest(new List<string> { errors });
}
// return BadRequest(new List<string> { errors });
// }
#endregion
// #endregion
}
//}
}
[HttpPost("GetAllSentTax")]
public async Task<ActionResult<PagingDto<SentTaxDto>>> GetSentTax([FromBody] ItemSerchGetSentTax item)
@@ -484,88 +476,90 @@ namespace Back.Controllers
[HttpGet("GetResult/{ID}")]
public async Task<ActionResult<DataInSendTaxDto>> GetResultByUid(int ID)
{
try
{
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
var UserID = claim.Value;
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
var item = await _servTaxPayer.GetSentTax(user.RolUsers.First().CompanyID, ID);
if (item == null)
return BadRequest(new List<string> { "یافت نشد" });
return BadRequest(new List<string> { "در حال حاضر سامانه مودیان در دسترس نمی باشد" });
if (string.IsNullOrEmpty(item.uId))
return BadRequest(new List<string> { "کد پیگیری یافت نشد" });
//try
//{
// var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
// var UserID = claim.Value;
// var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
// var item = await _servTaxPayer.GetSentTax(user.RolUsers.First().CompanyID, ID);
// if (item == null)
// return BadRequest(new List<string> { "یافت نشد" });
if (!await _actionTaxPayer.login(user.RolUsers.First().CompanyID))
return BadRequest(new List<string> { "خطا در احراز هویت سازمان مالیاتی" });
// if (string.IsNullOrEmpty(item.uId))
// return BadRequest(new List<string> { "کد پیگیری یافت نشد" });
DataInSendTaxDto desData = new DataInSendTaxDto();
// if (!await _actionTaxPayer.login(user.RolUsers.First().CompanyID))
// return BadRequest(new List<string> { "خطا در احراز هویت سازمان مالیاتی" });
// DataInSendTaxDto desData = new DataInSendTaxDto();
if (item.SentStatus == SentStatus.Unsuccessful && !string.IsNullOrEmpty(item.ErrorsModel))
{
List<MessageInSendTaxDto> inquiryerrorResult = JsonConvert.DeserializeObject<List<MessageInSendTaxDto>>(item.ErrorsModel);
// if (item.SentStatus == SentStatus.Unsuccessful && !string.IsNullOrEmpty(item.ErrorsModel))
// {
// List<MessageInSendTaxDto> inquiryerrorResult = JsonConvert.DeserializeObject<List<MessageInSendTaxDto>>(item.ErrorsModel);
InquiryResultModel inquiryResult = JsonConvert.DeserializeObject<InquiryResultModel>(item.InquiryResultModel);
if (inquiryResult.Data != null)
{
// InquiryResultModel inquiryResult = JsonConvert.DeserializeObject<InquiryResultModel>(item.InquiryResultModel);
// if (inquiryResult.Data != null)
// {
desData = new DataInSendTaxDto();
desData.SentStatus = SentStatus.Unsuccessful;
desData.error = inquiryerrorResult;
// desData = new DataInSendTaxDto();
// desData.SentStatus = SentStatus.Unsuccessful;
// desData.error = inquiryerrorResult;
}
return Ok(desData);
}
else if (item.SentStatus == SentStatus.Send
|| item.SentStatus == SentStatus.pending
|| item.SentStatus == SentStatus.IN_PROGRESS
|| item.SentStatus == SentStatus.Unsuccessful)
{
// }
// return Ok(desData);
// }
// else if (item.SentStatus == SentStatus.Send
// || item.SentStatus == SentStatus.pending
// || item.SentStatus == SentStatus.IN_PROGRESS
// || item.SentStatus == SentStatus.Unsuccessful)
// {
//ta imja
var result = await _actionTaxPayer.GetResultByUid(user.RolUsers.First().CompanyID, item.uId);
if (result == null)
return BadRequest(new List<string> { "پاسخی از سازمان دریافت نشد" });
// //ta imja
// var result = await _actionTaxPayer.GetResultByUid(user.RolUsers.First().CompanyID, item.uId);
// if (result == null)
// return BadRequest(new List<string> { "پاسخی از سازمان دریافت نشد" });
else
{
item.InquiryResultModel = JsonConvert.SerializeObject(result);
if (result.Data != null)
{
desData = JsonConvert.DeserializeObject<DataInSendTaxDto>(result.Data.ToString());
if (desData == null)
{
desData = new DataInSendTaxDto();
desData.error = JsonConvert.DeserializeObject<List<MessageInSendTaxDto>>(result.Data.ToString());
}
}
// else
// {
// item.InquiryResultModel = JsonConvert.SerializeObject(result);
// if (result.Data != null)
// {
// desData = JsonConvert.DeserializeObject<DataInSendTaxDto>(result.Data.ToString());
// if (desData == null)
// {
// desData = new DataInSendTaxDto();
// desData.error = JsonConvert.DeserializeObject<List<MessageInSendTaxDto>>(result.Data.ToString());
// }
// }
desData.SentStatus = item.SentStatus =
result.Status == "FAILED" ? SentStatus.Unsuccessful
: result.Status == "PENDING" ? SentStatus.pending
: result.Status == "SUCCESS" ? SentStatus.Successful
: result.Status == "NOT_FOUND" ? SentStatus.NOT_FOUND
: result.Status == "IN_PROGRESS" ? SentStatus.IN_PROGRESS
: SentStatus.Unknown;
// desData.SentStatus = item.SentStatus =
// result.Status == "FAILED" ? SentStatus.Unsuccessful
// : result.Status == "PENDING" ? SentStatus.pending
// : result.Status == "SUCCESS" ? SentStatus.Successful
// : result.Status == "NOT_FOUND" ? SentStatus.NOT_FOUND
// : result.Status == "IN_PROGRESS" ? SentStatus.IN_PROGRESS
// : SentStatus.Unknown;
if (item.SentStatus == SentStatus.Unsuccessful)
item.ErrorsModel = JsonConvert.SerializeObject(desData.error);
}
// if (item.SentStatus == SentStatus.Unsuccessful)
// item.ErrorsModel = JsonConvert.SerializeObject(desData.error);
// }
if (await _servTaxPayer.UpdateSentTax(item)) return Ok(desData);
// if (await _servTaxPayer.UpdateSentTax(item)) return Ok(desData);
else return BadRequest(new List<string> { "خطای در ذخیره سازی" });
}
return BadRequest(new List<string> { "در این وضعیت امکان پذیر نمی باشد" });
}
catch (Exception ex)
{
return BadRequest(new List<string> { "خطای ناشناخته" });
}
// else return BadRequest(new List<string> { "خطای در ذخیره سازی" });
// }
// return BadRequest(new List<string> { "در این وضعیت امکان پذیر نمی باشد" });
//}
//catch (Exception ex)
//{
// return BadRequest(new List<string> { "خطای ناشناخته" });
//}
}
[HttpGet("GetBillTypes")]
public async Task<ActionResult<List<IdName<int>>>> GetBillTypes()
@@ -585,26 +579,30 @@ namespace Back.Controllers
[HttpGet("EconomicCodeInformation")]
public async Task<ActionResult<EconomicCodeModelDto>> GetEconomicCodeInformation(string item)
{
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
var UserID = claim.Value;
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
if (!await _actionTaxPayer.login(user.RolUsers.First().CompanyID))
return BadRequest(new List<string> { "خطا در احراز هویت سازمان مالیاتی" });
var result=await _actionTaxPayer.GetEconomicCodeInformation(item);
if (result == null) return NotFound();
return Ok(result);
return BadRequest(new List<string> { "در حال حاضر سامانه مودیان در دسترس نمی باشد" });
//var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
//var UserID = claim.Value;
//var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
//if (!await _actionTaxPayer.login(user.RolUsers.First().CompanyID))
// return BadRequest(new List<string> { "خطا در احراز هویت سازمان مالیاتی" });
//var result=await _actionTaxPayer.GetEconomicCodeInformation(item);
//if (result == null) return NotFound();
//return Ok(result);
}
[HttpGet("FiscalInformation")]
public async Task<ActionResult<FiscalInformationModelDto>> GetFiscalInformation(string item)
{
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
var UserID = claim.Value;
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
if (!await _actionTaxPayer.login(user.RolUsers.First().CompanyID))
return BadRequest(new List<string> { "خطا در احراز هویت سازمان مالیاتی" });
var result=await _actionTaxPayer.GetFiscalInformation(item);
if (result == null) return NotFound();
return Ok(result);
return BadRequest(new List<string> { "در حال حاضر سامانه مودیان در دسترس نمی باشد" });
//var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
//var UserID = claim.Value;
//var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
//if (!await _actionTaxPayer.login(user.RolUsers.First().CompanyID))
// return BadRequest(new List<string> { "خطا در احراز هویت سازمان مالیاتی" });
//var result=await _actionTaxPayer.GetFiscalInformation(item);
//if (result == null) return NotFound();
//return Ok(result);
}
[HttpGet("CodInTaxPayerHaveBeenSentSuccessfully/{CODID}")]
public async Task<ActionResult<bool>> CodInTaxPayerHaveBeenSentSuccessfully(int CODID)

View File

@@ -3,7 +3,6 @@ using Back.Services;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Shared.DTOs;
using Shared.DTOs.Serch;

View File

@@ -3,7 +3,6 @@ using System.ComponentModel.DataAnnotations.Schema;
using System.Text.Json.Serialization;
using Back.Common;
using Shared.DTOs;
using TaxCollectData.Library.Dto.Content;
namespace Back.Data.Models
{
public class Invoice : ICloneable

15
Back/DockerCommand.txt Normal file
View File

@@ -0,0 +1,15 @@
 from run E:\TaxPayerFULL
docker build -f back\Dockerfile -t api_moadiran .
docker run --name api_moadiran -d -p 3201:8080 api_moadiran
یکی از مشکلات این پروژه یکی کنابخانه سامانه مودیان بود که وقتی خود کنابخانه رو ریختیم کنار پروژه و در داکزفایل آدرسشو دادیم درست شد ولی ما کلا حذفش کردیم
یکی هم taxtools بود که اونم باید میومد کنار پروؤه ولی ما فعلا خذفش کردیم
کلا داکر نمیتونه به درایو ها دسترسی داشته باشه همه چی باید در خود پروژه باشه
--------------------------------------------------------------------------------------------
in local => docker build -f back\Dockerfile -t mmrbnjd/api_moadiran:latest .
in local => docker push mmrbnjd/api_moadiran:latest
in server => docker pull mmrbnjd/api_moadiran:latest
in server => docker run -d -p 3201:8080 --restart always mmrbnjd/api_moadiran:latest

30
Back/Dockerfile Normal file
View File

@@ -0,0 +1,30 @@
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 8080
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
# کپی csproj ها
COPY Back/Back.csproj Back/
COPY Shared/Shared.csproj Shared/
# کپی کردن سورس لوکال و NuGet.config (از داخل Back)
#COPY Back/NuGet.config ./
#COPY Back/LocalPackages ./LocalPackages
RUN dotnet restore "./Back/Back.csproj"
COPY . .
WORKDIR "/src/Back"
RUN dotnet build "./Back.csproj" -c $BUILD_CONFIGURATION -o /app/build
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./Back.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Back.dll"]

View File

@@ -1,25 +1,24 @@
using Newtonsoft.Json.Serialization;
using Newtonsoft.Json;

using System.Reflection;
namespace Back.Features
{
public class IgnorePropertiesResolver : DefaultContractResolver
{
private readonly HashSet<string> ignoreProps;
public IgnorePropertiesResolver(IEnumerable<string> propNamesToIgnore)
{
this.ignoreProps = new HashSet<string>(propNamesToIgnore);
}
//public class IgnorePropertiesResolver : DefaultContractResolver
//{
// private readonly HashSet<string> ignoreProps;
// public IgnorePropertiesResolver(IEnumerable<string> propNamesToIgnore)
// {
// this.ignoreProps = new HashSet<string>(propNamesToIgnore);
// }
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
JsonProperty property = base.CreateProperty(member, memberSerialization);
if (this.ignoreProps.Contains(property.PropertyName))
{
property.ShouldSerialize = _ => false;
}
return property;
}
}
// protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
// {
// JsonProperty property = base.CreateProperty(member, memberSerialization);
// if (this.ignoreProps.Contains(property.PropertyName))
// {
// property.ShouldSerialize = _ => false;
// }
// return property;
// }
//}
}

7
Back/NuGet.config Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
<add key="local" value="./LocalPackages" />
</packageSources>
</configuration>

View File

@@ -55,7 +55,7 @@ builder.Services.AddScoped(typeof(IAsyncRepository<>), typeof(RepositoryBase<>))
builder.Services.AddScoped(typeof(RepositoryBase<>), typeof(RepositoryBase<>));
builder.Services.AddScoped<Back.Services.ServBase>();
builder.Services.AddScoped<MobileValidation> ();
builder.Services.AddScoped<Service.Main>();
//builder.Services.AddScoped<Service.Main>();
builder.Services.AddScoped<servTicket > ();
builder.Services.AddScoped<ServValidatinMsg>();
builder.Services.AddScoped<GetVerificationValidation> ();
@@ -104,10 +104,11 @@ builder.Services.AddCors(options =>
options.AddPolicy(origins,
policy =>
{
policy.WithOrigins("https://localhost:7224", "http://localhost:5107"
, "http://195.88.208.142", "http://moadiran.ir"
, "https://195.88.208.142", "https://moadiran.ir"
, "https://195.88.208.142:440", "https://moadiran.ir:440", "https://localhost:44346")
policy.AllowAnyOrigin()
//.WithOrigins("https://localhost:7224", "http://localhost:5107"
// , "http://195.88.208.142", "http://moadiran.ir"
// , "https://195.88.208.142", "https://moadiran.ir"
//, "https://195.88.208.142:440", "https://moadiran.ir:440", "https://localhost:44346")
.AllowAnyHeader()
.WithHeaders(HeaderNames.ContentType)
.AllowAnyMethod();
@@ -135,7 +136,7 @@ builder.Services.AddAuthentication("Bearer")
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
if (true || app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();

View File

@@ -27,6 +27,17 @@
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Container (Dockerfile)": {
"commandName": "Docker",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger",
"environmentVariables": {
"ASPNETCORE_HTTPS_PORTS": "8081",
"ASPNETCORE_HTTP_PORTS": "8080"
},
"publishAllPorts": true,
"useSSL": true
}
},
"$schema": "http://json.schemastore.org/launchsettings.json",

View File

@@ -1,13 +1,8 @@
using Back.Common;
using Microsoft.IdentityModel.Tokens;
using Newtonsoft.Json;
using Shared.DTOs;
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
{
@@ -26,77 +21,77 @@ namespace Back.Services
public string GenerateTaxid(string FactorNo, string InvoiceDate)
{
//return "testTaxid";
return TaxApiService.Instance.TaxIdGenerator.GenerateTaxId(_UniqueMemory,
Convert.ToInt64(FactorNo), InvoiceDate.ToMiladi());
return "testTaxid";
//return TaxApiService.Instance.TaxIdGenerator.GenerateTaxId(_UniqueMemory,
// Convert.ToInt64(FactorNo), InvoiceDate.ToMiladi());
}
public async Task<InquiryResultModel> GetResultByUid(int CompanyID, string uid)
{
//public async Task<InquiryResultModel> GetResultByUid(int CompanyID, string uid)
//{
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<TaxCollectData.Library.Dto.HttpResponse<AsyncResponseModel>> SendInvoice(int CompanyID,InvoiceHeaderDto header, List<InvoiceBodyDto> InvoiceBody, List<PaymentDto> payments)
{
return await TaxApiService.Instance.TaxApis.SendInvoicesAsync(new List<InvoiceDto>()
{
new()
{
Header =header,Body =InvoiceBody,Payments = payments
}
}
, null);
}
public async Task<EconomicCodeModel?> GetEconomicCodeInformation(string Item)
{
// 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<TaxCollectData.Library.Dto.HttpResponse<AsyncResponseModel>> SendInvoice(int CompanyID,InvoiceHeaderDto header, List<InvoiceBodyDto> InvoiceBody, List<PaymentDto> payments)
//{
// return await TaxApiService.Instance.TaxApis.SendInvoicesAsync(new List<InvoiceDto>()
// {
// new()
// {
// Header =header,Body =InvoiceBody,Payments = payments
// }
// }
// , null);
//}
//public async Task<EconomicCodeModel?> GetEconomicCodeInformation(string Item)
//{
return await TaxApiService.Instance.TaxApis.GetEconomicCodeInformationAsync(Item);
// return await TaxApiService.Instance.TaxApis.GetEconomicCodeInformationAsync(Item);
}
public async Task<FiscalInformationModel?> GetFiscalInformation(string Item)
{
return await TaxApiService.Instance.TaxApis.GetFiscalInformationAsync(Item);
}
//}
//public async Task<FiscalInformationModel?> GetFiscalInformation(string Item)
//{
// return await TaxApiService.Instance.TaxApis.GetFiscalInformationAsync(Item);
//}
//-------------------internal
public async Task<bool> login(int CompanyID)
{
return false;
//try
//{
// #region TokenTax
// var resquth = await _servCompany.GetTaxAuth(CompanyID);
// if (string.IsNullOrEmpty(resquth.UniqueMemory) || string.IsNullOrEmpty(resquth.PrivateKey))
// return false;
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))
{
// if (!string.IsNullOrEmpty(resquth.UniqueMemory) && !string.IsNullOrEmpty(resquth.PrivateKey))
// {
//string taxapi = _configuration.GetSection("TaxPayerApi").Value;
string taxapi = "https://sandboxrc.tax.gov.ir/req/api/";
_UniqueMemory = resquth.UniqueMemory;
_PrivateKey = resquth.PrivateKey;
TaxApiService.Instance.Init(_UniqueMemory,
new SignatoryConfig(_PrivateKey, null),
new NormalProperties(ClientType.SELF_TSP), taxapi);
await TaxApiService.Instance.TaxApis.GetServerInformationAsync();
}
#endregion
// //string taxapi = _configuration.GetSection("TaxPayerApi").Value;
// string taxapi = "https://sandboxrc.tax.gov.ir/req/api/";
// _UniqueMemory = resquth.UniqueMemory;
// _PrivateKey = resquth.PrivateKey;
// TaxApiService.Instance.Init(_UniqueMemory,
// new SignatoryConfig(_PrivateKey, null),
// new NormalProperties(ClientType.SELF_TSP), taxapi);
// 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;
}
// if (TaxApiService.Instance.TaxApis.GetToken() is null)
// {
// if (await TaxApiService.Instance.TaxApis.RequestTokenAsync() == null)
// return false;
// }
// return true;
//}
//catch (Exception)
//{
// return false;
//}
}

View File

@@ -16,15 +16,15 @@ namespace Back.Services
private readonly IAsyncRepository<Blog> _repoBlog;
private readonly IAsyncRepository<Question> _repoQuestion;
private readonly IAsyncRepository<SaleLead> _repoSaleLead;
private readonly Service.Main _Taxtools;
// private readonly Service.Main _Taxtools;
public ServBase(IAsyncRepository<Pricing> repoPricing,
IAsyncRepository<Blog> repoBlog, IAsyncRepository<Question> repoQuestion
, Service.Main taxtools, IAsyncRepository<SaleLead> repoSaleLead)
/* , Service.Main taxtools*/, IAsyncRepository<SaleLead> repoSaleLead)
{
_repoPricing = repoPricing;
_repoBlog = repoBlog;
_repoQuestion = repoQuestion;
_Taxtools = taxtools;
// _Taxtools = taxtools;
_repoSaleLead = repoSaleLead;
}
public async Task<List<BasePriceDto>> GetBasePrice()
@@ -89,63 +89,63 @@ namespace Back.Services
public async Task<TaxToolsDTO?> CreateCsrAndPrivateKey(CsrPrivateKeyDto model)
{
TaxToolsDTO taxTools = null;
List<Service.PrmValue> values = new List<Service.PrmValue>()
{
new Service.PrmValue(){Prm="CN",Value=model.cn},
new Service.PrmValue(){Prm="serialNumber",Value=model.sn},
new Service.PrmValue(){Prm="O",Value="Non-Governmental"},
new Service.PrmValue(){Prm="3.OU",Value=model.company},
new Service.PrmValue(){Prm="2.OU",Value=model.company},
new Service.PrmValue(){Prm="1.OU",Value=model.company},
new Service.PrmValue(){Prm="C",Value="IR"},
};
string msg = "";
if (_Taxtools.CraeteCnfFile(values, ref msg))
{
if (_Taxtools.CreateCsrAndPrivateKey(model.cn, ref msg))
{
taxTools = new TaxToolsDTO();
//خواندن
Stream stream = File.Open($"C:\\OpenSSL\\bin\\{model.cn}.Csr", FileMode.Open);
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, (int)stream.Length);
string csr = Encoding.UTF8.GetString(buffer);
stream.Flush();
stream.Close();
taxTools.Base64csr = Convert.ToBase64String(buffer);
taxTools.typecsr = "Csr";
stream = File.Open($"C:\\OpenSSL\\bin\\{model.cn}.key", FileMode.Open);
buffer = new byte[stream.Length];
stream.Read(buffer, 0, (int)stream.Length);
string key = Encoding.UTF8.GetString(buffer);
taxTools.Base64key = Convert.ToBase64String(buffer);
taxTools.typekey = "key";
stream.Flush();
stream.Close();
//List<Service.PrmValue> values = new List<Service.PrmValue>()
//{
// new Service.PrmValue(){Prm="CN",Value=model.cn},
// new Service.PrmValue(){Prm="serialNumber",Value=model.sn},
// new Service.PrmValue(){Prm="O",Value="Non-Governmental"},
// new Service.PrmValue(){Prm="3.OU",Value=model.company},
// new Service.PrmValue(){Prm="2.OU",Value=model.company},
// new Service.PrmValue(){Prm="1.OU",Value=model.company},
// new Service.PrmValue(){Prm="C",Value="IR"},
//};
//string msg = "";
//if (_Taxtools.CraeteCnfFile(values, ref msg))
//{
// if (_Taxtools.CreateCsrAndPrivateKey(model.cn, ref msg))
// {
// taxTools = new TaxToolsDTO();
// //خواندن
// Stream stream = File.Open($"C:\\OpenSSL\\bin\\{model.cn}.Csr", FileMode.Open);
// byte[] buffer = new byte[stream.Length];
// stream.Read(buffer, 0, (int)stream.Length);
// string csr = Encoding.UTF8.GetString(buffer);
// stream.Flush();
// stream.Close();
// taxTools.Base64csr = Convert.ToBase64String(buffer);
// taxTools.typecsr = "Csr";
// stream = File.Open($"C:\\OpenSSL\\bin\\{model.cn}.key", FileMode.Open);
// buffer = new byte[stream.Length];
// stream.Read(buffer, 0, (int)stream.Length);
// string key = Encoding.UTF8.GetString(buffer);
// taxTools.Base64key = Convert.ToBase64String(buffer);
// taxTools.typekey = "key";
// stream.Flush();
// stream.Close();
//_contextMongodb.InsertItem(new SysLog()
//{
// TraceIdentifierID = _httpContextAccessor.HttpContext.TraceIdentifier,
// Datetime = DateTime.Now.ConvertMiladiToShamsi(),
// Method = $"{_httpContextAccessor.HttpContext.Request.Method}/{this.GetType().FullName}/CreateCsrAndPrivateKey",
// Value = JsonConvert.SerializeObject(model),
// Route = _httpContextAccessor.HttpContext.Request.Path,
// Type = "User"
//});
await _repoSaleLead.AddAsync(new SaleLead
{
cn = model.cn,
company = model.company,
csr = csr,
Key = key,
Mobile = model.Mobile,
sn = model.sn
});
}
// //_contextMongodb.InsertItem(new SysLog()
// //{
// // TraceIdentifierID = _httpContextAccessor.HttpContext.TraceIdentifier,
// // Datetime = DateTime.Now.ConvertMiladiToShamsi(),
// // Method = $"{_httpContextAccessor.HttpContext.Request.Method}/{this.GetType().FullName}/CreateCsrAndPrivateKey",
// // Value = JsonConvert.SerializeObject(model),
// // Route = _httpContextAccessor.HttpContext.Request.Path,
// // Type = "User"
// //});
// await _repoSaleLead.AddAsync(new SaleLead
// {
// cn = model.cn,
// company = model.company,
// csr = csr,
// Key = key,
// Mobile = model.Mobile,
// sn = model.sn
// });
// }
}
//}
if (string.IsNullOrEmpty(msg))
// if (string.IsNullOrEmpty(msg))
{
//_contextMongodb.InsertItem(new SysLog()
//{

View File

@@ -4,7 +4,6 @@ using Back.Data.Infrastructure.Repository;
using Back.Data.Models;
using Microsoft.EntityFrameworkCore;
using Microsoft.IdentityModel.Tokens;
using Org.BouncyCastle.Crypto.Tls;
using Shared.DTOs;
using System.ComponentModel.Design;
using System.Data.SqlTypes;

View File

@@ -5,7 +5,6 @@ using Back.Services;
using FluentValidation;
using Microsoft.EntityFrameworkCore;
using Shared.DTOs;
using TaxCollectData.Library.Dto.Content;
namespace Back.Validations
{

View File

@@ -1,9 +1,8 @@
using FluentValidation;
using TaxCollectData.Library.Dto.Content;
namespace Back.Validations
{
public class TaxSystemRules : AbstractValidator<Tuple<InvoiceHeaderDto, List<InvoiceBodyDto>, PaymentDto>>
{
}
//public class TaxSystemRules : AbstractValidator<Tuple<InvoiceHeaderDto, List<InvoiceBodyDto>, PaymentDto>>
//{
//}
}

View File

@@ -1,7 +1,6 @@
using Back.Data.Contracts;
using FluentValidation;
using Shared.DTOs.Warehouse;
using Net.Pkcs11Interop.Common;
using Back.Services;
using Back.Data.Models;
using Back.Common;

View File

@@ -6,5 +6,14 @@
}
},
"AllowedHosts": "*",
"TaxPayerApi": "https://tp.tax.gov.ir/req/api/"
"TaxPayerApi": "https://tp.tax.gov.ir/req/api/",
"ConnectionStrings": {
"Base": "Data Source=195.88.208.142;Initial Catalog=TaxPayer020713;User ID=sa;Password=M439610m@;TrustServerCertificate=True"
},
"Fixedvalues": {
"Jwt_Lifetime_Minutes": "144000"
},
"CreateReportFileName": "E:\\CreateReport\\CreateReport.exe",
"ReportLog": "E:\\Report\\log.txt"
}