private void CreatePaymentModeMetrics(EventMetricsViewData eventMetricsViewData,
                                              Core.Finance.Domain.Order order, bool noShow)
        {
            var organizationRoleUserCreator =
                _organizationRoleUserRepository.GetOrganizationRoleUser(order,
                                                                        o =>
                                                                        o.DataRecorderMetaData.DataRecorderCreator.Id);

            // If the customer is noShow and Unpiad the count remain same.
            if (noShow || order.DiscountedTotal != order.TotalAmountPaid)
            {
                return;
            }

            var roleId = GetParentRoleIdByRoleId(organizationRoleUserCreator.RoleId);

            if (roleId == (int)Roles.CallCenterRep)
            {
                eventMetricsViewData.PhonePayments += order.DiscountedTotal;
                eventMetricsViewData.PhonePaymentCount++;
            }
            else if (roleId == (int)Roles.Technician)
            {
                eventMetricsViewData.OnsitePaymentCount++;
                eventMetricsViewData.OnsitePayments += order.DiscountedTotal;
            }
            else if (roleId == (int)Roles.Customer)
            {
                eventMetricsViewData.InternetPaymentCount++;
                eventMetricsViewData.InternetPayments += order.DiscountedTotal;
            }
        }
        private void CreateRevenueMetrics(EventMetricsViewData eventMetricsViewData, Core.Finance.Domain.Order order, bool noShow)
        {
            if (order.DiscountedTotal > order.TotalAmountPaid)
            {
                eventMetricsViewData.UnPaidCount++;
                eventMetricsViewData.UnPaidRevenue += order.DiscountedTotal - order.TotalAmountPaid;
                if (!noShow)
                {
                    eventMetricsViewData.UnPaidExcluedeNoShowCount++;
                    eventMetricsViewData.UnPaidExcluedeNoShowRevenue += order.DiscountedTotal - order.TotalAmountPaid;
                }
            }

            //if (order.PaymentsApplied.Any(pa => pa.PaymentType == PaymentType.CreditCard))
            //{
            //    var chargeCardPayment = order.PaymentsApplied.Where(pa => pa.PaymentType == PaymentType.CreditCard);
            //    //eventMetricsViewData.ChargeCardCount += chargeCardPayment.Count();
            //    eventMetricsViewData.ChargeCardCount++;
            //    eventMetricsViewData.ChargeCardRevenue += chargeCardPayment.Sum(ccp => ccp.Amount);
            //}
            //if (order.PaymentsApplied.Any(pa => pa.PaymentType == PaymentType.Check))
            //{
            //    var checkPayment = order.PaymentsApplied.Where(pa => pa.PaymentType == PaymentType.Check);
            //    //eventMetricsViewData.CheckCount += checkPayment.Count();
            //    eventMetricsViewData.CheckCount++;
            //    eventMetricsViewData.CheckRevenue += checkPayment.Sum(ccp => ccp.Amount);
            //}
            //if (order.PaymentsApplied.Any(pa => pa.PaymentType == PaymentType.ElectronicCheck))
            //{
            //    var eCheckPayment = order.PaymentsApplied.Where(pa => pa.PaymentType == PaymentType.ElectronicCheck);
            //    //eventMetricsViewData.ECheckCount += eCheckPayment.Count();
            //    eventMetricsViewData.ECheckCount++;
            //    eventMetricsViewData.ECheckRevenue += eCheckPayment.Sum(ccp => ccp.Amount);
            //}
            //if (order.PaymentsApplied.Any(pa => pa.PaymentType == PaymentType.Cash))
            //{
            //    var cashPayment = order.PaymentsApplied.Where(pa => pa.PaymentType == PaymentType.Cash);
            //    //eventMetricsViewData.CashCount += cashPayment.Count();
            //    eventMetricsViewData.CashCount++;
            //    eventMetricsViewData.CashRevenue += cashPayment.Sum(ccp => ccp.Amount);
            //}
            //if (order.PaymentsApplied.Any(pa => pa.PaymentType == PaymentType.GiftCertificate))
            //{
            //    var giftCertificatePayment =
            //        order.PaymentsApplied.Where(pa => pa.PaymentType == PaymentType.GiftCertificate);
            //    //eventMetricsViewData.GiftCertificateCount += giftCertificatePayment.Count();
            //    eventMetricsViewData.GiftCertificateCount++;
            //    eventMetricsViewData.GiftCertificateRevenue += giftCertificatePayment.Sum(ccp => ccp.Amount);
            //}
            //eventMetricsViewData.TotalRevenue += order.DiscountedTotal;
        }
