/// <summary>人員配置のロード /// </summary> public void LoadRequirePatterns(XmlElement element, CTimeTable all) { XmlElement pNode = element.FirstChild as XmlElement; while (pNode != null) { if (pNode.Name == "require") { CRequirePatterns require = all.Requires.CreateRequirePatterns(); LoadTmElement(pNode, require); require.Name = pNode.GetAttribute("name"); // 利用できるシフト XmlElement tNode = pNode.FirstChild as XmlElement; while (tNode != null) { if (tNode.Name == "pattern") { // int patternid = int.Parse(tNode.GetAttribute("patternid")); int requirenum = int.Parse(tNode.GetAttribute("requirenums")); CPattern pattern = all.Patterns.GetByID(patternid); require.SetRequire(pattern, requirenum); } // tNode = tNode.NextSibling as XmlElement; } // all.Requires.AddRequirePatterns(require); } // pNode = pNode.NextSibling as XmlElement; } //all.Requires.AddRequirePatterns(RequirePatterns.NOWORK); }
/// <summary>勤務シフトの削除 /// </summary> /// <param name="pattern">削除するシフト</param> public virtual void DelPattern(CPattern pattern) { pattern.SetAvailable(false); if (pattern.Removed != null) { availables.Remove(pattern); // 人員配置から削除 CRequirePatternsCollection requires = parent.Requires; for (int i = 0; i < requires.Size(true); i++) { CRequirePatterns require = requires[i, true]; require.SetRequire(pattern, 0); } // メンバーから削除 CMemberCollection members = parent.Members; for (int i = 0; i < members.Size(true); i++) { CMember member = members[i, true]; member.RemovePattern(pattern); } // イベント発生 if (TimeTable != null) { TimeTable.NotifyPatternsEdited(EnumTimeTableElementEventTypes.ElementRemoved, pattern); } } }
/// <summary>人員配置のインポート /// </summary> /// <param name="requires">インポートする人員配置</param> /// <returns>成功:追加したエレメント/不成功:null</returns> private CRequirePatterns ImportRequires(CRequirePatterns requires) { #region 重複チェック CRequirePatternsCollection col = Target.Requires; if (col.GetByName(requires.Name) != null) { return(null); } if (col.Size() >= FMainForm.MaxItemCount) { return(null); } #endregion #region インポート CRequirePatterns newrequires = col.CreateRequirePatterns(true); newrequires.Name = requires.Name; for (int i = 0; i < Source.Patterns.Size(true); i++) { CPattern pattern = Source.Patterns[i, true]; int needs = requires.GetRequire(pattern); if (!pattern.BuiltIn && (pattern.Removed == null || needs > 0)) { CPattern newpattern = Target.Patterns.GetByName(pattern.Name); if (newpattern == null) { newpattern = ImportPattern(pattern); } newrequires.SetRequire(newpattern, needs); } } newrequires.Notes = requires.Notes + "\nインポートされました。"; foreach (string key in requires.properties.AllKeys) { newrequires[key] = requires[key]; } #endregion col.AddRequirePatterns(newrequires); // 終端 return(newrequires); }