last
This commit is contained in:
@@ -33,6 +33,25 @@ namespace Back.Controllers
|
||||
// if (!await _checkPermission.AllowSYSGetCOD(Convert.ToInt32(UserID), user.RolUsers.First().CompanyID)) return Forbid("شما دسترسی به خواندن اطلاعات کالا را نداربد");
|
||||
return Ok(await _servCOD.GetCODs(user.RolUsers.First().CompanyID, itemSerch));
|
||||
}
|
||||
[HttpGet("GetCod/{ID}")]
|
||||
public async Task<ActionResult<RCOD>> GetCod(int ID)
|
||||
{
|
||||
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
|
||||
var UserID = claim.Value;
|
||||
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
|
||||
var cod = await _servCOD.GetCodByCodID(ID, user.RolUsers.First().CompanyID);
|
||||
return Ok(new RCOD
|
||||
{
|
||||
ID = cod.ID,
|
||||
TaxID = cod.ItemTaxID,
|
||||
Title = cod.Title,
|
||||
Unit = cod.CODUnit.Title,
|
||||
UnitID = cod.UnitID,
|
||||
TaxRate = cod.TaxRate
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
[HttpGet("GetAllForidName")]
|
||||
public async Task<ActionResult<List<CODIdName<int>>>> GetAllForidName()
|
||||
{
|
||||
|
@@ -78,7 +78,8 @@ namespace Back.Services
|
||||
public async Task<CODItem?> GetCodByCodID(int CodID, int CompanyID)
|
||||
{
|
||||
return await _CODRepo
|
||||
.Get(w => w.ID == CodID && w.CompanyID == CompanyID && !w.IsDeleted).FirstOrDefaultAsync();
|
||||
.Get(w => w.ID == CodID && w.CompanyID == CompanyID && !w.IsDeleted)
|
||||
.Include(inc=>inc.CODUnit).FirstOrDefaultAsync();
|
||||
}
|
||||
public async Task<bool> ExistCodByCompanyID(int CodID, int CompanyID)
|
||||
{
|
||||
|
@@ -5,6 +5,7 @@ using Back.Data.Models;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using Shared.DTOs;
|
||||
using System.Data.SqlTypes;
|
||||
using System.IdentityModel.Tokens.Jwt;
|
||||
using System.Reflection;
|
||||
using System.Security.Claims;
|
||||
@@ -20,12 +21,20 @@ namespace Back.Services
|
||||
private readonly IAsyncRepository<User> _RepoUser;
|
||||
private readonly RepositoryBase<Company> _RepoCompany;
|
||||
private readonly IAsyncRepository<PermissionPeriod> _RepoPermissionPeriod;
|
||||
|
||||
private readonly IAsyncRepository<Customer> _RepoCus;
|
||||
private readonly IAsyncRepository<Invoice> _RepoInvoice;
|
||||
private readonly IAsyncRepository<CODItem> _RepoCODItem;
|
||||
public servUser(IConfiguration configuration
|
||||
, servNotification servNotification
|
||||
, IAsyncRepository<User> RepoUser
|
||||
, IAsyncRepository<PermissionPeriod> RepoPermissionPeriod
|
||||
, RepositoryBase<Company> repoCompany)
|
||||
, RepositoryBase<Company> repoCompany, IAsyncRepository<Customer> RepoCus
|
||||
, IAsyncRepository<Invoice> RepoInvoice, IAsyncRepository<CODItem> RepoCODItem)
|
||||
{
|
||||
_RepoCus = RepoCus;
|
||||
_RepoInvoice = RepoInvoice;
|
||||
_RepoCODItem = RepoCODItem;
|
||||
_configuration = configuration;
|
||||
_servNotification = servNotification;
|
||||
_RepoUser = RepoUser;
|
||||
@@ -212,7 +221,7 @@ namespace Back.Services
|
||||
}
|
||||
request.LastLoginDate = _RepoUser.Get(w => w.ID == UserID).Select(s => s.DateLastLogin).FirstOrDefault();
|
||||
if (!string.IsNullOrEmpty(request.LastLoginDate))
|
||||
request.LastLoginDate.ShamciToFormatShamci();
|
||||
request.LastLoginDate = $"{request.LastLoginDate.Substring(8, 2)}:{request.LastLoginDate.Substring(10, 2)} {request.LastLoginDate.Substring(0, 4)}/{request.LastLoginDate.Substring(4, 2)}/{request.LastLoginDate.Substring(6, 2)}";
|
||||
|
||||
|
||||
//if (user.Mobile == user.Username)
|
||||
@@ -238,6 +247,50 @@ namespace Back.Services
|
||||
Path = s.Path,
|
||||
ViewSize = s.ViewSize
|
||||
}).ToList();
|
||||
|
||||
LastActivitySevice lastInvoice = new LastActivitySevice();
|
||||
#region LastActivitySevice
|
||||
//invoice
|
||||
var lastinv = await _RepoInvoice.Get(w => w.CompanyID == user.RolUsers.First().CompanyID && !w.IsDeleted)
|
||||
.Include(inc=>inc.Customer)
|
||||
.Select(s=>new LastActivitySevice
|
||||
{
|
||||
ID = s.ID,
|
||||
Date=s.InvoiceDate.ShamciToFormatShamci(),
|
||||
Name=s.Customer.FullName,
|
||||
PermissionID=3,
|
||||
TypeTitle=s.invoiceType.GetEnumDisplayName()
|
||||
})
|
||||
.OrderByDescending(o => o.ID).FirstOrDefaultAsync();
|
||||
if (lastinv!=null)
|
||||
request.lastActivitiesSevices.Add(lastinv);
|
||||
//cod
|
||||
var lastcod = await _RepoCODItem.Get(w => w.CompanyID == user.RolUsers.First().CompanyID && !w.IsDeleted)
|
||||
.Select(s => new LastActivitySevice
|
||||
{
|
||||
ID = s.ID,
|
||||
Date = "",
|
||||
Name = s.Title,
|
||||
PermissionID = 4,
|
||||
TypeTitle = ""
|
||||
})
|
||||
.OrderByDescending(o => o.ID).FirstOrDefaultAsync();
|
||||
if (lastcod != null)
|
||||
request.lastActivitiesSevices.Add(lastcod);
|
||||
//cus
|
||||
var lastcus = await _RepoCus.Get(w => w.CompanyID == user.RolUsers.First().CompanyID && !w.IsDeleted)
|
||||
.Select(s => new LastActivitySevice
|
||||
{
|
||||
ID = s.ID,
|
||||
Date = "",
|
||||
Name = s.FullName,
|
||||
PermissionID = 8,
|
||||
TypeTitle = ""
|
||||
})
|
||||
.OrderByDescending(o => o.ID).FirstOrDefaultAsync();
|
||||
if (lastcus != null)
|
||||
request.lastActivitiesSevices.Add(lastcus);
|
||||
#endregion
|
||||
return request;
|
||||
}
|
||||
public async Task<User> UpdateUser(User user)
|
||||
|
@@ -13,9 +13,10 @@ namespace Shared.DTOs
|
||||
{
|
||||
public string Datenow { get { return DateTime.Now.ConvertMiladiToShamsiinFront(); } }
|
||||
public string? LastLoginDate { get; set; }
|
||||
public List<ServiceInDashBoardDTO> AlistofServices { get; set; }=new List<ServiceInDashBoardDTO>();
|
||||
public List<ServiceInDashBoardDTO> AlistofServices { get; set; } = new List<ServiceInDashBoardDTO>();
|
||||
public List<AlertDTO> Warning { get; set; } = new List<AlertDTO>();
|
||||
public List<AlertDTO> Notifications { get; set; } = new List<AlertDTO>();
|
||||
public List<LastActivitySevice> lastActivitiesSevices { get; set; }=new List<LastActivitySevice>();
|
||||
}
|
||||
public class ServiceInDashBoardDTO
|
||||
{
|
||||
@@ -26,4 +27,13 @@ namespace Shared.DTOs
|
||||
public string Total { get; set; }
|
||||
public int Remaining { get; set; }
|
||||
}
|
||||
public class LastActivitySevice
|
||||
{
|
||||
public int ID { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string Date { get; set; }
|
||||
public int PermissionID { get; set; }
|
||||
public string? TypeTitle { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -1,17 +1,19 @@
|
||||
using Front.Services;
|
||||
using Shared.DTOs;
|
||||
using System.Net.Http.Json;
|
||||
using System.Security.Cryptography;
|
||||
|
||||
namespace Front
|
||||
{
|
||||
public class Fixedvalues
|
||||
{
|
||||
public readonly HttpClientController _hc;
|
||||
private List<ForCustomerSearch>? Cus=null;
|
||||
private List<ForCustomerSearch>? Cus = null;
|
||||
private List<IdName<int>>? Patterns = null;
|
||||
private List<IdName<int>>? Units = null;
|
||||
private List<CODIdName<int>>? Cods = null;
|
||||
private CompanyDTO? InfoCompany = null;
|
||||
public InvoiceDTO? invoice { get; set; }=null;
|
||||
public InvoiceDTO? invoice { get; set; } = null;
|
||||
private DashBoardDTO? dashBoard { get; set; } = null;
|
||||
public Fixedvalues(HttpClientController hc)
|
||||
{
|
||||
@@ -19,16 +21,16 @@ namespace Front
|
||||
}
|
||||
public async Task<List<ForCustomerSearch>?> GetCustomers()
|
||||
{
|
||||
if (Cus == null)
|
||||
if (Cus == null)
|
||||
{
|
||||
var request = await _hc.Get($"Customer/GetAllForidName");
|
||||
if (request.IsSuccessStatusCode)
|
||||
{
|
||||
Cus= await request.Content.ReadFromJsonAsync<List<ForCustomerSearch>>();
|
||||
Cus = await request.Content.ReadFromJsonAsync<List<ForCustomerSearch>>();
|
||||
}
|
||||
}
|
||||
|
||||
return Cus;
|
||||
return Cus;
|
||||
|
||||
|
||||
}
|
||||
@@ -49,12 +51,12 @@ namespace Front
|
||||
}
|
||||
public async Task<List<IdName<int>>?> GetPatterns()
|
||||
{
|
||||
if (Patterns==null)
|
||||
if (Patterns == null)
|
||||
{
|
||||
var request = await _hc.Get($"Invoice/GetPatterns");
|
||||
if (request.IsSuccessStatusCode)
|
||||
{
|
||||
Patterns =await request.Content.ReadFromJsonAsync<List<IdName<int>>>();
|
||||
Patterns = await request.Content.ReadFromJsonAsync<List<IdName<int>>>();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,5 +91,19 @@ namespace Front
|
||||
|
||||
return dashBoard;
|
||||
}
|
||||
public async Task<List<IdName<int>>> GetUnits()
|
||||
{
|
||||
if (Units == null)
|
||||
{
|
||||
var rsp = await _hc.Get("COD/GetUnits");
|
||||
if (rsp.IsSuccessStatusCode)
|
||||
{
|
||||
Units = await rsp.Content.ReadFromJsonAsync<List<IdName<int>>>();
|
||||
}
|
||||
}
|
||||
return Units;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
109
TaxPayerFull/Layout/LastActivityServices.razor
Normal file
109
TaxPayerFull/Layout/LastActivityServices.razor
Normal file
@@ -0,0 +1,109 @@
|
||||
@using Front.Services
|
||||
@using Shared.DTOs
|
||||
@inject HttpClientController hc;
|
||||
@inject Fixedvalues fv;
|
||||
<Modal @ref="cusmodal" />
|
||||
<Modal @ref="codmodal" />
|
||||
<div class="col-md-6 col-lg-4 col-xl-4 order-0 mb-4">
|
||||
<div class="card h-51">
|
||||
<div class="card-header d-flex align-items-center justify-content-between pb-0">
|
||||
<div class="card-title mb-0">
|
||||
<h5 class="m-0 me-2">آخرین</h5>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="d-flex justify-content-between align-items-center mb-3">
|
||||
<div class="d-flex flex-column align-items-center gap-1">
|
||||
</div>
|
||||
<div id="orderStatisticsChart"></div>
|
||||
</div>
|
||||
<ul class="p-0 m-0">
|
||||
@if (dashBoard!=null && dashBoard.lastActivitiesSevices.Any(w => w.PermissionID == 3))
|
||||
{
|
||||
<li class="d-flex mb-4 pb-1">
|
||||
<div class="avatar flex-shrink-0"><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">
|
||||
@{int invoid = Convert.ToInt32(dashBoard?.lastActivitiesSevices.Where(w => w.PermissionID == 3).Select(s => s.ID).First());}
|
||||
|
||||
<button @onclick="()=>InvoiceItem(invoid)" type="button" class="btn btn-link">صورتحساب</button>
|
||||
<small>مربوط به مشتری @dashBoard?.lastActivitiesSevices.Where(w => w.PermissionID == 3).Select(s => s.Name).First() در وضعیت @dashBoard.lastActivitiesSevices.Where(w => w.PermissionID == 3).Select(s => s.TypeTitle).First()</small>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
}
|
||||
@if (dashBoard != null && dashBoard.lastActivitiesSevices.Any(w => w.PermissionID == 4))
|
||||
{
|
||||
<li class="d-flex mb-4 pb-1">
|
||||
<div class="avatar flex-shrink-0"><img src="assets/img/icons/unicons/wallet-info.png" alt="chart success" class="rounded"></div>
|
||||
<div class="d-flex w-100 flex-wrap align-items-center justify-content-between gap-2">
|
||||
<div class="me-2">
|
||||
@{
|
||||
int codid = Convert.ToInt32(dashBoard?.lastActivitiesSevices.Where(w => w.PermissionID == 4).Select(s => s.ID).First());
|
||||
}
|
||||
<button @onclick="()=>CODItem(codid)" type="button" class="btn btn-link">کالا</button>
|
||||
|
||||
<small>با عنوان @dashBoard?.lastActivitiesSevices.Where(w => w.PermissionID == 4).Select(s => s.Name).First()</small>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
}
|
||||
@if (dashBoard != null && dashBoard.lastActivitiesSevices.Any(w => w.PermissionID == 8))
|
||||
{
|
||||
<li class="d-flex mb-4 pb-1">
|
||||
<div class="avatar flex-shrink-0"><img src="assets/img/icons/unicons/cc-primary.png" alt="chart success" class="rounded"></div>
|
||||
<div class="d-flex w-100 flex-wrap align-items-center justify-content-between gap-2">
|
||||
<div class="me-2">
|
||||
@{ int cusid = Convert.ToInt32(dashBoard?.lastActivitiesSevices.Where(w => w.PermissionID == 8).Select(s => s.ID).First());}
|
||||
<button @onclick="()=>CustomerItem(cusid)" type="button" class="btn btn-link">مشتری</button>
|
||||
<small>با نام @dashBoard?.lastActivitiesSevices.Where(w => w.PermissionID == 8).Select(s => s.Name).First()</small>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
}
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
[Parameter] public DashBoardDTO? dashBoard { get; set; }
|
||||
private Modal cusmodal = default!;
|
||||
private Modal codmodal = default!;
|
||||
}
|
||||
@functions{
|
||||
public async Task CallBackCustomerItem(ActionInResultComponent result)
|
||||
{
|
||||
|
||||
}
|
||||
public async Task InvoiceItem(int ID) => hc._nav.NavigateTo($"InvoiceDetails/{ID}");
|
||||
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);
|
||||
}
|
||||
}
|
||||
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);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@@ -72,16 +72,16 @@
|
||||
vraArray = fv.invoice.items.Select(s => s.vra?.ToString("N0")).ToArray();
|
||||
|
||||
|
||||
//How to activate
|
||||
Stimulsoft.Base.StiLicense.Key =
|
||||
"6vJhGtLLLz2GNviWmUTrhSqnOItdDwjBylQzQcAOiHn0s4gy0Fr5YoUZ9V00Y0igCSFQzwEqYBh/N77k" +
|
||||
"4f0fWXTHW5rqeBNLkaurJDenJ9o97TyqHs9HfvINK18Uwzsc/bG01Rq+x3H3Rf+g7AY92gvWmp7VA2Ux" +
|
||||
"a30Q97f61siWz2dE5kdBVcCnSFzC6awE74JzDcJMj8OuxplqB1CYcpoPcOjKy1PiATlC3UsBaLEXsok1" +
|
||||
"xxtRMQ283r282tkh8XQitsxtTczAJBxijuJNfziYhci2jResWXK51ygOOEbVAxmpflujkJ8oEVHkOA/C" +
|
||||
"jX6bGx05pNZ6oSIu9H8deF94MyqIwcdeirCe60GbIQByQtLimfxbIZnO35X3fs/94av0ODfELqrQEpLr" +
|
||||
"pU6FNeHttvlMc5UVrT4K+8lPbqR8Hq0PFWmFrbVIYSi7tAVFMMe2D1C59NWyLu3AkrD3No7YhLVh7LV0" +
|
||||
"Tttr/8FrcZ8xirBPcMZCIGrRIesrHxOsZH2V8t/t0GXCnLLAWX+TNvdNXkB8cF2y9ZXf1enI064yE5dw" +
|
||||
"Ms2fQ0yOUG/xornE";
|
||||
// //How to activate
|
||||
// Stimulsoft.Base.StiLicense.Key =
|
||||
// "6vJhGtLLLz2GNviWmUTrhSqnOItdDwjBylQzQcAOiHn0s4gy0Fr5YoUZ9V00Y0igCSFQzwEqYBh/N77k" +
|
||||
// "4f0fWXTHW5rqeBNLkaurJDenJ9o97TyqHs9HfvINK18Uwzsc/bG01Rq+x3H3Rf+g7AY92gvWmp7VA2Ux" +
|
||||
// "a30Q97f61siWz2dE5kdBVcCnSFzC6awE74JzDcJMj8OuxplqB1CYcpoPcOjKy1PiATlC3UsBaLEXsok1" +
|
||||
// "xxtRMQ283r282tkh8XQitsxtTczAJBxijuJNfziYhci2jResWXK51ygOOEbVAxmpflujkJ8oEVHkOA/C" +
|
||||
// "jX6bGx05pNZ6oSIu9H8deF94MyqIwcdeirCe60GbIQByQtLimfxbIZnO35X3fs/94av0ODfELqrQEpLr" +
|
||||
// "pU6FNeHttvlMc5UVrT4K+8lPbqR8Hq0PFWmFrbVIYSi7tAVFMMe2D1C59NWyLu3AkrD3No7YhLVh7LV0" +
|
||||
// "Tttr/8FrcZ8xirBPcMZCIGrRIesrHxOsZH2V8t/t0GXCnLLAWX+TNvdNXkB8cF2y9ZXf1enI064yE5dw" +
|
||||
// "Ms2fQ0yOUG/xornE";
|
||||
//var licenseStream = await Http.GetStreamAsync("Secret/license.key");
|
||||
//Stimulsoft.Base.StiLicense.LoadFromStream(licenseStream);
|
||||
|
||||
|
@@ -4,6 +4,7 @@
|
||||
@using Front.CUSComponent
|
||||
@using Shared.DTOs.Serch
|
||||
@inject HttpClientController hc;
|
||||
@inject Fixedvalues fv;
|
||||
<PageTitle>کالا</PageTitle>
|
||||
<Modal @ref="modal" />
|
||||
|
||||
@@ -125,11 +126,9 @@
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
var rsp = await hc.Get("COD/GetUnits");
|
||||
if (rsp.IsSuccessStatusCode)
|
||||
{
|
||||
Unitrequest = await rsp.Content.ReadFromJsonAsync<List<IdName<int>>>();
|
||||
}
|
||||
|
||||
Unitrequest =await fv.GetUnits();
|
||||
|
||||
await base.OnInitializedAsync();
|
||||
}
|
||||
protected override async Task OnParametersSetAsync()
|
||||
|
@@ -331,9 +331,9 @@
|
||||
<Button class="mt-3" Color="ButtonColor.Danger" @onclick="ShowConfirmationDeleteAsync" Type="ButtonType.Button">
|
||||
حذف
|
||||
</Button>
|
||||
<Button class="mt-3" Color="ButtonColor.Primary" @onclick="ShowReport" Type="ButtonType.Button">
|
||||
@* <Button class="mt-3" Color="ButtonColor.Primary" @onclick="ShowReport" Type="ButtonType.Button">
|
||||
چاپ
|
||||
</Button>
|
||||
</Button> *@
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -38,7 +38,7 @@
|
||||
<div class="card-body">
|
||||
<div class="card-title d-flex align-items-start justify-content-between">
|
||||
<div class="avatar flex-shrink-0">
|
||||
<img src="assets/img/icons/unicons/chart-success.png" alt="chart success" class="rounded">
|
||||
<img src="assets/img/icons/unicons/cc-success.png" alt="User" class="rounded">
|
||||
</div>
|
||||
<div class="dropdown">
|
||||
<button class="btn p-0" type="button" id="cardOpt3" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
@@ -387,93 +387,7 @@
|
||||
</div>
|
||||
<div class="row">
|
||||
<!-- Order Statistics -->
|
||||
<div class="col-md-6 col-lg-4 col-xl-4 order-0 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-header d-flex align-items-center justify-content-between pb-0">
|
||||
<div class="card-title mb-0">
|
||||
<h5 class="m-0 me-2">آمار سفارش</h5>
|
||||
<small class="text-muted">42.82هزار کل فروش</small>
|
||||
</div>
|
||||
<div class="dropdown">
|
||||
<button class="btn p-0" type="button" id="orederStatistics" 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-start new-style-17" aria-labelledby="orederStatistics">
|
||||
<a class="dropdown-item" href="javascript:void(0);">انتخاب همه</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">
|
||||
<div class="d-flex justify-content-between align-items-center mb-3">
|
||||
<div class="d-flex flex-column align-items-center gap-1">
|
||||
<h2 class="mb-2">8,258</h2>
|
||||
<span>کل سفارشات</span>
|
||||
</div>
|
||||
<div id="orderStatisticsChart"></div>
|
||||
</div>
|
||||
<ul class="p-0 m-0">
|
||||
<li class="d-flex mb-4 pb-1">
|
||||
<div class="avatar flex-shrink-0 me-3">
|
||||
<span class="avatar-initial rounded bg-label-primary"><i class='bx bx-mobile-alt'></i></span>
|
||||
</div>
|
||||
<div class="d-flex w-100 flex-wrap align-items-center justify-content-between gap-2">
|
||||
<div class="me-2">
|
||||
<h6 class="mb-0">الکترونیک</h6>
|
||||
<small class="text-muted">موبایل، هدفون، تلویزیون</small>
|
||||
</div>
|
||||
<div class="user-progress">
|
||||
<small class="fw-semibold">82.5هزار</small>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="d-flex mb-4 pb-1">
|
||||
<div class="avatar flex-shrink-0 me-3">
|
||||
<span class="avatar-initial rounded bg-label-success"><i class='bx bx-closet'></i></span>
|
||||
</div>
|
||||
<div class="d-flex w-100 flex-wrap align-items-center justify-content-between gap-2">
|
||||
<div class="me-2">
|
||||
<h6 class="mb-0">فشن</h6>
|
||||
<small class="text-muted">تی شرت، شلوار جین، کفش</small>
|
||||
</div>
|
||||
<div class="user-progress">
|
||||
<small class="fw-semibold">23.8هزار</small>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="d-flex mb-4 pb-1">
|
||||
<div class="avatar flex-shrink-0 me-3">
|
||||
<span class="avatar-initial rounded bg-label-info"><i class='bx bx-home-alt'></i></span>
|
||||
</div>
|
||||
<div class="d-flex w-100 flex-wrap align-items-center justify-content-between gap-2">
|
||||
<div class="me-2">
|
||||
<h6 class="mb-0">دکور</h6>
|
||||
<small class="text-muted">هنرهای زیبا، غذاخوری</small>
|
||||
</div>
|
||||
<div class="user-progress">
|
||||
<small class="fw-semibold">849هزار</small>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="d-flex">
|
||||
<div class="avatar flex-shrink-0 me-3">
|
||||
<span class="avatar-initial rounded bg-label-secondary"><i class='bx bx-football'></i></span>
|
||||
</div>
|
||||
<div class="d-flex w-100 flex-wrap align-items-center justify-content-between gap-2">
|
||||
<div class="me-2">
|
||||
<h6 class="mb-0">ورزشی</h6>
|
||||
<small class="text-muted">فوتبال، کیت کریکت</small>
|
||||
</div>
|
||||
<div class="user-progress">
|
||||
<small class="fw-semibold">99</small>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<LastActivityServices dashBoard="dashBoard" />
|
||||
<!--/ Order Statistics -->
|
||||
<!-- Expense Overview -->
|
||||
<div class="col-md-6 col-lg-4 order-1 mb-4">
|
||||
|
Reference in New Issue
Block a user