/// <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); } } }
/// <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); }