Пример #1
0
        /// <summary>
        /// obtém todos os dados necessários para a montagem da grid consolidada por dia nas páginas home e da adividades/index
        /// </summary>
        /// <param name="usuarioIds">List de Int - ids dos usuários participantes da pesquisa que será exibida na grid da página principal</param>
        /// <param name="inicio">DateTime - data inicial</param>
        /// <param name="fim">DateTime - data final</param>
        /// <returns></returns>
        public virtual async Task <List <AtividadeIndexViewModel.ConsolidadoDiarioGridViewModel> > GetAtividadesConsolidadoDiarioAsync(List <int> usuarioIds, DateTime?inicio, DateTime?fim)
        {
            if (usuarioIds == null || usuarioIds.Count == 0)
            {
                usuarioIds = _db.Usuarios.Select(u => u.Id).ToList <int>();
            }

            if (inicio == null && fim == null)
            {
                inicio = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1);
                fim    = inicio.Value.AddMonths(1).AddSeconds(-1);
            }
            else if (inicio == null)
            {
                inicio = DateTime.MinValue;
            }
            else if (fim == null)
            {
                fim = DateTime.MaxValue;
            }

            var dados = (
                from a in _db.Atividades
                .AsNoTracking()
                .Include(a => a.Usuario)
                .Include(a => a.Cliente)
                join c in _db.ProjectNodes on a.ClienteId equals c.Id into ac
                from c in ac.DefaultIfEmpty()
                from r in _db.Referencias

                where usuarioIds.Contains(a.Usuario.Id) &&
                a.Inicio >= inicio &&
                a.Fim < fim &&
                a.Usuario.Id == r.Usuario.Id &&
                a.Inicio.Month == r.Mes &&
                a.Inicio.Year == r.Ano &&
                (a.Cliente == null || a.Cliente.Id == c.Id)
                group new { Atividade = a, Referencia = r, Cliente = c }
                by new
            {
                Data = DbFunctions.TruncateTime(a.Inicio),
                Usuario = a.Usuario,
                Fechado = r.Fechado
            }
                into g
                select new AtividadeIndexViewModel.ConsolidadoDiarioGridViewModel
            {
                Data = g.Key.Data ?? DateTime.MinValue,
                ClienteNome = g.FirstOrDefault().Cliente != null? g.FirstOrDefault().Cliente.Nome:"",
                UsuarioId = g.Key.Usuario.Id,
                UsuarioLogin = g.Key.Usuario.Login,
                UsuarioFuncionarioNome = g.Key.Usuario.Funcionario != null? g.Key.Usuario.Funcionario.Nome: g.Key.Usuario.Login,
                Segundos = g.Sum(t => DbFunctions.DiffSeconds(t.Atividade.Inicio, t.Atividade.Fim)) ?? 0
            }
                );

            return(await dados.ToListAsync <AtividadeIndexViewModel.ConsolidadoDiarioGridViewModel>());
        }
Пример #2
0
 /// <summary>
 /// 上一期(or 当前期比赛结束) 比赛结果
 /// </summary>
 public PK GetPrevPKResult()
 {
     using (var db = new RacingDbContext())
     {
         //var seconds = AppConfigCache.Racing_Opening_Seconds + AppConfigCache.Racing_Close_Seconds + AppConfigCache.Racing_Game_Seconds;
         return(db.PK.Where(pk => DbFunctions.DiffSeconds(pk.EndTime, DateTime.Now) >= 0).OrderByDescending(pk => pk.PKId).FirstOrDefault());
         //return db.PK.OrderByDescending(pk => pk.PKId).FirstOrDefault();
     }
 }
Пример #3
0
 /// <summary>
 /// 每局结束后, 更新已结算标志 IsSettlementDone
 /// </summary>
 public void UpdateSettlementDone()
 {
     using (var db = new RacingDbContext())
     {
         var dbBets = db.Bet.Where(b => !b.IsSettlementDone && DbFunctions.DiffSeconds(b.PK.EndTime, DateTime.Now) > 0).ToList();
         dbBets.ForEach(b => b.IsSettlementDone = true);
         db.SaveChanges();
     }
 }
