Add Index and ByCountry to Company.

This commit is contained in:
2018-04-20 19:21:29 +01:00
parent f61ae3f995
commit 27f30cc305
3 changed files with 194 additions and 0 deletions

View File

@@ -29,8 +29,10 @@
*******************************************************************************/ *******************************************************************************/
using cicm_web.Models; using cicm_web.Models;
using Cicm.Database.Schemas;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Company = cicm_web.Models.Company;
namespace cicm_web.Controllers namespace cicm_web.Controllers
{ {
@@ -65,5 +67,23 @@ namespace cicm_web.Controllers
ViewBag.WebRootPath = hostingEnvironment.WebRootPath; ViewBag.WebRootPath = hostingEnvironment.WebRootPath;
return View(company); return View(company);
} }
public IActionResult ByCountry(int id)
{
Iso3166 iso3166 = Program.Database.Operations.GetIso3166(id);
ViewBag.Iso3166 = iso3166;
Company[] companies = iso3166 == null ? Company.GetAllItems() : Company.GetItemsByCountry(id);
ViewBag.WebRootPath = hostingEnvironment.WebRootPath;
return View(companies);
}
public IActionResult Index()
{
ViewBag.WebRootPath = hostingEnvironment.WebRootPath;
return View(Company.GetAllItems());
}
} }
} }

View File

@@ -0,0 +1,99 @@
@{
/******************************************************************************
// Canary Islands Computer Museum Website
// ----------------------------------------------------------------------------
//
// Filename : ByCountry.cshtml
// Author(s) : Natalia Portillo <claunia@claunia.com>
//
// --[ Description ] ----------------------------------------------------------
//
// Lists companies by country (or all)
//
// --[ License ] --------------------------------------------------------------
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
// ----------------------------------------------------------------------------
// Copyright © 2003-2018 Natalia Portillo
*******************************************************************************/
ViewData["Title"] = "Companies";
}
@using System.IO
@model IEnumerable<Company>
<p align=center>
@if(ViewBag.Iso3166 != null)
{
<b>Companies founded in @ViewBag.Iso3166.Name</b>
if(File.Exists(System.IO.Path.Combine(ViewBag.WebRootPath, "assets/flags/countries", ViewBag.Iso3166.Id + ".svg")))
{
<picture>
<source type="image/svg+xml"
srcset="/assets/flags/countries/@(ViewBag.Iso3166.Id).svg">
<source type="image/webp"
srcset="/assets/flags/countries/webp/1x/@(ViewBag.Iso3166.Id).webp,
/assets/flags/countries/webp/1x/@(ViewBag.Iso3166.Id).webp 2x,
/assets/flags/countries/webp/1x/@(ViewBag.Iso3166.Id).webp 3x">
<img srcset="/assets/flags/countries/png/1x/@(ViewBag.Iso3166.Id).png,
/assets/flags/countries/png/1x/@(ViewBag.Iso3166.Id).png 2x,
/assets/flags/countries/png/1x/@(ViewBag.Iso3166.Id).webp 3x"
src="/assets/flags/countries/png/1x@(ViewBag.Iso3166.Id).png")
alt=""
height="32" />
</picture>
}
<br />
}
@if(Model.Any())
{
<p>
@Model.Count() companies found in the database.<br />
@foreach(Company company in Model)
{
<a asp-controller="Company"
asp-action="View"
asp-route-id="@company.Id">
@if(company.LastLogo != null && File.Exists(System.IO.Path.Combine(ViewBag.WebRootPath, "assets/logos", company.LastLogo.Guid + ".svg")))
{
<picture>
<source type="image/svg+xml"
srcset="/assets/logos/@(company.LastLogo.Guid).svg">
<source type="image/webp"
srcset="/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp,
/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp 2x,
/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp 3x">
<img srcset="/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).png,
/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).png 2x,
/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).webp 3x"
src="/assets/logos/thumbs/png/1x@(company.LastLogo.Guid).png")
alt=""
height="auto"
width="auto"
style="max-height: 32px; max-width: 128px" />
</picture>
}
@company.Name
</a>
<br />
}
</p>
}
else
{
<p>There are no companies found in the database founded in the requested country.</p>
}
</p>

View File

@@ -0,0 +1,75 @@
@{
/******************************************************************************
// Canary Islands Computer Museum Website
// ----------------------------------------------------------------------------
//
// Filename : Index.cshtml
// Author(s) : Natalia Portillo <claunia@claunia.com>
//
// --[ Description ] ----------------------------------------------------------
//
// Lists all companies
//
// --[ License ] --------------------------------------------------------------
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
// ----------------------------------------------------------------------------
// Copyright © 2003-2018 Natalia Portillo
*******************************************************************************/
ViewData["Title"] = "Companies";
}
@using System.IO
@model IEnumerable<Company>
<p align=center>
@if(Model.Any())
{
<p>
@Model.Count() companies found in the database.<br />
@foreach(Company company in Model)
{
<a asp-controller="Company"
asp-action="View"
asp-route-id="@company.Id">
@if(company.LastLogo != null && File.Exists(System.IO.Path.Combine(ViewBag.WebRootPath, "assets/logos", company.LastLogo.Guid + ".svg")))
{
<picture>
<source type="image/svg+xml"
srcset="/assets/logos/@(company.LastLogo.Guid).svg">
<source type="image/webp"
srcset="/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp,
/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp 2x,
/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp 3x">
<img srcset="/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).png,
/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).png 2x,
/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).webp 3x"
src="/assets/logos/thumbs/png/1x@(company.LastLogo.Guid).png")
alt=""
height="auto" width="auto" style="max-height: 32px; max-width: 128px "/>
</picture>
}
@company.Name
</a>
<br />
}
</p>
}
else
{
<p>There are no companies in the database.</p>
}
</p>