public IEnumerable <ProjectViewStatusDetail> GetChangedProjectViewStatusDetail(string userId, bool includeFinanceStatus)
        {
            var viewStatusQuery = ProjectViewStatuses.Where(q => q.UserId == userId);

            if (includeFinanceStatus)
            {
                viewStatusQuery = viewStatusQuery.Where(q => q.Status > 0 || q.FinanceStatus > 0);
            }
            else
            {
                viewStatusQuery = viewStatusQuery.Where(q => q.Status > 0);
            }
            var query = viewStatusQuery.Join(Projects, vs => vs.ProjectId, p => p.Id, (vs, p) => new ProjectViewStatusDetail
            {
                Id            = vs.Id,
                ProjectId     = vs.ProjectId,
                ProjectName   = p.Name,
                ProjectStatus = p.Status,
                UserId        = vs.UserId,
                Status        = vs.Status,
                FinanceStatus = vs.FinanceStatus,
                UpdateTime    = vs.UpdateTime
            }).OrderByDescending(q => q.UpdateTime);

            return(query.ToArray());
        }
        public void UpdateProjectViewStatusRead(string projectId, string userId)
        {
            var pvs = ProjectViewStatuses.FirstOrDefault(q => q.ProjectId == projectId && q.UserId == userId);

            if (pvs == null)
            {
                pvs = new ProjectViewStatus()
                {
                    Id            = Guid.NewGuid().ToString(),
                    UserId        = userId,
                    ProjectId     = projectId,
                    Status        = 0,
                    FinanceStatus = 0
                };
                ProjectViewStatuses.Add(pvs);
                SaveChanges();
            }
            else
            {
                pvs.Status        = 0;
                pvs.FinanceStatus = 0;
                UpdateEntity(pvs);
                SaveChanges();
            }
        }
 public IEnumerable <ProjectViewStatus> GetProjectViewStatus(string[] projectIds, string userId)
 {
     return(ProjectViewStatuses.Where(q => projectIds.Contains(q.ProjectId) && q.UserId == userId).ToArray());
 }