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); } }
protected virtual void ExecuteDelete() { var isActiveDeletedRow = Row as IIsActiveDeletedRow; var isDeletedRow = Row as IIsDeletedRow; var deleteLogRow = Row as IDeleteLogRow; var idField = Row.IdField; var id = idField.ConvertValue(Request.EntityId, CultureInfo.InvariantCulture); if (isActiveDeletedRow == null && isDeletedRow == null && deleteLogRow == null) { var delete = new SqlDelete(Row.Table) .WhereEqual(idField, id); InvokeDeleteAction(() => { if (delete.Execute(Connection) != 1) { throw DataValidation.EntityNotFoundError(Row, id, Localizer); } }); } else { if (isDeletedRow != null || isActiveDeletedRow != null) { var update = new SqlUpdate(Row.Table) .WhereEqual(idField, id) .Where(ServiceQueryHelper.GetNotDeletedCriteria(Row)); if (isActiveDeletedRow != null) { update.Set(isActiveDeletedRow.IsActiveField, -1); } else if (isDeletedRow != null) { update.Set(isDeletedRow.IsDeletedField, true); } if (deleteLogRow != null) { update.Set(deleteLogRow.DeleteDateField, DateTimeField.ToDateTimeKind(DateTime.Now, deleteLogRow.DeleteDateField.DateTimeKind)) .Set(deleteLogRow.DeleteUserIdField, User?.GetIdentifier().TryParseID()); } else if (Row is IUpdateLogRow updateLogRow) { update.Set(updateLogRow.UpdateDateField, DateTimeField.ToDateTimeKind(DateTime.Now, updateLogRow.UpdateDateField.DateTimeKind)) .Set(updateLogRow.UpdateUserIdField, User?.GetIdentifier().TryParseID()); } InvokeDeleteAction(() => { if (update.Execute(Connection) != 1) { throw DataValidation.EntityNotFoundError(Row, id, Localizer); } }); } else //if (deleteLogRow != null) { var update = new SqlUpdate(Row.Table) .Set(deleteLogRow.DeleteDateField, DateTimeField.ToDateTimeKind(DateTime.Now, deleteLogRow.DeleteDateField.DateTimeKind)) .Set(deleteLogRow.DeleteUserIdField, User?.GetIdentifier().TryParseID()) .WhereEqual(idField, id) .Where(new Criteria(deleteLogRow.DeleteUserIdField).IsNull()); InvokeDeleteAction(() => { if (update.Execute(Connection) != 1) { throw DataValidation.EntityNotFoundError(Row, id, Localizer); } }); } } InvalidateCacheOnCommit(); }
public override void OnBeforeSave(ISaveRequestHandler handler) { if (attrList == null) { return; } if (attrFields == null) { attrFields = attrList.Select(attr => { return(attr.Fields.Select(x => { var field = handler.Row.FindFieldByPropertyName(x) ?? handler.Row.FindField(x); if (ReferenceEquals(null, field)) { throw new InvalidOperationException(string.Format( "Can't find field '{0}' of unique constraint in row type '{1}'", x, handler.Row.GetType().FullName)); } return field; })); }).ToArray(); } for (var i = 0; i < attrList.Length; i++) { var attr = attrList[i]; var fields = attrFields[i]; UniqueFieldSaveBehavior.ValidateUniqueConstraint(handler, fields, Localizer, attr.ErrorMessage, attrList[i].IgnoreDeleted ? ServiceQueryHelper.GetNotDeletedCriteria(handler.Row) : Criteria.Empty); } }
public override void OnBeforeSave(ISaveRequestHandler handler) { ValidateUniqueConstraint(handler, new Field[] { Target }, Localizer, attr == null ? (string)null : attr.ErrorMessage, attr != null && attr.IgnoreDeleted ? ServiceQueryHelper.GetNotDeletedCriteria(handler.Row) : Criteria.Empty); }