public override void OnBeforeDelete(IDeleteRequestHandler handler) { if (ReferenceEquals(null, Target) || (Target.Flags & FieldFlags.Updatable) != FieldFlags.Updatable) return; if (!attr.ForceCascadeDelete && ServiceQueryHelper.UseSoftDelete(handler.Row)) return; var row = rowFactory(); var rowIdField = (Field)((row as IIdRow).IdField); var deleteHandler = deleteHandlerFactory(); var deleteList = new List<object>(); new SqlQuery() .Dialect(handler.Connection.GetDialect()) .From(row) .Select((Field)rowIdField) .Where( foreignKeyField == new ValueCriteria(masterKeyField.AsObject(handler.Row)) & queryCriteria) .ForEach(handler.Connection, () => { deleteList.Add(rowIdField.AsObject(row)); }); foreach (var id in deleteList) DeleteDetail(handler.UnitOfWork, id); }
public override void OnBeforeDelete(IDeleteRequestHandler handler) { if (ServiceQueryHelper.UseSoftDelete(handler.Row)) { return; } var idField = (Field)((handler.Row as IIdRow).IdField); var localRow = localRowFactory(); var deleteList = new List <object>(); new SqlQuery() .Dialect(handler.Connection.GetDialect()) .From(localRow) .Select(localRowIdField) .Where( foreignKeyField == new ValueCriteria(idField.AsObject(handler.Row))) .ForEach(handler.Connection, () => { deleteList.Add(localRowIdField.AsObject(localRow)); }); foreach (var localId in deleteList) { DeleteLocalRow(handler.UnitOfWork, localId); } }
public override void OnAfterDelete(IDeleteRequestHandler handler) { if (ServiceQueryHelper.UseSoftDelete(handler.Row)) { return; } var field = (StringField)Target; var oldFilesJSON = field[handler.Row].TrimToNull(); var oldFileList = ParseAndValidate(oldFilesJSON, "oldFiles"); var filesToDelete = new FilesToDelete(); UploadHelper.RegisterFilesToDelete(handler.UnitOfWork, filesToDelete); foreach (var file in oldFileList) { DeleteOldFile(filesToDelete, file.Filename); } }
public override void OnBeforeDelete(IDeleteRequestHandler handler) { if (Target is null || (Target.Flags & FieldFlags.Updatable) != FieldFlags.Updatable) { return; } if (!attr.ForceCascadeDelete && ServiceQueryHelper.UseSoftDelete(handler.Row)) { return; } var idField = handler.Row.IdField; var masterId = idField.AsObject(handler.Row); var row = rowFactory(); var rowIdField = row.IdField; var deleteList = new List <object>(); new SqlQuery() .Dialect(handler.Connection.GetDialect()) .From(row) .Select(rowIdField) .Where( thisKeyField == new ValueCriteria(masterId) & queryCriteria) .ForEach(handler.Connection, () => { deleteList.Add(rowIdField.AsObject(row)); }); foreach (var id in deleteList) { DeleteDetail(handler.UnitOfWork, id); } }