diff --git a/OutOfSchool/OutOfSchool.WebApi.Tests/Services/Database/WorkshopServiceTests.cs b/OutOfSchool/OutOfSchool.WebApi.Tests/Services/Database/WorkshopServiceTests.cs index 72e2f0b8b0..eb28926261 100644 --- a/OutOfSchool/OutOfSchool.WebApi.Tests/Services/Database/WorkshopServiceTests.cs +++ b/OutOfSchool/OutOfSchool.WebApi.Tests/Services/Database/WorkshopServiceTests.cs @@ -28,6 +28,7 @@ public class WorkshopServiceTests { private IWorkshopService workshopService; private Mock workshopRepository; + private Mock> dateTimeRangeRepository; private Mock ratingService; private Mock teacherService; private Mock> logger; @@ -39,6 +40,7 @@ public class WorkshopServiceTests public void SetUp() { workshopRepository = new Mock(); + dateTimeRangeRepository = new Mock>(); ratingService = new Mock(); teacherService = new Mock(); logger = new Mock>(); @@ -48,6 +50,7 @@ public void SetUp() workshopService = new WorkshopService( workshopRepository.Object, + dateTimeRangeRepository.Object, ratingService.Object, teacherService.Object, logger.Object, diff --git a/OutOfSchool/OutOfSchool.WebApi/Services/Database/WorkshopService.cs b/OutOfSchool/OutOfSchool.WebApi/Services/Database/WorkshopService.cs index ca5195158a..232082fd22 100644 --- a/OutOfSchool/OutOfSchool.WebApi/Services/Database/WorkshopService.cs +++ b/OutOfSchool/OutOfSchool.WebApi/Services/Database/WorkshopService.cs @@ -27,6 +27,7 @@ public class WorkshopService : IWorkshopService private readonly string includingPropertiesForMappingWorkShopCard = $"{nameof(Workshop.Address)}"; private readonly IWorkshopRepository workshopRepository; + private readonly IEntityRepository dateTimeRangeRepository; private readonly IRatingService ratingService; private readonly ITeacherService teacherService; private readonly ILogger logger; @@ -37,6 +38,7 @@ public class WorkshopService : IWorkshopService /// Initializes a new instance of the class. /// /// Repository for Workshop entity. + /// Repository for DateTimeRange entity. /// Rating service. /// Teacher service. /// Logger. @@ -44,6 +46,7 @@ public class WorkshopService : IWorkshopService /// Workshop images mediator. public WorkshopService( IWorkshopRepository workshopRepository, + IEntityRepository dateTimeRangeRepository, IRatingService ratingService, ITeacherService teacherService, ILogger logger, @@ -51,6 +54,7 @@ public WorkshopService( IImageDependentEntityImagesInteractionService workshopImagesService) { this.workshopRepository = workshopRepository; + this.dateTimeRangeRepository = dateTimeRangeRepository; this.ratingService = ratingService; this.teacherService = teacherService; this.logger = logger; @@ -330,6 +334,7 @@ public async Task UpdateV2(WorkshopDTO dto) async Task<(Workshop updatedWorkshop, MultipleImageChangingResult multipleImageChangingResult, ImageChangingResult changingCoverImageResult)> UpdateWorkshopWithDependencies() { + await UpdateDateTimeRanges(dto.DateTimeRanges, dto.Id).ConfigureAwait(false); var currentWorkshop = await workshopRepository.GetWithNavigations(dto.Id).ConfigureAwait(false); dto.ImageIds ??= new List(); @@ -726,6 +731,19 @@ private async Task ChangeTeachers(Workshop currentWorkshop, List tea } } + private async Task UpdateDateTimeRanges(List dtos, Guid workshopId) + { + var ranges = mapper.Map>(dtos); + foreach (var range in ranges) + { + if (await dateTimeRangeRepository.Any(r => r.Id == range.Id)) + { + range.WorkshopId = workshopId; + await dateTimeRangeRepository.Update(range); + } + } + } + private async Task UpdateWorkshop() { try