diff --git a/ManagerService/Controllers/ResourceController.cs b/ManagerService/Controllers/ResourceController.cs index 62da95c..be05d5b 100644 --- a/ManagerService/Controllers/ResourceController.cs +++ b/ManagerService/Controllers/ResourceController.cs @@ -26,12 +26,14 @@ namespace ManagerService.Controllers public class ResourceController : ControllerBase { private ResourceDatabaseService _resourceService; + private SectionDatabaseService _sectionService; private readonly ILogger _logger; - public ResourceController(ILogger logger, ResourceDatabaseService resourceService) + public ResourceController(ILogger logger, ResourceDatabaseService resourceService, SectionDatabaseService sectionService) { _logger = logger; _resourceService = resourceService; + _sectionService = sectionService; } /// @@ -295,6 +297,47 @@ namespace ManagerService.Controllers if (!_resourceService.IsExist(id)) throw new KeyNotFoundException("Resource does not exist"); + + // Delete all resource occurence + foreach (var section in _sectionService.GetAll()) + { + if (section.ImageId == id) + { + section.ImageId = null; + section.ImageSource = null; + } + + switch (section.Type) + { + case SectionType.Map: + MapDTO mapDTO = JsonConvert.DeserializeObject(section.Data); + mapDTO.iconResourceId = mapDTO.iconResourceId == id ? null : mapDTO.iconResourceId; + foreach (var point in mapDTO.points) + { + foreach (var image in point.images) + { + image.imageSource = image.imageResourceId == id ? null : image.imageSource; + image.imageResourceId = image.imageResourceId == id ? null : image.imageResourceId; + } + } + section.Data = JsonConvert.SerializeObject(mapDTO); + break; + case SectionType.Slider: + SliderDTO sliderDTO = JsonConvert.DeserializeObject(section.Data); + List imagesToKeep = new List(); + foreach (var image in sliderDTO.images) + { + if (image.resourceId != id) + imagesToKeep.Add(image); + } + sliderDTO.images = imagesToKeep; + section.Data = JsonConvert.SerializeObject(sliderDTO); + break; + } + + _sectionService.Update(section.Id, section); + } + _resourceService.Remove(id); return new ObjectResult("The resource has been deleted") { StatusCode = 202 }; diff --git a/ManagerService/Controllers/SectionController.cs b/ManagerService/Controllers/SectionController.cs index decf860..714dfef 100644 --- a/ManagerService/Controllers/SectionController.cs +++ b/ManagerService/Controllers/SectionController.cs @@ -279,27 +279,13 @@ namespace ManagerService.Controllers mapDTO.mapType = MapTypeApp.hybrid; mapDTO.zoom = 18; - mapDTO.points = new List() { - new GeoPointDTO() { - id = 0, - title = section.Title, - description = section.Description, - latitude = "50.416639", - longitude= "4.879169", - images = new List() - } - }; + mapDTO.points = new List(); section.Data = JsonConvert.SerializeObject(mapDTO); // Include all info from specific section as JSON break; case SectionType.Slider: sliderDTO = new SliderDTO(); - ImageDTO imageDTO = new ImageDTO(); - imageDTO.title = section.Title; - imageDTO.description = section.Description; - imageDTO.source = null; sliderDTO.images = new List(); - sliderDTO.images.Add(imageDTO); section.Data = JsonConvert.SerializeObject(sliderDTO); // Include all info from specific section as JSON break;