Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }