Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using O2NextGen.CertificateManagement.Domain.Entities;
using O2NextGen.CertificateManagement.Infrastructure.Data;

namespace O2NextGen.CertificateManagement.Application.Controllers.Features.PublishBase;

[ApiVersion("1.0")]
[Route("api/v{v:apiVersion}/[controller]")]
[ApiController]
public class PublishBaseController: ControllerBase
{
private readonly CGenDbContext _context;

public PublishBaseController(CGenDbContext context)
{
_context = context;
}

[HttpGet]
public async Task<IActionResult> Items(int? categoryTypeId, [FromQuery]int pageSize = 6, [FromQuery]int pageIndex = 0)
{
var rootCategories = (IQueryable<CategoryEntity>)_context.Categories;
var exist = rootCategories.FirstOrDefault(_ => _.Id == categoryTypeId);
if (exist == null)
throw new Exception("not found");
var root = (IQueryable<CertificateEntity>)_context.Certificates;

if (categoryTypeId.HasValue)
{
root = root.Where(ci => ci.CategoryId == categoryTypeId);
}

var totalItems = await root
.LongCountAsync();

var itemsOnPage = await root
.Skip(pageSize * pageIndex)
.Take(pageSize)
.ToListAsync();

var model = new PaginatedItemsViewModel<CertificateEntity>(
pageIndex, pageSize, totalItems, itemsOnPage);

return Ok(model);
}
}

