camera change

This commit is contained in:
SamSys
2024-09-12 07:10:34 +03:30
parent 6d281328f0
commit 8b1d78e446
68 changed files with 807 additions and 662 deletions

View File

@@ -348,16 +348,12 @@ public class AccountApplication : IAccountApplication
_accountRepository.SaveChanges();
_smsService.LoginSend(phone, r);
TimeSpan delay = TimeSpan.FromSeconds(130);
await Task.Delay(delay);
account.SetVerifyCode("");
_accountRepository.SaveChanges();
//TimeSpan delay = TimeSpan.FromSeconds(30);
await _accountRepository.RemoveCode(id);
return operation.Succcedded();
}

View File

@@ -172,7 +172,7 @@ public class AccountRepository : RepositoryBase<long, Account>, IAccountReposito
public async Task RemoveCode(long id)
{
TimeSpan delay = TimeSpan.FromSeconds(10);
TimeSpan delay = TimeSpan.FromSeconds(30);
await Task.Delay(delay);
var acc = Get(id);
acc.VerifyCode = "";

View File

@@ -17,4 +17,5 @@ public interface IPersonnelCodeRepository : IRepository<long, PersonnelCodeDomai
PersonnelCodeViewModel GetPersonnelCodeViewModel(PersonnelCodeSearchModel searchModel);
long GetPSCodeByWorkshopIdAndEmployeeId(long workshopId, long employeeId);
long GetEmployeeIdByPersonelCode(long personleCode, long workshopId);
}

View File

@@ -15,5 +15,6 @@ public interface IPersonnelCodeApplication
List<PersonnelCodeViewModel> Search(PersonnelCodeSearchModel searchModel);
PersonnelCodeViewModel GetPersonnelCodeViewModel(PersonnelCodeSearchModel searchModel);
long GetEmployeeIdByPersonelCode(long personleCode, long workshopId);
}

View File

@@ -71,4 +71,9 @@ public class PersonnelCodeApplication : IPersonnelCodeApplication
{
return _personnelCodeRepository.GetPersonnelCodeViewModel(searchModel);
}
public long GetEmployeeIdByPersonelCode(long personleCode, long workshopId)
{
return _personnelCodeRepository.GetEmployeeIdByPersonelCode(personleCode, workshopId);
}
}

View File

@@ -49,7 +49,7 @@ public class PersonnelCodeRepository : RepositoryBase<long, PersonnelCodeDomain>
{
query = query.Where(x => x.WorkshopId == searchModel.WorkshopId);
}
return query.OrderByDescending(x => x.Id).ToList();
}
public PersonnelCodeViewModel GetPersonnelCodeViewModel(PersonnelCodeSearchModel searchModel)
@@ -82,4 +82,12 @@ public class PersonnelCodeRepository : RepositoryBase<long, PersonnelCodeDomain>
{
return _context.PersonnelCodeSet.FirstOrDefault(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId)!.PersonnelCode;
}
public long GetEmployeeIdByPersonelCode(long personleCode, long workshopId)
{
var res =_context.PersonnelCodeSet.FirstOrDefault(x => x.PersonnelCode == personleCode && x.WorkshopId == workshopId);
if(res != null)
return res.EmployeeId;
return 0;
}
}

View File

