1+ using System ;
2+ using System . Threading ;
3+ using System . Threading . Tasks ;
4+ using CallbackHandler . BusinessLogic . Requests ;
5+ using CallbackHandler . DataTransferObjects ;
6+ using CallbackHandlers . Models ;
7+ using MediatR ;
8+ using Newtonsoft . Json ;
9+ using Shared . Results ;
10+ using SimpleResults ;
11+
12+ namespace CallbackHandler . Handlers ;
13+
14+ public static class CallbackHandlers
15+ {
16+ public static async Task < Result < Guid > > RecordCallback ( Deposit depositCallback ,
17+ IMediator mediator ,
18+ CancellationToken cancellationToken )
19+ {
20+ Guid callbackId = Guid . NewGuid ( ) ;
21+
22+ CallbackCommands . RecordCallbackCommand request = new (
23+ callbackId ,
24+ JsonConvert . SerializeObject ( depositCallback ) ,
25+ new [ ] { "TransactionProcessor" } ,
26+ MessageFormat . JSON ,
27+ depositCallback . GetType ( ) . ToString ( ) ,
28+ depositCallback . Reference ) ;
29+
30+ Result result = await mediator . Send ( request , cancellationToken ) ;
31+
32+ if ( result . IsFailed ) {
33+ return ResultHelpers . CreateFailure ( result ) ;
34+ }
35+
36+ return Result . Success ( callbackId ) ;
37+ }
38+
39+ public static async Task < Result < DataTransferObjects . CallbackMessage > > GetCallback ( Guid callbackId ,
40+ IMediator mediator ,
41+ CancellationToken cancellationToken )
42+ {
43+ CallbackQueries . GetCallbackQuery query = new ( callbackId ) ;
44+ Result < global ::CallbackHandlers . Models . CallbackMessage > getResult = await mediator . Send ( query , cancellationToken ) ;
45+
46+ if ( getResult . IsFailed ) {
47+ return ResultHelpers . CreateFailure ( getResult ) ;
48+ }
49+
50+ Result < DataTransferObjects . CallbackMessage > result = Result . Success ( new DataTransferObjects . CallbackMessage
51+ {
52+ Reference = getResult . Data . Reference ,
53+ TypeString = getResult . Data . TypeString ,
54+ Message = getResult . Data . Message
55+ } ) ;
56+
57+ return result ;
58+ }
59+ }
0 commit comments