public IHttpActionResult TryExportJournals(ExportJournalsModel model) { if (CurrentUser == null || !CurrentUser.IsAdmin) { return(Unauthorized()); } try { var result = new HttpResponseMessage(HttpStatusCode.OK) { Content = new ByteArrayContent(ExportHelper.ExportJournals(model, DataContext)) }; result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment") { FileName = "exp-" + DateTime.Now + "-journals" + (model.IsXml ? ".xml" : ".txt") }; result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); var response = ResponseMessage(result); return(response); } catch (Exception e) { return(InternalServerError(e)); } }
public FileResult TryExportJournals(ExportJournalsModel model) { if (model.IsXml) { return(File(ExportHelper.ExportJournals(model, DataContext), System.Net.Mime.MediaTypeNames.Application.Octet, "exp-" + DateTime.Now + "-journals.xml")); } else { return(File(ExportHelper.ExportJournals(model, DataContext), System.Net.Mime.MediaTypeNames.Application.Octet, "exp-" + DateTime.Now + "-journals.txt")); } }
public static byte[] ExportJournals(ExportJournalsModel model, LibraryDataContext dataContext) { if (model.IsXml) { XmlSerializer serializer = new XmlSerializer(typeof(List <JournalModel>)); MemoryStream stream = new MemoryStream(); serializer.Serialize(stream, model.Journals.Where(jour => jour.Selected) .Select(jj => new JournalModel(dataContext.Journals.First(journal => journal.Id == jj.Id))) .ToList()); return(stream.ToArray()); } else { MemoryStream stream = new MemoryStream(); StreamWriter writer = new StreamWriter(stream); writer.WriteLine("Journals"); foreach (JournalModel journal in model.Journals.Where(jm => jm.Selected) .Select(jour => new JournalModel(dataContext.Journals.First(journal => journal.Id == jour.Id))) .ToList()) { writer.WriteLine(journal.Id); writer.WriteLine(journal.Title); writer.WriteLine(journal.Subjects); writer.WriteLine(journal.Periodicity); writer.WriteLine(journal.Date); writer.WriteLine(journal.Amount); writer.WriteLine(journal.Price); writer.WriteLine(journal.PhotoId); writer.WriteLine(journal.PhotoPath); } writer.Flush(); stream.Seek(0, SeekOrigin.Begin); return(stream.ToArray()); } }