public PaymentStats payment_details([FromBody] User user)
        {
            PaymentStats stats = new PaymentStats()
            {
                total_earned = 0, total_traffic = 0, available = 0, last_paid = 0, unpaid_traffic = 0
            };
            user_earned earned = new user_earned()
            {
                premium = 0, non_premium = 0
            };
            get_payment_Result last        = new get_payment_Result();
            DateTime           joiningDate = new DateTime();

            using (var join = new digimarketEntities1().get_joining_date(user.uid))
            {
                joiningDate = join.FirstOrDefault <get_joining_date_Result>().date;
            }

            user_traffic traffic = new TrafficController().UserSession(new DataModel.User_Analytic_Input()
            {
                uid   = user.uid, from_date = new ArticleController().convertDate(joiningDate), to_date = new ArticleController().convertDate(DateTime.Now),
                extra = user.username
            });

            using (var rate = new digimarketEntities1().get_rate("premium"))
            {
                earned.premium = earned.premium + ((traffic.premium * Decimal.ToDouble(rate.FirstOrDefault <get_rate_Result>().rate)) / 1000);
            }
            using (var rate = new digimarketEntities1().get_rate("non-premium"))
            {
                earned.non_premium = earned.non_premium + ((traffic.non_premium * Decimal.ToDouble(rate.FirstOrDefault <get_rate_Result>().rate)) / 1000);
            }

            stats.total_traffic = traffic.premium + traffic.non_premium;

            stats.total_earned = earned.premium + earned.non_premium;
            using (var history = new digimarketEntities1().get_payment(user.uid))
            {
                try {
                    last = history.OrderByDescending(m => m.payment_date).FirstOrDefault() ?? new get_payment_Result()
                    {
                        traffic = 0, amount = 0, uid = user.uid
                    };
                }
                catch (Exception ex)
                {
                }
            }

            stats.last_paid = Decimal.ToDouble(last.amount);
            using (var history = new digimarketEntities1().get_total_earned(user.uid))
            {
                try
                {
                    var result = history.FirstOrDefault <get_total_earned_Result>();
                    stats.available      = stats.total_earned - Decimal.ToDouble(result.totalAmount ?? 0);
                    stats.unpaid_traffic = stats.total_traffic - Decimal.ToInt64(result.totalTraffic ?? 0);
                }
                catch (Exception ex)
                {
                }
            }


            return(stats);
        }
 public int PutPayment([FromBody] get_payment_Result _payment)
 {
     return(db.add_payment(_payment.uid, _payment.traffic, _payment.amount, System.DateTime.Now));
 }