Пример #4
0
        /// <summary>
        /// 用户.今日已结/未结明细
        /// 今日已结在封盘时job生成, 包括奖金+退水
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public PagerResult <Bet> GetUserBetReport(UserReportSearchModel model)
        {
            using (var db = new RacingDbContext())
            {
                var query = db.Bet.Where(b => b.UserId == model.UserId &&
                                         b.IsSettlementDone == model.IsSettlementDone &&
                                         DbFunctions.DiffDays(b.PK.EndTime, DateTime.Now) == 0);//今日


                if (model.IsSettlementDone)
                {
                    //已结
                    query = query.Where(b => DbFunctions.DiffSeconds(b.PK.EndTime, DateTime.Now) > 0);
                }
                else
                {
                    //未结
                    query = query.Where(b => DbFunctions.DiffSeconds(b.PK.EndTime, DateTime.Now) < 0);
                }

                var result = query
                             .OrderByDescending(b => b.BetId)
                             .Pager(model.PageIndex, model.PageSize);

                // 奖金
                if (model.IsSettlementDone)
                {
                    //已结
                    var betIds  = result.Items.Select(b => b.BetId).ToList();
                    var pkBonus = db.PKBonus.Where(b => betIds.Contains(b.BetId)).ToList();
                    foreach (var bet in result.Items)
                    {
                        var bonus  = pkBonus.Where(b => b.BetId == bet.BetId).ToList();
                        var amount = bonus.Count() > 0 ? bonus.Sum(b => b.Amount) : 0;
                        bet.BonusAmount = amount - bet.Amount;  // 退水后奖金 = 中奖金额+退水-本金, 奖金+退水 job生成
                    }
                }
                else
                {
                    //未结
                    var pkIds       = result.Items.Select(b => b.PKId).ToList();
                    var pkRates     = db.PKRate.Where(r => pkIds.Contains(r.PKId)).ToList();
                    var userRebates = db.UserRebate.Include(nameof(UserRebate.User)).Where(u => u.UserId == model.UserId).ToList();
                    foreach (var bet in result.Items)
                    {
                        var pkRate     = pkRates.Where(r => r.PKId == bet.PKId && r.Num == bet.Num && r.Rank == bet.Rank).First();
                        var bonus      = bet.Amount * pkRate.Rate;
                        var userRebate = userRebates.Where(u => u.UserId == bet.UserId && u.RebateNo == bet.Num).First();
                        var rebate     = bet.Amount * UserRebateService.GetDefaultRebate(userRebate, userRebate.User.DefaultRebateType);
                        bet.BonusAmount = bonus + rebate - bet.Amount;  // 退水后奖金 = 中奖金额+退水-本金, 奖金+退水 job生成
                    }
                }

                return(result);
            }
        }
Пример #5
0
        /// <summary>
        /// 判斷是否有某個活動模組正在進行中
        /// </summary>
        /// <param name="circleKey"></param>
        /// <param name="moduleType"></param>
        /// <returns></returns>
        public bool CheckActivityStarting(string circleKey, string moduleType)
        {
            var db = _uow.DbContext;

            return((from acts in db.Activitys
                    where acts.ModuleKey == ModuleType.SignIn &&
                    acts.ToRoomId.ToLower() == circleKey.ToLower() &&
                    DbFunctions.DiffSeconds(acts.StartDate, DateTime.UtcNow) < acts.Duration

                    select "1").Any());
        }
Пример #6
0
        public static void Register()
        {
            Mapper.Initialize(config =>
            {
                config.CreateMap <Vehicle, VehicleDto>()
                .ForMember(v => v.Customer, cfg => cfg.MapFrom(v => v.Customer.Name))
                .ForMember(v => v.IsConnected, cfg => cfg.MapFrom(v => DbFunctions.DiffSeconds(v.LastUpdatedStatus, DateTime.UtcNow) < 60));

                config.CreateMap <Customer, CustomerDto>();
            });
        }
