diff --git a/FoodsharingSiegen.Server/Controls/ProspectContainer.razor b/FoodsharingSiegen.Server/Controls/ProspectContainer.razor
new file mode 100644
index 0000000..d2cbe6b
--- /dev/null
+++ b/FoodsharingSiegen.Server/Controls/ProspectContainer.razor
@@ -0,0 +1,93 @@
+@using FoodsharingSiegen.Contracts.Entity
+
+@{
+ var divClass = "pc-main";
+ if (Prospect.Complete) divClass += " complete";
+}
+
+
+
+
@Prospect.Memo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/FoodsharingSiegen.Server/Controls/ProspectContainer.razor.cs b/FoodsharingSiegen.Server/Controls/ProspectContainer.razor.cs
new file mode 100644
index 0000000..3ceea76
--- /dev/null
+++ b/FoodsharingSiegen.Server/Controls/ProspectContainer.razor.cs
@@ -0,0 +1,26 @@
+using FoodsharingSiegen.Contracts.Entity;
+using FoodsharingSiegen.Server.Dialogs;
+using Microsoft.AspNetCore.Components;
+
+namespace FoodsharingSiegen.Server.Controls
+{
+ public partial class ProspectContainer
+ {
+ [Parameter] public Prospect? Prospect { get; set; }
+
+ [Parameter] public AddInteractionModal InteractionModal { get; set; } = null!;
+
+ [Parameter] public EventCallback RemoveInteraction { get; set; }
+
+
+ private async Task AddInteraction(InteractionType type)
+ {
+ await InteractionModal.Show(type, Prospect?.Id);
+ }
+
+ private List GetTyped(InteractionType type)
+ {
+ return Prospect?.Interactions?.Where(x => x.Type == type).ToList() ?? new List();
+ }
+ }
+}
\ No newline at end of file
diff --git a/FoodsharingSiegen.Server/Controls/ProspectContainer.razor.css b/FoodsharingSiegen.Server/Controls/ProspectContainer.razor.css
new file mode 100644
index 0000000..0497416
--- /dev/null
+++ b/FoodsharingSiegen.Server/Controls/ProspectContainer.razor.css
@@ -0,0 +1,29 @@
+::deep a,
+::deep a.invert:hover{
+
+ color: #64ae24;
+}
+
+::deep a.invert,
+::deep a:hover {
+ color: #533a20;
+}
+
+.green {
+ color: #64ae24;
+}
+
+.pc-main {
+ flex-basis: 0;
+ flex-grow: 1;
+ max-width: 100%;
+ min-width: 350px;
+ border: 1px solid #533a20;
+ border-radius: 15px;
+ margin: 5px;
+ padding: 16px;
+}
+
+.complete {
+ background: #76ff003b;
+}
\ No newline at end of file
diff --git a/FoodsharingSiegen.Server/Pages/Prospects.razor b/FoodsharingSiegen.Server/Pages/Prospects.razor
new file mode 100644
index 0000000..bf4d4a2
--- /dev/null
+++ b/FoodsharingSiegen.Server/Pages/Prospects.razor
@@ -0,0 +1,29 @@
+@page "/"
+@page "/prospect"
+@page "/prospects"
+@using FoodsharingSiegen.Server.Dialogs
+@using FoodsharingSiegen.Server.Controls
+@using FoodsharingSiegen.Contracts.Entity
+
+Einarbeitungen
+
+Aktuelle Einarbeitungen
+
+
+
+
+
+
+Abgeschlossen
+
+
+
+
\ No newline at end of file
diff --git a/FoodsharingSiegen.Server/Pages/Prospects.razor.cs b/FoodsharingSiegen.Server/Pages/Prospects.razor.cs
new file mode 100644
index 0000000..ebb2523
--- /dev/null
+++ b/FoodsharingSiegen.Server/Pages/Prospects.razor.cs
@@ -0,0 +1,64 @@
+using FoodsharingSiegen.Contracts.Entity;
+using FoodsharingSiegen.Server.Data.Service;
+using FoodsharingSiegen.Server.Dialogs;
+using Microsoft.AspNetCore.Components;
+
+namespace FoodsharingSiegen.Server.Pages
+{
+ public partial class Prospects
+ {
+ [Inject] public ProspectService ProspectService { get; set; } = null!;
+ [Inject] public UserService UserService { get; set; } = null!;
+
+ public List? ProspectList { get; set; }
+
+ public AddProspectModal ProspectModal { get; set; } = null!;
+ public AddInteractionModal InteractionModal { get; set; }
+ public List? Users { get; set; }
+
+ protected override async Task OnAfterRenderAsync(bool firstRender)
+ {
+ if (firstRender)
+ {
+ await LoadProspects();
+ }
+
+ await base.OnAfterRenderAsync(firstRender);
+ }
+
+ protected override async Task OnInitializedAsync()
+ {
+ var getUsersR = await UserService.GetUsersAsync();
+ if (getUsersR.Success)
+ Users = getUsersR.Data;
+
+ await base.OnInitializedAsync();
+ }
+
+ private async Task LoadProspects()
+ {
+ var prospectsR = await ProspectService.GetProspectsAsync();
+ if (prospectsR.Success) ProspectList = prospectsR.Data;
+
+ await InvokeAsync(StateHasChanged);
+ }
+
+ private async Task OnAddProspect(Prospect arg)
+ {
+ var addProspectR = await ProspectService.AddProspectAsync(arg);
+ if (addProspectR.Success) await LoadProspects();
+ }
+
+ private async Task OnAddInteraction(Interaction arg)
+ {
+ await ProspectService.AddInteraction(arg);
+ await LoadProspects();
+ }
+
+ private async Task RemoveInteraction(Guid arg)
+ {
+ await ProspectService.RemoveInteraction(arg);
+ await LoadProspects();
+ }
+ }
+}
\ No newline at end of file
diff --git a/FoodsharingSiegen.Server/Pages/Prospects.razor.css b/FoodsharingSiegen.Server/Pages/Prospects.razor.css
new file mode 100644
index 0000000..5f28270
--- /dev/null
+++ b/FoodsharingSiegen.Server/Pages/Prospects.razor.css
@@ -0,0 +1 @@
+
\ No newline at end of file