private void btnAceptar_Click(object sender, RoutedEventArgs e)
        {
            if (txtNombreCliente.Text.Trim() != "")
            {
                var _db = new LineaSupermercadoContext();

                var cajaConMenosClientes = (from caj in _db.Cajas
                                            join ccli in _db.CajaCliente on caj.ID equals ccli.IDCaja into cli
                                            from ccli in cli.DefaultIfEmpty()
                                            select new { IDCaja = caj.ID, NumeroCaja = caj.NumeroCaja, ClientesSinAtender = (ccli == null) ? 0 : cli.Where(x => x.Estado == 0).Count() }

                                            ).GroupBy(x => new { x.IDCaja, x.NumeroCaja, x.ClientesSinAtender }).OrderBy(x => new { x.Key.ClientesSinAtender, x.Key.NumeroCaja }).First();
                //Creo el cliente
                Cliente cliente = new Cliente();
                cliente.Nombre = txtNombreCliente.Text;
                _db.Clientes.Add(cliente);

                //Lo agrego a la caja con menos clientes
                CajaCliente cajaCliente = new CajaCliente();
                cajaCliente.IDCliente = cliente.ID;
                cajaCliente.IDCaja    = cajaConMenosClientes.Key.IDCaja;
                cajaCliente.Orden     = _db.CajaCliente.Where(x => x.IDCaja == cajaConMenosClientes.Key.IDCaja).Select(x => x.Orden).DefaultIfEmpty(0).Max() + 1;
                _db.CajaCliente.Add(cajaCliente);
                _db.SaveChanges();

                DialogResult = true;
            }
            else
            {
                MessageBox.Show("El nombre del cliente no puede estar vacio");
            }
        }
        //Atiendo a un cliente
        private void btnAtenderCliente_Click(object sender, RoutedEventArgs e)
        {
            _db = new LineaSupermercadoContext();
            Caja c    = (Caja)((Button)e.Source).DataContext;
            Caja caja = _db.Cajas.Where(x => x.ID == c.ID).Include("Clientes").First();

            CajaCliente clienteAtendido = caja.Clientes.Where(x => x.Estado == 0).OrderBy(x => x.Orden).First();

            clienteAtendido.Estado           = 1;
            _db.Entry(clienteAtendido).State = EntityState.Modified;
            _db.SaveChanges();

            Cliente cliente = _db.Clientes.Find(clienteAtendido.IDCliente);

            MessageBox.Show("Atendiendo al cliente: " + cliente.Nombre);

            //Ordeno nuevamente el conjunto de clientes
            OrdernarCaja(caja.ID);

            //Actualizo cajas
            RefreshDatagrid();
        }
예제 #3
0
 private void UpdateCajaCliente(CajaCliente cajaCliente)
 {
     cajaCliente.EstadoCajaClienteID = (int)EnumEstadoCajaCliente.Atendido;
 }