Skip to content

Commit 02af941

Browse files
Ticket #94 : Can edit a CMMN file
1 parent 8e48a3b commit 02af941

167 files changed

Lines changed: 2014 additions & 2938 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

launch.cmd

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
START cmd /k "cd src/CaseManagement.Identity && dotnet run"
22
START cmd /k "cd src/CaseManagement.OAuth && dotnet run"
3-
START cmd /k "cd src/CaseManagement.HumanTask.Host && dotnet run"
3+
START cmd /k "cd src/CaseManagement.HumanTask.Host && dotnet run
44
START cmd /k "cd src/CaseManagement.BPMN.Host && dotnet run"
5+
START cmd /k "cd src/CaseManagement.CMMN.Host && dotnet run"
56
START cmd /k "cd src/CaseManagement.Website && npm run start"
67
START cmd /k "cd src/CaseManagement.Tasklist.Website && npm run start"
78
echo Applications are running ...

src/CaseManagement.CMMN.AspNetCore/Apis/CaseFilesController.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,26 @@ public async Task<IActionResult> Update(string id, [FromBody] UpdateCaseFileComm
6464
}
6565
}
6666

67+
[HttpPut("{id}/payload")]
68+
[Authorize("update_casefile")]
69+
public async Task<IActionResult> Update(string id, [FromBody] UpdateCaseFilePayloadCommand parameter, CancellationToken token)
70+
{
71+
try
72+
{
73+
parameter.Id = id;
74+
await _mediator.Send(parameter, token);
75+
return new OkResult();
76+
}
77+
catch (UnknownCaseFileException)
78+
{
79+
return new NotFoundResult();
80+
}
81+
catch (AggregateValidationException ex)
82+
{
83+
return this.ToError(ex.Errors, HttpStatusCode.BadRequest, Request);
84+
}
85+
}
86+
6787
[HttpGet("{id}/publish")]
6888
[Authorize("publish_casefile")]
6989
public async Task<IActionResult> Publish(string id, CancellationToken token)

src/CaseManagement.CMMN/CaseFile/Commands/Handlers/UpdateCaseFileCommandHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public async Task<bool> Handle(UpdateCaseFileCommand command, CancellationToken
2828
throw new UnknownCaseFileException(command.Id);
2929
}
3030

31-
caseFile.Update(command.Name, command.Description, command.Payload);
31+
caseFile.Update(command.Name, command.Description);
3232
await _commitAggregateHelper.Commit(caseFile, CaseFileAggregate.GetStreamName(caseFile.AggregateId), token);
3333
return true;
3434
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
using CaseManagement.CMMN.CaseFile.Exceptions;
2+
using CaseManagement.CMMN.Domains;
3+
using CaseManagement.Common;
4+
using CaseManagement.Common.EvtStore;
5+
using MediatR;
6+
using System.Threading;
7+
using System.Threading.Tasks;
8+
9+
namespace CaseManagement.CMMN.CaseFile.Commands.Handlers
10+
{
11+
public class UpdateCaseFilePayloadCommandHandler : IRequestHandler<UpdateCaseFilePayloadCommand, bool>
12+
{
13+
private readonly IEventStoreRepository _eventStoreRepository;
14+
private readonly ICommitAggregateHelper _commitAggregateHelper;
15+
16+
public UpdateCaseFilePayloadCommandHandler(IEventStoreRepository eventStoreRepository, ICommitAggregateHelper commitAggregateHelper)
17+
{
18+
_eventStoreRepository = eventStoreRepository;
19+
_commitAggregateHelper = commitAggregateHelper;
20+
}
21+
22+
public async Task<bool> Handle(UpdateCaseFilePayloadCommand request, CancellationToken cancellationToken)
23+
{
24+
var caseFile = await _eventStoreRepository.GetLastAggregate<CaseFileAggregate>(request.Id, CaseFileAggregate.GetStreamName(request.Id));
25+
if (caseFile == null || string.IsNullOrWhiteSpace(caseFile.AggregateId))
26+
{
27+
throw new UnknownCaseFileException(request.Id);
28+
}
29+
30+
caseFile.UpdatePayload(request.Payload);
31+
await _commitAggregateHelper.Commit(caseFile, CaseFileAggregate.GetStreamName(caseFile.AggregateId), cancellationToken);
32+
return true;
33+
}
34+
}
35+
}

src/CaseManagement.CMMN/CaseFile/Commands/UpdateCaseFileCommand.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,5 @@ public class UpdateCaseFileCommand : IRequest<bool>
1111
public string Name { get; set; }
1212
[DataMember(Name = "description")]
1313
public string Description { get; set; }
14-
[DataMember(Name = "payload")]
15-
public string Payload { get; set; }
1614
}
1715
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
using MediatR;
2+
3+
namespace CaseManagement.CMMN.CaseFile.Commands
4+
{
5+
public class UpdateCaseFilePayloadCommand : IRequest<bool>
6+
{
7+
public string Id { get; set; }
8+
public string Payload { get; set; }
9+
}
10+
}

src/CaseManagement.CMMN/CaseFile/EventHandlers/CaseFileHandler.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@
77

