// GET: ControlesExistencias public IActionResult VentasEnTurno(int id) { var turno = _context.Set <Turno>().Include(t => t.Bar).SingleOrDefault(t => t.Id == id); var es = new ExistenciasService(_context); var data = es.ExistenciaVentaDeBarPorTurno(id); ViewBag.Bar = turno.Bar.Nombre; ViewBag.Fecha = turno.FechaInicio; return(View(data)); }
private List <VentasDependientesPorBar> BuscarVentas(List <int> dependientesId, List <int> baresId, DateTime fechaInicio, DateTime fechaFinal) { var existenciaService = new ExistenciasService(_context); var turnosEnPeriodo = _context.Turnos .Include(c => c.Bar) .Where(c => dependientesId.Any(d => d == c.DependienteId) && baresId.Any(b => b == c.BarId) && c.FechaInicio >= fechaInicio && c.FechaFin <= fechaFinal) .ToList(); if (turnosEnPeriodo == null) { turnosEnPeriodo = new List <Turno>(); } var ventas = turnosEnPeriodo.Select(c => new { Fecha = c.FechaInicio, TurnoId = c.Id, BarId = c.BarId, DependienteId = c.DependienteId, Ventas = existenciaService.ExistenciaVentaDeBarPorTurno(c.Id).Sum(e => e.Consumo * (double)e.Precio), }).ToList(); var bares = _context.Set <Bar>().Select(b => new { Id = b.Id, Nombre = b.Nombre }).ToList(); var dependientes = _context.Set <Dependiente>().Select(b => new { Id = b.Id, Nombre = b.NombreCompleto }).ToList(); var ventasDependientesPorBar = ventas.GroupBy(v => v.DependienteId).Select(v => new VentasDependientesPorBar { DependienteId = v.Key, DependienteNombre = dependientes.FirstOrDefault(d => d.Id == v.Key).Nombre, VentasPorBares = v.GroupBy(b => b.BarId).Select(b => new VentasPorBar { BarId = b.Key, BarNombre = bares.FirstOrDefault(s => s.Id == b.Key).Nombre, PromedioVentasPorTurno = b.Sum(p => p.Ventas) / b.Count(), }).ToList(), }).ToList(); return(ventasDependientesPorBar); }
public IActionResult CostosVentasBares(ParametrosVM parametros) { var existenciaService = new ExistenciasService(_context); var colors = GetColor(); var turnosEnPeriodo = _context.Set <Turno>().Where(t => t.FechaInicio >= parametros.FechaInicio && t.FechaInicio <= parametros.FechaFin).ToList(); var index = 0; var labels = turnosEnPeriodo.OrderBy(t => t.FechaInicio).GroupBy(t => t.FechaInicio.Date).Select(t => t.Key.ToShortDateString()).ToList(); var datosCosto = new DatosGraficas() { Labels = labels, }; var datosVentas = new DatosGraficas() { Labels = labels, }; index = 0; foreach (var barId in parametros.Bares) { var bar = _context.Set <Bar>().Find(barId); var ventas = new List <ResumenVentas>(); foreach (var turno in turnosEnPeriodo.Where(t => t.BarId == barId)) { var resumen = existenciaService.ExistenciaVentaDeBarPorTurno(turno.Id).ToList(); ventas.Add(new ResumenVentas { TurnoId = turno.Id, Fecha = turno.FechaInicio.Date, Ventas = resumen.Sum(e => e.Consumo * (double)e.Precio), Costos = resumen.Sum(e => e.Consumo * (double)e.Costo), }); } ventas = ventas.GroupBy(v => v.Fecha).Select(v => new ResumenVentas { Fecha = v.Key, Ventas = v.Sum(r => r.Ventas), Costos = v.Sum(r => r.Costos) }).ToList(); datosVentas.Datasets.Add(new Dataset { Label = bar.Nombre, BackgroundColor = colors[index], BorderColor = colors[index], Fill = false, Data = labels.Select(c => ventas.Any(d => d.Fecha.ToShortDateString() == c) ? ventas.Where(d => d.Fecha.ToShortDateString() == c).Sum(s => s.Ventas) : 0).ToList() }); datosCosto.Datasets.Add(new Dataset { Label = bar.Nombre, BackgroundColor = colors[index], BorderColor = colors[index], Fill = false, Data = labels.Select(c => ventas.Any(d => d.Fecha.ToShortDateString() == c) ? ventas.Where(d => d.Fecha.ToShortDateString() == c).Sum(s => s.Costos) : 0).ToList() }); index++; } ViewBag.Costos = datosCosto; ViewBag.Ventas = datosVentas; ViewBag.Bares = new MultiSelectList(_context.Set <Bar>().ToList(), "Id", "Nombre", parametros.Bares); ViewBag.FormaDePeriodo = new SelectList(Enum.GetValues(typeof(FormaDePeriodo)), parametros.FormaDePeriodo); return(View(parametros)); }