Esempio n. 1
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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");
            }
        }
Esempio n. 5
0
        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));
        }
Esempio n. 7
0
        /// <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);
        }