Beispiel #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);
        }
Beispiel #2
0
        /// <summary>人員配置のセーブ
        /// </summary>
        public XmlElement SaveRequirePatterns(XmlDocument doc, CTimeTable all)
        {
            XmlElement element = doc.CreateElement("requires");

            SaveTmElement(doc, element, all.Requires);
            for (int i = 0; i < all.Requires.Size(true); i++)
            {
                CRequirePatterns require = all.Requires[i, true];
                if (!require.BuiltIn)
                {
                    XmlElement pNode = doc.CreateElement("require");
                    SaveTmElement(doc, pNode, require);
                    pNode.SetAttribute("name", require.Name);
                    // シフトごとの人数
                    for (int j = 0; j < require.Size(); j++)
                    {
                        CPattern pattern = require.GetPattern(j);
                        int      needs   = require.GetRequire(pattern);
                        if (needs > 0)
                        {
                            XmlElement nNode = doc.CreateElement("pattern");
                            nNode.SetAttribute("patternid", pattern.ObjectID.ToString());
                            nNode.SetAttribute("requirenums", needs.ToString());
                            pNode.AppendChild(nNode);
                        }
                    }
                    // エレメントを追加
                    element.AppendChild(pNode);
                }
            }
            return(element);
        }
Beispiel #3
0
        /// <summary>人員配置からコントロールに値をセットする
        /// </summary>
        private void RequirePatterns2Components()
        {
            this.TxtRequireName.Text = this.require.Name;               // 名前
            // 人員配置の展開
            CTimeTable table = this.require.TimeTable;

            for (int i = 0; i < table.Patterns.Size(true); i++)
            {
                CPattern pattern = table.Patterns[i, true];
                int      needs   = this.require.GetRequire(pattern);
                if (!pattern.BuiltIn && (pattern.Removed == null || needs > 0))
                {
                    DataRow row = this.TblRequires.NewRow();
                    row["ClmPattern"]     = pattern;
                    row["ClmPatternName"] = pattern.Name;
                    row["ClmRequireNum"]  = needs;
                    this.TblRequires.Rows.Add(row);
                }
            }
            this.ResetTotalCount();
            this.txtNote.Text     = this.require.Notes;   // メモ
            this.txtCreated.Value = this.require.Created; // 作成日
            if (this.require.Removed != null && this.require.Removed > this.txtRemoved.MinDate)
            {
                this.txtRemoved.Value = (DateTime)this.require.Removed; // 削除日
            }
        }
Beispiel #4
0
 /// <summary>メンバーコレクション
 /// </summary>
 /// <param name="parent">スケジュール</param>
 public CMemberCollection(CTimeTable parent)
     : base()
 {
     this.parent = parent;
     members     = new List <CMember>();
     availables  = new List <CMember>();
     priorities  = new List <CMember>();
 }
 /// <summary>コンストラクタ
 /// </summary>
 /// <param name="parent"></param>
 public CDayOffCollection(CTimeTable parent)
 {
     //
     // TODO: コンストラクタ ロジックをここに追加してください。
     //
     root    = parent;
     DayOffs = new List <CDayOff>();
 }
Beispiel #6
0
 private List <CPattern> patterns;        // = new Vector();
 /// <summary>勤務シフトコレクションの作成
 /// </summary>
 public CPatternCollection(CTimeTable parent) : base()
 {
     this.parent = parent;
     availables  = new List <CPattern>();
     patterns    = new List <CPattern>();
     // ビルトインの追加
     AddPattern(CPattern.NULL);
     AddPattern(CPattern.DAYOFF);
     //AddPattern(Pattern.Multi);
 }
