예제 #1
0
        public DataPageResponse <BigDeal> SearchByInsCode(long insCode, BigDealSearchModel searchModel)
        {
            if (searchModel == null)
            {
                searchModel = new BigDealSearchModel();
            }
            searchModel.InsCode = insCode;
            if (!searchModel.FromDt.HasValue)
            {
                var hSrv = ServiceFactory.Create <IHolidayService>();
                if (hSrv.IsWorkingDay(DateTime.Now.Date))
                {
                    searchModel.FromDt = GetDefaultQuery()
                                         .Where(x => x.InsCode == insCode)
                                         .OrderByDescending(x => x.DayDt)
                                         .Select(x => x.DayDt)
                                         .FirstOrDefault();
                }
                else
                {
                    searchModel.FromDt = DateTime.Now.Date;
                }
            }

            if (!searchModel.MinMoney.HasValue)
            {
                searchModel.MinMoney = Constants.BigDealsMinMoney;
            }

            return(Search(searchModel));
        }
예제 #2
0
        public DataPageResponse <BigDeal> Search(BigDealSearchModel searchModel)
        {
            var predicate = PredicateBuilder.New <BigDeal>(x => true);

            if (searchModel.InsCode.HasValue)
            {
                predicate = predicate.And(x => x.InsCode == searchModel.InsCode.Value);
            }

            if (!String.IsNullOrEmpty(searchModel.CSecVal))
            {
                predicate = predicate.And(x => x.CSecVal == searchModel.CSecVal);
            }

            if (searchModel.MinMoney.HasValue)
            {
                predicate = predicate.And(x => x.AmountAvg >= searchModel.MinMoney || x.AmountAvg >= searchModel.MinMoney);
            }

            if (searchModel.FromDt.HasValue)
            {
                predicate = predicate.And(x => x.DayDt >= searchModel.FromDt);
            }

            if (searchModel.TraderType.HasValue)
            {
                predicate = predicate.And(x => x.TraderType == searchModel.TraderType.Value);
            }

            if (searchModel.DealType.HasValue)
            {
                predicate = predicate.And(x => x.DealType == searchModel.DealType.Value);
            }

            if (searchModel.ToDt.HasValue)
            {
                predicate = predicate.And(x => x.DayDt <= searchModel.ToDt);
            }

            var query = GetDefaultQuery().Where(predicate);

            if (searchModel.Sorting != null &&
                (searchModel.Sorting[0].Name == nameof(BigDeal.Time) ||
                 searchModel.Sorting[0].Name == nameof(BigDeal.Date)))
            {
                searchModel.Sorting[0].Name = nameof(BigDeal.DayDt);
            }

            var count = query.Count();

            query = ApplySortingRule(query, searchModel, x => x.DayDt);
            query = ApplyPagingRule(query, searchModel);

            var data = query.ToList();

            if (!searchModel.InsCode.HasValue)
            {
                var iSrv = ServiceFactory.Create <IInstrumentService>();
                var ins  = iSrv.GetAll();
                for (var i = 0; i < data.Count; ++i)
                {
                    var instrument = ins.FirstOrDefault(x => x.InsCode == data[i].InsCode);
                    if (instrument != null)
                    {
                        data[i].Symbol = instrument.Symbol;
                    }
                }
            }

            return(new DataPageResponse <BigDeal>()
            {
                Data = data,
                Filterable = false,
                PageNumber = searchModel.PageNumber,
                TotalRecordCount = count,
                Success = true
            });
        }