Browse Source

Basic organization profile page.

pull/15/head
Halil İbrahim Kalkan 6 years ago
parent
commit
a7cc7dfc34
  1. 2
      eventhub/src/EventHub.Application.Contracts/Organizations/IOrganizationAppService.cs
  2. 26
      eventhub/src/EventHub.Application.Contracts/Organizations/OrganizationProfileDto.cs
  3. 1
      eventhub/src/EventHub.Application/EventHubApplicationAutoMapperProfile.cs
  4. 6
      eventhub/src/EventHub.Application/Organizations/OrganizationAppService.cs
  5. 4
      eventhub/src/EventHub.Domain.Shared/Localization/EventHub/en.json
  6. 18
      eventhub/src/EventHub.Web/Pages/Organizations/OrganizationProfile.cshtml
  7. 12
      eventhub/src/EventHub.Web/Pages/Organizations/OrganizationProfile.cshtml.cs
  8. 8
      eventhub/test/EventHub.Application.Tests/Organizations/OrganizationAppServiceTests.cs

2
eventhub/src/EventHub.Application.Contracts/Organizations/IOrganizationAppService.cs

@ -9,5 +9,7 @@ namespace EventHub.Organizations
Task CreateAsync(CreateOrganizationDto input);
Task<PagedResultDto<OrganizationInListDto>> GetListAsync(PagedResultRequestDto input);
Task<OrganizationProfileDto> GetProfileAsync(string name);
}
}

26
eventhub/src/EventHub.Application.Contracts/Organizations/OrganizationProfileDto.cs

@ -0,0 +1,26 @@
using System;
using Volo.Abp.Application.Dtos;
namespace EventHub.Organizations
{
public class OrganizationProfileDto : EntityDto<Guid>
{
public string Name { get; set; }
public string DisplayName { get; set; }
public string Description { get; set; }
public string Website { get; set; }
public string TwitterUsername { get; set; }
public string GitHubUsername { get; set; }
public string FacebookUsername { get; set; }
public string InstagramUsername { get; set; }
public string MediumUsername { get; set; }
}
}

1
eventhub/src/EventHub.Application/EventHubApplicationAutoMapperProfile.cs

@ -8,6 +8,7 @@ namespace EventHub
public EventHubApplicationAutoMapperProfile()
{
CreateMap<Organization, OrganizationInListDto>();
CreateMap<Organization, OrganizationProfileDto>();
}
}
}

6
eventhub/src/EventHub.Application/Organizations/OrganizationAppService.cs

@ -46,5 +46,11 @@ namespace EventHub.Organizations
ObjectMapper.Map<List<Organization>, List<OrganizationInListDto>>(organizations)
);
}
public async Task<OrganizationProfileDto> GetProfileAsync(string name)
{
var organization = await _organizationRepository.GetAsync(o => o.Name == name);
return ObjectMapper.Map<Organization, OrganizationProfileDto>(organization);
}
}
}

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

@ -10,6 +10,8 @@
"DisplayName:Name": "Name",
"DisplayName:DisplayName": "Display Name",
"DisplayName:Description": "Description",
"EventHub:OrganizationNameAlreadyExists": "The organization {Name} already exists. Please use another name."
"EventHub:OrganizationNameAlreadyExists": "The organization {Name} already exists. Please use another name.",
"Events": "Events",
"Members": "Members"
}
}

18
eventhub/src/EventHub.Web/Pages/Organizations/OrganizationProfile.cshtml

@ -1,3 +1,19 @@
@page "/organizations/{name}"
@inject IHtmlLocalizer<EventHubResource> L
@using EventHub.Localization
@using Microsoft.AspNetCore.Mvc.Localization
@model EventHub.Web.Pages.Organizations.OrganizationProfile
<h1>Organization: @Model.Name</h1>
<h1>@Model.Organization.DisplayName <small class="text-muted">@Model.Organization.Name</small></h1>
<img class="img-fluid mb-3" src="https://picsum.photos/seed/@Model.Name/1920/400?blur=8">
<p class="lead">
@Model.Organization.Description
</p>
<abp-tabs>
<abp-tab title="@L["Events"].Value">
TODO
</abp-tab>
<abp-tab title="@L["Members"].Value">
TODO
</abp-tab>
</abp-tabs>

12
eventhub/src/EventHub.Web/Pages/Organizations/OrganizationProfile.cshtml.cs

@ -1,4 +1,5 @@
using System.Threading.Tasks;
using EventHub.Organizations;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
@ -9,9 +10,18 @@ namespace EventHub.Web.Pages.Organizations
[BindProperty(SupportsGet = true)]
public string Name { get; set; }
public async Task OnGetAsync()
public OrganizationProfileDto Organization { get; set; }
private readonly IOrganizationAppService _organizationAppService;
public OrganizationProfile(IOrganizationAppService organizationAppService)
{
_organizationAppService = organizationAppService;
}
public async Task OnGetAsync()
{
Organization = await _organizationAppService.GetProfileAsync(Name);
}
}
}

8
eventhub/test/EventHub.Application.Tests/Organizations/OrganizationAppServiceTests.cs

@ -60,5 +60,13 @@ namespace EventHub.Organizations
result.Items.ShouldContain(o => o.Name == _testData.OrganizationVolosoftName && o.Id == _testData.OrganizationVolosoftId);
result.Items.ShouldContain(o => o.Name == _testData.OrganizationDotnetEuropeName && o.Id == _testData.OrganizationDotnetEuropeId);
}
[Fact]
public async Task Should_Get_An_Organization_Profile()
{
var result = await _organizationAppService.GetProfileAsync(_testData.OrganizationVolosoftName);
result.Id.ShouldBe(_testData.OrganizationVolosoftId);
result.Name.ShouldBe(_testData.OrganizationVolosoftName);
}
}
}

Loading…
Cancel
Save