protected void rptBreakdown_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        int clsId = ((BCClassSchedule)(e.Item.DataItem)).Id;
        string temp;

        BCRegular objRegular = new BCRegular();
        objRegular.Id = clsId;
        try
        {
            objRegular.LoadData();
        }
        catch (WebServiceException ex)
        {
            bool rethrow = ExceptionPolicy.HandleException(ex, "GenericPolicy");
            if (rethrow) throw;
            return;
        }

        //class description label
        //S4 P Chem Sun 1300 - 1430 (sample)
        Label lblClassDescription = (Label)(e.Item.FindControl("lblClassDescription"));
        temp = "{0} {1} {2} {3} - {4}";
        lblClassDescription.Text =
            String.Format(temp, objRegular.GetSubject().name, objRegular.getLevel().Name,
            objRegular.Day, objRegular.TimeStart.ToString("hh:mm tt"), objRegular.TimeEnd.ToString("hh:mm tt")
            );

        GridView grdPaymentHistory = (GridView)(e.Item.FindControl("grdPaymentHistory"));
        grdPaymentHistory.RowDataBound +=
          new GridViewRowEventHandler(grdPaymentHistory_RowDataBound);
        grdPaymentHistory.RowCreated +=
            new GridViewRowEventHandler(grdPaymentHistory_RowCreated);
        BCPayment[] aryBCPayment = BCPayment.getPaymentByStudentClass(
            Convert.ToInt32(hdnStudentId.Value),
            clsId);
        grdPaymentHistory.DataSource = aryBCPayment;
        grdPaymentHistory.DataBind();
        Label lblEmptyPH = (Label)(e.Item.FindControl("lblEmptyPaymentHistory"));
        lblEmptyPH.Visible = (aryBCPayment == null || aryBCPayment.Length == 0);

        GridView grdAttendanceHistory = (GridView)(e.Item.FindControl("grdAttendanceHistory"));
        grdAttendanceHistory.RowDataBound +=
            new GridViewRowEventHandler(grdAttendanceHistory_RowDataBound);
        grdAttendanceHistory.RowCreated +=
            new GridViewRowEventHandler(grdAttendanceHistory_RowCreated);
        wsvAttendanceLn.AttendanceLn dbAttln =
            new wsvAttendanceLn.AttendanceLn();
        wsvAttendanceLn.CAttendanceLn[] aryAttln =
            dbAttln.GetAttendanceByStudentClass(
            Convert.ToInt32(hdnStudentId.Value),
            clsId);
        grdAttendanceHistory.DataSource = aryAttln;
        grdAttendanceHistory.DataBind();
        Label lblEmptyAH = (Label)(e.Item.FindControl("lblEmptyAttendanceHistory"));
        lblEmptyAH.Visible = (aryAttln == null || aryAttln.Length == 0);

        GridView grdAbsenceSummary = (GridView)(e.Item.FindControl("grdAbsenceSummary"));
        grdAbsenceSummary.RowDataBound +=
            new GridViewRowEventHandler(grdAbsenceSummary_RowDataBound);
        grdAbsenceSummary.RowCreated +=
            new GridViewRowEventHandler(grdAbsenceSummary_RowCreated);
        BCStudent objStud = new BCStudent();
        objStud.Id = Convert.ToInt32(hdnStudentId.Value);
        DataSet dsReport = objStud.GenerateAttendanceSummaryReport(clsId, 2);
        grdAbsenceSummary.DataSource = dsReport;
        grdAbsenceSummary.DataBind();
        Label lblEmptyAS = (Label)(e.Item.FindControl("lblEmptyAbsenceSummary"));
        lblEmptyAS.Visible =
            (dsReport == null ||
            dsReport.Tables.Count == 0 ||
            dsReport.Tables[0].Rows.Count == 0);
    }
