mirror of
https://github.com/claunia/marechai.git
synced 2025-12-16 19:14:25 +00:00
446 lines
17 KiB
Plaintext
446 lines
17 KiB
Plaintext
@{
|
|
/******************************************************************************
|
|
// Canary Islands Computer Museum Website
|
|
// ----------------------------------------------------------------------------
|
|
//
|
|
// Filename : ByLetter.cshtml
|
|
// Author(s) : Natalia Portillo <claunia@claunia.com>
|
|
//
|
|
// --[ Description ] ----------------------------------------------------------
|
|
//
|
|
// Lists computers by company
|
|
//
|
|
// --[ 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
|
|
@using Cicm.Database.Schemas
|
|
@model CompanyWithItems
|
|
|
|
@if(Model != null)
|
|
{
|
|
<div class="container-fluid">
|
|
<p align=center>
|
|
@if(Model.LastLogo != null && File.Exists(System.IO.Path.Combine(ViewBag.WebRootPath, "assets/logos", Model.LastLogo.Guid + ".svg")))
|
|
{
|
|
<picture>
|
|
<source type="image/svg+xml"
|
|
srcset="/assets/logos/@(Model.LastLogo.Guid).svg">
|
|
<source type="image/webp"
|
|
srcset="/assets/logos/webp/1x/@(Model.LastLogo.Guid).webp,
|
|
/assets/logos/webp/1x/@(Model.LastLogo.Guid).webp 2x,
|
|
/assets/logos/webp/1x/@(Model.LastLogo.Guid).webp 3x">
|
|
<img srcset="/assets/logos/png/1x/@(Model.LastLogo.Guid).png,
|
|
/assets/logos/png/1x/@(Model.LastLogo.Guid).png 2x,
|
|
/assets/logos/png/1x/@(Model.LastLogo.Guid).webp 3x"
|
|
src="/assets/logos/png/1x@(Model.LastLogo.Guid).png")
|
|
alt=""
|
|
height="auto"
|
|
width="auto"
|
|
style="max-height: 256px; max-width: 256px" />
|
|
</picture>
|
|
}
|
|
</p>
|
|
<div class="row">
|
|
@{
|
|
string carrouselActive = "active";
|
|
}
|
|
@if(Model.Logos != null && Model.Logos.Length > 1)
|
|
{
|
|
<div class="col-3">
|
|
<div class="carousel slide"
|
|
data-ride="carousel"
|
|
id="logosCarousel">
|
|
<div class="carousel-inner">
|
|
|
|
|
|
@foreach(CompanyLogo logo in Model.Logos)
|
|
{
|
|
if(File.Exists(System.IO.Path.Combine(ViewBag.WebRootPath, "assets/logos", logo.Guid + ".svg")))
|
|
{
|
|
<div class="carousel-item @carrouselActive">
|
|
<picture>
|
|
<source type="image/svg+xml"
|
|
srcset="/assets/logos/@(logo.Guid).svg">
|
|
<source type="image/webp"
|
|
srcset="/assets/logos/webp/1x/@(logo.Guid).webp,
|
|
/assets/logos/webp/1x/@(logo.Guid).webp 2x,
|
|
/assets/logos/webp/1x/@(logo.Guid).webp 3x">
|
|
<img class="d-block w-100"
|
|
srcset="/assets/logos/png/1x/@(logo.Guid).png,
|
|
/assets/logos/png/1x/@(logo.Guid).png 2x,
|
|
/assets/logos/png/1x/@(logo.Guid).webp 3x"
|
|
src="/assets/logos/png/1x@(logo.Guid).png")
|
|
alt=""
|
|
height="auto"
|
|
width="auto"
|
|
style="max-height: 256px; max-width: 256px" />
|
|
</picture>
|
|
</div>
|
|
|
|
carrouselActive = null;
|
|
}
|
|
}
|
|
</div>
|
|
<a class="carousel-control-prev"
|
|
data-slide="prev"
|
|
href="#logosCarousel"
|
|
role="button">
|
|
<span aria-hidden="true"
|
|
class="carousel-control-prev-icon">
|
|
</span>
|
|
<span class="sr-only">Previous</span>
|
|
</a>
|
|
<a class="carousel-control-next"
|
|
data-slide="next"
|
|
href="#logosCarousel"
|
|
role="button">
|
|
<span aria-hidden="true"
|
|
class="carousel-control-next-icon">
|
|
</span>
|
|
<span class="sr-only">Next</span>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
}
|
|
|
|
<div class="col-md">
|
|
<table>
|
|
<tr>
|
|
<th colspan="2">
|
|
<b>@Model.Name</b>
|
|
</th>
|
|
</tr>
|
|
@if(Model.Founded > DateTime.MinValue)
|
|
{
|
|
<tr>
|
|
<th>Founded</th>
|
|
<td>@Model.Founded.ToLongDateString().</td>
|
|
</tr>
|
|
}
|
|
<tr>
|
|
<th>Country</th>
|
|
<td>
|
|
<a asp-action="ByCountry"
|
|
asp-controller="Company"
|
|
asp-route-id="@Model.Country.Id">
|
|
@if(File.Exists(System.IO.Path.Combine(ViewBag.WebRootPath, "assets/flags/countries", Model.Country.Id + ".svg")))
|
|
{
|
|
<picture>
|
|
<source type="image/svg+xml"
|
|
srcset="/assets/flags/countries/@(Model.Country.Id).svg">
|
|
<source type="image/webp"
|
|
srcset="/assets/flags/countries/webp/1x/@(Model.Country.Id).webp,
|
|
/assets/flags/countries/webp/1x/@(Model.Country.Id).webp 2x,
|
|
/assets/flags/countries/webp/1x/@(Model.Country.Id).webp 3x">
|
|
<img srcset="/assets/flags/countries/png/1x/@(Model.Country.Id).png,
|
|
/assets/flags/countries/png/1x/@(Model.Country.Id).png 2x,
|
|
/assets/flags/countries/png/1x/@(Model.Country.Id).webp 3x"
|
|
src="/assets/flags/countries/png/1x@(Model.Country.Id).png")
|
|
alt=""
|
|
height="32" />
|
|
</picture>
|
|
}
|
|
@Model.Country.Name
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Status</th>
|
|
@switch(Model.Status)
|
|
{
|
|
case CompanyStatus.Unknown:
|
|
<td>Current company status is unknown.</td>
|
|
break;
|
|
case CompanyStatus.Active:
|
|
<td>Company is active.</td>
|
|
break;
|
|
case CompanyStatus.Sold:
|
|
if(Model.Sold != DateTime.MinValue)
|
|
{
|
|
if(Model.SoldTo != null)
|
|
{
|
|
<td>
|
|
Company was sold to
|
|
<a asp-controller="Company"
|
|
asp-action="View"
|
|
asp-route-id="@Model.SoldTo.Id">
|
|
@Model.SoldTo.Name</a> on @Model.Sold.ToLongDateString().
|
|
</td>
|
|
}
|
|
else
|
|
{
|
|
<td>Company was sold on @Model.Sold.ToLongDateString() to an unknown company.</td>
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(Model.SoldTo != null)
|
|
{
|
|
<td>
|
|
Company was sold to
|
|
<a asp-controller="Company"
|
|
asp-action="View"
|
|
asp-route-id="@Model.SoldTo.Id">
|
|
@Model.SoldTo.Name</a> on an unknown date.
|
|
</td>
|
|
}
|
|
else
|
|
{
|
|
<td>Company was sold to an unknown company on an unknown date.</td>
|
|
}
|
|
}
|
|
break;
|
|
case CompanyStatus.Merged:
|
|
if(Model.Sold != DateTime.MinValue)
|
|
{
|
|
if(Model.SoldTo != null)
|
|
{
|
|
<td>
|
|
Company was merged on @Model.Sold.ToLongDateString() to form
|
|
<a asp-controller="Company"
|
|
asp-action="View"
|
|
asp-route-id="@Model.SoldTo.Id">
|
|
@Model.SoldTo.Name</a>.
|
|
</td>
|
|
}
|
|
else
|
|
{
|
|
<td>Company was merge on @Model.Sold.ToLongDateString() to form an unknown company.</td>
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(Model.SoldTo != null)
|
|
{
|
|
<td>
|
|
Company was merged on an unknown date to form
|
|
<a asp-controller="Company"
|
|
asp-action="View"
|
|
asp-route-id="@Model.SoldTo.Id">
|
|
@Model.SoldTo.Name</a>.
|
|
</td>
|
|
}
|
|
else
|
|
{
|
|
<td>Company was merged to form an unknown company on an unknown date.</td>
|
|
}
|
|
}
|
|
break;
|
|
case CompanyStatus.Bankrupt:
|
|
if(Model.Sold != DateTime.MinValue)
|
|
{
|
|
<td>Company declared bankruptcy on @Model.Sold.ToLongDateString().</td>
|
|
}
|
|
else
|
|
{
|
|
<td>Company declared bankruptcy on an unknown date.</td>
|
|
}
|
|
break;
|
|
case CompanyStatus.Defunct:
|
|
if(Model.Sold != DateTime.MinValue)
|
|
{
|
|
<td>Company ceased operations on @Model.Sold.ToLongDateString().</td>
|
|
}
|
|
else
|
|
{
|
|
<td>Company ceased operations on an unknown date.</td>
|
|
}
|
|
break;
|
|
case CompanyStatus.Renamed:
|
|
if(Model.Sold != DateTime.MinValue)
|
|
{
|
|
if(Model.SoldTo != null)
|
|
{
|
|
<td>
|
|
Company was renamed to
|
|
<a asp-controller="Company"
|
|
asp-action="View"
|
|
asp-route-id="@Model.SoldTo.Id">
|
|
@Model.SoldTo.Name</a> on @Model.Sold.ToLongDateString().
|
|
</td>
|
|
}
|
|
else
|
|
{
|
|
<td>Company was renamed on @Model.Sold.ToLongDateString() to an unknown name.</td>
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(Model.SoldTo != null)
|
|
{
|
|
<td>
|
|
Company was renamed to
|
|
<a asp-controller="Company"
|
|
asp-action="View"
|
|
asp-route-id="@Model.SoldTo.Id">
|
|
@Model.SoldTo.Name</a> on an unknown date.
|
|
</td>
|
|
}
|
|
else
|
|
{
|
|
<td>Company was renamed to an unknown name on an unknown date.</td>
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
throw new ArgumentOutOfRangeException();
|
|
}
|
|
</tr>
|
|
<tr>
|
|
<th>Address</th>
|
|
<td>
|
|
@Model.Address<br>
|
|
@if(Model.City != Model.Province)
|
|
{
|
|
@Model.City<br>
|
|
}
|
|
@Model.PostalCode @Model.Province</td>
|
|
</tr>
|
|
@if(!string.IsNullOrEmpty(Model.Website) || !string.IsNullOrEmpty(Model.Twitter) || !string.IsNullOrEmpty(Model.Facebook))
|
|
{
|
|
<tr>
|
|
<th>Links</th>
|
|
<td>
|
|
@if(!string.IsNullOrEmpty(Model.Website))
|
|
{
|
|
<a href="@Model.Website">Website</a>
|
|
<br />
|
|
}
|
|
@if(!string.IsNullOrEmpty(Model.Twitter))
|
|
{
|
|
<a href="https://www.twitter.com/@Model.Twitter">Twitter</a>
|
|
<br />
|
|
}
|
|
@if(!string.IsNullOrEmpty(Model.Facebook))
|
|
{
|
|
<a href="https://www.facebook.com/@Model.Facebook">Facebook</a>
|
|
<br />
|
|
}
|
|
</td>
|
|
</tr>
|
|
}
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row"
|
|
id="itemsAccordion">
|
|
<div class="card">
|
|
@if(Model.Computers.Any())
|
|
{
|
|
<div class="card-header"
|
|
id="headingComputers">
|
|
<h5 class="mb-0">
|
|
<button aria-controls="collapseComputers"
|
|
aria-expanded="false"
|
|
class="btn btn-info"
|
|
data-target="#collapseComputers"
|
|
data-toggle="collapse">
|
|
<span class="badge badge-success">@Model.Computers.Count()</span> computers known.
|
|
</button>
|
|
</h5>
|
|
|
|
</div>
|
|
<div aria-labelledby="headingComputers"
|
|
class="collapse"
|
|
data-parent="#itemsAccordion"
|
|
id="collapseComputers">
|
|
<div class="card-body">
|
|
@foreach(MachineMini computer in Model.Computers)
|
|
{
|
|
<a asp-controller="Machine"
|
|
asp-action="View"
|
|
asp-route-id="@computer.Id">
|
|
@computer.Name</a>
|
|
<br />
|
|
}
|
|
</div>
|
|
</div>
|
|
}
|
|
else
|
|
{
|
|
<div class="card-header"
|
|
id="headingComputers">
|
|
<h5 class="mb-0">
|
|
<button class="btn btn-info">
|
|
<span class="badge badge-danger">No</span> computers known.
|
|
</button>
|
|
</h5>
|
|
</div>
|
|
}
|
|
@if(Model.Consoles.Any())
|
|
{
|
|
<div class="card-header"
|
|
id="headingConsoles">
|
|
<h5 class="mb-0">
|
|
<button aria-controls="collapseConsoles"
|
|
aria-expanded="false"
|
|
class="btn btn-info"
|
|
data-target="#collapseConsoles"
|
|
data-toggle="collapse">
|
|
<span class="badge badge-success">@Model.Consoles.Count()</span> videogame consoles known.
|
|
</button>
|
|
</h5>
|
|
|
|
</div>
|
|
<div aria-labelledby="headingConsoles"
|
|
class="collapse"
|
|
data-parent="#itemsAccordion"
|
|
id="collapseConsoles">
|
|
<div class="card-body">
|
|
@foreach(MachineMini console in Model.Consoles)
|
|
{
|
|
<a asp-controller="Machine"
|
|
asp-action="View"
|
|
asp-route-id="@console.Id">
|
|
@console.Name</a>
|
|
<br />
|
|
}
|
|
</div>
|
|
</div>
|
|
}
|
|
else
|
|
{
|
|
<div class="card-header"
|
|
id="headingComputers">
|
|
<h5 class="mb-0">
|
|
<button class="btn btn-info">
|
|
<span class="badge badge-danger">No</span> videogame consoles known.
|
|
</button>
|
|
</h5>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
|
|
@if(Model.Description != null)
|
|
{
|
|
<div class="container-fluid row">
|
|
@Html.Raw(Model.Description)
|
|
</div>
|
|
}
|
|
</div>
|
|
}
|
|
else
|
|
{
|
|
<p>Company not found!</p>
|
|
} |