mirror of
https://github.com/claunia/marechai.git
synced 2026-07-08 17:57:08 +00:00
Add news tracking for various entities and update database schema
- Introduced a new migration to change the `added_id` column type from `int` to `long` in the `news` table and added a new `name` column. - Updated the `News` model to include the `Name` property. - Modified the `MarechaiContext` to reflect the changes in the `News` model. - Enhanced multiple controllers (Books, Documents, Gpus, Machines, Magazines, News, People, Processors, Software, SoftwareReleases, SoftwareVersions, SoundSynths) to create news entries upon creation and updates of respective entities. - Implemented logic to generate appropriate news names based on entity details. - Updated the front-end to display new news types and their corresponding icons. - Added Spanish translations for new news types in the resource files.
This commit is contained in:
@@ -15,7 +15,7 @@ namespace Marechai.ApiClient.Models
|
||||
/// <summary>Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.</summary>
|
||||
public IDictionary<string, object> AdditionalData { get; set; }
|
||||
/// <summary>The affected_id property</summary>
|
||||
public int? AffectedId { get; set; }
|
||||
public long? AffectedId { get; set; }
|
||||
/// <summary>The controller property</summary>
|
||||
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
|
||||
#nullable enable
|
||||
@@ -33,6 +33,14 @@ namespace Marechai.ApiClient.Models
|
||||
#nullable restore
|
||||
#else
|
||||
public string ItemName { get; set; }
|
||||
#endif
|
||||
/// <summary>The name property</summary>
|
||||
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
|
||||
#nullable enable
|
||||
public string? Name { get; set; }
|
||||
#nullable restore
|
||||
#else
|
||||
public string Name { get; set; }
|
||||
#endif
|
||||
/// <summary>The text property</summary>
|
||||
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
|
||||
@@ -71,10 +79,11 @@ namespace Marechai.ApiClient.Models
|
||||
{
|
||||
return new Dictionary<string, Action<IParseNode>>
|
||||
{
|
||||
{ "affected_id", n => { AffectedId = n.GetIntValue(); } },
|
||||
{ "affected_id", n => { AffectedId = n.GetLongValue(); } },
|
||||
{ "controller", n => { Controller = n.GetStringValue(); } },
|
||||
{ "id", n => { Id = n.GetIntValue(); } },
|
||||
{ "item_name", n => { ItemName = n.GetStringValue(); } },
|
||||
{ "name", n => { Name = n.GetStringValue(); } },
|
||||
{ "text", n => { Text = n.GetStringValue(); } },
|
||||
{ "timestamp", n => { Timestamp = n.GetDateTimeOffsetValue(); } },
|
||||
{ "type", n => { Type = n.GetIntValue(); } },
|
||||
@@ -87,10 +96,11 @@ namespace Marechai.ApiClient.Models
|
||||
public virtual void Serialize(ISerializationWriter writer)
|
||||
{
|
||||
if(ReferenceEquals(writer, null)) throw new ArgumentNullException(nameof(writer));
|
||||
writer.WriteIntValue("affected_id", AffectedId);
|
||||
writer.WriteLongValue("affected_id", AffectedId);
|
||||
writer.WriteStringValue("controller", Controller);
|
||||
writer.WriteIntValue("id", Id);
|
||||
writer.WriteStringValue("item_name", ItemName);
|
||||
writer.WriteStringValue("name", Name);
|
||||
writer.WriteStringValue("text", Text);
|
||||
writer.WriteDateTimeOffsetValue("timestamp", Timestamp);
|
||||
writer.WriteIntValue("type", Type);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"descriptionHash": "5FA86B439275E38EC7A0C23D1258AB8B9FE90EEE81BE82C55B8CA42C883D5B3A7A3706740519449FBF51C144142A70893B24BD7730FB51C2A104977412B86553",
|
||||
"descriptionHash": "180C13118CC0FB9D7D20641B70174A8A6E9087183E8E28E0B4E9F58D8D72F75BCD8A178553461F31625ED679C9345769F48799D007D30D599D917A54D9142E62",
|
||||
"descriptionLocation": "../../../../../tmp/openapi.json",
|
||||
"lockFileVersion": "1.0.0",
|
||||
"kiotaVersion": "1.31.1",
|
||||
|
||||
@@ -20,7 +20,7 @@ public class NewsItemViewModel
|
||||
public required IAsyncRelayCommand<NewsDto> NavigateToItemCommand { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Determines if this news item can be navigated to (only computers and consoles)
|
||||
/// Determines if this news item can be navigated to
|
||||
/// </summary>
|
||||
public bool CanNavigateToItem
|
||||
{
|
||||
@@ -36,7 +36,27 @@ public class NewsItemViewModel
|
||||
or NewsType.NewComputerInCollection
|
||||
or NewsType.NewConsoleInCollection
|
||||
or NewsType.UpdatedComputerInCollection
|
||||
or NewsType.UpdatedConsoleInCollection;
|
||||
or NewsType.UpdatedConsoleInCollection
|
||||
or NewsType.NewBookInDb
|
||||
or NewsType.UpdatedBookInDb
|
||||
or NewsType.NewDocumentInDb
|
||||
or NewsType.UpdatedDocumentInDb
|
||||
or NewsType.NewMagazineInDb
|
||||
or NewsType.UpdatedMagazineInDb
|
||||
or NewsType.NewPersonInDb
|
||||
or NewsType.UpdatedPersonInDb
|
||||
or NewsType.NewSoftwareInDb
|
||||
or NewsType.UpdatedSoftwareInDb
|
||||
or NewsType.NewSoftwareVersionInDb
|
||||
or NewsType.UpdatedSoftwareVersionInDb
|
||||
or NewsType.NewSoftwareReleaseInDb
|
||||
or NewsType.UpdatedSoftwareReleaseInDb
|
||||
or NewsType.NewGpuInDb
|
||||
or NewsType.UpdatedGpuInDb
|
||||
or NewsType.NewSoundSynthInDb
|
||||
or NewsType.UpdatedSoundSynthInDb
|
||||
or NewsType.NewProcessorInDb
|
||||
or NewsType.UpdatedProcessorInDb;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -79,33 +99,83 @@ public partial class NewsViewModel : ObservableObject
|
||||
|
||||
var newsType = (NewsType)news.Type.Value;
|
||||
|
||||
// Only navigate for computer and console news items
|
||||
bool isComputerOrConsole = newsType is NewsType.NewComputerInDb
|
||||
or NewsType.NewConsoleInDb
|
||||
or NewsType.UpdatedComputerInDb
|
||||
or NewsType.UpdatedConsoleInDb
|
||||
or NewsType.NewComputerInCollection
|
||||
or NewsType.NewConsoleInCollection
|
||||
or NewsType.UpdatedComputerInCollection
|
||||
or NewsType.UpdatedConsoleInCollection;
|
||||
if(news.AffectedId is null or <= 0) return;
|
||||
|
||||
if(!isComputerOrConsole) return;
|
||||
int affectedId = (int)(news.AffectedId ?? 0);
|
||||
string viewName;
|
||||
var parameters = new NavigationParameters { { NavParamKeys.NavigationSource, nameof(NewsViewModel) } };
|
||||
|
||||
// Extract the machine ID from AffectedId
|
||||
if(news.AffectedId is null) return;
|
||||
|
||||
int machineId = news.AffectedId ?? 0;
|
||||
|
||||
if(machineId <= 0) return;
|
||||
|
||||
// Navigate to machine view with source information
|
||||
var parameters = new NavigationParameters
|
||||
switch(newsType)
|
||||
{
|
||||
{ NavParamKeys.MachineId, machineId },
|
||||
{ NavParamKeys.NavigationSource, nameof(NewsViewModel) }
|
||||
};
|
||||
case NewsType.NewComputerInDb or NewsType.UpdatedComputerInDb
|
||||
or NewsType.NewComputerInCollection or NewsType.UpdatedComputerInCollection
|
||||
or NewsType.NewConsoleInDb or NewsType.UpdatedConsoleInDb
|
||||
or NewsType.NewConsoleInCollection or NewsType.UpdatedConsoleInCollection:
|
||||
viewName = nameof(MachineViewPage);
|
||||
parameters.Add(NavParamKeys.MachineId, affectedId);
|
||||
|
||||
_regionManager.RequestNavigate(RegionNames.Content, nameof(MachineViewPage), parameters);
|
||||
break;
|
||||
|
||||
case NewsType.NewBookInDb or NewsType.UpdatedBookInDb:
|
||||
viewName = nameof(BookViewPage);
|
||||
parameters.Add(NavParamKeys.BookId, affectedId);
|
||||
|
||||
break;
|
||||
|
||||
case NewsType.NewDocumentInDb or NewsType.UpdatedDocumentInDb:
|
||||
viewName = nameof(DocumentViewPage);
|
||||
parameters.Add(NavParamKeys.DocumentId, affectedId);
|
||||
|
||||
break;
|
||||
|
||||
case NewsType.NewMagazineInDb or NewsType.UpdatedMagazineInDb:
|
||||
viewName = nameof(MagazineViewPage);
|
||||
parameters.Add(NavParamKeys.MagazineId, affectedId);
|
||||
|
||||
break;
|
||||
|
||||
case NewsType.NewPersonInDb or NewsType.UpdatedPersonInDb:
|
||||
viewName = nameof(PersonViewPage);
|
||||
parameters.Add(NavParamKeys.PersonId, affectedId);
|
||||
|
||||
break;
|
||||
|
||||
case NewsType.NewSoftwareInDb or NewsType.UpdatedSoftwareInDb
|
||||
or NewsType.NewSoftwareVersionInDb or NewsType.UpdatedSoftwareVersionInDb:
|
||||
viewName = nameof(SoftwareViewPage);
|
||||
parameters.Add(NavParamKeys.SoftwareId, affectedId);
|
||||
|
||||
break;
|
||||
|
||||
case NewsType.NewSoftwareReleaseInDb or NewsType.UpdatedSoftwareReleaseInDb:
|
||||
viewName = nameof(SoftwareReleaseViewPage);
|
||||
parameters.Add(NavParamKeys.SoftwareReleaseId, affectedId);
|
||||
|
||||
break;
|
||||
|
||||
case NewsType.NewGpuInDb or NewsType.UpdatedGpuInDb:
|
||||
viewName = nameof(GpuDetailPage);
|
||||
parameters.Add(NavParamKeys.GpuId, affectedId);
|
||||
|
||||
break;
|
||||
|
||||
case NewsType.NewSoundSynthInDb or NewsType.UpdatedSoundSynthInDb:
|
||||
viewName = nameof(SoundSynthDetailPage);
|
||||
parameters.Add(NavParamKeys.SoundSynthId, affectedId);
|
||||
|
||||
break;
|
||||
|
||||
case NewsType.NewProcessorInDb or NewsType.UpdatedProcessorInDb:
|
||||
viewName = nameof(ProcessorDetailPage);
|
||||
parameters.Add(NavParamKeys.ProcessorId, affectedId);
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
_regionManager.RequestNavigate(RegionNames.Content, viewName, parameters);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -126,6 +196,26 @@ public partial class NewsViewModel : ObservableObject
|
||||
NewsType.UpdatedConsoleInDb => _localizer["Updated console in database"].Value,
|
||||
NewsType.UpdatedComputerInCollection => _localizer["Updated computer in collection"].Value,
|
||||
NewsType.UpdatedConsoleInCollection => _localizer["Updated console in collection"].Value,
|
||||
NewsType.NewBookInDb => _localizer["New book in database"].Value,
|
||||
NewsType.UpdatedBookInDb => _localizer["Updated book in database"].Value,
|
||||
NewsType.NewDocumentInDb => _localizer["New document in database"].Value,
|
||||
NewsType.UpdatedDocumentInDb => _localizer["Updated document in database"].Value,
|
||||
NewsType.NewMagazineInDb => _localizer["New magazine in database"].Value,
|
||||
NewsType.UpdatedMagazineInDb => _localizer["Updated magazine in database"].Value,
|
||||
NewsType.NewPersonInDb => _localizer["New person in database"].Value,
|
||||
NewsType.UpdatedPersonInDb => _localizer["Updated person in database"].Value,
|
||||
NewsType.NewSoftwareInDb => _localizer["New software in database"].Value,
|
||||
NewsType.UpdatedSoftwareInDb => _localizer["Updated software in database"].Value,
|
||||
NewsType.NewSoftwareVersionInDb => _localizer["New software version in database"].Value,
|
||||
NewsType.UpdatedSoftwareVersionInDb => _localizer["Updated software version in database"].Value,
|
||||
NewsType.NewSoftwareReleaseInDb => _localizer["New software release in database"].Value,
|
||||
NewsType.UpdatedSoftwareReleaseInDb => _localizer["Updated software release in database"].Value,
|
||||
NewsType.NewGpuInDb => _localizer["New GPU in database"].Value,
|
||||
NewsType.UpdatedGpuInDb => _localizer["Updated GPU in database"].Value,
|
||||
NewsType.NewSoundSynthInDb => _localizer["New sound synthesizer in database"].Value,
|
||||
NewsType.UpdatedSoundSynthInDb => _localizer["Updated sound synthesizer in database"].Value,
|
||||
NewsType.NewProcessorInDb => _localizer["New processor in database"].Value,
|
||||
NewsType.UpdatedProcessorInDb => _localizer["Updated processor in database"].Value,
|
||||
_ => string.Empty
|
||||
};
|
||||
}
|
||||
|
||||
@@ -510,6 +510,66 @@
|
||||
<data name="Updated console in collection" xml:space="preserve">
|
||||
<value>Aktualisierte Konsole in der Sammlung</value>
|
||||
</data>
|
||||
<data name="New book in database" xml:space="preserve">
|
||||
<value>Neues Buch in der Datenbank</value>
|
||||
</data>
|
||||
<data name="Updated book in database" xml:space="preserve">
|
||||
<value>Aktualisiertes Buch in der Datenbank</value>
|
||||
</data>
|
||||
<data name="New document in database" xml:space="preserve">
|
||||
<value>Neues Dokument in der Datenbank</value>
|
||||
</data>
|
||||
<data name="Updated document in database" xml:space="preserve">
|
||||
<value>Aktualisiertes Dokument in der Datenbank</value>
|
||||
</data>
|
||||
<data name="New magazine in database" xml:space="preserve">
|
||||
<value>Neue Zeitschrift in der Datenbank</value>
|
||||
</data>
|
||||
<data name="Updated magazine in database" xml:space="preserve">
|
||||
<value>Aktualisierte Zeitschrift in der Datenbank</value>
|
||||
</data>
|
||||
<data name="New person in database" xml:space="preserve">
|
||||
<value>Neue Person in der Datenbank</value>
|
||||
</data>
|
||||
<data name="Updated person in database" xml:space="preserve">
|
||||
<value>Aktualisierte Person in der Datenbank</value>
|
||||
</data>
|
||||
<data name="New software in database" xml:space="preserve">
|
||||
<value>Neue Software in der Datenbank</value>
|
||||
</data>
|
||||
<data name="Updated software in database" xml:space="preserve">
|
||||
<value>Aktualisierte Software in der Datenbank</value>
|
||||
</data>
|
||||
<data name="New software version in database" xml:space="preserve">
|
||||
<value>Neue Softwareversion in der Datenbank</value>
|
||||
</data>
|
||||
<data name="Updated software version in database" xml:space="preserve">
|
||||
<value>Aktualisierte Softwareversion in der Datenbank</value>
|
||||
</data>
|
||||
<data name="New software release in database" xml:space="preserve">
|
||||
<value>Neue Softwareveröffentlichung in der Datenbank</value>
|
||||
</data>
|
||||
<data name="Updated software release in database" xml:space="preserve">
|
||||
<value>Aktualisierte Softwareveröffentlichung in der Datenbank</value>
|
||||
</data>
|
||||
<data name="New GPU in database" xml:space="preserve">
|
||||
<value>Neue GPU in der Datenbank</value>
|
||||
</data>
|
||||
<data name="Updated GPU in database" xml:space="preserve">
|
||||
<value>Aktualisierte GPU in der Datenbank</value>
|
||||
</data>
|
||||
<data name="New sound synthesizer in database" xml:space="preserve">
|
||||
<value>Neuer Soundsynthesizer in der Datenbank</value>
|
||||
</data>
|
||||
<data name="Updated sound synthesizer in database" xml:space="preserve">
|
||||
<value>Aktualisierter Soundsynthesizer in der Datenbank</value>
|
||||
</data>
|
||||
<data name="New processor in database" xml:space="preserve">
|
||||
<value>Neuer Prozessor in der Datenbank</value>
|
||||
</data>
|
||||
<data name="Updated processor in database" xml:space="preserve">
|
||||
<value>Aktualisierter Prozessor in der Datenbank</value>
|
||||
</data>
|
||||
<data name="No news available" xml:space="preserve">
|
||||
<value>Keine Nachrichten verfügbar</value>
|
||||
</data>
|
||||
|
||||
@@ -510,6 +510,66 @@
|
||||
<data name="Updated console in collection" xml:space="preserve">
|
||||
<value>Consola actualizada en la colección</value>
|
||||
</data>
|
||||
<data name="New book in database" xml:space="preserve">
|
||||
<value>Nuevo libro en la base de datos</value>
|
||||
</data>
|
||||
<data name="Updated book in database" xml:space="preserve">
|
||||
<value>Libro actualizado en la base de datos</value>
|
||||
</data>
|
||||
<data name="New document in database" xml:space="preserve">
|
||||
<value>Nuevo documento en la base de datos</value>
|
||||
</data>
|
||||
<data name="Updated document in database" xml:space="preserve">
|
||||
<value>Documento actualizado en la base de datos</value>
|
||||
</data>
|
||||
<data name="New magazine in database" xml:space="preserve">
|
||||
<value>Nueva revista en la base de datos</value>
|
||||
</data>
|
||||
<data name="Updated magazine in database" xml:space="preserve">
|
||||
<value>Revista actualizada en la base de datos</value>
|
||||
</data>
|
||||
<data name="New person in database" xml:space="preserve">
|
||||
<value>Nueva persona en la base de datos</value>
|
||||
</data>
|
||||
<data name="Updated person in database" xml:space="preserve">
|
||||
<value>Persona actualizada en la base de datos</value>
|
||||
</data>
|
||||
<data name="New software in database" xml:space="preserve">
|
||||
<value>Nuevo software en la base de datos</value>
|
||||
</data>
|
||||
<data name="Updated software in database" xml:space="preserve">
|
||||
<value>Software actualizado en la base de datos</value>
|
||||
</data>
|
||||
<data name="New software version in database" xml:space="preserve">
|
||||
<value>Nueva versión de software en la base de datos</value>
|
||||
</data>
|
||||
<data name="Updated software version in database" xml:space="preserve">
|
||||
<value>Versión de software actualizada en la base de datos</value>
|
||||
</data>
|
||||
<data name="New software release in database" xml:space="preserve">
|
||||
<value>Nuevo lanzamiento de software en la base de datos</value>
|
||||
</data>
|
||||
<data name="Updated software release in database" xml:space="preserve">
|
||||
<value>Lanzamiento de software actualizado en la base de datos</value>
|
||||
</data>
|
||||
<data name="New GPU in database" xml:space="preserve">
|
||||
<value>Nueva GPU en la base de datos</value>
|
||||
</data>
|
||||
<data name="Updated GPU in database" xml:space="preserve">
|
||||
<value>GPU actualizada en la base de datos</value>
|
||||
</data>
|
||||
<data name="New sound synthesizer in database" xml:space="preserve">
|
||||
<value>Nuevo sintetizador de sonido en la base de datos</value>
|
||||
</data>
|
||||
<data name="Updated sound synthesizer in database" xml:space="preserve">
|
||||
<value>Sintetizador de sonido actualizado en la base de datos</value>
|
||||
</data>
|
||||
<data name="New processor in database" xml:space="preserve">
|
||||
<value>Nuevo procesador en la base de datos</value>
|
||||
</data>
|
||||
<data name="Updated processor in database" xml:space="preserve">
|
||||
<value>Procesador actualizado en la base de datos</value>
|
||||
</data>
|
||||
<data name="No news available" xml:space="preserve">
|
||||
<value>No hay noticias disponibles</value>
|
||||
</data>
|
||||
|
||||
@@ -510,6 +510,66 @@
|
||||
<data name="Updated console in collection" xml:space="preserve">
|
||||
<value>Console mise à jour dans la collection</value>
|
||||
</data>
|
||||
<data name="New book in database" xml:space="preserve">
|
||||
<value>Nouveau livre dans la base de données</value>
|
||||
</data>
|
||||
<data name="Updated book in database" xml:space="preserve">
|
||||
<value>Livre mis à jour dans la base de données</value>
|
||||
</data>
|
||||
<data name="New document in database" xml:space="preserve">
|
||||
<value>Nouveau document dans la base de données</value>
|
||||
</data>
|
||||
<data name="Updated document in database" xml:space="preserve">
|
||||
<value>Document mis à jour dans la base de données</value>
|
||||
</data>
|
||||
<data name="New magazine in database" xml:space="preserve">
|
||||
<value>Nouveau magazine dans la base de données</value>
|
||||
</data>
|
||||
<data name="Updated magazine in database" xml:space="preserve">
|
||||
<value>Magazine mis à jour dans la base de données</value>
|
||||
</data>
|
||||
<data name="New person in database" xml:space="preserve">
|
||||
<value>Nouvelle personne dans la base de données</value>
|
||||
</data>
|
||||
<data name="Updated person in database" xml:space="preserve">
|
||||
<value>Personne mise à jour dans la base de données</value>
|
||||
</data>
|
||||
<data name="New software in database" xml:space="preserve">
|
||||
<value>Nouveau logiciel dans la base de données</value>
|
||||
</data>
|
||||
<data name="Updated software in database" xml:space="preserve">
|
||||
<value>Logiciel mis à jour dans la base de données</value>
|
||||
</data>
|
||||
<data name="New software version in database" xml:space="preserve">
|
||||
<value>Nouvelle version de logiciel dans la base de données</value>
|
||||
</data>
|
||||
<data name="Updated software version in database" xml:space="preserve">
|
||||
<value>Version de logiciel mise à jour dans la base de données</value>
|
||||
</data>
|
||||
<data name="New software release in database" xml:space="preserve">
|
||||
<value>Nouvelle publication de logiciel dans la base de données</value>
|
||||
</data>
|
||||
<data name="Updated software release in database" xml:space="preserve">
|
||||
<value>Publication de logiciel mise à jour dans la base de données</value>
|
||||
</data>
|
||||
<data name="New GPU in database" xml:space="preserve">
|
||||
<value>Nouveau GPU dans la base de données</value>
|
||||
</data>
|
||||
<data name="Updated GPU in database" xml:space="preserve">
|
||||
<value>GPU mis à jour dans la base de données</value>
|
||||
</data>
|
||||
<data name="New sound synthesizer in database" xml:space="preserve">
|
||||
<value>Nouveau synthétiseur sonore dans la base de données</value>
|
||||
</data>
|
||||
<data name="Updated sound synthesizer in database" xml:space="preserve">
|
||||
<value>Synthétiseur sonore mis à jour dans la base de données</value>
|
||||
</data>
|
||||
<data name="New processor in database" xml:space="preserve">
|
||||
<value>Nouveau processeur dans la base de données</value>
|
||||
</data>
|
||||
<data name="Updated processor in database" xml:space="preserve">
|
||||
<value>Processeur mis à jour dans la base de données</value>
|
||||
</data>
|
||||
<data name="No news available" xml:space="preserve">
|
||||
<value>Aucune actualité disponible</value>
|
||||
</data>
|
||||
|
||||
@@ -510,6 +510,66 @@
|
||||
<data name="Updated console in collection" xml:space="preserve">
|
||||
<value>Consola renovata in collectione</value>
|
||||
</data>
|
||||
<data name="New book in database" xml:space="preserve">
|
||||
<value>Liber novus in datorum basi</value>
|
||||
</data>
|
||||
<data name="Updated book in database" xml:space="preserve">
|
||||
<value>Liber renovatus in datorum basi</value>
|
||||
</data>
|
||||
<data name="New document in database" xml:space="preserve">
|
||||
<value>Documentum novum in datorum basi</value>
|
||||
</data>
|
||||
<data name="Updated document in database" xml:space="preserve">
|
||||
<value>Documentum renovatum in datorum basi</value>
|
||||
</data>
|
||||
<data name="New magazine in database" xml:space="preserve">
|
||||
<value>Ephemeris nova in datorum basi</value>
|
||||
</data>
|
||||
<data name="Updated magazine in database" xml:space="preserve">
|
||||
<value>Ephemeris renovata in datorum basi</value>
|
||||
</data>
|
||||
<data name="New person in database" xml:space="preserve">
|
||||
<value>Persona nova in datorum basi</value>
|
||||
</data>
|
||||
<data name="Updated person in database" xml:space="preserve">
|
||||
<value>Persona renovata in datorum basi</value>
|
||||
</data>
|
||||
<data name="New software in database" xml:space="preserve">
|
||||
<value>Programma novum in datorum basi</value>
|
||||
</data>
|
||||
<data name="Updated software in database" xml:space="preserve">
|
||||
<value>Programma renovatum in datorum basi</value>
|
||||
</data>
|
||||
<data name="New software version in database" xml:space="preserve">
|
||||
<value>Versio programmatis nova in datorum basi</value>
|
||||
</data>
|
||||
<data name="Updated software version in database" xml:space="preserve">
|
||||
<value>Versio programmatis renovata in datorum basi</value>
|
||||
</data>
|
||||
<data name="New software release in database" xml:space="preserve">
|
||||
<value>Editio programmatis nova in datorum basi</value>
|
||||
</data>
|
||||
<data name="Updated software release in database" xml:space="preserve">
|
||||
<value>Editio programmatis renovata in datorum basi</value>
|
||||
</data>
|
||||
<data name="New GPU in database" xml:space="preserve">
|
||||
<value>GPU novum in datorum basi</value>
|
||||
</data>
|
||||
<data name="Updated GPU in database" xml:space="preserve">
|
||||
<value>GPU renovatum in datorum basi</value>
|
||||
</data>
|
||||
<data name="New sound synthesizer in database" xml:space="preserve">
|
||||
<value>Synthesizer sonorum novus in datorum basi</value>
|
||||
</data>
|
||||
<data name="Updated sound synthesizer in database" xml:space="preserve">
|
||||
<value>Synthesizer sonorum renovatus in datorum basi</value>
|
||||
</data>
|
||||
<data name="New processor in database" xml:space="preserve">
|
||||
<value>Processor novus in datorum basi</value>
|
||||
</data>
|
||||
<data name="Updated processor in database" xml:space="preserve">
|
||||
<value>Processor renovatus in datorum basi</value>
|
||||
</data>
|
||||
<data name="No news available" xml:space="preserve">
|
||||
<value>Nulli nuntii disponibiles</value>
|
||||
</data>
|
||||
|
||||
@@ -510,6 +510,66 @@
|
||||
<data name="Updated console in collection" xml:space="preserve">
|
||||
<value>Console atualizado na coleção</value>
|
||||
</data>
|
||||
<data name="New book in database" xml:space="preserve">
|
||||
<value>Novo livro no banco de dados</value>
|
||||
</data>
|
||||
<data name="Updated book in database" xml:space="preserve">
|
||||
<value>Livro atualizado no banco de dados</value>
|
||||
</data>
|
||||
<data name="New document in database" xml:space="preserve">
|
||||
<value>Novo documento no banco de dados</value>
|
||||
</data>
|
||||
<data name="Updated document in database" xml:space="preserve">
|
||||
<value>Documento atualizado no banco de dados</value>
|
||||
</data>
|
||||
<data name="New magazine in database" xml:space="preserve">
|
||||
<value>Nova revista no banco de dados</value>
|
||||
</data>
|
||||
<data name="Updated magazine in database" xml:space="preserve">
|
||||
<value>Revista atualizada no banco de dados</value>
|
||||
</data>
|
||||
<data name="New person in database" xml:space="preserve">
|
||||
<value>Nova pessoa no banco de dados</value>
|
||||
</data>
|
||||
<data name="Updated person in database" xml:space="preserve">
|
||||
<value>Pessoa atualizada no banco de dados</value>
|
||||
</data>
|
||||
<data name="New software in database" xml:space="preserve">
|
||||
<value>Novo software no banco de dados</value>
|
||||
</data>
|
||||
<data name="Updated software in database" xml:space="preserve">
|
||||
<value>Software atualizado no banco de dados</value>
|
||||
</data>
|
||||
<data name="New software version in database" xml:space="preserve">
|
||||
<value>Nova versão de software no banco de dados</value>
|
||||
</data>
|
||||
<data name="Updated software version in database" xml:space="preserve">
|
||||
<value>Versão de software atualizada no banco de dados</value>
|
||||
</data>
|
||||
<data name="New software release in database" xml:space="preserve">
|
||||
<value>Novo lançamento de software no banco de dados</value>
|
||||
</data>
|
||||
<data name="Updated software release in database" xml:space="preserve">
|
||||
<value>Lançamento de software atualizado no banco de dados</value>
|
||||
</data>
|
||||
<data name="New GPU in database" xml:space="preserve">
|
||||
<value>Nova GPU no banco de dados</value>
|
||||
</data>
|
||||
<data name="Updated GPU in database" xml:space="preserve">
|
||||
<value>GPU atualizada no banco de dados</value>
|
||||
</data>
|
||||
<data name="New sound synthesizer in database" xml:space="preserve">
|
||||
<value>Novo sintetizador de som no banco de dados</value>
|
||||
</data>
|
||||
<data name="Updated sound synthesizer in database" xml:space="preserve">
|
||||
<value>Sintetizador de som atualizado no banco de dados</value>
|
||||
</data>
|
||||
<data name="New processor in database" xml:space="preserve">
|
||||
<value>Novo processador no banco de dados</value>
|
||||
</data>
|
||||
<data name="Updated processor in database" xml:space="preserve">
|
||||
<value>Processador atualizado no banco de dados</value>
|
||||
</data>
|
||||
<data name="No news available" xml:space="preserve">
|
||||
<value>Nenhuma notícia disponível</value>
|
||||
</data>
|
||||
|
||||
@@ -510,6 +510,66 @@
|
||||
<data name="Updated console in collection" xml:space="preserve">
|
||||
<value>Updated console in collection</value>
|
||||
</data>
|
||||
<data name="New book in database" xml:space="preserve">
|
||||
<value>New book in database</value>
|
||||
</data>
|
||||
<data name="Updated book in database" xml:space="preserve">
|
||||
<value>Updated book in database</value>
|
||||
</data>
|
||||
<data name="New document in database" xml:space="preserve">
|
||||
<value>New document in database</value>
|
||||
</data>
|
||||
<data name="Updated document in database" xml:space="preserve">
|
||||
<value>Updated document in database</value>
|
||||
</data>
|
||||
<data name="New magazine in database" xml:space="preserve">
|
||||
<value>New magazine in database</value>
|
||||
</data>
|
||||
<data name="Updated magazine in database" xml:space="preserve">
|
||||
<value>Updated magazine in database</value>
|
||||
</data>
|
||||
<data name="New person in database" xml:space="preserve">
|
||||
<value>New person in database</value>
|
||||
</data>
|
||||
<data name="Updated person in database" xml:space="preserve">
|
||||
<value>Updated person in database</value>
|
||||
</data>
|
||||
<data name="New software in database" xml:space="preserve">
|
||||
<value>New software in database</value>
|
||||
</data>
|
||||
<data name="Updated software in database" xml:space="preserve">
|
||||
<value>Updated software in database</value>
|
||||
</data>
|
||||
<data name="New software version in database" xml:space="preserve">
|
||||
<value>New software version in database</value>
|
||||
</data>
|
||||
<data name="Updated software version in database" xml:space="preserve">
|
||||
<value>Updated software version in database</value>
|
||||
</data>
|
||||
<data name="New software release in database" xml:space="preserve">
|
||||
<value>New software release in database</value>
|
||||
</data>
|
||||
<data name="Updated software release in database" xml:space="preserve">
|
||||
<value>Updated software release in database</value>
|
||||
</data>
|
||||
<data name="New GPU in database" xml:space="preserve">
|
||||
<value>New GPU in database</value>
|
||||
</data>
|
||||
<data name="Updated GPU in database" xml:space="preserve">
|
||||
<value>Updated GPU in database</value>
|
||||
</data>
|
||||
<data name="New sound synthesizer in database" xml:space="preserve">
|
||||
<value>New sound synthesizer in database</value>
|
||||
</data>
|
||||
<data name="Updated sound synthesizer in database" xml:space="preserve">
|
||||
<value>Updated sound synthesizer in database</value>
|
||||
</data>
|
||||
<data name="New processor in database" xml:space="preserve">
|
||||
<value>New processor in database</value>
|
||||
</data>
|
||||
<data name="Updated processor in database" xml:space="preserve">
|
||||
<value>Updated processor in database</value>
|
||||
</data>
|
||||
<data name="No news available" xml:space="preserve">
|
||||
<value>No news available</value>
|
||||
</data>
|
||||
|
||||
@@ -31,7 +31,8 @@ public sealed class NewsDto : BaseDto<int>
|
||||
{
|
||||
public NewsDto() {}
|
||||
|
||||
public NewsDto(int affectedId, string text, DateTime timestamp, string controller, string itemName, NewsType type)
|
||||
public NewsDto(long affectedId, string text, DateTime timestamp, string controller, string itemName,
|
||||
NewsType type, string? name = null)
|
||||
{
|
||||
AffectedId = affectedId;
|
||||
Text = text;
|
||||
@@ -39,12 +40,13 @@ public sealed class NewsDto : BaseDto<int>
|
||||
Controller = controller;
|
||||
ItemName = itemName;
|
||||
Type = type;
|
||||
Name = name;
|
||||
}
|
||||
|
||||
[JsonPropertyName("type")]
|
||||
public NewsType Type { get; set; }
|
||||
[JsonPropertyName("affected_id")]
|
||||
public int AffectedId { get; set; }
|
||||
public long AffectedId { get; set; }
|
||||
[JsonPropertyName("controller")]
|
||||
public string Controller { get; set; }
|
||||
[JsonPropertyName("item_name")]
|
||||
@@ -53,4 +55,6 @@ public sealed class NewsDto : BaseDto<int>
|
||||
public string Text { get; set; }
|
||||
[JsonPropertyName("timestamp")]
|
||||
public DateTime Timestamp { get; set; }
|
||||
[JsonPropertyName("name")]
|
||||
public string? Name { get; set; }
|
||||
}
|
||||
@@ -40,7 +40,27 @@ public enum NewsType
|
||||
UpdatedConsoleInDb = 6,
|
||||
UpdatedComputerInCollection = 7,
|
||||
UpdatedConsoleInCollection = 8,
|
||||
NewMoneyDonation = 9
|
||||
NewMoneyDonation = 9,
|
||||
NewBookInDb = 10,
|
||||
UpdatedBookInDb = 11,
|
||||
NewDocumentInDb = 12,
|
||||
UpdatedDocumentInDb = 13,
|
||||
NewMagazineInDb = 14,
|
||||
UpdatedMagazineInDb = 15,
|
||||
NewPersonInDb = 16,
|
||||
UpdatedPersonInDb = 17,
|
||||
NewSoftwareInDb = 18,
|
||||
UpdatedSoftwareInDb = 19,
|
||||
NewSoftwareVersionInDb = 20,
|
||||
UpdatedSoftwareVersionInDb = 21,
|
||||
NewSoftwareReleaseInDb = 22,
|
||||
UpdatedSoftwareReleaseInDb = 23,
|
||||
NewGpuInDb = 24,
|
||||
UpdatedGpuInDb = 25,
|
||||
NewSoundSynthInDb = 26,
|
||||
UpdatedSoundSynthInDb = 27,
|
||||
NewProcessorInDb = 28,
|
||||
UpdatedProcessorInDb = 29
|
||||
}
|
||||
|
||||
public enum StatusType
|
||||
|
||||
8501
Marechai.Database/Migrations/20260425085108_AddNewsNameAndLongAddedId.Designer.cs
generated
Normal file
8501
Marechai.Database/Migrations/20260425085108_AddNewsNameAndLongAddedId.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,49 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace Marechai.Database.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class AddNewsNameAndLongAddedId : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AlterColumn<long>(
|
||||
name: "added_id",
|
||||
table: "news",
|
||||
type: "bigint(20)",
|
||||
nullable: false,
|
||||
defaultValueSql: "'0'",
|
||||
oldClrType: typeof(int),
|
||||
oldType: "int(11)",
|
||||
oldDefaultValueSql: "'0'");
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "name",
|
||||
table: "news",
|
||||
type: "longtext",
|
||||
nullable: true)
|
||||
.Annotation("MySql:CharSet", "utf8mb4");
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropColumn(
|
||||
name: "name",
|
||||
table: "news");
|
||||
|
||||
migrationBuilder.AlterColumn<int>(
|
||||
name: "added_id",
|
||||
table: "news",
|
||||
type: "int(11)",
|
||||
nullable: false,
|
||||
defaultValueSql: "'0'",
|
||||
oldClrType: typeof(long),
|
||||
oldType: "bigint(20)",
|
||||
oldDefaultValueSql: "'0'");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4250,9 +4250,9 @@ namespace Marechai.Database.Migrations
|
||||
|
||||
MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<int>("AddedId")
|
||||
b.Property<long>("AddedId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int(11)")
|
||||
.HasColumnType("bigint(20)")
|
||||
.HasColumnName("added_id")
|
||||
.HasDefaultValueSql("'0'");
|
||||
|
||||
@@ -4266,6 +4266,10 @@ namespace Marechai.Database.Migrations
|
||||
.HasColumnType("datetime")
|
||||
.HasColumnName("date");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasColumnType("longtext")
|
||||
.HasColumnName("name");
|
||||
|
||||
b.Property<int>("Type")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int(11)")
|
||||
|
||||
@@ -1272,7 +1272,7 @@ public class MarechaiContext : IdentityDbContext<ApplicationUser, ApplicationRol
|
||||
|
||||
entity.Property(e => e.AddedId)
|
||||
.HasColumnName("added_id")
|
||||
.HasColumnType("int(11)")
|
||||
.HasColumnType("bigint(20)")
|
||||
.HasDefaultValueSql("'0'");
|
||||
|
||||
entity.Property(e => e.Date).IsRequired().HasColumnName("date").HasColumnType("datetime");
|
||||
@@ -1281,6 +1281,11 @@ public class MarechaiContext : IdentityDbContext<ApplicationUser, ApplicationRol
|
||||
.HasColumnName("type")
|
||||
.HasColumnType("int(11)")
|
||||
.HasDefaultValue(NewsType.NewComputerInDb);
|
||||
|
||||
entity.Property(e => e.Name)
|
||||
.HasColumnName("name")
|
||||
.HasColumnType("longtext")
|
||||
.IsRequired(false);
|
||||
});
|
||||
|
||||
modelBuilder.Entity<PeopleByBook>(entity =>
|
||||
|
||||
@@ -34,5 +34,6 @@ public class News : BaseModel<int>
|
||||
public DateTime Date { get; set; }
|
||||
public NewsType Type { get; set; }
|
||||
[DisplayName("Affected ID")]
|
||||
public int AddedId { get; set; }
|
||||
public long AddedId { get; set; }
|
||||
public string? Name { get; set; }
|
||||
}
|
||||
@@ -29,6 +29,7 @@ using System.IO;
|
||||
using System.Linq;
|
||||
using System.Security.Claims;
|
||||
using System.Threading.Tasks;
|
||||
using Marechai.Data;
|
||||
using Marechai.Data.Dtos;
|
||||
using Marechai.Database.Models;
|
||||
using Marechai.Helpers;
|
||||
@@ -210,6 +211,15 @@ public class BooksController(MarechaiContext context, IConfiguration configurati
|
||||
model.Edition = dto.Edition;
|
||||
model.PreviousId = dto.PreviousId;
|
||||
model.SourceId = dto.SourceId;
|
||||
|
||||
await context.News.AddAsync(new News
|
||||
{
|
||||
AddedId = model.Id,
|
||||
Date = DateTime.UtcNow,
|
||||
Type = NewsType.UpdatedBookInDb,
|
||||
Name = dto.Title
|
||||
});
|
||||
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
return Ok();
|
||||
@@ -243,6 +253,16 @@ public class BooksController(MarechaiContext context, IConfiguration configurati
|
||||
await context.Books.AddAsync(model);
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
await context.News.AddAsync(new News
|
||||
{
|
||||
AddedId = model.Id,
|
||||
Date = DateTime.UtcNow,
|
||||
Type = NewsType.NewBookInDb,
|
||||
Name = dto.Title
|
||||
});
|
||||
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
return model.Id;
|
||||
}
|
||||
|
||||
|
||||
@@ -23,10 +23,12 @@
|
||||
// Copyright © 2003-2026 Natalia Portillo
|
||||
*******************************************************************************/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.Claims;
|
||||
using System.Threading.Tasks;
|
||||
using Marechai.Data;
|
||||
using Marechai.Data.Dtos;
|
||||
using Marechai.Database.Models;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
@@ -164,6 +166,15 @@ public class DocumentsController(MarechaiContext context) : ControllerBase
|
||||
model.SortTitle = dto.SortTitle;
|
||||
model.Published = dto.Published;
|
||||
model.CountryId = dto.CountryId;
|
||||
|
||||
await context.News.AddAsync(new News
|
||||
{
|
||||
AddedId = model.Id,
|
||||
Date = DateTime.UtcNow,
|
||||
Type = NewsType.UpdatedDocumentInDb,
|
||||
Name = dto.Title
|
||||
});
|
||||
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
return Ok();
|
||||
@@ -192,6 +203,16 @@ public class DocumentsController(MarechaiContext context) : ControllerBase
|
||||
await context.Documents.AddAsync(model);
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
await context.News.AddAsync(new News
|
||||
{
|
||||
AddedId = model.Id,
|
||||
Date = DateTime.UtcNow,
|
||||
Type = NewsType.NewDocumentInDb,
|
||||
Name = dto.Title
|
||||
});
|
||||
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
return model.Id;
|
||||
}
|
||||
|
||||
|
||||
@@ -23,10 +23,12 @@
|
||||
// Copyright © 2003-2026 Natalia Portillo
|
||||
*******************************************************************************/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.Claims;
|
||||
using System.Threading.Tasks;
|
||||
using Marechai.Data;
|
||||
using Marechai.Data.Dtos;
|
||||
using Marechai.Database.Models;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
@@ -148,6 +150,17 @@ public class GpusController(MarechaiContext context) : ControllerBase
|
||||
model.DieSize = dto.DieSize;
|
||||
model.Transistors = dto.Transistors;
|
||||
|
||||
Company company = dto.CompanyId is not null ? await context.Companies.FindAsync(dto.CompanyId) : null;
|
||||
string newsName = company is not null ? $"{company.Name} {dto.Name}" : dto.Name;
|
||||
|
||||
await context.News.AddAsync(new News
|
||||
{
|
||||
AddedId = model.Id,
|
||||
Date = DateTime.UtcNow,
|
||||
Type = NewsType.UpdatedGpuInDb,
|
||||
Name = newsName
|
||||
});
|
||||
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
return Ok();
|
||||
@@ -180,6 +193,19 @@ public class GpusController(MarechaiContext context) : ControllerBase
|
||||
await context.Gpus.AddAsync(model);
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
Company company = dto.CompanyId is not null ? await context.Companies.FindAsync(dto.CompanyId) : null;
|
||||
string newsName = company is not null ? $"{company.Name} {dto.Name}" : dto.Name;
|
||||
|
||||
await context.News.AddAsync(new News
|
||||
{
|
||||
AddedId = model.Id,
|
||||
Date = DateTime.UtcNow,
|
||||
Type = NewsType.NewGpuInDb,
|
||||
Name = newsName
|
||||
});
|
||||
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
return model.Id;
|
||||
}
|
||||
|
||||
|
||||
@@ -107,6 +107,9 @@ public class MachinesController(MarechaiContext context) : ControllerBase
|
||||
Date = DateTime.UtcNow
|
||||
};
|
||||
|
||||
Company company = await context.Companies.FindAsync(model.CompanyId);
|
||||
news.Name = company is not null ? $"{company.Name} {model.Name}" : model.Name;
|
||||
|
||||
switch(model.Type)
|
||||
{
|
||||
case MachineType.Computer:
|
||||
@@ -160,6 +163,9 @@ public class MachinesController(MarechaiContext context) : ControllerBase
|
||||
Date = DateTime.UtcNow
|
||||
};
|
||||
|
||||
Company company = await context.Companies.FindAsync(dto.CompanyId);
|
||||
news.Name = company is not null ? $"{company.Name} {model.Name}" : model.Name;
|
||||
|
||||
switch(model.Type)
|
||||
{
|
||||
case MachineType.Computer:
|
||||
|
||||
@@ -23,10 +23,12 @@
|
||||
// Copyright © 2003-2026 Natalia Portillo
|
||||
*******************************************************************************/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.Claims;
|
||||
using System.Threading.Tasks;
|
||||
using Marechai.Data;
|
||||
using Marechai.Data.Dtos;
|
||||
using Marechai.Database.Models;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
@@ -182,6 +184,15 @@ public class MagazinesController(MarechaiContext context) : ControllerBase
|
||||
model.FirstPublication = dto.FirstPublication;
|
||||
model.CountryId = dto.CountryId;
|
||||
model.Issn = dto.Issn;
|
||||
|
||||
await context.News.AddAsync(new News
|
||||
{
|
||||
AddedId = model.Id,
|
||||
Date = DateTime.UtcNow,
|
||||
Type = NewsType.UpdatedMagazineInDb,
|
||||
Name = dto.Title
|
||||
});
|
||||
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
return Ok();
|
||||
@@ -211,6 +222,16 @@ public class MagazinesController(MarechaiContext context) : ControllerBase
|
||||
await context.Magazines.AddAsync(model);
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
await context.News.AddAsync(new News
|
||||
{
|
||||
AddedId = model.Id,
|
||||
Date = DateTime.UtcNow,
|
||||
Type = NewsType.NewMagazineInDb,
|
||||
Name = dto.Title
|
||||
});
|
||||
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
return model.Id;
|
||||
}
|
||||
|
||||
|
||||
@@ -51,7 +51,8 @@ public class NewsController(MarechaiContext context) : ControllerBase
|
||||
Id = n.Id,
|
||||
Timestamp = n.Date,
|
||||
Type = n.Type,
|
||||
AffectedId = n.AddedId
|
||||
AffectedId = n.AddedId,
|
||||
Name = n.Name
|
||||
})
|
||||
.ToListAsync();
|
||||
|
||||
@@ -61,62 +62,117 @@ public class NewsController(MarechaiContext context) : ControllerBase
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
public List<NewsDto> GetNews()
|
||||
{
|
||||
List<News> latestNews = context.News.OrderByDescending(t => t.Date).Take(10).ToList();
|
||||
|
||||
List<NewsDto> news = [];
|
||||
|
||||
var newsWithMachines = context.News.OrderByDescending(t => t.Date)
|
||||
.Take(10)
|
||||
.Join(context.Machines.Include(m => m.Company),
|
||||
n => n.AddedId,
|
||||
m => m.Id,
|
||||
(n, m) => new
|
||||
{
|
||||
News = n,
|
||||
Machine = m
|
||||
})
|
||||
.ToList();
|
||||
|
||||
foreach(var item in newsWithMachines)
|
||||
foreach(News @new in latestNews)
|
||||
{
|
||||
News @new = item.News;
|
||||
Machine machine = item.Machine;
|
||||
|
||||
if(machine is null) continue;
|
||||
string controller;
|
||||
string itemName = @new.Name;
|
||||
|
||||
switch(@new.Type)
|
||||
{
|
||||
case NewsType.NewComputerInDb:
|
||||
case NewsType.NewConsoleInDb:
|
||||
case NewsType.NewComputerInCollection:
|
||||
case NewsType.NewConsoleInCollection:
|
||||
case NewsType.UpdatedComputerInDb:
|
||||
case NewsType.UpdatedConsoleInDb:
|
||||
case NewsType.UpdatedComputerInCollection:
|
||||
case NewsType.UpdatedConsoleInCollection:
|
||||
news.Add(new NewsDto
|
||||
controller = "computers";
|
||||
|
||||
if(string.IsNullOrEmpty(itemName))
|
||||
{
|
||||
Id = @new.Id,
|
||||
AffectedId = @new.AddedId,
|
||||
Timestamp = @new.Date,
|
||||
Type = @new.Type,
|
||||
Controller =
|
||||
@new.Type is NewsType.NewComputerInDb
|
||||
or NewsType.NewComputerInCollection
|
||||
or NewsType.UpdatedComputerInDb
|
||||
or NewsType.UpdatedComputerInCollection
|
||||
? "computers"
|
||||
: "consoles",
|
||||
ItemName = $"{machine.Company.Name} {machine.Name}"
|
||||
});
|
||||
Machine machine = context.Machines.Include(m => m.Company)
|
||||
.FirstOrDefault(m => m.Id == @new.AddedId);
|
||||
|
||||
if(machine is not null) itemName = $"{machine.Company?.Name} {machine.Name}";
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case NewsType.NewConsoleInDb:
|
||||
case NewsType.NewConsoleInCollection:
|
||||
case NewsType.UpdatedConsoleInDb:
|
||||
case NewsType.UpdatedConsoleInCollection:
|
||||
controller = "consoles";
|
||||
|
||||
if(string.IsNullOrEmpty(itemName))
|
||||
{
|
||||
Machine console = context.Machines.Include(m => m.Company)
|
||||
.FirstOrDefault(m => m.Id == @new.AddedId);
|
||||
|
||||
if(console is not null) itemName = $"{console.Company?.Name} {console.Name}";
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case NewsType.NewMoneyDonation:
|
||||
// TODO
|
||||
continue;
|
||||
|
||||
case NewsType.NewBookInDb or NewsType.UpdatedBookInDb:
|
||||
controller = "books";
|
||||
|
||||
break;
|
||||
|
||||
case NewsType.NewDocumentInDb or NewsType.UpdatedDocumentInDb:
|
||||
controller = "documents";
|
||||
|
||||
break;
|
||||
|
||||
case NewsType.NewMagazineInDb or NewsType.UpdatedMagazineInDb:
|
||||
controller = "magazines";
|
||||
|
||||
break;
|
||||
|
||||
case NewsType.NewPersonInDb or NewsType.UpdatedPersonInDb:
|
||||
controller = "people";
|
||||
|
||||
break;
|
||||
|
||||
case NewsType.NewSoftwareInDb or NewsType.UpdatedSoftwareInDb:
|
||||
controller = "software";
|
||||
|
||||
break;
|
||||
|
||||
case NewsType.NewSoftwareVersionInDb or NewsType.UpdatedSoftwareVersionInDb:
|
||||
controller = "software-versions";
|
||||
|
||||
break;
|
||||
|
||||
case NewsType.NewSoftwareReleaseInDb or NewsType.UpdatedSoftwareReleaseInDb:
|
||||
controller = "software-releases";
|
||||
|
||||
break;
|
||||
|
||||
case NewsType.NewGpuInDb or NewsType.UpdatedGpuInDb:
|
||||
controller = "gpus";
|
||||
|
||||
break;
|
||||
|
||||
case NewsType.NewSoundSynthInDb or NewsType.UpdatedSoundSynthInDb:
|
||||
controller = "sound-synths";
|
||||
|
||||
break;
|
||||
|
||||
case NewsType.NewProcessorInDb or NewsType.UpdatedProcessorInDb:
|
||||
controller = "processors";
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
|
||||
news.Add(new NewsDto
|
||||
{
|
||||
Id = @new.Id,
|
||||
AffectedId = @new.AddedId,
|
||||
Timestamp = @new.Date,
|
||||
Type = @new.Type,
|
||||
Controller = controller,
|
||||
ItemName = itemName,
|
||||
Name = @new.Name
|
||||
});
|
||||
}
|
||||
|
||||
return news;
|
||||
|
||||
@@ -28,6 +28,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.Claims;
|
||||
using System.Threading.Tasks;
|
||||
using Marechai.Data;
|
||||
using Marechai.Data.Dtos;
|
||||
using Marechai.Database.Models;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
@@ -291,6 +292,14 @@ public class PeopleController(MarechaiContext context) : ControllerBase
|
||||
model.Alias = dto.Alias;
|
||||
model.DisplayName = dto.DisplayName;
|
||||
|
||||
await context.News.AddAsync(new News
|
||||
{
|
||||
AddedId = model.Id,
|
||||
Date = DateTime.UtcNow,
|
||||
Type = NewsType.UpdatedPersonInDb,
|
||||
Name = dto.DisplayName ?? $"{dto.Name} {dto.Surname}".Trim()
|
||||
});
|
||||
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
return Ok();
|
||||
@@ -325,6 +334,16 @@ public class PeopleController(MarechaiContext context) : ControllerBase
|
||||
await context.People.AddAsync(model);
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
await context.News.AddAsync(new News
|
||||
{
|
||||
AddedId = model.Id,
|
||||
Date = DateTime.UtcNow,
|
||||
Type = NewsType.NewPersonInDb,
|
||||
Name = dto.DisplayName ?? $"{dto.Name} {dto.Surname}".Trim()
|
||||
});
|
||||
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
return model.Id;
|
||||
}
|
||||
|
||||
|
||||
@@ -23,10 +23,12 @@
|
||||
// Copyright © 2003-2026 Natalia Portillo
|
||||
*******************************************************************************/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.Claims;
|
||||
using System.Threading.Tasks;
|
||||
using Marechai.Data;
|
||||
using Marechai.Data.Dtos;
|
||||
using Marechai.Database.Models;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
@@ -201,6 +203,17 @@ public class ProcessorsController(MarechaiContext context) : ControllerBase
|
||||
model.ThreadsPerCore = dto.ThreadsPerCore;
|
||||
model.Transistors = dto.Transistors;
|
||||
|
||||
Company company = dto.CompanyId is not null ? await context.Companies.FindAsync(dto.CompanyId) : null;
|
||||
string newsName = company is not null ? $"{company.Name} {dto.Name}" : dto.Name;
|
||||
|
||||
await context.News.AddAsync(new News
|
||||
{
|
||||
AddedId = model.Id,
|
||||
Date = DateTime.UtcNow,
|
||||
Type = NewsType.UpdatedProcessorInDb,
|
||||
Name = newsName
|
||||
});
|
||||
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
return Ok();
|
||||
@@ -249,6 +262,19 @@ public class ProcessorsController(MarechaiContext context) : ControllerBase
|
||||
await context.Processors.AddAsync(model);
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
Company company = dto.CompanyId is not null ? await context.Companies.FindAsync(dto.CompanyId) : null;
|
||||
string newsName = company is not null ? $"{company.Name} {dto.Name}" : dto.Name;
|
||||
|
||||
await context.News.AddAsync(new News
|
||||
{
|
||||
AddedId = model.Id,
|
||||
Date = DateTime.UtcNow,
|
||||
Type = NewsType.NewProcessorInDb,
|
||||
Name = newsName
|
||||
});
|
||||
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
return model.Id;
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.Claims;
|
||||
using System.Threading.Tasks;
|
||||
using Marechai.Data;
|
||||
using Marechai.Data.Dtos;
|
||||
using Marechai.Database.Models;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
@@ -188,6 +189,15 @@ public class SoftwareController(MarechaiContext context) : ControllerBase
|
||||
model.FamilyId = dto.FamilyId;
|
||||
model.IsOperatingSystem = dto.IsOperatingSystem;
|
||||
model.IsGame = dto.IsGame;
|
||||
|
||||
await context.News.AddAsync(new News
|
||||
{
|
||||
AddedId = (long)model.Id,
|
||||
Date = DateTime.UtcNow,
|
||||
Type = NewsType.UpdatedSoftwareInDb,
|
||||
Name = dto.Name
|
||||
});
|
||||
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
return Ok();
|
||||
@@ -215,6 +225,16 @@ public class SoftwareController(MarechaiContext context) : ControllerBase
|
||||
await context.Softwares.AddAsync(model);
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
await context.News.AddAsync(new News
|
||||
{
|
||||
AddedId = (long)model.Id,
|
||||
Date = DateTime.UtcNow,
|
||||
Type = NewsType.NewSoftwareInDb,
|
||||
Name = dto.Name
|
||||
});
|
||||
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
return model.Id;
|
||||
}
|
||||
|
||||
|
||||
@@ -23,11 +23,13 @@
|
||||
// Copyright © 2003-2026 Natalia Portillo
|
||||
*******************************************************************************/
|
||||
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.Claims;
|
||||
using System.Threading.Tasks;
|
||||
using Marechai.Data;
|
||||
using Marechai.Data.Dtos;
|
||||
using Marechai.Database.Models;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
@@ -139,6 +141,17 @@ public class SoftwareReleasesController(MarechaiContext context) : ControllerBas
|
||||
model.RegionId = dto.RegionId;
|
||||
model.PublisherId = dto.PublisherId;
|
||||
model.ReleaseDate = dto.ReleaseDate;
|
||||
|
||||
string newsName = await BuildSoftwareReleaseNewsNameAsync(model.SoftwareVersionId, model.PlatformId);
|
||||
|
||||
await context.News.AddAsync(new News
|
||||
{
|
||||
AddedId = (long)model.Id,
|
||||
Date = DateTime.UtcNow,
|
||||
Type = NewsType.UpdatedSoftwareReleaseInDb,
|
||||
Name = newsName
|
||||
});
|
||||
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
return Ok();
|
||||
@@ -169,6 +182,18 @@ public class SoftwareReleasesController(MarechaiContext context) : ControllerBas
|
||||
await context.SoftwareReleases.AddAsync(model);
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
string newsName = await BuildSoftwareReleaseNewsNameAsync(dto.SoftwareVersionId, dto.PlatformId);
|
||||
|
||||
await context.News.AddAsync(new News
|
||||
{
|
||||
AddedId = (long)model.Id,
|
||||
Date = DateTime.UtcNow,
|
||||
Type = NewsType.NewSoftwareReleaseInDb,
|
||||
Name = newsName
|
||||
});
|
||||
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
return model.Id;
|
||||
}
|
||||
|
||||
@@ -193,4 +218,26 @@ public class SoftwareReleasesController(MarechaiContext context) : ControllerBas
|
||||
|
||||
return Ok();
|
||||
}
|
||||
|
||||
async Task<string> BuildSoftwareReleaseNewsNameAsync(ulong versionId, ulong? platformId)
|
||||
{
|
||||
string name = "";
|
||||
|
||||
SoftwareVersion version = await context.SoftwareVersions.Include(v => v.Software)
|
||||
.FirstOrDefaultAsync(v => v.Id == versionId);
|
||||
|
||||
if(version?.Software is not null)
|
||||
name = $"{version.Software.Name} {version.VersionString}";
|
||||
else if(version is not null)
|
||||
name = version.VersionString;
|
||||
|
||||
if(platformId is not null)
|
||||
{
|
||||
SoftwarePlatform platform = await context.SoftwarePlatforms.FindAsync(platformId);
|
||||
|
||||
if(platform is not null) name = string.IsNullOrEmpty(name) ? platform.Name : $"{name} ({platform.Name})";
|
||||
}
|
||||
|
||||
return name;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,10 +23,12 @@
|
||||
// Copyright © 2003-2026 Natalia Portillo
|
||||
*******************************************************************************/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.Claims;
|
||||
using System.Threading.Tasks;
|
||||
using Marechai.Data;
|
||||
using Marechai.Data.Dtos;
|
||||
using Marechai.Database.Models;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
@@ -125,6 +127,18 @@ public class SoftwareVersionsController(MarechaiContext context) : ControllerBas
|
||||
model.PublicVersion = dto.PublicVersion;
|
||||
model.ParentVersionId = dto.ParentVersionId;
|
||||
model.LicenseId = dto.LicenseId;
|
||||
|
||||
Software software = await context.Softwares.FindAsync(model.SoftwareId);
|
||||
string newsName = dto.PublicVersion ?? (software is not null ? $"{software.Name} {dto.VersionString}" : dto.VersionString);
|
||||
|
||||
await context.News.AddAsync(new News
|
||||
{
|
||||
AddedId = (long)model.Id,
|
||||
Date = DateTime.UtcNow,
|
||||
Type = NewsType.UpdatedSoftwareVersionInDb,
|
||||
Name = newsName
|
||||
});
|
||||
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
return Ok();
|
||||
@@ -154,6 +168,19 @@ public class SoftwareVersionsController(MarechaiContext context) : ControllerBas
|
||||
await context.SoftwareVersions.AddAsync(model);
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
Software software = await context.Softwares.FindAsync(dto.SoftwareId);
|
||||
string newsName = dto.PublicVersion ?? (software is not null ? $"{software.Name} {dto.VersionString}" : dto.VersionString);
|
||||
|
||||
await context.News.AddAsync(new News
|
||||
{
|
||||
AddedId = (long)model.Id,
|
||||
Date = DateTime.UtcNow,
|
||||
Type = NewsType.NewSoftwareVersionInDb,
|
||||
Name = newsName
|
||||
});
|
||||
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
return model.Id;
|
||||
}
|
||||
|
||||
|
||||
@@ -23,10 +23,12 @@
|
||||
// Copyright © 2003-2026 Natalia Portillo
|
||||
*******************************************************************************/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.Claims;
|
||||
using System.Threading.Tasks;
|
||||
using Marechai.Data;
|
||||
using Marechai.Data.Dtos;
|
||||
using Marechai.Database.Models;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
@@ -139,6 +141,17 @@ public class SoundSynthsController(MarechaiContext context) : ControllerBase
|
||||
model.SquareWave = dto.SquareWave;
|
||||
model.WhiteNoise = dto.WhiteNoise;
|
||||
|
||||
Company company = dto.CompanyId is not null ? await context.Companies.FindAsync(dto.CompanyId) : null;
|
||||
string newsName = company is not null ? $"{company.Name} {dto.Name}" : dto.Name;
|
||||
|
||||
await context.News.AddAsync(new News
|
||||
{
|
||||
AddedId = model.Id,
|
||||
Date = DateTime.UtcNow,
|
||||
Type = NewsType.UpdatedSoundSynthInDb,
|
||||
Name = newsName
|
||||
});
|
||||
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
return Ok();
|
||||
@@ -172,6 +185,19 @@ public class SoundSynthsController(MarechaiContext context) : ControllerBase
|
||||
await context.SoundSynths.AddAsync(model);
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
Company company = dto.CompanyId is not null ? await context.Companies.FindAsync(dto.CompanyId) : null;
|
||||
string newsName = company is not null ? $"{company.Name} {dto.Name}" : dto.Name;
|
||||
|
||||
await context.News.AddAsync(new News
|
||||
{
|
||||
AddedId = model.Id,
|
||||
Date = DateTime.UtcNow,
|
||||
Type = NewsType.NewSoundSynthInDb,
|
||||
Name = newsName
|
||||
});
|
||||
|
||||
await context.SaveChangesWithUserAsync(userId);
|
||||
|
||||
return model.Id;
|
||||
}
|
||||
|
||||
|
||||
@@ -50,13 +50,14 @@
|
||||
<MudCard Elevation="2" Class="rounded-lg">
|
||||
<MudCardContent>
|
||||
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="2" Class="mb-2">
|
||||
<MudIcon Icon="@Icons.Material.Filled.FiberNew" Color="Color.Secondary" Size="Size.Small"/>
|
||||
<MudIcon Icon="@GetNewsStatusIcon((NewsType)(news.Type ?? 0))" Color="@GetNewsStatusColor((NewsType)(news.Type ?? 0))" Size="Size.Small"/>
|
||||
<MudIcon Icon="@GetNewsEntityIcon((NewsType)(news.Type ?? 0))" Color="Color.Default" Size="Size.Small"/>
|
||||
<MudText Typo="Typo.caption" Color="Color.Primary">@news.Timestamp</MudText>
|
||||
</MudStack>
|
||||
<MudText Typo="Typo.body1">@GetNewsTypeText((NewsType)(news.Type ?? 0))</MudText>
|
||||
</MudCardContent>
|
||||
<MudCardActions>
|
||||
<MudButton Href="@($"/machine/{news.AffectedId}")" Variant="Variant.Filled" Color="Color.Primary" Size="Size.Small" EndIcon="@Icons.Material.Filled.ArrowForward">@news.ItemName</MudButton>
|
||||
<MudButton Href="@GetNewsItemUrl(news)" Variant="Variant.Filled" Color="Color.Primary" Size="Size.Small" EndIcon="@Icons.Material.Filled.ArrowForward">@news.ItemName</MudButton>
|
||||
</MudCardActions>
|
||||
</MudCard>
|
||||
}
|
||||
@@ -73,6 +74,104 @@
|
||||
NewsType.UpdatedConsoleInDb => L["Updated console in database"],
|
||||
NewsType.UpdatedComputerInCollection => L["Updated computer in collection"],
|
||||
NewsType.UpdatedConsoleInCollection => L["Updated console in collection"],
|
||||
NewsType.NewBookInDb => L["New book in database"],
|
||||
NewsType.UpdatedBookInDb => L["Updated book in database"],
|
||||
NewsType.NewDocumentInDb => L["New document in database"],
|
||||
NewsType.UpdatedDocumentInDb => L["Updated document in database"],
|
||||
NewsType.NewMagazineInDb => L["New magazine in database"],
|
||||
NewsType.UpdatedMagazineInDb => L["Updated magazine in database"],
|
||||
NewsType.NewPersonInDb => L["New person in database"],
|
||||
NewsType.UpdatedPersonInDb => L["Updated person in database"],
|
||||
NewsType.NewSoftwareInDb => L["New software in database"],
|
||||
NewsType.UpdatedSoftwareInDb => L["Updated software in database"],
|
||||
NewsType.NewSoftwareVersionInDb => L["New software version in database"],
|
||||
NewsType.UpdatedSoftwareVersionInDb => L["Updated software version in database"],
|
||||
NewsType.NewSoftwareReleaseInDb => L["New software release in database"],
|
||||
NewsType.UpdatedSoftwareReleaseInDb => L["Updated software release in database"],
|
||||
NewsType.NewGpuInDb => L["New GPU in database"],
|
||||
NewsType.UpdatedGpuInDb => L["Updated GPU in database"],
|
||||
NewsType.NewSoundSynthInDb => L["New sound synthesizer in database"],
|
||||
NewsType.UpdatedSoundSynthInDb => L["Updated sound synthesizer in database"],
|
||||
NewsType.NewProcessorInDb => L["New processor in database"],
|
||||
NewsType.UpdatedProcessorInDb => L["Updated processor in database"],
|
||||
_ => string.Empty
|
||||
};
|
||||
|
||||
private static string GetNewsItemUrl(NewsDto news)
|
||||
{
|
||||
var type = (NewsType)(news.Type ?? 0);
|
||||
|
||||
return type switch
|
||||
{
|
||||
NewsType.NewComputerInDb or NewsType.UpdatedComputerInDb
|
||||
or NewsType.NewComputerInCollection or NewsType.UpdatedComputerInCollection
|
||||
or NewsType.NewConsoleInDb or NewsType.UpdatedConsoleInDb
|
||||
or NewsType.NewConsoleInCollection or NewsType.UpdatedConsoleInCollection
|
||||
=> $"/machine/{news.AffectedId}",
|
||||
NewsType.NewBookInDb or NewsType.UpdatedBookInDb => $"/book/{news.AffectedId}",
|
||||
NewsType.NewDocumentInDb or NewsType.UpdatedDocumentInDb
|
||||
=> $"/document/{news.AffectedId}",
|
||||
NewsType.NewMagazineInDb or NewsType.UpdatedMagazineInDb
|
||||
=> $"/magazine/{news.AffectedId}",
|
||||
NewsType.NewPersonInDb or NewsType.UpdatedPersonInDb
|
||||
=> $"/person/{news.AffectedId}",
|
||||
NewsType.NewSoftwareInDb or NewsType.UpdatedSoftwareInDb
|
||||
=> $"/software/{news.AffectedId}",
|
||||
NewsType.NewSoftwareVersionInDb or NewsType.UpdatedSoftwareVersionInDb
|
||||
=> $"/software/{news.AffectedId}",
|
||||
NewsType.NewSoftwareReleaseInDb or NewsType.UpdatedSoftwareReleaseInDb
|
||||
=> $"/software/release/{news.AffectedId}",
|
||||
NewsType.NewGpuInDb or NewsType.UpdatedGpuInDb => $"/gpu/{news.AffectedId}",
|
||||
NewsType.NewSoundSynthInDb or NewsType.UpdatedSoundSynthInDb
|
||||
=> $"/soundsynth/{news.AffectedId}",
|
||||
NewsType.NewProcessorInDb or NewsType.UpdatedProcessorInDb
|
||||
=> $"/processor/{news.AffectedId}",
|
||||
_ => "#"
|
||||
};
|
||||
}
|
||||
|
||||
private static string GetNewsStatusIcon(NewsType type) => type switch
|
||||
{
|
||||
NewsType.NewComputerInDb or NewsType.NewConsoleInDb
|
||||
or NewsType.NewComputerInCollection or NewsType.NewConsoleInCollection
|
||||
or NewsType.NewBookInDb or NewsType.NewDocumentInDb or NewsType.NewMagazineInDb
|
||||
or NewsType.NewPersonInDb or NewsType.NewSoftwareInDb or NewsType.NewSoftwareVersionInDb
|
||||
or NewsType.NewSoftwareReleaseInDb or NewsType.NewGpuInDb or NewsType.NewSoundSynthInDb
|
||||
or NewsType.NewProcessorInDb
|
||||
=> Icons.Material.Filled.FiberNew,
|
||||
_ => Icons.Material.Filled.Update
|
||||
};
|
||||
|
||||
private static Color GetNewsStatusColor(NewsType type) => type switch
|
||||
{
|
||||
NewsType.NewComputerInDb or NewsType.NewConsoleInDb
|
||||
or NewsType.NewComputerInCollection or NewsType.NewConsoleInCollection
|
||||
or NewsType.NewBookInDb or NewsType.NewDocumentInDb or NewsType.NewMagazineInDb
|
||||
or NewsType.NewPersonInDb or NewsType.NewSoftwareInDb or NewsType.NewSoftwareVersionInDb
|
||||
or NewsType.NewSoftwareReleaseInDb or NewsType.NewGpuInDb or NewsType.NewSoundSynthInDb
|
||||
or NewsType.NewProcessorInDb
|
||||
=> Color.Secondary,
|
||||
_ => Color.Info
|
||||
};
|
||||
|
||||
private static string GetNewsEntityIcon(NewsType type) => type switch
|
||||
{
|
||||
NewsType.NewComputerInDb or NewsType.UpdatedComputerInDb
|
||||
or NewsType.NewComputerInCollection or NewsType.UpdatedComputerInCollection
|
||||
or NewsType.NewConsoleInDb or NewsType.UpdatedConsoleInDb
|
||||
or NewsType.NewConsoleInCollection or NewsType.UpdatedConsoleInCollection
|
||||
=> Icons.Material.Filled.Computer,
|
||||
NewsType.NewBookInDb or NewsType.UpdatedBookInDb => Icons.Material.Filled.MenuBook,
|
||||
NewsType.NewDocumentInDb or NewsType.UpdatedDocumentInDb => Icons.Material.Filled.Article,
|
||||
NewsType.NewMagazineInDb or NewsType.UpdatedMagazineInDb => Icons.Material.Filled.AutoStories,
|
||||
NewsType.NewPersonInDb or NewsType.UpdatedPersonInDb => Icons.Material.Filled.Person,
|
||||
NewsType.NewSoftwareInDb or NewsType.UpdatedSoftwareInDb
|
||||
or NewsType.NewSoftwareVersionInDb or NewsType.UpdatedSoftwareVersionInDb
|
||||
or NewsType.NewSoftwareReleaseInDb or NewsType.UpdatedSoftwareReleaseInDb
|
||||
=> Icons.Material.Filled.Apps,
|
||||
NewsType.NewGpuInDb or NewsType.UpdatedGpuInDb => Icons.Material.Filled.Memory,
|
||||
NewsType.NewSoundSynthInDb or NewsType.UpdatedSoundSynthInDb => Icons.Material.Filled.MusicNote,
|
||||
NewsType.NewProcessorInDb or NewsType.UpdatedProcessorInDb => Icons.Material.Filled.DeveloperBoard,
|
||||
_ => Icons.Material.Filled.Newspaper
|
||||
};
|
||||
}
|
||||
@@ -188,4 +188,84 @@
|
||||
<value>Cancelar</value>
|
||||
<comment>Cancel delete</comment>
|
||||
</data>
|
||||
<data name="New book in database" xml:space="preserve">
|
||||
<value>Nuevo libro en la base de datos</value>
|
||||
<comment>New book in database</comment>
|
||||
</data>
|
||||
<data name="Updated book in database" xml:space="preserve">
|
||||
<value>Libro actualizado en la base de datos</value>
|
||||
<comment>Updated book in database</comment>
|
||||
</data>
|
||||
<data name="New document in database" xml:space="preserve">
|
||||
<value>Nuevo documento en la base de datos</value>
|
||||
<comment>New document in database</comment>
|
||||
</data>
|
||||
<data name="Updated document in database" xml:space="preserve">
|
||||
<value>Documento actualizado en la base de datos</value>
|
||||
<comment>Updated document in database</comment>
|
||||
</data>
|
||||
<data name="New magazine in database" xml:space="preserve">
|
||||
<value>Nueva revista en la base de datos</value>
|
||||
<comment>New magazine in database</comment>
|
||||
</data>
|
||||
<data name="Updated magazine in database" xml:space="preserve">
|
||||
<value>Revista actualizada en la base de datos</value>
|
||||
<comment>Updated magazine in database</comment>
|
||||
</data>
|
||||
<data name="New person in database" xml:space="preserve">
|
||||
<value>Nueva persona en la base de datos</value>
|
||||
<comment>New person in database</comment>
|
||||
</data>
|
||||
<data name="Updated person in database" xml:space="preserve">
|
||||
<value>Persona actualizada en la base de datos</value>
|
||||
<comment>Updated person in database</comment>
|
||||
</data>
|
||||
<data name="New software in database" xml:space="preserve">
|
||||
<value>Nuevo software en la base de datos</value>
|
||||
<comment>New software in database</comment>
|
||||
</data>
|
||||
<data name="Updated software in database" xml:space="preserve">
|
||||
<value>Software actualizado en la base de datos</value>
|
||||
<comment>Updated software in database</comment>
|
||||
</data>
|
||||
<data name="New software version in database" xml:space="preserve">
|
||||
<value>Nueva versión de software en la base de datos</value>
|
||||
<comment>New software version in database</comment>
|
||||
</data>
|
||||
<data name="Updated software version in database" xml:space="preserve">
|
||||
<value>Versión de software actualizada en la base de datos</value>
|
||||
<comment>Updated software version in database</comment>
|
||||
</data>
|
||||
<data name="New software release in database" xml:space="preserve">
|
||||
<value>Nuevo lanzamiento de software en la base de datos</value>
|
||||
<comment>New software release in database</comment>
|
||||
</data>
|
||||
<data name="Updated software release in database" xml:space="preserve">
|
||||
<value>Lanzamiento de software actualizado en la base de datos</value>
|
||||
<comment>Updated software release in database</comment>
|
||||
</data>
|
||||
<data name="New GPU in database" xml:space="preserve">
|
||||
<value>Nueva GPU en la base de datos</value>
|
||||
<comment>New GPU in database</comment>
|
||||
</data>
|
||||
<data name="Updated GPU in database" xml:space="preserve">
|
||||
<value>GPU actualizada en la base de datos</value>
|
||||
<comment>Updated GPU in database</comment>
|
||||
</data>
|
||||
<data name="New sound synthesizer in database" xml:space="preserve">
|
||||
<value>Nuevo sintetizador de sonido en la base de datos</value>
|
||||
<comment>New sound synthesizer in database</comment>
|
||||
</data>
|
||||
<data name="Updated sound synthesizer in database" xml:space="preserve">
|
||||
<value>Sintetizador de sonido actualizado en la base de datos</value>
|
||||
<comment>Updated sound synthesizer in database</comment>
|
||||
</data>
|
||||
<data name="New processor in database" xml:space="preserve">
|
||||
<value>Nuevo procesador en la base de datos</value>
|
||||
<comment>New processor in database</comment>
|
||||
</data>
|
||||
<data name="Updated processor in database" xml:space="preserve">
|
||||
<value>Procesador actualizado en la base de datos</value>
|
||||
<comment>Updated processor in database</comment>
|
||||
</data>
|
||||
</root>
|
||||
Reference in New Issue
Block a user