panel
This commit is contained in:
@@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Service">
|
<Reference Include="Service">
|
||||||
<HintPath>..\..\..\LocalGit\TaxPayerTools\Service\bin\Debug\Service.dll</HintPath>
|
<HintPath>..\..\Dlls\Service.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
@@ -43,6 +43,14 @@ namespace Back.Common
|
|||||||
PersianCal.GetDayOfMonth(date).ToString("00")
|
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)
|
public static string ConvertMiladiToShamsiByTime(this DateTime date)
|
||||||
{
|
{
|
||||||
PersianCalendar PersianCal = new PersianCalendar();
|
PersianCalendar PersianCal = new PersianCalendar();
|
||||||
|
@@ -40,7 +40,7 @@ namespace Back.Services
|
|||||||
.ThenInclude(inc => inc.CODUnit)
|
.ThenInclude(inc => inc.CODUnit)
|
||||||
.Include(inc=>inc.sentTax)
|
.Include(inc=>inc.sentTax)
|
||||||
//.Include(inc => inc.payments)
|
//.Include(inc => inc.payments)
|
||||||
//.Include(inc => inc.pattern)
|
.Include(inc => inc.pattern)
|
||||||
.Select(s => new InvoiceDTO()
|
.Select(s => new InvoiceDTO()
|
||||||
{
|
{
|
||||||
IsDeleted=s.IsDeleted,
|
IsDeleted=s.IsDeleted,
|
||||||
@@ -135,7 +135,7 @@ namespace Back.Services
|
|||||||
.ThenInclude(inc => inc.cODItem)
|
.ThenInclude(inc => inc.cODItem)
|
||||||
.ThenInclude(inc => inc.CODUnit)
|
.ThenInclude(inc => inc.CODUnit)
|
||||||
//.Include(inc => inc.payments)
|
//.Include(inc => inc.payments)
|
||||||
//.Include(inc => inc.pattern)
|
.Include(inc => inc.pattern)
|
||||||
.Select(s => new InvoiceGridDTO()
|
.Select(s => new InvoiceGridDTO()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@@ -295,27 +295,73 @@ namespace Back.Services
|
|||||||
request.lastActivitiesSevices.Add(lastcus);
|
request.lastActivitiesSevices.Add(lastcus);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
List<string> dt = new List<string>();
|
||||||
|
for (int i = -7; i < 1; i++)
|
||||||
|
dt.Add(DateTime.Now.AddDays(i).ConvertMiladiToShamsi());
|
||||||
|
|
||||||
try
|
request.MostInvoicedProduct = await _invoiceitemRepo.Get(w => w.invoice.CompanyID == user.RolUsers.First().CompanyID
|
||||||
{
|
|
||||||
var 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.Sale || w.invoice.invoiceType == InvoiceType.BackFrmSale
|
||||||
|| w.invoice.invoiceType == InvoiceType.Repair) && !w.invoice.BillReference.HasValue
|
|| w.invoice.invoiceType == InvoiceType.Repair) && !w.invoice.BillReference.HasValue
|
||||||
)
|
&& (dt.Contains(w.invoice.Cdate)))
|
||||||
//.Include(inc => inc.cODItem)
|
.Include(inc => inc.cODItem)
|
||||||
// .GroupBy(g => g.CODID)
|
.GroupBy(g => g.CODID)
|
||||||
// .Select(s => new IdNameByCount<int>
|
.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)
|
|
||||||
.ToListAsync();
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
{
|
||||||
|
ID = s.Key,
|
||||||
|
Title = s.Select(s => s.sstt).First(),
|
||||||
|
count = s.Sum(s => s.am)
|
||||||
|
}).OrderByDescending(o => o.count)
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
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<AlertDTO> Notifications { get; set; } = new List<AlertDTO>();
|
||||||
public List<LastActivitySevice> lastActivitiesSevices { get; set; }=new List<LastActivitySevice>();
|
public List<LastActivitySevice> lastActivitiesSevices { get; set; }=new List<LastActivitySevice>();
|
||||||
public List<IdNameByCount<int>>? MostInvoicedProduct { get; set; }=new List<IdNameByCount<int>>();
|
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
|
public class ServiceInDashBoardDTO
|
||||||
{
|
{
|
||||||
|
@@ -17,6 +17,6 @@ namespace Shared.DTOs
|
|||||||
}
|
}
|
||||||
public class IdNameByCount<T> : IdName<T>
|
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
|
@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 {
|
@code {
|
||||||
|
int indexer = 1;
|
||||||
[Parameter] public List<IdNameByCount<int>>? model { get; set; }
|
[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>
|
<PageTitle>کاربری</PageTitle>
|
||||||
|
|
||||||
<div class="row">
|
<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="card">
|
||||||
<div class="d-flex align-items-end row">
|
<div class="d-flex align-items-end row">
|
||||||
<div class="col-sm-7">
|
<div class="col-sm-7">
|
||||||
@@ -22,7 +22,48 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-sm-5 text-center text-sm-left">
|
<div class="col-sm-5 text-center text-sm-left">
|
||||||
<div class="card-body pb-0 px-0 px-md-4">
|
<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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -45,7 +86,7 @@
|
|||||||
<i class="bx bx-dots-vertical-rounded"></i>
|
<i class="bx bx-dots-vertical-rounded"></i>
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu dropdown-menu-end customStyle new-style-15" aria-labelledby="cardOpt3">
|
<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>
|
<NavLink class="dropdown-item" href="Invoice">صورتحساب ها</NavLink>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -54,7 +95,7 @@
|
|||||||
<h3 class="card-title mb-1"><span style="font-size: 14px">مانده</span></h3>
|
<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.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">
|
<small class="text-success fw-semibold">
|
||||||
@@ -114,7 +155,7 @@
|
|||||||
<i class="bx bx-dots-vertical-rounded"></i>
|
<i class="bx bx-dots-vertical-rounded"></i>
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu dropdown-menu-end customStyle new-style-15" aria-labelledby="cardOpt3">
|
<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>
|
<NavLink class="dropdown-item" href="Cod">کالا ها</NavLink>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -123,7 +164,7 @@
|
|||||||
<h3 class="card-title mb-1"><span style="font-size: 14px">مانده</span></h3>
|
<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.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">
|
<small class="text-success fw-semibold">
|
||||||
<i class='bx'></i>
|
<i class='bx'></i>
|
||||||
@@ -246,7 +287,7 @@
|
|||||||
<h3 class="card-title mb-1"><span style="font-size: 14px">مانده</span></h3>
|
<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.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">
|
<small class="text-success fw-semibold">
|
||||||
@@ -315,7 +356,7 @@
|
|||||||
<h3 class="card-title mb-1"><span style="font-size: 14px">مانده</span></h3>
|
<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.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">
|
<small class="text-success fw-semibold">
|
||||||
<i class='bx'></i>
|
<i class='bx'></i>
|
||||||
@@ -363,25 +404,7 @@
|
|||||||
|
|
||||||
<!-- </div>
|
<!-- </div>
|
||||||
<div class="row"> -->
|
<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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -389,163 +412,20 @@
|
|||||||
<!-- Order Statistics -->
|
<!-- Order Statistics -->
|
||||||
<LastActivityServices dashBoard="dashBoard" />
|
<LastActivityServices dashBoard="dashBoard" />
|
||||||
<!--/ Order Statistics -->
|
<!--/ Order Statistics -->
|
||||||
<!-- Expense Overview -->
|
<!-- MostInvoicedCustomer -->
|
||||||
<div class="col-md-6 col-lg-4 order-1 mb-4">
|
@if (dashBoard != null)
|
||||||
<div class="card h-100">
|
{
|
||||||
<div class="card-header">
|
<MostInvoicedCustomer model="dashBoard?.MostInvoicedCustomer" />
|
||||||
<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>
|
<!--/ MostInvoicedCustomer -->
|
||||||
</li>
|
<!-- MostInvoicedProduct -->
|
||||||
<li class="nav-item">
|
@if (dashBoard!=null)
|
||||||
<button type="button" class="nav-link" role="tab">هزینه ها</button>
|
{
|
||||||
</li>
|
<MostInvoicedProduct model="dashBoard?.MostInvoicedProduct" />
|
||||||
<li class="nav-item">
|
|
||||||
<button type="button" class="nav-link" role="tab">سود</button>
|
}
|
||||||
</li>
|
<!--/ MostInvoicedProduct -->
|
||||||
</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 -->
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
@@ -556,7 +436,7 @@
|
|||||||
if (!await localserv.OnlineUser())
|
if (!await localserv.OnlineUser())
|
||||||
nav.NavigateTo("/");
|
nav.NavigateTo("/");
|
||||||
|
|
||||||
dashBoard =await fv.GetDashBoard();
|
dashBoard = await fv.GetDashBoard();
|
||||||
//var rsp = await hc.Get("User/GetDashBoard");
|
//var rsp = await hc.Get("User/GetDashBoard");
|
||||||
// if (rsp.IsSuccessStatusCode)
|
// 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");
|
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("fa-Ir");
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user