Introduced the `DisableStepIn` flag in AppSettings to toggle StepIn-related features. Updated UI components to conditionally render StepIn interactions and filtering options based on this flag. Refactored group permissions for interactions to include Ambassadors where applicable.
159 lines
6.2 KiB
Plaintext
159 lines
6.2 KiB
Plaintext
@using FoodsharingSiegen.Contracts.Enums
|
|
@using FoodsharingSiegen.Shared.Helper
|
|
@inherits FsBase
|
|
|
|
@{
|
|
var divClass = $"{CssClass} pc-main";
|
|
if (Prospect is { Complete: true }) divClass += " complete";
|
|
if (Prospect is { Warning: true }) divClass += " warning";
|
|
if (Prospect is { RecordState: RecordState.Archived }) divClass += " deleted";
|
|
}
|
|
|
|
<div class="@divClass">
|
|
<h5 class="mb-2 d-flex">
|
|
<div class="flex-grow-1">
|
|
@Prospect?.Name
|
|
<small style="font-size: .9rem;">@Prospect?.FsId</small>
|
|
</div>
|
|
<div>
|
|
@if (CurrentUser.IsInGroup(UserGroup.WelcomeTeam, UserGroup.Ambassador))
|
|
{
|
|
<i class="fa-solid fa-pen-to-square link mr-2" @onclick="EditProspectAsync" @onclick:preventDefault></i>
|
|
}
|
|
<a href="@(CurrentUser.NetworkLink)/profile/@Prospect?.FsId" target="_blank"><i class="fa-solid fa-eye"></i></a>
|
|
@if (CurrentUser.IsInGroup(UserGroup.WelcomeTeam, UserGroup.Ambassador))
|
|
{
|
|
if (Prospect?.RecordState != RecordState.Archived)
|
|
{
|
|
<i class="fa-solid fa-box-archive link ml-2" @onclick="ArchiveProspectAsync" title="Archivieren" @onclick:preventDefault></i>
|
|
}
|
|
else
|
|
{
|
|
<i class="fa-solid fa-recycle link ml-2" @onclick="RestoreProspectAsync" title="Wiederherstellen" @onclick:preventDefault></i>
|
|
}
|
|
|
|
}
|
|
</div>
|
|
</h5>
|
|
|
|
@if (!string.IsNullOrWhiteSpace(Prospect?.Memo))
|
|
{
|
|
var alertColor = Prospect?.Warning is true ? Color.Warning : Color.Info;
|
|
var alertIconClass = Prospect?.Warning is true ? "fa-solid fa-triangle-exclamation" : "fa-solid fa-circle-info";
|
|
|
|
<Alert Color="alertColor" Visible Class="p-2 mb-1">
|
|
<AlertDescription><i class="@alertIconClass"></i> @Prospect?.Memo</AlertDescription>
|
|
</Alert>
|
|
}
|
|
|
|
<table class="flex-column" style="width: 100%;">
|
|
|
|
<InteractionRow
|
|
Prospect="Prospect"
|
|
Type="InteractionType.Welcome"
|
|
AllowInteraction="@(StateFilter == ProspectStateFilter.OnBoarding && CurrentUser.IsInGroup(UserGroup.WelcomeTeam, UserGroup.Ambassador))"
|
|
AddClick="AddInteraction"
|
|
RemoveClick="@RemoveInteraction"
|
|
ButtonIconClass="fa-solid fa-check"
|
|
IconClass="fa-solid fa-handshake-simple">
|
|
</InteractionRow>
|
|
|
|
@if (!AppSettings.DisableStepIn)
|
|
{
|
|
<InteractionRow
|
|
Prospect="Prospect"
|
|
Type="InteractionType.StepInBriefing"
|
|
AllowInteraction="@(StateFilter == ProspectStateFilter.OnBoarding && CurrentUser.IsInGroup(UserGroup.WelcomeTeam, UserGroup.Ambassador))"
|
|
AddClick="AddInteraction"
|
|
RemoveClick="@RemoveInteraction"
|
|
ButtonIconClass="fa-solid fa-check"
|
|
IconClass="fa-solid fa-graduation-cap">
|
|
</InteractionRow>
|
|
}
|
|
|
|
<InteractionRow
|
|
Prospect="Prospect"
|
|
Type="InteractionType.EinAb"
|
|
AllowInteraction="@(StateFilter == ProspectStateFilter.OnBoarding && CurrentUser.IsInGroup(UserGroup.WelcomeTeam, UserGroup.Ambassador))"
|
|
AddClick="AddInteraction"
|
|
RemoveClick="@RemoveInteraction"
|
|
Multiple="true"
|
|
Minimum="3"
|
|
ButtonIconClass="fa-solid fa-plus"
|
|
IconClass="fa-solid fa-basket-shopping">
|
|
</InteractionRow>
|
|
|
|
<tr>
|
|
<td colspan="3">
|
|
<hr style="margin: 10px 0;">
|
|
</td>
|
|
</tr>
|
|
|
|
<InteractionRow
|
|
Prospect="Prospect"
|
|
Type="InteractionType.ReleasedForVerification"
|
|
AllowInteraction="@(StateFilter is ProspectStateFilter.OnBoarding or ProspectStateFilter.Verification && CurrentUser.IsInGroup(UserGroup.WelcomeTeam))"
|
|
AddClick="AddInteraction"
|
|
RemoveClick="@RemoveInteraction"
|
|
ButtonIconClass="fa-solid fa-check"
|
|
IconClass="fa-solid fa-id-card">
|
|
</InteractionRow>
|
|
|
|
@if (CurrentUser.IsInGroup(UserGroup.Ambassador))
|
|
{
|
|
<InteractionRow
|
|
Prospect="Prospect"
|
|
Type="InteractionType.IdCheck"
|
|
AllowInteraction="@CurrentUser.IsInGroup(UserGroup.Ambassador)"
|
|
AddClick="AddInteraction"
|
|
RemoveClick="@RemoveInteraction"
|
|
ButtonIconClass="fa-solid fa-check"
|
|
IconClass="fa-solid fa-magnifying-glass">
|
|
</InteractionRow>
|
|
}
|
|
|
|
@if (StateFilter > ProspectStateFilter.OnBoarding)
|
|
{
|
|
<InteractionRow
|
|
Prospect="Prospect"
|
|
Type="InteractionType.PrintPass"
|
|
AllowInteraction="@CurrentUser.IsInGroup(UserGroup.Ambassador)"
|
|
AddClick="AddInteraction"
|
|
RemoveClick="@RemoveInteraction"
|
|
ButtonIconClass="fa-solid fa-check"
|
|
IconClass="fa-solid fa-id-card">
|
|
</InteractionRow>
|
|
|
|
<InteractionRow
|
|
Prospect="Prospect"
|
|
AllowInteraction="@CurrentUser.IsInGroup(UserGroup.Ambassador)"
|
|
Type="InteractionType.Verify"
|
|
AddClick="AddInteraction"
|
|
RemoveClick="@RemoveInteraction"
|
|
ButtonIconClass="fa-solid fa-check"
|
|
IconClass="fa-solid fa-user-check">
|
|
</InteractionRow>
|
|
|
|
<tr>
|
|
<td colspan="3">
|
|
<hr style="margin: 10px 0;">
|
|
</td>
|
|
</tr>
|
|
|
|
<InteractionRow
|
|
Prospect="Prospect"
|
|
AllowInteraction="@CurrentUser.IsInGroup(UserGroup.Ambassador)"
|
|
Type="InteractionType.Complete"
|
|
AddClick="AddInteraction"
|
|
RemoveClick="@RemoveInteraction"
|
|
ButtonIconClass="fa-solid fa-check"
|
|
IconClass="fa-solid fa-flag-checkered">
|
|
</InteractionRow>
|
|
}
|
|
|
|
</table>
|
|
|
|
<div class="flex-grow-1"></div>
|
|
|
|
<small class="text-center" style="margin-top: .5rem;">Zuletzt geändert: @Prospect?.Modified?.ToLocalTime()</small>
|
|
</div> |