private byte[] GetExportContent(ReportModel model, IReportService service) { var cards = CardHelper.GetCards(model, TrelloInstance).ToList(); var lists = TrelloInstance.Lists.ForBoard(new BoardId(model.BoardId)).OrderBy(l => l.Pos).ToList(); var result = service.GenerateCardReports(cards, lists, model.UserIds); return result; }
/// <summary> /// Get cards for a report /// </summary> /// <param name="model">Input model</param> /// <param name="instance">Trello instance</param> /// <returns>Card list</returns> public static IEnumerable<Card> GetCards(ReportModel model, ITrello instance) { // set query start date var startDate = DateTimeHelper.GetStartDate(model.StartDate, model.ReportIntervalType); // set query end date var endDate = DateTimeHelper.GetEndDate(startDate, model.ReportIntervalType); // query cards var cards = instance.Cards.ForBoard(new BoardId(model.BoardId)); // if interval type is actually, doesn't need activity filter if (model.ReportIntervalType != "actually") { // query card actions var changedCards = GetCardIdsFromActions(instance, model.BoardId, startDate, endDate); // filter cards by date interval cards = cards.Where(c => changedCards.Contains(c.Id)); } // filter cards by lists cards = cards.Where(c => model.ListIds.Contains(c.IdList)); // filter cards by user cards = cards.Where(c => c.Members.Select(m => m.Id).Intersect(model.UserIds).Any()); // separated cards by labels cards = SepareteCardByLabels(cards); // order cards cards = OrderCards(cards); return cards; }
public ActionResult ReportPreview(ReportModel model) { // if input data is empty if (model == null || string.IsNullOrEmpty(model.BoardId)) { return CreateResponse(null); } var cards = CardHelper.GetCards(model, TrelloInstance); return CreateResponse(cards); }
public FileContentResult Word(ReportModel model) { var result = GetExportContent(model, new Sharp2WordService()); var fileName = string.Format("trello-report-{0}.doc", DateTime.Now.ToString("yyyy-MM-dd")); return File(result, "application/vnd.ms-word", fileName); }
public ActionResult Excel(ReportModel model) { var result = GetExportContent(model, new NpoiExcelService()); var fileName = string.Format("trello-report-{0}.xls", DateTime.Now.ToString("yyyy-MM-dd")); return File(result, "application/vnd.ms-excel", fileName); }