
@using Telerik.Web.Mvc.UI
@model Demo.TransactionReportInfo

@{
    ViewBag.Title = "TransactionReport";
    var options = Model.ReportRequest.ReportOptions;   
    var reportTitle = string.IsNullOrWhiteSpace(options.Title) ? "Transaction Report" : options.Title;

    var ACCEPTED = TransactionStatusType.Accepted.ToString();
    var REJECTED = TransactionStatusType.Rejected.ToString();
    var NEEDSREVIEW = TransactionStatusType.NeedsReview.ToString();
    var RECEIVED = TransactionStatusType.Received.ToString();
    
    //var acceptedTransactions = Model.TransactionItemGroups.Where(i => i.Items.ContainsKey(ACCEPTED)).Select(item => item.Items[ACCEPTED].TotalAmount).ToList();
    //var rejectedTransactions = Model.TransactionItemGroups.Where(i => i.Items.ContainsKey(REJECTED)).Select(item => item.Items[REJECTED].TotalAmount).ToList();
    //var needReviewTransactions = Model.TransactionItemGroups.Where(i => i.Items.ContainsKey(NEEDSREVIEW)).Select(item => item.Items[NEEDSREVIEW].TotalAmount).ToList();
    //var receivedTransactions = Model.TransactionItemGroups.Where(i => i.Items.ContainsKey(RECEIVED)).Select(item => item.Items[RECEIVED].TotalAmount).ToList();         
}



@(Html.Telerik()
     .Chart(Model.TransactionItemGroups)
     .Name("chart")
     .Theme("Office2010Silver")
     .Title(title => title.Text(reportTitle).Visible(true))
     .Legend(legend => legend
                           .Position(ChartLegendPosition.Right)
                           .Visible(true))
     .SeriesDefaults(series =>
                         {
                             series.Bar().Stack(options.Stack);
                             series.Column().Stack(options.Stack);
                             series.Line().Labels(labels => labels.Format("${0:#,##0}").Visible(true)).Stack(options.Stack);
                             //series.VerticalLine().Labels(labels => labels.Format("${0:#,##0}").Position(ChartLineLabelsPosition.Right).Visible(true)).Stack(options.Stack);
                             //series.Area().Stack(options.Stack);
                             //series.VerticalArea().Stack(options.Stack);
                         })
         .Series(series =>
                     {
                         
                         switch (options.ChartType)
                         {
                             case ChartType.ColumnStacked:
                             case ChartType.Column:
                                 series.Column("AcceptedTransactions.TotalAmount").Name(ACCEPTED).Color("Green");
                                 series.Column("RejectedTransactions.TotalAmount").Name(REJECTED).Color("Red");
                                 series.Column("ReceivedTransactions.TotalAmount").Name(RECEIVED).Color("Blue");
                                 series.Column("NeedReviewTransactions.TotalAmount").Name(NEEDSREVIEW).Color("Yellow");
                                 break;
                             case ChartType.Line:
                                 series.Line("AcceptedTransactions.TotalAmount").Name(ACCEPTED).Color("Green").Markers(marker => marker.Type(ChartMarkerShape.Circle));
                                 series.Line("RejectedTransactions.TotalAmount").Name(REJECTED).Color("Red").Markers(marker => marker.Type(ChartMarkerShape.Circle));
                                 series.Line("ReceivedTransactions.TotalAmount").Name(RECEIVED).Color("Blue").Markers(marker => marker.Type(ChartMarkerShape.Circle));
                                 series.Line("NeedReviewTransactions.TotalAmount").Name(NEEDSREVIEW).Color("Yellow").Markers(marker => marker.Type(ChartMarkerShape.Circle));
                                 break;
                             case ChartType.Bar:
                                 series.Bar("AcceptedTransactions.TotalAmount").Name(ACCEPTED).Color("Green");
                                 series.Bar("RejectedTransactions.TotalAmount").Name(REJECTED).Color("Red");
                                 series.Bar("ReceivedTransactions.TotalAmount").Name(RECEIVED).Color("Blue");
                                 series.Bar("NeedReviewTransactions.TotalAmount").Name(NEEDSREVIEW).Color("Yellow");
                                 break;
                         }
                     }
     )

         .CategoryAxis(axis => axis.Categories(m => m.ItemDate))
     .ValueAxis(axis => axis.Numeric().Labels(labels => labels.Format("${0:#,##0}")))
     .Tooltip(tooltip =>
                  {
                      tooltip.Visible(true);
                      tooltip.Format("${0:#,##0}");
                      tooltip.Template(("series name: <#= series.name #> value: <#= dataItem.TotalAmount #>"));
                  }))
          
    