/// <summary> /// Initializes a new instance of the <see cref="AttachmentQuery"/> class. /// </summary> /// <param name="type">The type.</param> /// <param name="status">The status.</param> /// <param name="sort">The sort.</param> /// <param name="order">The order.</param> /// <param name="page">The page.</param> public AttachmentQuery(string type, string status, SortAttachment sort, SortOrder order, int? page) { IAttachmentSpecification specification = null; if (!string.IsNullOrEmpty(type)) { specification = new AttachmentFileTypeSpecification(type); } if (!string.IsNullOrEmpty(status)) { if (specification == null) { specification = new AttachmentStatusSpecification(status.AsEnum<AttachmentStatus>()); } else { var spec = new AndSpecification<Attachment>( specification, new AttachmentStatusSpecification(status.AsEnum<AttachmentStatus>()) ); specification = spec as IAttachmentSpecification; } } if (specification == null) { specification = new AttachmentSpecification(); } specification.Page = page; specification.Limit = Setting.AttachmentPageLimit.Value; specification.Sort = sort; specification.Order = order; this.Specification = specification; }
public ActionResult Index(string type, string status, SortAttachment sort, SortOrder order, int? page) { var query = new AttachmentQuery(type, status, sort, order, page); var attachments = this.AttachmentService.GetPaged(query.Specification); var attachment = attachments.FirstOrDefault(); var privilege = new AttachmentPrivilege(); return privilege.CanView(attachment) ? base.View(Views.Index, attachments) : NotAuthorized(); }