Files
FoodsharingOnboarding/FoodsharingSiegen.Server/Controls/ProspectContainer.razor
Andre Beging 6389da4bc1 Rename 'Deleted' state to 'Archived' and update related logic
Replaced 'Deleted' with 'Archived' across the codebase to better reflect the intent of the state. Adjusted related features, including filters, UI labels, navigation, and permissions. Introduced a 'Recent Activity' filter for improved activity tracking.
2025-04-02 08:40:38 +02:00

156 lines
6.1 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))"
AddClick="AddInteraction"
RemoveClick="@RemoveInteraction"
ButtonIconClass="fa-solid fa-check"
IconClass="fa-solid fa-handshake-simple">
</InteractionRow>
<InteractionRow
Prospect="Prospect"
Type="InteractionType.StepInBriefing"
AllowInteraction="@(StateFilter == ProspectStateFilter.OnBoarding && CurrentUser.IsInGroup(UserGroup.WelcomeTeam))"
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.StoreManager, 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>