Browse Source

Merge branch 'main' into skoc10-k8s

pull/116/head
Galip Tolga Erdem 4 years ago
parent
commit
c6dc31c9c9
  1. 25
      .github/workflows/dotnet.yml
  2. 29
      apps/public-web/src/EShopOnAbp.PublicWeb/Components/UserOrders/Default.cshtml
  3. 1
      apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbp.PublicWeb.csproj
  4. 14
      apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbpPublicWebModule.cs
  5. 20
      apps/public-web/src/EShopOnAbp.PublicWeb/Pages/Index.cshtml
  6. 55
      apps/public-web/src/EShopOnAbp.PublicWeb/Pages/ProductDetail.cshtml
  7. 28
      apps/public-web/src/EShopOnAbp.PublicWeb/Pages/ProductDetail.cshtml.cs
  8. 5
      apps/public-web/src/EShopOnAbp.PublicWeb/Pages/index.css
  9. 4
      apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/components/user-orders/user-order-widget.css

25
.github/workflows/dotnet.yml

@ -0,0 +1,25 @@
name: .NET
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v2
with:
dotnet-version: 6.0.x
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --no-restore
- name: Test
run: dotnet test --no-build --verbosity normal

29
apps/public-web/src/EShopOnAbp.PublicWeb/Components/UserOrders/Default.cshtml

@ -6,13 +6,16 @@
@model EShopOnAbp.PublicWeb.Components.UserOrders.UserOrderWidgetViewComponent.UserOrderViewModel
@inject IStringLocalizer<EShopOnAbpResource> L
@inject IOptions<AbpRemoteServiceOptions> options
@if (Model.ServiceError)
{
<div>SERVICE ERROR</div>
}
<abp-row class="m-2 p-2" style="text-align: center">
<span class="order-title">@L["UserOrders:TotalOrderCount"] <strong>@Model.UserOrders.Count</strong></span>
</abp-row>
@foreach (var order in Model.UserOrders)
{
var orderTotalString = order.Items.Sum(q => q.UnitPrice * q.Units).ToString("C", new CultureInfo("en-US"));
@ -51,24 +54,32 @@
</div>
<abp-row>
<abp-column size="_2">
@{
string imageUrl = $"{options.Value.RemoteServices.Default.BaseUrl}product-images/{item.PictureUrl}";
<img class="img-size" src="@imageUrl" />
}
<a href="/products/@item.ProductId.ToString()">
@{
string imageUrl = $"{options.Value.RemoteServices.Default.BaseUrl}product-images/{item.PictureUrl}";
<img class="img-size" src="@imageUrl" />
}
</a>
</abp-column>
<abp-column size-lg="_4">
<div><strong>@item.ProductName</strong></div>
<div>@L["UserOrders:ProductReturnDate"] @order.OrderDate.AddMonths(1).ToString("dd MMMM yyyy")</div>
<abp-column size-lg="_4" size-md="_4" size-sm="_4">
<a href="/products/@item.ProductId.ToString()">
<div><strong>@item.ProductName</strong></div>
<div>@L["UserOrders:ProductReturnDate"] @order.OrderDate.AddMonths(1).ToString("dd MMMM yyyy")</div>
</a>
<div class="mt-3">
<abp-button icon="fas fa-cart-plus" class="btn btn-warning buy-again" text="@L["UserOrders:BuyAgain"]" data-product-id="@item.ProductId"></abp-button>
</div>
</abp-column>
<abp-column offset="_3" size="_2">
<abp-row class="pb-3">
<abp-button class="btn btn-light shadow" disabled="true" abp-tooltip-right="Not available yet">@L["UserOrders:ReturnProducts"]</abp-button>
<abp-button class="btn btn-light shadow" disabled="true" abp-tooltip-right="Not available yet">
@L["UserOrders:ReturnProducts"]
</abp-button>
</abp-row>
<abp-row>
<abp-button class="btn btn-light shadow" disabled="true" abp-tooltip-right="Not available yet">@L["UserOrders:AddReview"]</abp-button>
<abp-button class="btn btn-light shadow" disabled="true" abp-tooltip-right="Not available yet">
@L["UserOrders:AddReview"]
</abp-button>
</abp-row>
</abp-column>
</abp-row>

1
apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbp.PublicWeb.csproj

@ -6,6 +6,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="6.0.1" />
<PackageReference Include="Microsoft.Extensions.Http.Polly" Version="6.0.7" />
<PackageReference Include="Volo.Abp.AutoMapper" Version="5.1.2" />
<PackageReference Include="Yarp.ReverseProxy" Version="1.0.0" />
</ItemGroup>

14
apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbpPublicWebModule.cs

@ -20,6 +20,7 @@ using StackExchange.Redis;
using System;
using System.Net.Http.Headers;
using Microsoft.AspNetCore.HttpOverrides;
using Polly;
using Volo.Abp;
using Volo.Abp.Account;
using Volo.Abp.AspNetCore.Authentication.OpenIdConnect;
@ -74,6 +75,19 @@ public class EShopOnAbpPublicWebModule : AbpModule
typeof(EShopOnAbpPublicWebModule).Assembly
);
});
PreConfigure<AbpHttpClientBuilderOptions>(options =>
{
options.ProxyClientBuildActions.Add((remoteServiceName, clientBuilder) =>
{
clientBuilder.AddTransientHttpErrorPolicy(policyBuilder =>
policyBuilder.WaitAndRetryAsync(
3,
i => TimeSpan.FromSeconds(Math.Pow(2, i))
)
);
});
});
}
public override void ConfigureServices(ServiceConfigurationContext context)