Пример #7
0
        public static List <ApplicationUser> GetOnlineUsers()
        {
            List <ApplicationUser> result = null;

            using (var dbContext = new ApplicationDbContext())
            {
                result = dbContext.Users.Where(user => DbFunctions.DiffSeconds(user.LastAuth, DateTime.Now) < SlowpokeHub.TokentDuration.TotalSeconds).ToList();
            }

            return(result);
        }
        public void DateFunctions()
        {
            using (var context = new BloggingContext(ConnectionString))
            {
                IQueryable <int> oneRow = context.Posts.Where(p => false).Select(p => 1).Concat(new int[] { 1 });

                var dateAdds = oneRow.Select(p => new List <DateTime?>
                {
                    DbFunctions.AddDays(new DateTime(2014, 2, 28), 1),
                    DbFunctions.AddHours(new DateTime(2014, 2, 28, 23, 0, 0), 1),
                    DbFunctions.AddMinutes(new DateTime(2014, 2, 28, 23, 59, 0), 1),
                    DbFunctions.AddSeconds(new DateTime(2014, 2, 28, 23, 59, 59), 1),
                    DbFunctions.AddMilliseconds(new DateTime(2014, 2, 28, 23, 59, 59, 999), 2 - p),
                    DbFunctions.AddMicroseconds(DbFunctions.AddMicroseconds(new DateTime(2014, 2, 28, 23, 59, 59, 999), 500), 500),
                    DbFunctions.AddNanoseconds(new DateTime(2014, 2, 28, 23, 59, 59, 999), 999999 + p),
                    DbFunctions.AddMonths(new DateTime(2014, 2, 1), 1),
                    DbFunctions.AddYears(new DateTime(2013, 3, 1), 1)
                }).First();
                foreach (var result in dateAdds)
                {
                    Assert.IsTrue(result.Value == new DateTime(2014, 3, 1, 0, 0, 0));
                }

                var dateDiffs = oneRow.Select(p => new {
                    a = DbFunctions.DiffDays(new DateTime(1999, 12, 31, 23, 59, 59, 999), new DateTime(2000, 1, 1, 0, 0, 0)),
                    b = DbFunctions.DiffHours(new DateTime(1999, 12, 31, 23, 59, 59, 999), new DateTime(2000, 1, 1, 0, 0, 0)),
                    c = DbFunctions.DiffMinutes(new DateTime(1999, 12, 31, 23, 59, 59, 999), new DateTime(2000, 1, 1, 0, 0, 0)),
                    d = DbFunctions.DiffSeconds(new DateTime(1999, 12, 31, 23, 59, 59, 999), new DateTime(2000, 1, 1, 0, 0, 0)),
                    e = DbFunctions.DiffMilliseconds(new DateTime(1999, 12, 31, 23, 59, 59, 999), new DateTime(2000, 1, 1, 0, 0, 0)),
                    f = DbFunctions.DiffMicroseconds(new DateTime(1999, 12, 31, 23, 59, 59, 999), new DateTime(2000, 1, 1, 0, 0, 0)),
                    g = DbFunctions.DiffNanoseconds(new DateTime(1999, 12, 31, 23, 59, 59, 999), new DateTime(2000, 1, 1, 0, 0, 0)),
                    h = DbFunctions.DiffMonths(new DateTime(1999, 12, 31, 23, 59, 59, 999), new DateTime(3000, 1, 1, 0, 0, 0)),
                    i = DbFunctions.DiffYears(new DateTime(1999, 12, 31, 23, 59, 59, 999), new DateTime(3000, 1, 1, 0, 0, 0)),
                    j = DbFunctions.DiffYears(null, new DateTime(2000, 1, 1)),
                    k = DbFunctions.DiffMinutes(new TimeSpan(1, 2, 3), new TimeSpan(4, 5, 6)),
                    l = DbFunctions.DiffMinutes(new TimeSpan(1, 2, 3), null)
                }).First();
                Assert.AreEqual(dateDiffs.a, 1);
                Assert.AreEqual(dateDiffs.b, 1);
                Assert.AreEqual(dateDiffs.c, 1);
                Assert.AreEqual(dateDiffs.d, 1);
                Assert.AreEqual(dateDiffs.e, 1);
                Assert.AreEqual(dateDiffs.f, 1000);
                Assert.AreEqual(dateDiffs.g, 1000000);
                Assert.AreEqual(dateDiffs.h, 12001);
                Assert.AreEqual(dateDiffs.i, 1001);
                Assert.AreEqual(dateDiffs.j, null);
                Assert.AreEqual(dateDiffs.k, 183);
                Assert.AreEqual(dateDiffs.l, null);
            }
        }
        public void Execute(IJobExecutionContext context)
        {
            var detail    = context.JobDetail;
            var sessionId = int.Parse(detail.Key.Name);
            var entities  = new Entities();

            entities.Configuration.ProxyCreationEnabled = false;

            var session = entities.Sessions
                          .Include(s => s.Station)
                          .Include(s => s.Encoder)
                          .FirstOrDefault(s => s.Id == sessionId);

            var scheduler = context.Scheduler;
            var next      = context.NextFireTimeUtc;
            var servers   = entities.Servers.Where(t =>
                                                   t.Active &&
                                                   t.MaxSessions > t.Sessions.Count &&
                                                   DbFunctions.DiffSeconds(t.Seen, DateTime.UtcNow) <= t.TTL
                                                   ).OrderBy(t =>
                                                             t.Sessions.Count
                                                             );

            if (servers.Count() == 0)
            {
                var warning = $"There are no servers available that can execute the requested job for session { sessionId }";

                sessionLog.Warn(warning);
                systemLog.Warn(warning);

                return;
            }

            // Pick the server with the least number of ongoing sessions
            var server = servers.First();

            // TODO Remove
            server = entities.Servers.Find(16);

            entities.Configuration.ProxyCreationEnabled = true;

            // Tell that server to start a new session
            var message       = new Composer().SessionStartRequest(session);
            var messageClient = Extensions.Instance.MessageClient.Value;

            messageClient.Send(server.IPv4, message);

            // TODO Hook onto messages coming from that server?
            //      Won't this come via the message client?
        }
Пример #10
0
        public JsonResult VNDExchangeRateData(string code)
        {
            var beginDate     = new DateTime(1970, 1, 1, 0, 0, 0);
            var context       = new StoreInfoContext();
            var exchangeRates = context.VNDExchangeRate_Days.Where(e => e.Code == code).Select(e => new {
                x = DbFunctions.DiffSeconds(beginDate, e.UpdatedTime),
                y = e.Buy
            }).ToList();

            return(Json(new ArrayList()
            {
                new { key = code, values = exchangeRates }
            }, JsonRequestBehavior.AllowGet));
        }
