diff --git a/Src/A69WD/Data/cRac.cs b/Src/A69WD/Data/cRac.cs
index 12a708c..3557c59 100644
--- a/Src/A69WD/Data/cRac.cs
+++ b/Src/A69WD/Data/cRac.cs
@@ -8,98 +8,116 @@ using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace A69WD.Data {
+ ///
+ /// Rappresenta un singolo racconto all'interno del database ATDB.
+ /// Questa classe mappa la tabella [Racconti] e tutte le sue relazioni correlate.
+ ///
public class cRac {
- #region Costruttori
+ #region Propietà: IDrac, Title, SubTitle, Creato, Updated, Trama, Voto, Autori, Tags, Origini, Notes
+
+ #region --- DATI BASE (Tabella [Racconti]) ---
///
- /// Costruttore
+ /// Identificativo univoco del racconto
+ /// Default: -1
+ /// Mappa [IDrac]
///
- public cRac() { isValid = false; }
+ public long IDrac { get; set; } = -1;
- ///
- /// Costruttore per un racconto nullo, utilizzato per mostrare eventuali errori o messaggi
+ /// Titolo del racconto
+ /// Default: 'Unknown'
+ /// Mappa [Title]
///
- /// Stringa che si vuole visualizzare come titolo del racconto
- /// Stringa che si vuole visualizzare come testo del racconto
- public cRac(string title, string trama) {
- this.IDrac = 0;
- this.Title = title;
- this.Trama = "\n\n" + trama + "\n\n";
- this.Creato = DateTime.Now;
- this.Updated = DateTime.Now;
- this.isValid = true;
- }
+ public string Title { get; set; } = "Unknown";
-
- #endregion
-
-
- #region Propietà e Fields:
-
- ///
- /// Identificativo del racconto
- ///
- public long IDrac = -1;
-
- ///
- /// Titolo del racconto
- ///
- public string Title = null;
-
- ///
+ ///
/// Sottotitolo del racconto
+ /// Default: ''
+ /// Mappa [SubTitle]
///
- public string SubTitle = null;
-
- ///
- /// Elenco dei tag (ex Props) associati al racconto
- ///
- public List Tags = null;
-
- ///
- /// Note aggiuntive associate al racconto, sono del tipo: {Key} - {Descrizione}
- /// Un tipo di nota sempre presente è la "Src" che individua la sorgente (link del file downloadato) da dove ho preso il racconto
- /// Devo poter aver più source e quindi abbandono la struttura dizionario per avere una lista di coppie di stringhe
- ///
- //public System.Collections.Generic.Dictionary Notes = null;
- public List Notes = null;
-
- ///
- /// Elenco degli autori del racconto
- ///
- public List Autori = null;
-
- ///
- /// Elenco delle origini del racconto
- ///
- public List Origini = null;
-
- ///
- /// Voto assegnato al racconto
- ///
- public string Voto = null;
-
- ///
- /// Trama del racconto
- ///
- public string Trama = null;
+ public string SubTitle { get; set; } = "";
///
/// Data di creazione/pubblicazione del racconto o in mancanza di essa, data di inserimento del racconto in ATDB
+ /// Default: DateTime.MinValue
+ /// Mappa [Creato]
///
- public DateTime Creato = DateTime.MinValue;
+ public DateTime Creato { get; set; } = DateTime.MinValue;
///
- /// Data dell'ultimo update del racconto.
- /// Inizialmente sarà la data di inserimento in ATDB, poi sarà la data dell'ultima lettura o dell'ultima iterazione con il racconto stesso.
+ /// Data dell'ultima modifica
+ /// Default: DateTime.MinValue
+ /// Mappa [Aggiornato]
///
- public DateTime Updated = DateTime.MinValue;
+ public DateTime Updated { get; set; } = DateTime.MinValue;
+
+ #endregion
+
+ #region --- CONTENUTO (Relazione 1-1 con Tabella [Trame]) ---
+
+ ///
+ /// Testo completo della trama del racconto
+ /// Default: null
+ /// Mappa [Trama]
+ ///
+ public string Trama { get; set; } = null;
+
+ #endregion
+
+ #region --- CONTENUTO (Relazione 1-1 con Tabella [Voti]) ---
+
+ ///
+ /// Etichetta testuale del voto assegnato al racconto (es. 'Bello')
+ /// Default: 'Non Letto'
+ /// Mappa [Voto]
+ ///
+ public string Voto { get; set; } = "Non Letto";
+
+ #endregion
+
+ #region --- RELAZIONI MOLTI-A-MOLTI (Tramite tabelle Links_Rac_...) ---
+
+ ///
+ /// Elenco dei nomi degli autori associati al racconto.
+ /// Default: null
+ /// Mappa la relazione tramite [Links_Rac_Aut] con la tabella [Autori].
+ ///
+ public List Autori { get; set; } = null;
+
+ ///
+ /// Elenco dei tag o proprietà associati (es. Genere, Mood).
+ /// Default: null
+ /// Mappa la relazione tramite [Links_Rac_Tag] con la tabella [Tags].
+ ///
+ public List Tags { get; set; } = null;
+
+ ///
+ /// Elenco delle sorgenti o origini da cui proviene il racconto.
+ /// Default: null
+ /// Mappa la relazione tramite [Links_Rac_Ori] con la tabella [Origini].
+ ///
+ public List Origini { get; set; } = null;
+
+ ///
+ /// Note informative strutturate come coppia Chiave-Valore (es. Link, Resume).
+ /// Note aggiuntive associate al racconto, sono del tipo: {Key} - {Descrizione}
+ /// Un tipo di nota sempre presente è la "Src" che individua la sorgente (link del file downloadato) da dove ho preso il racconto
+ /// Devo poter aver più source e quindi abbandono la struttura dizionario per avere una lista di coppie di stringhe
+ /// Default: null
+ /// Mappa la relazione tramite [Links_Rac_Not] con la tabella [Notes].
+ ///
+ //public Dictionary Note { get; set; } = new Dictionary();
+ public List Notes { get; set; } = null;
+
+ #endregion
#endregion
- #region Metodi: strIDrac, strTags, fullTitle
+ #region Metodi: str..., fullTitle, IsValid, Validate, FileRacName
+
+ #region Conversioni a stringa dei campi non stringhe:
///
/// ID del racconto espresso in formato testuale
@@ -166,6 +184,8 @@ namespace A69WD.Data {
}
}
+ #endregion
+
///
/// Indica se il racconto è valido o no (nullo)
///
@@ -224,9 +244,41 @@ namespace A69WD.Data {
return isValid;
}
+ ///
+ /// Crea un nome univoco per il file htm che rappresenta un racconto.
+ /// Rac00000.htm
+ ///
+ public static string FileRacName(long RacID) { return "Rac" + RacID.ToString("00000") + ".htm"; }
+
#endregion
+ #region Costruttori
+
+ ///
+ /// Costruttore
+ ///
+ public cRac() { isValid = false; }
+
+ ///
+ /// Costruttore per un racconto nullo, utilizzato per mostrare eventuali errori o messaggi
+ ///
+ /// Stringa che si vuole visualizzare come titolo del racconto
+ /// Stringa che si vuole visualizzare come testo del racconto
+ public cRac(string title, string trama) {
+ this.IDrac = 0;
+ this.Title = title;
+ this.Trama = "\n\n" + trama + "\n\n";
+ this.Creato = DateTime.Now;
+ this.Updated = DateTime.Now;
+ this.isValid = true;
+ }
+
+
+ #endregion
+
+
+
///
/// Crea il file html che rappresenta il racconto.
@@ -331,24 +383,6 @@ namespace A69WD.Data {
}
- ///
- /// Crea un nome univoco per il file htm che rappresenta un racconto.
- /// Rac00000.htm
- ///
- public static string FileRacName(long RacID) { return "Rac" + RacID.ToString("00000") + ".htm"; }
-
- ///
- /// Stringa di separazione fra i vari campi quando esprimo un elenco tramite una singola stringa
- ///
- private const string SEPARATORETXT = " -|- ";
-
- ///
- /// Esprime la data indicata con una stringa opportunamente formattata
- ///
- /// DateTime da esprimere in testo
- /// Il testo opportunamente formattato
- private string DateFormat(DateTime dt) { return dt.ToString("yyyy/MM/dd"); }
-
///
/// Override per esprimere in modo formale un racconto con una singola stringa.
///
@@ -404,6 +438,19 @@ namespace A69WD.Data {
}
+
+ ///
+ /// Stringa di separazione fra i vari campi quando esprimo un elenco tramite una singola stringa
+ ///
+ private const string SEPARATORETXT = " -|- ";
+
+ ///
+ /// Esprime la data indicata con una stringa opportunamente formattata
+ ///
+ /// DateTime da esprimere in testo
+ /// Il testo opportunamente formattato
+ private string DateFormat(DateTime dt) { return dt.ToString("yyyy/MM/dd"); }
+
///
/// Esprime il racconto in formato HTML formale.
///
@@ -827,9 +874,6 @@ namespace A69WD.Data {
}
}
-
-
-
public static string EsportaInHtml(cRac racconto, string cartellaDestinazione) {
// Crea il nome del file pulendo il titolo da caratteri non validi
diff --git a/Src/A69WD/Net/cLink_A69.cs b/Src/A69WD/Net/cLink_A69.cs
index 3d3a7a2..84ea899 100644
--- a/Src/A69WD/Net/cLink_A69.cs
+++ b/Src/A69WD/Net/cLink_A69.cs
@@ -222,10 +222,11 @@ namespace A69WD.Net {
if (parts.Length == 3) {
CultureInfo culture = CultureInfo.CreateSpecificCulture("it-IT");
DateTimeStyles styles = DateTimeStyles.None;
- rac.Creato = DateTime.Now;
- if (!DateTime.TryParse(parts[0].Trim(), culture, styles, out rac.Creato)) {
+ DateTime tmpDT = DateTime.Now;
+ if (!DateTime.TryParse(parts[0].Trim(), culture, styles, out tmpDT)) {
Logger.Error($"A69 - Import - No data - {filePathName}");
}
+ rac.Creato = tmpDT;
}
}
} catch (Exception ex) { Logger.Warning(string.Format("Data non riconosciuta nel file {0}\r\n{1}", FileName, ex.Message)); return null; }