public T Insert(T entity) { try { string id = DateTime.Now.Ticks.ToString(); FileHelper.UploadFileInfo fileInfo = null; entity.GetType().GetProperty("id")?.SetValue(entity, id); entity.GetType().GetProperty("createdAt")?.SetValue(entity, DateTime.Now); entity.GetType().GetProperty("updatedAt")?.SetValue(entity, null); entity.GetType().GetProperty("deletedAt")?.SetValue(entity, null); if (entity.GetType().GetProperty("file")?.GetValue(entity) != null) { fileInfo = FileHelper.setFilePath( (IFormFile)entity.GetType().GetProperty("file")?.GetValue(entity), (string)entity.GetType().GetProperty("filePath")?.GetValue(entity), (string)entity.GetType().GetProperty("id")?.GetValue(entity) ); entity.GetType().GetProperty("filePath").SetValue(entity, fileInfo.filePath); } con.Insert(entity); if (fileInfo != null) { FileHelper.uploadFileAsync(fileInfo); } return(entity); } catch { throw; } }
public T Update(T entity) { try { string id = (string)entity.GetType().GetProperty("id")?.GetValue(entity); FileHelper.UploadFileInfo fileInfo = null; T data = Get(id); foreach (PropertyInfo propertyInfo in data.GetType().GetProperties()) { if (propertyInfo.PropertyType == typeof(IFormFile) || propertyInfo.Name == "createdAt") { continue; } var source = entity.GetType().GetProperty(propertyInfo.Name)?.GetValue(entity); var target = propertyInfo.GetValue(data); if (source != null && (source != target)) { propertyInfo?.SetValue(data, source); } } data.GetType().GetProperty("updatedAt")?.SetValue(data, DateTime.Now); data.GetType().GetProperty("deletedAt")?.SetValue(data, null); if (entity.GetType().GetProperty("file")?.GetValue(entity) != null) { fileInfo = FileHelper.setFilePath( (IFormFile)entity.GetType().GetProperty("file")?.GetValue(entity), (string)entity.GetType().GetProperty("filePath")?.GetValue(entity), (string)entity.GetType().GetProperty("id")?.GetValue(entity) ); data.GetType().GetProperty("filePath").SetValue(data, fileInfo.filePath); } con.Update(data); if (fileInfo != null) { FileHelper.uploadFileAsync(fileInfo); } return(data); } catch { throw; } }