diff --git a/Cicm.Database/Operations/Company.cs b/Cicm.Database/Operations/Company.cs index f92b3002..52fa9b37 100644 --- a/Cicm.Database/Operations/Company.cs +++ b/Cicm.Database/Operations/Company.cs @@ -375,6 +375,25 @@ namespace Cicm.Database if(!string.IsNullOrWhiteSpace(dataRow["country"].ToString())) entry.Country = GetIso3166(int.Parse(dataRow["country"].ToString())); + if(GetCompanyLogosByCompany(out List logos, entry.Id)) + { + entry.Logos = logos.ToArray(); + if(entry.Logos != null && entry.Logos.Length > 0) + if(entry.Logos.Length > 1) + { + int currentYear = 0; + foreach(CompanyLogo logo in entry.Logos) + { + if(logo.Year <= currentYear) continue; + + entry.LastLogo = logo; + currentYear = logo.Year; + } + } + else + entry.LastLogo = entry.Logos[0]; + } + entries.Add(entry); } diff --git a/Cicm.Database/Operations/CompanyLogos.cs b/Cicm.Database/Operations/CompanyLogos.cs new file mode 100644 index 00000000..188a8481 --- /dev/null +++ b/Cicm.Database/Operations/CompanyLogos.cs @@ -0,0 +1,335 @@ +/****************************************************************************** +// Canary Islands Computer Museum Website +// ---------------------------------------------------------------------------- +// +// Filename : CompanyLogo.cs +// Author(s) : Natalia Portillo +// +// --[ Description ] ---------------------------------------------------------- +// +// Contains operations to manage company logos. +// +// --[ 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 . +// +// ---------------------------------------------------------------------------- +// Copyright © 2003-2018 Natalia Portillo +*******************************************************************************/ + +using System; +using System.Collections.Generic; +using System.Data; +using Cicm.Database.Schemas; +using Console = System.Console; + +namespace Cicm.Database +{ + public partial class Operations + { + /// + /// Gets all company logos + /// + /// All company logos + /// true if is correct, false otherwise + public bool GetCompanyLogos(out List entries) + { + #if DEBUG + Console.WriteLine("Getting all company logos..."); + #endif + + try + { + const string SQL = "SELECT * from company_logos"; + + IDbCommand dbCmd = dbCon.CreateCommand(); + IDbDataAdapter dataAdapter = dbCore.GetNewDataAdapter(); + dbCmd.CommandText = SQL; + DataSet dataSet = new DataSet(); + dataAdapter.SelectCommand = dbCmd; + dataAdapter.Fill(dataSet); + + entries = CompanyLogosFromDataTable(dataSet.Tables[0]); + + return true; + } + catch(Exception ex) + { + Console.WriteLine("Error getting company logos."); + Console.WriteLine(ex); + entries = null; + return false; + } + } + + /// + /// Gets the specified number of company logos since the specified start + /// + /// List of company_logos + /// Start of query + /// How many entries to retrieve + /// true if is correct, false otherwise + public bool GetCompanyLogos(out List entries, ulong start, ulong count) + { + #if DEBUG + Console.WriteLine("Getting {0} company logos from {1}...", count, start); + #endif + + try + { + string sql = $"SELECT * FROM company_logos LIMIT {start}, {count}"; + + IDbCommand dbCmd = dbCon.CreateCommand(); + IDbDataAdapter dataAdapter = dbCore.GetNewDataAdapter(); + dbCmd.CommandText = sql; + DataSet dataSet = new DataSet(); + dataAdapter.SelectCommand = dbCmd; + dataAdapter.Fill(dataSet); + + entries = CompanyLogosFromDataTable(dataSet.Tables[0]); + + return true; + } + catch(Exception ex) + { + Console.WriteLine("Error getting company logos."); + Console.WriteLine(ex); + entries = null; + return false; + } + } + + /// + /// Gets company logo by specified id + /// + /// Id + /// CompanyLogo with specified id, null if not found or error + public CompanyLogo GetCompanyLogo(int id) + { + #if DEBUG + Console.WriteLine("Getting company logo with id {0}...", id); + #endif + + try + { + string sql = $"SELECT * from company_logos WHERE id = '{id}'"; + + IDbCommand dbCmd = dbCon.CreateCommand(); + IDbDataAdapter dataAdapter = dbCore.GetNewDataAdapter(); + dbCmd.CommandText = sql; + DataSet dataSet = new DataSet(); + dataAdapter.SelectCommand = dbCmd; + dataAdapter.Fill(dataSet); + + List entries = CompanyLogosFromDataTable(dataSet.Tables[0]); + + return entries == null || entries.Count == 0 ? null : entries[0]; + } + catch(Exception ex) + { + Console.WriteLine("Error getting company."); + Console.WriteLine(ex); + return null; + } + } + + /// + /// Gets company logo by specified id + /// + /// List of company_logos + /// Company id + /// CompanyLogo with specified id, null if not found or error + public bool GetCompanyLogosByCompany(out List entries, int company) + { + #if DEBUG + Console.WriteLine("Getting company logos for company {0}...", company); + #endif + + try + { + string sql = $"SELECT * FROM company_logos WHERE company_id = {company}"; + + IDbCommand dbCmd = dbCon.CreateCommand(); + IDbDataAdapter dataAdapter = dbCore.GetNewDataAdapter(); + dbCmd.CommandText = sql; + DataSet dataSet = new DataSet(); + dataAdapter.SelectCommand = dbCmd; + dataAdapter.Fill(dataSet); + + entries = CompanyLogosFromDataTable(dataSet.Tables[0]); + + return true; + } + catch(Exception ex) + { + Console.WriteLine("Error getting company logos."); + Console.WriteLine(ex); + entries = null; + return false; + } + } + + /// + /// Counts the number of company logos in the database + /// + /// Entries in database + public long CountCompanyLogos() + { + #if DEBUG + Console.WriteLine("Counting company logos..."); + #endif + + IDbCommand dbcmd = dbCon.CreateCommand(); + dbcmd.CommandText = "SELECT COUNT(*) FROM company_logos"; + object count = dbcmd.ExecuteScalar(); + dbcmd.Dispose(); + try { return Convert.ToInt64(count); } + catch { return 0; } + } + + /// + /// Adds a new company logo to the database + /// + /// Entry to add + /// ID of added entry + /// true if added correctly, false otherwise + public bool AddCompanyLogo(CompanyLogo entry, out long id) + { + #if DEBUG + Console.Write("Adding logo for company id `{0}`...", entry.CompanyId); + #endif + + IDbCommand dbcmd = GetCommandCompanyLogo(entry); + IDbTransaction trans = dbCon.BeginTransaction(); + dbcmd.Transaction = trans; + + const string SQL = + "INSERT INTO company_logos (company_id, year, logo_guid) VALUES (@company_id, @year, @logo_guid)"; + + dbcmd.CommandText = SQL; + + dbcmd.ExecuteNonQuery(); + trans.Commit(); + dbcmd.Dispose(); + + id = dbCore.LastInsertRowId; + + #if DEBUG + Console.WriteLine(" id {0}", id); + #endif + + return true; + } + + /// + /// Updated a company logo in the database + /// + /// Updated entry + /// true if updated correctly, false otherwise + public bool UpdateCompanyLogo(CompanyLogo entry) + { + #if DEBUG + Console.WriteLine("Updating company logo id `{0}`...", entry.Id); + #endif + + IDbCommand dbcmd = GetCommandCompanyLogo(entry); + IDbTransaction trans = dbCon.BeginTransaction(); + dbcmd.Transaction = trans; + + string sql = "UPDATE company_logos SET company_id = @company_id, year = @year, logo_guid = @logo_guid " + + $"WHERE id = {entry.Id}"; + + dbcmd.CommandText = sql; + + dbcmd.ExecuteNonQuery(); + trans.Commit(); + dbcmd.Dispose(); + + return true; + } + + /// + /// Removes a company logo from the database + /// + /// ID of entry to remove + /// true if removed correctly, false otherwise + public bool RemoveCompanyLogo(long id) + { + #if DEBUG + Console.WriteLine("Removing company logo with id `{0}`...", id); + #endif + + IDbCommand dbcmd = dbCon.CreateCommand(); + IDbTransaction trans = dbCon.BeginTransaction(); + dbcmd.Transaction = trans; + + string sql = $"DELETE FROM company_logos WHERE id = '{id}';"; + + dbcmd.CommandText = sql; + + dbcmd.ExecuteNonQuery(); + trans.Commit(); + dbcmd.Dispose(); + + return true; + } + + IDbCommand GetCommandCompanyLogo(CompanyLogo entry) + { + IDbCommand dbcmd = dbCon.CreateCommand(); + + IDbDataParameter param1 = dbcmd.CreateParameter(); + IDbDataParameter param2 = dbcmd.CreateParameter(); + IDbDataParameter param3 = dbcmd.CreateParameter(); + + param1.ParameterName = "@company_id"; + param2.ParameterName = "@year"; + param3.ParameterName = "@logo_guid"; + + param1.DbType = DbType.String; + param2.DbType = DbType.String; + param3.DbType = DbType.Guid; + + param1.Value = entry.CompanyId; + param2.Value = entry.Year; + param3.Value = entry.Guid; + + dbcmd.Parameters.Add(param1); + dbcmd.Parameters.Add(param2); + dbcmd.Parameters.Add(param3); + + return dbcmd; + } + + static List CompanyLogosFromDataTable(DataTable dataTable) + { + List entries = new List(); + + foreach(DataRow dataRow in dataTable.Rows) + { + CompanyLogo entry = new CompanyLogo + { + Id = int.Parse(dataRow["id"].ToString()), + CompanyId = int.Parse(dataRow["company_id"].ToString()), + Year = int.Parse(dataRow["year"].ToString()), + Guid = Guid.Parse(dataRow["logo_guid"].ToString()) + }; + + entries.Add(entry); + } + + return entries; + } + } +} \ No newline at end of file diff --git a/Cicm.Database/Operations/Init.cs b/Cicm.Database/Operations/Init.cs index 676f5e89..5357ca33 100644 --- a/Cicm.Database/Operations/Init.cs +++ b/Cicm.Database/Operations/Init.cs @@ -49,91 +49,95 @@ namespace Cicm.Database IDbCommand dbCmd = dbCon.CreateCommand(); Console.WriteLine("Creating table `admins`"); - dbCmd.CommandText = V7.Admins; + dbCmd.CommandText = V8.Admins; dbCmd.ExecuteNonQuery(); Console.WriteLine("Creating table `browser_tests`"); - dbCmd.CommandText = V7.BrowserTests; + dbCmd.CommandText = V8.BrowserTests; dbCmd.ExecuteNonQuery(); Console.WriteLine("Creating table `cicm_db`"); - dbCmd.CommandText = V7.CicmDb; + dbCmd.CommandText = V8.CicmDb; dbCmd.ExecuteNonQuery(); Console.WriteLine("Creating table `companies`"); - dbCmd.CommandText = V7.Companies; + dbCmd.CommandText = V8.Companies; dbCmd.ExecuteNonQuery(); Console.WriteLine("Creating table `computers`"); - dbCmd.CommandText = V7.Computers; + dbCmd.CommandText = V8.Computers; dbCmd.ExecuteNonQuery(); Console.WriteLine("Creating table `consoles`"); - dbCmd.CommandText = V7.Consoles; + dbCmd.CommandText = V8.Consoles; dbCmd.ExecuteNonQuery(); Console.WriteLine("Creating table `disk_formats`"); - dbCmd.CommandText = V7.DiskFormats; + dbCmd.CommandText = V8.DiskFormats; dbCmd.ExecuteNonQuery(); Console.WriteLine("Creating table `forbidden`"); - dbCmd.CommandText = V7.Forbidden; + dbCmd.CommandText = V8.Forbidden; dbCmd.ExecuteNonQuery(); Console.WriteLine("Creating table `gpus`"); - dbCmd.CommandText = V7.Gpus; + dbCmd.CommandText = V8.Gpus; dbCmd.ExecuteNonQuery(); Console.WriteLine("Creating table `log`"); - dbCmd.CommandText = V7.Logs; + dbCmd.CommandText = V8.Logs; dbCmd.ExecuteNonQuery(); Console.WriteLine("Creating table `money_donations`"); - dbCmd.CommandText = V7.MoneyDonations; + dbCmd.CommandText = V8.MoneyDonations; dbCmd.ExecuteNonQuery(); Console.WriteLine("Creating table `music_synths`"); - dbCmd.CommandText = V7.MusicSynths; + dbCmd.CommandText = V8.MusicSynths; dbCmd.ExecuteNonQuery(); Console.WriteLine("Creating table `news`"); - dbCmd.CommandText = V7.News; + dbCmd.CommandText = V8.News; dbCmd.ExecuteNonQuery(); Console.WriteLine("Creating table `owned_computers`"); - dbCmd.CommandText = V7.OwnedComputers; + dbCmd.CommandText = V8.OwnedComputers; dbCmd.ExecuteNonQuery(); Console.WriteLine("Creating table `owned_consoles`"); - dbCmd.CommandText = V7.OwnedConsoles; + dbCmd.CommandText = V8.OwnedConsoles; dbCmd.ExecuteNonQuery(); Console.WriteLine("Creating table `processors`"); - dbCmd.CommandText = V7.Processors; + dbCmd.CommandText = V8.Processors; dbCmd.ExecuteNonQuery(); Console.WriteLine("Creating table `sound_synths`"); - dbCmd.CommandText = V7.SoundSynths; + dbCmd.CommandText = V8.SoundSynths; dbCmd.ExecuteNonQuery(); Console.WriteLine("Creating table `iso3166_1_numeric`"); - dbCmd.CommandText = V7.Iso3166Numeric; + dbCmd.CommandText = V8.Iso3166Numeric; dbCmd.ExecuteNonQuery(); Console.WriteLine("Filling table `iso3166_1_numeric`"); - dbCmd.CommandText = V7.Iso3166NumericValues; + dbCmd.CommandText = V8.Iso3166NumericValues; dbCmd.ExecuteNonQuery(); Console.WriteLine("Creating foreign keys for table `companies`"); - dbCmd.CommandText = V7.CompaniesForeignKeys; + dbCmd.CommandText = V8.CompaniesForeignKeys; dbCmd.ExecuteNonQuery(); Console.WriteLine("Creating foreign keys for table `computers`"); - dbCmd.CommandText = V7.ComputersForeignKeys; + dbCmd.CommandText = V8.ComputersForeignKeys; dbCmd.ExecuteNonQuery(); Console.WriteLine("Creating foreign keys for table `consoles`"); - dbCmd.CommandText = V7.ConsolesForeignKeys; + dbCmd.CommandText = V8.ConsolesForeignKeys; + dbCmd.ExecuteNonQuery(); + + Console.WriteLine("Creating table `company_logos`"); + dbCmd.CommandText = V8.CompanyLogos; dbCmd.ExecuteNonQuery(); return true; diff --git a/Cicm.Database/Operations/Operations.cs b/Cicm.Database/Operations/Operations.cs index d698545d..396b0b82 100644 --- a/Cicm.Database/Operations/Operations.cs +++ b/Cicm.Database/Operations/Operations.cs @@ -35,7 +35,7 @@ namespace Cicm.Database public partial class Operations { /// Last known database version - const int DB_VERSION = 7; + const int DB_VERSION = 8; readonly IDbConnection dbCon; readonly IDbCore dbCore; diff --git a/Cicm.Database/Operations/Update.cs b/Cicm.Database/Operations/Update.cs index e9c95975..59f35471 100644 --- a/Cicm.Database/Operations/Update.cs +++ b/Cicm.Database/Operations/Update.cs @@ -103,6 +103,11 @@ namespace Cicm.Database UpdateDatabaseToV7(); break; } + case 7: + { + UpdateDatabaseToV8(); + break; + } } OptimizeDatabase(); @@ -779,6 +784,26 @@ namespace Cicm.Database dbCmd.Dispose(); } + void UpdateDatabaseToV8() + { + Console.WriteLine("Updating database to version 8"); + + Console.WriteLine("Creating table `company_logos`"); + IDbCommand dbCmd = dbCon.CreateCommand(); + IDbTransaction trans = dbCon.BeginTransaction(); + dbCmd.Transaction = trans; + dbCmd.CommandText = V8.CompanyLogos; + dbCmd.ExecuteNonQuery(); + trans.Commit(); + dbCmd.Dispose(); + + Console.WriteLine("Setting new database version to 8..."); + dbCmd = dbCon.CreateCommand(); + dbCmd.CommandText = "INSERT INTO cicm_db (version) VALUES ('8')"; + dbCmd.ExecuteNonQuery(); + dbCmd.Dispose(); + } + void OptimizeDatabase() { IDbCommand dbCmd = dbCon.CreateCommand(); diff --git a/Cicm.Database/Schemas/Company.cs b/Cicm.Database/Schemas/Company.cs index 172f0ea9..ca4a5049 100644 --- a/Cicm.Database/Schemas/Company.cs +++ b/Cicm.Database/Schemas/Company.cs @@ -47,6 +47,10 @@ namespace Cicm.Database.Schemas public DateTime Founded; /// ID public int Id; + /// Last logo + public CompanyLogo LastLogo; + /// Logos + public CompanyLogo[] Logos; /// Name public string Name; /// Postal code diff --git a/Cicm.Database/Schemas/CompanyLogo.cs b/Cicm.Database/Schemas/CompanyLogo.cs new file mode 100644 index 00000000..7c14e61c --- /dev/null +++ b/Cicm.Database/Schemas/CompanyLogo.cs @@ -0,0 +1,47 @@ +/****************************************************************************** +// Canary Islands Computer Museum Website +// ---------------------------------------------------------------------------- +// +// Filename : Company.cs +// Author(s) : Natalia Portillo +// +// --[ Description ] ---------------------------------------------------------- +// +// High level representation of a 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 . +// +// ---------------------------------------------------------------------------- +// Copyright © 2003-2018 Natalia Portillo +*******************************************************************************/ + +using System; + +namespace Cicm.Database.Schemas +{ + /// Company logo + public class CompanyLogo + { + /// Company ID + public int CompanyId; + /// Logo GUID + public Guid Guid; + /// Logo ID + public int Id; + /// Year when the company started using this logo, null for unknown + public int Year; + } +} \ No newline at end of file diff --git a/Cicm.Database/Schemas/Sql/V7.cs b/Cicm.Database/Schemas/Sql/V7.cs index e9f8118a..daba2fa6 100644 --- a/Cicm.Database/Schemas/Sql/V7.cs +++ b/Cicm.Database/Schemas/Sql/V7.cs @@ -32,9 +32,9 @@ namespace Cicm.Database.Schemas.Sql { public static class V7 { - public static readonly string Admins = V5.Admins; + public static readonly string Admins = V6.Admins; - public static readonly string BrowserTests = V5.BrowserTests; + public static readonly string BrowserTests = V6.BrowserTests; public static readonly string CicmDb = "CREATE TABLE `cicm_db` (\n" + "`id` int(11) NOT NULL AUTO_INCREMENT,\n" + diff --git a/Cicm.Database/Schemas/Sql/V8.cs b/Cicm.Database/Schemas/Sql/V8.cs new file mode 100644 index 00000000..31746625 --- /dev/null +++ b/Cicm.Database/Schemas/Sql/V8.cs @@ -0,0 +1,97 @@ +/****************************************************************************** +// Canary Islands Computer Museum Website +// ---------------------------------------------------------------------------- +// +// Filename : V7.cs +// Author(s) : Natalia Portillo +// +// --[ Description ] ---------------------------------------------------------- +// +// Contains SQL queries to create the database version 7. +// +// --[ 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 . +// +// ---------------------------------------------------------------------------- +// Copyright © 2003-2018 Natalia Portillo +*******************************************************************************/ + +namespace Cicm.Database.Schemas.Sql +{ + public static class V8 + { + public static readonly string Admins = V7.Admins; + + public static readonly string BrowserTests = V7.BrowserTests; + + public static readonly string CicmDb = "CREATE TABLE `cicm_db` (\n" + + "`id` int(11) NOT NULL AUTO_INCREMENT,\n" + + "`version` int(11) NOT NULL,\n" + + "`updated` datetime DEFAULT CURRENT_TIMESTAMP,\n" + + "PRIMARY KEY (`id`)\n" + ");\n" + + "INSERT INTO cicm_db (version) VALUES ('8');"; + + public static readonly string Companies = V7.Companies; + + public static readonly string Computers = V7.Computers; + + public static readonly string Consoles = V7.Consoles; + + public static readonly string DiskFormats = V7.DiskFormats; + + public static readonly string Forbidden = V7.Forbidden; + + public static readonly string Gpus = V7.Gpus; + + public static readonly string Logs = V7.Logs; + + public static readonly string MoneyDonations = V7.MoneyDonations; + + public static readonly string MusicSynths = V7.MusicSynths; + + public static readonly string News = V7.News; + + public static readonly string OwnedComputers = V7.OwnedComputers; + + public static readonly string OwnedConsoles = V7.OwnedConsoles; + + public static readonly string Processors = V7.Processors; + + public static readonly string SoundSynths = V7.SoundSynths; + + public static readonly string ComputersForeignKeys = V7.ComputersForeignKeys; + + public static readonly string ConsolesForeignKeys = V7.ConsolesForeignKeys; + + public static readonly string Iso3166Numeric = V7.Iso3166Numeric; + + public static readonly string Iso3166NumericValues = V7.Iso3166NumericValues; + + public static readonly string CompaniesForeignKeys = V7.CompaniesForeignKeys; + + public static readonly string CompanyLogos = "CREATE TABLE IF NOT EXISTS `company_logos` (\n" + + "`id` INT NOT NULL AUTO_INCREMENT,\n" + + "`company_id` INT(11) NOT NULL,\n" + + "`year` INT(4) DEFAULT NULL,\n" + + "`logo_guid` CHAR(36) NOT NULL,\n" + + "PRIMARY KEY (`id`, `company_id`, `logo_guid`),\n" + + "UNIQUE INDEX `idx_id` (`id` ASC),\n" + + "INDEX `idx_company_id` (`company_id` ASC),\n" + + "INDEX `idx_guid` (`logo_guid` ASC),\n" + + "CONSTRAINT `fk_company_logos_company1`\n" + + "FOREIGN KEY (`company_id`)\n" + + "REFERENCES `companies` (`id`))"; + } +} \ No newline at end of file diff --git a/cicm_web/Models/Company.cs b/cicm_web/Models/Company.cs index 3032160f..0a2dc204 100644 --- a/cicm_web/Models/Company.cs +++ b/cicm_web/Models/Company.cs @@ -45,6 +45,8 @@ namespace cicm_web.Models public string Facebook; public DateTime Founded; public int Id; + public CompanyLogo LastLogo; + public CompanyLogo[] Logos; public string Name; public string PostalCode; public string Province; @@ -77,7 +79,9 @@ namespace cicm_web.Models SoldTo = dbItem.SoldTo, Status = dbItem.Status, Twitter = dbItem.Twitter, - Website = dbItem.Website + Website = dbItem.Website, + Logos = dbItem.Logos, + LastLogo = dbItem.LastLogo }; } @@ -104,7 +108,9 @@ namespace cicm_web.Models SoldTo = t.SoldTo, Status = t.Status, Twitter = t.Twitter, - Website = t.Website + Website = t.Website, + Logos = t.Logos, + LastLogo = t.LastLogo }).OrderBy(t => t.Name).ToArray(); } @@ -133,21 +139,24 @@ namespace cicm_web.Models SoldTo = t.SoldTo, Status = t.Status, Twitter = t.Twitter, - Website = t.Website + Website = t.Website, + Logos = t.Logos, + LastLogo = t.LastLogo }).OrderBy(t => t.Name).ToArray(); } } public class Company { - public int Id; - public string Name; + public int Id; + public CompanyLogo LastLogo; + public string Name; public static Company GetItem(int id) { Cicm.Database.Schemas.Company dbItem = Program.Database?.Operations.GetCompany(id); - return dbItem == null ? null : new Company {Name = dbItem.Name, Id = dbItem.Id}; + return dbItem == null ? null : new Company {Name = dbItem.Name, Id = dbItem.Id, LastLogo = dbItem.LastLogo}; } public static Company[] GetAllItems() @@ -156,7 +165,8 @@ namespace cicm_web.Models bool? result = Program.Database?.Operations.GetCompanies(out dbItems); if(result == null || result.Value == false || dbItems == null) return null; - return dbItems.Select(t => new Company {Id = t.Id, Name = t.Name}).OrderBy(t => t.Name).ToArray(); + return dbItems.Select(t => new Company {Id = t.Id, Name = t.Name, LastLogo = t.LastLogo}) + .OrderBy(t => t.Name).ToArray(); } public static Company[] GetItemsStartingWithLetter(char letter) @@ -167,7 +177,8 @@ namespace cicm_web.Models return dbItems .Where(t => t.Name.StartsWith(new string(letter, 1), StringComparison.InvariantCultureIgnoreCase)) - .Select(t => new Company {Id = t.Id, Name = t.Name}).OrderBy(t => t.Name).ToArray(); + .Select(t => new Company {Id = t.Id, Name = t.Name, LastLogo = t.LastLogo}).OrderBy(t => t.Name) + .ToArray(); } } } \ No newline at end of file diff --git a/cicm_web/cicm_web.csproj b/cicm_web/cicm_web.csproj index af0fd80c..3e88690d 100644 --- a/cicm_web/cicm_web.csproj +++ b/cicm_web/cicm_web.csproj @@ -2,7 +2,7 @@ netcoreapp2.0 - 3.0.99.140 + 3.0.99.143 Canary Islands Computer Museum Copyright © 2003-2018 Natalia Portillo Canary Islands Computer Museum Website