示例#1
0
        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));
            }
        }