public static List<AssignmentConstraints> PopulateAssignmentConstraintsList(DataSet assignmentConstraintsData)
        {
            List<AssignmentConstraints> lstAssignmentConstraints = new List<AssignmentConstraints>();
            AssignmentConstraints assignmentConstraints = null;
            DataRow[] childRows = null;
            string filterExpression = string.Empty;
            bool areSkillsPresent = false;

            if (assignmentConstraintsData != null)
            {
                if ( assignmentConstraintsData.Tables[0].Rows != null && assignmentConstraintsData.Tables[0].Rows.Count > 0)
                {
                    areSkillsPresent = (assignmentConstraintsData.Tables.Count > 1);

                    for (int i = 0; i < assignmentConstraintsData.Tables[0].Rows.Count; i++)
                    {
                        DataRow drAssignmentConstraint = assignmentConstraintsData.Tables[0].Rows[i];
                        if (drAssignmentConstraint != null)
                        {
                            assignmentConstraints = new AssignmentConstraints();

                            assignmentConstraints.WMSourceID = int.Parse(drAssignmentConstraint["WMSourceID"].ToString());
                            assignmentConstraints.Instance = int.Parse(drAssignmentConstraint["InstanceNumber"].ToString());
                            assignmentConstraints.StartTime = drAssignmentConstraint["StartTime"] != DBNull.Value ? DateTime.Parse(drAssignmentConstraint["StartTime"].ToString()) : DateTime.MinValue;
                            assignmentConstraints.EndTime = drAssignmentConstraint["EndTime"] != DBNull.Value ? DateTime.Parse(drAssignmentConstraint["EndTime"].ToString()) : DateTime.MinValue;
                            assignmentConstraints.SpecificStartTime = drAssignmentConstraint["SpecificStartTime"] != DBNull.Value ? DateTime.Parse(drAssignmentConstraint["SpecificStartTime"].ToString()) : DateTime.MinValue;
                            assignmentConstraints.MustBeCompletedByTime = drAssignmentConstraint["MustBeCompletedByTime"] != DBNull.Value ? DateTime.Parse(drAssignmentConstraint["MustBeCompletedByTime"].ToString()) : DateTime.MinValue;
                            assignmentConstraints.Duration = int.Parse(drAssignmentConstraint["Duration"].ToString());
                            //Set Time Window to "None" if nothing is returned from the DB here
                            assignmentConstraints.TimeWindow = drAssignmentConstraint["TimeWindow"] != DBNull.Value ? (eTimeWindow)Enum.Parse(typeof(eTimeWindow), drAssignmentConstraint["TimeWindow"].ToString()) : eTimeWindow.None;
                            assignmentConstraints.IsUserSetStartDate = bool.Parse(drAssignmentConstraint["StartTime_IsUserSet"].ToString());

                            lstAssignmentConstraints.Add(assignmentConstraints);
                        }
                        if (areSkillsPresent)
                        {
                            filterExpression = string.Format("WMSourceID={0}", assignmentConstraints.WMSourceID);
                            childRows = assignmentConstraintsData.Tables[1].Select(filterExpression);
                            // Skills
                            if (childRows != null && childRows.Length > 0)
                            {
                                assignmentConstraints.Skills = new SkillCollection();
                                for (int index = 0; index < childRows.Length; index++)
                                {
                                    assignmentConstraints.Skills.Add(new Skill());
                                    assignmentConstraints.Skills[index].Code = childRows[index]["SkillCode"].ToString();
                                    assignmentConstraints.Skills[index].Description = childRows[index]["SkillDesc"].ToString();
                                    // assignmentConstraints.Skills[index].SourceSystems = childRows[index]["SourceSystems"].ToString();
                                }
                            }
                        }
                    }
                }
            }
            return lstAssignmentConstraints;
        }
        public static AssignmentConstraints PopulateAssignmentConstraints(DataTable assignmentConstraintsData, DataTable assignmentSkillsData)
        {
            //[WMSourceID],
            //[InstanceNumber],
            //[AssignmentConstraintID],
            //[TimeWindow],
            //[Duration],
            //[StartTime],
            //[EndTime],
            //[SpecificStartTime],
            //[MustBeCompletedByTime]
            //[StartTime_IsUserSet]
            //[StartTime_IsUserSet]
            //[SkillCodes]

            AssignmentConstraints assignmentConstraints = new AssignmentConstraints();

            if (assignmentConstraintsData.Rows != null && assignmentConstraintsData.Rows.Count > 0)
            {
                DataRow drAssignmentConstraint = assignmentConstraintsData.Rows[0];
                if (drAssignmentConstraint != null)
                {
                    assignmentConstraints = new AssignmentConstraints();
                    assignmentConstraints.WMSourceID = int.Parse(drAssignmentConstraint["WMSourceID"].ToString());
                    assignmentConstraints.Instance = int.Parse(drAssignmentConstraint["InstanceNumber"].ToString());
                    assignmentConstraints.StartTime = drAssignmentConstraint["StartTime"] != DBNull.Value ? DateTime.Parse(drAssignmentConstraint["StartTime"].ToString()) : DateTime.MinValue;
                    assignmentConstraints.EndTime = drAssignmentConstraint["EndTime"] != DBNull.Value ? DateTime.Parse(drAssignmentConstraint["EndTime"].ToString()) : DateTime.MinValue;
                    assignmentConstraints.SpecificStartTime = drAssignmentConstraint["SpecificStartTime"] != DBNull.Value ? DateTime.Parse(drAssignmentConstraint["SpecificStartTime"].ToString()) : DateTime.MinValue;
                    assignmentConstraints.MustBeCompletedByTime = drAssignmentConstraint["MustBeCompletedByTime"] != DBNull.Value ? DateTime.Parse(drAssignmentConstraint["MustBeCompletedByTime"].ToString()) : DateTime.MinValue;
                    assignmentConstraints.Duration = int.Parse(drAssignmentConstraint["Duration"].ToString());
                    //Set Time Window to "None" if nothing is returned from the DB here
                    assignmentConstraints.TimeWindow = drAssignmentConstraint["TimeWindow"] != DBNull.Value ? (eTimeWindow)Enum.Parse(typeof(eTimeWindow), drAssignmentConstraint["TimeWindow"].ToString()) : eTimeWindow.None;
                    assignmentConstraints.IsUserSetStartDate = bool.Parse(drAssignmentConstraint["StartTime_IsUserSet"].ToString());
                    //Load up Skills data ... if we have any
                    if (assignmentSkillsData != null && assignmentSkillsData.Rows.Count > 0)
                    {
                        assignmentConstraints.Skills = PopulateSkillCollection(assignmentSkillsData);
                    }
                }
            }

            return assignmentConstraints;
        }