修复相关bug
This commit is contained in:
+59
-1
@@ -229,7 +229,65 @@ public class OnboardingTemplateService : IOnboardingTemplateService
|
||||
&& templateIds.Contains(item.Id))
|
||||
.OrderBy(item => item.TemplateName)
|
||||
.ToListAsync();
|
||||
return await BuildOutputs(templates);
|
||||
if (templates.Count == 0)
|
||||
return await BuildOutputs(templates);
|
||||
|
||||
var onboardingTemplateIds = templates.Select(item => item.Id).ToList();
|
||||
var contractConfigs = await _db.Queryable<ObOnboardingTemplateContract>()
|
||||
.Where(item => onboardingTemplateIds.Contains(item.OnboardingTemplateId))
|
||||
.ToListAsync();
|
||||
if (contractConfigs.Count == 0)
|
||||
return await BuildOutputs(new List<ObOnboardingTemplate>());
|
||||
|
||||
var contractTemplateIds = contractConfigs
|
||||
.Select(item => item.ContractTemplateId)
|
||||
.Distinct()
|
||||
.ToList();
|
||||
var contractVersionIds = contractConfigs
|
||||
.Select(item => item.ContractTemplateVersionId)
|
||||
.Distinct()
|
||||
.ToList();
|
||||
var contractTemplates = await _db.Queryable<ObContractTemplate>()
|
||||
.Where(item => contractTemplateIds.Contains(item.Id))
|
||||
.ToListAsync();
|
||||
var contractVersions = await _db.Queryable<ObContractTemplateVersion>()
|
||||
.Where(item => contractVersionIds.Contains(item.Id))
|
||||
.ToListAsync();
|
||||
var contractPositions = await _db.Queryable<ObContractTemplatePosition>()
|
||||
.Where(item => contractTemplateIds.Contains(item.ContractTemplateId)
|
||||
&& item.PositionId == positionId)
|
||||
.ToListAsync();
|
||||
var now = DateTime.Now;
|
||||
var availableTemplates = templates.Where(template =>
|
||||
{
|
||||
var configs = contractConfigs
|
||||
.Where(item => item.OnboardingTemplateId == template.Id)
|
||||
.ToList();
|
||||
if (configs.Count == 0)
|
||||
return false;
|
||||
|
||||
return configs.All(config =>
|
||||
{
|
||||
var contractTemplate = contractTemplates
|
||||
.FirstOrDefault(item => item.Id == config.ContractTemplateId);
|
||||
var version = contractVersions
|
||||
.FirstOrDefault(item => item.Id == config.ContractTemplateVersionId);
|
||||
return contractTemplate != null
|
||||
&& string.Equals(
|
||||
contractTemplate.Status,
|
||||
"enable",
|
||||
StringComparison.OrdinalIgnoreCase)
|
||||
&& contractTemplate.CompanyId == template.CompanyId
|
||||
&& contractTemplate.DepartmentId == template.DepartmentId
|
||||
&& contractPositions.Any(item =>
|
||||
item.ContractTemplateId == config.ContractTemplateId)
|
||||
&& version != null
|
||||
&& version.TemplateId == config.ContractTemplateId
|
||||
&& ContractTemplateVersionValidity.IsAvailable(version, now);
|
||||
});
|
||||
}).ToList();
|
||||
|
||||
return await BuildOutputs(availableTemplates);
|
||||
}
|
||||
|
||||
private static void NormalizeAndValidateInput(OnboardingTemplateSaveInput input)
|
||||
|
||||
Reference in New Issue
Block a user