@@ -84,7 +84,7 @@ static async Task Main(string[] args){
8484 Program . baseAddressFunc ( "TestHostApi" ) ,
8585 clientId ,
8686 clientSecret ,
87- RunningMode . Live ) ;
87+ RunningMode . WhatIf ) ;
8888
8989 g . TraceGenerated += arguments => {
9090 Console . WriteLine ( $ "{ arguments . TraceLevel } |{ arguments . Message } ") ;
@@ -105,50 +105,85 @@ private static async Task GenerateStatements(ITransactionDataGenerator g, Guid e
105105
106106 private static async Task GenerateTransactions ( ITransactionDataGenerator g , Guid estateId , CancellationToken cancellationToken ) {
107107 // Set the date range
108- DateTime startDate = new DateTime ( 2024 , 7 , 2 ) ; //27/7
109- DateTime endDate = new DateTime ( 2024 , 7 , 3 ) ; // This is the date of the last generated transaction
108+ DateTime startDate = new DateTime ( 2024 , 7 , 1 ) ; //27/7
109+ DateTime endDate = new DateTime ( 2024 , 7 , 26 ) ; // This is the date of the last generated transaction
110110
111111 List < DateTime > dateRange = g . GenerateDateRange ( startDate , endDate ) ;
112-
112+ List < ContractResponse > allContracts = await g . GetEstateContracts ( estateId , cancellationToken ) ;
113113 List < MerchantResponse > merchants = await g . GetMerchants ( estateId , cancellationToken ) ;
114-
115- Boolean sendLogons = true ;
116- Boolean sendSales = true ;
117- Boolean sendFiles = true ;
118- Boolean sendSettlement = false ;
114+
115+ Dictionary < ( String , String ) , Decimal > floatDeposits = new Dictionary < ( String , String ) , Decimal > ( ) ;
116+ floatDeposits . Add ( ( "Healthcare Centre 1 Contract" , "10 KES Voucher" ) , 1400 ) ;
117+ floatDeposits . Add ( ( "Healthcare Centre 1 Contract" , "Custom" ) , 27000 ) ;
118+
119+ floatDeposits . Add ( ( "Safaricom Contract" , "100 KES Topup" ) , 14000 ) ;
120+ floatDeposits . Add ( ( "Safaricom Contract" , "200 KES Topup" ) , 28000 ) ;
121+ floatDeposits . Add ( ( "Safaricom Contract" , "Custom" ) , 27000 ) ;
122+
123+ floatDeposits . Add ( ( "PataPawa PostPay Contract" , "Post Pay Bill Pay" ) , 18000 ) ;
124+ floatDeposits . Add ( ( "PataPawa prePay Contract" , "Pre Pay Bill Pay" ) , 18000 ) ;
125+
126+
127+ // Everything
128+ //DataToSend dataToSend = DataToSend.FloatDeposits | DataToSend.Logons | DataToSend.Sales | DataToSend.Files |
129+ // DataToSend.Settlement;
130+ // Floats
131+ DataToSend dataToSend = DataToSend . FloatDeposits ;
132+
133+ // Logons and Sales
134+ //DataToSend dataToSend = DataToSend.Logons | DataToSend.Sales;
135+
136+ // Files
137+ //DataToSend dataToSend = DataToSend.Files;
138+
139+ // Settlement
140+ //DataToSend dataToSend = DataToSend.Settlement;
119141
120142 foreach ( DateTime dateTime in dateRange ) {
121-
122- if ( sendLogons ) {
123- foreach ( MerchantResponse merchant in merchants ) {
143+
144+ if ( ( dataToSend & DataToSend . FloatDeposits ) == DataToSend . FloatDeposits )
145+ {
146+ foreach ( ContractResponse contractResponse in allContracts ) {
147+ foreach ( ContractProduct contractResponseProduct in contractResponse . Products ) {
148+ // Lookup the deposit amount here
149+ var depositAmount = floatDeposits . SingleOrDefault ( f =>
150+ f . Key . Item1 == contractResponse . Description &&
151+ f . Key . Item2 == contractResponseProduct . Name ) ;
152+
153+ await g . MakeFloatDeposit ( dateTime , estateId , contractResponse . ContractId ,
154+ contractResponseProduct . ProductId , depositAmount . Value , cancellationToken ) ;
155+ }
156+ }
157+ }
158+
159+ if ( ( dataToSend & DataToSend . Logons ) == DataToSend . Logons ) {
160+ foreach ( MerchantResponse merchant in merchants ) {
124161
125162 // Send a logon transaction
126163 await g . PerformMerchantLogon ( dateTime , merchant , cancellationToken ) ;
127164 }
128165 }
129166
130- if ( sendSales ) {
131- foreach ( MerchantResponse merchant in merchants ) {
167+ if ( ( dataToSend & DataToSend . Sales ) == DataToSend . Sales )
168+ {
169+ foreach ( MerchantResponse merchant in merchants ) {
132170 // Get the merchants contracts
133171 List < ContractResponse > contracts = await g . GetMerchantContracts ( merchant , cancellationToken ) ;
134- foreach ( ContractResponse contract in contracts ) {
172+ foreach ( ContractResponse contract in contracts ) {
135173 // Generate and send some sales
136-
137- await g . SendSales ( dateTime , merchant , contract , 0 , cancellationToken ) ;
138174
139- await Task . Delay ( TimeSpan . FromSeconds ( 1 ) , cancellationToken ) ;
175+ await g . SendSales ( dateTime , merchant , contract , 0 , cancellationToken ) ;
140176 }
141177
142- //await Task.Delay(TimeSpan.FromSeconds(30), cancellationToken);
143178 }
144179 }
145180
146- if ( sendFiles ) {
147- foreach ( MerchantResponse merchant in merchants ) {
181+ if ( ( dataToSend & DataToSend . Files ) == DataToSend . Files ) {
182+ foreach ( MerchantResponse merchant in merchants ) {
148183 // Get the merchants contracts
149184 List < ContractResponse > contracts = await g . GetMerchantContracts ( merchant , cancellationToken ) ;
150185
151- foreach ( ContractResponse contract in contracts ) {
186+ foreach ( ContractResponse contract in contracts ) {
152187 // Generate a file and upload
153188 await g . SendUploadFile ( dateTime , contract , merchant , Guid . Empty , cancellationToken ) ;
154189
@@ -160,12 +195,21 @@ private static async Task GenerateTransactions(ITransactionDataGenerator g, Guid
160195 }
161196
162197 // Settlement
163- if ( sendSettlement ) {
198+ if ( ( dataToSend & DataToSend . Settlement ) == DataToSend . Settlement ) {
164199 await g . PerformSettlement ( dateTime , estateId , cancellationToken ) ;
165-
200+
166201 await Task . Delay ( TimeSpan . FromSeconds ( 30 ) , cancellationToken ) ;
167202 }
168203 }
169204 }
205+
206+ [ Flags ]
207+ enum DataToSend {
208+ FloatDeposits = 0 ,
209+ Logons = 1 ,
210+ Sales = 2 ,
211+ Files = 4 ,
212+ Settlement = 8
213+ }
170214 }
171215}
0 commit comments