Beispiel #7
0
        /// <summary>日付のロード
        /// </summary>
        public void LoadScheduledDate(XmlElement element, CTimeTable all)
        {
            DateTime       date          = DateTime.Parse(element.GetAttribute("date"));
            CScheduledDate scheduleddate = all.Dates.CreateScheduledDate(date);

            if (date.Year == 2007 && date.Month == 4 && date.Day == 28)
            {
                System.Console.WriteLine("ここだ!");
            }
            LoadTmElement(element, scheduleddate);
            XmlAttribute req = element.Attributes["require"];

            // 人員配置
            if (req != null)
            {
                int wid = int.Parse(req.Value);
                CRequirePatterns reqobj = all.Requires.GetByID(wid);
                scheduleddate.Require = reqobj;
            }
            else
            {
                scheduleddate.Require = CRequirePatterns.NULL;
            }
            XmlElement pNode = element.FirstChild as XmlElement;

            while (pNode != null)
            {
                if (pNode.Name == "schedule")
                {
                    // スケジュール
                    CSchedule schedule = scheduleddate.CreateSchedule();
                    LoadTmElement(pNode, schedule);
                    string membertxt = pNode.GetAttribute("member");
                    if (membertxt.Trim().Length > 0)
                    {
                        int memberid = int.Parse(membertxt);
                        if (memberid > 0)
                        {
                            schedule.Member = all.Members.GetByID(memberid);
                        }
                    }
                    string patterntxt = pNode.GetAttribute("pattern");
                    if (patterntxt.Trim().Length > 0)
                    {
                        int patternid = int.Parse(patterntxt);
                        schedule.Pattern = all.Patterns.GetByID(patternid);
                    }
                    scheduleddate.SetSchedule(schedule);
                }
                //
                pNode = pNode.NextSibling as XmlElement;
            }
            all.Dates.AddScheduleDate(scheduleddate);
        }
Beispiel #8
0
        /// <summary>休日のセーブ
        /// </summary>
        public XmlElement SaveDayOffs(XmlDocument doc, CTimeTable all)
        {
            XmlElement element = doc.CreateElement("dayoffs");

            SaveTmElement(doc, element, all.DayOffs);
            for (int i = 0; i < all.DayOffs.Size(); i++)
            {
                CDayOff    dayoff = all.DayOffs[i];
                XmlElement pNode  = doc.CreateElement("dayoff");
                SaveTmElement(doc, pNode, dayoff);
                pNode.SetAttribute("name", dayoff.Name);
                pNode.SetAttribute("start", dayoff.StartDate.ToString(CSaver.DATEFORMAT));
                pNode.SetAttribute("end", dayoff.EndDate.ToString(CSaver.DATEFORMAT));
                element.AppendChild(pNode);
            }
            return(element);
        }
Beispiel #9
0
        /// <summary>休日のロード
        /// </summary>
        public void LoadDayOffs(XmlElement element, CTimeTable all)
        {
            XmlElement pNode = element.FirstChild as XmlElement;

            while (pNode != null)
            {
                if (pNode.Name == "dayoff")
                {
                    // 休日
                    CDayOff dayoff = all.DayOffs.CreateDayOff();
                    LoadTmElement(pNode, dayoff);
                    dayoff.Name      = pNode.GetAttribute("name");
                    dayoff.StartDate = DateTime.Parse(pNode.GetAttribute("start"));
                    dayoff.EndDate   = DateTime.Parse(pNode.GetAttribute("end"));
                    all.DayOffs.AddDayOff(dayoff);
                }
                //
                pNode = pNode.NextSibling as XmlElement;
            }
        }