@@ -1,430 +1,430 @@
@model AccountManagement.Application.Contracts.Account.AccountLeftWorkViewModel
@Html.AntiForgeryToken()
@{
<style>
.modal-dialog {
width: 60% !important;
}
.box{
background-color: #cee8d9;
align-items: center;
padding: 7px;
border-radius: 10px;
}
.box2{
background-color: #d8f1f1;
align-items: center;
padding: 7px;
border-radius: 10px;
}
.newWorkshop {
background-color: #bdf7c5;
align-items: center;
padding: 7px;
border-radius: 10px;
}
.deactiveWorkshop {
background-color: rgb(195,195,195);
align-items: center;
padding: 7px;
border-radius: 10px;
}
.mess {
height: 580px;
overflow-y: scroll;
background: aliceblue;
box-shadow: 0px 1px 15px 0 #b4c0b2;
border-radius: 20px;
margin-bottom: 20px;
padding: 15px;
font-size: 12px;
}
.date{
background-color: #fafafa;
color: rgba(0, 0, 0, 0.6);
font-size: 14px;
border: 1px solid #c7c7c7 !important;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
border-radius: 10px;
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
border: 1px solid #eee;
box-shadow: none;
text-align : center;
width: 98%
}
.select {
background-color: #fafafa;
color: rgba(0, 0, 0, 0.6);
font-size: 14px;
border: 1px solid #c7c7c7 !important;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
border-radius: 10px;
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
border: 1px solid #eee;
box-shadow: none;
text-align: center;
}
.mess::-webkit-scrollbar {
width: 6px;
}
.mess::-webkit-scrollbar-track {
background-color: #8bd8ed42;
border-radius: 12px;
}
.mess::-webkit-scrollbar-thumb {
background-color: #3159adb8;
border-radius: 12px;
}
.personleName {
position: fixed;
top: 7px;
right: 4%;
background-color: #d4d9d9;
padding: 0px 10px;
border-radius: 5px;
}
.mess::-webkit-scrollbar-thumb:hover {
background-color: #aaa;
}
.errored {
animation: shake 300ms;
box-shadow: inset 0 0 2px #eb3434, 0 0 5px #eb3434 !important;
border: 1px solid #eb3434 !important;
}
.checkbox-wrapper-10 {
position: relative;
right: 22%;
}
@@media screen and (max-width: 1920px) {
.modal-dialog {
width: 60% !important;
}
.checkbox-wrapper-10 {
position: relative;
right: 22%;
}
}
@@media screen and (max-width: 1440px) {
.modal-dialog {
width: 60% !important;
}
.checkbox-wrapper-10 {
position: relative;
right: 22%;
}
}
@@media screen and (max-width: 1360px) {
.modal-dialog {
width: 70% !important;
}
.personleName {
position: fixed;
top: 7px;
right: 5%;
background-color: #d4d9d9;
padding: 0px 10px;
border-radius: 5px;
}
.checkbox-wrapper-10 {
position: relative;
right: 18%;
}
}
@@media screen and (max-width: 992px) {
.modal-dialog {
width: 90% !important;
}
.personleName {
position: fixed;
top: 7px;
right: 5%;
background-color: #d4d9d9;
padding: 0px 10px;
border-radius: 5px;
}
.checkbox-wrapper-10 {
position: relative;
right: 15%;
}
}
@@media screen and (max-width: 767px) {
.modal-dialog {
width: 90% !important;
}
.workshopName {
margin-top: 10px;
background: #deebe3;
border-radius: 5px;
}
.personleName {
position: fixed;
top: 7px;
right: 12%;
background-color: #d4d9d9;
padding: 0px 10px;
border-radius: 5px;
}
.checkbox-wrapper-10 {
position: inherit;
}
}
</style>
<style>
.checkbox-wrapper-26 * {
-webkit-tap-highlight-color: transparent;
outline: none;
}
.modal-dialog {
width: 60% !important;
}
.box{
.checkbox-wrapper-26 input[type="checkbox"] {
display: none;
}
background-color: #cee8d9;
align-items: center;
padding: 7px;
border-radius: 10px;
}
.checkbox-wrapper-26 label {
--size: 21px;
--shadow: calc(var(--size) * .07) calc(var(--size) * .1);
position: relative;
display: block;
width: var(--size);
height: var(--size);
margin: 0 auto;
background-color: #8db5d7;
border-radius: 50%;
cursor: pointer;
transition: 0.2s ease transform, 0.2s ease background-color, 0.2s ease box-shadow;
overflow: hidden;
z-index: 1;
}
.checkbox-wrapper-26 label:before {
content: "";
position: absolute;
top: 50%;
right: 0;
left: 0;
width: calc(var(--size) * .7);
height: calc(var(--size) * .7);
margin: 0 auto;
background-color: #fff;
transform: translateY(-50%);
border-radius: 50%;
transition: 0.2s ease width, 0.2s ease height;
}
.checkbox-wrapper-26 label:hover:before {
width: calc(var(--size) * .55);
height: calc(var(--size) * .55);
.box2{
background-color: #d8f1f1;
align-items: center;
padding: 7px;
border-radius: 10px;
}
.checkbox-wrapper-26 label:active {
transform: scale(0.9);
}
.checkbox-wrapper-26 .tick_mark {
position: absolute;
top: -1px;
right: 0;
left: calc(var(--size) * -.05);
width: calc(var(--size) * .6);
height: calc(var(--size) * .6);
margin: 0 auto;
margin-left: calc(var(--size) * .14);
transform: rotateZ(-40deg);
}
.checkbox-wrapper-26 .tick_mark:before,
.checkbox-wrapper-26 .tick_mark:after {
content: "";
position: absolute;
background-color: #fff;
border-radius: 2px;
opacity: 0;
transition: 0.2s ease transform, 0.2s ease opacity;
}
.checkbox-wrapper-26 .tick_mark:before {
left: 0;
bottom: 0;
width: calc(var(--size) * .1);
height: calc(var(--size) * .3);
box-shadow: -2px 0 5px rgba(0, 0, 0, 0.23);
transform: translateY(calc(var(--size) * -.68));
}
.checkbox-wrapper-26 .tick_mark:after {
left: 0;
bottom: 0;
width: 100%;
height: calc(var(--size) * .1);
box-shadow: 0 3px 5px rgba(0, 0, 0, 0.23);
transform: translateX(calc(var(--size) * .78));
}
.checkbox-wrapper-26 input[type="checkbox"]:checked + label {
background-color: #07d410;
box-shadow: 0 var(--shadow) #92ff97;
}
.checkbox-wrapper-26 input[type="checkbox"]:checked + label:before {
width: 0;
height: 0;
}
.checkbox-wrapper-26 input[type="checkbox"]:checked + label .tick_mark:before,
.checkbox-wrapper-26 input[type="checkbox"]:checked + label .tick_mark:after {
transform: translate(0);
opacity: 1;
}
</style>
<style>
.checkbox-wrapper-10 .tgl {
display: none;
}
.checkbox-wrapper-10 .tgl,
.checkbox-wrapper-10 .tgl:after,
.checkbox-wrapper-10 .tgl:before,
.checkbox-wrapper-10 .tgl *,
.checkbox-wrapper-10 .tgl *:after,
.checkbox-wrapper-10 .tgl *:before,
.checkbox-wrapper-10 .tgl + .tgl-btn {
box-sizing: border-box;
}
.checkbox-wrapper-10 .tgl::-moz-selection,
.checkbox-wrapper-10 .tgl:after::-moz-selection,
.checkbox-wrapper-10 .tgl:before::-moz-selection,
.checkbox-wrapper-10 .tgl *::-moz-selection,
.checkbox-wrapper-10 .tgl *:after::-moz-selection,
.checkbox-wrapper-10 .tgl *:before::-moz-selection,
.checkbox-wrapper-10 .tgl + .tgl-btn::-moz-selection,
.checkbox-wrapper-10 .tgl::selection,
.checkbox-wrapper-10 .tgl:after::selection,
.checkbox-wrapper-10 .tgl:before::selection,
.checkbox-wrapper-10 .tgl *::selection,
.checkbox-wrapper-10 .tgl *:after::selection,
.checkbox-wrapper-10 .tgl *:before::selection,
.checkbox-wrapper-10 .tgl + .tgl-btn::selection {
background: none;
}
.checkbox-wrapper-10 .tgl + .tgl-btn {
outline: 0;
display: block;
width: 4em;
height: 2em;
position: relative;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.checkbox-wrapper-10 .tgl + .tgl-btn:after,
.checkbox-wrapper-10 .tgl + .tgl-btn:before {
position: relative;
display: block;
content: "";
width: 50%;
height: 100%;
}
.checkbox-wrapper-10 .tgl + .tgl-btn:after {
left: 0;
}
.checkbox-wrapper-10 .tgl + .tgl-btn:before {
display: none;
}
.checkbox-wrapper-10 .tgl:checked + .tgl-btn:after {
left: 50%;
}
.checkbox-wrapper-10 .tgl-flip + .tgl-btn {
padding: 2px;
transition: all 0.2s ease;
font-family: sans-serif;
perspective: 100px;
}
.checkbox-wrapper-10 .tgl-flip + .tgl-btn:after,
.checkbox-wrapper-10 .tgl-flip + .tgl-btn:before {
display: inline-block;
transition: all 0.4s ease;
width: 100%;
.newWorkshop {
background-color: #bdf7c5;
align-items: center;
padding: 7px;
border-radius: 10px;
}
.deactiveWorkshop {
background-color: rgb(195,195,195);
align-items: center;
padding: 7px;
border-radius: 10px;
}
.mess {
height: 580px;
overflow-y: scroll;
background: aliceblue;
box-shadow: 0px 1px 15px 0 #b4c0b2;
border-radius: 20px;
margin-bottom: 20px;
padding: 15px;
font-size: 12px;
}
.date{
background-color: #fafafa;
color: rgba(0, 0, 0, 0.6);
font-size: 14px;
border: 1px solid #c7c7c7 !important;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
border-radius: 10px;
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
border: 1px solid #eee;
box-shadow: none;
text-align : center;
width: 98%
}
.select {
background-color: #fafafa;
color: rgba(0, 0, 0, 0.6);
font-size: 14px;
border: 1px solid #c7c7c7 !important;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
border-radius: 10px;
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
border: 1px solid #eee;
box-shadow: none;
text-align: center;
}
.mess::-webkit-scrollbar {
width: 6px;
}
.mess::-webkit-scrollbar-track {
background-color: #8bd8ed42;
border-radius: 12px;
}
.mess::-webkit-scrollbar-thumb {
background-color: #3159adb8;
border-radius: 12px;
}
.personleName {
position: fixed;
top: 7px;
right: 4%;
background-color: #d4d9d9;
padding: 0px 10px;
border-radius: 5px;
}
.mess::-webkit-scrollbar-thumb:hover {
background-color: #aaa;
}
.errored {
animation: shake 300ms;
box-shadow: inset 0 0 2px #eb3434, 0 0 5px #eb3434 !important;
border: 1px solid #eb3434 !important;
}
.checkbox-wrapper-10 {
position: relative;
right: 22%;
}
@@media screen and (max-width: 1920px) {
.modal-dialog {
width: 60% !important;
}
.checkbox-wrapper-10 {
position: relative;
right: 22%;
}
}
@@media screen and (max-width: 1440px) {
.modal-dialog {
width: 60% !important;
}
.checkbox-wrapper-10 {
position: relative;
right: 22%;
}
}
@@media screen and (max-width: 1360px) {
.modal-dialog {
width: 70% !important;
}
.personleName {
position: fixed;
top: 7px;
right: 5%;
background-color: #d4d9d9;
padding: 0px 10px;
border-radius: 5px;
}
.checkbox-wrapper-10 {
position: relative;
right: 18%;
}
}
@@media screen and (max-width: 992px) {
.modal-dialog {
width: 90% !important;
}
.personleName {
position: fixed;
top: 7px;
right: 5%;
background-color: #d4d9d9;
padding: 0px 10px;
border-radius: 5px;
}
.checkbox-wrapper-10 {
position: relative;
right: 15%;
}
}
@@media screen and (max-width: 767px) {
.modal-dialog {
width: 90% !important;
}
.workshopName {
margin-top: 10px;
background: #deebe3;
border-radius: 5px;
}
.personleName {
position: fixed;
top: 7px;
right: 12%;
background-color: #d4d9d9;
padding: 0px 10px;
border-radius: 5px;
}
.checkbox-wrapper-10 {
position: inherit;
}
}
</style>
<style>
.checkbox-wrapper-26 * {
-webkit-tap-highlight-color: transparent;
outline: none;
}
.checkbox-wrapper-26 input[type="checkbox"] {
display: none;
}
.checkbox-wrapper-26 label {
--size: 21px;
--shadow: calc(var(--size) * .07) calc(var(--size) * .1);
position: relative;
display: block;
width: var(--size);
height: var(--size);
margin: 0 auto;
background-color: #8db5d7;
border-radius: 50%;
cursor: pointer;
transition: 0.2s ease transform, 0.2s ease background-color, 0.2s ease box-shadow;
overflow: hidden;
z-index: 1;
}
.checkbox-wrapper-26 label:before {
content: "";
position: absolute;
line-height: 2em;
font-weight: bold;
color: #fff;
position: absolute;
top: 0;
top: 50%;
right: 0;
left: 0;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
border-radius: 4px;
width: calc(var(--size) * .7);
height: calc(var(--size) * .7);
margin: 0 auto;
background-color: #fff;
transform: translateY(-50%);
border-radius: 50%;
transition: 0.2s ease width, 0.2s ease height;
}
.checkbox-wrapper-10 .tgl-flip + .tgl-btn:after {
content: attr(data-tg-on);
background: #02C66F;
transform: rotateY(-180deg);
.checkbox-wrapper-26 label:hover:before {
width: calc(var(--size) * .55);
height: calc(var(--size) * .55);
}
.checkbox-wrapper-10 .tgl-flip + .tgl-btn:before {
background: #FF3A19;
content: attr(data-tg-off);
.checkbox-wrapper-26 label:active {
transform: scale(0.9);
}
.checkbox-wrapper-10 .tgl-flip + .tgl-btn:active:before {
transform: rotateY(-20deg);
.checkbox-wrapper-26 .tick_mark {
position: absolute;
top: -1px;
right: 0;
left: calc(var(--size) * -.05);
width: calc(var(--size) * .6);
height: calc(var(--size) * .6);
margin: 0 auto;
margin-left: calc(var(--size) * .14);
transform: rotateZ(-40deg);
}
.checkbox-wrapper-10 .tgl-flip:checked + .tgl-btn:before {
transform: rotateY(180deg);
}
.checkbox-wrapper-26 .tick_mark:before,
.checkbox-wrapper-26 .tick_mark:after {
content: "";
position: absolute;
background-color: #fff;
border-radius: 2px;
opacity: 0;
transition: 0.2s ease transform, 0.2s ease opacity;
}
.checkbox-wrapper-10 .tgl-flip:checked + .tgl-btn:after {
transform: rotateY(0);
left: 0;
background: #7FC6A6;
}
.checkbox-wrapper-26 .tick_mark:before {
left: 0;
bottom: 0;
width: calc(var(--size) * .1);
height: calc(var(--size) * .3);
box-shadow: -2px 0 5px rgba(0, 0, 0, 0.23);
transform: translateY(calc(var(--size) * -.68));
}
.checkbox-wrapper-10 .tgl-flip:checked + .tgl-btn:active:after {
transform: rotateY(20deg);
}
</style>
.checkbox-wrapper-26 .tick_mark:after {
left: 0;
bottom: 0;
width: 100%;
height: calc(var(--size) * .1);
box-shadow: 0 3px 5px rgba(0, 0, 0, 0.23);
transform: translateX(calc(var(--size) * .78));
}
.checkbox-wrapper-26 input[type="checkbox"]:checked + label {
background-color: #07d410;
box-shadow: 0 var(--shadow) #92ff97;
}
.checkbox-wrapper-26 input[type="checkbox"]:checked + label:before {
width: 0;
height: 0;
}
.checkbox-wrapper-26 input[type="checkbox"]:checked + label .tick_mark:before,
.checkbox-wrapper-26 input[type="checkbox"]:checked + label .tick_mark:after {
transform: translate(0);
opacity: 1;
}
</style>
<style>
.checkbox-wrapper-10 .tgl {
display: none;
}
.checkbox-wrapper-10 .tgl,
.checkbox-wrapper-10 .tgl:after,
.checkbox-wrapper-10 .tgl:before,
.checkbox-wrapper-10 .tgl *,
.checkbox-wrapper-10 .tgl *:after,
.checkbox-wrapper-10 .tgl *:before,
.checkbox-wrapper-10 .tgl + .tgl-btn {
box-sizing: border-box;
}
.checkbox-wrapper-10 .tgl::-moz-selection,
.checkbox-wrapper-10 .tgl:after::-moz-selection,
.checkbox-wrapper-10 .tgl:before::-moz-selection,
.checkbox-wrapper-10 .tgl *::-moz-selection,
.checkbox-wrapper-10 .tgl *:after::-moz-selection,
.checkbox-wrapper-10 .tgl *:before::-moz-selection,
.checkbox-wrapper-10 .tgl + .tgl-btn::-moz-selection,
.checkbox-wrapper-10 .tgl::selection,
.checkbox-wrapper-10 .tgl:after::selection,
.checkbox-wrapper-10 .tgl:before::selection,
.checkbox-wrapper-10 .tgl *::selection,
.checkbox-wrapper-10 .tgl *:after::selection,
.checkbox-wrapper-10 .tgl *:before::selection,
.checkbox-wrapper-10 .tgl + .tgl-btn::selection {
background: none;
}
.checkbox-wrapper-10 .tgl + .tgl-btn {
outline: 0;
display: block;
width: 4em;
height: 2em;
position: relative;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.checkbox-wrapper-10 .tgl + .tgl-btn:after,
.checkbox-wrapper-10 .tgl + .tgl-btn:before {
position: relative;
display: block;
content: "";
width: 50%;
height: 100%;
}
.checkbox-wrapper-10 .tgl + .tgl-btn:after {
left: 0;
}
.checkbox-wrapper-10 .tgl + .tgl-btn:before {
display: none;
}
.checkbox-wrapper-10 .tgl:checked + .tgl-btn:after {
left: 50%;
}
.checkbox-wrapper-10 .tgl-flip + .tgl-btn {
padding: 2px;
transition: all 0.2s ease;
font-family: sans-serif;
perspective: 100px;
}
.checkbox-wrapper-10 .tgl-flip + .tgl-btn:after,
.checkbox-wrapper-10 .tgl-flip + .tgl-btn:before {
display: inline-block;
transition: all 0.4s ease;
width: 100%;
text-align: center;
position: absolute;
line-height: 2em;
font-weight: bold;
color: #fff;
position: absolute;
top: 0;
left: 0;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
border-radius: 4px;
}
.checkbox-wrapper-10 .tgl-flip + .tgl-btn:after {
content: attr(data-tg-on);
background: #02C66F;
transform: rotateY(-180deg);
}
.checkbox-wrapper-10 .tgl-flip + .tgl-btn:before {
background: #FF3A19;
content: attr(data-tg-off);
}
.checkbox-wrapper-10 .tgl-flip + .tgl-btn:active:before {
transform: rotateY(-20deg);
}
.checkbox-wrapper-10 .tgl-flip:checked + .tgl-btn:before {
transform: rotateY(180deg);
}
.checkbox-wrapper-10 .tgl-flip:checked + .tgl-btn:after {
transform: rotateY(0);
left: 0;
background: #7FC6A6;
}
.checkbox-wrapper-10 .tgl-flip:checked + .tgl-btn:active:after {
transform: rotateY(20deg);
}
</style>
}
<div class="modal-header" style="border-bottom: unset">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true" style="right: 1%;">×</button>
@@ -852,7 +852,7 @@
workshopAccountlist.Insurance = insuranceStr;
workshopAccountlist.Tax = taxStr;
workshopAccountlist.IsActiveSting = isActiveSt;
var test = [{id:12,workshopAccolist :[]}]
workshopAccountlistViewModel.push(workshopAccountlist);
});
if (ajaxSend) {

View File

@@ -1,149 +1,155 @@
@page
@model ServiceHost.Areas.Camera.Pages.IndexModel
@using System.Diagnostics
@using Version = _0_Framework.Application.Version
@{
var watch = new Stopwatch();
Layout = "Shared/_Layout";
ViewData["Title"] = " - " + "حضور غیاب";
<style>
body {
background-color: #222831
}
<style>
body {
background-color: #222831
}
#btnName {
font-size: 64px;
border-radius: 13px;
background-color: #37ad4f;
border-color: #339380;
margin: 7px;
color: #fff;
display: inline-block;
padding: 6px 12px;
margin-bottom: 0;
line-height: 1.42857143;
text-align: center;
white-space: nowrap;
vertical-align: middle;
-ms-touch-action: manipulation;
touch-action: manipulation;
cursor: pointer;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
#btnName {
font-size: 64px;
border-radius: 13px;
background-color: #37ad4f;
border-color: #339380;
margin: 7px;
color: #fff;
display: inline-block;
padding: 6px 12px;
margin-bottom: 0;
line-height: 1.42857143;
text-align: center;
white-space: nowrap;
vertical-align: middle;
-ms-touch-action: manipulation;
touch-action: manipulation;
cursor: pointer;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.btnAction {
font-size: 64px;
border-radius: 13px;
margin: 7px;
color: #fff;
display: inline-block;
padding: 6px 12px;
margin-bottom: 0;
line-height: 1.42857143;
text-align: center;
white-space: nowrap;
vertical-align: middle;
-ms-touch-action: manipulation;
touch-action: manipulation;
cursor: pointer;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.btnAction {
font-size: 64px;
border-radius: 13px;
margin: 7px;
color: #fff;
display: inline-block;
padding: 6px 12px;
margin-bottom: 0;
line-height: 1.42857143;
text-align: center;
white-space: nowrap;
vertical-align: middle;
-ms-touch-action: manipulation;
touch-action: manipulation;
cursor: pointer;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
canvas {
position: absolute;
// top: 0px;
right: 0px;
display: inline-block;
direction: ltr;
width: 1400px;
height: 1400px;
// width: 1800px;
// height: 1800px;
}
canvas {
position: absolute;
// top: 0px;
right: 0px;
display: inline-block;
direction: ltr;
width: 1400px;
height: 1400px;
// width: 1800px;
// height: 1800px;
}
.hiddenCanvas {
position: unset;
}
.hiddenCanvas {
position: unset;
}
#video {
// border: 7px solid #797979;
border-radius: 100%;
display: inline-block;
// width: 1800px;
// height: 1800px;
width: 1400px;
height: 1400px;
}
#video {
// border: 7px solid #797979;
border-radius: 100%;
display: inline-block;
// width: 1800px;
// height: 1800px;
width: 1400px;
height: 1400px;
}
.btn-start {
font-size: 64px;
width: 1000px !important;
display: block;
}
.btn-start {
font-size: 64px;
width: 1000px !important;
display: block;
}
.btn-incom {
font-size: 64px;
width: 1000px !important;
display: block;
}
.btn-incom {
font-size: 64px;
width: 1000px !important;
display: block;
}
.btn-exit {
font-size: 64px;
width: 1000px !important;
display: block;
}
.btn-exit {
font-size: 64px;
width: 1000px !important;
display: block;
}
#btnOutOrIn {
display: flex;
justify-content: center;
}
#btnOutOrIn {
display: flex;
justify-content: center;
}
#reAnalyz {
position: relative;
display: flex;
justify-content: center;
// position: fixed;
// top: 600px;
// margin-right: 7px;
}
#reAnalyz {
position: relative;
display: flex;
justify-content: center;
// position: fixed;
// top: 600px;
// margin-right: 7px;
}
@@media only screen and (max-width : 992px) {
// #reAnalyz {
// top: 600px;
// margin-right: 3px;
// }
@@media only screen and (max-width : 992px) {
// #reAnalyz {
// top: 600px;
// margin-right: 3px;
//
}
// #waiting {
// color: #ffffff;
// position: absolute;
// top: 600px;
// }
// #waiting {
// color: #ffffff;
// position: absolute;
// top: 600px;
//
}
// #recognizing {
// color: #ffffff;
// position: absolute;
// top: 230px;
// }
canvas {
position: absolute;
top: 0px;
right: 0px;
display: inline-block;
direction: ltr;
width: 1400px;
height: 1400px;
}
}
// #recognizing {
// color: #ffffff;
// position: absolute;
// top: 230px;
//
}
.div-logout {
position: fixed;
right: -130px;
top: 110px;
}
</style>
canvas {
position: absolute;
top: 0px;
right: 0px;
display: inline-block;
direction: ltr;
width: 1400px;
height: 1400px;
}
}
.div-logout {
position: fixed;
right: -130px;
top: 110px;
}
</style>
}
@section Styles
@@ -151,12 +157,12 @@
<link rel="stylesheet" href="~/AssetsClient/css/webcam.css?ver=@Version.CameraVersion">
<style>
/* #my_camera,
#my_camera video {
width: 100% !important;
height: auto !important;
min-width: 100%;
min-height: 500px;
} */
#my_camera video {
width: 100% !important;
height: auto !important;
min-width: 100%;
min-height: 500px;
} */
#video {
width: 1400px !important;
@@ -222,17 +228,17 @@
<div class="mx-auto">
<div class="div-logout">
<a asp-area="" asp-page="/Index" asp-page-handler="Logout">
<svg width="120" height="120" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<ellipse cx="6" cy="6" rx="6" ry="6" transform="matrix(4.37114e-08 -1 -1 -4.37114e-08 20 18)" fill="#2dbbbb" fill-opacity="0.50" />
<path d="M7.7 12C7.7 8.52061 10.5206 5.7 14 5.7C17.4794 5.7 20.3 8.52061 20.3 12C20.3 15.4794 17.4794 18.3 14 18.3C10.5206 18.3 7.7 15.4794 7.7 12Z" stroke="#2dbbbb" stroke-opacity="0.50" stroke-width="0.6" />
<path d="M8 18.9282C9.21615 19.6303 10.5957 20 12 20C13.4043 20 14.7838 19.6303 16 18.9282C17.2162 18.2261 18.2261 17.2162 18.9282 16C19.6303 14.7838 20 13.4043 20 12C20 10.5957 19.6303 9.21615 18.9282 8C18.2261 6.78385 17.2162 5.77394 16 5.0718C14.7838 4.36965 13.4043 4 12 4C10.5957 4 9.21615 4.36965 8 5.0718" stroke="#ef4444" stroke-width="1.2" stroke-linecap="round" />
<path d="M6 7L2 12M2 12L6 17M2 12H11" stroke="#ef4444" stroke-width="1.2" stroke-linecap="round" />
</svg>
<p style="font-size: 50px; color: #ffffff">خاموش</p>
<svg width="120" height="120" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<ellipse cx="6" cy="6" rx="6" ry="6" transform="matrix(4.37114e-08 -1 -1 -4.37114e-08 20 18)" fill="#2dbbbb" fill-opacity="0.50" />
<path d="M7.7 12C7.7 8.52061 10.5206 5.7 14 5.7C17.4794 5.7 20.3 8.52061 20.3 12C20.3 15.4794 17.4794 18.3 14 18.3C10.5206 18.3 7.7 15.4794 7.7 12Z" stroke="#2dbbbb" stroke-opacity="0.50" stroke-width="0.6" />
<path d="M8 18.9282C9.21615 19.6303 10.5957 20 12 20C13.4043 20 14.7838 19.6303 16 18.9282C17.2162 18.2261 18.2261 17.2162 18.9282 16C19.6303 14.7838 20 13.4043 20 12C20 10.5957 19.6303 9.21615 18.9282 8C18.2261 6.78385 17.2162 5.77394 16 5.0718C14.7838 4.36965 13.4043 4 12 4C10.5957 4 9.21615 4.36965 8 5.0718" stroke="#ef4444" stroke-width="1.2" stroke-linecap="round" />
<path d="M6 7L2 12M2 12L6 17M2 12H11" stroke="#ef4444" stroke-width="1.2" stroke-linecap="round" />
</svg>
<p style="font-size: 50px; color: #ffffff">خاموش</p>
</a>
</div>
<div style="margin: 50px 0 50px 0;">
<svg width="180px" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 621.6 721.91">
<svg width="180px" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 621.6 721.91">
<defs>
<style>
.cls-1 {
@@ -269,8 +275,8 @@
<img src="~/AssetsClient/images/face.png" style="position: absolute;top: 0;right: 0;width: 1400px;transform: scale(1.006);border-radius: 100%;" />
</div>
@* <div id="display" style="position: relative;width: 1400px;height: 1400px;padding: 735px;display: flex;align-items: center;justify-content: center;">
<video style="object-fit: cover" id="video" width="1000" height="1000" autoplay></video>
<img src="~/AssetsClient/images/face.png" style="position: absolute;top: 35px;width: 1400px;border-radius: 1400px;transform: scale(1.006);" />
<video style="object-fit: cover" id="video" width="1000" height="1000" autoplay></video>
<img src="~/AssetsClient/images/face.png" style="position: absolute;top: 35px;width: 1400px;border-radius: 1400px;transform: scale(1.006);" />
</div> *@
<p id="notFound" class="mt-2 text-white" style="font-size: 70px;display: none;">شناسایی نشد!</p>
<div id="users" class="mt-2 text-white" style="font-size: 70px;top: 30px;position: relative;"></div>
@@ -282,7 +288,8 @@
<input type="hidden" id="workshopId" asp-for="@Model.WorkshopId" value="@Model.WorkshopId" />
<div style="display: block;font-size: 64px;width: 1345px;">
<div id="reAnalyz" style="">
<a id="reloadRec" class="btn-start" style="display: none;">شروع شناسایی</a>
<a id="reloadRec" class="btn-start">شروع شناسایی</a>
<a onclick="sendPersonelCodeToGetEmployeeId(23)" class="btn-start">تایید کد پرسنلی</a>
<!--<a id="reloadRec" class="btn btn-primary" style="border-radius: 15px;display: none;">شروع شناسایی </a>
<a id="notFound" class="btn btn-warning" style="border-radius: 15px;display: none;"> شناسایی نشد </a>-->
</div>
@@ -294,7 +301,7 @@
</div>
<div id="btnOutOrIn">
</div>
@* <div id="users" style="">
@* <div id="users" style="">
</div> *@
</div>
@@ -331,12 +338,13 @@
</div>
</div> *@
<div id="imageData">
@* <div id="imageData">
@foreach (var item in @Model.ImageDataList)
{
<img style="display: none" class="imageData" data-imageId="@item.Id@item.ImageNumber" src="data:image/jpeg;base64,@item.ImagePath" />
}
</div>
</div> *@
@section Script
{
@@ -402,12 +410,11 @@
const recognizing = document.getElementById("recognizing");
const reloadRec = document.getElementById("reloadRec");
const notFound = document.getElementById("notFound");
var personIds = [];
@foreach (var item in Model.PersonelIds)
{
@:personIds.push(`${@item}`);
}
// let modelsUrl = "https://raw.githubusercontent.com/justadudewhohacks/face-api.js/master/weights/";
const workshopId = Number('@Model.WorkshopId');
const urlPath = "@Model.UrlPath";
// let modelsUrl = "https://raw.githubusercontent.com/justadudewhohacks/face-api.js/master/weights/";
const run = async () => {
@@ -425,12 +432,26 @@
// faceapi.nets.ssdMobilenetv1.loadFromDisk(modelPath),
// faceapi.nets.faceRecognitionNet.loadFromDisk(modelPath),
// faceapi.nets.faceLandmark68Net.loadFromDisk(modelPath)
]).then(startWebcam);
]);
}
run();
var personIds = [];
var urls = [];
function addPic() {
for (let i = 0; i < personIds.length; i++) {
urls.push({ id: personIds[i], listUrls: [] })
for (let j = 1; j <= 2; j++) {
const a = `${urlPath}/Camera?handler=ShowPicture&index=${j}&workshopId=${workshopId}&label=${personIds[i]}`;
urls[i].listUrls.push(a);
}
}
startWebcam();
}
function startWebcam() {
navigator.mediaDevices
.getUserMedia({
video: true,
@@ -444,36 +465,47 @@
console.error(error);
});
}
function stopWebcam() {
window.location.reload();
}
var stop = false;
var getImages = document.getElementById("imageData");
// var getImages = document.getElementById("imageData");
function getLabeledFaceDescriptions() {
return Promise.all(
personIds.map(async (label) => {
urls.map(async (url) => {
let startDate = new Date().getTime();
let descriptions = [];
for (let i = 1; i <= 2; i++) {
url.listUrls.forEach(async function (path) {
// var a = `\\Faces\\${workshopId}\\${label}\\${i}.jpg`;
var mix = `${label}${i}`;
let img = getImages.querySelector(".imageData[data-imageId='" + mix + "']");
console.log(img);
// if (!img) {
// console.error(`No image found for ${mix}`);
// continue;
// }
// let img = await faceapi.fetchImage(im);
// var mix = `${label}${i}`;
// let img = getImages.querySelector(".imageData[data-imageId='" + mix + "']");
console.log(`${url.id} ${path}`)
const img = await faceapi.fetchImage(path);
const detections = await faceapi.detectSingleFace(img).withFaceLandmarks().withFaceDescriptor();
// if (!detections) {
// console.error(`No face detected in image ${mix}`);
// continue;
// }
descriptions.push(detections.descriptor);
}
return new faceapi.LabeledFaceDescriptors(label, descriptions);
});
let endDate = new Date().getTime();
let elapsed = (endDate - startDate) / 1000;
console.log(`time forloop elapsed is ${elapsed}`);
console.log(url.id);
console.log(descriptions);
return new faceapi.LabeledFaceDescriptors(url.id, descriptions);
})
);
}
var cacheName = [];
var unknown = [];
var endOfRecognition = true;
@@ -493,13 +525,14 @@
// cacheName = []; // خالی کردن لیست شناسایی شده ها
// }
reloadRec.style.display = "none";
reloadRec.addEventListener("click",
function () {
// let oldName = document.getElementById("btnName");
// if (oldName != null) {
// oldName.remove(); // حذف نام قبلی
// }
$('#users').html('');
//$('#testDistance').html('');
endOfRecognition = false; // خاموشی پایان شناسایی
@@ -510,28 +543,36 @@
notFound.style.display = "none"; // مخفی شدن دکمه شناسایی
cacheName = []; // خالی کردن لیست شناسایی شده ها
unknown = [];
});
var interId;
video.addEventListener("play",
async () => {
const labeledFaceDescriptors = await getLabeledFaceDescriptions();
const faceMatcher = new faceapi.FaceMatcher(labeledFaceDescriptors);
const labeledFaceDescriptors = await getLabeledFaceDescriptions();
const faceMatcher = new faceapi.FaceMatcher(labeledFaceDescriptors);
const canvas = faceapi.createCanvasFromMedia(video);
display.append(canvas);
const displaySize = { width: video.width, height: video.height };
faceapi.matchDimensions(canvas, displaySize);
interId = setInterval(async () => {
if (!stop) {
waiting.style.display = "none";
if (!reloadActionControl) {
reloadRec.style.display = "block";
}
if (endOfRecognition === false) {
waiting.style.display = "none";
reloadActionControl = true;
recognizing.style.display = "block";
@@ -584,7 +625,7 @@
reloadRec.style.display = "none";
// t.addClass('.hiddenCanvas');
getPersonel(result.label);
endOfRecognition = true;
stop = true;
@@ -601,55 +642,31 @@
});
}
}
},100);
}, 100);
});
function getPersonel(employeeId) {
//// AjAx to get EmployeeId with personnel code
function sendPersonelCodeToGetEmployeeId(personelCode) {
const workshopId = $('#workshopId').val();
let users = document.getElementById("users");
let user1 = $('#users');
let btnOutOrIn = $('#btnOutOrIn')
$.ajax({
async: false,
//contentType: 'application/json',
//dataType: 'data',
// contentType: 'application/json',
// dataType: 'data',
type: 'GET',
url: '@Url.Page("./Index", "EmployeeFlag")',
data: { "employeeId": Number(employeeId), "workshopId": Number(workshopId) },
url: '@Url.Page("./Index", "SendPersonelCodeToGetEmployeeId")',
data: { "personelCode": Number(personelCode), "workshopId": Number(workshopId) },
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
success: function (response) {
console.log(response)
if (response.flag > 0) {
let e = document.createElement('span');
e.innerHTML = response.employeeName;
// e.id = "btnName";
// e.className += "btn ";
// e.className += "btn-primary";
// const out = `<button type="button" id="out" class="btn btn-warning btnAction" onclick="out(${response.flag})">ثبت خروج</button>`;
const out = `<button type="button" id="out" class="btn-exit" onclick="out(${response.flag})">ثبت خروج</button>`;
user1.html('');
btnOutOrIn.html('');
users.append(e);
btnOutOrIn.append(out);
if (response.isSuccess) {
personIds = [];
personIds.push(response.personId);
addPic();
endOfRecognition = false;
} else {
let e = document.createElement('span');
e.innerHTML = response.employeeName;
// e.id = "btnName";
// e.className += "btn ";
// e.className += "btn-primary";
// const incom = `<button type="button" id="incom" class="btn btn-info btnAction" onclick="inCom(${employeeId})">ثبت ورود</button>`;
const incom = `<button type="button" id="incom" class="btn-incom" onclick="inCom(${employeeId})">ثبت ورود</button>`;
user1.html('');
btnOutOrIn.html('');
users.appendChild(e);
btnOutOrIn.append(incom);
alert(response.message);
}
},
@@ -660,7 +677,65 @@
});
}
function getPersonel(employeeId) {
const workshopId = $('#workshopId').val();
let users = document.getElementById("users");
let user1 = $('#users');
let btnOutOrIn = $('#btnOutOrIn')
let employeeIdNumber = Number(employeeId)
if (employeeIdNumber > 0) {
$.ajax({
async: false,
//contentType: 'application/json',
//dataType: 'data',
type: 'GET',
url: '@Url.Page("./Index", "EmployeeFlag")',
data: { "employeeId": employeeIdNumber, "workshopId": Number(workshopId) },
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
success: function (response) {
console.log(response)
if (response.flag > 0) {
let e = document.createElement('span');
e.innerHTML = response.employeeName;
// e.id = "btnName";
// e.className += "btn ";
// e.className += "btn-primary";
// const out = `<button type="button" id="out" class="btn btn-warning btnAction" onclick="out(${response.flag})">ثبت خروج</button>`;
const out = `<button type="button" id="out" class="btn-exit" onclick="out(${response.flag})">ثبت خروج</button>`;
user1.html('');
btnOutOrIn.html('');
users.append(e);
btnOutOrIn.append(out);
} else {
let e = document.createElement('span');
e.innerHTML = response.employeeName;
// e.id = "btnName";
// e.className += "btn ";
// e.className += "btn-primary";
// const incom = `<button type="button" id="incom" class="btn btn-info btnAction" onclick="inCom(${employeeId})">ثبت ورود</button>`;
const incom = `<button type="button" id="incom" class="btn-incom" onclick="inCom(${employeeId})">ثبت ورود</button>`;
user1.html('');
btnOutOrIn.html('');
users.appendChild(e);
btnOutOrIn.append(incom);
}
},
failure: function (response) {
console.log(5, response);
}
});
}
}
//ثبت خروج
function out(flagId) {
$.ajax({
@@ -679,6 +754,8 @@
$('#btnOutOrIn').html('');
reloadRec.style.display = "block";
reloadActionControl = false;
endOfRecognition = true;
stopWebcam();
} else {
// $.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "خطا در ثبت اطلاعات");
@@ -691,7 +768,7 @@
}
});
}
//ثبت ورود
function inCom(employeeId) {
const workshopId = $('#workshopId').val();
$.ajax({
@@ -710,6 +787,8 @@
$('#btnOutOrIn').html('');
reloadRec.style.display = "block";
reloadActionControl = false;
endOfRecognition = true;
stopWebcam();
} else {
// $.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "خطا در ثبت اطلاعات");
@@ -723,6 +802,7 @@
}
});
}
</script>
}

