private void btnSave_Click(object sender, EventArgs e) { try { if (cboStaff.GetSelectedDataRow() is Users item) { AccomplishmentReportViewModel model = new AccomplishmentReportViewModel() { UserId = item.Id, DateFrom = dtDateFrom.DateTime, DateTo = dtDateTo.DateTime.AddHours(11).AddMinutes(59).AddSeconds(59), Office = item.Offices?.OfficeName, TelNo = item.Offices?.TelNo, Address = item.Offices?.Address, NotedBy = (cboNotedBy.GetSelectedDataRow() as Employees)?.EmployeeName, NotedByPosition = (cboNotedBy.GetSelectedDataRow() as Employees)?.Position, ReviewedBy = (cboReviewedBy.GetSelectedDataRow() as Employees)?.EmployeeName, ReviewedByPosition = (cboReviewedBy.GetSelectedDataRow() as Employees)?.Position, PeriodOf = $"For the period of: {dtDateFrom.DateTime.ToShortDateString()} to {dtDateTo.DateTime.ToShortDateString()}", TableName = tableName }; if (item.Offices?.UnderOfOffice != null) { model.Office = item.Offices?.UnderOfOffice.OfficeName + Environment.NewLine + model.Office; } rptPivotAccomplisment rpt = new rptPivotAccomplisment(); Generate(model, rpt); rpt.lblSystemName.Text = footer; frmReportViewer frm = new frmReportViewer(rpt); frm.ShowDialog(); } } catch (Exception exception) { } }
void Generate(AccomplishmentReportViewModel model, rptPivotAccomplisment rpt) { var dtFrom = dtDateFrom.DateTime; var dtTo = dtDateTo.DateTime.AddHours(23).AddMinutes(59).AddSeconds(59); var doc = model.Generate(); rpt.tblHeader.Rows.Clear(); XRTableRow xrow = new XRTableRow(); xrow.Cells.Add(new XRTableCell() { Text = "Sub Activity", WidthF = 250.12F, BorderWidth = 1f, Borders = DevExpress.XtraPrinting.BorderSide.All }); while (dtFrom <= dtTo) { xrow.Cells.Add(new XRTableCell() { Text = dtFrom.ToString("dd"), WidthF = 50f, TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter, BorderWidth = 1f, Borders = DevExpress.XtraPrinting.BorderSide.All }); dtFrom = dtFrom.AddDays(1); } xrow.Cells.Add(new XRTableCell() { Text = "Total", WidthF = 50f, TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter, BorderWidth = 1f, Borders = DevExpress.XtraPrinting.BorderSide.All }); rpt.tblHeader.Rows.Add(xrow); rpt.tblDetails.Rows.Clear(); foreach (dynamic property in model.AccomplishmentReports) { xrow = new XRTableRow(); //rpt.tblDetails.Rows[row].Cells[0].Text = property.SubActivity; dtFrom = dtDateFrom.DateTime; dtTo = dtDateTo.DateTime.AddHours(23).AddMinutes(59).AddSeconds(59); xrow.Cells.Add(new XRTableCell() { Text = property.SubActivity, WidthF = 250.12F, BorderWidth = 1f, Borders = DevExpress.XtraPrinting.BorderSide.All }); int subActivity = property.SubActivityId; while (dtFrom <= dtTo) { var _from = dtFrom; var _to = dtFrom.AddHours(23).AddMinutes(59).AddSeconds(59); var xrcell = new XRTableCell() { Text = doc.Count(x => x.SubActivityId == subActivity && (x.ActionDate >= _from && x.ActionDate <= _to)).ToString("0"), WidthF = 50f, TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter, BorderWidth = 1f, Borders = DevExpress.XtraPrinting.BorderSide.All }; if (xrcell.Text == "0") { xrcell.Text = "-"; } xrow.Cells.Add(xrcell); dtFrom = dtFrom.AddDays(1); } xrow.Cells.Add(new XRTableCell() { Text = doc.Count(x => x.SubActivityId == subActivity && (x.ActionDate >= dtDateFrom.DateTime && x.ActionDate <= dtTo)).ToString("0"), WidthF = 50f, TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter, BorderWidth = 1f, Borders = DevExpress.XtraPrinting.BorderSide.All }); rpt.tblDetails.Rows.Add(xrow); } rpt.DataSource = new object[] { new { NotedBy = model.NotedBy, NotedByPosition = model.NotedByPosition, ReviewedBy = model.ReviewedBy, ReviewedByPosition = model.ReviewedByPosition, DateFrom = model.DateFrom, DateTo = model.DateTo, PeriodOf = model.PeriodOf, EmployeeName = model.EmployeeName, EmployeePosition = model.EmployeePosition, UserId = model.UserId, Office = model.Office, TelNo = model.TelNo, Address = model.Address, TableName = model.TableName } }; ; // }