Beispiel #10
0
        /// <summary>メンバーのセーブ
        /// </summary>
        public XmlElement SaveMembers(XmlDocument doc, CTimeTable all)
        {
            XmlElement element = doc.CreateElement("members");

            SaveTmElement(doc, element, all.Members);
            for (int i = 0; i < all.Members.Size(true); i++)
            {
                CMember    member = all.Members[i, true];
                XmlElement pNode  = doc.CreateElement("member");
                SaveTmElement(doc, pNode, member);
                pNode.SetAttribute("name", member.Name);
                pNode.SetAttribute("chief", member.IsChief.ToString());
                pNode.SetAttribute("expectedwork", member.ExpectedWork.ToString());
                pNode.SetAttribute("expectedrest", member.ExpectedRest.ToString());
                pNode.SetAttribute("priority", member.Priority.ToString());
                //
                for (int j = 0; j < member.PatternSize; j++)
                {
                    CPattern   pattern = member[j];
                    XmlElement nNode   = doc.CreateElement("pattern");
                    nNode.SetAttribute("id", pattern.ObjectID.ToString());
                    pNode.AppendChild(nNode);
                }
                #region 稼働日
                pNode.SetAttribute("avl-monday", member.IsAvailableDay(CTimeTable.tMonday).ToString());
                pNode.SetAttribute("avl-tuesday", member.IsAvailableDay(CTimeTable.tTuesday).ToString());
                pNode.SetAttribute("avl-wednesday", member.IsAvailableDay(CTimeTable.tWednesday).ToString());
                pNode.SetAttribute("avl-thursday", member.IsAvailableDay(CTimeTable.tThursday).ToString());
                pNode.SetAttribute("avl-friday", member.IsAvailableDay(CTimeTable.tFriday).ToString());
                pNode.SetAttribute("avl-saturday", member.IsAvailableDay(CTimeTable.tSaturday).ToString());
                pNode.SetAttribute("avl-sunday", member.IsAvailableDay(CTimeTable.tSunday).ToString());
                #endregion
                #region 連続稼働日数と空白時間
                pNode.SetAttribute("continuas", member.Continuas.ToString());
                pNode.SetAttribute("spacetime", member.Spacetime.ToString());
                #endregion
                //
                element.AppendChild(pNode);
            }
            return(element);
        }
Beispiel #11
0
 /// <summary>日付のセーブ
 /// </summary>
 public void SaveScheduledDate(XmlDocument doc, XmlElement rNode, CTimeTable all)
 {
     for (int i = 0; i < all.Size(); i++)
     {
         bool           edited = false;
         CScheduledDate sdate  = all[i];
         XmlElement     pNode  = doc.CreateElement("scheduleddate");
         SaveTmElement(doc, pNode, sdate);
         // 日付がもっとも大事?
         pNode.SetAttribute("date", sdate.Date.ToString(CSaver.DATEFORMAT));
         // 人員配置
         if (sdate.Require != null && sdate.Require != CRequirePatterns.NULL)
         {
             pNode.SetAttribute("require", sdate.Require.ObjectID.ToString());
             if (sdate.Require != all.GetDefaultRequire(sdate.Date.DayOfWeek))
             {
                 edited = true;
             }
         }
         // メンバーごとのスケジュール(シフトとメモ)
         for (int j = 0; j < sdate.ValidMemberSize; j++)
         {
             CSchedule  schedule = sdate[j];
             XmlElement nNode    = doc.CreateElement("schedule");
             SaveTmElement(doc, nNode, schedule);
             if ((schedule.Member != null && schedule.Member != CMember.NULL && schedule.Pattern != null && schedule.Pattern != CPattern.NULL) || (schedule.Notes.Trim() != ""))
             {
                 nNode.SetAttribute("member", schedule.Member.ObjectID.ToString());
                 nNode.SetAttribute("pattern", schedule.Pattern.ObjectID.ToString());
                 edited = true;
                 pNode.AppendChild(nNode);
             }
         }
         if (edited)
         {
             // 変更されている場合のみ
             rNode.AppendChild(pNode);
         }
     }
 }
Beispiel #12
0
        /// <summary>勤務シフトのセーブ
        /// </summary>
        public XmlElement SavePatterns(XmlDocument doc, CTimeTable all)
        {
            XmlElement element = doc.CreateElement("patterns");

            SaveTmElement(doc, element, all.Patterns);
            for (int i = 0; i < all.Patterns.Size(true); i++)
            {
                CPattern pattern = all.Patterns[i, true];
                if (!pattern.BuiltIn)
                {
                    XmlElement pNode = doc.CreateElement("pattern");
                    SaveTmElement(doc, pNode, pattern);
                    pNode.SetAttribute("name", pattern.Name);
                    pNode.SetAttribute("start", pattern.Start.ToString());
                    pNode.SetAttribute("end", pattern.End.ToString());
                    pNode.SetAttribute("scope", pattern.Scope.ToString());
                    pNode.SetAttribute("rest", pattern.Rest.ToString());
                    element.AppendChild(pNode);
                }
            }
            return(element);
        }
