コード例 #1
0
ファイル: TimeEntry.aspx.cs プロジェクト: agholub/TimeWeasel
    private void PopulateDataGrid()
    {
        // get the data from database
        DataTable dtData = new DataTable();

        dtData = GetTimeEntryData();

        DataTable dt = GetTimeTableSchema();

        Boolean bNew = false;

        StoneTimeBusiness.TimeEntryFunctions ui = new StoneTimeBusiness.TimeEntryFunctions();
        string strUser = SelectedUserId.ToString();
        int ItemIndex = 0; // to hold the project or task or phase id
        string ItemName = string.Empty; // item//s name
        foreach (DataRow drData in dtData.Rows)
        {
            DataRow dr;
            // Determine if there is a row already for the Key: Project+Phase+Task+Billable
            DataRow[] drA;
            string strKey = drData["PROJECT_ID"] + "," + drData["PHASE_ID"] + "," + drData["TASK_ID"] + "," + drData["BILLABLE"];
            // ok... the next select statement is not working... we are getting duplicate records coming thru
            Boolean billable = false;
            if (drData["BILLABLE"] == DBNull.Value)
            {
                billable = false;
            }
            else
            {
                billable = Convert.ToBoolean(drData["BILLABLE"]);
            }
            drA = dt.Select("PROJECT = " + drData["PROJECT_ID"] + " AND MILESTONE = " + drData["PHASE_ID"] + " AND TASK = " + drData["TASK_ID"] + " AND BILLABLE = " + billable.ToString());
            // I am adding code to loop through and check each one...

            dr = dt.NewRow();

            //Boolean exists = false;

            //DataRow[] drAdt;
            //drAdt=

            decimal oHours = Convert.ToDecimal(drData["HOURS"]);
            //decimal nhours = Convert.ToDecimal(dr["HOURS"]);

            //decimal oTotal = Convert.ToDecimal(drData["TOTAL"]);
            decimal nTotal = 0;// Convert.ToDecimal(dr["TOTAL"]);

            //decimal nMonday = 0;
            //if (drData["MONDAY"] != DBNull.Value) Convert.ToDecimal(drData["MONDAY"]);
            //decimal nTuesday = 0;
            //if (drData["TUESDAY"] != DBNull.Value) Convert.ToDecimal(drData["TUESDAY"]);
            //decimal nWednesday = 0;
            //if (drData["WEDNESDAY"] != DBNull.Value) Convert.ToDecimal(drData["WEDNESDAY"]);
            //decimal nThursday = 0;
            //if (drData["THURSDAY"] != DBNull.Value) Convert.ToDecimal(drData["THURSDAY"]);
            //decimal nFriday = 0;
            //if (drData["FRIDAY"] != DBNull.Value) Convert.ToDecimal(drData["FRIDAY"]);
            //decimal nSaturday = 0;
            //if (drData["SATURDAY"] != DBNull.Value) Convert.ToDecimal(drData["SATURDAY"]);
            //decimal nSunday = 0;
            //if (drData["SUNDAY"] != DBNull.Value) Convert.ToDecimal(drData["SUNDAY"]);

            if (drA.GetLength(0) > 0)
            {
                // the Key already exists in the table. Use this row.
                dr = drA[0];
                bNew = false;
            }
            else
            {
                // the Key was not found. Create a new row
                dr = dt.NewRow();
                dr["ID"] = strKey;
                if (drData["BILLABLE"] == DBNull.Value)
                {
                    dr["BILLABLE"] = false;
                }
                else
                {
                    dr["BILLABLE"] = Convert.ToBoolean(drData["BILLABLE"]);
                }
                dr["DURATION"] = oHours;
                ItemIndex = Convert.ToInt16(drData["TASK_ID"]);
                ItemName = ui.GetTaskName(ItemIndex, strUser);
                dr["TASK"] = drData["TASK_ID"];
                dr["TASKNAME"] = ItemName;

                ItemIndex = Convert.ToInt16(drData["PHASE_ID"]);
                ItemName = ui.GetPhaseName(ItemIndex, strUser);
                dr["MILESTONE"] = drData["PHASE_ID"];
                dr["PHASENAME"] = ItemName;

                ItemIndex = Convert.ToInt16(drData["PROJECT_ID"]);
                ItemName = ui.GetProjectName(ItemIndex, strUser);
                dr["PROJECT"] = ItemIndex;
                dr["PROJECTNAME"] = ItemName;

                dr["PERSON"] = drData["USER_ID"];
                dr["TOTAL"] = 0;
                bNew = true;
            }

            decimal oMonday = 0;
            if (dr["MONDAY"] != DBNull.Value) oMonday = Convert.ToDecimal(dr["MONDAY"]);
            decimal oTuesday = 0;
            if (dr["TUESDAY"] != DBNull.Value) oTuesday = Convert.ToDecimal(dr["TUESDAY"]);
            decimal oWednesday = 0;
            if (dr["WEDNESDAY"] != DBNull.Value) oWednesday = Convert.ToDecimal(dr["WEDNESDAY"]);
            decimal oThursday = 0;
            if (dr["THURSDAY"] != DBNull.Value) oThursday = Convert.ToDecimal(dr["THURSDAY"]);
            decimal oFriday = 0;
            if (dr["FRIDAY"] != DBNull.Value) oFriday = Convert.ToDecimal(dr["FRIDAY"]);
            decimal oSaturday = 0;
            if (dr["SATURDAY"] != DBNull.Value) oSaturday = Convert.ToDecimal(dr["SATURDAY"]);
            decimal oSunday = 0;
            if (dr["SUNDAY"] != DBNull.Value) oSunday = Convert.ToDecimal(dr["SUNDAY"]);

            DateTime dtDate = Convert.ToDateTime(drData["BILL_DATE"].ToString()); //strip time??
            int Difference = 0;
            DateTime dtA = MasterDate; //strip time??

            Difference = dtDate.Subtract(dtA).Days;

            if (oHours > 0)
            {
                switch (Difference)
                {
                    case 0:
                        {
                            if (oMonday == 0)
                            {
                                dr["Monday"] = oHours;
                                dr["MonDescription"] = drData["DESCRIPTION"];

                            }
                            else
                            {
                                dr["Monday"] = oMonday + oHours;

                            }

                            nTotal = oMonday + nTotal;
                            MonTotal = MonTotal + oHours;
                            WeekTotal = WeekTotal + oHours;

                            break;
                        }
                    case 1:
                        {
                            if (oTuesday == 0)
                            {
                                dr["Tuesday"] = oHours;
                                dr["TuesDescription"] = drData["DESCRIPTION"];
                            }
                            else
                            {
                                dr["Tuesday"] = oTuesday + oHours;
                            }

                            nTotal = oTuesday + nTotal;
                            TueTotal = TueTotal + oHours;
                            WeekTotal = WeekTotal + oHours;

                            break;
                        }
                    case 2:
                        {
                            if (oWednesday == 0)
                            {
                                dr["Wednesday"] = oHours;
                                // 10/
                                dr["WedDescription"] = drData["DESCRIPTION"];
                            }
                            else
                            {
                                dr["Wednesday"] = oWednesday + oHours;
                            }

                            nTotal = oWednesday + nTotal;
                            WedTotal = WedTotal + oHours;
                            WeekTotal = WeekTotal + oHours;

                            break;
                        }
                    case 3:
                        {
                            if (oThursday == 0)
                            {
                                dr["Thursday"] = oHours;
                                dr["ThursDescription"] = drData["DESCRIPTION"];
                            }
                            else
                            {
                                dr["Thursday"] = oThursday + oHours;
                            }

                            nTotal = oThursday + nTotal;
                            ThrTotal = ThrTotal + oHours;
                            WeekTotal = WeekTotal + oHours;

                            break;
                        }
                    case 4:
                        {
                            if (oFriday == 0)
                            {
                                dr["Friday"] = oHours;
                                dr["FriDescription"] = drData["DESCRIPTION"];
                            }
                            else
                            {
                                dr["Friday"] = oFriday + oHours;
                            }

                            nTotal = oFriday + nTotal;
                            FriTotal = FriTotal + oHours;
                            WeekTotal = WeekTotal + oHours;

                            break;
                        }
                    case 5:
                        {
                            if (oSaturday == 0)
                            {
                                dr["Saturday"] = oHours;
                                dr["SatDescription"] = drData["DESCRIPTION"];
                            }
                            else
                            {
                                dr["Saturday"] = oSaturday + oHours;
                            }

                            dr["Total"] = oSaturday + nTotal;
                            SatTotal = SatTotal + oHours;
                            WeekTotal = WeekTotal + oHours;

                            break;
                        }
                    case 6:
                        {
                            if (oSunday == 0)
                            {
                                dr["Sunday"] = oHours;
                                dr["SunDescription"] = drData["DESCRIPTION"];
                            }
                            else
                            {
                                dr["Sunday"] = oSunday + oHours;
                            }

                            nTotal = oSunday + nTotal;
                            SunTotal = SunTotal + oHours;
                            WeekTotal = WeekTotal + oHours;

                            break;
                        }

                }
            }
            else
            {
                bNew = false;
            }

            if (bNew == true)
            {
                dt.Rows.Add(dr);
            }
        }

        dt.AcceptChanges();

        gvTime.DataSource = dt;
        gvTime.DataBind();

        if (Locked(MasterDate))
        {
            gvTime.Enabled = false;
        }
        else
        {
            gvTime.Enabled = true;
        }

        //ViewState["MonTotal"] = MonTotal;
        //VeiwState["TueTotal"] = TueTotal;
        //VeiwState["WedTotal"] = WedTotal;
        //VeiwState["ThrTotal"] = ThrTotal;
        //VeiwState["FriTotal"] = FriTotal;
        //VeiwState["SatTotal"] = SatTotal;
        //VeiwState["SunTotal"] = SunTotal;
    }