4
4
using ApiModel . Domain ;
5
5
using ApiModel . Extensions ;
6
6
using ApiModel . Services ;
7
+ using AutoMapper ;
7
8
using Microsoft . AspNetCore . Authentication . JwtBearer ;
8
9
using Microsoft . AspNetCore . Authorization ;
9
10
using Microsoft . AspNetCore . Mvc ;
@@ -17,26 +18,42 @@ namespace ApiModel.Controllers
17
18
[ Authorize ( AuthenticationSchemes = JwtBearerDefaults . AuthenticationScheme ) ]
18
19
public class PostsController : Controller
19
20
{
20
- private readonly IPostService _postService ;
21
- public PostsController ( IPostService postService )
21
+ private readonly IPostService _postService ;
22
+ private readonly IMapper _mapper ;
23
+
24
+
25
+ public PostsController ( IPostService postService , IMapper mapper )
22
26
{
23
27
_postService = postService ;
28
+ _mapper = mapper ;
24
29
}
25
30
[ HttpGet ( ApiRoutes . Posts . GetAll ) ]
26
31
public async Task < IActionResult > GetAll ( )
27
32
{
28
- return Ok ( await _postService . GetPostsAsync ( ) ) ;
33
+ var posts = await _postService . GetPostsAsync ( ) ;
34
+ //var postResponse = _mapper.Map<List<PostResponse>>(posts);
35
+ return Ok ( _mapper . Map < List < PostResponse > > ( posts ) ) ;
29
36
}
30
37
31
- [ HttpGet ( ApiRoutes . Posts . Get ) ]
38
+
39
+ // posts.Select(post => new PostResponse
40
+ // {
41
+ // Id = post.Id,
42
+ // Name = post.Name,
43
+ // UserId = post.UserId,
44
+ // Tags = post.Tags.Select(x => new TagResponse { Name = x.TagName
45
+ //}).ToList()
46
+ // }).ToList()
47
+
48
+
49
+ [ HttpGet ( ApiRoutes . Posts . Get ) ]
32
50
public async Task < IActionResult > Get ( [ FromRoute ] Guid postId )
33
51
{
34
52
var post = await _postService . GetPostByIdAsync ( postId ) ;
35
53
if ( post == null )
36
54
return NotFound ( ) ;
37
55
38
-
39
- return Ok ( post ) ;
56
+ return Ok ( _mapper . Map < List < PostResponse > > ( post ) ) ;
40
57
}
41
58
[ HttpPut ( ApiRoutes . Posts . Update ) ]
42
59
public async Task < IActionResult > Update ( [ FromRoute ] Guid postId , [ FromBody ] UpdatePostRequest request )
@@ -52,8 +69,7 @@ public async Task<IActionResult> Update([FromRoute] Guid postId, [FromBody] Upda
52
69
var updated = await _postService . UpdatePostAsync ( post ) ;
53
70
54
71
if ( updated )
55
-
56
- return Ok ( post ) ;
72
+ return Ok ( _mapper . Map < List < PostResponse > > ( post ) ) ;
57
73
58
74
59
75
return NotFound ( ) ;
@@ -76,19 +92,22 @@ public async Task<IActionResult> Delete([FromRoute] Guid postId)
76
92
[ HttpPost ( ApiRoutes . Posts . Create ) ]
77
93
public async Task < IActionResult > Create ( [ FromBody ] CreatePostRequest postRequest )
78
94
{
79
- var post = new Post
95
+ var newPostId = Guid . NewGuid ( ) ;
96
+ var post = new Post
80
97
{
98
+ Id = newPostId ,
81
99
Name = postRequest . Name ,
82
- UserId = HttpContext . GetUserId ( )
100
+ UserId = HttpContext . GetUserId ( ) ,
101
+ Tags = postRequest . Tags . Select ( x => new PostTag { PostId = newPostId , TagName = x } ) . ToList ( )
83
102
} ;
84
103
85
104
await _postService . CreatePostAsync ( post ) ;
86
105
87
106
var baseUrl = $ "{ HttpContext . Request . Scheme } ://{ HttpContext . Request . Host . ToUriComponent ( ) } ";
88
107
var locationUri = baseUrl + "/" + ApiRoutes . Posts . Get . Replace ( "{postId}" , post . Id . ToString ( ) ) ;
89
108
90
- var response = new PostResponse { Id = post . Id } ;
91
- return Created ( locationUri , response ) ;
109
+
110
+ return Created ( locationUri , _mapper . Map < List < PostResponse > > ( post ) ) ;
92
111
}
93
112
}
94
113
}
0 commit comments