Multiple fixs after help from ai
This commit is contained in:
parent
98f3606887
commit
f17d72b34e
@ -393,6 +393,15 @@ namespace ManagerService.Controllers
|
||||
|
||||
GuidedPath guidedPath = new GuidedPath().FromDTO(guidedPathDTO);
|
||||
guidedPath.Id = idService.GenerateHexId();
|
||||
guidedPath.SectionMapId = sectionMapId;
|
||||
guidedPath.Steps = new List<GuidedStep>();
|
||||
foreach (var stepDTO in guidedPathDTO.steps ?? new List<GuidedStepDTO>())
|
||||
{
|
||||
GuidedStep step = new GuidedStep().FromDTO(stepDTO);
|
||||
step.Id = idService.GenerateHexId();
|
||||
step.GuidedPathId = guidedPath.Id;
|
||||
guidedPath.Steps.Add(step);
|
||||
}
|
||||
_myInfoMateDbContext.GuidedPaths.Add(guidedPath);
|
||||
_myInfoMateDbContext.SaveChanges();
|
||||
|
||||
@ -428,7 +437,9 @@ namespace ManagerService.Controllers
|
||||
if (guidedPathDTO == null)
|
||||
throw new ArgumentNullException("GuidedPath param is null");
|
||||
|
||||
var existingGuidedPath = _myInfoMateDbContext.GuidedPaths.FirstOrDefault(gp => gp.Id == guidedPathDTO.id);
|
||||
var existingGuidedPath = _myInfoMateDbContext.GuidedPaths
|
||||
.Include(gp => gp.Steps)
|
||||
.FirstOrDefault(gp => gp.Id == guidedPathDTO.id);
|
||||
if (existingGuidedPath == null)
|
||||
throw new KeyNotFoundException("GuidedPath does not exist");
|
||||
|
||||
@ -442,9 +453,40 @@ namespace ManagerService.Controllers
|
||||
existingGuidedPath.HideNextStepsUntilComplete = guidedPathDTO.hideNextStepsUntilComplete;
|
||||
existingGuidedPath.Order = guidedPathDTO.order;
|
||||
|
||||
// Sync steps
|
||||
var dtoStepIds = (guidedPathDTO.steps ?? new List<GuidedStepDTO>())
|
||||
.Where(s => s.id != null)
|
||||
.Select(s => s.id)
|
||||
.ToHashSet();
|
||||
|
||||
// Delete removed steps
|
||||
var stepsToRemove = existingGuidedPath.Steps
|
||||
.Where(s => !dtoStepIds.Contains(s.Id))
|
||||
.ToList();
|
||||
foreach (var s in stepsToRemove)
|
||||
existingGuidedPath.Steps.Remove(s);
|
||||
|
||||
// Create or update steps
|
||||
foreach (var stepDTO in guidedPathDTO.steps ?? new List<GuidedStepDTO>())
|
||||
{
|
||||
var existing = existingGuidedPath.Steps.FirstOrDefault(s => s.Id == stepDTO.id);
|
||||
if (existing != null)
|
||||
{
|
||||
existing.FromDTO(stepDTO);
|
||||
existing.GuidedPathId = existingGuidedPath.Id;
|
||||
}
|
||||
else
|
||||
{
|
||||
var newStep = new GuidedStep().FromDTO(stepDTO);
|
||||
newStep.Id = idService.GenerateHexId();
|
||||
newStep.GuidedPathId = existingGuidedPath.Id;
|
||||
existingGuidedPath.Steps.Add(newStep);
|
||||
}
|
||||
}
|
||||
|
||||
_myInfoMateDbContext.SaveChanges();
|
||||
|
||||
return new OkObjectResult(existingGuidedPath);
|
||||
return new OkObjectResult(existingGuidedPath.ToDTO());
|
||||
}
|
||||
catch (ArgumentNullException ex)
|
||||
{
|
||||
@ -559,6 +601,7 @@ namespace ManagerService.Controllers
|
||||
|
||||
GuidedStep guidedStep = new GuidedStep().FromDTO(guidedStepDTO);
|
||||
guidedStep.Id = idService.GenerateHexId();
|
||||
guidedStep.GuidedPathId = guidedPathId;
|
||||
|
||||
_myInfoMateDbContext.GuidedSteps.Add(guidedStep);
|
||||
_myInfoMateDbContext.SaveChanges();
|
||||
|
||||
@ -10,6 +10,7 @@ namespace ManagerService.DTOs
|
||||
public List<TranslationDTO> description { get; set; }
|
||||
public string? sectionMapId { get; set; }
|
||||
public string? sectionEventId { get; set; }
|
||||
public string? sectionGameId { get; set; }
|
||||
public bool isLinear { get; set; }
|
||||
public bool requireSuccessToAdvance { get; set; }
|
||||
public bool hideNextStepsUntilComplete { get; set; }
|
||||
|
||||
@ -5,6 +5,7 @@ namespace Manager.DTOs
|
||||
{
|
||||
public class AgendaDTO : SectionDTO
|
||||
{
|
||||
public bool isOnlineAgenda { get; set; }
|
||||
public List<TranslationDTO> resourceIds { get; set; } // All json files for all languages
|
||||
public MapProvider? agendaMapProvider { get; set; } // Default = Google
|
||||
public List<EventAgendaDTO> events { get; set; }
|
||||
|
||||
@ -13,5 +13,6 @@ namespace Manager.DTOs
|
||||
public int rows { get; set; } = 3;
|
||||
public int cols { get; set; } = 3;
|
||||
public GameTypes gameType { get; set; } = GameTypes.Puzzle;
|
||||
public List<GuidedPathDTO> guidedPaths { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@ -15,6 +15,8 @@ namespace Manager.DTOs
|
||||
public List<CategorieDTO> categories { get; set; }
|
||||
public string centerLatitude { get; set; } // Center on
|
||||
public string centerLongitude { get; set; } // Center on
|
||||
public bool isParcours { get; set; }
|
||||
public List<GuidedPathDTO> guidedPaths { get; set; }
|
||||
}
|
||||
|
||||
public class GeoPointDTO
|
||||
|
||||
@ -65,11 +65,11 @@ namespace ManagerService.Data.SubSection
|
||||
order = Order,
|
||||
title = Title,
|
||||
description = Description,
|
||||
geometry = Geometry.ToDto(),
|
||||
geometry = Geometry?.ToDto(),
|
||||
zoneRadiusMeters = ZoneRadiusMeters,
|
||||
imageUrl = ImageUrl,
|
||||
triggerGeoPointId = TriggerGeoPointId,
|
||||
triggerGeoPoint = TriggerGeoPoint.ToDTO(),
|
||||
triggerGeoPoint = TriggerGeoPoint?.ToDTO(),
|
||||
isHiddenInitially = IsHiddenInitially,
|
||||
isStepTimer = IsStepTimer,
|
||||
isStepLocked = IsStepLocked,
|
||||
|
||||
@ -48,6 +48,7 @@ namespace ManagerService.Data.SubSection
|
||||
longitude = Longitude,
|
||||
meterZoneGPS = MeterZoneGPS,
|
||||
resourceIds = AgendaResourceIds,
|
||||
isOnlineAgenda = IsOnlineAgenda,
|
||||
agendaMapProvider = AgendaMapProvider,
|
||||
events = EventAgendas.Select(e => e.ToDTO()).ToList(),
|
||||
};
|
||||
|
||||
@ -87,6 +87,7 @@ namespace ManagerService.Services
|
||||
Longitude = dto.longitude,
|
||||
MeterZoneGPS = dto.meterZoneGPS,
|
||||
Type = dto.type,
|
||||
IsOnlineAgenda = agendaDTO.isOnlineAgenda,
|
||||
AgendaResourceIds = agendaDTO.resourceIds,
|
||||
AgendaMapProvider = agendaDTO.agendaMapProvider,
|
||||
//EventAgendas = // TODO specific
|
||||
@ -239,7 +240,8 @@ namespace ManagerService.Services
|
||||
GameMessageFin = puzzleDTO.messageFin,
|
||||
GamePuzzleImageId = puzzleDTO.puzzleImageId,
|
||||
GamePuzzleRows = puzzleDTO.rows,
|
||||
GamePuzzleCols = puzzleDTO.cols
|
||||
GamePuzzleCols = puzzleDTO.cols,
|
||||
GameType = puzzleDTO.gameType,
|
||||
},
|
||||
SectionType.Quiz => new SectionQuiz
|
||||
{
|
||||
@ -387,6 +389,7 @@ namespace ManagerService.Services
|
||||
longitude = agenda.Longitude,
|
||||
meterZoneGPS = agenda.MeterZoneGPS,
|
||||
type = agenda.Type,
|
||||
isOnlineAgenda = agenda.IsOnlineAgenda,
|
||||
resourceIds = agenda.AgendaResourceIds,
|
||||
agendaMapProvider = agenda.AgendaMapProvider,
|
||||
// events => TODO specific
|
||||
@ -540,6 +543,7 @@ namespace ManagerService.Services
|
||||
messageFin = game.GameMessageFin,
|
||||
puzzleImage = game.GamePuzzleImage?.ToDTO(),
|
||||
puzzleImageId = game.GamePuzzleImageId,
|
||||
gameType = game.GameType,
|
||||
rows = game.GamePuzzleRows,
|
||||
cols = game.GamePuzzleCols
|
||||
},
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user