From be89cdcc2ec2dbcf9d5267802ad38406e63b4047 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 24 Jan 2021 22:27:35 +0300 Subject: [PATCH] Refresh attendees area on user registration. --- .../AttendeesAreaViewComponent.cs | 41 ++++++++++++++++++- .../Components/AttendeesArea/Default.cshtml | 35 ++-------------- .../AttendeesArea/attendees-area.js | 18 ++++++++ .../RegistrationArea/registration-area.js | 2 + 4 files changed, 64 insertions(+), 32 deletions(-) create mode 100644 eventhub/src/EventHub.Web/Pages/Events/Components/AttendeesArea/attendees-area.js diff --git a/eventhub/src/EventHub.Web/Pages/Events/Components/AttendeesArea/AttendeesAreaViewComponent.cs b/eventhub/src/EventHub.Web/Pages/Events/Components/AttendeesArea/AttendeesAreaViewComponent.cs index c3df2f6..3860567 100644 --- a/eventhub/src/EventHub.Web/Pages/Events/Components/AttendeesArea/AttendeesAreaViewComponent.cs +++ b/eventhub/src/EventHub.Web/Pages/Events/Components/AttendeesArea/AttendeesAreaViewComponent.cs @@ -1,4 +1,6 @@ using System; +using System.Collections.Generic; +using System.Text; using System.Threading.Tasks; using EventHub.Events.Registrations; using Microsoft.AspNetCore.Mvc; @@ -10,6 +12,7 @@ namespace EventHub.Web.Pages.Events.Components.AttendeesArea [Widget( AutoInitialize = true, RefreshUrl = "/Widgets/EventAttendeesArea", + ScriptFiles = new[] {"/Pages/Events/Components/AttendeesArea/attendees-area.js"}, StyleFiles = new[] {"/Pages/Events/Components/AttendeesArea/attendees-area.css"} )] public class AttendeesAreaViewComponent : AbpViewComponent @@ -27,8 +30,44 @@ namespace EventHub.Web.Pages.Events.Components.AttendeesArea return View( "~/Pages/Events/Components/AttendeesArea/Default.cshtml", - result + new AttendeesAreaViewComponentModel + { + EventId = eventId, + Attendees = result.Items, + TotalCount = result.TotalCount + } ); } + + public class AttendeesAreaViewComponentModel + { + public IReadOnlyList Attendees { get; set; } + + public long TotalCount { get; set; } + + public Guid EventId { get; set; } + + public string GetAttendeeName(EventAttendeeDto attendee) + { + var nameBuilder = new StringBuilder(); + + if (!attendee.Name.IsNullOrEmpty()) + { + nameBuilder.Append(attendee.Name); + } + + if (!attendee.Surname.IsNullOrEmpty()) + { + nameBuilder.Append(attendee.Surname); + } + + if (nameBuilder.Length == 0) + { + nameBuilder.Append(attendee.UserName); + } + + return nameBuilder.ToString(); + } + } } } diff --git a/eventhub/src/EventHub.Web/Pages/Events/Components/AttendeesArea/Default.cshtml b/eventhub/src/EventHub.Web/Pages/Events/Components/AttendeesArea/Default.cshtml index d18468e..06b62a1 100644 --- a/eventhub/src/EventHub.Web/Pages/Events/Components/AttendeesArea/Default.cshtml +++ b/eventhub/src/EventHub.Web/Pages/Events/Components/AttendeesArea/Default.cshtml @@ -1,41 +1,14 @@ -@using System.Text -@using System.Threading.Channels -@using EventHub.Events.Registrations -@model Volo.Abp.Application.Dtos.PagedResultDto - +@model EventHub.Web.Pages.Events.Components.AttendeesArea.AttendeesAreaViewComponent.AttendeesAreaViewComponentModel + Attendees (@Model.TotalCount)
    - @foreach (var attendee in Model.Items) + @foreach (var attendee in Model.Attendees) { -
  • @GetAttendeeName(attendee)
  • +
  • @Model.GetAttendeeName(attendee)
  • }
-@functions -{ - private static string GetAttendeeName(EventAttendeeDto attendee) - { - var nameBuilder = new StringBuilder(); - - if (!attendee.Name.IsNullOrEmpty()) - { - nameBuilder.Append(attendee.Name); - } - - if (!attendee.Surname.IsNullOrEmpty()) - { - nameBuilder.Append(attendee.Surname); - } - - if (nameBuilder.Length == 0) - { - nameBuilder.Append(attendee.UserName); - } - - return nameBuilder.ToString(); - } -} diff --git a/eventhub/src/EventHub.Web/Pages/Events/Components/AttendeesArea/attendees-area.js b/eventhub/src/EventHub.Web/Pages/Events/Components/AttendeesArea/attendees-area.js new file mode 100644 index 0000000..2818756 --- /dev/null +++ b/eventhub/src/EventHub.Web/Pages/Events/Components/AttendeesArea/attendees-area.js @@ -0,0 +1,18 @@ +(function () { + abp.widgets.AttendeesArea = function ($wrapper) { + var eventId = $wrapper.find('[data-event-id]').attr('data-event-id'); + return { + getFilters: function () { + return { + eventId: eventId + }; + } + }; + }; + + abp.event.on("EventHub.Event.RegistrationStatusChanged", function(){ + $('[data-widget-name="AttendeesArea"]') + .data('abp-widget-manager') + .refresh(); + }); +})(); diff --git a/eventhub/src/EventHub.Web/Pages/Events/Components/RegistrationArea/registration-area.js b/eventhub/src/EventHub.Web/Pages/Events/Components/RegistrationArea/registration-area.js index 3f044c9..ae335ea 100644 --- a/eventhub/src/EventHub.Web/Pages/Events/Components/RegistrationArea/registration-area.js +++ b/eventhub/src/EventHub.Web/Pages/Events/Components/RegistrationArea/registration-area.js @@ -20,6 +20,7 @@ url: $registerButton.attr('data-url') }).then(function (){ widgetManager.refresh(); + abp.event.trigger('EventHub.Event.RegistrationStatusChanged'); abp.message.success(l('EventRegisterSuccessMessage'), l('EventRegisterSuccessMessageTitle')); }).always(function (){ $registerButton.buttonBusy(false); @@ -34,6 +35,7 @@ url: $cancelRegistrationButton.attr('data-url') }).then(function (){ widgetManager.refresh(); + abp.event.trigger('EventHub.Event.RegistrationStatusChanged'); abp.notify.info(l('EventRegistrationCancelledMessage')); }).always(function (){ $cancelRegistrationButton.buttonBusy(false);