Browse Source

Make the desired changes after the review

Add tooltip to Gravatars.
Set routing of profile page to "/users/{username}".
Change "Looking for" to "Language".
Put distance between the "Load more" button and the footer section.
Block registration for past events.
Change "Edit Organization" and "Edit Event" buttons to "Submit".
Change the "Share organizations" section to "Links".
Modify User Profile page.
pull/41/head
Berkan Sasmaz 5 years ago
parent
commit
59276894d3
  1. 2
      src/EventHub.Application.Contracts/Events/Registrations/IEventRegistrationAppService.cs
  2. 7
      src/EventHub.Application/Events/Registrations/EventRegistrationAppService.cs
  3. 4
      src/EventHub.Domain.Shared/Localization/EventHub/en.json
  4. 16
      src/EventHub.Domain/Events/Registrations/EventRegistrationManager.cs
  5. 2
      src/EventHub.Web.Theme/Themes/EventHub/Components/Footer/Default.cshtml
  6. 2
      src/EventHub.Web.Theme/Themes/EventHub/Components/MainNavbar/Default.cshtml
  7. 4
      src/EventHub.Web/Pages/Events/Components/AttendeesArea/Default.cshtml
  8. 8
      src/EventHub.Web/Pages/Events/Components/RegistrationArea/Default.cshtml
  9. 2
      src/EventHub.Web/Pages/Events/Components/RegistrationArea/RegistrationAreaViewComponent.cs
  10. 4
      src/EventHub.Web/Pages/Events/Detail.cshtml
  11. 2
      src/EventHub.Web/Pages/Events/Edit.cshtml
  12. 2
      src/EventHub.Web/Pages/Events/Index.cshtml
  13. 2
      src/EventHub.Web/Pages/Index.cshtml
  14. 4
      src/EventHub.Web/Pages/Organizations/Components/MembersArea/_memberListSection.cshtml
  15. 2
      src/EventHub.Web/Pages/Organizations/Edit.cshtml
  16. 6
      src/EventHub.Web/Pages/Organizations/Profile.cshtml
  17. 105
      src/EventHub.Web/Pages/Users.cshtml
  18. 0
      src/EventHub.Web/Pages/Users.cshtml.cs

2
src/EventHub.Application.Contracts/Events/Registrations/IEventRegistrationAppService.cs

@ -16,5 +16,7 @@ namespace EventHub.Events.Registrations
Task<PagedResultDto<EventAttendeeDto>> GetAttendeesAsync(Guid eventId);
Task<int> GetAttendeeCountAsync(Guid eventId);
Task<bool> IsPastEventAsync(Guid eventId);
}
}

7
src/EventHub.Application/Events/Registrations/EventRegistrationAppService.cs

@ -85,5 +85,12 @@ namespace EventHub.Events.Registrations
{
return await _eventRegistrationRepository.CountAsync(x => x.EventId == eventId);
}
public async Task<bool> IsPastEventAsync(Guid eventId)
{
var @event = await _eventRepository.GetAsync(eventId);
return _eventRegistrationManager.IsPastEvent(@event);
}
}
}

4
src/EventHub.Domain.Shared/Localization/EventHub/en.json

@ -71,7 +71,6 @@
"EventCoverImageExtensionNotAllowed": "This image extension is not allowed. Allowed extensions: png, jpg, jpeg",
"ChooseEventCoverImageInfo": "Maximum image size: 1MB.",
"ProfilePicturePreview": "Profile Picture Preview",
"EditEvent": "Edit Event",
"EventInformation": "Event Information",
"EventCapacityLabel": "Capacity (Optional)",
"EventCapacityInfo": "Capacity can not be lower than the currently registered user count : {0}",
@ -82,6 +81,7 @@
"EventCoverImage": "Event Cover Image",
"EventTimingPreview": "Event Timing Preview",
"CoverImagePreview": "Cover Image Preview",
"EventTimingChangeSuccessMessage": "The time of the event has been changed successfully!"
"EventTimingChangeSuccessMessage": "The time of the event has been changed successfully!",
"PastEvent": "Past Event"
}
}

16
src/EventHub.Domain/Events/Registrations/EventRegistrationManager.cs

