/// <summary>
        /// 升级的校验
        /// </summary>
        /// <param name="organization"></param>
        /// <returns></returns>
        private OperationResult ValidateUpdate(DetailedOrganizationDTO organization, out OrganizationDAO organizationDao,
                                               out OrganizationAttributeDAO organizationAttributeDao)
        {
            OperationResult result = new OperationResult(true);

            organizationDao          = null;
            organizationAttributeDao = null;

            if (organization == null)
            {
                result.Success = false;
                result.Messages.Add("传入参数不能为空!");

                return(result);
            }

            if (string.IsNullOrWhiteSpace(organization.Id))
            {
                result.Success = false;
                result.Messages.Add("id 不能为空");

                return(result);
            }

            var filter = new OrganizationFilter();

            filter.Id       = organization.Id;
            filter.IsActive = true;

            organizationDao          = _dal.GetOrganization(filter);
            organizationAttributeDao = _dal.GetOrganizationAttribute(filter);
            //组织不存在
            if (organizationDao == null || organizationAttributeDao == null)
            {
                result.Success = false;
                result.Messages.Add("组织不存在");

                return(result);
            }

            OperationResult dataValidateResult = Validate(organization, true);

            if (!dataValidateResult.Success)
            {
                result.Success = false;
                result.Messages.AddRange(dataValidateResult.Messages);
            }

            #region 向导部分校验

            OperationResult validateWizardStepResult = ValidateWizardSetp(organization, organizationAttributeDao);
            if (!validateWizardStepResult.Success)
            {
                result.Success = false;
                result.Messages.AddRange(validateWizardStepResult.Messages);
            }

            #endregion
            return(result);
        }
        /// <summary>
        /// 转换为DTO
        /// </summary>
        /// <param name="organization"></param>
        /// <returns></returns>
        public OrganizationDTO Convert(OrganizationDAO organization)
        {
            if (organization == null)
            {
                return(null);
            }

            OrganizationDTO dto = new OrganizationDTO();

            dto.Id               = organization.MItemID;
            dto.DisplayName      = organization.MName;
            dto.LegalTradingName = organization.MLegalTradingName;
            dto.MasterId         = organization.MMasterID;
            dto.VersionId        = organization.MVersionID;
            dto.OrgTypeId        = organization.MOrgTypeID;
            dto.PostalNo         = organization.MPostalNo;
            dto.RegionId         = organization.MRegionID;
            dto.StateId          = organization.MStateID;
            dto.CountryId        = organization.MCountryID;
            dto.CityId           = organization.MCityID;
            dto.Street           = organization.MStreet;
            dto.IsActive         = organization.MIsActive;

            return(dto);
        }
        /// <summary>
        /// 设置更新的值
        /// </summary>
        /// <param name="organizationDTO"></param>
        /// <param name="organization"></param>
        private void SetUpdateValue(DetailedOrganizationDTO organization, OrganizationDAO organizationDao, OrganizationAttributeDAO organizationAttribute)
        {
            organizationDao.MName = string.IsNullOrWhiteSpace(organization.DisplayName) ?
                                    organizationDao.MName : organization.DisplayName;

            organizationDao.MLegalTradingName = string.IsNullOrWhiteSpace(organization.LegalTradingName) ?
                                                organizationDao.MLegalTradingName : organization.LegalTradingName;

            organizationAttribute.MBaseCurrencyID = string.IsNullOrWhiteSpace(organization.BaseCurrencyId) ?
                                                    organizationAttribute.MBaseCurrencyID : organization.BaseCurrencyId;
        }
        /// <summary>
        /// 创建一个组织
        /// </summary>
        /// <param name="organization"></param>
        /// <returns></returns>
        public OrganizationDTO CreateOrganization(OrganizationDTO organization)
        {
            OrganizationDAO dao = organization.Convert();

            dao.MItemID   = GuidUtility.GetGuid();
            dao.MIsActive = false;
            dao.MIsDelete = false;

            OrganizationAttributeDAO attributeDao = new OrganizationAttributeDAO();

            attributeDao.MItemID         = GuidUtility.GetGuid();
            attributeDao.MOrgID          = dao.MItemID;
            attributeDao.MConversionDate = DateTime.Now;
            attributeDao.MExpiredDate    = DateTime.Now.AddDays(30);
            attributeDao.MRegProgress    = (int)WizardStepType.Created;
            attributeDao.MIsActive       = true;

            OrganizationUserRelationDAO organizationUserRelation = new OrganizationUserRelationDAO();

            organizationUserRelation.MItemID   = GuidUtility.GetGuid();
            organizationUserRelation.MOrgID    = dao.MItemID;
            organizationUserRelation.MUserID   = GetCurrentUserId();
            organizationUserRelation.MIsActive = true;


            var client = _orm.GetSqlClient <SqlSugarClient>();

            try
            {
                client.BeginTran();

                client.Insertable(dao).ExecuteCommand();
                client.Insertable(attributeDao).ExecuteCommand();
                client.Insertable(organizationUserRelation).ExecuteCommand();
                client.CommitTran();
                organization.Id = dao.MItemID;

                return(organization);
            }
            catch (Exception ex)
            {
                client.RollbackTran();

                throw ex;
            }
        }
