private List<SummaryInfo> GetSummaryData(int STORE_ID)
        {
            using (var db = new RentBikeEntities())
            {
                listInOut = db.INOUT_FULL_VW.Where(c =>c.ACTIVE == true).ToList();
                if (STORE_ID != 0)
                {
                    listInOut = listInOut.Where(c =>c.STORE_ID == STORE_ID).ToList();
                }
                var data = from d in listInOut
                           group d by d.INOUT_DATE into g
                           select new
                           {
                               Period = g.Key,
                               Record = from o in g
                                        select new
                                        {
                                            ID = o.STORE_ID,
                                            InOutDate = o.INOUT_DATE,
                                            RentTypeName = o.RENT_TYPE_NAME,
                                            CustomerId = o.CUSTOMER_ID,
                                            CustomerName = o.CUSTOMER_NAME,
                                            InAmount = o.IN_AMOUNT,
                                            OutAmount = o.OUT_AMOUNT,
                                            TotalIn = g.Sum(x =>x.IN_AMOUNT),
                                            TotalOut = g.Sum(x =>x.OUT_AMOUNT),
                                            BeginAmount = 0,
                                            EndAmount = 0,
                                            ContractFeeCar = 0,
                                            RentFeeCar = 0,
                                            CloseFeeCar = 0,
                                            ContractFeeEquip = 0,
                                            RentFeeEquip = 0,
                                            CloseFeeEquip = 0,
                                            ContractFeeOther = 0,
                                            RentFeeOther = 0,
                                            CloseFeeOther = 0,
                                            RemainEndOfDay = 0,
                                            InOutTypeId = o.INOUT_TYPE_ID,
                                            RentTypeId = o.RENT_TYPE_ID,
                                            InCapital = 0,
                                            OutCapital = 0,
                                            InOther = 0,
                                            OutOther = 0,
                                            IsDummy = o.IS_DUMMY

                                        }
                           };
                List<SummaryInfo> listSum = new List<SummaryInfo>();
                foreach (var g in data)
                {
                    SummaryInfo si = new SummaryInfo();
                    si.StoreId = g.Record.ToList()[0].ID;
                    si.InOutDate = g.Record.ToList()[0].InOutDate.Value;
                    si.RentTypeName = g.Record.ToList()[0].RentTypeName;
                    si.CustomerId = g.Record.ToList()[0].CustomerId;
                    si.CustomerName = g.Record.ToList()[0].CustomerName;
                    si.TotalIn = g.Record.ToList()[0].TotalIn;
                    si.TotalOut = g.Record.ToList()[0].TotalOut;
                    si.IsDummy = g.Record.ToList()[0].IsDummy;
                    si.BeginAmount = 0;
                    si.EndAmount = g.Record.ToList()[0].TotalIn - g.Record.ToList()[0].TotalOut;

                    listSum.Add(si);
                }

                for (int i = 0; i < listSum.Count; i++)
                {
                    if (i > 0)
                    {
                        listSum[i].BeginAmount = listSum[i - 1].EndAmount;
                        listSum[i].EndAmount += listSum[i].BeginAmount;
                    }
                }
                return listSum;
            }
        }
        private List<SummaryInfo> GetDailyData(DateTime inoutDate)
        {
            List<SummaryInfo> listSI = new List<SummaryInfo>();

            List<INOUT_FULL_VW> listInOutTemp = listInOut.Where(c =>c.INOUT_DATE == inoutDate && c.ACTIVE == true).ToList();
            List<INOUT_FULL_VW> listInOutEquipAndCarAndOther = listInOutTemp.Where(c =>c.RENT_TYPE_ID == 1 || c.RENT_TYPE_ID == 2 || c.RENT_TYPE_ID == 3).ToList();
            List<INOUT_FULL_VW> listInOutOther = listInOutTemp.Where(c =>c.INOUT_TYPE_ID == 10 || c.INOUT_TYPE_ID == 11 || c.INOUT_TYPE_ID == 12 || c.INOUT_TYPE_ID == 13).ToList();

            var inoutEquipAndCarAndOther = from d in listInOutEquipAndCarAndOther
                                           group d by new { d.CUSTOMER_ID, d.CUSTOMER_NAME }
                                               into c
                                               select new
                                               {
                                                   CustomerId = c.Key.CUSTOMER_ID,
                                                   CustomerName = c.Key.CUSTOMER_NAME,
                                                   Record = from o in c
                                                            select new
                                                            {
                                                                ID = o.ID,
                                                                ContractId = o.CONTRACT_ID,
                                                                Period = o.PERIOD_DATE,
                                                                InOutDate = o.INOUT_DATE,
                                                                RentTypeName = o.RENT_TYPE_NAME,
                                                                InAmount = o.IN_AMOUNT,
                                                                OutAmount = o.OUT_AMOUNT,
                                                                TotalIn = c.Sum(x =>x.IN_AMOUNT),
                                                                TotalOut = c.Sum(x =>x.OUT_AMOUNT),
                                                                InOutTypeId = o.INOUT_TYPE_ID,
                                                                RentTypeId = o.RENT_TYPE_ID,
                                                                InCapital = 0,
                                                                OutCapital = 0,
                                                                InOther = 0,
                                                                OutOther = 0,
                                                                IsDummy = o.IS_DUMMY
                                                            }
                                               };

            foreach (var c in inoutEquipAndCarAndOther)
            {
                SummaryInfo si = new SummaryInfo();
                si.InOutDate = c.Record.ToList()[0].InOutDate.Value;
                si.TotalIn = c.Record.ToList()[0].TotalIn;
                si.TotalOut = c.Record.ToList()[0].TotalOut;
                si.BeginAmount = 0;
                si.EndAmount = c.Record.ToList()[0].TotalIn - c.Record.ToList()[0].TotalOut;
                si.CustomerName = c.CustomerName;
                si.IsDummy = c.Record.ToList()[c.Record.Count() - 1].IsDummy;

                si.ContractFeeCar = c.Record.Where(s =>s.InOutTypeId == 17).Select(s =>s.OutAmount).DefaultIfEmpty(0).Sum();
                si.ContractFeeEquip = c.Record.Where(s =>s.InOutTypeId == 22).Select(s =>s.OutAmount).DefaultIfEmpty(0).Sum();
                si.ContractFeeOther = c.Record.Where(s =>s.InOutTypeId == 23).Select(s =>s.OutAmount).DefaultIfEmpty(0).Sum();

                si.RentFeeCar = c.Record.Where(s =>s.InOutTypeId == 14).Select(s =>s.InAmount).DefaultIfEmpty(0).Sum();
                si.RentFeeEquip = c.Record.Where(s =>s.InOutTypeId == 15).Select(s =>s.InAmount).DefaultIfEmpty(0).Sum();
                si.RentFeeOther = c.Record.Where(s =>s.InOutTypeId == 16).Select(s =>s.InAmount).DefaultIfEmpty(0).Sum();

                si.CloseFeeCar = c.Record.Where(s =>s.InOutTypeId == 18 && s.RentTypeId == 1).Select(s =>s.InAmount).DefaultIfEmpty(0).Sum();
                si.CloseFeeEquip = c.Record.Where(s =>s.InOutTypeId == 18 && s.RentTypeId == 2).Select(s =>s.InAmount).DefaultIfEmpty(0).Sum();
                si.CloseFeeOther = c.Record.Where(s =>s.InOutTypeId == 18 && s.RentTypeId == 3).Select(s =>s.InAmount).DefaultIfEmpty(0).Sum();

                si.RedundantFeeCar = c.Record.Where(s =>s.InOutTypeId == 19 && s.RentTypeId == 1).Select(s =>s.OutAmount).DefaultIfEmpty(0).Sum();
                si.RedundantFeeEquip = c.Record.Where(s =>s.InOutTypeId == 19 && s.RentTypeId == 2).Select(s =>s.OutAmount).DefaultIfEmpty(0).Sum();
                si.RedundantFeeOther = c.Record.Where(s =>s.InOutTypeId == 19 && s.RentTypeId == 3).Select(s =>s.OutAmount).DefaultIfEmpty(0).Sum();

                if (si.RentFeeEquip > 0 || si.RentFeeCar > 0 || si.RentFeeOther > 0)
                {
                    si.ListPeriodDate = c.Record.Where(s => s.InOutTypeId == 14 || s.InOutTypeId == 15 || s.InOutTypeId == 16).Select(s => s.Period).ToList();
                }
                if (c.Record.Any(s => s.RentTypeId == 3))
                {
                    si.CssClass = "background-yellow";
                }

                listSI.Add(si);
            }

            foreach (var c in listInOutOther)
            {
                SummaryInfo si = new SummaryInfo();
                si.InOutId = c.ID;
                si.StoreId = c.STORE_ID;
                si.CssClass = "background-yellow";
                si.IsDummy = c.IS_DUMMY;

                switch (c.INOUT_TYPE_ID)
                {
                    case 10:
                        si.InCapital = c.IN_AMOUNT;
                        si.CustomerName = "Nhập Vốn";
                        break;
                    case 11:
                        si.OutCapital = c.OUT_AMOUNT;
                        si.CustomerName = "Xuất Vốn";
                        break;
                    case 12:
                        si.InOther = c.IN_AMOUNT;
                        si.CustomerName = "Thu Khác";
                        break;
                    case 13:
                        si.OutOther = c.OUT_AMOUNT;
                        si.CustomerName = "Chi Khác";
                        break;
                    default:
                        break;

                }
                if (!string.IsNullOrEmpty(c.MORE_INFO))
                    si.CustomerName = c.MORE_INFO;

                listSI.Add(si);
            }
            return listSI;
        }