20
apps/public-web/src/EShopOnAbp.PublicWeb/Pages/Index.cshtml

@ -14,12 +14,12 @@
}
@section styles{
<abp-style src="/Pages/index.css" />
<abp-style src="/Pages/index.css" />
}
@section scripts {
<abp-script src="/client-proxies/basket-proxy.js" />
<abp-script src="/Pages/index.js" />
<abp-script src="/client-proxies/basket-proxy.js" />
<abp-script src="/Pages/index.js" />
}
@if (Model.HasRemoteServiceError)
@ -44,13 +44,15 @@
string productImage = !product.ImageName.IsNullOrEmpty() ? $"{options.Value.RemoteServices.Default.BaseUrl}product-images/{product.ImageName}" : $"{options.Value.RemoteServices.Default.BaseUrl}product-images/@product.ImageName";
string buyText = L["Index:AddToBasket"];
<div class="product-list-item" data-product-id="@product.Id.ToString()">
<div class="col">
<div class="product-info-box">
<h6>@product.Name</h6>
<em class="d-block text-muted">@product.Code - @L["StockCount"]: @product.StockCount</em>
<a href="/products/@product.Id.ToString()">
<div class="col">
<div class="product-info-box">
<h6>@product.Name</h6>
<em class="d-block text-muted">@product.Code - @L["StockCount"]: @product.StockCount</em>
</div>
</div>
</div>
<img src="@productImage" />
<img src="@productImage" />
</a>
<div class="row mt-5 ">
@if (product.StockCount > 0)
{

55
apps/public-web/src/EShopOnAbp.PublicWeb/Pages/ProductDetail.cshtml

@ -0,0 +1,55 @@
@page "/products/{id:guid}"
@using EShopOnAbp.Localization
@using Microsoft.Extensions.Localization
@using System.Globalization
@using Microsoft.Extensions.Options
@using Volo.Abp.Http.Client
@model EShopOnAbp.PublicWeb.Pages.ProductDetailModel
@inject IStringLocalizer<EShopOnAbpResource> L
@inject IOptions<AbpRemoteServiceOptions> options
@section styles{
<abp-style src="/Pages/index.css" />
}
@section scripts {
<abp-script src="/client-proxies/basket-proxy.js" />
<abp-script src="/Pages/index.js" />
}
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-6 col-md-6 col-sm-6 ">
<div class="product-list">
@{
var product = Model.Product;
var productPrice = product.Price.ToString("C", new CultureInfo("en-US"));
string productImage = !product.ImageName.IsNullOrEmpty() ? $"{options.Value.RemoteServices.Default.BaseUrl}product-images/{product.ImageName}" : $"{options.Value.RemoteServices.Default.BaseUrl}product-images/@product.ImageName";
string buyText = L["Index:AddToBasket"];
<div class="product-list-item" data-product-id="@product.Id.ToString()" style="cursor:auto">
<div class="col">
<div class="product-info-box">
<h6>@product.Name</h6>
<em class="d-block text-muted">@product.Code - @L["StockCount"]: @product.StockCount</em>
</div>
</div>
<img src="@productImage" />
<div class="row mt-5 ">
@if (product.StockCount > 0)
{
<abp-button class="add-basket-button" button-type="Warning" text="@buyText" data-product-id="@product.Id.ToString()"></abp-button>
}
else
{
<abp-button disabled="true" class="add-basket-button" button-type="Warning" text="@L["Index:OutOfStock"]" />
}
<div class="info-section col" style="text-align: center">
<span class="product-price">@productPrice</span>
</div>
</div>
</div>
}
</div>
</div>
</div>
</div>

28
apps/public-web/src/EShopOnAbp.PublicWeb/Pages/ProductDetail.cshtml.cs

@ -0,0 +1,28 @@
using EShopOnAbp.CatalogService.Products;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Threading.Tasks;
using Volo.Abp.AspNetCore.Mvc.UI.RazorPages;
namespace EShopOnAbp.PublicWeb.Pages
{
public class ProductDetailModel : AbpPageModel
{
[BindProperty(SupportsGet = true)]
public int OrderNo { get; set; }
public ProductDto Product { get; private set; }
private readonly IPublicProductAppService _productAppService;
public ProductDetailModel(IPublicProductAppService productAppService)
{
_productAppService = productAppService;
}
public async Task OnGet(Guid id)
{
Product = await _productAppService.GetAsync(id);
}
}
}

5
apps/public-web/src/EShopOnAbp.PublicWeb/Pages/index.css

@ -2,6 +2,11 @@
background-color: #f9f9f9;
}
a, a:hover, a:visited, a:active {
color: inherit;
text-decoration: none;
}
.product-list-item {
background-color: #fff;
padding: 2em;

4
apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/components/user-orders/user-order-widget.css

@ -0,0 +1,4 @@
a, a:hover, a:visited, a:active {
color: inherit;
text-decoration: none;
}
Loading…
Cancel
Save