Esempio n. 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="OrganizationId"></param>
        /// <param name="AppUserService"></param>
        /// <param name="OrganizationService"></param>
        /// <param name="CurrentContext"></param>
        /// <param name="DataContext"></param>
        /// <returns> AppUserIds, OrganizationIds </returns>
        protected async Task <(List <long>, List <long>)> FilterOrganizationAndUser(IdFilter OrganizationId, IAppUserService AppUserService, IOrganizationService OrganizationService, ICurrentContext CurrentContext, DataContext DataContext)
        {
            List <long> OrganizationIds = await FilterOrganization(OrganizationService, CurrentContext);

            List <OrganizationDAO> OrganizationDAOs = await DataContext.Organization.Where(o => o.DeletedAt == null && (OrganizationIds.Count == 0 || OrganizationIds.Contains(o.Id))).ToListAsync();

            OrganizationDAO OrganizationDAO = null;

            if (OrganizationId?.Equal != null)
            {
                OrganizationDAO = await DataContext.Organization.Where(o => o.Id == OrganizationId.Equal.Value).FirstOrDefaultAsync();

                OrganizationDAOs = OrganizationDAOs.Where(o => o.Path.StartsWith(OrganizationDAO.Path)).ToList();
            }
            OrganizationIds = OrganizationDAOs.Select(o => o.Id).ToList();
            List <long> AppUserIds = await FilterAppUser(AppUserService, OrganizationService, CurrentContext);

            return(AppUserIds, OrganizationIds);
        }
        /// <summary>
        /// 转换为DAO
        /// </summary>
        /// <returns></returns>
        public OrganizationDAO Convert()
        {
            OrganizationDAO dao = new OrganizationDAO();

            dao.MItemID           = Id;
            dao.MName             = DisplayName;
            dao.MLegalTradingName = LegalTradingName;
            dao.MMasterID         = MasterId;
            dao.MVersionID        = VersionId;
            dao.MOrgTypeID        = OrgTypeId;
            dao.MPostalNo         = PostalNo;
            dao.MRegionID         = RegionId;
            dao.MStateID          = StateId;
            dao.MCountryID        = CountryId;
            dao.MCityID           = CityId;
            dao.MStreet           = Street;

            return(dao);
        }
        /// <summary>
        /// 更新组织状态
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public OperationResult UpdateOrganization(string id, bool isActive)
        {
            OperationResult result = new OperationResult();

            if (string.IsNullOrWhiteSpace(id))
            {
                result.Success = false;
                result.Messages.Add("参数id为空");

                return(result);
            }

            var filter = new OrganizationFilter()
            {
                IsActive = !isActive,
                Id       = id
            };

            OrganizationDAO organization = _dal.GetOrganization(filter);

            if (organization == null)
            {
                result.Success = false;
                result.Messages.Add($"Organization is not exist:{id}");

                return(result);
            }

            organization.MIsActive = isActive;

            result.Success = _dal.Update(organization);

            //给组织分配业务数据库
            if (result.Success)
            {
                DatabaseRouter.SetOrganizationStorageRelation(organization.MItemID);
            }

            return(result);
        }
        /// <summary>
        /// 更新组织信息
        /// </summary>
        /// <param name="organization"></param>
        /// <param name="organizationAttribute"></param>
        /// <returns></returns>
        public bool Update(OrganizationDAO organization, OrganizationAttributeDAO organizationAttribute)
        {
            var client = _orm.GetSqlClient <SqlSugarClient>();

            try
            {
                client.BeginTran();

                client.GetSimpleClient <OrganizationDAO>().Update(organization);
                client.GetSimpleClient <OrganizationAttributeDAO>().Update(organizationAttribute);

                client.CommitTran();

                return(true);
            }
            catch (Exception ex)
            {
                client.RollbackTran();

                throw ex;
            }
        }
Esempio n. 9
0
 /// <summary>
 /// 新增组织部门
 /// </summary>
 /// <param name="data">组织结构实体数据集</param>
 /// <param name="nOpStaffId">操作员工编码</param>
 /// <param name="strOpStaffName">操作员工姓名</param>
 /// <param name="strErrText">出错信息</param>
 /// <returns>成功返回True,否则返回False</returns>
 public bool InsertOrganization(Organization data, long nOpStaffId, string strOpStaffName, out string strErrText)
 {
     try
     {
         using (TransactionScope transScope = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(2, 0, 0)))
         {
             using (OrganizationDAO dao = new OrganizationDAO())
             {
                 if (!dao.InsertOrganization(data, nOpStaffId, strOpStaffName, out strErrText))
                 {
                     return(false);
                 }
             }
             transScope.Complete();
         }
         return(true);
     }
     catch (Exception e)
     {
         strErrText = e.Message;
         return(false);
     }
 }
Esempio n. 10
0
        /// <summary>
        /// 读取指定组织部门记录
        /// </summary>
        /// <param name="nOrganId"></param>
        /// <param name="nOpStaffId"></param>
        /// <param name="strOpStaffName"></param>
        /// <param name="strErrText"></param>
        /// <returns></returns>
        public Organization LoadOrganization(long nOrganId, long nOpStaffId, string strOpStaffName, out string strErrText)
        {
            try
            {
                Organization dataResult = null;
                strErrText = String.Empty;

                using (TransactionScope transScope = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(2, 0, 0)))
                {
                    using (OrganizationDAO dao = new OrganizationDAO())
                    {
                        dataResult = dao.LoadOrganization(nOrganId, nOpStaffId, strOpStaffName, out strErrText);
                    }
                    transScope.Complete();
                }
                return(dataResult);
            }
            catch (Exception e)
            {
                strErrText = e.Message;
                return(null);
            }
        }
