Files
marechai/cicm_web/Views/Company/View.cshtml

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>
}