mirror of
https://github.com/claunia/marechai.git
synced 2025-12-16 19:14:25 +00:00
Optimize view of companies.
This commit is contained in:
@@ -30,8 +30,10 @@
|
|||||||
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Cicm.Database.Models;
|
using Cicm.Database.Models;
|
||||||
|
using cicm_web.Models;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
namespace cicm_web.Controllers
|
namespace cicm_web.Controllers
|
||||||
{
|
{
|
||||||
@@ -56,9 +58,16 @@ namespace cicm_web.Controllers
|
|||||||
ViewBag.Letter = id;
|
ViewBag.Letter = id;
|
||||||
|
|
||||||
ViewBag.WebRootPath = hostingEnvironment.WebRootPath;
|
ViewBag.WebRootPath = hostingEnvironment.WebRootPath;
|
||||||
return View(id == '\0'
|
|
||||||
? _context.Companies.ToArray()
|
if(id == '\0') return RedirectToAction(nameof(Index));
|
||||||
: _context.Companies.Where(c => c.Name.StartsWith(id)).ToArray());
|
|
||||||
|
return View(_context.Companies.Include(c => c.Logos).Where(c => c.Name.StartsWith(id)).OrderBy(c => c.Name)
|
||||||
|
.Select(c => new CompanyViewModel
|
||||||
|
{
|
||||||
|
Id = c.Id,
|
||||||
|
LastLogo = c.Logos.OrderByDescending(l => l.Year).FirstOrDefault().Guid,
|
||||||
|
Name = c.Name
|
||||||
|
}).ToList());
|
||||||
}
|
}
|
||||||
|
|
||||||
public IActionResult View(int id)
|
public IActionResult View(int id)
|
||||||
@@ -77,16 +86,33 @@ namespace cicm_web.Controllers
|
|||||||
{
|
{
|
||||||
ViewBag.Iso3166 = _context.Iso31661Numeric.FirstOrDefault(i => i.Id == id);
|
ViewBag.Iso3166 = _context.Iso31661Numeric.FirstOrDefault(i => i.Id == id);
|
||||||
|
|
||||||
|
if(ViewBag.Iso3166 is null) RedirectToAction(nameof(Index));
|
||||||
|
|
||||||
ViewBag.WebRootPath = hostingEnvironment.WebRootPath;
|
ViewBag.WebRootPath = hostingEnvironment.WebRootPath;
|
||||||
return View(ViewBag.Iso3166 == null
|
return View(_context.Companies.Include(c => c.Logos).Where(c => c.CountryId == id).OrderBy(c => c.Name)
|
||||||
? _context.Companies.ToArray()
|
.Select(c => new CompanyViewModel
|
||||||
: _context.Companies.Where(c => c.CountryId == id).ToArray());
|
{
|
||||||
|
Id = c.Id,
|
||||||
|
LastLogo = c.Logos.OrderByDescending(l => l.Year).FirstOrDefault().Guid,
|
||||||
|
Name = c.Name
|
||||||
|
}).ToList());
|
||||||
}
|
}
|
||||||
|
|
||||||
public IActionResult Index()
|
public IActionResult Index()
|
||||||
{
|
{
|
||||||
ViewBag.WebRootPath = hostingEnvironment.WebRootPath;
|
ViewBag.WebRootPath = hostingEnvironment.WebRootPath;
|
||||||
return View(_context.Companies.ToArray());
|
|
||||||
|
return View(_context.Companies.Include(c => c.Logos).OrderBy(c => c.Name).Select(c => new CompanyViewModel
|
||||||
|
{
|
||||||
|
Id = c.Id,
|
||||||
|
LastLogo = c
|
||||||
|
.Logos
|
||||||
|
.OrderByDescending(l =>
|
||||||
|
l.Year)
|
||||||
|
.FirstOrDefault()
|
||||||
|
.Guid,
|
||||||
|
Name = c.Name
|
||||||
|
}).ToList());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
11
cicm_web/Models/CompanyViewModel.cs
Normal file
11
cicm_web/Models/CompanyViewModel.cs
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace cicm_web.Models
|
||||||
|
{
|
||||||
|
public class CompanyViewModel
|
||||||
|
{
|
||||||
|
public int Id;
|
||||||
|
public Guid? LastLogo;
|
||||||
|
public string Name;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -32,8 +32,7 @@
|
|||||||
ViewData["Title"] = "Companies";
|
ViewData["Title"] = "Companies";
|
||||||
}
|
}
|
||||||
@using System.IO
|
@using System.IO
|
||||||
@using Cicm.Database.Models
|
@model IEnumerable<CompanyViewModel>
|
||||||
@model Cicm.Database.Models.Company[]
|
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
@if(ViewBag.Iso3166 != null)
|
@if(ViewBag.Iso3166 != null)
|
||||||
@@ -63,24 +62,24 @@
|
|||||||
{
|
{
|
||||||
<p>
|
<p>
|
||||||
@Model.Count() companies found in the database.<br />
|
@Model.Count() companies found in the database.<br />
|
||||||
@foreach(Company company in Model)
|
@foreach(CompanyViewModel company in Model)
|
||||||
{
|
{
|
||||||
<a asp-controller="Company"
|
<a asp-controller="Company"
|
||||||
asp-action="View"
|
asp-action="View"
|
||||||
asp-route-id="@company.Id">
|
asp-route-id="@company.Id">
|
||||||
@if(company.LastLogo != null && File.Exists(System.IO.Path.Combine(ViewBag.WebRootPath, "assets/logos", company.LastLogo.Guid + ".svg")))
|
@if(company.LastLogo != null && File.Exists(System.IO.Path.Combine(ViewBag.WebRootPath, "assets/logos", company.LastLogo + ".svg")))
|
||||||
{
|
{
|
||||||
<picture>
|
<picture>
|
||||||
<source type="image/svg+xml"
|
<source type="image/svg+xml"
|
||||||
srcset="/assets/logos/@(company.LastLogo.Guid).svg">
|
srcset="/assets/logos/@(company.LastLogo).svg">
|
||||||
<source type="image/webp"
|
<source type="image/webp"
|
||||||
srcset="/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp,
|
srcset="/assets/logos/thumbs/webp/1x/@(company.LastLogo).webp,
|
||||||
/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp 2x,
|
/assets/logos/thumbs/webp/1x/@(company.LastLogo).webp 2x,
|
||||||
/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp 3x">
|
/assets/logos/thumbs/webp/1x/@(company.LastLogo).webp 3x">
|
||||||
<img srcset="/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).png,
|
<img srcset="/assets/logos/thumbs/png/1x/@(company.LastLogo).png,
|
||||||
/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).png 2x,
|
/assets/logos/thumbs/png/1x/@(company.LastLogo).png 2x,
|
||||||
/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).webp 3x"
|
/assets/logos/thumbs/png/1x/@(company.LastLogo).webp 3x"
|
||||||
src="/assets/logos/thumbs/png/1x@(company.LastLogo.Guid).png")
|
src="/assets/logos/thumbs/png/1x@(company.LastLogo).png")
|
||||||
alt=""
|
alt=""
|
||||||
height="auto"
|
height="auto"
|
||||||
width="auto"
|
width="auto"
|
||||||
|
|||||||
@@ -32,8 +32,7 @@
|
|||||||
ViewData["Title"] = "Companies";
|
ViewData["Title"] = "Companies";
|
||||||
}
|
}
|
||||||
@using System.IO
|
@using System.IO
|
||||||
@using Cicm.Database.Models
|
@model IEnumerable<CompanyViewModel>
|
||||||
@model Cicm.Database.Models.Company[]
|
|
||||||
|
|
||||||
<p>Search results:</p>
|
<p>Search results:</p>
|
||||||
<p align="center">
|
<p align="center">
|
||||||
@@ -47,24 +46,24 @@
|
|||||||
{
|
{
|
||||||
<p>
|
<p>
|
||||||
@Model.Count() companies found in the database.<br />
|
@Model.Count() companies found in the database.<br />
|
||||||
@foreach(Company company in Model)
|
@foreach(CompanyViewModel company in Model)
|
||||||
{
|
{
|
||||||
<a asp-controller="Company"
|
<a asp-controller="Company"
|
||||||
asp-action="View"
|
asp-action="View"
|
||||||
asp-route-id="@company.Id">
|
asp-route-id="@company.Id">
|
||||||
@if(company.LastLogo != null && File.Exists(System.IO.Path.Combine(ViewBag.WebRootPath, "assets/logos", company.LastLogo.Guid + ".svg")))
|
@if(company.LastLogo != null && File.Exists(System.IO.Path.Combine(ViewBag.WebRootPath, "assets/logos", company.LastLogo + ".svg")))
|
||||||
{
|
{
|
||||||
<picture>
|
<picture>
|
||||||
<source type="image/svg+xml"
|
<source type="image/svg+xml"
|
||||||
srcset="/assets/logos/@(company.LastLogo.Guid).svg">
|
srcset="/assets/logos/@(company.LastLogo).svg">
|
||||||
<source type="image/webp"
|
<source type="image/webp"
|
||||||
srcset="/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp,
|
srcset="/assets/logos/thumbs/webp/1x/@(company.LastLogo).webp,
|
||||||
/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp 2x,
|
/assets/logos/thumbs/webp/1x/@(company.LastLogo).webp 2x,
|
||||||
/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp 3x">
|
/assets/logos/thumbs/webp/1x/@(company.LastLogo).webp 3x">
|
||||||
<img srcset="/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).png,
|
<img srcset="/assets/logos/thumbs/png/1x/@(company.LastLogo).png,
|
||||||
/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).png 2x,
|
/assets/logos/thumbs/png/1x/@(company.LastLogo).png 2x,
|
||||||
/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).webp 3x"
|
/assets/logos/thumbs/png/1x/@(company.LastLogo).webp 3x"
|
||||||
src="/assets/logos/thumbs/png/1x@(company.LastLogo.Guid).png")
|
src="/assets/logos/thumbs/png/1x@(company.LastLogo).png")
|
||||||
alt=""
|
alt=""
|
||||||
height="auto"
|
height="auto"
|
||||||
width="auto"
|
width="auto"
|
||||||
|
|||||||
@@ -32,32 +32,31 @@
|
|||||||
ViewData["Title"] = "Companies";
|
ViewData["Title"] = "Companies";
|
||||||
}
|
}
|
||||||
@using System.IO
|
@using System.IO
|
||||||
@using Cicm.Database.Models
|
@model IEnumerable<CompanyViewModel>
|
||||||
@model Cicm.Database.Models.Company[]
|
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
@if(Model.Any())
|
@if(Model.Any())
|
||||||
{
|
{
|
||||||
<p>
|
<p>
|
||||||
@Model.Count() companies found in the database.<br />
|
@Model.Count() companies found in the database.<br />
|
||||||
@foreach(Company company in Model)
|
@foreach(CompanyViewModel company in Model)
|
||||||
{
|
{
|
||||||
<a asp-controller="Company"
|
<a asp-controller="Company"
|
||||||
asp-action="View"
|
asp-action="View"
|
||||||
asp-route-id="@company.Id">
|
asp-route-id="@company.Id">
|
||||||
@if(company.LastLogo != null && File.Exists(System.IO.Path.Combine(ViewBag.WebRootPath, "assets/logos", company.LastLogo.Guid + ".svg")))
|
@if(company.LastLogo != null && File.Exists(System.IO.Path.Combine(ViewBag.WebRootPath, "assets/logos", company.LastLogo + ".svg")))
|
||||||
{
|
{
|
||||||
<picture>
|
<picture>
|
||||||
<source type="image/svg+xml"
|
<source type="image/svg+xml"
|
||||||
srcset="/assets/logos/@(company.LastLogo.Guid).svg">
|
srcset="/assets/logos/@(company.LastLogo).svg">
|
||||||
<source type="image/webp"
|
<source type="image/webp"
|
||||||
srcset="/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp,
|
srcset="/assets/logos/thumbs/webp/1x/@(company.LastLogo).webp,
|
||||||
/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp 2x,
|
/assets/logos/thumbs/webp/1x/@(company.LastLogo).webp 2x,
|
||||||
/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp 3x">
|
/assets/logos/thumbs/webp/1x/@(company.LastLogo).webp 3x">
|
||||||
<img srcset="/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).png,
|
<img srcset="/assets/logos/thumbs/png/1x/@(company.LastLogo).png,
|
||||||
/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).png 2x,
|
/assets/logos/thumbs/png/1x/@(company.LastLogo).png 2x,
|
||||||
/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).webp 3x"
|
/assets/logos/thumbs/png/1x/@(company.LastLogo).webp 3x"
|
||||||
src="/assets/logos/thumbs/png/1x@(company.LastLogo.Guid).png")
|
src="/assets/logos/thumbs/png/1x@(company.LastLogo).png")
|
||||||
alt=""
|
alt=""
|
||||||
height="auto"
|
height="auto"
|
||||||
width="auto"
|
width="auto"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netcoreapp2.2</TargetFramework>
|
<TargetFramework>netcoreapp2.2</TargetFramework>
|
||||||
<Version>3.0.99.550</Version>
|
<Version>3.0.99.557</Version>
|
||||||
<Company>Canary Islands Computer Museum</Company>
|
<Company>Canary Islands Computer Museum</Company>
|
||||||
<Copyright>Copyright © 2003-2018 Natalia Portillo</Copyright>
|
<Copyright>Copyright © 2003-2018 Natalia Portillo</Copyright>
|
||||||
<Product>Canary Islands Computer Museum Website</Product>
|
<Product>Canary Islands Computer Museum Website</Product>
|
||||||
|
|||||||
Reference in New Issue
Block a user