public async Task <int> CrearAsync(ListaDetalle lista) { var nombre = lista.Nombre.Trim(); if (await ExisteNombre(nombre)) { throw new InvalidOperationException($"Ya existe una lista con el nombre '{nombre}'."); } var nuevaLista = new Lista { Nombre = nombre }; db.Listas.Add(nuevaLista); var filasAfectadas = await db.SaveChangesAsync(); if (filasAfectadas > 0) { return(nuevaLista.Id); } else { return(-1); } }
public static string CargarDatos() { var datos = ListaDetalle.ToList(); //gridBodega.DataSource = datos; //gridBodega.DataBind(); return(new JavaScriptSerializer().Serialize(datos)); }
public async Task <IActionResult> Post([FromBody] ListaDetalle lista) { if (!ModelState.IsValid) { return(HttpBadRequest(ModelState)); } var listaId = await listas.CrearAsync(lista); var result = await listas.ObtenerUnicaAsync(listaId); return(CreatedAtRoute("GetLista", new { id = listaId }, result)); }
public async Task <IActionResult> Put(int id, [FromBody] ListaDetalle lista) { if (!ModelState.IsValid) { return(HttpBadRequest(ModelState)); } var modificado = await listas.EditarAsync(id, lista); if (modificado) { var result = await listas.ObtenerUnicaAsync(id); return(Ok(result)); } else { return(new HttpStatusCodeResult((int)HttpStatusCode.NotModified)); } }
public async Task <bool> EditarAsync(int id, ListaDetalle lista) { var listaAEditar = await db.Listas.Include(x => x.Valores).SingleOrDefaultAsync(x => x.Id == id); if (listaAEditar == null) { throw new RegistroNoEncontradoException($"No existe la lista {id}"); } var nombre = lista.Nombre.Trim(); if (await ExisteNombreEnOtraLista(id, nombre)) { throw new InvalidOperationException($"Ya existe otra lista con el nombre '{nombre}'."); } listaAEditar.Nombre = nombre; var filasAfectadas = await db.SaveChangesAsync(); return(filasAfectadas > 0); }
public IEnumerable <Lista> GetAllByIdGreaterThan(long id) { var conn = FarmaciaContext.GetConnection(); var listas = new List <Lista>(); try { conn.Open(); var sql = $@"SELECT * FROM appul.aa_filtros WHERE codigo > {id}"; var cmd = conn.CreateCommand(); cmd.CommandText = sql; var reader = cmd.ExecuteReader(); while (reader.Read()) { var rCodigo = Convert.ToInt64(reader["CODIGO"]); var rTituloCliente = Convert.ToString(reader["TITULO_CLIENTE"]); var rNumRegistros = !Convert.IsDBNull(reader["NUM_REGISTROS"]) ? Convert.ToInt64(reader["NUM_REGISTROS"]) : 0L; var lista = new Lista { Id = rCodigo, NumElem = rNumRegistros, Descripcion = rTituloCliente }; listas.Add(lista); sql = $@"SELECT valor_char FROM appul.aa_filtros_det WHERE flt_codigo = {rCodigo} GROUP BY ROLLUP(valor_char)"; cmd = conn.CreateCommand(); cmd.CommandText = sql; var readerDetalle = cmd.ExecuteReader(); var numeroRegistro = 0; while (readerDetalle.Read()) { var rValorChar = Convert.ToString(readerDetalle["valor_char"]); var item = new ListaDetalle { Id = ++numeroRegistro, FarmacoId = rValorChar, ListaId = rCodigo }; lista.Farmacos.Add(item); } readerDetalle.Close(); readerDetalle.Dispose(); listas.Add(lista); } reader.Close(); reader.Dispose(); return(listas); } catch (Exception ex) { throw; } finally { conn.Close(); conn.Dispose(); } }
public async Task <IActionResult> AddTicket([FromBody] ListaDetalle modelo) { var result = await _serviceDB.AddTicket(modelo); return(Ok(result)); }
private async void Calificar() { try { IsRunning = true; IsEnabled = false; if (Fecha == null) { IsRunning = false; IsEnabled = true; await Application.Current.MainPage.DisplayAlert( "Alerta", "El campo fecha es obligatorio", "Aceptar"); return; } if (Fecha == DateTime.MinValue) { IsRunning = false; IsEnabled = true; await Application.Current.MainPage.DisplayAlert( "Alerta", "El campo fecha es obligatorio", "Aceptar"); return; } if (string.IsNullOrEmpty(Compra.ProvCodigo)) { IsRunning = false; IsEnabled = true; await Application.Current.MainPage.DisplayAlert( "Alerta", "El campo proveedor es obligatorio", "Aceptar"); return; } if (Compra.IdProducto == 0) { IsRunning = false; IsEnabled = true; await Application.Current.MainPage.DisplayAlert( "Alerta", "El campo producto es obligatorio", "Aceptar"); return; } if (Cantidad == 0 | Cantidad < 0) { IsRunning = false; IsEnabled = true; await Application.Current.MainPage.DisplayAlert( "Alerta", "El campo cantidad es obligatorio", "Aceptar"); return; } if(ListaDetalle.Where(q => q.EsObligatorio && (q.Minimo > q.Calificacion || q.Calificacion > q.Maximo)).Count() > 0) { IsRunning = false; IsEnabled = true; await Application.Current.MainPage.DisplayAlert( "Alerta", "La calificación ingresada no cumple con uno o varios parámetros obligatorios, no se puede proceder con la compra", "Aceptar"); return; } var Producto = App.Data.GetProducto(Compra.IdProducto); if (Producto == null) { IsRunning = false; IsEnabled = true; await Application.Current.MainPage.DisplayAlert( "Alerta", "El campo producto es obligatorio", "Aceptar"); return; } Compra.Fecha = Fecha; foreach (var q in ListaDetalle) { q.PonderacionFinal = 0; if (q.Minimo <= q.Calificacion && q.Calificacion <= q.Maximo) { if (Math.Round(q.PorcentajeMinimo,2) == 100) { q.PonderacionFinal = q.Ponderacion; } else { double RangoCalificacion = q.Maximo - q.Minimo; double RangoSegunPreferencia = q.ValorOptimo == "MAXIMO" ? q.Calificacion - q.Minimo : q.Maximo - q.Calificacion; double RangoPorcentual = (RangoSegunPreferencia / RangoCalificacion) * 100; double PonderacionPorAsignar = 100 - q.PorcentajeMinimo; double PonderacionRangoPorcentual = PonderacionPorAsignar * (RangoPorcentual / 100); double PorcentajePonderacion = PonderacionRangoPorcentual + q.PorcentajeMinimo; q.PonderacionFinal = q.Ponderacion * (PorcentajePonderacion / 100); } } } double Ponderacion = ListaDetalle.Sum(q => q.PonderacionFinal); double Min = 0; double Max = 0; double PonderacionMin = 0; double PonderacionMax = 0; if (Ponderacion > Producto.CalificacionD) { if (Ponderacion > Producto.CalificacionC) { if (Ponderacion > Producto.CalificacionB) { if (Ponderacion > Producto.CalificacionA) { Min = Producto.PrecioA; Max = Producto.PrecioA; PonderacionMin = Producto.CalificacionA; PonderacionMax = Producto.CalificacionA; } else { Min = Producto.PrecioB; Max = Producto.PrecioA; PonderacionMin = Producto.CalificacionB; PonderacionMax = Producto.CalificacionA; } } else { Min = Producto.PrecioC; Max = Producto.PrecioB; PonderacionMin = Producto.CalificacionC; PonderacionMax = Producto.CalificacionB; } } else { Min = Producto.PrecioD; Max = Producto.PrecioC; PonderacionMin = Producto.CalificacionD; PonderacionMax = Producto.CalificacionC; } } else { Min = 0; Max = 0; } if (Min == 0) { IsRunning = false; IsEnabled = true; await Application.Current.MainPage.DisplayAlert( "Alerta", "La calificación del producto no es aceptable, no se puede proceder con la compra", "Aceptar"); return; } switch(Producto.EscogerPrecioPor) { case "MASALTO": Compra.Precio = Max; break; case "MASBAJO": Compra.Precio = Min; break; case "CERCANO": var RangoMin = Ponderacion - PonderacionMax; var RangoMax = PonderacionMax - Ponderacion; if (RangoMin < RangoMax) Compra.Precio = Min; else Compra.Precio = Max; break; } Compra.Calificacion = Ponderacion; Compra.Cantidad = Cantidad; var lstDetalle = new List<ProductoDetalleModel>(ListaDetalle); var lst = lstDetalle.Select(q => new CompraDetalleModel { Secuencia = (int)q.Secuencia, Descripcion = q.Descripcion, Minimo = q.Minimo, Maximo = q.Maximo, Ponderacion = q.Ponderacion, EsObligatorio = q.EsObligatorio, PorcentajeMinimo = q.PorcentajeMinimo, ValorOptimo = q.ValorOptimo, Valor = q.Calificacion }).ToList(); MainViewModel.GetInstance().CompraConfirmacionPopUp = new CompraConfirmacionPopUpViewModel(Compra, lst); await PopupNavigation.PushAsync(new CompraConfirmacionPopUpPage()); IsRunning = false; IsEnabled = true; } catch (Exception ex) { IsRunning = false; IsEnabled = true; await Application.Current.MainPage.DisplayAlert( "Alerta", ex.Message, "Aceptar"); return; } }