View File

@@ -1,4 +1,4 @@
using System.Diagnostics;
using System.Diagnostics;
using _0_Framework.Application;
using CompanyManagment.App.Contracts.Employee;
using CompanyManagment.App.Contracts.RollCall;
@@ -6,6 +6,8 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using System.IO;
using AccountManagement.Domain.TaskAgg;
using CompanyManagment.App.Contracts.PersonnleCode;
using CompanyManagment.App.Contracts.RollCallEmployee;
using CompanyManagment.App.Contracts.RollCallService;
@@ -21,11 +23,13 @@ public class IndexModel : PageModel
private readonly IRollCallServiceApplication _rollCallServiceApplication;
private readonly IRollCallEmployeeApplication _rollCallEmployeeApplication;
private readonly IAuthHelper _authHelper;
private readonly IPersonnelCodeApplication _personnelCodeApplication;
public long WorkshopId;
public string UrlPath { get; set; }
public List<ImageData> ImageDataList;
public List<long> PersonelIds;
public IndexModel(IWebHostEnvironment webHostEnvironment, IConfiguration configuration, IEmployeeApplication employeeApplication, IRollCallApplication rollCallApplication, IAuthHelper authHelper, IRollCallServiceApplication rollCallServiceApplication, IRollCallEmployeeApplication rollCallEmployeeApplication)
public IndexModel(IWebHostEnvironment webHostEnvironment, IConfiguration configuration, IEmployeeApplication employeeApplication, IRollCallApplication rollCallApplication, IAuthHelper authHelper, IRollCallServiceApplication rollCallServiceApplication, IRollCallEmployeeApplication rollCallEmployeeApplication, IPersonnelCodeApplication personnelCodeApplication)
{
_webHostEnvironment = webHostEnvironment;
_configuration = configuration;
@@ -34,12 +38,14 @@ public class IndexModel : PageModel
_authHelper = authHelper;
_rollCallServiceApplication = rollCallServiceApplication;
_rollCallEmployeeApplication = rollCallEmployeeApplication;
_personnelCodeApplication = personnelCodeApplication;
}
public IActionResult OnGet()
{
var cameraAccount = _authHelper.CameraAccountInfo();
WorkshopId = cameraAccount.WorkshopId;
UrlPath = $"{Request.Scheme}://{Request.Host}";
var service = _rollCallServiceApplication.GetActiveServiceByWorkshopId(cameraAccount.WorkshopId);
if (service != null && service.IsActiveString == "true")
{
@@ -58,21 +64,21 @@ public class IndexModel : PageModel
PersonelIds = personnelIdsList.ToList();
}
var imageData = new List<ImageData>();
foreach (var personId in PersonelIds)
{
for (int i = 1; i <= 2; i++)
{
byte[] fileContent = System.IO.File.ReadAllBytes($"{_webHostEnvironment.ContentRootPath}\\Faces\\{WorkshopId}\\{personId}\\{i}.jpg");
imageData.Add(new ImageData()
{
ImagePath = Convert.ToBase64String(fileContent),
ImageNumber = i,
Id = personId
});
}
}
ImageDataList = imageData;
//var imageData = new List<ImageData>();
//foreach (var personId in PersonelIds)
//{
// for (int i = 1; i <= 2; i++)
// {
// byte[] fileContent = System.IO.File.ReadAllBytes($"{_webHostEnvironment.ContentRootPath}\\Faces\\{WorkshopId}\\{personId}\\{i}.jpg");
// imageData.Add(new ImageData()
// {
// ImagePath = Convert.ToBase64String(fileContent),
// ImageNumber = i,
// Id = personId
// });
// }
//}
//ImageDataList = imageData;
}
else
{
@@ -89,6 +95,32 @@ public class IndexModel : PageModel
return Page();
}
public IActionResult OnGetSendPersonelCodeToGetEmployeeId(long personelCode, long workshopId)
{
var employeeId = _personnelCodeApplication.GetEmployeeIdByPersonelCode(personelCode, workshopId);
if (employeeId == 0)
{
return new JsonResult(new
{
isSuccess = false,
message = "کد پرسنلی یافت نشد",
});
}
else
{
return new JsonResult(new
{
isSuccess = true,
message = "",
personId = $"{employeeId}",
});
}
}
public IActionResult OnGetEmployeeFlag(long employeeId, long workshopId)
{
var employeeFullName = _rollCallEmployeeApplication.GetByEmployeeIdAndWorkshopId(employeeId, workshopId).EmployeeFullName;
@@ -149,6 +181,28 @@ public class IndexModel : PageModel
}
}
public IActionResult OnGetShowPicture(int index,long workshopId,long label)
{
Console.WriteLine(index);
var filePath = $"\\Faces\\{workshopId}\\{label}\\{index}.jpg";
if (string.IsNullOrEmpty(filePath))
{
return NotFound();
}
var serverRoot = $"{_webHostEnvironment.ContentRootPath}{filePath}";
if (!System.IO.File.Exists(serverRoot))
{
return NotFound();
}
var contentType = "image/jpeg";
return PhysicalFile(serverRoot, contentType);
}
}
public class ImageData

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 292 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 450 KiB

