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(); }
private void UpdateCajaCliente(CajaCliente cajaCliente) { cajaCliente.EstadoCajaClienteID = (int)EnumEstadoCajaCliente.Atendido; }