Skip to content

Commit 13a201b

Browse files
committed
Implement GetCampaignsByUserId in CampaignsController calling a data read model from mongo repository
1 parent 0024a23 commit 13a201b

1 file changed

Lines changed: 24 additions & 7 deletions

File tree

src/Services/Marketing/Marketing.API/Controllers/CampaignsController.cs

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,7 @@
1010
using System.Collections.Generic;
1111
using Microsoft.AspNetCore.Authorization;
1212
using System;
13-
using System.Net.Http;
1413
using System.Linq;
15-
using System.Net.Http.Headers;
1614

1715
[Route("api/v1/[controller]")]
1816
[Authorize]
@@ -123,14 +121,33 @@ public async Task<IActionResult> Delete(int id)
123121
[HttpGet("user/{userId:guid}")]
124122
public async Task<IActionResult> GetCampaignsByUserId(Guid userId)
125123
{
126-
var userLocation = await _marketingDataRepository.GetAsync(userId.ToString());
124+
var marketingData = await _marketingDataRepository.GetAsync(userId.ToString());
127125

128-
var userLocationId = 1;
126+
if (marketingData is null)
127+
{
128+
return NotFound();
129+
}
130+
131+
var campaignDtoList = new List<CampaignDTO>();
129132

130-
var userLocationRule = await _context.Rules.OfType<UserLocationRule>().Include(c => c.Campaign)
131-
.FirstOrDefaultAsync(c => c.LocationId == userLocationId);
133+
//Get User Location Campaign
134+
foreach(var userLocation in marketingData.Locations)
135+
{
136+
var userCampaignList = await _context.Rules
137+
.OfType<UserLocationRule>()
138+
.Include(c => c.Campaign)
139+
.Where(c => c.LocationId == userLocation.LocationId)
140+
.Select(c => c.Campaign)
141+
.ToListAsync();
142+
143+
if (userCampaignList != null && userCampaignList.Any())
144+
{
145+
var userCampaignDtoList = MapCampaignModelListToDtoList(userCampaignList);
146+
campaignDtoList.AddRange(userCampaignDtoList);
147+
}
148+
}
132149

133-
return Ok(userLocationRule.Campaign);
150+
return Ok(campaignDtoList);
134151
}
135152

136153

0 commit comments

Comments
 (0)