예제 #1
0
        /// <summary>
        /// Step2: Refresh Preivew Mappings Listbox.
        /// </summary>
        private void RefreshPreviewMappings()
        {
            this.ListBox_Step2_PreviewMap.Items.Clear();

            foreach (var mapKVP in MPController.CurrentTransaction.Mappings)
            {
                var     resourceType = MPController.GetResourceTypeByGid(mapKVP.Value);
                var     resourceStr  = "";
                DataRow dr;
                switch (resourceType)
                {
                case ResourceType.Human:
                    dr          = MPController.FindResourceDataRow(GlobalContext.ResourcesDataSet.Tables["human"], mapKVP.Value);
                    resourceStr = String.Format("[H] {0}: {1} {2}", dr["PersonId"], dr["FirstName"],
                                                dr["LastName"]);
                    break;

                case ResourceType.Agent:
                    dr          = MPController.FindResourceDataRow(GlobalContext.ResourcesDataSet.Tables["agent"], mapKVP.Value);
                    resourceStr = String.Format("[A] {0}", dr["Name"]);
                    break;

                case ResourceType.Group:
                    dr          = MPController.FindResourceDataRow(GlobalContext.ResourcesDataSet.Tables["group"], mapKVP.Value);
                    resourceStr = String.Format("[G] {0} ({1})", dr["Name"],
                                                MPController.ParseGroupType(dr["GroupType"]));
                    break;

                case ResourceType.Position:
                    dr = MPController.FindResourceDataRow(GlobalContext.ResourcesDataSet.Tables["position"], mapKVP.Value);
                    var belongTo    = dr["BelongToGroup"] as string;
                    var belongToStr = "";
                    if (belongTo != null)
                    {
                        var fetched = GlobalContext.ResourcesDataSet.Tables["group"].Rows.Cast <DataRow>()
                                      .FirstOrDefault(groupRow => groupRow["GlobalId"] as string == belongTo);
                        if (fetched != null)
                        {
                            belongToStr = $" (Group: {fetched["Name"]})";
                        }
                    }
                    resourceStr = String.Format("[P] {0}{1}", dr["Name"], belongToStr);
                    break;

                case ResourceType.Capability:
                    dr          = MPController.FindResourceDataRow(GlobalContext.ResourcesDataSet.Tables["capability"], mapKVP.Value);
                    resourceStr = String.Format("[C] {0}", dr["Name"]);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
                this.ListBox_Step2_PreviewMap.Items.Add(String.Format("{0} => {1}", mapKVP.Key, resourceStr));
            }
        }
        /// <summary>
        /// Create a new mapping management form.
        /// </summary>
        public ManageMappingForm()
        {
            InitializeComponent();
            // Business Roles
            foreach (var br in MPController.CurrentTransaction.BusinessRoleList)
            {
                this.ListBox_BusinessRole.Items.Add(br);
            }
            // Mappings
            foreach (var mapItem in MPController.CurrentTransaction.Mappings)
            {
                this.CurrentMap.Add(mapItem);
            }
            foreach (var mapKVP in MPController.CurrentTransaction.Mappings)
            {
                var     resourceType = MPController.GetResourceTypeByGid(mapKVP.Value);
                var     resourceStr  = "";
                DataRow dr;
                switch (resourceType)
                {
                case ResourceType.Human:
                    dr = MPController.FindResourceDataRow(GlobalContext.ResourcesDataSet.Tables["human"],
                                                          mapKVP.Value);
                    resourceStr = String.Format("[H] {0}: {1} {2}", dr["PersonId"], dr["FirstName"],
                                                dr["LastName"]);
                    break;

                case ResourceType.Agent:
                    dr = MPController.FindResourceDataRow(GlobalContext.ResourcesDataSet.Tables["agent"],
                                                          mapKVP.Value);
                    resourceStr = String.Format("[A] {0}", dr["Name"]);
                    break;

                case ResourceType.Group:
                    dr = MPController.FindResourceDataRow(GlobalContext.ResourcesDataSet.Tables["group"],
                                                          mapKVP.Value);
                    resourceStr = String.Format("[G] {0} ({1})", dr["Name"],
                                                MPController.ParseGroupType(dr["GroupType"]));
                    break;

                case ResourceType.Position:
                    dr = MPController.FindResourceDataRow(GlobalContext.ResourcesDataSet.Tables["position"],
                                                          mapKVP.Value);
                    var belongTo    = dr["BelongToGroup"] as string;
                    var belongToStr = "";
                    if (belongTo != null)
                    {
                        var fetched = GlobalContext.ResourcesDataSet.Tables["group"].Rows.Cast <DataRow>()
                                      .FirstOrDefault(groupRow => groupRow["GlobalId"] as string == belongTo);
                        if (fetched != null)
                        {
                            belongToStr = $" (Group: {fetched["Name"]})";
                        }
                    }
                    resourceStr = String.Format("[P] {0}{1}", dr["Name"], belongToStr);
                    break;

                case ResourceType.Capability:
                    dr = MPController.FindResourceDataRow(GlobalContext.ResourcesDataSet.Tables["capability"],
                                                          mapKVP.Value);
                    resourceStr = String.Format("[C] {0}", dr["Name"]);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
                this.ListBox_Mappings.Items.Add(String.Format("{0} => {1}", mapKVP.Key, resourceStr));
            }
            // refresh resource list
            this.RefreshLists(true, true, true, true, true);
            // filter ComboBoxs
            foreach (DataRow dataRow in GlobalContext.ResourcesDataSet.Tables["group"].Rows)
            {
                this.ComboBox_Step2_Filter_G.Items.Add($"{dataRow["Name"]}");
            }
            foreach (DataRow dataRow in GlobalContext.ResourcesDataSet.Tables["position"].Rows)
            {
                this.ComboBox_Step2_Filter_P.Items.Add($"{dataRow["Name"]}");
            }
            foreach (DataRow dataRow in GlobalContext.ResourcesDataSet.Tables["capability"].Rows)
            {
                this.ComboBox_Step2_Filter_C.Items.Add($"{dataRow["Name"]}");
            }
            // set finish flag
            this.initFinish = true;
        }
        /// <summary>
        /// Refresh all list in the form.
        /// </summary>
        private void RefreshLists(bool?showHuman, bool?showAgent, bool?showGroup, bool?showPosition, bool?showCapability)
        {
            // Resources
            this.ListBox_Resources.Items.Clear();
            var     counter = 0;
            string  dv1, dv2;
            DataSet ds;

            do
            {
                dv1 = MPController.GetDataVersion();
                ds  = MPController.GetAllResourceInCOrgan();
                dv2 = MPController.GetDataVersion();
                counter++;
            } while (dv1 != dv2);
            if (counter > 100)
            {
                MessageBox.Show("Data version is Error!");
                throw new Exception();
            }
            GlobalContext.ResourcesDataSet = ds;
            var dvItems = dv1.Substring(1, dv1.Length - 2).Split(',');

            Debug.Assert(dvItems.Length == 2);
            GlobalContext.ResourcesDataVersion = dvItems[0];
            GlobalContext.ResourcesCOrganGid   = dvItems[1];
            if (showHuman == true)
            {
                foreach (DataRow row in ds.Tables["human"].Rows)
                {
                    var lb = new Label
                    {
                        Content = String.Format("[H] {0}: {1} {2}", row["PersonId"], row["FirstName"], row["LastName"]),
                        Tag     = row["GlobalId"]
                    };
                    this.ListBox_Resources.Items.Add(lb);
                }
            }
            if (showAgent == true)
            {
                foreach (DataRow row in ds.Tables["agent"].Rows)
                {
                    var lb = new Label
                    {
                        Content = String.Format("[A] {0}", row["Name"]),
                        Tag     = row["GlobalId"],
                        ToolTip = String.Format("{0}, {1}", MPController.ParseAgentType(row["Type"]), row["Location"])
                    };
                    this.ListBox_Resources.Items.Add(lb);
                }
            }
            if (showGroup == true)
            {
                foreach (DataRow row in ds.Tables["group"].Rows)
                {
                    var lb = new Label
                    {
                        Content = String.Format("[G] {0} ({1})", row["Name"], MPController.ParseGroupType(row["GroupType"])),
                        Tag     = row["GlobalId"]
                    };
                    this.ListBox_Resources.Items.Add(lb);
                }
            }
            if (showPosition == true)
            {
                foreach (DataRow row in ds.Tables["position"].Rows)
                {
                    var belongTo    = row["BelongToGroup"] as string;
                    var belongToStr = "";
                    if (belongTo != null)
                    {
                        var fetched = ds.Tables["group"].Rows.Cast <DataRow>()
                                      .FirstOrDefault(groupRow => groupRow["GlobalId"] as string == belongTo);
                        if (fetched != null)
                        {
                            belongToStr = $" (Group: {fetched["Name"]})";
                        }
                    }
                    var lb = new Label
                    {
                        Content = String.Format("[P] {0}{1}", row["Name"], belongToStr),
                        Tag     = row["GlobalId"]
                    };
                    this.ListBox_Resources.Items.Add(lb);
                }
            }
            if (showCapability == true)
            {
                foreach (DataRow row in ds.Tables["capability"].Rows)
                {
                    var lb = new Label
                    {
                        Content = String.Format("[C] {0}", row["Name"]),
                        Tag     = row["GlobalId"]
                    };
                    this.ListBox_Resources.Items.Add(lb);
                }
            }
        }