Exemplo n.º 1
0
        public SignalrService()
        {
            connection = new HubConnection(url);
            hubProxy   = connection.CreateHubProxy("ordersHub");

            hubProxy.On("UpdateOrders", () => UpdateOrders?.Invoke());

            connection.Start();
        }
Exemplo n.º 2
0
        public void Update_orders()
        {
            var supplier = DataMother.CreateSupplier();

            var newClient = DataMother.TestClient();
            var client    = DataMother.CreateTestClientWithAddressAndUser();
            var user      = client.Users[0];
            var address   = client.Addresses[0];

            user.AvaliableAddresses.Add(address);
            var query = new UpdateOrders(newClient, user, address);

            var order = new ClientOrder(user, supplier.Prices[0]);

            var product = new Product(session.Load <Catalog>(DataMother.CreateCatelogProduct()));
            var line    = new OrderLine(order, product, 100, 1);

            Save(supplier, product, line, order);

            query.Execute(session);

            session.Refresh(order);
            Assert.That(order.Client, Is.EqualTo(newClient));
        }
        private void UpdateOrder_Click(object sender, RoutedEventArgs e)
        {
            UpdateOrders updateorder = new UpdateOrders();

            pageload(updateorder);
        }
Exemplo n.º 4
0
 private void ItemOrdersView_EnabledChanged(object sender, EventArgs e)
 {
     // Update list
     UpdateOrders?.Invoke(this, EventArgs.Empty);
 }
        public void MoveUserOrAddress(uint clientId, uint userId, uint addressId, uint legalEntityId, bool moveAddress)
        {
            var newClient = DbSession.Load <Client>(clientId);
            var address   = DbSession.Get <Address>(addressId);
            var user      = DbSession.Get <User>(userId);

            Client oldClient = null;

            if (user != null)
            {
                oldClient = user.Client;
            }
            if (address != null)
            {
                oldClient = address.Client;
            }

            var legalEntity = DbSession.Get <LegalEntity>(legalEntityId);

            if (legalEntity == null)
            {
                legalEntity = newClient.Orgs().Single();
            }

            // Если нужно перенести вместе с пользователем,
            // адрес привязан только к этому пользователю и у пользователя нет других адресов,
            // тогда переносим пользователя

            if ((user != null && user.AvaliableAddresses.Count > 1) ||
                (address != null && address.AvaliableForUsers.Count > 1))
            {
                if (moveAddress)
                {
                    Error("Адрес доставки не может быть перемещен, т.к. имеет доступ к нему подключены пользователи");
                    RedirectUsingRoute("deliveries", "Edit", new { id = address.Id });
                    return;
                }
                else
                {
                    Error("Пользователь не может быть перемещен т.к. имеет доступ к адресам доставки");
                    RedirectUsingRoute("users", "Edit", new { id = user.Id });
                    return;
                }
            }

            if (user != null && user.AvaliableAddresses.Any(a => a.AvaliableForUsers.Count > 1))
            {
                Error("Пользователь не может быть перемещен т.к. подключен к адресу который связан с другими пользователями");
                RedirectUsingRoute("users", "Edit", new { id = user.Id });
                return;
            }

            if (address != null)
            {
                user = address.AvaliableForUsers.SingleOrDefault();
            }
            if (user != null)
            {
                address = user.AvaliableAddresses.SingleOrDefault();
            }

            AuditRecord log   = null;
            var         query = new UpdateOrders(newClient, user, address);

            if (user != null)
            {
                log = user.MoveToAnotherClient(DbSession, newClient, legalEntity);
            }
            if (address != null)
            {
                log = address.MoveToAnotherClient(DbSession, newClient, legalEntity);
            }

            query.Execute(DbSession);
            DbSession.Save(log);

            if (address != null)
            {
                Mail().AddressMoved(address, oldClient, address.OldValue(a => a.LegalEntity));
            }

            if (user != null)
            {
                Mail().UserMoved(user, oldClient, user.OldValue(u => u.Payer));
            }

            if (moveAddress)
            {
                Notify("Адрес доставки успешно перемещен");
                RedirectUsingRoute("deliveries", "Edit", new { id = address.Id });
            }
            else
            {
                Notify("Пользователь успешно перемещен");
                RedirectUsingRoute("users", "Edit", new { id = user.Id });
            }

            //нужно сохранить изменения, иначе oldClient.Refresh(); не зафиксирует их
            DbSession.Flush();
            DbSession.Refresh(oldClient);
            if (oldClient.Users.Count == 0 &&
                oldClient.Addresses.Count == 0 &&
                oldClient.Enabled)
            {
                oldClient.Disabled = true;
                Mail().EnableChanged(oldClient);
                DbSession.Save(AuditRecord.StatusChange(oldClient));
            }
            DbSession.Save(oldClient);
        }