using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using CFS.Domain;

namespace Demo
{
    public class TransactionReportItemInfo
    {
        public long TransactionId { get; set; }
        public decimal Amount { get; set; }
        public TransactionStatusType Status { get; set; }
        public DateTime SubmissionDate { get; set; }
    }

    public class TransactionReportItem
    {
        public TransactionStatusType Status { get; set; }
        public long TransactionCount { get; set; }
        public decimal TotalAmount { get; set; }
        public decimal AverageAmount { get; set; }
        public decimal MaxAmount { get; set; }
        public decimal MinAmount { get; set; }        
    }

    public class TransactionReportItemGroup
    {
        private readonly string ACCEPTED = TransactionStatusType.Accepted.ToString();
        private readonly string REJECTED = TransactionStatusType.Rejected.ToString();
        private readonly string NEEDSREVIEW = TransactionStatusType.NeedsReview.ToString();
        private readonly string RECEIVED = TransactionStatusType.Received.ToString();
        public string ItemDate { get; set; }

        public TransactionReportItem AcceptedTransactions
        {
            get
            {
                TransactionReportItem item;
                Items.TryGetValue(ACCEPTED, out item);
                return item;
            }
        }

        public TransactionReportItem RejectedTransactions
        {
            get
            {
                TransactionReportItem item;
                Items.TryGetValue(REJECTED, out item);
                return item;
            }
        }

        public TransactionReportItem NeedReviewTransactions
        {
            get
            {
                TransactionReportItem item;
                Items.TryGetValue(NEEDSREVIEW, out item);
                return item;
            }
        }

        public TransactionReportItem ReceivedTransactions
        {
            get
            {
                TransactionReportItem item;
                Items.TryGetValue(RECEIVED, out item);
                return item;
            }
        }
        public Dictionary<string, TransactionReportItem> Items { get; set; }
    }

}