public List <AffiliateReferral> FindByCriteria(AffiliateReferralSearchCriteria criteria, int pageNumber, int pageSize, ref int rowCount)
        {
            IQueryable <Data.EF.bvc_AffiliateReferral> items = repository.Find().Where(y => y.StoreId == context.CurrentStore.Id);

            if (criteria.AffiliateId > 0)
            {
                items = items.Where(y => y.AffiliateId == criteria.AffiliateId);
            }
            if (criteria.StartDateUtc.HasValue && criteria.EndDateUtc.HasValue)
            {
                items = items.Where(y => y.TimeOfReferralUtc >= criteria.StartDateUtc.Value && y.TimeOfReferralUtc <= criteria.EndDateUtc.Value);
            }

            if (items != null)
            {
                rowCount = items.Count();
                var x2 = items.OrderBy(y => y.Id).Skip((pageNumber - 1) * pageSize).Take(pageSize);
                return(ListPoco(x2));
            }
            return(new List <AffiliateReferral>());
        }
示例#2
0
        protected void AffiliatesDataList_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item | e.Item.ItemType == ListItemType.AlternatingItem)
            {
                if (e.Item.DataItem != null)
                {
                    OrderSearchCriteria orderCriteria = new OrderSearchCriteria();
                    AffiliateReferralSearchCriteria referralCriteria = new AffiliateReferralSearchCriteria();

                    Affiliate affiliate = (Affiliate)e.Item.DataItem;

                    orderCriteria.AffiliateId = affiliate.ReferralId;

                    DateTime zonedStart = new DateTime(int.Parse(YearDropDownList.SelectedValue), int.Parse(MonthDropDownList.SelectedValue), 1, 0, 0, 0, 0);
                    orderCriteria.StartDateUtc = TimeZoneInfo.ConvertTimeToUtc(zonedStart, MTApp.CurrentStore.Settings.TimeZone);
                    orderCriteria.EndDateUtc = orderCriteria.StartDateUtc.AddMonths(1);
                    orderCriteria.EndDateUtc = orderCriteria.EndDateUtc.AddSeconds(-1);

                    referralCriteria.AffiliateId = affiliate.Id;
                    referralCriteria.StartDateUtc = orderCriteria.StartDateUtc;
                    referralCriteria.EndDateUtc = orderCriteria.EndDateUtc;

                    List<OrderSnapshot> affiliateOrders = MTApp.OrderServices.Orders.FindByCriteria(orderCriteria);

                    Label currLabel = (Label)e.Item.FindControl("ReferralsLabel");
                    int totalCount = 0;
                    List<AffiliateReferral> referrals = MTApp.ContactServices.AffiliateReferrals.FindByCriteria(referralCriteria, 1, int.MaxValue, ref totalCount);
                    currLabel.Text = referrals.Count.ToString();

                    currLabel = (Label)e.Item.FindControl("SalesLabel");
                    currLabel.Text = affiliateOrders.Count.ToString();

                    currLabel = (Label)e.Item.FindControl("ConversionLabel");
                    double conversion = (double)affiliateOrders.Count / (double)referrals.Count;
                    currLabel.Text = string.Format("{0:p}", conversion);

                    decimal total = 0;

                    foreach (OrderSnapshot order in affiliateOrders)
                    {
                        total += order.TotalOrderBeforeDiscounts;
                    }

                    currLabel = (Label)e.Item.FindControl("CommissionLabel");
                    decimal commission = 0;
                    string commissionText = string.Empty;
                    if (affiliate != null)
                    {
                        if (affiliate.CommissionType == AffiliateCommissionType.FlatRateCommission)
                        {
                            commission = Math.Round(affiliate.CommissionAmount * (decimal)affiliateOrders.Count, 2);
                            commissionText = string.Format("{0:c}", affiliate.CommissionAmount) + " per";
                        }
                        else
                        {
                            commission = Math.Round((affiliate.CommissionAmount / (decimal)100) * total, 2);
                            commissionText = string.Format("{0:p}", (affiliate.CommissionAmount / (decimal)100));
                        }

                        currLabel.Text = commissionText + " = " + string.Format("{0:c}", commission);
                    }

                    GridView gv = (GridView)e.Item.FindControl("OrdersGridView");
                    if (gv != null)
                    {
                        gv.DataSource = affiliateOrders;
                        gv.DataKeyNames = new string[] { "bvin" };
                        gv.DataBind();
                    }

                    Literal openDiv = (Literal)e.Item.FindControl("openDiv");
                    Literal closeDiv = (Literal)e.Item.FindControl("closeDiv");

                    if ((openDiv != null) & (closeDiv != null))
                    {
                        openDiv.Text = "<a href=\"";
                        openDiv.Text += "javascript:toggle('aff" + affiliate.Id + "');";
                        openDiv.Text += "\"><img id=\"aff" + affiliate.Id + "Carrot\" name=\"aff" + affiliate.Id + "Carrot\" src=\"../../../BVAdmin/Images/Buttons/Details.png\" border=\"0\" alt=\"Details\"></a></img><div style=\"display:none\" id=\"aff" + affiliate.Id + "\" class=\"hidden\">";

                        closeDiv.Text = "</div>";
                    }
                }
            }
        }