|
1 | 1 | using System;
|
2 | 2 | using System.Collections.Generic;
|
3 | 3 | using System.IO;
|
| 4 | +using System.Linq; |
4 | 5 | using System.Text.Json.Nodes;
|
5 | 6 | using System.Threading;
|
6 | 7 | using System.Threading.Tasks;
|
@@ -119,8 +120,17 @@ public async Task<ActionResult> SaveFormLayout(string org, string app, [FromQuer
|
119 | 120 |
|
120 | 121 | if (formLayoutPayload.ComponentIdsChange is not null && !string.IsNullOrEmpty(layoutSetName))
|
121 | 122 | {
|
122 |
| - foreach (var componentIdChange in formLayoutPayload.ComponentIdsChange) |
| 123 | + foreach (var componentIdChange in formLayoutPayload.ComponentIdsChange.Where((componentIdChange) => componentIdChange.OldComponentId != componentIdChange.NewComponentId)) |
123 | 124 | {
|
| 125 | + if (componentIdChange.NewComponentId == null) |
| 126 | + { |
| 127 | + await _mediator.Publish(new ComponentDeletedEvent |
| 128 | + { |
| 129 | + ComponentId = componentIdChange.OldComponentId, |
| 130 | + LayoutSetName = layoutSetName, |
| 131 | + EditingContext = editingContext |
| 132 | + }, cancellationToken); |
| 133 | + } |
124 | 134 | await _mediator.Publish(new ComponentIdChangedEvent
|
125 | 135 | {
|
126 | 136 | OldComponentId = componentIdChange.OldComponentId,
|
@@ -155,16 +165,26 @@ await _mediator.Publish(new LayoutPageAddedEvent
|
155 | 165 | /// <param name="app">Application identifier which is unique within an organisation.</param>
|
156 | 166 | /// <param name="layoutSetName">The name of the layout set the specific layout belongs to</param>
|
157 | 167 | /// <param name="layoutName">The form layout to be deleted</param>
|
| 168 | + /// <param name="cancellationToken">A <see cref="CancellationToken"/> that observes if operation is cancelled.</param> |
158 | 169 | /// <returns>A success message if the save was successful</returns>
|
159 | 170 | [HttpDelete]
|
160 | 171 | [Route("form-layout/{layoutName}")]
|
161 |
| - public ActionResult DeleteFormLayout(string org, string app, [FromQuery] string layoutSetName, [FromRoute] string layoutName) |
| 172 | + public async Task<ActionResult> DeleteFormLayout(string org, string app, [FromQuery] string layoutSetName, [FromRoute] string layoutName, CancellationToken cancellationToken) |
162 | 173 | {
|
163 | 174 | try
|
164 | 175 | {
|
165 | 176 | string developer = AuthenticationHelper.GetDeveloperUserName(HttpContext);
|
166 | 177 | var editingContext = AltinnRepoEditingContext.FromOrgRepoDeveloper(org, app, developer);
|
| 178 | + |
| 179 | + await _mediator.Publish(new LayoutPageDeletedEvent |
| 180 | + { |
| 181 | + EditingContext = editingContext, |
| 182 | + LayoutSetName = layoutSetName, |
| 183 | + LayoutName = layoutName, |
| 184 | + }, cancellationToken); |
| 185 | + |
167 | 186 | _appDevelopmentService.DeleteFormLayout(editingContext, layoutSetName, layoutName);
|
| 187 | + |
168 | 188 | return Ok();
|
169 | 189 | }
|
170 | 190 | catch (FileNotFoundException exception)
|
@@ -398,13 +418,15 @@ public async Task<ActionResult> DeleteLayoutSet(string org, string app, [FromRou
|
398 | 418 | {
|
399 | 419 | string developer = AuthenticationHelper.GetDeveloperUserName(HttpContext);
|
400 | 420 | var editingContext = AltinnRepoEditingContext.FromOrgRepoDeveloper(org, app, developer);
|
401 |
| - LayoutSets layoutSets = await _appDevelopmentService.DeleteLayoutSet(editingContext, layoutSetIdToUpdate, cancellationToken); |
402 | 421 |
|
403 | 422 | await _mediator.Publish(new LayoutSetDeletedEvent
|
404 | 423 | {
|
405 | 424 | EditingContext = editingContext,
|
406 |
| - LayoutSetId = layoutSetIdToUpdate |
| 425 | + LayoutSetName = layoutSetIdToUpdate |
407 | 426 | }, cancellationToken);
|
| 427 | + |
| 428 | + LayoutSets layoutSets = await _appDevelopmentService.DeleteLayoutSet(editingContext, layoutSetIdToUpdate, cancellationToken); |
| 429 | + |
408 | 430 | return Ok(layoutSets);
|
409 | 431 | }
|
410 | 432 |
|
|
0 commit comments