public bool VerificarReservasPendientes(int idProducto, int idDetalleIngreso, int idUsuario)
        {
            try
            {
                var list = (from Res in Acceso.ModeloCesfam.RESERVA.ToList()
                            where Res.PRODUCTO_ID_PRODUCTO == idProducto && Res.ESTADO_RESERVA.Equals("Pendiente")
                            orderby Res.FECHA_RESERVA ascending
                            select new
                {
                    IdReserva = Res.ID_RESERVA,
                    IdProducto = Res.PRODUCTO_ID_PRODUCTO,
                    nombreProducto = Res.PRODUCTO.NOMBRE_PRODUCTO,
                    Cantidad = Res.CANTIDAD_RESERVA,
                    IdReceta = Res.RECETA_ID_RECETA,
                    idPaciente = Res.RECETA.PACIENTE_ID_PACIENTE,
                    nombrePaciente = Res.RECETA.PACIENTE.NOMBRE + " " + Res.RECETA.PACIENTE.APELLIDO_PATERNO,
                    codigoPaciente = Res.RECETA.PACIENTE.CODIGO_LIBRETA,
                    correoPaciente = Res.RECETA.PACIENTE.CORREO,
                    NombreMedico = Res.RECETA.USUARIO.NOMBRE + " " + Res.RECETA.USUARIO.APELLIDO_PATERNO,
                });
                CesfamDatos.DETALLE_INGRESO_STOCK dataDetalle = Acceso.ModeloCesfam.DETALLE_INGRESO_STOCK.First(det => det.ID_DETALLE_INGRESO == idDetalleIngreso);
                foreach (var item in list.ToList())
                {
                    if (item.Cantidad < dataDetalle.STOCK_ACTUAL)
                    {
                        CesfamNegocio.DetalleIngresoStock bssDetalleIngreso = new DetalleIngresoStock();
                        CesfamNegocio.SalidaStock         bssSalida         = new SalidaStock();
                        CesfamNegocio.DetalleSalidaStock  bssDetalleSalida  = new DetalleSalidaStock();
                        CesfamNegocio.DetalleReceta       bssDetReceta      = new DetalleReceta();
                        CesfamNegocio.CorreosAvisos       bssCcorreo        = new CorreosAvisos();
                        Random RndId2        = new Random();
                        int    idSalidaStock = RndId2.Next(1, 9999999);
                        while (bssSalida.Read(idSalidaStock))
                        {
                            idSalidaStock = RndId2.Next(1, 9999999);
                        }
                        bssSalida.EntregaReserva(idSalidaStock, DateTime.Now, idUsuario, 4, (int)item.IdReceta, (int)item.idPaciente, (int)item.IdReserva);
                        this.ActualizarReserva((int)item.IdReserva, "Entregar", DateTime.Now);
                        Random RndId            = new Random();
                        int    idDetSalidaStock = RndId.Next(1, 9999999);
                        while (bssDetalleSalida.Read(idDetSalidaStock))
                        {
                            idDetSalidaStock = RndId.Next(1, 9999999);
                        }
                        bssDetalleSalida.RegistrarDetalle(idDetSalidaStock, (int)item.Cantidad, "Reserva", idSalidaStock, idDetalleIngreso);
                        bssDetalleIngreso.ActualizarStockActual(idDetalleIngreso, (int)item.Cantidad);
                        bssDetReceta.ActualizarEstado(bssDetReceta.idDetalleEntregado((int)item.IdReceta, (int)item.IdProducto), "Entregado");

                        string asunto  = string.Format("Producto reservado disponible");
                        string mensaje = string.Format("Estimada " + item.nombrePaciente + ": \nJunto con saludar, le informo que el producto " + item.nombreProducto + " que fue reservado ya se encuentra disponible para retiro. \n\nProducto: " + item.nombreProducto + "\nCantidad: " + item.Cantidad + " \n\nSaludos Cordiales. \n\nSe despide Cesfam Farmacia.");
                        bssCcorreo.CorreoElectronico(item.correoPaciente, asunto, mensaje);
                    }
                }
                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
 public bool RegistrarSalida(int idSalidaStock, DateTime fecha, int idUsuario, int idTipoSalida, DataTable dtDetalle)
 {
     try
     {
         SALIDA_STOCK salidaStock = new SALIDA_STOCK();
         salidaStock.ID_SALIDA_STOCK            = idSalidaStock;
         salidaStock.FECHA                      = fecha;
         salidaStock.USUARIO_ID_USUARIO         = idUsuario;
         salidaStock.TIPO_SALIDA_ID_TIPO_SALIDA = idTipoSalida;
         salidaStock.ESTADO                     = "ACTIVO";
         foreach (DataRow row in dtDetalle.Rows)
         {
             DetalleSalidaStock  detalle        = new DetalleSalidaStock();
             DetalleIngresoStock detalleIngreso = new DetalleIngresoStock();
             Random RndId           = new Random();
             int    idDetalleSalida = RndId.Next(1, 9999999);
             while (detalle.Read(idDetalleSalida))
             {
                 idDetalleSalida = RndId.Next(1, 9999999);
             }
             int    cantidadRebajada = Convert.ToInt32(row[2].ToString());
             string descripcion      = row[4].ToString();
             int    idSalStock       = idSalidaStock;
             int    idDetalleIngreso = Convert.ToInt32(row[0].ToString());
             detalle.RegistrarDetalle(idDetalleSalida, cantidadRebajada, descripcion, idSalStock, idDetalleIngreso);
             detalleIngreso.ActualizarStockActual(idDetalleIngreso, cantidadRebajada);
         }
         Acceso.ModeloCesfam.SALIDA_STOCK.Add(salidaStock);
         Acceso.ModeloCesfam.SaveChanges();
         return(true);
     }
     catch (Exception)
     {
         return(false);
     }
 }