|
@ -10,7 +10,7 @@ |
|
|
using Microsoft.AspNetCore.Authorization; |
|
|
using Microsoft.AspNetCore.Authorization; |
|
|
|
|
|
|
|
|
[Route("api/v1/[controller]")]
|
|
|
[Route("api/v1/[controller]")]
|
|
|
//[Authorize]
|
|
|
|
|
|
|
|
|
[Authorize] |
|
|
public class CampaignsController : Controller |
|
|
public class CampaignsController : Controller |
|
|
{ |
|
|
{ |
|
|
private readonly MarketingContext _context; |
|
|
private readonly MarketingContext _context; |
|
@ -24,9 +24,13 @@ |
|
|
public async Task<IActionResult> GetAllCampaigns() |
|
|
public async Task<IActionResult> GetAllCampaigns() |
|
|
{ |
|
|
{ |
|
|
var campaignList = await _context.Campaigns |
|
|
var campaignList = await _context.Campaigns |
|
|
.Include(c => c.Rules) |
|
|
|
|
|
.ToListAsync(); |
|
|
.ToListAsync(); |
|
|
|
|
|
|
|
|
|
|
|
if (campaignList is null) |
|
|
|
|
|
{ |
|
|
|
|
|
return Ok(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
var campaignDtoList = MapCampaignModelListToDtoList(campaignList); |
|
|
var campaignDtoList = MapCampaignModelListToDtoList(campaignList); |
|
|
|
|
|
|
|
|
return Ok(campaignDtoList); |
|
|
return Ok(campaignDtoList); |
|
@ -36,7 +40,6 @@ |
|
|
public async Task<IActionResult> GetCampaignById(int id) |
|
|
public async Task<IActionResult> GetCampaignById(int id) |
|
|
{ |
|
|
{ |
|
|
var campaign = await _context.Campaigns |
|
|
var campaign = await _context.Campaigns |
|
|
.Include(c => c.Rules) |
|
|
|
|
|
.SingleOrDefaultAsync(c => c.Id == id); |
|
|
.SingleOrDefaultAsync(c => c.Id == id); |
|
|
|
|
|
|
|
|
if (campaign is null) |
|
|
if (campaign is null) |
|
@ -57,16 +60,16 @@ |
|
|
return BadRequest(); |
|
|
return BadRequest(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
var campaingToCreate = MapCampaignDtoToModel(campaignDto); |
|
|
|
|
|
|
|
|
var campaign = MapCampaignDtoToModel(campaignDto); |
|
|
|
|
|
|
|
|
await _context.Campaigns.AddAsync(campaingToCreate); |
|
|
|
|
|
|
|
|
await _context.Campaigns.AddAsync(campaign); |
|
|
await _context.SaveChangesAsync(); |
|
|
await _context.SaveChangesAsync(); |
|
|
|
|
|
|
|
|
return CreatedAtAction(nameof(GetCampaignById), new { id = campaingToCreate.Id }, null); |
|
|
|
|
|
|
|
|
return CreatedAtAction(nameof(GetCampaignById), new { id = campaign.Id }, null); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
[HttpPut("{id:int}")] |
|
|
[HttpPut("{id:int}")] |
|
|
public async Task<IActionResult> UpdateCampaign(int id, [FromBody]CampaignDTO campaignDto) |
|
|
|
|
|
|
|
|
public async Task<IActionResult> UpdateCampaign(int id, [FromBody] CampaignDTO campaignDto) |
|
|
{ |
|
|
{ |
|
|
if (id < 1 || campaignDto is null) |
|
|
if (id < 1 || campaignDto is null) |
|
|
{ |
|
|
{ |
|
@ -123,7 +126,7 @@ |
|
|
|
|
|
|
|
|
private CampaignDTO MapCampaignModelToDto(Campaign campaign) |
|
|
private CampaignDTO MapCampaignModelToDto(Campaign campaign) |
|
|
{ |
|
|
{ |
|
|
var campaignDto = new CampaignDTO |
|
|
|
|
|
|
|
|
return new CampaignDTO |
|
|
{ |
|
|
{ |
|
|
Id = campaign.Id, |
|
|
Id = campaign.Id, |
|
|
Description = campaign.Description, |
|
|
Description = campaign.Description, |
|
@ -131,34 +134,11 @@ |
|
|
To = campaign.To, |
|
|
To = campaign.To, |
|
|
Url = campaign.Url, |
|
|
Url = campaign.Url, |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
campaign.Rules.ForEach(rule => |
|
|
|
|
|
{ |
|
|
|
|
|
var ruleDto = new RuleDTO |
|
|
|
|
|
{ |
|
|
|
|
|
Id = rule.Id, |
|
|
|
|
|
RuleTypeId = rule.RuleTypeId, |
|
|
|
|
|
Description = rule.Description, |
|
|
|
|
|
CampaignId = rule.CampaignId |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
switch (RuleType.From(rule.RuleTypeId)) |
|
|
|
|
|
{ |
|
|
|
|
|
case RuleTypeEnum.UserLocationRule: |
|
|
|
|
|
var userLocationRule = rule as UserLocationRule; |
|
|
|
|
|
ruleDto.LocationId = userLocationRule.LocationId; |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
campaignDto.Rules.Add(ruleDto); |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
return campaignDto; |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private Campaign MapCampaignDtoToModel(CampaignDTO campaignDto) |
|
|
private Campaign MapCampaignDtoToModel(CampaignDTO campaignDto) |
|
|
{ |
|
|
{ |
|
|
var campaingModel = new Campaign |
|
|
|
|
|
|
|
|
return new Campaign |
|
|
{ |
|
|
{ |
|
|
Id = campaignDto.Id, |
|
|
Id = campaignDto.Id, |
|
|
Description = campaignDto.Description, |
|
|
Description = campaignDto.Description, |
|
@ -166,25 +146,6 @@ |
|
|
To = campaignDto.To, |
|
|
To = campaignDto.To, |
|
|
Url = campaignDto.Url |
|
|
Url = campaignDto.Url |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
campaignDto.Rules.ForEach(ruleDto => |
|
|
|
|
|
{ |
|
|
|
|
|
switch (RuleType.From(ruleDto.RuleTypeId)) |
|
|
|
|
|
{ |
|
|
|
|
|
case RuleTypeEnum.UserLocationRule: |
|
|
|
|
|
campaingModel.Rules.Add(new UserLocationRule |
|
|
|
|
|
{ |
|
|
|
|
|
Id = ruleDto.Id, |
|
|
|
|
|
LocationId = ruleDto.LocationId.Value, |
|
|
|
|
|
RuleTypeId = ruleDto.RuleTypeId, |
|
|
|
|
|
Description = ruleDto.Description, |
|
|
|
|
|
Campaign = campaingModel |
|
|
|
|
|
}); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
return campaingModel; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |