/// <summary> /// export daily report to pdf /// </summary> /// <param name="vehicleId"></param> /// <param name="startPeriod"></param> /// <returns></returns> public async Task <FileResult> ExportReportPdf(string vehicleId, string startPeriod) { var id = Guid.Parse(vehicleId); DateTime start; try { DateTime.TryParseExact(startPeriod, "yyyy-MM-dd", null, DateTimeStyles.AssumeLocal, out start); } catch (Exception e) { Console.WriteLine(e); throw; } var endPeriod = start.AddHours(24).AddTicks(-1); var vehicle = await _vehicleService.GetVehicleByIdAsync(id); var positions = await _positionService.GetVehiclePositionsByPeriod(id, start, endPeriod); MemoryStream stream = new MemoryStream(); if (positions.Any()) { var report = new CompleteDailyReport(positions.OrderBy(p => p.Timestamp).ToList(), vehicle); _pdfService.CreatePdfReport(positions.OrderBy(p => p.Timestamp).ToList(), vehicle, report, stream); } stream.Flush(); //Always catches me out stream.Position = 0; //Not sure if this is required return(File(stream, "application/pdf", $"reeport_{vehicle?.VehicleName}_{DateTime.Now.Date:yyyy-MM-dd}.pdf")); }