Ejemplo n.º 1
0
        public void InsertUpdate(CmsEntities cee, ImportWbsProjectObject importWbsProjectObject, int issueId, SystemReferenceType systemReferenceType)
        {
            foreach (var systemReferenceDataAdapter in importWbsProjectObject.Children)
            {
                var existing = cee.SystemReferences.FirstOrDefault(x =>
                    x.IssueId == issueId
                    && x.Number == systemReferenceDataAdapter.WbsElement);

                if (existing != null) //Exist so lets update
                {
                    mLog.Verbose("Updating SystemReferenceId ='{0}', IssueId ='{1}', SystemReferenceTypeId ='{2}' ({3})  Number ='{4}' to Description ='{5}', FundingType ='{6}', ActualValue  ='{7}', EstValue ='{8}'",
                        existing.Id, existing.IssueId, existing.SystemReferenceTypeId,existing.SystemReferenceType.Name, existing.Number,
            existing.Description, existing.FundingType, existing.ActualValue, existing.EstValue);

                    existing.Description = systemReferenceDataAdapter.WbsElementDescription;
                    existing.FundingType = systemReferenceDataAdapter.SpendClassification == "CAPEX" ? "CAPEX" : systemReferenceDataAdapter.SpendClassification == "OPEX" ? "OPEX" : "--";
                    existing.Status = systemReferenceDataAdapter.Status;
                    existing.ActualValue = systemReferenceDataAdapter.Actuals;
                    existing.EstValue = systemReferenceDataAdapter.WbsBudget;
                }
                else //Insert new
                {

                    SystemReference newReference = new SystemReference
                    {
                        IssueId = issueId,
                        Number = systemReferenceDataAdapter.WbsElement,
                        SystemReferenceTypeId = systemReferenceType.Id,
                        Description = systemReferenceDataAdapter.WbsElementDescription,
                        FundingType = systemReferenceDataAdapter.SpendClassification == "CAPEX" ? "CAPEX" : systemReferenceDataAdapter.SpendClassification == "OPEX" ? "OPEX" : "--",
                        Status = systemReferenceDataAdapter.Status,
                        ActualValue = systemReferenceDataAdapter.Actuals,
                        EstValue = systemReferenceDataAdapter.WbsBudget
                    };
                    cee.SystemReferences.Add(newReference);

                    mLog.Verbose("Inserting new SystemReferenceId ='{0}', IssueId ='{1}', SystemReferenceTypeId ='{2}' ({3})  Number ='{4}', Description ='{5}', FundingType ='{6}', ActualValue  ='{7}', EstValue ='{8}'",
                        newReference.Id, newReference.IssueId, newReference.SystemReferenceTypeId, systemReferenceType.Name, newReference.Number,
                        newReference.Description, newReference.FundingType, newReference.ActualValue, newReference.EstValue);
                }
            }
        }
Ejemplo n.º 2
0
        public static List<ImportWbsProjectObject> BuildImportWbsProjectObjects(List<SystemReferenceDataAdapter> systemReferenceDataAdapters, List<string> ignoreProjectCodes )
        {
            List<ImportWbsProjectObject> importWbsProjectObjects = new List<ImportWbsProjectObject>();

            //Get "Group" items this is data that needs to exist in CMS (group item is where ProjectCode equals to WbsElement)
            var projDefSystemReferences = systemReferenceDataAdapters.Where(x => x.ProjectCode == x.WbsElement).ToList();

            foreach (var projDefSystemReference in projDefSystemReferences)
            {
                if (ignoreProjectCodes.Contains(projDefSystemReference.ProjectCode))
                {
                    var message = String.Format("ProjectCode '{0}' and its children will be skipped as it is specified in Ignore list in ProjectWbsImporterConfig.xml",
                        projDefSystemReference.ProjectCode);
                    mLog.Warning("", message);
                    Console.WriteLine(message);

                    continue;
                }
                //Get Group item children
                //All the items that have matching ProjectCode excluding its selfe
                var children =
                    systemReferenceDataAdapters.Where(
                        x => x.ProjectCode == projDefSystemReference.ProjectCode && x != projDefSystemReference).ToList();

                ImportWbsProjectObject importWbsProjectObject = new ImportWbsProjectObject
                {
                    ProjDefSystemReference = projDefSystemReference,
                    Children = children
                };
                importWbsProjectObjects.Add(importWbsProjectObject);
            }
            return importWbsProjectObjects;
        }
