forked from dtm-labs/client-csharp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBusiApiController.cs
More file actions
78 lines (67 loc) · 2.95 KB
/
BusiApiController.cs
File metadata and controls
78 lines (67 loc) · 2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using System.Text.Json;
using BusiIntegrationService.Dtos;
using Microsoft.AspNetCore.Mvc;
namespace BusiIntegrationService.Controllers
{
[ApiController]
[Route("http/busi.Busi")]
public class BusiApiController : ControllerBase
{
private readonly ILogger<BusiApiController> _logger;
private readonly Dtmcli.IBranchBarrierFactory _barrierFactory;
private readonly Dtmgrpc.IBranchBarrierFactory _grpcBarrierFactory;
public BusiApiController(ILogger<BusiApiController> logger, Dtmcli.IBranchBarrierFactory barrierFactory, Dtmgrpc.IBranchBarrierFactory grpcBarrierFactory)
{
_logger = logger;
_barrierFactory = barrierFactory;
_grpcBarrierFactory = grpcBarrierFactory;
}
[HttpGet("Test")]
public async Task<IActionResult> Test()
{
return this.Ok(nameof(this.Test));
}
[HttpPost("TransIn")]
public async Task<IActionResult> TransIn([FromBody] BusiRequest request)
{
_logger.LogInformation("TransIn req={req}", JsonSerializer.Serialize(request));
if (DateTime.Now < request.EffectTime)
return this.StatusCode(425, new { error = "Early" });
if (string.IsNullOrWhiteSpace(request.TransInResult) || request.TransInResult.Equals("SUCCESS"))
{
await Task.CompletedTask;
return Ok();
}
else if (request.TransInResult.Equals("FAILURE"))
{
return StatusCode(422, new { error = "FAILURE" }); // 422 Unprocessable Entity for business failure
}
else if (request.TransInResult.Equals("ONGOING"))
{
return StatusCode(425, new { error = "ONGOING" }); // 425 Too Early for ongoing state
}
return StatusCode(500, new { error = $"unknown result {request.TransInResult}" });
}
[HttpPost("TransOut")]
public async Task<IActionResult> TransOut([FromBody] BusiRequest request)
{
_logger.LogInformation("TransOut req={req}", JsonSerializer.Serialize(request));
if (DateTime.Now < request.EffectTime)
return this.StatusCode(425, new { error = "Early" });
if (string.IsNullOrWhiteSpace(request.TransOutResult) || request.TransOutResult.Equals("SUCCESS"))
{
await Task.CompletedTask;
return Ok();
}
else if (request.TransOutResult.Equals("FAILURE"))
{
return StatusCode(422, new { error = "FAILURE" }); // 422 Unprocessable Entity for business failure
}
else if (request.TransOutResult.Equals("ONGOING"))
{
return StatusCode(425, new { error = "ONGOING" }); // 425 Too Early for ongoing state
}
return StatusCode(500, new { error = $"unknown result {request.TransOutResult}" });
}
}
}