1- using Core ;
2- using Core . Data ;
3- using Core . Helpers ;
4- using Core . Services ;
1+ using Core . Services ;
52using Microsoft . AspNetCore . Authorization ;
63using Microsoft . AspNetCore . Http ;
7- using Microsoft . AspNetCore . Identity ;
84using Microsoft . AspNetCore . Mvc ;
9- using System ;
105using System . Collections . Generic ;
11- using System . Linq ;
126using System . Threading . Tasks ;
137
148namespace App . Controllers
@@ -17,171 +11,19 @@ namespace App.Controllers
1711 public class AdminController : Controller
1812 {
1913 IDataService _db ;
20- IStorageService _ss ;
21- UserManager < AppUser > _um ;
2214 IImportService _feed ;
2315
24- public AdminController ( IDataService db , IImportService feed , IStorageService ss , UserManager < AppUser > um )
16+ public AdminController ( IDataService db , IImportService feed )
2517 {
2618 _db = db ;
2719 _feed = feed ;
28- _um = um ;
29- _ss = ss ;
3020 }
3121
3222 public IActionResult Index ( )
3323 {
3424 return Redirect ( "~/admin/posts" ) ;
3525 }
3626
37- [ HttpDelete ]
38- public async Task RemovePost ( int id )
39- {
40-
41- var post = _db . BlogPosts . Single ( p => p . Id == id ) ;
42- var author = _db . Authors . Single ( a => a . Id == post . AuthorId ) ;
43- var user = _db . Authors . Single ( a => a . AppUserName == User . Identity . Name ) ;
44-
45- //prevents users from removing other users posts or admin posts --manuta 9-16-2018
46- if ( user . IsAdmin || author . AppUserName == User . Identity . Name )
47- {
48- _db . BlogPosts . Remove ( post ) ;
49- _db . Complete ( ) ;
50- }
51- await Task . CompletedTask ;
52- }
53-
54- [ HttpPut ]
55- public async Task PublishPost ( int id , string flag )
56- {
57- var post = _db . BlogPosts . Single ( p => p . Id == id ) ;
58- var author = _db . Authors . Single ( a => a . Id == post . AuthorId ) ;
59- var user = _db . Authors . Single ( a => a . AppUserName == User . Identity . Name ) ;
60- if ( ! string . IsNullOrEmpty ( flag ) && ( user . IsAdmin || author . AppUserName == User . Identity . Name ) )
61- {
62- if ( flag == "P" ) post . Published = DateTime . UtcNow ;
63- if ( flag == "U" ) post . Published = DateTime . MinValue ;
64- _db . Complete ( ) ;
65- }
66- await Task . CompletedTask ;
67- }
68-
69- [ HttpPut ]
70- public async Task FeaturePost ( int id , string flag )
71- {
72- var post = _db . BlogPosts . Single ( p => p . Id == id ) ;
73- var author = _db . Authors . Single ( a => a . Id == post . AuthorId ) ;
74- var user = _db . Authors . Single ( a => a . AppUserName == User . Identity . Name ) ;
75- if ( ! string . IsNullOrEmpty ( flag ) && ( user . IsAdmin || author . AppUserName == User . Identity . Name ) )
76- {
77- if ( flag == "F" ) post . IsFeatured = true ;
78- if ( flag == "U" ) post . IsFeatured = false ;
79- _db . Complete ( ) ;
80- }
81- await Task . CompletedTask ;
82- }
83-
84- [ Route ( "assets" ) ]
85- public async Task < AssetsModel > GetAssetList ( int page = 1 , string filter = "" , string search = "" )
86- {
87- var pager = new Pager ( page ) ;
88- var user = _um . Users . Single ( u => u . UserName == User . Identity . Name ) ;
89- IEnumerable < AssetItem > items ;
90-
91- if ( string . IsNullOrEmpty ( search ) )
92- {
93- if ( filter == "filterImages" )
94- {
95- items = await _ss . Find ( a => a . AssetType == AssetType . Image , pager ) ;
96- }
97- else if ( filter == "filterAttachments" )
98- {
99- items = await _ss . Find ( a => a . AssetType == AssetType . Attachment , pager ) ;
100- }
101- else
102- {
103- items = await _ss . Find ( null , pager ) ;
104- }
105- }
106- else
107- {
108- items = await _ss . Find ( a => a . Title . Contains ( search ) , pager ) ;
109- }
110-
111- if ( page < 1 || page > pager . LastPage )
112- return null ;
113-
114- return new AssetsModel
115- {
116- Assets = items ,
117- Pager = pager
118- } ;
119- }
120-
121- [ Route ( "assets/pick" ) ]
122- public async Task < AssetItem > Pick ( string type , string asset , string post )
123- {
124- if ( type == "postCover" )
125- {
126- await _db . BlogPosts . SaveCover ( int . Parse ( post ) , asset ) ;
127- }
128- else if ( type == "appCover" )
129- {
130- var cover = _db . CustomFields . Single ( f => f . AuthorId == 0 && f . Name == Constants . BlogCover ) ;
131- if ( cover == null )
132- _db . CustomFields . Add ( new CustomField { AuthorId = 0 , Name = Constants . BlogCover , Content = asset } ) ;
133- else
134- cover . Content = asset ;
135- _db . Complete ( ) ;
136- }
137- else if ( type == "appLogo" )
138- {
139- var logo = _db . CustomFields . Single ( f => f . AuthorId == 0 && f . Name == Constants . BlogLogo ) ;
140- if ( logo == null )
141- _db . CustomFields . Add ( new CustomField { AuthorId = 0 , Name = Constants . BlogLogo , Content = asset } ) ;
142- else
143- logo . Content = asset ;
144- _db . Complete ( ) ;
145- }
146- else if ( type == "avatar" )
147- {
148- var user = _db . Authors . Single ( a => a . AppUserName == User . Identity . Name ) ;
149- user . Avatar = asset ;
150- _db . Complete ( ) ;
151- }
152-
153- var item = await _ss . Find ( a => a . Url == asset , new Pager ( 1 ) ) ;
154- return item . FirstOrDefault ( ) ;
155- }
156-
157- [ HttpDelete , Route ( "assets/remove" ) ]
158- public IActionResult Remove ( string url )
159- {
160- _ss . DeleteFile ( url ) ;
161-
162- return Ok ( "Deleted" ) ;
163- }
164-
165- [ HttpPost , Route ( "assets/upload" ) ]
166- public async Task < IActionResult > Upload ( ICollection < IFormFile > files )
167- {
168- foreach ( var file in files )
169- {
170- await SaveFile ( file ) ;
171- }
172- return Ok ( "Created" ) ;
173- }
174-
175- async Task SaveFile ( IFormFile file )
176- {
177- var user = _um . Users . Where ( u => u . UserName == User . Identity . Name )
178- . FirstOrDefault ( ) ;
179-
180- var path = string . Format ( "{0}/{1}" , DateTime . Now . Year , DateTime . Now . Month ) ;
181-
182- var asset = await _ss . UploadFormFile ( file , Url . Content ( "~/" ) , path ) ;
183- }
184-
18527 [ HttpPost , Route ( "[controller]/importfeed" ) ]
18628 public async Task < IEnumerable < ImportMessage > > ImportFeed ( IFormFile file )
18729 {
0 commit comments