Ejemplo n.º 3
0
        ///  <summary>
        ///  This will return orphaned WBS and thie children
        ///  Orphan is a item that doent have parent (where parent is where ProjectCode == WBS Element and WBS Element does not have decimal point)
        ///  Project Code | Project Status | WBS Element
        ///  2000004        Closed	        2000004
        ///  2000004        Closed	        2000004.01
        ///  2000004        Closed	        2000004.02
        ///  2000004        Closed	        2000004.03
        ///  2000004        Closed	        2000004.04
        ///  2000229        Open	        2000229.01
        ///  2000229        Open	        2000229.02
        ///  2000229        Open	        2000229.03
        ///  2000229        Open	        2000229.04
        ///  2000229        Open	        2000229.05
        ///  2000229        Open	        2000229.06
        ///  2000229        Open	        2000229.07
        /// 
        ///  In the example aboe the first line is a Parrent and next 4 lines are the parents children
        ///  Next 7 lines are all orphans as they do not have a parrent
        ///  In this case we take th 10000229 as parrent and 2000229.01 to 2000229.07 as its children
        ///  </summary>
        /// <param name="orphanedExcelLineItems"></param>
        /// <param name="ignoreProjectCodes"></param>
        ///  <returns></returns>
        public static List<ImportWbsProjectObject> GetOrphanedWbsProjectObjects(List<SystemReferenceDataAdapter> orphanedExcelLineItems, List<string> ignoreProjectCodes)
        {
            List<ImportWbsProjectObject> orphanedWbsProjectObjects = new List<ImportWbsProjectObject>();

            var orphanedGroupByProjectCode = orphanedExcelLineItems.GroupBy(x => x.ProjectCode).Select(x => x.FirstOrDefault());

            foreach (var orphanedExcelLineItem in orphanedGroupByProjectCode)
            {
                if (ignoreProjectCodes.Contains(orphanedExcelLineItem.ProjectCode))
                {
                    var message = String.Format("ProjectCode '{0}' and its children will be skipped as it is specified in Ignore list in ProjectWbsImporterConfig.xml",
                        orphanedExcelLineItem.ProjectCode);
                    mLog.Warning("", message);
                    Console.WriteLine(message);

                    continue;
                }
                //Get Group item children
                //All the items that have matching ProjectCode excluding its selfe
                var children =
                    orphanedExcelLineItems.Where(
                        x => x.ProjectCode == orphanedExcelLineItem.ProjectCode).ToList();

                ImportWbsProjectObject importWbsProjectObject = new ImportWbsProjectObject
                {
                    ProjDefSystemReference = new SystemReferenceDataAdapter {ProjectCode = orphanedExcelLineItem.ProjectCode, WbsElement = orphanedExcelLineItem.ProjectCode},
                    Children = children,
                    IsOrphaned = true
                };
                orphanedWbsProjectObjects.Add(importWbsProjectObject);
            }
            return orphanedWbsProjectObjects;
        }
Ejemplo n.º 4
0
        public void UpdateGroupSystemReference(SystemReference systemReference, ImportWbsProjectObject importWbsProjectObject)
        {
            //update sum of children Actuals to existinProjDefSystemReference Actual
            var actualSum = importWbsProjectObject.Children.Sum(x => x.Actuals);
            var estDev = importWbsProjectObject.IsOrphaned ? importWbsProjectObject.Children.Sum(x => x.WbsBudget) :  importWbsProjectObject.ProjDefSystemReference.WbsBudget;

            systemReference.Description = importWbsProjectObject.ProjDefSystemReference.WbsElementDescription;
            systemReference.FundingType = importWbsProjectObject.ProjDefSystemReference.SpendClassification == "CAPEX" ? "CAPEX" : importWbsProjectObject.ProjDefSystemReference.SpendClassification == "OPEX" ? "OPEX" : "--";
            systemReference.ActualValue = actualSum;
            systemReference.EstValue = estDev;

            var systemReferenceType = SystemReferenceTypes.FirstOrDefault(x => x.Id == systemReference.SystemReferenceTypeId);
            var systemReferenceTypeName = systemReferenceType == null ? string.Empty: systemReferenceType.Name;

            mLog.Verbose("Updating SystemReferenceId ='{0}', IssueId ='{1}', SystemReferenceTypeId ='{2}' ({3})  Number ='{4}' to Description ='{5}', FundingType ='{6}', ActualValue  ='{7}', EstValue ='{8}'",
                        systemReference.Id, systemReference.IssueId, systemReference.SystemReferenceTypeId,systemReferenceTypeName, systemReference.Number,
                systemReference.Description, systemReference.FundingType, systemReference.ActualValue, systemReference.EstValue);
        }