using MP.Core.DTO;
using MP.Data.DbModels;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace MP.Data.Repository.Anag
{
public interface IAnagRepository
{
#region Public Methods
///
/// Stacca un nuovo counter x il tipo richiesto
///
/// Tipo di contatore
/// Modello del contatore aggiornato
Task AnagCountersGetNextAsync(string cntType);
///
/// Restituisce l'anagrafica EVENTI generalmente disponibile per OGNI macchina
///
/// Nome Table x filtro (std: EvList)
/// Nome Field x filtro (std: Common)
/// Lista di eventi generali
Task> AnagEventiGeneralAsync(string TableName = "EvList", string FieldName = "Common");
///
/// Elenco Gruppi tipo Azienda
///
/// Lista di modelli anagrafica gruppi
Task> AnagGruppiAziendeAsync();
///
/// Delete record AnagraficaGruppi
///
/// Record da eliminare
/// True se l'eliminazione � avvenuta
Task AnagGruppiDeleteAsync(AnagGruppiModel updRec);
///
/// Elenco Gruppi tipo Fasi
///
/// Lista di modelli anagrafica gruppi
Task> AnagGruppiFaseAsync();
///
/// Gruppi x tipo modalit� Async
///
/// Tipo di gruppo (es. REPARTO, FASE, AZIENDA)
/// Lista di modelli anagrafica gruppi
Task> AnagGruppiGetTipoAsync(string tipoGruppo);
///
/// Elenco Gruppi tipo REPARTO (x associazione Macchine-Operatori) in formato DTO con conteggi del numero record trovati
///
/// Lista di DTO reparti con conteggio macchine e operatori
Task> AnagGruppiRepartoDtoAsync();
///
/// Upsert record AnagraficaGruppi (solo codice/descrizione)
///
/// Record da inserire o aggiornare
/// True se l'operazione � riuscita
Task AnagGruppiUpsertAsync(AnagGruppiModel updRec);
///
/// Elenco valori ammessi x Stati commessa (es Yacht Baglietto)
///
/// Lista di valori ammessi
Task> AnagStatiCommAsync();
///
/// Elenco valori ammessi x Tipo articoli
///
/// Lista di valori ammessi
Task> AnagTipoArtLvAsync();
#if false
///
/// Elenco codice articoli che abbiano dati Dossier
///
/// Lista di codici articolo
Task> ArticleWithDossierAsync();
#endif
///
/// Conteggio num articoli Async
///
/// Conteggio totale articoli
Task ArticoliCountAsync();
///
/// Conteggio articoli data condizione ricerca
///
/// Tipo articolo
/// Azienda
/// Valore di ricerca
/// Conteggio risultati ricerca
Task ArticoliCountSearchAsync(string tipoArt = "*", string azienda = "*", string searchVal = "");
///
/// Conteggio articoli IMPIEGATI (da stored stp_ART_getUsed) Async
///
/// Conteggio articoli impiegati
Task ArticoliCountUsedAsync();
///
/// Eliminazione Record Articolo
///
/// Record da eliminare
/// True se eliminato
Task ArticoliDeleteRecordAsync(AnagArticoliModel currRec);
///
/// Restituisce elenco articoli dato tipo (es KIT)
///
/// Tipo articolo (es. KIT)
/// Azienda (opzionale)
/// Lista di articoli per tipo
Task> ArticoliGetByTipoAsync(string tipo, string azienda = "*");
///
/// Elenco tabella Articoli da filtro
///
/// Numero massimo di record
/// Tipo articolo
/// Azienda
/// Valore di ricerca
/// Lista di articoli cercati
Task> ArticoliGetSearchAsync(int numRecord, string tipoArt = "*", string azienda = "*", string searchVal = "");
///
/// Elenco tabella Articoli NON IMPIEGATI (da stored stp_ART_getNotUsed) Async
///
/// Lista di articoli non impiegati
Task> ArticoliGetUnusedAsync();
///
/// Elenco tabella Articoli IMPIEGATI (da stored stp_ART_getUsed) Async
///
/// Lista di articoli non impiegati
Task> ArticoliGetUsedAsync();
///
/// Dizionario associazione ODL/PODL
///
/// Lista di articoli in kit
Task> ArticoliInKitAsync();
///
/// Update Record Articolo
///
/// Record da aggiornare
/// True se aggiornato
Task ArticoliUpdateRecord(AnagArticoliModel editRec);
///
/// Elenco valori ammessi x tabella/colonna Async
///
/// Nome tabella
/// Nome colonna
/// Lista di valori ammessi
Task> ListValuesFiltAsync(string tabName, string fieldName);
///
/// Elenco Macchine dato operatore secondo gruppi (macchine/operatore)
///
/// Matricola operatore
/// Lista di macchine
Task> MacchineByMatrOperAsync(int MatrOpr);
///
/// Elenco da tabella Macchine filtro x gruppo
///
/// Codice gruppo
/// Lista di macchine
Task> MacchineGetFiltAsync(string codGruppo);
///
/// Elenco operatori dato filtro gruppo
///
/// Codice gruppo
/// Lista di operatori
Task> OperatoriGetFiltAsync(string codGruppo);
///
/// Dizionario associazione ODL/PODL
///
/// Lista di ID mancanti
/// Dizionario di associazione
Task> PODL_getDictOdlPodlAsync(List missingIds);
///
/// Recupero dizionario traduzioni
///
/// Codice lingua
/// Dizionario di traduzioni
Dictionary VocabolarioGetLang(string lingua);
#endregion Public Methods
}
}