public ActionResult DeliverBook(Guid bookId, BookFormatEnum bookFormat, bool compress = true, string email = null) { var bookSource = DataService.GetBookSource(bookId, User.UserId, User.IsSuperUser); if (bookSource == null) { return(new HttpNotFoundResult()); } try { var target = _convertService.ConvertAndGetTargetFileName(bookSource, bookFormat, compress); if (!string.IsNullOrEmpty(email)) { DataService.AddDownload((Guid)User.UserId, bookId, DownloadTypeEnum.Email); _mailService.DeliverBookToEmail(email, bookSource.Name, target); if (System.IO.File.Exists(target.DownloadFileName)) { System.IO.File.Delete(target.DownloadFileName); } return(new HttpStatusCodeResult(HttpStatusCode.OK)); } DataService.AddDownload((Guid)User.UserId, bookId, DownloadTypeEnum.File); return(new FilePathResult(target.FullFileName, System.Net.Mime.MediaTypeNames.Application.Octet) { FileDownloadName = target.DownloadFileName }); } catch (Exception ex) { return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError, ex.Message)); } }