public List <UsageSummaryModel> GetUsageSummaries(SearchParams searchParams) { try { List <int> actions = new List <int> { 1, 11, 12, 253 }; if (searchParams != null && !string.IsNullOrEmpty(searchParams.DriverNumber)) { searchParams.DriverNumber = string.Format("{0:x}", searchParams.DriverNumber); } List <UsageSummaryModel> usageSummaryList = new List <UsageSummaryModel>(); List <UsageSummaryModel> usageSummary = (from t in transRepo.Table join s in smartcardRepo.Table on t.CardEsn equals s.ESN into summary from sum in summary where t.TransactionDate >= searchParams.FromDate && t.TransactionDate <= searchParams.ToDate && actions.Contains(t.Action) && (searchParams.BusNumber == 0 || t.BusNumber == searchParams.BusNumber) && (string.IsNullOrEmpty(searchParams.DriverNumber) || (sum.CardType == "Driver" && t.CardEsn == searchParams.DriverNumber)) select new UsageSummaryModel { FirstName = sum.Name, SurName = sum.Surname, AccountNumber = sum.AccountNumber, Location = sum.Location, Kilometers = 0, Smartcard = t.CardEsn, TotalTagIns = t.Action }).ToList(); usageSummary.GroupBy(x => x.Smartcard).ToList().ForEach(x => { UsageSummaryModel firstItem = x.FirstOrDefault(); usageSummaryList.Add(new UsageSummaryModel() { FirstName = firstItem.FirstName, Smartcard = Convert.ToInt64(firstItem.Smartcard, 16).ToString(), SurName = firstItem.SurName, Location = firstItem.Location, AccountNumber = firstItem.AccountNumber, Kilometers = x.Sum(c => c.Kilometers), TotalTagIns = x.Sum(c => c.TotalTagIns) }); }); return(usageSummaryList); } catch (Exception) { throw; } }
public List <UsageSummaryModel> GetAllUsageSummary() { try { List <UsageSummaryModel> usageSummaryList = new List <UsageSummaryModel>(); List <UsageSummaryModel> usageSummary = (from t in transRepo.Table join s in smartcardRepo.Table on t.CardEsn equals s.ESN into summary from sum in summary.DefaultIfEmpty() select new UsageSummaryModel { FirstName = sum.Name, SurName = sum.Surname, Kilometers = 0, Smartcard = t.CardEsn, TotalTagIns = t.Action }).ToList(); usageSummary.GroupBy(x => x.Smartcard).ToList().ForEach(x => { UsageSummaryModel firstItem = x.FirstOrDefault(); usageSummaryList.Add(new UsageSummaryModel() { FirstName = firstItem.FirstName, Smartcard = firstItem.Smartcard, SurName = firstItem.SurName, Kilometers = x.Sum(c => c.Kilometers), TotalTagIns = x.Sum(c => c.TotalTagIns) }); }); return(usageSummaryList); } catch (Exception) { throw; } }