Beispiel #13
0
        /// <summary>勤務シフトのロード
        /// </summary>
        public void LoadPatterns(XmlElement element, CTimeTable all)
        {
            XmlElement pNode = element.FirstChild as XmlElement;

            while (pNode != null)
            {
                if (pNode.Name == "pattern")
                {
                    // シフト
                    CPattern pattern = all.Patterns.CreatePattern();
                    LoadTmElement(pNode, pattern);
                    pattern.Name = pNode.GetAttribute("name");
                    TimeSpan work1, work4, work5;
                    pattern.Start = (TimeSpan.TryParse(pNode.GetAttribute("start"), out work1) ? work1 : TimeSpan.Zero);
                    pattern.Scope = (TimeSpan.TryParse(pNode.GetAttribute("scope"), out work4) ? work4 : TimeSpan.Zero);
                    pattern.Rest  = (TimeSpan.TryParse(pNode.GetAttribute("rest"), out work5) ? work5 : TimeSpan.Zero);
                    all.Patterns.AddPattern(pattern);
                }
                //
                pNode = pNode.NextSibling as XmlElement;
            }
            //all.Patterns.AddPattern(Pattern.DayOff);
        }
Beispiel #14
0
        /// <summary>
        /// タイムテーブルにフォントをセットする
        /// </summary>
        /// <param name="timetable">タイムテーブル</param>
        /// <param name="key">キー</param>
        /// <param name="font">値</param>
        public static void SetFont(CTimeTable timetable, string key, Font font)
        {
            if (font != null)
            {
                timetable[key + POSTFIX_FONTNAME] = font.Name;
                timetable[key + POSTFIX_FONTSIZE] = font.Size.ToString();
                switch (font.Style)
                {
                case FontStyle.Bold:
                    timetable[key + POSTFIX_FONTSTYLE] = STYLE_BOLD;
                    break;

                case FontStyle.Italic:
                    timetable[key + POSTFIX_FONTSTYLE] = STYLE_ITALIC;
                    break;

                case FontStyle.Regular:
                    timetable[key + POSTFIX_FONTSTYLE] = STYLE_REGULAR;
                    break;

                case FontStyle.Strikeout:
                    timetable[key + POSTFIX_FONTSTYLE] = STYLE_STRICKEOUT;
                    break;

                case FontStyle.Underline:
                    timetable[key + POSTFIX_FONTSTYLE] = STYLE_UNDERLINE;
                    break;
                }
            }
            else
            {
                timetable[key + POSTFIX_FONTNAME]  = null;
                timetable[key + POSTFIX_FONTSIZE]  = null;
                timetable[key + POSTFIX_FONTSTYLE] = null;
            }
        }
 /// <summary>XMLノードよりスケジュール化された日付のコレクションを作成する</summary>
 public CScheduledDateCollection(CTimeTable parent)
 {
     InitBlock();
     timeTable = parent;
     timeTable.OnMembersEdited += new CTimeTable.MembersEditedEventHandler(timeTable_OnMembersEdited);
 }