Пример #11
0
        private void GetDocuments_Click(object sender, RoutedEventArgs e)
        {
            var result = db.Timer.Where(w => w.UserId != 0 && w.AreaId == 19).Select(s => new
            {
                s.UserId,
                s.AreaId,
                s.DocumentId,
                s.DateStart,
                s.DateFinish,
                Duration = DbFunctions.DiffSeconds(s.DateStart, s.DateFinish)
            }).OrderBy(o => o.DateStart);

            DocumentListView.ItemsSource = result.ToList();
        }
Пример #12
0
        public void DateTimeOffsetDiffSeconds()
        {
            DateTimeOffset offset = stored.AddSeconds(-1);

#if !EFOLD
            var q = this.Entities
                    .Where(x =>
                           DbFunctions.DiffSeconds(offset, x.Offset) == 1);
#else
            var q = this.Entities
                    .Where(x =>
                           EntityFunctions.DiffSeconds(offset, x.Offset) == 1);
#endif

            q.Should().NotBeEmpty();
        }
Пример #13
0
        public void TimeDiffSeconds()
        {
            TimeSpan time = stored.Add(TimeSpan.FromSeconds(-1));

#if !EFOLD
            var q = this.Entities
                    .Where(x =>
                           DbFunctions.DiffSeconds(time, x.Time) == 1);
#else
            var q = this.Entities
                    .Where(x =>
                           EntityFunctions.DiffSeconds(time, x.Time) == 1);
#endif

            q.Should().NotBeEmpty();
        }
Пример #14
0
        public List <QuestionResultDto> QuestionResults(int idQuestionList)
        {
            List <QuestionResultDto> results = db.QuestionLists
                                               .Where(x => x.idQuestionList == idQuestionList)
                                               .SelectMany(x => x.QuestionResults)
                                               .GroupBy(x => x.attempt)
                                               .Select(x => new QuestionResultDto
            {
                attempt           = x.Key,
                participantsCount = x.GroupBy(g => g.Participant_idParticipant).Count(),
                totalTime         = x.Sum(y => DbFunctions.DiffSeconds(y.startTime, y.endTime))
            })
                                               .ToList();

            return(results);
        }
        public void DateTimeDiffSeconds()
        {
            DateTime date = stored.AddSeconds(-1);

#if !EFOLD
            var q = this.Entities
                    .Where(x =>
                           DbFunctions.DiffSeconds(date, x.DateTime) == 1);
#else
            var q = this.Entities
                    .Where(x =>
                           EntityFunctions.DiffSeconds(date, x.DateTime) == 1);
#endif

            q.Should().NotBeEmpty();
        }
Пример #16
0
        private Func <IQueryable <DeviceNotification>, IQueryable <DeviceNotification> > FilterByGridInterval(int?gridInterval)
        {
            if (gridInterval == null)
            {
                return(null);
            }

            var periodStart   = DateTime.SpecifyKind(new DateTime(2000, 1, 1), DateTimeKind.Utc);
            var periodSeconds = periodStart.Ticks / 10000000;

            return(query => query.OrderBy(n => n.Timestamp).GroupBy(n => new
            {
                n.DeviceID,
                n.Notification,
                Interval = (periodSeconds + DbFunctions.DiffSeconds(n.Timestamp, periodStart)) / gridInterval
            }).Select(g => g.FirstOrDefault()));
        }
        public List <string> GetCurrentUsers(string tokenUser, string tokenApi)
        {
            // Check Token User
            using (var dbContext = new UserTokenDBContext())
                if (!new DatabaseTokenValidator(dbContext).IsValid(tokenUser))
                {
                    return(null);
                }
            List <string> currentUsers = new List <string>();

            using (var dbContext = new UserTokenDBContext())
            {
                var validator = new Business.DatabaseTokenValidator(dbContext);
                currentUsers = dbContext.Token.Where(t => DbFunctions.DiffSeconds(t.CreateTime, DateTime.Now) < DefaultSecondsUntilTokenExpires).Select(t => t.User.Username).ToList();
            }
            return(currentUsers);
        }
Пример #18
0
        private void ClearExpiredSessions()
        {
            using (var db = new RHBGameRepository())
            {
                var currentTime     = DateTime.UtcNow;
                var expiredSessions = db.Sessions.Where(x => DbFunctions.DiffSeconds(x.LastActivity, currentTime) > _timeOut.TotalSeconds).ToList();

                if (expiredSessions.Count > 0)
                {
                    foreach (var session in expiredSessions)
                    {
                        db.Sessions.Remove(session);
                    }

                    db.SaveChanges();
                }
            }
        }
