Skip to content

Commit 78ba7b6

Browse files
committed
Adding changes to lock folders and tags so user cannot accidently delete or edit a folder or tag, which is expected to be there by the plugin to function.
1 parent a836625 commit 78ba7b6

File tree

5 files changed

+137
-5
lines changed

5 files changed

+137
-5
lines changed

eFormAPI/Plugins/BackendConfiguration.Pn/BackendConfiguration.Pn/EformBackendConfigurationPlugin.cs

Lines changed: 103 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ private static async void SeedEForms(IServiceCollection services)
200200

201201

202202
var backendConfigurationPnDbContext = serviceProvider.GetRequiredService<BackendConfigurationPnDbContext>();
203-
// var itemsPlanningContext = serviceProvider.GetRequiredService<ItemsPlanningPnDbContext>();
203+
var itemsPlanningContext = serviceProvider.GetRequiredService<ItemsPlanningPnDbContext>();
204204
// var caseTemplateContext = serviceProvider.GetRequiredService<CaseTemplatePnDbContext>();
205205
// seed eforms
206206
var assembly = Assembly.GetExecutingAssembly();
@@ -524,6 +524,13 @@ private static async void SeedEForms(IServiceCollection services)
524524
var folder = await sdkDbContext.Folders.FirstOrDefaultAsync(x => x.Id == property.FolderId);
525525
if (folder != null)
526526
{
527+
if (!folder.IsLocked)
528+
{
529+
folder.IsLocked = true;
530+
folder.ManagedByPlugin = true;
531+
folder.IsEditable = false;
532+
await folder.Update(sdkDbContext).ConfigureAwait(false);
533+
}
527534
// join the table Folder with the FolderTranslations to find the "Exceeded tasks" folder with the parentId set to the property.FolderId
528535
var folderAndFolderTranslation = await sdkDbContext.Folders
529536
.Join(sdkDbContext.FolderTranslations,
@@ -534,9 +541,62 @@ private static async void SeedEForms(IServiceCollection services)
534541
.FirstOrDefaultAsync();
535542
if (folderAndFolderTranslation == null) // if the folder does not exist create it
536543
{
537-
await core.FolderCreate(commonTranslations, folder.Id).ConfigureAwait(false);
544+
var folderId = await core.FolderCreate(commonTranslations, folder.Id).ConfigureAwait(false);
545+
var newFolder = await sdkDbContext.Folders.FirstAsync(x => x.Id == folderId);
546+
newFolder.IsLocked = true;
547+
newFolder.ManagedByPlugin = true;
548+
newFolder.IsEditable = false;
549+
await newFolder.Update(sdkDbContext).ConfigureAwait(false);
550+
} else
551+
{
552+
var existingFolder = folderAndFolderTranslation.lookupFolder;
553+
if (!existingFolder.IsLocked || !existingFolder.ManagedByPlugin || !existingFolder.IsEditable)
554+
{
555+
existingFolder.IsLocked = true;
556+
existingFolder.ManagedByPlugin = true;
557+
existingFolder.IsEditable = false;
558+
await existingFolder.Update(sdkDbContext).ConfigureAwait(false);
559+
}
560+
}
561+
562+
var folderForNewTasks = await sdkDbContext.Folders
563+
.FirstOrDefaultAsync(x => x.Id == property.FolderIdForNewTasks);
564+
if (folderForNewTasks is { IsLocked: false })
565+
{
566+
folderForNewTasks.IsLocked = true;
567+
folderForNewTasks.ManagedByPlugin = true;
568+
folderForNewTasks.IsEditable = false;
569+
await folderForNewTasks.Update(sdkDbContext).ConfigureAwait(false);
570+
}
571+
572+
var folderForCompletedTasks = await sdkDbContext.Folders
573+
.FirstOrDefaultAsync(x => x.Id == property.FolderIdForCompletedTasks);
574+
if (folderForCompletedTasks is { IsLocked: false })
575+
{
576+
folderForCompletedTasks.IsLocked = true;
577+
folderForCompletedTasks.ManagedByPlugin = true;
578+
folderForCompletedTasks.IsEditable = false;
579+
await folderForCompletedTasks.Update(sdkDbContext).ConfigureAwait(false);
580+
}
581+
582+
var folderForOngoingTasks = await sdkDbContext.Folders
583+
.FirstOrDefaultAsync(x => x.Id == property.FolderIdForOngoingTasks);
584+
if (folderForOngoingTasks is { IsLocked: false })
585+
{
586+
folderForOngoingTasks.IsLocked = true;
587+
folderForOngoingTasks.ManagedByPlugin = true;
588+
folderForOngoingTasks.IsEditable = false;
589+
await folderForOngoingTasks.Update(sdkDbContext).ConfigureAwait(false);
538590
}
539591
}
592+
593+
var itemPlanningTag =
594+
await itemsPlanningContext.PlanningTags.FirstAsync(x => x.Id == property.ItemPlanningTagId);
595+
if (!itemPlanningTag.IsLocked)
596+
{
597+
itemPlanningTag.IsLocked = true;
598+
await itemPlanningTag.Update(itemsPlanningContext).ConfigureAwait(false);
599+
}
540600
} catch (Exception ex)
541601
{
542602
Console.WriteLine(ex.Message);
@@ -545,6 +605,47 @@ private static async void SeedEForms(IServiceCollection services)
545605

546606
}
547607

