GetContractsToCreateCheckout Completed
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
namespace CompanyManagment.App.Contracts.Checkout.Dto;
|
||||
|
||||
public class ContractsListToCreateCheckoutDto
|
||||
{
|
||||
/// <summary>
|
||||
/// آی دی قراداد
|
||||
/// </summary>
|
||||
public long Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// کد پرسنلی
|
||||
/// </summary>
|
||||
public long PersonnelCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// شماره قرارداد
|
||||
/// </summary>
|
||||
public string ContractNo { get; set; }
|
||||
|
||||
//نام کارگاه
|
||||
public string WorkshopName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// نام پرسنل
|
||||
/// </summary>
|
||||
public string EmployeeName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// تاریخ شوع فیش
|
||||
/// </summary>
|
||||
public string ContractStart { get; set; }
|
||||
/// <summary>
|
||||
/// تاریخ پایان فیش
|
||||
/// </summary>
|
||||
public string ContractEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// تاریخ ترک کار
|
||||
/// </summary>
|
||||
public string LeftWorkDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// وضعیت ایجاد فیش
|
||||
/// </summary>
|
||||
public CreateCheckoutStatus CreateCheckoutStatus { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// توضیحات
|
||||
/// </summary>
|
||||
public string Description { get; set; }
|
||||
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
namespace CompanyManagment.App.Contracts.Checkout.Dto;
|
||||
|
||||
/// <summary>
|
||||
/// وضعیت ایجاد فیش
|
||||
/// </summary>
|
||||
public enum CreateCheckoutStatus
|
||||
{
|
||||
/// <summary>
|
||||
/// آماده ایجاد
|
||||
/// </summary>
|
||||
ReadyToCreate,
|
||||
|
||||
/// <summary>
|
||||
/// غیر مجاز
|
||||
/// </summary>
|
||||
NotValid,
|
||||
|
||||
/// <summary>
|
||||
/// دارای فیش حقوقی
|
||||
/// </summary>
|
||||
HasCheckout,
|
||||
}
|
||||
@@ -95,6 +95,18 @@ public interface ICheckoutApplication
|
||||
/// <param name="ids"></param>
|
||||
/// <returns></returns>
|
||||
Task<List<CheckoutPrintDto>> CheckoutPrint(List<long> ids);
|
||||
|
||||
/// <summary>
|
||||
/// دریافت لیست قراردادها برای ایجاد فیش حقوقی
|
||||
/// </summary>
|
||||
/// <param name="workshopId"></param>
|
||||
/// <param name="year"></param>
|
||||
/// <param name="month"></param>
|
||||
/// <param name="employeeId"></param>
|
||||
/// <returns></returns>
|
||||
Task<OperationResult<List<ContractsListToCreateCheckoutDto>>> GetContractToCreateCheckout(long workshopId,
|
||||
string year, string month, long employeeId);
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2734,22 +2734,42 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
||||
|
||||
#region ForApi
|
||||
|
||||
///ایجاد فیش
|
||||
#region CreateCheckout
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// دریافت سلکت لیست پرسنل کارگاه
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<EmployeeSelectListDto>> GetEmployeeSelectListByWorkshopId(long id)
|
||||
{
|
||||
var employeesHasLeftworkData =_context.LeftWorkList.Where(x => x.WorkshopId == id).Select(x => x.EmployeeId);
|
||||
var employees =await _context.Employees
|
||||
var employeesHasLeftworkData = _context.LeftWorkList.Where(x => x.WorkshopId == id).Select(x => x.EmployeeId);
|
||||
var employees = await _context.Employees
|
||||
.Where(x => employeesHasLeftworkData.Contains(x.id))
|
||||
.Select(x =>
|
||||
new EmployeeSelectListDto()
|
||||
{
|
||||
Id = x.id,
|
||||
EmployeeFullName = x.FullName
|
||||
})
|
||||
new EmployeeSelectListDto()
|
||||
{
|
||||
Id = x.id,
|
||||
EmployeeFullName = x.FullName
|
||||
})
|
||||
.AsNoTracking()
|
||||
.ToListAsync();
|
||||
return employees;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// دریافت لیست فیش حقوقی
|
||||
/// </summary>
|
||||
/// <param name="searchModel"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<PagedResult<CheckoutDto>> GetList(CheckoutSearchModelDto searchModel)
|
||||
{
|
||||
var acountID = _authHelper.CurrentAccountId();
|
||||
@@ -3039,7 +3059,12 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// پرینت فیش حقوقی
|
||||
/// Api
|
||||
/// </summary>
|
||||
/// <param name="ids"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<CheckoutPrintDto>> CheckoutPrint(List<long> ids)
|
||||
{
|
||||
if (ids.Count == 0)
|
||||
|
||||
@@ -7,6 +7,7 @@ using CompanyManagment.App.Contracts.Workshop.DTOs;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using NuGet.Packaging.Signing;
|
||||
using ServiceHost.BaseControllers;
|
||||
using WorkFlow.Application.Contracts.WorkFlow;
|
||||
|
||||
namespace ServiceHost.Areas.Admin.Controllers;
|
||||
|
||||
@@ -14,11 +15,13 @@ public class CheckoutController : AdminBaseController
|
||||
{
|
||||
private readonly ICheckoutApplication _checkoutApplication;
|
||||
private readonly IWorkshopApplication _workshopApplication;
|
||||
private readonly IWorkFlowApplication _workFlowApplication;
|
||||
|
||||
public CheckoutController(ICheckoutApplication checkoutApplication, IWorkshopApplication workshopApplication)
|
||||
public CheckoutController(ICheckoutApplication checkoutApplication, IWorkshopApplication workshopApplication, IWorkFlowApplication workFlowApplication)
|
||||
{
|
||||
_checkoutApplication = checkoutApplication;
|
||||
_workshopApplication = workshopApplication;
|
||||
_workFlowApplication = workFlowApplication;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -92,6 +95,32 @@ public class CheckoutController : AdminBaseController
|
||||
var result = await _checkoutApplication.GetEmployeeSelectListByWorkshopId(workshopId);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// دریافت لیست قراردادها برای ایجاد فیش حقوقی
|
||||
/// </summary>
|
||||
/// <param name="workshopId"></param>
|
||||
/// <param name="year"></param>
|
||||
/// <param name="month"></param>
|
||||
/// <param name="employeeId"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("GetContractsToCreateCheckout")]
|
||||
public async Task<OperationResult<List<ContractsListToCreateCheckoutDto>>> GetContractsToCreateCheckout(long workshopId, string year, string month, long employeeId)
|
||||
{
|
||||
|
||||
var result =await _checkoutApplication.GetContractToCreateCheckout(workshopId, year, month, employeeId);
|
||||
if (!result.IsSuccedded)
|
||||
return result;
|
||||
|
||||
var hasWorkFlow =await _workFlowApplication.HasWorkFlow(workshopId, year, month);
|
||||
|
||||
if (hasWorkFlow)
|
||||
return new OperationResult<List<ContractsListToCreateCheckoutDto>>().Failed(
|
||||
"این کارگاه به دلیل داشتن کارپوشه مجاز به ایجاد تصفیه حساب نمی باشد");
|
||||
return result;
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
@@ -386,17 +386,17 @@ if (builder.Environment.IsDevelopment())
|
||||
{
|
||||
var logConfig = configuration
|
||||
.ReadFrom.Configuration(context.Configuration)
|
||||
.ReadFrom.Services(services)
|
||||
.Enrich.FromLogContext();
|
||||
.ReadFrom.Services(services);
|
||||
|
||||
|
||||
|
||||
logConfig.WriteTo.File(
|
||||
path: Path.Combine(logDirectory, "gozareshgir_log.txt"),
|
||||
rollingInterval: RollingInterval.Day,
|
||||
retainedFileCountLimit: 30,
|
||||
shared: true,
|
||||
outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level}] {Message}{NewLine}{Exception}"
|
||||
);
|
||||
//logConfig.WriteTo.File(
|
||||
// path: Path.Combine(logDirectory, "gozareshgir_log.txt"),
|
||||
// rollingInterval: RollingInterval.Day,
|
||||
// retainedFileCountLimit: 30,
|
||||
// shared: true,
|
||||
// outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level}] {Message}{NewLine}{Exception}"
|
||||
//);
|
||||
}, writeToProviders: true); // این باعث میشه کنسول پیشفرض هم کار کنه
|
||||
|
||||
}
|
||||
|
||||
@@ -73,4 +73,15 @@ public interface IWorkFlowApplication
|
||||
|
||||
Task<List<DailyRollCallConfirmedWithoutLunchBreakViewModel>> GetEmployeesWithoutLunchBreak(long workshopId);
|
||||
Task<List<(long Id, string Name)>> GetEmployeesWithoutGroup(long workshopId);
|
||||
|
||||
#region ForApi
|
||||
/// <summary>
|
||||
/// در زمان ایجاد فیش کارپوشه کارگاه را چک میکند
|
||||
/// </summary>
|
||||
/// <param name="workshopId"></param>
|
||||
/// <param name="year"></param>
|
||||
/// <param name="month"></param>
|
||||
/// <returns></returns>
|
||||
Task<bool> HasWorkFlow(long workshopId, string year, string month);
|
||||
#endregion
|
||||
}
|
||||
@@ -781,5 +781,66 @@ public class WorkFlowApplication : IWorkFlowApplication
|
||||
return _customizedWorkshopSettingsACL.GetEmployeesWithoutGroup(workshopId);
|
||||
}
|
||||
|
||||
#region ForApi
|
||||
|
||||
|
||||
public async Task<bool> HasWorkFlow(long workshopId, string year, string month)
|
||||
{
|
||||
var workshop = _workshopRepository.GetDetails(workshopId);
|
||||
bool hasWorkFlow = false;
|
||||
|
||||
var skipRollCallByWorkshopId = workshopId is 368 or 610;
|
||||
if (workshop.HasRollCallFreeVip == "true" && !skipRollCallByWorkshopId)
|
||||
{
|
||||
DateTime startSreach;
|
||||
DateTime endSearch;
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
DateTime lastMonthEnd = ($"{DateTime.Now.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime().AddDays(-1);
|
||||
if (lastMonthEnd == endSearch)
|
||||
{
|
||||
var countWorkFlowCut = await CountCutByBgServiceLastMonth(workshopId);
|
||||
var countWorkFlowAbsent = await CountAbsentRollCallLastMonth(workshopId);
|
||||
var countWorkFlowLunchBreak = await CountEmployeesWithoutLunchBreakLastMonth(workshopId);
|
||||
var countUndefinedRollCalls = await CountUndefinedLastMonth(workshopId);
|
||||
|
||||
hasWorkFlow = countWorkFlowCut > 0 || countWorkFlowAbsent > 0 || countWorkFlowLunchBreak > 0 ||
|
||||
countUndefinedRollCalls > 0;
|
||||
}
|
||||
}
|
||||
|
||||
return hasWorkFlow;
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user