diff --git a/MP.FileData/Controllers/FileController.cs b/MP.FileData/Controllers/FileController.cs index ba627e3d..93038046 100644 --- a/MP.FileData/Controllers/FileController.cs +++ b/MP.FileData/Controllers/FileController.cs @@ -15,14 +15,6 @@ namespace MP.FileData.Controllers { public class FileController : IDisposable { - #region Private Fields - - private static IConfiguration _configuration; - private static MoonPro_ProgContext dbCtx; - private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); - - #endregion Private Fields - #region Public Constructors public FileController(IConfiguration configuration) @@ -42,11 +34,83 @@ namespace MP.FileData.Controllers } /// - /// Effettua la comparazione tra i file in archivio ed i file attuali e segna info LastCheck e Changed (se cambiati) + /// Elenco tabella Macchine + /// + /// + public List ArchMaccGetAll() + { + List dbResult = new List(); + using (MoonPro_ProgContext localDbCtx = new MoonPro_ProgContext(_configuration)) + { + dbResult = localDbCtx + .DbSetArchMacc + .OrderBy(x => x.IdxMacchina) + .ToList(); + } + return dbResult; + } + + /// + /// Recupera singola macchina + /// + /// + public ArchMaccModel ArchMaccGetByKey(string idxMacchina) + { + ArchMaccModel dbResult = new ArchMaccModel(); + using (MoonPro_ProgContext localDbCtx = new MoonPro_ProgContext(_configuration)) + { + dbResult = localDbCtx + .DbSetArchMacc + .Where(x => x.IdxMacchina == idxMacchina) + .SingleOrDefault(); + } + return dbResult; + } + + /// + /// Elenco tabella Macchine + /// + /// + public async Task ArchMaccUpsert(ArchMaccModel upsRec) + { + bool fatto = false; + using (MoonPro_ProgContext localDbCtx = new MoonPro_ProgContext(_configuration)) + { + var currRec = localDbCtx + .DbSetArchMacc + .Where(x => x.IdxMacchina == upsRec.IdxMacchina) + .FirstOrDefault(); + if (currRec != null) + { + currRec.BasePath = upsRec.BasePath; + currRec.Descrizione = upsRec.Descrizione; + currRec.RuleName = upsRec.RuleName; + currRec.ShowOrder = upsRec.ShowOrder; + currRec.ImgUrl = upsRec.ImgUrl; + currRec.Nome = upsRec.Nome; + currRec.Note = upsRec.Note; + // segno modificato + localDbCtx.Entry(currRec).State = EntityState.Modified; + } + else + { + localDbCtx.DbSetArchMacc.Add(upsRec); + } + int numDone = await localDbCtx.SaveChangesAsync(); + fatto = numDone != 0; + } + return fatto; + } + + /// + /// Effettua la comparazione tra i file in archivio ed i file attuali e segna info LastCheck + /// e Changed (se cambiati) /// /// cod macchina /// path ricerca x macchina - /// Numero giorni x ricerca all'indietro da data corrente / 0 = nessun limite + /// + /// Numero giorni x ricerca all'indietro da data corrente / 0 = nessun limite + /// /// pattern di ricerca (*.*) /// Forza il controllo dei Tags /// Regole di ricerca applicate @@ -428,7 +492,7 @@ namespace MP.FileData.Controllers listUpdate.Add(newFileInfo); var currMacchina = localDbCtx - .DbSetMacchine + .DbSetArchMacc .Where(x => x.IdxMacchina == currFile.IdxMacchina) .SingleOrDefault(); if (currMacchina != null) @@ -505,7 +569,7 @@ namespace MP.FileData.Controllers if (forceTag) { // elenco Tags - List currTags = localDbCtx.DbSetTags.ToList(); + List currTags = localDbCtx.DbSetTags.ToList(); FileModel currItem = null; foreach (var item in updFiles) { @@ -586,7 +650,7 @@ namespace MP.FileData.Controllers // salvo update file item.LastCheck = adesso; localDbCtx.Entry(item).State = EntityState.Modified; - } + } #endif answ = true; @@ -673,7 +737,7 @@ namespace MP.FileData.Controllers using (MoonPro_ProgContext localDbCtx = new MoonPro_ProgContext(_configuration)) { ArchiveList = localDbCtx - .DbSetMacchine + .DbSetArchMacc .Select(x => new ArchiveStatusDTO() { IdxMacchina = x.IdxMacchina, @@ -709,40 +773,6 @@ namespace MP.FileData.Controllers return ArchiveList; } - /// - /// Recupera singola macchina - /// - /// - public MacchinaModel MacchinaGetByKey(string idxMacchina) - { - MacchinaModel dbResult = new MacchinaModel(); - using (MoonPro_ProgContext localDbCtx = new MoonPro_ProgContext(_configuration)) - { - dbResult = localDbCtx - .DbSetMacchine - .Where(x => x.IdxMacchina == idxMacchina) - .SingleOrDefault(); - } - return dbResult; - } - - /// - /// Elenco tabella Macchine - /// - /// - public List MacchineGetAll() - { - List dbResult = new List(); - using (MoonPro_ProgContext localDbCtx = new MoonPro_ProgContext(_configuration)) - { - dbResult = localDbCtx - .DbSetMacchine - .OrderBy(x => x.IdxMacchina) - .ToList(); - } - return dbResult; - } - public void ResetController() { dbCtx = new MoonPro_ProgContext(_configuration); @@ -871,6 +901,14 @@ namespace MP.FileData.Controllers #endregion Public Methods + #region Private Fields + + private static IConfiguration _configuration; + private static MoonPro_ProgContext dbCtx; + private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); + + #endregion Private Fields + #if false /// /// Elenco Azioni (decodifica) diff --git a/MP.FileData/DatabaseModels/MacchinaModel.cs b/MP.FileData/DatabaseModels/ArchMaccModel.cs similarity index 95% rename from MP.FileData/DatabaseModels/MacchinaModel.cs rename to MP.FileData/DatabaseModels/ArchMaccModel.cs index 35f4a5e7..e3cf19cf 100644 --- a/MP.FileData/DatabaseModels/MacchinaModel.cs +++ b/MP.FileData/DatabaseModels/ArchMaccModel.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MP.FileData.DatabaseModels { [Table("Macchine")] - public partial class MacchinaModel + public partial class ArchMaccModel { #region Public Properties diff --git a/MP.FileData/DatabaseModels/FileModel.cs b/MP.FileData/DatabaseModels/FileModel.cs index 882afca1..206eaf3b 100644 --- a/MP.FileData/DatabaseModels/FileModel.cs +++ b/MP.FileData/DatabaseModels/FileModel.cs @@ -53,7 +53,7 @@ namespace MP.FileData.DatabaseModels } [ForeignKey("IdxMacchina")] - public virtual MacchinaModel Macchina { get; set; } + public virtual ArchMaccModel Macchina { get; set; } #endregion Public Properties } diff --git a/MP.FileData/ModelBuilderExtensions.cs b/MP.FileData/ModelBuilderExtensions.cs index 354ccc88..ce1c9d91 100644 --- a/MP.FileData/ModelBuilderExtensions.cs +++ b/MP.FileData/ModelBuilderExtensions.cs @@ -19,8 +19,8 @@ namespace MP.FileData public static void Seed(this ModelBuilder modelBuilder) { // inizializzazione dei valori di default x MACCHINA - modelBuilder.Entity().HasData( - new MacchinaModel { IdxMacchina = "0", RuleName = "0", Descrizione = "--- Tutte ---", Nome = "--- Tutte ---", BasePath = "", ImgUrl = "", Note = "", ShowOrder = 0 } + modelBuilder.Entity().HasData( + new ArchMaccModel { IdxMacchina = "0", RuleName = "0", Descrizione = "--- Tutte ---", Nome = "--- Tutte ---", BasePath = "", ImgUrl = "", Note = "", ShowOrder = 0 } ); } diff --git a/MP.FileData/MoonPro_ProgContext.cs b/MP.FileData/MoonPro_ProgContext.cs index 0e74259d..73df70a1 100644 --- a/MP.FileData/MoonPro_ProgContext.cs +++ b/MP.FileData/MoonPro_ProgContext.cs @@ -59,7 +59,7 @@ namespace MP.FileData #region Public Properties - public virtual DbSet DbSetMacchine { get; set; } + public virtual DbSet DbSetArchMacc { get; set; } public virtual DbSet DbSetProgFile { get; set; } public virtual DbSet DbSetTags { get; set; } diff --git a/MP.Prog/Components/ArchiveEdit.razor.cs b/MP.Prog/Components/ArchiveEdit.razor.cs index acda4a75..7de88b5b 100644 --- a/MP.Prog/Components/ArchiveEdit.razor.cs +++ b/MP.Prog/Components/ArchiveEdit.razor.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Components; using MP.FileData.DatabaseModels; +using MP.Prog.Data; using System.Threading.Tasks; namespace MP.Prog.Components @@ -8,17 +9,27 @@ namespace MP.Prog.Components { [Parameter] - public MacchinaModel CurrRec { get; set; } + public ArchMaccModel CurrRec { get; set; } + [Parameter] + public EventCallback EC_update { get; set; } - protected async void DoCancel() + [Inject] + protected FileArchDataService FDService { get; set; } + + protected async Task DoSave() { - await Task.Delay(1); - } - protected async void DoSave() - { - await Task.Delay(1); + bool fatto = false; + if (CurrRec != null) + { + fatto = await FDService.ArchivioMaccUpsert(CurrRec); + } + await EC_update.InvokeAsync(fatto); } + protected async Task DoCancel() + { + await EC_update.InvokeAsync(true); + } } } \ No newline at end of file diff --git a/MP.Prog/Components/ArchiveStatus.razor b/MP.Prog/Components/ArchiveStatus.razor index 5845088c..3a994d32 100644 --- a/MP.Prog/Components/ArchiveStatus.razor +++ b/MP.Prog/Components/ArchiveStatus.razor @@ -1,7 +1,7 @@ 
@if (SelRecord != null) { - + } else { diff --git a/MP.Prog/Components/ArchiveStatus.razor.cs b/MP.Prog/Components/ArchiveStatus.razor.cs index 8e08c289..34826bae 100644 --- a/MP.Prog/Components/ArchiveStatus.razor.cs +++ b/MP.Prog/Components/ArchiveStatus.razor.cs @@ -66,23 +66,24 @@ namespace MP.Prog.Components protected async Task SelEdit(string idxMacc) { // recupero macchina e mando a edit! - SelRecord = await FDService.MacchinaGetByKey(idxMacc); + SelRecord = await FDService.ArchMaccGetByKey(idxMacc); } - protected void ResetSel() + protected async void ResetSel() { SelRecord = null; + await ReloadData(); } protected void AddNew() { DateTime adesso = DateTime.Now; - SelRecord = new MacchinaModel() + SelRecord = new ArchMaccModel() { IdxMacchina = $"ID_{adesso:yyMMd_HHmmss}", RuleName = "Rule05.json", Nome = "Nuova Folder", - Descrizione = "Nuova folder", + Descrizione = "Backup folder", BasePath = Configuration.GetValue("ServerConf:FolderBasePath"), ImgUrl = "Steamware.png", Note = "" @@ -116,7 +117,7 @@ namespace MP.Prog.Components protected async Task ReloadData() { - //sw.Restart(); + ListRecords = null; await Task.Delay(1); numChecks = 0; ListRecords = await FDService.GetArchiveStatus(); @@ -125,6 +126,7 @@ namespace MP.Prog.Components setupMessages = new List(); showProgress = false; percLoading = 0; + await InvokeAsync(StateHasChanged); } #endregion Protected Methods @@ -133,7 +135,7 @@ namespace MP.Prog.Components private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); private List ListRecords; - private MacchinaModel? SelRecord { get; set; } = null; + private ArchMaccModel? SelRecord { get; set; } = null; private int numChecks = 0; @@ -168,7 +170,7 @@ namespace MP.Prog.Components private async Task verificaTutte(int numDays) { // recupero elenco macchine - var listaMacchine = await FDService.MacchineGetAll(); + var listaMacchine = await FDService.ArchMaccGetAll(); int numMacchine = listaMacchine.Count(); foreach (var item in listaMacchine.Where(x => !string.IsNullOrEmpty(x.BasePath)).ToList()) { diff --git a/MP.Prog/Components/FileEditor.razor.cs b/MP.Prog/Components/FileEditor.razor.cs index d612e1ab..bb5420a8 100644 --- a/MP.Prog/Components/FileEditor.razor.cs +++ b/MP.Prog/Components/FileEditor.razor.cs @@ -56,7 +56,7 @@ namespace MP.Prog.Components public EventCallback DataUpdated { get; set; } [Parameter] - public List MacList { get; set; } + public List MacList { get; set; } [Parameter] public List TagList { get; set; } diff --git a/MP.Prog/Data/FileArchDataService.cs b/MP.Prog/Data/FileArchDataService.cs index f6e5472c..cfd6740c 100644 --- a/MP.Prog/Data/FileArchDataService.cs +++ b/MP.Prog/Data/FileArchDataService.cs @@ -15,6 +15,7 @@ using System.Diagnostics; using MP.FileData.Controllers; using MP.FileData.DTO; using StackExchange.Redis; +using MP.FileData.DatabaseModels; namespace MP.Prog.Data { @@ -37,6 +38,12 @@ namespace MP.Prog.Data redisConn = redisConnMult; redisDb = this.redisConn.GetDatabase(); + // json serializer... FIX errore loop circolare https://www.ryadel.com/en/jsonserializationexception-self-referencing-loop-detected-error-fix-entity-framework-asp-net-core/ + JSSettings = new JsonSerializerSettings() + { + ReferenceLoopHandling = ReferenceLoopHandling.Ignore + }; + // conf DB string connStr = _configuration.GetConnectionString("MP.Prog"); if (string.IsNullOrEmpty(connStr)) @@ -54,6 +61,93 @@ namespace MP.Prog.Data #region Public Methods + /// + /// Esegue Upsert record ArchivioMacchina + /// + /// + /// + public async Task ArchivioMaccUpsert(ArchMaccModel currRec) + { + bool fatto = await dbController.ArchMaccUpsert(currRec); + await ExecFlushRedisPattern($"{redisBaseAddr}:ArchMacc:*"); + await ExecFlushRedisPattern($"{redisBaseAddr}:ArchStatus:*"); + return fatto; + } + + public async Task> ArchMaccGetAll() + { + string source = "DB"; + List dbResult = new List(); + string currKey = $"{redisBaseAddr}:ArchMacc:ALL"; + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + string? rawData = await redisDb.StringGetAsync(currKey); + if (!string.IsNullOrEmpty(rawData)) + { + source = "REDIS"; + var tempResult = JsonConvert.DeserializeObject>(rawData); + if (tempResult == null) + { + dbResult = new List(); + } + else + { + dbResult = tempResult; + } + } + else + { + dbResult = dbController.ArchMaccGetAll(); + rawData = JsonConvert.SerializeObject(dbResult, JSSettings); + await redisDb.StringSetAsync(currKey, rawData, LongCache); + } + if (dbResult == null) + { + dbResult = new List(); + } + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Info($"ArchMaccGetAll | {source} in: {ts.TotalMilliseconds} ms"); + return dbResult; + } + + public async Task ArchMaccGetByKey(string idxMacchina) + { + string source = "DB"; + ArchMaccModel dbResult = new ArchMaccModel(); + string currKey = $"{redisBaseAddr}:ArchMacc:{idxMacchina}"; + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + string? rawData = await redisDb.StringGetAsync(currKey); + if (!string.IsNullOrEmpty(rawData)) + { + source = "REDIS"; + var tempResult = JsonConvert.DeserializeObject(rawData); + if (tempResult == null) + { + dbResult = new ArchMaccModel(); + } + else + { + dbResult = tempResult; + } + } + else + { + dbResult = dbController.ArchMaccGetByKey(idxMacchina); + rawData = JsonConvert.SerializeObject(dbResult, JSSettings); + await redisDb.StringSetAsync(currKey, rawData, LongCache); + } + if (dbResult == null) + { + dbResult = new ArchMaccModel(); + } + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Info($"ArchMaccGetByKey | {source} in: {ts.TotalMilliseconds} ms"); + return dbResult; + } + public void Dispose() { // Clear database controller @@ -72,14 +166,14 @@ namespace MP.Prog.Data return await Task.FromResult(numCount); } - public Task FileGetByKey(int FileId) + public Task FileGetByKey(int FileId) { return Task.FromResult(dbController.FileGetByKey(FileId)); } - public async Task> FileGetFilt(SelectData CurrFilter) + public async Task> FileGetFilt(SelectData CurrFilter) { - List dbResult = new List(); + List dbResult = new List(); Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); dbResult = dbController.FileGetFilt(CurrFilter.IdxMacchina, CurrFilter.OnlyActive, CurrFilter.OnlyMod, CurrFilter.OnlyNoTag, CurrFilter.FileName, CurrFilter.Tag, CurrFilter.SearchVal, CurrFilter.NumSkip, CurrFilter.PageSize).ToList(); @@ -98,31 +192,46 @@ namespace MP.Prog.Data public async Task> GetArchiveStatus() { + string source = "DB"; List dbResult = new List(); + string currKey = $"{redisBaseAddr}:ArchStatus:ALL"; Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); - dbResult = dbController.GetArchiveStatus(); + string? rawData = await redisDb.StringGetAsync(currKey); + if (!string.IsNullOrEmpty(rawData)) + { + source = "REDIS"; + var tempResult = JsonConvert.DeserializeObject>(rawData); + if (tempResult == null) + { + dbResult = new List(); + } + else + { + dbResult = tempResult; + } + } + else + { + dbResult = dbController.GetArchiveStatus(); + rawData = JsonConvert.SerializeObject(dbResult, JSSettings); + await redisDb.StringSetAsync(currKey, rawData, LongCache); + } + if (dbResult == null) + { + dbResult = new List(); + } stopWatch.Stop(); TimeSpan ts = stopWatch.Elapsed; - Log.Trace($"Effettuata lettura da DB per GetArchiveStatus: {ts.TotalMilliseconds} ms"); - return await Task.FromResult(dbResult); - } - - public Task MacchinaGetByKey(string idxMacchina) - { - return Task.FromResult(dbController.MacchinaGetByKey(idxMacchina)); - } - - public Task> MacchineGetAll() - { - return Task.FromResult(dbController.MacchineGetAll().ToList()); + Log.Info($"GetArchiveStatus | {source} in: {ts.TotalMilliseconds} ms"); + return dbResult; } public async Task> MachineList() { List answ = new List(); answ.Add(new AutocompleteModel { LabelField = "--- TUTTE ---", ValueField = "*" }); - answ.AddRange(dbController.MacchineGetAll().Select(x => new AutocompleteModel { LabelField = $"{x.IdxMacchina} | {x.Nome} {x.Descrizione} ", ValueField = x.IdxMacchina }).ToList()); + answ.AddRange(dbController.ArchMaccGetAll().Select(x => new AutocompleteModel { LabelField = $"{x.IdxMacchina} | {x.Nome} {x.Descrizione} ", ValueField = x.IdxMacchina }).ToList()); return await Task.FromResult(answ); } @@ -131,7 +240,7 @@ namespace MP.Prog.Data dbController.RollBackEntity(item); } - public async Task> TagGetFilt(string SearchVal) + public async Task> TagGetFilt(string SearchVal) { return await Task.FromResult(dbController.TagGetFilt(SearchVal, 200).ToList()); } @@ -157,7 +266,7 @@ namespace MP.Prog.Data public async Task updateAllArchive(int numDayPre, bool forceTag) { int checkDone = 0; - var listaMacchine = await MacchineGetAll(); + var listaMacchine = await ArchMaccGetAll(); foreach (var item in listaMacchine.Where(x => !string.IsNullOrEmpty(x.BasePath)).ToList()) { checkDone += await updateMachineArchive(item.IdxMacchina, numDayPre, forceTag, false); @@ -184,7 +293,7 @@ namespace MP.Prog.Data string ruleName = "Rule00.json"; try { - var macchina = MacchinaGetByKey(idxMacchina).Result; + var macchina = ArchMaccGetByKey(idxMacchina).Result; if (macchina != null && !string.IsNullOrEmpty(macchina.BasePath)) { if (!string.IsNullOrEmpty(macchina.RuleName)) @@ -255,27 +364,27 @@ namespace MP.Prog.Data #region Internal Methods - internal Task FileApprove(FileData.DatabaseModels.FileModel currItem) + internal Task FileApprove(FileModel currItem) { return Task.FromResult(dbController.FileModApprove(currItem)); } - internal Task FileDelete(FileData.DatabaseModels.FileModel currItem) + internal Task FileDelete(FileModel currItem) { return Task.FromResult(dbController.FileDelete(currItem)); } - internal Task FileExport(FileData.DatabaseModels.FileModel currItem) + internal Task FileExport(FileModel currItem) { return Task.FromResult(dbController.FileExport(currItem)); } - internal Task FileReject(FileData.DatabaseModels.FileModel currItem) + internal Task FileReject(FileModel currItem) { return Task.FromResult(dbController.FileModReject(currItem)); } - internal Task FileUpdate(FileData.DatabaseModels.FileModel updItem) + internal Task FileUpdate(FileModel updItem) { return Task.FromResult(dbController.FileUpdate(updItem)); } @@ -290,7 +399,6 @@ namespace MP.Prog.Data #region Protected Fields protected static string connStringBBM = ""; - protected static string connStringFatt = ""; #endregion Protected Fields @@ -303,11 +411,9 @@ namespace MP.Prog.Data private const string redisBaseAddr = "MP:PROG"; private static IConfiguration _configuration; - private static ILogger _logger; - - private static List ElencoMacchine = new List(); - + private static List ElencoMacchine = new List(); + private static JsonSerializerSettings? JSSettings; private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); /// diff --git a/MP.Prog/MP.Prog.csproj b/MP.Prog/MP.Prog.csproj index 322d4bf8..fc54a3b8 100644 --- a/MP.Prog/MP.Prog.csproj +++ b/MP.Prog/MP.Prog.csproj @@ -3,7 +3,7 @@ net6.0 MP.Prog - 6.16.2410.2109 + 6.16.2410.2112 diff --git a/MP.Prog/Pages/Archive.razor.cs b/MP.Prog/Pages/Archive.razor.cs index 2fcf8f70..d5203f1b 100644 --- a/MP.Prog/Pages/Archive.razor.cs +++ b/MP.Prog/Pages/Archive.razor.cs @@ -18,7 +18,7 @@ namespace MP.Prog.Pages private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); private FileModel currRecord = null; private List ListRecords; - private List MacList; + private List MacList; private List TagList; #endregion Private Fields @@ -423,7 +423,7 @@ namespace MP.Prog.Pages protected async Task ReloadAllData() { isLoading = true; - MacList = await DataService.MacchineGetAll(); + MacList = await DataService.ArchMaccGetAll(); SelIdxMacc = "0"; SearchTag = defTag; TagList = await DataService.TagGetFilt(SearchTag); diff --git a/MP.Prog/Program.cs b/MP.Prog/Program.cs index 904ca0f8..e5b33f61 100644 --- a/MP.Prog/Program.cs +++ b/MP.Prog/Program.cs @@ -24,7 +24,7 @@ namespace MP.Prog .ConfigureLogging(logging => { logging.ClearProviders(); - logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace); + logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Error); }) .UseNLog(); diff --git a/MP.Prog/Resources/ChangeLog.html b/MP.Prog/Resources/ChangeLog.html index 01be5e3f..57384cc7 100644 --- a/MP.Prog/Resources/ChangeLog.html +++ b/MP.Prog/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo gestione Programmi MAPO -

Versione: 6.16.2410.2109

+

Versione: 6.16.2410.2112


Note di rilascio:
    diff --git a/MP.Prog/Resources/VersNum.txt b/MP.Prog/Resources/VersNum.txt index 9233ad8d..df973cd0 100644 --- a/MP.Prog/Resources/VersNum.txt +++ b/MP.Prog/Resources/VersNum.txt @@ -1 +1 @@ -6.16.2410.2109 +6.16.2410.2112 diff --git a/MP.Prog/Resources/manifest.xml b/MP.Prog/Resources/manifest.xml index a7c66212..fd918475 100644 --- a/MP.Prog/Resources/manifest.xml +++ b/MP.Prog/Resources/manifest.xml @@ -1,6 +1,6 @@ - 6.16.2410.2109 + 6.16.2410.2112 https://nexus.steamware.net/repository/SWS/MP-PROG/stable/LAST/MP.Prog.zip https://nexus.steamware.net/repository/SWS/MP-PROG/stable/LAST/ChangeLog.html false diff --git a/MP.Prog/appsettings.json b/MP.Prog/appsettings.json index 397f561f..3f754328 100644 --- a/MP.Prog/appsettings.json +++ b/MP.Prog/appsettings.json @@ -39,7 +39,7 @@ "rules": [ { "logger": "*", - "minLevel": "Trace", + "minLevel": "Info", "writeTo": "logconsole" }, {