/// <summary>
        /// Método que carga en los DataGrid los pedidos Locales que son devueltos por el SERVIDOR.
        /// </summary>
        /// <param name="pedidosLocales"></param>
        public void CargarPedidosLocales(PedidoLocalDeServidor[] pedidosLocales)
        {
            foreach (var pedidoLocalEspera in pedidosLocales.Where(p => p.estado == "En Espera"))
            {
                ListaPedidosLocales.Add(ConvertidorDeObjetos.PedidoLocalDeServidor_A_PedidoLocal(pedidoLocalEspera));
                PedidoEnDataGrid pedidoEnDataGrid = new PedidoEnDataGrid(pedidoLocalEspera.idGeneradoDeEmpleado, pedidoLocalEspera.id.ToString(), "Local", pedidoLocalEspera.numeroMesa.ToString(), pedidoLocalEspera.instruccionesDePedido);
                pedidosEnEspera.Add(pedidoEnDataGrid);
            }
            foreach (var pedidoLocalPreparado in pedidosLocales.Where(p => p.estado == "Preparado"))
            {
                ListaPedidosLocales.Add(ConvertidorDeObjetos.PedidoLocalDeServidor_A_PedidoLocal(pedidoLocalPreparado));
                PedidoEnDataGrid pedidoEnDataGrid = new PedidoEnDataGrid(pedidoLocalPreparado.idGeneradoDeEmpleado, pedidoLocalPreparado.id.ToString(), "Local", pedidoLocalPreparado.numeroMesa.ToString(), pedidoLocalPreparado.instruccionesDePedido);
                pedidosPreparados.Add(pedidoEnDataGrid);
            }

            foreach (var pedidoLocalEnviado in pedidosLocales.Where(p => p.estado == "Entregado"))
            {
                ListaPedidosLocales.Add(ConvertidorDeObjetos.PedidoLocalDeServidor_A_PedidoLocal(pedidoLocalEnviado));
                PedidoEnDataGrid pedidoEnDataGrid = new PedidoEnDataGrid(pedidoLocalEnviado.idGeneradoDeEmpleado, pedidoLocalEnviado.id.ToString(), "Local", pedidoLocalEnviado.numeroMesa.ToString(), pedidoLocalEnviado.instruccionesDePedido);
                pedidosEntregados.Add(pedidoEnDataGrid);
            }

            foreach (var pedidoLocalEnviado in pedidosLocales.Where(p => p.estado == "Cancelado"))
            {
                ListaPedidosLocales.Add(ConvertidorDeObjetos.PedidoLocalDeServidor_A_PedidoLocal(pedidoLocalEnviado));
                PedidoEnDataGrid pedidoEnDataGrid = new PedidoEnDataGrid(pedidoLocalEnviado.idGeneradoDeEmpleado, pedidoLocalEnviado.id.ToString(), "Local", pedidoLocalEnviado.numeroMesa.ToString(), pedidoLocalEnviado.instruccionesDePedido);
                pedidosCancelados.Add(pedidoEnDataGrid);
            }
        }
        public void RecibirPedidoLocal(PedidoLocal pedido)
        {
            FuncionesComunes.MostrarMensajeExitoso("PEDIDO LOCAL: " + pedido.Estado.estadoPedido + "\nEmpleado: " + pedido.Empleado.idEmpleadoGenerado);

            if (pedido.Estado.estadoPedido.Equals("En Espera"))
            {
                PedidoLocal pedidoExiste = ListaPedidosLocales.Find(p => p.Id == Convert.ToInt32(pedido.Id));
                if (pedidoExiste != null)
                {
                    ListaPedidosLocales.Remove(pedidoExiste); ListaPedidosLocales.Add(pedido);
                    PedidoEnDataGrid pedidoEditado = pedidosEnEspera.First(p => p.IdPedido == pedido.Id.ToString());
                    pedidoEditado.Empleado                = pedido.Empleado.idEmpleadoGenerado;
                    pedidoEditado.MesaOCliente            = pedido.Mesa.numeroMesa.ToString();
                    pedidoEditado.InstruccionesEspeciales = pedido.instruccionesEspeciales;
                    meserosUC.dataGridPedidosEnEspera.Items.Refresh();
                }
                else
                {
                    PedidoEnDataGrid pedidoEnDataGrid = new PedidoEnDataGrid(pedido.Empleado.idEmpleadoGenerado, pedido.Id.ToString(), "Local", pedido.Mesa.numeroMesa.ToString(), pedido.instruccionesEspeciales);
                    meserosUC.AgregarOSeleccionar_PedidoEnEspera = pedidoEnDataGrid;
                    pedidosEnEspera.Add(pedidoEnDataGrid);
                    ListaPedidosLocales.Add(pedido);
                }
            }
            if (pedido.Estado.estadoPedido.Equals("Preparado"))
            {
                PedidoEnDataGrid pedidoEnDataGrid = new PedidoEnDataGrid(pedido.Empleado.idEmpleadoGenerado, pedido.Id.ToString(), "Local", pedido.Mesa.numeroMesa.ToString(), pedido.instruccionesEspeciales);
                meserosUC.AgregarOSeleccionar_PedidoPreparado = pedidoEnDataGrid;
                pedidosPreparados.Add(pedidoEnDataGrid);
                pedidosEnEspera.Remove(pedidosEnEspera.FirstOrDefault(p => p.IdPedido == pedidoEnDataGrid.IdPedido));
                meserosUC.dataGridPedidosPreparados.Items.Refresh();
            }
            if (pedido.Estado.estadoPedido.Equals("Entregado"))
            {
                PedidoEnDataGrid pedidoEnDataGrid = new PedidoEnDataGrid(pedido.Empleado.idEmpleadoGenerado, pedido.Id.ToString(), "Local", pedido.Mesa.numeroMesa.ToString(), pedido.instruccionesEspeciales);
                meserosUC.AgregarOSeleccionar_PedidoEntregado = pedidoEnDataGrid;
                pedidosEntregados.Add(pedidoEnDataGrid);
                pedidosPreparados.Remove(pedidosPreparados.FirstOrDefault(p => p.IdPedido == pedidoEnDataGrid.IdPedido));
            }
            if (pedido.Estado.estadoPedido.Equals("Cancelado"))
            {
                PedidoEnDataGrid pedidoEnDataGrid = new PedidoEnDataGrid(pedido.Empleado.idEmpleadoGenerado, pedido.Id.ToString(), "Local", pedido.Mesa.numeroMesa.ToString(), pedido.instruccionesEspeciales);
                meserosUC.AgregarOSeleccionar_PedidoCancelado = pedidoEnDataGrid;
                pedidosCancelados.Add(pedidoEnDataGrid);

                if (pedidosEnEspera.FirstOrDefault(p => p.IdPedido == pedidoEnDataGrid.IdPedido) != null)
                {
                    pedidosEnEspera.Remove(pedidosEnEspera.FirstOrDefault(p => p.IdPedido == pedidoEnDataGrid.IdPedido));
                }
                else if (pedidosPreparados.FirstOrDefault(p => p.IdPedido == pedidoEnDataGrid.IdPedido) != null)
                {
                    pedidosPreparados.Remove(pedidosPreparados.FirstOrDefault(p => p.IdPedido == pedidoEnDataGrid.IdPedido));
                }
            }
        }
        void IBuscarPedidosCallback.ObtenerTodosPedidos(PedidoADomicilioDeServidor[] pedidosADomicilio, PedidoLocalDeServidor[] pedidosLocales)
        {
            //Pedidos A Domicilio
            foreach (var pedidoDomicilioEspera in pedidosADomicilio.Where(p => p.estado == "En Espera"))
            {
                ListaPedidosDomicilio.Add(ConvertidorDeObjetos.PedidoADomicilioDeServidor_A_PedidoADomicilio(pedidoDomicilioEspera));
                PedidoEnDataGrid pedidoEnDataGrid = new PedidoEnDataGrid(pedidoDomicilioEspera.idGeneradoDeEmpleado, pedidoDomicilioEspera.id.ToString(), "Domicilio", pedidoDomicilioEspera.cliente.nombre + " " + pedidoDomicilioEspera.cliente.apellidoPaterno + " " + pedidoDomicilioEspera.cliente.apellidoMaterno + ": " + pedidoDomicilioEspera.direccionDestino, pedidoDomicilioEspera.instruccionesDePedido);
                pedidosEnEspera.Add(pedidoEnDataGrid);
            }

            foreach (var pedidoDomicilioPreparado in pedidosADomicilio.Where(p => p.estado == "Preparado"))
            {
                ListaPedidosDomicilio.Add(ConvertidorDeObjetos.PedidoADomicilioDeServidor_A_PedidoADomicilio(pedidoDomicilioPreparado));
                PedidoEnDataGrid pedidoEnDataGrid = new PedidoEnDataGrid(pedidoDomicilioPreparado.idGeneradoDeEmpleado, pedidoDomicilioPreparado.id.ToString(), "Domicilio", pedidoDomicilioPreparado.cliente.nombre + " " + pedidoDomicilioPreparado.cliente.apellidoPaterno + " " + pedidoDomicilioPreparado.cliente.apellidoMaterno + ": " + pedidoDomicilioPreparado.direccionDestino, pedidoDomicilioPreparado.instruccionesDePedido);
                pedidosPreparados.Add(pedidoEnDataGrid);
            }

            foreach (var pedidoDomicilioEnviado in pedidosADomicilio.Where(p => p.estado == "Enviado"))
            {
                ListaPedidosDomicilio.Add(ConvertidorDeObjetos.PedidoADomicilioDeServidor_A_PedidoADomicilio(pedidoDomicilioEnviado));
                PedidoEnDataGrid pedidoEnDataGrid = new PedidoEnDataGrid(pedidoDomicilioEnviado.idGeneradoDeEmpleado, pedidoDomicilioEnviado.id.ToString(), "Domicilio", pedidoDomicilioEnviado.cliente.nombre + " " + pedidoDomicilioEnviado.cliente.apellidoPaterno + " " + pedidoDomicilioEnviado.cliente.apellidoMaterno + ": " + pedidoDomicilioEnviado.direccionDestino, pedidoDomicilioEnviado.instruccionesDePedido);
                pedidosEnviados.Add(pedidoEnDataGrid);
            }
            foreach (var pedidoDomicilioEnviado in pedidosADomicilio.Where(p => p.estado == "Entregado"))
            {
                ListaPedidosDomicilio.Add(ConvertidorDeObjetos.PedidoADomicilioDeServidor_A_PedidoADomicilio(pedidoDomicilioEnviado));
                PedidoEnDataGrid pedidoEnDataGrid = new PedidoEnDataGrid(pedidoDomicilioEnviado.idGeneradoDeEmpleado, pedidoDomicilioEnviado.id.ToString(), "Domicilio", pedidoDomicilioEnviado.cliente.nombre + " " + pedidoDomicilioEnviado.cliente.apellidoPaterno + " " + pedidoDomicilioEnviado.cliente.apellidoMaterno + ": " + pedidoDomicilioEnviado.direccionDestino, pedidoDomicilioEnviado.instruccionesDePedido);
                pedidosEntregados.Add(pedidoEnDataGrid);
            }
            foreach (var pedidoDomicilioEnviado in pedidosADomicilio.Where(p => p.estado == "Cancelado"))
            {
                ListaPedidosDomicilio.Add(ConvertidorDeObjetos.PedidoADomicilioDeServidor_A_PedidoADomicilio(pedidoDomicilioEnviado));
                PedidoEnDataGrid pedidoEnDataGrid = new PedidoEnDataGrid(pedidoDomicilioEnviado.idGeneradoDeEmpleado, pedidoDomicilioEnviado.id.ToString(), "Domicilio", pedidoDomicilioEnviado.cliente.nombre + " " + pedidoDomicilioEnviado.cliente.apellidoPaterno + " " + pedidoDomicilioEnviado.cliente.apellidoMaterno + ": " + pedidoDomicilioEnviado.direccionDestino, pedidoDomicilioEnviado.instruccionesDePedido);
                pedidosCancelados.Add(pedidoEnDataGrid);
            }

            // Pedidos Locales
            CargarPedidosLocales(pedidosLocales);
        }
        private void UC_GenerarTicketPDF(object sender, EventArgs e)
        {
            PedidoEnDataGrid pedidoEntregado = meserosUC.AgregarOSeleccionar_PedidoEntregado;

            string rutaTicketsPDF = "TicketsPDF";
            string rootDirectory  = System.IO.Path.GetFullPath(AppDomain.CurrentDomain.BaseDirectory + "../../" + rutaTicketsPDF);

            if (!Directory.Exists(@rootDirectory))
            {
                DirectoryInfo di = Directory.CreateDirectory(@rootDirectory);
            }

            if (pedidoEntregado.Tipo == "Domicilio")
            {
                PedidoADomicilio pedidoDomicilioEncontrado = ListaPedidosDomicilio.Find(p => p.Id == Convert.ToInt32(pedidoEntregado.IdPedido));
                meserosUC.GenerarTicketPDF(@rootDirectory, pedidoDomicilioEncontrado);
            }
            else
            {
                PedidoLocal pedidoLocalEncontrado = ListaPedidosLocales.Find(p => p.Id == Convert.ToInt32(pedidoEntregado.IdPedido));
                meserosUC.GenerarTicketPDF(@rootDirectory, pedidoLocalEncontrado);
            }
        }
        public void RecibirPedidoDomicilio(PedidoADomicilio pedido)
        {
            FuncionesComunes.MostrarMensajeExitoso("PEDIDO A DOMICILIO: " + pedido.Estado.estadoPedido + "\nEmpleado: " + pedido.Empleado.idEmpleadoGenerado);

            if (pedido.Estado.estadoPedido.Equals("En Espera"))
            {
                PedidoADomicilio pedidoExiste = ListaPedidosDomicilio.Find(p => p.Id == Convert.ToInt32(pedido.Id));
                if (pedidoExiste != null)
                {
                    ListaPedidosDomicilio.Remove(pedidoExiste); ListaPedidosDomicilio.Add(pedido);
                    PedidoEnDataGrid pedidoAActualizar = pedidosEnEspera.First(p => p.IdPedido == pedido.Id.ToString());
                    pedidoAActualizar.Empleado                = pedido.Empleado.idEmpleadoGenerado;
                    pedidoAActualizar.MesaOCliente            = pedido.Cliente.nombre + " " + pedido.Cliente.apellidoPaterno + " " + pedido.Cliente.apellidoMaterno + ": " + pedido.direccionDestino;
                    pedidoAActualizar.InstruccionesEspeciales = pedido.instruccionesEspeciales;
                    meserosUC.dataGridPedidosEnEspera.Items.Refresh();
                }
                else
                {
                    PedidoEnDataGrid pedidoEnDataGrid = new PedidoEnDataGrid(pedido.Empleado.idEmpleadoGenerado, pedido.Id.ToString(), "Domicilio", pedido.Cliente.nombre + " " + pedido.Cliente.apellidoPaterno + " " + pedido.Cliente.apellidoMaterno + ": " + pedido.direccionDestino, pedido.instruccionesEspeciales);
                    meserosUC.AgregarOSeleccionar_PedidoEnEspera = pedidoEnDataGrid;
                    pedidosEnEspera.Add(pedidoEnDataGrid);
                    ListaPedidosDomicilio.Add(pedido);
                }
            }
            else if (pedido.Estado.estadoPedido.Equals("Preparado"))
            {
                PedidoEnDataGrid pedidoEnDataGrid = new PedidoEnDataGrid(pedido.Empleado.idEmpleadoGenerado, pedido.Id.ToString(), "Domicilio", pedido.Cliente.nombre + " " + pedido.Cliente.apellidoPaterno + " " + pedido.Cliente.apellidoMaterno + ": " + pedido.direccionDestino, pedido.instruccionesEspeciales);
                meserosUC.AgregarOSeleccionar_PedidoEnEspera = pedidoEnDataGrid;
                pedidosPreparados.Add(pedidoEnDataGrid);
                pedidosEnEspera.Remove(pedidosEnEspera.FirstOrDefault(p => p.IdPedido == pedidoEnDataGrid.IdPedido));
            }
            else if (pedido.Estado.estadoPedido.Equals("Enviado"))
            {
                PedidoEnDataGrid pedidoEnDataGrid = new PedidoEnDataGrid(pedido.Empleado.idEmpleadoGenerado, pedido.Id.ToString(), "Domicilio", pedido.Cliente.nombre + " " + pedido.Cliente.apellidoPaterno + " " + pedido.Cliente.apellidoMaterno + ": " + pedido.direccionDestino, pedido.instruccionesEspeciales);
                meserosUC.AgregarOSeleccionar_PedidoEnviado = pedidoEnDataGrid;
                pedidosEnviados.Add(pedidoEnDataGrid);
                pedidosPreparados.Remove(pedidosPreparados.FirstOrDefault(p => p.IdPedido == pedidoEnDataGrid.IdPedido));
            }
            else if (pedido.Estado.estadoPedido.Equals("Entregado"))
            {
                PedidoEnDataGrid pedidoEnDataGrid = new PedidoEnDataGrid(pedido.Empleado.idEmpleadoGenerado, pedido.Id.ToString(), "Domicilio", pedido.Cliente.nombre + " " + pedido.Cliente.apellidoPaterno + " " + pedido.Cliente.apellidoMaterno + ": " + pedido.direccionDestino, pedido.instruccionesEspeciales);
                meserosUC.AgregarOSeleccionar_PedidoEntregado = pedidoEnDataGrid;
                pedidosEntregados.Add(pedidoEnDataGrid);
                pedidosEnviados.Remove(pedidosEnviados.FirstOrDefault(p => p.IdPedido == pedidoEnDataGrid.IdPedido));
            }
            else if (pedido.Estado.estadoPedido.Equals("Cancelado"))
            {
                PedidoEnDataGrid pedidoEnDataGrid = new PedidoEnDataGrid(pedido.Empleado.idEmpleadoGenerado, pedido.Id.ToString(), "Domicilio", pedido.Cliente.nombre + " " + pedido.Cliente.apellidoPaterno + " " + pedido.Cliente.apellidoMaterno + ": " + pedido.direccionDestino, pedido.instruccionesEspeciales);
                meserosUC.AgregarOSeleccionar_PedidoCancelado = pedidoEnDataGrid;
                pedidosCancelados.Add(pedidoEnDataGrid);

                if (pedidosEnEspera.FirstOrDefault(p => p.IdPedido == pedidoEnDataGrid.IdPedido) != null)
                {
                    pedidosEnEspera.Remove(pedidosEnEspera.FirstOrDefault(p => p.IdPedido == pedidoEnDataGrid.IdPedido));
                }
                else if (pedidosEnviados.FirstOrDefault(p => p.IdPedido == pedidoEnDataGrid.IdPedido) != null)
                {
                    pedidosEnviados.Remove(pedidosEnviados.FirstOrDefault(p => p.IdPedido == pedidoEnDataGrid.IdPedido));
                }
            }
        }