Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        public static string CargarDatos()
        {
            var datos = ListaDetalle.ToList();

            //gridBodega.DataSource = datos;
            //gridBodega.DataBind();
            return(new JavaScriptSerializer().Serialize(datos));
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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));
            }
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
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();
            }
        }
Exemplo n.º 7
0
        public async Task <IActionResult> AddTicket([FromBody] ListaDetalle modelo)
        {
            var result = await _serviceDB.AddTicket(modelo);

            return(Ok(result));
        }
Exemplo n.º 8
0
        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;
            }
        }