@ -20,7 +20,10 @@ namespace EventHub.Events.Registrations
Event @event,
AppUser user)
{
CheckEventEndTime(@event);
if (IsPastEvent(@event))
{
throw new BusinessException(EventHubErrorCodes.CantRegisterOrUnregisterForAPastEvent);
}
if (await IsRegisteredAsync(@event, user))
{
@ -48,7 +51,10 @@ namespace EventHub.Events.Registrations
Event @event,
AppUser user)
{
CheckEventEndTime(@event);
if (IsPastEvent(@event))
{
throw new BusinessException(EventHubErrorCodes.CantRegisterOrUnregisterForAPastEvent);
}
await _eventRegistrationRepository.DeleteAsync(
x => x.EventId == @event.Id && x.UserId == user.Id
@ -63,12 +69,14 @@ namespace EventHub.Events.Registrations
.AnyAsync(x => x.EventId == @event.Id && x.UserId == user.Id);
}
private void CheckEventEndTime(Event @event)
public bool IsPastEvent(Event @event)
{
if (Clock.Now > @event.EndTime)
{
throw new BusinessException(EventHubErrorCodes.CantRegisterOrUnregisterForAPastEvent);
return true;
}
return false;
}
}
}

2
src/EventHub.Web.Theme/Themes/EventHub/Components/Footer/Default.cshtml

@ -3,7 +3,7 @@
@using Volo.Abp.Users
@inject ICurrentUser CurrentUser
<footer class="mt-2">
<footer class="mt-5">
<div class="container">
<div class="row">
<div class="col-md">

2
src/EventHub.Web.Theme/Themes/EventHub/Components/MainNavbar/Default.cshtml

@ -59,7 +59,7 @@
<a class="dropdown-item" href="@(EventHubExternalUrls.EhAccount.EnsureEndsWith('/') + "account/manage")" target="_blank" title="@L["Account"]">
<i class="fas fa-cog"></i> @L["Account"]
</a>
<a class="dropdown-item" href="/members/profile?username=@CurrentUser.UserName" title="@L["Profile"]">
<a class="dropdown-item" href="/users/@CurrentUser.UserName" title="@L["Profile"]">
<i class="fas fa-user"></i> @L["Profile"]
</a>
<a class="dropdown-item" href="/account/logout?returnUrl=@EventHubExternalUrls.EhWww@(System.Net.WebUtility.UrlEncode(Context.Request.GetEncodedPathAndQuery()))" title="@L["Logout"]">

4
src/EventHub.Web/Pages/Events/Components/AttendeesArea/Default.cshtml

@ -5,8 +5,8 @@
<div>
@foreach (var attendee in Model.Attendees)
{
<a href="/members/profile?username=@attendee.UserName">
<img gravatar-email="@attendee.Email" default-image="Wavatar" gravatar-size="40" class="org-avatar rounded-circle"/>
<a href="/users/@attendee.UserName">
<img gravatar-email="@attendee.Email" default-image="Wavatar" gravatar-size="40" class="org-avatar rounded-circle" data-toggle="tooltip" title="@attendee.UserName" />
</a>
}
</div>

8
src/EventHub.Web/Pages/Events/Components/RegistrationArea/Default.cshtml

@ -12,6 +12,14 @@
size="Large"
text="@L["YouAttendedThisEvent"].Value"
data-url="@Url.Action("Unregister", "EventRegistration", new {eventId = Model.EventId})"/>
}else if (Model.IsPastEvent)
{
<abp-button class="mt-4" id="PastEventButton"
button-type="Dark"
size="Large"
text="@L["PastEvent"].Value"
disabled="true"
abp-tooltip-top="@L["EventHub:CantRegisterOrUnregisterForAPastEvent"].Value" />
}
else
{

2
src/EventHub.Web/Pages/Events/Components/RegistrationArea/RegistrationAreaViewComponent.cs

@ -37,6 +37,7 @@ namespace EventHub.Web.Pages.Events.Components.RegistrationArea
if (model.IsLoggedIn)
{
model.IsRegistered = await _eventRegistrationAppService.IsRegisteredAsync(eventId);
model.IsPastEvent = await _eventRegistrationAppService.IsPastEventAsync(eventId);
}
return View("~/Pages/Events/Components/RegistrationArea/Default.cshtml", model);
@ -47,6 +48,7 @@ namespace EventHub.Web.Pages.Events.Components.RegistrationArea
public Guid EventId { get; set; }
public bool IsLoggedIn { get; set; }
public bool IsRegistered { get; set; }
public bool IsPastEvent { get; set; }
}
}
}

4
src/EventHub.Web/Pages/Events/Detail.cshtml