예제 #3
0
    //public void LoadEventSummaryPanel(EEvent eventData)
    public void LoadEventSummaryPanel(EventMetricsViewData eventMetricsViewData, EventHostViewData eventHostViewData, EEvent eventPodDetails)
    {
        if (eventMetricsViewData == null || eventHostViewData == null)
        {
            return;
        }

        // format phone no.
        var commonCode = new CommonCode();

        string key = EPDFType.ResultPdf + "~" + eventHostViewData.EventId + "~0~" + "ALL";

        key = _cryptographyService.Encrypt(key);
        aPrintBulkResult.HRef = "javascript:showClinicalForm('" + key + "');";

        key = EPDFType.ClinicalForm + "~" + eventHostViewData.EventId + "~0~" + "ALL";
        key = _cryptographyService.Encrypt(key);
        aPrintBulkClinicalForm.HRef = "javascript:showClinicalForm('" + key + "');";

        ancopenpopupaddslot.HRef = "/App/Common/AddSlot.aspx?EventDate=" + eventHostViewData.EventDate.ToShortDateString() + "&keepThis=true&TB_iframe=true&width=295&height=140&modal=true";

        Session["EventID"]     = eventHostViewData.EventId;
        ViewState["EventDate"] = eventHostViewData.EventDate;
        ViewState["EventName"] = eventHostViewData.Name;

        Session["EventDate"] = eventHostViewData.EventDate;
        Session["EventName"] = eventHostViewData.Name;

        if (Convert.ToDateTime(eventHostViewData.EventDate).Date > DateTime.Now.Date)
        {
            aResultStatus.Visible = false;
            //if (!eventPodDetails.IsTeamConfiguredOnEventDay) spIsTeamConfigured.Style[System.Web.UI.HtmlTextWriterStyle.Display] = "none";
        }
        else
        {
            //if (!eventPodDetails.IsTeamConfiguredOnEventDay) spIsTeamConfigured.Style[System.Web.UI.HtmlTextWriterStyle.Display] = "block";

            long shell = IoC.Resolve <ISessionContext>().UserSession.CurrentOrganizationRole.RoleId;
            if (shell == (int)Roles.FranchisorAdmin)
            {
                aResultStatus.HRef = "/App/Franchisor/EventCustomerResult.aspx?AllRecordsEventID=" + eventHostViewData.EventId;
            }
            else
            {
                aResultStatus.HRef = "/App/Franchisee/FranchiseeEventCustomerResult.aspx?AllRecordsEventID=" + eventHostViewData.EventId;
            }
        }

        speventdate.InnerText         = Convert.ToDateTime(eventHostViewData.EventDate).ToShortDateString();
        speventloc.InnerHtml          = eventHostViewData.StreetAddressLine1 + ", " + eventHostViewData.City + ", " + eventHostViewData.State + ", " + eventHostViewData.Zip;
        sphostphone.InnerText         = commonCode.FormatPhoneNumberGet(eventPodDetails.Host.PhoneOffice);
        ViewState["HostName"]         = eventHostViewData.OrganizationName;
        ViewState["HostAddress"]      = eventHostViewData.StreetAddressLine1;
        ViewState["HostCityStateZip"] = eventHostViewData.City + " " + eventHostViewData.State + " " + eventHostViewData.Zip;

        Session["HostName"]         = eventHostViewData.OrganizationName;
        Session["HostAddress"]      = eventHostViewData.StreetAddressLine1;
        Session["HostCityStateZip"] = eventHostViewData.City + " " + eventHostViewData.State + " " + eventHostViewData.Zip;

        spBPEIPDeposit.InnerText = decimal.Round((eventMetricsViewData.CashRevenue + eventMetricsViewData.CheckRevenue), 2).ToString();

        spBPCashPayment.InnerText   = decimal.Round(eventMetricsViewData.CashRevenue, 2).ToString();
        spBPCardPayment.InnerText   = decimal.Round(eventMetricsViewData.ChargeCardRevenue, 2).ToString();
        spBPCheckPayment.InnerText  = decimal.Round(eventMetricsViewData.CheckRevenue, 2).ToString();
        spBPeCheckPayment.InnerText = decimal.Round(eventMetricsViewData.ECheckRevenue, 2).ToString();
        decimal totalRevenue = eventMetricsViewData.ChargeCardRevenue + eventMetricsViewData.CheckRevenue +
                               eventMetricsViewData.CashRevenue + eventMetricsViewData.ECheckRevenue +
                               eventMetricsViewData.GiftCertificateRevenue +
                               eventMetricsViewData.UnPaidExcluedeNoShowRevenue;

        spBPTotalPayment.InnerText = decimal.Round(totalRevenue, 2).ToString();
        spBPEventID.InnerText      = eventHostViewData.EventId.ToString();

        lnkBPRegCustomer.Text          = eventMetricsViewData.RegisteredCustomersCount.ToString();
        spBPCanceledCustomer.InnerHtml = eventMetricsViewData.CancelledCustomersCount.ToString();
        lnkBPNoshowCustomer.Text       = eventMetricsViewData.NoShowCustomersCount.ToString();
        lnkBPPaidCustomer.Text         = eventMetricsViewData.PaidCustomersCount.ToString();
        lnkBPUnpaidCustomer.Text       = eventMetricsViewData.UnPaidCount.ToString();
        lnkBPActCustomer.Text          = eventMetricsViewData.AttendedCustomersCount.ToString();
        lnkBPCardPaymentCount.Text     = eventMetricsViewData.ChargeCardCount.ToString();
        lnkBPCashPayment.Text          = eventMetricsViewData.CashCount.ToString();
        lnkBPCheckPayment.Text         = eventMetricsViewData.CheckCount.ToString();
        lnkBPeCheckPayment.Text        = eventMetricsViewData.ECheckCount.ToString();

        spPhoneCount.InnerText     = decimal.Round(eventMetricsViewData.PhonePayments, 2).ToString();
        lnkPhoneCount.Text         = eventMetricsViewData.PhonePaymentCount.ToString();
        spINetCount.InnerText      = decimal.Round(eventMetricsViewData.InternetPayments, 2).ToString();
        lnkInetCount.Text          = eventMetricsViewData.InternetPaymentCount.ToString();
        spOnsiteCount.InnerText    = decimal.Round(eventMetricsViewData.OnsitePayments, 2).ToString();
        lnkOnsiteCount.Text        = eventMetricsViewData.OnsitePaymentCount.ToString();
        spUpgradeCount.InnerText   = decimal.Round(eventMetricsViewData.UpGradePayments, 2).ToString();
        lnkUpgradeCount.Text       = eventMetricsViewData.UpGradePaymentCount.ToString();
        spDowngradeCount.InnerText = Convert.ToString(decimal.Round((eventMetricsViewData.DownGradePayments < 0 ? eventMetricsViewData.DownGradePayments * -1 : eventMetricsViewData.DownGradePayments), 2));
        lnkDowngradeCount.Text     = eventMetricsViewData.DownGradePaymentCount.ToString();

        //TODO: Need to filter customers paid by GC
        // added giftCertificate
        _spnGcPaymentTotal.InnerText = decimal.Round(eventMetricsViewData.GiftCertificateRevenue, 2).ToString();
        _lnkGcPaymentCount.Text      = eventMetricsViewData.GiftCertificateCount.ToString();

        sphostname.InnerText = eventHostViewData.OrganizationName;
        agmap.HRef           = "http://maps.google.com/maps?f=q&hl=en&geocode=&q=" + eventHostViewData.StreetAddressLine1 + "," + eventHostViewData.City + "," + eventHostViewData.State + "," + eventHostViewData.Zip + "&ie=UTF8&z=16";

        string poddetailstring = "N/A";

        foreach (EEventPod objeventpod in eventPodDetails.EventPod)
        {
            if (poddetailstring == "N/A")
            {
                poddetailstring = "";
            }

            string strpodteam        = "";
            string strpoddescription = "";
            string vandescription    = "";

            strpoddescription = "<p class='roundarrowpopuprow_ecl'>Processing Capacity of " + objeventpod.Pod.PodProcessingCapacity.ToString() + " </p>";
            vandescription    = "<p class='roundarrowpopuprow_ecl'> Vehicle: " + objeventpod.Pod.Van.Name + "," + objeventpod.Pod.Van.Make + " (" + objeventpod.Pod.Van.VIN + ") </p>";

            foreach (EFranchiseeFranchiseeUser objfranchiseefruser in objeventpod.Pod.TeamIDList)
            {
                strpodteam += "&bull; &nbsp;" + objfranchiseefruser.FranchiseeUser.User.FirstName + " " + objfranchiseefruser.FranchiseeUser.User.MiddleName + " " + objfranchiseefruser.FranchiseeUser.User.LastName + "(" + objfranchiseefruser.RoleType + ")(" + objfranchiseefruser.FranchiseeFranchiseeUserID + ")<br />";
            }

            string currentpod = "<div class='maindiv_roundmbox_ecl'><div class='innerdiv_roundmbox'><div class='lefttop_roundmbox'><img src='/App/Images/specer.gif' width='254' height='15' /></div><div class='midinner_roundmbox'>";
            currentpod += "<p class='headertxt_roundmbox_ecl'>Pod Description</p><div class='divinnerbody_mbox'>";
            currentpod += strpoddescription;
            currentpod += "<p><img src='/App/Images/specer.gif' width='220' height='5' /></p>" + vandescription;
            currentpod += "<p><img src='/App/Images/specer.gif' width='220' height='5' /></p><p class='roundarrowpopuprow_ecl'><u>Team Detail</u></p>";
            currentpod += "<p><img src='/App/Images/specer.gif' width='220' height='5' /></p><div class='roundarrowpopuprow_ecl'>";
            currentpod += strpodteam + "</div></div></div><div class='roundcornerbot_roundmbox'>";
            currentpod += "<img src='/App/Images/specer.gif' width='254' height='15' /></div></div></div>";

            poddetailstring = poddetailstring + objeventpod.Pod.Name + "<a href='javascript:void(0)' class='apd'> (More Info) <span class='tooltip'> " + currentpod + " </span> </a>";

            aConfigureTeam.HRef = "javascript:OpenPopUp('/App/Franchisee/Technician/TeamConfiguration.aspx?EventID=" + eventHostViewData.EventId + "&PodID=" + objeventpod.Pod.PodID + "&EventDate=" + eventHostViewData.EventDate.ToShortDateString() + "');";
        }
        sppoddetail.InnerHtml = poddetailstring;

        // BEGIN added upgrade/downgrade story(#7548)
        int totalCustomer = (eventMetricsViewData.PaidCustomersCount + eventMetricsViewData.UnPaidCount) - eventMetricsViewData.NoShowCustomersCount;

        _lnkAverageCustomers.Text = totalCustomer > 0 ? totalCustomer.ToString() : "0";

        _spnAverageRevenueAmount.InnerHtml = totalCustomer > 0
                                        ? decimal.Round((totalRevenue / totalCustomer), 2).ToString()
                                        : "0.00";

        _spnUnpaidTotal.InnerHtml = decimal.Round(eventMetricsViewData.UnPaidExcluedeNoShowRevenue, 2).ToString();
        _lnkUnpaidCount.Text      = eventMetricsViewData.UnPaidExcluedeNoShowCount.ToString();

        // END added upgrade/downgrade story(#7548)

        // Added HipaaStatus
        decimal _HipaapercentageDecimal;

        if (eventMetricsViewData.HipaaSignedCount > 0)
        {
            _HipaapercentageDecimal = Math.Round(
                Convert.ToDecimal(eventMetricsViewData.HipaaSignedCount) /
                Convert.ToDecimal(eventMetricsViewData.HipaaSignedCount + eventMetricsViewData.HipaaUnSignedCount) * 100,
                2);

            if (_HipaapercentageDecimal > 0)
            {
                _spnHippaStatus.InnerText = Convert.ToString(_HipaapercentageDecimal) + "% " + "(" +
                                            eventMetricsViewData.HipaaSignedCount + "/" +
                                            (eventMetricsViewData.HipaaSignedCount + eventMetricsViewData.HipaaUnSignedCount) + ")";
            }
        }
        else
        {
            _spnHippaStatus.InnerText = "0% (0/0)";
        }
    }