Beispiel #2
0
        //This method tightly couples with CORE classes. maybe, reconsider later
        //Nhibernate does not suppport bidirectional association with
        //list collections. No choice but have to ask the parent for studId
        public virtual void SyncDerivedFields(PaymentAdvice parent)
        {
            wsvAttendanceLn.AttendanceLn DBAttln =
                new wsvAttendanceLn.AttendanceLn();

            wsvAttendanceLn.CAttendanceLn[] aryAttln =
                DBAttln.GetAttendanceByStudentClass(parent.IdStudent, IdRegular);

            Absence = 0;
            Prorate = 0;
            if (aryAttln != null)
            {
                foreach (wsvAttendanceLn.CAttendanceLn attln in aryAttln)
                {
                    if (attln.isPresent == 0)
                        Absence++;
                    else if (attln.isPresent == 2)
                        Prorate++;
                }
            }

            //check log for number of forfeits. Very unnatural....
            AdoNetManager db = new AdoNetManager("ForfeitLog");

            String strSQL =
            " SELECT ISNULL(SUM(intCreditForfeitLog),0) FROM ForfeitLog " +
            " WHERE intIdUserForfeitLog=@idStud " +
            " AND intIdClassScheduleForfeitLog=@idClass ";

            db.ClearParameters();
            db.Parameters.Add("@idClass", SqlDbType.Int).Value = IdRegular;
            db.Parameters.Add("@idStud", SqlDbType.Int).Value = parent.IdStudent;

            Forfeit =Convert.ToInt32(db.executeScalar(strSQL));

            wsvMakeupAttendance.MakeupAttendance dbMakeup
                = new wsvMakeupAttendance.MakeupAttendance();
            wsvMakeupAttendance.CMakeupAttendance[] aryMakeup
                = dbMakeup.getMakeupAttendanceByStudent(parent.IdStudent);

            if (aryMakeup == null)
                Makeup = 0;
            else
            {
                foreach (wsvMakeupAttendance.CMakeupAttendance objMakeup in aryMakeup)
                {
                    if (objMakeup.IdAttendanceRegular == IdRegular)
                        Makeup++;
                }
            }

            ApasRegular regClass = GetAssociatedClass();
            PerLessonFee = Convert.ToDecimal(regClass.Fee);

            //get credit from student classshedule
            wsvStudentClassSchedule.StudentClassSchedule dbSC =
                new wsvStudentClassSchedule.StudentClassSchedule();

            wsvStudentClassSchedule.CStudentClassSchedule objSC =
                dbSC.getStudentClassSchedule(parent.IdStudent, IdRegular);

            //offset credit with number of attendances unmarked in this month
            DateTime month = parent.GetParentPAList().Month.AddMonths(-1);

            wsvAttendance.Attendance dbAtt = new wsvAttendance.Attendance();
            wsvAttendance.CAttendance[] aryAtt =
                dbAtt.getAttendancesBetween(regClass.Id,
                new DateTime(month.Year, month.Month, 1),
                new DateTime(month.Year, month.Month, DateTime.DaysInMonth(month.Year, month.Month))
            );
            int dayCount = GetDayCountOf(regClass.Day, regClass.ClassStartDate, month);
            int attCount = (aryAtt == null) ? 0 : aryAtt.Length;
            int unmarkedCount = (dayCount-attCount) < 0 ? 0 : dayCount-attCount;

            Credit = objSC.Credit-unmarkedCount;
        }
    protected void grdSummary_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            //0         1           2               3           4               5
            //Id        class       classDetails    Amt paid    paid credits    transferin
            //6                     7               8               9           10
            //classes conducted     transferOut     forfeits        prorate     adjustments
            //11
            //credits left
            int clsId = Convert.ToInt32(grdSummary.DataKeys[e.Row.RowIndex].Value);
            string tmpStr;

            BCRegular objRegular = new BCRegular();
            objRegular.Id = clsId;
            try
            {
                objRegular.LoadData();
            }
            catch (WebServiceException ex)
            {
                bool rethrow = ExceptionPolicy.HandleException(ex, "GenericPolicy");
                if (rethrow) throw;
                return;
            }

            //class
            e.Row.Cells[1].Text = objRegular.getLevel().Name + " " + objRegular.GetSubject().name;

            //class details
            tmpStr = "{0} {1} - {2}";
            e.Row.Cells[2].Text =
                String.Format(tmpStr, objRegular.Day, objRegular.TimeStart.ToShortTimeString(),
                objRegular.TimeEnd.ToShortTimeString());

            //amt paid and paid credits
            decimal amtPaid = 0;
            int paidCredits = 0;

            BCPayment[] aryPayments =
                BCPayment.getPaymentByStudentClass(
                Convert.ToInt32(hdnStudentId.Value), clsId
                );

            if (aryPayments != null)
            {
                foreach (BCPayment objPayment in aryPayments)
                {
                    amtPaid += objPayment.Amount;
                    paidCredits += objPayment.Credit;
                }
            }

            e.Row.Cells[3].Text = Convert.ToString(amtPaid);
            e.Row.Cells[4].Text = Convert.ToString(paidCredits);
            amtPaidT += amtPaid;
            paidCreditsT += paidCredits;

            //transferIn, transferOut
            int transferIn = 0;
            int transferOut = 0;
            wsvLog_TransferCredit.DBLog_TransferCredit dbTC = new wsvLog_TransferCredit.DBLog_TransferCredit();
            wsvLog_TransferCredit.CLog_TransferCredit[] aryTCIn =
                dbTC.getLog_TransferCreditsByTransferInClassId(Convert.ToInt32(hdnStudentId.Value), clsId);
            wsvLog_TransferCredit.CLog_TransferCredit[] aryTCOut =
                dbTC.getLog_TransferCreditsByTransferOutClassId(Convert.ToInt32(hdnStudentId.Value), clsId);

            if (aryTCIn != null)
            {
                foreach (wsvLog_TransferCredit.CLog_TransferCredit objTC in aryTCIn)
                {
                    transferIn += objTC.Amount;
                }
            }
            if (aryTCOut != null)
            {
                foreach (wsvLog_TransferCredit.CLog_TransferCredit objTC in aryTCOut)
                {
                    transferOut += objTC.Amount;
                }
            }
            e.Row.Cells[5].Text = Convert.ToString(transferIn);
            e.Row.Cells[7].Text = Convert.ToString(transferOut);
            TransferInT += transferIn;
            transferOutT += transferOut;

            //classes conducted, pro-rate
            int proRate = 0;
            wsvAttendanceLn.AttendanceLn dbAttln = new wsvAttendanceLn.AttendanceLn();
            wsvAttendanceLn.CAttendanceLn[] aryAttln =
                dbAttln.GetAttendanceByStudentClass(Convert.ToInt32(hdnStudentId.Value), clsId);

            if (aryAttln == null)
            {
                //classes conducted
                e.Row.Cells[6].Text = "0";
            }
            else
            {
                e.Row.Cells[6].Text = Convert.ToString(aryAttln.Length);
                classConductedT += aryAttln.Length;
                foreach (wsvAttendanceLn.CAttendanceLn objAttln in aryAttln)
                {
                    //isPresent 0: absent, 1: present, 2: proRate
                    proRate += (objAttln.isPresent == 2) ? 1 : 0;
                }
            }
            e.Row.Cells[9].Text = Convert.ToString(proRate);
            proRateT += proRate;

            //forfeits
            int forfeits;
            wsvForfeitLog.ForfeitLog dbForfeit = new wsvForfeitLog.ForfeitLog();
            forfeits = dbForfeit.GetTotalForfeitedCredits(Convert.ToInt32(hdnStudentId.Value), clsId);
            e.Row.Cells[8].Text = Convert.ToString(forfeits);
            forfeitsT += forfeits;

            //adjustments
            int adjustments = 0;
            wsvCreditOverwriteLog.CreditOverwriteLog dbCOL = new wsvCreditOverwriteLog.CreditOverwriteLog();
            wsvCreditOverwriteLog.CCreditOverwriteLog[] aryCOL =
                dbCOL.getOverwriteLogsByStudentClass(Convert.ToInt32(hdnStudentId.Value), clsId);

            if (aryCOL != null)
            {
                foreach (wsvCreditOverwriteLog.CCreditOverwriteLog objCOL in aryCOL)
                {
                    adjustments += objCOL.CreditTo - objCOL.CreditFrom;
                }
            }
            e.Row.Cells[10].Text = Convert.ToString(adjustments);
            adjustT += adjustments;

            //credits left
            BCStudentClassSchedule objSCS = new BCStudentClassSchedule();
            try
            {
                objSCS.load(Convert.ToInt32(hdnStudentId.Value), clsId);
                e.Row.Cells[11].Text = Convert.ToString(objSCS.Credit);
                creditsLeftT += objSCS.Credit;
            }
            catch (WebServiceException ex)
            {
                bool rethrow = ExceptionPolicy.HandleException(ex, "GenericPolicy");
                if (rethrow) throw;
                e.Row.Cells[11].Text = "???";

            }

        }// if (e.Row.RowType == DataControlRowType.DataRow)
        else if(e.Row.RowType == DataControlRowType.Footer)
        {
            //0         1           2               3           4               5
            //Id        class       classDetails    Amt paid    paid credits    transferin
            //6                     7               8               9           10
            //classes conducted     transferOut     forfeits        prorate     adjustments
            //11
            //credits left

            e.Row.Cells[2].Text = "Total:";
            e.Row.Cells[2].HorizontalAlign = HorizontalAlign.Right;

            e.Row.Cells[3].Text = Convert.ToString(amtPaidT);
            e.Row.Cells[4].Text = Convert.ToString(paidCreditsT);
            e.Row.Cells[5].Text = Convert.ToString(TransferInT);
            e.Row.Cells[6].Text = Convert.ToString(classConductedT);
            e.Row.Cells[7].Text = Convert.ToString(transferOutT);
            e.Row.Cells[8].Text = Convert.ToString(forfeitsT);
            e.Row.Cells[9].Text = Convert.ToString(proRateT);
            e.Row.Cells[10].Text = Convert.ToString(adjustT);
            e.Row.Cells[11].Text = Convert.ToString(creditsLeftT);
        }
    }