public static GroupPermission GetByName(string name, PermissionType type) { using (var query = new QQuery(DBTable)) { query.BuildParam(ObjectNameKey, name); query.BuildParam(TypeKey, type); return(DBTable.Select(query).FirstOrDefault()); } }
public void RefreshLogs() { QQuery query = new QQuery(string.Empty, (DBTable)Row.Table.LogTable); query.BuildParam(Row.Table.LogTable.BaseKey, CompareType.Equal, row.PrimaryId); query.BuildParam(Row.Table.LogTable.StatusKey, CompareType.Equal, (int)DBStatus.New); Logs.AddRange(Row.Table.LogTable.LoadItems(query, DBLoadParam.Load | DBLoadParam.Synchronize).Cast <DBLogItem>()); RefreshChanges(); }
public ActionResult <IEnumerable <L> > GetItemLogs([FromRoute] K id) { try { var logTable = table.LogTable; var user = CurrentUser; if (!table.Access.GetFlag(AccessType.Read, user)) { return(Forbid()); } using (var query = new QQuery((DBTable)logTable)) { query.BuildParam(logTable.BaseKey, id); return(new ActionResult <IEnumerable <L> >(logTable.LoadItems(query, DBLoadParam.None) .Where(p => p.Access.GetFlag(AccessType.Read, user) && p.PrimaryId != null && (p.UpdateState & DBUpdateState.Insert) == 0) .TypeOf <L>())); }; } catch (Exception ex) { return(BadRequest(ex, null)); } }
public override async Task <bool> SaveItem(DBItem item, DBTransaction transaction) { if ((item.UpdateState & DBUpdateState.Delete) == DBUpdateState.Delete && item is DBLogItem logItem && FileLOBKey is DBLogColumn logColumn) { var lob = item.GetValue <uint?>(logColumn); var current = logItem.BaseItem?.GetValue <uint?>(logColumn.BaseColumn); if (lob != null && lob != current) { var qquery = new QQuery(this); qquery.BuildParam(FileLOBKey, lob); if (!Load(qquery).Any(p => p != item)) { try { using (var transactionDeleteLOB = new DBTransaction(transaction.DbConnection, transaction.Caller)) { await System.DeleteLOB(lob.Value, transactionDeleteLOB); transactionDeleteLOB.Commit(); } } catch (Exception ex) { Helper.OnException(ex); } } } } return(await base.SaveItem(item, transaction)); }
private void LoadTable(DBTable table) { rows.Clear(); wait.Reset(); string filter = table.GetStatusParam(DBStatus.New | DBStatus.Edit | DBStatus.Delete).Format(); if (!wait.WaitOne(0)) { foreach (DBItem row in table.LoadItems("where " + filter)) { if (wait.WaitOne(0)) { break; } if (rows.Find("Row", CompareType.Equal, row) == null) { try { rows.Add(new LogMap(row)); } catch { } } } } using (QQuery qdelete = new QQuery("", (DBTable)table.LogTable)) { qdelete.BuildParam(table.LogTable.ElementTypeKey, CompareType.Equal, DBLogType.Delete); qdelete.BuildParam(table.LogTable.StatusKey, CompareType.Equal, DBStatus.New); foreach (DBLogItem log in table.LogTable.LoadItems(qdelete, DBLoadParam.Synchronize)) { LogMap change = new LogMap { Table = table }; //change.Logs.Add(log); change.RefreshChanges(); rows.Add(change); } } //wait.Set(); rows.OnCollectionChanged(NotifyCollectionChangedAction.Reset); }
public virtual void UpdateFilter() { if (mode == DataLogMode.None || Table == null || Table.LogTable == null) { return; } if ((Mode == DataLogMode.Default || mode == DataLogMode.Document) && filter == null) { return; } var interval = Date == null ? new DateInterval(DateTime.Today) : Date; interval.Max = interval.Max.AddDays(1); list.ListSource.Clear(); toolProgress.Visible = true; Task.Run(() => { var logTable = filter?.Table.LogTable ?? Table?.LogTable; using (var query = new QQuery("", (DBTable)logTable)) { if (Mode == DataLogMode.Default || mode == DataLogMode.Document) { query.BuildParam(logTable.BaseKey, CompareType.Equal, filter.PrimaryId).IsDefault = true; } if (Date != null) { query.BuildParam(logTable.DateKey, CompareType.Between, interval); } foreach (DBLogItem item in logTable.LoadItems(query)) { list.ListSource.Add(item); } } if (mode == DataLogMode.Document) { foreach (var refed in filter.Table.GetChildRelations()) { if (refed.Table.LogTable == null || refed.Table is IDBVirtualTable || (Table != filter.Table && refed.Table != Table)) { continue; } using (var query = new QQuery("", (DBTable)refed.Table.LogTable)) { query.BuildParam(refed.Table.LogTable.GetLogColumn(refed.Column), CompareType.Equal, filter.PrimaryId); if (Date != null) { query.BuildParam(refed.Table.LogTable.DateKey, CompareType.Between, interval); } foreach (DBLogItem item in refed.Table.LogTable.LoadItems(query)) { list.ListSource.Add(item); } } } } Application.Invoke(() => toolProgress.Visible = false); }).ConfigureAwait(false); }
private void CheckFilterQuery() { ClearFilter(); foreach (var filter in FilterQuery.Parameters) { if (filter.Invoker == null || filter.Value == null || filter.Value == DBNull.Value || filter.Value.ToString().Length == 0) { if (filter.Comparer.Type != CompareTypes.Is) { continue; } } var pcolumn = filter.Invoker as DBColumn; if (filter.Invoker.Name == nameof(Object.ToString)) { Query.SimpleFilter(filter.Value as string); } else if (pcolumn != null) { string code = pcolumn.Name; QParam param = new QParam() { Column = pcolumn, Logic = filter.Logic, Comparer = filter.Comparer, Value = filter.Comparer.Type != CompareTypes.Is ? filter.Value : null }; if (param.Value is string && param.Comparer.Type == CompareTypes.Like) { string s = (string)param.Value; if (s.IndexOf('%') < 0) { param.Value = string.Format("%{0}%", s); } } int i = code.IndexOf('.'); if (i >= 0) { int s = 0; QQuery sexpression = Query; QQuery newQuery = null; while (i > 0) { string iname = code.Substring(s, i - s); if (s == 0) { var pc = table.Columns[iname]; if (pc != null) { iname = pc.Name; } } var c = sexpression.Table.Columns[iname]; if (c.IsReference) { newQuery = new QQuery(string.Empty, c.ReferenceTable); sexpression.BuildParam(c, CompareType.In, newQuery); sexpression = newQuery; } s = i + 1; i = code.IndexOf('.', s); } newQuery.Parameters.Add(param); } else { Query.Parameters.Add(param);//.BuildParam(col, column.Value, true); } } else { var param = new QParam() { ValueLeft = new QReflection(filter.Invoker), Logic = filter.Logic, Comparer = filter.Comparer, Value = filter.Comparer.Type != CompareTypes.Is ? filter.Value : null }; Query.Parameters.Add(param); } } }