コード例 #1
0
        public IResult Handle(GetOrdersQuery query)
        {
            int clientId = SessionRepository.GetClientIdOfSession(query.sessionToken);

            if (clientId == -1)
            {
                throw new Exception();
            }

            var clients      = DatabaseQueryProcessor.GetClients();
            var foundClients = clients.FindAll(c => c.clientId == clientId);

            if (foundClients.Count != 1)
            {
                throw new Exception();
            }

            var orderRecords = DatabaseQueryProcessor.GetOrders(foundClients[0].clientId);
            var orderDtos    = new OrderDto[orderRecords.Count];

            for (var i = 0; i < orderRecords.Count; i++)
            {
                orderDtos[i]     = new OrderDto();
                orderDtos[i].key = orderRecords[i].orderId;
                var addressRecord = DatabaseQueryProcessor.GetAddress(orderRecords[i].addressId);
                orderDtos[i].address = new AddressDto()
                {
                    country         = addressRecord.country,
                    city            = addressRecord.city,
                    ZIPCode         = addressRecord.ZIPCode,
                    apartmentNumber = addressRecord.apartmentNumber,
                    buildingNumber  = addressRecord.buildingNumber,
                    street          = addressRecord.street,
                    key             = addressRecord.addressId
                };
                orderDtos[i].openDate  = orderRecords[i].openDate;
                orderDtos[i].closeDate = orderRecords[i].closeDate;
                orderDtos[i].status    = orderRecords[i].status;

                var orderEntriesRecords = DatabaseQueryProcessor.GetOrderEntries(orderRecords[i].orderId);
                var orderEntriesDtos    = new OrderEntryDto[orderEntriesRecords.Count];
                for (int j = 0; j < orderEntriesRecords.Count; j++)
                {
                    orderEntriesDtos[j] = new OrderEntryDto();
                    var product = DatabaseQueryProcessor.GetProduct(orderEntriesRecords[j].productId);
                    orderEntriesDtos[j].key      = orderEntriesRecords[j].orderEntryId;
                    orderEntriesDtos[j].name     = product.name;
                    orderEntriesDtos[j].price    = product.price;
                    orderEntriesDtos[j].quantity = orderEntriesRecords[j].quantity;
                }
                orderDtos[i].orderEntries = orderEntriesDtos;
                orderDtos[i].totalPrice   = orderEntriesDtos.Sum(orderEntry => orderEntry.price * orderEntry.quantity);
            }

            return(new OrdersDto()
            {
                isSuccess = true,
                orders = orderDtos
            });
        }
コード例 #2
0
        public void AddOrder_AddressDoesntExist_Exception(int _clientId)
        {
            var testSessionToken = SessionRepository.StartNewSession(_clientId);

            DatabaseQueryProcessor.Erase();
            Shared.FillTheDatabase();

            var testOrderEntry = new OrderEntryDto
            {
                key      = 0,
                name     = "Lavazza",
                quantity = 1,
                price    = 15
            };
            var testOrderEntries = new OrderEntryDto[1];

            testOrderEntries[0] = testOrderEntry;

            var testAddress = new AddressDto
            {
                key             = 0,
                country         = "Poland",
                city            = "Gdansk",
                street          = "Rzemieslnicza",
                ZIPCode         = 30445,
                buildingNumber  = 12,
                apartmentNumber = "1a"
            };

            var addOrderCommand = new AddOrderCommand
            {
                sessionToken = testSessionToken,
                orderEntries = testOrderEntries,
                totalPrice   = "15.00",
                address      = testAddress
            };

            var          handler = new AddOrderCommandHandler();
            TestDelegate result  = () => handler.Handle(addOrderCommand);

            DatabaseQueryProcessor.Erase();

            SessionRepository.RemoveSession(testSessionToken);

            Assert.Throws <Exception>(result);
        }
