Пример #1
0
        private Task EventAppeared(BaseEvent evt)
        {
            switch (evt)
            {
            case ProductCreated pc:
                var product = new Product();
                product.Apply(pc);
                _dataContext.Products.Add(product);
                break;

            case ProductNameChanged pnc:
                _dataContext.Products.FirstOrDefault(e => e.Id == pnc.ProductId)?.Apply(pnc);
                break;

            case ProductPriceChanged pcc:
                _dataContext.Products.FirstOrDefault(e => e.Id == pcc.ProductId)?.Apply(pcc);
                break;

            case ProductDeleted pd:
                _dataContext.Products.RemoveAll(e => e.Id == pd.ProductId);
                break;

            case TabCreated tc:
                var tab = new Tab();
                tab.Apply(tc);
                _dataContext.Tabs.Add(tab);
                break;

            case TabNameChanged tnc:
                _dataContext.Tabs.FirstOrDefault(e => e.Id == tnc.TabId)?.Apply(tnc);
                break;

            case TabDeleted td:
                _dataContext.Tabs.RemoveAll(e => e.Id == td.TabId);
                break;

            case ProductOrderedOnTab poot:
                HandleEvent(poot);
                break;

            case TabSettled ts:
                HandleEvent(ts);
                break;

            case OrderDeleted od:
                HandleEvent(od);
                break;

            case SpendingCreated sc:
                HandleEvent(sc);
                break;

            case ProductOrderedOnSpending poos:
                HandleEvent(poos);
                break;

            case OrderOnSpendingDeleted oosd:
                HandleEvent(oosd);
                break;

            case SpendingClosed sc:
                HandleEvent(sc);
                break;
            }

            return(Task.CompletedTask);
        }