コード例 #1
0
        public IActionResult GetExchangeRateHistory(CatCurrencyExchangeCriteria criteria, int page, int size)
        {
            var data   = catCurrencyExchangeService.Paging(criteria, page, size, out int rowCount);
            var result = new { data, totalItems = rowCount, page, size };

            return(Ok(result));
        }
コード例 #2
0
        public List <vw_catCurrencyExchange> Query(CatCurrencyExchangeCriteria criteria)
        {
            var list = GetView();

            list = list.Where(x => (x.CurrencyToId ?? "").IndexOf(criteria.LocalCurrencyId ?? "", StringComparison.OrdinalIgnoreCase) >= 0 &&
                              (x.DatetimeCreated >= criteria.FromDate || criteria.FromDate == null) &&
                              (x.DatetimeCreated <= criteria.ToDate || criteria.ToDate == null) &&
                              (x.Active == criteria.Active || criteria.Active == null)
                              ).ToList();
            return(list);
        }
コード例 #3
0
        public List <CatCurrencyExchangeHistory> Paging(CatCurrencyExchangeCriteria criteria, int page, int size, out int rowsCount)
        {
            var users     = userRepository.Get();
            var exchanges = DataContext.Get(x => (x.CurrencyToId ?? "").IndexOf(criteria.LocalCurrencyId ?? "", StringComparison.OrdinalIgnoreCase) >= 0 &&
                                            (x.DatetimeCreated >= criteria.FromDate || criteria.FromDate == null) &&
                                            (x.DatetimeCreated <= criteria.ToDate || criteria.ToDate == null) &&
                                            (x.Active == criteria.Active || criteria.Active == null));
            var data = (from ex in exchanges
                        join u in users on ex.UserCreated equals u.Id into grpUsers
                        from user in grpUsers.DefaultIfEmpty()
                        select new { ex, user }).OrderByDescending(x => x.ex.DatetimeCreated);
            var dateCreateds = data.GroupBy(x => x.ex.DatetimeCreated.Value.Date)
                               .Select(x => x);

            rowsCount = dateCreateds.Count();
            if (rowsCount == 0)
            {
                return(null);
            }
            if (size > 1)
            {
                if (page < 1)
                {
                    page = 1;
                }
                dateCreateds = dateCreateds.Skip((page - 1) * size).Take(size);
            }
            List <CatCurrencyExchangeHistory> results = new List <CatCurrencyExchangeHistory>();

            foreach (var item in dateCreateds)
            {
                var date = data.Where(x => x.ex.DatetimeCreated.Value.Date == item.Key)
                           .OrderBy(x => x.ex.DatetimeCreated == item.Key).First();
                var userName = "******";
                if (date.ex.UserModified != null)
                {
                    if (date.ex.UserModified != "system")
                    {
                        userName = date.user?.Username;
                    }
                }
                var rate = new CatCurrencyExchangeHistory
                {
                    DatetimeCreated = item.Key,
                    UserModifield   = userName,
                    LocalCurrency   = date.ex.CurrencyToId,
                    DatetimeUpdated = date.ex.DatetimeModified ?? date.ex.DatetimeCreated
                };
                results.Add(rate);
            }
            return(results);
        }