using Microsoft.Extensions.Configuration; using NLog; using NLog.Fluent; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using MongoDB.Driver; using MongoDB.Bson; using MP.Data.MgModels; using System.IO; using MP.Data.Conf; using Newtonsoft.Json; namespace MP.Data.Controllers { public class MpMongoController : IDisposable { public MpMongoController(IConfiguration configuration) { _configuration = configuration; string mongoConf = _configuration.GetConnectionString("MongoConnect"); client = new MongoClient(mongoConf); Log.Info("Avviata classe MpMongoController"); } public void Dispose() { client = null; _configuration = null; } /// /// Ricerca ricetta su MongoDB dato PODL /// /// /// public async Task RecipeGetByPODL(int idxPODL) { await Task.Delay(1); RecipeModel answ = new RecipeModel(); return answ; } public async Task RecipeSetByPODL(RecipeModel currRecord) { await Task.Delay(1); bool answ = false; return answ; } /// /// Init ricetta dato PODL + conf /// /// /// public RecipeModel InitRecipe(int idxPODL, string confPath) { RecipeModel answ = new RecipeModel(); // per prima cosa leggo file di conf x inizializzare ricetta... string fullPath = RecipePath(confPath); bool fileOk = File.Exists(fullPath); if (fileOk) { string rawData = File.ReadAllText(fullPath); var currRecipe = JsonConvert.DeserializeObject(rawData); // copio la mia ricetta come conf... answ = new RecipeModel() { IdxPODL = idxPODL, TemplateFile = currRecipe.TemplateFile, HeadConf = currRecipe.HeadConf, RowsConf = currRecipe.RowsConf, HeadVal = currRecipe.HeadConf.ListKeys, // aggiungo 1 riga... RowsVal = new Dictionary>() { { 1, currRecipe.RowsConf.ListKeys} } }; } return answ; } private MongoClient client = new MongoClient("mongodb://localhost:27017"); private static IConfiguration _configuration; private static Logger Log = LogManager.GetCurrentClassLogger(); public static string RecipePath(string ruleName) { return string.Format($"Recipe/{ruleName}"); } } }