camera js change - camera coockie change - som chang of teamwork update
This commit is contained in:
@@ -181,7 +181,9 @@ public class AuthHelper : IAuthHelper
|
||||
|
||||
var authProperties = new AuthenticationProperties
|
||||
{
|
||||
ExpiresUtc = DateTimeOffset.UtcNow.AddDays(1)
|
||||
|
||||
//ExpiresUtc = DateTimeOffset.UtcNow.AddDays(30)
|
||||
ExpiresUtc = new DateTimeOffset(year: 2100, month: 1, day: 1, hour: 0, minute: 0, second: 0, offset: TimeSpan.Zero)
|
||||
};
|
||||
|
||||
_contextAccessor.HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,
|
||||
|
||||
@@ -10,9 +10,9 @@ public static class Version
|
||||
{
|
||||
static Version()
|
||||
{
|
||||
StyleVersion = "2.12.17";
|
||||
AdminVersion = "2.5.37";
|
||||
CameraVersion = "1.0.7";
|
||||
StyleVersion = "2.12.19";
|
||||
AdminVersion = "2.5.39";
|
||||
CameraVersion = "1.0.9";
|
||||
}
|
||||
|
||||
public static string StyleVersion { get; set; }
|
||||
|
||||
@@ -29,5 +29,7 @@ public interface ITicketApplication
|
||||
OperationResult CloseTicket(long ticketId);
|
||||
TypesCountOfTicketViewModel GetTypesCountOfTicketForAdmin();
|
||||
TypesCountOfTicketViewModel GetTypesCountOfTicketForClient(long workshopId);
|
||||
|
||||
#region Vafa
|
||||
int GetAdminTicketsCount();
|
||||
#endregion
|
||||
}
|
||||
@@ -616,4 +616,12 @@ public class TicketApplication : ITicketApplication
|
||||
{
|
||||
return _ticketRepository.GetTypesCountOfTicketForClient(workshopId);
|
||||
}
|
||||
#region Vafa
|
||||
|
||||
public int GetAdminTicketsCount()
|
||||
{
|
||||
return _ticketRepository.GetAdminTicketsCount();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
@@ -22,6 +22,7 @@ public interface ITicketRepository:IRepository<long,Ticket>
|
||||
TypesCountOfTicketViewModel GetTypesCountOfTicketForAdmin();
|
||||
TypesCountOfTicketViewModel GetTypesCountOfTicketForClient(long workshopId);
|
||||
|
||||
|
||||
|
||||
#region Vafa
|
||||
int GetAdminTicketsCount();
|
||||
#endregion
|
||||
}
|
||||
@@ -394,8 +394,15 @@ public class TicketRepository : RepositoryBase<long, Ticket>, ITicketRepository
|
||||
};
|
||||
}
|
||||
|
||||
#region Vafa
|
||||
public int GetAdminTicketsCount()
|
||||
{
|
||||
return _accountContext.Tickets.Count(x => x.Status == "باز");
|
||||
}
|
||||
#endregion
|
||||
|
||||
public List<Response> MergeResponses(List<ClientResponseViewModel> clientResponseList, List<AdminResponseViewModel> adminResponseList)
|
||||
|
||||
public List<Response> MergeResponses(List<ClientResponseViewModel> clientResponseList, List<AdminResponseViewModel> adminResponseList)
|
||||
{
|
||||
var list = new List<Response>();
|
||||
var adminList = adminResponseList.Select(x => new Response()
|
||||
|
||||
@@ -966,7 +966,6 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
||||
foreach (var day in groupedRollCall)
|
||||
{
|
||||
|
||||
|
||||
foreach (var shift in shiftSettings)
|
||||
{
|
||||
DateTime start = DateTime.Parse(shift.StartTime);
|
||||
@@ -1017,14 +1016,74 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
||||
TypeOfSapn = "EarlyExist"
|
||||
});
|
||||
}
|
||||
else if (singleHasRollCall != null && singleHasRollCall.Start > startShift &&
|
||||
singleHasRollCall.End < endShift)
|
||||
{
|
||||
lateToWorkEarlyExistSpannig.Add(new LateToWorkEarlyExistSpannig()
|
||||
{
|
||||
StartSpan = startShift,
|
||||
EndSpan = singleHasRollCall.Start,
|
||||
Spanning = (singleHasRollCall.Start - startShift),
|
||||
TypeOfSapn = "LateToWork"
|
||||
});
|
||||
|
||||
lateToWorkEarlyExistSpannig.Add(new LateToWorkEarlyExistSpannig()
|
||||
{
|
||||
StartSpan = singleHasRollCall.End,
|
||||
EndSpan = endShift,
|
||||
Spanning = (endShift - singleHasRollCall.End),
|
||||
TypeOfSapn = "EarlyExist"
|
||||
});
|
||||
}
|
||||
}
|
||||
else if (hasRollCall.Count() > 1)
|
||||
{
|
||||
|
||||
var multiHasRollCall = hasRollCall.OrderBy(x => x.Start);
|
||||
var firstRollcall = multiHasRollCall.First();
|
||||
var lastRollCall = multiHasRollCall.Last();
|
||||
|
||||
if (firstRollcall.Start > startShift &&
|
||||
firstRollcall.End >= endShift)
|
||||
{
|
||||
lateToWorkEarlyExistSpannig.Add(new LateToWorkEarlyExistSpannig()
|
||||
{
|
||||
StartSpan = startShift,
|
||||
EndSpan = firstRollcall.Start,
|
||||
Spanning = (firstRollcall.Start - startShift),
|
||||
TypeOfSapn = "LateToWork"
|
||||
});
|
||||
}
|
||||
|
||||
if (lastRollCall.Start <= startShift &&
|
||||
lastRollCall.End < endShift)
|
||||
{
|
||||
lateToWorkEarlyExistSpannig.Add(new LateToWorkEarlyExistSpannig()
|
||||
{
|
||||
StartSpan = lastRollCall.End,
|
||||
EndSpan = endShift,
|
||||
Spanning = (endShift - lastRollCall.End),
|
||||
TypeOfSapn = "EarlyExist"
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// اگر تاخیر یا تعجیل به دلیل مرخصی ساعتی بود حساب نشود
|
||||
if (leavList.Count > 0 && lateToWorkEarlyExistSpannig.Count > 0)
|
||||
{
|
||||
foreach (var el in lateToWorkEarlyExistSpannig.ToList())
|
||||
{
|
||||
var hasLeve = leavList.Any(x =>
|
||||
(x.StartLeaveGr <= el.StartSpan && x.EndLeaveGr > el.StartSpan) ||
|
||||
(x.StartLeaveGr >= el.StartSpan && x.EndLeaveGr <= el.EndSpan) ||
|
||||
(x.StartLeaveGr > el.StartSpan && x.EndLeaveGr > el.EndSpan));
|
||||
if (hasLeve)
|
||||
lateToWorkEarlyExistSpannig.Remove(el);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
return (0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -375,11 +375,14 @@ public class RollCallRepository : RepositoryBase<long, RollCall>, IRollCallRepos
|
||||
var date = DateTime.Now.Date;
|
||||
|
||||
|
||||
//get active leaves for workshop which are active today and accepted and are either روزانه and استحقاقی or استعلاجی
|
||||
var leaves = _context.LeaveList.Where(x => x.WorkshopId == workshopId && x.EndLeave.Date >= date && x.StartLeave.Date <= date &&
|
||||
x.IsAccepted && (x.LeaveType == "استعلاجی" || (x.LeaveType == "استحقاقی" && x.PaidLeaveType == "روزانه")));
|
||||
//get active leaves for workshop which are active today and accepted and are either روزانه and استحقاقی or استعلاجی
|
||||
var leaves = _context.LeaveList
|
||||
.Where(x =>
|
||||
(x.WorkshopId == workshopId && x.EndLeave.Date >= date && x.StartLeave.Date <= date && x.IsAccepted) &&
|
||||
((x.LeaveType == "استعلاجی" || (x.LeaveType == "استحقاقی" && x.PaidLeaveType == "روزانه")) || (x.LeaveType == "استحقاقی" && x.PaidLeaveType == "ساعتی" && x.StartLeave <= DateTime.Now && x.EndLeave >= DateTime.Now))
|
||||
);
|
||||
|
||||
var personnelCodes = _context.PersonnelCodeSet.Where(x => x.WorkshopId == workshopId).ToList();
|
||||
var personnelCodes = _context.PersonnelCodeSet.Where(x => x.WorkshopId == workshopId).ToList();
|
||||
|
||||
//get currently working employees with leftWork table
|
||||
//var workingEmployees =
|
||||
|
||||
@@ -1,232 +1,561 @@
|
||||
@page
|
||||
@using _0_Framework.Application
|
||||
@using AccountManagement.Application.Contracts.TicketAccessAccount
|
||||
@using Microsoft.AspNetCore.Mvc.TagHelpers
|
||||
@model ServiceHost.Areas.Admin.Pages.IndexModel
|
||||
@inject ITicketAccessAccountApplication TicketAccessAccount;
|
||||
@inject IAuthHelper authHelper;
|
||||
|
||||
@{
|
||||
<link href="~/AdminTheme/assets/css/TypoGraphy.css" rel="stylesheet"/>
|
||||
<style>
|
||||
.efects {
|
||||
background-color: #f5f5f5 !important;
|
||||
}
|
||||
|
||||
.dadmehr {
|
||||
font-weight: 700;
|
||||
text-align: center;
|
||||
font-size: 40px;
|
||||
text-transform: uppercase;
|
||||
background: linear-gradient(90deg, #e7e7e7, #3c763d, #e7e7e7);
|
||||
-webkit-background-clip: text;
|
||||
background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-repeat: no-repeat;
|
||||
background-size: 80%;
|
||||
animation: shine 5s linear infinite;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.time {
|
||||
background-color: #28a711;
|
||||
height: 50px;
|
||||
border-radius: 15px;
|
||||
|
||||
}
|
||||
|
||||
.madar {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.farzand1 {
|
||||
font-size: 20px;
|
||||
position: absolute;
|
||||
top: 15px;
|
||||
right: 20px;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.farzand2 {
|
||||
font-size: 20px;
|
||||
position: absolute;
|
||||
top: 11px;
|
||||
right: 50px;
|
||||
color: #ffffff;
|
||||
}
|
||||
.searchpanel {
|
||||
background-color: #747272;
|
||||
}
|
||||
.dbBackupPanel {
|
||||
background-color: #efefef;
|
||||
min-height: 168px;
|
||||
border-radius: 15px;
|
||||
|
||||
box-shadow: 0px 1px 15px 0 #4cb733;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.insBackupPanel {
|
||||
background-color: #efefef;
|
||||
min-height: 168px;
|
||||
border-radius: 15px;
|
||||
|
||||
box-shadow: 0px 1px 15px 0 #f1c521;
|
||||
}
|
||||
.dbBackupItems {
|
||||
color: #fff;
|
||||
background-color: #10aa12;
|
||||
font-size: 14px;
|
||||
border-radius: 15px;
|
||||
height: 25px;
|
||||
line-height: 1.8;
|
||||
padding-left: 5px;
|
||||
width: 99.4%;
|
||||
}
|
||||
.InsurancebackupItems {
|
||||
color: #fff;
|
||||
background-color: #f1c521;
|
||||
font-size: 14px;
|
||||
border-radius: 15px;
|
||||
height: 25px;
|
||||
line-height: 1.8;
|
||||
padding-left: 5px;
|
||||
width: 99.4%;
|
||||
}
|
||||
.download-icon {
|
||||
top: 1px;
|
||||
right: 4px;
|
||||
position: relative;
|
||||
border-radius: 25px;
|
||||
background-color: white;
|
||||
|
||||
padding: 4px 4px;
|
||||
float: left;
|
||||
left: 1px;
|
||||
font-size: 14px;
|
||||
}
|
||||
.backupPanelHeader {
|
||||
background-color: #858585;
|
||||
border-radius: 15px;
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
}
|
||||
::-webkit-scrollbar {
|
||||
width: 8px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
background: #dfdfdf;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: #767676;
|
||||
border-radius: 5px;
|
||||
}
|
||||
@@media only screen and (max-width : 992px) {
|
||||
.InsurancebackupItems {
|
||||
|
||||
font-size: 12px !important;
|
||||
line-height: 2.4;
|
||||
|
||||
}
|
||||
|
||||
.dbBackupItems {
|
||||
|
||||
font-size: 12px !important;
|
||||
line-height: 2.4;
|
||||
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<link href="~/AdminTheme/assets/css/TypoGraphy.css" rel="stylesheet" />
|
||||
// <link href="~/admintheme/css/reports.css?ver=new" rel="stylesheet" />
|
||||
// <link href="~/admintheme/css/slick.css" rel="stylesheet" />
|
||||
|
||||
<link href="~/assetsadmin/page/index/css/index.css" rel="stylesheet" />
|
||||
}
|
||||
|
||||
<div class="row time">
|
||||
<div class="form-group madar">
|
||||
<i class="fa fa-calendar farzand1"></i>
|
||||
<span class="farzand2">
|
||||
<span style="border-left: 1px solid #ffffff; padding-left:10px">@Model.today</span>
|
||||
<div class="form-group madar">
|
||||
<i class="fa fa-calendar farzand1"></i>
|
||||
<span class="farzand2">
|
||||
<span style="border-left: 1px solid #ffffff; padding-left:10px">@Model.today</span>
|
||||
|
||||
<span style="padding-right: 5px">
|
||||
@Model.day
|
||||
<span style="padding-right: 5px">
|
||||
@Model.day
|
||||
|
||||
@Model.month
|
||||
|
||||
@Model.year
|
||||
</span>
|
||||
<span style="display: none;">
|
||||
<a id="googleLink" asp-page="./Index" asp-page-handler="Backup" class="btn btn-info pull-left m-rl-5 fff rad">
|
||||
<i class="fa faSize fa-trash"></i>
|
||||
</a>
|
||||
</span>
|
||||
|
||||
</span>
|
||||
</div>
|
||||
@Model.month
|
||||
|
||||
@Model.year
|
||||
</span>
|
||||
<span style="display: none;">
|
||||
<a id="googleLink" asp-page="./Index" asp-page-handler="Backup" class="btn btn-info pull-left m-rl-5 fff rad"><i class="fa faSize fa-trash"></i></a>
|
||||
</span>
|
||||
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row efects">
|
||||
<p class="dadmehr">دادمهرگستر </p><br/>
|
||||
<p class="dadmehrEn">DadmehrGostar</p>
|
||||
@* <div class="row efects">
|
||||
<p class="dadmehr">دادمهرگستر </p><br />
|
||||
<p class="dadmehrEn">DadmehrGostar</p>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="panel-group panel-group-joined" style="height: 85px; margin-bottom: 0px !important" id="accordion-test">
|
||||
<a class="btn btn-warning" style="border-radius: 25px; margin: 3% 45%" asp-area="Client" asp-page="Index"> سایت موازی(آزمایشی) </a>
|
||||
<div class="hidden-select" style="display: none;">
|
||||
<select class="form-control select-city inpt">
|
||||
</select>
|
||||
</div>
|
||||
<div class="panel-group panel-group-joined" style="height: 85px; margin-bottom: 0px !important" id="accordion-test">
|
||||
<a class="btn btn-warning" style="border-radius: 25px; margin: 3% 45%" asp-area="Client" asp-page="Index"> سایت موازی(آزمایشی) </a>
|
||||
<div class="hidden-select" style="display: none;">
|
||||
<select class="form-control select-city inpt">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div> *@
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="gridCard m-t-10">
|
||||
<div class="card p-0">
|
||||
<div class="card-section-btn">
|
||||
<a class="btn loadingButton @(authHelper.GetPermissions().Any(x => x == 201) ? "" : "disable")" asp-area="Admin" asp-page="/Company/Contracts/Index">
|
||||
<svg width="50" height="50" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M14 0H2C0.89543 0 0 0.89543 0 2V18C0 19.1046 0.89543 20 2 20H14C15.1046 20 16 19.1046 16 18V2C16 0.89543 15.1046 0 14 0Z" fill="#C4E8E8"/>
|
||||
<path d="M2 15.0015C2 14.7363 2.10536 14.4819 2.29289 14.2944C2.48043 14.1068 2.73478 14.0015 3 14.0015H7C7.26522 14.0015 7.51957 14.1068 7.70711 14.2944C7.89464 14.4819 8 14.7363 8 15.0015C8 15.2667 7.89464 15.5211 7.70711 15.7086C7.51957 15.8961 7.26522 16.0015 7 16.0015H3C2.73478 16.0015 2.48043 15.8961 2.29289 15.7086C2.10536 15.5211 2 15.2667 2 15.0015ZM16.91 3.30148L10.29 9.91148C10.1973 10.0049 10.124 10.1157 10.0742 10.2376C10.0245 10.3594 9.99924 10.4899 10 10.6215V12.0015C10 12.2667 10.1054 12.5211 10.2929 12.7086C10.4804 12.8961 10.7348 13.0015 11 13.0015H12.39C12.5223 13.0009 12.6532 12.9741 12.7751 12.9226C12.8969 12.8711 13.0074 12.796 13.1 12.7015L19.71 6.10148C19.8932 5.91455 19.9959 5.66323 19.9959 5.40148C19.9959 5.13973 19.8932 4.88841 19.71 4.70148L18.31 3.30148C18.1231 3.11826 17.8718 3.01563 17.61 3.01562C17.3482 3.01562 17.0969 3.11826 16.91 3.30148Z" fill="#23A8A8"/>
|
||||
</svg>
|
||||
<p class="btn-title text-nowrap" style="margin: 0 5px 0 0">قرارداد</p>
|
||||
<div class="spinner-loading loading rounded-0" style="display: none;">
|
||||
<div class="spinner"></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card p-0">
|
||||
<div class="card-section-btn">
|
||||
<a class="btn loadingButton @(authHelper.GetPermissions().Any(x => x == 202) ? "" : "disable")" asp-area="Admin" asp-page="/Company/Checkouts/Index">
|
||||
<svg width="50" height="50" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M22 5H6C5.44772 5 5 5.44772 5 6V30C5 30.5523 5.44772 31 6 31H22C22.5523 31 23 30.5523 23 30V6C23 5.44772 22.5523 5 22 5Z" fill="#23A8A8" />
|
||||
<path d="M26.71 7.29002L20.71 1.29002C20.6166 1.19734 20.5057 1.12401 20.3839 1.07425C20.2621 1.02448 20.1316 0.999256 20 1.00002H10C9.73478 1.00002 9.48043 1.10537 9.29289 1.29291C9.10536 1.48045 9 1.7348 9 2.00002V26C9 26.2652 9.10536 26.5196 9.29289 26.7071C9.48043 26.8947 9.73478 27 10 27H26C26.2652 27 26.5196 26.8947 26.7071 26.7071C26.8946 26.5196 27 26.2652 27 26V8.00002C27.0008 7.86841 26.9755 7.73795 26.9258 7.61611C26.876 7.49427 26.8027 7.38346 26.71 7.29002Z" fill="#C4E8E8" />
|
||||
<path d="M20.71 1.29002C20.6166 1.19734 20.5057 1.12401 20.3839 1.07425C20.2621 1.02448 20.1316 0.999256 20 1.00002V7.00002C20 7.26523 20.1054 7.51959 20.2929 7.70712C20.4804 7.89466 20.7348 8.00002 21 8.00002H27C27.0008 7.86841 26.9755 7.73795 26.9258 7.61611C26.876 7.49427 26.8027 7.38346 26.71 7.29002L20.71 1.29002Z" fill="#23A8A8" />
|
||||
<path d="M19 13.5H14C13.7348 13.5 13.4804 13.3946 13.2929 13.2071C13.1054 13.0196 13 12.7652 13 12.5C13 12.2348 13.1054 11.9804 13.2929 11.7929C13.4804 11.6054 13.7348 11.5 14 11.5H19C19.2652 11.5 19.5196 11.6054 19.7071 11.7929C19.8946 11.9804 20 12.2348 20 12.5C20 12.7652 19.8946 13.0196 19.7071 13.2071C19.5196 13.3946 19.2652 13.5 19 13.5Z" fill="#23A8A8" />
|
||||
<path d="M22 17.5H14C13.7348 17.5 13.4804 17.3946 13.2929 17.2071C13.1054 17.0196 13 16.7652 13 16.5C13 16.2348 13.1054 15.9804 13.2929 15.7929C13.4804 15.6054 13.7348 15.5 14 15.5H22C22.2652 15.5 22.5196 15.6054 22.7071 15.7929C22.8946 15.9804 23 16.2348 23 16.5C23 16.7652 22.8946 17.0196 22.7071 17.2071C22.5196 17.3946 22.2652 17.5 22 17.5Z" fill="#23A8A8" />
|
||||
<path d="M22 21.5H14C13.7348 21.5 13.4804 21.3946 13.2929 21.2071C13.1054 21.0196 13 20.7652 13 20.5C13 20.2348 13.1054 19.9804 13.2929 19.7929C13.4804 19.6054 13.7348 19.5 14 19.5H22C22.2652 19.5 22.5196 19.6054 22.7071 19.7929C22.8946 19.9804 23 20.2348 23 20.5C23 20.7652 22.8946 21.0196 22.7071 21.2071C22.5196 21.3946 22.2652 21.5 22 21.5Z" fill="#23A8A8" />
|
||||
</svg>
|
||||
<p class="btn-title text-nowrap" style="margin: 0 5px 0 0">تصفیه حساب</p>
|
||||
<div class="spinner-loading loading rounded-0" style="display: none;">
|
||||
<div class="spinner"></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card p-0">
|
||||
<div class="card-section-btn">
|
||||
<a class="btn loadingButton @(authHelper.GetPermissions().Any(x => x == 401) ? "" : "disable")" asp-area="Admin" asp-page="/Company/FilePage/Index">
|
||||
<svg width="50" height="50" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path opacity="0.5" d="M2 6.94975C2 6.06722 2 5.62595 2.06935 5.25839C2.37464 3.64031 3.64031 2.37464 5.25839 2.06935C5.62595 2 6.06722 2 6.94975 2C7.33642 2 7.52976 2 7.71557 2.01738C8.51665 2.09229 9.27652 2.40704 9.89594 2.92051C10.0396 3.03961 10.1763 3.17633 10.4497 3.44975L11 4C11.8158 4.81578 12.2237 5.22367 12.7121 5.49543C12.9804 5.64471 13.2651 5.7626 13.5604 5.84678C14.0979 6 14.6747 6 15.8284 6H16.2021C18.8345 6 20.1506 6 21.0062 6.76946C21.0849 6.84024 21.1598 6.91514 21.2305 6.99383C22 7.84935 22 9.16554 22 11.7979V14C22 17.7712 22 19.6569 20.8284 20.8284C19.6569 22 17.7712 22 14 22H10C6.22876 22 4.34315 22 3.17157 20.8284C2 19.6569 2 17.7712 2 14V6.94975Z" fill="#74E9E9"/>
|
||||
<path d="M20 6.23751C19.9992 5.94016 19.9949 5.76263 19.9746 5.60842C19.7974 4.26222 18.7381 3.2029 17.3919 3.02567C17.1969 3 16.9647 3 16.5003 3H9.98828C10.1042 3.10392 10.2347 3.23445 10.45 3.44975L11.0003 4C11.8161 4.81578 12.2239 5.22367 12.7124 5.49543C12.9807 5.64471 13.2653 5.7626 13.5606 5.84678C14.0982 6 14.675 6 15.8287 6H16.2024C17.9814 6 19.1593 6 20 6.23751Z" fill="#23A8A8"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.25 10C12.25 9.58579 12.5858 9.25 13 9.25H18C18.4142 9.25 18.75 9.58579 18.75 10C18.75 10.4142 18.4142 10.75 18 10.75H13C12.5858 10.75 12.25 10.4142 12.25 10Z" fill="#23A8A8"/>
|
||||
</svg>
|
||||
<p class="btn-title text-nowrap" style="margin: 0 5px 0 0">پرونده</p>
|
||||
<div class="spinner-loading loading rounded-0" style="display: none;">
|
||||
<div class="spinner"></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card p-0">
|
||||
<div class="card-section-btn">
|
||||
<a class="btn loadingButton @(authHelper.GetPermissions().Any(x => x == 307) ? "" : "disable")" asp-area="Admin" asp-page="/Company/InstitutionContracts/Index">
|
||||
<svg width="50" height="50" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M20 5H15C14.7348 5 14.4804 5.10536 14.2929 5.29289C14.1054 5.48043 14 5.73478 14 6V21C14 21.2652 14.1054 21.5196 14.2929 21.7071C14.4804 21.8946 14.7348 22 15 22H21C21.2652 22 21.5196 21.8946 21.7071 21.7071C21.8946 21.5196 22 21.2652 22 21V7C22 6.46957 21.7893 5.96086 21.4142 5.58579C21.0391 5.21071 20.5304 5 20 5Z" fill="#C4E8E8"/>
|
||||
<path d="M14 2H4C3.46957 2 2.96086 2.21071 2.58579 2.58579C2.21071 2.96086 2 3.46957 2 4V21C2 21.2652 2.10536 21.5196 2.29289 21.7071C2.48043 21.8946 2.73478 22 3 22H16V4C16 3.46957 15.7893 2.96086 15.4142 2.58579C15.0391 2.21071 14.5304 2 14 2Z" fill="#23A8A8"/>
|
||||
<path d="M12 15V22H6V15C6 14.7348 6.10536 14.4804 6.29289 14.2929C6.48043 14.1054 6.73478 14 7 14H11C11.2652 14 11.5196 14.1054 11.7071 14.2929C11.8946 14.4804 12 14.7348 12 15ZM7 8H11C11.2652 8 11.5196 7.89464 11.7071 7.70711C11.8946 7.51957 12 7.26522 12 7C12 6.73478 11.8946 6.48043 11.7071 6.29289C11.5196 6.10536 11.2652 6 11 6H7C6.73478 6 6.48043 6.10536 6.29289 6.29289C6.10536 6.48043 6 6.73478 6 7C6 7.26522 6.10536 7.51957 6.29289 7.70711C6.48043 7.89464 6.73478 8 7 8ZM11 10H7C6.73478 10 6.48043 10.1054 6.29289 10.2929C6.10536 10.4804 6 10.7348 6 11C6 11.2652 6.10536 11.5196 6.29289 11.7071C6.48043 11.8946 6.73478 12 7 12H11C11.2652 12 11.5196 11.8946 11.7071 11.7071C11.8946 11.5196 12 11.2652 12 11C12 10.7348 11.8946 10.4804 11.7071 10.2929C11.5196 10.1054 11.2652 10 11 10Z" fill="#C4E8E8"/>
|
||||
</svg>
|
||||
<p class="btn-title text-nowrap" style="margin: 0 5px 0 0">قراردادهای موسسه</p>
|
||||
<div class="spinner-loading loading rounded-0" style="display: none;">
|
||||
<div class="spinner"></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card p-0">
|
||||
<div class="card-section-btn">
|
||||
<a class="btn loadingButton @(authHelper.GetPermissions().Any(x => x == 901) ? "" : "disable")" asp-area="AdminNew" asp-page="/Company/Task/Index">
|
||||
<svg width="50" height="50" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M14.69 0.96875H6.31C2.67 0.96875 0.5 3.13876 0.5 6.77876V15.1587C0.5 18.7987 2.67 20.9687 6.31 20.9687H14.69C18.33 20.9687 20.5 18.7987 20.5 15.1587V6.77876C20.5 3.13876 18.33 0.96875 14.69 0.96875Z" fill="#C4E8E8" />
|
||||
<path d="M16.8105 7.83984C16.8105 8.24984 16.4805 8.58984 16.0605 8.58984H10.8105C10.4005 8.58984 10.0605 8.24984 10.0605 7.83984C10.0605 7.42984 10.4005 7.08984 10.8105 7.08984H16.0605C16.4805 7.08984 16.8105 7.42984 16.8105 7.83984Z" fill="#23A8A8"/>
|
||||
<path d="M8.47055 6.86734L6.22055 9.11734C6.07055 9.26734 5.88055 9.33734 5.69055 9.33734C5.50055 9.33734 5.30055 9.26734 5.16055 9.11734L4.41055 8.36734C4.11055 8.07734 4.11055 7.59734 4.41055 7.30734C4.70055 7.01734 5.17055 7.01734 5.47055 7.30734L5.69055 7.52734L7.41055 5.80734C7.70055 5.51734 8.17055 5.51734 8.47055 5.80734C8.76055 6.09734 8.76055 6.57734 8.47055 6.86734Z" fill="#23A8A8"/>
|
||||
<path d="M16.8105 14.8398C16.8105 15.2498 16.4805 15.5898 16.0605 15.5898H10.8105C10.4005 15.5898 10.0605 15.2498 10.0605 14.8398C10.0605 14.4298 10.4005 14.0898 10.8105 14.0898H16.0605C16.4805 14.0898 16.8105 14.4298 16.8105 14.8398Z" fill="#23A8A8"/>
|
||||
<path d="M8.47055 13.8673L6.22055 16.1173C6.07055 16.2673 5.88055 16.3373 5.69055 16.3373C5.50055 16.3373 5.30055 16.2673 5.16055 16.1173L4.41055 15.3673C4.11055 15.0773 4.11055 14.5973 4.41055 14.3073C4.70055 14.0173 5.17055 14.0173 5.47055 14.3073L5.69055 14.5273L7.41055 12.8073C7.70055 12.5173 8.17055 12.5173 8.47055 12.8073C8.76055 13.0973 8.76055 13.5773 8.47055 13.8673Z" fill="#23A8A8"/>
|
||||
</svg>
|
||||
<p class="btn-title text-nowrap" style="margin: 0 5px 0 0">وظایف</p>
|
||||
<div class="showCount">
|
||||
<span>@Model.TaskRequestCount</span>
|
||||
</div>
|
||||
<div class="spinner-loading loading rounded-0" style="display: none;">
|
||||
<div class="spinner"></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card p-0">
|
||||
<div class="card-section-btn">
|
||||
<a class="btn loadingButton @(authHelper.GetPermissions().Any(x => x == 801) ? "" : "disable")" asp-area="Admin" asp-page="/Company/InsuranceList/Index">
|
||||
<svg width="50" height="50" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M23.63 4.22001L18.63 0.220009C18.4514 0.0767046 18.229 -0.000955084 18 8.86676e-06H5C4.73478 8.86676e-06 4.48043 0.105366 4.29289 0.292902C4.10536 0.480438 4 0.734792 4 1.00001V14C4 14.2652 4.10536 14.5196 4.29289 14.7071C4.48043 14.8947 4.73478 15 5 15H13V17C13 17.2652 13.1054 17.5196 13.2929 17.7071C13.4804 17.8947 13.7348 18 14 18H23C23.2652 18 23.5196 17.8947 23.7071 17.7071C23.8946 17.5196 24 17.2652 24 17V5.00001C24.0005 4.85061 23.9675 4.703 23.9035 4.56802C23.8395 4.43305 23.746 4.31413 23.63 4.22001Z" fill="#23A8A8" />
|
||||
<path d="M27 15.9992H15V13.9992C15 13.734 14.8946 13.4796 14.7071 13.2921C14.5196 13.1045 14.2652 12.9992 14 12.9992H3C2.6427 12.9618 2.28154 12.9953 1.93723 13.0978C1.59292 13.2003 1.27221 13.3698 0.993513 13.5964C0.714811 13.8231 0.483589 14.1026 0.313102 14.4188C0.142614 14.735 0.0362137 15.0818 0 15.4392V24.8292C0 26.6092 1.76 27.9992 4 27.9992H24C26.24 27.9992 28 26.6092 28 24.8292V16.9992C28 16.734 27.8946 16.4796 27.7071 16.2921C27.5196 16.1045 27.2652 15.9992 27 15.9992Z" fill="#C4E8E8" />
|
||||
<path d="M23.63 4.2195L18.63 0.219504C18.483 0.100284 18.3053 0.0252099 18.1173 0.00300347C17.9294 -0.019203 17.739 0.0123699 17.5683 0.0940539C17.3976 0.175738 17.2536 0.30418 17.153 0.464457C17.0524 0.624735 16.9994 0.810269 17 0.999504V4.9995C17 5.26472 17.1054 5.51907 17.2929 5.70661C17.4804 5.89415 17.7348 5.9995 18 5.9995H23C23.2075 6.00038 23.4101 5.93672 23.5797 5.81733C23.7494 5.69794 23.8777 5.52874 23.9469 5.33316C24.0162 5.13759 24.0228 4.92533 23.966 4.7258C23.9093 4.52626 23.7918 4.34933 23.63 4.2195Z" fill="#C4E8E8" />
|
||||
<path d="M16 21H15V20C15 19.7348 14.8946 19.4804 14.7071 19.2929C14.5196 19.1054 14.2652 19 14 19C13.7348 19 13.4804 19.1054 13.2929 19.2929C13.1054 19.4804 13 19.7348 13 20V21H12C11.7348 21 11.4804 21.1054 11.2929 21.2929C11.1054 21.4804 11 21.7348 11 22C11 22.2652 11.1054 22.5196 11.2929 22.7071C11.4804 22.8946 11.7348 23 12 23H13V24C13 24.2652 13.1054 24.5196 13.2929 24.7071C13.4804 24.8946 13.7348 25 14 25C14.2652 25 14.5196 24.8946 14.7071 24.7071C14.8946 24.5196 15 24.2652 15 24V23H16C16.2652 23 16.5196 22.8946 16.7071 22.7071C16.8946 22.5196 17 22.2652 17 22C17 21.7348 16.8946 21.4804 16.7071 21.2929C16.5196 21.1054 16.2652 21 16 21Z" fill="#23A8A8" />
|
||||
<path d="M9 9H19C19.2652 9 19.5196 8.89464 19.7071 8.70711C19.8946 8.51957 20 8.26522 20 8C20 7.73478 19.8946 7.48043 19.7071 7.29289C19.5196 7.10536 19.2652 7 19 7H9C8.73478 7 8.48043 7.10536 8.29289 7.29289C8.10536 7.48043 8 7.73478 8 8C8 8.26522 8.10536 8.51957 8.29289 8.70711C8.48043 8.89464 8.73478 9 9 9Z" fill="#C4E8E8" />
|
||||
<path d="M19 10H9C8.73478 10 8.48043 10.1054 8.29289 10.2929C8.10536 10.4804 8 10.7348 8 11C8 11.2652 8.10536 11.5196 8.29289 11.7071C8.48043 11.8946 8.73478 12 9 12H19C19.2652 12 19.5196 11.8946 19.7071 11.7071C19.8946 11.5196 20 11.2652 20 11C20 10.7348 19.8946 10.4804 19.7071 10.2929C19.5196 10.1054 19.2652 10 19 10Z" fill="#C4E8E8" />
|
||||
</svg>
|
||||
<p class="btn-title text-nowrap" style="margin: 0 5px 0 0">بیمه</p>
|
||||
<div class="spinner-loading loading rounded-0" style="display: none;">
|
||||
<div class="spinner"></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card p-0">
|
||||
<div class="card-section-btn">
|
||||
<a class="btn loadingButton disable" asp-area="Admin" asp-page="/Company/Workshop/Index">
|
||||
<svg width="50" height="50" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M18.5116 10.0758C18.5116 10.8144 17.8869 11.4133 17.1163 11.4133C16.3457 11.4133 15.7209 10.8144 15.7209 10.0758C15.7209 9.33709 16.3457 8.73828 17.1163 8.73828C17.8869 8.73828 18.5116 9.33709 18.5116 10.0758Z" fill="#C4E8E8" />
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M18.0363 5.53107C16.9766 5.3945 15.6225 5.39451 13.9129 5.39453H10.0871C8.37751 5.39451 7.02343 5.3945 5.9637 5.53107C4.87308 5.67162 3.99033 5.96775 3.29418 6.63503C2.59803 7.30231 2.28908 8.14844 2.14245 9.19383C1.99997 10.2096 1.99999 11.5075 2 13.1461V13.2468C1.99999 14.8854 1.99997 16.1833 2.14245 17.1991C2.28908 18.2445 2.59803 19.0906 3.29418 19.7579C3.99033 20.4252 4.87307 20.7213 5.9637 20.8619C7.02344 20.9984 8.37751 20.9984 10.0871 20.9984H13.9129C15.6225 20.9984 16.9766 20.9984 18.0363 20.8619C19.1269 20.7213 20.0097 20.4252 20.7058 19.7579C21.402 19.0906 21.7109 18.2445 21.8575 17.1991C22 16.1833 22 14.8854 22 13.2468V13.1462C22 11.5075 22 10.2096 21.8575 9.19383C21.7109 8.14844 21.402 7.30231 20.7058 6.63503C20.0097 5.96775 19.1269 5.67162 18.0363 5.53107ZM6.14963 6.85662C5.21373 6.97723 4.67452 7.20341 4.28084 7.58077C3.88716 7.95812 3.65119 8.47497 3.52536 9.37205C3.42443 10.0916 3.40184 10.9909 3.3968 12.1672L3.86764 11.7723C4.99175 10.8295 6.68596 10.8836 7.74215 11.896L11.7326 15.7209C12.1321 16.1039 12.7611 16.1561 13.2234 15.8447L13.5008 15.6579C14.8313 14.7616 16.6314 14.8654 17.8402 15.9082L20.2479 17.9852C20.3463 17.7212 20.4206 17.4061 20.4746 17.0209C20.6032 16.1046 20.6047 14.8967 20.6047 13.1965C20.6047 11.4962 20.6032 10.2883 20.4746 9.37205C20.3488 8.47497 20.1128 7.95812 19.7192 7.58077C19.3255 7.20341 18.7863 6.97723 17.8504 6.85662C16.8944 6.73342 15.6343 6.732 13.8605 6.732H10.1395C8.36575 6.732 7.10559 6.73342 6.14963 6.85662Z" fill="#23A8A8" />
|
||||
<path d="M17.0863 2.61039C16.2265 2.49997 15.1318 2.49998 13.7672 2.5H10.6775C9.31283 2.49998 8.21814 2.49997 7.35833 2.61039C6.46795 2.72473 5.7256 2.96835 5.13681 3.53075C4.79724 3.8551 4.56855 4.22833 4.41278 4.64928C4.91698 4.41928 5.48703 4.28374 6.12704 4.20084C7.21142 4.06037 8.59699 4.06038 10.3463 4.06039H14.2612C16.0105 4.06038 17.396 4.06037 18.4804 4.20084C19.0394 4.27325 19.545 4.38581 20 4.56638C19.8454 4.17917 19.625 3.83365 19.3078 3.53075C18.719 2.96835 17.9767 2.72473 17.0863 2.61039Z" fill="#C4E8E8" />
|
||||
</svg>
|
||||
<p class="btn-title text-nowrap" style="margin: 0 5px 0 0">بررسی مدارک</p>
|
||||
<div class="spinner-loading loading rounded-0" style="display: none;">
|
||||
<div class="spinner"></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card p-0">
|
||||
<div class="card-section-btn">
|
||||
<a class="btn loadingButton @(TicketAccessAccount.HasTicketAccess(authHelper.CurrentAccountId()) ? "" : "disable")" asp-area="AdminNew" asp-page="/Company/Ticket/Index">
|
||||
<svg width="50" height="50" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_2861_32844)">
|
||||
<path d="M31.3458 31.3508L30.6217 29.2218C29.262 25.217 25.5799 22.4877 21.385 22.3086C21.0158 22.5955 20.6266 22.842 20.2232 23.0575C19.6218 24.6366 17.6012 25.0644 16.4173 23.8551C15.0167 23.7314 13.7345 23.1781 12.6146 22.3087C8.41972 22.4872 4.73866 25.2165 3.37797 29.2218L2.65505 31.3508C2.44606 31.9632 2.54671 32.638 2.92369 33.1637C3.29945 33.6898 3.90748 34.0016 4.55416 34.0016H29.4457C30.0922 34.0016 30.7003 33.6899 31.0762 33.1637C31.453 32.638 31.5536 31.9632 31.3458 31.3508Z" fill="#23A8A8"/>
|
||||
<path d="M19.7711 20.6853C22.2064 18.9736 23.9097 15.1936 23.9097 11.5391C23.9097 1.15331 10.0911 1.16435 10.0911 11.5391C10.0911 15.9806 12.6059 20.6007 15.8956 21.4729C16.2128 20.5741 17.0617 19.9242 18.0677 19.9242C18.7442 19.9241 19.3477 20.2209 19.7711 20.6853Z" fill="#23A8A8"/>
|
||||
<path d="M7.05894 15.8764C7.40154 17.2221 9.26869 16.8518 9.26869 15.6055C9.26869 10.6102 9.50743 10.1437 8.83868 9.60155C10.3696 0.168062 23.5571 0.238817 25.1621 9.60262C24.4944 10.1465 24.7333 10.6108 24.7333 15.6055C24.7333 15.9962 24.9433 16.3241 25.245 16.5275C25.245 20.4135 23.6687 20.1863 18.9287 21.4427C18.1959 20.6473 16.887 21.1651 16.887 22.238C16.887 23.5816 18.8126 23.896 19.1863 22.5453C23.0131 21.5306 26.3768 21.2105 26.3768 17.3858V16.6009C26.6609 16.4539 26.8621 16.1931 26.9428 15.8764C30.6316 15.8012 30.6327 10.2731 26.9428 10.1979C26.8665 9.8961 26.6787 9.6496 26.4144 9.49926C26.5095 8.36734 26.2763 6.87944 25.6274 5.44301C21.1141 -3.86997 7.78399 -0.226068 7.57522 8.79955C7.54646 9.1052 7.56967 9.32188 7.58732 9.49926C7.3231 9.6496 7.13525 9.8961 7.05894 10.1979C5.5136 10.2277 4.26779 11.4851 4.26779 13.0372C4.26779 14.5891 5.5136 15.8465 7.05894 15.8764Z" fill="#C4E8E8"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_2861_32844">
|
||||
<rect width="34" height="34" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
<p class="btn-title text-nowrap" style="margin: 0 5px 0 0">تیکت</p>
|
||||
<div class="showCount">
|
||||
<span>@Model.TicketCount</span>
|
||||
</div>
|
||||
<div class="spinner-loading loading rounded-0" style="display: none;">
|
||||
<div class="spinner"></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card p-0">
|
||||
<div class="card-section-btn">
|
||||
<a class="btn loadingButton @(authHelper.GetPermissions().Any(x => x == 2) ? "" : "disable")" asp-area="AdminNew" asp-page="/Company/FileBackup/Index">
|
||||
<svg width="50" height="50" viewBox="0 0 54 54" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M42.75 7.875H11.25C10.0125 7.875 9 8.8875 9 10.125V16.875C9 18.1125 10.0125 19.125 11.25 19.125H42.75C43.9875 19.125 45 18.1125 45 16.875V10.125C45 8.8875 43.9875 7.875 42.75 7.875ZM42.75 21.375H11.25C10.0125 21.375 9 22.3875 9 23.625V30.375C9 31.6125 10.0125 32.625 11.25 32.625H42.75C43.9875 32.625 45 31.6125 45 30.375V23.625C45 22.3875 43.9875 21.375 42.75 21.375ZM42.75 34.875H11.25C10.0125 34.875 9 35.8875 9 37.125V43.875C9 45.1125 10.0125 46.125 11.25 46.125H42.75C43.9875 46.125 45 45.1125 45 43.875V37.125C45 35.8875 43.9875 34.875 42.75 34.875Z" fill="#C4E8E8"/>
|
||||
<path d="M34.875 33.7492L42.75 40.0492V27.4492L34.875 33.7492Z" fill="#23A8A8"/>
|
||||
<path d="M42.75 31.5C42.4125 31.5 41.9625 31.5 41.625 31.6125V36.1125C41.9625 36 42.4125 36 42.75 36C46.4625 36 49.5 39.0375 49.5 42.75C49.5 46.4625 46.4625 49.5 42.75 49.5C39.0375 49.5 36 46.4625 36 42.75C36 42.4125 36 42.075 36.1125 41.7375L32.2875 38.7C31.8375 39.9375 31.5 41.2875 31.5 42.75C31.5 48.9375 36.5625 54 42.75 54C48.9375 54 54 48.9375 54 42.75C54 36.5625 48.9375 31.5 42.75 31.5Z" fill="#23A8A8"/>
|
||||
</svg>
|
||||
<p class="btn-title text-nowrap" style="margin: 0 5px 0 0">بکاپ</p>
|
||||
<div class="spinner-loading loading rounded-0" style="display: none;">
|
||||
<div class="spinner"></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@*backups*@
|
||||
<div class="row" permission="2">
|
||||
<div class="container">
|
||||
<fieldset style="border: 1px solid #999797; border-radius: 10px; padding: revert;">
|
||||
<legend style="margin-bottom: 5px; font-size: large; border-bottom: 0px; color: #505458; width: 140px; text-align: center;"> بکاپ خودکار</legend>
|
||||
<div class="col-md-1 hidden-xs hidden-sm" style="width: 4%"></div>
|
||||
<div class="col-xs-12 col-md-5 dbBackupPanel progress-bar-striped pull-right">
|
||||
<span>
|
||||
<h4 class="backupPanelHeader">لیست بکاپ های دیتابیس</h4>
|
||||
</span>
|
||||
<span style="height: 120px;display: inherit;overflow-y: scroll">
|
||||
@foreach (var item in Model.DbBackupList)
|
||||
{
|
||||
<span style="text-align: end">
|
||||
<h4 class="dbBackupItems">
|
||||
@item.FileName
|
||||
<span>
|
||||
<a title="Download_Database" href="@Url.Page("./Index", "DownloadFile", new { path = item.FullPath, fileName = item.FileName })">
|
||||
<i class="fa fa-download download-icon" style="color: #10aa12"></i>
|
||||
</a>
|
||||
</span>
|
||||
</h4>
|
||||
</span>
|
||||
}
|
||||
</span>
|
||||
@* @if(authHelper.GetPermissions().Any(x => x == 306)){
|
||||
|
||||
</div>
|
||||
<div class="col-md-1 hidden-xs hidden-sm"></div>
|
||||
<div class="col-xs-12 col-md-5 insBackupPanel progress-bar-striped pull-right">
|
||||
<span>
|
||||
<h4 class="backupPanelHeader">لیست بکاپ های بیمه</h4>
|
||||
</span>
|
||||
<span style="height: 120px;display: inherit;overflow-y: scroll">
|
||||
@foreach (var item in Model.InsuranceBackupList)
|
||||
{
|
||||
<span style="text-align: end">
|
||||
<h4 class="InsurancebackupItems">
|
||||
@item.FileName
|
||||
<span>
|
||||
<a title="Download_InsuranceList" href="@Url.Page("./Index", "DownloadFile", new { path = item.FullPath, fileName = item.FileName })">
|
||||
<i class="fa fa-download download-icon" style="color: #f1c521"></i>
|
||||
</a>
|
||||
</span>
|
||||
</h4>
|
||||
</span>
|
||||
}
|
||||
</span>
|
||||
<div class="row mainMobile m-t-20">
|
||||
|
||||
<div class="col-xs-12 d-flex align-items-center justify-content-between">
|
||||
<h5 class="card-title">خلاصه گزارش</h5>
|
||||
<a asp-area="Admin" asp-page="/Company/Reports/Index" style="background: #11a6a6;margin: 10px 0;padding: 4px 10px;display: flex;border-radius: 5px;color: #fff;font-size: 12px;">جزئیات بیشتر</a>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-3 pull-right" id="contractAndCheckoutSection">
|
||||
<div class="loading" style="background: #0da4a42e;position: absolute;height: 100%;width: 96%;top: 50%;left: 50%;transform: translate(-50%, -50%);border-radius: 9px;">
|
||||
<div class="loader">
|
||||
<div class="center"></div>
|
||||
<div class="item item-1"></div>
|
||||
<div class="item item-2"></div>
|
||||
<div class="item item-3"></div>
|
||||
<div class="item item-4"></div>
|
||||
<div class="item item-5"></div>
|
||||
<div class="item item-6"></div>
|
||||
<div class="item item-7"></div>
|
||||
<div class="item item-8"></div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<button type="button" class="card btn-card active">
|
||||
<div class="card-body">
|
||||
<div class="d-flex align-items-center justify-content-between" style="margin: 0 0 10px 0;">
|
||||
<h5 class="card-title">قرارداد و تصفیه حساب</h5>
|
||||
<div class="bullet rounded-circle"></div>
|
||||
</div>
|
||||
<!-- Start Chart -->
|
||||
<div class="text-center">
|
||||
<svg viewBox="0 0 36 36" class="circle-svg" id="allPercentSection">
|
||||
<path class="around" stroke-dasharray="100, 100" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"></path>
|
||||
<path class="percent" stroke="" stroke-dasharray="" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"></path>
|
||||
<text x="18" y="14" text-anchor="middle" dy="7" font-size="20" id="allPercentText"></text>
|
||||
</svg>
|
||||
</div>
|
||||
<!-- End Chart -->
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-3 pull-right">
|
||||
<button type="button" class="card btn-card w-100 card-disbale">
|
||||
<div class="card-body">
|
||||
<div class="d-flex align-items-center justify-content-between" style="margin: 0 0 10px 0;">
|
||||
<h5 class="card-title">بیمه</h5>
|
||||
<div class="bullet rounded-circle"></div>
|
||||
</div>
|
||||
<!-- Start Chart -->
|
||||
<div class="text-center">
|
||||
<svg viewBox="0 0 36 36" class="circle-svg">
|
||||
<path class="around" stroke-dasharray="100, 100" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"></path>
|
||||
<path class="percent" stroke="#A3E635" stroke-dasharray="50, 100" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"></path>
|
||||
<text x="18" y="14" text-anchor="middle" dy="7" font-size="20">50%</text>
|
||||
</svg>
|
||||
</div>
|
||||
<!-- End Chart -->
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-3 pull-right">
|
||||
<button type="button" class="card btn-card w-100 card-disbale">
|
||||
<div class="card-body">
|
||||
<div class="d-flex align-items-center justify-content-between" style="margin: 0 0 10px 0;">
|
||||
<h5 class="card-title">مالی</h5>
|
||||
<div class="bullet rounded-circle"></div>
|
||||
</div>
|
||||
<!-- Start Chart -->
|
||||
<div class="text-center">
|
||||
<svg viewBox="0 0 36 36" class="circle-svg">
|
||||
<path class="around" stroke-dasharray="100, 100" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"></path>
|
||||
<path class="percent" stroke="#A3E635" stroke-dasharray="50, 100" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"></path>
|
||||
<text x="18" y="14" text-anchor="middle" dy="7" font-size="20">50%</text>
|
||||
</svg>
|
||||
</div>
|
||||
<!-- End Chart -->
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-3 pull-right">
|
||||
<button type="button" class="card btn-card w-100 card-disbale">
|
||||
<div class="card-body">
|
||||
<div class="d-flex align-items-center justify-content-between" style="margin: 0 0 10px 0;">
|
||||
<h5 class="card-title">دیگر</h5>
|
||||
<div class="bullet rounded-circle"></div>
|
||||
</div>
|
||||
<!-- Start Chart -->
|
||||
<div class="text-center">
|
||||
<svg viewBox="0 0 36 36" class="circle-svg">
|
||||
<path class="around" stroke-dasharray="100, 100" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"></path>
|
||||
<path class="percent" stroke="#A3E635" stroke-dasharray="50, 100" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"></path>
|
||||
<text x="18" y="14" text-anchor="middle" dy="7" font-size="20">50%</text>
|
||||
</svg>
|
||||
</div>
|
||||
<!-- End Chart -->
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="row mainMobileSub" style="padding: 10px 0 0 0;">
|
||||
<div class="col-xs-3 pull-right">
|
||||
<div class="loading" style="background: #0da4a42e;position: absolute;height: 100%;width: 96%;top: 50%;left: 50%;transform: translate(-50%, -50%);border-radius: 9px;">
|
||||
<div class="loader">
|
||||
<div class="center"></div>
|
||||
<div class="item item-1"></div>
|
||||
<div class="item item-2"></div>
|
||||
<div class="item item-3"></div>
|
||||
<div class="item item-4"></div>
|
||||
<div class="item item-5"></div>
|
||||
<div class="item item-6"></div>
|
||||
<div class="item item-7"></div>
|
||||
<div class="item item-8"></div>
|
||||
</div>
|
||||
</div>
|
||||
<button type="button" class="card btn-card active" id="ContractDonePercent">
|
||||
<div class="card-body">
|
||||
<div class="d-flex align-items-center justify-content-between">
|
||||
<h5 class="card-title">تنظیم قرارداد</h5>
|
||||
<span class="reportNextMonth"></span>
|
||||
</div>
|
||||
<div class="d-flex align-items-center justify-content-between">
|
||||
<!-- Start Chart -->
|
||||
<div style="width: 85px;">
|
||||
<svg viewBox="0 0 36 36" class="circle-svg" id="contractPercentSection">
|
||||
<path class="around" stroke-dasharray="100, 100" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"></path>
|
||||
<path class="percent" stroke="" stroke-dasharray="" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"></path>
|
||||
<text x="18" y="14" text-anchor="middle" dy="7" font-size="20" id="contractPercentText"></text>
|
||||
</svg>
|
||||
</div>
|
||||
<!-- End Chart -->
|
||||
|
||||
<div class="textsChart">
|
||||
<p class="alltxt">
|
||||
<span style="width: 40px; display: inline-block;" id="allContract"></span> : <span style="width: 62px; display: inline-block;">کل</span>
|
||||
</p>
|
||||
<p class="alldonetxt">
|
||||
<span style="width: 40px; display: inline-block;" class="contrcatDone"></span> : <span style="width: 62px; display: inline-block; color: #283344;">انجام شده</span>
|
||||
</p>
|
||||
<p class="allnotdonetxt">
|
||||
<span style="width: 40px; display: inline-block;" id="contractNotDone"></span> : <span style="width: 62px; display: inline-block; color: #283344;">انجام نشده</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-xs-3 pull-right">
|
||||
<div class="loading" style="background: #0da4a42e;position: absolute;height: 100%;width: 96%;top: 50%;left: 50%;transform: translate(-50%, -50%);border-radius: 9px;">
|
||||
<div class="loader">
|
||||
<div class="center"></div>
|
||||
<div class="item item-1"></div>
|
||||
<div class="item item-2"></div>
|
||||
<div class="item item-3"></div>
|
||||
<div class="item item-4"></div>
|
||||
<div class="item item-5"></div>
|
||||
<div class="item item-6"></div>
|
||||
<div class="item item-7"></div>
|
||||
<div class="item item-8"></div>
|
||||
</div>
|
||||
</div>
|
||||
<button type="button" class="card btn-card" id="ContractSignPercent">
|
||||
<div class="card-body">
|
||||
<div class="d-flex align-items-center justify-content-between">
|
||||
<h5 class="card-title">امضاء قرارداد</h5>
|
||||
<span class="reportNextMonth"></span>
|
||||
</div>
|
||||
<div class="d-flex align-items-center justify-content-between">
|
||||
<!-- Start Chart -->
|
||||
<div style="width: 85px;">
|
||||
<svg viewBox="0 0 36 36" class="circle-svg" id="contractSignaturePercentSection">
|
||||
<path class="around" stroke-dasharray="100, 100" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"></path>
|
||||
<path class="percent" stroke="" stroke-dasharray="" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"></path>
|
||||
<text x="18" y="14" text-anchor="middle" dy="7" font-size="20" id="contractSignaturePercentText"></text>
|
||||
</svg>
|
||||
</div>
|
||||
<!-- End Chart -->
|
||||
|
||||
<div class="textsChart">
|
||||
<p class="alltxt">
|
||||
<span style="width: 40px; display: inline-block;" class="contrcatDone"></span> : <span style="width: 62px; display: inline-block;">کل</span>
|
||||
</p>
|
||||
<p class="alldonetxt">
|
||||
<span style="width: 40px; display: inline-block;" id="contractSignDone"></span> : <span style="width: 62px; display: inline-block; color: #283344;">انجام شده</span>
|
||||
</p>
|
||||
<p class="allnotdonetxt">
|
||||
<span style="width: 40px; display: inline-block;" id="contractSignNotDone"></span> : <span style="width: 62px; display: inline-block; color: #283344;">انجام نشده</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-xs-3 pull-right">
|
||||
<div class="loading" style="background: #0da4a42e;position: absolute;height: 100%;width: 96%;top: 50%;left: 50%;transform: translate(-50%, -50%);border-radius: 9px;">
|
||||
<div class="loader">
|
||||
<div class="center"></div>
|
||||
<div class="item item-1"></div>
|
||||
<div class="item item-2"></div>
|
||||
<div class="item item-3"></div>
|
||||
<div class="item item-4"></div>
|
||||
<div class="item item-5"></div>
|
||||
<div class="item item-6"></div>
|
||||
<div class="item item-7"></div>
|
||||
<div class="item item-8"></div>
|
||||
</div>
|
||||
</div>
|
||||
<button type="button" class="card btn-card" id="CheckoutDonePercent">
|
||||
<div class="card-body">
|
||||
<div class="d-flex align-items-center justify-content-between">
|
||||
<h5 class="card-title">تنظیم تصفیه حساب</h5>
|
||||
<span class="reportCurrentMonth"></span>
|
||||
</div>
|
||||
<div class="d-flex align-items-center justify-content-between">
|
||||
<!-- Start Chart -->
|
||||
<div style="width: 85px;">
|
||||
<svg viewBox="0 0 36 36" class="circle-svg" id="checkoutPercentSection">
|
||||
<path class="around" stroke-dasharray="100, 100" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"></path>
|
||||
<path class="percent" stroke="" stroke-dasharray="" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"></path>
|
||||
<text x="18" y="14" text-anchor="middle" dy="7" font-size="20" id="checkoutPercentText"></text>
|
||||
</svg>
|
||||
</div>
|
||||
<!-- End Chart -->
|
||||
|
||||
<div class="textsChart">
|
||||
<p class="alltxt">
|
||||
<span style="width: 40px; display: inline-block;" id="allCheckout"></span> : <span style="width: 62px; display: inline-block;">کل</span>
|
||||
</p>
|
||||
<p class="alldonetxt">
|
||||
<span style="width: 40px; display: inline-block;" class="checkoutDone"></span> : <span style="width: 62px; display: inline-block; color: #283344;">انجام شده</span>
|
||||
</p>
|
||||
<p class="allnotdonetxt">
|
||||
<span style="width: 40px; display: inline-block;" id="checkoutNotDone"></span> : <span style="width: 62px; display: inline-block; color: #283344;">انجام نشده</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-xs-3 pull-right">
|
||||
<div class="loading" style="background: #0da4a42e;position: absolute;height: 100%;width: 96%;top: 50%;left: 50%;transform: translate(-50%, -50%);border-radius: 9px;">
|
||||
<div class="loader">
|
||||
<div class="center"></div>
|
||||
<div class="item item-1"></div>
|
||||
<div class="item item-2"></div>
|
||||
<div class="item item-3"></div>
|
||||
<div class="item item-4"></div>
|
||||
<div class="item item-5"></div>
|
||||
<div class="item item-6"></div>
|
||||
<div class="item item-7"></div>
|
||||
<div class="item item-8"></div>
|
||||
</div>
|
||||
</div>
|
||||
<button type="button" class="card btn-card" id="CheckoutSignPercent">
|
||||
<div class="card-body">
|
||||
<div class="d-flex align-items-center justify-content-between">
|
||||
<h5 class="card-title">امضاء تصفیه حساب</h5>
|
||||
<span class="reportCurrentMonth"></span>
|
||||
</div>
|
||||
<div class="d-flex align-items-center justify-content-between">
|
||||
<!-- Start Chart -->
|
||||
<div style="width: 85px;">
|
||||
<svg viewBox="0 0 36 36" class="circle-svg" id="checkoutSignaturePercentSection">
|
||||
<path class="around" stroke-dasharray="100, 100" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"></path>
|
||||
<path class="percent" stroke="" stroke-dasharray="" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"></path>
|
||||
<text x="18" y="14" text-anchor="middle" dy="7" font-size="20" id="checkoutSignaturePercentText"></text>
|
||||
</svg>
|
||||
</div>
|
||||
<!-- End Chart -->
|
||||
|
||||
<div class="textsChart">
|
||||
<p class="alltxt">
|
||||
<span style="width: 40px; display: inline-block;" class="checkoutDone"></span> : <span style="width: 62px; display: inline-block;">کل</span>
|
||||
</p>
|
||||
<p class="alldonetxt">
|
||||
<span style="width: 40px; display: inline-block;" id="checkoutSignDone"></span> : <span style="width: 62px; display: inline-block; color: #283344;">انجام شده</span>
|
||||
</p>
|
||||
<p class="allnotdonetxt">
|
||||
<span style="width: 40px; display: inline-block;" id="checkoutSignNotDone"></span> : <span style="width: 62px; display: inline-block; color: #283344;">انجام نشده</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
} *@
|
||||
|
||||
@*backups*@
|
||||
@* <div class="row" permission="2">
|
||||
<div class="container">
|
||||
<fieldset style="border: 1px solid #999797; border-radius: 10px; padding: revert;">
|
||||
<legend style="margin-bottom: 5px; font-size: large; border-bottom: 0px; color: #505458; width: 140px; text-align: center;"> بکاپ خودکار</legend>
|
||||
<div class="col-md-1 hidden-xs hidden-sm" style="width: 4%"></div>
|
||||
<div class="col-xs-12 col-md-5 dbBackupPanel progress-bar-striped pull-right">
|
||||
<span>
|
||||
<h4 class="backupPanelHeader">لیست بکاپ های دیتابیس</h4>
|
||||
</span>
|
||||
<span style="height: 120px;display: inherit;overflow-y: scroll">
|
||||
@foreach (var item in @Model.DbBackupList)
|
||||
{
|
||||
<span style="text-align: end">
|
||||
<h4 class="dbBackupItems">@item.FileName
|
||||
<span>
|
||||
<a title="Download_Database" href="@Url.Page("./Index", "DownloadFile", new { path = @item.FullPath, fileName = @item.FileName })">
|
||||
<i class="fa fa-download download-icon" style="color: #10aa12"></i>
|
||||
</a></span></h4>
|
||||
</span>
|
||||
}
|
||||
</span>
|
||||
|
||||
</div>
|
||||
<div class="col-md-1 hidden-xs hidden-sm"></div>
|
||||
<div class="col-xs-12 col-md-5 insBackupPanel progress-bar-striped pull-right">
|
||||
<span>
|
||||
<h4 class="backupPanelHeader">لیست بکاپ های بیمه</h4>
|
||||
</span>
|
||||
<span style="height: 120px;display: inherit;overflow-y: scroll">
|
||||
@foreach (var item in @Model.InsuranceBackupList)
|
||||
{
|
||||
<span style="text-align: end">
|
||||
<h4 class="InsurancebackupItems">@item.FileName
|
||||
<span>
|
||||
<a title="Download_InsuranceList" href="@Url.Page("./Index", "DownloadFile", new { path = @item.FullPath, fileName = @item.FileName })">
|
||||
<i class="fa fa-download download-icon" style="color: #f1c521"></i>
|
||||
</a></span></h4>
|
||||
</span>
|
||||
}
|
||||
</span>
|
||||
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div> *@
|
||||
|
||||
@section Script
|
||||
{
|
||||
@* <script src="~/admintheme/js/slick.min.js"></script> *@
|
||||
@* <script src="~/AssetsAdminNew/report/js/index.js"></script> *@
|
||||
@* <script>
|
||||
var antiForgeryToken = $(`@Html.AntiForgeryToken()`).val();
|
||||
var ajaxDataReport = `@Url.Page("./Index", "ReportDataAjax")`;
|
||||
var boolPermissionForReports = @(authHelper.GetPermissions().Any(x => x == 306) ? "true" : "false");
|
||||
</script> *@
|
||||
<script src="~/assetsadmin/page/index/js/index.js"></script>
|
||||
}
|
||||
@@ -1,167 +1,203 @@
|
||||
using _0_Framework.Application;
|
||||
using backService;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlClient;
|
||||
using _0_Framework.Application;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.RazorPages;
|
||||
using PersianTools.Core;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using backService;
|
||||
using CompanyManagment.EFCore;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using CompanyContext = CompanyManagment.EFCore.CompanyContext;
|
||||
using AccountManagement.Application.Contracts.Account;
|
||||
using AccountManagement.Application.Contracts.Task;
|
||||
using AccountManagement.Application.Contracts.Ticket;
|
||||
using CompanyManagment.App.Contracts.Report;
|
||||
using CompanyManagment.App.Contracts.Workshop;
|
||||
using CompanyManagment.App.Contracts.YearlySalary;
|
||||
using CompanyManagment.Application;
|
||||
|
||||
namespace ServiceHost.Areas.Admin.Pages;
|
||||
|
||||
[Authorize]
|
||||
public class IndexModel : PageModel
|
||||
namespace ServiceHost.Areas.Admin.Pages
|
||||
{
|
||||
private readonly IConfiguration _configuration;
|
||||
private readonly IWebHostEnvironment _webHostEnvironment;
|
||||
public string day;
|
||||
public string filedirectory = string.Empty;
|
||||
public string month;
|
||||
[Authorize]
|
||||
public class IndexModel : PageModel
|
||||
{
|
||||
private readonly IReportApplication _reportApplication;
|
||||
private readonly IYearlySalaryApplication _yearlySalaryApplication;
|
||||
private readonly IWorkshopApplication _workshopApplication;
|
||||
private readonly IAccountApplication _accountApplication;
|
||||
private readonly ITaskApplication _taskApplication;
|
||||
private readonly ITicketApplication _ticketApplication;
|
||||
private readonly IWebHostEnvironment _webHostEnvironment;
|
||||
private readonly IConfiguration _configuration;
|
||||
|
||||
public string today;
|
||||
public string year;
|
||||
public string today;
|
||||
public string month;
|
||||
public string day;
|
||||
public string year;
|
||||
public string filedirectory = string.Empty;
|
||||
public string FolderPath;
|
||||
public int TaskRequestCount;
|
||||
public int TicketCount;
|
||||
|
||||
public IndexModel(IWebHostEnvironment webHostEnvironment, IConfiguration configuration)
|
||||
{
|
||||
_webHostEnvironment = webHostEnvironment;
|
||||
_configuration = configuration;
|
||||
}
|
||||
public IndexModel(IWebHostEnvironment webHostEnvironment, IConfiguration configuration, IAuthHelper authHelper, IReportApplication reportApplication, IYearlySalaryApplication yearlySalaryApplication, IWorkshopApplication workshopApplication, IAccountApplication accountApplication, ITaskApplication taskApplication, ITicketApplication ticketApplication)
|
||||
{
|
||||
_webHostEnvironment = webHostEnvironment;
|
||||
_configuration = configuration;
|
||||
_reportApplication = reportApplication;
|
||||
_yearlySalaryApplication = yearlySalaryApplication;
|
||||
_workshopApplication = workshopApplication;
|
||||
_accountApplication = accountApplication;
|
||||
_taskApplication = taskApplication;
|
||||
_ticketApplication = ticketApplication;
|
||||
}
|
||||
|
||||
public List<BackupViewModel> DbBackupList { get; set; }
|
||||
public List<BackupViewModel> InsuranceBackupList { get; set; }
|
||||
public string FolderPath { get; set; }
|
||||
public void OnGet()
|
||||
{
|
||||
var todayGr = DateTime.Now;
|
||||
var todayFa = todayGr.ToFarsi();
|
||||
var syear = Convert.ToInt32(todayFa.Substring(0, 4));
|
||||
var smonth = Convert.ToInt32(todayFa.Substring(5, 2));
|
||||
var sday = Convert.ToInt32(todayFa.Substring(8, 2));
|
||||
var d1 = new PersianDateTime(syear, smonth, sday);
|
||||
|
||||
|
||||
public void OnGet()
|
||||
{
|
||||
var todayGr = DateTime.Now;
|
||||
var todayFa = todayGr.ToFarsi();
|
||||
var syear = Convert.ToInt32(todayFa.Substring(0, 4));
|
||||
var smonth = Convert.ToInt32(todayFa.Substring(5, 2));
|
||||
var sday = Convert.ToInt32(todayFa.Substring(8, 2));
|
||||
var d1 = new PersianDateTime(syear, smonth, sday);
|
||||
today = d1.DayOfWeek;
|
||||
month = d1.MonthOfYear;
|
||||
day = todayFa.Substring(8, 2);
|
||||
year = todayFa.Substring(0, 4);
|
||||
|
||||
TaskRequestCount = _taskApplication.GetRequestedTasksCount();
|
||||
TicketCount = _ticketApplication.GetAdminTicketsCount();
|
||||
|
||||
//foreach (string fileEntry in fileEntries)
|
||||
//{
|
||||
// Console.WriteLine(Path.GetFileName(fileEntry));
|
||||
//}
|
||||
}
|
||||
|
||||
public IActionResult OnGetReportDataAjax()
|
||||
{
|
||||
var allReports = _reportApplication.GetAllReports(null, null);
|
||||
var now = new PersianDateTime(Convert.ToInt32(allReports.Year), Convert.ToInt32(allReports.Month), 1);
|
||||
var before = now.AddMonths(1);
|
||||
|
||||
return new JsonResult(new
|
||||
{
|
||||
success = true,
|
||||
AllPercent = allReports.AllPercent,
|
||||
ContractPercent = allReports.ContractPercent,
|
||||
ContractSignaturePercent = allReports.ContractSignaturePercent,
|
||||
CheckoutPercent = allReports.CheckoutPercent,
|
||||
CheckoutSignaturePercent = allReports.CheckoutSignaturePercent,
|
||||
ReportYear = allReports.Year,
|
||||
ReportMonth = allReports.Month,
|
||||
ReportCurrentMonth = allReports.Month.ToFarsiMonthByNumber(),
|
||||
ReportNextMonth = before.Month.ToFarsiMonthByIntNumber(),
|
||||
AllContract = allReports.AllContract,
|
||||
ContractNotDone = allReports.ContractNotDone,
|
||||
ContrcatDone = allReports.ContrcatDone,
|
||||
ContractSignNotDone = allReports.ContractSignNotDone,
|
||||
ContractSignDone = allReports.ContractSignDone,
|
||||
AllCheckout = allReports.AllCheckout,
|
||||
CheckoutDone = allReports.CheckoutDone,
|
||||
CheckoutNotDone = allReports.CheckoutNotDone,
|
||||
CheckoutSignNotDone = allReports.CheckoutSignNotDone,
|
||||
CheckoutSignDone = allReports.CheckoutSignDone,
|
||||
});
|
||||
}
|
||||
|
||||
//public IActionResult OnGetCreateDatabaseBackup()
|
||||
//{
|
||||
// ServerConnection serverConnection = new ServerConnection("46.4.37.226\\MSSQLSERVER2019,51019", "mesbah_db", "fD!4vm64");
|
||||
// Server server = new Server(serverConnection);
|
||||
// Database database = server.Databases["mesbah_db"];
|
||||
// Backup backup = new Backup();
|
||||
// backup.Action = BackupActionType.Database;
|
||||
|
||||
// backup.Database = "mesbah_db";
|
||||
|
||||
// BackupDeviceItem deviceItem = new BackupDeviceItem("mesbah_db.bak", DeviceType.File);
|
||||
// backup.Devices.Add(deviceItem);
|
||||
// backup.Incremental = false;
|
||||
|
||||
// backup.SqlBackup(server);
|
||||
|
||||
// return RedirectToPage("./Index");
|
||||
//}
|
||||
|
||||
//public IActionResult OnGetCreateBackup()
|
||||
//{
|
||||
// var directoryPath = "C:\\Program Files\\Microsoft SQL Server\\MSSQL15.MSNEW\\MSSQL\\Backup";
|
||||
// ServerConnection connection = new ServerConnection("46.4.37.226\\MSSQLSERVER2019,51019", "mesbah_db", "fD!4vm64");
|
||||
// Server server = new Server(connection);
|
||||
// Backup backup = new Backup();
|
||||
// backup.Action = BackupActionType.Database;
|
||||
// backup.Database = "mesbah_db";
|
||||
// backup.Devices.AddDevice(Path.Combine(directoryPath, "mesbah_db" + "_" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss") + ".bak"), DeviceType.File);
|
||||
// backup.Initialize = true;
|
||||
// backup.SqlBackup(server);
|
||||
// return RedirectToPage("./Index");
|
||||
|
||||
//}
|
||||
|
||||
//public IActionResult OnGetBackup()
|
||||
//{
|
||||
// FolderPath = $"{_webHostEnvironment.WebRootPath}";
|
||||
|
||||
// SaveBackupFile();
|
||||
|
||||
// return Page();
|
||||
|
||||
|
||||
today = d1.DayOfWeek;
|
||||
month = d1.MonthOfYear;
|
||||
day = todayFa.Substring(8, 2);
|
||||
year = todayFa.Substring(0, 4);
|
||||
|
||||
#region DbBackupLoad
|
||||
|
||||
var dbZipPath = _configuration["BackupOptions:DbBackupZipPath"];
|
||||
var dbBackups = Directory.GetFiles(dbZipPath);
|
||||
DbBackupList = dbBackups.Select(x => new BackupViewModel
|
||||
{
|
||||
FileName = Path.GetFileName(x),
|
||||
FullPath = x,
|
||||
CreationDate = Path.GetFileName(x).ExtractTimeFromDbbackup()
|
||||
}).OrderByDescending(x => x.CreationDate).ToList();
|
||||
|
||||
#endregion
|
||||
|
||||
#region InsurancBackupLoad
|
||||
|
||||
var insuranceZipPath = _configuration["BackupOptions:InsuranceListZipPath"];
|
||||
var insuranceBackups = Directory.GetFiles(insuranceZipPath);
|
||||
InsuranceBackupList = insuranceBackups.Select(x => new BackupViewModel
|
||||
{
|
||||
FileName = Path.GetFileName(x),
|
||||
FullPath = x,
|
||||
CreationDate = Path.GetFileName(x).ExtractTimeFromInsurancebackup()
|
||||
}).OrderByDescending(x => x.CreationDate).ToList();
|
||||
|
||||
#endregion
|
||||
|
||||
//foreach (string fileEntry in fileEntries)
|
||||
//{
|
||||
// Console.WriteLine(Path.GetFileName(fileEntry));
|
||||
//}
|
||||
}
|
||||
|
||||
public IActionResult OnGetDownloadFile(string path, string fileName)
|
||||
{
|
||||
var fileContent = System.IO.File.ReadAllBytes(path);
|
||||
return File(fileContent, "application/zip", fileName);
|
||||
}
|
||||
//public IActionResult OnGetCreateDatabaseBackup()
|
||||
//{
|
||||
// ServerConnection serverConnection = new ServerConnection("46.4.37.226\\MSSQLSERVER2019,51019", "mesbah_db", "fD!4vm64");
|
||||
// Server server = new Server(serverConnection);
|
||||
// Database database = server.Databases["mesbah_db"];
|
||||
// Backup backup = new Backup();
|
||||
// backup.Action = BackupActionType.Database;
|
||||
|
||||
// backup.Database = "mesbah_db";
|
||||
|
||||
// BackupDeviceItem deviceItem = new BackupDeviceItem("mesbah_db.bak", DeviceType.File);
|
||||
// backup.Devices.Add(deviceItem);
|
||||
// backup.Incremental = false;
|
||||
|
||||
// backup.SqlBackup(server);
|
||||
|
||||
// return RedirectToPage("./Index");
|
||||
//}
|
||||
|
||||
//public IActionResult OnGetCreateBackup()
|
||||
//{
|
||||
// var directoryPath = "C:\\Program Files\\Microsoft SQL Server\\MSSQL15.MSNEW\\MSSQL\\Backup";
|
||||
// ServerConnection connection = new ServerConnection("46.4.37.226\\MSSQLSERVER2019,51019", "mesbah_db", "fD!4vm64");
|
||||
// Server server = new Server(connection);
|
||||
// Backup backup = new Backup();
|
||||
// backup.Action = BackupActionType.Database;
|
||||
// backup.Database = "mesbah_db";
|
||||
// backup.Devices.AddDevice(Path.Combine(directoryPath, "mesbah_db" + "_" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss") + ".bak"), DeviceType.File);
|
||||
// backup.Initialize = true;
|
||||
// backup.SqlBackup(server);
|
||||
// return RedirectToPage("./Index");
|
||||
|
||||
//}
|
||||
|
||||
//public IActionResult OnGetBackup()
|
||||
//{
|
||||
// FolderPath = $"{_webHostEnvironment.WebRootPath}";
|
||||
|
||||
// SaveBackupFile();
|
||||
|
||||
// return Page();
|
||||
//}
|
||||
|
||||
|
||||
//}
|
||||
//private void SaveBackupFile()
|
||||
//{
|
||||
|
||||
|
||||
//private void SaveBackupFile()
|
||||
//{
|
||||
|
||||
// var backupPath = "C:\\Dell";
|
||||
// var databaseName = "Mesbah_db";
|
||||
// var connectionString =
|
||||
// "Data Source=DESKTOP-NUE119G\\MSNEW;Initial Catalog=Mesbah_db;Integrated Security=True";
|
||||
// // Connect to SQL Server database
|
||||
// SqlConnection connection = new SqlConnection(connectionString);
|
||||
|
||||
// // Open database connection
|
||||
// connection.Open();
|
||||
|
||||
// // Create backup command
|
||||
// string backupQuery = $"BACKUP DATABASE {databaseName} TO DISK='{backupPath}\\Mesbah_db.bak'";
|
||||
// SqlCommand command = new SqlCommand(backupQuery, connection);
|
||||
|
||||
// // Execute backup command
|
||||
// command.ExecuteNonQuery();
|
||||
|
||||
|
||||
// var backupPath = "C:\\Dell";
|
||||
// var databaseName = "Mesbah_db";
|
||||
// var connectionString =
|
||||
// "Data Source=DESKTOP-NUE119G\\MSNEW;Initial Catalog=Mesbah_db;Integrated Security=True";
|
||||
// // Connect to SQL Server database
|
||||
// SqlConnection connection = new SqlConnection(connectionString);
|
||||
|
||||
// // Open database connection
|
||||
// connection.Open();
|
||||
|
||||
// // Create backup command
|
||||
// string backupQuery = $"BACKUP DATABASE {databaseName} TO DISK='{backupPath}\\Mesbah_db.bak'";
|
||||
// SqlCommand command = new SqlCommand(backupQuery, connection);
|
||||
|
||||
// // Execute backup command
|
||||
// command.ExecuteNonQuery();
|
||||
|
||||
|
||||
// //// create backup command
|
||||
// //var backupCommand = $"BACKUP DATABASE {databaseName} TO DISK = '{backupPath}\\Mesbah_db.bak'";
|
||||
|
||||
// // // execute backup command
|
||||
// // _context.Database.ExecuteSqlRaw(backupCommand);
|
||||
// //// create backup command
|
||||
// //var backupCommand = $"BACKUP DATABASE {databaseName} TO DISK = '{backupPath}\\Mesbah_db.bak'";
|
||||
|
||||
// // // save backup file to disk
|
||||
// // var fileStream = new FileStream($"{backupPath}\\Mesbah_db.bak", FileMode.Create);
|
||||
// // using (var binaryWriter = new BinaryWriter(fileStream))
|
||||
// // {
|
||||
// // binaryWriter.Write(_context.Database.GetDbConnection().Database);
|
||||
// // }
|
||||
// // // execute backup command
|
||||
// // _context.Database.ExecuteSqlRaw(backupCommand);
|
||||
|
||||
// // // save backup file to disk
|
||||
// // var fileStream = new FileStream($"{backupPath}\\Mesbah_db.bak", FileMode.Create);
|
||||
// // using (var binaryWriter = new BinaryWriter(fileStream))
|
||||
// // {
|
||||
// // binaryWriter.Write(_context.Database.GetDbConnection().Database);
|
||||
// // }
|
||||
|
||||
|
||||
//}
|
||||
}
|
||||
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
193
ServiceHost/Areas/AdminNew/Pages/Company/FileBackup/Index.cshtml
Normal file
193
ServiceHost/Areas/AdminNew/Pages/Company/FileBackup/Index.cshtml
Normal file
@@ -0,0 +1,193 @@
|
||||
@page
|
||||
@model ServiceHost.Areas.AdminNew.Pages.Company.FileBackup.IndexModel
|
||||
@inject _0_Framework.Application.IAuthHelper AuthHelper;
|
||||
|
||||
@{
|
||||
string versionAdmin = _0_Framework.Application.Version.AdminVersion;
|
||||
ViewData["Title"] = " - " + "گروهبندی";
|
||||
int indexDb = 1;
|
||||
int indexInsurance = 1;
|
||||
}
|
||||
|
||||
@section Styles {
|
||||
<link href="~/AssetsClient/css/table-style.css?ver=?ver=@versionAdmin" rel="stylesheet" />
|
||||
<link href="~/AssetsClient/css/table-responsive.css?ver=@versionAdmin" rel="stylesheet" />
|
||||
|
||||
<style>
|
||||
|
||||
/* Start Select2 */
|
||||
.select2.select2-container .select2-selection {
|
||||
display: flex !important;
|
||||
height: 0 !important;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.select2.select2-container .select2-selection--multiple .select2-selection__rendered {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.select2-container--default .select2-search--inline .select2-search__field {
|
||||
line-height: 32px;
|
||||
padding: 0 0;
|
||||
font-family: 'IRANYekanX';
|
||||
}
|
||||
/* End Select2 */
|
||||
|
||||
.sweet-alert {
|
||||
font-family: 'IranSans' !important
|
||||
}
|
||||
|
||||
</style>
|
||||
}
|
||||
|
||||
|
||||
|
||||
<div class="row p-0 mb-3">
|
||||
<div class="col p-0 m-0 d-flex align-items-center justify-content-between">
|
||||
<div class="d-flex align-items-center">
|
||||
<img src="~/assetsclient/images/icons/backup-system.png" style="width: 45px"/>
|
||||
|
||||
<h4 class="ms-3 title d-flex align-items-center">بکاپ گیری</h4>
|
||||
</div>
|
||||
<div>
|
||||
<a asp-area="Admin" asp-page="/Index" class="back-btn" type="button">
|
||||
<span>بازگشت</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row p-0">
|
||||
<div class="col-12 col-md-6 p-0 pe-1">
|
||||
<div class="wrapper list-box w-100 card pt-2">
|
||||
<div class="Rtable Rtable--5cols Rtable--collapse">
|
||||
|
||||
<div class="Rtable-row Rtable-row--head align-items-center d-flex mb-1 px-2">
|
||||
<div class="Rtable-cell column-heading width1">ردیف</div>
|
||||
<div class="Rtable-cell column-heading width2">عنوان</div>
|
||||
<div class="Rtable-cell column-heading text-end">عملیات</div>
|
||||
</div>
|
||||
|
||||
@foreach (var item in Model.DbBackupList)
|
||||
{
|
||||
|
||||
<div class="Rtable-row align-items-center position-relative">
|
||||
<div class="Rtable-cell d-md-block d-none width1">
|
||||
<div class="Rtable-cell--heading">
|
||||
ردیف
|
||||
</div>
|
||||
<div class="Rtable-cell--content">
|
||||
<span class="d-flex justify-content-center align-items-center justify-content-center">
|
||||
@(indexDb++)
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="Rtable-cell d-md-block d-none width2">
|
||||
<div class="Rtable-cell--heading">
|
||||
عنوان
|
||||
</div>
|
||||
<div class="Rtable-cell--content">
|
||||
<p class="d-flex align-items-center m-0">
|
||||
@item.FileName
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="Rtable-cell d-md-block d-none width3">
|
||||
<div class="Rtable-cell--heading">
|
||||
عنوان
|
||||
</div>
|
||||
<div class="Rtable-cell--content">
|
||||
<div class="d-flex align-items-center justify-content-end">
|
||||
<a href="@Url.Page("./Index", "DownloadFile", new { path = @item.FullPath, fileName = @item.FileName })" class="btn-delete1">
|
||||
<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3" />
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 p-0 ps-1">
|
||||
<div class="wrapper list-box w-100 card pt-2">
|
||||
<div class="Rtable Rtable--5cols Rtable--collapse">
|
||||
|
||||
<div class="Rtable-row Rtable-row--head align-items-center d-flex mb-1 px-2">
|
||||
<div class="Rtable-cell column-heading width1">ردیف</div>
|
||||
<div class="Rtable-cell column-heading width2">عنوان</div>
|
||||
<div class="Rtable-cell column-heading text-end">عملیات</div>
|
||||
</div>
|
||||
|
||||
@foreach (var item in Model.InsuranceBackupList)
|
||||
{
|
||||
<div class="Rtable-row align-items-center position-relative">
|
||||
<div class="Rtable-cell d-md-block d-none width1">
|
||||
<div class="Rtable-cell--heading">
|
||||
ردیف
|
||||
</div>
|
||||
<div class="Rtable-cell--content">
|
||||
<span class="d-flex justify-content-center align-items-center justify-content-center">
|
||||
@(indexInsurance++)
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="Rtable-cell d-md-block d-none width2">
|
||||
<div class="Rtable-cell--heading">
|
||||
عنوان
|
||||
</div>
|
||||
<div class="Rtable-cell--content">
|
||||
<p class="d-flex align-items-center m-0">
|
||||
@item.FileName
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="Rtable-cell d-md-block d-none width3">
|
||||
<div class="Rtable-cell--heading">
|
||||
عنوان
|
||||
</div>
|
||||
<div class="Rtable-cell--content">
|
||||
<div class="d-flex align-items-center justify-content-end">
|
||||
<a href="@Url.Page("./Index", "DownloadFile", new { path = @item.FullPath, fileName = @item.FileName })" class="btn-delete1">
|
||||
<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3" />
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!-- مودال -->
|
||||
<div id="MainModal" class="modal fade createNewGroup" aria-labelledby="myModalLabel" data-bs-backdrop="static" aria-hidden="true" tabindex="-1" style="display: none;">
|
||||
<div class="modal-dialog modal-xl-taskTime modal-dialog-centered">
|
||||
<div class="modal-content" id="ModalContent">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- مودال -->
|
||||
@section Script {
|
||||
<script src="~/AssetsClient/js/jquery-ui.js"></script>
|
||||
<script src="~/assetsclient/js/site.js?ver=@versionAdmin"></script>
|
||||
<script src="~/AdminTheme/assets/sweet-alert/sweet-alert.min.js"></script>
|
||||
|
||||
<script>
|
||||
var hasDeletePermission = '@AuthHelper.GetPermissions().Any(x => x == 90213)';
|
||||
</script>
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
using _0_Framework.Application;
|
||||
using _0_Framework.Infrastructure;
|
||||
using _0_Framework.InfraStructure;
|
||||
using backService;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.RazorPages;
|
||||
using Microsoft.Extensions.Configuration.UserSecrets;
|
||||
|
||||
namespace ServiceHost.Areas.AdminNew.Pages.Company.FileBackup
|
||||
{
|
||||
[Authorize]
|
||||
public class IndexModel : PageModel
|
||||
{
|
||||
private readonly IConfiguration _configuration;
|
||||
private readonly IAuthHelper _authHelper;
|
||||
|
||||
public List<BackupViewModel> DbBackupList { get; set; }
|
||||
public List<BackupViewModel> InsuranceBackupList { get; set; }
|
||||
|
||||
public IndexModel(IConfiguration configuration, IAuthHelper authHelper)
|
||||
{
|
||||
_configuration = configuration;
|
||||
_authHelper = authHelper;
|
||||
}
|
||||
|
||||
|
||||
public IActionResult OnGet()
|
||||
{
|
||||
|
||||
if (_authHelper.GetPermissions().Any(x => x == 2))
|
||||
{
|
||||
#region DbBackupLoad
|
||||
|
||||
string? dbZipPath = _configuration["BackupOptions:DbBackupZipPath"];
|
||||
string[] dbBackups = Directory.GetFiles(dbZipPath);
|
||||
DbBackupList = dbBackups.Select(x => new BackupViewModel()
|
||||
{
|
||||
FileName = Path.GetFileName(x),
|
||||
FullPath = x,
|
||||
CreationDate = Path.GetFileName(x).ExtractTimeFromDbbackup(),
|
||||
}).OrderByDescending(x => x.CreationDate).ToList();
|
||||
|
||||
#endregion
|
||||
|
||||
#region InsurancBackupLoad
|
||||
|
||||
string? insuranceZipPath = _configuration["BackupOptions:InsuranceListZipPath"];
|
||||
string[] insuranceBackups = Directory.GetFiles(insuranceZipPath);
|
||||
InsuranceBackupList = insuranceBackups.Select(x => new BackupViewModel()
|
||||
{
|
||||
FileName = Path.GetFileName(x),
|
||||
FullPath = x,
|
||||
CreationDate = Path.GetFileName(x).ExtractTimeFromInsurancebackup(),
|
||||
}).OrderByDescending(x => x.CreationDate).ToList();
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
return Page();
|
||||
}
|
||||
else
|
||||
{
|
||||
return Forbid();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public IActionResult OnGetDownloadFile(string path, string fileName)
|
||||
{
|
||||
byte[] fileContent = System.IO.File.ReadAllBytes(path);
|
||||
return File(fileContent, "application/zip", fileName);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -333,4 +333,4 @@
|
||||
|
||||
</script>
|
||||
|
||||
<script src="~/assetsadminnew/tasks/js/create.js"></script>
|
||||
<script src="~/assetsadminnew/tasks/js/create.js?ver=@adminVersion"></script>
|
||||
@@ -321,5 +321,5 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
<script src="~/assetsadminnew/tasks/js/detailmodal.js?ver=@adminVersion"></script>
|
||||
<script src="~/assetsadminnew/tasks/js/detailmodal.js?ver=@adminVersion"></script>
|
||||
}
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
@page
|
||||
@model ServiceHost.Areas.Camera.Pages.ErrorMessageModel
|
||||
@using Version = _0_Framework.Application.Version
|
||||
|
||||
|
||||
@{
|
||||
Layout = "Shared/_Layout";
|
||||
ViewData["Title"] = " - " + "خطای سیستمی";
|
||||
ViewData["Title"] = " - " + "خطای سیستمی";
|
||||
string cameraVersion = _0_Framework.Application.Version.CameraVersion;
|
||||
}
|
||||
|
||||
@section Styles
|
||||
{
|
||||
<link rel="stylesheet" href="~/AssetsClient/css/webcam.css?ver=@Version.CameraVersion">
|
||||
<link rel="stylesheet" href="~/AssetsClient/css/webcam.css?ver=@cameraVersion">
|
||||
<style>
|
||||
body {
|
||||
background-color: #222831
|
||||
|
||||
@@ -313,6 +313,7 @@
|
||||
|
||||
<script>
|
||||
const video = document.getElementById("video");
|
||||
|
||||
const waiting = document.getElementById("waiting");
|
||||
const recognizing = document.getElementById("recognizing");
|
||||
const reloadRec = document.getElementById("reloadRec");
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
<!-- -->
|
||||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="fa">
|
||||
<head>
|
||||
|
||||
@@ -45,8 +45,8 @@
|
||||
<!-- List Items -->
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-8 ps-0 d-none d-md-block">
|
||||
<div class="card" style="height: 779px; overflow-y: scroll">
|
||||
<div class="widthRightCurrentDay ps-0 d-none d-md-block">
|
||||
<div class="card heightRightCurrentDay">
|
||||
<div class="wrapper table-rollcall">
|
||||
<div class="rollcall-list Rtable Rtable--5cols Rtable--collapse px-1">
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
{
|
||||
@foreach (var item in Model.RollCallViewModels.PresentEmployees)
|
||||
{
|
||||
<div class="Rtable-row align-items-center position-relative openAction @(Model.RollCallViewModels.PresentEmployees.Count() == 1 ? "radius" : "") @(index == 1 ? "firstRadius" : "") @(index == Model.RollCallViewModels.PresentEmployees.Count() - 1 ? " lastRadius" : "" ) @(item.RollCallTimesList.Last().EndDate != null ? "existTimeRollCall" : "")">
|
||||
<div class="Rtable-row align-items-center position-relative openAction @(Model.RollCallViewModels.PresentEmployees.Count() == 1 ? "radius" : "") @(index == 1 ? "firstRadius" : "") @(index == Model.RollCallViewModels.PresentEmployees.Count() ? "lastRadius" : "" ) @(item.RollCallTimesList.Last().EndDate != null ? "existTimeRollCall" : "")">
|
||||
<div class="Rtable-cell width1">
|
||||
<div class="Rtable-cell--heading d-none">
|
||||
ردیف
|
||||
@@ -161,7 +161,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4 ps-0 d-none d-md-block">
|
||||
<div class="widthLeftCurrentDay ps-0 d-none d-md-block">
|
||||
<div class="row p-0 g-3">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
@@ -170,14 +170,14 @@
|
||||
|
||||
<div class="w-100 my-1">
|
||||
<div class="absenceHeadColorTop" style="border-radius: 10px 10px 0 0;">غیبت</div>
|
||||
<div class="Rtable-row Rtable-row--head align-items-center d-flex absenceHeadColor">
|
||||
<div class="Rtable-row Rtable-row--head align-items-center d-flex table-rollcall-absent absenceHeadColor">
|
||||
<div class="Rtable-cell column-heading width1">ردیف</div>
|
||||
<div class="Rtable-cell column-heading width2">نام پرسنل</div>
|
||||
<div class="Rtable-cell column-heading width3">شماره پرسنلی</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="w-100" style="height: 303px; overflow-y: scroll">
|
||||
<div class="w-100 heightLeftCurrentDay">
|
||||
<div></div>
|
||||
@if (@Model.RollCallViewModels.AbsentEmployees.Any(x => !x.HasLeave))
|
||||
{
|
||||
@@ -185,7 +185,7 @@
|
||||
{
|
||||
if (!item.HasLeave)
|
||||
{
|
||||
<div class="Rtable-row align-items-center position-relative absenceItem">
|
||||
<div class="Rtable-row align-items-center position-relative table-rollcall-absent absenceItem">
|
||||
<div class="Rtable-cell width1">
|
||||
<div class="Rtable-cell--heading d-none">
|
||||
ردیف
|
||||
@@ -231,7 +231,7 @@
|
||||
|
||||
<div class="w-100 my-1">
|
||||
<div class="leaveHeadColorTop" style="border-radius: 10px 10px 0 0;">مرخصی</div>
|
||||
<div class="Rtable-row Rtable-row--head align-items-center d-flex leaveHeadColor">
|
||||
<div class="Rtable-row Rtable-row--head align-items-center d-flex table-rollcall-leave leaveHeadColor">
|
||||
<div class="Rtable-cell column-heading width1">ردیف</div>
|
||||
<div class="Rtable-cell column-heading width2">نام پرسنل</div>
|
||||
<div class="Rtable-cell column-heading width3">شماره پرسنلی</div>
|
||||
@@ -239,7 +239,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="w-100" style="height: 303px; overflow-y: scroll">
|
||||
<div class="w-100 heightLeftCurrentDay">
|
||||
<div></div>
|
||||
@if (@Model.RollCallViewModels.AbsentEmployees.Any(x => x.HasLeave))
|
||||
{
|
||||
@@ -247,7 +247,7 @@
|
||||
{
|
||||
if (item.HasLeave)
|
||||
{
|
||||
<div class="Rtable-row align-items-center position-relative leaveItem">
|
||||
<div class="Rtable-row align-items-center position-relative table-rollcall-leave leaveItem">
|
||||
<div class="Rtable-cell width1">
|
||||
<div class="Rtable-cell--heading d-none">
|
||||
ردیف
|
||||
|
||||
@@ -12,49 +12,6 @@
|
||||
<link href="~/AssetsClient/css/table-responsive.css?ver=@clientVersion" rel="stylesheet" />
|
||||
<link href="~/assetsclient/css/operation-button.css?ver=@clientVersion" rel="stylesheet" />
|
||||
<link href="~/assetsclient/css/rollcall-list.css?ver=@clientVersion" rel="stylesheet" />
|
||||
|
||||
<style>
|
||||
|
||||
.errored {
|
||||
animation: shake 300ms;
|
||||
color: #eb3434 !important;
|
||||
background-color: #fef2f2 !important;
|
||||
border: 1px solid #eb3434 !important;
|
||||
border-radius: 7px;
|
||||
}
|
||||
|
||||
.sticky {
|
||||
position: sticky;
|
||||
top: 4px;
|
||||
z-index: 30;
|
||||
}
|
||||
|
||||
.goToTop {
|
||||
position: fixed;
|
||||
bottom: -10px;
|
||||
margin-right: 100px;
|
||||
z-index: 100;
|
||||
color: #fff;
|
||||
background-color: #25acacd6;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.goToTop:hover {
|
||||
color: #fff;
|
||||
background-color: #2ca4a4;
|
||||
}
|
||||
|
||||
@@media screen and (max-width: 767px) {
|
||||
.goToTop {
|
||||
position: fixed;
|
||||
bottom: 54px;
|
||||
margin-right: 39%;
|
||||
z-index: 100;
|
||||
color: #fff;
|
||||
background-color: #25acac70;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
}
|
||||
|
||||
<div class="content-container">
|
||||
|
||||
@@ -193,46 +193,61 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall
|
||||
|
||||
public IActionResult OnGetModalTakeImages(long employeeId)
|
||||
{
|
||||
var workshopHash = User.FindFirstValue("WorkshopSlug");
|
||||
var workshopId = _passwordHasher.SlugDecrypt(workshopHash);
|
||||
if (workshopId > 0)
|
||||
{
|
||||
var workshopHash = User.FindFirstValue("WorkshopSlug");
|
||||
var workshopId = _passwordHasher.SlugDecrypt(workshopHash);
|
||||
if (workshopId > 0)
|
||||
{
|
||||
|
||||
var employeeWorkshopInfo = _rollCallEmployeeApplication.GetByEmployeeIdAndWorkshopId(employeeId, workshopId);
|
||||
var employeeWorkshopInfo = _rollCallEmployeeApplication.GetByEmployeeIdAndWorkshopId(employeeId, workshopId);
|
||||
|
||||
bool hasPicture = false;
|
||||
if (employeeWorkshopInfo != null && !string.IsNullOrEmpty(employeeWorkshopInfo.HasUploadedImage))
|
||||
hasPicture = bool.Parse(employeeWorkshopInfo.HasUploadedImage);
|
||||
bool hasPicture = false;
|
||||
if (employeeWorkshopInfo != null && !string.IsNullOrEmpty(employeeWorkshopInfo.HasUploadedImage))
|
||||
hasPicture = bool.Parse(employeeWorkshopInfo.HasUploadedImage);
|
||||
|
||||
var employeeDetails = _employeeApplication.GetDetails(employeeId);
|
||||
var employeeDetails = _employeeApplication.GetDetails(employeeId);
|
||||
|
||||
string employeeName = string.Empty;
|
||||
if (employeeDetails != null)
|
||||
employeeName = employeeDetails.EmployeeFullName;
|
||||
string employeeName = string.Empty;
|
||||
if (employeeDetails != null)
|
||||
employeeName = employeeDetails.EmployeeFullName;
|
||||
|
||||
string pic1 = "";
|
||||
string pic2 = "";
|
||||
if (hasPicture)
|
||||
{
|
||||
byte[] fileContent1 = System.IO.File.ReadAllBytes($"{_webHostEnvironment.ContentRootPath}\\Faces\\{workshopId}\\{employeeId}\\{1}.jpg");
|
||||
pic1 = Convert.ToBase64String(fileContent1);
|
||||
byte[] fileContent2 = System.IO.File.ReadAllBytes($"{_webHostEnvironment.ContentRootPath}\\Faces\\{workshopId}\\{employeeId}\\{2}.jpg");
|
||||
pic2 = Convert.ToBase64String(fileContent2);
|
||||
}
|
||||
string pic1 = "";
|
||||
string pic2 = "";
|
||||
if (hasPicture)
|
||||
{
|
||||
string path1 = $"{_webHostEnvironment.ContentRootPath}\\Faces\\{workshopId}\\{employeeId}\\{1}.jpg";
|
||||
string path2 = $"{_webHostEnvironment.ContentRootPath}\\Faces\\{workshopId}\\{employeeId}\\{2}.jpg";
|
||||
|
||||
var res = new TakePictureModel()
|
||||
{
|
||||
HasPicture = hasPicture,
|
||||
EmployeeId = employeeId,
|
||||
WorkshopId = workshopId,
|
||||
Name = employeeName,
|
||||
Pic1 = pic1,
|
||||
Pic2 = pic2,
|
||||
};
|
||||
|
||||
if (System.IO.File.Exists(path1))
|
||||
{
|
||||
byte[] fileContent1 = System.IO.File.ReadAllBytes(path1);
|
||||
pic1 = Convert.ToBase64String(fileContent1);
|
||||
}
|
||||
|
||||
return Partial("ModalTakeImages", res);
|
||||
}
|
||||
if (System.IO.File.Exists(path2))
|
||||
{
|
||||
byte[] fileContent2 = System.IO.File.ReadAllBytes(path2);
|
||||
pic2 = Convert.ToBase64String(fileContent2);
|
||||
}
|
||||
|
||||
//byte[] fileContent1 = System.IO.File.ReadAllBytes($"{_webHostEnvironment.ContentRootPath}\\Faces\\{workshopId}\\{employeeId}\\{1}.jpg");
|
||||
//pic1 = Convert.ToBase64String(fileContent1);
|
||||
//byte[] fileContent2 = System.IO.File.ReadAllBytes($"{_webHostEnvironment.ContentRootPath}\\Faces\\{workshopId}\\{employeeId}\\{2}.jpg");
|
||||
//pic2 = Convert.ToBase64String(fileContent2);
|
||||
}
|
||||
|
||||
var res = new TakePictureModel()
|
||||
{
|
||||
HasPicture = hasPicture,
|
||||
EmployeeId = employeeId,
|
||||
WorkshopId = workshopId,
|
||||
Name = employeeName,
|
||||
Pic1 = pic1,
|
||||
Pic2 = pic2,
|
||||
};
|
||||
|
||||
|
||||
return Partial("ModalTakeImages", res);
|
||||
}
|
||||
else
|
||||
{
|
||||
var resultError = new ErrorViewModel()
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 287 KiB After Width: | Height: | Size: 230 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 292 KiB After Width: | Height: | Size: 224 KiB |
@@ -1,5 +1,10 @@
|
||||
@using Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
@using Version = _0_Framework.Application.Version
|
||||
|
||||
@{
|
||||
string styleVersion = _0_Framework.Application.Version.StyleVersion;
|
||||
|
||||
|
||||
}
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
@@ -13,10 +18,10 @@
|
||||
@RenderSection("head", false)
|
||||
|
||||
|
||||
<link href="~/AssetsClient/css/bootstrap.rtl.min.css?ver=@Version.StyleVersion" rel="stylesheet" />
|
||||
<link href="~/AssetsClient/css/style.css?ver=@Version.StyleVersion" rel="stylesheet" />
|
||||
<link href="~/AssetsClient/css/responsive.css?ver=@Version.StyleVersion" rel="stylesheet" />
|
||||
<link href="~/AssetsClient/css/validation-style.css?ver=@Version.StyleVersion" rel="stylesheet" />
|
||||
<link href="~/AssetsClient/css/bootstrap.rtl.min.css?ver=@styleVersion" rel="stylesheet" />
|
||||
<link href="~/AssetsClient/css/style.css?ver=@styleVersion" rel="stylesheet" />
|
||||
<link href="~/AssetsClient/css/responsive.css?ver=@styleVersion" rel="stylesheet" />
|
||||
<link href="~/AssetsClient/css/validation-style.css?ver=@styleVersion" rel="stylesheet" />
|
||||
|
||||
<script src="~/AssetsClient/js/jquery-3.7.1.min.js"></script>
|
||||
<script src="~/AssetsClient/js/jquery-ui.js"></script>
|
||||
@@ -45,7 +50,7 @@
|
||||
|
||||
|
||||
<script src="~/AssetsClient/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="~/AssetsClient/js/my-script.js?ver=@Version.StyleVersion"></script>
|
||||
<script src="~/AssetsClient/js/my-script.js?ver=@styleVersion"></script>
|
||||
|
||||
<script>
|
||||
//******************** رسپانسیو هنگام موبایل ********************
|
||||
|
||||
@@ -81,6 +81,7 @@
|
||||
<None Include="Areas\AdminNew\Pages\Company\ContractingParties\Index.cshtml" />
|
||||
<None Include="Areas\AdminNew\Pages\Company\Employees\Index.cshtml" />
|
||||
<None Include="Areas\AdminNew\Pages\Company\Employers\Index.cshtml" />
|
||||
<None Include="Areas\AdminNew\Pages\Company\FileBackup\Index.cshtml" />
|
||||
<None Include="Areas\AdminNew\Pages\Company\RollCall\Index.cshtml" />
|
||||
<None Include="Areas\AdminNew\Pages\Company\Task\Create.cshtml" />
|
||||
<None Include="Areas\AdminNew\Pages\Company\Task\CreateCRUDTaskSubjectModal.cshtml" />
|
||||
@@ -309,6 +310,7 @@
|
||||
<None Include="wwwroot\AssetsAdmin\js\darkmode.js" />
|
||||
<None Include="wwwroot\AssetsAdmin\js\jquery-3.7.1.min.js" />
|
||||
<None Include="wwwroot\AssetsAdmin\page\Checkouts\js\PrintDetailsRollCall.js" />
|
||||
<None Include="wwwroot\AssetsAdmin\page\Index\js\Index.js" />
|
||||
<None Include="wwwroot\AssetsAdmin\vendors\bootstrap\css\bootstrap-grid.css.map" />
|
||||
<None Include="wwwroot\AssetsAdmin\vendors\bootstrap\css\bootstrap-grid.min.css.map" />
|
||||
<None Include="wwwroot\AssetsAdmin\vendors\bootstrap\css\bootstrap-grid.rtl.css.map" />
|
||||
|
||||
379
ServiceHost/wwwroot/AssetsAdmin/page/Index/css/Index.css
Normal file
379
ServiceHost/wwwroot/AssetsAdmin/page/Index/css/Index.css
Normal file
@@ -0,0 +1,379 @@
|
||||
body {
|
||||
background: whitesmoke !important;
|
||||
}
|
||||
|
||||
.efects {
|
||||
background-color: #f5f5f5 !important;
|
||||
}
|
||||
|
||||
.dadmehr {
|
||||
font-weight: 700;
|
||||
text-align: center;
|
||||
font-size: 40px;
|
||||
text-transform: uppercase;
|
||||
background: linear-gradient(90deg, #e7e7e7, #3c763d, #e7e7e7);
|
||||
-webkit-background-clip: text;
|
||||
background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-repeat: no-repeat;
|
||||
background-size: 80%;
|
||||
animation: shine 5s linear infinite;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.time {
|
||||
/* background-color: #28a711; */
|
||||
background: linear-gradient(-90deg, #2eb7b7 0%, #0ba3a3 100%);
|
||||
height: 50px;
|
||||
border-radius: 15px;
|
||||
}
|
||||
|
||||
.madar {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.farzand1 {
|
||||
font-size: 20px;
|
||||
position: absolute;
|
||||
top: 15px;
|
||||
right: 20px;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.farzand2 {
|
||||
font-size: 20px;
|
||||
position: absolute;
|
||||
top: 11px;
|
||||
right: 50px;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.searchpanel {
|
||||
background-color: #747272;
|
||||
}
|
||||
|
||||
.dbBackupPanel {
|
||||
background-color: #efefef;
|
||||
min-height: 168px;
|
||||
border-radius: 15px;
|
||||
box-shadow: 0px 1px 15px 0 #4cb733;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.insBackupPanel {
|
||||
background-color: #efefef;
|
||||
min-height: 168px;
|
||||
border-radius: 15px;
|
||||
box-shadow: 0px 1px 15px 0 #f1c521;
|
||||
}
|
||||
|
||||
.dbBackupItems {
|
||||
color: #fff;
|
||||
background-color: #10aa12;
|
||||
font-size: 14px;
|
||||
border-radius: 15px;
|
||||
height: 25px;
|
||||
line-height: 1.8;
|
||||
padding-left: 5px;
|
||||
width: 99.4%;
|
||||
}
|
||||
|
||||
.InsurancebackupItems {
|
||||
color: #fff;
|
||||
background-color: #f1c521;
|
||||
font-size: 14px;
|
||||
border-radius: 15px;
|
||||
height: 25px;
|
||||
line-height: 1.8;
|
||||
padding-left: 5px;
|
||||
width: 99.4%;
|
||||
}
|
||||
|
||||
.download-icon {
|
||||
top: 1px;
|
||||
right: 4px;
|
||||
position: relative;
|
||||
border-radius: 25px;
|
||||
background-color: white;
|
||||
padding: 4px 4px;
|
||||
float: left;
|
||||
left: 1px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.backupPanelHeader {
|
||||
background-color: #858585;
|
||||
border-radius: 15px;
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar {
|
||||
width: 8px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
background: #dfdfdf;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: #767676;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
@media only screen and (max-width : 992px) {
|
||||
.InsurancebackupItems {
|
||||
font-size: 12px !important;
|
||||
line-height: 2.4;
|
||||
}
|
||||
|
||||
.dbBackupItems {
|
||||
font-size: 12px !important;
|
||||
line-height: 2.4;
|
||||
}
|
||||
}
|
||||
|
||||
.gridCard {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(6, minmax(0, 1fr));
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.card {
|
||||
border: none;
|
||||
border-radius: 10px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.card-section-btn {
|
||||
border-radius: 10px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.card-section-btn .btn {
|
||||
position: relative;
|
||||
padding: 12px 10px;
|
||||
box-sizing: border-box;
|
||||
border-radius: 10px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
transition: all .3s ease-in;
|
||||
border: 1px solid #179090;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: start;
|
||||
}
|
||||
|
||||
.card-section-btn .btn:hover {
|
||||
background: rgba(10, 119, 119, 0.1);
|
||||
}
|
||||
|
||||
.card-section-btn .btn:before {
|
||||
content: '';
|
||||
width: 90%;
|
||||
position: absolute;
|
||||
height: 6%;
|
||||
background: #2ab7b7;
|
||||
left: 5%;
|
||||
bottom: 0;
|
||||
border-radius: 50px 50px 0 0;
|
||||
}
|
||||
|
||||
.card-section-btn .btn .btn-title {
|
||||
color: #179090;
|
||||
font-size: 16px;
|
||||
font-weight: 700;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.card-section-btn .btn .showCount {
|
||||
position: absolute;
|
||||
left: 20px;
|
||||
}
|
||||
|
||||
.card-section-btn .btn .showCount span {
|
||||
background-color: #ccfbf1;
|
||||
width: 24px;
|
||||
display: flex;
|
||||
height: 24px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #5eead4;
|
||||
}
|
||||
|
||||
.spinner-loading {
|
||||
width: 100%;
|
||||
background-color: #2ebdbdb8;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 10px;
|
||||
transition: all .3s ease-in;
|
||||
z-index: 5;
|
||||
}
|
||||
|
||||
.spinner {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border-radius: 100%;
|
||||
margin: 100px auto;
|
||||
border: 5px solid rgb(255 255 255 / 42%);
|
||||
border-left-color: #fff;
|
||||
-webkit-animation: load 1.1s infinite linear;
|
||||
animation: load 1.1s infinite linear;
|
||||
}
|
||||
|
||||
.disable {
|
||||
filter: grayscale(100%);
|
||||
pointer-events: none;
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
@-webkit-keyframes load {
|
||||
0% {
|
||||
-ms-transform: rotate(7deg); /* IE 9 */
|
||||
-webkit-transform: rotate(7deg); /* Chrome, Safari, Opera */
|
||||
transform: rotate(7deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
-ms-transform: rotate(360deg); /* IE 9 */
|
||||
-webkit-transform: rotate(360deg); /* Chrome, Safari, Opera */
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes load {
|
||||
0% {
|
||||
-ms-transform: rotate(7deg); /* IE 9 */
|
||||
-webkit-transform: rotate(7deg); /* Chrome, Safari, Opera */
|
||||
transform: rotate(7deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
-ms-transform: rotate(360deg); /* IE 9 */
|
||||
-webkit-transform: rotate(360deg); /* Chrome, Safari, Opera */
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
.goToTop {
|
||||
position: fixed;
|
||||
bottom: 40px;
|
||||
}
|
||||
|
||||
.clear {
|
||||
background: #0ea5e9;
|
||||
color: #fff !important;
|
||||
padding: 4px 8px;
|
||||
border-radius: 7px;
|
||||
margin: 0 0 0 3px;
|
||||
transition: all .2s ease;
|
||||
}
|
||||
|
||||
.clear:hover {
|
||||
background: #0284c7
|
||||
}
|
||||
|
||||
.slick-list {
|
||||
padding-top: 4px !important;
|
||||
padding-bottom: 4px !important;
|
||||
}
|
||||
|
||||
.textsChart {
|
||||
gap: 3px;
|
||||
display: grid;
|
||||
}
|
||||
|
||||
.alltxt, .alldonetxt, .allnotdonetxt {
|
||||
margin: 0;
|
||||
padding: 2px 5px;
|
||||
font-size: 12px;
|
||||
text-align: left;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.alltxt {
|
||||
color: #1e293b;
|
||||
}
|
||||
|
||||
.alldonetxt {
|
||||
color: #65a30d;
|
||||
}
|
||||
|
||||
.allnotdonetxt {
|
||||
color: #dc2626;
|
||||
}
|
||||
|
||||
tr.sticky {
|
||||
position: sticky;
|
||||
top: -7px;
|
||||
z-index: 1;
|
||||
background: #f7f9fb;
|
||||
}
|
||||
|
||||
#ContractSignPercentDivMobile,
|
||||
#CheckoutDonePercentDivMobile,
|
||||
#CheckoutSignPercentDivMobile {
|
||||
display: none;
|
||||
visibility: hidden;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.showing {
|
||||
visibility: visible !important;
|
||||
opacity: 1 !important;
|
||||
transition: opacity 0.3s ease-in;
|
||||
}
|
||||
|
||||
@media only screen and (max-width : 992px) {
|
||||
.gridCard {
|
||||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width : 1550px) {
|
||||
.gridCard {
|
||||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width : 1135px) {
|
||||
.gridCard {
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width : 992px) {
|
||||
.gridCard {
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
}
|
||||
.card-section-btn .btn .btn-title {
|
||||
font-size: 13px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width : 768px) {
|
||||
.gridCard {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.card-section-btn .btn {
|
||||
padding: 10px 0px;
|
||||
}
|
||||
|
||||
.card-section-btn .btn .btn-title {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.card-section-btn .btn svg {
|
||||
width: 40px;
|
||||
}
|
||||
}
|
||||
111
ServiceHost/wwwroot/AssetsAdmin/page/Index/js/Index.js
Normal file
111
ServiceHost/wwwroot/AssetsAdmin/page/Index/js/Index.js
Normal file
@@ -0,0 +1,111 @@
|
||||
$(document).ready(function () {
|
||||
$('.loadingButton').on('click', function () {
|
||||
var button = $(this);
|
||||
var loadingDiv = button.find('.loading');
|
||||
loadingDiv.show();
|
||||
});
|
||||
|
||||
//if (boolPermissionForReports) {
|
||||
// ReportAjaxData();
|
||||
//}
|
||||
});
|
||||
|
||||
//function ReportAjaxData() {
|
||||
// $.ajax({
|
||||
// async: false,
|
||||
// contentType: 'charset=utf-8',
|
||||
// dataType: 'json',
|
||||
// type: 'GET',
|
||||
// url: ajaxDataReport,
|
||||
// headers: { "RequestVerificationToken": antiForgeryToken },
|
||||
// success: function (response) {
|
||||
// if (response.success) {
|
||||
// $('#allCheckout').text(response.allCheckout);
|
||||
// $('#allContract').text(response.allContract);
|
||||
|
||||
// // AllPercent
|
||||
// var colorAllPercent = colorPercent(response.allPercent);
|
||||
// $('#contractAndCheckoutSection .bullet').css('background-color', colorAllPercent);
|
||||
// var percentPath = document.querySelector(`#allPercentSection .percent`);
|
||||
// percentPath.setAttribute('stroke', colorAllPercent);
|
||||
// percentPath.setAttribute('stroke-dasharray', `${response.allPercent}, 100`);
|
||||
// $('#allPercentText').text(response.allPercent+'%');
|
||||
|
||||
// // checkoutPercent
|
||||
// var colorCheckoutPercent = colorPercent(response.checkoutPercent);
|
||||
// $('#checkoutPercentSection .bullet').css('background-color', colorCheckoutPercent);
|
||||
// var percentPathCheckout = document.querySelector(`#checkoutPercentSection .percent`);
|
||||
// percentPathCheckout.setAttribute('stroke', colorCheckoutPercent);
|
||||
// percentPathCheckout.setAttribute('stroke-dasharray', `${response.checkoutPercent}, 100`);
|
||||
// $('#checkoutPercentText').text(response.checkoutPercent+'%');
|
||||
|
||||
// // checkoutSignaturePercent
|
||||
// var colorCheckoutSignaturePercent = colorPercent(response.checkoutSignaturePercent);
|
||||
// $('#checkoutSignaturePercentSection .bullet').css('background-color', colorCheckoutSignaturePercent);
|
||||
// var percentPathCheckoutSignature = document.querySelector(`#checkoutSignaturePercentSection .percent`);
|
||||
// percentPathCheckoutSignature.setAttribute('stroke', colorCheckoutSignaturePercent);
|
||||
// percentPathCheckoutSignature.setAttribute('stroke-dasharray', `${response.checkoutSignaturePercent}, 100`);
|
||||
// $('#checkoutSignaturePercentText').text(response.checkoutSignaturePercent+'%');
|
||||
|
||||
// // contractPercent
|
||||
// var colorContractPercent = colorPercent(response.contractPercent);
|
||||
// $('#contractPercentSection .bullet').css('background-color', colorContractPercent);
|
||||
// var percentPathContract = document.querySelector(`#contractPercentSection .percent`);
|
||||
// percentPathContract.setAttribute('stroke', colorContractPercent);
|
||||
// percentPathContract.setAttribute('stroke-dasharray', `${response.contractPercent}, 100`);
|
||||
// $('#contractPercentText').text(response.contractPercent+'%');
|
||||
|
||||
// // contractSignaturePercent
|
||||
// var colorContractSignaturePercent = colorPercent(response.contractSignaturePercent);
|
||||
// $('#contractSignaturePercentSection .bullet').css('background-color', colorContractSignaturePercent);
|
||||
// var percentPathContractSignature = document.querySelector(`#contractSignaturePercentSection .percent`);
|
||||
// percentPathContractSignature.setAttribute('stroke', colorContractSignaturePercent);
|
||||
// percentPathContractSignature.setAttribute('stroke-dasharray', `${response.contractSignaturePercent}, 100`);
|
||||
// $('#contractSignaturePercentText').text(response.contractSignaturePercent+'%');
|
||||
|
||||
// $('.reportCurrentMonth').text('('+response.reportCurrentMonth+')');
|
||||
// $('.reportNextMonth').text('('+response.reportNextMonth+')');
|
||||
|
||||
// $('#contractNotDone').text(response.contractNotDone);
|
||||
// $('#contractSignDone').text(response.contractSignDone);
|
||||
// $('#contractSignNotDone').text(response.contractSignNotDone);
|
||||
// $('.contrcatDone').text(response.contrcatDone);
|
||||
// $('.checkoutDone').text(response.checkoutDone);
|
||||
// $('#checkoutNotDone').text(response.checkoutNotDone);
|
||||
// $('#checkoutSignNotDone').text(response.checkoutSignNotDone);
|
||||
|
||||
// $('.loading').hide();
|
||||
// }
|
||||
// },
|
||||
// error: function (xhr, status, error) {
|
||||
// console.error(xhr.responseText);
|
||||
// }
|
||||
// });
|
||||
//}
|
||||
|
||||
//function colorPercent(value) {
|
||||
// let color = "";
|
||||
|
||||
// const redDark = "#B91C1C";
|
||||
// const redLight = "#EF4444";
|
||||
// const orangeDark = "#F59E0B";
|
||||
// const orangeLight = "#FBBF24";
|
||||
// const limeDark = "#81CB0F";
|
||||
// const limeLight = "#A3E635";
|
||||
|
||||
// if (value <= 16) {
|
||||
// color = redDark;
|
||||
// } else if (value <= 33) {
|
||||
// color = redLight;
|
||||
// } else if (value <= 49) {
|
||||
// color = orangeDark;
|
||||
// } else if (value <= 66) {
|
||||
// color = orangeLight;
|
||||
// } else if (value <= 83) {
|
||||
// color = limeLight;
|
||||
// } else if (value <= 100) {
|
||||
// color = limeDark;
|
||||
// }
|
||||
|
||||
// return color;
|
||||
//}
|
||||
@@ -68,6 +68,8 @@
|
||||
height: 22px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
-ms-overflow-style: none;
|
||||
scrollbar-width: none;
|
||||
}
|
||||
|
||||
.taskTitleSub::-webkit-scrollbar {
|
||||
@@ -82,8 +84,9 @@
|
||||
background-color: #ffffff;
|
||||
padding: 3px 6px;
|
||||
border-radius: 5px;
|
||||
height: 75px;
|
||||
height: 60px;
|
||||
overflow: auto;
|
||||
margin: 0 0 4px 0;
|
||||
}
|
||||
|
||||
.taskDesc div {
|
||||
@@ -479,7 +482,7 @@
|
||||
|
||||
#ajaxChatSection .chat-card-receiver {
|
||||
position: relative;
|
||||
width: 70%;
|
||||
width: 80%;
|
||||
padding: 4px 6px;
|
||||
border-radius: 5px;
|
||||
margin: 5px;
|
||||
@@ -556,13 +559,24 @@
|
||||
position: relative;
|
||||
background-color: #EAFFFF;
|
||||
border: 1px solid #2FD0D0;
|
||||
width: 70%;
|
||||
width: 80%;
|
||||
padding: 4px 6px;
|
||||
border-radius: 5px;
|
||||
margin: 5px auto 5px 5px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.requestDateShow {
|
||||
position: absolute;
|
||||
font-size: 12px;
|
||||
top: -9px;
|
||||
left: 1px;
|
||||
background-color: #fbbf24;
|
||||
color: #fff;
|
||||
border-radius: 25px;
|
||||
padding: 0 7px;
|
||||
}
|
||||
|
||||
#ajaxChatSection .chat-card-sender h6 {
|
||||
font-size: 12px;
|
||||
font-weight: 800;
|
||||
@@ -585,12 +599,17 @@
|
||||
text-align: center;
|
||||
padding: 3px 9px;
|
||||
border-radius: 27px;
|
||||
width: 105px
|
||||
width: 110px
|
||||
}
|
||||
|
||||
#ajaxChatSection .chat-card-sender.red .chat-tag {
|
||||
background-color: #F87171;
|
||||
color: #000000;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
#ajaxChatSection .chat-card-sender.reject .chat-tag {
|
||||
background-color: #F87171;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
#ajaxChatSection .chat-card-sender.green .chat-tag {
|
||||
@@ -763,13 +782,27 @@
|
||||
|
||||
.modal-body {
|
||||
max-height: calc(100vh - 100px); /* Subtracting space for header and footer */
|
||||
/*overflow-y: auto;*/
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.chat-section .chat-card-main {
|
||||
position: sticky;
|
||||
top: -8px;
|
||||
z-index: 41;
|
||||
}
|
||||
|
||||
.modal-header .btn-close {
|
||||
right: 4px;
|
||||
}
|
||||
|
||||
.actionBtnsection {
|
||||
gap: 4px;
|
||||
}
|
||||
|
||||
.actionBtnsection .actionBtn {
|
||||
font-size: 8px;
|
||||
}
|
||||
|
||||
.assigns_section {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@@ -138,11 +138,20 @@ $(document).ready(function () {
|
||||
$(this).val(convertPersianNumbersToEnglish(value));
|
||||
}).mask("0000/00/00");
|
||||
|
||||
setTimeout(function () {
|
||||
$('.modal-body').animate({
|
||||
scrollTop: $('.modal-body').get(0).scrollHeight
|
||||
}, 1200);
|
||||
}, 900);
|
||||
|
||||
if (window.matchMedia('(max-width: 767px)').matches) {
|
||||
setTimeout(function () {
|
||||
$('.modal-body').animate({
|
||||
scrollTop: $('.modal-body').get(0).scrollHeight
|
||||
}, 1200);
|
||||
}, 900);
|
||||
} else {
|
||||
setTimeout(function () {
|
||||
$('.mainChat').animate({
|
||||
scrollTop: $('.mainChat').get(0).scrollHeight
|
||||
}, 1200);
|
||||
}, 900);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
@@ -138,11 +138,21 @@ $(document).ready(function () {
|
||||
$(this).val(convertPersianNumbersToEnglish(value));
|
||||
}).mask("0000/00/00");
|
||||
|
||||
setTimeout(function () {
|
||||
$('.modal-body').animate({
|
||||
scrollTop: $('.modal-body').get(0).scrollHeight
|
||||
}, 1200);
|
||||
}, 900);
|
||||
if (window.matchMedia('(max-width: 767px)').matches) {
|
||||
console.log(11111111);
|
||||
setTimeout(function () {
|
||||
$('.modal-body').animate({
|
||||
scrollTop: $('.modal-body').get(0).scrollHeight
|
||||
}, 1200);
|
||||
}, 900);
|
||||
} else {
|
||||
console.log(222222222);
|
||||
setTimeout(function () {
|
||||
$('.mainChat').animate({
|
||||
scrollTop: $('.mainChat').get(0).scrollHeight
|
||||
}, 1200);
|
||||
}, 900);
|
||||
}
|
||||
});
|
||||
|
||||
function updateDateInput(daysToAdd) {
|
||||
|
||||
@@ -229,7 +229,16 @@ function loadChatMessageRequest(id) {
|
||||
}
|
||||
|
||||
html += `<div class="admincardAction" style="background: transparent; border: none;margin: 5px 12px 0 -6px;border-top: 1px solid ${color};border-radius: 0; padding: 7px 7px 3px;" id="Assign_${taskDetailsData.id}">
|
||||
<div class="row align-items-center">
|
||||
|
||||
${taskDetailsData.timeRequest ?
|
||||
`<div class="requestDateShow">
|
||||
تاریخ درخواست : ${taskDetailsData.requestDateFa}
|
||||
</div>`
|
||||
:
|
||||
``
|
||||
}
|
||||
|
||||
<div class="row align-items-center mt-1">
|
||||
<div class="col-8 pe-1">
|
||||
<textarea class="form-control" id="Description_${taskDetailsData.assignedId}" placeholder="توضیحات" style="height: ${taskDetailsData.timeRequest ? `53px` : `40px`}; resize: none"></textarea>
|
||||
</div>`;
|
||||
|
||||
@@ -5,12 +5,33 @@
|
||||
$('#keypadSection').hide();
|
||||
$('#mobileDisplay').html('');
|
||||
$('#keypadSection').html('');
|
||||
|
||||
}
|
||||
|
||||
if ($(window).width() <= 992) {
|
||||
$('#desktopDisplay').html('');
|
||||
$('#desktopDisplay').hide();
|
||||
$('#mobileDisplay').show();
|
||||
let display = document.getElementById("display");
|
||||
const run = async () => {
|
||||
await Promise.all([
|
||||
//api
|
||||
// faceapi.nets.ssdMobilenetv1.loadFromUri(modelsUrl + 'ssd_mobilenetv1_model-weights_manifest.json'),
|
||||
// faceapi.nets.faceRecognitionNet.loadFromUri(modelsUrl + 'face_recognition_model-weights_manifest.json'),
|
||||
// faceapi.nets.faceLandmark68Net.loadFromUri(modelsUrl + 'face_landmark_68_model-weights_manifest.json')
|
||||
|
||||
//local source
|
||||
faceapi.nets.ssdMobilenetv1.loadFromUri("\\weights\\"),
|
||||
faceapi.nets.faceRecognitionNet.loadFromUri("\\weights\\"),
|
||||
faceapi.nets.faceLandmark68Net.loadFromUri("\\weights\\")
|
||||
|
||||
// faceapi.nets.ssdMobilenetv1.loadFromDisk(modelPath),
|
||||
// faceapi.nets.faceRecognitionNet.loadFromDisk(modelPath),
|
||||
// faceapi.nets.faceLandmark68Net.loadFromDisk(modelPath)
|
||||
]);
|
||||
}
|
||||
run();
|
||||
startWebcam();
|
||||
//sendPersonelCodeToGetEmployeeId(23);
|
||||
|
||||
|
||||
@@ -51,37 +72,20 @@
|
||||
//window.onload = async () => {
|
||||
// await run();
|
||||
//};
|
||||
let display = document.getElementById("display");
|
||||
const run = async () => {
|
||||
await Promise.all([
|
||||
//api
|
||||
// faceapi.nets.ssdMobilenetv1.loadFromUri(modelsUrl + 'ssd_mobilenetv1_model-weights_manifest.json'),
|
||||
// faceapi.nets.faceRecognitionNet.loadFromUri(modelsUrl + 'face_recognition_model-weights_manifest.json'),
|
||||
// faceapi.nets.faceLandmark68Net.loadFromUri(modelsUrl + 'face_landmark_68_model-weights_manifest.json')
|
||||
|
||||
//local source
|
||||
faceapi.nets.ssdMobilenetv1.loadFromUri("\\weights\\"),
|
||||
faceapi.nets.faceRecognitionNet.loadFromUri("\\weights\\"),
|
||||
faceapi.nets.faceLandmark68Net.loadFromUri("\\weights\\")
|
||||
|
||||
// faceapi.nets.ssdMobilenetv1.loadFromDisk(modelPath),
|
||||
// faceapi.nets.faceRecognitionNet.loadFromDisk(modelPath),
|
||||
// faceapi.nets.faceLandmark68Net.loadFromDisk(modelPath)
|
||||
]);
|
||||
}
|
||||
run();
|
||||
|
||||
|
||||
/*var personIds = [];*/
|
||||
var empId = 0;
|
||||
var empId = -1;
|
||||
/*var urls = [];*/
|
||||
|
||||
var stop = false;
|
||||
async function startWebcam() {
|
||||
|
||||
|
||||
|
||||
navigator.mediaDevices
|
||||
|
||||
await navigator.mediaDevices
|
||||
.getUserMedia({
|
||||
video: true,
|
||||
audio: false,
|
||||
@@ -93,7 +97,7 @@ async function startWebcam() {
|
||||
.catch((error) => {
|
||||
console.error(error);
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
function stopWebcam() {
|
||||
@@ -109,21 +113,34 @@ function stopWebcam() {
|
||||
//$("#display canvas").remove();
|
||||
//stop = false;
|
||||
}
|
||||
async function firstLoad() {
|
||||
|
||||
const path1 = await `${urlPath}/Camera?handler=ShowPicture&index=${1}&workshopId=${11}&label=${1}`;
|
||||
const path2 = await `${urlPath}/Camera?handler=ShowPicture&index=${2}&workshopId=${11}&label=${1}`;
|
||||
|
||||
const img1 = await faceapi.fetchImage(path1);
|
||||
await faceapi.detectSingleFace(img1).withFaceLandmarks().withFaceDescriptor();
|
||||
|
||||
const img2 = await faceapi.fetchImage(path2);
|
||||
await faceapi.detectSingleFace(img2).withFaceLandmarks().withFaceDescriptor();
|
||||
|
||||
|
||||
}
|
||||
// var getImages = document.getElementById("imageData");
|
||||
async function getLabeledFaceDescriptions() {
|
||||
let descriptions = [];
|
||||
const path1 = `${urlPath}/Camera?handler=ShowPicture&index=${1}&workshopId=${workshopId}&label=${empId}`;
|
||||
const path2 = `${urlPath}/Camera?handler=ShowPicture&index=${2}&workshopId=${workshopId}&label=${empId}`;
|
||||
const path1 = await `${urlPath}/Camera?handler=ShowPicture&index=${1}&workshopId=${workshopId}&label=${empId}`;
|
||||
const path2 = await `${urlPath}/Camera?handler=ShowPicture&index=${2}&workshopId=${workshopId}&label=${empId}`;
|
||||
|
||||
const img1 = await faceapi.fetchImage(path1);
|
||||
const detections1 = await faceapi.detectSingleFace(img1).withFaceLandmarks().withFaceDescriptor();
|
||||
const img1 = await faceapi.fetchImage(path1);
|
||||
const detections1 = await faceapi.detectSingleFace(img1).withFaceLandmarks().withFaceDescriptor();
|
||||
|
||||
const img2 = await faceapi.fetchImage(path2);
|
||||
const detections2 = await faceapi.detectSingleFace(img2).withFaceLandmarks().withFaceDescriptor();
|
||||
descriptions.push(detections1.descriptor);
|
||||
descriptions.push(detections2.descriptor);
|
||||
return new faceapi.LabeledFaceDescriptors(empId, descriptions);
|
||||
const img2 = await faceapi.fetchImage(path2);
|
||||
const detections2 = await faceapi.detectSingleFace(img2).withFaceLandmarks().withFaceDescriptor();
|
||||
await descriptions.push(detections1.descriptor);
|
||||
await descriptions.push(detections2.descriptor);
|
||||
return new faceapi.LabeledFaceDescriptors(empId, descriptions);
|
||||
|
||||
}
|
||||
//function getLabeledFaceDescriptions() {
|
||||
// return Promise.all(
|
||||
@@ -190,17 +207,23 @@ reloadRec.addEventListener("click", function () {
|
||||
|
||||
|
||||
video.addEventListener("play", async () => {
|
||||
let startDate = new Date().getTime();
|
||||
if (empId == -1) {
|
||||
const labeledFaceDescriptors = await firstLoad();
|
||||
} else {
|
||||
const labeledFaceDescriptors = await getLabeledFaceDescriptions();
|
||||
const faceMatcher = await new faceapi.FaceMatcher(labeledFaceDescriptors);
|
||||
|
||||
const labeledFaceDescriptors = await getLabeledFaceDescriptions();
|
||||
const faceMatcher = new faceapi.FaceMatcher(labeledFaceDescriptors);
|
||||
const canvas = await faceapi.createCanvasFromMedia(video);
|
||||
await display.append(canvas);
|
||||
|
||||
const canvas = faceapi.createCanvasFromMedia(video);
|
||||
display.append(canvas);
|
||||
const displaySize = await { width: video.width, height: video.height };
|
||||
|
||||
const displaySize = { width: video.width, height: video.height };
|
||||
faceapi.matchDimensions(canvas, displaySize);
|
||||
var recogSuccess = false;
|
||||
|
||||
await faceapi.matchDimensions(canvas, displaySize);
|
||||
var recogSuccess = await false;
|
||||
let endDate = new Date().getTime();
|
||||
let elapsed = (endDate - startDate) / 1000;
|
||||
console.log(`time forloop elapsed is ${elapsed}`);
|
||||
|
||||
for (let c = 0; c < 10; c++) {
|
||||
|
||||
@@ -214,39 +237,37 @@ video.addEventListener("play", async () => {
|
||||
.detectSingleFace(video)
|
||||
.withFaceLandmarks()
|
||||
.withFaceDescriptor();
|
||||
|
||||
const resizedDetections = await faceapi.resizeResults(detections, displaySize);
|
||||
|
||||
canvas.getContext("2d").clearRect(0, 0, canvas.width, canvas.height);
|
||||
if (typeof detections !== 'undefined') {
|
||||
const resizedDetections = await faceapi.resizeResults(detections, displaySize);
|
||||
|
||||
const results = await faceMatcher.findBestMatch(resizedDetections.descriptor);
|
||||
await canvas.getContext("2d").clearRect(0, 0, canvas.width, canvas.height);
|
||||
|
||||
console.log("end recog");
|
||||
const box = resizedDetections.detection.box;
|
||||
const drawBox = new faceapi.draw.DrawBox(box,
|
||||
{
|
||||
label: "آنالیز چهره",
|
||||
});
|
||||
const results = await faceMatcher.findBestMatch(resizedDetections.descriptor);
|
||||
|
||||
drawBox.draw(canvas);
|
||||
console.log("end recog");
|
||||
const box = resizedDetections.detection.box;
|
||||
const drawBox = new faceapi.draw.DrawBox(box,
|
||||
{
|
||||
label: "آنالیز چهره",
|
||||
});
|
||||
|
||||
let userId = results.label;
|
||||
let userDistance = results.distance;
|
||||
await drawBox.draw(canvas);
|
||||
|
||||
if (userId == empId && userDistance <= 0.45) {
|
||||
endOfRecognition = true;
|
||||
stop = true;
|
||||
recognizing.style.display = "none";
|
||||
recogSuccess = true;
|
||||
getPersonel(results.label);
|
||||
let userId = results.label;
|
||||
let userDistance = results.distance;
|
||||
|
||||
if (userId == empId && userDistance <= 0.45) {
|
||||
endOfRecognition = true;
|
||||
stop = true;
|
||||
notFound.style.display = "none";
|
||||
recognizing.style.display = "none";
|
||||
recogSuccess = true;
|
||||
await getPersonel(results.label);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -259,10 +280,16 @@ video.addEventListener("play", async () => {
|
||||
endOfRecognition = true;
|
||||
stop = true;
|
||||
}
|
||||
|
||||
|
||||
reloadRec.style.display = "block";
|
||||
$('#roloadAgain').removeClass("d-none");
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
reloadRec.style.display = "block";
|
||||
$('#roloadAgain').removeClass("d-none");
|
||||
|
||||
//interId = setInterval(async () => {
|
||||
//interId = setInterval(async () => {
|
||||
// if (!stop) {
|
||||
|
||||
@@ -1,3 +1,13 @@
|
||||
.widthRightCurrentDay {
|
||||
flex: 0 0 auto;
|
||||
width: 75%;
|
||||
}
|
||||
|
||||
.widthLeftCurrentDay {
|
||||
flex: 0 0 auto;
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.Rtable .Rtable-row .Rtable-cell {
|
||||
padding: 6px;
|
||||
}
|
||||
@@ -33,7 +43,7 @@
|
||||
|
||||
}
|
||||
.Rtable .Rtable-row .Rtable-cell .Rtable-cell--content {
|
||||
font-size: 10px;
|
||||
font-size: 12px;
|
||||
font-weight:700;
|
||||
color: #000000;
|
||||
white-space: nowrap;
|
||||
@@ -102,19 +112,48 @@
|
||||
/*padding: 0 35px 0 0;*/
|
||||
}
|
||||
|
||||
.table-rollcall-absent .width1 {
|
||||
width: 15% !important;
|
||||
}
|
||||
|
||||
.table-rollcall-absent .width2 {
|
||||
width: 56% !important;
|
||||
}
|
||||
|
||||
.table-rollcall-absent .width3 {
|
||||
width: 24% !important;
|
||||
}
|
||||
|
||||
.table-rollcall-leave .width1 {
|
||||
width: 10% !important;
|
||||
}
|
||||
|
||||
.table-rollcall-leave .width2 {
|
||||
width: 50% !important;
|
||||
}
|
||||
|
||||
.table-rollcall-leave .width3 {
|
||||
width: 20% !important;
|
||||
}
|
||||
|
||||
.table-rollcall-leave .width4 {
|
||||
width: 20% !important;
|
||||
}
|
||||
|
||||
.Rtable .Rtable-row .Rtable-cell.width3 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.Rtable .Rtable-row .Rtable-cell.width1 .Rtable-cell--content,
|
||||
.Rtable .Rtable-row .Rtable-cell.width2 .Rtable-cell--content {
|
||||
font-size: 10px;
|
||||
font-size: 12px;
|
||||
color: #000000;
|
||||
white-space: nowrap;
|
||||
height: 30px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: right;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
|
||||
@@ -190,7 +229,7 @@
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0%;
|
||||
width: 95%;
|
||||
width: 98%;
|
||||
height: 100%;
|
||||
border-radius: 0 0 0 0;
|
||||
/*background-color: #aeeaeab8;*/
|
||||
@@ -202,7 +241,7 @@
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0%;
|
||||
width: 95%;
|
||||
width: 98%;
|
||||
height: 100%;
|
||||
border-radius: 0 0 0 0;
|
||||
/*background-color: #aeeaeab8;*/
|
||||
@@ -224,8 +263,8 @@
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 20px;
|
||||
width: 83%;
|
||||
left: 33px;
|
||||
width: 58%;
|
||||
height: 100%;
|
||||
/*background-color: #aeeaeab8;*/
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
@@ -417,6 +456,82 @@
|
||||
border:2px solid #48B8B8;
|
||||
}
|
||||
|
||||
|
||||
.heightRightCurrentDay {
|
||||
height: 779px;
|
||||
overflow-y: scroll
|
||||
}
|
||||
|
||||
.heightLeftCurrentDay {
|
||||
height: 303px;
|
||||
overflow-y: scroll
|
||||
}
|
||||
|
||||
|
||||
@media (max-width: 1366px) {
|
||||
.widthRightCurrentDay {
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
.widthLeftCurrentDay {
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
.heightRightCurrentDay {
|
||||
height: 500px;
|
||||
overflow-y: scroll
|
||||
}
|
||||
|
||||
.heightLeftCurrentDay {
|
||||
height: 160px;
|
||||
overflow-y: scroll
|
||||
}
|
||||
|
||||
.table-rollcall .width8::before {
|
||||
left: 20px;
|
||||
}
|
||||
|
||||
.table-rollcall .width2 {
|
||||
width: 14% !important;
|
||||
}
|
||||
|
||||
.table-rollcall .width4 {
|
||||
width: 8% !important;
|
||||
}
|
||||
|
||||
.table-rollcall .width7 {
|
||||
width: 8% !important;
|
||||
}
|
||||
|
||||
.table-rollcall * {
|
||||
font-size: 10px !important;
|
||||
}
|
||||
|
||||
.table-rollcall-absent * {
|
||||
font-size: 10px !important;
|
||||
}
|
||||
|
||||
.table-rollcall-leave * {
|
||||
font-size: 10px !important;
|
||||
}
|
||||
|
||||
.table-rollcall-leave .width1 {
|
||||
width: 15% !important;
|
||||
}
|
||||
|
||||
.table-rollcall-leave .width2 {
|
||||
width: 35% !important;
|
||||
}
|
||||
|
||||
.table-rollcall-leave .width3 {
|
||||
width: 25% !important;
|
||||
}
|
||||
|
||||
.table-rollcall-leave .width4 {
|
||||
width: 25% !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.Rtable--collapse .Rtable-row {
|
||||
outline: 1.8px solid #D6D6D6;
|
||||
|
||||
@@ -49,12 +49,12 @@
|
||||
}
|
||||
|
||||
.table-rollcall .width4 {
|
||||
width: 30% !important;
|
||||
width: 23% !important;
|
||||
}
|
||||
|
||||
|
||||
.table-rollcall .width5 {
|
||||
width: 35% !important;
|
||||
width: 25% !important;
|
||||
}
|
||||
|
||||
.table-rollcall .Rtable-row.no-avatar {
|
||||
@@ -65,6 +65,10 @@
|
||||
background-color: #cbd5e1;
|
||||
}
|
||||
|
||||
.table-rollcall .Rtable-row.deactive .df {
|
||||
color: #b0b3b7;
|
||||
}
|
||||
|
||||
.table-rollcall .Rtable .Rtable-row .Rtable-cell .Rtable-cell--content > span {
|
||||
color: #0B5959;
|
||||
}
|
||||
@@ -140,8 +144,115 @@
|
||||
.table-rollcall .Rtable-row.no-avatar .table-rollcall-mobile .content-mobile{
|
||||
color: #C30707 !important;
|
||||
}
|
||||
.errored {
|
||||
animation: shake 300ms;
|
||||
color: #eb3434 !important;
|
||||
background-color: #fef2f2 !important;
|
||||
border: 1px solid #eb3434 !important;
|
||||
border-radius: 7px;
|
||||
}
|
||||
|
||||
.sticky {
|
||||
position: sticky;
|
||||
top: 4px;
|
||||
z-index: 30;
|
||||
}
|
||||
|
||||
.goToTop {
|
||||
position: fixed;
|
||||
bottom: -10px;
|
||||
margin-right: 100px;
|
||||
z-index: 100;
|
||||
color: #fff;
|
||||
background-color: #25acacd6;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.goToTop:hover {
|
||||
color: #fff;
|
||||
background-color: #2ca4a4;
|
||||
}
|
||||
|
||||
.switch {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 40px;
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
/* Hide default HTML checkbox */
|
||||
.switch input {
|
||||
opacity: 0;
|
||||
width: 0;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
/* The slider */
|
||||
.sliderEUP {
|
||||
position: absolute;
|
||||
cursor: pointer;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background-color: #ccc;
|
||||
transition: 0.4s;
|
||||
border-radius: 24px;
|
||||
}
|
||||
|
||||
/* Rounded slider */
|
||||
.sliderEUP:before {
|
||||
position: absolute;
|
||||
content: "";
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
left: 2px;
|
||||
bottom: 2px;
|
||||
background-color: white;
|
||||
transition: 0.4s;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
/* Checked state */
|
||||
input:checked + .sliderEUP {
|
||||
background-color: #2FBFBF;
|
||||
}
|
||||
|
||||
/* Move the slider to the right when checked */
|
||||
input:checked + .sliderEUP:before {
|
||||
transform: translateX(16px);
|
||||
}
|
||||
|
||||
/* Disable state */
|
||||
.disable + .sliderEUP {
|
||||
background-color: #ccc;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.disable + .sliderEUP:before {
|
||||
background-color: #999;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 992px) {
|
||||
.table-rollcall .width3 {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.table-rollcall .width5 {
|
||||
width: 40% !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
.goToTop {
|
||||
position: fixed;
|
||||
bottom: 54px;
|
||||
margin-right: 39%;
|
||||
z-index: 100;
|
||||
color: #fff;
|
||||
background-color: #25acac70;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.Rtable--collapse .Rtable-row {
|
||||
outline: 1.8px solid #D6D6D6;
|
||||
padding: 8px;
|
||||
|
||||
BIN
ServiceHost/wwwroot/AssetsClient/images/icons/backup-system.png
Normal file
BIN
ServiceHost/wwwroot/AssetsClient/images/icons/backup-system.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 21 KiB |
@@ -20,7 +20,6 @@
|
||||
loadRollCallCount();
|
||||
});
|
||||
|
||||
|
||||
function loadRollCallCount() {
|
||||
$.ajax({
|
||||
async: false,
|
||||
|
||||
@@ -13,9 +13,15 @@ $(document).ready(function () {
|
||||
loadDataAjax();
|
||||
});
|
||||
|
||||
$(document).on('click', '.desktop-btn, .mobile-btn', function () {
|
||||
var id = $(this).attr('id').split('_')[1];
|
||||
var isActive = $(this).hasClass('btn-deactive') ? 'deactive' : 'active';
|
||||
//$(document).on('click', '.desktop-btn, .mobile-btn', function () {
|
||||
// var id = $(this).attr('id').split('_')[1];
|
||||
// var isActive = $(this).hasClass('btn-deactive') ? 'deactive' : 'active';
|
||||
// togglePersonnelStatus(id, isActive);
|
||||
//});
|
||||
|
||||
$(document).on('change', '.toggle-switch-desktop, .toggle-switch-mobile', function () {
|
||||
var id = $(this).attr('id').split('_')[1]; // Extract ID from toggle switch ID
|
||||
var isActive = $(this).is(':checked') ? 'active' : 'deactive'; // Check if the switch is active (checked)
|
||||
togglePersonnelStatus(id, isActive);
|
||||
});
|
||||
|
||||
@@ -122,25 +128,29 @@ function loadDataAjax() {
|
||||
else {
|
||||
html += `<p id="TextUpload_${item.employeeId}" class="m-0 text-danger">عکس پرسنل آپلود نشده است</p>`;
|
||||
}
|
||||
|
||||
var isActive = item.isActiveString === "true" ? "deactive" : "active";
|
||||
|
||||
html += `</div>
|
||||
</div>
|
||||
<div class="Rtable-cell d-md-block d-none width5">
|
||||
<div class="Rtable-cell--content align-items-center d-flex d-md-block text-end">`;
|
||||
var isActive = item.isActiveString === "true" ? "deactive" : "active";
|
||||
html += `<button class="desktop-btn btnAvticeAction_${item.employeeId} ${(item.isActiveString === "true"
|
||||
? `btn-deactive`
|
||||
: item.hasUploadedImage === "false"
|
||||
? `btn-active disable`
|
||||
: `btn-active`)}"
|
||||
type="button"
|
||||
style="width: 95px;"
|
||||
id="togglePersonnelStatus_${item.id}_desktop">
|
||||
<div id="IsActiveString_${item.id}_desktop" class="IsActiveStringFind_${item.employeeId}">
|
||||
${item.isActiveString === "true" ? `غیر فعال کردن` : `فعال کردن`}
|
||||
</div>
|
||||
</button>
|
||||
<div class="Rtable-cell d-md-flex d-none justify-content-end width5">
|
||||
<div class="Rtable-cell--content align-items-center d-flex d-md-flex text-end me-3">
|
||||
<div class="d-flex align-items-center justify-content-center">
|
||||
<span class="mx-1 df">فعال</span>
|
||||
<label class="switch">
|
||||
<input type="checkbox"
|
||||
id="togglePersonnelStatus_${item.id}_desktop"
|
||||
class="toggle-switch-desktop btnAvticeAction_${item.employeeId} ${item.isActiveString === "true" ? `btn-deactive` : item.hasUploadedImage === "false" ? `disable` : `btn-active`}"
|
||||
${item.isActiveString === "true" ? `checked` : ``}
|
||||
${item.hasUploadedImage === "false" ? `disabled` : ``}>
|
||||
<span class="sliderEUP"></span>
|
||||
</label>
|
||||
<span class="mx-1 df">غیر فعال</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button class="btn-upload" type="button" onclick='ModalUploadPics(${item.employeeId})' id="uploadMobileBTN_${item.employeeId}" style="width: 95px;">
|
||||
<div class="Rtable-cell--content align-items-center d-flex d-md-block text-end">
|
||||
<button class="btn-upload" type="button" onclick='ModalUploadPics(${item.employeeId})' id="uploadMobileBTN_${item.employeeId}" style="width: 95px;">
|
||||
${item.hasUploadedImage === "true" ? `ویرایش عکس` : `بارگذاری عکس`}
|
||||
</button>
|
||||
</div>
|
||||
@@ -181,21 +191,23 @@ function loadDataAjax() {
|
||||
</div>
|
||||
</div>
|
||||
<div class="Rtable-cell--content d-flex justify-content-end align-items-center">
|
||||
<div class="Rtable-cell--heading d-block text-center" style="width: 100px;">
|
||||
<div class="Rtable-cell--heading d-block text-center" style="width: 120px;">
|
||||
<div class="Rtable-cell--content align-items-center d-block text-end">
|
||||
<button class="btn-upload-mobile text-nowrap w-100" type="button" id="uploadMobileBTNMobile_${item.employeeId}" onclick='ModalUploadPics(${item.employeeId})'>
|
||||
${item.hasUploadedImage === "true" ? `ویرایش عکس` : `بارگذاری عکس`}
|
||||
</button>
|
||||
|
||||
<button
|
||||
class="mobile-btn text-nowrap mt-1 w-100 btnAvticeActionMobile_${item.employeeId} ${item.isActiveString === "true" ? `btn-deactive` : item.hasUploadedImage === "false" ? `btn-active disable` : `btn-active`}"
|
||||
type="button"
|
||||
id="togglePersonnelStatus_${item.id}_mobile"
|
||||
style="padding: 9px 8px; font-weight: 600; font-size: 10px;">
|
||||
<div id="IsActiveString_${item.id}_mobile" class="IsActiveStringFindMobile_${item.employeeId}">
|
||||
${item.isActiveString === "true" ? `غیر فعال کردن` : `فعال کردن`}
|
||||
</div>
|
||||
</button>
|
||||
<div class="d-flex align-items-center justify-content-center mt-1">
|
||||
<div class="mx-1 df" style="font-size: 10px;">فعال</div>
|
||||
<label class="switch">
|
||||
<input type="checkbox"
|
||||
id="togglePersonnelStatus_${item.id}_mobile"
|
||||
class="toggle-switch-mobile btnAvticeAction_${item.employeeId} ${item.isActiveString === "true" ? `btn-deactive` : item.hasUploadedImage === "false" ? `disable` : `btn-active`}"
|
||||
${item.isActiveString === "true" ? `checked` : ``}
|
||||
${item.hasUploadedImage === "false" ? `disabled` : ``}>
|
||||
<div class="sliderEUP"></div>div
|
||||
</label>
|
||||
<div class="mx-1 df" style="font-size: 10px;">غیر فعال</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -310,8 +322,8 @@ function togglePersonnelStatus(id, type) {
|
||||
return;
|
||||
}
|
||||
|
||||
const buttonDesktop = $(`#togglePersonnelStatus_${id}_desktop`);
|
||||
const buttonMobile = $(`#togglePersonnelStatus_${id}_mobile`);
|
||||
const toggleDesktop = $(`#togglePersonnelStatus_${id}_desktop`);
|
||||
const toggleMobile = $(`#togglePersonnelStatus_${id}_mobile`);
|
||||
|
||||
if (type === "deactive") {
|
||||
swal.fire({
|
||||
@@ -325,13 +337,14 @@ function togglePersonnelStatus(id, type) {
|
||||
reverseButtons: true
|
||||
}).then((result) => {
|
||||
if (result.isConfirmed) {
|
||||
actionPersonnelStatus(urlType, id, type, buttonDesktop, buttonMobile);
|
||||
actionPersonnelStatus(urlType, id, type, toggleDesktop, toggleMobile);
|
||||
} else {
|
||||
return;
|
||||
toggleDesktop.prop('checked', true);
|
||||
toggleMobile.prop('checked', true);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
actionPersonnelStatus(urlType, id, type, buttonDesktop, buttonMobile);
|
||||
actionPersonnelStatus(urlType, id, type, toggleDesktop, toggleMobile);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -356,19 +369,21 @@ function actionPersonnelStatus(url, id, type, buttonDesktop, buttonMobile) {
|
||||
|
||||
// Toggle both desktop and mobile buttons
|
||||
if (type === "deactive") {
|
||||
$(`#IsActiveString_${id}_desktop`).text('فعال کردن');
|
||||
$(`#IsActiveString_${id}_mobile`).text('فعال کردن');
|
||||
//$(`#IsActiveString_${id}_desktop`).text('فعال کردن');
|
||||
//$(`#IsActiveString_${id}_mobile`).text('فعال کردن');
|
||||
buttonDesktop.removeClass('btn-deactive').addClass('btn-active');
|
||||
buttonMobile.removeClass('btn-deactive').addClass('btn-active');
|
||||
} else {
|
||||
$(`#IsActiveString_${id}_desktop`).text('غیر فعال کردن');
|
||||
$(`#IsActiveString_${id}_mobile`).text('غیر فعال کردن');
|
||||
//$(`#IsActiveString_${id}_desktop`).text('غیر فعال کردن');
|
||||
//$(`#IsActiveString_${id}_mobile`).text('غیر فعال کردن');
|
||||
buttonDesktop.removeClass('btn-active').addClass('btn-deactive');
|
||||
buttonMobile.removeClass('btn-active').addClass('btn-deactive');
|
||||
}
|
||||
} else {
|
||||
$('.alert-msg').show();
|
||||
$('.alert-msg p').text(response.message);
|
||||
buttonDesktop.prop('checked', false);
|
||||
buttonMobile.prop('checked', false);
|
||||
setTimeout(function () {
|
||||
$('.alert-msg').hide();
|
||||
$('.alert-msg p').text('');
|
||||
|
||||
Reference in New Issue
Block a user