Beispiel #16
0
        /// <summary>セーブメイン
        /// </summary>
        public void Save(string file, CTimeTable ret)
        {
            XmlDocument    doc         = new XmlDocument();
            XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0", "", "yes");

            doc.InsertBefore(declaration, doc.DocumentElement);
            XmlElement rNode = doc.CreateElement("scheduleall");

            doc.AppendChild(rNode);
            // シフト
            rNode.AppendChild(SavePatterns(doc, ret));
            // メンバー
            rNode.AppendChild(SaveMembers(doc, ret));
            // 人員配置
            rNode.AppendChild(SaveRequirePatterns(doc, ret));
            // 休日
            rNode.AppendChild(SaveDayOffs(doc, ret));
            #region 営業開始時間
            XmlElement startNode = doc.CreateElement("starttime");
            startNode.InnerText = ret.StartTime.ToString();
            rNode.AppendChild(startNode);
            #endregion
            #region 営業終了時間
            XmlElement endNode = doc.CreateElement("endtime");
            endNode.InnerText = ret.EndTime.ToString();
            rNode.AppendChild(endNode);
            #endregion
            #region 営業時間
            XmlElement aroundNode = doc.CreateElement("around");
            aroundNode.InnerText = ret.Around.ToString();
            rNode.AppendChild(aroundNode);
            #endregion
            #region デフォルトの人員配置
            if (ret.DefaultRequire != null && ret.DefaultRequire != CRequirePatterns.NULL)
            {
                XmlElement defaultNode = doc.CreateElement("default_require");
                defaultNode.InnerText = ret.DefaultRequire.ObjectID.ToString();
                rNode.AppendChild(defaultNode);
            }
            #endregion
            #region デフォルトの人員配置(曜日ごと)
            CRequirePatterns work = null;
            work = ret.GetDefaultRequire(System.DayOfWeek.Monday);
            if (work != null && work != CRequirePatterns.NULL)
            {
                XmlElement defaultNode = doc.CreateElement("defaultRequireweekday");
                defaultNode.SetAttribute("weekday", "0");
                defaultNode.SetAttribute("require", work.ObjectID.ToString());
                rNode.AppendChild(defaultNode);
            }
            work = ret.GetDefaultRequire(System.DayOfWeek.Tuesday);
            if (work != null && work != CRequirePatterns.NULL)
            {
                XmlElement defaultNode = doc.CreateElement("defaultRequireweekday");
                defaultNode.SetAttribute("weekday", "1");
                defaultNode.SetAttribute("require", work.ObjectID.ToString());
                rNode.AppendChild(defaultNode);
            }
            work = ret.GetDefaultRequire(System.DayOfWeek.Wednesday);
            if (work != null && work != CRequirePatterns.NULL)
            {
                XmlElement defaultNode = doc.CreateElement("defaultRequireweekday");
                defaultNode.SetAttribute("weekday", "2");
                defaultNode.SetAttribute("require", work.ObjectID.ToString());
                rNode.AppendChild(defaultNode);
            }
            work = ret.GetDefaultRequire(System.DayOfWeek.Thursday);
            if (work != null && work != CRequirePatterns.NULL)
            {
                XmlElement defaultNode = doc.CreateElement("defaultRequireweekday");
                defaultNode.SetAttribute("weekday", "3");
                defaultNode.SetAttribute("require", work.ObjectID.ToString());
                rNode.AppendChild(defaultNode);
            }
            work = ret.GetDefaultRequire(System.DayOfWeek.Friday);
            if (work != null && work != CRequirePatterns.NULL)
            {
                XmlElement defaultNode = doc.CreateElement("defaultRequireweekday");
                defaultNode.SetAttribute("weekday", "4");
                defaultNode.SetAttribute("require", work.ObjectID.ToString());
                rNode.AppendChild(defaultNode);
            }
            work = ret.GetDefaultRequire(System.DayOfWeek.Saturday);
            if (work != null && work != CRequirePatterns.NULL)
            {
                XmlElement defaultNode = doc.CreateElement("defaultRequireweekday");
                defaultNode.SetAttribute("weekday", "5");
                defaultNode.SetAttribute("require", work.ObjectID.ToString());
                rNode.AppendChild(defaultNode);
            }
            work = ret.GetDefaultRequire(System.DayOfWeek.Sunday);
            if (work != null && work != CRequirePatterns.NULL)
            {
                XmlElement defaultNode = doc.CreateElement("defaultRequireweekday");
                defaultNode.SetAttribute("weekday", "6");
                defaultNode.SetAttribute("require", work.ObjectID.ToString());
                rNode.AppendChild(defaultNode);
            }
            #endregion
            #region 順番
            XmlElement seqNode = doc.CreateElement("sequence");
            seqNode.InnerText = ret.CurrentID.ToString();
            rNode.AppendChild(seqNode);
            #endregion
            #region 直下のプロパティ
            foreach (string key in ret)
            {
                XmlElement propelement = doc.CreateElement("property");
                propelement.SetAttribute("key", key);
                propelement.InnerText = ret[key];
                rNode.AppendChild(propelement);
            }
            #endregion
            // 日付
            SaveScheduledDate(doc, rNode, ret);
            ///////////////
            doc.Save(file);
        }
