428 lines
13 KiB
C#
428 lines
13 KiB
C#
using System.Security.Claims;
|
|
using _0_Framework.Application;
|
|
using CompanyManagment.App.Contracts.Employee;
|
|
using CompanyManagment.App.Contracts.Error;
|
|
using CompanyManagment.App.Contracts.RollCallEmployee;
|
|
using CompanyManagment.App.Contracts.RollCallEmployeeStatus;
|
|
using CompanyManagment.App.Contracts.RollCallService;
|
|
using CompanyManagment.App.Contracts.Workshop;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.Mvc.RazorPages;
|
|
using ServiceHost.Pages;
|
|
|
|
namespace ServiceHost.Areas.Client.Pages.Company.RollCall
|
|
{
|
|
[Authorize]
|
|
public class EmployeeUploadPictureModel : PageModel
|
|
{
|
|
public string WorkshopFullName;
|
|
public RollCallEmployeeViewModel Employees;
|
|
public bool HasEmployees;
|
|
public int MaxPersonValid;
|
|
public long WorkshopId;
|
|
public int PageIndex;
|
|
|
|
private readonly IWorkshopApplication _workshopApplication;
|
|
private readonly IEmployeeApplication _employeeApplication;
|
|
private readonly IRollCallEmployeeApplication _rollCallEmployeeApplication;
|
|
private readonly IRollCallServiceApplication _rollCallServiceApplication;
|
|
private readonly IWebHostEnvironment _webHostEnvironment;
|
|
private readonly IPasswordHasher _passwordHasher;
|
|
private readonly IRollCallEmployeeStatusApplication _rollCallEmployeeStatusApplication;
|
|
public EmployeeUploadPictureModel(IWorkshopApplication workshopApplication, IPasswordHasher passwordHasher, IRollCallEmployeeApplication rollCallEmployeeApplication, IRollCallServiceApplication rollCallServiceApplication, IWebHostEnvironment webHostEnvironment, IEmployeeApplication employeeApplication, IRollCallEmployeeStatusApplication rollCallEmployeeStatusApplication)
|
|
{
|
|
_workshopApplication = workshopApplication;
|
|
_passwordHasher = passwordHasher;
|
|
_rollCallEmployeeApplication = rollCallEmployeeApplication;
|
|
_rollCallServiceApplication = rollCallServiceApplication;
|
|
_webHostEnvironment = webHostEnvironment;
|
|
_employeeApplication = employeeApplication;
|
|
_rollCallEmployeeStatusApplication = rollCallEmployeeStatusApplication;
|
|
}
|
|
|
|
public IActionResult OnGet()
|
|
{
|
|
var workshopHash = User.FindFirstValue("WorkshopSlug");
|
|
var workshopId = _passwordHasher.SlugDecrypt(workshopHash);
|
|
if (workshopId > 0)
|
|
{
|
|
var serviceActive = _rollCallServiceApplication.GetActiveServiceByWorkshopId(workshopId);
|
|
if (serviceActive == null)
|
|
return Redirect("/Client/Company/RollCall");
|
|
|
|
var workshop = _workshopApplication.GetWorkshopInfo(workshopId);
|
|
WorkshopFullName = workshop.WorkshopFullName;
|
|
|
|
MaxPersonValid = _rollCallServiceApplication.GetActiveServiceByWorkshopId(workshopId).MaxPersonValid;
|
|
|
|
var distinctEmployees = _rollCallEmployeeApplication.GetPersonnelRollCallListPaginate(new RollCallEmployeeSearchModel()
|
|
{
|
|
WorkshopId = workshopId,
|
|
PageIndex = 0
|
|
});
|
|
|
|
HasEmployees = distinctEmployees.Count > 0 ? true : false;
|
|
|
|
return Page();
|
|
}
|
|
else
|
|
{
|
|
return NotFound();
|
|
}
|
|
}
|
|
|
|
public IActionResult OnGetEmployeeUploadDataAjax(int pageIndex, string searchName)
|
|
{
|
|
var workshopHash = User.FindFirstValue("WorkshopSlug");
|
|
var workshopId = _passwordHasher.SlugDecrypt(workshopHash);
|
|
if (workshopId > 0)
|
|
{
|
|
MaxPersonValid = _rollCallServiceApplication.GetActiveServiceByWorkshopId(workshopId).MaxPersonValid;
|
|
|
|
var distinctEmployees = _rollCallEmployeeApplication.GetPersonnelRollCallListPaginate(new RollCallEmployeeSearchModel()
|
|
{
|
|
WorkshopId = workshopId,
|
|
PageIndex = pageIndex,
|
|
Name = searchName
|
|
});
|
|
Employees = new RollCallEmployeeViewModel
|
|
{
|
|
PersonnelInfoViewModels = distinctEmployees
|
|
};
|
|
|
|
return new JsonResult(new
|
|
{
|
|
isSuccedded = true,
|
|
data = Employees,
|
|
pageIndex = Employees.PersonnelInfoViewModels.Count()
|
|
});
|
|
}
|
|
else
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
isSuccedded = false,
|
|
message = "کارگاهی یافت نشد"
|
|
});
|
|
}
|
|
}
|
|
|
|
public IActionResult OnGetLoadInfoCount()
|
|
{
|
|
var workshopHash = User.FindFirstValue("WorkshopSlug");
|
|
var workshopId = _passwordHasher.SlugDecrypt(workshopHash);
|
|
if (workshopId <= 0)
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
isSuccedded = false,
|
|
message = "کارگاهی یافت نشد"
|
|
});
|
|
}
|
|
|
|
var activeService = _rollCallServiceApplication.GetActiveServiceByWorkshopId(workshopId);
|
|
var maxPersonValid = activeService.MaxPersonValid;
|
|
|
|
var employees = _rollCallEmployeeApplication.GetPersonnelRollCallListAll(workshopId);
|
|
|
|
var activeCount = employees.Count(e => e.IsActiveString == "true");
|
|
var inactiveCount = employees.Count(e => e.IsActiveString == "false");
|
|
|
|
return new JsonResult(new
|
|
{
|
|
isSuccedded = true,
|
|
maxPersonValid = maxPersonValid == -1 ? "نامحدود" : maxPersonValid.ToString(),
|
|
isTrueActiveCount = activeCount,
|
|
isFalseActiveCount = inactiveCount,
|
|
message = "موفق"
|
|
});
|
|
}
|
|
|
|
public IActionResult OnGetCheckModalTakeImage()
|
|
{
|
|
var workshopHash = User.FindFirstValue("WorkshopSlug");
|
|
var workshopId = _passwordHasher.SlugDecrypt(workshopHash);
|
|
|
|
if (workshopId <= 0)
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
isSuccedded = false,
|
|
message = "کارگاه شما یافت نشده است"
|
|
});
|
|
}
|
|
|
|
var plan = _rollCallServiceApplication.GetActiveServiceByWorkshopId(workshopId);
|
|
|
|
if (plan == null)
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
isSuccedded = false,
|
|
message = "شما سرویس خریداری شده ندارید"
|
|
});
|
|
}
|
|
|
|
if (plan.IsActiveString != "true")
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
isSuccedded = false,
|
|
message = "سرویس شما فعال نیست"
|
|
});
|
|
}
|
|
|
|
var maxValid = plan.MaxPersonValid;
|
|
|
|
if (maxValid == -1 || _rollCallEmployeeApplication.activedPerson(workshopId) < maxValid)
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
isSuccedded = true,
|
|
message = "موفق"
|
|
});
|
|
}
|
|
|
|
return new JsonResult(new
|
|
{
|
|
isSuccedded = false,
|
|
message = "محدودیت افزودن پرسنل"
|
|
});
|
|
}
|
|
|
|
public IActionResult OnGetModalTakeImages(long employeeId)
|
|
{
|
|
var workshopHash = User.FindFirstValue("WorkshopSlug");
|
|
var workshopId = _passwordHasher.SlugDecrypt(workshopHash);
|
|
if (workshopId > 0)
|
|
{
|
|
|
|
var employeeWorkshopInfo = _rollCallEmployeeApplication.GetByEmployeeIdAndWorkshopId(employeeId, workshopId);
|
|
|
|
bool hasPicture = false;
|
|
if (employeeWorkshopInfo != null && !string.IsNullOrEmpty(employeeWorkshopInfo.HasUploadedImage))
|
|
hasPicture = bool.Parse(employeeWorkshopInfo.HasUploadedImage);
|
|
|
|
var employeeDetails = _employeeApplication.GetDetails(employeeId);
|
|
|
|
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);
|
|
}
|
|
|
|
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()
|
|
{
|
|
IsSuccedded = false,
|
|
Message = "هیج کارگاهی یافت نشد"
|
|
};
|
|
return Partial("../Error/_ErrorModal", resultError);
|
|
}
|
|
}
|
|
|
|
public IActionResult OnPostTakePicture(string base64pic1, string base64pic2, long workshopId, long employeeId)
|
|
{
|
|
try
|
|
{
|
|
var directoryPath = $"{_webHostEnvironment.ContentRootPath}\\Faces\\{workshopId}\\{employeeId}";
|
|
if (!Directory.Exists(directoryPath))
|
|
Directory.CreateDirectory(directoryPath);
|
|
|
|
var filePath1 = Path.Combine(directoryPath) + $@"\1.jpg";
|
|
CreateImageFromBase64(base64pic1, filePath1);
|
|
var filePath2 = Path.Combine(directoryPath) + $@"\2.jpg";
|
|
CreateImageFromBase64(base64pic2, filePath2);
|
|
|
|
var employee = _employeeApplication.GetDetailsForClient(employeeId, workshopId);
|
|
var rollCallEmployee = _rollCallEmployeeApplication.GetByEmployeeIdAndWorkshopId(employeeId, workshopId);
|
|
|
|
var result = new OperationResult()
|
|
{
|
|
IsSuccedded = false,
|
|
Message = "هنوز عملیاتی انجام نشده است"
|
|
};
|
|
if (rollCallEmployee == null)
|
|
{
|
|
var createCommand = new CreateRollCallEmployee()
|
|
{
|
|
EmployeeId = employeeId,
|
|
WorkshopId = workshopId,
|
|
EmployeeFullName = employee.EmployeeFullName,
|
|
HasUploadedImage = "true",
|
|
};
|
|
result = _rollCallEmployeeApplication.Create(createCommand);
|
|
_rollCallEmployeeStatusApplication.Create(new CreateRollCallEmployeeStatus()
|
|
{ RollCallEmployeeId = result.SendId });
|
|
}
|
|
else
|
|
{
|
|
result = _rollCallEmployeeApplication.UploadedImage(employeeId, workshopId);
|
|
}
|
|
|
|
if (result.IsSuccedded)
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
IsSuccedded = result.IsSuccedded,
|
|
Message = result.Message,
|
|
src = Tools.ResizeImage(Path.Combine(_webHostEnvironment.ContentRootPath, "Faces", workshopId.ToString(), employeeId.ToString(), "1.jpg"), 150, 150)
|
|
});
|
|
}
|
|
else
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
IsSuccedded = result.IsSuccedded,
|
|
Message = result.Message,
|
|
});
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Console.WriteLine(e);
|
|
return new JsonResult(new
|
|
{
|
|
IsSuccedded = false,
|
|
Message = e.Message,
|
|
});
|
|
}
|
|
}
|
|
|
|
public void CreateImageFromBase64(string base64, string imagePathWithExtension)
|
|
{
|
|
var subBase64 = base64.Substring(base64.LastIndexOf(',') + 1);
|
|
byte[] bytes = Convert.FromBase64String(subBase64);
|
|
System.IO.File.WriteAllBytes(imagePathWithExtension, bytes);
|
|
}
|
|
|
|
public IActionResult OnPostActivePersonnel(long id)
|
|
{
|
|
var workshopHash = User.FindFirstValue("WorkshopSlug");
|
|
var workshopId = _passwordHasher.SlugDecrypt(workshopHash);
|
|
if (workshopId > 0)
|
|
{
|
|
var hasRollCallEmployee = _rollCallEmployeeApplication.GetDetails(id);
|
|
|
|
if (hasRollCallEmployee == null)
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
isSuccedded = false,
|
|
message = "برای این پرسنل، هنوز هیچ عکسی آپلود نشده است. بعد از آپلود عکس بطور خودکار فعال خواهد شد",
|
|
});
|
|
}
|
|
else
|
|
{
|
|
if (hasRollCallEmployee.HasUploadedImage == "false")
|
|
return new JsonResult(new
|
|
{
|
|
isSuccedded = false,
|
|
message = "برای این پرسنل، هنوز هیچ عکسی آپلود نشده است. بعد از آپلود عکس بطور خودکار فعال خواهد شد",
|
|
});
|
|
|
|
var result = _rollCallEmployeeApplication.Active(hasRollCallEmployee.Id);
|
|
if (result.IsSuccedded)
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
isSuccedded = result.IsSuccedded,
|
|
message = result.Message,
|
|
});
|
|
}
|
|
else
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
isSuccedded = result.IsSuccedded,
|
|
message = result.Message,
|
|
});
|
|
}
|
|
}
|
|
return new JsonResult(new
|
|
{
|
|
isSuccedded = false,
|
|
message = "خطایی رخ آمده است",
|
|
});
|
|
}
|
|
else
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
isSuccedded = false,
|
|
message = "کارگاه شما یافت نشد",
|
|
});
|
|
}
|
|
}
|
|
|
|
public IActionResult OnPostDeActivePersonnel(long id)
|
|
{
|
|
var workshopHash = User.FindFirstValue("WorkshopSlug");
|
|
var workshopId = _passwordHasher.SlugDecrypt(workshopHash);
|
|
if (workshopId > 0)
|
|
{
|
|
var result = _rollCallEmployeeApplication.DeActive(id);
|
|
if (result.IsSuccedded)
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
isSuccedded = result.IsSuccedded,
|
|
message = result.Message,
|
|
});
|
|
}
|
|
|
|
return new JsonResult(new
|
|
{
|
|
isSuccedded = result.IsSuccedded,
|
|
message = result.Message,
|
|
});
|
|
}
|
|
else
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
isSuccedded = false,
|
|
message = "کارگاه شما یافت نشد",
|
|
});
|
|
}
|
|
}
|
|
|
|
public IActionResult OnGetLoadFirstImage(long employeeId, long workshopId)
|
|
{
|
|
var directoryPath = $"{_webHostEnvironment.ContentRootPath}\\Faces\\{workshopId}\\{employeeId}";
|
|
var imageDir = Path.Combine(directoryPath, "1.jpg");
|
|
return PhysicalFile(imageDir, "image/jpeg");
|
|
}
|
|
|
|
public IActionResult OnGetLoadSecondImage(long employeeId, long workshopId)
|
|
{
|
|
var directoryPath = $"{_webHostEnvironment.ContentRootPath}\\Faces\\{workshopId}\\{employeeId}";
|
|
var imageDir = Path.Combine(directoryPath, "2.jpg");
|
|
return PhysicalFile(imageDir, "image/jpeg");
|
|
}
|
|
}
|
|
}
|