//----------------------------------------------------------------------- public CResultAErreur CanCreate(string strType, int nNbDemande) { CResultAErreur result = CResultAErreur.True; CLicenceTypePrtct type = m_LicenceLogiciel.GetTypeProtege(strType); int nNbUsed = 0; if (type != null) { foreach (CNombreUtilisePourTypeLicence record in m_listRecords) { if (record.IdType.ToUpper() == strType.ToUpper()) { nNbUsed += record.NombreUtilise; } } int nEnCours = 0; m_CreationsEnCours.TryGetValue(strType, out nEnCours); if (nNbUsed + nNbDemande + nEnCours > type.Nombre) { int nbPossibleToCreate = type.Nombre - nNbUsed - nEnCours; result.EmpileErreur(I.T("Impossible to create @1 elements. Your licence allows you to create @2 ones |9", nNbDemande.ToString(), nbPossibleToCreate.ToString())); return(result); } } return(result); }
//-------------------------------------------------------- public void InitTypesProteges() { this.Types.Clear(); foreach (Type tp in CContexteDonnee.GetAllTypes()) { if (!typeof(CRelationElementAChamp_ChampCustom).IsAssignableFrom(tp)) { string strNomType = DynamicClassAttribute.GetNomConvivial(tp); CLicenceTypePrtct lc = new CLicenceTypePrtct(strNomType, strNomType, ""); lc.Nombre = 1000; Types.Add(lc); } } }
public IEnumerable <CAlerteLicence> GetAlertes() { List <CAlerteLicence> lst = new List <CAlerteLicence>(); foreach (CNombreUtilisePourTypeLicence restant in GetNombreRestantParType()) { CLicenceTypePrtct type = m_LicenceLogiciel.GetTypeProtege(restant.IdType); if (type != null && type.Nombre != 0) { double fRatio = ((double)(type.Nombre - restant.NombreUtilise) / ((double)type.Nombre)) * 100; if (fRatio < type.SeuilAlertePourcent || fRatio < type.SeuilCritiquePourcent) { CAlerteLicence alerte = new CAlerteLicence( I.T("You will soon reach elements '@1' limit : @2% left|20004", type.Nom, fRatio.ToString("0")), fRatio < type.SeuilCritiquePourcent ? EGraviteAlerte.Critique : EGraviteAlerte.Info); lst.Add(alerte); } } } return(lst); }
//----------------------------------------------------------------------------------------- //write m_listRecords into the file m_stSaveFileFullName public CResultAErreur Save(Dictionary <string, int> dictionary) { CResultAErreur result = CResultAErreur.True; if (!m_bHasTypesLimites) { return(result); } DateTime dateNow = DateTime.Now; foreach (KeyValuePair <string, int> kvp in dictionary) { CLicenceTypePrtct type = m_LicenceLogiciel.GetTypeProtege(kvp.Key); if (type != null)//on sauvegarde que des types limités par la licence { CNombreUtilisePourTypeLicence record = FindExistingRecord(type.Nom); if (record == null) { CNombreUtilisePourTypeLicence addRecord = new CNombreUtilisePourTypeLicence(kvp.Key, kvp.Value); m_listRecords.Add(addRecord); } else { int indx = m_listRecords.IndexOf(record); m_listRecords.RemoveAt(indx); record.NombreUtilise += kvp.Value; m_listRecords.Add(record); } FreeElements(kvp.Key, kvp.Value);//les modif. sont commitées, on les efface de m_CreationsEnCours } } return(result); }