Beispiel #17
0
        /// <summary>タイムテーブルに登録されたフォントの取得
        /// </summary>
        /// <param name="timetable">タイムテーブル</param>
        /// <param name="key">キー</param>
        /// <returns></returns>
        public static Font GetFont(CTimeTable timetable, string key)
        {
            Font      font        = System.Windows.Forms.Control.DefaultFont;
            string    stfontname  = timetable[key + POSTFIX_FONTNAME];
            string    stfontsize  = timetable[key + POSTFIX_FONTSIZE];
            float     fontsize    = font.Size;
            string    stfontstyle = timetable[key + POSTFIX_FONTSTYLE];
            FontStyle fontstyle   = font.Style;

            // フォントファミリー
            if (stfontname == null)
            {
                return(font);
            }
            else if (stfontname.Trim().Length == 0)
            {
                // デフォルト
                return(font);
            }
            // フォントサイズ
            if (stfontsize != null)
            {
                if (!(float.TryParse(stfontsize, out fontsize)))
                {
                    fontsize = font.Size;
                }
            }
            // フォントスタイル
            if (stfontstyle != null)
            {
                switch (stfontstyle)
                {
                case STYLE_BOLD:
                    fontstyle = FontStyle.Bold;
                    break;

                case STYLE_ITALIC:
                    fontstyle = FontStyle.Italic;
                    break;

                case STYLE_REGULAR:
                    fontstyle = FontStyle.Regular;
                    break;

                case STYLE_STRICKEOUT:
                    fontstyle = FontStyle.Strikeout;
                    break;

                case STYLE_UNDERLINE:
                    fontstyle = FontStyle.Underline;
                    break;

                default:
                    fontstyle = font.Style;
                    break;
                }
            }
            // 戻り値のセット
            Font ret = font;

            try {
                ret = new Font(stfontname, fontsize, fontstyle);
            } catch {
                ret = font;
            }
            return(ret);
        }
Beispiel #18
0
        /// <summary>ロードメイン
        /// </summary>
        public CTimeTable Load(string file)
        {
            CTimeTable ret = new CTimeTable();

            ret.ScheduleEditedEvnetIsValid = false;
            XmlDocument doc = new XmlDocument();

            doc.Load(file);
            XmlElement rNode = doc.DocumentElement;
            XmlElement cNode = rNode.FirstChild as XmlElement;

            while (cNode != null)
            {
                if (cNode.Name == "patterns")
                {
                    // シフト
                    LoadPatterns(cNode, ret);
                }
                else if (cNode.Name == "members")
                {
                    // メンバー
                    LoadMembers(cNode, ret);
                }
                else if (cNode.Name == "requires")
                {
                    // 人員配置
                    LoadRequirePatterns(cNode, ret);
                }
                else if (cNode.Name == "dayoffs")
                {
                    // 休日
                    LoadDayOffs(cNode, ret);
                }
                else if (cNode.Name == "scheduleddate")
                {
                    // 日付
                    LoadScheduledDate(cNode, ret);
                }
                else if (cNode.Name == "starttime")
                {
                    // 営業開始時間
                    string text = cNode.InnerText;
                    ret.StartTime = TimeSpan.Parse(text);
                }
                else if (cNode.Name == "endtime")
                {
                    // 営業終了時間
                    if (ret.Around == TimeSpan.Zero)
                    {
                        string text = cNode.InnerText;
                        ret.EndTime = TimeSpan.Parse(text);
                    }
                }
                else if (cNode.Name == "around")
                {
                    // 営業時間
                    string text = cNode.InnerText;
                    ret.Around = TimeSpan.Parse(text);
                }
                else if (cNode.Name == "default_require")
                {
                    // デフォルトの人員配置
                    string text      = cNode.InnerText;
                    int    requireid = int.Parse(text);
                    if (requireid > 0)
                    {
                        CRequirePatterns require = ret.Requires.GetByID(requireid);
                        if (require != null)
                        {
                            ret.DefaultRequire = require;
                        }
                    }
                }
                else if (cNode.Name == "defaultRequireweekday")
                {
                    // デフォルトの人員配置(曜日ごと)
                    string text1 = cNode.GetAttribute("weekday");
                    string text2 = cNode.GetAttribute("require");
                    try {
                        int weekdayid, requireid;
                        int.TryParse(text1, out weekdayid);
                        int.TryParse(text2, out requireid);
                        //= (int.TryParse(text1,) ? int.Parse(text1) : 0);
                        //int requireid = int.Parse(text2);
                        if (weekdayid >= 0)
                        {
                            CRequirePatterns require = ret.Requires.GetByID(requireid);
                            if (require != null)
                            {
                                ret.SetDefaultRequire(weekdayid, require);
                            }
                        }
                    } catch {
                    }
                }
                else if (cNode.Name == "sequence")
                {
                    // 順番
                    string text = cNode.InnerText;
                    int    seq  = int.Parse(text);
                    ret.CurrentID = seq;
                }
                else if (cNode.Name == "property")
                {
                    //ret[cNode.GetAttribute("key")] = cNode.GetAttribute("value");
                    ret[cNode.GetAttribute("key")] = cNode.InnerText;
                }
                //
                cNode = cNode.NextSibling as XmlElement;
            }
            ret.ScheduleEditedEvnetIsValid = true;
            return(ret);
        }
