public ApplyAuditStreamNodeAction NewNode(IMembersFilter filter, string name, string companyRegion, string description = null) { var prev = context.ApplyAuditStreamNodeActionDb.Where(a => a.Name == name).FirstOrDefault(); if (prev != null) { return(prev); } var result = new ApplyAuditStreamNodeAction() { Description = description, Name = name, Create = DateTime.Now, RegionOnCompany = companyRegion, Companies = filter?.Companies, CompanyRefer = filter?.CompanyRefer, CompanyTags = filter.CompanyTags, CompanyCodeLength = filter.CompanyCodeLength, Duties = filter?.Duties, DutiesTags = filter?.DutiesTags, DutyIsMajor = filter?.DutyIsMajor ?? DutiesIsMajor.BothCanGo, AuditMembers = filter?.AuditMembers, AuditMembersCount = filter?.AuditMembersCount ?? 0, }; context.ApplyAuditStreamNodeActions.Add(result); context.SaveChanges(); return(result); }
public static ApplyAuditStreamSolutionRule ToApplyAuditStreamSolutionRule(this IMembersFilter model, ApplyAuditStreamSolutionRule raw = null) { if (model == null) { return(null); } if (raw == null) { raw = new ApplyAuditStreamSolutionRule(); } raw.AuditMembers = model.AuditMembers; raw.Companies = model.Companies; raw.CompanyCodeLength = model.CompanyCodeLength; raw.CompanyRefer = model.CompanyRefer; raw.CompanyTags = model.CompanyTags; raw.Duties = model.Duties; raw.DutiesTags = model.DutiesTags; raw.DutyIsMajor = model.DutyIsMajor; raw.RegionOnCompany = model.RegionOnCompany; return(raw); }
public IEnumerable <string> GetToAuditMembers(string company, string companyRegion, IMembersFilter filterRaw, bool CheckInvalidAccount) { var filter = filterRaw.ToDtoModel(); if (filter == null || company == null) { return(null); } if (filter.AuditMembers != null && filter.AuditMembers.Any()) { return(filter.AuditMembers); } // 下级作用域节点应可作用到上级,否则将可能导致无法选中成员 var result = context.AppUsersDb; string target = null; if (!filter.CompanyRefer.IsNullOrEmpty()) { var refer = filter.CompanyRefer.ToLower(); target = refer == "parent" ? company.Substring(0, company.Length - 1) : refer == "self" ? company : null; } if (target == null) { // Companies if (filter.Companies != null && filter.Companies.Any(a => a.Length > 0)) { var expC = PredicateBuilder.New <User>(false); foreach (var c in filter.Companies) { expC = expC.Or(u => u.CompanyInfo.CompanyCode.StartsWith(c)); } result = result.Where(expC); } // CompanyTag if (filter.CompanyTags != null && filter.CompanyTags.Any(a => a.Length > 0)) { var expC = PredicateBuilder.New <User>(false); foreach (var c in filter.CompanyTags) { expC = expC.Or(u => u.CompanyInfo.Company.Tag.Contains(c)); } result = result.Where(expC); } // CompanyLength if (filter.CompanyCodeLength != null && filter.CompanyCodeLength.Any(a => a > 0)) { var expL = PredicateBuilder.New <User>(false); foreach (var l in filter.CompanyCodeLength) { expL = expL.Or(u => u.CompanyInfo.CompanyCode.Length == l); } result = result.Where(expL); } } else { result = result.Where(u => u.CompanyInfo.CompanyCode == target); } // 指定职务 if (filter.Duties != null && filter.Duties.Any(a => a > 0)) { var expD = PredicateBuilder.New <User>(false); foreach (var d in filter.Duties) { expD = expD.Or(u => u.CompanyInfo.Duties.Code == d); } result = result.Where(expD); } if (filter.DutyTags != null && filter.DutyTags.Any(a => a.Length > 0)) { var expD = PredicateBuilder.New <User>(false); foreach (var d in filter.DutyTags) { expD = expD.Or(u => u.CompanyInfo.Duties.Tags.Contains(d)); } result = result.Where(expD); } switch (filter.DutyIsMajor) { case DutiesIsMajor.BothCanGo: break; case DutiesIsMajor.OnlyMajor: result = result.Where(u => u.CompanyInfo.Duties.IsMajorManager); break; case DutiesIsMajor.OnlyUnMajor: result = result.Where(u => !u.CompanyInfo.Duties.IsMajorManager); break; } var rawUser = CheckInvalidAccount ? result.ToList().Where(u => u.Application.InvalidAccount() == UserExtensions.AccountType.BeenAuth).Select(u => u.Id) : result.ToList().Select(u => u.Id); // 管理具有本单位审批权限 // 但非必选项,此处不应直接加入可审列表,而应在操作审批时判断是否是管理 // 一旦管理审批,此流程将直接通过 //var managers = companyManagerServices.GetManagers(company).ToList(); //if (managers != null) //{ // var m = managers.Select(u => u.UserId).ToList(); // fitUsers = fitUsers.Union(m); //} return(rawUser); }
public ApplyAuditStreamSolutionRule NewSolutionRule(ApplyAuditStream solution, IMembersFilter filter, string name, string companyRegion, string description = null, int priority = 0, bool enable = false, string entityType = null) { var prev = context.ApplyAuditStreamSolutionRuleDb.Where(r => r.Name == name).FirstOrDefault(); if (prev != null) { return(prev); } var result = new ApplyAuditStreamSolutionRule() { Name = name, Description = description, Priority = priority, Enable = enable, EntityType = entityType, Create = DateTime.Now, RegionOnCompany = companyRegion, Companies = filter?.Companies, CompanyRefer = filter?.CompanyRefer, CompanyTags = filter.CompanyTags, CompanyCodeLength = filter.CompanyCodeLength, Duties = filter?.Duties, DutiesTags = filter?.DutiesTags, DutyIsMajor = filter?.DutyIsMajor ?? DutiesIsMajor.BothCanGo, AuditMembers = filter?.AuditMembers, AuditMembersCount = filter?.AuditMembersCount ?? 0, Solution = solution }; context.ApplyAuditStreamSolutionRules.Add(result); context.SaveChanges(); return(result); }