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.Name + + Profil öffnen + +
+
@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