Browse Source

Implement GetCampaignsByUserId in CampaignsController calling a data read model from mongo repository

pull/223/head
Christian Arenas 7 years ago
parent
commit
d2b004a9a9
1 changed files with 24 additions and 7 deletions
  1. +24
    -7
      src/Services/Marketing/Marketing.API/Controllers/CampaignsController.cs

+ 24
- 7
src/Services/Marketing/Marketing.API/Controllers/CampaignsController.cs View File

@ -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<IActionResult> 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<CampaignDTO>();
var userLocationRule = await _context.Rules.OfType<UserLocationRule>().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<UserLocationRule>()
.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);
}


Loading…
Cancel
Save