public class PaginatedItemsViewModel<TEntity> where TEntity : class
{
public int PageIndex { get; private set; }

public int PageSize { get; private set; }

public long Count { get; private set; }

public IEnumerable<TEntity> Data { get; private set; }

public PaginatedItemsViewModel(int pageIndex, int pageSize, long count, IEnumerable<TEntity> data)
{
this.PageIndex = pageIndex;
this.PageSize = pageSize;
this.Count = count;
this.Data = data;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
}
},
"UrlsConfig": {
"IdentityUrl": "https://localhost:5000"
"IdentityUrl": "https://auth.o2nextgen.com"
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
},
"ConnectionString": "Server=52.185.108.164;Initial Catalog=O2NextGen.CertificateDb;Persist Security Info=False;User ID=sa;Password=yourStrong(!)Password;Connection Timeout=30;",
"UrlsConfig": {
"IdentityUrl": "https://localhost:5000"
"IdentityUrl": "hhttps://auth.o2nextgen.com"
},
"Logging": {
"LogLevel": {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using PFRCentr.App.MvcClient.Models.Dto;
using PFRCentr.App.MvcClient.Services;

namespace PFRCentr.App.MvcClient.Controllers;
public class PaginationInfo
{
public int TotalItems { get; set; }
public int ItemsPerPage { get; set; }
public int ActualPage { get; set; }
public int TotalPages { get; set; }
public string Previous { get; set; }
public string Next { get; set; }
}
public class CatalogIndexViewModel
{
public IEnumerable<PublishCertificateDto> CatalogItems { get; set; }
public IEnumerable<SelectListItem> Types { get; set; }

public int? BrandFilterApplied { get; set; }
public int? TypesFilterApplied { get; set; }
public PaginationInfo PaginationInfo { get; set; }
}

public class PublishBaseController: Controller
{
private readonly IPublishBase _publishBase;

public PublishBaseController(IPublishBase publishBase)
{
_publishBase = publishBase;
}
public async Task<IActionResult> Index(int? TypesFilterApplied, int? page)
{
int itemsPage=10 ;
var catalog = await _publishBase.GetItems<Catalog>(page ?? 0, itemsPage, TypesFilterApplied);
var vm = new CatalogIndexViewModel()
{
CatalogItems = catalog.Data,
//Types = await _publishBase.GetTypes(),
TypesFilterApplied = TypesFilterApplied ?? 0,
PaginationInfo = new PaginationInfo()
{
ActualPage = page ?? 0,
ItemsPerPage = itemsPage ,
TotalItems = catalog.Count,
TotalPages = (int)Math.Ceiling(((decimal)catalog.Count / itemsPage))
}
};

vm.PaginationInfo.Next = (vm.PaginationInfo.ActualPage == vm.PaginationInfo.TotalPages - 1) ? "is-disabled" : "";
vm.PaginationInfo.Previous = (vm.PaginationInfo.ActualPage == 0) ? "is-disabled" : "";

return View(vm);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
namespace PFRCentr.App.MvcClient.Models.Dto;

public class Catalog
{
public int PageIndex { get; set; }
public int PageSize { get; set; }
public int Count { get; set; }
public List<PublishCertificateDto> Data { get; set; }
}
public class PublishCertificateDto
{
public string OwnerAccountId { get; set; }
public string CustomerId { get; set; }
public long ExpiredDate { get; set; }
public long PublishDate { get; set; }
public string CreatorId { get; set; }
public string PublishCode { get; set; }
public bool IsVisible { get; set; }

public long CategoryId { get; set; }
public long Id { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@

builder.Services.AddHttpClient<ICGenCertificateService, CGenCertificateService>();
builder.Services.AddScoped<ICGenCertificateService,CGenCertificateService>();

builder.Services.AddTransient<IPublishBase, PublishBase>();

builder.Services.AddAuthentication(option =>
{
option.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
using Microsoft.AspNetCore.Mvc.Rendering;
using PFRCentr.App.MvcClient.Models.Dto;

namespace PFRCentr.App.MvcClient.Services;

public interface IPublishBase: IBaseService
{
Task<T> GetItems<T>(int page, int take, long? type);
Task<IEnumerable<SelectListItem>> GetTypes();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
using Microsoft.AspNetCore.Mvc.Rendering;
using PFRCentr.App.MvcClient.Models.Dto;

namespace PFRCentr.App.MvcClient.Services;

public class PublishBase : BaseService,IPublishBase
{


public PublishBase(IHttpClientFactory httpClient) : base(httpClient)
{
}


// public Task<PublishCertificateDto> GetItems(int page, int take, int? brand, int? type)
// {
// throw new NotImplementedException();
// }

public async Task<T> GetItems<T>(int page, int take, long? type)
{

return await SendAsync<T>(
new ApiRequest
{
ApiType = SD.ApiType.GET,
Url = SD.CGenApiBase +"/api/v1.0/PublishBase?categoryTypeId=2861&pageSize=14&pageIndex=0",
Token = ""
});
}

public Task<IEnumerable<SelectListItem>> GetTypes()
{
throw new NotImplementedException();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
@model PFRCentr.App.MvcClient.Controllers.CatalogIndexViewModel

@{
ViewBag.Title = "title";
Layout = "_Layout";
}

<h2>title</h2>

<div class="container">
@if (Model.CatalogItems.Count() > 0)
{
@Html.Partial("_Pagination", Model.PaginationInfo)

<div class="esh-catalog-items row">
@foreach (var catalogItem in Model.CatalogItems)
{
<br/>
<img width="100" height="100" src="data:image/png;base64,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" class="detailImage" />
<label> @catalogItem.Id</label>
<label> @catalogItem.CategoryId</label>
<label> @catalogItem.CreatorId</label>
<label> @catalogItem.OwnerAccountId</label>
<br/>
@* <div class="esh-catalog-item col-md-4"> *@
@* @Html.Partial("_product", catalogItem) *@
@* </div> *@
}
</div>

@Html.Partial("_Pagination", Model.PaginationInfo)
}
else
{
<div class="esh-catalog-items row">
THERE ARE NO RESULTS THAT MATCH YOUR SEARCH
</div>
}
</div>
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Web site</a>
</li>
@* <li class="nav-item"> *@
@* <a class="nav-link text-dark" asp-area="" asp-controller="Category" asp-action="CategoryIndex">Categories</a> *@
@* </li> *@
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="PublishBase" asp-action="Index">PublishBase</a>
</li>
@* <li class="nav-item"> *@
@* <a class="nav-link text-dark" asp-area="" asp-controller="Certificate" asp-action="CertificateIndex">Certificaties</a> *@
@* </li> *@
Expand Down Expand Up @@ -77,7 +77,7 @@
&copy; 2023 - O2Bionics LLC - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
</div>
</footer>
<script src="~/lib/jquery/dist/jquery.min.js">
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.9.0/js/all.js" integrity="sha512-MhphDdrtVgCiTUdFBDrRGigpyWU4xU+V/3NzED9A6ZDD879EvIA39i4buHXc8/+iAS+EXh+GBrkduQprR8+qAA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
@model PFRCentr.App.MvcClient.Controllers.PaginationInfo

<div class="esh-pager">
<div class="container">
<article class="esh-pager-wrapper row">
<nav>
<a class="esh-pager-item esh-pager-item--navigable @Model.Previous"
id="Previous"
asp-controller="PublishBase"
asp-action="Index"
asp-route-page="@(Model.ActualPage -1)"
aria-label="Previous">
Previous
</a>

<span class="esh-pager-item">
Showing @Model.ItemsPerPage of @Model.TotalItems products - Page @(Model.ActualPage + 1) - @Model.TotalPages
</span>

<a class="esh-pager-item esh-pager-item--navigable @Model.Next"
id="Next"
asp-controller="PublishBase"
asp-action="Index"
asp-route-page="@(Model.ActualPage + 1)"
aria-label="Next">
Next
</a>
</nav>
</article>
</div>
</div>
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
},
"Services": {
"CallBackUrl":"https://localhost:5003",
"AuthApiUrl": "https://localhost:5000",
"AuthApiUrl": "https://auth.o2nextgen.com",
// "AuthApiUrl": "https://localhost:5000",
//"CGenApiUrl":"https://cgen-api.o2nextgen.com",
"CGenApiUrl":"https://localhost:11001"
}
Expand Down