checkout changes
This commit is contained in:
@@ -23,6 +23,23 @@ public interface ICheckoutRepository : IRepository<long, Checkout>
|
||||
EditCheckout GetDetails(long id);
|
||||
|
||||
Task CreateCkeckout(Checkout command);
|
||||
/// <summary>
|
||||
/// لود لیست اولیه جهت ایجاد فیش حقوقی
|
||||
/// </summary>
|
||||
/// <param name="workshopId"></param>
|
||||
/// <param name="employeeId"></param>
|
||||
/// <param name="year"></param>
|
||||
/// <param name="month"></param>
|
||||
/// <param name="contractStart"></param>
|
||||
/// <param name="contractEnd"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="NotImplementedException"></exception>
|
||||
Task<CreateCheckoutListViewModel> GetContractResultToCreateCheckout(long workshopId, long employeeId, string year,
|
||||
string month,
|
||||
string contractStart, string contractEnd);
|
||||
//void CreateCkeckout(Checkout command);
|
||||
|
||||
|
||||
|
||||
Task<List<CheckoutViewModel>> Search(CheckoutSearchModel searchModel);
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using _0_Framework.Domain;
|
||||
using CompanyManagment.App.Contracts.RollCallEmployee;
|
||||
|
||||
@@ -6,6 +7,7 @@ namespace Company.Domain.RollCallEmployeeAgg;
|
||||
|
||||
public interface IRollCallEmployeeRepository : IRepository<long, RollCallEmployee>
|
||||
{
|
||||
bool HasRollCallRecord(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd);
|
||||
List<RollCallEmployeeViewModel> GetByWorkshopId(long workshopId);
|
||||
EditRollCallEmployee GetDetails(long id);
|
||||
RollCallEmployeeViewModel GetByEmployeeIdAndWorkshopId(long employeeId, long workshopId);
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace CompanyManagment.App.Contracts.Checkout;
|
||||
|
||||
public class CreateCheckoutListViewModel
|
||||
{
|
||||
public long Id { get; set; }
|
||||
|
||||
public long PersonnelCode { get; set; }
|
||||
|
||||
public long EmployeeId { get; set; }
|
||||
|
||||
public string ContractNo { get; set; }
|
||||
|
||||
public string EmployerName { get; set; }
|
||||
|
||||
public string WorkshopName { get; set; }
|
||||
public string EmployeeName { get; set; }
|
||||
|
||||
public string ContractStart { get; set; }
|
||||
|
||||
public string ContractEnd { get; set; }
|
||||
|
||||
public string LeftWorkDate { get; set; }
|
||||
|
||||
//public string NextMonthStart { get; set; }
|
||||
|
||||
//public bool RedColor { get; set; }
|
||||
|
||||
public bool LaterThanEnd { get; set; }
|
||||
|
||||
public bool Extension { get; set; }
|
||||
|
||||
public bool HasCheckout { get; set; }
|
||||
|
||||
//public bool MoreThanOneMonth { get; set; }
|
||||
|
||||
//public bool Waiting { get; set; }
|
||||
|
||||
|
||||
public string Description { get; set; }
|
||||
|
||||
|
||||
public List<CreateCheckoutListViewModel> CreateCheckoutList { get; set; }
|
||||
}
|
||||
@@ -13,7 +13,20 @@ public interface ICheckoutApplication
|
||||
OperationResult Edit(EditCheckout command);
|
||||
EditCheckout GetDetails(long id);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// لود لیست اولیه جهت ایجاد فیش حقوقی
|
||||
/// </summary>
|
||||
/// <param name="workshopId"></param>
|
||||
/// <param name="employeeId"></param>
|
||||
/// <param name="year"></param>
|
||||
/// <param name="month"></param>
|
||||
/// <param name="contractStart"></param>
|
||||
/// <param name="contractEnd"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="NotImplementedException"></exception>
|
||||
Task<CreateCheckoutListViewModel> GetContractResultToCreateCheckout(long workshopId, long employeeId, string year,
|
||||
string month,
|
||||
string contractStart, string contractEnd);
|
||||
Task<List<CheckoutViewModel>> Search(CheckoutSearchModel searchModel);
|
||||
List<CheckoutViewModel> SimpleSearch(CheckoutSearchModel searchModel);
|
||||
List<CheckoutViewModel> PrintAll(List<long> id);
|
||||
|
||||
@@ -239,6 +239,13 @@ public class CheckoutApplication : ICheckoutApplication
|
||||
return _checkoutRepository.GetDetails(id);
|
||||
}
|
||||
|
||||
public async Task<CreateCheckoutListViewModel> GetContractResultToCreateCheckout(long workshopId, long employeeId, string year, string month,
|
||||
string contractStart, string contractEnd)
|
||||
{
|
||||
return await _checkoutRepository.GetContractResultToCreateCheckout(workshopId, employeeId, year, month, contractStart,
|
||||
contractEnd);
|
||||
|
||||
}
|
||||
public async Task<List<CheckoutViewModel>> Search(CheckoutSearchModel searchModel)
|
||||
{
|
||||
var result = new List<CheckoutViewModel>();
|
||||
|
||||
@@ -89,60 +89,9 @@ namespace CompanyManagment.Application
|
||||
}
|
||||
|
||||
public bool HasRollCallRecord(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd)
|
||||
{
|
||||
//موقت
|
||||
// دادمهرگستر 11 *
|
||||
//585 کاشی گالری سرامیس (بابک ابراهیمی )
|
||||
//آموزشگاه ملل 604 *
|
||||
//کاریابی ملل 605 *
|
||||
//368 پیتزا امیر آماده سازی
|
||||
//367 پیتزا امیر رستوران
|
||||
//286 مرکز توان بخشی رسالت *
|
||||
//610 بیمارستان پارس - رازقی طعام
|
||||
DateTime start1404 = new DateTime(2025, 03, 21);
|
||||
bool skipRollCallByWorkshopId = false;
|
||||
if (contractStart < start1404)
|
||||
{
|
||||
skipRollCallByWorkshopId = workshopId is 11 or 585 or 604 or 605 or 368 or 367 or 286;
|
||||
}
|
||||
else
|
||||
{
|
||||
skipRollCallByWorkshopId = workshopId is 368 or 367 or 585 or 610;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//#if DEBUG
|
||||
// skipRollCallByWorkshopId = workshopId is 11 or 585 or 604 or 605 or 368 or 367;
|
||||
//#endif
|
||||
if (skipRollCallByWorkshopId)
|
||||
return false;
|
||||
|
||||
|
||||
// 42550 مصطفی مقدس نژاد فومنی
|
||||
bool skipRollCallByEmployeeId = employeeId is 42550;
|
||||
if (skipRollCallByEmployeeId)
|
||||
return false;
|
||||
|
||||
//9211 محسا تازه
|
||||
if (employeeId == 9211 && contractStart >= start1404)
|
||||
return false;
|
||||
|
||||
var service = _rollCallServiceRepository.GetAllServiceByWorkshopId(workshopId);
|
||||
|
||||
if (!service.Any(x => x.StartService.Date <= contractStart.Date && x.EndService.Date >= contractEnd.Date))
|
||||
return false;
|
||||
var rollCallEmployee =
|
||||
_rollCallEmployeeRepository.GetByEmployeeIdAndWorkshopId(employeeId, workshopId);
|
||||
|
||||
if (rollCallEmployee == null)
|
||||
return false;
|
||||
|
||||
return _employeeRollCallStatusRepository.Exists(x => x.RollCallEmployeeId == rollCallEmployee.Id &&
|
||||
x.StartDate.Date <= contractStart.Date &&
|
||||
x.EndDate.Date >= contractEnd.Date);
|
||||
}
|
||||
{
|
||||
return _rollCallEmployeeRepository.HasRollCallRecord(employeeId, workshopId, contractStart, contractEnd);
|
||||
}
|
||||
|
||||
public List<RollCallEmployeeStatusViewModel> GetActiveByWorkshopIdInDate(long workshopId, DateTime startDateGr, DateTime endDateGr)
|
||||
{
|
||||
|
||||
@@ -1,18 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Reflection.Metadata.Ecma335;
|
||||
using System.Threading.Tasks;
|
||||
using _0_Framework.Application;
|
||||
using _0_Framework.InfraStructure;
|
||||
using Company.Domain.CheckoutAgg;
|
||||
using Company.Domain.LeftWorkAgg;
|
||||
using Company.Domain.RollCallAgg;
|
||||
using Company.Domain.RollCallEmployeeAgg;
|
||||
using CompanyManagment.App.Contracts.Checkout;
|
||||
using CompanyManagment.App.Contracts.Contract;
|
||||
using CompanyManagment.App.Contracts.Employee;
|
||||
using CompanyManagment.App.Contracts.HolidayItem;
|
||||
using CompanyManagment.App.Contracts.InsuranceList;
|
||||
using CompanyManagment.App.Contracts.Leave;
|
||||
using CompanyManagment.App.Contracts.LeftWork;
|
||||
using CompanyManagment.App.Contracts.Loan;
|
||||
@@ -21,6 +25,7 @@ using CompanyManagment.App.Contracts.SalaryAid;
|
||||
using CompanyManagment.App.Contracts.WorkingHours;
|
||||
using CompanyManagment.App.Contracts.WorkingHoursTemp;
|
||||
using CompanyManagment.App.Contracts.Workshop;
|
||||
using CompanyManagment.EFCore.Migrations;
|
||||
using Microsoft.Data.SqlClient;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
@@ -41,8 +46,9 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
||||
private readonly ILeftWorkRepository _leftWorkRepository;
|
||||
private readonly IRollCallRepository _rollCallRepository;
|
||||
private readonly IRollCallMandatoryRepository _rollCallMandatoryRepository;
|
||||
private readonly IRollCallEmployeeRepository _rollCallEmployeeRepository;
|
||||
|
||||
public CheckoutRepository(IAuthHelper authHelper, CompanyContext context, IConfiguration configuration, ILeftWorkRepository leftWorkRepository, IWorkingHoursTempApplication workingHoursTempApplication, IRollCallRepository rollCallRepository, IRollCallMandatoryRepository rollCallMandatoryRepository) : base(context)
|
||||
public CheckoutRepository(IAuthHelper authHelper, CompanyContext context, IConfiguration configuration, ILeftWorkRepository leftWorkRepository, IWorkingHoursTempApplication workingHoursTempApplication, IRollCallRepository rollCallRepository, IRollCallMandatoryRepository rollCallMandatoryRepository, IRollCallEmployeeRepository rollCallEmployeeRepository) : base(context)
|
||||
{
|
||||
|
||||
_authHelper = authHelper;
|
||||
@@ -52,6 +58,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
||||
_workingHoursTempApplication = workingHoursTempApplication;
|
||||
_rollCallRepository = rollCallRepository;
|
||||
_rollCallMandatoryRepository = rollCallMandatoryRepository;
|
||||
_rollCallEmployeeRepository = rollCallEmployeeRepository;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -123,6 +130,360 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
||||
.FirstOrDefault(x => x.Id == id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// لود لیست اولیه جهت ایجاد فیش حقوقی
|
||||
/// </summary>
|
||||
/// <param name="workshopId"></param>
|
||||
/// <param name="employeeId"></param>
|
||||
/// <param name="year"></param>
|
||||
/// <param name="month"></param>
|
||||
/// <param name="contractStart"></param>
|
||||
/// <param name="contractEnd"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="NotImplementedException"></exception>
|
||||
public async Task<CreateCheckoutListViewModel> GetContractResultToCreateCheckout(long workshopId, long employeeId, string year, string month, string contractStart,
|
||||
string contractEnd)
|
||||
{
|
||||
DateTime startSreach;
|
||||
DateTime endSearch;
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(contractStart) && !string.IsNullOrWhiteSpace(contractEnd))
|
||||
{
|
||||
startSreach = contractStart.ToGeorgianDateTime();
|
||||
endSearch = contractEnd.ToGeorgianDateTime();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
if (month == "0" && year == "0")
|
||||
{
|
||||
DateTime now = DateTime.Now;
|
||||
startSreach = now;
|
||||
endSearch = (now.ToFarsi().FindeEndOfMonth()).ToGeorgianDateTime();
|
||||
}
|
||||
else if (month == "0" && year != "0")
|
||||
{
|
||||
DateTime now = DateTime.Now;
|
||||
|
||||
string startStr = $"{year}/{now.ToFarsi().Substring(5, 2)}/01";
|
||||
startSreach = startStr.ToGeorgianDateTime();
|
||||
endSearch = (startStr.FindeEndOfMonth()).ToGeorgianDateTime();
|
||||
}
|
||||
else if (month != "0" && year == "0")
|
||||
{
|
||||
DateTime now = DateTime.Now;
|
||||
|
||||
string startStr = $"{now.ToFarsi().Substring(0, 4)}/{month}/01";
|
||||
startSreach = startStr.ToGeorgianDateTime();
|
||||
endSearch = (startStr.FindeEndOfMonth()).ToGeorgianDateTime();
|
||||
}
|
||||
else
|
||||
{
|
||||
string startStr = $"{year}/{month}/01";
|
||||
startSreach = startStr.ToGeorgianDateTime();
|
||||
endSearch = (startStr.FindeEndOfMonth()).ToGeorgianDateTime();
|
||||
}
|
||||
|
||||
}
|
||||
var timer = new Stopwatch();
|
||||
timer.Start();
|
||||
|
||||
var contracts = _context.Contracts.AsSplitQuery()
|
||||
.Where(x => x.WorkshopIds == workshopId && x.IsActiveString == "true" && startSreach < x.ContractEnd &&
|
||||
endSearch > x.ContarctStart)
|
||||
.Join(_context.Workshops.AsSplitQuery(),
|
||||
contract => contract.WorkshopIds,
|
||||
workshop => workshop.id,
|
||||
(contract, workshop) => new { contract, workshop })
|
||||
.Join(_context.Employees.AsSplitQuery(),
|
||||
contractWorkshop => contractWorkshop.contract.EmployeeId,
|
||||
employee => employee.id,
|
||||
(contractWorkshop, employee) => new { contractWorkshop, employee })
|
||||
.Join(_context.LeftWorkList.AsSplitQuery().Where(l => l.WorkshopId == workshopId && l.StartWorkDate < endSearch && l.LeftWorkDate > startSreach),
|
||||
contractWorkshopEmployee => contractWorkshopEmployee.contractWorkshop.contract.EmployeeId,
|
||||
leftwork => leftwork.EmployeeId,
|
||||
(contractWorkshopEmployee, leftwork) => new { contractWorkshopEmployee, leftwork })
|
||||
.Join(_context.PersonnelCodeSet.AsSplitQuery().Where(p => p.WorkshopId == workshopId),
|
||||
contractWorkshopEmployeeleftWork => contractWorkshopEmployeeleftWork.contractWorkshopEmployee
|
||||
.contractWorkshop.contract.EmployeeId,
|
||||
personnelCode => personnelCode.EmployeeId,
|
||||
(contractWorkshopEmployeeleftWork, personnelCode) =>
|
||||
new { contractWorkshopEmployeeleftWork, personnelCode })
|
||||
|
||||
.GroupJoin(_context.CheckoutSet.AsSplitQuery(),
|
||||
contractWorkshopEmployeeleftWorkPersonnelCode => contractWorkshopEmployeeleftWorkPersonnelCode
|
||||
.contractWorkshopEmployeeleftWork.contractWorkshopEmployee.contractWorkshop.contract.id,
|
||||
checkout => checkout.ContractId,
|
||||
(contractWorkshopEmployeeleftWorkPersonnelCode, checkout) =>
|
||||
new { contractWorkshopEmployeeleftWorkPersonnelCode, checkout })
|
||||
.ToList();
|
||||
Console.WriteLine("query : " + timer.Elapsed);
|
||||
timer.Reset();
|
||||
timer.Start();
|
||||
if (employeeId > 0)
|
||||
contracts = contracts.Where(x =>
|
||||
x.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork
|
||||
.contractWorkshopEmployee.contractWorkshop.contract.EmployeeId == employeeId).ToList();
|
||||
var finalResult = contracts.Select(result =>
|
||||
{
|
||||
var now = DateTime.Now;
|
||||
DateTime currentStart = ($"{DateTime.Now.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime();
|
||||
DateTime currentEnd = ($"{DateTime.Now.ToFarsi().FindeEndOfMonth()}").ToGeorgianDateTime();
|
||||
var chekoutCreated = result.checkout.FirstOrDefault(x => x.ContractStart < endSearch && x.ContractEnd > startSreach && x.IsActiveString == "true");
|
||||
|
||||
if (chekoutCreated != null)
|
||||
{
|
||||
|
||||
return new CreateCheckoutListViewModel
|
||||
{
|
||||
Id = chekoutCreated.ContractId,
|
||||
|
||||
EmployeeId = chekoutCreated.EmployeeId,
|
||||
ContractNo = chekoutCreated.ContractNo,
|
||||
WorkshopName = chekoutCreated.WorkshopName,
|
||||
EmployeeName = chekoutCreated.EmployeeFullName,
|
||||
ContractStart = chekoutCreated.ContractStart.ToFarsi(),
|
||||
ContractEnd = chekoutCreated.ContractEnd.ToFarsi(),
|
||||
PersonnelCode = Convert.ToInt64(chekoutCreated.PersonnelCode),
|
||||
LaterThanEnd = false,
|
||||
Extension = false,
|
||||
Description = "دارای فیش حقوقی",
|
||||
HasCheckout = true
|
||||
};
|
||||
}
|
||||
var employeeJoin = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork
|
||||
.contractWorkshopEmployee.employee.id;
|
||||
|
||||
bool hasRollCall =
|
||||
_rollCallEmployeeRepository.HasRollCallRecord(employeeJoin, workshopId, startSreach, endSearch);
|
||||
|
||||
var leftWork = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork
|
||||
.leftwork;
|
||||
|
||||
bool extension = true;
|
||||
bool laterThanEnd = false;
|
||||
string description = "";
|
||||
string leftWorkDate="";
|
||||
string contractStart = "";
|
||||
string contractEnd = "";
|
||||
|
||||
var contractStartGr = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork
|
||||
.contractWorkshopEmployee.contractWorkshop.contract.ContarctStart;
|
||||
var contractEndGr = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork
|
||||
.contractWorkshopEmployee.contractWorkshop.contract.ContractEnd;
|
||||
#region HasRollCall
|
||||
|
||||
if (hasRollCall)
|
||||
{
|
||||
|
||||
// اگر ترک کار کرده بود
|
||||
// اگر ترک کارش در بازه انتخاب شده بود
|
||||
if (leftWork.HasLeft && leftWork.LeftWorkDate > startSreach && leftWork.LeftWorkDate <= endSearch)
|
||||
{
|
||||
//اگر بازه انتخاب شده در تاریخ جاری بود
|
||||
if (startSreach == currentStart && endSearch == currentEnd)
|
||||
{
|
||||
//اگر ترک کارش قبل یا مساوی تاریخ جاری بود
|
||||
if (leftWork.LeftWorkDate <= now)
|
||||
{
|
||||
//مجاز به ایجاد تصفیه
|
||||
extension = true;
|
||||
leftWorkDate = leftWork.LeftWorkDate.ToFarsi();
|
||||
contractStart = leftWork.StartWorkDate > startSreach
|
||||
? leftWork.StartWorkDate.ToFarsi()
|
||||
: startSreach.ToFarsi();
|
||||
contractEnd = leftWork.LeftWorkDate.AddDays(-1).ToFarsi();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
// مجاز نیست
|
||||
extension = false;
|
||||
description = "بعد از تاریخ ترک کار می توانید فیش صادر کنید";
|
||||
leftWorkDate = leftWork.LeftWorkDate.ToFarsi();
|
||||
contractStart = leftWork.StartWorkDate > startSreach
|
||||
? leftWork.StartWorkDate.ToFarsi()
|
||||
: startSreach.ToFarsi();
|
||||
contractEnd = leftWork.LeftWorkDate.AddDays(-1).ToFarsi();
|
||||
|
||||
}
|
||||
}
|
||||
else if (endSearch < currentStart)
|
||||
{
|
||||
extension = true;
|
||||
leftWorkDate = leftWork.LeftWorkDate.ToFarsi();
|
||||
contractStart = leftWork.StartWorkDate > startSreach
|
||||
? leftWork.StartWorkDate.ToFarsi()
|
||||
: startSreach.ToFarsi();
|
||||
contractEnd = leftWork.LeftWorkDate.AddDays(-1).ToFarsi();
|
||||
}
|
||||
else if (startSreach > currentEnd)
|
||||
{
|
||||
// مجاز نیست
|
||||
extension = false;
|
||||
description = "بعد از تاریخ ترک کار می توانید فیش صادر کنید";
|
||||
leftWorkDate = leftWork.LeftWorkDate.ToFarsi();
|
||||
contractStart = leftWork.StartWorkDate > startSreach
|
||||
? leftWork.StartWorkDate.ToFarsi()
|
||||
: startSreach.ToFarsi();
|
||||
contractEnd = leftWork.LeftWorkDate.AddDays(-1).ToFarsi();
|
||||
}
|
||||
|
||||
}
|
||||
else if (leftWork.HasLeft && leftWork.LeftWorkDate <= startSreach)
|
||||
{
|
||||
// مجاز نیست
|
||||
extension = false;
|
||||
description = "به دلیل ترک کار پیش از تاریخ انتخاب شده مجاز به ایجاد فیش نمی باشید";
|
||||
leftWorkDate = leftWork.LeftWorkDate.ToFarsi();
|
||||
|
||||
}
|
||||
else if (!leftWork.HasLeft && startSreach == currentStart)
|
||||
{
|
||||
// مجاز نیست
|
||||
extension = false;
|
||||
description = "به دلیل داشتن حضورغیاب تا پایان ماه مجاز به ایجاد فیش نمی باشید";
|
||||
contractStart = leftWork.StartWorkDate > startSreach
|
||||
? leftWork.StartWorkDate.ToFarsi()
|
||||
: startSreach.ToFarsi();
|
||||
contractEnd = endSearch.ToFarsi();
|
||||
|
||||
}
|
||||
else if (!leftWork.HasLeft && startSreach < currentStart)
|
||||
{
|
||||
|
||||
|
||||
|
||||
if (contractStartGr <= startSreach && contractStartGr > endSearch)
|
||||
{
|
||||
laterThanEnd = true;
|
||||
extension = true;
|
||||
contractStart = startSreach.ToFarsi();
|
||||
contractEnd = endSearch.ToFarsi();
|
||||
}
|
||||
else
|
||||
{
|
||||
laterThanEnd = false;
|
||||
extension = true;
|
||||
contractStart = leftWork.StartWorkDate > startSreach
|
||||
? leftWork.StartWorkDate.ToFarsi()
|
||||
: startSreach.ToFarsi();
|
||||
contractEnd = (leftWork.LeftWorkDate > startSreach && leftWork.LeftWorkDate <= endSearch) ? leftWork.LeftWorkDate.AddDays(-1).ToFarsi() : endSearch.ToFarsi();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Static
|
||||
|
||||
if (!hasRollCall)
|
||||
{
|
||||
if (leftWork.HasLeft)
|
||||
{
|
||||
if (leftWork.LeftWorkDate > startSreach && leftWork.LeftWorkDate <= endSearch)
|
||||
{
|
||||
extension = true;
|
||||
contractStart = leftWork.StartWorkDate > startSreach
|
||||
? leftWork.StartWorkDate.ToFarsi()
|
||||
: startSreach.ToFarsi();
|
||||
contractEnd = leftWork.LeftWorkDate.AddDays(-1).ToFarsi();
|
||||
leftWorkDate = leftWork.LeftWorkDate.ToFarsi();
|
||||
}
|
||||
else if (leftWork.LeftWorkDate <= startSreach)
|
||||
{
|
||||
// مجاز نیست
|
||||
extension = false;
|
||||
description = "به دلیل ترک کار پیش از تاریخ انتخاب شده مجاز به ایجاد فیش نمی باشید";
|
||||
leftWorkDate = leftWork.LeftWorkDate.ToFarsi();
|
||||
}
|
||||
else if(leftWork.LeftWorkDate > endSearch)
|
||||
{
|
||||
extension = true;
|
||||
|
||||
if (contractStartGr <= startSreach && contractStartGr > endSearch)
|
||||
{
|
||||
laterThanEnd = true;
|
||||
|
||||
contractStart = startSreach.ToFarsi();
|
||||
contractEnd = endSearch.ToFarsi();
|
||||
}
|
||||
else
|
||||
{
|
||||
contractStart = leftWork.StartWorkDate > startSreach
|
||||
? leftWork.StartWorkDate.ToFarsi()
|
||||
: startSreach.ToFarsi();
|
||||
contractEnd = endSearch.ToFarsi();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
extension = true;
|
||||
|
||||
if (contractStartGr <= startSreach && contractStartGr > endSearch)
|
||||
{
|
||||
laterThanEnd = true;
|
||||
|
||||
contractStart = startSreach.ToFarsi();
|
||||
contractEnd = endSearch.ToFarsi();
|
||||
}
|
||||
else
|
||||
{
|
||||
contractStart = leftWork.StartWorkDate > startSreach
|
||||
? leftWork.StartWorkDate.ToFarsi()
|
||||
: startSreach.ToFarsi();
|
||||
contractEnd = endSearch.ToFarsi();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
return new CreateCheckoutListViewModel
|
||||
{
|
||||
Id = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork
|
||||
.contractWorkshopEmployee.contractWorkshop.contract.id,
|
||||
|
||||
EmployeeId = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork
|
||||
.contractWorkshopEmployee.employee.id,
|
||||
ContractNo = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork
|
||||
.contractWorkshopEmployee.contractWorkshop.contract.ContractNo,
|
||||
//EmployerName = result.contract.EmployerName,
|
||||
WorkshopName = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork
|
||||
.contractWorkshopEmployee.contractWorkshop.workshop.WorkshopFullName,
|
||||
EmployeeName = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork
|
||||
.contractWorkshopEmployee.employee.FullName,
|
||||
|
||||
PersonnelCode = result.contractWorkshopEmployeeleftWorkPersonnelCode.personnelCode.PersonnelCode,
|
||||
//PersonnelCodeInt = Convert.ToInt32(result.contract.PersonnelCode),
|
||||
LaterThanEnd = laterThanEnd,
|
||||
Extension = extension,
|
||||
Description = description,
|
||||
ContractStart = contractStart,
|
||||
ContractEnd = contractEnd,
|
||||
LeftWorkDate = leftWorkDate
|
||||
};
|
||||
|
||||
}).OrderByDescending(x=>x.Extension).ToList();
|
||||
|
||||
|
||||
|
||||
|
||||
Console.WriteLine("process : " + timer.Elapsed);
|
||||
|
||||
return new CreateCheckoutListViewModel()
|
||||
{
|
||||
CreateCheckoutList = finalResult
|
||||
};
|
||||
}
|
||||
|
||||
public async Task CreateCkeckout(Checkout command)
|
||||
{
|
||||
|
||||
@@ -1153,13 +1514,13 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
||||
firstRCEndDate = firstRollCall.ShiftEndWithoutRest ?? firstRollCall.EndDate;
|
||||
if (secondRollCall != null)
|
||||
secondRCEndDate = secondRollCall.ShiftEndWithoutRest ?? secondRollCall.EndDate;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return new CheckoutDailyRollCallViewModel()
|
||||
{
|
||||
StartDate1 = firstRollCall?.StartDate?.ToString("HH:mm") ?? "",
|
||||
EndDate1 =firstRCEndDate?.ToString("HH:mm") ?? "",
|
||||
EndDate1 = firstRCEndDate?.ToString("HH:mm") ?? "",
|
||||
|
||||
StartDate2 = secondRollCall?.StartDate?.ToString("HH:mm") ?? "",
|
||||
EndDate2 = secondRCEndDate?.ToString("HH:mm") ?? "",
|
||||
|
||||
@@ -6,6 +6,8 @@ using System.Linq;
|
||||
using _0_Framework.Application;
|
||||
using _0_Framework.InfraStructure;
|
||||
using Company.Domain.RollCallEmployeeAgg;
|
||||
using Company.Domain.RollCallEmployeeStatusAgg;
|
||||
using Company.Domain.RollCallServiceAgg;
|
||||
using CompanyManagment.App.Contracts.LeftWorkTemp;
|
||||
using CompanyManagment.App.Contracts.RollCallEmployee;
|
||||
using CompanyManagment.App.Contracts.RollCallEmployeeStatus;
|
||||
@@ -20,16 +22,86 @@ public class RollCallEmployeeRepository : RepositoryBase<long, RollCallEmployee>
|
||||
private readonly CompanyContext _context;
|
||||
private readonly IPasswordHasher _passwordHasher;
|
||||
private readonly IWebHostEnvironment _webHostEnvironment;
|
||||
|
||||
private IRollCallServiceRepository _rollCallServiceRepository;
|
||||
|
||||
private IRollCallEmployeeStatusRepository _employeeRollCallStatusRepository;
|
||||
// private IRollCallEmployeeRepository _rollCallEmployeeRepositoryImplementation;
|
||||
|
||||
public RollCallEmployeeRepository(CompanyContext context, IPasswordHasher passwordHasher,
|
||||
IWebHostEnvironment webHostEnvironment) : base(context)
|
||||
IWebHostEnvironment webHostEnvironment, IRollCallServiceRepository rollCallServiceRepository, IRollCallEmployeeStatusRepository employeeRollCallStatusRepository) : base(context)
|
||||
{
|
||||
_context = context;
|
||||
_passwordHasher = passwordHasher;
|
||||
_webHostEnvironment = webHostEnvironment;
|
||||
_rollCallServiceRepository = rollCallServiceRepository;
|
||||
_employeeRollCallStatusRepository = employeeRollCallStatusRepository;
|
||||
}
|
||||
|
||||
|
||||
public bool HasRollCallRecord(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd)
|
||||
{
|
||||
//موقت
|
||||
// دادمهرگستر 11 *
|
||||
//585 کاشی گالری سرامیس (بابک ابراهیمی )
|
||||
//آموزشگاه ملل 604 *
|
||||
//کاریابی ملل 605 *
|
||||
//368 پیتزا امیر آماده سازی
|
||||
//367 پیتزا امیر رستوران
|
||||
//286 مرکز توان بخشی رسالت *
|
||||
//610 بیمارستان پارس - رازقی طعام
|
||||
DateTime start1404 = new DateTime(2025, 03, 21);
|
||||
bool skipRollCallByWorkshopId = false;
|
||||
if (contractStart < start1404)
|
||||
{
|
||||
skipRollCallByWorkshopId = workshopId is 11 or 585 or 604 or 605 or 368 or 367 or 286;
|
||||
}
|
||||
else
|
||||
{
|
||||
skipRollCallByWorkshopId = workshopId is 368 or 367 or 585 or 610;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//#if DEBUG
|
||||
// skipRollCallByWorkshopId = workshopId is 11 or 585 or 604 or 605 or 368 or 367;
|
||||
//#endif
|
||||
if (skipRollCallByWorkshopId)
|
||||
return false;
|
||||
|
||||
|
||||
// 42550 مصطفی مقدس نژاد فومنی
|
||||
bool skipRollCallByEmployeeId = employeeId is 42550;
|
||||
if (skipRollCallByEmployeeId)
|
||||
return false;
|
||||
|
||||
//9211 محسا تازه
|
||||
if (employeeId == 9211 && contractStart >= start1404)
|
||||
return false;
|
||||
|
||||
var service = _rollCallServiceRepository.GetAllServiceByWorkshopId(workshopId);
|
||||
|
||||
if (!service.Any(x => x.StartService.Date <= contractStart.Date && x.EndService.Date >= contractEnd.Date))
|
||||
return false;
|
||||
//var rollCallEmployee = GetByEmployeeIdAndWorkshopId(employeeId, workshopId);
|
||||
|
||||
//if (rollCallEmployee == null)
|
||||
// return false;
|
||||
var rollCallEmployee = _context.RollCallEmployees
|
||||
.Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId)
|
||||
.Include(x => x.EmployeesStatus);
|
||||
if (!rollCallEmployee.Any())
|
||||
return false;
|
||||
|
||||
var a = rollCallEmployee.Any(x => x.EmployeesStatus.Any(s =>
|
||||
(s.StartDate <= contractStart.Date && s.EndDate.Date >= contractEnd.Date) ||
|
||||
(s.StartDate.Date <= contractStart.Date && s.EndDate.Date > contractStart.Date)));
|
||||
//var result = _employeeRollCallStatusRepository.w(x => x.RollCallEmployeeId == rollCallEmployee.Id &&
|
||||
// (x.StartDate.Date <= contractStart.Date && x.EndDate.Date >= contractEnd.Date) ||
|
||||
// (x.StartDate.Date <= contractStart.Date && x.EndDate.Date > contractStart.Date));
|
||||
return a;
|
||||
}
|
||||
public List<RollCallEmployeeViewModel> GetByWorkshopId(long workshopId)
|
||||
{
|
||||
var query = _context.RollCallEmployees.Select(x => new RollCallEmployeeViewModel()
|
||||
|
||||
@@ -221,6 +221,13 @@
|
||||
border-radius: 10px !important;
|
||||
|
||||
}
|
||||
|
||||
.hasCheckoutSet {
|
||||
background-color: #ffb715 !important;
|
||||
}
|
||||
.noExtention{
|
||||
background-color: #ffc8c8 !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
}
|
||||
@@ -355,12 +362,14 @@
|
||||
</div>
|
||||
<div class="col-sm-4 pull-right" dir="rtl">
|
||||
<div class="form-group" id="start1" style="width: 100% !important; margin: 0 auto;">
|
||||
<input dir="ltr" disabled="disabled" id="sendStart" onchange="startValidcheck(this);" maxlength="10" style="text-align: center; width: 100%" placeholder="تاریخ شروع" class="form-control" asp-for="ContractStart"/>
|
||||
</div>
|
||||
<input dir="ltr" disabled="disabled" id="sendStartDisabled" onchange="startValidcheck(this);" maxlength="10" style="text-align: center; width: 100%" placeholder="تاریخ شروع" class="form-control" asp-for="ContractStart"/>
|
||||
<input type="hidden" id="sendStart" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4 pull-right" dir="rtl">
|
||||
<div class="form-group" id="end1" style="width: 100% !important; margin: 0 auto;">
|
||||
<input dir="ltr" disabled="disabled" id="sendEnd" onchange="endValidcheck(this);" maxlength="10" style="text-align: center;width: 100%" placeholder="تاریخ پایان" class="form-control" asp-for="ContractEnd"/>
|
||||
<input dir="ltr" disabled="disabled" id="sendEndDisabled" onchange="endValidcheck(this);" maxlength="10" style="text-align: center;width: 100%" placeholder="تاریخ پایان" class="form-control" asp-for="ContractEnd" />
|
||||
<input type="hidden" id="sendEnd" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -424,12 +433,12 @@
|
||||
</th>
|
||||
<th style="font-size: 10px !important" class="sizeSet">شماره پرسنلی</th>
|
||||
<th style="font-size: 10px !important" class="sizeSet">شماره قرارداد</th>
|
||||
<th style="font-size: 10px !important" class="sizeSet"> کارفرما </th>
|
||||
<th style="font-size: 10px !important" class="sizeSet"> توضیحات </th>
|
||||
<th style="font-size: 10px !important" class="sizeSet">کارگاه</th>
|
||||
<th style="font-size: 10px !important" class="sizeSet"> پرسنل </th>
|
||||
<th style="font-size: 10px !important" class="sizeSet">آغاز قرارداد</th>
|
||||
<th style="font-size: 10px !important" class="sizeSet">پایان قرارداد</th>
|
||||
<th style="font-size: 10px !important" class="sizeSet"> - </th>
|
||||
<th style="font-size: 10px !important" class="sizeSet"> ترک کار </th>
|
||||
<th style="font-size: 10px !important" class="sizeSet"> - </th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -475,11 +484,11 @@
|
||||
</div>
|
||||
</div>
|
||||
@* <script src="~/lib/jquery-ajax-unobtrusive/jquery.unobtrusive-ajax.min.js"></script> *@
|
||||
<script src="~/adminTheme/assets/datatables/jquery.dataTables.min.js"></script>
|
||||
<link href="~/AdminTheme/assets/datatables/jquery.dataTables.min.css" rel="stylesheet" type="text/css" />
|
||||
<script src="~/adminTheme/assets/datatables/dataTables.bootstrap.js"></script>
|
||||
<script src="~/lib/select2/js/select2.js"></script>
|
||||
<script src="~/lib/select2/js/i18n/fa.js"></script>
|
||||
<link href="~/AdminTheme/assets/datatables/jquery.dataTables.min.css" rel="stylesheet" type="text/css"/>
|
||||
|
||||
|
||||
|
||||
<link href="~/lib/select2/css/select2.css" rel="stylesheet"/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
@model CompanyManagment.App.Contracts.Checkout.CreateCheckout
|
||||
@model CompanyManagment.App.Contracts.Checkout.CreateCheckoutListViewModel
|
||||
@{
|
||||
var i = 1;
|
||||
var b = 0;
|
||||
@@ -14,12 +14,12 @@
|
||||
|
||||
|
||||
|
||||
@if (Model.Contracts != null)
|
||||
@if (Model.CreateCheckoutList.Count > 0)
|
||||
{
|
||||
@foreach (var item in Model.Contracts)
|
||||
@foreach (var item in Model.CreateCheckoutList)
|
||||
{
|
||||
<tr class="mytable">
|
||||
@if (item.RedColor)
|
||||
<tr class="mytable @(!item.Extension && !item.HasCheckout ? "noExtention" : "") @(item.HasCheckout ? "hasCheckoutSet" : "") ">
|
||||
@* @if (item.RedColor)
|
||||
{
|
||||
<input type="hidden" name="redColor"/>
|
||||
}
|
||||
@@ -34,7 +34,7 @@
|
||||
else if (item.Waiting && item.MoreThanOneMonth)
|
||||
{
|
||||
<input type="hidden" value="@item.EmployeeName" name="MixWatingAndMore"/>
|
||||
}
|
||||
} *@
|
||||
|
||||
<td style="font-size: 12px !important; text-align: center">
|
||||
@i
|
||||
@@ -42,23 +42,18 @@
|
||||
|
||||
<td style="font-size: 12px !important; text-align: center">
|
||||
|
||||
@if (item.Extension)
|
||||
@if (!item.Extension)
|
||||
{
|
||||
<input type="checkbox" name="cheking" value="@item.Id" checked="checked"/>
|
||||
|
||||
|
||||
|
||||
b++;
|
||||
<input type="checkbox" value="@item.Id" disabled="disabled"/>
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@if (item.RedColor)
|
||||
{
|
||||
<input type="checkbox" value="@item.Id" disabled="disabled"/>
|
||||
}
|
||||
else
|
||||
{
|
||||
<input type="checkbox" name="cheking" value="@item.Id"/>
|
||||
}
|
||||
<input type="checkbox" name="cheking" value="@item.Id" checked="checked"/>
|
||||
b++;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -88,7 +83,7 @@
|
||||
|
||||
}
|
||||
}*@
|
||||
@item.EmployerName
|
||||
@item.Description
|
||||
</td>
|
||||
|
||||
<td style="font-family: 'IranSans' !important; font-size: 12px !important; text-align: right">
|
||||
@@ -105,7 +100,7 @@
|
||||
|
||||
<td style="font-family: 'IranSans' !important; font-size: 12px !important; text-align: center">
|
||||
|
||||
@item.ContarctStart
|
||||
@item.ContractStart
|
||||
|
||||
|
||||
|
||||
@@ -127,22 +122,9 @@
|
||||
</td>
|
||||
|
||||
<td style="font-family: 'IranSans' !important; font-size: 12px !important; text-align: center">
|
||||
@if (item.RedColor == false)
|
||||
{
|
||||
<span style="color: #1e88e5;">
|
||||
|
||||
@item.NextMonthStart
|
||||
|
||||
|
||||
</span>
|
||||
}
|
||||
|
||||
@if (item.NextMonthStart == null)
|
||||
{
|
||||
<span style="visibility: hidden">####/##/##</span>
|
||||
}
|
||||
|
||||
|
||||
|
||||
<span>@item.LeftWorkDate</span>
|
||||
|
||||
</td>
|
||||
|
||||
@@ -202,7 +202,7 @@
|
||||
|
||||
|
||||
@section Script {
|
||||
<script src="~/lib/jquery-ajax-unobtrusive/jquery.unobtrusive-ajax.min.js"></script>
|
||||
<script src="~/lib/jquery-ajax-unobtrusive/jquery.unobtrusive-ajax.min.js"></script>
|
||||
<script src="~/AdminTheme/assets/js/site.js"></script>
|
||||
<script src="~/adminTheme/assets/datatables/jquery.dataTables.min.js"></script>
|
||||
<script src="~/adminTheme/assets/datatables/dataTables.bootstrap.js"></script>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user