Ejemplo n.º 1
0
        public static List <ConstantState> BuildConstantListFromVersion(this Project iProject, List <ConstantState> iOriginalList, decimal iSpecificationVersion)
        {
            if (Math.Truncate(iSpecificationVersion) != Math.Truncate(iProject.GetProjectSettings().ProjectVersion))
            {
                throw new Exception("La version majeure de début et de fin ne peuvent pas être différent");
            }

            var deletedList = iProject.GetDeletedConstantList().Enum().Where(x => x.ProjectVersion <= iProject.GetProjectSettings().ProjectVersion).Enum().ToList().OrderBy(x => x.ProjectVersion).Enum().ToList();
            var addedList   = iProject.GetAddedConstantList().Enum().Where(x => x.ProjectVersion <= iProject.GetProjectSettings().ProjectVersion).Enum().ToList().OrderBy(x => x.ProjectVersion).Enum().ToList();

            var messageList = new List <string>();

            var groupAdded   = addedList.Enum().Where(x => x.ProjectVersion > iSpecificationVersion && x.ProjectVersion <= iProject.GetProjectSettings().ProjectVersion).Enum().OrderBy(x => x.ProjectVersion).Enum().GroupBy(x => x.ProjectVersion);
            var groupDeleted = deletedList.Enum().Where(x => x.ProjectVersion > iSpecificationVersion && x.ProjectVersion <= iProject.GetProjectSettings().ProjectVersion).Enum().OrderBy(x => x.ProjectVersion).Enum().GroupBy(x => x.ProjectVersion);

            List <decimal> versionList = groupAdded.Select(x => x.First().ProjectVersion).ToList();

            versionList.AddRange(groupDeleted.Select(x => x.First().ProjectVersion).ToList());
            versionList = versionList.GetWithoutDuplicates(x => x).Enum().ToList().OrderBy(x => x).Enum().ToList();

            //Bouclage sur toutes les versions possibles entre la version de sauvegarde et celle du config pour rejouer les modifications sans erreur
            foreach (var versionItem in versionList.Enum())
            {
                //Création des nouveaux constantes d'abord si transfert supprimé vers nouveau
                var addedConstantList = addedList.Enum().Where(x => x.ProjectVersion == versionItem).Enum().ToList();

                foreach (var addedItem in addedConstantList.Enum())
                {
                    if (iOriginalList.NotExists2(x => x.Name == addedItem.ConstantName))
                    {
                        var newControlState = new ConstantState
                        {
                            Name = addedItem.ConstantName
                        };

                        iOriginalList.Add(newControlState);
                    }
                    else
                    {
                        throw new Exception("La constante existe déjà, données corrompues, Contacter l'administrateur");
                    }
                }

                //Suppression des controles
                var deletedConstantList = deletedList.Enum().Where(x => x.ProjectVersion == versionItem).Enum().ToList();
                foreach (var deletedItem in deletedConstantList.Enum())
                {
                    var theControlState = iOriginalList.Single(x => x.Name == deletedItem.ConstantName);

                    if (deletedItem.TransfertConstantName.IsNotNullAndNotEmpty())
                    {
                        var theTransfertControlState = iOriginalList.Single(x => x.Name == deletedItem.TransfertConstantName);
                        theTransfertControlState.Value = theControlState.Value;
                    }
                    iOriginalList.Remove(theControlState);
                }
            }
            return(iOriginalList);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Récupération des constantes du project en ignorant les paramètres d'entrée (commencant par paramètre, utilisé par le module intégration)
        /// </summary>
        /// <returns></returns>
        public List <ConstantState> GetCurrentConstantList()
        {
            var constants     = _Project.Constants;
            var constantsList = new List <ConstantState>();

            foreach (var item in constants.GetConstants().Enum())
            {
                if (item.DisplayName.StartsWith("Parameter") == false)
                {
                    var newConstant = new ConstantState();
                    newConstant.Name  = item.DisplayName;
                    newConstant.Value = item.Value.ToString();
                }
            }

            return(constantsList);
        }