private void AddNewModel() { var model = PrepareBankModel(); var bankEvent = new BankEvent(BankEventEnum.BankCreated, model); if (!string.IsNullOrEmpty(textId.Text.Trim())) { bankEvent.Id = Guid.Parse(textId.Text); } CreateNewStream(bankEvent); }
static void Main(string[] args) { var manager = new BankEvent(); var broker = new Broker(manager); var bank = new Bank(manager); broker.Register(manager); manager.SimulateNewStock(20, 23); //Thread.Sleep(1000); bank.Unregister(manager); manager.SimulateNewStock(24, 26); }
private BankEvent CompareToNewEvent(Bank bank, BankEvent bankEvent) { BankEvent result = null; if (bank.Name != bankEvent.Data.Name) { bank.Name = bankEvent.Data.Name; var newEvent = new BankEvent(BankEventEnum.NameChanged, bank); result = newEvent; } else if (bank.Status != bankEvent.Data.Status) { bank.Status = bankEvent.Data.Status; var newEvent = new BankEvent(BankEventEnum.StatusChanged, bank); result = newEvent; } return(result); }
public void CreateNewStream(BankEvent bankEvent) { var item = eventStoreConnectionManager.Connection.AddNewJsonStream(bankEvent); if (item != null) { var newEvent = CompareToNewEvent(item, bankEvent); if (newEvent != null) { newEvent.EditStreamName = bankEvent.StreamName; eventStoreConnectionManager.Connection.EditJsonStream(newEvent); } } else { ConsoleTxt.SetTextNewLine($"Add {bankEvent.Id} {bankEvent.Data.Name} Succesed"); } }
public static Midi Create(Mid mid) { Midi midi = new Midi(); midi.Division = mid.Division as Mid.TicksPerBeatDivision; List <NoteEvent> OpenNotes = new List <NoteEvent>(); foreach (Mid.Track t in mid.Tracks) { Track track = new Track(); ulong time = 0; foreach (Mid.Event e in t.Events) { time += e.DeltaTime; if (e is Mid.MetaEvent) { Mid.MetaEvent meta = e as Mid.MetaEvent; if (meta.Type == 0x3) { track.Name = Util.Encoding.GetString(meta.Data); if (midi.Name == null) { midi.Name = track.Name; } } else if (meta.Type == 0x1) { track.Comments.Add(new TextEvent(time, Util.Encoding.GetString(meta.Data))); } else if (meta.Type == 0x5) { track.Lyrics.Add(new TextEvent(time, Util.Encoding.GetString(meta.Data))); } else if (meta.Type == 0x6) { track.Markers.Add(new TextEvent(time, Util.Encoding.GetString(meta.Data))); } else if (meta.Type == 0x51) { byte[] data = new byte[4]; meta.Data.CopyTo(data, 1); midi.BPM.Add(new TempoEvent(time, BigEndianConverter.ToUInt32(data))); } else if (meta.Type == 0x58) { midi.Signature.Add(new TimeSignatureEvent(time, meta.Data[0], meta.Data[1], meta.Data[2], meta.Data[3])); } else if (meta.Type == 0x2F) { } //else //throw new Exception("OHSHIT"); } else if (e is Mid.ChannelEvent) { Mid.ChannelEvent c = e as Mid.ChannelEvent; if (c.Type == 0x8 || (c.Type == 0x9 && c.Parameter2 == 0)) // Note off // ( A note on with velocity 0 acts as a note off ) { NoteEvent note = OpenNotes.Find(n => n.Note == c.Parameter1); if (note != null) { note.Duration = time - note.Time; note.ReleaseVelocity = c.Parameter2; OpenNotes.Remove(note); } } else if (c.Type == 0x9) // Note on { NoteEvent note = new NoteEvent(time, c.Channel, c.Parameter1, c.Parameter2, 0); OpenNotes.Add(note); track.Notes.Add(note); } else if (c.Type == 0xC) // Program Change { InstrumentEvent change = new InstrumentEvent(time, c.Channel, c.Parameter1, c.Parameter2); track.Instruments.Add(change); } else if (c.Type == 0xB) // Controller { switch (c.Parameter1) { case 0x00: // Bank Select BankEvent bank = new BankEvent(time, c.Channel, c.Parameter2); track.Banks.Add(bank); break; } } //else //throw new Exception("OHSHIT"); } } if (track.Notes.Count > 0 || track.Comments.Count > 0 || track.Lyrics.Count > 0) { midi.Tracks.Add(track); } } return(midi); }
public async Task <FraudProtectionResponse> PostBankEvent(BankEvent bankEvent, string correlationId, string envId) { var response = await PostAsync(_settings.Endpoints.BankEvent, bankEvent, correlationId, envId); return(await Read <FraudProtectionResponse>(response)); }
/// <summary> /// Checks the purchase's risk score. /// If the purchase is rejected, submit a REJECTED purchase status. /// If the purchase is approved, submit the bank AUTH, bank CHARGE, and purchase status (approved if the bank also approves the auth and charge, or rejected otherwise). /// If the purchase is in review, submit unknown bank AUTH and unknown purchase status (so that case management case is still created) /// </summary> private async Task <OrderStatus> ApproveOrRejectPurchase(string merchantRuleDecision, string cardNumber, string purchaseId, string correlationId, FraudProtectionIOModel fraudProtectionIO) { var status = OrderStatus.Received; BankEvent auth = null; BankEvent charge = null; PurchaseStatusEvent purchaseStatus; if (!FakeCreditCardBankResponses.CreditCardResponses.TryGetValue(cardNumber, out FakeCreditCardBankResponses creditCardBankResponse)) { //default response creditCardBankResponse = new FakeCreditCardBankResponses { IgnoreFraudRiskRecommendation = false, IsAuthApproved = true, IsChargeApproved = true }; } var isApproved = merchantRuleDecision.StartsWith("APPROVE", StringComparison.OrdinalIgnoreCase); var inReview = merchantRuleDecision.StartsWith("REVIEW", StringComparison.OrdinalIgnoreCase); if (isApproved || inReview || creditCardBankResponse.IgnoreFraudRiskRecommendation) { if (!creditCardBankResponse.IsAuthApproved) { //Auth - Rejected auth = SetupBankEvent(BankEventType.Auth, DateTimeOffset.Now, purchaseId, BankEventStatus.Declined); //Purchase status - Rejected purchaseStatus = SetupPurchaseStatus(purchaseId, PurchaseStatusType.Rejected); status = OrderStatus.Rejected; } else { //Auth - Approved/Unknown var authStatus = inReview ? BankEventStatus.Unknown : BankEventStatus.Approved; auth = SetupBankEvent(BankEventType.Auth, DateTimeOffset.Now, purchaseId, authStatus); //Charge var chargeStatus = creditCardBankResponse.IsChargeApproved ? BankEventStatus.Approved : BankEventStatus.Declined; if (!inReview) { charge = SetupBankEvent(BankEventType.Charge, DateTimeOffset.Now, purchaseId, chargeStatus); } if (inReview) { //Purchase status - Unknown purchaseStatus = SetupPurchaseStatus(purchaseId, PurchaseStatusType.Unknown); status = OrderStatus.InReview; } else if (creditCardBankResponse.IsChargeApproved) { //Purchase status - Approved purchaseStatus = SetupPurchaseStatus(purchaseId, PurchaseStatusType.Approved); } else { //Purchase status - Rejected purchaseStatus = SetupPurchaseStatus(purchaseId, PurchaseStatusType.Rejected); status = OrderStatus.Rejected; } } } else { purchaseStatus = SetupPurchaseStatus(purchaseId, PurchaseStatusType.Rejected); status = OrderStatus.Rejected; } if (auth != null) { var response = await _fraudProtectionService.PostBankEvent(auth, correlationId); fraudProtectionIO.Add(auth, response, "BankEvent Auth"); } if (charge != null) { var response = await _fraudProtectionService.PostBankEvent(charge, correlationId); fraudProtectionIO.Add(charge, response, "BankEvent Charge"); } if (purchaseStatus != null) { var response = await _fraudProtectionService.PostPurchaseStatus(purchaseStatus, correlationId); fraudProtectionIO.Add(purchaseStatus, response, "PurchaseStatus"); } return(status); }