public static List<ParamField> getFields()
 {
     QueryBuilder query = new QueryBuilder(@"
             SELECT
                 rf.rdb$field_name, rf.rdb$description,
                 f.rdb$field_type, f.rdb$field_length
             FROM rdb$relation_fields rf
                 join rdb$relations r
                 on rf.rdb$relation_name = r.rdb$relation_name
                 join rdb$fields f
                 on f.rdb$field_name = rf.rdb$field_source
                 left join rdb$types t
                 on t.rdb$type = f.rdb$field_type
                 and t.rdb$field_name = 'RDB$FIELD_TYPE'
             WHERE
                 r.rdb$view_blr is null and
                 (r.rdb$system_flag is null or r.rdb$system_flag=0) and
                 rf.rdb$relation_name = 'FW_REPORT_PARAMS'
                 and rf.rdb$field_name <> '" + KEY_FIELD_NAME + "' and 1=1");
     DataSet ds = DABase.getDatabase().LoadDataSet(query);
     List<ParamField> list = new List<ParamField>();
     foreach (DataRow dr in ds.Tables[0].Rows)
     {
         ParamField field = new ParamField();
         field.FIELD_NAME = dr["RDB$FIELD_NAME"].ToString().Trim();
         field.DESCRIPTION = dr["RDB$DESCRIPTION"].ToString();
         field.FIELD_TYPE = HelpNumber.ParseInt32(dr["RDB$FIELD_TYPE"]);
         field.FIELD_LENGTH = HelpNumber.ParseInt64(dr["RDB$FIELD_LENGTH"]);
         list.Add(field);
     }
     return list;
 }
        public override QueryBuilder PLBuildQueryFilter()
        {
            QueryBuilder filter = new QueryBuilder(BIEN_MUC.FILTER_STRING);
            filter.addSoPhieu(BIEN_MUC.MA_BANG, MaBang.Text);
            filter.addLike("LOWER(" + BIEN_MUC.NOI_DUNG + ")", NoiDung.Text.ToLower());
            AppCtrl.addID(filter, BIEN_MUC.SO_DKCB_HD, SoDKHDCB);
            AppCtrl.addID(filter, BIEN_MUC.TIET_MUC, TietMuc);
            AppCtrl.addID(filter, BIEN_MUC.LOAI_LUU_TRU, LoaiBang);
            AppCtrl.addID(filter, BIEN_MUC.DON_VI_CUNG_CAP, DonViCungCap);
            AppCtrl.addID(filter, BIEN_MUC.DON_VI_SO_HUU, DonViSoHuu);
            filter.addIn(BIEN_MUC.POST_MASTER, AppCtrl.GetCheckedValues(TinhTrang, true));
            filter.addIn(BIEN_MUC.IS_THANH_LY, AppCtrl.GetCheckedValues(ThanhLy, true));
            AppCtrl.addFilterFromTo(filter, BIEN_MUC.NGAY_NHAP, ngayNhap);
            AppCtrl.addFilterFromTo(filter, BIEN_MUC.NAM_SAN_XUAT, NamSXTu.Value, NamSXDen.Value);
            long[] IDs = QuocGia._getSelectedIDs();
            if (IDs.Length > 0 && IDs.Length < QuocGia.Properties.GetItems().Count)
            {
                string cond = "(";
                foreach (long id in IDs)
                {
                    cond += BIEN_MUC.NUOC_SAN_XUAT + " like '%," + id + ",%' or ";
                }
                cond = cond.TrimEnd(' ', 'r', 'o');
                cond = cond += ")";
                filter.addCondition(cond);
            }
            filter.addCondition("1=1");
            filter.setDescOrderBy(BIEN_MUC.NGAY_CAP_NHAT);

            return filter;
        }
示例#3
0
 public string BaseQuery(bool selectTop, int top)
 {
     QueryBuilder builder;
     try
     {
         builder = new QueryBuilder();
         if (selectTop == true)
             builder.SelectTop(top);
         else
             builder.Select();
         builder.AppendColumn(TaskObject.TASK_ID);
         builder.AppendColumn(TaskObject.TAG);
         builder.AppendColumn(TaskObject.CREATION_DATE);
         builder.AppendColumn(TaskObject.UPDATE_DATE);
         builder.AppendColumn(TaskObject.DUE_DATE);
         builder.AppendColumn(TaskObject.STATUS);
         builder.AppendColumn(TaskObject.PRIORITY);
         builder.AppendColumn(TaskObject.EFFORT);
         builder.AppendFromTable(TaskObject.TABLE);
         return builder.Query;
     }
     catch (System.Exception exception1)
     {
         Exception innerException = exception1;
         throw new Exception(MethodBase.GetCurrentMethod().Name, innerException);
     }
 }
示例#4
0
 public string BaseQuery(bool selectTop, int top)
 {
     QueryBuilder builder;
     try
     {
         builder = new QueryBuilder();
         if (selectTop == true)
             builder.SelectTop(top);
         else
             builder.Select();
         builder.AppendColumn(RevisionObject.REV_ID);
         builder.AppendColumn(RevisionObject.MATCAT_ID);
         builder.AppendColumn(RevisionObject.MATTYP_ID);
         builder.AppendColumn(RevisionObject.MATSTYP_ID);
         builder.AppendColumn(RevisionObject.REVISION);
         builder.AppendColumn(MaterialCategoryObject.CATEGORY);
         builder.AppendColumn(MaterialCategoryObject.MATCAT_ID);
         builder.AppendColumn(MaterialSubTypeObject.MATSTYP_ID);
         builder.AppendColumn(MaterialSubTypeObject.MATTYP_ID);
         builder.AppendColumn(MaterialSubTypeObject.SUBTYPE);
         builder.AppendColumn(MaterialTypeObject.MATCAT_ID);
         builder.AppendColumn(MaterialTypeObject.MATTYP_ID);
         builder.AppendColumn(MaterialTypeObject.TYPE);
         builder.AppendFromTable(RevisionObject.TABLE);
         builder.AppendLeftJoin(MaterialCategoryObject.TABLE, MaterialCategoryObject.MATCAT_ID, RevisionObject.MATCAT_ID);
         builder.AppendLeftJoin(MaterialTypeObject.TABLE, MaterialTypeObject.MATTYP_ID, RevisionObject.MATTYP_ID);
         builder.AppendLeftJoin(MaterialSubTypeObject.TABLE, MaterialSubTypeObject.MATSTYP_ID, RevisionObject.MATSTYP_ID);
         return builder.Query;
     }
     catch (System.Exception exception1)
     {
         Exception innerException = exception1;
         throw new Exception(MethodBase.GetCurrentMethod().Name, innerException);
     }
 }
示例#5
0
 public static void InitChonDienDan(PLComboboxAdd PLDien_Dan,bool? IsAdd)
 {
     QueryBuilder query = null;
     query = new QueryBuilder("SELECT * FROM NHOM_DIEN_DAN where  ID_CHA<>0 " + (IsAdd == true ? " AND VISIBLE_BIT='Y'" : "") + " and 1=1");
     DataSet ds = HelpDB.getDatabase().LoadDataSet(query);
     PLDien_Dan._init(ds.Tables[0], "NAME", "ID");
 }
        private void btnView_Click(object sender, EventArgs e)
        {
            if(KenhPhat._getSelectedID()<=1)
            {
                HelpMsgBox.ShowNotificationMessage("Vui lòng chọn kênh phát");
                return;
            }

            var sql =
                string.Format(
                    @"select ct.time_start,ct.time_end,ct.kenh_phat,iif(c.ct_id is null, tct.noi_dung, c.noi_dung) noi_dung,
            c.nuoc_san_xuat, ct.rate_group,datediff(minute,ct.time_start,ct.time_end) timesplit
            from tns_programs_grid_scr_ct ct
            left join tns_chuong_trinh tct on tct.tct_id=ct.chuong_trinh
            left join chuong_trinh c on c.ct_id=tct.ct_id
            where 1=1");
            var query = new QueryBuilder(sql);

            AppCtrl.addID(query, "ct.PGS_id", FileNguon);
            query.addID("CT.KENH_PHAT", KenhPhat._getSelectedID());
            var dt = NgayPhatSong.DateTime;
            query.addDateFromTo("CT.NGAY_PHAT", new DateTime(dt.Year, dt.Month, dt.Day, 0, 0, 0),
                                new DateTime(dt.Year, dt.Month, dt.Day, 23, 59, 59));

            query.setAscOrderBy("ct.time_start, ct.kenh_phat");

            var ds = HelpDB.getDBService().LoadDataSet(query, KE_HOACH_LPS_CT.TABLE_NAME);
            gridControlDetail.DataSource = ds.Tables[0];
            gridBand1.Caption = dt.ToString("ddd " + FrameworkParams.option.dateFormat);
        }
示例#7
0
 /// <summary>
 ///   APU维修成本查询。
 /// </summary>
 /// <param name="query">查询表达式。</param>
 /// <returns> APU维修成本DTO集合。</returns>
 public IQueryable<ApuMaintainCostDTO> ApuMaintainCostDTOQuery(
     QueryBuilder<ApuMaintainCost> query)
 {
     return
         query.ApplyTo(_maintainCostRepository.GetAll().OfType<ApuMaintainCost>())
             .Select(p => new ApuMaintainCostDTO
             {
                 Id = p.Id,
                 NameType = p.NameType,
                 Type = p.Type,
                 YearBudgetRate = p.YearBudgetRate,
                 Rate = p.Rate,
                 BudgetHour = p.BudgetHour,
                 HourPercent = p.HourPercent,
                 Hour = p.Hour,
                 ContractRepairFeeUsd = p.ContractRepairFeeUsd,
                 ContractRepairFeeRmb = p.ContractRepairFeeRmb,
                 CustomRate = p.CustomRate,
                 TotalTax = p.TotalTax,
                 AddedValueRate = p.AddedValueRate,
                 AddedValue = p.AddedValue,
                 IncludeAddedValue = p.IncludeAddedValue,
                 MaintainInvoiceId = p.MaintainInvoiceId,
                 Year = p.Year,
                 AcutalBudgetAmount = p.MaintainInvoice.PaymentScheduleLineId == null ? 0 : p.MaintainInvoice.PaymentScheduleLine.Amount,
                 AcutalAmount = p.MaintainInvoice.InvoiceValue
             });
 }
示例#8
0
 /// <summary>
 ///     add key=value into QueryModel.Items
 /// </summary>
 /// <param name="model">QueryModel</param>
 /// <param name="key">the name of Element (input/select/area/radio/checkbox)</param>
 /// <param name="val">the value of Element (input/select/area/radio/checkbox)</param>
 public static void AddSearchItem(QueryBuilder model, string key, string val)
 {
     if (model == null)
     {
         model = new QueryBuilder();
     }
     string orGroup = "";
     var keywords = key.Split("$', ')', '}".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
     if (keywords.Length != 2)
         return;
     var method = SearchMethodAdapter(keywords[0]);
     var field = keywords[1];
     if (string.IsNullOrEmpty(method)) return;
     if (!string.IsNullOrEmpty(field))
     {
         var item = new ConditionItem
         {
             Field = field,
             Value = val.Trim(),
             OrGroup = orGroup,
             Method = (QueryMethod)Enum.Parse(typeof(QueryMethod), method)
         };
         model.Items.Add(item);
     }
 }
示例#9
0
 public IQueryable<EnginePaymentScheduleDTO> EnginePaymentSchedulesQuery(QueryBuilder<PaymentSchedule> query)
 {
     var dbCurrency = _unitOfWork.CreateSet<Currency>();
     return
         query.ApplyTo(_unitOfWork.CreateSet<PaymentSchedule>())
             .OfType<EnginePaymentSchedule>()
             .Select(p => new EnginePaymentScheduleDTO
             {
                 EnginePaymentScheduleId = p.Id,
                 CreateDate = p.CreateDate,
                 CurrencyId = p.CurrencyId,
                 IsCompleted = p.IsCompleted,
                 SupplierId = p.SupplierId,
                 SupplierName = p.SupplierName,
                 ContractEngineId = p.ContractEngineId,
                 CurrencyName = dbCurrency.FirstOrDefault(c => c.Id == p.CurrencyId).CnName,
                 PaymentScheduleLines = p.PaymentScheduleLines.Select(c => new PaymentScheduleLineDTO
                 {
                     PaymentScheduleLineId = c.Id,
                     Amount = c.Amount,
                     Start = c.Start,
                     End = c.End,
                     Body = c.Body,
                     Subject = c.Subject,
                     PaymentScheduleId = c.PaymentScheduleId,
                     ScheduleDate = c.ScheduleDate,
                     Status = (int) c.Status,
                     Importance = c.Importance,
                     ProcessStatus = c.Tempo,
                     InvoiceId = c.InvoiceId,
                     IsAllDayEvent = c.IsAllDayEvent
                 }).ToList(),
             });
 }
示例#10
0
 /// <summary>
 ///   FHA维修成本查询。
 /// </summary>
 /// <param name="query">查询表达式。</param>
 /// <returns> FHA维修成本DTO集合。</returns>
 public IQueryable<FhaMaintainCostDTO> FhaMaintainCostDTOQuery(
     QueryBuilder<FhaMaintainCost> query)
 {
     return
         query.ApplyTo(_maintainCostRepository.GetAll().OfType<FhaMaintainCost>())
             .Select(p => new FhaMaintainCostDTO
             {
                 Id = p.Id,
                 EngineProperty = p.EngineProperty,
                 Jx = p.Jx,
                 YearBudgetRate = p.YearBudgetRate,
                 Rate = p.Rate,
                 AirHour = p.AirHour,
                 HourPercent = p.HourPercent,
                 Hour = p.Hour,
                 FhaFeeUsd = p.FhaFeeUsd,
                 FhaFeeRmb = p.FhaFeeRmb,
                 Custom = p.Custom,
                 CustomAddedRmb = p.CustomAddedRmb,
                 TotalTax = p.TotalTax,
                 AddedValueRate = p.AddedValueRate,
                 AddedValue = p.AddedValue,
                 IncludeAddedValue = p.IncludeAddedValue,
                 CustomAdded = p.CustomAdded,
                 AircraftTypeId = p.AircraftTypeId,
                 MaintainInvoiceId = p.MaintainInvoiceId,
                 Year = p.Year,
                 AcutalBudgetAmount = p.MaintainInvoice.PaymentScheduleLineId == null ? 0 : p.MaintainInvoice.PaymentScheduleLine.Amount,
                 AcutalAmount = p.MaintainInvoice.InvoiceValue
             });
 }
示例#11
0
        /// <summary>
        ///     备发计划查询。
        /// </summary>
        /// <param name="query">查询表达式。</param>
        /// <returns>备发计划DTO集合。</returns>
        public IQueryable<EnginePlanDTO> EnginePlanDTOQuery(
            QueryBuilder<EnginePlan> query)
        {
            return query.ApplyTo(_unitOfWork.CreateSet<EnginePlan>()).Select(p => new EnginePlanDTO
            {
                Id = p.Id,
                AirlinesId = p.AirlinesId,
                AnnualId = p.AnnualId,
                CreateDate = p.CreateDate,
                DocName = p.DocName,
                DocNumber = p.DocNumber,
                DocumentId = p.DocumentId,
                IsValid = p.IsValid,
                Note = p.Note,
                Status = (int)p.Status,
                Title = p.Title,
                VersionNumber = p.VersionNumber,
                EnginePlanHistories = p.EnginePlanHistories.Select(q=>new EnginePlanHistoryDTO
                {
                    Id = q.Id,
                    ActionCategoryId = q.ActionCategoryId,
                    EnginePlanId = q.EnginePlanId,
                    EngineTypeId = q.EngineTypeId,
                    IsFinished = q.IsFinished,
                    MaxThrust = q.MaxThrust,
                    ImportDate = q.ImportDate,
                    Note = q.Note,
                    PerformAnnualId = q.PerformAnnualId,
                    PerformMonth = q.PerformMonth,
                    PlanEngineId = q.PlanEngineId,
                    Status = (int)q.Status,
                }).ToList(),

            }).OrderBy(p=>p.CreateDate);
        }
示例#12
0
        /// <summary>
        ///     序号件装机历史查询。
        /// </summary>
        /// <param name="query">查询表达式。</param>
        /// <returns>序号件装机历史DTO集合。</returns>
        public IQueryable<SnHistoryDTO> SnHistoryDTOQuery(
            QueryBuilder<SnHistory> query)
        {
            var dbAircrafts = _unitOfWork.CreateSet<Aircraft>();

            return query.ApplyTo(_unitOfWork.CreateSet<SnHistory>()).Select(p => new SnHistoryDTO
            {
                Id = p.Id,
                Sn = p.Sn,
                SnRegId = p.SnRegId,
                Pn = p.Pn,
                PnRegId = p.PnRegId,
                CSN = p.CSN,
                TSN = p.TSN,
                CSN2 = p.CSN2,
                TSN2 = p.TSN2,
                Status = (int)p.Status,
                Position = (int)p.Position,
                AircraftId = p.AircraftId,
                ActionDate = p.ActionDate,
                ActionType = (int)p.ActionType,
                ActionNo = p.RemInstRecord.ActionNo,
                ActionReason = p.RemInstRecord.Reason,
                RemInstRecordId = p.RemInstRecordId,
                RegNumber = dbAircrafts.FirstOrDefault(c => c.Id == p.AircraftId).RegNumber,
            });
        }
示例#13
0
        /// <summary>CHAUTV : Tính tổng số giờ nhân viên làm được trong khoảng thời gian xác định
        /// </summary>
        public static double GetSumDaysWorked(DateTime from, DateTime to, long employKey)
        {
            QueryBuilder query = new QueryBuilder(@"SELECT distinct NV_ID,NGAY,SANG,CHIEU
                                                    FROM BANG_CHAM_CONG_AUTO
                                                    WHERE 1=1");
            query.addID("NV_ID", employKey);
            query.addDateFromTo("NGAY", from, to);
            DataSet ds = HelpDB.getDatabase().LoadDataSet(query, "BANG_CHAM_CONG_AUTO");

            double cntV = 0;
            double sumTime = 0;
            double cntN = 0;
            //Duyệt đếm thời gian, vắng, nghỉ
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                if (ds.Tables[0].Rows[i]["SANG"].ToString() == "V")
                    cntV++;
                if (ds.Tables[0].Rows[i]["CHIEU"].ToString() == "V")
                    cntV++;
                if (ds.Tables[0].Rows[i]["SANG"].ToString() == "N")
                    cntN++;
                if (ds.Tables[0].Rows[i]["CHIEU"].ToString() == "N")
                    cntN++;
                if (checkNumber(ds.Tables[0].Rows[i]["SANG"].ToString()))
                    sumTime += double.Parse(ds.Tables[0].Rows[i]["SANG"].ToString());
                if (checkNumber(ds.Tables[0].Rows[i]["CHIEU"].ToString()))
                    sumTime += double.Parse(ds.Tables[0].Rows[i]["CHIEU"].ToString());
            }
            //Làm tròn 4 chữ số
            return Math.Round(sumTime / 8 - cntV / 2, 4);
        }
示例#14
0
 public override void AddSort(object expr, IComparer comparer)
 {
     // sort makes sense only when we are dealing with a query that
     // returns a nodeset.
     Query evalExpr;
     string query = expr as string;
     if (query != null)
     {
         evalExpr = new QueryBuilder().Build(query, out _needContext); // this will throw if expr is invalid
     }
     else
     {
         CompiledXpathExpr xpathExpr = expr as CompiledXpathExpr;
         if (xpathExpr != null)
         {
             evalExpr = xpathExpr.QueryTree;
         }
         else
         {
             throw XPathException.Create(SR.Xp_BadQueryObject);
         }
     }
     SortQuery sortQuery = _query as SortQuery;
     if (sortQuery == null)
     {
         _query = sortQuery = new SortQuery(_query);
     }
     sortQuery.AddSort(evalExpr, comparer);
 }
        public void AddToQuery(AuditConfiguration verCfg, String entityName, QueryBuilder qb, Parameters parameters)
        {
            Parameters opParameters = parameters.AddSubParameters(op);

            lhs.AddToQuery(verCfg, entityName, qb, opParameters.AddSubParameters("and"));
            rhs.AddToQuery(verCfg, entityName, qb, opParameters.AddSubParameters("and"));
        }
示例#16
0
 /// <summary>
 ///    贷项单查询
 /// </summary>
 /// <param name="query">查询表达式。</param>
 /// <returns>贷项单DTO集合。</returns>
 public IQueryable<MaintainCreditNoteDTO> MaintainCreditNoteDTOQuery(
     QueryBuilder<MaintainCreditNoteInvoice> query)
 {
     return
         query.ApplyTo(_unitOfWork.CreateSet<MaintainCreditNoteInvoice>())
              .Select(p => new MaintainCreditNoteDTO
              {
                  CreditNoteId = p.Id,
                  InvoiceNumber = p.InvoiceNumber,
                  InvoideCode = p.InvoideCode,
                  InvoiceDate = p.InvoiceDate,
                  SupplierName = p.SupplierName,
                  SupplierId = p.SupplierId,
                  InvoiceValue = p.InvoiceValue,
                  PaidAmount = p.PaidAmount,
                  OperatorName = p.OperatorName,
                  Reviewer = p.Reviewer,
                  CreateDate = p.CreateDate,
                  ReviewDate = p.ReviewDate,
                  IsValid = p.IsValid,
                  IsCompleted = p.IsCompleted,
                  Status = (int)p.Status,
                  CurrencyId = p.CurrencyId,
                  PaymentScheduleLineId = p.PaymentScheduleLineId,
                  InvoiceLines = p.InvoiceLines.Select(q => new InvoiceLineDTO
                  {
                      InvoiceLineId = q.Id,
                      ItemName = (int)q.ItemName,
                      Amount = q.Amount,
                      InvoiceId = q.InvoiceId,
                      OrderLineId = q.OrderLineId,
                      Note = q.Note,
                  }).ToList(),
              });
 }
示例#17
0
 public string BaseQuery(bool selectTop, int top)
 {
     QueryBuilder builder;
     try
     {
         builder = new QueryBuilder();
         if (selectTop == true)
             builder.SelectTop(top);
         else
             builder.Select();
         builder.AppendColumn(ScheduleObject.SCHED_ID);
         builder.AppendColumn(ScheduleObject.FREQUENCY);
         builder.AppendColumn(ScheduleObject.MONDAY);
         builder.AppendColumn(ScheduleObject.TUESDAY);
         builder.AppendColumn(ScheduleObject.WEDNESDAY);
         builder.AppendColumn(ScheduleObject.THURSDAY);
         builder.AppendColumn(ScheduleObject.FRIDAY);
         builder.AppendColumn(ScheduleObject.WEDNESDAY);
         builder.AppendColumn(ScheduleObject.SATERDAY);
         builder.AppendColumn(ScheduleObject.SUNDAY);
         builder.AppendColumn(ScheduleObject.STARTDATE);
         builder.AppendColumn(ScheduleObject.TIME);
         builder.AppendColumn(ScheduleObject.LAST_SEND);
         builder.AppendFromTable(ScheduleObject.TABLE);
         return builder.Query;
     }
     catch (System.Exception exception1)
     {
         Exception innerException = exception1;
         throw new Exception(MethodBase.GetCurrentMethod().Name, innerException);
     }
 }
示例#18
0
 public IQueryable<MaintainGuaranteeDTO> MaintainGuaranteeQuery(QueryBuilder<Guarantee> query)
 {
     var dbCurrency = _unitOfWork.CreateSet<Currency>();
     var dbMaintainContract = _unitOfWork.CreateSet<MaintainContract>();
     return
         query.ApplyTo(_unitOfWork.CreateSet<Guarantee>()).OfType<MaintainGuarantee>()
             .Select(p => new MaintainGuaranteeDTO
             {
                 GuaranteeId = p.Id,
                 Amount = p.Amount,
                 CreateDate = p.CreateDate,
                 CurrencyId = p.CurrencyId,
                 EndDate = p.EndDate,
                 OperatorName = p.OperatorName,
                 MaintainContractId = p.MaintainContractId,
                 ReviewDate = p.ReviewDate,
                 Reviewer = p.Reviewer,
                 StartDate = p.StartDate,
                 SupplierId = p.SupplierId,
                 SupplierName = p.SupplierName,
                 Status = (int)p.Status,
                 CurrencyName = dbCurrency.FirstOrDefault(c => c.Id == p.CurrencyId).CnName,
                 MaintainContractName = dbMaintainContract.FirstOrDefault(c=>c.Id==p.MaintainContractId).Name,
             });
 }
 public static void InitChonKhachHang(PLCombobox PLKhachhang)
 {
     QueryBuilder query = null;
     query = new QueryBuilder("SELECT distinct TEN_KHACH_HANG, KH_ID FROM KHACH_HANG where 1=1");
     DataSet ds = DABase.getDatabase().LoadDataSet(query);
     PLKhachhang._init(ds.Tables[0], "TEN_KHACH_HANG", "KH_ID");
 }
示例#20
0
 /// <summary>
 ///  付款通知查询。
 /// </summary>
 /// <param name="query">查询表达式。</param>
 /// <returns>付款通知DTO集合。</returns>
 public IQueryable<PaymentNoticeDTO> PaymentNoticeDTOQuery(QueryBuilder<PaymentNotice> query)
 {
     return
         query.ApplyTo(_paymentNoticeRepository.GetAll()).Select(p => new PaymentNoticeDTO
                          {
                              PaymentNoticeId = p.Id,
                              NoticeNumber = p.NoticeNumber,
                              CreateDate = p.CreateDate,
                              DeadLine = p.DeadLine,
                              SupplierName = p.SupplierName,
                              OperatorName = p.OperatorName,
                              Reviewer = p.Reviewer,
                              ReviewDate = p.ReviewDate,
                              Status = (int)p.Status,
                              SupplierId = p.SupplierId,
                              CurrencyId = p.CurrencyId,
                              CurrencyName = p.Currency.CnName,
                              BankAccountName = p.BankAccount.Account + "/" + p.BankAccount.Bank + p.BankAccount.Branch,
                              BankAccountId = p.BankAccountId,
                              IsComplete = p.IsComplete,
                              PaymentNoticeLines =
                                  p.PaymentNoticeLines.Select(q => new PaymentNoticeLineDTO
                                                                     {
                                                                         PaymentNoticeLineId = q.Id,
                                                                         InvoiceType = (int)q.InvoiceType,
                                                                         InvoiceId = q.InvoiceId,
                                                                         InvoiceNumber = q.InvoiceNumber,
                                                                         Amount = q.Amount,
                                                                         Note = q.Note
                                                                     }).ToList(),
                          });
 }
        public void AddToQuery(AuditConfiguration auditCfg, String entityName, QueryBuilder qb, Parameters parameters)
        {
            String propertyName = propertyNameGetter.Get(auditCfg);

            CriteriaTools.CheckPropertyNotARelation(auditCfg, entityName, propertyName);

            // This will be the aggregated query, containing all the specified conditions
            QueryBuilder subQb = qb.NewSubQueryBuilder();

            // Adding all specified conditions both to the main query, as well as to the
            // aggregated one.
            foreach (IAuditCriterion versionsCriteria in criterions) {
                versionsCriteria.AddToQuery(auditCfg, entityName, qb, parameters);
                versionsCriteria.AddToQuery(auditCfg, entityName, subQb, subQb.RootParameters);
            }

            // Setting the desired projection of the aggregated query
            switch (mode) {
                case AggregatedMode.MIN:
                    subQb.AddProjection("min", propertyName, false);
                    break;
                case AggregatedMode.MAX:
                    subQb.AddProjection("max", propertyName, false);
                    break;
            }

            // Adding the constrain on the result of the aggregated criteria
            parameters.AddWhere(propertyName, "=", subQb);
        }
 public void AddToQuery(AuditConfiguration auditCfg, String entityName, QueryBuilder qb, Parameters parameters)
 {
     String propertyName = propertyNameGetter.Get(auditCfg);
     CriteriaTools.CheckPropertyNotARelation(auditCfg, entityName, propertyName);
     parameters.AddWhereWithParam(propertyName, ">=", lo);
     parameters.AddWhereWithParam(propertyName, "<=", hi);
 }
示例#23
0
 /// <summary>
 ///     航空公司五年规划查询。
 /// </summary>
 /// <param name="query">查询表达式。</param>
 /// <returns>航空公司五年规划DTO集合。</returns>
 public IQueryable<AirProgrammingDTO> AirProgrammingDTOQuery(
     QueryBuilder<AirProgramming> query)
 {
     return query.ApplyTo(_unitOfWork.CreateSet<AirProgramming>()).Select(p => new AirProgrammingDTO
     {
         Id = p.Id,
         CreateDate = p.CreateDate,
         DocName = p.DocName,
         DocumentId = p.DocumentId,
         IssuedDate = p.IssuedDate,
         IssuedUnitId = p.IssuedUnitId,
         Name = p.Name,
         Note = p.Note,
         ProgrammingId = p.ProgrammingId,
         ProgrammingName = p.Programming.Name,
         AirProgrammingLines = p.AirProgrammingLines.Select(q=>new AirProgrammingLineDTO
         {
             Id = q.Id,
             AircraftSeriesId = q.AircraftSeriesId,
             AirProgrammingId = q.AirProgrammingId,
             BuyNum = q.BuyNum,
             ExportNum = q.ExportNum,
             LeaseNum = q.LeaseNum,
             Year = q.Year,
         }).ToList(),
     });
 }
        private void btnView_Click(object sender, EventArgs e)
        {
            var sql =
                string.Format(
                    @"select right(  '00'||extract(hour from ct.time_start),2) ||':00 '|| ' - ' ||right('00'||(extract(hour from ct.time_start)  +1),2)    ||':00' VET,
            kp.name kenh_phat,avg(ct.rate_group)
            from tns_programs_grid_scr_ct ct
            left join tns_kenh_phat kp on ct.kenh_phat=kp.id
            where 1=1");
            var query = new QueryBuilder(sql);

            AppCtrl.addID(query, "ct.PGS_id", FileNguon);
            AppCtrl.addID(query, "CT.KENH_PHAT", KenhPhat);
            query.addDateFromTo("CT.NGAY_PHAT", TuNgay.DateTime, DenNgay.DateTime);

            query.addGroupBy(@"right(  '00'||extract(hour from ct.time_start),2) ||':00 '|| ' - ' ||right('00'||(extract(hour from ct.time_start)  +1),2)    ||':00',
            kp.name");
            query.setAscOrderBy("ct.time_start, ct.kenh_phat");

            var ds = HelpDB.getDBService().LoadDataSet(query, KE_HOACH_LPS_CT.TABLE_NAME);
            if (ds != null && ds.Tables.Count > 0)
            {
                var dt = ds.Tables[0];
                var dtS = dt.DefaultView.ToTable(true, "VET");

            }

            gridControlDetail.DataSource = ds.Tables[0];
        }
示例#25
0
 public string BaseQuery(bool selectTop, int top)
 {
     QueryBuilder builder;
     try
     {
         builder = new QueryBuilder();
         if (selectTop == true)
             builder.SelectTop(top);
         else
             builder.Select();
         builder.AppendColumn(PopupUserObject.POPUPUSER_ID);
         builder.AppendColumn(PopupUserObject.POPUP_ID);
         builder.AppendColumn(PopupUserObject.USER_ID);
         builder.AppendColumn(PopupObject.POPUP_ID);
         builder.AppendColumn(PopupObject.DESCRIPTION);
         builder.AppendColumn(PopupObject.REPEAT);
         builder.AppendColumn(PopupObject.ACTIVE);
         builder.AppendColumn(PopupObject.CREATIONDATE);
         builder.AppendColumn(PopupObject.TIME);
         builder.AppendColumn(PopupObject.SHOW_DIRECT);
         builder.AppendColumn(UserObject.USR_ID);
         builder.AppendFromTable(PopupUserObject.TABLE);
         builder.AppendLeftJoin(PopupObject.TABLE, PopupUserObject.POPUP_ID, PopupObject.POPUP_ID);
         builder.AppendLeftJoin(UserObject.TABLE, PopupUserObject.USER_ID, UserObject.USR_ID);
         return builder.Query;
     }
     catch (System.Exception exception1)
     {
         Exception innerException = exception1;
         throw new Exception(MethodBase.GetCurrentMethod().Name, innerException);
     }
 }
示例#26
0
 public static void addID(QueryBuilder filter, string opLeft, PLMultiChoiceGrid input)
 {
     if (!input._IsNotCheckAnyOrCheckedAll)
     {
         filter.addID(opLeft, input._GetSelectedIds());
     }
 }
示例#27
0
 /// <summary>
 ///     <see cref="IOrderQuery" />
 /// </summary>
 /// <param name="query">
 ///     <see cref="IOrderQuery" />
 /// </param>
 /// <returns>
 ///     <see cref="IOrderQuery" />
 /// </returns>
 public IQueryable<AircraftLeaseOrderDTO> AircraftLeaseOrderQuery(QueryBuilder<Order> query)
 {
     var trades = _unitOfWork.CreateSet<Trade>();
     var result = query.ApplyTo(_orderRepository.GetAll().OfType<AircraftLeaseOrder>().Where(p => p.IsValid))
         .Select(o => new AircraftLeaseOrderDTO
         {
             Id = o.Id,
             Name = o.Name,
             Version = o.Version,
             CurrencyId = o.Currency.Id,
             OperatorName = o.OperatorName,
             OrderDate = o.OrderDate,
             Status = (int) o.Status,
             Note = o.Note,
             SupplierId = trades.FirstOrDefault(p => p.Id == o.TradeId).SupplierId,
             SupplierName = trades.FirstOrDefault(p => p.Id == o.TradeId).Supplier.CnName,
             AircraftLeaseOrderLines =
                 o.OrderLines.OfType<AircraftLeaseOrderLine>().Select(l => new AircraftLeaseOrderLineDTO
                 {
                     Id = l.Id,
                     UnitPrice = l.UnitPrice,
                     Amount = l.Amount,
                     Discount = l.Discount,
                     EstimateDeliveryDate = l.EstimateDeliveryDate,
                     Note = l.Note,
                     ContractAircraftId = l.ContractAircraftId,
                     OrderId = l.OrderId,
                     TotalLine = (l.UnitPrice*l.Amount)*(1 - (l.Discount/100M)),
                 }).ToList(),
         });
     return result;
 }
 /// <summary>
 ///    采购合同飞机查询
 /// </summary>
 /// <param name="query">查询表达式。</param>
 /// <returns>采购合同飞机DTO集合。</returns>
 public IQueryable<PurchaseContractAircraftDTO> PurchaseContractAircraftDTOQuery(
     QueryBuilder<PurchaseContractAircraft> query)
 {
     return
     query.ApplyTo(_unitOfWork.CreateSet<ContractAircraft>().OfType<PurchaseContractAircraft>())
              .Select(p => new PurchaseContractAircraftDTO
              {
                  PurchaseContractAircraftId = p.Id,
                  ContractName = p.ContractName,
                  ContractNumber = p.ContractNumber,
                  RankNumber = p.RankNumber,
                  CSCNumber = p.CSCNumber,
                  SerialNumber = p.SerialNumber,
                  IsValid = p.IsValid,
                  ReceivedAmount = p.ReceivedAmount,
                  AcceptedAmount = p.AcceptedAmount,
                  AircraftTypeId = p.AircraftTypeId,
                  AircraftTypeName = p.AircraftType.Name,
                  PlanAircraftID = p.PlanAircraftID,
                  ImportCategoryId = p.ImportCategoryId,
                  ImportType = p.ImportCategory.ActionType,
                  ImportActionName = p.ImportCategory.ActionName,
                  SupplierId = p.SupplierId,
              });
 }
 public string BaseQuery(bool selectTop, int top)
 {
     QueryBuilder builder;
     try
     {
         builder = new QueryBuilder();
         if (selectTop == true)
             builder.SelectTop(top);
         else
             builder.Select();
         builder.AppendColumn(MaintenanceVehicleObject.MAINTVEH_ID);
         builder.AppendColumn(MaintenanceVehicleObject.EMPID_EXECUTOR);
         builder.AppendColumn(MaintenanceVehicleObject.REMARK);
         builder.AppendColumn(MaintenanceVehicleObject.VEH_ID);
         builder.AppendColumn(MaintenanceVehicleObject.START_MAINTENANCE);
         builder.AppendFromTable(MaintenanceVehicleObject.TABLE);
         builder.AppendInnerJoin(VehicleObject.TABLE, VehicleObject.VEHID, MaintenanceVehicleObject.VEH_ID);
         builder.AppendLeftJoin(EmployeeObject.TABLE, EmployeeObject.EMP_ID, MaintenanceVehicleObject.EMPID_EXECUTOR);
         return builder.Query;
     }
     catch (System.Exception exception1)
     {
         Exception innerException = exception1;
         throw new Exception(MethodBase.GetCurrentMethod().Name, innerException);
     }
 }
示例#30
0
 /// <summary>
 ///     飞机配置查询。
 /// </summary>
 /// <param name="query">查询表达式。</param>
 /// <returns>飞机配置DTO集合。</returns>
 public IQueryable<AircraftConfigurationDTO> AircraftConfigurationDTOQuery(
     QueryBuilder<AircraftConfiguration> query)
 {
     return query.ApplyTo(_unitOfWork.CreateSet<AircraftConfiguration>()).Select(p => new AircraftConfigurationDTO
     {
         Id = p.Id,
         AircraftSeriesId = p.AircraftSeriesId,
         AircraftTypeId = p.AircraftTypeId,
         BEW = p.BEW,
         BW = p.BW,
         BWF = p.BWF,
         BWI = p.BWI,
         ConfigCode = p.ConfigCode,
         Description = p.Description,
         FileContent = p.FileContent,
         FileName = p.FileName,
         MCC = p.MCC,
         MLW = p.MLW,
         MMFW = p.MMFW,
         MTOW = p.MTOW,
         MTW = p.MTW,
         MZFW = p.MZFW,
         AircraftCabins = p.AircraftCabins.Select(q=>new AircraftCabinDTO
                                                  {
                                                      Id = q.Id,
                                                      AircraftCabinTypeId = q.AircraftCabinTypeId,
                                                      SeatNumber = q.SeatNumber,
                                                      Note = q.Note
                                                  }).ToList(),
     });
 }
示例#31
0
        public JsonResult GetList(string tmplCode, QueryBuilder qb)
        {
            var       listDef  = entities.Set <S_UI_List>().SingleOrDefault(c => c.Code == tmplCode);
            SQLHelper sqlHeler = SQLHelper.CreateSqlHelper(listDef.ConnName);

            UIFO   uiFO = FormulaHelper.CreateFO <UIFO>();
            string sql  = uiFO.ReplaceString(listDef.SQL);

            DataTable dtTmpl = sqlHeler.ExecuteDataTable(string.Format("select * from ({0}) as T where 1=2", sql));

            //地址栏参数作为查询条件
            foreach (string key in Request.QueryString.Keys)
            {
                if (string.IsNullOrEmpty(key))
                {
                    continue;
                }
                if ("ID,FullID,FULLID,TmplCode,IsPreView,_winid,_t".Split(',').Contains(key) || key.StartsWith("$"))
                {
                    continue;
                }
                if (dtTmpl.Columns.Contains(key))
                {
                    qb.Add(key, QueryMethod.Equal, Request[key], "Group1", null);
                }
            }

            var data = sqlHeler.ExecuteGridData(sql, qb);

            #region 计算汇总

            var           fields = JsonHelper.ToList(listDef.LayoutField);
            StringBuilder sb     = new StringBuilder();
            foreach (var field in fields)
            {
                if (field.ContainsKey("Settings") == false)
                {
                    continue;
                }
                var settings = JsonHelper.ToObject(field["Settings"].ToString());
                if (settings.ContainsKey("Collect") == false || settings["Collect"].ToString() == "")
                {
                    continue;
                }
                sb.AppendFormat(",{0}={1}({0})", field["field"], settings["Collect"]);
                if (settings["Collect"].ToString() == "sum")
                {
                    data.sumData.Add(field["field"].ToString(), null);
                }
                else
                {
                    data.avgData.Add(field["field"].ToString(), null);
                }
            }
            if (sb.Length > 0)
            {
                string collectSql = string.Format("select {0} from (select * from ({1}) as tb where 1=1 {2}) as T"
                                                  , sb.ToString().Trim(',')
                                                  , sql
                                                  , qb.GetWhereString(false) + FormulaHelper.CreateAuthDataFilter().GetWhereString(false)
                                                  );
                DataTable dtCollect = sqlHeler.ExecuteDataTable(collectSql);

                foreach (DataColumn col in dtCollect.Columns)
                {
                    if (data.sumData.ContainsKey(col.ColumnName))
                    {
                        data.sumData[col.ColumnName] = dtCollect.Rows[0][col];
                    }
                    else
                    {
                        data.avgData[col.ColumnName] = dtCollect.Rows[0][col];
                    }
                }
            }

            #endregion

            return(Json(data));
        }
        public ActionResult Callback(
            string encodedRedirect,
            [FromQuery(Name = "code")] string code,
            [FromQuery(Name = "state")] string state,
            [FromQuery(Name = "session_state")] string sessionState,
            [FromQuery(Name = "error")] string error,
            [FromQuery(Name = "error_description")] string errorDescription)
        {
            Uri redirectUrl = null;

            try
            {
                redirectUrl = new Uri(Base64UrlEncoder.Decode(encodedRedirect));
            }
            catch (FormatException ex)
            {
                throw new AadSmartOnFhirProxyBadRequestException(string.Format(Resources.InvalidRedirectUri, redirectUrl), ex);
            }

            if (!string.IsNullOrEmpty(error))
            {
                var errorQueryBuilder = new QueryBuilder
                {
                    { "error", error },
                };

                if (!string.IsNullOrEmpty(errorDescription))
                {
                    errorQueryBuilder.Add("error_description", errorDescription);
                }

                return(Redirect($"{redirectUrl}{errorQueryBuilder}"));
            }

            string compoundCode;
            string newState;

            try
            {
                var launchStateParameters = JObject.Parse(Base64UrlEncoder.Decode(state));
                var launchParameters      = JObject.Parse(Base64UrlEncoder.Decode(launchStateParameters["l"].ToString()));
                launchParameters.Add("code", code);
                newState     = launchStateParameters["s"].ToString();
                compoundCode = Base64UrlEncoder.Encode(launchParameters.ToString(Newtonsoft.Json.Formatting.None));
            }
            catch (Exception ex)
            {
                _logger.LogError("Error parsing launch parameters: {message}", ex.Message);
                throw new AadSmartOnFhirProxyBadRequestException(Resources.InvalidLaunchContext, ex);
            }

            var queryBuilder = new QueryBuilder
            {
                { "code", compoundCode },
                { "state", newState },
            };

            if (!string.IsNullOrEmpty(sessionState))
            {
                queryBuilder.Add("session_state", sessionState);
            }

            return(Redirect($"{redirectUrl}{queryBuilder}"));
        }
        public ActionResult Authorize(
            [FromQuery(Name = "response_type")] string responseType,
            [FromQuery(Name = "client_id")] string clientId,
            [FromQuery(Name = "redirect_uri")] Uri redirectUri,
            [FromQuery(Name = "launch")] string launch,
            [FromQuery(Name = "scope")] string scope,
            [FromQuery(Name = "state")] string state,
            [FromQuery(Name = "aud")] string aud)
        {
            if (string.IsNullOrEmpty(launch))
            {
                launch = Base64UrlEncoder.Encode("{}");
            }

            var newStateObj = new JObject
            {
                { "s", state },
                { "l", launch },
            };

            var queryBuilder = new QueryBuilder();

            if (!string.IsNullOrEmpty(responseType))
            {
                queryBuilder.Add("response_type", responseType);
            }

            if (!string.IsNullOrEmpty(clientId))
            {
                queryBuilder.Add("client_id", clientId);
            }

            try
            {
                var callbackUrl = _urlResolver.ResolveRouteNameUrl(RouteNames.AadSmartOnFhirProxyCallback, new RouteValueDictionary {
                    { "encodedRedirect", Base64UrlEncoder.Encode(redirectUri.ToString()) }
                });
                queryBuilder.Add("redirect_uri", callbackUrl.AbsoluteUri);
            }
            catch (Exception ex)
            {
                _logger.LogDebug(ex, "Redirect URL passed to Authorize failed to resolve.");
            }

            if (!_isAadV2 && !string.IsNullOrEmpty(aud))
            {
                queryBuilder.Add("resource", aud);
            }
            else if (!string.IsNullOrEmpty(scope))
            {
                // Azure AD v2.0 uses fully qualified scopes and does not allow '/' (slash)
                // We add qualification to scopes and replace '/' -> '$'

                var      scopes          = scope.Split(' ');
                var      scopesBuilder   = new StringBuilder();
                string[] wellKnownScopes = { "profile", "openid", "email", "offline_access" };

                foreach (var s in scopes)
                {
                    if (wellKnownScopes.Contains(s))
                    {
                        scopesBuilder.Append($"{s} ");
                    }
                    else
                    {
                        scopesBuilder.Append($"{aud}/{s.Replace('/', '$')} ");
                    }
                }

                var newScopes = scopesBuilder.ToString().TrimEnd(' ');

                queryBuilder.Add("scope", Uri.EscapeDataString(newScopes));
            }

            if (!string.IsNullOrEmpty(state))
            {
                string newState = Base64UrlEncoder.Encode(newStateObj.ToString());
                queryBuilder.Add("state", newState);
            }

            return(Redirect($"{_aadAuthorizeEndpoint}{queryBuilder}"));
        }
示例#34
0
 public CityController()
 {
     context     = new deliveryContext();
     queryBuider = new QueryBuilder <City>()
                   .MapMember("StateName", x => x.State.Name);
 }
        public void Execute()
        {
            if (_planManager.TargetDatabase == null)
            {
                throw new Exception("PlanManager has no TargetDatabase set");
            }

            var memoryRepo = new MemoryCatalogueRepository();

            using (_catalogueRepository.BeginNewTransactedConnection())
            {
                try
                {
                    //for each skipped table
                    foreach (var skippedTable in _planManager.SkippedTables)
                    {
                        //we might have to refactor or port JoinInfos to these tables so we should establish what the parenthood of them was
                        foreach (ColumnInfo columnInfo in skippedTable.ColumnInfos)
                        {
                            GetNewColumnInfoForOld(columnInfo, true);
                        }
                    }

                    //for each table that isn't being skipped
                    foreach (var oldTableInfo in _planManager.TableInfos.Except(_planManager.SkippedTables))
                    {
                        List <DatabaseColumnRequest> columnsToCreate = new List <DatabaseColumnRequest>();

                        Dictionary <string, ColumnInfo> migratedColumns = new Dictionary <string, ColumnInfo>(StringComparer.CurrentCultureIgnoreCase);

                        var querybuilderForMigratingTable = new QueryBuilder(null, null);

                        //for each column we are not skipping (Drop) work out the endpoint datatype (planner knows this)
                        foreach (ColumnInfo columnInfo in oldTableInfo.ColumnInfos)
                        {
                            var columnPlan = _planManager.GetPlanForColumnInfo(columnInfo);

                            if (columnPlan.Plan != Plan.Drop)
                            {
                                //add the column verbatim to the query builder because we know we have to read it from source
                                querybuilderForMigratingTable.AddColumn(new ColumnInfoToIColumn(memoryRepo, columnInfo));

                                string colName = columnInfo.GetRuntimeName();

                                //if it is being ano tabled then give the table name ANO as a prefix
                                if (columnPlan.Plan == Plan.ANO)
                                {
                                    colName = "ANO" + colName;
                                }

                                migratedColumns.Add(colName, columnInfo);

                                columnsToCreate.Add(new DatabaseColumnRequest(colName, columnPlan.GetEndpointDataType(), !columnInfo.IsPrimaryKey)
                                {
                                    IsPrimaryKey = columnInfo.IsPrimaryKey
                                });
                            }
                        }

                        SelectSQLForMigrations.Add(oldTableInfo, querybuilderForMigratingTable);

                        //Create the actual table
                        var tbl = _planManager.TargetDatabase.CreateTable(oldTableInfo.GetRuntimeName(), columnsToCreate.ToArray());

                        TableInfo    newTableInfo;
                        ColumnInfo[] newColumnInfos;

                        //import the created table
                        TableInfoImporter importer = new TableInfoImporter(_catalogueRepository, tbl);
                        importer.DoImport(out newTableInfo, out newColumnInfos);

                        //Audit the parenthood of the TableInfo/ColumnInfos
                        AuditParenthood(oldTableInfo, newTableInfo);

                        foreach (ColumnInfo newColumnInfo in newColumnInfos)
                        {
                            var oldColumnInfo = migratedColumns[newColumnInfo.GetRuntimeName()];

                            var columnPlan = _planManager.GetPlanForColumnInfo(oldColumnInfo);

                            if (columnPlan.Plan == Plan.ANO)
                            {
                                newColumnInfo.ANOTable_ID = columnPlan.ANOTable.ID;
                                newColumnInfo.SaveToDatabase();
                            }

                            //if there was a dilution configured we need to setup a virtual DLE load only column of the input type (this ensures RAW has a valid datatype)
                            if (columnPlan.Plan == Plan.Dilute)
                            {
                                //Create a discarded (load only) column with name matching the new columninfo
                                var discard = new PreLoadDiscardedColumn(_catalogueRepository, newTableInfo, newColumnInfo.GetRuntimeName());

                                //record that it exists to support dilution and that the data type matches the input (old) ColumnInfo (i.e. not the new data type!)
                                discard.Destination = DiscardedColumnDestination.Dilute;
                                discard.SqlDataType = oldColumnInfo.Data_type;
                                discard.SaveToDatabase();

                                DilutionOperationsForMigrations.Add(discard, columnPlan.Dilution);
                            }

                            AuditParenthood(oldColumnInfo, newColumnInfo);
                        }

                        if (DilutionOperationsForMigrations.Any())
                        {
                            newTableInfo.IdentifierDumpServer_ID = _planManager.GetIdentifierDumpServer().ID;
                            newTableInfo.SaveToDatabase();
                        }
                    }

                    NewCatalogue        = _planManager.Catalogue.ShallowClone();
                    NewCatalogue.Name   = "ANO" + _planManager.Catalogue.Name;
                    NewCatalogue.Folder = new CatalogueFolder(NewCatalogue, "\\anonymous" + NewCatalogue.Folder.Path);
                    NewCatalogue.SaveToDatabase();

                    AuditParenthood(_planManager.Catalogue, NewCatalogue);

                    //For each of the old ExtractionInformations (95% of the time that's just a reference to a ColumnInfo e.g. '[People].[Height]' but 5% of the time it's some horrible aliased transform e.g. 'dbo.RunMyCoolFunction([People].[Height]) as BigHeight'
                    foreach (CatalogueItem oldCatalogueItem in _planManager.Catalogue.CatalogueItems)
                    {
                        var oldColumnInfo = oldCatalogueItem.ColumnInfo;

                        //catalogue item is not connected to any ColumnInfo
                        if (oldColumnInfo == null)
                        {
                            continue;
                        }

                        var columnPlan = _planManager.GetPlanForColumnInfo(oldColumnInfo);

                        //we are not migrating it anyway
                        if (columnPlan.Plan == Plan.Drop)
                        {
                            continue;
                        }

                        ColumnInfo newColumnInfo = GetNewColumnInfoForOld(oldColumnInfo);

                        var newCatalogueItem = oldCatalogueItem.ShallowClone(NewCatalogue);

                        //and rewire it's ColumnInfo to the cloned child one
                        newCatalogueItem.ColumnInfo_ID = newColumnInfo.ID;

                        //If the old CatalogueItem had the same name as it's underlying ColumnInfo then we should use the new one otherwise just copy the old name whatever it was
                        newCatalogueItem.Name = oldCatalogueItem.Name.Equals(oldColumnInfo.Name) ? newColumnInfo.GetRuntimeName() : oldCatalogueItem.Name;

                        //add ANO to the front if the underlying column was annoed
                        if (newColumnInfo.GetRuntimeName().StartsWith("ANO") && !newCatalogueItem.Name.StartsWith("ANO"))
                        {
                            newCatalogueItem.Name = "ANO" + newCatalogueItem.Name;
                        }

                        newCatalogueItem.SaveToDatabase();

                        var oldExtractionInformation = oldCatalogueItem.ExtractionInformation;

                        //if the plan is to make the ColumnInfo extractable
                        if (columnPlan.ExtractionCategoryIfAny != null)
                        {
                            //Create a new ExtractionInformation for the new Catalogue
                            var newExtractionInformation = new ExtractionInformation(_catalogueRepository, newCatalogueItem, newColumnInfo, newColumnInfo.Name);

                            newExtractionInformation.ExtractionCategory = columnPlan.ExtractionCategoryIfAny.Value;
                            newExtractionInformation.SaveToDatabase();

                            //if it was previously extractable
                            if (oldExtractionInformation != null)
                            {
                                var refactorer = new SelectSQLRefactorer();

                                //restore the old SQL as it existed in the origin table
                                newExtractionInformation.SelectSQL = oldExtractionInformation.SelectSQL;

                                //do a refactor on the old column name for the new column name
                                refactorer.RefactorColumnName(newExtractionInformation, oldColumnInfo, newColumnInfo.Name, true);

                                //also refactor any other column names that might be referenced by the transform SQL e.g. it could be a combo column name where forename + surname is the value of the ExtractionInformation
                                foreach (var kvpOtherCols in _parenthoodDictionary.Where(kvp => kvp.Key is ColumnInfo))
                                {
                                    //if it's one we have already done, dont do it again
                                    if (Equals(kvpOtherCols.Value, newColumnInfo))
                                    {
                                        continue;
                                    }

                                    //otherwise do a non strict refactoring (don't worry if you don't finda ny references)
                                    refactorer.RefactorColumnName(newExtractionInformation, (ColumnInfo)kvpOtherCols.Key, ((ColumnInfo)(kvpOtherCols.Value)).Name, false);
                                }

                                //make the new one exactly as extractable
                                newExtractionInformation.Order = oldExtractionInformation.Order;
                                newExtractionInformation.Alias = oldExtractionInformation.Alias;
                                newExtractionInformation.IsExtractionIdentifier = oldExtractionInformation.IsExtractionIdentifier;
                                newExtractionInformation.HashOnDataRelease      = oldExtractionInformation.HashOnDataRelease;
                                newExtractionInformation.IsPrimaryKey           = oldExtractionInformation.IsPrimaryKey;
                                newExtractionInformation.SaveToDatabase();
                            }

                            AuditParenthood(oldCatalogueItem, newCatalogueItem);

                            if (oldExtractionInformation != null)
                            {
                                AuditParenthood(oldExtractionInformation, newExtractionInformation);
                            }
                        }
                    }

                    var existingJoinInfos        = _catalogueRepository.GetAllObjects <JoinInfo>();
                    var existingLookups          = _catalogueRepository.GetAllObjects <Lookup>();
                    var existingLookupComposites = _catalogueRepository.GetAllObjects <LookupCompositeJoinInfo>();

                    //migrate join infos
                    foreach (JoinInfo joinInfo in _planManager.GetJoinInfosRequiredCatalogue())
                    {
                        var newFk = GetNewColumnInfoForOld(joinInfo.ForeignKey);
                        var newPk = GetNewColumnInfoForOld(joinInfo.PrimaryKey);

                        //already exists
                        if (!existingJoinInfos.Any(ej => ej.ForeignKey_ID == newFk.ID && ej.PrimaryKey_ID == newPk.ID))
                        {
                            new JoinInfo(_catalogueRepository, newFk, newPk, joinInfo.ExtractionJoinType, joinInfo.Collation); //create it
                        }
                    }

                    //migrate Lookups
                    foreach (Lookup lookup in _planManager.GetLookupsRequiredCatalogue())
                    {
                        //Find the new columns in the ANO table that match the old lookup columns
                        var newDesc = GetNewColumnInfoForOld(lookup.Description);
                        var newFk   = GetNewColumnInfoForOld(lookup.ForeignKey);
                        var newPk   = GetNewColumnInfoForOld(lookup.PrimaryKey);

                        //see if we already have a Lookup declared for the NEW columns (unlikely)
                        Lookup newLookup = existingLookups.SingleOrDefault(l => l.Description_ID == newDesc.ID && l.ForeignKey_ID == newFk.ID);

                        //create new Lookup that mirrors the old but references the ANO columns instead
                        if (newLookup == null)
                        {
                            newLookup = new Lookup(_catalogueRepository, newDesc, newFk, newPk, lookup.ExtractionJoinType, lookup.Collation);
                        }

                        //also mirror any composite (secondary, tertiary join column pairs needed for the Lookup to operate correclty e.g. where TestCode 'HAB1' means 2 different things depending on healthboard)
                        foreach (LookupCompositeJoinInfo compositeJoin in lookup.GetSupplementalJoins().Cast <LookupCompositeJoinInfo>())
                        {
                            var newCompositeFk = GetNewColumnInfoForOld(compositeJoin.ForeignKey);
                            var newCompositePk = GetNewColumnInfoForOld(compositeJoin.PrimaryKey);

                            if (!existingLookupComposites.Any(c => c.ForeignKey_ID == newCompositeFk.ID && c.PrimaryKey_ID == newCompositePk.ID))
                            {
                                new LookupCompositeJoinInfo(_catalogueRepository, newLookup, newCompositeFk, newCompositePk, compositeJoin.Collation);
                            }
                        }
                    }

                    //create new data load confguration
                    LoadMetadata = new LoadMetadata(_catalogueRepository, "Anonymising " + NewCatalogue);
                    LoadMetadata.EnsureLoggingWorksFor(NewCatalogue);

                    NewCatalogue.LoadMetadata_ID = LoadMetadata.ID;
                    NewCatalogue.SaveToDatabase();

                    if (_planManager.DateColumn != null)
                    {
                        LoadProgressIfAny            = new LoadProgress(_catalogueRepository, LoadMetadata);
                        LoadProgressIfAny.OriginDate = _planManager.StartDate;
                        LoadProgressIfAny.SaveToDatabase();

                        //date column based migration only works for single TableInfo migrations (see Plan Manager checks)
                        var qb = SelectSQLForMigrations.Single(kvp => !kvp.Key.IsLookupTable()).Value;
                        qb.RootFilterContainer = new SpontaneouslyInventedFilterContainer(memoryRepo, null,
                                                                                          new[]
                        {
                            new SpontaneouslyInventedFilter(memoryRepo, null, _planManager.DateColumn + " >= @startDate", "After batch start date", "", null),
                            new SpontaneouslyInventedFilter(memoryRepo, null, _planManager.DateColumn + " <= @endDate", "Before batch end date", "", null),
                        }
                                                                                          , FilterContainerOperation.AND);
                    }
                    try
                    {
                        foreach (QueryBuilder qb in SelectSQLForMigrations.Values)
                        {
                            Console.WriteLine(qb.SQL);
                        }
                    }
                    catch (Exception e)
                    {
                        throw new Exception("Failed to generate migration SQL", e);
                    }

                    _catalogueRepository.EndTransactedConnection(true);
                }
                catch (Exception ex)
                {
                    _catalogueRepository.EndTransactedConnection(false);
                    throw new Exception("Failed to create ANO version, transaction rolled back succesfully", ex);
                }
            }
        }
示例#36
0
        static void Main(string[] args)
        {
            // Get the database (and create it if it doesn't exist)
            var database = new Database("mydb");
            // Create a new document (i.e. a record) in the database
            string id = null;

            using (var mutableDoc = new MutableDocument())
            {
                mutableDoc.SetFloat("version", 2.0f)
                .SetString("type", "SDK");

                // Save it to the database
                database.Save(mutableDoc);
                id = mutableDoc.Id;
            }

            // Update a document
            using (var doc = database.GetDocument(id))
                using (var mutableDoc = doc.ToMutable())
                {
                    mutableDoc.SetString("language", "python");
                    database.Save(mutableDoc);

                    using (var docAgain = database.GetDocument(id))
                    {
                        Console.WriteLine($"Document ID :: {docAgain.Id}");
                        Console.WriteLine($"Learning {docAgain.GetString("language")}");
                    }
                }

            // Create a query to fetch documents of type SDK
            // i.e. SELECT * FROM database WHERE type = "SDK"
            using (var query = QueryBuilder.Select(SelectResult.All())
                               .From(DataSource.Database(database))
                               .Where(Expression.Property("type").EqualTo(Expression.String("SDK"))))
            {
                // Run the query
                var result = query.Execute();
                Console.WriteLine($"Number of rows :: {result.Count()}");
            }


            using (var query = QueryBuilder.Select(
                       SelectResult.Expression(Meta.ID),
                       SelectResult.Property("language"))
                               .From(DataSource.Database(database)))
            {
                foreach (var result in query.Execute())
                {
                    Console.WriteLine($"Document Name :: {result.GetString("language")}");
                }
            }

            // Create replicator to push and pull changes to and from the cloud
            var targetEndpoint = new URLEndpoint(new Uri("ws://localhost:4984/getting-started-db"));
            var replConfig     = new ReplicatorConfiguration(database, targetEndpoint);

            // Add authentication
            replConfig.Authenticator = new BasicAuthenticator("john", "pass");

            // Create replicator (make sure to add an instance or static variable
            // named _Replicator)
            var _Replicator = new Replicator(replConfig);

            _Replicator.AddChangeListener((sender, args) =>
            {
                if (args.Status.Error != null)
                {
                    Console.WriteLine($"Error :: {args.Status.Error}");
                }
            });
            //Path.Combine(AppContext.BaseDirectory, "CouchbaseLite");
            _Replicator.Start();
        }
示例#37
0
        private void QueryResults()
        {
            if (!string.IsNullOrEmpty(QueryText))
            {
                var queryTimer = new System.Diagnostics.Stopwatch();
                queryTimer.Start();
                _updateSource?.Cancel();
                var currentUpdateSource = new CancellationTokenSource();
                _updateSource = currentUpdateSource;
                var currentCancellationToken = _updateSource.Token;
                _updateToken = currentCancellationToken;
                var queryText = QueryText.Trim();

                var pluginQueryPairs = QueryBuilder.Build(ref queryText, PluginManager.NonGlobalPlugins);
                if (pluginQueryPairs != null && pluginQueryPairs.Count > 0)
                {
                    _currentQuery = queryText;
                    Task.Run(
                        () =>
                    {
                        Thread.Sleep(20);

                        // Keep track of total number of results for telemetry
                        var numResults = 0;

                        // Contains all the plugins for which this raw query is valid
                        var plugins = pluginQueryPairs.Keys.ToList();

                        try
                        {
                            currentCancellationToken.ThrowIfCancellationRequested();

                            var resultPluginPair = new List <(List <Result>, PluginMetadata)>();

                            // To execute a query corresponding to each plugin
                            foreach (KeyValuePair <PluginPair, Query> pluginQueryItem in pluginQueryPairs)
                            {
                                var plugin = pluginQueryItem.Key;
                                var query  = pluginQueryItem.Value;

                                if (!plugin.Metadata.Disabled)
                                {
                                    var results = PluginManager.QueryForPlugin(plugin, query);
                                    resultPluginPair.Add((results, plugin.Metadata));
                                    currentCancellationToken.ThrowIfCancellationRequested();
                                }
                            }

                            lock (_addResultsLock)
                            {
                                // Using CurrentCultureIgnoreCase since this is user facing
                                if (queryText.Equals(_currentQuery, StringComparison.CurrentCultureIgnoreCase))
                                {
                                    Results.Clear();
                                    foreach (var p in resultPluginPair)
                                    {
                                        UpdateResultView(p.Item1, queryText, currentCancellationToken);
                                        currentCancellationToken.ThrowIfCancellationRequested();
                                    }

                                    currentCancellationToken.ThrowIfCancellationRequested();
                                    numResults = Results.Results.Count;
                                    Results.Sort();
                                    Results.SelectedItem = Results.Results.FirstOrDefault();
                                }
                            }

                            currentCancellationToken.ThrowIfCancellationRequested();

                            UpdateResultsListViewAfterQuery(queryText);

                            // Run the slower query of the DelayedExecution plugins
                            currentCancellationToken.ThrowIfCancellationRequested();
                            Parallel.ForEach(plugins, (plugin) =>
                            {
                                try
                                {
                                    if (!plugin.Metadata.Disabled)
                                    {
                                        Query query;
                                        pluginQueryPairs.TryGetValue(plugin, out query);

                                        var results = PluginManager.QueryForPlugin(plugin, query, true);
                                        currentCancellationToken.ThrowIfCancellationRequested();
                                        if ((results?.Count ?? 0) != 0)
                                        {
                                            lock (_addResultsLock)
                                            {
                                                // Using CurrentCultureIgnoreCase since this is user facing
                                                if (queryText.Equals(_currentQuery, StringComparison.CurrentCultureIgnoreCase))
                                                {
                                                    currentCancellationToken.ThrowIfCancellationRequested();

                                                    // Remove the original results from the plugin
                                                    Results.Results.RemoveAll(r => r.Result.PluginID == plugin.Metadata.ID);
                                                    currentCancellationToken.ThrowIfCancellationRequested();

                                                    // Add the new results from the plugin
                                                    UpdateResultView(results, queryText, currentCancellationToken);

                                                    currentCancellationToken.ThrowIfCancellationRequested();
                                                    numResults = Results.Results.Count;
                                                    Results.Sort();
                                                    Results.SelectedItem = Results.Results.FirstOrDefault();
                                                }
                                            }

                                            currentCancellationToken.ThrowIfCancellationRequested();
                                            UpdateResultsListViewAfterQuery(queryText, true);
                                        }
                                    }
                                }
                                catch (OperationCanceledException)
                                {
                                    // nothing to do here
                                }
                            });
                        }
                        catch (OperationCanceledException)
                        {
                            // nothing to do here
                        }

                        queryTimer.Stop();
                        var queryEvent = new LauncherQueryEvent()
                        {
                            QueryTimeMs = queryTimer.ElapsedMilliseconds,
                            NumResults  = numResults,
                            QueryLength = queryText.Length,
                        };
                        PowerToysTelemetry.Log.WriteEvent(queryEvent);
                    }, currentCancellationToken);
                }
            }
            else
            {
                _updateSource?.Cancel();
                _currentQuery        = _emptyQuery;
                Results.SelectedItem = null;
                Results.Visibility   = Visibility.Hidden;
                Task.Run(() =>
                {
                    lock (_addResultsLock)
                    {
                        Results.Clear();
                    }
                });
            }
        }
示例#38
0
 public async Task <IList <Post> > ListStickyPosts(QueryBuilder builder)
 {
     // default values
     // int page = 1, int per_page = 10, int offset = 0, Post.OrderBy orderby = Post.OrderBy.date
     return(await GetRequest <Post[]>(builder.SetRootUrl($"{defaultPath}posts?sticky=true").ToString(), false).ConfigureAwait(false));
 }
示例#39
0
 public async Task <IList <Post> > ListPostsBySearch(string searchTerm, QueryBuilder builder)
 {
     // default values
     // int page = 1, int per_page = 10, int offset = 0, Post.OrderBy orderby = Post.OrderBy.date
     return(await GetRequest <Post[]>(builder.SetRootUrl($"{defaultPath}posts?search={searchTerm}").ToString(), false).ConfigureAwait(false));
 }
示例#40
0
 public async Task <IList <Post> > ListPostsByCategory(int categoryId, QueryBuilder builder)
 {
     // default values
     // int page = 1, int per_page = 10, int offset = 0, Post.OrderBy orderby = Post.OrderBy.date
     return(await GetRequest <Post[]>(builder.SetRootUrl($"{defaultPath}posts?categories={categoryId}").ToString(), false).ConfigureAwait(false));
 }
示例#41
0
        public void Can_parse_LessThan_on_date()
        {
            var query = QueryBuilder.BuildQuery("Birthday:{NULL TO 20100515000000000}", new RavenPerFieldAnalyzerWrapper(new StandardAnalyzer(Version.LUCENE_29)));

            Assert.Equal("Birthday:{* TO 20100515000000000}", query.ToString());
        }
示例#42
0
        public void Can_parse_disjunctions_within_conjunction_query_with_date_range()
        {
            var query = QueryBuilder.BuildQuery("(Name:\"Simple Phrase\" OR Name:SingleTerm) AND (Age_Range:3 OR Birthday:[NULL TO 20100515000000000])", new RavenPerFieldAnalyzerWrapper(new StandardAnalyzer(Version.LUCENE_29)));

            Assert.Equal("+(Name:\"simple phrase\" Name:singleterm) +(Age_Range:3 Birthday:[* TO 20100515000000000])", query.ToString());
        }
示例#43
0
        public void Can_parse_disjunctions_within_conjunction_query_with_escaped_field()
        {
            var query = QueryBuilder.BuildQuery("(Name:\"Escaped\\+\\-\\&\\|\\!\\(\\)\\{\\}\\[\\]\\^\\\"\\~\\*\\?\\:\\\\Phrase\" OR Name:SingleTerm) AND (Age_Range:3 OR Birthday:20100515000000000)", new RavenPerFieldAnalyzerWrapper(new StandardAnalyzer(Version.LUCENE_29)));

            Assert.Equal("+(Name:\"escaped phrase\" Name:singleterm) +(Age_Range:3 Birthday:20100515000000000)", query.ToString());
        }
示例#44
0
        public void Monitor_Should_Not_Leak_Connections_Test()
        {
            var presetQueryCassandraObjects = QueryBuilder.GetObjects(where => where.Namespace.Like("Cassandra*")
                                                                      & where.Namespace.NotLike("Cassandra*Tests"));
            var memoryBeforeAll = dotMemory.Check(memory =>
            {
                TestContext.WriteLine("Before cluster creation");
                var cassandraPackage = memory.GetObjects(presetQueryCassandraObjects);
                var socketObjects    = memory.GetObjects(where => where.Type.Is <Socket>());
                TestContext.WriteLine("=== Cassandra driver Object count: " + cassandraPackage.ObjectsCount);
                TestContext.WriteLine("=== Number of Socket objects: " + socketObjects.ObjectsCount);
            });

            var socketOptions = new SocketOptions().SetReadTimeoutMillis(1).SetConnectTimeoutMillis(1);
            var builder       = Cluster.Builder()
                                .AddContactPoint(TestHelper.UnreachableHostAddress)
                                .WithSocketOptions(socketOptions);

            const int length = 1000;

            using (var cluster = builder.Build())
            {
                var firstExcepetion = Assert.Throws <NoHostAvailableException>(() => cluster.Connect());
                Assert.AreEqual(1, firstExcepetion.Errors.Count);
                TestContext.WriteLine("After first attempt");
                var memoryBeforeAttempts = dotMemory.Check(memory =>
                {
                    var cassandraPackage = memory.GetObjects(presetQueryCassandraObjects);
                    var socketObjects    = memory.GetObjects(where => where.Type.Is <Socket>());
                    TestContext.WriteLine("=== Cassandra driver Object count: " + cassandraPackage.ObjectsCount);
                    TestContext.WriteLine("=== Number of Socket objects: " + socketObjects.ObjectsCount);
                });

                for (var i = 0; i < length; i++)
                {
                    var ex = Assert.Throws <NoHostAvailableException>(() => cluster.Connect());
                    Assert.AreEqual(1, ex.Errors.Count);
                }
                GC.Collect();
                dotMemory.Check(memory =>
                {
                    TestContext.WriteLine("After " + length + " more attempts");
                    var cassandraPackage = memory.GetObjects(presetQueryCassandraObjects);
                    var socketObjects    = memory.GetObjects(where => where.Type.Is <Socket>());
                    TestContext.WriteLine("=== Cassandra driver Object count: " + cassandraPackage.ObjectsCount);
                    TestContext.WriteLine("=== Number of Socket objects: " + socketObjects.ObjectsCount);
                    var leaked = memory.GetDifference(memoryBeforeAttempts)
                                 .GetSurvivedObjects(o => o.LeakedOnEventHandler())
                                 .GetObjects(presetQueryCassandraObjects).ObjectsCount;
                    TestContext.WriteLine("=== Difference: Leaked: " + leaked);
                    Assert.That(leaked, Is.EqualTo(0));

                    var newObjects = memory.GetDifference(memoryBeforeAttempts)
                                     .GetNewObjects().GetObjects(presetQueryCassandraObjects).ObjectsCount;
                    TestContext.WriteLine("=== Difference: New Objects: " + newObjects);
                    Assert.That(newObjects, Is.LessThanOrEqualTo(1), "Increased the amount of new objects");

                    Assert.That(memory.GetDifference(memoryBeforeAll)
                                .GetNewObjects(o => o.Type.Is <Socket>()).ObjectsCount, Is.LessThanOrEqualTo(1),
                                "Should have clean all socket objects");
                });
            }
            GC.Collect();
            dotMemory.Check(memory =>
            {
                TestContext.WriteLine("After cluster disposal");
                var cassandraPackage = memory.GetObjects(presetQueryCassandraObjects);
                var socketObjects    = memory.GetObjects(where => where.Type.Is <Socket>());
                TestContext.WriteLine("=== Cassandra driver Object count: " + cassandraPackage.ObjectsCount);
                TestContext.WriteLine("=== Number of Socket objects: " + socketObjects.ObjectsCount);

                var leaked = memory.GetDifference(memoryBeforeAll)
                             .GetNewObjects(o => o.LeakedOnEventHandler())
                             .GetObjects(presetQueryCassandraObjects).ObjectsCount;

                TestContext.WriteLine("=== Difference: Leaked: " + leaked);
                Assert.That(leaked, Is.EqualTo(0));
                var newObjects = memory.GetDifference(memoryBeforeAll)
                                 .GetNewObjects().GetObjects(presetQueryCassandraObjects).ObjectsCount;
                TestContext.WriteLine("=== Difference: New Objects: " + newObjects);
                //Assert.That(newObjects, Is.EqualTo(0), "Should have clean all created objects");
                Assert.That(memory.GetDifference(memoryBeforeAll)
                            .GetSurvivedObjects(o => o.Type.Is <Socket>()).ObjectsCount, Is.LessThanOrEqualTo(4), "");
            });
        }
 public CategoryRepository(QueryBuilder queryBuilder) : base(queryBuilder)
 {
 }
示例#46
0
 public TableNameResolver(ISQLTemplate template, QueryBuilder queryBuilder)
 {
     SqlTemplate = template;
     Builder     = queryBuilder;
 }
示例#47
0
        public JsonResult GetList(QueryBuilder qb)
        {
            var data = entities.Set <T_Employee>().Where(c => c.IsDeleted == "0" && c.EmploymentWay == "外聘员工").WhereToGridData(qb);

            return(Json(data));
        }
示例#48
0
        public void Can_parse_conjunctions_within_disjunction_query_with_int_range()
        {
            var query = QueryBuilder.BuildQuery("(Name:\"Simple Phrase\" AND Name:SingleTerm) OR (Age_Range:{0x00000003 TO NULL} AND Birthday:20100515000000000)", new RavenPerFieldAnalyzerWrapper(new StandardAnalyzer(Version.LUCENE_29)));

            Assert.Equal("(+Name:\"simple phrase\" +Name:singleterm) (+Age_Range:{3 TO 2147483647} +Birthday:20100515000000000)", query.ToString());
        }
示例#49
0
        /// <summary>
        /// Create a URI
        /// </summary>
        /// <param name="baseUri">Base URI</param>
        /// <param name="relativeUri">Relative URI</param>
        /// <param name="queryParameters">Collection of query parameters</param>
        /// <returns></returns>
        public static string Create(string baseUri, string relativeUri, ICollection <KeyValuePair <string, string> > queryParameters)
        {
            var queryBuilder = new QueryBuilder(queryParameters);

            return(Create(baseUri, relativeUri, queryBuilder.ToQueryString().Value));
        }
示例#50
0
        /// <summary>
        /// Creates a SQL Statement for merge-all operation.
        /// </summary>
        /// <param name="queryBuilder">The query builder to be used.</param>
        /// <param name="tableName">The name of the target table.</param>
        /// <param name="fields">The list of fields to be merged.</param>
        /// <param name="qualifiers">The list of the qualifier <see cref="Field"/> objects.</param>
        /// <param name="batchSize">The batch size of the operation.</param>
        /// <param name="primaryField">The primary field from the database.</param>
        /// <param name="identityField">The identity field from the database.</param>
        /// <param name="hints">The table hints to be used.</param>
        /// <returns>A sql statement for merge operation.</returns>
        public override string CreateMergeAll(QueryBuilder queryBuilder,
                                              string tableName,
                                              IEnumerable <Field> fields,
                                              IEnumerable <Field> qualifiers,
                                              int batchSize         = 10,
                                              DbField primaryField  = null,
                                              DbField identityField = null,
                                              string hints          = null)
        {
            // Ensure with guards
            GuardTableName(tableName);
            GuardHints(hints);
            GuardPrimary(primaryField);
            GuardIdentity(identityField);

            // Verify the fields
            if (fields?.Any() != true)
            {
                throw new NullReferenceException($"The list of fields cannot be null or empty.");
            }

            // Check the primary field
            if (primaryField == null)
            {
                throw new PrimaryFieldNotFoundException($"MySql is using the primary key as qualifier for merge operation.");
            }

            // Check the qualifiers
            if (qualifiers?.Any() == true)
            {
                var others = qualifiers.Where(f => !string.Equals(f.Name, primaryField.Name, StringComparison.OrdinalIgnoreCase));
                if (others.Any() == true)
                {
                    throw new InvalidQualifiersException($"MySql is using the primary key as qualifier for merge operation. " +
                                                         $"Consider creating 'PrimaryKey' in the {tableName} and set the 'qualifiers' to NULL.");
                }
            }

            // Initialize the builder
            var builder = queryBuilder ?? new QueryBuilder();

            // Set the return value
            var result = (string)null;

            // Clear the builder
            builder.Clear();

            // Iterate the indexes
            for (var index = 0; index < batchSize; index++)
            {
                // Build the query
                builder
                .Insert()
                .Into()
                .TableNameFrom(tableName, DbSetting)
                .OpenParen()
                .FieldsFrom(fields, DbSetting)
                .CloseParen()
                .Values()
                .OpenParen()
                .ParametersFrom(fields, index, DbSetting)
                .CloseParen()
                .WriteText("ON DUPLICATE KEY")
                .Update()
                .FieldsAndParametersFrom(fields, index, DbSetting)
                .End();

                // Check both primary and identity
                if (identityField != null && !string.Equals(identityField.Name, primaryField.Name, StringComparison.OrdinalIgnoreCase))
                {
                    result = $"(CASE WHEN {identityField.Name.AsParameter(index, DbSetting)} > 0 THEN " +
                             $"{identityField.Name.AsParameter(index, DbSetting)} ELSE " +
                             $"{primaryField.Name.AsParameter(index, DbSetting)} END)";
                }
                else
                {
                    result = $"COALESCE({primaryField.Name.AsParameter(index, DbSetting)}, LAST_INSERT_ID())";
                }

                if (!string.IsNullOrEmpty(result))
                {
                    // Set the result
                    builder
                    .Select()
                    .WriteText(string.Concat(result, " AS ", "Id".AsQuoted(DbSetting), ","))
                    .WriteText(string.Concat($"{DbSetting.ParameterPrefix}__RepoDb_OrderColumn_{index}", " AS ", "OrderColumn".AsQuoted(DbSetting)));
                }

                // End the builder
                builder
                .End();
            }

            // Return the query
            return(builder.GetString());
        }
示例#51
0
        public void E04_EstService_GetExportData_Exists_in_BAMService_UpdateDeployedToUser()
        {
            var updateAssetStatus = EST_HWAssetStatus.Deployed;

            var estService   = new EST_Service();
            var queryBuilder = new QueryBuilder
            {
                StartDateString = "01/01/2017",
                EndDateString   = "30/01/2017",
                PageCount       = 100
            };

            // Get Records from Esteem System
            var dataExport           = estService.GetExportData(queryBuilder);
            var originalModifiedDate = new DateTime();
            var updatedModifiedDate  = new DateTime();

            Assert.IsNotNull(dataExport, "DataExport model returned null");
            Assert.IsNotNull(dataExport.DeployedToBAMUserList, "DeployedToBAMUserList model returned null");
            Assert.IsTrue(dataExport.DeployedToBAMUserList.Any(), "DeployedToBAMUserList didn't return any items");

            var rand = new Random();
            // Select a Random record
            var assetList = dataExport.DeployedToBAMUserList;
            var asset     = assetList[rand.Next(assetList.Count)];

            // Get respective record from BAM Api
            var hardwareAssetService = new BAM_HardwareAssetServices();
            var bamAssetList         = hardwareAssetService.GetHardwareAsset_Full(asset.SerialNumber);

            Assert.IsNotNull(bamAssetList, "BAM Asset is null");
            Assert.IsTrue(bamAssetList.Count == 1, "Get BAM Asset didn't return 1 item " + bamAssetList.Count.ToString());
            var bamAsset = bamAssetList.First();


            Assert.IsTrue(bamAsset.SerialNumber.Contains(asset.SerialNumber), "BAM and Esteem Asset Serial Numbers do not match");

            // Set the BAM record to new AssetStatus
            var newHardwareAsset = hardwareAssetService.SetHardwareAssetStatus(bamAsset, updateAssetStatus);

            // Get respective User record from BAM Api
            IBAM_UserService userService = new BAM_UserService();
            var user = userService.GetUser(asset.RequestUser);

            Assert.IsNotNull(user, "User item is null");
            Assert.IsTrue(user.Name.Contains(asset.RequestUser), "user record is not the same");

            newHardwareAsset = hardwareAssetService.SetUser(newHardwareAsset, user);

            // Update BAM record on BAM Api
            var hardwareAssetList = hardwareAssetService.UpdateTemplate(newHardwareAsset, bamAsset);

            Assert.IsNotNull(hardwareAssetList, "Return list is null");
            Assert.IsTrue(hardwareAssetList.Count > 1, "Return list doesn't include 2 records");

            // Get the newly updated BAM record
            var updatedHardwareAsset = hardwareAssetService.GetHardwareAsset_Full(asset.SerialNumber).FirstOrDefault();

            Assert.IsNotNull(updatedHardwareAsset, "Updated Asset is null");
            Assert.IsTrue(updatedHardwareAsset.SerialNumber == asset.SerialNumber, "SerialNumbers don't match");

            updatedModifiedDate = (DateTime)updatedHardwareAsset.LastModified;

            // Check Updates worked successfully
            Assert.IsTrue(updatedModifiedDate != originalModifiedDate, "Original and Updated LastModified Date are the same");
            Assert.IsTrue(updatedModifiedDate > originalModifiedDate, "Updated LastModified Date is not greater that the Original");
            Assert.IsTrue(hardwareAssetList[0].HardwareAssetStatus.Name == updateAssetStatus.ToBAMString(), "Updated Asset status doesn't equal BAM AssetStatus Enum");

            Assert.IsNotNull(updatedHardwareAsset.Target_HardwareAssetHasPrimaryUser, "User record is null");
            Assert.IsTrue(updatedHardwareAsset.Target_HardwareAssetHasPrimaryUser.DisplayName.Contains(asset.RequestUser), "Updated User is not the same :" + updatedHardwareAsset.Target_HardwareAssetHasPrimaryUser.DisplayName + " " + asset.RequestUser);
        }
示例#52
0
 public Business.Models.drugsUnqualificationQuery getDrugsUnqualificationQueryByFlowID(Guid flowID)
 {
     try
     {
         var queryBuilder = QueryBuilder.Create <DrugsUnqualication>().Equals(p => p.flowID, flowID)
                            .Equals(p => p.Deleted, false);
         var all = BusinessHandlerFactory.RepositoryProvider.Db.DrugsUnqualications.Where(queryBuilder.Expression);
         if (all.Where(r => r.DrugInventoryRecordID.Equals(Guid.Empty)).Count() <= 0)
         {
             var c = from i in all
                     join u in RepositoryProvider.Db.Users.Include(r => r.Employee) on i.createUID equals u.Id
                     join d in RepositoryProvider.Db.DrugInventoryRecords on i.DrugInventoryRecordID equals d.Id
                     into left
                     from l in left.DefaultIfEmpty()
                     join wz in RepositoryProvider.Db.WarehouseZones on l.WarehouseZoneId equals wz.Id
                     join w in RepositoryProvider.Db.Warehouses on wz.WarehouseId equals w.Id
                     join pid in RepositoryProvider.Db.PurchaseInInventeryOrderDetails on l.PurchaseInInventeryOrderDetailId equals pid.Id into left2
                     from ll in left2.DefaultIfEmpty()
                     select new Business.Models.drugsUnqualificationQuery
             {
                 batchNo               = i.batchNo,
                 Origin                = i.Origin,
                 creater               = u.Employee.Name,
                 createTime            = i.createTime,
                 CurrentInventoryCount = l == null ? 0m : l.CanSaleNum,
                 Description           = i.Description,
                 Dosage                = i.DosageType,
                 drugName              = i.drugName,
                 FactoryName           = i.factoryName,
                 id                          = i.Id,
                 flowID                      = i.flowID,
                 InInventoryDate             = ll == null ? DateTime.Now : ll.ArrivalDateTime,
                 InventoryDate               = 0,
                 OutValidDate                = i.ExpireDate,
                 PurchaseOrderDocumentNumber = i.PurchaseOrderDocumentNumber,
                 quantity                    = i.quantity,
                 Specific                    = i.Specific,
                 SupplyUnitName              = i.Supplyer,
                 updateTime                  = i.updateTime,
                 Warehouse                   = l == null ? "暂未入库" : w.Name,
                 WarehouseZone               = l == null ? "暂未入库" : wz.Name,
                 productDate                 = i.produceDate,
                 Source                      = i.source
             };
             return(c.FirstOrDefault());
         }
         else
         {
             var c = from i in all
                     join u in RepositoryProvider.Db.Users.Include(r => r.Employee) on i.createUID equals u.Id
                     select new Business.Models.drugsUnqualificationQuery
             {
                 batchNo               = i.batchNo,
                 Origin                = i.Origin,
                 creater               = u.Employee.Name,
                 createTime            = i.createTime,
                 CurrentInventoryCount = 0,
                 Description           = i.Description,
                 Dosage                = i.DosageType,
                 drugName              = i.drugName,
                 FactoryName           = i.factoryName,
                 id                          = i.Id,
                 flowID                      = i.flowID,
                 InInventoryDate             = DateTime.Now,
                 InventoryDate               = 0,
                 OutValidDate                = i.ExpireDate,
                 PurchaseOrderDocumentNumber = i.PurchaseOrderDocumentNumber,
                 quantity                    = i.quantity,
                 Specific                    = i.Specific,
                 SupplyUnitName              = i.Supplyer,
                 updateTime                  = i.updateTime,
                 Warehouse                   = "验收产生,暂未入库",
                 WarehouseZone               = "验收产生,暂未入库",
                 productDate                 = i.produceDate,
                 Source                      = i.source
             };
             return(c.FirstOrDefault());
         }
     }
     catch (Exception ex)
     {
         return(null);
     }
 }
示例#53
0
        public virtual bool Delete(Expression <Func <T, bool> > predicate = null)
        {
            var session = GetSession();

            return(_dapperImplementor.Delete <T>(session, QueryBuilder <T> .FromExpression(predicate), session.Transaction, null));
        }
示例#54
0
        public void SeGerarScriptQueVerificaExistenciaSemDicionarioDeveGerarScriptCorretamente()
        {
            var builder = new QueryBuilder();

            builder.DefinirTabela("Tabela");

            builder.GerarScriptExistencia(null)
            .Should()
            .Be("select top 1 1 from[Tabela]");

            builder.DefinirLimite(15);

            builder.GerarScriptExistencia(null)
            .Should()
            .Be("select top 1 1 from[Tabela]");

            builder.DefinirLimite(20);
            builder.AdicionarRelacionamento("inner join Relacionamento on Tabela.campo = Relacionamento.campo");
            builder.AdicionarRelacionamento("left join Parente on Tabela.Relacao = Parente.Relacao");

            builder.GerarScriptExistencia(null)
            .Should()
            .Be("select top 1 1 from[Tabela]" +
                "inner join Relacionamento on Tabela.campo = Relacionamento.campo " +
                "left join Parente on Tabela.Relacao = Parente.Relacao ");

            builder.DefinirLimite(25);
            builder.AdicionarCondicao("campoA", (int)Operadores.Igual, 1);
            builder.AdicionarCondicao("campoB", (int)Operadores.Igual, 2);

            builder.GerarScriptExistencia(null)
            .Should()
            .Be("select top 1 1 from[Tabela]" +
                "inner join Relacionamento on Tabela.campo = Relacionamento.campo " +
                "left join Parente on Tabela.Relacao = Parente.Relacao " +
                "where([campoA]=@_p0)and([campoB]=@_p1) ");

            builder.DefinirLimite(30);
            builder.AdicionarAgrupamento("Tabela.CampoX");
            builder.AdicionarAgrupamento("Tabela.CampoY");
            builder.AdicionarAgrupamento("Tabela.CampoZ");

            builder.GerarScriptExistencia(null)
            .Should()
            .Be("select top 1 1 from[Tabela]" +
                "inner join Relacionamento on Tabela.campo = Relacionamento.campo " +
                "left join Parente on Tabela.Relacao = Parente.Relacao " +
                "where([campoA]=@_p0)and([campoB]=@_p1) " +
                "group by Tabela.CampoX,Tabela.CampoY,Tabela.CampoZ ");

            builder.DefinirLimite(35);
            builder.AdicionarCondicaoAgrupamento("Count(*)>0");
            builder.AdicionarCondicaoAgrupamento("Max(Tabela.Quantidade)>1000");

            builder.GerarScriptExistencia(null)
            .Should()
            .Be("select top 1 1 from[Tabela]" +
                "inner join Relacionamento on Tabela.campo = Relacionamento.campo " +
                "left join Parente on Tabela.Relacao = Parente.Relacao " +
                "where([campoA]=@_p0)and([campoB]=@_p1) " +
                "group by Tabela.CampoX,Tabela.CampoY,Tabela.CampoZ " +
                "having(Count(*)>0)and(Max(Tabela.Quantidade)>1000) ");

            builder.AdicionarOrdemDescendente("Tabela.OrdemB");
            builder.AdicionarOrdem("Tabela.OrdemA");

            builder.GerarScriptExistencia(null)
            .Should()
            .Be("select top 1 1 from[Tabela]" +
                "inner join Relacionamento on Tabela.campo = Relacionamento.campo " +
                "left join Parente on Tabela.Relacao = Parente.Relacao " +
                "where([campoA]=@_p0)and([campoB]=@_p1) " +
                "group by Tabela.CampoX,Tabela.CampoY,Tabela.CampoZ " +
                "having(Count(*)>0)and(Max(Tabela.Quantidade)>1000) " +
                "order by Tabela.OrdemB DESC,Tabela.OrdemA ");
        }
示例#55
0
        protected override SortBuilder <Blacklist> GetPagedQuery(QueryBuilder <Blacklist> query, PagingSpec <Blacklist> pagingSpec)
        {
            var baseQuery = query.Join <Blacklist, Movie>(JoinType.Inner, h => h.Movie, (h, s) => h.MovieId == s.Id);

            return(base.GetPagedQuery(baseQuery, pagingSpec));
        }
示例#56
0
        private void QueryResults()
        {
            if (!string.IsNullOrEmpty(QueryText))
            {
                var queryTimer = new System.Diagnostics.Stopwatch();
                queryTimer.Start();
                _updateSource?.Cancel();
                var currentUpdateSource = new CancellationTokenSource();
                _updateSource = currentUpdateSource;
                var currentCancellationToken = _updateSource.Token;
                _updateToken = currentCancellationToken;

                var query = QueryBuilder.Build(QueryText.Trim(), PluginManager.NonGlobalPlugins);
                if (query != null)
                {
                    _lastQuery = query;
                    Task.Run(() =>
                    {
                        Thread.Sleep(20);
                        var plugins = PluginManager.ValidPluginsForQuery(query);

                        try
                        {
                            currentCancellationToken.ThrowIfCancellationRequested();

                            var resultPluginPair = new List <(List <Result>, PluginMetadata)>();
                            foreach (PluginPair plugin in plugins)
                            {
                                if (!plugin.Metadata.Disabled)
                                {
                                    var results = PluginManager.QueryForPlugin(plugin, query);
                                    resultPluginPair.Add((results, plugin.Metadata));
                                    currentCancellationToken.ThrowIfCancellationRequested();
                                }
                            }

                            lock (_addResultsLock)
                            {
                                RemoveOldQueryResults(query);
                                foreach (var p in resultPluginPair)
                                {
                                    UpdateResultView(p.Item1, p.Item2, query, currentCancellationToken);
                                    currentCancellationToken.ThrowIfCancellationRequested();
                                }

                                currentCancellationToken.ThrowIfCancellationRequested();
                                Results.Results.Sort();
                            }

                            currentCancellationToken.ThrowIfCancellationRequested();
                            Application.Current.Dispatcher.BeginInvoke(new Action(() =>
                            {
                                if (query.RawQuery == _lastQuery.RawQuery)
                                {
                                    Results.Results.NotifyChanges();
                                }

                                if (Results.Results.Count > 0)
                                {
                                    Results.Visibility    = Visibility.Visible;
                                    Results.SelectedIndex = 0;
                                }
                                else
                                {
                                    Results.Visibility = Visibility.Hidden;
                                }
                            }));
                        }
                        catch (OperationCanceledException)
                        {
                            // nothing to do here
                        }

                        queryTimer.Stop();
                        var queryEvent = new LauncherQueryEvent()
                        {
                            QueryTimeMs = queryTimer.ElapsedMilliseconds,
                            NumResults  = Results.Results.Count,
                            QueryLength = query.RawQuery.Length
                        };
                        PowerToysTelemetry.Log.WriteEvent(queryEvent);
                    }, currentCancellationToken);
                }
            }
            else
            {
                _updateSource?.Cancel();
                _lastQuery           = _emptyQuery;
                Results.SelectedItem = null;
                Results.Visibility   = Visibility.Hidden;
                Results.Clear();
            }
        }
示例#57
0
        private void QueryResults()
        {
            if (!string.IsNullOrEmpty(QueryText))
            {
                var queryTimer = new System.Diagnostics.Stopwatch();
                queryTimer.Start();
                _updateSource?.Cancel();
                var currentUpdateSource = new CancellationTokenSource();
                _updateSource = currentUpdateSource;
                var currentCancellationToken = _updateSource.Token;
                _updateToken = currentCancellationToken;

                ProgressBarVisibility = Visibility.Hidden;
                _isQueryRunning       = true;
                var query = QueryBuilder.Build(QueryText.Trim(), PluginManager.NonGlobalPlugins);
                if (query != null)
                {
                    // handle the exclusiveness of plugin using action keyword
                    RemoveOldQueryResults(query);

                    _lastQuery = query;
                    var plugins = PluginManager.ValidPluginsForQuery(query);

                    Task.Run(() =>
                    {
                        // so looping will stop once it was cancelled
                        var parallelOptions = new ParallelOptions {
                            CancellationToken = currentCancellationToken
                        };
                        try
                        {
                            Parallel.ForEach(plugins, parallelOptions, plugin =>
                            {
                                if (!plugin.Metadata.Disabled)
                                {
                                    var results = PluginManager.QueryForPlugin(plugin, query);
                                    if (Application.Current.Dispatcher.CheckAccess())
                                    {
                                        UpdateResultView(results, plugin.Metadata, query);
                                    }
                                    else
                                    {
                                        Application.Current.Dispatcher.BeginInvoke(new Action(() =>
                                        {
                                            UpdateResultView(results, plugin.Metadata, query);
                                        }));
                                    }
                                }
                            });
                        }
                        catch (OperationCanceledException)
                        {
                            // nothing to do here
                        }


                        // this should happen once after all queries are done so progress bar should continue
                        // until the end of all querying
                        _isQueryRunning = false;
                        if (currentUpdateSource == _updateSource)
                        { // update to hidden if this is still the current query
                            ProgressBarVisibility = Visibility.Hidden;
                        }

                        queryTimer.Stop();
                        var queryEvent = new LauncherQueryEvent()
                        {
                            QueryTimeMs = queryTimer.ElapsedMilliseconds,
                            NumResults  = Results.Results.Count,
                            QueryLength = query.RawQuery.Length
                        };
                        PowerToysTelemetry.Log.WriteEvent(queryEvent);
                    }, currentCancellationToken);
                }
            }
            else
            {
                Results.SelectedItem = null;
                Results.Clear();
                Results.Visibility = Visibility.Collapsed;
            }
        }
示例#58
0
 public GroupByQueryable1(IDbSet db, QueryBody queryBody, QueryBuilder queryBuilder, Expression expression) : base(db, queryBody, queryBuilder, expression)
 {
 }
        public Player GetPlayerByNickName(string nickName)
        {
            var query = new QueryBuilder <Player>();

            return(_mongoRepository.GetRepository <Player>().Collection.Find(query.EQ(x => x.NickName, nickName)).FirstOrDefault());
        }
示例#60
0
 public new IQueryProvider <T> From(QueryBuilder <T> builder)
 {
     return((IQueryProvider <T>)base.From(builder));
 }