예제 #4
0
    /// <summary>
    ///
    /// </summary>
    /// <param name="eventid"></param>
    public void LoadEventSummaryPanel(EventMetricsViewData eventMetricsViewData, EventHostViewData eventHostViewData, EEvent eventPodDetails)
    {
        if (eventMetricsViewData == null || eventHostViewData == null)
        {
            return;
        }

        // format phone no.
        CommonCode objCommonCode = new CommonCode();

        aPrintBulkResult.HRef = "javascript:showPopup('" + eventHostViewData.EventId + "');";

        aExistingCustomer.HRef = ResolveUrl("~/App/Common/SearchCustomer.aspx?Eventid=" + eventHostViewData.EventId);

        ancopenpopupaddslot.HRef = "/App/Common/AddSlot.aspx?EventDate=" + eventHostViewData.EventDate.ToShortDateString() + "&EventId=" + eventHostViewData.EventId + "&keepThis=true&TB_iframe=true&width=295&height=140&modal=true";

        if (IoC.Resolve <ISettings>().ShowPartnerRelease)
        {
            aEndOfDay.HRef = "javascript:popupmenu4('/Scheduling/Event/EndofDay?id=" + eventHostViewData.EventId + "',1100,900)";
        }

        updateHostRankingAnchor.HRef = "javascript:popupmenu3('/App/Franchisee/Technician/EndOfDayProcess.aspx?HostRanking=true&EventID=" + eventHostViewData.EventId + "&EventName=" + eventHostViewData.Name.Replace("'", "\\'") + "',550,620)";

        Session["EventID"]     = eventHostViewData.EventId;
        ViewState["EventDate"] = eventHostViewData.EventDate;
        ViewState["EventName"] = eventHostViewData.Name;

        var notes = IoC.Resolve <IEventRepository>().GetEmrNotes(eventHostViewData.EventId);

        if (notes != null)
        {
            EmrNotes = notes.Text;
        }

        Session["EventDate"] = eventHostViewData.EventDate;
        Session["EventName"] = eventHostViewData.Name;

        if (Convert.ToDateTime(eventHostViewData.EventDate).Date > DateTime.Now.Date)
        {
            spResultStatus.Visible = false;
            spEndofDay.Style[System.Web.UI.HtmlTextWriterStyle.Display] = "none";
        }
        else
        {
            aResultStatus.HRef = "/Medical/Results/ResultStatusList?EventId=" + eventHostViewData.EventId;
        }

        speventdate.InnerText = Convert.ToDateTime(eventHostViewData.EventDate).ToShortDateString();
        speventloc.InnerText  = CommonCode.AddressSingleLine(eventHostViewData.StreetAddressLine1, eventHostViewData.StreetAddressLine2, eventHostViewData.City, eventHostViewData.State, eventHostViewData.Zip);
        sphostphone.InnerText = objCommonCode.FormatPhoneNumberGet(eventPodDetails.Host.PhoneOffice);

        var hostFacilityRankingService = IoC.Resolve <IHostFacilityRankingService>();
        var hostFacilityRankingbyHsc   = hostFacilityRankingService.GetHostFacilityRankingByHSC(eventHostViewData.HostId);

        if (hostFacilityRankingbyHsc != null)
        {
            spPlugPoints.InnerText = hostFacilityRankingbyHsc.NumberOfPlugPoints != null?hostFacilityRankingbyHsc.NumberOfPlugPoints.Value.ToString() : "";

            spRoomSize.InnerText        = hostFacilityRankingbyHsc.RoomSize;
            spInternetAccess.InnerText  = hostFacilityRankingbyHsc.InternetAccess != null ? hostFacilityRankingbyHsc.InternetAccess.Name : "";
            spHostRanking.InnerText     = hostFacilityRankingbyHsc.Ranking != null ? hostFacilityRankingbyHsc.Ranking.Name : "";
            spRoomNeedCleared.InnerText = hostFacilityRankingbyHsc.RoomNeedsCleared != null ? (hostFacilityRankingbyHsc.RoomNeedsCleared.Value ? "Yes" : "No") : "";
        }

        ViewState["HostName"]         = eventHostViewData.OrganizationName;
        ViewState["HostAddress"]      = eventHostViewData.StreetAddressLine1;
        ViewState["HostCityStateZip"] = eventHostViewData.City + " " + eventHostViewData.State + " " + eventHostViewData.Zip;

        Session["HostName"]         = eventHostViewData.OrganizationName;
        Session["HostAddress"]      = eventHostViewData.StreetAddressLine1;
        Session["HostCityStateZip"] = eventHostViewData.City + " " + eventHostViewData.State + " " + eventHostViewData.Zip;

        spEIPdeposit.InnerHtml = decimal.Round(eventMetricsViewData.CashRevenue + eventMetricsViewData.CheckRevenue, 2).ToString();

        speventid.InnerHtml = eventHostViewData.EventId.ToString();

        spcashpayment.InnerHtml     = decimal.Round(eventMetricsViewData.CashRevenue, 2).ToString();
        spcardpayment.InnerHtml     = decimal.Round(eventMetricsViewData.ChargeCardRevenue, 2).ToString();
        spchequepayment.InnerHtml   = decimal.Round(eventMetricsViewData.CheckRevenue, 2).ToString();
        spBPeCheckPayment.InnerHtml = decimal.Round(eventMetricsViewData.ECheckRevenue, 2).ToString();
        decimal totalRevenue = eventMetricsViewData.ChargeCardRevenue + eventMetricsViewData.CheckRevenue +
                               eventMetricsViewData.CashRevenue + eventMetricsViewData.ECheckRevenue +
                               eventMetricsViewData.GiftCertificateRevenue +
                               eventMetricsViewData.UnPaidExcluedeNoShowRevenue;

        sptotalpayment.InnerHtml = decimal.Round(totalRevenue, 2).ToString();

        ancregistered.Text         = eventMetricsViewData.RegisteredCustomersCount.ToString();
        spncancelled.InnerHtml     = "<a href=\"javascript:void(0)\" onclick=\"showCancelledCustomers();\">" + eventMetricsViewData.CancelledCustomersCount.ToString() + "</a>";
        ancnoshow.Text             = eventMetricsViewData.NoShowCustomersCount.ToString();
        ancpaid.Text               = eventMetricsViewData.PaidCustomersCount.ToString();
        ancunpaid.Text             = eventMetricsViewData.UnPaidCount.ToString();
        ancactual.Text             = eventMetricsViewData.AttendedCustomersCount.ToString();
        anccardpaymentcount.Text   = eventMetricsViewData.ChargeCardCount.ToString();
        anccashpaymentcount.Text   = eventMetricsViewData.CashCount.ToString();
        ancchequepaymentcount.Text = eventMetricsViewData.CheckCount.ToString();
        lnkBPeCheckPayment.Text    = eventMetricsViewData.ECheckCount.ToString();
        if (eventPodDetails.FranchiseeFranchiseeUser != null)
        {
            spnSalesrepname.InnerHtml = eventPodDetails.FranchiseeFranchiseeUser.FranchiseeUser.User.FirstName + " " + eventPodDetails.FranchiseeFranchiseeUser.FranchiseeUser.User.LastName;
            if (eventPodDetails.FranchiseeFranchiseeUser.FranchiseeUser.User.PhoneHome.Trim().Length > 0)
            {
                spnContactInfo.InnerHtml = objCommonCode.FormatPhoneNumberGet(eventPodDetails.FranchiseeFranchiseeUser.FranchiseeUser.User.PhoneHome);
            }
            else
            {
                spnContactInfo.InnerHtml = eventPodDetails.FranchiseeFranchiseeUser.FranchiseeUser.User.EMail1;
            }
        }
        // BEGIN added upgrade/downgrade story(#7548)
        spUpgradeCount.InnerHtml   = decimal.Round(eventMetricsViewData.UpGradePayments, 2).ToString();
        lnkUpgradeCount.Text       = eventMetricsViewData.UpGradePaymentCount.ToString();
        spDowngradeCount.InnerHtml = Convert.ToString(decimal.Round(eventMetricsViewData.DownGradePayments < 0 ? eventMetricsViewData.DownGradePayments * -1 : eventMetricsViewData.DownGradePayments, 2));
        lnkDowngradeCount.Text     = eventMetricsViewData.DownGradePaymentCount.ToString();
        // END added upgrade/downgrade story(#7548)

        // BEGIN added upgrade/downgrade story(#7548)
        //spUpgradeCount.InnerHtml = eventMetricsViewData.UpGradePayments.ToString();
        //lnkUpgradeCount.Text = eventMetricsViewData.UpGradePaymentCount.ToString();
        //spDowngradeCount.InnerHtml = Convert.ToString(eventMetricsViewData.DownGradePayments < 0 ? eventMetricsViewData.DownGradePayments * -1 : eventMetricsViewData.DownGradePayments);
        //lnkDowngradeCount.Text = eventMetricsViewData.DownGradePaymentCount.ToString();

        int totalCustomer = (eventMetricsViewData.PaidCustomersCount + eventMetricsViewData.UnPaidCount) - eventMetricsViewData.NoShowCustomersCount;

        _spnAverageRevenueCount.InnerText = totalCustomer > 0
                                        ? decimal.Round((totalRevenue / totalCustomer), 2).ToString()
                                        : "0.00";
        _lnkAverageCustomers.Text = totalCustomer > 0 ? totalCustomer.ToString() : "0";

        _spnUnpaidTotal.InnerText = decimal.Round(eventMetricsViewData.UnPaidExcluedeNoShowRevenue, 2).ToString();
        _lnkUnpaidCount.Text      = eventMetricsViewData.UnPaidExcluedeNoShowCount.ToString();

        // added Onsite for Technician
        spOnsiteCount.InnerText = decimal.Round(eventMetricsViewData.OnsitePayments, 2).ToString();
        lnkOnsiteCount.Text     = eventMetricsViewData.OnsitePaymentCount.ToString();

        // END added upgrade/downgrade story(#7548)

        //TODO: Need to filter customers paid by GC
        // added giftCertificate
        _spnGcPaymentTotal.InnerText = decimal.Round(eventMetricsViewData.GiftCertificateRevenue, 2).ToString();
        _lnkGcPaymentCount.Text      = eventMetricsViewData.GiftCertificateCount.ToString();

        // Added HipaaStatus
        decimal _HipaapercentageDecimal;

        if (eventMetricsViewData.HipaaSignedCount > 0)
        {
            _HipaapercentageDecimal = Math.Round(
                Convert.ToDecimal(eventMetricsViewData.HipaaSignedCount) /
                Convert.ToDecimal(eventMetricsViewData.HipaaSignedCount + eventMetricsViewData.HipaaUnSignedCount) * 100,
                2);

            _spnHippaStatus.InnerHtml = Convert.ToString(_HipaapercentageDecimal) + "% " + "(" +
                                        eventMetricsViewData.HipaaSignedCount + "/" +
                                        (eventMetricsViewData.HipaaSignedCount + eventMetricsViewData.HipaaUnSignedCount) + ")";
        }
        else
        {
            _spnHippaStatus.InnerHtml = "0% (0/0)";
        }

        txtEventNotes.Text = eventHostViewData.TechnicianNotes;

        sphostname.InnerHtml = eventHostViewData.OrganizationName;
        sphostname.InnerHtml = eventHostViewData.OrganizationName;

        string googleMapLink = CommonCode.GetGoogleMapAddress(eventHostViewData.StreetAddressLine1, eventHostViewData.City, eventHostViewData.State, eventHostViewData.Zip, eventHostViewData.Latitude + "," + eventHostViewData.Longitude, eventHostViewData.UseLatitudeAndLongitudeForMapping);

        agmap.HRef = googleMapLink;
        //agmap.HRef = "http://maps.google.com/maps?f=q&hl=en&geocode=&q=" + objevent.Host.Address.Address1 + "," + objevent.Host.Address.City + "," + objevent.Host.Address.State + "," + objevent.Host.Address.Zip + "&ie=UTF8&z=16";


        // Set Google Address Verification Status
        if (eventHostViewData.GoogleAddressVerifiedBy.HasValue)
        {
            string googleAddressVerified = GetAddressVerifiedUser(eventHostViewData.GoogleAddressVerifiedBy.Value);
            _addressVerifiedStatus.InnerHtml = googleAddressVerified;
        }
        else
        {
            _addressVerifiedStatus.InnerHtml = CommonCode.GetGoogleAddressNotVerifiedJtip();
        }

        string poddetailstring = "N/A";

        foreach (EEventPod objeventpod in eventPodDetails.EventPod)
        {
            if (poddetailstring == "N/A")
            {
                poddetailstring = "";
            }

            string strpodteam        = string.Empty;
            string strpoddescription = string.Empty;
            string vandescription    = string.Empty;
            strpoddescription = "<p class='prow'>Processing Capacity of " + objeventpod.Pod.PodProcessingCapacity.ToString() + " </p>";
            vandescription    = "<p class='prow'> Vehicle: " + objeventpod.Pod.Van.Name + "," + objeventpod.Pod.Van.Make + " (" + objeventpod.Pod.Van.VIN + ") </p>";
            foreach (EFranchiseeFranchiseeUser objfranchiseefruser in objeventpod.Pod.TeamIDList)
            {
                strpodteam += "&bull; &nbsp;" + objfranchiseefruser.FranchiseeUser.User.FirstName + " " + objfranchiseefruser.FranchiseeUser.User.MiddleName + " " + objfranchiseefruser.FranchiseeUser.User.LastName + "(" + objfranchiseefruser.RoleType + ")(" + objfranchiseefruser.FranchiseeFranchiseeUserID + ")<br />";
            }
            string currentpod = "<div class='maindiv_roundmbox_ecl'>" + strpoddescription;
            currentpod += vandescription;
            currentpod += "<p class='prow'><u>Team Detail</u></p>";
            currentpod += "<p class='prow'>" + strpodteam + "</p></div>";

            poddetailstring = poddetailstring + objeventpod.Pod.Name + "<a href='javascript:void(0)' class='apd jtipLocal' title=\"Pod Details|" + currentpod + "\"> (More Info) </a>";
        }
        sppoddetail.InnerHtml = poddetailstring;
    }
        public EventMetricsViewData CreateEventMetricsViewData(IEnumerable <Core.Finance.Domain.Order> orders, IEnumerable <EventPackage> eventPackages,
                                                               IEnumerable <EventTest> eventTests, OrganizationRoleUser organizationRoleUser, IEnumerable <EventCustomer> eventCustomers)
        {
            var eventMetricsViewData = new EventMetricsViewData();

            var eventTestIdAndCountPairs = new List <OrderedPair <long, int> >();

            foreach (var order in orders)
            {
                //TODO: move this code in proper place
                var  activeOrderDetail = new OrderController().GetActiveOrderDetail(order);
                long eventCustomerId   = 0;
                eventCustomerId = activeOrderDetail != null
                                      ? activeOrderDetail.EventCustomerOrderDetail.EventCustomerId
                                      : 0;
                var eventCustomer = eventCustomers.SingleOrDefault(ec => ec.Id == eventCustomerId);



                var noShow = eventCustomer != null ? eventCustomer.NoShow : false;

                // The count is not applicable for no show customers.
                //if (noShow) return;

                eventMetricsViewData.RegisteredCustomersCount++;
                // It means the order is cancelled.
                if (eventCustomer == null || !eventCustomer.AppointmentId.HasValue)
                {
                    eventMetricsViewData.CancelledCustomersCount++;
                    continue;
                }

                eventMetricsViewData.PaidCustomersCount += order.DiscountedTotal <= order.TotalAmountPaid ? 1 : 0;

                //CreatePaymentModeMetrics(eventMetricsViewData, order, noShow);

                CreateRevenueMetrics(eventMetricsViewData, order, noShow);

                //CreateChangeOrderMetrics(eventMetricsViewData, order, organizationRoleUser);

                var eventPackageId =
                    order.OrderDetails.Where(od =>
                                             od.OrderItemStatus.OrderStatusState == OrderStatusState.FinalSuccess &&
                                             od.OrderItem.OrderItemType == OrderItemType.EventPackageItem).Select(od => od.OrderItem.ItemId).
                    SingleOrDefault();

                var eventTestIds =
                    order.OrderDetails.Where(od =>
                                             od.OrderItemStatus.OrderStatusState == OrderStatusState.FinalSuccess &&
                                             od.OrderItem.OrderItemType == OrderItemType.EventTestItem).Select(
                        od => od.OrderItem.ItemId).ToArray();

                var eventPackage = eventPackages.Where(ep => ep.Id == eventPackageId).SingleOrDefault();

                if (eventPackage != null)
                {
                    eventTestIds = eventTestIds.Concat(eventPackage.Tests.Select(t => t.Id)).ToArray();
                }

                foreach (var eventTestId in eventTestIds)
                {
                    var inList = eventTestIdAndCountPairs.Find(p => p.FirstValue == eventTestId);
                    if (inList != null)
                    {
                        inList.SecondValue++;
                    }
                    else
                    {
                        eventTestIdAndCountPairs.Add(new OrderedPair <long, int>(eventTestId, 1));
                    }
                }
            }

            eventMetricsViewData.TestOrderedPair =
                eventTestIdAndCountPairs.Select(et => new OrderedPair <string, int>(eventTests.Where(t => t.Id == et.FirstValue).Select(t => t.Test.Name).SingleOrDefault(), et.SecondValue));

            return(eventMetricsViewData);
        }
        private void CreateChangeOrderMetrics(EventMetricsViewData eventMetricsViewData,
                                              Core.Finance.Domain.Order order, OrganizationRoleUser organizationRoleUser)
        {
            // It means the order has been changed, so either downgrade or upgrade will occur for such cases only.
            if (order.DiscountedTotal == order.TotalAmountPaid && order.OrderDetails.Count > 1)
            {
                order.OrderDetails.ForEach(od =>
                {
                    od.DataRecorderMetaData.DateCreated =
                        od.DataRecorderMetaData.DateCreated.GetDateWithDifferentTime(
                            od.DataRecorderMetaData.DateCreated.Hour,
                            od.DataRecorderMetaData.DateCreated.Minute,
                            od.DataRecorderMetaData.DateCreated.Second);
                    if (od.Price < 0)
                    {
                        od.Price = 0;
                    }
                });
                Func <OrderDetail, decimal> amountOfDiscount = od => od.SourceCodeOrderDetail == null ? 0 : od.SourceCodeOrderDetail.Amount;
                var dateCreatedGroups = order.OrderDetails.GroupBy(od => od.DataRecorderMetaData.DateCreated).Select(
                    g =>
                    new
                {
                    g.Key,
                    TotalValue   = g.Sum(od => (od.Price * od.Quantity) - (amountOfDiscount(od))),
                    AvailedValue = g.Where(od => od.OrderItemStatus.OrderStatusState == OrderStatusState.FinalSuccess
                                           //EventPackageItemStatus.Availed || od.OrderItemStatus == EventTestItemStatus.Availed
                                           ).Sum(
                        od => ((od.Price * od.Quantity) - amountOfDiscount(od))),
                    CreatorId = g.Select(od => od.DataRecorderMetaData.DataRecorderCreator.Id).ToList()
                }).ToList();

                var availedPriceToBeAddedToNextGroup = 0m;

                for (int counter = 0; counter < (dateCreatedGroups.Count - 1); counter++)
                {
                    var changedOrderDetailOrganizationRoleUser =
                        _organizationRoleUserRepository.GetOrganizationRoleUser(
                            dateCreatedGroups[counter + 1].CreatorId.LastOrDefault());

                    var originalOrderDetailSum = dateCreatedGroups[counter].TotalValue +
                                                 availedPriceToBeAddedToNextGroup;
                    availedPriceToBeAddedToNextGroup += dateCreatedGroups[counter].AvailedValue;

                    var changedOrderDetailSum = dateCreatedGroups[counter + 1].TotalValue +
                                                availedPriceToBeAddedToNextGroup;

                    if (changedOrderDetailSum == 0)
                    {
                        continue;
                    }

                    var roleId = GetParentRoleIdByRoleId(organizationRoleUser.RoleId);

                    if (roleId == (int)Roles.Technician)
                    {
                        if (GetParentRoleIdByRoleId(changedOrderDetailOrganizationRoleUser.RoleId) == (int)Roles.Technician)
                        {
                            if (originalOrderDetailSum > changedOrderDetailSum)
                            {
                                eventMetricsViewData.DownGradePaymentCount++;
                                eventMetricsViewData.DownGradePayments += originalOrderDetailSum - changedOrderDetailSum;
                            }
                            if (originalOrderDetailSum < changedOrderDetailSum)
                            {
                                eventMetricsViewData.UpGradePaymentCount++;
                                eventMetricsViewData.UpGradePayments += changedOrderDetailSum - originalOrderDetailSum;
                            }
                        }
                    }
                    else
                    {
                        if (originalOrderDetailSum > changedOrderDetailSum)
                        {
                            eventMetricsViewData.DownGradePaymentCount++;
                            eventMetricsViewData.DownGradePayments += originalOrderDetailSum - changedOrderDetailSum;
                        }
                        if (originalOrderDetailSum < changedOrderDetailSum)
                        {
                            eventMetricsViewData.UpGradePaymentCount++;
                            eventMetricsViewData.UpGradePayments += changedOrderDetailSum - originalOrderDetailSum;
                        }
                    }
                }
            }
        }