@ -43,8 +43,8 @@
<h5 class="detail-head mt-4">Owner</h5>
<div>
<a href="/members/profile?username=@Model.Event.OwnerUserName">
<img gravatar-email="@Model.Event.OwnerEmail" default-image="Wavatar" gravatar-size="40" class="org-avatar avatar rounded-circle"/>
<a href="/users/@Model.Event.OwnerUserName">
<img gravatar-email="@Model.Event.OwnerEmail" default-image="Wavatar" gravatar-size="40" class="org-avatar avatar rounded-circle" data-toggle="tooltip" title="@Model.Event.OwnerUserName"/>
</a>
</div>
@if (Model.IsEventOwner)

2
src/EventHub.Web/Pages/Events/Edit.cshtml

@ -127,7 +127,7 @@
<div class="col-md-12 text-right">
<button type="submit" class="btn btn-primary btn-lg">
Edit Event
@L["Submit"]
</button>
</div>
</div>

2
src/EventHub.Web/Pages/Events/Index.cshtml

@ -43,7 +43,7 @@
<div class="row filter-select">
<div class="col-4 pr-0">
<select id="LanguageSelect" asp-for="Language" class="form-select" aria-label="en">
<option value="" selected>Looking for</option>
<option value="" selected>Language</option>
@foreach (var language in Model.Languages)
{
<option value=@language.TwoLetterISOLanguageName>@language.EnglishName</option>

2
src/EventHub.Web/Pages/Index.cshtml

@ -57,7 +57,7 @@
<div class="form-row search-form">
<div class="col-md mb-3 mb-md-0">
<select id="LanguageSelect" class="form-select" aria-label="en">
<option value="" selected>Looking for</option>
<option value="" selected>Language</option>
@foreach (var language in Model.Languages)
{
<option value=@language.TwoLetterISOLanguageName>@language.EnglishName</option>

4
src/EventHub.Web/Pages/Organizations/Components/MembersArea/_memberListSection.cshtml

@ -4,8 +4,8 @@
{
<div>
<div>
<a href="/members/profile?username=@member.UserName">
<img gravatar-email="@member.Email" default-image="Wavatar" gravatar-size="40" class="org-avatar avatar rounded-circle"/>
<a href="/users/@member.UserName">
<img gravatar-email="@member.Email" default-image="Wavatar" gravatar-size="40" class="org-avatar avatar rounded-circle" data-toggle="tooltip" title="@member.UserName"/>
</a>
<span class="member-name" style="display: none">
@if (!string.IsNullOrWhiteSpace(member.Name) && !string.IsNullOrWhiteSpace(member.Surname))

2
src/EventHub.Web/Pages/Organizations/Edit.cshtml

@ -109,7 +109,7 @@
</div>
<div class="col-md-12 text-right">
<button type="submit" class="btn btn-primary btn-lg">
Edit Organization
@L["Submit"]
</button>
</div>
</div>

6
src/EventHub.Web/Pages/Organizations/Profile.cshtml

@ -63,8 +63,8 @@
<div class="col-md-5">
<h5 class="detail-head mt-3 font-weight-bold">Owners</h5>
<div>
<a href="/members/profile?username=@Model.Organization.OwnerUserName">
<img gravatar-email="@Model.Organization.OwnerEmail" default-image="Wavatar" gravatar-size="40" class="org-avatar avatar rounded-circle" data-toggle="tooltip" title="" data-original-title="@Model.Organization.OwnerUserName"/>
<a href="/users/@Model.Organization.OwnerUserName">
<img gravatar-email="@Model.Organization.OwnerEmail" default-image="Wavatar" gravatar-size="40" class="org-avatar avatar rounded-circle" data-toggle="tooltip" title="@Model.Organization.OwnerUserName"/>
</a>
</div>
@ -85,7 +85,7 @@
@if (Model.IsShowSocialMediaContent)
{
<h5 class="detail-head mt-5 font-weight-bold">Share Organizations</h5>
<h5 class="detail-head mt-5 font-weight-bold">Links</h5>
<div class="share-container">
@if (!Model.Organization.Website.IsNullOrWhiteSpace())
{

105
src/EventHub.Web/Pages/Members/Profile.cshtml → src/EventHub.Web/Pages/Users.cshtml

@ -1,4 +1,4 @@
@page
@page "/users/{userName}"
@using System.Globalization
@using EventHub.Localization
@using EventHub.Web.Pages.Events.Components.EventsArea
@ -27,7 +27,6 @@
{
<h4 class="m-0 mt-4">@Model.User.Name @Model.User.Surname</h4>
}
</div>
<div class="mt-4">
<small class="text-muted text-uppercase">UserName</small>
@ -44,50 +43,46 @@
</div>
</div>
<div class="col-md-10">
<ul class="nav nav-tabs profile-nav" id="profileTab">
<li class="nav-item">
<a href="#Organizations" class="nav-link active" data-toggle="tab">Organizations</a>
</li>
<li class="nav-item">
<a href="#AttendedEvents" class="nav-link" data-toggle="tab">Attended Events</a>
</li>
<li class="nav-item">
<a href="#UpcomingEvents" class="nav-link" data-toggle="tab">Upcoming Events</a>
</li>
</ul>
<abp-row>
<abp-column size="_8">
<ul class="nav nav-tabs profile-nav" id="profileTab">
<li class="nav-item">
<a href="#UpcomingEvents" class="nav-link active" data-toggle="tab">Upcoming Events</a>
</li>
<li class="nav-item">
<a href="#AttendedEvents" class="nav-link" data-toggle="tab">Attended Events</a>
</li>
<li class="nav-item">
<a href="#Organizations" class="nav-link" data-toggle="tab">Organizations</a>
</li>
</ul>
</abp-column>
@if (CurrentUser.IsAuthenticated)
{
@if (CurrentUser.Id == Model.User.Id)
{
<abp-column size="_4">
<div class="text-right">
<a abp-button="Primary" size="Small" href="@Url.Page("/Organizations/New")">@L["CreateAnOrganization"]</a>
</div>
</abp-column>
}
}
</abp-row>
<div class="tab-content profile-content py-4">
<div id="Organizations" class="tab-pane fade show active">
<div id="UpcomingEvents" class="tab-pane fade show active">
<div class="row">
<div class="col">
<div class="card">
<div class="card-body" style="min-height: 496px">
<div>
<div class="row mb-4">
<div class="col-8">
<h3>
Ownered Organizations
</h3>
</div>
@if (CurrentUser.IsAuthenticated)
{
@if (CurrentUser.Id == Model.User.Id)
{
<div class="col-4 text-right">
<a abp-button="Primary" size="Small" href="@Url.Page("/Organizations/New")">@L["CreateAnOrganization"]</a>
</div>
}
}
</div>
<partial name="~/Pages/Organizations/Components/OrganizationsArea/_organizationListSection.cshtml" model="@Model.Organizations"/>
</div>
<div>
<h3 class="mb-4">Membership Organizations</h3>
@await Component.InvokeAsync(typeof(OrganizationsAreaViewComponent), new
{
registeredUserId = Model.User.Id,
maxResultCount = 6
})
</div>
<h3 class="mb-4">Upcoming Events</h3>
@await Component.InvokeAsync(typeof(EventsAreaViewComponent), new
{
minDate = Clock.Now.ClearTime(),
registeredUserId = Model.User.Id,
maxResultCount = 6,
skipCount = 0,
})
</div>
</div>
</div>
@ -113,19 +108,29 @@
</div>
</div>
</div>
<div id="UpcomingEvents" class="tab-pane fade">
<div id="Organizations" class="tab-pane fade">
<div class="row">
<div class="col">
<div class="card">
<div class="card-body" style="min-height: 496px">
<h3 class="mb-4">Upcoming Events</h3>
@await Component.InvokeAsync(typeof(EventsAreaViewComponent), new
{
minDate = Clock.Now.ClearTime(),
registeredUserId = Model.User.Id,
maxResultCount = 6,
skipCount = 0,
})
<div id="membership-organizations">
<h3 class="mb-4">My Organizations</h3>
@await Component.InvokeAsync(typeof(OrganizationsAreaViewComponent), new
{
registeredUserId = Model.User.Id,
maxResultCount = 6
})
</div>
<div id="owned-organizations">
<div class="row mb-4">
<div class="col-8">
<h3>
Owned Organizations
</h3>
</div>
</div>
<partial name="~/Pages/Organizations/Components/OrganizationsArea/_organizationListSection.cshtml" model="@Model.Organizations"/>
</div>
</div>
</div>
</div>

0
src/EventHub.Web/Pages/Members/Profile.cshtml.cs → src/EventHub.Web/Pages/Users.cshtml.cs

Loading…
Cancel
Save