Files
FireLance/DevConsole/Program.cs
Dunestorm a09f580cfe FireLance removing save game entry action implemented.
- Refactoring.
- Moved FLC actions into separate functions.
2020-07-04 12:14:07 +01:00

264 lines
11 KiB
C#

using FireLance;
using FireLance.Models;
using Gsm;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
namespace DevConsole
{
class Program
{
public static readonly GsmRO gsmRO = new GsmRO();
public static FireLanceCRUD fireLanceCRUD = new FireLanceCRUD();
static void Main(string[] args)
{
ConnectToGsmDb();
ConnectToFlcDb();
Console.WriteLine("");
while (true) { CommandsMenu(); }
}
private static void CommandsMenu()
{
Console.WriteLine("Please select an option below:\n");
Console.WriteLine("A. Manage DB Connections --->");
Console.WriteLine("B. GSM Actions --->");
Console.WriteLine("C. FLC Actions --->");
Console.WriteLine("X. Exit application\n");
Console.Write(":");
var userInput = Console.ReadLine();
Console.Write("\n\n");
switch (userInput.ToUpper())
{
case "A":
CmdDbMgr();
break;
case "B":
CmdGsmActions();
break;
case "C":
CmdFlcActions();
break;
case "X":
Environment.Exit(0);
break;
default:
Console.WriteLine("Invalid selection, please enter a listed command.");
break;
}
}
private static void ConnectToGsmDb()
{
gsmRO.OpenConnection(@"C:\Users\Dunestorm\Projects\FireLance\GSMParser\games.db", 0);
Console.WriteLine($"GSMParser Connection State: {gsmRO.IsConnectionOpen()}");
}
private static void ConnectToFlcDb()
{
fireLanceCRUD.OpenConnection("sr3", 27017);
Console.WriteLine($"FireLance Connection State: {fireLanceCRUD.IsConnectionOpen()}");
}
#region Command Options
private static void CmdDbMgr()
{
Console.WriteLine("[GsmDb]------------");
Console.WriteLine("A. Open DB");
Console.WriteLine("B. Close DB");
Console.WriteLine("[FlcDb]------------");
Console.WriteLine("C. Open DB");
Console.WriteLine("D. Close DB (Unsupported)");
Console.WriteLine("X. <--- Go back\n");
Console.Write(":");
var userInput = Console.ReadLine();
Console.Write("\n\n");
switch (userInput.ToUpper())
{
case "A":
ConnectToGsmDb();
break;
case "B":
gsmRO.CloseCurrentConnection();
break;
case "C":
ConnectToFlcDb();
break;
case "D":
fireLanceCRUD.CloseCurrentConnection();
break;
case "X":
break;
}
}
private static void CmdGsmActions()
{
Console.WriteLine("A. Query game by ID");
Console.WriteLine("B. Query directory by ID");
Console.WriteLine("C. Query game by NAME");
Console.WriteLine("X. <--- Go back\n");
Console.Write(":");
var userInput = Console.ReadLine();
Console.Write("\n\n");
switch (userInput.ToUpper())
{
case "A":
Console.WriteLine("Enter a game ID:");
var queryId = gsmRO.LoadRecords<GameEntryModel>( GsmRO.Columns.GameName,
GsmRO.Tables.GameEntry,
GsmRO.Columns.ID,
Console.ReadLine(),
true);
foreach (var record in queryId) PrintAllValues(record);
break;
case "B":
Console.WriteLine("Enter a game ID:");
var queryDirectoryId = gsmRO.LoadRecords<DirectoriesModel>( "*",
GsmRO.Tables.Directories,
GsmRO.Columns.GameID,
Console.ReadLine(),
true);
foreach (var record in queryDirectoryId) PrintAllValues(record);
break;
case "C":
Console.WriteLine("Enter game title to search:");
var queryGameByName = gsmRO.LoadRecords<GameEntryModel>( GsmRO.Columns.GameName,
GsmRO.Tables.GameEntry,
GsmRO.Columns.GameName,
Console.ReadLine(),
false);
foreach (var record in queryGameByName) PrintAllValues(record);
break;
case "X":
break;
}
}
private static void CmdFlcActions()
{
Console.WriteLine("A. FireLance Write Predefined MasterGameRecord");
Console.WriteLine("B. FireLance Read Predefined MasterGameRecord");
Console.WriteLine("C. FireLance Insert Save Entry into existing MasterGameRecord");
Console.WriteLine("D. FireLance Remove Save Entry from existing MasterGameRecord");
Console.WriteLine("X. <--- Go back\n");
Console.Write(":");
var userInput = Console.ReadLine();
Console.Write("\n\n");
switch (userInput.ToUpper())
{
case "A":
FlcWriteMasterGameRecordAction();
break;
case "B":
FlcReadMasterGameRecordAction();
break;
case "C":
FlcInsertSaveEntryAction();
break;
case "D":
FlcRemoveSaveEntryAction();
break;
case "X":
break;
}
}
#endregion
#region FlcActions
private static void FlcWriteMasterGameRecordAction()
{
var masterGameRecord = new MasterGameRecordModel();
List<DirectoriesModel> directories = gsmRO.LoadRecords<DirectoriesModel>("*",
GsmRO.Tables.Directories,
GsmRO.Columns.GameID,
"600",
true);
GameEntryModel gameEntry = gsmRO.LoadRecords<GameEntryModel>(GsmRO.Columns.GameName,
GsmRO.Tables.GameEntry,
GsmRO.Columns.ID,
"600",
true).First();
List<SaveGameEntriesModel> saveGameEntries = new List<SaveGameEntriesModel>();
saveGameEntries.Add(new SaveGameEntriesModel());
masterGameRecord.Directories = directories;
masterGameRecord.GameEntry = gameEntry;
masterGameRecord.SaveGameEntries = saveGameEntries;
fireLanceCRUD.InsertRecord("GameRecords", masterGameRecord);
}
static void FlcReadMasterGameRecordAction()
{
var masterGameRecords = fireLanceCRUD.LoadRecordsFromTable<MasterGameRecordModel>("GameRecords");
foreach (var record in masterGameRecords)
{
Console.WriteLine(record.Id);
Console.WriteLine("");
PrintAllValues(record.GameEntry);
Console.WriteLine("");
foreach (var subRecord in record.Directories)
{
PrintAllValues(subRecord);
Console.WriteLine("");
}
foreach (var subRecord in record.SaveGameEntries)
{
PrintAllValues(subRecord);
Console.WriteLine("");
}
}
}
private static void FlcRemoveSaveEntryAction()
{
Guid firstMasterGameRecordGuid = fireLanceCRUD.LoadRecordsFromTable<MasterGameRecordModel>("GameRecords").First().Id;
var masterGameRecordToRemove = fireLanceCRUD.LoadRecordById<MasterGameRecordModel>("GameRecords", firstMasterGameRecordGuid);
Guid firstSaveGameEntryGuid = masterGameRecordToRemove.SaveGameEntries.Select(x => x.Id).First();
masterGameRecordToRemove.SaveGameEntries.RemoveAll(x => x.Id == firstSaveGameEntryGuid);
fireLanceCRUD.UpsertRecordById("GameRecords", firstMasterGameRecordGuid, masterGameRecordToRemove);
}
private static void FlcInsertSaveEntryAction()
{
Guid firstMasterGameRecordGuid = fireLanceCRUD.LoadRecordsFromTable<MasterGameRecordModel>("GameRecords").First().Id;
var masterGameRecordToInsert = fireLanceCRUD.LoadRecordById<MasterGameRecordModel>("GameRecords", firstMasterGameRecordGuid);
masterGameRecordToInsert.SaveGameEntries.Add(new SaveGameEntriesModel());
fireLanceCRUD.UpsertRecordById("GameRecords", firstMasterGameRecordGuid, masterGameRecordToInsert);
}
#endregion
private static void PrintAllValues<T>(T data)
{
foreach (PropertyDescriptor item in TypeDescriptor.GetProperties(data))
{
Console.WriteLine($"{item.Name}: {item.GetValue(data)}");
}
}
}
}