Files
NKC/NKC_WF/BaseUserControl.cs
T
2021-09-17 14:51:27 +02:00

290 lines
7.9 KiB
C#

using AppData;
using Newtonsoft.Json;
using SteamWare;
using System;
using System.Collections.Generic;
namespace NKC_WF
{
public class BaseUserControl : System.Web.UI.UserControl
{
#region Protected Fields
/// <summary>
/// Membro gestione accessi al datalayer (istanza x ogni classe controllo)
/// </summary>
protected DataLayer DLMan = new DataLayer();
#endregion Protected Fields
#region Public Fields
/// <summary>
/// Codice macchina (da v2)
/// </summary>
public string PlaceCod = "VIRTNE";
#endregion Public Fields
#region Public Events
/// <summary>
/// Generico evento di richiesta refresh a aprent
/// </summary>
public event EventHandler eh_doRefresh;
/// <summary>
/// Generico evento di richiesta refresh a aprent
/// </summary>
public event EventHandler eh_doReset;
#endregion Public Events
#region Protected Properties
protected Dictionary<int, string> anagMateriali
{
set
{
string jsonData = JsonConvert.SerializeObject(value);
memLayer.ML.setRSV("anagMateriali", jsonData, 60);
}
get
{
Dictionary<int, string> answ = new Dictionary<int, string>();
//cerco in redis...
string rawData = memLayer.ML.getRSV("anagMateriali");
if (!string.IsNullOrEmpty(rawData))
{
answ = JsonConvert.DeserializeObject<Dictionary<int, string>>(rawData);
}
// sennò nel DB e salvo in redis...
else
{
var tabMat = DLMan.taMat.GetData();
foreach (var item in tabMat)
{
answ.Add(item.MatID, item.MatDesc);
}
// salvo in redis
anagMateriali = answ;
}
// restituisco
return answ;
}
}
#endregion Protected Properties
#region Public Properties
/// <summary>
/// verifica sia ambiente PROD (vs DEV)
/// </summary>
public bool checkProd
{
get
{
return memLayer.ML.CRS("environment") == "PROD";
}
}
/// <summary>
/// Recupera IP utente
/// </summary>
/// <returns></returns>
public string currIpAddress
{
get
{
string userip = Request.UserHostAddress;
return userip;
}
}
#endregion Public Properties
#region Public Methods
/// <summary>
/// determina CSS x colore testo da perc svuotamento...
/// </summary>
/// <param name="ratio"></param>
/// <returns></returns>
public string getCssByRatio(double ratio)
{
string answ = "text-dark";
if (ratio == 0)
{
answ = "text-danger";
}
else if (ratio == 1)
{
answ = "text-success";
}
else
{
answ = "text-warning";
}
return answ;
}
/// <summary>
/// Restituisce URL immagine QRCode
/// </summary>
/// <param name="QrValue">Parametro da renderizzare con QRCode</param>
/// <returns></returns>
public string getImgUrl(object QrValue)
{
string baseUrl = $"{memLayer.ML.CRS("matrixUrl")}/HOME/QR_site/JSON?val=";
string payload = "{'baseUrl':'{0}','parameters':['" + $"{QrValue}" + "']}";
string answ = $"{baseUrl}{payload}";
return answ;
}
/// <summary>
/// Recupera valore intero da OBJ
/// </summary>
/// <param name="_val"></param>
/// <returns></returns>
public double getInt(object _val)
{
int answ = -999999;
int.TryParse(_val.ToString(), out answ);
return answ;
}
/// <summary>
/// Calcola il rapporto tra 2 valori
/// </summary>
/// <param name="_dividendo"></param>
/// <param name="_divisore"></param>
/// <returns></returns>
public double getRatio(object _dividendo, object _divisore)
{
double ratio = 0;
double dividendo = 0;
double divisore = 1;
double.TryParse(_dividendo.ToString(), out dividendo);
double.TryParse(_divisore.ToString(), out divisore);
// se divisore 0 --> 1
divisore = divisore == 0 ? 1 : divisore;
ratio = dividendo / divisore;
return ratio;
}
/// <summary>
/// Wrapper scrittura log DEBUG
/// </summary>
/// <param name="message"></param>
public void lgDebug(string message)
{
logger.lg.scriviLog(message, tipoLog.DEBUG);
}
/// <summary>
/// Wrapper scrittura log ERROR
/// </summary>
/// <param name="message"></param>
public void lgError(string message)
{
logger.lg.scriviLog(message, tipoLog.ERROR);
}
/// <summary>
/// Wrapper scrittura log EXCEPTION
/// </summary>
/// <param name="message"></param>
public void lgException(string message, Exception exc)
{
logger.lg.scriviLog($"{message}{Environment.NewLine}{exc}", tipoLog.EXCEPTION);
}
/// <summary>
/// Wrapper scrittura log FATAL
/// </summary>
/// <param name="message"></param>
public void lgFatal(string message, Exception exc)
{
logger.lg.scriviLog($"{message}{Environment.NewLine}{exc}", tipoLog.FATAL);
}
/// <summary>
/// Wrapper scrittura log INFO
/// </summary>
/// <param name="message"></param>
public void lgInfo(string message)
{
logger.lg.scriviLog(message, tipoLog.INFO);
}
public string matByKey(object _matId)
{
string answ = "";
int matId = 0;
int.TryParse(_matId.ToString(), out matId);
try
{
answ = anagMateriali[matId];
}
catch
{ }
return answ;
}
/// <summary>
/// Converte obja intero
/// </summary>
/// <param name="valore"></param>
/// <returns></returns>
public int obj2int(object valore)
{
int answ = 0;
int.TryParse(valore.ToString(), out answ);
return answ;
}
/// <summary>
/// Chiamata evento
/// </summary>
public void raiseEvent()
{
// se qualcuno ascolta sollevo evento nuovo valore...
if (eh_doRefresh != null)
{
eh_doRefresh(this, new EventArgs());
}
}
/// <summary>
/// Chiamata evento
/// </summary>
public void raiseReset()
{
// se qualcuno ascolta sollevo evento nuovo valore...
if (eh_doReset != null)
{
eh_doReset(this, new EventArgs());
}
}
/// <summary>
/// Wrapper traduzione termini
/// </summary>
/// <param name="lemma"></param>
/// <returns></returns>
public string traduci(string lemma)
{
string answ = $"__{lemma}__";
try
{
answ = SteamWare.user_std.UtSn.Traduci(lemma);
}
catch
{ }
return answ;
}
#endregion Public Methods
}
}