/// <summary>メンバーの連続稼動日数が※1の日数を超えていたら警告 /// </summary> private void CheckContinuas() { CSchedule schedule = sdate[_member]; if (schedule == null) { return; } CPattern pattern = schedule.Pattern; if (pattern == null || pattern.BuiltIn) { return; } // 休み設定 int conu = _member.ContinuasInt; if (conu > 0) { int cont = sdate.GetMemberContinues(_member, conu * 2); int rest = conu - cont; if (rest <= 0) { if (cont >= conu * 2) { AddItem(EEvaluationResult.ERROR, GenerateMessage(msg_cont_error, new string[] { _member.Name, (cont + 1).ToString() })); } else { AddItem(EEvaluationResult.WORNING, GenerateMessage(msg_cont_worning, new string[] { _member.Name, (cont + 1).ToString() })); } } } }
/// <summary>値のセット /// </summary> /// <param name="sender">イベントの発生したオブジェクト</param> /// <param name="e">発生したイベント</param> private void BodyTable_CellValuePushed (object sender, DataGridViewCellValueEventArgs e) { CMember member = Members[e.RowIndex]; switch (e.ColumnIndex) { case 0: break; case 1: if (this.TimeTable == null) return; CPattern pattern = e.Value as CPattern; if (pattern == CPattern.MULTI) return; foreach (DateTime date in Dates) { if (date >= DateTime.Today) { CScheduledDate sdate = this.TimeTable[date]; CSchedule sche = sdate[member]; sche.Pattern = pattern; } } SetUpMember2Pattern(member); break; case 2: if (Dates.Count == 1 && StartDate >= DateTime.Today) { string val = e.Value as string; if (val == null) val = ""; if (this.TimeTable != null) { DateTime date = StartDate; CScheduledDate sdate = this.TimeTable[date]; CSchedule sche = sdate[member]; sche.Notes = val; //sche.SetProperty("notes", val); this.timeTable.NotifyScheduleEdited(sche); SetUpMember2Pattern(member); } } break; } }
private void loadData() { SqlDataSource sds = new SqlDataSource(); sds.ConnectionString = connectionString; sds.SelectCommand = "dbo.getSchedules"; sds.SelectCommandType = SqlDataSourceCommandType.StoredProcedure; DataView dv = sds.Select(DataSourceSelectArguments.Empty) as DataView; if (dv.Count > 0) { for (int i = 0; i < dv.Count; i++) { CSchedule schedule = new CSchedule(); schedule.id = (int)dv.Table.Rows[i]["ID_Schedule"]; schedule.user_id = dv.Table.Rows[i]["ID_User"].ToString(); schedule.patient_id = dv.Table.Rows[i]["ID_Patient"].ToString(); schedule.assess_id = (int)dv.Table.Rows[i]["ID_Assess"]; schedule.deadLine = DateTime.Parse(dv.Table.Rows[i]["deadLine"].ToString()); schedule.isFinished = (bool)dv.Table.Rows[i]["isFinished"]; schedule.assess_name = assessFactoryLite.getById(schedule.assess_id).name; schedules.Add(schedule); } } }
/// <summary>メンバーの作業時間の重複(エラー)または※2の時間を満たしていなければ警告 /// </summary> private void CheckSpace() { CSchedule tsche = sdate[_member]; CPattern tpatt = tsche.Pattern; if (!(tpatt == null || tpatt.BuiltIn)) { // 今日のシフトが存在する DateTime today = sdate.Date; DateTime yesterday = today.AddDays(-1).Date; CScheduledDate ydate = Root[yesterday]; CSchedule ysche = ydate[_member]; CPattern ypatt = ysche.Pattern; if (!(ypatt == null || ypatt.BuiltIn)) { // 昨日のシフトが存在する! DateTime yend = yesterday + ypatt.End; DateTime tend = yend + _member.Spacetime; DateTime tstt = today + tpatt.Start; if (yend >= tstt) { AddItem(EEvaluationResult.ERROR, GenerateMessage(msg_space_error, new string[] { _member.Name, tstt.ToString(), yend.ToString() })); } else if (tend > tstt) { AddItem(EEvaluationResult.WORNING, GenerateMessage(msg_space_worning, new string[] { _member.Name, tstt.ToString(), yend.ToString() })); } } } }
/// <summary> /// スケジュール日に設定されたパターンの一覧 /// </summary> /// <returns>パターンのリスト</returns> private List <CPattern> GetDatePatterns() { List <CPattern> ret = new List <CPattern>(); int max = sdate.ValidMemberSize; for (int i = 0; i < max; i++) { CMember member = sdate.GetValidMember(i); CSchedule schedule = sdate[member]; if (schedule != null) { CPattern pattern = schedule.Pattern; if (pattern == null || pattern.BuiltIn) { } else { if (!ret.Contains(pattern)) { ret.Add(pattern); } } } } ret.Sort(new PatternComparer1()); return(ret); }
/// <summary> /// メンバーの連続稼動日数が※1の日数を超えていたら警告 /// </summary> private void CheckContinuas() { CSchedule schedule = sdate[_member]; if (schedule == null) { return; } CPattern pattern = schedule.Pattern; if (pattern == null || pattern.BuiltIn) { return; } // 休み設定 int conu = _member.ContinuasInt; if (conu > 0) { int cont = sdate.GetMemberContinues(_member, conu * 2); int rest = conu - cont; if (rest <= 0) { if (cont >= conu * 2) { AddItem(EvaluationResult.ERROR, _member.Name + "の作業日が" + (cont + 1) + "日以上連続しています。"); } else { AddItem(EvaluationResult.WARNING, _member.Name + "の作業日が" + (cont + 1) + "日連続しています。"); } } } }
/// <summary>勤務シフトの終了を返す /// </summary> /// <param name="date"></param> /// <param name="member"></param> /// <param name="head"></param> /// <returns></returns> private string ReturnPatternEnd(DateTime date, CMember member, bool head) { if (head) { return(member.Name + "のシフト終了"); } CScheduledDate sdate = TimeTable[date]; CSchedule schdule = sdate[member]; if (schdule == null) { return(""); } CPattern pattern = schdule.Pattern; if (pattern == null) { return(""); } if (pattern.BuiltIn) { return(""); } DateTime ret = date.Date + pattern.End; return(ret.ToLongDateString() + " " + ret.ToLongTimeString()); }
/// <summary>勤務シフトの長さを返す /// </summary> /// <param name="date"></param> /// <param name="member"></param> /// <param name="head"></param> /// <returns></returns> private string ReturnPatternLength(DateTime date, CMember member, bool head) { if (head) { return(member.Name + "の勤務時間"); } CScheduledDate sdate = TimeTable[date]; CSchedule schdule = sdate[member]; if (schdule == null) { return(TimeSpan.Zero.ToString()); } CPattern pattern = schdule.Pattern; if (pattern == null) { return(TimeSpan.Zero.ToString()); } if (pattern.BuiltIn) { return(TimeSpan.Zero.ToString()); } return(pattern.Scope.ToString()); }
/// <summary> /// メンバーの作業時間の重複(エラー)または※2の時間を満たしていなければ警告 /// </summary> private void CheckSpace() { CSchedule tsche = sdate[_member]; CPattern tpatt = tsche.Pattern; if (!(tpatt == null || tpatt.BuiltIn)) { // 今日のパターンが存在する DateTime today = sdate.Date; DateTime yesterday = today.AddDays(-1).Date; CScheduledDate ydate = Root[yesterday]; CSchedule ysche = ydate[_member]; CPattern ypatt = ysche.Pattern; if (!(ypatt == null || ypatt.BuiltIn)) { // 昨日のパターンが存在する! DateTime yend = yesterday + ypatt.End; DateTime tend = yend + _member.Spacetime; DateTime tstt = today + tpatt.Start; if (yend >= tstt) { AddItem(EvaluationResult.ERROR, _member.Name + "の作業時間が重複しています。(" + tstt + "~" + yend + ")"); } else if (tend > tstt) { AddItem(EvaluationResult.WARNING, _member.Name + "の作業間隔が不足しています。(" + yend + "~" + tstt + ")"); } } } }
/// <summary>メンバーの就業状態の作成 /// </summary> /// <param name="member"></param> private void SetUpMember2Pattern (CMember member) { PatternWrapper wrapper = new PatternWrapper(); wrapper.Pattern = CPattern.NULL; wrapper.StartTime = TimeSpan.MaxValue; wrapper.EndTime = TimeSpan.MinValue; if ((member == null) || (Dates.Count <= 0) || (TimeTable == null)) { // 存在しない if (member != null && Member2PatternWrapper.ContainsKey(member)) { Member2PatternWrapper.Remove(member); } return; } else { // 繰り返し int i = 0; foreach (DateTime date in Dates) { CScheduledDate sdate = TimeTable[date]; CSchedule schedule = sdate[member]; CPattern work = schedule.Pattern; if (i == 0) { // 最初のシフト wrapper.Pattern = work; if (work != null && !work.BuiltIn) { wrapper.StartTime = work.Start; wrapper.EndTime = work.End; i++; } wrapper.Notes = schedule.Notes; //wrapper.Notes = schedule["notes"]; } else if (wrapper.Pattern != work) { if (schedule.Notes != "") { // メモの追加 wrapper.Notes += "," + schedule.Notes; } // 複数選択されている wrapper.Pattern = CPattern.MULTI; if (work != null && !work.BuiltIn) { if (wrapper.StartTime > work.Start) { wrapper.StartTime = work.Start; } if (wrapper.EndTime < work.End) { wrapper.EndTime = work.End; } } i++; } } // 追加する if (Member2PatternWrapper.ContainsKey(member)) { Member2PatternWrapper[member] = wrapper; } else { Member2PatternWrapper.Add(member, wrapper); } } }
protected void ddlScheduleID_SelectedIndexChanged(object sender, EventArgs e) { if (ddlScheduleID.SelectedIndex != 0) { CSchedule schedule = scheduleFactory.getById(Convert.ToInt32(ddlScheduleID.SelectedItem.Text)); ddlUserName.Text = userFactory.getById(schedule.user_id).name; ddlPatientName.Text = patientFactory.getById(schedule.patient_id).name; ddlAssessName.Text = schedule.assess_name; tbDeadLine.Text = schedule.deadLine.ToShortDateString(); } }
/// <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); }
protected void btnDeleteSchedule_Click(object sender, EventArgs e) { if (ddlScheduleID.SelectedIndex != 0) { CSchedule schedule = new CSchedule(); schedule.id = Convert.ToInt32(ddlScheduleID.SelectedItem.Text); scheduleFactory.deleteSchedule(schedule); Response.Redirect("schedule.aspx"); } }
void workerLoad_DoWork(object sender, DoWorkEventArgs e) { UseWaitCursor = true; string _templatePath = AppDomain.CurrentDomain.BaseDirectory + "Template"; string sFile = _templatePath + "\\" + System.Configuration.ConfigurationManager.AppSettings.Get("C1Template").ToString(); using (CSchedule objSheet = new CSchedule(sFile, _Month, _RegionIdentifier)) { sReturnFile = objSheet.RunPopulation(); } }
/// <summary>メンバーがこのパターンを含むかどうかチェックする /// </summary> private void CheckPattern() { CSchedule tsche = sdate[_member]; CPattern tpatt = tsche.Pattern; if (!(tpatt == null || tpatt.BuiltIn)) { if (!_member.Contains(tpatt)) { AddItem(EEvaluationResult.NOTICE, GenerateMessage(msg_pattern_nomatch, new string[] { tpatt.Name, _member.Name })); } } }
protected void btnAddSchedule_Click(object sender, EventArgs e) { if (ddlUserName.SelectedIndex != 0 && ddlPatientName.SelectedIndex != 0 && ddlAssessName.SelectedIndex != 0) { CSchedule schedule = new CSchedule(); schedule.user_id = userFactory.getByName(ddlUserName.SelectedItem.Text).id; schedule.patient_id = patientFactory.getByName(ddlPatientName.SelectedItem.Text).id; schedule.assess_id = assessFactory.getByName(ddlAssessName.SelectedItem.Text).id; schedule.deadLine = Convert.ToDateTime(tbDeadLine.Text); scheduleFactory.addSchedule(schedule); Response.Redirect("schedule.aspx"); } }
/// <summary>メンバーの削除 /// </summary> /// <param name="member">削除するメンバー</param> /// <param name="date">削除する日</param> public void ClearMember(CMember member, DateTime date) { CScheduledDate work = CreateScheduledDate(date); int i = schedules.BinarySearch(work); if (i < 0) { return; } for (int j = i; j < schedules.Count; j++) { CScheduledDate sdate = schedules[j]; CSchedule schedule = sdate[member]; schedule.Pattern = null; } }
/// <summary> /// パターンのメンバー数 /// </summary> /// <param name="pattern">パターン</param> /// <returns>パターンに該当するメンバー数</returns> private int GetPatternMemberCount(CPattern pattern) { int ret = 0; int max = sdate.ValidMemberSize; for (int i = 0; i < max; i++) { CMember member = sdate.GetValidMember(i); CSchedule schedule = sdate[member]; if (schedule.Pattern == pattern) { ret++; } } return(ret); }
public void deleteSchedule(CSchedule schedule) { try { SqlDataSource sds = new SqlDataSource(); sds.ConnectionString = connectionString; sds.DeleteCommand = "dbo.deleteSchedule"; sds.DeleteCommandType = SqlDataSourceCommandType.StoredProcedure; sds.DeleteParameters.Add(new Parameter("ID_Schedule", DbType.Int32, schedule.id.ToString())); sds.Delete(); message = "delete success"; } catch (Exception ex) { message = ex.Message; } }
/// <summary>勤務シフト名を返す /// </summary> /// <param name="date"></param> /// <param name="member"></param> /// <param name="head"></param> /// <returns></returns> private string ReturnPatternName(DateTime date, CMember member, bool head) { if (head) { return(member.Name + "の勤務シフト"); } CScheduledDate sdate = TimeTable[date]; CSchedule schdule = sdate[member]; if (schdule == null) { return(""); } CPattern pattern = schdule.Pattern; if (pattern == null) { return(""); } return(ConvertColumn(pattern.Name)); }
public void addSchedule(CSchedule schedule) { try { SqlDataSource sds = new SqlDataSource(); sds.ConnectionString = connectionString; sds.InsertCommand = "dbo.addSchedule"; sds.InsertCommandType = SqlDataSourceCommandType.StoredProcedure; sds.InsertParameters.Add(new Parameter("ID_User", DbType.String, schedule.user_id)); sds.InsertParameters.Add(new Parameter("ID_Patient", DbType.String, schedule.patient_id)); sds.InsertParameters.Add(new Parameter("ID_Assess", DbType.Int32, schedule.assess_id.ToString())); sds.InsertParameters.Add(new Parameter("deadLine", DbType.Date, schedule.deadLine.ToShortDateString())); sds.Insert(); message = "add success"; } catch (Exception ex) { message = ex.Message; } }
/// <summary> /// メンバーごとのチェック /// </summary> private void CheckMembers() { int j = sdate.ValidMemberSize; for (int i = 0; i < j; i++) { CSchedule schedule = sdate[i]; CMember member = schedule.Member; if (_memItems.ContainsKey(member)) { Evaluation1Day1Member work = _memItems[member]; work.Check(); } else { Evaluation1Day1Member work = new Evaluation1Day1Member(this, member); _memItems.Add(member, work); work.Check(); } } }
/// <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> /// <param name="pattern">削除するシフト</param> /// <param name="complete">完全に削除するかどうか</param> public virtual void DelPattern(CPattern pattern, bool complete) { if (!complete) { DelPattern(pattern); } else { // 完全に削除する if (pattern.Removed != null) { patterns.Remove(pattern); // スケジュールから削除 int sz = parent.Size(); for (int i = 0; i < sz; i++) { CScheduledDate wkDate = parent[i]; int sz2 = wkDate.ValidMemberSize; for (int j = 0; j < sz2; j++) { CSchedule scd = wkDate[j]; if (scd != null) { CPattern pat = scd.Pattern; if (pat != null && pat.Equals(pattern)) { scd.Pattern = CPattern.NULL; } } } } if (TimeTable != null) { TimeTable.NotifyPatternsEdited(EnumTimeTableElementEventTypes.ElementRemovedForce, pattern); } } } }
/// <summary>値設定 /// </summary> /// <param name="sender">イベントの発生したオブジェクト</param> /// <param name="e">発生したイベント</param> private void CalenderView_CellValuePushed(object sender, DataGridViewCellValueEventArgs e) { if (TimeTable == null) { return; } DateTime date = GetDateFromRowIndex(e.RowIndex); if (e.ColumnIndex == 0) { // 日付 //e.Value = date; } else { CScheduledDate sdate = TimeTable[date]; if (e.ColumnIndex == 1) { // 人員配置 sdate.Require = e.Value as CRequirePatterns; } else { // メンバー||シフト int index = e.ColumnIndex - 2; if (index < columns1.Count) { ShiftComboBoxColumn col = columns1[index]; CMember member = col.Member; if (member != null) { CSchedule schedule = sdate[member]; schedule.Pattern = e.Value as CPattern; } } } } }
/// <summary> /// コンストラクタ /// </summary> /// <param name="param"></param> public EScheduleEditedEventArgs(CSchedule param) { this.schedule = param; }
/// <summary>印刷・ボディ部分 /// </summary> /// <param name="g">グラフィックスオブジェクト</param> /// <param name="e">イベント</param> protected virtual void PaintBody(Graphics g, System.Drawing.Printing.PrintPageEventArgs e) { //Graphics g = e.Graphics; Rectangle mar = e.MarginBounds; RectangleF rect; #region 内部の箱 { float itop = mar.Top + Header.GetHeight(g); float ibottom = mar.Bottom - Footer.GetHeight(g) - 2; float iheight = ibottom - itop; float ileft = mar.Left; float iwidth = mar.Width; float iright = ileft + iwidth; rect = new RectangleF(ileft, itop, iwidth, iheight); } #endregion // g.DrawRectangle(this.Pen, rect.Left, rect.Top, rect.Width, rect.Height); // CPageIndex page = pages[index]; // 決め打ちできる罫線を引く float DateRight = rect.Left + RequireColumnWidth; g.DrawLine(this.Pen, DateRight, rect.Top, DateRight, rect.Bottom); DrawString(g, "日付", HeaderFont, HeaderBrush, rect.Left, DateRight, rect.Top, tableHeaderHight, EPrintMargin.MARGIN_CENTER, EPrintMargin.MARGIN_CENTER); float RequireRight = DateRight; if (IsDisplayRequire) { RequireRight += RequireColumnWidth; g.DrawLine(this.Pen, RequireRight, rect.Top, RequireRight, rect.Bottom); DrawString(g, "人員配置", HeaderFont, HeaderBrush, DateRight, RequireRight, rect.Top, tableHeaderHight, EPrintMargin.MARGIN_CENTER, EPrintMargin.MARGIN_CENTER); } // テーブルのヘッダ float TableHeadBottom = rect.Top + TableHeaderHight; g.DrawLine(this.Pen, rect.Left, TableHeadBottom, rect.Right, TableHeadBottom); // メンバー数に応じた罫線を引く float MemberColumnBase = (IsDisplayRequire ? RequireRight : DateRight); float MemberColumnSpace = rect.Right - MemberColumnBase; float MemberColumnWidth = MemberColumnSpace / page.MemberCount; for (int i = 1; i < page.MemberCount; i++) { float WorkLeft = MemberColumnBase + MemberColumnWidth * (i - 1); float WorkRight = MemberColumnBase + MemberColumnWidth * i; g.DrawLine(this.Pen, WorkRight, rect.Top, WorkRight, rect.Bottom); } // メンバー名 for (int i = 0; i < page.MemberCount; i++) { float WorkLeft = MemberColumnBase + MemberColumnWidth * i; float WorkRight = MemberColumnBase + MemberColumnWidth * (i + 1); // CMember member = this.TimeTable.Members[page.MemberStartIndex + i]; DrawString(g, member.Name, HeaderFont, HeaderBrush, WorkLeft, WorkRight, rect.Top, tableHeaderHight, EPrintMargin.MARGIN_CENTER, EPrintMargin.MARGIN_CENTER); } // 日数に応じた罫線を引く float DateRowSpace = rect.Bottom - TableHeadBottom; float DateRowHeight = DateRowSpace / page.DateCount; for (int i = 1; i < page.DateCount; i++) { float WorkTop = TableHeadBottom + DateRowHeight * (i - 1); float WorkBottom = TableHeadBottom + DateRowHeight * i; g.DrawLine(this.Pen, rect.Left, WorkBottom, rect.Right, WorkBottom); } // これこそ本体 DateTime WorkDate = page.Start; for (int i = 0; i < page.DateCount; i++) { float WorkTop = TableHeadBottom + DateRowHeight * i; float WorkBottom = TableHeadBottom + DateRowHeight * (i + 1); // 日付 DrawString(g, WorkDate.ToString(DateFormat), System.Windows.Forms.Control.DefaultFont, Brushes.Black, rect.Left, DateRight, WorkTop, DateRowHeight, EPrintMargin.MARGIN_CENTER, EPrintMargin.MARGIN_CENTER); // スケジュール日 CScheduledDate sdate = this.TimeTable[WorkDate]; if (IsDisplayRequire) { if (sdate.Require != null) { DrawString(g, sdate.Require.Name, BodyFont, BodyBrush, DateRight, RequireRight, WorkTop, DateRowHeight, EPrintMargin.MARGIN_CENTER, EPrintMargin.MARGIN_CENTER); } } // シフト for (int j = 0; j < page.MemberCount; j++) { float WorkLeft = MemberColumnBase + MemberColumnWidth * j; float WorkRight = MemberColumnBase + MemberColumnWidth * (j + 1); // CMember member = this.TimeTable.Members[page.MemberStartIndex + j]; CSchedule schedule = sdate[member]; CPattern pattern = (schedule != null ? schedule.Pattern : null); if (pattern != null) { DrawString(g, pattern.Name, BodyFont, BodyBrush, WorkLeft, WorkRight, WorkTop, DateRowHeight, EPrintMargin.MARGIN_CENTER, EPrintMargin.MARGIN_CENTER); } } // WorkDate = WorkDate.AddDays(1); } // e.HasMorePages = page.HasMorePage; // index++; }