namespace EgwCoreLib.Lux.Data.Services.General
{
///
/// Interfaccia per ImageCacheService - caching e publishing immagini via Redis
///
public interface IImageCacheService
{
#region Public Methods
///
/// Effettua una generica chiamata ApiRest GET
///
/// URL Api di base
/// Richiesta completa
/// Risposta RestSharp
Task CallRestGet(string ApiUrl, string ApiRequest);
///
/// Effettua una generica chiamata ApiRest POST
///
/// URL Api di base
/// Richiesta completa
/// Corpo Json trasmesso con richiesta
/// Risposta RestSharp
Task CallRestPost(string ApiUrl, string ApiRequest, object rawBody);
///
/// Elimina da cache Redis SVG per il record richiesto
///
/// UID immagine
/// Environment
/// True se eliminato con successo
bool DeleteSvg(string imgId, Constants.EXECENVIRONMENTS env);
///
/// Elimina da cache Redis SVG per il record richiesto (async)
///
/// UID immagine
/// Environment
/// True se eliminato con successo
Task DeleteSvgAsync(string imgId, Constants.EXECENVIRONMENTS env);
///
/// Esegue flush memoria Redis dato pattern
///
/// Pattern di cancellazione
/// True se eseguito con successo
Task ExecFlushRedisPatternAsync(RedisValue pat2Flush);
///
/// Genera URL immagine dato
///
/// Base url IMG server
/// Live = in fase di calcolo (cache REDIS)
/// UID elemento/immagine
/// Environment item (opzionale)
/// URL immagine completa
string ImageUrl(string baseUrl, bool isLive, string imgUID, Constants.EXECENVIRONMENTS envir = Constants.EXECENVIRONMENTS.WINDOW);
///
/// Rilettura risposta da debug in formato string
///
/// UID record
/// Environment
/// Contenuto da debug
Task LoadDebug(string uID, Constants.EXECENVIRONMENTS env);
///
/// Recupera immagine PNG x id item richiesto
///
/// UID item
/// Environment item (opzionale)
/// Contenuto PNG come stringa base64
string LoadPng(string imgUid, Constants.EXECENVIRONMENTS envir = Constants.EXECENVIRONMENTS.WINDOW);
///
/// Recupera immagine PNG x id item richiesto (async)
///
/// UID item
/// Environment item (opzionale)
/// Contenuto PNG come stringa base64
Task LoadPngAsync(string imgUid, Constants.EXECENVIRONMENTS envir = Constants.EXECENVIRONMENTS.WINDOW);
///
/// Recupera immagine SVG x id item richiesto
///
/// UID item
/// Environment item (opzionale)
/// Contenuto SVG come stringa XML
string LoadSvg(string imgUid, Constants.EXECENVIRONMENTS envir = Constants.EXECENVIRONMENTS.WINDOW);
///
/// Recupera immagine SVG x id item richiesto (async)
///
/// UID item
/// Environment item (opzionale)
/// Contenuto SVG come stringa XML
Task LoadSvgAsync(string imgId, Constants.EXECENVIRONMENTS envir = Constants.EXECENVIRONMENTS.WINDOW);
///
/// Salva e invia su channel richiesto un update x UID
/// È atteso un refresh per chi sottoscrive il canale
///
/// UID record
/// Environment
/// True se pubblicato con successo
Task PublishUpdateAsync(string uid, Constants.EXECENVIRONMENTS env);
///
/// Salva e invia su channel BOM redis il doc richiesto
///
/// UID record
/// Environment
/// Contenuto BOM serializzato
/// True se salvato e pubblicato con successo
Task SaveBomAsync(string uid, Constants.EXECENVIRONMENTS env, string bomContent);
///
/// Salvataggio risposta x debug in formato RAW
///
/// UID record
/// Environment
/// Dati raw
/// True se salvato con successo
Task SaveDebug(string uID, Constants.EXECENVIRONMENTS env, string rawData);
///
/// Salva e invia su channel dedicato HML l'elenco degli HardwareModel (conf preferiti) gestiti
///
/// UID record
/// Environment
/// Dati raw
/// True se salvato e pubblicato con successo
Task SaveHmlAsync(string uid, Constants.EXECENVIRONMENTS env, string rawData);
///
/// Salva e invia su channel l'XML delle HW options per il doc richiesto
///
/// UID record
/// Environment
/// Contenuto XML
/// True se salvato e pubblicato con successo
Task SaveHwOptAsync(string uid, Constants.EXECENVIRONMENTS env, string xmlContent);
///
/// Salva immagine PNG su Redis e pubblica notifica sul channel
///
/// UID immagine
/// Environment
/// Contenuto PNG come stringa base64
/// True se salvato e pubblicato con successo
bool SavePng(string imgId, Constants.EXECENVIRONMENTS env, string pngContent);
///
/// Salva immagine PNG su Redis e pubblica notifica sul channel (async)
///
/// UID immagine
/// Environment
/// Contenuto PNG come stringa base64
/// True se salvato e pubblicato con successo
Task SavePngAsync(string imgId, Constants.EXECENVIRONMENTS env, string pngContent);
///
/// Salva e invia su channel risultato balance per POR (UID.GroupId.Type) richiesto
///
/// UID record
/// Environment
/// Contenuto stima serializzato
/// True se salvato e pubblicato con successo
Task SaveProdBalanceAsync(string uid, Constants.EXECENVIRONMENTS env, string estimContent);
///
/// Salva e invia su channel risultato stima per POR (UID.GroupId) richiesto
///
/// UID record
/// Environment
/// Contenuto stima serializzato
/// True se salvato e pubblicato con successo
Task SaveProdEstimateAsync(string uid, Constants.EXECENVIRONMENTS env, string estimContent);
///
/// Salva e invia su channel areaProfElem ricevuta
///
/// UID record
/// Environment
/// Contenuto areaProfElem serializzato
/// True se salvato e pubblicato con successo
Task SaveProfileElemAsync(string uID, Constants.EXECENVIRONMENTS env, string areaProfElem);
///
/// Salva e invia su channel profile list gestiti
///
/// UID record
/// Environment
/// Dati raw
/// True se salvato e pubblicato con successo
Task SaveProfileListAsync(string uid, Constants.EXECENVIRONMENTS env, string rawData);
///
/// Salva e invia su channel info Threshold e Data x profili gestiti
///
/// UID record
/// Environment
/// Info Threshold
/// Info generiche
/// True se salvato e pubblicato con successo
Task SaveProfileThreshAsync(string uid, Constants.EXECENVIRONMENTS env, string rawDataThresh, string rawProfData);
///
/// Salva e invia su channel shape per item (UID.GroupId) richiesto
///
/// UID record
/// Environment
/// Contenuto shape serializzato
/// True se salvato e pubblicato con successo
Task SaveShapeAsync(string uid, Constants.EXECENVIRONMENTS env, string shapeContent);
///
/// Salva immagine SVG su Redis e pubblica notifica sul channel
///
/// UID immagine
/// Environment
/// Contenuto SVG come stringa XML
/// True se salvato e pubblicato con successo
bool SaveSvg(string imgId, Constants.EXECENVIRONMENTS env, string svgContent);
///
/// Salva immagine SVG su Redis e pubblica notifica sul channel (async)
///
/// UID immagine
/// Environment
/// Contenuto SVG come stringa XML
/// True se salvato e pubblicato con successo
Task SaveSvgAsync(string imgId, Constants.EXECENVIRONMENTS env, string svgContent);
#endregion Public Methods
}
}