@@ -189,6 +189,7 @@ public async Task<ReturnValue> Save(PostEditModel postEditModel)
189
189
logger . LogInformation ( "New post" ) ;
190
190
var post = postEditModel . MapToModel ( ) ;
191
191
post . WebsiteId = Instance . Id ;
192
+
192
193
await PrepareRelatedProperties ( postEditModel , post ) ;
193
194
await unitOfWork . Posts . Insert ( post ) ;
194
195
}
@@ -197,6 +198,8 @@ public async Task<ReturnValue> Save(PostEditModel postEditModel)
197
198
logger . LogInformation ( "Update post" ) ;
198
199
var post = postEditModel . MapToModel ( await unitOfWork . Posts . GetForSavingById ( postEditModel . VanityId ) ) ;
199
200
post . WebsiteId = Instance . Id ;
201
+
202
+ _unitOfWork . Posts . RemoveRelatedItems ( post ) ;
200
203
await PrepareRelatedProperties ( postEditModel , post ) ;
201
204
_unitOfWork . Posts . Update ( post ) ;
202
205
}
@@ -237,37 +240,36 @@ public async Task<PostEditModel> SetupEditModel(Guid id)
237
240
238
241
private async Task PrepareRelatedProperties ( PostEditModel postEditModel , Post post )
239
242
{
240
- var categories = await _unitOfWork . Categories . GetByMultipleIdsAsync ( postEditModel . SelectedCategories . ToList ( ) . ConvertAll ( Guid . Parse ) ) ;
241
- var tags = await _unitOfWork . Tags . GetByMultipleIdsAsync ( postEditModel . SelectedTags . ToList ( ) . ConvertAll ( Guid . Parse ) ) ;
243
+ var categoryIds = await _unitOfWork . Categories . GetIdsByMultipleGuidsAsync ( postEditModel . SelectedCategories . ToList ( ) . ConvertAll ( Guid . Parse ) ) ;
244
+ var tagIds = await _unitOfWork . Tags . GetIdsByMultipleGuidsAsync ( postEditModel . SelectedTags . ToList ( ) . ConvertAll ( Guid . Parse ) ) ;
242
245
243
- post . PostCategories = new List < PostCategory > ( ) ;
244
- foreach ( var category in categories )
246
+ post . PostCategories . Clear ( ) ;
247
+ foreach ( int categoryId in categoryIds )
245
248
{
246
249
post . PostCategories . Add ( new PostCategory
247
250
{
248
- Post = post ,
249
- Category = category
251
+ PostId = post . Id ,
252
+ CategoryId = categoryId
250
253
} ) ;
251
254
}
252
255
253
- post . PostTags = new List < PostTag > ( ) ;
254
- foreach ( var tag in tags )
256
+ post . PostTags . Clear ( ) ;
257
+ foreach ( int tagId in tagIds )
255
258
{
256
259
post . PostTags . Add ( new PostTag
257
260
{
258
- Post = post ,
259
- Tag = tag
261
+ PostId = post . Id ,
262
+ TagId = tagId
260
263
} ) ;
261
264
}
262
265
263
- post . PostApplicationUsers = new List < PostApplicationUser >
266
+ var user = await GetCurrentUserAsync ( ) ;
267
+ post . PostApplicationUsers . Clear ( ) ;
268
+ post . PostApplicationUsers . Add ( new PostApplicationUser
264
269
{
265
- new PostApplicationUser
266
- {
267
- Post = post ,
268
- ApplicationUser = await GetCurrentUserAsync ( )
269
- }
270
- } ;
270
+ PostId = post . Id ,
271
+ ApplicationUserId = user . Id
272
+ } ) ;
271
273
}
272
274
}
273
275
}
0 commit comments