|
7 | 7 | using SmartStore.Core.Domain.Orders; |
8 | 8 | using SmartStore.Core.Domain.Payments; |
9 | 9 | using SmartStore.Core.Events; |
| 10 | +using SmartStore.Core.Plugins; |
| 11 | +using SmartStore.Services.Configuration; |
| 12 | +using SmartStore.Services.Media.Storage; |
10 | 13 |
|
11 | 14 | namespace SmartStore.Services.Media |
12 | 15 | { |
13 | | - /// <summary> |
14 | | - /// Download service |
15 | | - /// </summary> |
16 | 16 | public partial class DownloadService : IDownloadService |
17 | 17 | { |
18 | 18 | private readonly IRepository<Download> _downloadRepository; |
19 | 19 | private readonly IEventPublisher _eventPubisher; |
20 | | - private readonly IBinaryDataService _binaryDataService; |
| 20 | + private readonly Provider<IMediaStorageProvider> _storageProvider; |
21 | 21 |
|
22 | | - public DownloadService( |
| 22 | + public DownloadService( |
23 | 23 | IRepository<Download> downloadRepository, |
24 | 24 | IEventPublisher eventPubisher, |
25 | | - IBinaryDataService binaryDataService) |
| 25 | + ISettingService settingService, |
| 26 | + IProviderManager providerManager) |
26 | 27 | { |
27 | 28 | _downloadRepository = downloadRepository; |
28 | 29 | _eventPubisher = eventPubisher; |
29 | | - _binaryDataService = binaryDataService; |
30 | | - } |
| 30 | + |
| 31 | + var systemName = settingService.GetSettingByKey("Media.Storage.Provider", DatabaseMediaStorageProvider.SystemName); |
| 32 | + |
| 33 | + _storageProvider = providerManager.GetProvider<IMediaStorageProvider>(systemName); |
| 34 | + } |
31 | 35 |
|
32 | 36 | public virtual Download GetDownloadById(int downloadId) |
33 | 37 | { |
@@ -71,39 +75,44 @@ public virtual Download GetDownloadByGuid(Guid downloadGuid) |
71 | 75 |
|
72 | 76 | public virtual void DeleteDownload(Download download) |
73 | 77 | { |
74 | | - if (download == null) |
75 | | - throw new ArgumentNullException("download"); |
| 78 | + Guard.ArgumentNotNull(() => download); |
76 | 79 |
|
77 | | - if ((download.BinaryDataId ?? 0) != 0) |
78 | | - { |
79 | | - _binaryDataService.DeleteBinaryData(download.BinaryData); |
80 | | - } |
| 80 | + // delete from storage |
| 81 | + _storageProvider.Value.Remove(download.ToMedia()); |
81 | 82 |
|
82 | | - _downloadRepository.Delete(download); |
| 83 | + // delete entity |
| 84 | + _downloadRepository.Delete(download); |
83 | 85 |
|
84 | | - _eventPubisher.EntityDeleted(download); |
| 86 | + // event notification |
| 87 | + _eventPubisher.EntityDeleted(download); |
85 | 88 | } |
86 | 89 |
|
87 | | - public virtual void InsertDownload(Download download) |
| 90 | + public virtual void InsertDownload(Download download, byte[] downloadBinary) |
88 | 91 | { |
89 | | - if (download == null) |
90 | | - throw new ArgumentNullException("download"); |
| 92 | + Guard.ArgumentNotNull(() => download); |
91 | 93 |
|
92 | | - download.UpdatedOnUtc = DateTime.UtcNow; |
93 | 94 | _downloadRepository.Insert(download); |
94 | 95 |
|
95 | | - _eventPubisher.EntityInserted(download); |
| 96 | + // save to storage |
| 97 | + _storageProvider.Value.Save(download.ToMedia(), downloadBinary); |
| 98 | + |
| 99 | + // event notification |
| 100 | + _eventPubisher.EntityInserted(download); |
96 | 101 | } |
97 | 102 |
|
98 | | - public virtual void UpdateDownload(Download download) |
| 103 | + public virtual void UpdateDownload(Download download, byte[] downloadBinary) |
99 | 104 | { |
100 | | - if (download == null) |
101 | | - throw new ArgumentNullException("download"); |
| 105 | + Guard.ArgumentNotNull(() => download); |
102 | 106 |
|
103 | 107 | download.UpdatedOnUtc = DateTime.UtcNow; |
| 108 | + |
104 | 109 | _downloadRepository.Update(download); |
105 | 110 |
|
106 | | - _eventPubisher.EntityUpdated(download); |
| 111 | + // save to storage |
| 112 | + _storageProvider.Value.Save(download.ToMedia(), downloadBinary); |
| 113 | + |
| 114 | + // event notification |
| 115 | + _eventPubisher.EntityUpdated(download); |
107 | 116 | } |
108 | 117 |
|
109 | 118 | public virtual bool IsDownloadAllowed(OrderItem orderItem) |
|
0 commit comments