public async Task<IActionResult> Edit(CampaignSummaryViewModel campaign, IFormFile fileUpload)
{
if (campaign == null)
{
return BadRequest();
}
if (!User.IsOrganizationAdmin(campaign.OrganizationId))
{
return Unauthorized();
}
if (campaign.EndDate < campaign.StartDate)
{
ModelState.AddModelError(nameof(campaign.EndDate), "The end date must fall on or after the start date.");
}
if (ModelState.IsValid)
{
if (fileUpload != null)
{
if (fileUpload.IsAcceptableImageContentType())
{
var existingImageUrl = campaign.ImageUrl;
var newImageUrl = await _imageService.UploadCampaignImageAsync(campaign.OrganizationId, campaign.Id, fileUpload);
if (!string.IsNullOrEmpty(newImageUrl))
{
campaign.ImageUrl = newImageUrl;
if (existingImageUrl != null)
{
await _imageService.DeleteImageAsync(existingImageUrl);
}
}
}
else
{
ModelState.AddModelError("ImageUrl", "You must upload a valid image file for the logo (.jpg, .png, .gif)");
return View(campaign);
}
}
var id = await _mediator.SendAsync(new EditCampaignCommand { Campaign = campaign });
return RedirectToAction(nameof(Details), new { area = "Admin", id });
}
return View(campaign);
}