Пример #1
0
        static void Main(string[] args)
        {
            string host = System.Configuration.ConfigurationManager.AppSettings["Host"] as string;
            string port = System.Configuration.ConfigurationManager.AppSettings["Port"] as string;

            _Publisher = new Publisher.Publisher(host, port);
        }
Пример #2
0
        public IActionResult AddNewOrder(CreateOrderModel createOrderModel)
        {
            var timestamp = DateTime.UtcNow;

            var newOrder = new Order
            {
                CustomerIdRef = Int32.Parse(createOrderModel?.CustomerSelected),
                EmployeeRef   = Int32.Parse(createOrderModel?.EmployeeSelected),
                PaymentIdRef  = Int32.Parse(createOrderModel?.PaymentSelected),
                Description   =
                    $"Ordered at {timestamp.ToShortDateString()} by {Int32.Parse(createOrderModel?.CustomerSelected)}. Employee: {Int32.Parse(createOrderModel?.EmployeeSelected)}",
                Status    = (new OrderStatus {
                    Status = OrderStatusEnum.Pending
                }).ToString(),
                Timestamp = timestamp,
            };

            var newOrderCustomer = new OrderCustomer
            {
                CustomerIdRef        = newOrder.CustomerIdRef,
                OrderIdRefNavigation = newOrder
            };

            var newOrderEmployee = new OrderEmployee
            {
                EmployeeIdRef        = newOrder.EmployeeRef,
                OrderIdRefNavigation = newOrder
            };

            var newOrderItems = (from foodItem in createOrderModel?.FoodItemsSelected
                                 select new OrderItem
            {
                FoodItemIdRef = Int32.Parse(foodItem),
                Quantity = 1,
                Order = newOrder
            }).ToList();

            var publisher = new Publisher.Publisher();

            try
            {
                var newOrderMessage = new NewOrderMessage(newOrder, newOrderCustomer, newOrderEmployee, newOrderItems);
                publisher.Publish(newOrderMessage);

                string  customerFullName = null;
                string  employeeFullName = null;
                string  paymentCode      = null;
                decimal totalPrice       = 0;
                using (var context = new FoodServiceContext())
                {
                    var customer = context.Customer.FirstOrDefault(x => x.CustomerId == newOrder.CustomerIdRef);
                    customerFullName = $"{customer.FirstName}, {customer.LastName}";

                    var employee = context.Employee.FirstOrDefault(x => x.EmployeeId == newOrder.EmployeeRef);
                    employeeFullName = $"{employee.FirstName}, {employee.LastName}";

                    var payment = context.Payment.FirstOrDefault(x => x.PaymentId == newOrder.PaymentIdRef);
                    paymentCode = payment.Code;

                    foreach (var orderItem in newOrderItems)
                    {
                        var foodItem = context.FoodItem.FirstOrDefault(x => x.FoodItemId == orderItem.FoodItemIdRef);
                        totalPrice += foodItem.UnitPrice * orderItem.Quantity;
                    }
                }
                var toAppend = $"<tr>" +
                               $"<td>{customerFullName}</td>" +
                               $"<td>{employeeFullName}</td>" +
                               $"<td>{paymentCode}</td>" +
                               $"<td>{newOrder.Status}</td>" +
                               $"<td>{newOrder.Timestamp.ToString()}</td>" +
                               $"<td>{totalPrice}</tr>";
                return(Json(new
                {
                    status = "OK",
                    toAppend = toAppend
                }));
            }
            catch (Exception e)
            {
                return(Json(new
                {
                    status = "ERROR"
                }));
            }
        }
Пример #3
0
 public void addPublisher(Publisher.Publisher p)
 {
     _publishers.Add(p);
 }
