Exemple #1
0
        public List <Package> GetAllowedPackagesForMainTask(MainTask iMainTask)
        {
            var result = new List <Package>();

            var affectedPackageIsLocked = false;

            if (iMainTask != null)
            {
                //Package déjà affecté à la tâche
                var originalMainTask = GetMainTaskById(iMainTask.MainTaskId, GranularityEnum.Nude);
                if (originalMainTask.PackageId != null)
                {
                    var affectedPackage = GetPackageById((long)originalMainTask.PackageId, GranularityEnum.Full);
                    result.Add(affectedPackage);
                    if (affectedPackage.IsLocked)
                    {
                        affectedPackageIsLocked = true;
                    }
                }
            }

            if (affectedPackageIsLocked)
            {
                //Retourne seulement le package affecté locké
                return(result);
            }
            else
            {
                //Récupération des packages non ouvert déverrouillé
                var unopenUnlockPackages = DBReleaseDataService.GetQuery <T_E_Package>(null).Where(x => !x.IsLocked && x.StatusRef == (short)PackageStatusEnum.Waiting).Enum().ToList().Select(x => GetPackageById(x.PackageId, GranularityEnum.Full)).Enum().ToList();
                result.AddRange(unopenUnlockPackages.Enum());
            }

            if (iMainTask != null)
            {
                //Récupération des packages ouvert déverrouillé
                var openUnlockPackages = DBReleaseDataService.GetQuery <T_E_Package>(null).Where(x => !x.IsLocked && x.StatusRef == (short)PackageStatusEnum.Developpement).Enum().ToList().Select(x => GetPackageById(x.PackageId, GranularityEnum.Full)).Enum().ToList();

                //Garde les packages ouvert dont les projets sont commun
                var packageWithCommonProject = new List <Package>();
                foreach (var item in openUnlockPackages.Enum())
                {
                    if (item.SubTasks.Exists(x => iMainTask.SubTasks.Exists(y => y.ProjectGUID == x.ProjectGUID)))
                    {
                        packageWithCommonProject.Add(item);
                    }
                }

                //Si un seul projet alors seule solution
                if (packageWithCommonProject.Count == 1)
                {
                    result.Add(packageWithCommonProject.Single());
                }
                //Si aucun package de projet en commun alors tous les projets sont possibles
                else if (packageWithCommonProject.Count == 0)
                {
                    result.AddRange(openUnlockPackages.Enum());
                }
            }
            else
            {
                var openUnlockPackages = DBReleaseDataService.GetQuery <T_E_Package>(null).Where(x => !x.IsLocked && x.StatusRef == (short)PackageStatusEnum.Developpement).Enum().ToList().Select(x => GetPackageById(x.PackageId, GranularityEnum.Full)).Enum().ToList();
                result.AddRange(openUnlockPackages.Enum());
            }

            //Suppression des doublons
            return(result.Enum().GroupBy(x => x.PackageId).Select(x => x.First()).ToList());
        }
Exemple #2
0
        public List <Package> GetPackageList(PackageStatusSearchEnum iPackageEnvironmentSearch, PackageOrderByEnum iPackageOrderBy)
        {
            var theQuery = DBReleaseDataService.GetQuery <T_E_Package>(null);

            //Status
            if (iPackageEnvironmentSearch == PackageStatusSearchEnum.Developpement)
            {
                theQuery = theQuery.Where(x => x.StatusRef == (short)PackageStatusEnum.Developpement).AsQueryable();
            }
            else if (iPackageEnvironmentSearch == PackageStatusSearchEnum.Production)
            {
                theQuery = theQuery.Where(x => x.StatusRef == (short)PackageStatusEnum.Production).AsQueryable();
            }
            else if (iPackageEnvironmentSearch == PackageStatusSearchEnum.Staging)
            {
                theQuery = theQuery.Where(x => x.StatusRef == (short)PackageStatusEnum.Staging).AsQueryable();
            }
            else if (iPackageEnvironmentSearch == PackageStatusSearchEnum.InProgress)
            {
                theQuery = theQuery.Where(x => x.StatusRef == (short)PackageStatusEnum.Developpement ||
                                          x.StatusRef == (short)PackageStatusEnum.Staging).AsQueryable();
            }
            else if (iPackageEnvironmentSearch == PackageStatusSearchEnum.All)
            {
                //ne filtre rien
            }
            else if (iPackageEnvironmentSearch == PackageStatusSearchEnum.NotCompleted)
            {
                theQuery = theQuery.Where(x => x.StatusRef == (short)PackageStatusEnum.Developpement ||
                                          x.StatusRef == (short)PackageStatusEnum.Staging ||
                                          x.StatusRef == (short)PackageStatusEnum.Waiting).AsQueryable();
            }
            else
            {
                throw new Exception(iPackageEnvironmentSearch.ToStringWithEnumName());
            }

            var packageList = theQuery.Enum().ToList();
            var result      = new List <Package>();

            //OrderBy
            if (iPackageOrderBy == PackageOrderByEnum.Priority)
            {
                packageList = packageList.OrderByDescending(x => x.Priority.HasValue).ThenBy(x => x.Priority).ToList();
            }
            else if (iPackageOrderBy == PackageOrderByEnum.PackageId)
            {
                packageList = packageList.OrderBy(x => x.PackageId).ToList();
            }
            else if (iPackageOrderBy == PackageOrderByEnum.DateObjectif)
            {
                packageList = packageList.OrderByDescending(x => x.DeployementObjectifDate.HasValue).ThenBy(x => x.DeployementObjectifDate).ToList();
            }
            else
            {
                throw new Exception(iPackageOrderBy.ToStringWithEnumName());
            }

            foreach (var item in packageList.Enum())
            {
                result.Add(GetPackageById(item.PackageId, GranularityEnum.Full));
            }

            return(result);
        }