public ActionResult VerFarmacos(string Medicamento)
 {
     if (Medicamento == null || Medicamento == "")
     {
         return(View(Singleton.Instance.Listaver));
     }
     else
     {
         Hoja <MedicamentoIndice> hojaComparer        = new Hoja <MedicamentoIndice>();
         MedicamentoIndice        medicamentoComparer = new MedicamentoIndice(Medicamento, 1);
         hojaComparer.value = medicamentoComparer;
         bool siExiste = false;
         Singleton.Instance.ArbolBinario.PreOrden(Singleton.Instance.ArbolBinario.raiz, ref hojaComparer, ref siExiste);
         MedicamentoIndice buscador = hojaComparer.value;
         int lineaDeBusqueda        = buscador.linea - 1;
         if (siExiste == false)
         {
             ModelState.AddModelError("Medicamento", "Producto no encontrado");
             //  Medicamento = "";
             return(View(Singleton.Instance.Listaver));
             //no existe el medicamento
         }
         else
         {
             List <Medicamento> ListaBuscar = new List <Medicamento>();
             ListaBuscar.Add(Singleton.Instance.Listaver[lineaDeBusqueda]);
             Medicamento = "";
             // Reabastecer(lineaDeBusqueda);
             return(View(ListaBuscar));
         }
     }
 }
        public ActionResult Hacerpedido(IFormCollection collection)
        {
            try
            {
                var newPedido = new Models.Clientesdata
                {
                    NIT = Convert.ToInt32(collection["NIT"]),
                    Cantidadmedicamento = Convert.ToInt32(collection["Cantidadmedicamento"]),
                    Name              = collection["Name"],
                    Apellido          = collection["Apellido"],
                    NombreMedicamento = collection["NombreMedicamento"],
                    FechaDeCompra     = Convert.ToString(DateTime.Now.ToShortDateString())
                };

                Hoja <MedicamentoIndice> hojaComparer        = new Hoja <MedicamentoIndice>();
                MedicamentoIndice        medicamentoComparer = new MedicamentoIndice(newPedido.NombreMedicamento, 1);
                hojaComparer.value = medicamentoComparer;
                bool siExiste = false;
                Singleton.Instance.ArbolBinario.PreOrden(Singleton.Instance.ArbolBinario.raiz, ref hojaComparer, ref siExiste);
                MedicamentoIndice buscador = hojaComparer.value;
                int    lineaDeBusqueda     = buscador.linea - 1;
                double total_a_pagar       = 0;;
                if (siExiste == false)
                {
                    ModelState.AddModelError("NombreMedicamento", "Producto no encontrado");
                    newPedido.NombreMedicamento = "";
                    return(View(newPedido));
                    //no existe el medicamento
                }
                else
                {
                    if (Singleton.Instance.ClientesList.ObtenerPos(lineaDeBusqueda).Data.Existencia > 0 && newPedido.Cantidadmedicamento <= Singleton.Instance.ClientesList.ObtenerPos(lineaDeBusqueda).Data.Existencia)
                    {
                        Singleton.Instance.clienteslistadata.Add(newPedido);
                        total_a_pagar = Math.Round(((Singleton.Instance.ClientesList.ObtenerPos(lineaDeBusqueda).Data.Precio) * Convert.ToDouble(newPedido.Cantidadmedicamento)), 2);
                        Singleton.Instance.ClientesList.ObtenerPos(lineaDeBusqueda).Data.Existencia = Singleton.Instance.ClientesList.ObtenerPos(lineaDeBusqueda).Data.Existencia - newPedido.Cantidadmedicamento;
                        Singleton.Instance.Listaver[lineaDeBusqueda].Existencia = Singleton.Instance.ClientesList.ObtenerPos(lineaDeBusqueda).Data.Existencia;
                        newPedido.cantidadpagar = total_a_pagar;
                    }
                    else
                    {
                        if (Singleton.Instance.ClientesList.ObtenerPos(lineaDeBusqueda).Data.Existencia > 0)
                        {
                            ModelState.AddModelError("Cantidadmedicamento", "Cantidad superior a la existencia" + "\nSolamente se cuenta con " + Singleton.Instance.ClientesList.ObtenerPos(lineaDeBusqueda).Data.Existencia + " U.");
                            return(View(newPedido));
                        }
                        else
                        {
                            //alerta que no hay medicamento y hay que reabastecer

                            ModelState.AddModelError("Cantidadmedicamento", "Producto agotado");
                            Random rand = new Random();
                            Singleton.Instance.ClientesList.ObtenerPos(lineaDeBusqueda).Data.Existencia = rand.Next(1, 15);
                            Singleton.Instance.Listaver[lineaDeBusqueda].Existencia = Singleton.Instance.ClientesList.ObtenerPos(lineaDeBusqueda).Data.Existencia;
                            return(View(newPedido));
                        }
                    }
                }
                return(RedirectToAction("Factura", new RouteValueDictionary(new { Controller = "Medicina", Action = "Factura", Apellido = newPedido.Apellido, Nombre = newPedido.Name, Nit = newPedido.NIT, NMed = newPedido.NombreMedicamento, CMed = newPedido.Cantidadmedicamento, TPagar = newPedido.cantidadpagar, Fecha = newPedido.FechaDeCompra })));

                //return RedirectToAction(nameof(totalpedidos));
            }
            catch
            {
                return(View());
            }
        }
        public IActionResult Index(IFormFile postedFile)
        {
            if (postedFile != null)
            {
                string path = Path.Combine(this.Environment.WebRootPath, "Uploads");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }

                string fileName = Path.GetFileName(postedFile.FileName);
                string filePath = Path.Combine(path, fileName);
                using (FileStream stream = new FileStream(filePath, FileMode.Create))
                {
                    postedFile.CopyTo(stream);
                }
                string    csvData  = System.IO.File.ReadAllText(filePath);
                DataTable dt       = new DataTable();
                bool      firstRow = true;
                foreach (string row in csvData.Split('\n'))
                {
                    if (!string.IsNullOrEmpty(row))
                    {
                        if (!string.IsNullOrEmpty(row))
                        {
                            if (firstRow)
                            {
                                foreach (string cell in row.Split(','))
                                {
                                    //dt.Columns.Add(cell.Trim());
                                }

                                firstRow = false;
                            }
                            else
                            {
                                //dt.Rows.Add();
                                int      i     = 0;
                                int      cont  = 0;
                                string[] NodoM = new string[6] {
                                    "", "", "", "", "", ""
                                };
                                int    encontrar = 0;
                                string cell2     = "";
                                foreach (string cell in row.Split(','))
                                {
                                    if (cell.Substring(0, 1) != "\"" && encontrar == 0)
                                    {
                                        //dt.Rows[dt.Rows.Count - 1][i] = cell.Trim();
                                        NodoM[cont] = cell.Trim();
                                        cell2       = "";
                                        cont++;
                                        i++;
                                    }
                                    else
                                    {
                                        cell2 = cell2 + cell + ", "; encontrar++;
                                        if (cell.Substring((cell.Length - 1), 1) == "\"")
                                        {
                                            encontrar = 0;
                                            cell2     = cell2.Remove(0, 1);
                                            cell2     = cell2.Remove(cell2.Length - 3, 3);
                                            //dt.Rows[dt.Rows.Count - 1][i] = cell2.Trim();
                                            NodoM[cont] = cell2.Trim();
                                            cont++;
                                            i++;
                                            cell2 = "";
                                        }
                                    }
                                }
                                Medicamento NodoMedicamento = new Medicamento(Convert.ToInt32(NodoM[0]), NodoM[1], NodoM[2], NodoM[3], Convert.ToDouble(NodoM[4].Remove(0, 1)), Convert.ToInt32(NodoM[5]));
                                Singleton.Instance.ClientesList.AgregarFinal(NodoMedicamento);
                                MedicamentoIndice NodoIndice = new MedicamentoIndice(NodoM[1], Convert.ToInt32(NodoM[0]));
                                Singleton.Instance.ClientesListIndice.AgregarFinal(NodoIndice);
                                Singleton.Instance.Listaver.Add(NodoMedicamento);
                            }
                        }
                    }
                }


                //return  View(dt);
                for (int i = 0; i < 1000; i++)
                {
                    Singleton.Instance.ArbolBinario.insertArbol(Singleton.Instance.ClientesListIndice.ObtenerPos(i).Data);
                }
                return(RedirectToAction(nameof(MenuPrincipal)));
            }


            return(View());
        }