Skip to content

Commit 47b210c

Browse files
Thierry Habarthabarthierry-hue
authored andcommitted
Ticket 24 : Display case file + display case file history
1 parent 60d692a commit 47b210c

102 files changed

Lines changed: 46315 additions & 143 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.

Architecture.pptx

-187 KB
Binary file not shown.

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

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
using Microsoft.AspNetCore.Http;
1313
using Microsoft.AspNetCore.Mvc;
1414
using Newtonsoft.Json.Linq;
15+
using System;
1516
using System.Collections.Generic;
1617
using System.Linq;
1718
using System.Net;
@@ -52,7 +53,6 @@ public async Task<IActionResult> Create([FromBody] AddCaseFileCommand parameter)
5253
{
5354
try
5455
{
55-
parameter.NameIdentifier = this.GetNameIdentifier();
5656
var result = await _addCaseFileCommandHandler.Handle(parameter);
5757
var jObj = new JObject
5858
{
@@ -77,7 +77,6 @@ public async Task<IActionResult> Update(string id, [FromBody] UpdateCaseFileComm
7777
try
7878
{
7979
parameter.Id = id;
80-
parameter.Performer = this.GetNameIdentifier();
8180
await _updateCaseFileCommandHandler.Handle(parameter);
8281
return new OkResult();
8382
}
@@ -95,19 +94,18 @@ public async Task<IActionResult> Update(string id, [FromBody] UpdateCaseFileComm
9594
}
9695
}
9796

98-
[HttpGet("{id}/publish")]
97+
[HttpPost("{id}/publish")]
9998
[Authorize("publish_casefile")]
100-
public async Task<IActionResult> Publish(string id)
99+
public async Task<IActionResult> Publish(string id, [FromBody] PublishCaseFileCommand publishCaseFileCommand)
101100
{
102101
try
103102
{
104-
var cmd = new PublishCaseFileCommand
103+
publishCaseFileCommand.Id = id;
104+
var newCaseFileId = await _publishCaseFileCommandHandler.Handle(publishCaseFileCommand);
105+
return new OkObjectResult(new JObject
105106
{
106-
Id = id,
107-
Performer = this.GetNameIdentifier()
108-
};
109-
await _publishCaseFileCommandHandler.Handle(cmd);
110-
return new OkResult();
107+
{ "id", newCaseFileId }
108+
});
111109
}
112110
catch (UnknownCaseFileException)
113111
{
@@ -124,6 +122,7 @@ public async Task<IActionResult> Publish(string id)
124122
}
125123

126124
[HttpGet("search")]
125+
[Authorize("get_casefile")]
127126
public async Task<IActionResult> Search()
128127
{
129128
var query = HttpContext.Request.Query.ToEnumerable();
@@ -132,6 +131,7 @@ public async Task<IActionResult> Search()
132131
}
133132

134133
[HttpGet("{id}")]
134+
[Authorize("get_casefile")]
135135
public async Task<IActionResult> Get(string id)
136136
{
137137
var result = await _queryRepository.FindById(id);
@@ -163,14 +163,20 @@ private static JObject ToDto(CaseFileAggregate resp)
163163
{ "description", resp.Description },
164164
{ "payload", resp.Payload },
165165
{ "create_datetime", resp.CreateDateTime },
166-
{ "update_datetime", resp.UpdateDateTime }
166+
{ "update_datetime", resp.UpdateDateTime },
167+
{ "version", resp.Version },
168+
{ "file_id", resp.FileId },
169+
{ "owner", resp.Owner },
170+
{ "status", Enum.GetName(typeof(CaseFileStatus), resp.Status).ToLowerInvariant() }
167171
};
168172
}
169173

170174
private static FindCaseFilesParameter ExtractFindParameter(IEnumerable<KeyValuePair<string, string>> query)
171175
{
172176
string owner;
173177
string text;
178+
bool takeLatest = false;
179+
string caseFileId;
174180
var parameter = new FindCaseFilesParameter();
175181
parameter.ExtractFindParameter(query);
176182
if (query.TryGet("owner", out owner))
@@ -183,6 +189,16 @@ private static FindCaseFilesParameter ExtractFindParameter(IEnumerable<KeyValueP
183189
parameter.Text = text;
184190
}
185191

192+
if (query.TryGet("take_latest", out takeLatest))
193+
{
194+
parameter.TakeLatest = takeLatest;
195+
}
196+
197+
if (query.TryGet("case_file_id", out caseFileId))
198+
{
199+
parameter.CaseFileId = caseFileId;
200+
}
201+
186202
return parameter;
187203
}
188204
}

src/CaseManagement.CMMN.Host/Startup.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ public void ConfigureServices(IServiceCollection services)
6565
policy.AddPolicy("publish_casefile", p => p.RequireClaim("scope", "publish_casefile"));
6666
policy.AddPolicy("add_case_instance", p => p.RequireClaim("scope", "add_case_instance"));
6767
policy.AddPolicy("launch_case_intance", p => p.RequireClaim("scope", "launch_case_intance"));
68+
policy.AddPolicy("get_casefile", p => p.RequireClaim("scope", "get_casefile"));
6869
});
6970
services.AddCors(options => options.AddPolicy("AllowAll", p => p.AllowAnyOrigin()
7071
.AllowAnyMethod()
@@ -73,7 +74,6 @@ public void ConfigureServices(IServiceCollection services)
7374
services.AddHostedService<BusHostedService>();
7475
services.AddCMMNApi();
7576
services.AddCMMNEngine()
76-
.AddDefinitions(files, "businessanalyst")
7777
.AddCaseProcesses(new List<ProcessAggregate>
7878
{
7979
new CaseManagementProcessAggregate

src/CaseManagement.CMMN/CaseFile/CommandHandlers/AddCaseFileCommandHandler.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ public async Task<string> Handle(AddCaseFileCommand addCaseFileCommand)
2525
payload = _options.DefaultCMMNSchema;
2626
}
2727

28-
// TODO : AJOUTER UNE QUEUE POUR CASEFILE.
29-
var caseFile = CaseFileAggregate.New(addCaseFileCommand.Name, addCaseFileCommand.Description, 0, addCaseFileCommand.NameIdentifier, payload);
28+
var caseFile = CaseFileAggregate.New(addCaseFileCommand.Name, addCaseFileCommand.Description, 0, addCaseFileCommand.Owner, payload);
3029
var streamName = CaseFileAggregate.GetStreamName(caseFile.Id);
3130
await _commitAggregateHelper.Commit(caseFile, streamName, CMMNConstants.QueueNames.CaseFiles);
3231
return caseFile.Id;

src/CaseManagement.CMMN/CaseFile/CommandHandlers/IPublishCaseFileCommandHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ namespace CaseManagement.CMMN.CaseFile.CommandHandlers
55
{
66
public interface IPublishCaseFileCommandHandler
77
{
8-
Task<bool> Handle(PublishCaseFileCommand publishCaseFileCommand);
8+
Task<string> Handle(PublishCaseFileCommand publishCaseFileCommand);
99
}
1010
}

src/CaseManagement.CMMN/CaseFile/CommandHandlers/PublishCaseFileCommandHandler.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,23 +19,24 @@ public PublishCaseFileCommandHandler(IEventStoreRepository eventStoreRepository,
1919
_commitAggregateHelper = commitAggregateHelper;
2020
}
2121

22-
public async Task<bool> Handle(PublishCaseFileCommand publishCaseFileCommand)
22+
public async Task<string> Handle(PublishCaseFileCommand publishCaseFileCommand)
2323
{
2424
var caseFile = await _eventStoreRepository.GetLastAggregate<CaseFileAggregate>(publishCaseFileCommand.Id, CaseFileAggregate.GetStreamName(publishCaseFileCommand.Id));
2525
if (caseFile == null || string.IsNullOrWhiteSpace(caseFile.Id))
2626
{
2727
throw new UnknownCaseFileException(publishCaseFileCommand.Id);
2828
}
2929

30-
caseFile.Publish(publishCaseFileCommand.Performer);
30+
var newCaseFile = caseFile.Publish(publishCaseFileCommand.Performer);
3131
await _commitAggregateHelper.Commit(caseFile, CaseFileAggregate.GetStreamName(caseFile.Id), CMMNConstants.QueueNames.CaseFiles);
32+
await _commitAggregateHelper.Commit(newCaseFile, CaseFileAggregate.GetStreamName(newCaseFile.Id), CMMNConstants.QueueNames.CaseFiles);
3233
var tDefinitions = CMMNParser.ParseWSDL(caseFile.Payload);
3334
foreach (var casePlan in CMMNParser.ExtractCasePlans(tDefinitions, caseFile))
3435
{
3536
await _commitAggregateHelper.Commit(casePlan, CasePlanAggregate.GetStreamName(casePlan.Id), CMMNConstants.QueueNames.CasePlans);
3637
}
3738

38-
return true;
39+
return newCaseFile.Id;
3940
}
4041
}
4142
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public class AddCaseFileCommand
1111
public string Description { get; set; }
1212
[DataMember(Name = "payload")]
1313
public string Payload { get; set; }
14-
public string NameIdentifier { get; set; }
14+
[DataMember(Name = "owner")]
15+
public string Owner { get; set; }
1516
}
1617
}
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1-
namespace CaseManagement.CMMN.CaseFile.Commands
1+
using System.Runtime.Serialization;
2+
3+
namespace CaseManagement.CMMN.CaseFile.Commands
24
{
5+
[DataContract]
36
public class PublishCaseFileCommand
47
{
58
public string Id { get; set; }
9+
[DataMember(Name = "performer")]
610
public string Performer { get; set; }
711
}
812
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public class UpdateCaseFileCommand
1212
public string Description { get; set; }
1313
[DataMember(Name = "payload")]
1414
public string Payload { get; set; }
15+
[DataMember(Name = "performer")]
1516
public string Performer { get; set; }
1617
}
1718
}

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public CaseFileHandler(ICaseFileCommandRepository caseFileCommandRepository, ICa
2727
public async Task Handle(CaseFileAddedEvent @event, CancellationToken cancellationToken)
2828
{
2929
var lockId = $"add-casefile-{@event.Id}";
30-
if (await _distributedLock.AcquireLock(lockId))
30+
if (!await _distributedLock.AcquireLock(lockId))
3131
{
3232
return;
3333
}
@@ -50,7 +50,7 @@ public async Task Handle(CaseFileAddedEvent @event, CancellationToken cancellati
5050
public async Task Handle(CaseFileUpdatedEvent @event, CancellationToken cancellationToken)
5151
{
5252
var lockId = $"update-casefile-{@event.Id}";
53-
if (await _distributedLock.AcquireLock(lockId))
53+
if (!await _distributedLock.AcquireLock(lockId))
5454
{
5555
return;
5656
}
@@ -71,7 +71,7 @@ public async Task Handle(CaseFileUpdatedEvent @event, CancellationToken cancella
7171
public async Task Handle(CaseFilePublishedEvent @event, CancellationToken cancellationToken)
7272
{
7373
var lockId = $"publish-casefile-{@event.Id}";
74-
if (await _distributedLock.AcquireLock(lockId))
74+
if (!await _distributedLock.AcquireLock(lockId))
7575
{
7676
return;
7777
}
@@ -81,7 +81,6 @@ public async Task Handle(CaseFilePublishedEvent @event, CancellationToken cancel
8181
var caseFile = await _caseFileQueryRepository.FindById(@event.AggregateId);
8282
var result = caseFile.Publish(@event.Performer);
8383
_caseFileCommandRepository.Update(caseFile);
84-
_caseFileCommandRepository.Add(result);
8584
await _caseFileCommandRepository.SaveChanges();
8685
}
8786
finally

0 commit comments

Comments
 (0)