After

Width:  |  Height:  |  Size: 394 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 445 KiB

After

Width:  |  Height:  |  Size: 381 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 489 KiB

After

Width:  |  Height:  |  Size: 334 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 486 KiB

After

Width:  |  Height:  |  Size: 367 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 560 KiB

After

Width:  |  Height:  |  Size: 260 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 520 KiB

After

Width:  |  Height:  |  Size: 256 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 480 KiB

After

Width:  |  Height:  |  Size: 449 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 478 KiB

After

Width:  |  Height:  |  Size: 388 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 KiB

After

Width:  |  Height:  |  Size: 320 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 KiB

After

Width:  |  Height:  |  Size: 319 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 383 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

After

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 178 KiB

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 240 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 238 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 508 KiB

After

Width:  |  Height:  |  Size: 257 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 484 KiB

After

Width:  |  Height:  |  Size: 260 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 481 KiB

After

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 480 KiB

After

Width:  |  Height:  |  Size: 320 KiB

View File

@@ -678,7 +678,7 @@
$('.loading').show();
setTimeout(function () {
$.ajax({
async: false,
dataType: 'json',
type: 'POST',
url: '@Url.Page("./Index", "WithMobile")',

View File

@@ -200,11 +200,11 @@ namespace ServiceHost.Pages
public IActionResult OnPostWithMobile(string code, string phone)
{
bool captchaResult = true;
if (!_webHostEnvironment.IsDevelopment())
captchaResult = _googleRecaptcha.IsSatisfy(CaptchaResponse).Result;
if (captchaResult)
{
//bool captchaResult = true;
//if (!_webHostEnvironment.IsDevelopment())
// captchaResult = _googleRecaptcha.IsSatisfy(CaptchaResponse).Result;
//if (captchaResult)
//{
var verfiyResult = _accountApplication.GetByVerifyCode(code, phone);
if (verfiyResult != null)
{
@@ -230,11 +230,11 @@ namespace ServiceHost.Pages
}
}
}
else
{
Mess = "دستگاه شما ربات تشخیص داده شد";
}
//}
//else
//{
// Mess = "دستگاه شما ربات تشخیص داده شد";
//}

View File

@@ -12,10 +12,10 @@
//"MesbahDb": "Data Source=DESKTOP-NUE119G\\MSNEW;Initial Catalog=Mesbah_db;Integrated Security=True"
//server
"MesbahDb": "Data Source=171.22.24.15;Initial Catalog=mesbah_db;Persist Security Info=False;User ID=ir_db;Password=R2rNp[170]is[3019]#@ATt;TrustServerCertificate=true;"
//"MesbahDb": "Data Source=171.22.24.15;Initial Catalog=mesbah_db;Persist Security Info=False;User ID=ir_db;Password=R2rNp[170]is[3019]#@ATt;TrustServerCertificate=true;"
//local
//"MesbahDb": "Data Source=.;Initial Catalog=Mesbah_db;Integrated Security=True;TrustServerCertificate=true;"
"MesbahDb": "Data Source=.;Initial Catalog=Mesbah_db;Integrated Security=True;TrustServerCertificate=true;"
},
"GoogleRecaptchaV3": {
"SiteKey": "6Lfhp_AnAAAAAB79WkrMoHd1k8ir4m8VvfjE7FTH",