Пример #4
0
        public void createProcess(String processName, String type, String Site, String Url)
        {
            element targetSite = this.findElement(networkTree, Site);

            Broker.Broker         b;
            Publisher.Publisher   p;
            Subscriber.Subscriber s;

            string brokerUrl = "";

            if (targetSite == null)
            {
                Console.WriteLine("No target site found...");
            }
            else
            {
                switch (type)
                {
                case "broker":
                    if (_routingPolicy)
                    {
                        b = new Broker.Broker(processName, Url, Site, "filter", _ordering, this._masterURL, _loggingLevel, _faultTolerant);
                    }
                    else
                    {
                        b = new Broker.Broker(processName, Url, Site, "flooding", _ordering, this._masterURL, _loggingLevel, _faultTolerant);
                    }
                    if (targetSite.getParent() != null)
                    {
                        foreach (string url in targetSite.getParent().getBrokerUrls())
                        {
                            b.addParentUrl(url);
                        }
                        foreach (Broker.Broker parentBroker in targetSite.getParent().getBrokers())
                        {
                            parentBroker.addChildUrl(Url);
                        }
                    }
                    if (_faultTolerant && targetSite.getBrokers() != null)
                    {
                        foreach (string url in targetSite.getBrokerUrls())
                        {
                            b.addBackupUrl(url);
                        }
                        foreach (Broker.Broker backupBroker in targetSite.getBrokers())
                        {
                            backupBroker.addBackupUrl(Url);
                        }
                    }

                    Console.WriteLine(b.getProcessName());
                    _brokers.Add(b);
                    targetSite.addBroker(b);
                    //writeToLog("Broker " + processName + " created on " + Site + " with process URL " + Url);
                    break;

                case "publisher":
                    p = new Publisher.Publisher(processName, Url, Site, this._masterURL);
                    foreach (Broker.Broker sb in targetSite.getBrokers())
                    {
                        p.addBrokerURL(sb.getProcessURL());
                    }
                    _publishers.Add(p);
                    targetSite.addPublisher(p);
                    //writeToLog("Publisher " + processName + " created on " + Site + " with process URL " + Url);
                    break;

                case "subscriber":
                    brokerUrl = targetSite.getBrokerUrls().ElementAt(0);
                    s         = new Subscriber.Subscriber(processName, Url, Site, this._masterURL, _ordering);
                    foreach (Broker.Broker pb in targetSite.getBrokers())
                    {
                        s.addBrokerURL(pb.getProcessURL());
                    }
                    _subscribers.Add(s);
                    targetSite.addSubscriber(s);
                    foreach (Broker.Broker broker in targetSite.getBrokers())
                    {
                        broker.addSubscriberUrl(Url);
                    }
                    //writeToLog("Subscriber " + processName + " created on " + Site + " with process URL " + Url);
                    break;
                }
            }
        }
Пример #5
0
        public void connectToNode(string type, string name)
        {
            Node target = null;
            bool fail   = false;

            foreach (Broker.Broker br in _brokers)
            {
                if (br.getProcessName() == name)
                {
                    target = br;
                }
            }
            foreach (Subscriber.Subscriber sr in _subscribers)
            {
                if (sr.getProcessName() == name)
                {
                    target = sr;
                }
            }
            foreach (Publisher.Publisher pr in _publishers)
            {
                if (pr.getProcessName() == name)
                {
                    target = pr;
                }
            }

            switch (type)
            {
            case "broker":
                _remoteBroker = (Broker.Broker)Activator.GetObject(typeof(Broker.Broker), target.getProcessURL());
                if (_remoteBroker == null)
                {
                    fail = true;
                }
                break;

            case "subscriber":
                _remoteSub = (Subscriber.Subscriber)Activator.GetObject(typeof(Subscriber.Subscriber), target.getProcessURL());
                if (_remoteSub == null)
                {
                    fail = true;
                }
                break;

            case "publisher":
                _remotePub = (Publisher.Publisher)Activator.GetObject(typeof(Publisher.Publisher), target.getProcessURL());
                if (_remotePub == null)
                {
                    fail = true;
                }
                break;
            }

            if (fail)
            {
                Console.WriteLine("Could not extablish Proxy to " + target.getProcessURL());
            }
            else
            {
                Console.WriteLine("Established Proxy to: " + target.getProcessURL());
            }
        }