panel
This commit is contained in:
@@ -36,7 +36,7 @@
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="Service">
|
||||
<HintPath>..\..\..\LocalGit\TaxPayerTools\Service\bin\Debug\Service.dll</HintPath>
|
||||
<HintPath>..\..\Dlls\Service.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
|
||||
|
@@ -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();
|
||||
|
@@ -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()
|
||||
{
|
||||
|
||||
|
@@ -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]);
|
||||
}
|
||||
|
||||
|
||||
|
@@ -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
|
||||
{
|
||||
|
@@ -17,6 +17,6 @@ namespace Shared.DTOs
|
||||
}
|
||||
public class IdNameByCount<T> : IdName<T>
|
||||
{
|
||||
public int count { get; set; }
|
||||
public decimal? count { get; set; }
|
||||
}
|
||||
}
|
||||
|
55
TaxPayerFull/Layout/MostInvoicedCustomer.razor
Normal file
55
TaxPayerFull/Layout/MostInvoicedCustomer.razor
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -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)
|
||||
// {
|
||||
|
@@ -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");
|
||||
|
||||
|
Reference in New Issue
Block a user