Пример #19
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="validposts"></param>
        /// <returns></returns>
        public static IQueryable <PostQueryInfo> OrderPostsByScore(IQueryable <Post> validposts)
        {
            DateTime scoreStart = DateTime.Now - TimeSpan.FromDays(30); //new DateTime(2018, 07, 01);
            var      sposts     = validposts
                                  .Where(p => !p.IsDeleted)
                                  .Where(p => !p.IsDraft)
                                  .Select(p => new
            {
                p,
                // Includes the sum of absolute value of comment scores
                cScore = p.Comments.Any() ? p.Comments.Where(c => !c.IsDeleted).Sum(c => Math.Abs((double)c.Score) < 1.0 ? 1.0 : Math.Abs((double)c.Score)) : 1.0
            })
                                  .Select(p => new
            {
                p.p,
                p.cScore,
                s = (Math.Abs((double)p.p.Score) < 1.0 ? 1.0 : Math.Abs((double)p.p.Score)),        // Max (|x|,1)
            })
                                  .Select(p => new
            {
                p.p,
                order1 = SqlFunctions.Log10(p.s),
                order2 = SqlFunctions.Log10(p.cScore < 1.0 ? 1.0 : p.cScore),         // Comment scores
                sign   = p.p.Score > 0.0 ? 1.0 : -1.0,                                // Sign of s
                dt     = 1.0 * DbFunctions.DiffSeconds(scoreStart, p.p.TimeStamp),    // time since start
            })
                                  .Select(p => new PostQueryInfo()
            {
                p            = p.p,
                order1       = p.order1,
                order2       = p.order2,
                sign         = p.sign,
                dt           = p.dt,
                hot          = (p.sign * (p.order1 + p.order2)) + (p.dt / (p.sign > 0 ? 90000.0 : 900000.0)),
                RootComments = p.p.Comments
                               .Where(c => !c.IsReply)
                               .Select(c => c.CommentId),
            })
                                  .OrderByDescending(p => p.hot);

            //.Select(p => p.p);

            return(sposts);
        }
 public ByCustomerIdAndStatus(int?customerId, bool?showConnectedOnly)
 {
     this.Expression = v => true;
     if (customerId.HasValue)
     {
         this.Expression = this.Expression.And(v => v.CustomerId == customerId);
     }
     if (showConnectedOnly.HasValue)
     {
         if (!showConnectedOnly.Value)
         {
             this.Expression = this.Expression.And(v => v.LastUpdatedStatus == null || DbFunctions.DiffSeconds(v.LastUpdatedStatus, DateTime.UtcNow) > 60);
         }
         else
         {
             this.Expression = this.Expression.And(v => DbFunctions.DiffSeconds(v.LastUpdatedStatus, DateTime.UtcNow) < 60);
         }
     }
 }
Пример #21
0
        /// <summary>
        /// 下注明细
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public PagerResult <Bet> GetUserBetReports(ReportSearchModel model)
        {
            using (var db = new RacingDbContext())
            {
                var isSettlementDone = model.SettlementType == 1 ? true : false;
                var query            = db.Bet
                                       .Include(nameof(Bet.User))
                                       .Where(b => b.UserId == model.UserId && b.IsSettlementDone == isSettlementDone);

                //已开奖
                query = query.Where(b => DbFunctions.DiffSeconds(b.PK.EndTime, DateTime.Now) > 0);
                if (model.FromDate.HasValue)
                {
                    query = query.Where(b => DbFunctions.DiffDays(model.FromDate, b.CreateTime) >= 0);
                }
                if (model.ToDate.HasValue)
                {
                    var toDate = model.ToDate.Value.AddDays(1);
                    query = query.Where(b => DbFunctions.DiffDays(b.CreateTime, toDate) > 0);
                }

                var result = query
                             .OrderByDescending(b => b.BetId)
                             .Pager(model.PageIndex, model.PageSize);

                // 奖金
                var betIds  = result.Items.Select(b => b.BetId).ToList();
                var pkBonus = db.PKBonus.Where(b => b.UserId == model.UserId && b.IsSettlementDone == isSettlementDone && betIds.Contains(b.BetId)).ToList();
                foreach (var bet in result.Items)
                {
                    var rebateBonus = pkBonus.Where(b => b.BetId == bet.BetId && b.BonusType == BonusType.Rebate).ToList(); // 退水
                    //var bonus = pkBonus.Where(b => b.BetId == bet.BetId).ToList();
                    var amountBonus = pkBonus.Where(b => b.BetId == bet.BetId && b.BonusType == BonusType.Bonus).ToList();; //扣除本钱的奖金
                    var amount      = amountBonus.Count > 0 ? amountBonus.Sum(b => b.Amount) : 0;

                    bet.RebateAmount = rebateBonus.Count > 0 ? rebateBonus.Sum(b => b.Amount) : 0; // 退水
                    bet.BonusAmount  = amount + bet.RebateAmount - bet.Amount;                     // 會員輸贏 = 中奖金额+退水-本金
                }

                return(result);
            }
        }