608+
var parentFolderTranslation =
609+
await sdkDbContext.Folders
610+
// .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
611+
.Include(x => x.FolderTranslations)
612+
.Where(x => x.ParentId == null)
613+
.AsNoTracking()
614+
.FirstOrDefaultAsync(x =>
615+
x.FolderTranslations.Any(y => y.Name == "00.03 Andres opgaver"));
616+
if (parentFolderTranslation != null)
617+
{
618+
var folder = await sdkDbContext.Folders
619+
.FirstAsync(x => x.ParentId == parentFolderTranslation.Id);
620+
if (!folder.IsLocked || !folder.ManagedByPlugin || !folder.IsEditable)
621+
{
622+
folder.IsLocked = true;
623+
folder.ManagedByPlugin = true;
624+
folder.IsEditable = false;
625+
await folder.Update(sdkDbContext).ConfigureAwait(false);
626+
}
627+
}
628+
var ft =
629+
await sdkDbContext.Folders
630+
// .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
631+
.Include(x => x.FolderTranslations)
632+
.Where(x => x.ParentId == null)
633+
.AsNoTracking()
634+
.FirstOrDefaultAsync(x =>
635+
x.FolderTranslations.Any(y => y.Name == "00.01 Mine hasteopgaver"));
636+
if (ft != null)
637+
{
638+
var f = await sdkDbContext.Folders
639+
.FirstAsync(x => x.ParentId == ft.Id);
640+
if (!f.IsLocked || !f.ManagedByPlugin || !f.IsEditable)
641+
{
642+
f.IsLocked = true;
643+
f.ManagedByPlugin = true;
644+
f.IsEditable = false;
645+
await f.Update(sdkDbContext).ConfigureAwait(false);
646+
}
647+
}
648+
548649
foreach (var newArea in BackendConfigurationSeedAreas.AreasSeed
549650
.Where(newArea => !backendConfigurationPnDbContext.Areas.Any(x => x.Id == newArea.Id))
550651
.Where(x => x.IsDisabled == false))

