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}");
}
}
}