static void Main(string[] args) { var services = new ServicesController(); var action = ""; while (action != "F") { while (action != "F") { NewLine(); Console.WriteLine("-----------------------"); Console.WriteLine(" M E N U"); Console.WriteLine("-----------------------"); Console.WriteLine(" O R D E N E S "); NewLine(); Console.WriteLine("- 'C' para Crear una Orden"); Console.WriteLine("- 'D' para Eliminar una Orden"); Console.WriteLine("- 'M' para Modificar una Orden"); Console.WriteLine("- 'L' para Listar todas las Ordenes"); Console.WriteLine("- 'A' para mostrar Cliente con mayor compras por País"); Console.WriteLine("- 'B' para mostrar Producto más vendido por País"); Console.WriteLine("Ingrese 'F' para Finalizar"); action = Console.ReadLine().ToUpper(); switch (action) { case "M": var orderId = 0; var orderUpdateDto = new OrderDto(); NewLine(); Console.WriteLine("MODIFICAR ORDEN:"); Console.WriteLine("----------------"); NewLine(); Console.WriteLine("Ingrese Id de la Orden a modificar:"); if (!int.TryParse(Console.ReadLine(), out orderId)) { NewLine(); Console.WriteLine($"El Id de Orden ingresado no es válido!"); break; } if (!string.IsNullOrWhiteSpace(orderId.ToString())) { var orderDtoFind = services.orderServices.GetOrderDtoByID(orderId, services); if (orderDtoFind == null) { break; } orderUpdateDto = orderDtoFind; orderUpdateDto = OrderCreateEdit("UPDATE", services, orderUpdateDto); } else { break; } var lastAddedOrderMod = services.orderServices.GetAll(services) .Where(o => o.CustomerID == orderUpdateDto.CustomerID && o.EmployeeID == orderUpdateDto.EmployeeID) .LastOrDefault(); var totalAmountMod = orderUpdateDto.calculateTotalAmount(); NewLine(); Console.WriteLine("ORDEN MODIFICADA CON ÉXITO"); NewLine(); Console.WriteLine("PRESIONE CUALQUIER TECLA PARA CONTINUAR..."); Console.ReadKey(); break; case "D": var orderDtoRemove = new OrderDto(); do { NewLine(); Console.WriteLine("ELIMINAR ORDEN:"); Console.WriteLine("-----------------"); Console.WriteLine("Ingrese el ID de la Orden a ELIMINAR:"); var orderRemoveId = -1; bool isInt = int.TryParse(Console.ReadLine(), out orderRemoveId); if (isInt) { orderDtoRemove = services.orderServices.GetOrderDtoByID(orderRemoveId, services); if (orderDtoRemove == null) { //throw new Exception("ERROR: No se encontró la Orden o no existe!"); NewLine(); Console.WriteLine("ERROR: No se encontró la Orden o no existe!"); NewLine(); break; } else { if (orderDtoRemove.ShipCountry == "Mexico" || orderDtoRemove.ShipCountry == "France") { NewLine(); Console.WriteLine($"No se puede eliminar una Orden de un Cliente de '{orderDtoRemove.ShipCountry}'!"); NewLine(); break; } else { services.orderServices.Remove(orderDtoRemove, services); break; } } } orderDtoRemove = null; //throw new Exception("ERROR: No se encontró la Orden o no existe!"); NewLine(); Console.WriteLine("ERROR: No se encontró la Orden o no existe!"); NewLine(); }while (orderDtoRemove == null); break; case "C": NewLine(); Console.WriteLine("CREAR ORDEN"); Console.WriteLine("-------------"); var orderDtoNew = new OrderDto(); var orderDto = OrderCreateEdit("CREATE", services, orderDtoNew); if (orderDto == null) { NewLine(); Console.WriteLine("La Orden no se ha generado."); break; } var lastAddedOrder = services.orderServices.GetAll(services) .Where(o => o.CustomerID == orderDto.CustomerID && o.EmployeeID == orderDto.EmployeeID) .LastOrDefault(); if (lastAddedOrder == null) { Console.WriteLine("Hubo un ERROR al intentar obtener la nueva Orden creada."); break; } var totalAmount = orderDto.calculateTotalAmount(); if (totalAmount == 0) { Console.WriteLine("Hubo un ERROR al intentar calcular el Importe de la Orden creada."); break; } NewLine(); Console.WriteLine("ORDEN CREADA CON ÉXITO"); NewLine(); Console.WriteLine($"La Orden con ID '{lastAddedOrder.OrderID}' con importe $ {totalAmount} se ha creado correctamente."); NewLine(); Console.WriteLine("PRESIONE CUALQUIER TECLA PARA CONTINUAR..."); Console.ReadKey(); break; case "L": //LISTAR TODAS LAS ÓRDENES: //mostrar Id de factura, Cliente Nombre e importe total: NewLine(); Console.WriteLine("LISTANDO TODAS LAS ÓRDENES..."); NewLine(); var ordersList = services.orderServices.GetAll(services); foreach (var order in ordersList) { var customerGetId = order.CustomerID; if (customerGetId != null) { var customer = services.customerServices.GetCustomerDtoByID(customerGetId, services); var orderDetails = services.orderDetailsServices.GetAll() .Where(d => d.OrderID == order.OrderID) .Select(d => d) .ToList(); order.Order_Details = orderDetails; NewLine(); Console.WriteLine($"ID: {order.OrderID} - NOMBRE CLIENTE: '{customer.ContactName}' - IMPORTE TOTAL: ${order.calculateTotalAmount()}"); } } PressKeyToContinue(); break; case "A": //mostrar por País: cliente con mayor compra: NewLine(); Console.WriteLine("LISTANDO CLIENTES..."); NewLine(); var bestCustomersList = services.customerServices.GetBestCostumer(services); NewLine(); Console.WriteLine("LISTADO DE MEJORES CLIENTES (MEJORES COMPRADORES) POR PAÍS"); Console.WriteLine("----------------------------------------------------------"); foreach (var bestCustomer in bestCustomersList) { NewLine(); Console.WriteLine($"PAÍS : {bestCustomer.Country} - NOMBRE MEJOR CLIENTE : '{bestCustomer.Name}'"); } PressKeyToContinue(); break; case "B": //mostrar por País: producto más vendido: NewLine(); Console.WriteLine("LISTANDO PRODUCTOS..."); NewLine(); var bestSellerProductList = services.productServices.GetBestSellProduct(services); NewLine(); Console.WriteLine("LISTADO DEL PRODUCTO MÁS VENDIDO POR PAÍS"); Console.WriteLine("-----------------------------------------"); foreach (var bestSellerProduct in bestSellerProductList) { NewLine(); Console.WriteLine($"PAÍS : {bestSellerProduct.Country} - PRODUCTO MÁS VENDIDO : '{bestSellerProduct.Name}'"); } PressKeyToContinue(); break; case "F": NewLine(); Console.WriteLine("Saliendo..."); break; default: NewLine(); Console.WriteLine("La opción no es válida."); Console.WriteLine("Por favor selecciona una opción del menú."); break; } } } NewLine(); Console.WriteLine("Programa finalizado."); Console.ReadKey(); }