Esempio n. 11
0
 private IQueryable<AppUserDAO> OrFilter(IQueryable<AppUserDAO> query, AppUserFilter filter)
 {
     if (filter.OrFilter == null || filter.OrFilter.Count == 0)
         return query;
     IQueryable<AppUserDAO> initQuery = query.Where(q => false);
     foreach (AppUserFilter AppUserFilter in filter.OrFilter)
     {
         IQueryable<AppUserDAO> queryable = query;
         if (AppUserFilter.Id != null)
             queryable = queryable.Where(q => q.Id, AppUserFilter.Id);
         if (AppUserFilter.Username != null)
             queryable = queryable.Where(q => q.Username, AppUserFilter.Username);
         if (AppUserFilter.DisplayName != null)
             queryable = queryable.Where(q => q.DisplayName, AppUserFilter.DisplayName);
         if (AppUserFilter.Address != null)
             queryable = queryable.Where(q => q.Address, AppUserFilter.Address);
         if (AppUserFilter.Email != null)
             queryable = queryable.Where(q => q.Email, AppUserFilter.Email);
         if (AppUserFilter.Phone != null)
             queryable = queryable.Where(q => q.Phone, AppUserFilter.Phone);
         if (AppUserFilter.StatusId != null)
             queryable = queryable.Where(q => q.StatusId, AppUserFilter.StatusId);
         if (AppUserFilter.SexId != null)
             queryable = queryable.Where(q => q.SexId, AppUserFilter.SexId);
         if (AppUserFilter.Birthday != null)
             queryable = queryable.Where(q => q.Birthday, AppUserFilter.Birthday);
         if (AppUserFilter.Department != null)
             queryable = queryable.Where(q => q.Department, AppUserFilter.Department);
         if (AppUserFilter.OrganizationId != null)
         {
             if (AppUserFilter.OrganizationId.Equal != null)
             {
                 OrganizationDAO OrganizationDAO = DataContext.Organization
                     .Where(o => o.Id == AppUserFilter.OrganizationId.Equal.Value).FirstOrDefault();
                 queryable = queryable.Where(q => q.Organization.Path.StartsWith(OrganizationDAO.Path));
             }
             if (AppUserFilter.OrganizationId.NotEqual != null)
             {
                 OrganizationDAO OrganizationDAO = DataContext.Organization
                     .Where(o => o.Id == AppUserFilter.OrganizationId.NotEqual.Value).FirstOrDefault();
                 queryable = queryable.Where(q => !q.Organization.Path.StartsWith(OrganizationDAO.Path));
             }
             if (AppUserFilter.OrganizationId.In != null)
             {
                 List<OrganizationDAO> OrganizationDAOs = DataContext.Organization
                     .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
                 List<OrganizationDAO> Parents = OrganizationDAOs.Where(o => AppUserFilter.OrganizationId.In.Contains(o.Id)).ToList();
                 List<OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
                 List<long> Ids = Branches.Select(o => o.Id).ToList();
                 queryable = queryable.Where(q => Ids.Contains(q.OrganizationId));
             }
             if (AppUserFilter.OrganizationId.NotIn != null)
             {
                 List<OrganizationDAO> OrganizationDAOs = DataContext.Organization
                     .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
                 List<OrganizationDAO> Parents = OrganizationDAOs.Where(o => AppUserFilter.OrganizationId.NotIn.Contains(o.Id)).ToList();
                 List<OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
                 List<long> Ids = Branches.Select(o => o.Id).ToList();
                 queryable = queryable.Where(q => !Ids.Contains(q.OrganizationId));
             }
         }
         initQuery = initQuery.Union(queryable);
     }
     return initQuery;
 }
Esempio n. 12
0
 private IQueryable <KpiItemDAO> DynamicFilter(IQueryable <KpiItemDAO> query, KpiItemFilter filter)
 {
     if (filter == null)
     {
         return(query.Where(q => false));
     }
     query = query.Where(q => !q.DeletedAt.HasValue);
     if (filter.CreatedAt != null)
     {
         query = query.Where(q => q.CreatedAt, filter.CreatedAt);
     }
     if (filter.UpdatedAt != null)
     {
         query = query.Where(q => q.UpdatedAt, filter.UpdatedAt);
     }
     if (filter.Id != null)
     {
         query = query.Where(q => q.Id, filter.Id);
     }
     if (filter.OrganizationId != null)
     {
         if (filter.OrganizationId.Equal != null)
         {
             OrganizationDAO OrganizationDAO = DataContext.Organization
                                               .Where(o => o.Id == filter.OrganizationId.Equal.Value).FirstOrDefault();
             query = query.Where(q => q.Organization.Path.StartsWith(OrganizationDAO.Path));
         }
         if (filter.OrganizationId.NotEqual != null)
         {
             OrganizationDAO OrganizationDAO = DataContext.Organization
                                               .Where(o => o.Id == filter.OrganizationId.NotEqual.Value).FirstOrDefault();
             query = query.Where(q => !q.Organization.Path.StartsWith(OrganizationDAO.Path));
         }
         if (filter.OrganizationId.In != null)
         {
             List <OrganizationDAO> OrganizationDAOs = DataContext.Organization
                                                       .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
             List <OrganizationDAO> Parents  = OrganizationDAOs.Where(o => filter.OrganizationId.In.Contains(o.Id)).ToList();
             List <OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
             List <long>            Ids      = Branches.Select(o => o.Id).ToList();
             query = query.Where(q => Ids.Contains(q.OrganizationId));
         }
         if (filter.OrganizationId.NotIn != null)
         {
             List <OrganizationDAO> OrganizationDAOs = DataContext.Organization
                                                       .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
             List <OrganizationDAO> Parents  = OrganizationDAOs.Where(o => filter.OrganizationId.NotIn.Contains(o.Id)).ToList();
             List <OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
             List <long>            Ids      = Branches.Select(o => o.Id).ToList();
             query = query.Where(q => !Ids.Contains(q.OrganizationId));
         }
     }
     if (filter.KpiYearId != null)
     {
         query = query.Where(q => q.KpiYearId, filter.KpiYearId);
     }
     if (filter.KpiPeriodId != null)
     {
         query = query.Where(q => q.KpiPeriodId, filter.KpiPeriodId);
     }
     if (filter.StatusId != null)
     {
         query = query.Where(q => q.StatusId, filter.StatusId);
     }
     if (filter.AppUserId != null)
     {
         query = query.Where(q => q.EmployeeId, filter.AppUserId);
     }
     if (filter.CreatorId != null)
     {
         query = query.Where(q => q.CreatorId, filter.CreatorId);
     }
     query = OrFilter(query, filter);
     return(query);
 }
        /// <summary>
        /// 更新组织
        /// </summary>
        /// <param name="organization"></param>
        /// <returns></returns>
        public bool Update(OrganizationDAO organization)
        {
            var result = _orm.GetSqlClient <SqlSugarClient>().GetSimpleClient <OrganizationDAO>().Update(organization);

            return(result);
        }