コード例 #3
0
ファイル: DaDMainForm.cs プロジェクト: majdanrc/DineAndDash
        private void PlaceOrder()
        {
            if (orderTree.Nodes.Count == 0)
            {
                MessageBox.Show(Resources.EmptyOrder, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            var order = new OrderDto
            {
                CreatedOn = DateTime.UtcNow,
                Notes     = rtbNotes.Text
            };

            foreach (var mainNode in orderTree.Nodes.Cast <MenuNodeItem>())
            {
                var orderEntry = new OrderEntryDto
                {
                    MenuItemId = mainNode.MenuItemId
                };

                foreach (var extra in mainNode.Nodes.Cast <MenuNodeItem>())
                {
                    var extraEntry = new OrderEntryDto
                    {
                        MenuItemId = extra.MenuItemId
                    };

                    orderEntry.Extras.Add(extraEntry);
                }

                order.OrderItems.Add(orderEntry);
            }

            var savedOrder = _orderingService.PlaceOrder(order);

            if (savedOrder == null)
            {
                MessageBox.Show(Resources.OrderSaveError,
                                Resources.Error,
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);

                return;
            }

            var sent = _mailingService.SendOrder(savedOrder);

            if (sent)
            {
                MessageBox.Show(Resources.OrderSent,
                                Resources.Info,
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show(Resources.OrderSendEmailError,
                                Resources.Warning,
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Warning);
            }

            ClearOrder();
            NewOrder();
        }
コード例 #4
0
        public void GetOrders_ClientExists_Success(int _clientId)
        {
            var expectedOrderEntry = new OrderEntryDto
            {
                key      = 2,
                name     = "Vergnano",
                quantity = 1,
                price    = 25
            };
            var expectedOrderEntries = new OrderEntryDto[1];

            expectedOrderEntries[0] = expectedOrderEntry;

            var expectedAddress = new AddressDto
            {
                key             = 2,
                country         = "Poland",
                city            = "Cracow",
                street          = "Krakowska",
                ZIPCode         = 30000,
                buildingNumber  = 1,
                apartmentNumber = ""
            };

            var expectedOrder = new OrderDto
            {
                key          = 2,
                orderEntries = expectedOrderEntries,
                totalPrice   = 25,
                address      = expectedAddress,
                status       = 0,
                openDate     = "2018-06-12",
                closeDate    = ""
            };

            var expectedOrders = new OrderDto[1];

            expectedOrders[0] = expectedOrder;

            var expectedOrderDto = new OrdersDto
            {
                isSuccess = true,
                orders    = expectedOrders
            };

            DatabaseQueryProcessor.Erase();
            Shared.FillTheDatabase();

            int clientId         = _clientId;
            var testSessionToken = SessionRepository.StartNewSession(clientId);

            var getOrdersQuery = new GetOrdersQuery
            {
                sessionToken = testSessionToken,
            };

            var handler = new GetOrdersQueryHandler();
            var result  = (OrdersDto)handler.Handle(getOrdersQuery);

            DatabaseQueryProcessor.Erase();
            SessionRepository.RemoveSession(testSessionToken);

            Assert.IsTrue(result.isSuccess);
            Assert.AreEqual(result.orders.Length, expectedOrderDto.orders.Length);
            Assert.AreEqual(result.orders[0].orderEntries.Length, expectedOrderDto.orders[0].orderEntries.Length);
            Assert.AreEqual(result.orders[0].status, expectedOrderDto.orders[0].status);
            Assert.AreEqual(result.orders[0].address.apartmentNumber, expectedOrderDto.orders[0].address.apartmentNumber);
        }
コード例 #5
0
        public void AddOrder_CorrectAttributes_Success(int _clientId)
        {
            int    _key             = 0;
            string _country         = "Poland";
            string _city            = "Gdynia";
            string _street          = "Rzemieslnicza";
            int    _ZIPCode         = 30445;
            int    _buildingNumber  = 12;
            string _apartmentNumber = "1a";

            var testSessionToken = SessionRepository.StartNewSession(_clientId);

            DatabaseQueryProcessor.Erase();
            Shared.FillTheDatabase();

            var testOrderEntry = new OrderEntryDto
            {
                key      = 0,
                name     = "Lavazza",
                quantity = 1,
                price    = 15
            };
            var testOrderEntries = new OrderEntryDto[1];

            testOrderEntries[0] = testOrderEntry;

            var testAddress = new AddressDto
            {
                key             = _key,
                country         = _country,
                city            = _city,
                street          = _street,
                ZIPCode         = _ZIPCode,
                buildingNumber  = _buildingNumber,
                apartmentNumber = _apartmentNumber
            };


            var addOrderCommand = new AddOrderCommand
            {
                sessionToken = testSessionToken,
                orderEntries = testOrderEntries,
                totalPrice   = "15.00",
                address      = testAddress
            };

            var addressId = DatabaseQueryProcessor.GetAddress(_clientId,
                                                              _country,
                                                              _city,
                                                              _street,
                                                              _ZIPCode,
                                                              _buildingNumber,
                                                              _apartmentNumber);

            var handler = new AddOrderCommandHandler();
            var result  = (SuccessInfoDto)handler.Handle(addOrderCommand);

            var expectedOrder = DatabaseQueryProcessor.GetTheMostRecentOrder(_clientId);

            SessionRepository.RemoveSession(testSessionToken);
            DatabaseQueryProcessor.Erase();


            Assert.IsTrue(result.isSuccess);
        }