Files
Backend-Api/ServiceHost/Areas/AdminNew/Pages/Company/RollCall/EmployeeUploadPicture.cshtml.cs

365 lines
12 KiB
C#

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.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using System.Security.Claims;
using _0_Framework.Application;
namespace ServiceHost.Areas.AdminNew.Pages.Company.RollCall
{
public class EmployeeUploadPictureModel : PageModel
{
public string WorkshopFullName;
public RollCallEmployeeViewModel Employees;
public RollCallServiceViewModel RollCallService;
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(long workshopId)
{
RollCallService = _rollCallServiceApplication.GetActiveServiceByWorkshopId(workshopId);
if (RollCallService == null)
return Redirect("/AdminNew/Company/RollCall");
var workshop = _workshopApplication.GetWorkshopInfo(workshopId);
WorkshopFullName = workshop.WorkshopFullName;
MaxPersonValid = RollCallService.MaxPersonValid;
//var distinctEmployees = _rollCallEmployeeApplication.GetPersonnelRollCallListPaginate(new RollCallEmployeeSearchModel()
//{
//});
WorkshopId = workshopId;
PageIndex = 0;
HasEmployees = _rollCallEmployeeApplication.HasEmployees(workshopId);
return Page();
}
public IActionResult OnGetEmployeeUploadDataAjax(int pageIndex, string searchName, long workshopId)
{
//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()
});
}
public IActionResult OnGetLoadInfoCount(long workshopId)
{
//var activeService = _rollCallServiceApplication.GetActiveServiceByWorkshopId(workshopId);
//var maxPersonValid = activeService.MaxPersonValid;
var employeesCount = _rollCallEmployeeApplication.GetActiveAndDeActiveRollCallEmployees(workshopId);
return new JsonResult(new
{
isSuccedded = true,
maxPersonValid = MaxPersonValid == -1 ? "نامحدود" : MaxPersonValid.ToString(),
isTrueActiveCount = employeesCount.activeEmployees,
isFalseActiveCount = employeesCount.deActiveEmployees,
message = "موفق"
});
}
public IActionResult OnGetCheckModalTakeImage(long workshopId)
{
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 = RollCallService.MaxPersonValid;
if (MaxPersonValid == -1 || _rollCallEmployeeApplication.activedPerson(workshopId) < MaxPersonValid)
{
return new JsonResult(new
{
isSuccedded = true,
message = "موفق"
});
}
return new JsonResult(new
{
isSuccedded = false,
message = "محدودیت افزودن پرسنل"
});
}
public IActionResult OnGetModalTakeImages(long employeeId, long workshopId)
{
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)
{
string path1 = $"{_webHostEnvironment.ContentRootPath}\\Faces\\{workshopId}\\{employeeId}\\{1}.jpg";
string path2 = $"{_webHostEnvironment.ContentRootPath}\\Faces\\{workshopId}\\{employeeId}\\{2}.jpg";
if (System.IO.File.Exists(path1))
{
byte[] fileContent1 = System.IO.File.ReadAllBytes(path1);
pic1 = Convert.ToBase64String(fileContent1);
}
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);
}
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 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,
});
}
}
}
public IActionResult OnPostDeActivePersonnel(long id)
{
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,
});
}
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");
}
public IActionResult OnGetModalChangeName(long employeeId, long workshopId)
{
var command = _rollCallEmployeeApplication.GetByEmployeeIdAndWorkshopId(employeeId, workshopId);
return Partial("ModalChangeName", command);
}
public IActionResult OnPostChangeName(long rollCallEmployeeId, string fName, string lName)
{
var result = _rollCallEmployeeApplication.ChangeEmployeeRollCallName(rollCallEmployeeId, fName, lName);
return new JsonResult(new
{
isSuccedded = result.IsSuccedded,
message = result.Message,
});
}
}
}