Esempio n. 14
0
        /// <summary> Retrieves Entity rows in a datatable which match the specified filter. It will always create a new connection to the database.</summary>
        /// <param name="selectFilter">A predicate or predicate expression which should be used as filter for the entities to retrieve.</param>
        /// <param name="maxNumberOfItemsToReturn"> The maximum number of items to return with this retrieval query.</param>
        /// <param name="sortClauses">The order by specifications for the sorting of the resultset. When not specified, no sorting is applied.</param>
        /// <param name="relations">The set of relations to walk to construct to total query.</param>
        /// <param name="pageNumber">The page number to retrieve.</param>
        /// <param name="pageSize">The page size of the page to retrieve.</param>
        /// <returns>DataTable with the rows requested.</returns>
        public static DataTable GetMultiAsDataTable(IPredicate selectFilter, long maxNumberOfItemsToReturn, ISortExpression sortClauses, IRelationCollection relations, int pageNumber, int pageSize)
        {
            OrganizationDAO dao = DAOFactory.CreateOrganizationDAO();

            return(dao.GetMultiAsDataTable(maxNumberOfItemsToReturn, sortClauses, selectFilter, relations, pageNumber, pageSize));
        }
Esempio n. 15
0
 private IQueryable <OrganizationDAO> DynamicFilter(IQueryable <OrganizationDAO> query, OrganizationFilter filter)
 {
     if (filter == null)
     {
         return(query.Where(q => false));
     }
     query = query.Where(q => !q.DeletedAt.HasValue);
     if (filter.Id != null)
     {
         if (filter.Id.Equal != null)
         {
             OrganizationDAO OrganizationDAO = DataContext.Organization
                                               .Where(o => o.Id == filter.Id.Equal.Value).FirstOrDefault();
             query = query.Where(q => q.Path.StartsWith(OrganizationDAO.Path));
         }
         if (filter.Id.NotEqual != null)
         {
             OrganizationDAO OrganizationDAO = DataContext.Organization
                                               .Where(o => o.Id == filter.Id.NotEqual.Value).FirstOrDefault();
             query = query.Where(q => !q.Path.StartsWith(OrganizationDAO.Path));
         }
         if (filter.Id.In != null)
         {
             List <OrganizationDAO> OrganizationDAOs = DataContext.Organization
                                                       .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
             List <OrganizationDAO> Parents  = OrganizationDAOs.Where(o => filter.Id.In.Contains(o.Id)).ToList();
             List <OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
             List <long>            Ids      = Branches.Select(o => o.Id).ToList();
             query = query.Where(q => Ids.Contains(q.Id));
         }
         if (filter.Id.NotIn != null)
         {
             List <OrganizationDAO> OrganizationDAOs = DataContext.Organization
                                                       .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
             List <OrganizationDAO> Parents  = OrganizationDAOs.Where(o => filter.Id.NotIn.Contains(o.Id)).ToList();
             List <OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
             List <long>            Ids      = Branches.Select(o => o.Id).ToList();
             query = query.Where(q => !Ids.Contains(q.Id));
         }
     }
     if (filter.Code != null)
     {
         query = query.Where(q => q.Code, filter.Code);
     }
     if (filter.Name != null)
     {
         query = query.Where(q => q.Name, filter.Name);
     }
     if (filter.ParentId != null)
     {
         if (filter.ParentId.Equal != null)
         {
             OrganizationDAO OrganizationDAO = DataContext.Organization
                                               .Where(o => o.Id == filter.ParentId.Equal.Value).FirstOrDefault();
             query = query.Where(q => q.Path.StartsWith(OrganizationDAO.Path));
         }
         if (filter.ParentId.NotEqual != null)
         {
             OrganizationDAO OrganizationDAO = DataContext.Organization
                                               .Where(o => o.Id == filter.ParentId.NotEqual.Value).FirstOrDefault();
             query = query.Where(q => !q.Path.StartsWith(OrganizationDAO.Path));
         }
         if (filter.ParentId.In != null)
         {
             List <OrganizationDAO> OrganizationDAOs = DataContext.Organization
                                                       .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
             List <OrganizationDAO> Parents  = OrganizationDAOs.Where(o => filter.ParentId.In.Contains(o.Id)).ToList();
             List <OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
             List <long>            Ids      = Branches.Select(o => o.Id).ToList();
             query = query.Where(q => q.ParentId.HasValue && Ids.Contains(q.ParentId.Value));
         }
         if (filter.ParentId.NotIn != null)
         {
             List <OrganizationDAO> OrganizationDAOs = DataContext.Organization
                                                       .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
             List <OrganizationDAO> Parents  = OrganizationDAOs.Where(o => filter.ParentId.NotIn.Contains(o.Id)).ToList();
             List <OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
             List <long>            Ids      = Branches.Select(o => o.Id).ToList();
             query = query.Where(q => q.ParentId.HasValue && !Ids.Contains(q.ParentId.Value));
         }
     }
     if (filter.Path != null)
     {
         query = query.Where(q => q.Path, filter.Path);
     }
     if (filter.Level != null)
     {
         query = query.Where(q => q.Level, filter.Level);
     }
     if (filter.StatusId != null)
     {
         query = query.Where(q => q.StatusId, filter.StatusId);
     }
     if (filter.Phone != null)
     {
         query = query.Where(q => q.Phone, filter.Phone);
     }
     if (filter.Email != null)
     {
         query = query.Where(q => q.Email, filter.Email);
     }
     if (filter.Address != null)
     {
         query = query.Where(q => q.Address, filter.Address);
     }
     query = OrFilter(query, filter);
     return(query);
 }
 private IQueryable <DirectSalesOrderDAO> DynamicFilter(IQueryable <DirectSalesOrderDAO> query, DirectSalesOrderFilter filter)
 {
     if (filter == null)
     {
         return(query.Where(q => false));
     }
     if (filter.Id != null)
     {
         query = query.Where(q => q.Id, filter.Id);
     }
     if (filter.OrganizationId != null)
     {
         if (filter.OrganizationId.Equal != null)
         {
             OrganizationDAO OrganizationDAO = DataContext.Organization
                                               .Where(o => o.Id == filter.OrganizationId.Equal.Value).FirstOrDefault();
             query = query.Where(q => q.Organization.Path.StartsWith(OrganizationDAO.Path));
         }
         if (filter.OrganizationId.NotEqual != null)
         {
             OrganizationDAO OrganizationDAO = DataContext.Organization
                                               .Where(o => o.Id == filter.OrganizationId.NotEqual.Value).FirstOrDefault();
             query = query.Where(q => !q.Organization.Path.StartsWith(OrganizationDAO.Path));
         }
         if (filter.OrganizationId.In != null)
         {
             List <OrganizationDAO> OrganizationDAOs = DataContext.Organization
                                                       .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
             List <OrganizationDAO> Parents  = OrganizationDAOs.Where(o => filter.OrganizationId.In.Contains(o.Id)).ToList();
             List <OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
             List <long>            Ids      = Branches.Select(o => o.Id).ToList();
             query = query.Where(q => Ids.Contains(q.OrganizationId));
         }
         if (filter.OrganizationId.NotIn != null)
         {
             List <OrganizationDAO> OrganizationDAOs = DataContext.Organization
                                                       .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
             List <OrganizationDAO> Parents  = OrganizationDAOs.Where(o => filter.OrganizationId.NotIn.Contains(o.Id)).ToList();
             List <OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
             List <long>            Ids      = Branches.Select(o => o.Id).ToList();
             query = query.Where(q => !Ids.Contains(q.OrganizationId));
         }
     }
     if (filter.Code != null)
     {
         query = query.Where(q => q.Code, filter.Code);
     }
     if (filter.BuyerStoreId != null)
     {
         query = query.Where(q => q.BuyerStoreId, filter.BuyerStoreId);
     }
     if (filter.PhoneNumber != null)
     {
         query = query.Where(q => q.PhoneNumber, filter.PhoneNumber);
     }
     if (filter.StoreAddress != null)
     {
         query = query.Where(q => q.StoreAddress, filter.StoreAddress);
     }
     if (filter.DeliveryAddress != null)
     {
         query = query.Where(q => q.DeliveryAddress, filter.DeliveryAddress);
     }
     if (filter.AppUserId != null)
     {
         query = query.Where(q => q.SaleEmployeeId, filter.AppUserId);
     }
     if (filter.OrderDate != null)
     {
         query = query.Where(q => q.OrderDate, filter.OrderDate);
     }
     if (filter.DeliveryDate != null)
     {
         query = query.Where(q => q.DeliveryDate, filter.DeliveryDate);
     }
     if (filter.EditedPriceStatusId != null)
     {
         query = query.Where(q => q.EditedPriceStatusId, filter.EditedPriceStatusId);
     }
     if (filter.Note != null)
     {
         query = query.Where(q => q.Note, filter.Note);
     }
     if (filter.RequestStateId != null)
     {
         query = query.Where(q => q.RequestStateId, filter.RequestStateId);
     }
     if (filter.SubTotal != null)
     {
         query = query.Where(q => q.SubTotal, filter.SubTotal);
     }
     if (filter.GeneralDiscountPercentage != null)
     {
         query = query.Where(q => q.GeneralDiscountPercentage, filter.GeneralDiscountPercentage);
     }
     if (filter.GeneralDiscountAmount != null)
     {
         query = query.Where(q => q.GeneralDiscountAmount, filter.GeneralDiscountAmount);
     }
     if (filter.PromotionCode != null && filter.PromotionCode.HasValue)
     {
         query = query.Where(q => q.PromotionCode, filter.PromotionCode);
     }
     if (filter.TotalTaxAmount != null)
     {
         query = query.Where(q => q.TotalTaxAmount, filter.TotalTaxAmount);
     }
     if (filter.Total != null)
     {
         query = query.Where(q => q.Total, filter.Total);
     }
     if (filter.StoreStatusId != null)
     {
         query = query.Where(q => q.BuyerStore.StoreStatusId, filter.StoreStatusId);
     }
     if (filter.CustomerId != null && filter.CustomerId.HasValue)
     {
         var StoreIds = DataContext.Store.Where(x => x.CustomerId, filter.CustomerId).Select(x => x.Id).ToList();
         query = query.Where(x => StoreIds.Contains(x.BuyerStoreId));
     }
     if (filter.CompanyId != null && filter.CompanyId.HasValue)
     {
         var CustomerIds = DataContext.Customer.Where(x => x.CompanyId, filter.CompanyId).Select(x => x.Id).ToList();
         var StoreIds    = DataContext.Store.Where(x => x.CustomerId.HasValue && CustomerIds.Contains(x.CustomerId.Value)).Select(x => x.Id).ToList();
         query = query.Where(x => StoreIds.Contains(x.BuyerStoreId));
     }
     query = OrFilter(query, filter);
     return(query);
 }
        private IQueryable <DirectSalesOrderDAO> OrFilter(IQueryable <DirectSalesOrderDAO> query, DirectSalesOrderFilter filter)
        {
            if (filter.OrFilter == null || filter.OrFilter.Count == 0)
            {
                return(query);
            }
            IQueryable <DirectSalesOrderDAO> initQuery = query.Where(q => false);

            foreach (DirectSalesOrderFilter DirectSalesOrderFilter in filter.OrFilter)
            {
                IQueryable <DirectSalesOrderDAO> queryable = query;
                if (DirectSalesOrderFilter.UserId != null)
                {
                    if (DirectSalesOrderFilter.UserId.Equal != null)
                    {
                        AppUserDAO      AppUserDAO      = DataContext.AppUser.Where(p => p.Id == DirectSalesOrderFilter.UserId.Equal).FirstOrDefault();
                        OrganizationDAO OrganizationDAO = DataContext.Organization
                                                          .Where(o => o.Id == AppUserDAO.OrganizationId).FirstOrDefault();
                        queryable = queryable.Where(q => q.Creator.Organization.Path.StartsWith(OrganizationDAO.Path));
                    }
                    if (DirectSalesOrderFilter.UserId.NotEqual != null)
                    {
                        AppUserDAO      AppUserDAO      = DataContext.AppUser.Where(p => p.Id == DirectSalesOrderFilter.UserId.NotEqual).FirstOrDefault();
                        OrganizationDAO OrganizationDAO = DataContext.Organization
                                                          .Where(o => o.Id != AppUserDAO.OrganizationId).FirstOrDefault();
                        queryable = queryable.Where(q => !q.Creator.Organization.Path.StartsWith(OrganizationDAO.Path));
                    }
                }
                if (DirectSalesOrderFilter.AppUserId != null)
                {
                    queryable = queryable.Where(q => q.CreatorId, DirectSalesOrderFilter.AppUserId);
                }

                if (DirectSalesOrderFilter.OrganizationId != null)
                {
                    if (DirectSalesOrderFilter.OrganizationId.Equal != null)
                    {
                        OrganizationDAO OrganizationDAO = DataContext.Organization
                                                          .Where(o => o.Id == DirectSalesOrderFilter.OrganizationId.Equal.Value).FirstOrDefault();
                        queryable = queryable.Where(q => q.Creator.Organization.Path.StartsWith(OrganizationDAO.Path));
                    }
                    if (DirectSalesOrderFilter.OrganizationId.NotEqual != null)
                    {
                        OrganizationDAO OrganizationDAO = DataContext.Organization
                                                          .Where(o => o.Id == DirectSalesOrderFilter.OrganizationId.NotEqual.Value).FirstOrDefault();
                        queryable = queryable.Where(q => !q.Creator.Organization.Path.StartsWith(OrganizationDAO.Path));
                    }
                    if (DirectSalesOrderFilter.OrganizationId.In != null)
                    {
                        List <OrganizationDAO> OrganizationDAOs = DataContext.Organization
                                                                  .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
                        List <OrganizationDAO> Parents  = OrganizationDAOs.Where(o => DirectSalesOrderFilter.OrganizationId.In.Contains(o.Id)).ToList();
                        List <OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
                        List <long>            Ids      = Branches.Select(o => o.Id).ToList();
                        queryable = queryable.Where(q => Ids.Contains(q.Creator.OrganizationId));
                    }
                    if (DirectSalesOrderFilter.OrganizationId.NotIn != null)
                    {
                        List <OrganizationDAO> OrganizationDAOs = DataContext.Organization
                                                                  .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
                        List <OrganizationDAO> Parents  = OrganizationDAOs.Where(o => DirectSalesOrderFilter.OrganizationId.NotIn.Contains(o.Id)).ToList();
                        List <OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
                        List <long>            Ids      = Branches.Select(o => o.Id).ToList();
                        queryable = queryable.Where(q => !Ids.Contains(q.Creator.OrganizationId));
                    }
                }

                //if (DirectSalesOrderFilter.OrganizationId != null)
                //{
                //    if (DirectSalesOrderFilter.OrganizationId.Equal != null)
                //    {
                //        OrganizationDAO OrganizationDAO = DataContext.Organization
                //            .Where(o => o.Id == DirectSalesOrderFilter.OrganizationId.Equal.Value).FirstOrDefault();
                //        queryable = queryable.Where(q => q.Organization.Path.StartsWith(OrganizationDAO.Path));
                //    }
                //    if (DirectSalesOrderFilter.OrganizationId.NotEqual != null)
                //    {
                //        OrganizationDAO OrganizationDAO = DataContext.Organization
                //            .Where(o => o.Id == DirectSalesOrderFilter.OrganizationId.NotEqual.Value).FirstOrDefault();
                //        queryable = queryable.Where(q => !q.Organization.Path.StartsWith(OrganizationDAO.Path));
                //    }
                //    if (DirectSalesOrderFilter.OrganizationId.In != null)
                //    {
                //        List<OrganizationDAO> OrganizationDAOs = DataContext.Organization
                //            .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
                //        List<OrganizationDAO> Parents = OrganizationDAOs.Where(o => DirectSalesOrderFilter.OrganizationId.In.Contains(o.Id)).ToList();
                //        List<OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
                //        List<long> Ids = Branches.Select(o => o.Id).ToList();
                //        queryable = queryable.Where(q => Ids.Contains(q.OrganizationId));
                //    }
                //    if (DirectSalesOrderFilter.OrganizationId.NotIn != null)
                //    {
                //        List<OrganizationDAO> OrganizationDAOs = DataContext.Organization
                //            .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
                //        List<OrganizationDAO> Parents = OrganizationDAOs.Where(o => DirectSalesOrderFilter.OrganizationId.NotIn.Contains(o.Id)).ToList();
                //        List<OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
                //        List<long> Ids = Branches.Select(o => o.Id).ToList();
                //        queryable = queryable.Where(q => !Ids.Contains(q.OrganizationId));
                //    }
                //}

                initQuery = initQuery.Union(queryable);
            }
            return(initQuery);
        }
Esempio n. 18
0
        private IQueryable <KnowledgeArticleDAO> OrFilter(IQueryable <KnowledgeArticleDAO> query, KnowledgeArticleFilter filter)
        {
            if (filter.OrFilter == null || filter.OrFilter.Count == 0)
            {
                return(query);
            }
            IQueryable <KnowledgeArticleDAO> initQuery = query.Where(q => false);

            foreach (KnowledgeArticleFilter KnowledgeArticleFilter in filter.OrFilter)
            {
                IQueryable <KnowledgeArticleDAO> queryable = query;
                if (KnowledgeArticleFilter.AppUserId != null)
                {
                    queryable = queryable.Where(q => q.CreatorId, KnowledgeArticleFilter.AppUserId);
                }
                //if (KnowledgeArticleFilter.OrganizationId != null)
                //{
                //    if (KnowledgeArticleFilter.OrganizationId.Equal != null)
                //    {
                //        OrganizationDAO OrganizationDAO = DataContext.Organization
                //            .Where(o => o.Id == KnowledgeArticleFilter.OrganizationId.Equal.Value).FirstOrDefault();
                //        queryable = queryable.Where(q => q.KnowledgeArticleOrganizationMappings.Any(p => p.Organization.Path.StartsWith(OrganizationDAO.Path)));
                //    }
                //    if (KnowledgeArticleFilter.OrganizationId.NotEqual != null)
                //    {
                //        OrganizationDAO OrganizationDAO = DataContext.Organization
                //            .Where(o => o.Id == KnowledgeArticleFilter.OrganizationId.NotEqual.Value).FirstOrDefault();
                //        queryable = queryable.Where(q => !q.KnowledgeArticleOrganizationMappings.Any(p => p.Organization.Path.StartsWith(OrganizationDAO.Path)));
                //    }
                //    if (KnowledgeArticleFilter.OrganizationId.In != null)
                //    {
                //        List<OrganizationDAO> OrganizationDAOs = DataContext.Organization
                //            .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
                //        List<OrganizationDAO> Parents = OrganizationDAOs.Where(o => KnowledgeArticleFilter.OrganizationId.In.Contains(o.Id)).ToList();
                //        List<OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
                //        List<long> Ids = Branches.Select(o => o.Id).ToList();
                //        foreach (var id in Ids)
                //        {
                //            queryable = queryable.Where(q => q.KnowledgeArticleOrganizationMappings.Any(p => Ids.Contains(p.OrganizationId)));
                //        }
                //    }
                //    if (KnowledgeArticleFilter.OrganizationId.NotIn != null)
                //    {
                //        List<OrganizationDAO> OrganizationDAOs = DataContext.Organization
                //            .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
                //        List<OrganizationDAO> Parents = OrganizationDAOs.Where(o => KnowledgeArticleFilter.OrganizationId.NotIn.Contains(o.Id)).ToList();
                //        List<OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
                //        List<long> Ids = Branches.Select(o => o.Id).ToList();
                //        foreach (var id in Ids)
                //        {
                //            queryable = queryable.Where(q => q.KnowledgeArticleOrganizationMappings.Any(p => !Ids.Contains(p.OrganizationId)));
                //        }
                //    }
                //}
                if (KnowledgeArticleFilter.OrganizationId != null)
                {
                    if (KnowledgeArticleFilter.OrganizationId.Equal != null)
                    {
                        OrganizationDAO OrganizationDAO = DataContext.Organization
                                                          .Where(o => o.Id == KnowledgeArticleFilter.OrganizationId.Equal.Value).FirstOrDefault();
                        queryable = queryable.Where(q => q.Creator.Organization.Path.StartsWith(OrganizationDAO.Path));
                    }
                    if (KnowledgeArticleFilter.OrganizationId.NotEqual != null)
                    {
                        OrganizationDAO OrganizationDAO = DataContext.Organization
                                                          .Where(o => o.Id == KnowledgeArticleFilter.OrganizationId.NotEqual.Value).FirstOrDefault();
                        queryable = queryable.Where(q => !q.Creator.Organization.Path.StartsWith(OrganizationDAO.Path));
                    }
                    if (KnowledgeArticleFilter.OrganizationId.In != null)
                    {
                        List <OrganizationDAO> OrganizationDAOs = DataContext.Organization
                                                                  .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
                        List <OrganizationDAO> Parents  = OrganizationDAOs.Where(o => KnowledgeArticleFilter.OrganizationId.In.Contains(o.Id)).ToList();
                        List <OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
                        List <long>            Ids      = Branches.Select(o => o.Id).ToList();
                        queryable = queryable.Where(q => Ids.Contains(q.Creator.OrganizationId));
                    }
                    if (KnowledgeArticleFilter.OrganizationId.NotIn != null)
                    {
                        List <OrganizationDAO> OrganizationDAOs = DataContext.Organization
                                                                  .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
                        List <OrganizationDAO> Parents  = OrganizationDAOs.Where(o => KnowledgeArticleFilter.OrganizationId.NotIn.Contains(o.Id)).ToList();
                        List <OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
                        List <long>            Ids      = Branches.Select(o => o.Id).ToList();
                        queryable = queryable.Where(q => !Ids.Contains(q.Creator.OrganizationId));
                    }
                }
                if (KnowledgeArticleFilter.UserId != null)
                {
                    if (KnowledgeArticleFilter.UserId.Equal != null)
                    {
                        AppUserDAO      AppUserDAO      = DataContext.AppUser.Where(p => p.Id == KnowledgeArticleFilter.UserId.Equal).FirstOrDefault();
                        OrganizationDAO OrganizationDAO = DataContext.Organization
                                                          .Where(o => o.Id == AppUserDAO.OrganizationId).FirstOrDefault();
                        queryable = queryable.Where(q => q.Creator.Organization.Path.StartsWith(OrganizationDAO.Path));
                    }
                    if (KnowledgeArticleFilter.UserId.NotEqual != null)
                    {
                        AppUserDAO      AppUserDAO      = DataContext.AppUser.Where(p => p.Id == KnowledgeArticleFilter.UserId.NotEqual).FirstOrDefault();
                        OrganizationDAO OrganizationDAO = DataContext.Organization
                                                          .Where(o => o.Id != AppUserDAO.OrganizationId).FirstOrDefault();
                        queryable = queryable.Where(q => !q.Creator.Organization.Path.StartsWith(OrganizationDAO.Path));
                    }
                }
                if (KnowledgeArticleFilter.KnowledgeGroupId != null)
                {
                    queryable = queryable.Where(q => q.GroupId, KnowledgeArticleFilter.KnowledgeGroupId);
                }

                // Hiển thị ra phòng ban của người dùng hiện tại
                if (KnowledgeArticleFilter.AppliedDepartmentId != null)
                {
                    if (KnowledgeArticleFilter.AppliedDepartmentId.Equal != null)
                    {
                        AppUserDAO      AppUserDAO      = DataContext.AppUser.Where(p => p.Id == KnowledgeArticleFilter.CurrentUserId.Equal).FirstOrDefault();
                        OrganizationDAO OrganizationDAO = DataContext.Organization
                                                          .Where(o => o.Id == AppUserDAO.OrganizationId).FirstOrDefault();
                        queryable = queryable.Where(q => q.KnowledgeArticleOrganizationMappings.Select(p => p.OrganizationId).Contains(OrganizationDAO.Id));
                    }
                    if (KnowledgeArticleFilter.AppliedDepartmentId.NotEqual != null)
                    {
                        AppUserDAO      AppUserDAO      = DataContext.AppUser.Where(p => p.Id == KnowledgeArticleFilter.CurrentUserId.Equal).FirstOrDefault();
                        OrganizationDAO OrganizationDAO = DataContext.Organization
                                                          .Where(o => o.Id != AppUserDAO.OrganizationId).FirstOrDefault();
                        queryable = queryable.Where(q => q.KnowledgeArticleOrganizationMappings.Select(p => p.OrganizationId).Contains(OrganizationDAO.Id));
                    }
                }
                initQuery = initQuery.Union(queryable);
            }
            return(initQuery);
        }
