Example #1
0
 public JobMgr(ILogger <JobMgr> logger, MainDBContext mainDBContext,
               OldDBContext oldDBContext)
 {
     _logger        = logger;
     _mainDBContext = mainDBContext;
     _oldDBContext  = oldDBContext;
 }
        public List <double> GetMonitorResultDetail(MonitorDetailQueryObj mdQueryObj)
        {
            try
            {
                double todayResult, currentMonthResult, lastMonthResult;
                #region Today
                using (var ctx = new BillDBContext())
                {
                    var predicate = PredicateBuilder.True <Bill>();
                    if (mdQueryObj.QueryType.ToLower().Contains("bjl"))//百家乐
                    {
                        predicate = predicate.And(p => (p.BetType.Equals("l_game_MPBJL", StringComparison.OrdinalIgnoreCase) ||
                                                        p.BetType.Equals("l_game_XFBJL", StringComparison.OrdinalIgnoreCase) ||
                                                        p.BetType.Equals("l_game_ZRBJL", StringComparison.OrdinalIgnoreCase) ||
                                                        p.BetType.Equals("l_game_BJL", StringComparison.OrdinalIgnoreCase)));
                    }
                    else if (mdQueryObj.QueryType.ToLower().Contains("tb"))
                    {
                        predicate = predicate.And(p => p.BetType.Equals("l_game_TB", StringComparison.OrdinalIgnoreCase) ||
                                                  p.BetType.Equals("l_game_XFTB", StringComparison.OrdinalIgnoreCase));
                    }
                    else
                    {
                        predicate = predicate.And(p => p.BetType.Equals(mdQueryObj.QueryType, StringComparison.OrdinalIgnoreCase));
                    }
                    predicate = predicate.And(p => p.Status == 0);
                    predicate = predicate.And(p => p.Member.Equals(mdQueryObj.QueryMember, StringComparison.OrdinalIgnoreCase));
                    if (DateTime.Now.Hour < 12)
                    {
                        predicate = predicate.And(p => p.TransferDate == DateTime.Today);
                    }
                    else
                    {
                        predicate = predicate.And(p => p.TransferDate == DateTime.Today.AddDays(1));
                        //predicate = predicate.And(p => p.TransferDate == new DateTime(2017, 9, 28));
                    }
                    Func <Bill, bool> query = predicate.Compile();
                    todayResult = Convert.ToDouble(ctx.Bills.Where(query).Sum(b => b.MemberResult));
                }
                #endregion

                #region Current Month
                double   temp1 = 0, temp2 = 0;
                DateTime tempNow = DateTime.Now;
                if (tempNow.Hour <= 12)
                {
                    DateTime transferDate;
                    using (var ctx = new BaseDBContext())
                    {
                        var date = ctx.Transfers.Max(t => t.Date);
                        transferDate = Convert.ToDateTime(date);
                    }
                    if (tempNow > transferDate)
                    {
                        using (var ctx = new BillDBContext())
                        {
                            var query = ctx.Database.SqlQuery <double?>("select sum(OB.f_mresult) as mresult from BILLBASE26.ts111_bill.dbo.t_bill AS OB with(nolock) where OB.f_del=0 and OB.f_member = 'DX61' and (OB.f_type = 'l_game_MPBJL' or OB.f_type = 'l_game_XFBJL' or OB.f_type = 'l_game_ZRBJL'  or OB.f_type = 'l_game_BJL') and OB.f_date between '2017/10/13 0:00:00' and '2017/10/13 0:00:00' ");
                            temp1 = Convert.ToDouble(query.FirstOrDefault());
                        }
                    }
                }
                using (var ctx = new OldDBContext())
                {
                    var predicate = PredicateBuilder.True <OldBill>();
                    if (mdQueryObj.QueryType.ToLower().Contains("bjl"))//百家乐
                    {
                        predicate = predicate.And(p => (p.BetType.Equals("l_game_MPBJL", StringComparison.OrdinalIgnoreCase) ||
                                                        p.BetType.Equals("l_game_XFBJL", StringComparison.OrdinalIgnoreCase) ||
                                                        p.BetType.Equals("l_game_ZRBJL", StringComparison.OrdinalIgnoreCase) ||
                                                        p.BetType.Equals("l_game_BJL", StringComparison.OrdinalIgnoreCase)));
                    }
                    else if (mdQueryObj.QueryType.ToLower().Contains("tb"))
                    {
                        predicate = predicate.And(p => p.BetType.Equals("l_game_TB", StringComparison.OrdinalIgnoreCase) ||
                                                  p.BetType.Equals("l_game_XFTB", StringComparison.OrdinalIgnoreCase));
                    }
                    else
                    {
                        predicate = predicate.And(p => p.BetType.Equals(mdQueryObj.QueryType, StringComparison.OrdinalIgnoreCase));
                    }
                    predicate = predicate.And(p => p.Status == 0);
                    predicate = predicate.And(p => p.Member.Equals(mdQueryObj.QueryMember, StringComparison.OrdinalIgnoreCase));
                    DateTime Time1 = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
                    DateTime Time2 = Time1.AddMonths(1).AddDays(-1);
                    predicate = predicate.And(p => p.TransferDate >= Time1 && p.TransferDate <= Time2);

                    Func <OldBill, bool> query = predicate.Compile();
                    temp2 = Convert.ToDouble(ctx.OldBills.Where(query).Sum(b => b.MemberResult));
                }
                currentMonthResult = temp1 + temp2;
                #endregion

                #region Last Month
                using (var ctx = new OldDBContext())
                {
                    var predicate = PredicateBuilder.True <OldBill>();
                    if (mdQueryObj.QueryType.ToLower().Contains("bjl"))//百家乐
                    {
                        predicate = predicate.And(p => (p.BetType.Equals("l_game_MPBJL", StringComparison.OrdinalIgnoreCase) ||
                                                        p.BetType.Equals("l_game_XFBJL", StringComparison.OrdinalIgnoreCase) ||
                                                        p.BetType.Equals("l_game_ZRBJL", StringComparison.OrdinalIgnoreCase) ||
                                                        p.BetType.Equals("l_game_BJL", StringComparison.OrdinalIgnoreCase)));
                    }
                    else if (mdQueryObj.QueryType.ToLower().Contains("tb"))
                    {
                        predicate = predicate.And(p => p.BetType.Equals("l_game_TB", StringComparison.OrdinalIgnoreCase) ||
                                                  p.BetType.Equals("l_game_XFTB", StringComparison.OrdinalIgnoreCase));
                    }
                    else
                    {
                        predicate = predicate.And(p => p.BetType.Equals(mdQueryObj.QueryType, StringComparison.OrdinalIgnoreCase));
                    }
                    predicate = predicate.And(p => p.Status == 0);
                    predicate = predicate.And(p => p.Member.Equals(mdQueryObj.QueryMember, StringComparison.OrdinalIgnoreCase));
                    DateTime Time1 = new DateTime(DateTime.Now.Year, DateTime.Now.Month - 1, 1);
                    DateTime Time2 = Time1.AddMonths(1).AddDays(-1);
                    predicate = predicate.And(p => p.TransferDate >= Time1 && p.TransferDate <= Time2);

                    Func <OldBill, bool> query = predicate.Compile();
                    lastMonthResult = Convert.ToDouble(ctx.OldBills.Where(query).Sum(b => b.MemberResult));
                }
                #endregion

                return(new List <double>()
                {
                    todayResult, currentMonthResult, lastMonthResult
                });
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }