This commit is contained in:
mmrbnjd
2024-06-20 18:22:34 +03:30
parent 2120c4d848
commit 309fac81d3
10 changed files with 258 additions and 212 deletions

View File

@@ -36,7 +36,7 @@
<ItemGroup>
<Reference Include="Service">
<HintPath>..\..\..\LocalGit\TaxPayerTools\Service\bin\Debug\Service.dll</HintPath>
<HintPath>..\..\Dlls\Service.dll</HintPath>
</Reference>
</ItemGroup>

View File

@@ -43,6 +43,14 @@ namespace Back.Common
PersianCal.GetDayOfMonth(date).ToString("00")
;
}
public static string ConvertMiladiToShamsiAndGetYearMonth(this DateTime date)
{
PersianCalendar PersianCal = new PersianCalendar();
return
PersianCal.GetYear(date).ToString("0000") +
PersianCal.GetMonth(date).ToString("00");
}
public static string ConvertMiladiToShamsiByTime(this DateTime date)
{
PersianCalendar PersianCal = new PersianCalendar();

View File

@@ -40,7 +40,7 @@ namespace Back.Services
.ThenInclude(inc => inc.CODUnit)
.Include(inc=>inc.sentTax)
//.Include(inc => inc.payments)
//.Include(inc => inc.pattern)
.Include(inc => inc.pattern)
.Select(s => new InvoiceDTO()
{
IsDeleted=s.IsDeleted,
@@ -135,7 +135,7 @@ namespace Back.Services
.ThenInclude(inc => inc.cODItem)
.ThenInclude(inc => inc.CODUnit)
//.Include(inc => inc.payments)
//.Include(inc => inc.pattern)
.Include(inc => inc.pattern)
.Select(s => new InvoiceGridDTO()
{

View File

@@ -295,27 +295,73 @@ namespace Back.Services
request.lastActivitiesSevices.Add(lastcus);
#endregion
try
{
var MostInvoicedProduct = await _invoiceitemRepo.Get(w => w.invoice.CompanyID == user.RolUsers.First().CompanyID
List<string> dt = new List<string>();
for (int i = -7; i < 1; i++)
dt.Add(DateTime.Now.AddDays(i).ConvertMiladiToShamsi());
request.MostInvoicedProduct = await _invoiceitemRepo.Get(w => w.invoice.CompanyID == user.RolUsers.First().CompanyID
&& (w.invoice.invoiceType == InvoiceType.Sale || w.invoice.invoiceType == InvoiceType.BackFrmSale
|| w.invoice.invoiceType == InvoiceType.Repair) && !w.invoice.BillReference.HasValue
)
//.Include(inc => inc.cODItem)
// .GroupBy(g => g.CODID)
// .Select(s => new IdNameByCount<int>
// {
// ID = s.Key,
// Title = s.Select(s => s.sstt).First(),
// count = Convert.ToInt32(s.Sum(s => s.am))
// }).OrderByDescending(o => o.count)
&& (dt.Contains(w.invoice.Cdate)))
.Include(inc => inc.cODItem)
.GroupBy(g => g.CODID)
.Select(s => new IdNameByCount<int>
{
ID = s.Key,
Title = s.Select(s => s.sstt).First(),
count = s.Sum(s => s.am)
}).OrderByDescending(o => o.count)
.ToListAsync();
}
catch (Exception ex)
{
throw;
request.MostInvoicedCustomer =await _RepoInvoice.Get(w => w.CompanyID == user.RolUsers.First().CompanyID
&& (w.invoiceType == InvoiceType.Sale || w.invoiceType == InvoiceType.BackFrmSale
|| w.invoiceType == InvoiceType.Repair) && !w.BillReference.HasValue
&& (dt.Contains(w.Cdate)))
.Include(inc => inc.Customer)
.GroupBy(g => g.CustomerID)
.Select(s => new IdNameByCount<int>
{
ID = s.Key,
Title = s.Select(s => s.Customer.FullName).First(),
count = s.Count()
}).OrderByDescending(o => o.count)
.ToListAsync();
var cdate = DateTime.Now.ConvertMiladiToShamsiAndGetYearMonth();
var sale = await _RepoInvoice.Get(w => w.CompanyID == user.RolUsers.First().CompanyID
&& (w.invoiceType == InvoiceType.Sale || w.invoiceType == InvoiceType.BackFrmSale
|| w.invoiceType == InvoiceType.Repair) && !w.BillReference.HasValue && w.Cdate.StartsWith(cdate))
.Include(inc => inc.invoiceDetails)
.ThenInclude(inc => inc.cODItem)
.ThenInclude(inc => inc.CODUnit)
.Include(inc => inc.pattern)
.Select(s => s.tbill)
.ToListAsync();
request.SaleInMonth = sale.Sum();
cdate = DateTime.Now.AddMonths(-1).ConvertMiladiToShamsiAndGetYearMonth();
var lastonthsale = await _RepoInvoice.Get(w => w.CompanyID == user.RolUsers.First().CompanyID
&& (w.invoiceType == InvoiceType.Sale || w.invoiceType == InvoiceType.BackFrmSale
|| w.invoiceType == InvoiceType.Repair) && !w.BillReference.HasValue && w.Cdate.StartsWith(cdate))
.Include(inc => inc.invoiceDetails)
.ThenInclude(inc => inc.cODItem)
.ThenInclude(inc => inc.CODUnit)
.Include(inc => inc.pattern)
.Select(s => s.tbill)
.ToListAsync();
decimal? total = lastonthsale.Sum();
decimal? part = request.SaleInMonth;
//decimal? total = 17892909;
//decimal? part = request.SaleInMonth;
if (total.HasValue && total.Value > 0)
{
if (!part.HasValue) part = 0;
request.Salepercent =decimal.Parse( ((part.Value / total.Value) * 100).ToString().Split('.')[0]);
}

View File

@@ -18,6 +18,9 @@ namespace Shared.DTOs
public List<AlertDTO> Notifications { get; set; } = new List<AlertDTO>();
public List<LastActivitySevice> lastActivitiesSevices { get; set; }=new List<LastActivitySevice>();
public List<IdNameByCount<int>>? MostInvoicedProduct { get; set; }=new List<IdNameByCount<int>>();
public List<IdNameByCount<int>>? MostInvoicedCustomer { get; set; } = new List<IdNameByCount<int>>();
public decimal? SaleInMonth { get; set; } = 0;
public decimal? Salepercent { get; set; } = 0;
}
public class ServiceInDashBoardDTO
{

View File

@@ -17,6 +17,6 @@ namespace Shared.DTOs
}
public class IdNameByCount<T> : IdName<T>
{
public int count { get; set; }
public decimal? count { get; set; }
}
}

View File

@@ -0,0 +1,55 @@
@using Shared.DTOs
@using Front.Services
@inject HttpClientController hc;
@inject Fixedvalues fv;
<Modal @ref="cusmodal" />
<div class="col-md-5 col-lg-3 order-2 mb-4">
<div class="card h-100">
<div class="card-header d-flex align-items-center justify-content-between">
<h5 class="card-title m-0 me-2">فاکتور برای مشتری</h5>
<span class="badge bg-label-warning rounded-pill">هفنه گدشته</span>
</div>
<div class="card-body">
<ul class="p-0 m-0">
@foreach (var item in model)
{
<li class="d-flex">
<div class="d-flex w-100 flex-wrap align-items-center justify-content-between gap-2">
<div class="me-2">
<button @onclick="()=>CustomerItem(item.ID)" type="button" class="btn btn-link">@item.Title</button>
</div>
<div class="user-progress d-flex align-items-center gap-1"><h6 class="mb-0">@item.count.Value.ToString("N0")</h6> <span class="text-muted">عدد</span></div>
</div>
</li>
}
</ul>
</div>
</div>
</div>
@code {
[Parameter] public List<IdNameByCount<int>>? model { get; set; }
private Modal cusmodal = default!;
}
@functions{
public async Task CallBackCustomerItem(ActionInResultComponent result)
{
}
public async Task CustomerItem(int ID)
{
var rsp = await hc.Get($"Customer/GetCustomer/{ID}");
if (rsp.IsSuccessStatusCode)
{
var cus = await rsp.Content.ReadFromJsonAsync<RCustomer>();
var parameters = new Dictionary<string, object>();
parameters.Add("Cus", cus);
parameters.Add("OnMultipleOfThree", EventCallback.Factory.Create<ActionInResultComponent>(this, CallBackCustomerItem));
await cusmodal.ShowAsync<CUSComponent.CustomerItem>(title: "ویرایش اطلاعات", parameters: parameters);
}
}
}

View File

@@ -1,6 +1,60 @@
@using Shared.DTOs
<h3>MostInvoicedProduct</h3>
@using Front.Services
@inject HttpClientController hc;
@inject Fixedvalues fv;
<Modal @ref="codmodal" />
<div class="col-md-5 col-lg-3 order-2 mb-4">
<div class="card h-100">
<div class="card-header d-flex align-items-center justify-content-between">
<h5 class="card-title m-0 me-2">کالا های فاکتور شده</h5>
<span class="badge bg-label-warning rounded-pill">هفنه گدشته</span>
</div>
<div class="card-body">
<ul class="p-0 m-0">
@foreach (var item in model)
{
if (indexer == 6)
break;
<li class="d-flex">
<div class="d-flex w-100 flex-wrap align-items-center justify-content-between gap-2">
<div class="me-2">
<button @onclick="()=>CODItem(item.ID)" type="button" class="btn btn-link">@item.Title</button>
</div>
<div class="user-progress d-flex align-items-center gap-1"><h6 class="mb-0">@item.count.Value.ToString("N0")</h6> <span class="text-muted">عدد</span></div>
</div>
</li>
indexer++;
}
</ul>
</div>
</div>
</div>
@code {
int indexer = 1;
[Parameter] public List<IdNameByCount<int>>? model { get; set; }
private Modal codmodal = default!;
}
@functions{
public async Task CallBackCodItem(ActionInResultComponent result) { }
public async Task CODItem(int ID)
{
var rsp = await hc.Get($"Cod/GetCod/{ID}");
if (rsp.IsSuccessStatusCode)
{
var cod = await rsp.Content.ReadFromJsonAsync<RCOD>();
var parameters = new Dictionary<string, object>();
var Unitrequest = await fv.GetUnits();
parameters.Add("Cod", cod);
parameters.Add("Unitrequest", Unitrequest);
parameters.Add("OnMultipleOfThree", EventCallback.Factory.Create<ActionInResultComponent>(this, CallBackCodItem));
await codmodal.ShowAsync<CUSComponent.CodItem>(title: "ویرایش اطلاعات", parameters: parameters);
}
}
}

View File

@@ -10,7 +10,7 @@
<PageTitle>کاربری</PageTitle>
<div class="row">
<div class="col-lg-8 mb-4 order-0">
<div class="col-lg-6 mb-3 order-0">
<div class="card">
<div class="d-flex align-items-end row">
<div class="col-sm-7">
@@ -22,7 +22,48 @@
</div>
<div class="col-sm-5 text-center text-sm-left">
<div class="card-body pb-0 px-0 px-md-4">
<img src="assets/img/illustrations/man-with-laptop-light.png" height="140" alt="View Badge User" data-app-dark-img="illustrations/man-with-laptop-dark.png" data-app-light-img="illustrations/man-with-laptop-light.png">
<img src="assets/img/illustrations/man-with-laptop-light.png" height="165" alt="View Badge User" data-app-dark-img="illustrations/man-with-laptop-dark.png" data-app-light-img="illustrations/man-with-laptop-light.png">
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-2 mb-1 order-0">
<div class="col-12 mb-4">
<div class="card">
<div class="card-body">
<div class="d-flex justify-content-between flex-sm-row flex-column gap-3">
<div class="d-flex flex-sm-column flex-row align-items-start justify-content-between">
<div class="card-title">
<h5 class="text-nowrap mb-2">گزارش فروش</h5>
<span class="badge bg-label-warning rounded-pill">این ماه</span>
</div>
@if (dashBoard != null && dashBoard.SaleInMonth.HasValue)
{
<div class="mt-sm-auto">
@if (dashBoard.Salepercent.HasValue && dashBoard.Salepercent.Value>0)
{
if (dashBoard.Salepercent.Value>=100)
{
<small class="text-success text-nowrap fw-semibold"><i class='bx bx-chevron-up'></i> @dashBoard.Salepercent %</small>
}
else
{
<small class="text-danger text-nowrap fw-semibold"><i class='bx bx-chevron-down'></i> @dashBoard.Salepercent %</small>
}
}
<h6 class="mb-0">@dashBoard?.SaleInMonth.Value.ToString("N0")
<span style="font-size: 10px"> ریال</span>
</h6>
</div>
}
</div>
</div>
</div>
</div>
@@ -32,7 +73,7 @@
<div class="row">
@if (dashBoard != null && dashBoard.AlistofServices.Any(w => w.PermissionID == 3))
{
<div class="col-lg-6 col-md-12 col-6 mb-4">
<div class="card">
<div class="card-body">
@@ -45,7 +86,7 @@
<i class="bx bx-dots-vertical-rounded"></i>
</button>
<div class="dropdown-menu dropdown-menu-end customStyle new-style-15" aria-labelledby="cardOpt3">
<a class="dropdown-item" >تمدید</a>
<a class="dropdown-item">تمدید</a>
<NavLink class="dropdown-item" href="Invoice">صورتحساب ها</NavLink>
</div>
</div>
@@ -54,7 +95,7 @@
<h3 class="card-title mb-1"><span style="font-size: 14px">مانده</span></h3>
@if (dashBoard.AlistofServices.Any(w => w.PermissionID == 3 && w.CalTypeID == 1))
{
@if (dashBoard.AlistofServices.Where(w => w.PermissionID == 3 && w.CalTypeID == 1).Select(s => s.Remaining).First()>0)
@if (dashBoard.AlistofServices.Where(w => w.PermissionID == 3 && w.CalTypeID == 1).Select(s => s.Remaining).First() > 0)
{
<small class="text-success fw-semibold">
@@ -88,7 +129,7 @@
تا تاریخ @dashBoard.AlistofServices.Where(w => w.PermissionID == 3 && w.CalTypeID == 1).Select(s => s.Remaining).First().ToString().ShamciToFormatShamciinFront()
</small>
}
else
else
{
<small class="text-danger fw-semibold">
<i class='bx'></i>
@@ -114,7 +155,7 @@
<i class="bx bx-dots-vertical-rounded"></i>
</button>
<div class="dropdown-menu dropdown-menu-end customStyle new-style-15" aria-labelledby="cardOpt3">
<a class="dropdown-item" >تمدید</a>
<a class="dropdown-item">تمدید</a>
<NavLink class="dropdown-item" href="Cod">کالا ها</NavLink>
</div>
</div>
@@ -123,7 +164,7 @@
<h3 class="card-title mb-1"><span style="font-size: 14px">مانده</span></h3>
@if (dashBoard.AlistofServices.Any(w => w.PermissionID == 4 && w.CalTypeID == 1))
{
@if (dashBoard.AlistofServices.Where(w => w.PermissionID == 4 && w.CalTypeID == 1).Select(s => s.Remaining).First()>0)
@if (dashBoard.AlistofServices.Where(w => w.PermissionID == 4 && w.CalTypeID == 1).Select(s => s.Remaining).First() > 0)
{
<small class="text-success fw-semibold">
<i class='bx'></i>
@@ -246,7 +287,7 @@
<h3 class="card-title mb-1"><span style="font-size: 14px">مانده</span></h3>
@if (dashBoard.AlistofServices.Any(w => w.PermissionID == 5 && w.CalTypeID == 1))
{
@if (dashBoard.AlistofServices.Where(w => w.PermissionID == 5 && w.CalTypeID == 1).Select(s => s.Remaining).First()>0)
@if (dashBoard.AlistofServices.Where(w => w.PermissionID == 5 && w.CalTypeID == 1).Select(s => s.Remaining).First() > 0)
{
<small class="text-success fw-semibold">
@@ -315,7 +356,7 @@
<h3 class="card-title mb-1"><span style="font-size: 14px">مانده</span></h3>
@if (dashBoard.AlistofServices.Any(w => w.PermissionID == 16 && w.CalTypeID == 1))
{
@if (dashBoard.AlistofServices.Where(w => w.PermissionID == 16 && w.CalTypeID == 1).Select(s => s.Remaining).First()>0)
@if (dashBoard.AlistofServices.Where(w => w.PermissionID == 16 && w.CalTypeID == 1).Select(s => s.Remaining).First() > 0)
{
<small class="text-success fw-semibold">
<i class='bx'></i>
@@ -360,28 +401,10 @@
</div>
</div>
}
<!-- </div>
<div class="row"> -->
<div class="col-12 mb-4">
<div class="card">
<div class="card-body">
<div class="d-flex justify-content-between flex-sm-row flex-column gap-3">
<div class="d-flex flex-sm-column flex-row align-items-start justify-content-between">
<div class="card-title">
<h5 class="text-nowrap mb-2">گزارش نمایه</h5>
<span class="badge bg-label-warning rounded-pill">سال 1399</span>
</div>
<div class="mt-sm-auto">
<small class="text-success text-nowrap fw-semibold"><i class='bx bx-chevron-up'></i> 68.2%</small>
<h3 class="mb-0">84,686<span style="font-size: 14px">تومان</span></h3>
</div>
</div>
<div id="profileReportChart"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@@ -389,163 +412,20 @@
<!-- Order Statistics -->
<LastActivityServices dashBoard="dashBoard" />
<!--/ Order Statistics -->
<!-- Expense Overview -->
<div class="col-md-6 col-lg-4 order-1 mb-4">
<div class="card h-100">
<div class="card-header">
<ul class="nav nav-pills" role="tablist">
<li class="nav-item">
<button type="button" class="nav-link active" role="tab" data-bs-toggle="tab" data-bs-target="#navs-tabs-line-card-income" aria-controls="navs-tabs-line-card-income" aria-selected="true">درآمد</button>
</li>
<li class="nav-item">
<button type="button" class="nav-link" role="tab">هزینه ها</button>
</li>
<li class="nav-item">
<button type="button" class="nav-link" role="tab">سود</button>
</li>
</ul>
</div>
<div class="card-body px-0">
<div class="tab-content p-0">
<div class="tab-pane fade show active" id="navs-tabs-line-card-income" role="tabpanel">
<div class="d-flex p-4 pt-3">
<div class="avatar flex-shrink-0 me-3">
<img src="assets/img/icons/unicons/wallet.png" alt="User">
</div>
<div>
<small class="text-muted d-block">کل موجودی</small>
<div class="d-flex align-items-center">
<h6 class="mb-0 me-1">459.10<span style="font-size: 14px">تومان</span></h6>
<small class="text-success fw-semibold">
<i class='bx bx-chevron-up'></i>
42.9%
</small>
</div>
</div>
</div>
<div id="incomeChart"></div>
<div class="d-flex justify-content-center pt-4 gap-2">
<div class="flex-shrink-0">
<div id="expensesOfWeek"></div>
</div>
<div>
<p class="mb-n1 mt-1">هزینه های این هفته</p>
<small class="text-muted"><span style="font-size: 14px">تومان</span>39 کمتر از هفته گذشته</small>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!--/ Expense Overview -->
<!-- Transactions -->
<div class="col-md-6 col-lg-4 order-2 mb-4">
<div class="card h-100">
<div class="card-header d-flex align-items-center justify-content-between">
<h5 class="card-title m-0 me-2">معاملات</h5>
<div class="dropdown">
<button class="btn p-0" type="button" id="transactionID" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="bx bx-dots-vertical-rounded"></i>
</button>
<div class="dropdown-menu dropdown-menu-end new-style-16" aria-labelledby="transactionID">
<a class="dropdown-item" href="javascript:void(0);">28 روز گذشته</a>
<a class="dropdown-item" href="javascript:void(0);">ماه گذشته</a>
<a class="dropdown-item" href="javascript:void(0);">سال گذشته</a>
</div>
</div>
</div>
<div class="card-body">
<ul class="p-0 m-0">
<li class="d-flex mb-4 pb-1">
<div class="avatar flex-shrink-0 me-3">
<img src="assets/img/icons/unicons/paypal.png" alt="User" class="rounded">
</div>
<div class="d-flex w-100 flex-wrap align-items-center justify-content-between gap-2">
<div class="me-2">
<small class="text-muted d-block mb-1">پی پال</small>
<h6 class="mb-0">ارسال پول</h6>
</div>
<div class="user-progress d-flex align-items-center gap-1">
<h6 class="mb-0">+82.6</h6> <span class="text-muted">ریال</span>
</div>
</div>
</li>
<li class="d-flex mb-4 pb-1">
<div class="avatar flex-shrink-0 me-3">
<img src="assets/img/icons/unicons/wallet.png" alt="User" class="rounded">
</div>
<div class="d-flex w-100 flex-wrap align-items-center justify-content-between gap-2">
<div class="me-2">
<small class="text-muted d-block mb-1">کیف پول</small>
<h6 class="mb-0">مک دی</h6>
</div>
<div class="user-progress d-flex align-items-center gap-1">
<h6 class="mb-0">+270.69</h6> <span class="text-muted">ریال</span>
</div>
</div>
</li>
<li class="d-flex mb-4 pb-1">
<div class="avatar flex-shrink-0 me-3">
<img src="assets/img/icons/unicons/chart.png" alt="User" class="rounded">
</div>
<div class="d-flex w-100 flex-wrap align-items-center justify-content-between gap-2">
<div class="me-2">
<small class="text-muted d-block mb-1">منتقل کردن</small>
<h6 class="mb-0">بازپرداخت</h6>
</div>
<div class="user-progress d-flex align-items-center gap-1">
<h6 class="mb-0">+637.91</h6> <span class="text-muted">ریال</span>
</div>
</div>
</li>
<li class="d-flex mb-4 pb-1">
<div class="avatar flex-shrink-0 me-3">
<img src="assets/img/icons/unicons/cc-success.png" alt="User" class="rounded">
</div>
<div class="d-flex w-100 flex-wrap align-items-center justify-content-between gap-2">
<div class="me-2">
<small class="text-muted d-block mb-1">کارت اعتباری</small>
<h6 class="mb-0">غذا سفارش داد</h6>
</div>
<div class="user-progress d-flex align-items-center gap-1">
<h6 class="mb-0">-838.71</h6> <span class="text-muted">ریال</span>
</div>
</div>
</li>
<li class="d-flex mb-4 pb-1">
<div class="avatar flex-shrink-0 me-3">
<img src="assets/img/icons/unicons/wallet.png" alt="User" class="rounded">
</div>
<div class="d-flex w-100 flex-wrap align-items-center justify-content-between gap-2">
<div class="me-2">
<small class="text-muted d-block mb-1">کیف پول</small>
<h6 class="mb-0">استارباکس</h6>
</div>
<div class="user-progress d-flex align-items-center gap-1">
<h6 class="mb-0">+203.33</h6> <span class="text-muted">ریال</span>
</div>
</div>
</li>
<li class="d-flex">
<div class="avatar flex-shrink-0 me-3">
<img src="assets/img/icons/unicons/cc-warning.png" alt="User" class="rounded">
</div>
<div class="d-flex w-100 flex-wrap align-items-center justify-content-between gap-2">
<div class="me-2">
<small class="text-muted d-block mb-1">مسترکارت</small>
<h6 class="mb-0">غذا سفارش داد</h6>
</div>
<div class="user-progress d-flex align-items-center gap-1">
<h6 class="mb-0">-92.45</h6> <span class="text-muted">ریال</span>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
<!--/ Transactions -->
<!-- MostInvoicedCustomer -->
@if (dashBoard != null)
{
<MostInvoicedCustomer model="dashBoard?.MostInvoicedCustomer" />
}
<!--/ MostInvoicedCustomer -->
<!-- MostInvoicedProduct -->
@if (dashBoard!=null)
{
<MostInvoicedProduct model="dashBoard?.MostInvoicedProduct" />
}
<!--/ MostInvoicedProduct -->
</div>
@@ -556,7 +436,7 @@
if (!await localserv.OnlineUser())
nav.NavigateTo("/");
dashBoard =await fv.GetDashBoard();
dashBoard = await fv.GetDashBoard();
//var rsp = await hc.Get("User/GetDashBoard");
// if (rsp.IsSuccessStatusCode)
// {

View File

@@ -34,9 +34,9 @@ builder.Services.AddScoped(sp => new UserAuthenticationDTO()
}) ;
//builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("https://localhost:7075/api/") });
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("https://localhost:7075/api/") });
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://localhost:5271/api/") });
//builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://localhost:5271/api/") });
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("fa-Ir");