1662 lines
68 KiB
C#
1662 lines
68 KiB
C#
using _0_Framework.Application;
|
|
using _0_Framework.InfraStructure;
|
|
using Company.Domain.EmployeeAgg;
|
|
using Company.Domain.LeftWorkAgg;
|
|
using Company.Domain.WorkshopAgg;
|
|
using CompanyManagment.App.Contracts.Employee;
|
|
using CompanyManagment.App.Contracts.EmployeeInsuranceRecord;
|
|
using CompanyManagment.EFCore;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using System.Transactions;
|
|
using Company.Domain.EmployeeClientTempAgg;
|
|
using Company.Domain.PersonnelCodeAgg;
|
|
using EmployeeInsuranceRecord = Company.Domain.EmployeeInsuranceRecordAgg.EmployeeInsuranceRecord;
|
|
using Microsoft.AspNetCore.Hosting;
|
|
using System.IO;
|
|
using _0_Framework.Application.UID;
|
|
using Company.Domain.CustomizeWorkshopEmployeeSettingsAgg;
|
|
using Company.Domain.CustomizeWorkshopGroupSettingsAgg;
|
|
using Company.Domain.EmployeeDocumentsAgg;
|
|
using Company.Domain.LeftWorkTempAgg;
|
|
using Company.Domain.RollCallEmployeeAgg;
|
|
using CompanyManagment.App.Contracts.CustomizeWorkshopSettings;
|
|
using CompanyManagment.App.Contracts.EmployeeBankInformation;
|
|
using CompanyManagment.App.Contracts.EmployeeDocuments;
|
|
using CompanyManagment.App.Contracts.RollCallEmployeeStatus;
|
|
using RollCallEmployee = Company.Domain.RollCallEmployeeAgg.RollCallEmployee;
|
|
using CompanyManagment.App.Contracts.Employee.DTO;
|
|
using CompanyManagment.App.Contracts.LeftWorkTemp;
|
|
using System.Reflection;
|
|
using Company.Domain.EmployeeAuthorizeTempAgg;
|
|
using Company.Domain.RollCallServiceAgg;
|
|
using Microsoft.Extensions.Configuration;
|
|
|
|
namespace CompanyManagment.Application;
|
|
|
|
public class EmployeeAplication : RepositoryBase<long, Employee>, IEmployeeApplication
|
|
{
|
|
private readonly IEmployeeRepository _EmployeeRepository;
|
|
private readonly IWorkshopRepository _WorkShopRepository;
|
|
private readonly ILeftWorkRepository _leftWorkRepository;
|
|
private readonly IPersonnelCodeRepository _personnelCodeRepository;
|
|
private readonly IEmployeeClientTempRepository _employeeClientTempRepository;
|
|
private readonly CompanyContext _context;
|
|
public bool nationalCodValid = false;
|
|
public bool idnumberIsOk = true;
|
|
public bool nameIsOk = true;
|
|
public bool nationalcodeIsOk = true;
|
|
public bool StatCity = true;
|
|
public bool city = true;
|
|
public bool address = true;
|
|
private readonly IWebHostEnvironment _webHostEnvironment;
|
|
private readonly IRollCallEmployeeStatusApplication _rollCallEmployeeStatusApplication;
|
|
private readonly IRollCallEmployeeRepository _rollCallEmployeeRepository;
|
|
private readonly ICustomizeWorkshopSettingsApplication _customizeWorkshopSettingsApplication;
|
|
private readonly IEmployeeDocumentsApplication _employeeDocumentsApplication;
|
|
private readonly IEmployeeBankInformationApplication _employeeBankInformationApplication;
|
|
private readonly ILeftWorkTempRepository _leftWorkTempRepository;
|
|
private readonly IUidService _uidService;
|
|
private readonly ICustomizeWorkshopEmployeeSettingsRepository _customizeWorkshopEmployeeSettingsRepository;
|
|
private readonly IEmployeeAuthorizeTempRepository _employeeAuthorizeTempRepository;
|
|
private readonly IRollCallServiceRepository _rollCallServiceRepository;
|
|
|
|
public EmployeeAplication(IEmployeeRepository employeeRepository, CompanyContext context, IWorkshopRepository workShopRepository,
|
|
ILeftWorkRepository leftWorkRepository, IPersonnelCodeRepository personnelCodeRepository,
|
|
IEmployeeClientTempRepository employeeClientTempRepository, IWebHostEnvironment webHostEnvironment,
|
|
IRollCallEmployeeStatusApplication rollCallEmployeeStatusApplication, IRollCallEmployeeRepository rollCallEmployeeRepository,
|
|
ICustomizeWorkshopGroupSettingsRepository customizeWorkshopGroupSettingsRepository,
|
|
ICustomizeWorkshopSettingsApplication customizeWorkshopSettingsApplication, IEmployeeDocumentsApplication employeeDocumentsApplication,
|
|
IEmployeeBankInformationApplication employeeBankInformationApplication, ILeftWorkTempRepository leftWorkTempRepository,
|
|
IUidService uidService, ICustomizeWorkshopEmployeeSettingsRepository customizeWorkshopEmployeeSettingsRepository,
|
|
IEmployeeAuthorizeTempRepository employeeAuthorizeTempRepository, IRollCallServiceRepository rollCallServiceRepository) : base(context)
|
|
{
|
|
_context = context;
|
|
_WorkShopRepository = workShopRepository;
|
|
_EmployeeRepository = employeeRepository;
|
|
this._leftWorkRepository = leftWorkRepository;
|
|
_personnelCodeRepository = personnelCodeRepository;
|
|
_employeeClientTempRepository = employeeClientTempRepository;
|
|
_webHostEnvironment = webHostEnvironment;
|
|
_rollCallEmployeeStatusApplication = rollCallEmployeeStatusApplication;
|
|
_rollCallEmployeeRepository = rollCallEmployeeRepository;
|
|
_customizeWorkshopSettingsApplication = customizeWorkshopSettingsApplication;
|
|
_employeeDocumentsApplication = employeeDocumentsApplication;
|
|
_employeeBankInformationApplication = employeeBankInformationApplication;
|
|
_leftWorkTempRepository = leftWorkTempRepository;
|
|
_uidService = uidService;
|
|
_customizeWorkshopEmployeeSettingsRepository = customizeWorkshopEmployeeSettingsRepository;
|
|
_employeeAuthorizeTempRepository = employeeAuthorizeTempRepository;
|
|
_rollCallServiceRepository = rollCallServiceRepository;
|
|
}
|
|
|
|
public OperationResult Create(CreateEmployee command)
|
|
{
|
|
var opration = new OperationResult();
|
|
if (_EmployeeRepository.Exists(x =>
|
|
x.LName == command.LName && x.NationalCode == command.NationalCode && !string.IsNullOrWhiteSpace(command.NationalCode) && x.NationalCode != null))
|
|
return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد");
|
|
|
|
//if (_EmployeeRepository.Exists(x => x.IdNumber == command.IdNumber && x.IdNumber !=null))
|
|
//{
|
|
// idnumberIsOk = false;
|
|
|
|
// return opration.Failed("شماره شناسنامه وارد شده تکراری است");
|
|
//}
|
|
|
|
//if (_EmployeeRepository.Exists(x => x.LName == command.LName && x.FName == command.FName))
|
|
//{
|
|
// nameIsOk = false;
|
|
|
|
// return opration.Failed("نام و نام خانوادگی وارد شده تکراری است");
|
|
|
|
//}
|
|
|
|
|
|
|
|
if (command.Address != null && command.State == null)
|
|
{
|
|
StatCity = false;
|
|
return opration.Failed("لطفا استان و شهر را انتخاب کنید");
|
|
}
|
|
|
|
if ((command.Address != null && command.State != null) && command.City == "لطفا شهر را انتخاب نمایید")
|
|
{
|
|
city = false;
|
|
return opration.Failed("لطفا شهر را انتخاب کنید");
|
|
}
|
|
|
|
if (command.Address == null && command.State != null)
|
|
{
|
|
address = false;
|
|
return opration.Failed("لطفا آدرس را وارد کنید");
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(command.NationalCode))
|
|
{
|
|
try
|
|
{
|
|
|
|
|
|
char[] chArray = command.NationalCode.ToCharArray();
|
|
int[] numArray = new int[chArray.Length];
|
|
var cunt = chArray.Length;
|
|
for (int i = 0; i < chArray.Length; i++)
|
|
{
|
|
numArray[i] = (int)char.GetNumericValue(chArray[i]);
|
|
}
|
|
|
|
int num2 = numArray[9];
|
|
switch (command.NationalCode)
|
|
{
|
|
case "0000000000":
|
|
case "1111111111":
|
|
case "2222222222":
|
|
case "3333333333":
|
|
case "4444444444":
|
|
case "5555555555":
|
|
case "6666666666":
|
|
case "7777777777":
|
|
case "8888888888":
|
|
case "9999999999":
|
|
|
|
|
|
|
|
nationalCodValid = false;
|
|
return opration.Failed("کد ملی وارد شده صحیح نمی باشد");
|
|
|
|
|
|
}
|
|
|
|
int num3 =
|
|
((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) +
|
|
(numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) +
|
|
(numArray[8] * 2);
|
|
int num4 = num3 - ((num3 / 11) * 11);
|
|
if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) ||
|
|
((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10)
|
|
{
|
|
|
|
|
|
|
|
nationalCodValid = true;
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
nationalCodValid = false;
|
|
return opration.Failed("کد ملی وارد شده نا معتبر است");
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
|
|
nationalCodValid = false;
|
|
return opration.Failed("لطفا کد ملی 10 رقمی وارد کنید");
|
|
|
|
}
|
|
if (_EmployeeRepository.Exists(x => x.NationalCode == command.NationalCode))
|
|
{
|
|
nationalcodeIsOk = false;
|
|
|
|
return opration.Failed("کد ملی وارد شده تکراری است");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
string initial = "1300/10/11";
|
|
var dateOfBirth = command.DateOfBirth != null ? command.DateOfBirth.ToGeorgianDateTime() : initial.ToGeorgianDateTime();
|
|
var dateOfIssue = command.DateOfIssue != null ? command.DateOfIssue.ToGeorgianDateTime() : initial.ToGeorgianDateTime();
|
|
|
|
|
|
var employeeData = new Employee(command.FName, command.LName, command.FatherName, dateOfBirth,
|
|
dateOfIssue,
|
|
command.PlaceOfIssue, command.NationalCode, command.IdNumber, command.Gender, command.Nationality, command.IdNumberSerial, command.IdNumberSeri,
|
|
command.Phone, command.Address,
|
|
command.State, command.City, command.MaritalStatus, command.MilitaryService, command.LevelOfEducation,
|
|
command.FieldOfStudy, command.BankCardNumber,
|
|
command.BankBranch, command.InsuranceCode, command.InsuranceHistoryByYear,
|
|
command.InsuranceHistoryByMonth, command.NumberOfChildren, command.OfficePhone, command.MclsUserName, command.MclsPassword, command.EserviceUserName, command.EservicePassword,
|
|
command.TaxOfficeUserName, command.TaxOfficepassword, command.SanaUserName, command.SanaPassword);
|
|
|
|
if (command.IsAuthorized)
|
|
{
|
|
employeeData.Authorized();
|
|
}
|
|
_EmployeeRepository.Create(employeeData);
|
|
_EmployeeRepository.SaveChanges();
|
|
|
|
return opration.Succcedded(employeeData.id);
|
|
|
|
|
|
}
|
|
|
|
|
|
public OperationResult Edit(EditEmployee command)
|
|
{
|
|
var opration = new OperationResult();
|
|
var employee = _EmployeeRepository.Get(command.Id);
|
|
if (employee == null)
|
|
return opration.Failed("رکورد مورد نظر یافت نشد");
|
|
|
|
if (_EmployeeRepository.Exists(x =>
|
|
x.LName == command.LName && x.NationalCode == command.NationalCode && !string.IsNullOrWhiteSpace(command.NationalCode) && x.id != command.Id))
|
|
return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد");
|
|
//if (_EmployeeRepository.Exists(x => x.IdNumber == command.IdNumber && x.IdNumber != null && x.id != command.Id))
|
|
// return opration.Failed("شماره شناسنامه وارد شده تکراری است");
|
|
|
|
if (command.Address != null && command.State == null)
|
|
{
|
|
StatCity = false;
|
|
return opration.Failed("لطفا استان و شهر را انتخاب کنید");
|
|
}
|
|
|
|
if ((command.Address != null && command.State != null) && command.City == "لطفا شهر را انتخاب نمایید")
|
|
{
|
|
city = false;
|
|
return opration.Failed("لطفا شهر را انتخاب کنید");
|
|
}
|
|
|
|
if (command.Address == null && command.State != null)
|
|
{
|
|
address = false;
|
|
return opration.Failed("لطفا آدرس را وارد کنید");
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(command.NationalCode))
|
|
{
|
|
try
|
|
{
|
|
|
|
|
|
char[] chArray = command.NationalCode.ToCharArray();
|
|
int[] numArray = new int[chArray.Length];
|
|
var cunt = chArray.Length;
|
|
for (int i = 0; i < chArray.Length; i++)
|
|
{
|
|
numArray[i] = (int)char.GetNumericValue(chArray[i]);
|
|
}
|
|
|
|
int num2 = numArray[9];
|
|
switch (command.NationalCode)
|
|
{
|
|
case "0000000000":
|
|
case "1111111111":
|
|
case "2222222222":
|
|
case "3333333333":
|
|
case "4444444444":
|
|
case "5555555555":
|
|
case "6666666666":
|
|
case "7777777777":
|
|
case "8888888888":
|
|
case "9999999999":
|
|
|
|
|
|
|
|
nationalCodValid = false;
|
|
return opration.Failed("کد ملی وارد شده صحیح نمی باشد");
|
|
|
|
|
|
}
|
|
|
|
int num3 =
|
|
((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) +
|
|
(numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) +
|
|
(numArray[8] * 2);
|
|
int num4 = num3 - ((num3 / 11) * 11);
|
|
if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) ||
|
|
((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10)
|
|
{
|
|
|
|
|
|
|
|
nationalCodValid = true;
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
nationalCodValid = false;
|
|
return opration.Failed("کد ملی وارد شده نا معتبر است");
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
|
|
nationalCodValid = false;
|
|
return opration.Failed("لطفا کد ملی 10 رقمی وارد کنید");
|
|
|
|
}
|
|
if (_EmployeeRepository.Exists(x => x.NationalCode == command.NationalCode && x.id != command.Id))
|
|
{
|
|
nationalcodeIsOk = false;
|
|
|
|
return opration.Failed("کد ملی وارد شده تکراری است");
|
|
}
|
|
}
|
|
|
|
|
|
string initial = "1300/10/11";
|
|
var dateOfBirth = command.DateOfBirth != null ? command.DateOfBirth.ToGeorgianDateTime() : initial.ToGeorgianDateTime();
|
|
var dateOfIssue = command.DateOfIssue != null ? command.DateOfIssue.ToGeorgianDateTime() : initial.ToGeorgianDateTime();
|
|
employee.Edit(command.FName, command.LName, command.FatherName, dateOfBirth,
|
|
dateOfIssue,
|
|
command.PlaceOfIssue, command.NationalCode, command.IdNumber, command.Gender, command.Nationality,
|
|
command.Phone, command.Address,
|
|
command.State, command.City, command.MaritalStatus, command.MilitaryService, command.LevelOfEducation,
|
|
command.FieldOfStudy, command.BankCardNumber,
|
|
command.BankBranch, command.InsuranceCode, command.InsuranceHistoryByYear,
|
|
command.InsuranceHistoryByMonth, command.NumberOfChildren, command.OfficePhone
|
|
, command.MclsUserName, command.MclsPassword, command.EserviceUserName, command.EservicePassword,
|
|
command.TaxOfficeUserName, command.TaxOfficepassword, command.SanaUserName, command.SanaPassword);
|
|
|
|
|
|
|
|
_EmployeeRepository.SaveChanges();
|
|
|
|
return opration.Succcedded();
|
|
|
|
|
|
}
|
|
|
|
public EditEmployee GetDetails(long id)
|
|
{
|
|
return _EmployeeRepository.GetDetails(id);
|
|
}
|
|
|
|
public EditEmployee GetDetailsIgnoreQueryFilter(long id)
|
|
{
|
|
return _EmployeeRepository.GetDetails(id);
|
|
}
|
|
|
|
public OperationResult Active(long id)
|
|
{
|
|
var opration = new OperationResult();
|
|
var employer = _EmployeeRepository.Get(id);
|
|
if (employer == null)
|
|
return opration.Failed("رکورد مورد نظر یافت نشد");
|
|
|
|
employer.Active();
|
|
|
|
_EmployeeRepository.SaveChanges();
|
|
return opration.Succcedded();
|
|
}
|
|
|
|
public OperationResult DeActive(long id)
|
|
{
|
|
var opration = new OperationResult();
|
|
var employer = _EmployeeRepository.Get(id);
|
|
if (employer == null)
|
|
return opration.Failed("رکورد مورد نظر یافت نشد");
|
|
|
|
employer.DeActive();
|
|
|
|
_EmployeeRepository.SaveChanges();
|
|
return opration.Succcedded();
|
|
}
|
|
|
|
public Task<List<EmployeeSelectListViewModel>> GetEmployeeToList()
|
|
{
|
|
return _EmployeeRepository.GetEmployeeToList();
|
|
}
|
|
|
|
public List<EmployeeViewModel> GetEmployee()
|
|
{
|
|
return _EmployeeRepository.GetEmployee();
|
|
}
|
|
|
|
public async Task<List<EmployeeViewModel>> Search(EmployeeSearchModel searchModel)
|
|
{
|
|
var res = await _EmployeeRepository.Search(searchModel);
|
|
|
|
foreach (var item in res)
|
|
{
|
|
var children = _context.EmployeeChildrenSet.Count(x => x.EmployeeId == item.Id);
|
|
item.NumberOfChildren = Convert.ToString(children);
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
|
|
public List<EmployeeInsuranceRecordViewModel> SearchInsuranceRecord(EmployeeInsuranceRecordSearchModel searchModel)
|
|
{
|
|
return _EmployeeRepository.SearchInsuranceRecord(searchModel);
|
|
}
|
|
|
|
public OperationResult CreateEmployeeInsuranceRecord(CreateEmployeeInsuranceRecord command)
|
|
{
|
|
var opration = new OperationResult();
|
|
|
|
var employeeData = new EmployeeInsuranceRecord(command.EmployeeId, command.WorkShopId, command.DateOfStart, command.DateOfEnd);
|
|
|
|
_EmployeeRepository.CreateEmployeeInsuranceRecord(employeeData);
|
|
_EmployeeRepository.SaveChanges();
|
|
|
|
return opration.Succcedded();
|
|
|
|
|
|
}
|
|
public OperationResult EditEmployeeInsuranceRecord(EditEmployeeInsuranceRecord command)
|
|
{
|
|
var opration = new OperationResult();
|
|
var employee = _EmployeeRepository.GetEmployeeInsuranceRecord(command.Id);
|
|
employee.Edit(command.EmployeeId, command.WorkShopId, command.DateOfStart, command.DateOfEnd);
|
|
_EmployeeRepository.SaveChanges();
|
|
|
|
return opration.Succcedded();
|
|
|
|
|
|
}
|
|
public void RemoveEmployeeInsuranceRecord(long Id)
|
|
{
|
|
_EmployeeRepository.RemoveEmployeeInsuranceRecord(Id);
|
|
}
|
|
|
|
public OperationResult ValidationEmployeeInsuranceRecord(EmployeeInsuranceRecordViewModel eir)
|
|
{
|
|
var opration = new OperationResult();
|
|
if (eir.WorkShopId == 0)
|
|
{
|
|
return opration.Failed("خطا در انتخاب کارگاه");
|
|
|
|
}
|
|
var ws = _WorkShopRepository.GetDetails(eir.WorkShopId);
|
|
if (string.IsNullOrWhiteSpace(eir.DateOfStart))
|
|
{
|
|
return opration.Failed("تاریخ شروع نمی تواند خالی باشد - " + ws.WorkshopFullName);
|
|
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(eir.DateOfEnd))
|
|
{
|
|
if (eir.DateOfEnd.ToGeorgianDateTime() < eir.DateOfStart.ToGeorgianDateTime())
|
|
{
|
|
return opration.Failed("خطا در وارد کردن تاریخ ئر کارگاه " + ws.WorkshopFullName);
|
|
}
|
|
|
|
}
|
|
|
|
if (eir.DateOfStart.ToString() == "1/1/0001 12:00:00 AM")
|
|
{
|
|
return opration.Failed("تاریخ شروع نمی تواند خالی باشد - " + ws.WorkshopFullName);
|
|
}
|
|
|
|
return opration.Succcedded();
|
|
}
|
|
public OperationResult ValidationEmployeeInsuranceRecord(List<CreateEmployeeInsuranceRecord> eir_lst)
|
|
{
|
|
var opration = new OperationResult();
|
|
int count = 0;
|
|
var _eir_lst = eir_lst.OrderBy(x => x.DateOfStart);
|
|
var ws = eir_lst.Select(x => x.WorkShopId).ToList();
|
|
|
|
foreach (var work in ws)
|
|
{
|
|
var wshop = _WorkShopRepository.GetDetails(work);
|
|
var q = _eir_lst.Where(x => x.WorkShopId == work).ToList();
|
|
count = 0;
|
|
for (int i = 0; i < q.Count; i++)
|
|
{
|
|
if ((i + 1) < q.Count)
|
|
if (q[i].DateOfEnd > q[i + 1].DateOfStart)
|
|
{
|
|
return opration.Failed("خطا در تداخل تاریخ - " + wshop.WorkshopFullName);
|
|
}
|
|
if (string.IsNullOrEmpty(q[i].DateOfEnd.ToString()))
|
|
{
|
|
count++;
|
|
}
|
|
}
|
|
if (count > 1)
|
|
{
|
|
return opration.Failed("تاریخ ترک کار را وارد نمایید ");
|
|
}
|
|
}
|
|
return opration.Succcedded();
|
|
|
|
|
|
}
|
|
|
|
public OperationResult ValidationEmployeeCompleteItem(long employeeId)
|
|
{
|
|
var opration = new OperationResult();
|
|
string error = "";
|
|
if (employeeId == 0)
|
|
{
|
|
return opration.Failed("خطا در انتخاب پرسنل");
|
|
}
|
|
var employee = _EmployeeRepository.GetDetails(employeeId);
|
|
if (string.IsNullOrWhiteSpace(employee.FName))
|
|
{
|
|
error += "(نام)" + Environment.NewLine;
|
|
}
|
|
if (string.IsNullOrWhiteSpace(employee.LName))
|
|
{
|
|
error += "(نام خانوادگی)" + Environment.NewLine;
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(employee.NationalCode))
|
|
{
|
|
error += "(کد ملی)" + Environment.NewLine;
|
|
}
|
|
if (string.IsNullOrWhiteSpace(employee.PlaceOfIssue))
|
|
{
|
|
error += "(شهر محل تولد)" + Environment.NewLine;
|
|
}
|
|
if (string.IsNullOrWhiteSpace(employee.DateOfBirth))
|
|
{
|
|
error += "(تاریخ تولد)" + Environment.NewLine;
|
|
}
|
|
if (string.IsNullOrWhiteSpace(employee.IdNumber))
|
|
{
|
|
error += "(شماره شناسنامه)" + Environment.NewLine;
|
|
}
|
|
if (string.IsNullOrWhiteSpace(employee.InsuranceCode))
|
|
{
|
|
error += "(شماره بیمه)" + Environment.NewLine;
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(error))
|
|
{
|
|
var note = "آیتم های زیر برای ثبت سابقه الزامی می باشد" + Environment.NewLine + error;
|
|
return opration.Failed(note);
|
|
}
|
|
|
|
return opration.Succcedded();
|
|
}
|
|
|
|
public List<EmployeeViewModel> GetEmployeeByTextSearch(string textSearch)
|
|
{
|
|
return _EmployeeRepository.GetEmployeeByTextSearch(textSearch);
|
|
}
|
|
|
|
|
|
public List<EmployeeViewModel> SearchForClient(EmployeeSearchModel searchModel)
|
|
{
|
|
var res = _EmployeeRepository.SearchForClient(searchModel);
|
|
try
|
|
{
|
|
//Stopwatch w = new Stopwatch();
|
|
//w.Start();
|
|
//foreach (var item in res)
|
|
//{
|
|
// var personnelCode = _context.PersonnelCodeSet.FirstOrDefault(x => x.EmployeeId == item.Id);
|
|
// item.PersonnelCode = personnelCode!=null? personnelCode.PersonnelCode:null;
|
|
//}
|
|
//w.Stop();
|
|
//Console.WriteLine("for :" + w.ElapsedMilliseconds);
|
|
//Stopwatch w2 = new Stopwatch();
|
|
//w2.Start();
|
|
res = res.Select(x => new EmployeeViewModel
|
|
{
|
|
Id = x.Id,
|
|
FName = x.FName,
|
|
LName = x.LName,
|
|
EmployeeFullName = x.FName + " " + x.LName,
|
|
FatherName = x.FatherName,
|
|
NationalCode = x.NationalCode,
|
|
IdNumber = x.IdNumber,
|
|
DateOfBirth = x.DateOfBirth,
|
|
Address = x.Address,
|
|
State = x.State,
|
|
City = x.City,
|
|
Gender = x.Gender,
|
|
InsuranceCode = x.InsuranceCode,
|
|
IsActiveString = x.IsActiveString,
|
|
IsActive = x.IsActive,
|
|
PersonnelCode = _context.PersonnelCodeSet.FirstOrDefault(p => p.EmployeeId == x.Id && p.WorkshopId == searchModel.WorkshopId)?.PersonnelCode
|
|
}).ToList();
|
|
//w2.Stop();
|
|
//Console.WriteLine("efore :" + w2.ElapsedMilliseconds);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
}
|
|
return res;
|
|
}
|
|
|
|
public OperationResult Remove(long id)
|
|
{
|
|
var opration = new OperationResult();
|
|
try
|
|
{
|
|
_EmployeeRepository.Remove(id);
|
|
_EmployeeRepository.SaveChanges();
|
|
opration.Message = "حذف با موفقیت انجام شد";
|
|
opration.IsSuccedded = true;
|
|
return opration;
|
|
}
|
|
catch (Exception er)
|
|
{
|
|
return opration.Failed("حذف با خطا مواجه شد");
|
|
}
|
|
}
|
|
|
|
public List<EmployeeViewModel> GetEmployeeByTextSearchForClient(string textSearch, long workshopId)
|
|
{
|
|
return _EmployeeRepository.GetEmployeeByTextSearchForClient(textSearch, workshopId);
|
|
}
|
|
|
|
public List<EmployeeViewModel> GetEmployeeByTextSearchNationalCodeForClient(string textSearch, long workshopId)
|
|
{
|
|
return _EmployeeRepository.GetEmployeeByTextSearchNationalCodeForClient(textSearch, workshopId);
|
|
}
|
|
|
|
public List<EmployeeViewModel> GetEmployeeByTextSearchInsuranceCodeForClient(string textSearch, long workshopId)
|
|
{
|
|
return _EmployeeRepository.GetEmployeeByTextSearchInsuranceCodeForClient(textSearch, workshopId);
|
|
}
|
|
|
|
public OperationResult CreateEmployeeForClient(CreateEmployee command)
|
|
{
|
|
var opration = new OperationResult();
|
|
if (_EmployeeRepository.Exists(x => x.NationalCode == command.NationalCode && x.NationalCode != null))
|
|
{
|
|
//if (_EmployeeRepository.ExistsEmployeeAccountNationalCode(command.NationalCode))
|
|
if (_EmployeeRepository.ExistsEmployeeWorkshopNationalCode(command.NationalCode, command.WorkshopId))
|
|
return opration.Failed("کد ملی وارد شده تکراری است");
|
|
}
|
|
if (_EmployeeRepository.Exists(x => x.InsuranceCode == command.InsuranceCode && x.InsuranceCode != null))
|
|
{
|
|
if (_EmployeeRepository.ExistsEmployeeWorkshoppInsuranceCode(command.InsuranceCode, command.WorkshopId))
|
|
return opration.Failed("کد بیمه وارد شده تکراری است");
|
|
}
|
|
|
|
if (command.Address != null && command.State == null)
|
|
{
|
|
StatCity = false;
|
|
return opration.Failed("لطفا استان و شهر را انتخاب کنید");
|
|
}
|
|
|
|
if ((command.Address != null && command.State != null) && command.City == "لطفا شهر را انتخاب نمایید")
|
|
{
|
|
city = false;
|
|
return opration.Failed("لطفا شهر را انتخاب کنید");
|
|
}
|
|
|
|
if (command.Address == null && command.State != null)
|
|
{
|
|
address = false;
|
|
return opration.Failed("لطفا آدرس را وارد کنید");
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(command.NationalCode))
|
|
{
|
|
try
|
|
{
|
|
|
|
|
|
char[] chArray = command.NationalCode.ToCharArray();
|
|
int[] numArray = new int[chArray.Length];
|
|
var cunt = chArray.Length;
|
|
for (int i = 0; i < chArray.Length; i++)
|
|
{
|
|
numArray[i] = (int)char.GetNumericValue(chArray[i]);
|
|
}
|
|
|
|
int num2 = numArray[9];
|
|
switch (command.NationalCode)
|
|
{
|
|
case "0000000000":
|
|
case "1111111111":
|
|
case "2222222222":
|
|
case "3333333333":
|
|
case "4444444444":
|
|
case "5555555555":
|
|
case "6666666666":
|
|
case "7777777777":
|
|
case "8888888888":
|
|
case "9999999999":
|
|
|
|
|
|
|
|
nationalCodValid = false;
|
|
return opration.Failed("کد ملی وارد شده صحیح نمی باشد");
|
|
|
|
|
|
}
|
|
|
|
int num3 =
|
|
((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) +
|
|
(numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) +
|
|
(numArray[8] * 2);
|
|
int num4 = num3 - ((num3 / 11) * 11);
|
|
if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) ||
|
|
((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10)
|
|
{
|
|
|
|
|
|
|
|
nationalCodValid = true;
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
nationalCodValid = false;
|
|
return opration.Failed("کد ملی وارد شده نا معتبر است");
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
|
|
nationalCodValid = false;
|
|
return opration.Failed("لطفا کد ملی 10 رقمی وارد کنید");
|
|
|
|
}
|
|
//if (_EmployeeRepository.Exists(x => x.NationalCode == command.NationalCode))
|
|
//{
|
|
// nationalcodeIsOk = false;
|
|
// return opration.Failed("کد ملی وارد شده تکراری است");
|
|
//}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var result = _EmployeeRepository.CreateEmployeeForClient(command);
|
|
|
|
|
|
|
|
if (result != 0)
|
|
return opration.Succcedded(result);
|
|
else
|
|
return opration.Failed("ثبت با خطا مواجه شد!");
|
|
}
|
|
|
|
public OperationResult EditEmployeeForClient(EditEmployee command)
|
|
{
|
|
var opration = new OperationResult();
|
|
var employee = _EmployeeRepository.Get(command.Id);
|
|
if (employee == null)
|
|
return opration.Failed("رکورد مورد نظر یافت نشد");
|
|
|
|
//if (_EmployeeRepository.Exists(x =>
|
|
// x.LName == command.LName && x.NationalCode == command.NationalCode && x.NationalCode != null && x.id != command.Id))
|
|
// return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد");
|
|
|
|
if (_EmployeeRepository.Exists(x => x.NationalCode == command.NationalCode && x.id != command.Id))
|
|
{
|
|
nationalcodeIsOk = false;
|
|
if (_EmployeeRepository.ExistsEmployeeWorkshopNationalCodeEmployeeId(command.NationalCode, command.WorkshopId, command.Id))
|
|
return opration.Failed("کد ملی وارد شده تکراری است");
|
|
}
|
|
if (!string.IsNullOrEmpty(command.InsuranceCode) && _EmployeeRepository.Exists(x => x.InsuranceCode == command.InsuranceCode && x.id != command.Id))
|
|
{
|
|
nationalcodeIsOk = false;
|
|
if (_EmployeeRepository.ExistsEmployeeWorkshopInsuranceCodeEmployeeId(command.InsuranceCode, command.WorkshopId, command.Id))
|
|
return opration.Failed("کد بیمه وارد شده تکراری است");
|
|
}
|
|
|
|
if (command.Address != null && command.State == null)
|
|
{
|
|
StatCity = false;
|
|
return opration.Failed("لطفا استان و شهر را انتخاب کنید");
|
|
}
|
|
|
|
if ((command.Address != null && command.State != null) && command.City == "لطفا شهر را انتخاب نمایید")
|
|
{
|
|
city = false;
|
|
return opration.Failed("لطفا شهر را انتخاب کنید");
|
|
}
|
|
|
|
if (command.Address == null && command.State != null)
|
|
{
|
|
address = false;
|
|
return opration.Failed("لطفا آدرس را وارد کنید");
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(command.NationalCode))
|
|
{
|
|
try
|
|
{
|
|
|
|
|
|
char[] chArray = command.NationalCode.ToCharArray();
|
|
int[] numArray = new int[chArray.Length];
|
|
var cunt = chArray.Length;
|
|
for (int i = 0; i < chArray.Length; i++)
|
|
{
|
|
numArray[i] = (int)char.GetNumericValue(chArray[i]);
|
|
}
|
|
|
|
int num2 = numArray[9];
|
|
switch (command.NationalCode)
|
|
{
|
|
case "0000000000":
|
|
case "1111111111":
|
|
case "2222222222":
|
|
case "3333333333":
|
|
case "4444444444":
|
|
case "5555555555":
|
|
case "6666666666":
|
|
case "7777777777":
|
|
case "8888888888":
|
|
case "9999999999":
|
|
|
|
nationalCodValid = false;
|
|
return opration.Failed("کد ملی وارد شده صحیح نمی باشد");
|
|
}
|
|
|
|
int num3 =
|
|
((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) +
|
|
(numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) +
|
|
(numArray[8] * 2);
|
|
int num4 = num3 - ((num3 / 11) * 11);
|
|
if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) ||
|
|
((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10)
|
|
{
|
|
nationalCodValid = true;
|
|
}
|
|
else
|
|
{
|
|
nationalCodValid = false;
|
|
return opration.Failed("کد ملی وارد شده نا معتبر است");
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
|
|
nationalCodValid = false;
|
|
return opration.Failed("لطفا کد ملی 10 رقمی وارد کنید");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
string initial = "1300/10/11";
|
|
var dateOfBirth = command.DateOfBirth != null ? command.DateOfBirth.ToGeorgianDateTime() : initial.ToGeorgianDateTime();
|
|
var dateOfIssue = command.DateOfIssue != null ? command.DateOfIssue.ToGeorgianDateTime() : initial.ToGeorgianDateTime();
|
|
employee.Edit(command.FName, command.LName, command.FatherName, dateOfBirth,
|
|
dateOfIssue,
|
|
command.PlaceOfIssue, command.NationalCode, command.IdNumber, command.Gender, command.Nationality,
|
|
command.Phone, command.Address,
|
|
command.State, command.City, command.MaritalStatus, command.MilitaryService, command.LevelOfEducation,
|
|
command.FieldOfStudy, command.BankCardNumber,
|
|
command.BankBranch, command.InsuranceCode, command.InsuranceHistoryByYear,
|
|
command.InsuranceHistoryByMonth, command.NumberOfChildren, command.OfficePhone
|
|
, command.MclsUserName, command.MclsPassword, command.EserviceUserName, command.EservicePassword,
|
|
command.TaxOfficeUserName, command.TaxOfficepassword, command.SanaUserName, command.SanaPassword);
|
|
|
|
|
|
|
|
_EmployeeRepository.SaveChanges();
|
|
|
|
return opration.Succcedded();
|
|
|
|
|
|
}
|
|
public EditEmployee GetDetailsForClient(long id, long workshopId)
|
|
{
|
|
var employee = _EmployeeRepository.GetDetails(id);
|
|
employee.PersonelCode = _context.PersonnelCodeSet.FirstOrDefault(p => p.EmployeeId == id && p.WorkshopId == workshopId)?.PersonnelCode;
|
|
return employee;
|
|
}
|
|
|
|
#region NewByHeydari
|
|
public List<EmployeeViewModel> SearchForMain(EmployeeSearchModel searchModel)
|
|
{
|
|
var res = _EmployeeRepository.SearchForMain(searchModel);
|
|
foreach (var item in res)
|
|
{
|
|
var children = _context.EmployeeChildrenSet.Count(x => x.EmployeeId == item.Id);
|
|
item.NumberOfChildren = Convert.ToString(children);
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Pooya
|
|
|
|
|
|
public List<EmployeeViewModel> GetWorkingEmployeesByWorkshopId(long workshopId)
|
|
{
|
|
return _EmployeeRepository.GetWorkingEmployeesByWorkshopId(workshopId);
|
|
}
|
|
|
|
public EmployeeViewModel GetEmployeeByNationalCodeIfHasActiveLeftWork(string nationalCode, List<long> workshopIds)
|
|
{
|
|
if (nationalCode.NationalCodeValid() != "valid")
|
|
return new();
|
|
var workshopEmployeesWithLeftWork = _EmployeeRepository.GetWorkingEmployeesByWorkshopIdsAndNationalCodeAndDate(workshopIds, nationalCode, DateTime.Now.Date);
|
|
return workshopEmployeesWithLeftWork.FirstOrDefault();
|
|
}
|
|
public EmployeeViewModel GetEmployeeByNationalCodeIfHasLeftWork(string nationalCode, List<long> workshopIds)
|
|
{
|
|
if (nationalCode.NationalCodeValid() != "valid")
|
|
return new();
|
|
var workshopEmployeesWithLeftWork = _EmployeeRepository.GetWorkedEmployeesByWorkshopIdsAndNationalCodeAndDate(workshopIds, nationalCode, DateTime.Now.Date);
|
|
return workshopEmployeesWithLeftWork.FirstOrDefault();
|
|
}
|
|
|
|
|
|
|
|
public List<EmployeeViewModel> GetRangeByIds(IEnumerable<long> employeeIds)
|
|
{
|
|
return _EmployeeRepository.GetRangeByIds(employeeIds).Select(x => new EmployeeViewModel
|
|
{
|
|
Id = x.id,
|
|
FName = x.FName,
|
|
LName = x.LName,
|
|
Gender = x.Gender,
|
|
NationalCode = x.NationalCode,
|
|
IdNumber = x.IdNumber,
|
|
Nationality = x.Nationality,
|
|
FatherName = x.FatherName,
|
|
DateOfBirth = x.DateOfBirth.ToFarsi(),
|
|
DateOfIssue = x.DateOfIssue.ToFarsi(),
|
|
PlaceOfIssue = x.PlaceOfIssue,
|
|
Phone = x.Phone,
|
|
Address = x.Address,
|
|
State = x.State,
|
|
City = x.City,
|
|
MaritalStatus = x.MaritalStatus,
|
|
MilitaryService = x.MilitaryService,
|
|
LevelOfEducation = x.LevelOfEducation,
|
|
FieldOfStudy = x.FieldOfStudy,
|
|
BankCardNumber = x.BankCardNumber,
|
|
BankBranch = x.BankBranch,
|
|
InsuranceCode = x.InsuranceCode,
|
|
InsuranceHistoryByYear = x.InsuranceHistoryByYear,
|
|
InsuranceHistoryByMonth = x.InsuranceHistoryByMonth,
|
|
NumberOfChildren = x.NumberOfChildren,
|
|
OfficePhone = x.OfficePhone,
|
|
EmployeeFullName = x.FName + " " + x.LName
|
|
}).ToList();
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
#region Mahan
|
|
public OperationResult CreateEmployeeByClient(CreateEmployeeByClient command)
|
|
{
|
|
OperationResult op = new();
|
|
|
|
if (command.Gender != "مرد" && command.Gender != "زن")
|
|
return op.Failed("جنسیت را انتخاب کنید");
|
|
|
|
if (string.IsNullOrWhiteSpace(command.FirstName) || string.IsNullOrWhiteSpace(command.LastName))
|
|
return op.Failed("نام نمی تواند خالی باشد");
|
|
|
|
if (command.MaritalStatus != "مجرد" && command.MaritalStatus != "متاهل")
|
|
return op.Failed("وضعیت تاهل نمی تواند خالی باشد");
|
|
|
|
bool isNationalCardValid = command.NationalCode?.NationalCodeValid() == "valid";
|
|
if (isNationalCardValid == false)
|
|
return op.Failed("کد ملی وارد شده معتبر نمی باشد");
|
|
|
|
if (command.Nationality != "ایرانی")
|
|
return op.Failed("خطای سیستمی");
|
|
|
|
if (!_WorkShopRepository.Exists(x => x.id == command.WorkshopId))
|
|
{
|
|
return op.Failed("کارگاه نامعتبر است");
|
|
}
|
|
|
|
using var transaction = new TransactionScope();
|
|
|
|
//if (_EmployeeRepository.ExistsIgnoreQueryFilter(x => x.NationalCode == command.NationalCode && x.EmployeeType == EmployeeType.CreatedByClient))
|
|
//{
|
|
// return op.Failed("این پرسنل قبلا افزوده شده است و در انتظار تایید میباشد");
|
|
//}
|
|
|
|
var employee = _EmployeeRepository.GetByNationalCodeIgnoreQueryFilter(command.NationalCode);
|
|
var workshop = _WorkShopRepository.GetDetails(command.WorkshopId);
|
|
if (employee == null)
|
|
{
|
|
return op.Failed("خطای سیستمی. لطفا دوباره تلاش کنید . درصورت تکرار این مشکل با تیم پشتیبان تماس بگیرید");
|
|
}
|
|
|
|
if (_leftWorkTempRepository.Exists(x =>
|
|
x.EmployeeId == employee.id && x.WorkshopId == command.WorkshopId && x.LeftWorkType == LeftWorkTempType.StartWork))
|
|
{
|
|
return op.Failed("این پرسنل در کارگاه شما قبلا افزوده شده است و در انتظار تایید میباشد");
|
|
}
|
|
|
|
var startLeftWork = command.StartLeftWork.ToGeorgianDateTime();
|
|
|
|
var leftWorkViewModel = _leftWorkRepository.GetLastLeftWorkByEmployeeIdAndWorkshopId(command.WorkshopId, employee.id);
|
|
PersonnelCodeDomain personnelCode = null;
|
|
if (leftWorkViewModel != null)
|
|
{
|
|
if (leftWorkViewModel.HasLeft == false && leftWorkViewModel.LeftWorkDate > DateTime.Now)
|
|
{
|
|
return op.Failed("شما نمیتوانید پرسنلی که در کارگاه شما در حال کار است را ایجاد کنید");
|
|
}
|
|
|
|
if (leftWorkViewModel.LeftWorkDate > startLeftWork)
|
|
{
|
|
return op.Failed("شما نمیتوانید قبل از بازه ترک کار قبلی پرسنل شروع به کاری ثبت کنید");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var lastPersonnelCodeByWorkshop = _personnelCodeRepository.GetLastPersonnelCodeByWorkshop(command.WorkshopId);
|
|
|
|
personnelCode = new PersonnelCodeDomain(command.WorkshopId,
|
|
employee.id, lastPersonnelCodeByWorkshop + 1);
|
|
}
|
|
|
|
var leftWorkTemp = LeftWorkTemp.CreateStartWork(command.WorkshopId, employee.id, startLeftWork, command.JobId);
|
|
_leftWorkTempRepository.Create(leftWorkTemp);
|
|
_leftWorkTempRepository.SaveChanges();
|
|
|
|
|
|
if (personnelCode != null)
|
|
{
|
|
_personnelCodeRepository.Create(personnelCode);
|
|
_personnelCodeRepository.SaveChanges();
|
|
}
|
|
|
|
var rollCallService = _rollCallServiceRepository.GetActiveServiceByWorkshopId(command.WorkshopId);
|
|
|
|
if (string.IsNullOrWhiteSpace(command.RollCallUploadEmployeePicture?.Picture1) == false &&
|
|
string.IsNullOrWhiteSpace(command.RollCallUploadEmployeePicture?.Picture2) == false)
|
|
{
|
|
var directoryPath = $"{_webHostEnvironment.ContentRootPath}\\Faces\\{command.WorkshopId}\\{employee.id}";
|
|
if (!Directory.Exists(directoryPath))
|
|
Directory.CreateDirectory(directoryPath);
|
|
|
|
var filePath1 = Path.Combine(directoryPath) + $@"\1.jpg";
|
|
|
|
CreateImageFromBase64(command.RollCallUploadEmployeePicture.Picture1, filePath1);
|
|
|
|
|
|
var filePath2 = Path.Combine(directoryPath) + $@"\2.jpg";
|
|
|
|
CreateImageFromBase64(command.RollCallUploadEmployeePicture.Picture2, filePath2);
|
|
|
|
|
|
|
|
var rollCallEmployee =
|
|
_rollCallEmployeeRepository.GetBy(employee.id, command.WorkshopId);
|
|
|
|
if (rollCallEmployee == null)
|
|
{
|
|
if (_employeeClientTempRepository.Exists(x =>
|
|
x.EmployeeId == employee.id && x.WorkshopId == command.WorkshopId))
|
|
{
|
|
//var employeeTemp =
|
|
// _employeeClientTempRepository.GetByEmployeeIdAndWorkshopId(employee.id, command.WorkshopId);
|
|
|
|
rollCallEmployee = new RollCallEmployee(command.WorkshopId, employee.id, employee.FName,
|
|
employee.LName);
|
|
}
|
|
else
|
|
{
|
|
rollCallEmployee =
|
|
new RollCallEmployee(command.WorkshopId, employee.id, employee.FName, employee.LName);
|
|
}
|
|
|
|
rollCallEmployee.HasImage();
|
|
_rollCallEmployeeRepository.Create(rollCallEmployee);
|
|
_rollCallEmployeeRepository.SaveChanges();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (command.CreateCustomizeEmployeeSettings.GroupId > 0)
|
|
{
|
|
if (rollCallService?.HasCustomizeCheckoutService == "true")
|
|
{
|
|
var employeeSalary = command.CreateCustomizeEmployeeSettings.Salary?.MoneyToDouble() ?? 0;
|
|
|
|
if (employeeSalary < 1)
|
|
{
|
|
return op.Failed("لطفا حقوق پرسنل را وارد کنید");
|
|
}
|
|
|
|
}
|
|
if (_customizeWorkshopEmployeeSettingsRepository
|
|
.Exists(x => x.WorkshopId == workshop.Id && x.EmployeeId == employee.id))
|
|
{
|
|
_customizeWorkshopEmployeeSettingsRepository.RemoveByWorkshopIdAndEmployeeId(workshop.Id, employee.id);
|
|
}
|
|
|
|
command.CreateCustomizeEmployeeSettings.EmployeeIds = [employee.id];
|
|
command.CreateCustomizeEmployeeSettings.WorkshopId = command.WorkshopId;
|
|
var resultCreateEmployeeSettings =
|
|
_customizeWorkshopSettingsApplication.CreateEmployeesSettingsAndSetChanges(
|
|
command.CreateCustomizeEmployeeSettings);
|
|
if (resultCreateEmployeeSettings.IsSuccedded == false)
|
|
{
|
|
return resultCreateEmployeeSettings;
|
|
}
|
|
|
|
var rollCallEmployeeStatusResult = _rollCallEmployeeStatusApplication.Create(
|
|
new CreateRollCallEmployeeStatus() { RollCallEmployeeId = rollCallEmployee.id });
|
|
|
|
if (rollCallEmployeeStatusResult.IsSuccedded == false)
|
|
{
|
|
return rollCallEmployeeStatusResult;
|
|
}
|
|
}
|
|
}
|
|
else if (command.CreateCustomizeEmployeeSettings.GroupId > 0)
|
|
{
|
|
if (rollCallService?.HasCustomizeCheckoutService == "true")
|
|
{
|
|
var employeeSalary = command.CreateCustomizeEmployeeSettings.Salary?.MoneyToDouble() ?? 0;
|
|
|
|
if (employeeSalary < 1)
|
|
{
|
|
return op.Failed("لطفا حقوق پرسنل را وارد کنید");
|
|
}
|
|
|
|
}
|
|
if (_customizeWorkshopEmployeeSettingsRepository
|
|
.Exists(x => x.WorkshopId == workshop.Id && x.EmployeeId == employee.id))
|
|
{
|
|
_customizeWorkshopEmployeeSettingsRepository.RemoveByWorkshopIdAndEmployeeId(workshop.Id, employee.id);
|
|
}
|
|
|
|
command.CreateCustomizeEmployeeSettings.EmployeeIds = [employee.id];
|
|
command.CreateCustomizeEmployeeSettings.WorkshopId = command.WorkshopId;
|
|
var resultCreateEmployeeSettings =
|
|
_customizeWorkshopSettingsApplication.CreateEmployeesSettingsAndSetChanges(
|
|
command.CreateCustomizeEmployeeSettings);
|
|
if (resultCreateEmployeeSettings.IsSuccedded == false)
|
|
{
|
|
return resultCreateEmployeeSettings;
|
|
}
|
|
|
|
|
|
var rollCallEmployee =
|
|
_rollCallEmployeeRepository.GetBy(employee.id, command.WorkshopId);
|
|
|
|
if (rollCallEmployee == null)
|
|
{
|
|
if (_employeeClientTempRepository.Exists(x =>
|
|
x.EmployeeId == employee.id && x.WorkshopId == command.WorkshopId))
|
|
{
|
|
|
|
rollCallEmployee = new RollCallEmployee(command.WorkshopId, employee.id, employee.FName,
|
|
employee.LName);
|
|
}
|
|
else
|
|
{
|
|
rollCallEmployee =
|
|
new RollCallEmployee(command.WorkshopId, employee.id, employee.FName, employee.LName);
|
|
}
|
|
_rollCallEmployeeRepository.Create(rollCallEmployee);
|
|
_rollCallEmployeeRepository.SaveChanges();
|
|
|
|
}
|
|
}
|
|
|
|
|
|
command.EmployeeDocumentItems = command.EmployeeDocumentItems ?? [];
|
|
|
|
var employeeDocumentResult = _employeeDocumentsApplication.AddRangeEmployeeDocumentItemsByClient(command.WorkshopId,
|
|
employee.id, command.EmployeeDocumentItems);
|
|
|
|
if (employeeDocumentResult.IsSuccedded == false)
|
|
{
|
|
return employeeDocumentResult;
|
|
}
|
|
|
|
|
|
var employeeTemp = new EmployeeClientTemp(command.WorkshopId, startLeftWork, employee.id,
|
|
command.MaritalStatus, employee.FullName);
|
|
|
|
_employeeClientTempRepository.Create(employeeTemp);
|
|
_employeeClientTempRepository.SaveChanges();
|
|
|
|
if (command.HasBankInformation)
|
|
{
|
|
|
|
var employeeBankInfos = command.EmployeeBankInfos.Select(x => new CreateEmployeeInformation
|
|
{
|
|
WorkshopId = command.WorkshopId,
|
|
BankAccountNumber = x.BankAccountNumber,
|
|
BankId = x.BankId,
|
|
CardNumber = x.CardNumber,
|
|
EmployeeId = employee.id,
|
|
EmployeeName = employee.FullName,
|
|
ShebaNumber = x.ShebaNumber
|
|
}).ToList();
|
|
|
|
var employeeBankInformationResult =
|
|
_employeeBankInformationApplication.GroupCreate(command.WorkshopId, employeeBankInfos);
|
|
|
|
if (employeeBankInformationResult.IsSuccedded == false)
|
|
{
|
|
return employeeBankInformationResult;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
transaction.Complete();
|
|
return op.Succcedded(employee.id);
|
|
}
|
|
|
|
private void CreateImageFromBase64(string picture, string filePath)
|
|
{
|
|
var subBase64 = picture.Substring(picture.LastIndexOf(',') + 1);
|
|
byte[] bytes = Convert.FromBase64String(subBase64);
|
|
System.IO.File.WriteAllBytes(filePath, bytes);
|
|
}
|
|
|
|
public async Task<OperationResult<EmployeeByNationalCodeInWorkshopViewModel>>
|
|
ValidateCreateEmployeeClientByNationalCodeAndWorkshopId(string nationalCode, string birthDate, long workshopId)
|
|
{
|
|
var op = new OperationResult<EmployeeByNationalCodeInWorkshopViewModel>();
|
|
|
|
if (nationalCode.NationalCodeValid() != "valid")
|
|
{
|
|
return op.Failed("کد ملی معتبر نمیباشد");
|
|
}
|
|
|
|
if (birthDate.TryToGeorgianDateTime(out _) == false)
|
|
{
|
|
return op.Failed("تاریخ تولد معتبر نمیباشد");
|
|
}
|
|
|
|
var employee = _EmployeeRepository.GetByNationalCodeIgnoreQueryFilter(nationalCode);
|
|
|
|
if (employee == null)
|
|
{
|
|
var personalInfo = await _uidService.GetPersonalInfo(nationalCode, birthDate);
|
|
if (personalInfo.ResponseContext.Status.Code != 0)
|
|
{
|
|
return op.Failed("کد ملی و تاریخ تولد با هم همخانی ندارند");
|
|
}
|
|
|
|
var basicInfo = personalInfo.BasicInformation;
|
|
var identityInfo = personalInfo.IdentificationInformation;
|
|
DateTime apiBirthDate = identityInfo.BirthDate.ToGeorgianDateTime();
|
|
|
|
var dateOfIssue = new DateTime(1922, 1, 1);
|
|
|
|
var gender = basicInfo.GenderEnum switch
|
|
{
|
|
Gender.Female => "زن",
|
|
Gender.Male => "مرد",
|
|
_ => throw new AggregateException()
|
|
};
|
|
|
|
var idNumber = identityInfo.ShenasnamehNumber == "0" ? identityInfo.NationalId : identityInfo.ShenasnamehNumber;
|
|
|
|
var newEmployee = new Employee(basicInfo.FirstName, basicInfo.LastName, basicInfo.FatherName, apiBirthDate,
|
|
dateOfIssue, null, identityInfo.NationalId, idNumber, gender, "ایرانی", identityInfo.ShenasnameSerial, identityInfo.ShenasnameSeri);
|
|
newEmployee.Authorized();
|
|
await _EmployeeRepository.CreateAsync(newEmployee);
|
|
await _EmployeeRepository.SaveChangesAsync();
|
|
|
|
return op.Succcedded(new EmployeeByNationalCodeInWorkshopViewModel()
|
|
{
|
|
EmployeeId = newEmployee.id,
|
|
EmployeeFName = newEmployee.FName,
|
|
Gender = newEmployee.Gender,
|
|
Nationality = newEmployee.Nationality,
|
|
EmployeeLName = newEmployee.LName
|
|
});
|
|
}
|
|
|
|
if (_leftWorkTempRepository.ExistsIgnoreQueryFilter(x =>
|
|
x.EmployeeId == employee.id && x.WorkshopId == workshopId && x.LeftWorkType == LeftWorkTempType.StartWork))
|
|
{
|
|
return op.Failed("این پرسنل در کارگاه شما قبلا افزوده شده است و در انتظار تایید میباشد");
|
|
}
|
|
|
|
if (employee.IsAuthorized == false)
|
|
{
|
|
var personalInfoResponse = await _uidService.GetPersonalInfo(nationalCode, birthDate);
|
|
|
|
if (personalInfoResponse.ResponseContext.Status.Code == 0)
|
|
{
|
|
var basicInfo = personalInfoResponse.BasicInformation;
|
|
var identityInfo = personalInfoResponse.IdentificationInformation;
|
|
var apiBirthDate = identityInfo.BirthDate.ToGeorgianDateTime();
|
|
|
|
var gender = basicInfo.GenderEnum switch
|
|
{
|
|
Gender.Female => "زن",
|
|
Gender.Male => "مرد",
|
|
_ => throw new AggregateException()
|
|
};
|
|
|
|
var idNumber = identityInfo.ShenasnamehNumber == "0" ? identityInfo.NationalId : identityInfo.ShenasnamehNumber;
|
|
|
|
|
|
employee.Edit(basicInfo.FirstName, basicInfo.LastName, basicInfo.FatherName, apiBirthDate,
|
|
employee.DateOfIssue, employee.PlaceOfIssue, identityInfo.NationalId, idNumber,
|
|
gender, "ایرانی", employee.Phone, employee.Address, employee.State, employee.City,
|
|
employee.MaritalStatus, employee.MilitaryService, employee.LevelOfEducation,
|
|
employee.FieldOfStudy, employee.BankCardNumber, employee.BankBranch, employee.InsuranceCode, employee.InsuranceHistoryByYear,
|
|
employee.InsuranceHistoryByMonth, employee.NumberOfChildren,
|
|
employee.OfficePhone, employee.MclsUserName, employee.MclsPassword,
|
|
employee.EserviceUserName, employee.EservicePassword, employee.TaxOfficeUserName,
|
|
employee.TaxOfficepassword, employee.SanaUserName, employee.SanaPassword);
|
|
|
|
employee.Authorized();
|
|
|
|
await _EmployeeRepository.SaveChangesAsync();
|
|
|
|
}
|
|
else
|
|
{
|
|
return op.Failed("کد ملی با تاریخ تولد وارد شده مطابقت ندارد");
|
|
}
|
|
}
|
|
else if (employee.DateOfBirth.ToFarsi() != birthDate || employee.NationalCode != nationalCode)
|
|
{
|
|
return op.Failed("کد ملی با تاریخ تولد وارد شده مطابقت ندارد");
|
|
}
|
|
|
|
var leftWorkViewModel = _leftWorkRepository.GetLastLeftWorkByEmployeeIdAndWorkshopId(workshopId, employee.id);
|
|
if (leftWorkViewModel == null)
|
|
{
|
|
return op.Succcedded(new EmployeeByNationalCodeInWorkshopViewModel()
|
|
{
|
|
EmployeeId = employee.id,
|
|
EmployeeFName = employee.FName,
|
|
Gender = employee.Gender,
|
|
Nationality = employee.Nationality,
|
|
EmployeeLName = employee.LName
|
|
}); ;
|
|
}
|
|
|
|
if (leftWorkViewModel.LeftWorkDate >= DateTime.Now || !leftWorkViewModel.HasLeft)
|
|
return op.Failed("این پرسنل در کارگاه شما در حال کار است");
|
|
|
|
var rollCallEmployee = _rollCallEmployeeRepository.GetBy(employee.id, workshopId);
|
|
|
|
string picture1 = string.Empty;
|
|
string picture2 = string.Empty;
|
|
|
|
if (rollCallEmployee != null)
|
|
{
|
|
var directoryPath = $"{_webHostEnvironment.ContentRootPath}\\Faces\\{workshopId}\\{employee.id}";
|
|
if (Directory.Exists(directoryPath))
|
|
{
|
|
var filePath1 = Path.Combine(directoryPath, @"1.jpg");
|
|
var filePath2 = Path.Combine(directoryPath, @"2.jpg");
|
|
|
|
if (System.IO.File.Exists(filePath1))
|
|
{
|
|
byte[] imageBytes1 = await System.IO.File.ReadAllBytesAsync(filePath1);
|
|
picture1 = Convert.ToBase64String(imageBytes1);
|
|
}
|
|
|
|
if (System.IO.File.Exists(filePath2))
|
|
{
|
|
byte[] imageBytes2 = await System.IO.File.ReadAllBytesAsync(filePath2);
|
|
picture2 = Convert.ToBase64String(imageBytes2);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
var personnelCode = _personnelCodeRepository.GetPSCodeByWorkshopIdAndEmployeeId(workshopId, employee.id);
|
|
|
|
var bankInformationViewModel = _employeeBankInformationApplication.GetByEmployeeId(workshopId, employee.id);
|
|
|
|
var employeeDocumentsViewModel = _employeeDocumentsApplication.GetDetailsForClient(employee.id, workshopId);
|
|
|
|
|
|
return op.Succcedded(new EmployeeByNationalCodeInWorkshopViewModel
|
|
{
|
|
EmployeeId = employee.id,
|
|
EmployeeFName = employee.FName,
|
|
EmployeeLName = employee.LName,
|
|
Nationality = employee.Nationality,
|
|
MaritalStatus = employee.MaritalStatus,
|
|
Gender = employee.Gender,
|
|
Picture1 = picture1,
|
|
Picture2 = picture2,
|
|
PersonnelCode = personnelCode,
|
|
EmployeeBankInfos = bankInformationViewModel.BankInformation.Select(x => new EmployeeByNationalCodeEmployeeBankInfoViewModel
|
|
{
|
|
ShebaNumber = x.ShebaNumber,
|
|
IsDefault = x.IsDefault,
|
|
CardNumber = x.CardNumber,
|
|
BankAccountNumber = x.BankAccountNumber,
|
|
BankId = x.BankId,
|
|
BankLogoMediaId = x.BankLogoMediaId,
|
|
BankLogoPath = x.BankLogoPath,
|
|
BankName = x.BankName
|
|
}).ToList(),
|
|
EmployeeDocument = new EmployeeByNationalCodeEmployeeDocumentViewModel
|
|
{
|
|
EducationalDegree = employeeDocumentsViewModel.EducationalDegree,
|
|
EmployeePicture = employeeDocumentsViewModel.EmployeePicture,
|
|
IdCardPage1 = employeeDocumentsViewModel.IdCardPage1,
|
|
IdCardPage2 = employeeDocumentsViewModel.IdCardPage2,
|
|
IdCardPage3 = employeeDocumentsViewModel.IdCardPage3,
|
|
IdCardPage4 = employeeDocumentsViewModel.IdCardPage4,
|
|
MilitaryServiceCard = employeeDocumentsViewModel.MilitaryServiceCard,
|
|
NationalCardFront = employeeDocumentsViewModel.NationalCardFront,
|
|
NationalCardRear = employeeDocumentsViewModel.NationalCardRear
|
|
}
|
|
});
|
|
}
|
|
|
|
public async Task<ICollection<ClientStartedWorkEmployeesDto>> GetClientEmployeesStartWork(long workshopId)
|
|
{
|
|
return await _EmployeeRepository.GetClientEmployeesStartWork(workshopId);
|
|
}
|
|
|
|
public async Task<ICollection<ClientLeftWorkWorkEmployeesDto>> GetEmployeesForLeftWorkTemp(long workshopId)
|
|
{
|
|
return await _EmployeeRepository.GetEmployeesForLeftWorkTemp(workshopId);
|
|
}
|
|
|
|
public async Task<GetEditEmployeeInEmployeeDocumentViewModel> GetEmployeeEditInEmployeeDocumentWorkFlow(
|
|
long employeeId,
|
|
long workshopId)
|
|
{
|
|
return await _EmployeeRepository.GetEmployeeEditInEmployeeDocumentWorkFlow(employeeId, workshopId);
|
|
}
|
|
|
|
public async Task<OperationResult> EditEmployeeInEmployeeDocumentWorkFlow(EditEmployeeInEmployeeDocument command)
|
|
{
|
|
var op = new OperationResult();
|
|
|
|
if (command.MaritalStatus is not ("مجرد" or "متاهل"))
|
|
{
|
|
return op.Failed("وضعیت تاهل وارد شده نامعتبر میباشد");
|
|
}
|
|
|
|
var employee = _EmployeeRepository.Get(command.EmployeeId);
|
|
if (employee == null)
|
|
{
|
|
return op.Failed("پرسنل مورد نظر یافت نشد");
|
|
}
|
|
|
|
if (!employee.IsAuthorized)
|
|
{
|
|
if (command.Gender is not ("مرد" or "زن"))
|
|
{
|
|
return op.Failed("جنسیت وارد شده نامعتبر است");
|
|
}
|
|
if (command.BirthDate.TryToGeorgianDateTime(out var birthDateGr) == false)
|
|
{
|
|
return op.Failed("تاریخ تولد وارد شده نامعتبر است");
|
|
}
|
|
|
|
if (command.Nationality is not ("غیر ایرانی" or "ایرانی"))
|
|
{
|
|
return op.Failed("ملیت وارد شده نامعتبر است");
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(command.FName))
|
|
{
|
|
return op.Failed("لطفا نام پرسنل را وارد کنید");
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(command.LName))
|
|
{
|
|
return op.Failed("لطفا نام خانوادگی پرسنل را وارد کنید");
|
|
}
|
|
|
|
if (command.NationalCode.NationalCodeValid() != "valid")
|
|
{
|
|
return op.Failed("کد ملی وارد شده نامعتبر است");
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(command.IdNumber))
|
|
{
|
|
return op.Failed("لطفا شماره شناسنامه را وارد کنید");
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(command.FatherName))
|
|
{
|
|
return op.Failed("لطفا نام پدر را وارد کنید");
|
|
}
|
|
}
|
|
|
|
var employeeClientTemp = _employeeClientTempRepository.GetByEmployeeIdAndWorkshopId(command.EmployeeId, command.WorkshopId);
|
|
|
|
employeeClientTemp?.Edit(command.MaritalStatus);
|
|
|
|
if (!employee.IsAuthorized)
|
|
{
|
|
employee.Edit(command.FName, command.LName, command.FatherName, command.BirthDate.ToGeorgianDateTime(),
|
|
employee.DateOfIssue, employee.PlaceOfIssue, command.NationalCode, command.IdNumber, command.Gender,
|
|
command.Nationality, employee.Phone, employee.Address, employee.State, employee.City,
|
|
command.MaritalStatus, command.MilitaryService,
|
|
employee.LevelOfEducation, employee.FieldOfStudy, employee.BankCardNumber, employee.BankBranch,
|
|
employee.InsuranceCode, employee.InsuranceHistoryByYear, employee.InsuranceHistoryByMonth,
|
|
employee.NumberOfChildren, employee.OfficePhone, employee.MclsUserName, employee.MclsPassword,
|
|
employee.EserviceUserName, employee.EservicePassword, employee.TaxOfficeUserName,
|
|
employee.TaxOfficepassword, employee.SanaUserName, employee.SanaPassword);
|
|
}
|
|
else
|
|
{
|
|
employee.EditAuthorizeEmployee(employee.DateOfIssue, employee.PlaceOfIssue,
|
|
employee.Phone, employee.Address, employee.State, employee.City, command.MaritalStatus,
|
|
command.MilitaryService, employee.LevelOfEducation, employee.FieldOfStudy,
|
|
employee.BankCardNumber, employee.BankBranch, employee.InsuranceCode,
|
|
employee.InsuranceHistoryByYear, employee.InsuranceHistoryByMonth, employee.NumberOfChildren,
|
|
employee.OfficePhone, employee.MclsUserName, employee.MclsPassword,
|
|
employee.EserviceUserName, employee.EservicePassword, employee.TaxOfficeUserName,
|
|
employee.TaxOfficepassword, employee.SanaUserName, employee.SanaPassword);
|
|
}
|
|
await _EmployeeRepository.SaveChangesAsync();
|
|
|
|
return op.Succcedded();
|
|
}
|
|
|
|
public async Task<List<EmployeeSelectListViewModel>> WorkedEmployeesInWorkshopSelectList(long workshopId)
|
|
{
|
|
return await _EmployeeRepository.WorkedEmployeesInWorkshopSelectList(workshopId);
|
|
}
|
|
|
|
public async Task<OperationResult<EmployeeDataFromApiViewModel>> GetEmployeeDataFromApi(string nationalCode, string birthDate)
|
|
{
|
|
var op = new OperationResult<EmployeeDataFromApiViewModel>();
|
|
var birthDateGr = birthDate.ToGeorgianDateTime();
|
|
|
|
if (_EmployeeRepository.Exists(x => x.NationalCode == nationalCode))
|
|
{
|
|
var employee = _EmployeeRepository.GetByNationalCode(nationalCode);
|
|
|
|
if (employee.IsAuthorized == false)
|
|
{
|
|
var apiResult = await _uidService.GetPersonalInfo(nationalCode, birthDate);
|
|
|
|
if (apiResult.ResponseContext.Status.Code != 0)
|
|
{
|
|
return op.Failed("کد ملی و تاریخ تولد با هم همخانی ندارند");
|
|
}
|
|
var basicInfo = apiResult.BasicInformation;
|
|
var identityInfo = apiResult.IdentificationInformation;
|
|
|
|
var gender = basicInfo.GenderEnum switch
|
|
{
|
|
Gender.Female => "زن",
|
|
Gender.Male => "مرد",
|
|
_ => throw new AggregateException()
|
|
};
|
|
|
|
var idNumber = identityInfo.ShenasnamehNumber == "0" ? identityInfo.NationalId : identityInfo.ShenasnamehNumber;
|
|
employee.Edit(basicInfo.FirstName, basicInfo.LastName, basicInfo.FatherName, birthDateGr,
|
|
employee.DateOfIssue, employee.PlaceOfIssue, identityInfo.NationalId, idNumber,
|
|
gender, "ایرانی", employee.Phone, employee.Address, employee.State, employee.City,
|
|
employee.MaritalStatus, employee.MilitaryService, employee.LevelOfEducation,
|
|
employee.FieldOfStudy, employee.BankCardNumber, employee.BankBranch, employee.InsuranceCode, employee.InsuranceHistoryByYear,
|
|
employee.InsuranceHistoryByMonth, employee.NumberOfChildren,
|
|
employee.OfficePhone, employee.MclsUserName, employee.MclsPassword,
|
|
employee.EserviceUserName, employee.EservicePassword, employee.TaxOfficeUserName,
|
|
employee.TaxOfficepassword, employee.SanaUserName, employee.SanaPassword);
|
|
|
|
employee.Authorized();
|
|
await _EmployeeRepository.SaveChangesAsync();
|
|
}
|
|
|
|
return op.Failed("این پرسنل در بانک اطلاعات موجود میباشد");
|
|
}
|
|
else
|
|
{
|
|
EmployeeDataFromApiViewModel data;
|
|
if (_employeeAuthorizeTempRepository.Exists(x => x.NationalCode == nationalCode))
|
|
{
|
|
var employeeAuthorizeTemp = await _employeeAuthorizeTempRepository.GetByNationalCode(nationalCode);
|
|
if (employeeAuthorizeTemp.BirthDate.ToFarsi() != birthDate)
|
|
{
|
|
return op.Failed("کد ملی و تاریخ تولد با هم همخانی ندارند");
|
|
}
|
|
|
|
data = new EmployeeDataFromApiViewModel()
|
|
{
|
|
BirthDate = employeeAuthorizeTemp.BirthDate.ToFarsi(),
|
|
NationalCode = employeeAuthorizeTemp.NationalCode,
|
|
IdNumber = employeeAuthorizeTemp.IdNumber,
|
|
FName = employeeAuthorizeTemp.FName,
|
|
FatherName = employeeAuthorizeTemp.FatherName,
|
|
Gender = employeeAuthorizeTemp.Gender,
|
|
LName = employeeAuthorizeTemp.LName,
|
|
};
|
|
return op.Succcedded(data);
|
|
}
|
|
var apiResult = await _uidService.GetPersonalInfo(nationalCode, birthDate);
|
|
|
|
if (apiResult.ResponseContext.Status.Code != 0)
|
|
{
|
|
return op.Failed("کد ملی و تاریخ تولد با هم همخانی ندارند");
|
|
}
|
|
var basicInfo = apiResult.BasicInformation;
|
|
var identityInfo = apiResult.IdentificationInformation;
|
|
|
|
data = new EmployeeDataFromApiViewModel()
|
|
{
|
|
BirthDate = identityInfo.BirthDate,
|
|
NationalCode = identityInfo.NationalId,
|
|
IdNumber = identityInfo.ShenasnamehNumber == "0" ? identityInfo.NationalId : identityInfo.ShenasnamehNumber,
|
|
FatherName = basicInfo.FatherName,
|
|
FName = basicInfo.FirstName,
|
|
Gender = basicInfo.GenderEnum,
|
|
LName = basicInfo.LastName,
|
|
IdNumberSeri = identityInfo.ShenasnameSeri,
|
|
IdNumberSerial = identityInfo.ShenasnameSerial
|
|
};
|
|
|
|
var newAuthorizeTemp = new EmployeeAuthorizeTemp(data.Gender, data.FName, data.LName, data.FatherName, birthDateGr, data.NationalCode, data.IdNumber, data.IdNumberSerial, data.IdNumberSeri);
|
|
await _employeeAuthorizeTempRepository.CreateAsync(newAuthorizeTemp);
|
|
await _employeeAuthorizeTempRepository.SaveChangesAsync();
|
|
|
|
return op.Succcedded(data);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
#endregion
|
|
} |