public static IQueryable<PatientAccountHistoryModel> getPatientHistoryModel(int patID)
 {
     var context = new PatientManagerEntities();
     return from patHist in context.PatientAccountHistoryViews
            where patHist.patID == patID
            select new PatientAccountHistoryModel
            {
                Date = (DateTime)patHist.Date,
                Patient = patHist.patient,
                Doctor = patHist.patient.doctor,
                Type = patHist.Type,
                Description = patHist.Description,
                Qty = (patHist.itryQty != null) ? (int)patHist.itryQty : 1,
                Amount = (decimal)patHist.Amount
            };
 }
        public static List<PaymentReportViewModel> getPaymentsReportViewModel(int patID, int invID)
        {
            var context = new PatientManagerEntities();
            List<PaymentReportViewModel> payments = (from prvm in context.payments
                                                     where prvm.patID == patID && prvm.invID == invID
                                                     select new PaymentReportViewModel
                                                     {
                                                         Patient = prvm.patient,
                                                         Doctor = prvm.doctor,
                                                         Payment = prvm,

                                                     }).ToList();
            return payments;
        }
        public static List<PatientAccountHistoryModel> getPatientHistoryModel(int patID, DateTime startDate, DateTime endDate)
        {
            var context = new PatientManagerEntities();
            var query = (from patHist in context.PatientAccountHistoryViews
                   where patHist.patID == patID && patHist.Date >= startDate.Date && patHist.Date <= endDate.Date
                   select new PatientAccountHistoryModel
                   {
                       Date = (DateTime)patHist.Date,
                       Patient = patHist.patient,
                       Doctor = patHist.patient.doctor,
                       BillingDoctor = patHist.doctor,
                       Type = patHist.Type,
                       Description = patHist.Description,
                       Qty = (patHist.itryQty != null) ? (int)patHist.itryQty : 1,
                       //Amount = (decimal)patHist.Amount - (decimal)patHist.line_discount
                       Amount = (decimal)patHist.Amount,
                       Discount = patHist.line_discount
                   }).ToList();
            // From what I'm assuming is a bug in mysql connector 4.6.5, I can't set the objects date fields while querying
            // for the data. So here is an extra stupid just to get the data in.
            foreach (var item in query)
            {
                item.StartDate = startDate;
                item.EndDate = endDate;
            }

            return query;
        }
        public static List<PaymentReportViewModel> getPaymentsReportViewModel(int patID,
            DateTime startRange, DateTime endRange)
        {
            var context = new PatientManagerEntities();
            List<PaymentReportViewModel> payments = (from prvm in context.payments
                   where prvm.patID == patID && prvm.payDate >= startRange.Date && prvm.payDate <= endRange.Date
                   select new PaymentReportViewModel
                   {
                       Patient = prvm.patient,
                       Doctor = prvm.doctor,
                       Payment = prvm,

                   }).ToList();

            /* For some retarded reason I cant set these date range values in the linq query.
             * It throws a string value execption. So i have to reinterate the list and manually set it. So stupid*/
            foreach (var p in payments)
            {
                p.StartDate = startRange;
                p.EndDate = endRange;
            }

            return payments;
        }