Пример #22
0
        public List <ProcessOverviewViewModel> createProcessOverview()
        {
            List <ProcessOverviewViewModel> processOverview = new List <ProcessOverviewViewModel>();
            var processes = _inflowDb.P_Processes.ToList();

            foreach (var i in processes)
            {
                ProcessOverviewViewModel m = new ProcessOverviewViewModel()
                {
                    Id = i.Id, Name = i.WS_Project.Name, Version = i.WS_Project_Version, Info = i.ProcessInfo, InstancesTotal = 0, InstancesRunning = 0, InstancesCompleted = 0
                };

                var c =
                    from pi in _inflowDb.P_ProcessInstance
                    where pi.Ended == true && pi.P_Process_Id == m.Id
                    select new { Id = pi.P_Process_Id, CycleTime = DbFunctions.DiffSeconds(pi.DateStarted.Value, pi.DateEnded.Value) };

                var r =
                    from pi in _inflowDb.P_ProcessInstance
                    where pi.Ended == false && pi.P_Process_Id == m.Id
                    select pi.Id;

                var completed = c.ToList();
                var running   = r.ToList();

                m.InstancesCompleted = completed.Count;
                m.InstancesRunning   = running.Count;
                m.InstancesTotal     = m.InstancesRunning + m.InstancesCompleted;
                if (m.InstancesCompleted > 0)
                {
                    m.MaxCycleTime     = new TimeSpan(0, 0, 0, (int)completed.Max(x => x.CycleTime));
                    m.MinCycleTime     = new TimeSpan(0, 0, 0, (int)completed.Min(x => x.CycleTime));
                    m.AverageCycleTime = new TimeSpan(0, 0, 0, (int)completed.Average(x => x.CycleTime));
                }

                processOverview.Add(m);
            }
            return(processOverview);
        }
Пример #23
0
 /// <summary>
 /// 构造函数
 /// </summary>
 public ViewTableBLL()
 {
     TypeAdapterConfig <ViewTable, ViewTableViewModel> .NewConfig()
     .Map(dest => dest.ViewID, src => src.ViewID)
     .Map(dest => dest.PageID, src => src.PageID)
     .Map(dest => dest.UserID, src => src.UserID)
     .Map(dest => dest.DateStart, src => src.DateStart)
     .Map(dest => dest.DateEnd, src => src.DateEnd)
     .Map(dest => dest.ViewSeconds, src => DbFunctions.DiffSeconds(src.DateStart, src.DateEnd))
     .Map(dest => dest.Portal, src => src.Portal)
     .Map(dest => dest.Version, src => src.Version)
     .Map(dest => dest.Browser, src => src.Browser)
     .Map(dest => dest.Width, src => src.Width)
     .Map(dest => dest.Height, src => src.Height)
     .Map(dest => dest.IP, src => src.IP)
     .Map(dest => dest.Synchronize, src => src.Synchronize)
     .Map(dest => dest.Remark, src => src.Remark)
     .Map(dest => dest.Network, src => src.Network)
     .Map(dest => dest.CreateDate, src => src.CreateDate)
     .Map(dest => dest.PageName, src => src.ViewPageTable.PageName)
     .Map(dest => dest.PageTitle, src => src.ViewPageTable.PageTitle)
     .Compile();
 }
Пример #24
0
        public static IQueryable <TSource> OrderByHotness <TSource>(
            this IQueryable <TSource> source) where TSource : Post
        {
            var epochTime = new DateTime(1970, 1, 1);

            return(source.Select(p => new
            {
                Post = p,
                Score = p.Votes.Count(m => m.IsUp) - p.Votes.Count(m => !m.IsUp)
            }).Select(p => new
            {
                p.Post,
                Order = (double)(SqlFunctions.Log((double)Math.Abs(p.Score)) / SqlFunctions.Log(10f)),
                Sign = p.Score > 0 ? 1 : (p.Score < 0 ? -1 : 0),
                Seconds = (double)DbFunctions.DiffSeconds(epochTime, p.Post.CreatedAt) - 1456272000
            })
                   .Select(p => new
            {
                p.Post,
                Hotness = Math.Round(p.Sign * p.Order + p.Seconds / 45000, 7)
            })
                   .OrderByDescending(p => p.Hotness)
                   .Select(p => p.Post));
        }
 private JourExceptionnel ProchainePeriodeExceptionnelle(DateTime date, bool ouvert)
 {
     using (foodtruckEntities db = new foodtruckEntities())
     {
         JourExceptionnel jour = (from j in db.JourExceptionnel
                                  where DbFunctions.DiffSeconds(date, j.DateFin) > 0 && j.Ouvert == ouvert
                                  orderby j.DateDebut
                                  select j).FirstOrDefault();
         if (jour == null)
         {
             jour = new JourExceptionnel
             {
                 DateDebut = DateTime.MaxValue,
                 DateFin   = DateTime.MaxValue,
                 Ouvert    = ouvert
             };
         }
         else if (jour.DateDebut < DateTime.Now)
         {
             jour.DateDebut = jour.DateDebut.Add(RecalculHeureDebut(date));
         }
         return(jour);
     }
 }