Beispiel #19
0
        /// <summary>メンバーのロード
        /// </summary>
        public void LoadMembers(XmlElement element, CTimeTable all)
        {
            XmlElement pNode = element.FirstChild as XmlElement;

            while (pNode != null)
            {
                if (pNode.Name == "member")
                {
                    // メンバー
                    CMember member = all.Members.CreateMember();
                    LoadTmElement(pNode, member);
                    member.Name = pNode.GetAttribute("name");
                    #region チーフですか?
                    string sChief = pNode.GetAttribute("chief");
                    if (sChief != null)
                    {
                        bool bChief;
                        if (bool.TryParse(sChief, out bChief))
                        {
                            member.IsChief = bChief;
                        }
                    }
                    #endregion
                    #region 期待される作業時間
                    TimeSpan eWork = member.ExpectedWork;
                    if (TimeSpan.TryParse(pNode.GetAttribute("expectedwork"), out eWork))
                    {
                        member.ExpectedWork = eWork;
                    }
                    #endregion
                    member.ExpectedRest = double.Parse(pNode.GetAttribute("expectedrest"));
                    member.Priority     = int.Parse(pNode.GetAttribute("priority"));
                    #region 利用できるシフト
                    XmlElement tNode = pNode.FirstChild as XmlElement;
                    while (tNode != null)
                    {
                        if (tNode.Name == "pattern")
                        {
                            int patid = int.Parse(tNode.GetAttribute("id"));
                            member.AddPattern(all.Patterns.GetByID(patid));
                        }
                        //
                        tNode = tNode.NextSibling as XmlElement;
                    }
                    #endregion
                    #region 稼働日
                    bool bWork = true;
                    if (bool.TryParse(pNode.GetAttribute("avl-monday"), out bWork))
                    {
                        member.SetAvailableDay(CTimeTable.tMonday, bWork);
                    }
                    else
                    {
                        member.SetAvailableDay(CTimeTable.tMonday, true);
                    }
                    if (bool.TryParse(pNode.GetAttribute("avl-tuesday"), out bWork))
                    {
                        member.SetAvailableDay(CTimeTable.tTuesday, bWork);
                    }
                    else
                    {
                        member.SetAvailableDay(CTimeTable.tTuesday, true);
                    }
                    if (bool.TryParse(pNode.GetAttribute("avl-wednesday"), out bWork))
                    {
                        member.SetAvailableDay(CTimeTable.tWednesday, bWork);
                    }
                    else
                    {
                        member.SetAvailableDay(CTimeTable.tWednesday, true);
                    }
                    if (bool.TryParse(pNode.GetAttribute("avl-thursday"), out bWork))
                    {
                        member.SetAvailableDay(CTimeTable.tThursday, bWork);
                    }
                    else
                    {
                        member.SetAvailableDay(CTimeTable.tThursday, true);
                    }
                    if (bool.TryParse(pNode.GetAttribute("avl-friday"), out bWork))
                    {
                        member.SetAvailableDay(CTimeTable.tFriday, bWork);
                    }
                    else
                    {
                        member.SetAvailableDay(CTimeTable.tFriday, true);
                    }
                    if (bool.TryParse(pNode.GetAttribute("avl-saturday"), out bWork))
                    {
                        member.SetAvailableDay(CTimeTable.tSaturday, bWork);
                    }
                    else
                    {
                        member.SetAvailableDay(CTimeTable.tSaturday, true);
                    }
                    if (bool.TryParse(pNode.GetAttribute("avl-sunday"), out bWork))
                    {
                        member.SetAvailableDay(CTimeTable.tSunday, bWork);
                    }
                    else
                    {
                        member.SetAvailableDay(CTimeTable.tSunday, true);
                    }
                    #endregion
                    #region 稼動間隔
                    TimeSpan stpWork1 = member.Spacetime;
                    if (TimeSpan.TryParse(pNode.GetAttribute("spacetime"), out stpWork1))
                    {
                        member.Spacetime = stpWork1;
                    }
                    #endregion
                    #region 連続稼動
                    TimeSpan stpWork2 = member.Continuas;
                    if (TimeSpan.TryParse(pNode.GetAttribute("continuas"), out stpWork2))
                    {
                        member.Continuas = stpWork2;
                    }
                    #endregion
                    //
                    all.Members.AddMember(member);
                }
                //
                pNode = pNode.NextSibling as XmlElement;
            }
        }
        /// <summary>メンバーからコンポーネントへ
        /// </summary>
        private void Member2Components()
        {
            this.NumPriority.Value  = Member.Priority;                          // 優先度
            this.TxtMemberName.Text = Member.Name;                              // 名前
            try {
                // 期待される作業時間
                this.TxtWorkTime.Value = this.TxtWorkTime.MinDate + Member.ExpectedWork;
            } catch { }
            try {
                // 期待される休憩時間
                this.TxtRest.Text = Member.ExpectedRest.ToString("000.000");
            } catch { }
            this.ChkChief.Checked = Member.IsChief;                             // チーフですか?
            // 作成日
            if (Member.Created > this.txtCreated.MinDate)
            {
                this.txtCreated.Value = Member.Created.Date;
            }
            else
            {
                this.txtCreated.Value = System.DateTime.Today;
            }
            // 削除日
            if (Member.Removed != null)
            {
                this.txtRemoved.Value = (DateTime)Member.Removed;
            }
            else
            {
                this.txtRemoved.Value = this.txtRemoved.MaxDate;
            }
            // シフトの一覧
            this.TblPatterns.Clear();
            CTimeTable         timetable = Member.TimeTable;
            CPatternCollection patterns  = timetable.Patterns;

            for (int i = 0; i < patterns.Size(); i++)
            {
                CPattern pattern = patterns[i];
                if (!pattern.BuiltIn)
                {
                    System.Data.DataRow row = this.TblPatterns.NewRow();
                    row["ClmPattern"]     = pattern;
                    row["ClmPatternName"] = pattern.Name;
                    this.TblPatterns.Rows.Add(row);
                }
            }
            // シフトの選択状況
            this.LstPatterns.ClearSelected();
            for (int i = 0; i < this.TblPatterns.Rows.Count; i++)
            {
                System.Data.DataRow row     = this.TblPatterns.Rows[i];
                CPattern            pattern = row["ClmPattern"] as CPattern;
                if (Member.Contains(pattern))
                {
                    this.LstPatterns.SetItemChecked(i, true);
                }
                else
                {
                    this.LstPatterns.SetItemChecked(i, false);
                }
            }
            // 稼働日
            chkMonday.Checked    = Member.IsAvailableDay(CTimeTable.tMonday);
            chkTuesday.Checked   = Member.IsAvailableDay(CTimeTable.tTuesday);
            chkWednesday.Checked = Member.IsAvailableDay(CTimeTable.tWednesday);
            chkThursday.Checked  = Member.IsAvailableDay(CTimeTable.tThursday);
            chkFriday.Checked    = Member.IsAvailableDay(CTimeTable.tFriday);
            chkSaturday.Checked  = Member.IsAvailableDay(CTimeTable.tSaturday);
            chkSunday.Checked    = Member.IsAvailableDay(CTimeTable.tSunday);
            // めも
            txtNotes.Text = Member.Notes;
            // 稼動間隔
            dtpSpace.Value = dtpSpace.MinDate + Member.Spacetime;
            // 連続稼働日
            numContinuas.Value = Member.ContinuasInt;
        }