예제 #1
0
        /// <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);
        }
예제 #2
0
 /// <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);
         }
     }
 }
예제 #3
0
 /// <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);
 }