/// <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> 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); }
/// <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; // 削除日 } }
/// <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>(); }
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); }
/// <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); }
/// <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); }
/// <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; } }
/// <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); }
/// <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 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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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; }