Files
moadiran/TaxPayerFull/Pages/UserPanel/Panel.razor

439 lines
24 KiB
Plaintext
Raw Normal View History

2024-04-19 03:23:30 +03:30
@page "/Panel"
@using Front.Services
2024-06-10 20:49:31 +03:30
@using Shared
2024-06-10 17:26:31 +03:30
@using Shared.DTOs
2024-04-19 03:23:30 +03:30
@inject localService localserv;
@inject NavigationManager nav
2024-04-22 23:32:39 +03:30
@layout PanelLayout
2024-06-10 17:26:31 +03:30
@inject HttpClientController hc;
2024-06-16 16:15:56 +03:30
@inject Fixedvalues fv;
2024-06-24 17:33:26 +03:30
2024-05-04 23:13:26 +03:30
<PageTitle>کاربری</PageTitle>
2024-06-24 17:33:26 +03:30
<Toasts class="p-3" Messages="messages" AutoHide="true" Delay="4000" Placement="ToastsPlacement.TopRight" />
2024-04-22 23:32:39 +03:30
2024-06-10 17:26:31 +03:30
<div class="row">
2024-06-24 17:33:26 +03:30
2024-06-20 18:22:34 +03:30
<div class="col-lg-6 mb-3 order-0">
2024-06-10 17:26:31 +03:30
<div class="card">
<div class="d-flex align-items-end row">
<div class="col-sm-7">
<div class="card-body">
<h5 class="card-title text-primary">خوش آمدید! 🎉</h5>
<p class="mb-4">یک دید کلی از سیستم برای شما تهیه شده<br /> بهتر است روزانه نگاهی به آن داشته باشید</p>
</div>
</div>
<div class="col-sm-5 text-center text-sm-left">
<div class="card-body pb-0 px-0 px-md-4">
2024-06-20 18:22:34 +03:30
<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">
2024-06-23 20:40:50 +03:30
@if (dashBoard != null)
{
2024-06-20 18:22:34 +03:30
<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>
2024-06-10 17:26:31 +03:30
</div>
</div>
</div>
</div>
2024-06-23 20:40:50 +03:30
}
2024-06-10 17:26:31 +03:30
</div>
<div class="col-lg-4 col-md-4 order-1">
<div class="row">
@if (dashBoard != null && dashBoard.AlistofServices.Any(w => w.PermissionID == 3))
{
2024-06-20 18:22:34 +03:30
2024-06-10 17:26:31 +03:30
<div class="col-lg-6 col-md-12 col-6 mb-4">
<div class="card">
<div class="card-body">
<div class="card-title d-flex align-items-start justify-content-between">
<div class="avatar flex-shrink-0">
2024-06-18 13:59:32 +03:30
<img src="assets/img/icons/unicons/cc-success.png" alt="User" class="rounded">
2024-06-10 17:26:31 +03:30
</div>
<div class="dropdown">
<button class="btn p-0" type="button" id="cardOpt3" 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 customStyle new-style-15" aria-labelledby="cardOpt3">
2024-06-20 18:22:34 +03:30
<a class="dropdown-item">تمدید</a>
2024-06-10 17:26:31 +03:30
<NavLink class="dropdown-item" href="Invoice">صورتحساب ها</NavLink>
2024-04-22 23:32:39 +03:30
</div>
</div>
</div>
2024-06-10 17:26:31 +03:30
<span class="fw-semibold d-block">صورتحساب <br /> (کل @dashBoard.AlistofServices.Where(w => w.PermissionID == 3 && w.CalTypeID == 1).Select(s => s.Total).First())</span>
<h3 class="card-title mb-1"><span style="font-size: 14px">مانده</span></h3>
@if (dashBoard.AlistofServices.Any(w => w.PermissionID == 3 && w.CalTypeID == 1))
{
2024-06-20 18:22:34 +03:30
@if (dashBoard.AlistofServices.Where(w => w.PermissionID == 3 && w.CalTypeID == 1).Select(s => s.Remaining).First() > 0)
2024-06-10 17:26:31 +03:30
{
<small class="text-success fw-semibold">
<i class='bx'></i>
@dashBoard.AlistofServices.Where(w => w.PermissionID == 3 && w.CalTypeID == 1).Select(s => s.Remaining).First() آیتم
</small>
}
else
{
<small class="text-danger fw-semibold">
<i class='bx'></i>
@dashBoard.AlistofServices.Where(w => w.PermissionID == 3 && w.CalTypeID == 1).Select(s => s.Remaining).First() آیتم
</small>
}
}
else if (dashBoard.AlistofServices.Any(w => w.PermissionID == 3 && w.CalTypeID == 2))
{
<small class="text-success fw-semibold">
<i class='bx'></i>
نامحدود
</small>
}
else
{
2024-06-10 20:49:31 +03:30
@if (Convert.ToInt32(dashBoard.Datenow) <= dashBoard.AlistofServices.Where(w => w.PermissionID == 3 && w.CalTypeID == 1).Select(s => s.Remaining).First())
2024-06-10 17:26:31 +03:30
{
<small class="text-success fw-semibold">
<i class='bx'></i>
2024-06-10 20:49:31 +03:30
تا تاریخ @dashBoard.AlistofServices.Where(w => w.PermissionID == 3 && w.CalTypeID == 1).Select(s => s.Remaining).First().ToString().ShamciToFormatShamciinFront()
2024-06-10 17:26:31 +03:30
</small>
}
2024-06-20 18:22:34 +03:30
else
2024-06-10 17:26:31 +03:30
{
<small class="text-danger fw-semibold">
<i class='bx'></i>
2024-06-10 20:49:31 +03:30
تا تاریخ @dashBoard.AlistofServices.Where(w => w.PermissionID == 3 && w.CalTypeID == 1).Select(s => s.Remaining).First().ToString().ShamciToFormatShamciinFront()
2024-06-10 17:26:31 +03:30
</small>
}
}
2024-04-22 23:32:39 +03:30
</div>
2024-06-10 17:26:31 +03:30
</div>
</div>
}
@if (dashBoard != null && dashBoard.AlistofServices.Any(w => w.PermissionID == 4))
{
<div class="col-lg-6 col-md-12 col-6 mb-4">
<div class="card">
<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/wallet-info.png" alt="chart success" class="rounded">
2024-04-22 23:32:39 +03:30
</div>
2024-06-10 17:26:31 +03:30
<div class="dropdown">
<button class="btn p-0" type="button" id="cardOpt3" 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 customStyle new-style-15" aria-labelledby="cardOpt3">
2024-06-20 18:22:34 +03:30
<a class="dropdown-item">تمدید</a>
2024-06-10 17:26:31 +03:30
<NavLink class="dropdown-item" href="Cod">کالا ها</NavLink>
2024-04-22 23:32:39 +03:30
</div>
</div>
</div>
2024-06-10 17:26:31 +03:30
<span class="fw-semibold d-block">کالا <br /> (کل @dashBoard.AlistofServices.Where(w => w.PermissionID == 4 && w.CalTypeID == 1).Select(s => s.Total).First())</span>
<h3 class="card-title mb-1"><span style="font-size: 14px">مانده</span></h3>
@if (dashBoard.AlistofServices.Any(w => w.PermissionID == 4 && w.CalTypeID == 1))
{
2024-06-20 18:22:34 +03:30
@if (dashBoard.AlistofServices.Where(w => w.PermissionID == 4 && w.CalTypeID == 1).Select(s => s.Remaining).First() > 0)
2024-06-10 17:26:31 +03:30
{
<small class="text-success fw-semibold">
<i class='bx'></i>
@dashBoard.AlistofServices.Where(w => w.PermissionID == 4 && w.CalTypeID == 1).Select(s => s.Remaining).First() آیتم
</small>
}
else
{
<small class="text-danger fw-semibold">
<i class='bx'></i>
@dashBoard.AlistofServices.Where(w => w.PermissionID == 4 && w.CalTypeID == 1).Select(s => s.Remaining).First() آیتم
</small>
}
2024-04-22 23:32:39 +03:30
2024-06-10 17:26:31 +03:30
}
else if (dashBoard.AlistofServices.Any(w => w.PermissionID == 4 && w.CalTypeID == 2))
{
<small class="text-success fw-semibold">
<i class='bx'></i>
نامحدود
</small>
}
else
{
2024-06-10 20:49:31 +03:30
@if (Convert.ToInt32(dashBoard.Datenow) <= dashBoard.AlistofServices.Where(w => w.PermissionID == 4 && w.CalTypeID == 1).Select(s => s.Remaining).First())
2024-06-10 17:26:31 +03:30
{
<small class="text-success fw-semibold">
<i class='bx'></i>
2024-06-10 20:49:31 +03:30
تا تاریخ @dashBoard.AlistofServices.Where(w => w.PermissionID == 4 && w.CalTypeID == 1).Select(s => s.Remaining).First().ToString().ShamciToFormatShamciinFront()
2024-06-10 17:26:31 +03:30
</small>
}
else
{
<small class="text-danger fw-semibold">
<i class='bx'></i>
2024-06-10 20:49:31 +03:30
تا تاریخ @dashBoard.AlistofServices.Where(w => w.PermissionID == 4 && w.CalTypeID == 1).Select(s => s.Remaining).First().ToString().ShamciToFormatShamciinFront()
2024-06-10 17:26:31 +03:30
</small>
}
}
</div>
</div>
</div>
}
</div>
</div>
<!-- Total Revenue -->
<div class="col-12 col-lg-8 order-2 order-md-3 order-lg-2 mb-4">
2024-06-22 22:31:04 +03:30
<div class="card col-12">
2024-06-10 17:26:31 +03:30
<div class="row row-bordered g-0">
2024-06-23 19:56:05 +03:30
@if (dashBoard != null)
{
<div class="col-md-12">
<SaleChart items="dashBoard?.ForSaleChart" />
</div>}
2024-06-10 17:26:31 +03:30
</div>
</div>
</div>
<!--/ Total Revenue -->
<div class="col-12 col-md-8 col-lg-4 order-3 order-md-2">
<div class="row">
@if (dashBoard != null && dashBoard.AlistofServices.Any(w => w.PermissionID == 5))
{
<div class="col-6 mb-4">
<div class="card">
<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/cc-primary.png" alt="chart success" class="rounded">
2024-04-22 23:32:39 +03:30
</div>
2024-06-10 17:26:31 +03:30
<div class="dropdown">
<button class="btn p-0" type="button" id="cardOpt3" 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 customStyle new-style-15" aria-labelledby="cardOpt3">
<a class="dropdown-item">تمدید</a>
<NavLink class="dropdown-item" href="Customer">مشتری ها</NavLink>
2024-04-22 23:32:39 +03:30
</div>
</div>
</div>
2024-06-10 17:26:31 +03:30
<span class="fw-semibold d-block">مشتری <br /> (کل @dashBoard.AlistofServices.Where(w => w.PermissionID == 5 && w.CalTypeID == 1).Select(s => s.Total).First())</span>
<h3 class="card-title mb-1"><span style="font-size: 14px">مانده</span></h3>
@if (dashBoard.AlistofServices.Any(w => w.PermissionID == 5 && w.CalTypeID == 1))
{
2024-06-20 18:22:34 +03:30
@if (dashBoard.AlistofServices.Where(w => w.PermissionID == 5 && w.CalTypeID == 1).Select(s => s.Remaining).First() > 0)
2024-06-10 17:26:31 +03:30
{
<small class="text-success fw-semibold">
<i class='bx'></i>
@dashBoard.AlistofServices.Where(w => w.PermissionID == 5 && w.CalTypeID == 1).Select(s => s.Remaining).First() آیتم
</small>
}
else
{
<small class="text-danger fw-semibold">
<i class='bx'></i>
@dashBoard.AlistofServices.Where(w => w.PermissionID == 5 && w.CalTypeID == 1).Select(s => s.Remaining).First() آیتم
</small>
}
}
else if (dashBoard.AlistofServices.Any(w => w.PermissionID == 5 && w.CalTypeID == 2))
{
<small class="text-success fw-semibold">
<i class='bx'></i>
نامحدود
</small>
}
else
{
2024-06-10 20:49:31 +03:30
@if (Convert.ToInt32(dashBoard.Datenow) <= dashBoard.AlistofServices.Where(w => w.PermissionID == 5 && w.CalTypeID == 1).Select(s => s.Remaining).First())
2024-06-10 17:26:31 +03:30
{
<small class="text-success fw-semibold">
<i class='bx'></i>
2024-06-10 20:49:31 +03:30
تا تاریخ @dashBoard.AlistofServices.Where(w => w.PermissionID == 5 && w.CalTypeID == 1).Select(s => s.Remaining).First().ToString().ShamciToFormatShamciinFront()
2024-06-10 17:26:31 +03:30
</small>
}
else
{
<small class="text-danger fw-semibold">
<i class='bx'></i>
2024-06-10 20:49:31 +03:30
تا تاریخ @dashBoard.AlistofServices.Where(w => w.PermissionID == 5 && w.CalTypeID == 1).Select(s => s.Remaining).First().ToString().ShamciToFormatShamciinFront()
2024-06-10 17:26:31 +03:30
</small>
}
}
2024-04-22 23:32:39 +03:30
</div>
</div>
2024-06-10 17:26:31 +03:30
</div>
}
@if (dashBoard != null && dashBoard.AlistofServices.Any(w => w.PermissionID == 16))
{
<div class="col-6 mb-4">
<div class="card">
<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/paypal.png" alt="chart success" class="rounded">
2024-04-22 23:32:39 +03:30
</div>
2024-06-10 17:26:31 +03:30
<div class="dropdown">
<button class="btn p-0" type="button" id="cardOpt3" 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 customStyle new-style-15" aria-labelledby="cardOpt3">
<a class="dropdown-item">تمدید</a>
<NavLink class="dropdown-item" href="TaxPayer">سامانه مودیان</NavLink>
2024-04-22 23:32:39 +03:30
</div>
</div>
</div>
2024-06-10 17:26:31 +03:30
<span class="fw-semibold d-block">سامانه مودیان <br /> (کل @dashBoard.AlistofServices.Where(w => w.PermissionID == 16 && w.CalTypeID == 1).Select(s => s.Total).First())</span>
<h3 class="card-title mb-1"><span style="font-size: 14px">مانده</span></h3>
@if (dashBoard.AlistofServices.Any(w => w.PermissionID == 16 && w.CalTypeID == 1))
{
2024-06-20 18:22:34 +03:30
@if (dashBoard.AlistofServices.Where(w => w.PermissionID == 16 && w.CalTypeID == 1).Select(s => s.Remaining).First() > 0)
2024-06-10 17:26:31 +03:30
{
<small class="text-success fw-semibold">
<i class='bx'></i>
@dashBoard.AlistofServices.Where(w => w.PermissionID == 16 && w.CalTypeID == 1).Select(s => s.Remaining).First() آیتم
</small>
}
else
{
<small class="text-danger fw-semibold">
<i class='bx'></i>
@dashBoard.AlistofServices.Where(w => w.PermissionID == 16 && w.CalTypeID == 1).Select(s => s.Remaining).First() آیتم
</small>
}
}
else if (dashBoard.AlistofServices.Any(w => w.PermissionID == 16 && w.CalTypeID == 2))
{
<small class="text-success fw-semibold">
<i class='bx'></i>
نامحدود
</small>
}
else
{
2024-06-10 20:49:31 +03:30
@if (Convert.ToInt32(dashBoard.Datenow) <= dashBoard.AlistofServices.Where(w => w.PermissionID == 16 && w.CalTypeID == 1).Select(s => s.Remaining).First())
2024-06-10 17:26:31 +03:30
{
<small class="text-success fw-semibold">
<i class='bx'></i>
2024-06-10 20:49:31 +03:30
تا تاریخ @dashBoard.AlistofServices.Where(w => w.PermissionID == 16 && w.CalTypeID == 1).Select(s => s.Remaining).First().ToString().ShamciToFormatShamciinFront()
2024-06-10 17:26:31 +03:30
</small>
}
else
{
<small class="text-danger fw-semibold">
<i class='bx'></i>
2024-06-10 20:49:31 +03:30
تا تاریخ @dashBoard.AlistofServices.Where(w => w.PermissionID == 16 && w.CalTypeID == 1).Select(s => s.Remaining).First().ToString().ShamciToFormatShamciinFront()
2024-06-10 17:26:31 +03:30
</small>
}
}
2024-04-22 23:32:39 +03:30
</div>
2024-06-10 17:26:31 +03:30
</div>
</div>
}
2024-06-20 18:22:34 +03:30
2024-06-10 17:26:31 +03:30
<!-- </div>
<div class="row"> -->
2024-06-20 18:22:34 +03:30
2024-06-10 17:26:31 +03:30
</div>
</div>
</div>
<div class="row">
2024-06-23 20:40:50 +03:30
@if (dashBoard == null)
{
<p>در حال بارگذاری...</p>
}
@if (dashBoard != null)
{
<!-- Order Statistics -->
<LastActivityServices dashBoard="dashBoard" />
<!--/ Order Statistics -->
}
2024-06-20 18:22:34 +03:30
<!-- MostInvoicedCustomer -->
@if (dashBoard != null)
{
<MostInvoicedCustomer model="dashBoard?.MostInvoicedCustomer" />
}
<!--/ MostInvoicedCustomer -->
<!-- MostInvoicedProduct -->
@if (dashBoard!=null)
{
<MostInvoicedProduct model="dashBoard?.MostInvoicedProduct" />
}
<!--/ MostInvoicedProduct -->
2024-06-10 17:26:31 +03:30
</div>
2024-04-22 23:32:39 +03:30
2024-04-19 03:23:30 +03:30
@code {
2024-06-24 17:33:26 +03:30
List<ToastMessage> messages = new List<ToastMessage>();
private Modal modal = default!;
private void ShowMessage(ToastType toastType, string Message) => messages.Add(CreateToastMessage(toastType, Message));
2024-06-10 17:26:31 +03:30
public DashBoardDTO? dashBoard { get; set; }
2024-04-19 03:23:30 +03:30
protected override async Task OnInitializedAsync()
{
2024-06-24 17:33:26 +03:30
2024-04-19 03:23:30 +03:30
if (!await localserv.OnlineUser())
2024-06-10 17:26:31 +03:30
nav.NavigateTo("/");
2024-06-20 18:22:34 +03:30
dashBoard = await fv.GetDashBoard();
2024-06-24 17:33:26 +03:30
if (dashBoard != null)
foreach (var war in dashBoard.Warning)
ShowMessage((ToastType)Enum.Parse(typeof(ToastType), war.Status.ToString()), war.Message);
2024-06-16 16:15:56 +03:30
//var rsp = await hc.Get("User/GetDashBoard");
// if (rsp.IsSuccessStatusCode)
// {
// dashBoard = await rsp.Content.ReadFromJsonAsync<DashBoardDTO>();
// }
2024-04-19 03:23:30 +03:30
await base.OnInitializedAsync();
}
}
2024-06-24 17:33:26 +03:30
@functions {
private ToastMessage CreateToastMessage(ToastType toastType, string Message)
=> new ToastMessage
{
Type = toastType,
Message = Message,
};
}