Compare commits
24 Commits
Feature/Su
...
Feature/Ch
| Author | SHA1 | Date | |
|---|---|---|---|
| ab604d3be5 | |||
|
|
d713cbb1fe | ||
|
|
8418c2edc4 | ||
|
|
e109a41b90 | ||
|
|
158fc91a67 | ||
|
|
d1fb6e933d | ||
|
|
0811482370 | ||
|
|
46833f93da | ||
|
|
8d78ea548a | ||
|
|
ffbadc5a96 | ||
| e889b61d27 | |||
|
|
baeeec183b | ||
|
|
3142a80b44 | ||
|
|
175158a3d7 | ||
|
|
66ada45d29 | ||
|
|
e486f20a5a | ||
|
|
22f13aea0b | ||
|
|
88a9a62dd3 | ||
|
|
6fd9b336a9 | ||
|
|
03e4f7e8c1 | ||
|
|
9311d68a91 | ||
|
|
9e91214941 | ||
|
|
3e3eccf0f0 | ||
|
|
789b0fbc24 |
@@ -277,6 +277,8 @@ namespace AccountManagement.Application
|
||||
}
|
||||
|
||||
_subAccountRoleRepository.SaveChanges();
|
||||
_workshopSubAccountRepository.SaveChanges();
|
||||
|
||||
return op.Succcedded();
|
||||
}
|
||||
public OperationResult AssignRoleToSubAccount(AssignSubAccountRole command)
|
||||
|
||||
@@ -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,361 @@ 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;
|
||||
string startStr = $"{now.ToFarsi().Substring(0, 8)}01";
|
||||
startSreach = startStr.ToGeorgianDateTime();
|
||||
endSearch = (startStr.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 +1515,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()
|
||||
|
||||
@@ -7,15 +7,20 @@ using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using AccountManagement.Domain.SubAccountAgg;
|
||||
using Company.Domain.EmployeeAgg;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
|
||||
namespace CompanyManagment.EFCore.Repository;
|
||||
|
||||
public class WorkshopSubAccountRepository : RepositoryBase<long, WorkshopSubAccount>, IWorkshopSubAccountRepository
|
||||
{
|
||||
private readonly CompanyContext _companyContext;
|
||||
public WorkshopSubAccountRepository(CompanyContext context, CompanyContext companyContext) : base(context)
|
||||
private readonly IEmployeeRepository _employeeRepository;
|
||||
|
||||
public WorkshopSubAccountRepository(CompanyContext context, CompanyContext companyContext, IEmployeeRepository employeeRepository) : base(context)
|
||||
{
|
||||
_companyContext = companyContext;
|
||||
_employeeRepository = employeeRepository;
|
||||
}
|
||||
|
||||
public List<WorkshopSubAccountViewModel> GetWorkshopsBySubAccountId(long subAccountId)
|
||||
@@ -30,14 +35,15 @@ public class WorkshopSubAccountRepository : RepositoryBase<long, WorkshopSubAcco
|
||||
SubAccountId = sub.SubAccountId,
|
||||
IsActive = sub.IsActive.ToString(),
|
||||
WorkshopId = sub.WorkshopId,
|
||||
WorkshopName = sub.Workshop.WorkshopName,
|
||||
PersonnelCount = _companyContext.LeftWorkList.Count(left =>
|
||||
left.WorkshopId == sub.WorkshopId &&
|
||||
left.StartWorkDate <= dateNow &&
|
||||
left.LeftWorkDate > dateNow)
|
||||
WorkshopName = sub.Workshop.WorkshopFullName,
|
||||
})
|
||||
.ToList();
|
||||
|
||||
viewModelList.ForEach(x =>
|
||||
{
|
||||
x.PersonnelCount = _employeeRepository.GetWorkingEmployeesByWorkshopId(x.WorkshopId).Count();
|
||||
});
|
||||
|
||||
return viewModelList;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -26,10 +26,10 @@
|
||||
margin: 3mm 5mm 0 5mm; ">
|
||||
<div class="row" dir="rtl">
|
||||
<div class="col-xs-3 d-inline-block"></div>
|
||||
<div class="col-xs-6 d-inline-block text-center">
|
||||
<p style="font-size: 18px; font-family: 'IranNastaliq' !important; margin-top:0 !important;">بسمه تعالی</p>
|
||||
<p style="font-size: 15px; font-weight: bold; margin: 2px;">فیش حقوقی و رسید پرداخت حقوق</p>
|
||||
</div>
|
||||
<div class="col-xs-6 d-inline-block text-center">
|
||||
<p style="font-size: 18px; font-family: 'IranNastaliq' !important; margin-top:0 !important;">بسمه تعالی</p>
|
||||
<p style="font-size: 15px; font-weight: bold; margin: 2px;">فیش حقوقی و رسید پرداخت حقوق</p>
|
||||
</div>
|
||||
<div class="col-xs-3 d-inline-block"><fieldset style="border: 1px solid black; border-radius: 15px; padding: 1px 15px 1px 15px; margin-top: 5px; width: 70%; font-size: 12px; text-align: center;"> @Model.ContractNo</fieldset></div>
|
||||
</div>
|
||||
|
||||
@@ -165,6 +165,10 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="padding-top: 10px" class="print-qrcode">
|
||||
<img src="https://bwipjs-api.metafloor.com/?bcid=code128&text=Chkt_@Model.Id&includetext=false" alt="Barcode">
|
||||
@* <img src="https://api.qrserver.com/v1/create-qr-code/?size=100x100&data=Chkt_@Model.Id" alt="QR Code"> *@
|
||||
</div>
|
||||
|
||||
<div class="row m-t-20">
|
||||
<fieldset style="border: 1px solid black !important;-webkit-print-color-adjust: exact;print-color-adjust: exact; border-radius: 10px 10px 10px 10px; margin: 0px 10px;overflow:hidden">
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<p style="font-size: 18px; font-family: 'IranNastaliq' !important; margin-top:0 !important;">بسمه تعالی</p>
|
||||
<p style="font-size: 15px; font-weight: bold; margin: 2px;">فیش حقوقی و رسید پرداخت حقوق</p>
|
||||
</div>
|
||||
<div class="col-xs-3 d-inline-block"></div>
|
||||
<div class="col-xs-3 d-inline-block"></div>
|
||||
</div>
|
||||
|
||||
<div class="headerInfo">
|
||||
|
||||
@@ -101,9 +101,16 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
|
||||
|
||||
subAccountRoles.ForEach(role =>
|
||||
{
|
||||
var subAccount = role.SubAccounts.First().id;
|
||||
var workshopIds = _context.WorkshopSubAccounts.Where(x=>x.SubAccountId == subAccount).Select(x=>x.WorkshopId).ToList();
|
||||
role.Edit(role.Title,role.RolePermissions.Select(x=>x.PermissionCode).ToList(),workshopIds);
|
||||
var getSubAccount = role.SubAccounts.FirstOrDefault();
|
||||
if (getSubAccount != null)
|
||||
{
|
||||
var subAccount = getSubAccount.id;
|
||||
|
||||
var workshopIds = _context.WorkshopSubAccounts.Where(x => x.SubAccountId == subAccount).Select(x => x.WorkshopId).ToList();
|
||||
role.Edit(role.Title, role.RolePermissions.Select(x => x.PermissionCode).ToList(), workshopIds);
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
await _accountContext.SaveChangesAsync();
|
||||
}
|
||||
|
||||
@@ -113,5 +113,6 @@
|
||||
var permissionListAjax = `@Url.Page("./Index", "Permissions")`;
|
||||
var workshopListAjax = `@Url.Page("./Index", "WorkshopList")`;
|
||||
var itemsPermission = @Html.Raw(Json.Serialize(Model.Permissions));
|
||||
var selctedWorkshopslist = @Html.Raw(Json.Serialize(Model.WorkshopIds));
|
||||
</script>
|
||||
<script src="~/assetsclient/pages/SubAccounts/js/ModalEditRole.js?ver=@clientVersion"></script>
|
||||
31
ServiceHost/Controllers/CheckoutController.cs
Normal file
31
ServiceHost/Controllers/CheckoutController.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
using _0_Framework.Application;
|
||||
using CompanyManagment.App.Contracts.Checkout;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace ServiceHost.Controllers;
|
||||
|
||||
public record ApiSignCheckoutRequest(long Id);
|
||||
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
public class CheckoutController : ControllerBase
|
||||
{
|
||||
private readonly ICheckoutApplication _checkoutApplication;
|
||||
|
||||
public CheckoutController(ICheckoutApplication checkoutApplication)
|
||||
{
|
||||
_checkoutApplication = checkoutApplication;
|
||||
}
|
||||
|
||||
[HttpPost("Sign")]
|
||||
public ActionResult<OperationResult> SignCheckout([FromBody] ApiSignCheckoutRequest data)
|
||||
{
|
||||
var result = _checkoutApplication.Sign(data.Id);
|
||||
if (result.IsSuccedded)
|
||||
{
|
||||
return Ok(result);
|
||||
}
|
||||
return BadRequest(result);
|
||||
}
|
||||
}
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
$(document).on('click', '.togglePermission > span', function () {
|
||||
$(this).siblings('ul').toggle();
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
@@ -227,6 +228,7 @@ function updateParentCheckbox(childCheckbox) {
|
||||
let childCheckboxes = parentLi.find('ul .node-checkbox');
|
||||
let checkedChildren = childCheckboxes.filter(':checked');
|
||||
|
||||
|
||||
let allChecked = childCheckboxes.length === checkedChildren.length;
|
||||
let anyChecked = checkedChildren.length > 0;
|
||||
|
||||
@@ -239,6 +241,7 @@ function updateParentCheckbox(childCheckbox) {
|
||||
|
||||
function ajaxWorkshops() {
|
||||
var html = '';
|
||||
|
||||
$.ajax({
|
||||
url: workshopListAjax,
|
||||
type: 'GET',
|
||||
@@ -246,9 +249,11 @@ function ajaxWorkshops() {
|
||||
if (response.success) {
|
||||
var items = response.data;
|
||||
items.forEach(function (item) {
|
||||
var isChecked = selctedWorkshopslist.includes(Number(item.id)) ? 'checked' : '';
|
||||
console.log(typeof item.id)
|
||||
html += `<div class="workshop__item">
|
||||
<input type="checkbox" id="workshop_${item.id}" name="WorkshopIds[]" class="workshop__checkbox">
|
||||
<label for="workshop_${item.id}" value="${item.id}" class="workshop__label-text workshop__label-text--outlined">${item.name}</label>
|
||||
<input type="checkbox" id="workshop_${item.id}" data-id="${item.id}" name="WorkshopIds[]" class="workshop__checkbox" ${isChecked}>
|
||||
<label for="workshop_${item.id}" value="${item.id}" class="workshop__label-text workshop__label-text--outlined">${item.name}</label>
|
||||
</div>`;
|
||||
});
|
||||
$('#workshopItems').html(html);
|
||||
@@ -270,6 +275,7 @@ function ajaxWorkshops() {
|
||||
function showModalWorkshop() {
|
||||
$('.form-role-workshop-section').addClass('form-role-workshop-section-mobile');
|
||||
$('body').css('overflow', 'hidden');
|
||||
|
||||
}
|
||||
|
||||
function hideModalWorkshop() {
|
||||
@@ -280,7 +286,7 @@ function hideModalWorkshop() {
|
||||
function chooseWorkshops() {
|
||||
|
||||
const checkedWorkshops = $('input[name="WorkshopIds[]"]:checked');
|
||||
|
||||
|
||||
if (checkedWorkshops.length === 0) {
|
||||
$('.alert-msg').show();
|
||||
$('.alert-msg p').text('لطفا کارگاه مورد نظر را انتخاب کنید');
|
||||
@@ -315,6 +321,7 @@ function SaveDataAjax() {
|
||||
var Id = $('#Id ');
|
||||
var Title = $('#Title ');
|
||||
|
||||
|
||||
if (!Title.val()) {
|
||||
Title.addClass('errored');
|
||||
$('.alert-msg').show();
|
||||
@@ -346,6 +353,12 @@ function SaveDataAjax() {
|
||||
}
|
||||
});
|
||||
|
||||
var selectedWorkshopIds = [];
|
||||
|
||||
document.querySelectorAll('input[name="WorkshopIds[]"]:checked').forEach(function (input) {
|
||||
selectedWorkshopIds.push(input.getAttribute('data-id'));
|
||||
});
|
||||
|
||||
if (selectedPermissions.length === 0) {
|
||||
$('.alert-msg').show();
|
||||
$('.alert-msg p').text('لطفا دسترسیها را انتخاب نمائید');
|
||||
@@ -361,7 +374,8 @@ function SaveDataAjax() {
|
||||
var data = {
|
||||
Id: Id.val(),
|
||||
Title: Title.val(),
|
||||
Permissions: selectedPermissions
|
||||
Permissions: selectedPermissions,
|
||||
WorkshopIds: selectedWorkshopIds
|
||||
};
|
||||
|
||||
$.ajax({
|
||||
|
||||
Reference in New Issue
Block a user