public virtual CrystalDecisions.CrystalReports.Engine.ReportDocument CreateReport()
        {
            WorstPerformance rpt = new WorstPerformance();

            rpt.Site = this.Site;
            return(rpt);
        }
Exemple #2
0
        private void btnWorst_Click(object sender, EventArgs e)
        {
            DataTable worstTable = new DataTable();

            worstTable.Columns.Add("staff_id", typeof(int));
            worstTable.Columns.Add("name", typeof(string));
            worstTable.Columns.Add("feedback", typeof(double));

            string   qry  = "select staff_id from staff";
            DateTime date = Convert.ToDateTime(reportTime.Text.ToString());

            MySqlDataReader rdr = DBConnection.getData(qry);

            ArrayList staff = new ArrayList();
            ArrayList worst = new ArrayList();

            while (rdr.Read())
            {
                staff.Add(rdr.GetInt16("staff_id"));
            }

            rdr.Close();

            foreach (var item in staff)
            {
                int i = int.Parse(item.ToString());

                MySqlDataReader reader = DBConnection.getData("select et.feedback, s.first_name, s.last_name from event_technicians et, event e, staff s where (et.event_id = e.event_id and et.sch_no = e.sch_no and et.proj_id = e.proj_id and s.staff_id = et.staff_id) and et.staff_id = " + i + " and (e.from_date_time like '" + date.ToString("yyyy-MM") + "-%')");

                int    count = 0;
                double grade = 0;
                string name  = "";

                while (reader.Read())
                {
                    string value = reader.GetString("feedback");
                    name = reader.GetString("first_name") + " " + reader.GetString("last_name");

                    switch (value)
                    {
                    case "A":
                    {
                        grade += 5;
                        count++;
                        break;
                    }

                    case "B":
                    {
                        grade += 4;
                        count++;
                        break;
                    }

                    case "C":
                    {
                        grade += 3;
                        count++;
                        break;
                    }

                    case "D":
                    {
                        grade += 2;
                        count++;
                        break;
                    }

                    case "E":
                    {
                        grade += 1;
                        count++;
                        break;
                    }

                    case "None":
                    {
                        grade += 0;
                        break;
                    }

                    default: break;
                    }
                }

                reader.Close();

                double feed = grade / count;

                if (feed <= 2)
                {
                    worst.Add(new Cal(i, name, feed));
                }
            }

            foreach (var item in worst)
            {
                Cal c = (Cal)item;

                worstTable.Rows.Add(c.Staff_id, c.Name, c.Feedback);
            }

            WorstPerformance wp = new WorstPerformance();

            wp.Database.Tables["Engineers"].SetDataSource(worstTable);

            crystalReport.ReportSource = null;
            crystalReport.ReportSource = wp;

            worstTable = null;
        }