11namespace Microsoft . eShopOnContainers . Services . Marketing . API . Controllers
22{
3- using System . Collections . Generic ;
43 using Microsoft . AspNetCore . Mvc ;
4+ using Microsoft . eShopOnContainers . Services . Marketing . API . Infrastructure ;
5+ using System . Threading . Tasks ;
6+ using Microsoft . eShopOnContainers . Services . Marketing . API . Model ;
7+ using Microsoft . EntityFrameworkCore ;
58
69 [ Route ( "api/[controller]" ) ]
710 public class CampaignsController : Controller
811 {
12+ private readonly MarketingContext _context ;
13+
14+ public CampaignsController ( MarketingContext context )
15+ {
16+ _context = context ;
17+ }
18+
919 [ HttpGet ]
10- public IEnumerable < string > Get ( )
20+ public async Task < IActionResult > GetAllCampaigns ( )
1121 {
12- return new string [ ] { "value1" , "value2" } ;
22+ var campaignList = await _context . Campaigns
23+ . Include ( c => c . Rules )
24+ . ToListAsync ( ) ;
25+
26+ return Ok ( campaignList ) ;
1327 }
1428
1529 [ HttpGet ( "{id:int}" ) ]
16- public string Get ( int id )
30+ public async Task < IActionResult > GetCampaignById ( int id )
1731 {
18- return "value" ;
32+ var campaign = await _context . Campaigns
33+ . Include ( c => c . Rules )
34+ . SingleAsync ( c => c . Id == id ) ;
35+
36+ if ( campaign is null )
37+ {
38+ return NotFound ( ) ;
39+ }
40+
41+ return Ok ( campaign ) ;
1942 }
2043
2144 [ HttpPost ]
22- public void Post ( [ FromBody ] string value )
45+ public async Task < IActionResult > CreateCampaign ( [ FromBody ] Campaign campaign )
2346 {
47+ await _context . Campaigns . AddAsync ( campaign ) ;
48+ await _context . SaveChangesAsync ( ) ;
49+
50+ return CreatedAtAction ( nameof ( GetCampaignById ) , new { id = campaign . Id } , null ) ;
2451 }
2552
2653 [ HttpPut ( "{id:int}" ) ]
27- public void Put ( int id , [ FromBody ] string value )
54+ public async Task < IActionResult > UpdateCampaign ( int id , [ FromBody ] Campaign campaign )
2855 {
56+ var campaignToUpdate = await _context . Campaigns . FindAsync ( id ) ;
57+ if ( campaign is null )
58+ {
59+ return NotFound ( ) ;
60+ }
61+
62+ campaignToUpdate . Description = campaign . Description ;
63+ campaignToUpdate . From = campaign . From ;
64+ campaignToUpdate . To = campaign . To ;
65+
66+ await _context . SaveChangesAsync ( ) ;
67+
68+ return CreatedAtAction ( nameof ( GetCampaignById ) , new { id = campaignToUpdate . Id } , null ) ;
2969 }
3070
3171 [ HttpDelete ( "{id:int}" ) ]
32- public void Delete ( int id )
72+ public async Task < IActionResult > Delete ( int id )
3373 {
74+ var campaign = await _context . Campaigns . FindAsync ( id ) ;
75+ if ( campaign is null )
76+ {
77+ return NotFound ( ) ;
78+ }
79+
80+ _context . Campaigns . Remove ( campaign ) ;
81+ await _context . SaveChangesAsync ( ) ;
82+
83+ return NoContent ( ) ;
3484 }
3585 }
36- }
86+ }
0 commit comments