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; }