public bool DeleteFile(int fileId, string status, bool isFileData = false, bool isHardDelete = true)
{
bool result = false;
if (isFileData)
{
var fileMetadataFields = Context.FileMetadataFields.Where(fileMeta => fileMeta.FileId == fileId);
foreach (var fileMetadataField in fileMetadataFields)
{
Context.SetEntityState<FileMetadataField>(fileMetadataField, EntityState.Deleted);
Context.FileMetadataFields.Remove(fileMetadataField);
}
if (status.Equals(FileStatus.Posted.ToString(), StringComparison.InvariantCulture))
{
var fileColumns = Context.FileColumns.Where(fileCol => fileCol.FileId == fileId);
foreach (var fileColumn in fileColumns)
{
Context.SetEntityState<FileColumn>(fileColumn, EntityState.Deleted);
Context.FileColumns.Remove(fileColumn);
}
// Deleting quality check data
var fileQualityChecks = Context.FileQualityChecks.Where(filQc => filQc.FileId == fileId);
foreach (var fileQC in fileQualityChecks)
{
Context.SetEntityState<FileQualityCheck>(fileQC, EntityState.Deleted);
Context.FileQualityChecks.Remove(fileQC);
}
}
result = true;
}
else if (isHardDelete)
{
var fileAttributesToDelete = Context.FileAttributes.Where(file => file.FileId == fileId).ToList();
fileAttributesToDelete.ForEach(fa =>
{
Context.SetEntityState<FileAttribute>(fa, EntityState.Deleted);
Context.FileAttributes.Remove(fa);
});
var fileColumnsToDelete = Context.FileColumns.Where(file => file.FileId == fileId).ToList();
fileColumnsToDelete.ForEach(fc =>
{
Context.SetEntityState<FileColumn>(fc, EntityState.Deleted);
Context.FileColumns.Remove(fc);
});
var fileMetadataFieldsToDelete = Context.FileMetadataFields.Where(file => file.FileId == fileId).ToList();
fileMetadataFieldsToDelete.ForEach(fmf =>
{
Context.SetEntityState<FileMetadataField>(fmf, EntityState.Deleted);
Context.FileMetadataFields.Remove(fmf);
});
var fileQualityChecksToDelete = Context.FileQualityChecks.Where(file => file.FileId == fileId).ToList();
fileQualityChecksToDelete.ForEach(fqc =>
{
Context.SetEntityState<FileQualityCheck>(fqc, EntityState.Deleted);
Context.FileQualityChecks.Remove(fqc);
});
var fileToDel = Context.Files.Where(file => file.FileId == fileId).FirstOrDefault();
Context.SetEntityState<File>(fileToDel, EntityState.Deleted);
Context.Files.Remove(fileToDel);
result = true;
}
return result;
}