From d2b004a9a95f3417750ce4e94021af9b05298452 Mon Sep 17 00:00:00 2001 From: Christian Arenas Date: Wed, 14 Jun 2017 15:14:37 +0200 Subject: [PATCH] Implement GetCampaignsByUserId in CampaignsController calling a data read model from mongo repository --- .../Controllers/CampaignsController.cs | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/src/Services/Marketing/Marketing.API/Controllers/CampaignsController.cs b/src/Services/Marketing/Marketing.API/Controllers/CampaignsController.cs index db09edb62..f95ba8285 100644 --- a/src/Services/Marketing/Marketing.API/Controllers/CampaignsController.cs +++ b/src/Services/Marketing/Marketing.API/Controllers/CampaignsController.cs @@ -10,9 +10,7 @@ using System.Collections.Generic; using Microsoft.AspNetCore.Authorization; using System; - using System.Net.Http; using System.Linq; - using System.Net.Http.Headers; [Route("api/v1/[controller]")] [Authorize] @@ -123,14 +121,33 @@ [HttpGet("user/{userId:guid}")] public async Task GetCampaignsByUserId(Guid userId) { - var userLocation = await _marketingDataRepository.GetAsync(userId.ToString()); + var marketingData = await _marketingDataRepository.GetAsync(userId.ToString()); - var userLocationId = 1; + if (marketingData is null) + { + return NotFound(); + } + + var campaignDtoList = new List(); - var userLocationRule = await _context.Rules.OfType().Include(c => c.Campaign) - .FirstOrDefaultAsync(c => c.LocationId == userLocationId); + //Get User Location Campaign + foreach(var userLocation in marketingData.Locations) + { + var userCampaignList = await _context.Rules + .OfType() + .Include(c => c.Campaign) + .Where(c => c.LocationId == userLocation.LocationId) + .Select(c => c.Campaign) + .ToListAsync(); + + if (userCampaignList != null && userCampaignList.Any()) + { + var userCampaignDtoList = MapCampaignModelListToDtoList(userCampaignList); + campaignDtoList.AddRange(userCampaignDtoList); + } + } - return Ok(userLocationRule.Campaign); + return Ok(campaignDtoList); }