88
namespace CaseManagement.CMMN.CaseFile.EventHandlers
99
{
10-
public class CaseFileHandler : IDomainEvtConsumerGeneric<CaseFileAddedEvent>, IDomainEvtConsumerGeneric<CaseFileUpdatedEvent>, IDomainEvtConsumerGeneric<CaseFilePublishedEvent>
10+
public class CaseFileHandler : IDomainEvtConsumerGeneric<CaseFileAddedEvent>,
11+
IDomainEvtConsumerGeneric<CaseFileUpdatedEvent>,
12+
IDomainEvtConsumerGeneric<CaseFilePublishedEvent>,
13+
IDomainEvtConsumerGeneric<CaseFilePayloadUpdatedEvent>
1114
{
1215
private readonly ICaseFileCommandRepository _caseFileCommandRepository;
1316
private readonly ICaseFileQueryRepository _caseFileQueryRepository;
@@ -43,5 +46,13 @@ public async Task Handle(CaseFilePublishedEvent @event, CancellationToken cancel
4346
await _caseFileCommandRepository.Update(caseFile, cancellationToken);
4447
await _caseFileCommandRepository.SaveChanges(cancellationToken);
4548
}
49+
50+
public async Task Handle(CaseFilePayloadUpdatedEvent @event, CancellationToken token)
51+
{
52+
var caseFile = await _caseFileQueryRepository.Get(@event.AggregateId, token);
53+
caseFile.Handle(@event);
54+
await _caseFileCommandRepository.Update(caseFile, token);
55+
await _caseFileCommandRepository.SaveChanges(token);
56+
}
4657
}
4758
}

src/CaseManagement.CMMN/CaseFile/Queries/Handlers/SearchCaseFilesQueryHandler.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ public async Task<SearchResult<CaseFileResult>> Handle(SearchCaseFileQuery reque
2727
CaseFileId = request.CaseFileId,
2828
Owner = request.Owner,
2929
StartIndex = request.StartIndex,
30-
TakeLatest = request.TakeLatest
30+
TakeLatest = request.TakeLatest,
31+
Text = request.Text
3132
}, cancellationToken);
3233
return new SearchResult<CaseFileResult>
3334
{

src/CaseManagement.CMMN/CaseFile/Queries/SearchCaseFileQuery.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@ public class SearchCaseFileQuery : BaseSearchParameter, IRequest<SearchResult<Ca
1010
public string Owner { get; set; }
1111
public string CaseFileId { get; set; }
1212
public bool TakeLatest { get; set; }
13+
public string Text { get; set; }
1314
}
1415
}

src/CaseManagement.CMMN/Domains/CaseFile/CaseFileAggregate.cs

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,16 @@ public class CaseFileAggregate : BaseAggregate
2020
public string Owner { get; set; }
2121
public CaseFileStatus Status { get; set; }
2222

23-
public void Update(string name, string description, string payload)
23+
public void Update(string name, string description)
2424
{
25-
var evt = new CaseFileUpdatedEvent(Guid.NewGuid().ToString(), AggregateId, Version, DateTime.UtcNow, name, description, payload);
25+
var evt = new CaseFileUpdatedEvent(Guid.NewGuid().ToString(), AggregateId, Version, DateTime.UtcNow, name, description);
26+
Handle(evt);
27+
DomainEvents.Add(evt);
28+
}
29+
30+
public void UpdatePayload(string payload)
31+
{
32+
var evt = new CaseFilePayloadUpdatedEvent(Guid.NewGuid().ToString(), AggregateId, Version, DateTime.UtcNow, payload);
2633
Handle(evt);
2734
DomainEvents.Add(evt);
2835
}
@@ -117,7 +124,14 @@ private void Handle(CaseFileUpdatedEvent caseFileUpdatedEvent)
117124
});
118125
}
119126

120-
if (string.IsNullOrWhiteSpace(caseFileUpdatedEvent.Payload))
127+
Name = caseFileUpdatedEvent.Name;
128+
Description = caseFileUpdatedEvent.Description;
129+
UpdateDateTime = caseFileUpdatedEvent.UpdateDatetime;
130+
}
131+
132+
private void Handle(CaseFilePayloadUpdatedEvent caseFilePayloadUpdatedEvent)
133+
{
134+
if (string.IsNullOrWhiteSpace(caseFilePayloadUpdatedEvent.Payload))
121135
{
122136
throw new AggregateValidationException(new List<KeyValuePair<string, string>>
123137
{
@@ -127,7 +141,7 @@ private void Handle(CaseFileUpdatedEvent caseFileUpdatedEvent)
127141

128142
try
129143
{
130-
CMMNParser.ParseWSDL(caseFileUpdatedEvent.Payload);
144+
CMMNParser.ParseWSDL(caseFilePayloadUpdatedEvent.Payload);
131145
}
132146
catch
133147
{
@@ -137,10 +151,8 @@ private void Handle(CaseFileUpdatedEvent caseFileUpdatedEvent)
137151
});
138152
}
139153

140-
UpdateDateTime = caseFileUpdatedEvent.UpdateDatetime;
141-
Name = caseFileUpdatedEvent.Name;
142-
Description = caseFileUpdatedEvent.Description;
143-
Payload = caseFileUpdatedEvent.Payload;
154+
Payload = caseFilePayloadUpdatedEvent.Payload;
155+
UpdateDateTime = caseFilePayloadUpdatedEvent.UpdateDatetime;
144156
}
145157

146158
private void Handle(CaseFilePublishedEvent caseFilePublishedEvent)

0 commit comments

Comments
 (0)