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 }); }
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); }
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(); }
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); }
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); }