Пример #26
0
        public ActionResult Index()
        {
            var context      = new ApplicationDbContext();
            var orderedUsers = context.Users.OrderByDescending(u => u.Point).Take(10).ToList().Select(u => new UserStatistics(u, false)).ToList();
            var best100      = context.Matches.Where(m => m.GameEnd.HasValue && m.TotalNumber == 100 && m.Finished).OrderBy(m => DbFunctions.DiffSeconds(m.GameEnd.Value, m.GameBegin)).FirstOrDefault();
            var best50       = context.Matches.Where(m => m.GameEnd.HasValue && m.TotalNumber == 50 && m.Finished).OrderBy(m => DbFunctions.DiffSeconds(m.GameEnd.Value, m.GameBegin)).FirstOrDefault();
            var chatClients  = context.Users.Select(u => new ChatModels.ChatClient()
            {
                UserId = u.Id, UserName = u.UserName, DisplayName = u.DisplayName, Avatar = u.Avatar
            }).ToList();

            context.SaveChanges();
            HomeView homeView = new HomeView
            {
                OrderedUsers = orderedUsers,
                Best100      = best100,
                Best50       = best50,
                ChatClients  = chatClients
            };

            return(View(homeView));
        }
Пример #27
0
        /// <summary>
        /// 用户.今日已结/未结明细 统计
        /// 今日已结在封盘时job生成, 包括奖金+退水
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public UserBonusReportStatistics GetUserBetItemReportStatistics(UserReportSearchModel model)
        {
            using (var db = new RacingDbContext())
            {
                var statistics = new UserBonusReportStatistics();

                var queryBet = db.BetItem.Include(nameof(BetItem.Bet)).Where(b => b.Bet.UserId == model.UserId &&
                                                                             b.Bet.IsSettlementDone == model.IsSettlementDone &&         //今日已结/未结明细
                                                                             DbFunctions.DiffDays(b.Bet.PK.EndTime, DateTime.Now) == 0); //今日


                #region Bonus 今日已结在封盘时job生成, 包括奖金+退水
                //var queryBonus = db.PKBonus
                //    .Where(b => b.UserId == model.UserId && b.IsSettlementDone == model.IsSettlementDone && DbFunctions.DiffDays(b.PK.EndTime, DateTime.Now) == 0);

                //if (model.IsSettlementDone)
                //{
                //    //已结
                //    queryBonus = queryBonus.Where(b => DbFunctions.DiffSeconds(b.PK.EndTime, DateTime.Now) > 0);
                //}
                //else
                //{
                //    //未结
                //    queryBonus = queryBonus.Where(b => DbFunctions.DiffSeconds(b.PK.EndTime, DateTime.Now) < 0);
                //}
                #endregion

                // 注单数量
                statistics.BetCount = queryBet.Count();

                // 下注金额
                statistics.BetAmount = statistics.BetCount > 0 ? queryBet.Sum(b => b.Amount) : 0;

                // 中奖金额+退水-本金, 奖金+退水 job生成
                if (model.IsSettlementDone)
                {
                    //今日已结在封盘时job生成, 包括奖金+退水
                    var queryBonus = db.PKBonus
                                     .Where(b => b.UserId == model.UserId && b.IsSettlementDone == model.IsSettlementDone && DbFunctions.DiffDays(b.PK.EndTime, DateTime.Now) == 0);

                    //已结
                    queryBonus = queryBonus.Where(b => DbFunctions.DiffSeconds(b.PK.EndTime, DateTime.Now) > 0);

                    statistics.BonusAmount = queryBonus.Any() ? queryBonus.Sum(b => b.Amount) - statistics.BetAmount : 0 - statistics.BetAmount;
                }
                else
                {
                    //未结(可赢金额),按一定中奖计算
                    var bets        = queryBet.ToList();
                    var pkIds       = bets.Select(b => b.Bet.PKId).ToList();
                    var pkRates     = db.PKRate.Where(r => pkIds.Contains(r.PKId)).ToList();
                    var userRebates = db.UserRebate.Include(nameof(UserRebate.User)).Where(u => u.UserId == model.UserId).ToList();
                    foreach (var betItem in bets)
                    {
                        var pkRate     = pkRates.Where(r => r.PKId == betItem.Bet.PKId && r.Num == betItem.Num && r.Rank == betItem.Rank).First();
                        var bonus      = betItem.Amount * pkRate.Rate;
                        var userRebate = userRebates.Where(u => u.UserId == betItem.Bet.UserId && u.RebateNo == betItem.Num).First();
                        var rebate     = betItem.Amount * UserRebateService.GetDefaultRebate(userRebate, userRebate.User.DefaultRebateType);
                        betItem.BonusAmount = bonus + rebate - betItem.Amount;  // 退水后奖金 = 中奖金额+退水-本金, 奖金+退水 job生成
                    }

                    statistics.BonusAmount = bets.Any() ? bets.Sum(b => b.BonusAmount) : 0;
                }


                return(statistics);
            }
        }
Пример #28
0
 public IEnumerable <UrlItem> GetAvailableUrls(int number, DateTime asOfDate)
 {
     using (var ctx = CreateContext())
     {
         var urls = ctx.UrlItems
                    // note: diff in microseconds causes overflow in DB, that's why diff in seconds is used
                    .Where(url => !url.IsInProgress && (url.EvaliableFromDate.HasValue == false || DbFunctions.DiffSeconds(url.EvaliableFromDate, asOfDate) > 0))
                    .OrderBy(url => url.EvaliableFromDate)
                    .ThenBy(url => url.Url)
                    .Take(number)
                    .ToList();
         // mark them as taken to be processed
         foreach (var url in urls)
         {
             url.IsInProgress = true;
         }
         ctx.Commit();
         return(urls);
     }
 }
