示例#1
0
 public IActionResult GetActiveSubmission(EditorSubmissionGridSearchModel model)
 {
     if (User.IsInRole(RoleName.SectionEditor))
     {
         return(Ok(HttpContext.RequestServices.GetService <ISubmissionService>().JournalSubmission(TenantID, model, ((JMSPrincipal)User).ApplicationUser.Id)));
     }
     return(Ok(HttpContext.RequestServices.GetService <ISubmissionService>().JournalSubmission(TenantID, model)));
 }
示例#2
0
        public EICSubmissionGridModel JournalSubmission(string journalPath, EditorSubmissionGridSearchModel model, long?assignerId = null)
        {
            var context      = _serviceProvider.GetService <ApplicationDbContext>();
            var statuses     = new SubmissionStatus[] { SubmissionStatus.Submission, SubmissionStatus.Review };
            var dbSubmission = context.Submission.Where(x => x.User.Tenant.JournalPath == journalPath && statuses.Contains(x.SubmissionStatus));

            if (assignerId.HasValue)
            {
                dbSubmission = dbSubmission.Where(x => x.EditorId == assignerId);
            }
            if (model.AssignedStatus == EditorAssignedStatus.UnAssigned)
            {
                dbSubmission = dbSubmission.Where(x => x.EditorId == null);
            }
            else if (model.AssignedStatus == EditorAssignedStatus.Assigned)
            {
                dbSubmission = dbSubmission.Where(x => x.EditorId != null);
                if (model.EditerId.HasValue)
                {
                    dbSubmission = dbSubmission.Where(x => x.EditorId == model.EditerId.Value);
                }
            }
            var submissions = dbSubmission.Select(x => new
            {
                x.User.FirstName,
                x.User.LastName,
                x.UpdatedDate,
                x.Prefix,
                x.SubmissionStatus,
                SubmissionID = x.Id,
                x.Subtitle,
                x.Title
            });

            if (!string.IsNullOrEmpty(model.SrchText))
            {
                submissions = submissions.Where(x => EF.Functions.ILike(x.Subtitle, $"%{model.SrchText}%") || EF.Functions.ILike(x.Title, $"%{model.SrchText}%") || EF.Functions.ILike(x.Prefix, $"%{model.SrchText}%"));
            }
            if (!string.IsNullOrEmpty(model.Author))
            {
                submissions = submissions.Where(x => EF.Functions.ILike(x.FirstName + " " + x.LastName, $"%{model.Author}%"));
            }
            if (model.SubmissionStatus.HasValue)
            {
                submissions = submissions.Where(x => x.SubmissionStatus == model.SubmissionStatus);
            }
            if (string.IsNullOrEmpty(model.sortOrder) || model.sortOrder == "desc")
            {
                submissions = submissions.OrderByDescending(x => x.UpdatedDate);
            }
            else
            {
                submissions = submissions.OrderBy(x => x.UpdatedDate);
            }
            return(new EICSubmissionGridModel
            {
                ItemsCount = submissions.Count(),
                Data = submissions.Skip((model.pageIndex - 1) * model.pageSize).Take(model.pageSize).ToList().Select(x => new EICSubmissionGridModelItem
                {
                    FirstName = x.FirstName,
                    LastName = x.LastName,
                    LastUpdated = x.UpdatedDate.ToString("dd MMM yyyy"),
                    Prefix = x.Prefix,
                    Status = x.SubmissionStatus.ToString(),
                    SubmissionID = x.SubmissionID,
                    SubTitle = x.Subtitle,
                    Title = x.Title
                })
            });
        }