Skip to content

Commit 69692fc

Browse files
committed
feat: validate promocode/campaign relation on update
1 parent 5c621d4 commit 69692fc

File tree

4 files changed

+13
-5
lines changed

4 files changed

+13
-5
lines changed

Doppler.HtmlEditorApi/Controllers/CampaignsController.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,12 @@ public async Task<IActionResult> UpdatePromoCode(string accountName, int campaig
229229
Categories: promoCode.categories,
230230
CampaignId: campaignId);
231231

232-
await _promoCodeRepository.UpdatePromoCode(promoCodeModel);
232+
var updateResult = await _promoCodeRepository.UpdatePromoCode(promoCodeModel);
233+
234+
if (!updateResult)
235+
{
236+
return new NotFoundObjectResult("The Campaign/PromoCode relation doesn't exist.");
237+
}
233238

234239
return new OkObjectResult($"Promo code {promoCodeId} was successfully updated.");
235240
}

Doppler.HtmlEditorApi/Repositories.DopplerDb/DopplerPromoCodeRepository.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,11 @@ public async Task<int> CreatePromoCode(PromoCodeModel promoCodeModel)
3232
return result.IdDynamicContentPromoCode;
3333
}
3434

35-
public async Task UpdatePromoCode(PromoCodeModel promoCodeModel)
35+
public async Task<bool> UpdatePromoCode(PromoCodeModel promoCodeModel)
3636
{
3737
var updatePromoCodeDbQuery = new UpdatePromoCodeDbQuery(
3838
Id: promoCodeModel.Id,
39+
IdCampaign: promoCodeModel.CampaignId,
3940
Type: promoCodeModel.Type,
4041
Value: promoCodeModel.Value,
4142
IncludeShipping: promoCodeModel.IncludeShipping,
@@ -46,7 +47,8 @@ public async Task UpdatePromoCode(PromoCodeModel promoCodeModel)
4647
MaxUses: promoCodeModel.MaxUses,
4748
Categories: promoCodeModel.Categories);
4849

49-
await _dbContext.ExecuteAsync(updatePromoCodeDbQuery);
50+
var result = await _dbContext.ExecuteAsync(updatePromoCodeDbQuery);
51+
return result > 0;
5052
}
5153
}
5254

Doppler.HtmlEditorApi/Repositories.DopplerDb/Queries/UpdatePromoCodeDbQuery.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ namespace Doppler.HtmlEditorApi.Repositories.DopplerDb.Queries;
44

55
public record UpdatePromoCodeDbQuery(
66
int Id,
7+
int IdCampaign,
78
string Type,
89
decimal Value,
910
bool IncludeShipping,
@@ -26,5 +27,5 @@ UPDATE DynamicContentPromoCode
2627
ExpireDays = @ExpireDays,
2728
MaxUses = @MaxUses,
2829
Categories = @Categories
29-
WHERE IdDynamicContentPromoCode = @Id";
30+
WHERE IdDynamicContentPromoCode = @Id AND IdCampaign = @IdCampaign";
3031
}

Doppler.HtmlEditorApi/Repositories/IPromoCodeRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ namespace Doppler.HtmlEditorApi.Repositories;
66
public interface IPromoCodeRepository
77
{
88
Task<int> CreatePromoCode(PromoCodeModel promoCodeModel);
9-
Task UpdatePromoCode(PromoCodeModel promoCodeModel);
9+
Task<bool> UpdatePromoCode(PromoCodeModel promoCodeModel);
1010
}
1111

0 commit comments

Comments
 (0)