Esempio n. 19
0
 private IQueryable<AppUserDAO> DynamicFilter(IQueryable<AppUserDAO> query, AppUserFilter filter)
 {
     if (filter == null)
         return query.Where(q => false);
     if (filter.Id != null)
         query = query.Where(q => q.Id, filter.Id);
     if (filter.Username != null)
         query = query.Where(q => q.Username, filter.Username);
     if (filter.DisplayName != null)
         query = query.Where(q => q.DisplayName, filter.DisplayName);
     if (filter.Address != null)
         query = query.Where(q => q.Address, filter.Address);
     if (filter.Email != null)
         query = query.Where(q => q.Email, filter.Email);
     if (filter.Phone != null)
         query = query.Where(q => q.Phone, filter.Phone);
     if (filter.StatusId != null)
         query = query.Where(q => q.StatusId, filter.StatusId);
     if (filter.SexId != null)
         query = query.Where(q => q.SexId, filter.SexId);
     if (filter.Birthday != null)
         query = query.Where(q => q.Birthday, filter.Birthday);
     if (filter.Department != null)
         query = query.Where(q => q.Department, filter.Department);
     if (filter.OrganizationId != null)
     {
         if (filter.OrganizationId.Equal != null)
         {
             OrganizationDAO OrganizationDAO = DataContext.Organization
                 .Where(o => o.Id == filter.OrganizationId.Equal.Value).FirstOrDefault();
             query = query.Where(q => q.Organization.Path.StartsWith(OrganizationDAO.Path));
         }
         if (filter.OrganizationId.NotEqual != null)
         {
             OrganizationDAO OrganizationDAO = DataContext.Organization
                 .Where(o => o.Id == filter.OrganizationId.NotEqual.Value).FirstOrDefault();
             query = query.Where(q => !q.Organization.Path.StartsWith(OrganizationDAO.Path));
         }
         if (filter.OrganizationId.In != null)
         {
             List<OrganizationDAO> OrganizationDAOs = DataContext.Organization
                 .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
             List<OrganizationDAO> Parents = OrganizationDAOs.Where(o => filter.OrganizationId.In.Contains(o.Id)).ToList();
             List<OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
             List<long> Ids = Branches.Select(o => o.Id).ToList();
             query = query.Where(q => Ids.Contains(q.OrganizationId));
         }
         if (filter.OrganizationId.NotIn != null)
         {
             List<OrganizationDAO> OrganizationDAOs = DataContext.Organization
                 .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
             List<OrganizationDAO> Parents = OrganizationDAOs.Where(o => filter.OrganizationId.NotIn.Contains(o.Id)).ToList();
             List<OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
             List<long> Ids = Branches.Select(o => o.Id).ToList();
             query = query.Where(q => !Ids.Contains(q.OrganizationId));
         }
     }
     if (filter.RoleId != null)
     {
         if (filter.RoleId.Equal.HasValue)
         {
             query = from q in query
                     join ar in DataContext.AppUserRoleMapping on q.Id equals ar.AppUserId
                     where ar.RoleId == filter.RoleId.Equal.Value
                     select q;
         }
     }
     query = OrFilter(query, filter);
     return query;
 }