Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        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;
            }
        }