Пример #29
0
        public ProcessDetailsViewModel createProcessDetails(int processId)
        {
            var process = _inflowDb.P_Processes.Find(processId);

            ProcessDetailsViewModel model = new ProcessDetailsViewModel()
            {
                Id = process.Id, Name = process.WS_Project.Name, Version = process.WS_Project_Version, Info = process.ProcessInfo
            };

            var completed =
                from pi in _inflowDb.P_ProcessInstance
                where pi.P_Process_Id == processId && pi.Ended == true
                select new ProcessDetailsItemViewModel {
                Ended = true, Id = pi.Id, StartedByUser = pi.StartedByUser, EndedByUser = pi.EndedByUser, DateStarted = pi.DateStarted.Value, DateEnded = pi.DateEnded.Value, CycleTimet = DbFunctions.DiffSeconds(pi.DateStarted.Value, pi.DateEnded.Value).Value
            };

            var running =
                from pi in _inflowDb.P_ProcessInstance
                where pi.P_Process_Id == processId && pi.Ended == false
                select new ProcessDetailsItemViewModel {
                Ended = false, Id = pi.Id, StartedByUser = pi.StartedByUser, EndedByUser = "", DateStarted = pi.DateStarted.Value
            };


            model.Details = completed.ToList();
            model.Details.ForEach(d => d.CycleTime = new TimeSpan(0, 0, 0, (int)d.CycleTimet));

            model.Details.AddRange(running.ToList());

            model.Details = model.Details.OrderByDescending(x => x.DateStarted).ToList();

            return(model);
        }
Пример #30
0
        public JsonResult BuscarNotificacionAnfitrion()
        {
            int      usuario            = Convert.ToInt32(Session["user_usuarioid"]);
            DateTime fechaHoy           = DateTime.Now;
            string   buscarTiempoEspera =
                (from parametro in context.icb_sysparameter
                 where parametro.syspar_cod == "P53"
                 select parametro.syspar_value).FirstOrDefault();
            int segundos           = Convert.ToInt32(buscarTiempoEspera);
            var buscarNotificacion = (from alerta in context.alertaasesor
                                      join tercero in context.icb_terceros
                                      on alerta.propecto equals tercero.tercero_id
                                      where alerta.anfitrion == usuario &&
                                      alerta.aprobado == false &&
                                      alerta.recibido == true &&
                                      alerta.cancelado == false &&
                                      alerta.finalizado == false &&
                                      alerta.rechazado == true &&
                                      alerta.aprobado != null

                                      /*&& alerta.finalizado == false
                                       * && (alerta.recibido == true && alerta.cancelado == false && alerta.aprobado == false &&
                                       *  alerta.reasignado == false
                                       || alerta.recibido == true && alerta.cancelado == false && alerta.aprobado == false &&
                                       || alerta.reasignado)*/
                                      && alerta.fecha.Year == fechaHoy.Year && alerta.fecha.Month == fechaHoy.Month &&
                                      alerta.fecha.Day == fechaHoy.Day &&
                                      DbFunctions.DiffSeconds(alerta.fecha, fechaHoy) >= segundos
                                      orderby alerta.fecha descending
                                      select new
            {
                alerta.reasignado,
                alerta.cancelado,
                alerta.aprobado,
                alerta.id,
                alerta.propecto,
                tercero.tercero_id,
                nombreTercero = tercero.razon_social + tercero.prinom_tercero + " " + tercero.segnom_tercero + " " +
                                tercero.apellido_tercero + " " + tercero.segapellido_tercero,
                diferencia = DbFunctions.DiffSeconds(alerta.fecha, fechaHoy)
            }).FirstOrDefault();

            if (buscarNotificacion != null)
            {
                if (buscarNotificacion.aprobado == false)
                {
                    alertaasesor buscaAlerta = context.alertaasesor.FirstOrDefault(x => x.id == buscarNotificacion.id);
                    buscaAlerta.recibido             = true;
                    buscaAlerta.aprobado             = false;
                    buscaAlerta.finalizado           = true;
                    buscaAlerta.rechazado            = true;
                    buscaAlerta.reasignado           = true;
                    context.Entry(buscaAlerta).State = EntityState.Modified;
                    int guardar = context.SaveChanges();
                    var mensaje = new
                    {
                        notificacion = true,
                        buscarNotificacion.tercero_id,
                        alerta_id = buscarNotificacion.id,
                        alerta    = "El prospecto " + buscarNotificacion.nombreTercero + " no tiene asesor asignado"
                    };
                    return(Json(mensaje, JsonRequestBehavior.AllowGet));
                }

                return(Json(new { notificacion = false }, JsonRequestBehavior.AllowGet));
            }

            return(Json(new { notificacion = false }, JsonRequestBehavior.AllowGet));
        }