public List <LACK1> GetCompletedDocumentByParam(Lack1GetByParamInput input) { includeTables += ", LACK1_PLANT"; Expression <Func <LACK1, bool> > queryFilter = c => (int)c.STATUS >= (int)Core.Enums.DocumentStatus.Completed; queryFilter = queryFilter.And(ProcessQueryFilter(input)); Func <IQueryable <LACK1>, IOrderedQueryable <LACK1> > orderBy = null; if (!string.IsNullOrEmpty(input.SortOrderColumn)) { orderBy = c => c.OrderBy(OrderByHelper.GetOrderByFunction <LACK1>(input.SortOrderColumn)); } if (input.UserRole == Enums.UserRole.POA) { queryFilter = queryFilter.And(c => input.ListNppbkc.Contains(c.NPPBKC_ID)); } else if (input.UserRole == Enums.UserRole.Administrator) { queryFilter = queryFilter.And(c => c.LACK1_LEVEL != null); } else if (input.UserRole == Enums.UserRole.Controller) { queryFilter = queryFilter.And(c => c.STATUS == Enums.DocumentStatus.Completed); } else { queryFilter = queryFilter.And(c => (input.ListUserPlant.Contains(c.LACK1_PLANT.FirstOrDefault().PLANT_ID) && c.LACK1_LEVEL == Enums.Lack1Level.Plant) || (input.ListNppbkc.Contains(c.NPPBKC_ID) && c.LACK1_LEVEL == Enums.Lack1Level.Nppbkc)); } var dbData = _repository.Get(queryFilter, orderBy, includeTables); if (dbData == null) { throw new BLLException(ExceptionCodes.BLLExceptions.DataNotFound); } return(dbData.ToList()); }
public List <LACK1> GetAllByParam(Lack1GetByParamInput input) { includeTables += ", LACK1_PLANT"; Expression <Func <LACK1, bool> > queryFilter = c => c.LACK1_LEVEL == input.Lack1Level; queryFilter = queryFilter.And(ProcessQueryFilter(input)); Func <IQueryable <LACK1>, IOrderedQueryable <LACK1> > orderBy = c => c.OrderByDescending(l => l.LACK1_ID); if (!string.IsNullOrEmpty(input.SortOrderColumn)) { orderBy = c => c.OrderBy(OrderByHelper.GetOrderByFunction <LACK1>(input.SortOrderColumn)); } var dbData = _repository.Get(queryFilter, orderBy, includeTables); if (dbData == null) { throw new BLLException(ExceptionCodes.BLLExceptions.DataNotFound); } return(dbData.ToList()); }
private Expression <Func <LACK1, bool> > ProcessQueryFilter(Lack1GetByParamInput input) { Expression <Func <LACK1, bool> > queryFilter = PredicateHelper.True <LACK1>(); //filter search by nppbkc id, both Level NPPBKC and Level Plant if (!string.IsNullOrEmpty(input.NppbKcId)) { queryFilter = queryFilter.And(c => c.NPPBKC_ID == input.NppbKcId); } //filter search by plant id, only LACK-1 Level Plant if (!string.IsNullOrEmpty(input.PlantId)) { queryFilter = queryFilter.And(c => c.LACK1_PLANT.Any(p => p.PLANT_ID == input.PlantId)); } //filter search by poa, both Lack-1 Level if (!string.IsNullOrEmpty(input.Poa)) { queryFilter = queryFilter.And(c => c.CREATED_BY == input.Poa || c.APPROVED_BY_POA == input.Poa); } //filter search by creator if (!string.IsNullOrEmpty(input.Creator)) { queryFilter = queryFilter.And(c => c.CREATED_BY == input.Creator); } if (input.SubmissionDate.HasValue) { queryFilter = queryFilter.And( c => c.SUBMISSION_DATE.HasValue && c.SUBMISSION_DATE.Value == input.SubmissionDate.Value); } if (!input.IsOpenDocumentOnly) { return(queryFilter); } queryFilter = queryFilter.And(c => c.STATUS <= Enums.DocumentStatus.WaitingGovApproval || c.STATUS == Enums.DocumentStatus.GovRejected); switch (input.UserRole) { case Enums.UserRole.POA: queryFilter = queryFilter.And(c => (c.CREATED_BY == input.UserId || (c.STATUS != Enums.DocumentStatus.Draft && input.ListNppbkc.Contains(c.NPPBKC_ID)))); break; case Enums.UserRole.Administrator: queryFilter = queryFilter.And(c => c.LACK1_LEVEL != null); break; case Enums.UserRole.Controller: queryFilter = queryFilter.And(c => c.LACK1_LEVEL != null); break; default: queryFilter = queryFilter.And(c => (input.ListUserPlant.Contains(c.LACK1_PLANT.FirstOrDefault().PLANT_ID) && c.LACK1_LEVEL == Enums.Lack1Level.Plant) || (input.ListNppbkc.Contains(c.NPPBKC_ID) && c.LACK1_LEVEL == Enums.Lack1Level.Nppbkc)); break; } return(queryFilter); }