Innovenergy_trunk/csharp/App/Backend/Database/Delete.cs

144 lines
4.1 KiB
C#
Raw Normal View History

2023-03-15 13:38:06 +00:00
using InnovEnergy.App.Backend.DataTypes;
using InnovEnergy.App.Backend.DataTypes.Methods;
using InnovEnergy.App.Backend.Relations;
namespace InnovEnergy.App.Backend.Database;
public static partial class Db
{
2024-12-16 14:03:27 +00:00
//Since we do not want to stress the memory in the VM a lot, we make a snapshot of the database every 100 transactions.
private static int _backupCounter = 0;
private static void Backup()
{
_backupCounter++;
if (_backupCounter > 100)
{
_backupCounter = 0;
BackupDatabase();
}
}
2023-03-15 13:38:06 +00:00
public static Boolean Delete(Folder folder)
{
2023-09-15 11:34:28 +00:00
var deleteSuccess= RunTransaction(DeleteFolderAndAllItsDependencies);
if (deleteSuccess)
{
Backup();
2023-09-15 11:34:28 +00:00
}
return deleteSuccess;
2023-03-15 13:38:06 +00:00
Boolean DeleteFolderAndAllItsDependencies()
{
return folder
2023-09-15 11:34:28 +00:00
.DescendantFoldersAndSelf()
2023-03-15 13:38:06 +00:00
.All(DeleteDescendantFolderAndItsDependencies);
}
Boolean DeleteDescendantFolderAndItsDependencies(Folder f)
{
FolderAccess .Delete(r => r.FolderId == f.Id);
Installations.Delete(r => r.ParentId == f.Id);
2023-09-08 07:45:56 +00:00
var delete = Folders.Delete(r => r.Id == f.Id);
2023-09-15 11:34:28 +00:00
return delete>0;
2023-03-15 13:38:06 +00:00
}
}
public static Boolean Delete(Error errorToDelete)
{
var deleteSuccess = RunTransaction(DeleteError);
if (deleteSuccess)
Backup();
return deleteSuccess;
Boolean DeleteError()
{
return Errors.Delete(error => error.Id == errorToDelete.Id) >0;
}
2024-06-11 12:31:08 +00:00
}
public static Boolean Delete(UserAction actionToDelete)
{
var deleteSuccess = RunTransaction(DeleteAction);
2024-12-16 14:03:27 +00:00
2024-06-11 12:31:08 +00:00
if (deleteSuccess)
Backup();
2024-06-11 12:31:08 +00:00
return deleteSuccess;
Boolean DeleteAction()
{
return UserActions.Delete(action => action.Id == actionToDelete.Id) >0;
2024-12-16 14:03:27 +00:00
2024-06-11 12:31:08 +00:00
}
}
2023-11-20 16:29:45 +00:00
public static Boolean Delete(Warning warningToDelete)
{
var deleteSuccess = RunTransaction(DeleteWarning);
if (deleteSuccess)
Backup();
2023-11-20 16:29:45 +00:00
return deleteSuccess;
Boolean DeleteWarning()
{
2024-12-16 14:03:27 +00:00
return Warnings.Delete(warning => warning.Id == warningToDelete.Id) >0;
2023-11-20 16:29:45 +00:00
}
}
2023-03-15 13:38:06 +00:00
public static Boolean Delete(Installation installation)
{
2023-09-08 07:45:56 +00:00
var deleteSuccess = RunTransaction(DeleteInstallationAndItsDependencies);
if (deleteSuccess)
Backup();
2023-09-08 07:45:56 +00:00
return deleteSuccess;
2023-03-15 13:38:06 +00:00
Boolean DeleteInstallationAndItsDependencies()
{
2024-12-16 14:03:27 +00:00
InstallationAccess.Delete(i => i.InstallationId == installation.Id);
if (installation.Product == 0)
{
2024-12-16 14:03:27 +00:00
//For Salimax, delete the OrderNumber2Installation entries associated with this installation id.
OrderNumber2Installation.Delete(i => i.InstallationId == installation.Id);
}
2023-09-08 07:45:56 +00:00
return Installations.Delete(i => i.Id == installation.Id) > 0;
2023-03-15 13:38:06 +00:00
}
}
public static Boolean Delete(User user)
{
2023-09-08 07:45:56 +00:00
var deleteSuccess = RunTransaction(DeleteUserAndHisDependencies);
if (deleteSuccess)
Backup();
2023-09-08 07:45:56 +00:00
return deleteSuccess;
2023-03-15 13:38:06 +00:00
Boolean DeleteUserAndHisDependencies()
{
FolderAccess .Delete(u => u.UserId == user.Id);
InstallationAccess.Delete(u => u.UserId == user.Id);
2023-09-08 07:45:56 +00:00
return Users.Delete(u => u.Id == user.Id) > 0;
2023-03-15 13:38:06 +00:00
}
}
#pragma warning disable CS0618
// private!!
private static Boolean Delete(Session session)
{
var delete = Sessions.Delete(s => s.Id == session.Id) > 0;
2023-09-08 07:45:56 +00:00
if (delete)
Backup();
return delete;
2023-03-15 13:38:06 +00:00
}
public static void Delete(OrderNumber2Installation relation)
{
OrderNumber2Installation.Delete(s => s.InstallationId == relation.InstallationId && s.OrderNumber == relation.OrderNumber);
}
2023-03-15 13:38:06 +00:00
}