eFormAPI/Plugins/BackendConfiguration.Pn/BackendConfiguration.Pn/Infrastructure/Helpers/BackendConfigurationAreaRulePlanningsServiceHelper.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1022,14 +1022,21 @@ await PairItemWithSiteHelper.Pair(
10221022
await tailBiteTag.Update(itemsPlanningPnDbContext)
10231023
.ConfigureAwait(false);
10241024
}
1025+
if (!tailBiteTag.IsLocked) // if tag is not locked, we lock it
1026+
{
1027+
tailBiteTag.IsLocked = true;
1028+
await tailBiteTag.Update(itemsPlanningPnDbContext)
1029+
.ConfigureAwait(false);
1030+
}
10251031
}
10261032
else // create tag
10271033
{
10281034
var newTag = new PlanningTag
10291035
{
10301036
Name = "Halebid",
10311037
CreatedByUserId = userId,
1032-
UpdatedByUserId = userId
1038+
UpdatedByUserId = userId,
1039+
IsLocked = true
10331040
};
10341041
await newTag.Create(itemsPlanningPnDbContext).ConfigureAwait(false);
10351042
planning.ReportGroupPlanningTagId = newTag.Id;

eFormAPI/Plugins/BackendConfiguration.Pn/BackendConfiguration.Pn/Infrastructure/Helpers/BackendConfigurationPropertiesServiceHelper.cs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,8 @@ public static async Task<OperationResult> Create(PropertyCreateModel propertyCre
6060

6161
var planningTag = new PlanningTag
6262
{
63-
Name = $"0. {propertyCreateModel.FullName()}"
63+
Name = $"0. {propertyCreateModel.FullName()}",
64+
IsLocked = true
6465
};
6566
await planningTag.Create(itemsPlanningPnDbContext).ConfigureAwait(false);
6667
var newProperty = new Property
@@ -515,6 +516,11 @@ await sdkDbContext.Folders
515516
{
516517
property.FolderIdForNewTasks = parentFolderTranslation.Id;
517518
}
519+
var folderIdForNewTasks = await sdkDbContext.Folders.SingleAsync(x => x.Id == property.FolderIdForNewTasks);
520+
folderIdForNewTasks.IsLocked = true;
521+
folderIdForNewTasks.IsEditable = false;
522+
folderIdForNewTasks.ManagedByPlugin = true;
523+
await folderIdForNewTasks.Update(sdkDbContext);
518524

519525
parentFolderTranslation =
520526
await sdkDbContext.Folders
@@ -589,6 +595,11 @@ await sdkDbContext.Folders
589595
var folder = await sdkDbContext.Folders.SingleAsync(x => x.Id == property.FolderIdForOngoingTasks);
590596
await core.FolderUpdate(folder.Id, translateFolderForNewTask, folder.ParentId);
591597
}
598+
var folderIdForOngoingTasks = await sdkDbContext.Folders.SingleAsync(x => x.Id == property.FolderIdForOngoingTasks);
599+
folderIdForOngoingTasks.IsLocked = true;
600+
folderIdForOngoingTasks.IsEditable = false;
601+
folderIdForOngoingTasks.ManagedByPlugin = true;
602+
await folderIdForOngoingTasks.Update(sdkDbContext);
592603

593604
parentFolderTranslation =
594605
await sdkDbContext.Folders
@@ -623,6 +634,11 @@ await sdkDbContext.Folders
623634
};
624635
parentFolderId =
625636
await core.FolderCreate(translatesFolderForTasks, null).ConfigureAwait(false);
637+
var folder = await sdkDbContext.Folders.SingleAsync(x => x.Id == parentFolderId);
638+
folder.IsLocked = true;
639+
folder.IsEditable = false;
640+
folder.ManagedByPlugin = true;
641+
await folder.Update(sdkDbContext);
626642
}
627643
else
628644
{
@@ -665,6 +681,11 @@ await sdkDbContext.Folders
665681
var folder = await sdkDbContext.Folders.SingleAsync(x => x.Id == property.FolderIdForCompletedTasks);
666682
await core.FolderUpdate(folder.Id, translateFolderForNewTask, folder.ParentId);
667683
}
684+
var folderIdForCompletedTasks = await sdkDbContext.Folders.SingleAsync(x => x.Id == property.FolderIdForCompletedTasks);
685+
folderIdForCompletedTasks.IsLocked = true;
686+
folderIdForCompletedTasks.IsEditable = false;
687+
folderIdForCompletedTasks.ManagedByPlugin = true;
688+
await folderIdForCompletedTasks.Update(sdkDbContext);
668689

669690
parentFolderTranslation =
670691
await sdkDbContext.Folders

eform-client/src/app/plugins/modules/backend-configuration-pn/models/properties/property-folder.model.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,7 @@ export interface PropertyFolderModel {
55
parentId?: number;
66
microtingUId?: number;
77
children?: PropertyFolderModel[];
8+
isLocked: boolean;
9+
isEditable: boolean;
10+
managedByPlugin: boolean;
811
}

eform-client/src/app/plugins/modules/backend-configuration-pn/services/backend-configuration-pn-properties.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ export class BackendConfigurationPnPropertiesService {
213213
);
214214
}
215215

216-
getLinkedFolderListByMultipleProperties(ids: number[]): Observable<OperationDataResult<CommonDictionaryModel[]>> {
216+
getLinkedFolderListByMultipleProperties(ids: number[]): Observable<OperationDataResult<FolderDto[]>> {
217217
return this.apiBaseService.post(
218218
BackendConfigurationPnPropertiesMethods.GetFolderList,
219219
ids

0 commit comments

Comments
 (0)