Snippets Collections
selector{
    background: #fff;
    --background-speed: 0.5s;
}
selector .elementor-background-slideshow{
    display: none;
}
selector .reboot-slider-background,
selector .reboot-slider-background img{
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    transition: all 1s ease-in-out;
}
selector .reboot-slider-background img{
    object-fit: cover;
    opacity: 0;
    transform: scale(1.1);
}
selector .reboot-slider-background img.prev,
selector .reboot-slider-background img.currentBackward,
selector .reboot-slider-background img.currentForward{
    opacity: 1;
    transform: scale(1.1);
}

selector .reboot-slider-background img.currentBackward,
selector .reboot-slider-background img.currentForward{
    z-index: 1;
    opacity: 1;
    animation: bgNext var(--background-speed) linear;
    transition: all 1s ease-in-out;
    transform: scale(1);
}

selector:before{
    z-index: 2;
}
selector > .elementor-element{
    z-index: 3;
}

selector .reboot-bar,
selector .reboot-slider-left,
selector .reboot-slider-right{
    opacity: 0;
    transition: all 0.8s ease-in-out;
}
selector.loaded .reboot-bar,
selector.loaded .reboot-slider-left,
selector.loaded .reboot-slider-right{
    opacity: 1;
}
/*selector .ds-slider-left a:focus,*/
/*selector .ds-slider-right a:focus{*/
/*    outline: none !important;*/
/*}*/

@keyframes bgNext {
  0%   {opacity: 0; transform: scale(1.1);}
  100%   {opacity: 1; transform: scale(1);}
}

@media (min-width: 768px){
selector .reboot-bar,
selector .reboot-slider-left,
selector .reboot-slider-right{
    position: relative;
}
}

@media (max-width: 1380px) and (min-width: 768px){
selector{
    padding-left: 4%;
    padding-right: 4%;
}
}

@media (max-width: 767px){
selector .reboot-slider-left{
    left: calc(50% - 300px/2) !important;
}
selector .reboot-slider-right{
    right: calc(50% - 300px/2) !important;
}
}
reboot-slider

reboot-bar

reboot-changing-widget

reboot-changing-widget

reboot-changing-widget

reboot-side-slider

reboot-slider-left

reboot-slider-right
import mongoose, { Schema, Document, Model } from "mongoose";
import Joi, { ObjectSchema } from "joi";

interface IBook extends Document {
  id: number;
  title: string;
  author: string;
  year: number;
  genre: string;
}

const bookSchema: Schema<IBook> = new Schema({
  id: { type: Number, required: true, unique: true },
  title: { type: String, required: true },
  author: { type: String, required: true },
  year: { type: Number, required: true, min: 1800, max: 2025 },
  genre: { type: String, required: true, minlength: 2 },
});

const Books: Model<IBook> = mongoose.model<IBook>("MyBooks", bookSchema);

const bookDataValidator: ObjectSchema = Joi.object({
  id: Joi.number().min(1).required(),
  title: Joi.string().required(),
  author: Joi.string().required(),
  year: Joi.number().min(1800).max(2025).required(),
  genre: Joi.string().min(2).required(),
});

async function fetchBooks(): Promise<IBook[] | Error> {
  try {
    return await Books.find({});
  } catch (err) {
    return err as Error;
  }
}

const queryPageSchema: ObjectSchema = Joi.object({
  page: Joi.number().integer().min(1).required(),
});

//pagination fetching
async function fetchBooksByPage(page: {page:number}): Promise<{ status: number; data: IBook[] | string }> {
  try {
    const totalBooks = await Books.estimatedDocumentCount();
    console.log(page);
    if (totalBooks < (page.page - 1) * 2) {
      return { status: 404, data: "Sorry, no page found!" };
    } else if (totalBooks === 0) {
      return { status: 404, data: "Sorry, no book is there!" };
    }
    const booksData = await Books.find({}).skip((page.page - 1) * 2).limit(2);
    return { status: 200, data: booksData };
  } catch (err) {
    return { status: 500, data: (err as Error).message };
  }
}

async function addBook(title: string, author: string, year: number, genre: string): Promise<IBook | string | Error> {
  try {
    const lastDocument = await Books.find().sort({ id: -1 }).limit(1);
    const newBookId = lastDocument[0]?.id + 1 || 1;
    
    const { error, value } = bookDataValidator.validate({
      id: newBookId,
      title,
      author,
      year,
      genre,
    });
    
    if (error) return "Incorrect Data!";
    
    const newBook = new Books(value);
    return await newBook.save();
  } catch (err) {
    return err as Error;
  }
}

async function getBook(id: number): Promise<IBook | string | null | any> {
  try {
    const book = await Books.findOne({ id });
    return book || "No Books by this ID";
  } catch (err: any) {
    return err as Error;
  }
}

async function editBook(id: number, bodyValue: Partial<IBook>): Promise<IBook | string | null | any> {
  try {
    const updatedBook = await Books.findOneAndUpdate({ id }, { $set: bodyValue }, { new: true });
    return updatedBook || "No Books found to update";
  } catch (err: any) {
    return err as Error;
  }
}

async function deleteBook(id: number): Promise<IBook | null | Error> {
  try {
    return await Books.findOneAndDelete({ id });
  } catch (err) {
    return err as Error;
  }
}

const booksCurd = { fetchBooks, fetchBooksByPage, addBook, getBook, editBook, deleteBook, queryPageSchema }
export default booksCurd;
import mongoose from "mongoose";
import { Request, Response, NextFunction } from "express";

const connectDB = async (): Promise<void> => {
    try {
        await mongoose.connect("mongodb://localhost:27017/bookDB", {
            useNewUrlParser: true,
            useUnifiedTopology: true,
        } as mongoose.ConnectOptions);
        console.log("MongoDB connected!");
    } catch (err) {
        console.error("Error connecting to MongoDB:", err);
    }
};

const authenticationMiddleware = (req: Request, res: Response, next: NextFunction): void => {
    const authHeader = req.headers.authorization;
    if (authHeader) {
        const token = 'Bearer yesauth1234';
        if (token === authHeader) {
            next();
        } else {
            res.status(403).send("Invalid token");
        }
    } else {
        res.status(401).send("Authentication required");
    }
};

export { connectDB, authenticationMiddleware };
https://medium.com/the-andela-way/what-exactly-is-cors-and-how-to-handle-it-fc2e52e89a0

import express, { Request, Response, Application } from 'express';
import { connectDB, authenticationMiddleware } from '../mongoDB/bookLib_db';
import booksCurd from '../mongoDB/bookModel';

const app: Application = express();
const port: number = 6933;

app.use(express.json());
app.use(authenticationMiddleware);

// Connect to MongoDB
async function connectMongo(): Promise<void> {
    await connectDB();
}
connectMongo();

//Fetch all books or by page --- two books per page
app.get('/', async (req: Request, res: Response): Promise<any> => {
    try {
        if (req.query?.page) {
            const page = parseInt(req.query.page as string, 10);
            const { error, value } = booksCurd.queryPageSchema.validate({ page });
            
            if (error) {
                return res.status(400).json({ error: error.details.map(detail => detail.message) });
            }
            
            const booksDataResultPerPage = await booksCurd.fetchBooksByPage(value);
            return res.status(booksDataResultPerPage.status).json(booksDataResultPerPage.data);
        }
        
        const booksDataResult = await booksCurd.fetchBooks();
        return res.status(200).json(booksDataResult);
    } catch (error) {
        return res.status(500).json({ message: 'Internal Server Error', error });
    }
});

//Add a new book
app.post('/books', async (req: Request, res: Response): Promise<any> => {
    try {
        const { title, author, year, genre } = req.body;
        const savedBook = await booksCurd.addBook(title, author, year, genre);
        return res.status(201).json(savedBook);
    } catch (error) {
        return res.status(500).json({ message: 'Failed to add book', error });
    }
});

//Get a book by ID
app.get('/books/:id', async (req: any, res: Response): Promise<any> => {
    try {
        const findBook = await booksCurd.getBook(req.params.id);
        return res.json(findBook);
    } catch (error) {
        return res.status(500).json({ message: 'Failed to fetch book', error });
    }
});

//Update a book by ID
app.put('/books/:id', async (req: any, res: Response): Promise<any> => {
    try {
        const updatedBook = await booksCurd.editBook(req.params.id, req.body);
        return res.json(updatedBook);
    } catch (error) {
        return res.status(500).json({ message: 'Failed to update book', error });
    }
});

//Delete a book by ID
app.delete('/books/:id', async (req: any, res: Response): Promise<any> => {
    try {
        const deletedBook = await booksCurd.deleteBook(req.params.id);
        
        if (!deletedBook || Object.keys(deletedBook).length === 0) {
            return res.status(404).json({ message: 'No book found for deletion' });
        }
        
        return res.status(200).json(deletedBook);
    } catch (error) {
        return res.status(500).json({ message: 'Something went wrong, Internal Server Error!', error });
    }
});

app.listen(port, () => {
    console.log(`Server is running on port ${port}`);
});
const mongoose = require("mongoose");

mongoose.connect("mongodb://127.0.0.1:27017/feb");
const prodschema = new mongoose.Schema({ name: String, price: Number });

const mongooseSave = async () => {
	const prodmodel = mongoose.model("prodgooses", prodschema);
	let ent = new prodmodel({ name: "vinear wallet 1", price: 8000 });
	let result = await ent.save();
	console.log(result);
};
// mongooseSave();

const mongooseUpdate = async () => {
    const prodmodel = mongoose.model('prodgooses', prodschema);
    let ent = await prodmodel.updateOne({name: "vinear wallet"}, {$set:{price :9500}});
}
// mongooseUpdate();

const mongoosedel = async () => {
    const prodmodel = mongoose.model('prodgooses', prodschema);
    let ent = await prodmodel.deleteOne({name: 'vinear wallet 1'});
}
// mongoosedel();

const mongoosefind = async () => {
    const prodmodel = mongoose.model('prodgooses', prodschema);
    let ent = await prodmodel.find();
    console.log(ent);
}
mongoosefind();
import axios, { AxiosRequestConfig } from 'axios';
import Axios from 'axios';

import { setTokens } from 'screens/SignUp/reducer/signup.reducer';
import { persisterStore, store } from 'services/redux/store';

import { TypeStore } from './redux/store';
import { isTokenExpired } from './utils';
import { CONFIG } from 'constants/config';
// import { useLogout } from 'hooks/useLogout';
// import { NotificationBox } from 'components/notificationBox';

export const injectStore = (_store: TypeStore) => {
  let store: TypeStore;
  store = _store;
};

let isRefreshing = false;
let refreshSubscribers: any[] = [];

const processQueue = (error: null | string, token: string | null = null) => {
  refreshSubscribers.forEach((prom) => {
    if (error) {
      prom.reject(error);
    } else {
      prom.resolve(token);
    }
  });

  refreshSubscribers = [];
};
export interface ICapiumAuthPayload {
  email: string;
  password: string;
}
const capiumBaseURL = 'https://dev-identity.capium.co.uk/api/Auth/AuthenticateUser';
const googleUserInfoURL = 'https://www.googleapis.com/oauth2/v3/userinfo';
const refreshTokensURL = 'auth/refresh-tokens';

const fetchTokens = (refreshToken: string) => {
  return axios.post(
    `${CONFIG.apiUrl}${refreshTokensURL}`,
    {},
    {
      headers: {
        Authorization: `Bearer ${refreshToken}`,
      },
    }
  );
};

const instance = axios.create({
  baseURL: CONFIG.apiUrl,
  timeout: 60000,
});

const logOut = () => {
  // Clear user-related data from localStorage/sessionStorage
  localStorage.removeItem('authToken');
  localStorage.removeItem('refreshToken');
  persisterStore.purge(); // Purge persisted Redux store if needed

  // Optionally dispatch a Redux action to clear user state
  store.dispatch({ type: 'LOGOUT' });

  // Redirect to login page or any other route
  window.location.href = '/login';
};
export const setInterseptors = () => {
  instance.interceptors.request.use(async (config: AxiosRequestConfig<any>) => {
    const token = store.getState().user.token;
    const refreshToken = store.getState().user.refreshToken;

    if (!token) {
      return config;
    }
    if (config.headers!.Authorization) {
      return config;
    }

    if (isTokenExpired(token)) {
      if (isRefreshing) {
        return new Promise(function (resolve, reject) {
          refreshSubscribers.push({ resolve, reject });
          return config;
        })
          .then((token) => {
            config.headers &&
              (config.headers['Authorization'] = `Bearer ${token}`);
            return {
              ...config,
              headers: { Authorization: `Bearer ${token}` },
            };
          })
          .catch((error) => {
            return Promise.reject(error);
          });
      }
      isRefreshing = true;

      try {
        const { data } = await fetchTokens(refreshToken);
        store.dispatch(
          setTokens({
            accessToken: data.access_token,
            refreshToken: data.refresh_token,
          })
        );
        processQueue(null, data.access_token);
        isRefreshing = false;

        return {
          ...config,
          headers: { Authorization: `Bearer ${data.access_token}` },
        };
      } catch (err: any) {
        store.dispatch({ type: 'LOGOUT' });
        processQueue(err, null);
        isRefreshing = false;
        return config;
      }
    } else {
      return {
        ...config,
        headers: {
          Authorization: `Bearer ${token}`,
        },
      };
    }
  });
  return instance;
};


const token = store.getState().user.token;
export const apiServices = {
  postData: async (requestUrl: string, payload: any) => {
    const token = store.getState().user.token;
    console.warn('()()post-post', token, payload);

    // return await instance.post(`${requestUrl}`, payload, {
    //   headers: { Authorization: `Bearer ${token}` },
    // });
    try {
      const response = await instance.post(`${requestUrl}`, payload, {
        headers: { Authorization: `Bearer ${token}` },
      });
        if (response.data.message === 'TOKEN IS EXPIRED') {
          logOut();        
        } //else if (response.status !== 200) {
          // callNotification(response);
          // setNotification({yesShow: true, message: 'Something went wrong. Try after sometimes!', type: 'warning'});
          // dispatch(setNotification({yesShow: true, message: `${response.status} | Something went wrong. Try after sometimes!`, type: 'warning', position:'75'}))
        // } else if (response.status > 499 && response.status < 599) {
          // setNotification({yesShow: true, message: 'Technical Error. Sorry for Inconvience!', type: 'alert'});
          // dispatch(setNotification({yesShow: true, message: `${response.status} | Technical Error. Sorry for Inconvience!`, type: 'alert', position:'75'}))
        // }
      return response; 
    } catch (error: any) {
			// <NotificationBox titleText={notification.message || ''} closePopupFc={notificationRevoked} isShowPopup={notification.yesShow} type={notification.type}/>
      console.error('Error during POST request:', error);
      return error.response; // Return the successful response
      // throw error;
    }
  },
  fetchData: async (requestUrl: string, params?: {}) => {
    const token = store.getState().user.token;
    console.warn('()()fetch-get', token);
    // return instance.get(`${requestUrl}`, { params , headers: { Authorization: `Bearer ${token}` } });
    try {
      // Perform the GET request
      const response = await instance.get(`${requestUrl}`, {
        params,
        headers: { Authorization: `Bearer ${token}` },
      });
      
      if (response.data.message === 'TOKEN IS EXPIRED') {
      logOut(); // Call logOut when the token has expired
    }

    return response; // Return the successful response
  } catch (error: any) {
    console.error('Error during GET request:', error);

    // If error response indicates token expiry, log out
    if (error.response?.data?.message === 'TOKEN IS EXPIRED') {
      logOut(); // Log out if the token is expired
    }

    throw error; // Propagate the error for further handling
  }
  
  },
  changeData: async (requestUrl: string, payload: any) => {
    const token = store.getState().user.token;
    console.warn('()()change-put', token);
    try {
      // Perform the PUT request
      const response = await instance.put(`${requestUrl}`, payload, {
        headers: { Authorization: `Bearer ${token}` },
      });
  
      // Check if the token has expired
      if (response.data.message === 'TOKEN IS EXPIRED') {
        logOut(); // Call logOut when the token has expired
      }
  
      return response; // Return the successful response
    } catch (error: any) {
      console.error('Error during PUT request:', error);
  
      // If error response indicates token expiry, log out
      if (error.response?.data?.message === 'TOKEN IS EXPIRED') {
        logOut(); // Log out if the token is expired
      }
  
      throw error; // Propagate the error for further handling
    }
    // return instance.put(`${requestUrl}`, payload, {
    //   headers: { Authorization: `Bearer ${token}` },
    // });
  },
  deleteData: async (requestUrl: string, params?: {}) => {
    const token = store.getState().user.token;
    console.warn('()()delete-delete', token);
    try {
      // Perform the DELETE request
      const response = await instance.delete(`${requestUrl}`, {
        params,
        headers: { Authorization: `Bearer ${token}` },
      });
  
      // Check if the token has expired
      if (response.data.message === 'TOKEN IS EXPIRED') {
        logOut(); // Call logOut when the token has expired
      }
  
      return response; // Return the successful response
    } catch (error: any) {
      console.error('Error during DELETE request:', error);
  
      // If error response indicates token expiry, log out
      if (error.response?.data?.message === 'TOKEN IS EXPIRED') {
        logOut(); // Log out if the token is expired
      }
  
      throw error; // Propagate the error for further handling
    }
    // return instance.delete(`${requestUrl}`, { params, headers: { Authorization: `Bearer ${token}` } });
  },
  deleteDataPayload: async (requestUrl: string, payload?: any) => {
    const token = store.getState().user.token;
    console.warn('()()delete-delete', token);
    try {
      // Perform the DELETE request
      const response = await Axios.delete(requestUrl, {
          headers: {
            Authorization: `Bearer ${token}`,
          },
          data: payload,
        });
  
      // Check if the token has expired
      if (response.data.message === 'TOKEN IS EXPIRED') {
        logOut(); // Call logOut when the token has expired
      }
  
      return response; // Return the successful response
    } catch (error: any) {
      console.error('Error during DELETE request:', error);
      // If error response indicates token expiry, log out
      if (error.response?.data?.message === 'TOKEN IS EXPIRED') {
        logOut(); // Log out if the token is expired
      }
      throw error; // Propagate the error for further handling
    }
    // return instance.delete(`${requestUrl}`, { params, headers: { Authorization: `Bearer ${token}` } });
  },
  updateData: async (requestUrl: string, payload: any) => {
    const token = store.getState().user.token;
    console.warn('()()update-patch', token);
    try {
      // Perform the PATCH request
      const response = await instance.patch(`${requestUrl}`, payload, {
        headers: { Authorization: `Bearer ${token}` },
      });
      // Check if the token has expired
      if (response.data.message === 'TOKEN IS EXPIRED') {
        logOut(); // Call logOut when the token has expired
      }
  
      return response; // Return the successful response
    } catch (error: any) {
      console.error('Error during PATCH request:', error);
  
      // If error response indicates token expiry, log out
      if (error.response?.data?.message === 'TOKEN IS EXPIRED') {
        logOut(); // Log out if the token is expired
      }
      throw error; // Propagate the error for further handling
    }
    // return instance.patch(`${requestUrl}`, payload, {
    //   headers: { Authorization: `Bearer ${token}` },
    // });
  },
  capiumFetchData: async (payload: ICapiumAuthPayload) => {
    const token = store.getState().user.token;
    console.warn('()()capium-post', token);
    const data = axios.post(capiumBaseURL, payload, {
      headers: { Authorization: `Bearer ${token}` },
    });
    return data;
  },
  getGoogleUserInfo: async (token: string) => {
    console.warn('()()google-get', token);
    const data = await axios.get(googleUserInfoURL, {
      headers: { Authorization: `Bearer ${token}` },
    });
    return data;
  },
};
import { persistStore, persistReducer } from 'redux-persist';
import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit';
import { rootReducer } from './reducer';

import storage from 'redux-persist/lib/storage';
import storageSession from 'redux-persist/lib/storage/session';

const store = configureStore({
  reducer: rootReducer,
  middleware: getDefaultMiddleware({
    serializableCheck: false,
  }),
  // devTools: process.env.NODE_ENV !== 'production',
  devTools: false,
});

const persistConfig = {
  key: 'root',
  storage,
}

const persistedReducer = persistReducer(persistConfig, rootReducer);

const persisterStore = persistStore(store);
export { persisterStore, store };
export type RootState = ReturnType<typeof store.getState>;
export type TypeStore = typeof store;
free brawl stars gift card

free brawl stars gift card

free brawl stars gift card

free brawl stars gift card
https://github.com/leaknetworks/Claim-Today-brawl-stars-gift-card-in-2025-EASY-and-Legit
https://medium.com/@extrememiniboats/without-charge-brawl-stars-gift-card-claim-in-2025-updated-6d99f0ec5b12
https://medium.com/@dibratapon/gratis-brawl-stars-free-gems-in-2025-updated-and-easy-claim-efb6ed6770c8
https://github.com/leakedtoolspro/-Gratis-brawl-stars-gift-card-claim-today-in-2025
https://github.com/leaknetworks/Claim-Today-brawl-stars-gift-card-in-2025-EASY-and-Legit
https://medium.com/@extrememiniboats/without-charge-brawl-stars-gift-card-claim-in-2025-updated-6d99f0ec5b12
https://medium.com/@dibratapon/gratis-brawl-stars-free-gems-in-2025-updated-and-easy-claim-efb6ed6770c8
https://github.com/leakedtoolspro/-Gratis-brawl-stars-gift-card-claim-today-in-2025
https://github.com/leaknetworks/Claim-Today-brawl-stars-gift-card-in-2025-EASY-and-Legit
https://medium.com/@extrememiniboats/without-charge-brawl-stars-gift-card-claim-in-2025-updated-6d99f0ec5b12
https://medium.com/@dibratapon/gratis-brawl-stars-free-gems-in-2025-updated-and-easy-claim-efb6ed6770c8
https://github.com/leakedtoolspro/-Gratis-brawl-stars-gift-card-claim-today-in-2025
https://github.com/leaknetworks/Claim-Today-brawl-stars-gift-card-in-2025-EASY-and-Legit
https://medium.com/@extrememiniboats/without-charge-brawl-stars-gift-card-claim-in-2025-updated-6d99f0ec5b12
https://medium.com/@dibratapon/gratis-brawl-stars-free-gems-in-2025-updated-and-easy-claim-efb6ed6770c8
https://github.com/leakedtoolspro/-Gratis-brawl-stars-gift-card-claim-today-in-2025
https://github.com/leaknetworks/Claim-Today-brawl-stars-gift-card-in-2025-EASY-and-Legit
https://medium.com/@extrememiniboats/without-charge-brawl-stars-gift-card-claim-in-2025-updated-6d99f0ec5b12
https://medium.com/@dibratapon/gratis-brawl-stars-free-gems-in-2025-updated-and-easy-claim-efb6ed6770c8
https://github.com/leakedtoolspro/-Gratis-brawl-stars-gift-card-claim-today-in-2025
https://github.com/leaknetworks/Claim-Today-brawl-stars-gift-card-in-2025-EASY-and-Legit
https://medium.com/@extrememiniboats/without-charge-brawl-stars-gift-card-claim-in-2025-updated-6d99f0ec5b12
https://medium.com/@dibratapon/gratis-brawl-stars-free-gems-in-2025-updated-and-easy-claim-efb6ed6770c8
https://github.com/leakedtoolspro/-Gratis-brawl-stars-gift-card-claim-today-in-2025
https://github.com/leaknetworks/Claim-Today-brawl-stars-gift-card-in-2025-EASY-and-Legit
https://medium.com/@extrememiniboats/without-charge-brawl-stars-gift-card-claim-in-2025-updated-6d99f0ec5b12
https://medium.com/@dibratapon/gratis-brawl-stars-free-gems-in-2025-updated-and-easy-claim-efb6ed6770c8
https://github.com/leakedtoolspro/-Gratis-brawl-stars-gift-card-claim-today-in-2025
https://github.com/leaknetworks/Claim-Today-brawl-stars-gift-card-in-2025-EASY-and-Legit
https://medium.com/@extrememiniboats/without-charge-brawl-stars-gift-card-claim-in-2025-updated-6d99f0ec5b12
https://medium.com/@dibratapon/gratis-brawl-stars-free-gems-in-2025-updated-and-easy-claim-efb6ed6770c8
https://github.com/leakedtoolspro/-Gratis-brawl-stars-gift-card-claim-today-in-2025
https://github.com/leaknetworks/Claim-Today-brawl-stars-gift-card-in-2025-EASY-and-Legit
https://medium.com/@extrememiniboats/without-charge-brawl-stars-gift-card-claim-in-2025-updated-6d99f0ec5b12
https://medium.com/@dibratapon/gratis-brawl-stars-free-gems-in-2025-updated-and-easy-claim-efb6ed6770c8
https://github.com/leakedtoolspro/-Gratis-brawl-stars-gift-card-claim-today-in-2025
https://github.com/leaknetworks/Claim-Today-brawl-stars-gift-card-in-2025-EASY-and-Legit
https://medium.com/@extrememiniboats/without-charge-brawl-stars-gift-card-claim-in-2025-updated-6d99f0ec5b12
https://medium.com/@dibratapon/gratis-brawl-stars-free-gems-in-2025-updated-and-easy-claim-efb6ed6770c8
https://github.com/leakedtoolspro/-Gratis-brawl-stars-gift-card-claim-today-in-2025
https://github.com/leaknetworks/Claim-Today-brawl-stars-gift-card-in-2025-EASY-and-Legit
https://medium.com/@extrememiniboats/without-charge-brawl-stars-gift-card-claim-in-2025-updated-6d99f0ec5b12
https://medium.com/@dibratapon/gratis-brawl-stars-free-gems-in-2025-updated-and-easy-claim-efb6ed6770c8
https://github.com/leakedtoolspro/-Gratis-brawl-stars-gift-card-claim-today-in-2025
https://github.com/leaknetworks/Claim-Today-brawl-stars-gift-card-in-2025-EASY-and-Legit
https://medium.com/@extrememiniboats/without-charge-brawl-stars-gift-card-claim-in-2025-updated-6d99f0ec5b12
https://medium.com/@dibratapon/gratis-brawl-stars-free-gems-in-2025-updated-and-easy-claim-efb6ed6770c8
https://github.com/leakedtoolspro/-Gratis-brawl-stars-gift-card-claim-today-in-2025
https://github.com/leaknetworks/Claim-Today-brawl-stars-gift-card-in-2025-EASY-and-Legit
https://medium.com/@extrememiniboats/without-charge-brawl-stars-gift-card-claim-in-2025-updated-6d99f0ec5b12
https://medium.com/@dibratapon/gratis-brawl-stars-free-gems-in-2025-updated-and-easy-claim-efb6ed6770c8
https://github.com/leakedtoolspro/-Gratis-brawl-stars-gift-card-claim-today-in-2025
https://github.com/leaknetworks/Claim-Today-brawl-stars-gift-card-in-2025-EASY-and-Legit
https://medium.com/@extrememiniboats/without-charge-brawl-stars-gift-card-claim-in-2025-updated-6d99f0ec5b12
https://medium.com/@dibratapon/gratis-brawl-stars-free-gems-in-2025-updated-and-easy-claim-efb6ed6770c8
https://github.com/leakedtoolspro/-Gratis-brawl-stars-gift-card-claim-today-in-2025
https://github.com/leaknetworks/Claim-Today-brawl-stars-gift-card-in-2025-EASY-and-Legit
https://medium.com/@extrememiniboats/without-charge-brawl-stars-gift-card-claim-in-2025-updated-6d99f0ec5b12
https://medium.com/@dibratapon/gratis-brawl-stars-free-gems-in-2025-updated-and-easy-claim-efb6ed6770c8
https://github.com/leakedtoolspro/-Gratis-brawl-stars-gift-card-claim-today-in-2025
https://github.com/leaknetworks/Claim-Today-brawl-stars-gift-card-in-2025-EASY-and-Legit
https://medium.com/@extrememiniboats/without-charge-brawl-stars-gift-card-claim-in-2025-updated-6d99f0ec5b12
https://medium.com/@dibratapon/gratis-brawl-stars-free-gems-in-2025-updated-and-easy-claim-efb6ed6770c8
https://github.com/leakedtoolspro/-Gratis-brawl-stars-gift-card-claim-today-in-2025
https://github.com/leaknetworks/Claim-Today-brawl-stars-gift-card-in-2025-EASY-and-Legit
https://medium.com/@extrememiniboats/without-charge-brawl-stars-gift-card-claim-in-2025-updated-6d99f0ec5b12
https://medium.com/@dibratapon/gratis-brawl-stars-free-gems-in-2025-updated-and-easy-claim-efb6ed6770c8
https://github.com/leakedtoolspro/-Gratis-brawl-stars-gift-card-claim-today-in-2025
https://github.com/leaknetworks/Claim-Today-brawl-stars-gift-card-in-2025-EASY-and-Legit
https://medium.com/@extrememiniboats/without-charge-brawl-stars-gift-card-claim-in-2025-updated-6d99f0ec5b12
https://medium.com/@dibratapon/gratis-brawl-stars-free-gems-in-2025-updated-and-easy-claim-efb6ed6770c8
https://github.com/leakedtoolspro/-Gratis-brawl-stars-gift-card-claim-today-in-2025
https://github.com/leaknetworks/Claim-Today-brawl-stars-gift-card-in-2025-EASY-and-Legit
https://medium.com/@extrememiniboats/without-charge-brawl-stars-gift-card-claim-in-2025-updated-6d99f0ec5b12
https://medium.com/@dibratapon/gratis-brawl-stars-free-gems-in-2025-updated-and-easy-claim-efb6ed6770c8
https://github.com/leakedtoolspro/-Gratis-brawl-stars-gift-card-claim-today-in-2025
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
 name: prometheuses.monitoring.coreos.com
 annotations:
   argocd.argoproj.io/sync-options: ServerSideApply=true
import pandas as pd

# Cargar archivo
input_file = 'input.csv'
output_file = 'filtered_output.csv'

# Leer CSV
df = pd.read_csv(input_file)

# Paso 1: Identificar el monto del Tip por orden
# Creamos un nuevo DataFrame que contiene el monto del Tip por cada orden
tip_montos = df[df['item'].str.contains('Tip', case=False, na=False)][['orden', 'monto']]
tip_montos = tip_montos.rename(columns={'monto': 'monto_tip'})

# Paso 2: Unir esa información al DataFrame original (por la columna 'orden')
df = df.merge(tip_montos, on='orden', how='left')

# Paso 3: Aplicar el filtro original (conservar órdenes repetidas que tengan 'Tip')
filtered_df = df.groupby('orden').filter(lambda x: (x['item'].str.contains('Tip', case=False, na=False).any()))

# Paso 4: Eliminar filas sin 'metodo'
filtered_df = filtered_df[filtered_df['metodo'].notna()]

# Paso 5: Eliminar columna 'item'
filtered_df = filtered_df.drop(columns=['item'])

# Guardar resultado
filtered_df.to_csv(output_file, index=False)
print(f'Filtrado completado. Archivo guardado como {output_file}')
from dotenv import load_dotenv
from os import getenv
import vt

load_dotenv()

"""
requirements :
pip install python-dotenv==1.1.0
pip install vt_py==0.20.0

1 - Create account in https://www.virustotal.com/
2 - Copy your API Key and but it into .env file or put it into your script

"""
apikey = getenv('api_key')

url = input('URL:')

stats_meaning = {
    'malicious': 'No engine explicitly marked this URL as malicious (i.e., known for phishing, malware, scams, etc.). ✅',
    'suspicious': 'No engine thought the URL looked suspicious or sketchy based on patterns or heuristics. ✅',
    'harmless': 'engines scanned the URL and found it to be safe. ✅',
    'undetected': 'engines scanned it but didn’t detect anything, which often means they didn’t have an opinion one way or the other — like saying “no result.” 🟡',
    'timeout': 'No engines timed out while analyzing the URL. ✅',
}

with vt.Client(apikey=apikey) as client:
    analysis = client.scan_url(url=url, wait_for_completion=True)
    stats = analysis.stats
    for k in stats:
        print(f"{k} : {str(stats[k])} {stats_meaning[k].capitalize()}")


Windowstaste+R, Eintippen von resmon
Reiter CPU 
"Zugeordnete Handles"
"Handles durchsuchen"
Namen (oder einen Namensteil) des Objekts (Datei oder Ordner) eintippen der blockiert wird
mindestens eine Zeile mit dem Zugehörigen Prozess erscheint
Prozess beenden
<?php
if($_POST['password'] != 'secretpassword'){
    echo "Access Denied.";
    exit;
}
mysqlx_query("UPDATE users SET total=total+".$_POST['payout']." WHERE tracking_id=".$_POST['tracking_id'],$db);
?>
voz.vn##.js-inlineModContainer:has(.message-name,.bbCodeBlock-title,.message-attribution:has-text(tengtengvn))
voz.vn##.js-inlineModContainer:has(.message-name,.bbCodeBlock-title,.message-attribution:has-text(tengtengvn))
voz.vn##.js-inlineModContainer:has(.message-name,.bbCodeBlock-title,.message-attribution:has-text(tengtengvn))
import { useEffect, useState } from "react"
import { toast } from "react-toastify"
import { useNavigate } from "react-router-dom"
import { useSelector } from "react-redux"
import axios from "axios"
import {
  CheckCircle,
  XCircle,
  Home,
  MapPin,
  Package,
  PenToolIcon as Tool,
  FileText,
  Clock,
  Calendar,
  Truck,
  DollarSign,
  FileUp,
  CheckCheck,
  Award
} from "lucide-react"
import Navbar from "../components/Navbar"
import { ConfirmationModal } from "../modals/ConfirmationModal"
import API from "../API"

import { useDispatch } from "react-redux"
import { logout } from "../utils/UserSlice"

const TransporterDashboardPage = () => {
  const [tenders, setTenders] = useState([])
  const [history, setHistory] = useState([])
  const [showModal, setShowModal] = useState(false)
  const [selectedTender, setSelectedTender] = useState(null)
  const [responseForm, setResponseForm] = useState({
    price: "",
    vehicleNo: "",
    attachments: [],
  })
  const [view, setView] = useState(false)
  const [loading, setLoading] = useState(true)
  const [error, setError] = useState(null)
  const [isSubmitting, setIsSubmitting] = useState(false)
  const [confirmDialog, setConfirmDialog] = useState(null)
  const [historyLoading, setHistoryLoading] = useState(false)
  const [historyError, setHistoryError] = useState(null)
  const [transporters, setTransporters] = useState([])
  const [transporterMap, setTransporterMap] = useState({})

  const navigate = useNavigate()
  const dispatch = useDispatch()


  const userInfo = useSelector((state) => state.User?.userInfo)
  const userName = userInfo?.name || "RR User"

  const fetchTenders = async () => {
    try {
      const res = await fetch(`${API.FETCH_ALL_TENDERS}`, {
        method: "GET",
        headers: {
          "Content-Type": "application/json",
        },
        credentials: "include",
      })

      const data = await res.json()
      // console.log("fetch all tenders : ", data.data)

      const userId = userInfo?._id

      // Mark tenders where this user has submitted a quotation
      const updatedTenders = (data.data || []).map((tender) => {
        const hasUserQuoted = (tender.quotations || []).some((q) => {
          if (typeof q === 'object' && q.transportUser?._id) {
            return q.transportUser._id === userId
          }
          return false
        })

        return {
          ...tender,
          hasUserQuoted,
        }
      })

      setTenders(updatedTenders);

    } catch (err) {
      console.error("Fetch error:", err)
      setError("Failed to load tenders.")
    } finally {
      setLoading(false)
    }
  }

  useEffect(() => {

    fetchTenders()
  }, [])

  const fetchTransporters = async () => {
    try {
      const res = await axios.get(API.FETCH_ALL_TRANSPORTER, {
        withCredentials: true,
      })
      const list = res.data?.data || []
      // console.log("transporter's name : ", res.data)
      setTransporters(list)

      // create a map for quick lookup
      const map = {}
      list.forEach((t) => {
        map[t._id] = t.name
      })
      setTransporterMap(map)
    } catch (err) {
      console.error("Error fetching transporter list:", err)
    }
  }

  // const handleReject = (id) => {
  //   setConfirmDialog({
  //     message: "Are you sure you want to reject this tender?",
  //     onConfirm: () => {
  //       setTenders((prev) => prev.filter((t) => t.id !== id))
  //       toast.info("Tender rejected.")
  //       setConfirmDialog(null)
  //     },
  //     onCancel: () => setConfirmDialog(null),
  //   })
  // }

  const handleApprove = (tender) => {
    setSelectedTender(tender)
    setShowModal(true)
  }

  const handleFileChange = (e) => {

    const file = e.target.files?.[0]

    if (file && !["image/jpeg", "image/jpg"].includes(file.type)) {
      toast.error("Only JPG and JPEG files are allowed.")
      e.target.value = null // Reset input
      return
    }

    setResponseForm({
      ...responseForm,
      attachments: e.target.files?.[0] ? [e.target.files[0]] : [],
    })
  }

  const handleResponseChange = (e) => {
    setResponseForm({ ...responseForm, [e.target.name]: e.target.value })
  }

  const handleSubmitResponse = async () => {
    if (!responseForm.price || !responseForm.vehicleNo) {
      toast.warning("Price and vehicle number are required.")
      return
    }

    const formData = new FormData()
    formData.append("price", responseForm.price)
    formData.append("vehicleNumber", responseForm.vehicleNo)

    if (responseForm.attachments.length > 0) {
      formData.append("file", responseForm.attachments[0])
    }

    // console.log([...formData.entries()])
    setIsSubmitting(true)

    try {
      const res = await fetch(`${API.SUBMIT_QUOTATION}/${selectedTender._id}`, {
        method: "POST",
        body: formData,
        credentials: "include",
      })

      const result = await res.json()

      if (res.ok) {
        toast.success("Quotation submitted successfully!")

        setHistory((prev) => [
          ...prev,
          {
            rrName: selectedTender.rrName,
            price: responseForm.price,
            vehicleNo: responseForm.vehicleNo,
            attachments: result.data.files?.map((f) => f.originalName || f.url) || [],
            dispatchLocation: selectedTender.dispatchLocation,
            materials: selectedTender.materials.map((m) => ({
              item: m.material,
              subItem: m.subMaterial,
              weight: m.weight,
              quantity: m.quantity,
            })),
          },
        ])

        setShowModal(false)
        setResponseForm({ price: "", vehicleNo: "", attachments: [] })

        // Refresh tender list to reflect quotation
        await fetchTenders()

      } else {
        toast.error(result.message || "Failed to submit quotation.")
      }
    } catch (error) {
      console.error("Quotation Submit Error:", error)
      toast.error("An error occurred while submitting your quotation.")
    } finally {
      setIsSubmitting(false)
    }
  }

  // const handleClearHistory = () => {
  //   setConfirmDialog({
  //     message: "Are you sure you want to delete all history?",
  //     onConfirm: () => {
  //       setHistory([])
  //       toast.info("All history cleared.")
  //       setConfirmDialog(null)
  //     },
  //     onCancel: () => setConfirmDialog(null),
  //   })
  // }

  // const handleDeleteHistoryItem = (index) => {
  //   setConfirmDialog({
  //     message: "Delete this history entry?",
  //     onConfirm: () => {
  //       setHistory((prev) => prev.filter((_, idx) => idx !== index))
  //       toast.success("History entry deleted.")
  //       setConfirmDialog(null)
  //     },
  //     onCancel: () => setConfirmDialog(null),
  //   })
  // }

  const handleLogout = async () => {
    try {
      await axios.post(API.LOGOUT_USER, {}, { withCredentials: true })
      dispatch(logout())
      toast.success("Logged out successfully!")
    } catch (err) {
      console.error("Logout failed:", err)
      toast.error("Logout failed. Please try again.")
    } finally {
      navigate("/signin")
    }
  }


  const handleToggleView = async () => {
    if (!view) {
      // Switching to history view
      setHistoryLoading(true)
      setHistoryError(null)
      try {
        await fetchTransporters()
        const res = await axios.get(API.HISTORY_FOR_QUOTATION_QUOTE, {
          withCredentials: true,
          headers: {
            "Content-Type": "application/json",
          },
        })

        // console.log("History response:", res.data)

        const enriched = res.data.data.map((entry) => {
          return {
            ...entry,
            transporterName: transporterMap[entry.tenderId] || "Unknown Transporter",
          }
        })

        setHistory(enriched)
      } catch (err) {
        console.error("Failed to load history:", err)
        if (err.response) {
          console.error("Server responded with:", err.response.status, err.response.data)
        } else if (err.request) {
          console.error("No response received:", err.request)
        }
        setHistoryError("Failed to load submission history.")
      } finally {
        setHistoryLoading(false)
      }
    }
    setView((prev) => !prev)
  }

  const navbarActions = (
    <button
      onClick={handleToggleView}
      className="px-4 py-2 bg-teal-600 text-white rounded-md hover:bg-teal-700 transition-colors duration-200 flex items-center gap-2 shadow-sm"
    >
      {view ? (
        <>
          <Package className="h-4 w-4" /> Back to Dashboard
        </>
      ) : (
        <>
          <Clock className="h-4 w-4" /> View History
        </>
      )}
    </button>
  )

  const formatDate = (dateString) => {
    if (!dateString) return "N/A"
    return new Date(dateString).toLocaleDateString("en-US", {
      year: "numeric",
      month: "long",
      day: "numeric",
    })
  }

  return (
    <div className="min-h-screen bg-slate-200">
      <Navbar
        title="Transporter Dashboard"
        userName={userName || "Transport User"}
        actions={navbarActions}
        onLogout={handleLogout}
      />

      <div className="py-8 px-4 max-w-6xl mx-auto">
        {loading ? (
          <div className="flex justify-center items-center h-64">
            <div className="animate-spin rounded-full h-12 w-12 border-t-2 border-b-2 border-teal-500"></div>
          </div>
        ) : error ? (
          <div className="text-center p-8 bg-red-50 rounded-lg border border-red-200 text-red-600">
            <XCircle className="h-8 w-8 mx-auto mb-2" />
            {error}
          </div>
        ) : view ? (
          historyLoading ? (
            <div className="flex justify-center items-center h-64">
              <div className="animate-spin rounded-full h-12 w-12 border-t-2 border-b-2 border-teal-500"></div>
            </div>
          ) : historyError ? (
            <div className="text-center p-8 bg-red-50 rounded-lg border border-red-200 text-red-600">
              <XCircle className="h-8 w-8 mx-auto mb-2" />
              {historyError}
            </div>
          ) : history.length > 0 ? (
            <div className="mb-10">
              <div className="flex justify-between items-center mb-6">
                <h3 className="text-2xl font-bold text-teal-700 flex items-center gap-2">
                  <FileText className="h-6 w-6 text-teal-600" />
                  Submission History
                </h3>

                {/* <button
                  onClick={handleClearHistory}
                  className=" bg-red-100 flex items-center gap-2 px-4 py-2 text-red-600 border border-red-300 rounded-md hover:bg-red-500 hover:text-white transition-colors duration-200">
                  <XCircle className="h-4 w-4" />
                  Clear All
                </button> */}

              </div>
              <div className="grid gap-6">
                {history.map((entry, idx) => (
                  <div
                    key={entry._id || idx}
                    className="relative bg-white border border-slate-200 rounded-xl shadow-sm p-6 transition-all duration-200 hover:shadow-md"
                  >
                    {/* Delete Button */}
                    {/* <button
                      onClick={() => handleDeleteHistoryItem(idx)}
                      className="absolute top-4 right-4 text-slate-400 hover:text-red-500 transition-colors duration-200"
                      title="Delete Entry">
                      <XCircle className="h-5 w-5" />
                    </button> */}

                    {/* Header with status badge */}
                    <div className="mb-4 pb-4 border-b border-slate-100 ">
                      <div className="flex flex-wrap items-start justify-between gap-2">
                        <h4 className="text-lg font-semibold text-slate-800">Quotation #{idx + 1}</h4>
                        <span className="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-teal-100 text-teal-800">
                          Submitted
                        </span>
                      </div>
                    </div>

                    {/* Tender Info Grid */}
                    <div className="grid sm:grid-cols-2 gap-4 text-sm">
                      <div className="flex items-start gap-2">
                        <span className="text-slate-500 mt-0.5">
                          <Home className="h-4 w-4" />
                        </span>
                        <div>
                          <p className="text-slate-500">RR User</p>
                          <p className="font-medium text-slate-800">{entry.tender?.createdBy?.name || "Unknown"}</p>
                          <p className="text-xs text-slate-500">
                            {entry.tender?.createdBy?.email || "Email not available"}
                          </p>
                        </div>
                      </div>

                      <div className="flex items-start gap-2">
                        <span className="text-slate-500 mt-0.5">
                          <Calendar className="h-4 w-4" />
                        </span>
                        <div>
                          <p className="text-slate-500">Delivery Window</p>
                          <p className="font-medium text-slate-800">
                            {entry.tender?.deliveryWindow?.from && entry.tender?.deliveryWindow?.to
                              ? `${formatDate(entry.tender.deliveryWindow.from)} to ${formatDate(entry.tender.deliveryWindow.to)}`
                              : "N/A"}
                          </p>
                        </div>
                      </div>

                      <div className="flex items-start gap-2">
                        <span className="text-slate-500 mt-0.5">
                          <Clock className="h-4 w-4" />
                        </span>
                        <div>
                          <p className="text-slate-500">Closing Date</p>
                          <p className="font-medium text-slate-800">{formatDate(entry.tender?.closeDate)}</p>
                        </div>
                      </div>

                      <div className="flex items-start gap-2">
                        <span className="text-slate-500 mt-0.5">
                          <Clock className="h-4 w-4" />
                        </span>
                        <div>
                          <p className="text-slate-500">Submitted On</p>
                          <p className="font-medium text-slate-800">
                            {new Date(entry.createdAt).toLocaleString("en-US", {
                              year: "numeric",
                              month: "long",
                              day: "numeric",
                              hour: "2-digit",
                              minute: "2-digit",
                              hour12: true,
                            })}
                          </p>
                        </div>
                      </div>

                      <div className="flex items-start gap-2">
                        <span className="text-slate-500 mt-0.5">
                          <MapPin className="h-4 w-4" />
                        </span>
                        <div>
                          <p className="text-slate-500">Location</p>
                          <p className="font-medium text-slate-800">{entry.tender?.dispatchLocation || "N/A"}</p>
                          <p className="text-xs text-slate-500">
                            {entry.tender?.address ? `${entry.tender.address}, ` : ""}
                            {entry.tender?.pincode || ""}
                          </p>
                        </div>
                      </div>

                      <div className="flex items-start gap-2">
                        <span className="text-slate-500 mt-0.5">
                          <Truck className="h-4 w-4" />
                        </span>
                        <div>
                          <p className="text-slate-500">Vehicle Number</p>
                          <p className="font-medium text-slate-800">{entry.vehicleNumber}</p>
                        </div>
                      </div>

                      <div className="flex items-start gap-2">
                        <span className="text-slate-500 mt-0.5">
                          <DollarSign className="h-4 w-4" />
                        </span>
                        <div>
                          <p className="text-slate-500">Price</p>
                          <p className="font-medium text-slate-800">₹ {entry.price}</p>
                        </div>
                      </div>

                      <div className="flex items-start gap-2">
                        <span className="text-slate-500 mt-0.5">
                          <Package className="h-4 w-4" />
                        </span>
                        <div>
                          <p className="text-slate-500">Total Weight</p>
                          <p className="font-medium text-slate-800">{entry.tender?.totalWeight ?? "N/A"} kg</p>
                        </div>
                      </div>

                      <div className="flex items-start gap-2">
                        <span className="text-slate-500 mt-0.5">
                          <Package className="h-4 w-4" />
                        </span>
                        <div>
                          <p className="text-slate-500">Total Quantity</p>
                          <p className="font-medium text-slate-800">{entry.tender?.totalQuantity ?? "N/A"} pcs</p>
                        </div>
                      </div>
                    </div>

                    {/* Remarks */}
                    {entry.tender?.remarks && (
                      <div className="mt-4 bg-amber-50 border border-amber-100 rounded-lg p-3 text-sm">
                        <div className="flex gap-2">
                          <FileText className="h-4 w-4 text-amber-600 mt-0.5 flex-shrink-0" />
                          <div>
                            <span className="font-medium text-amber-800">Remarks:</span> {entry.tender.remarks}
                          </div>
                        </div>
                      </div>
                    )}

                    {/* Materials List */}
                    {entry.tender?.materials?.length > 0 && (
                      <div className="mt-4 bg-slate-50 border border-slate-200 rounded-lg p-4">
                        <h4 className="text-sm font-semibold text-slate-800 mb-3 flex items-center gap-2">
                          <Tool className="h-4 w-4 text-slate-600" /> Materials
                        </h4>
                        <div className="overflow-x-auto">
                          <table className="w-full text-sm">
                            <thead>
                              <tr className="bg-slate-100 text-slate-600">
                                <th className="px-3 py-2 text-left">Material</th>
                                <th className="px-3 py-2 text-left">Sub Item</th>
                                <th className="px-3 py-2 text-right">Weight (Kg)</th>
                                <th className="px-3 py-2 text-right">Quantity</th>
                              </tr>
                            </thead>
                            <tbody>
                              {entry.tender.materials.map((m, i) => (
                                <tr key={m._id || i} className="border-t border-slate-200">
                                  <td className="px-3 py-2 font-medium">{m.material}</td>
                                  <td className="px-3 py-2">{m.subMaterial || "-"}</td>
                                  <td className="px-3 py-2 text-right">{m.weight || "-"}</td>
                                  <td className="px-3 py-2 text-right">{m.quantity || "-"}</td>
                                </tr>
                              ))}
                            </tbody>
                          </table>
                        </div>
                      </div>
                    )}

                    {/* Attachments */}
                    <div className="mt-4">
                      <h4 className="text-sm font-semibold text-slate-800 mb-2 flex items-center gap-2">
                        <FileUp className="h-4 w-4 text-slate-600" /> Attachments
                      </h4>
                      {entry.files?.length > 0 ? (
                        <div className="flex flex-wrap gap-2">
                          {entry.files.map((f, i) => {
                            const label = f.originalName || f.name || `File ${i + 1}`
                            const fileUrl = f.url || f

                            return (
                              <a
                                key={i}
                                href={fileUrl}
                                target="_blank"
                                rel="noopener noreferrer"
                                className="inline-flex items-center gap-1.5 px-3 py-1.5 bg-slate-100 text-slate-700 rounded-md hover:bg-slate-200 transition-colors duration-200 text-sm"
                              >
                                <FileText className="h-3.5 w-3.5" />
                                {label}
                              </a>
                            )
                          })}
                        </div>
                      ) : (
                        <p className="text-slate-500 text-sm">No attachments</p>
                      )}
                    </div>
                  </div>
                ))}
              </div>
            </div>
          ) : (
            <div className="flex flex-col items-center justify-center h-64 bg-white rounded-xl border border-slate-200 p-8">
              <FileText className="h-12 w-12 text-slate-300 mb-4" />
              <p className="text-slate-500 text-lg">No submission history available</p>
              <button
                onClick={handleToggleView}
                className="mt-4 px-4 py-2 bg-teal-600 text-white rounded-md hover:bg-teal-700 transition-colors duration-200"
              >
                Return to Dashboard
              </button>
            </div>
          )
        ) : tenders.length === 0 ? (
          <div className="flex flex-col items-center justify-center h-64 bg-white rounded-xl border border-slate-200 p-8">
            <Package className="h-12 w-12 text-slate-300 mb-4" />
            <p className="text-slate-500 text-lg">No pending tenders available</p>
          </div>
        ) : (
          <>
            <h1 className="text-2xl font-bold text-teal-700 mb-6 flex items-center gap-2">
              <Package className="h-6 w-6" />
              Available Tenders
            </h1>

            <div className="space-y-8">
              {tenders.map((tender) => (
                <div
                  key={tender._id}
                  className="bg-white p-6 rounded-xl shadow-sm border border-slate-200 transition-all duration-200 hover:shadow-md"
                >
                  {/* Header */}
                  <div className="flex flex-wrap justify-between items-start gap-4 pb-4 border-b border-slate-100 mb-4">
                    <div>
                      <h3 className="text-xl font-bold text-slate-800 mb-1">
                        Tender from {tender.createdBy?.name || "Unknown RR User"}
                      </h3>
                      <p className="text-sm text-slate-500">{tender.createdBy?.email || "Email not available"}</p>
                    </div>

                    {/* <div className="flex items-center gap-2">
                      <span className="text-xs font-medium px-2.5 py-0.5 rounded-full bg-amber-100 text-amber-800">
                        Pending Response
                      </span>
                    </div> */}

                    <div className="flex items-center gap-2">
                      <span className={`text-xs font-medium px-2.5 py-0.5 rounded-full ${tender.hasUserQuoted ? "bg-green-100 text-green-800" : "bg-amber-100 text-amber-800"}`}>
                        {tender.hasUserQuoted ? "Quotation Submitted" : "Pending Response"}
                      </span>
                    </div>
                  </div>

                  {/* Info Grid */}
                  <div className="grid md:grid-cols-2 gap-4 mb-6">
                    <div className="flex items-start gap-3">
                      <div className="bg-teal-100 p-2 rounded-lg text-teal-600">
                        <Calendar className="h-5 w-5" />
                      </div>
                      <div>
                        <p className="text-sm text-slate-500">Delivery Window</p>
                        <p className="font-medium text-slate-800">
                          {tender.deliveryWindow?.from && tender.deliveryWindow?.to
                            ? `${formatDate(tender.deliveryWindow.from)} to ${formatDate(tender.deliveryWindow.to)}`
                            : "N/A"}
                        </p>
                      </div>
                    </div>

                    <div className="flex items-start gap-3">
                      <div className="bg-purple-100 p-2 rounded-lg text-purple-600">
                        <Clock className="h-5 w-5" />
                      </div>
                      <div>
                        <p className="text-sm text-slate-500">Closing Date</p>
                        <p className="font-medium text-slate-800">{formatDate(tender?.closeDate)}</p>
                      </div>
                    </div>

                    <div className="flex items-start gap-3">
                      <div className="bg-rose-100 p-2 rounded-lg text-rose-600">
                        <MapPin className="h-5 w-5" />
                      </div>
                      <div>
                        <p className="text-sm text-slate-500">Location</p>
                        <p className="font-medium text-slate-800">{tender.dispatchLocation || "N/A"}</p>
                      </div>
                    </div>

                    <div className="flex items-start gap-3">
                      <div className="bg-sky-100 p-2 rounded-lg text-sky-600">
                        <Home className="h-5 w-5" />
                      </div>
                      <div>
                        <p className="text-sm text-slate-500">Address</p>
                        <p className="font-medium text-slate-800">
                          {tender.address || "N/A"}
                          {tender.pincode ? `, ${tender.pincode}` : ""}
                        </p>
                      </div>
                    </div>
                  </div>

                  {/* Materials Table */}
                  <div className="bg-slate-50 rounded-lg p-4 mb-6">
                    <h4 className="font-semibold mb-3 text-slate-700 flex items-center gap-2">
                      <Tool className="h-5 w-5 text-slate-600" /> Materials
                    </h4>
                    <div className="overflow-x-auto">
                      <table className="w-full text-sm">
                        <thead>
                          <tr className="bg-slate-100 text-slate-600">
                            <th className="px-4 py-2 text-left rounded-l-md">Material</th>
                            <th className="px-4 py-2 text-left">Sub Item</th>
                            <th className="px-4 py-2 text-right">Weight (Kg)</th>
                            <th className="px-4 py-2 text-right rounded-r-md">Quantity</th>
                          </tr>
                        </thead>
                        <tbody>
                          {tender.materials.map((m, index) => (
                            <tr
                              key={m._id}
                              className={`${index % 2 === 0 ? "bg-white" : "bg-slate-50"} hover:bg-slate-100 transition-colors duration-150`}
                            >
                              <td className="px-4 py-2 font-medium">{m.material}</td>
                              <td className="px-4 py-2">{m.subMaterial || "-"}</td>
                              <td className="px-4 py-2 text-right">{m.weight || "-"}</td>
                              <td className="px-4 py-2 text-right">{m.quantity || "-"}</td>
                            </tr>
                          ))}
                        </tbody>
                      </table>
                    </div>
                  </div>

                  {/* Summary Stats */}
                  <div className="flex flex-wrap gap-4 mb-4">
                    <div className="bg-teal-50 border border-teal-100 px-4 py-2 rounded-lg">
                      <span className="text-slate-600 text-sm">Total Weight: </span>
                      <span className="text-teal-700 font-semibold">{tender?.totalWeight ?? "N/A"} kg</span>
                    </div>
                    <div className="bg-teal-50 border border-teal-100 px-4 py-2 rounded-lg">
                      <span className="text-slate-600 text-sm">Total Quantity: </span>
                      <span className="text-teal-700 font-semibold">{tender?.totalQuantity ?? "N/A"} pcs</span>
                    </div>
                  </div>

                  {/* Remarks */}
                  {tender.remarks && (
                    <div className="mb-6 bg-amber-50 border border-amber-100 rounded-lg p-3 text-sm">
                      <div className="flex gap-2">
                        <FileText className="h-4 w-4 text-amber-600 mt-0.5 flex-shrink-0" />
                        <div>
                          <span className="font-medium text-amber-800">Remarks:</span> {tender.remarks}
                        </div>
                      </div>
                    </div>
                  )}

                  {/* Action Buttons */}
                  {tender.hasUserQuoted ? (
                    <div className="flex justify-center mt-4 animate-fadeIn">
                      <div className="inline-flex items-center gap-2 px-5 py-3 bg-gradient-to-r from-green-50 to-emerald-50 text-emerald-700 font-medium text-sm border border-emerald-200 rounded-lg shadow-sm">
                        <Award className="h-5 w-5 text-emerald-500" />
                        <span>Quotation Submitted</span>
                        <CheckCheck className="h-5 w-5 text-emerald-500 ml-1" />
                      </div>
                    </div>
                  ) : (
                    <div className="flex flex-col sm:flex-row gap-3 justify-center mt-6">
                      {/* <button
                        onClick={() => handleReject(tender._id)}
                        className="bg-white border border-slate-300 text-slate-700 px-6 py-2.5 rounded-lg hover:bg-slate-50 transition-all duration-200 flex items-center justify-center gap-2 shadow-sm hover:shadow"
                      >
                        <XCircle className="h-5 w-5 text-red-500" />
                        <span>Reject</span>
                      </button> */}

                      <button
                        onClick={() => handleApprove(tender)}
                        className="bg-gradient-to-r from-teal-600 to-emerald-600 text-white px-6 py-2.5 rounded-lg hover:from-teal-700 hover:to-emerald-700 transition-all duration-200 flex items-center justify-center gap-2 shadow-sm hover:shadow"
                      >
                        <CheckCircle className="h-5 w-5" />
                        <span>Approve</span>
                      </button>
                    </div>
                  )}

                </div>
              ))}
            </div>
          </>
        )}
      </div>

      {/* Quotation Modal */}
      {showModal && selectedTender && (
        <div className="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4">
          <div className="bg-white rounded-xl p-6 w-full max-w-lg max-h-[90vh] overflow-y-auto">
            <h3 className="text-xl font-bold text-slate-800 mb-6 flex items-center gap-2">
              <FileText className="h-5 w-5 text-teal-600" />
              Submit Quotation
            </h3>
            <div className="space-y-5">
              <div>
                <label className="block font-medium mb-1.5 text-sm text-slate-700">Price (₹)</label>
                <input
                  name="price"
                  value={responseForm.price}
                  onChange={handleResponseChange}
                  type="number"
                  placeholder="Enter your price"
                  className="w-full px-3 py-2.5 border border-slate-300 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-teal-500 focus:border-transparent"
                  required
                />
              </div>
              <div>
                <label className="block font-medium mb-1.5 text-sm text-slate-700">Vehicle Details</label>
                <input
                  name="vehicleNo"
                  value={responseForm.vehicleNo}
                  onChange={handleResponseChange}
                  type="text"
                  placeholder="Enter vehicle details"
                  className="w-full px-3 py-2.5 border border-slate-300 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-teal-500 focus:border-transparent"
                  required
                />
              </div>
              <div>
                <label className="block font-medium mb-1.5 text-sm text-slate-700">Attachments</label>
                <div className="border border-dashed border-slate-300 rounded-lg p-4 bg-slate-50">
                  <input
                    type="file"
                    accept=".jpg,.jpeg,image/jpeg"
                    onChange={handleFileChange}
                    className="w-full text-sm text-slate-500 file:mr-4 file:py-2 file:px-4 file:rounded-md file:border-0 file:text-sm file:font-medium file:bg-teal-50 file:text-teal-700 hover:file:bg-teal-100"
                  />
                  <p className="text-xs text-slate-500 mt-2">
                    Only upload <strong>.jpg</strong> or <strong>.jpeg</strong> files
                  </p>

                </div>
              </div>
            </div>
            <div className="flex flex-col sm:flex-row sm:justify-end gap-3 mt-8">
              <button
                onClick={() => setShowModal(false)}
                className="px-5 py-2.5 border border-slate-300 rounded-lg text-sm text-slate-700 hover:bg-slate-50 transition-colors duration-200 order-2 sm:order-1"
              >
                Cancel
              </button>
              <button
                onClick={handleSubmitResponse}
                className="px-5 py-2.5 bg-teal-600 text-white rounded-lg text-sm hover:bg-teal-700 transition-colors duration-200 order-1 sm:order-2 flex items-center justify-center"
                disabled={isSubmitting}
              >
                {isSubmitting ? (
                  <>
                    <svg
                      className="animate-spin h-4 w-4 text-white mr-2"
                      xmlns="http://www.w3.org/2000/svg"
                      fill="none"
                      viewBox="0 0 24 24"
                    >
                      <circle
                        className="opacity-25"
                        cx="12"
                        cy="12"
                        r="10"
                        stroke="currentColor"
                        strokeWidth="4"
                      ></circle>
                      <path className="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8v8H4z"></path>
                    </svg>
                    Submitting...
                  </>
                ) : (
                  "Submit Quotation"
                )}
              </button>
            </div>
          </div>
        </div>
      )}

      {/* Confirmation Modal */}
      {confirmDialog && (
        <ConfirmationModal
          message={confirmDialog.message}
          onConfirm={confirmDialog.onConfirm}
          onCancel={confirmDialog.onCancel}
        />
      )}
    </div>
  )
}

export default TransporterDashboardPage
CREATE TABLE Hastalar (
    PatientID INT PRIMARY KEY AUTO_INCREMENT,
    Ad VARCHAR(50) NOT NULL,
    Soyad VARCHAR(50) NOT NULL,
    TCKN CHAR(11) UNIQUE NOT NULL,
    DogumTarihi DATE NOT NULL,
    Cinsiyet ENUM('Erkek', 'Kadın', 'Diğer') NOT NULL,
    Telefon VARCHAR(20),
    Eposta VARCHAR(100),
    Adres TEXT,
    Boy DECIMAL(5,2),
    Kilo DECIMAL(5,2),
    SigortaTuru ENUM('SGK', 'Özel', 'Yok'),
    Alerjiler TEXT,
    KronikHastaliklar TEXT,
    KanGrubu ENUM('A+', 'A-', 'B+', 'B-', 'AB+', 'AB-', 'O+', 'O-')
);
ollama pull llama3.2
echo "FROM llama3.2" >> Modelfile
echo "SYSTEM You are a friendly assistant." >> Modelfile
ollama create -f Modelfile killrkingz/brandonjessup
ollama push killrkingz/brandonjessup
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":cute-sun: Boost Days - What's On This Week :cute-sun:"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "Xero Café :coffee:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n :new-thing: *This week we are offering:* \n\n :caramel-slice: Anzac Slices  \n\n :cheesecake: Raspberry and White Choc cheesecake  \n\n *Weekly Café Special:* _Iced Matcha Latte_"
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": " Wednesday, 23rd April :calendar-date-16:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "  \n\n \n\n :lunch: *Light Lunch*: Provided by Kartel Catering from *12pm* \n\n"
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "Thursday, 24th April :calendar-date-17:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":breakfast: *Breakfast*: Provided by *Kartel Catering* from *8:30am - 10:30am* in the Wominjeka Breakout Space."
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Stay tuned for more fun throughout the year. :party-wx:"
			}
		}
	]
}
input.Add_notes _field = "<style>input.zc-live-primary-btn { display: none;}</style>";
Teamwork Communications Group is the one-stop destination for all brands who seek to be at the forefront of the news and want to increase their presence among the right target audience. We are the Best PR Firm in India purveying brands to build a hero position in the market using effective communication strategies, including Digital and Influencer marketing.
End-to-end solutions for P2E Game Development can help your business generate new revenue streams.  We are the top Play-to-Earn Game development Company, providing outstanding P2E game development services.  Hire Play-to-Earn game developers to make your gaming concepts a reality.  Attract players and investors with an advanced gaming platform that is built for long-term growth and success.
https://chatgpt.com/share/67fea1e0-4fe0-800f-bdd8-9a39c7ea02d9
OTT Influence is the best influencer marketing agency in Delhi, offering impeccable services that connect your brand with the right influencers. At OTT, we unite brands with top micro-influencers, ensuring maximum engagement.
{"url":"https://chatgpt.com","cookies":[{"domain":"chatgpt.com","hostOnly":true,"httpOnly":true,"name":"__Host-next-auth.csrf-token","path":"/","sameSite":"lax","secure":true,"session":true,"storeId":"0","value":"337eca6f64d51ab44e96ad2d730a6cf61bb4dd6a187648fb95eff5251758c62a%7C34fa57fcbc4a093c97c166ee58c7514903c45ebb9d0c77871c193edded99daf9"},{"domain":".chatgpt.com","expirationDate":1775794870.919494,"hostOnly":false,"httpOnly":false,"name":"oai-did","path":"/","sameSite":"lax","secure":false,"session":false,"storeId":"0","value":"ad550994-b717-475c-a09d-8e4cbc3a47a8"},{"domain":".chatgpt.com","hostOnly":false,"httpOnly":true,"name":"_cfuvid","path":"/","sameSite":"no_restriction","secure":true,"session":true,"storeId":"0","value":".ZCzOJ0HNEjbK91wVle70wP3trWE7YHKqSZdgLdAVa8-1744690871171-0.0.1.1-604800000"},{"domain":"chatgpt.com","hostOnly":true,"httpOnly":true,"name":"__Secure-next-auth.callback-url","path":"/","sameSite":"lax","secure":true,"session":true,"storeId":"0","value":"https%3A%2F%2Fchatgpt.com%2F"},{"domain":"chatgpt.com","expirationDate":1775794891.241609,"hostOnly":true,"httpOnly":false,"name":"oai-hlib","path":"/","sameSite":"lax","secure":false,"session":false,"storeId":"0","value":"true"},{"domain":"chatgpt.com","expirationDate":1747282965.209637,"hostOnly":true,"httpOnly":false,"name":"oai-last-model","path":"/","sameSite":"lax","secure":false,"session":false,"storeId":"0","value":"gpt-4o"},{"domain":".chatgpt.com","expirationDate":1744704853.116044,"hostOnly":false,"httpOnly":true,"name":"__cf_bm","path":"/","sameSite":"no_restriction","secure":true,"session":false,"storeId":"0","value":"eidvaDKwtbwpzrq_NJH.8ywhU.vVijHaVFGQRkyUhYw-1744703053-1.0.1.1-NefiTbmmfXv_8q2sul4dkkP3RmK4ktDE75ulFGxiMUWqBl50y5jKFL4HqwjaW6GviS6GboCbabSNFqhF.Ho0agHhTLkzPcIIpHLlcgDKpbw"},{"domain":"chatgpt.com","expirationDate":1744706653.116104,"hostOnly":true,"httpOnly":true,"name":"__cflb","path":"/","sameSite":"no_restriction","secure":true,"session":false,"storeId":"0","value":"0H28vzvP5FJafnkHxiseZX82KGkF3aDneuym4DsnykP"},{"domain":".chatgpt.com","expirationDate":1752479110.805003,"hostOnly":false,"httpOnly":true,"name":"__Secure-next-auth.session-token.0","path":"/","sameSite":"lax","secure":true,"session":false,"storeId":"0","value":"eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..cU2BC9TN0Dtu249y.rG4LXkHvBtSWg4fahhqUwcT3c2vSEXF9UNjhpEkjKbsaSt_olRyQSrjF3SWLvFtrJYHaOYmNX8qutYWtnIrhy6uUda5M4L8SkOVqwDaLnfMsdxtkmrDuiHaIrW49fR65USLZeZKZe_gIJNkHmUwgNcmNSXU9CONzlCKiG5khNZIZh185QDXk6oidVbXleDTmtmG1KmXTPg1v6hAen1zS8rtCxrCyNwVteWrSczvVJVmZwaPPm_atnmCIVqQ5h6OLSR30y96NemRTLjl8jfXKtd09MXF7a1XSSg5q2sn3DFYu1Wse4FJzoc37TEAhsC_GnOmY3MXHubHdVCHwlxlrrIjG8adaztLNZNhBSjTp0UBfvMgl1lAaXUgYLdyX3pPLTpN43SfUqFv7hgJnsyiFXe5ze_3SecoxURBw7uZU2g0uqh5tdn0_TMg3vJwaJZ3iUMP_63HkKRwhe0mq02f22vkuGuet2P_i5SzjHTsTTKdVliR-_TW_Gel4bTl2eAw6rm5tXjfo0-D1FfHvivcADNzCJCLrVeIC1p6NV3Sr70Rhj_ip0s_r3aN9NOxLwYt9aEhcpZPS4joyRgddFWLyQcXHqZr-45pAJ-LMR0crL5-wTTCtnluxGCV_HksvSGcDceR4xVIWIMbk5yr1xSPAx7cHKDHDZcj-VJR2cIGfo5-94yvYTR9HynKURkT9ZMR6EjcE9I8fSlwQlpeEipR-ZefKmKA40NcRM5phTYtOwfNHt9TWJSZZ2-beaxViD6ui6JMWINr4Nk8my0WoIx3NIIQNGQqu2yvu3lyTUknvQNhtNT4I6fxTjKFAlstjM0NH-6uhOwUzjos3ze0qx8O3-OB_yVWybla9yaWyZcyozw6lYdWeqww0jlIjtOPAeNUYJ7z8iIiBy6h6ehNrAdA7SWg1BT1SgqeZxQsqWMc5EaEQwEJ_nQNcyh-1zr8H3Jt25evMKbq23_e0K11RmpwOKULlRzDyBq5KaAU_EDSTWLX0FSWPv6bpCJtC3ycanXqy6HiXOy9dKgqxDjRJCRcD-PWEoyN8N1uJuW1ZPdSH1pjERKabHWwP-toE5O6SyNRy46wOZmELCi83ltsq2To0qC2QbIiThJ5mJG3KOgijIQywqkcxGtvNLEAYx05TfsTlBdkJDDrkFSv3zaUc_eLniwK2hXsdivYZpE7sAVqLp9ooK-PDRllD-ISzKEwY2_EJJEvzjWy3ovzSrSQhgnpwnzK8TNrV9AqEV4sWPwhvvOx1giuUV2v4ApCPveWMsJqQfT4rVdJ2oGX-QY66XFKm1Hkyc6hbR_3_0HMMbFJHECm5lEXLW0OkkHkHPKv0W80x9jf0OI0F29LP4MMil4ZcsZdXFLOLClm_dHALOY_Q5b3cOTp6fvvmIJ_unuD5_4DPHcVLJ5pyCjnM5r-pefkxsdaJKtBKvKa2MJNKj1T0I4jwfz1eKxIvcpngNosXijlMRlcqafyKrYinILUPXuGNNDG5hxkRtjI-H4QZlDl9SY0hrcaT92E3Tc3RPabuOSB4w0LzKAiocnDh12aj7gZAAhuF1iJeG9J48p5yQaJ76P5V9mB9UyjdPd9GNMg0ylhdwXzOAe-w4kg6bLDuQGWWYs80MbBj33ATipGTOPpxJCB242PxXeWFweIGMQwtUwQQG__ubdV9FSwPp2vk2kaUzCi_NIoPTGZjhLuzLQ-J_xQ-BckrGsd7RozTQZhbitwwiBUKFxCgsLsVkV7UqR2DFzgGrx7vP2X33gQlkr0KK72RZvJLeCwr7VI0tzMYuc8w71bEgDrVktc_HRdPV9j-_NFbC6_Dw_YIHjsovqtE0-9Ctbr5EuQIWggjZEYmtgJbWiyJfAx9WkmAcv4ygqawTOJnBk5xsb_MRREICDJ47LtetFdTVIYVuChk8eta7fXKRA8AGUxUCt6KXruYE2mOUAYnmU_0oC0sZ9mcSLkHvINRA7r4-A496sqw9spYDZrpq7T3vuwD-Cg-HqYZM4VLDxtbRfmFbA6CrmCrIIESu_2Vb_kgbJlyCJne9MGi5j8tftvIFNwqZKFpOpmrahOaXepyNGuqX9arphh2OOWvhA6tpS6p-E1Xrvc5c1LnJzYtykSpCL48JBxX-ZjzUK8j2hEDgFmyL5zsV8AoKhNY5hZy-zy3lWRJnTaAq_zsbYFq7ZbckkLTyz8OfC_xGYBsv2chcoa4MuqySx_QaQi8spZbwe2ccKBKny8NcFQKA_bXkBPohCCntgpeY-mjWfQyps_voDzcZH197GDjTsklO430f7iyGBX5-CDCO6dLRI2RsA8e-TqQYpwtPKf_2kaFPBFVd6ViyP4Xa5f6P5g5awOA1EQpVA54uG1TUY9yDvgAeZIRJX-U8mI65y9BTpyXtp4518o5pSIevSDW0wbveRVcQHHJ5w_oSlAdVRtZnnHs_I-H3M1mmxvWhoAnXlgKbZZeHayoDjMTw_1em83gRjbtqjA0fvLyPDWwdXTjBuF8d9oDaJMIaPZz3TRmB5tpfGbkwbJj_adIsiRUiOy7GieT6tnNn9kavDUHfpJQFSGOkRtFYEIwAuIZz2fYkoGLQGDA5gUJbWAUOpoic2Ys5SPHTAcaoafA8rBgAhzNQv9Y1n8HNoGA53PJbxxBNECDq0atAySkpEc-SJ4_EMMd0LfCC9Y1vab15Wn7Fi08avINRS3QmsSIYb5aYsu1JDYWUWWmh8TY_PV-5VrPw8tBdh6RkauSfIr_NOV5r9clI3VnSJ4W_uCuFHvhg0wEZKmqyBvITUMxQ4ynYT_ofbbBw1K38NxhyFjHwXs0KIOBi9GrFpr6G-hbWVPcAcJIAe6ZbggjzpIFkJBMeCWeIDT6cukj9RD-ayxqMYqENB9Ub-ermwxl4RgMrq3ElOrVAPOQBON2ioS9AacrOvYbljvzfOuq5B-dphJoiTbDmdFPQjO73Nrry3yQ1NedYaCemKjgg0KWiP0UJuc8zk1UJ9AcU7m5NTgf2MWIsiz_YUrW7bt8JQPEPYysjdQaARoi_CSajd1lr8ZCedg-4anc-lmItm1COXTd7sc7Gp9OarBiDf25WwE6Uy5eVRKTCjubrF_zC_-_tNDd7Incyea0I28mRq29OcCGriRgHGx12vmVih73Wr1rA8aCXRjk_-du8u52iKwyxAvvCnvl1La3pIN4OdXQPsPBr62aWqCu-Qbgh6fH4i8u8C0aPxATNKmY_8jM19SA9ijjhXSMtZO_mheuIpseWlgCRyWd0Z7LqwAhoTzKGAken9C2kiU7LDeI4Y-6j2pKMzTqSr741YHfSQotvPLlAqjXQbnY9LjlPyhEJqPoPEqM_Zhv_6DcGc49cRL-pt3fJi_1CnxeMD2LETwIdUTydRCzInieGkuhe9M0Py70Olpgp-GDevwOk5R9zJ4nZ_vmk60vQw5skPMP_X63Gaed2A0tOZcYc0dS9uHrDmlFbj5nPHlKKwDN8FbF7ziY4Dxgb59e718lqqc9bVsBQQ7XfOyAKOXnKnIWDFr_zPkKzObfp_hNeledKWZ0SA51rM5997HOn7ZoRYPU2HMAJEiw61Ej041sNOjOFRTAYhTWVOiS4cE4podDnVCudb4w4e_y1SFhLMxZnlXlXoN3laX5D075SojQVosjMFvfawSOcSlcwjE8H1Nh1xxkjU7Rz8y94rvIExdYA5VuSxWOSTnlEVlbW6te8VmCOODTuPaAMxLDxz7gXWXyEfD_j_EkKewWYS4iMo_I1r-t7my3mVL0_ICl_hVx9vJCVQEkUyHlvUZiI3g0jaFFwP0t-25y-DrOKD-Punmfs2dDKswkT2CanOakdMg2YPmWlHp7GdyWzmGybcLQSmXzTfzHWFcRcVsPztWT0a4Ri1F"},{"domain":".chatgpt.com","expirationDate":1752479110.805117,"hostOnly":false,"httpOnly":true,"name":"__Secure-next-auth.session-token.1","path":"/","sameSite":"lax","secure":true,"session":false,"storeId":"0","value":"FyHQcqvoTNXJwcRpDCiAxOivNJHhKzUuJq7OPbwHeA5EV9_-oOZI.e0eSUVNVgSgRgO_krXyEBQ"},{"domain":".chatgpt.com","expirationDate":1776239111.913607,"hostOnly":false,"httpOnly":false,"name":"oai-sc","path":"/","sameSite":"no_restriction","secure":true,"session":false,"storeId":"0","value":"0gAAAAABn_g6IWjRIPM9d6fSX7kRgWouvExGNs0ZXM1kDFqkpYADsRc8PrPkClyZvrocUX4epOylI33QJh0ad5feClHpwcch9mKwFoYc-ShpD6crmCtPqpuhViq2UNSxHSVOQw2OxG-JZc0z3zvSkYBA7_qCmOzXNYIjT59MZRdpONZy_qIBJf6Uy_hYk-9SK6-2G9JXhrwndE8kkMRcNQgCcACup7Xr0RpgDHLiXQxUqeYd3zmV7tLA"},{"domain":"chatgpt.com","expirationDate":1744704104,"hostOnly":true,"httpOnly":false,"name":"_dd_s","path":"/","sameSite":"strict","secure":false,"session":false,"storeId":"0","value":"rum=0&expire=1744704100422&logs=1&id=d172268d-bb48-438e-84a1-df230e44e25b&created=1744699886272"}]}
void htmlParserFrom()
{
deal_description = "<p><img src=\"https://media.sunhub.com/pictures/item/image_2a8b93a2.jpg\" alt=\"Hyundai Logo\"></p><h2><strong>Hyundai 405W 132 Half Cell BoB Bifacial Solar Panel</strong></h2><p>As a core energy business entity of HHI, Hyundai Energy Solutions has strong pride in providing high-quality PV products to more than 3,000 customers worldwide.</p><p> </p><h3><strong>Key Features:</strong></h3><ul><li>Maximized Power Generation</li><li>Half-Cut & Multi-Wire Technology</li><li>Anti-LID / PID</li><li>Mechanical Strength</li><li>UL / VDE Test Labs</li><li>Reliable Warranty</li></ul><h3><strong>Products Details:</strong></h3><ul><li>Manufacturing Part number: HIS-S405YH(BK)</li><li>Power Output: 405 Watt</li><li>Cells: 132 Half cut Bifacial cells</li><li>Weight: 46.51 lb</li><li>Dimensions: 75.74 x 40.86 x 1.26 in</li><li>Pallet Qty: 32 Pcs</li><li>Container Qty: 768 Pcs<br><br>Current Stock In: TX, NJ, FL, CA</li></ul>";
// Remove all HTML tags using replaceAll
clean_description = deal_description.replaceAll("<[^>]+>","");
info clean_description;
// This will show the text without HTML tags
}
1.put all these files and folders in a folder called task-manager(create one)

2.[[[[now open cmd in the task manager folder or set the path in cmd to the folder.

Hold Shift and right click on task-manager folder select open terminal or Open Command Window]]]]

3. once opened run these commands in cmd
npm init -y
npm install express mongoose jsonwebtoken bcryptjs cors
npm install dotenv

4. run this finally
  node server.js

if it doesnt work pray to god and leave the internal🙂


    
    


/**
2
 * Make Woodmart WooCommerce variation buttons appear with different styles based on stock status
3
 */
4
​
5
add_action('wp_head', 'add_woodmart_size_variation_css');
6
function add_woodmart_size_variation_css() {
7
    ?>
8
    <style>
9
        /* Available in stock - normal state with green border */
10
        .wd-swatch.wd-in-stock,
11
        div[data-id="pa_size"] .wd-swatch.wd-in-stock {
12
            border: 1px solid #294567 !important;
13
            background-color: #f9fff5 !important;
14
        }
15
        
16
        /* Out of stock but available for backorder - orange styling */
17
        .wd-swatch.wd-backorder,
18
        div[data-id="pa_size"] .wd-swatch.wd-backorder {
19
            background-color: #bbbbbb !important;
20
            border: 1px solid #bbbbbb !important;
21
        }
22
        
23
        .wd-swatch.wd-backorder .wd-swatch-text,
24
        div[data-id="pa_size"] .wd-swatch.wd-backorder .wd-swatch-text {
25
            color: #fff !important;
26
        }
27
        
28
        /* Out of stock and not available for backorder - gray styling */
29
        .wd-swatch.wd-disabled,
30
        div[data-id="pa_size"] .wd-swatch.wd-disabled {
31
            opacity: 0.5 !important;
32
            background-color: #f5f5f5 !important;
33
            border: 1px solid #d6d6d6 !important;
34
            cursor: not-allowed;
35
        }

const express = require('express');
const mongoose = require('mongoose');
const dotenv = require('dotenv');
const cors = require('cors');
const path = require('path');
const authRoutes = require('./routes/auth');
const taskRoutes = require('./routes/tasks');

dotenv.config(); 

const app = express();
const PORT = process.env.PORT || 5000;


app.use(express.json()); 
app.use(cors()); 




mongoose.connect(process.env.MONGO_URI, {
    useNewUrlParser: true,
    useUnifiedTopology: true
  })
  .then(() => console.log('MongoDB connected'))
  .catch(err => console.error('MongoDB connection error:', err));
  

app.use('/api/auth', authRoutes);
app.use('/api/tasks', taskRoutes);


app.listen(process.env.PORT, () =>
    console.log(`Server running on port ${process.env.PORT}`)
  );
  
MONGO_URI=mongodb://127.0.0.1:27017/taskdb
JWT_SECRET=mysecretkey
PORT=5000
//auth.js

const express = require('express');
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');
const User = require('../models/User');

const router = express.Router();

// Register
router.post('/register', async (req, res) => {
  const { name, email, password } = req.body;

  if (!name || !email || !password) {
    return res.status(400).json({ message: 'All fields are required' });
  }

  try {
    const existingUser = await User.findOne({ email });
    if (existingUser) {
      return res.status(400).json({ message: 'User already exists' });
    }

    const hashedPassword = await bcrypt.hash(password, 10);
    const newUser = new User({
      name,
      email,
      password: hashedPassword,
    });

    await newUser.save();

    res.status(201).json({ message: 'User registered successfully' });
  } catch (err) {
    console.error('Registration failed:', err);
    res.status(500).json({ message: 'Server error during registration' });
  }
});

// Login
router.post('/login', async (req, res) => {
  const { email, password } = req.body;

  try {
    const user = await User.findOne({ email });
    if (!user) return res.status(400).json({ message: 'Invalid credentials' });

    const isMatch = await bcrypt.compare(password, user.password);
    if (!isMatch) return res.status(400).json({ message: 'Invalid credentials' });

    const token = jwt.sign({ _id: user._id }, process.env.JWT_SECRET, {
      expiresIn: '1h'
    });

    res.json({ token });
  } catch (err) {
    console.error('Login failed:', err);
    res.status(500).json({ message: 'Server error during login' });
  }
});

module.exports = router;



//tasks.js

const express = require('express');
const TaskModel = require('../models/Task');
const authMiddleware = require('../middleware/authMiddleware'); // Authentication middleware
const router = express.Router();

// Apply authentication middleware to all routes in this file
router.use(authMiddleware);

// Create a new task
router.post('/create', async (req, res) => {
  const newTask = new TaskModel({
    ...req.body,
    assignedTo: req.user._id, // Assign the task to the authenticated user
  });
  try {
    await newTask.save();
    res.status(201).json(newTask); // Send the created task as response
  } catch (err) {
    res.status(500).json({ error: 'Error creating task' });
  }
});

// Get all tasks for the logged-in user
router.get('/all', async (req, res) => {
  try {
    const userTasks = await TaskModel.find({ assignedTo: req.user._id });
    res.status(200).json(userTasks);
  } catch (err) {
    res.status(500).json({ error: 'Error fetching tasks' });
  }
});

// Get a specific task by ID
router.get('/single/:taskId', async (req, res) => {
  try {
    const task = await TaskModel.findOne({ _id: req.params.taskId, assignedTo: req.user._id });
    if (!task) return res.status(404).json({ error: 'Task not found' });
    res.status(200).json(task);
  } catch (err) {
    res.status(500).json({ error: 'Error fetching task' });
  }
});

// Update a specific task
router.put('/update/:taskId', async (req, res) => {
  try {
    const updatedTask = await TaskModel.findOneAndUpdate(
      { _id: req.params.taskId, assignedTo: req.user._id },
      req.body,
      { new: true }
    );
    if (!updatedTask) return res.status(404).json({ error: 'Task not found' });
    res.status(200).json(updatedTask);
  } catch (err) {
    res.status(500).json({ error: 'Error updating task' });
  }
});

// Delete a task
router.delete('/delete/:taskId', async (req, res) => {
  try {
    const deletedTask = await TaskModel.findOneAndDelete({ _id: req.params.taskId, assignedTo: req.user._id });
    if (!deletedTask) return res.status(404).json({ error: 'Task not found' });
    res.status(200).json({ message: 'Task Deleted' });
  } catch (err) {
    res.status(500).json({ error: 'Error deleting task' });
  }
});

module.exports = router;
//index.html
<!DOCTYPE html>
<html>
<head>
  <title>Login</title>
</head>
<body>
  <h2>Login</h2>
  <input id="email" placeholder="Email" required><br>
  <input id="password" type="password" placeholder="Password" required><br>
  <button onclick="login()">Login</button>
  <p>No account? <a href="register.html">Register here</a></p>

  <script>
    const API = 'http://localhost:5000/api/auth';

    async function login() {
      const email = document.getElementById('email').value;
      const password = document.getElementById('password').value;

      if (!email || !password) {
        alert("Please fill in all fields");
        return;
      }

      try {
        const res = await fetch(`${API}/login`, {
          method: 'POST',
          headers: { 'Content-Type': 'application/json' },
          body: JSON.stringify({ email, password })
        });

        const data = await res.json();

        if (res.ok) {
          localStorage.setItem('token', data.token);
          alert('Login successful!');
          window.location.href = 'tasks.html';
        } else {
          alert(data.message || 'Login failed');
        }
      } catch (err) {
        console.error('Login error:', err);
        alert('Something went wrong. Please try again.');
      }
    }
  </script>
</body>
</html>


//register.html
<!DOCTYPE html>
<html>
<head>
  <title>Register</title>
</head>
<body>
  <h2>Register</h2>
  <input id="name" placeholder="Full Name" required><br>
  <input id="email" placeholder="Email" required><br>
  <input id="password" type="password" placeholder="Password" required><br>
  <button id="registerBtn">Register</button>
  <p>Already have an account? <a href="index.html">Login here</a></p>

  <script>
    const API = 'http://localhost:5000/api/auth';

    document.getElementById('registerBtn').addEventListener('click', async () => {
      const name = document.getElementById('name').value;
      const email = document.getElementById('email').value;
      const password = document.getElementById('password').value;

      if (!name || !email || !password) {
        return alert('All fields are required.');
      }

      try {
        const res = await fetch(`${API}/register`, {
          method: 'POST',
          headers: { 'Content-Type': 'application/json' },
          body: JSON.stringify({ name, email, password })
        });

        const data = await res.json();

        if (res.ok) {
          alert(data.message);
          window.location.href = 'index.html';
        } else {
          alert(data.message || 'Registration failed');
        }
      } catch (err) {
        console.error('Register error:', err);
        alert('Something went wrong. Try again.');
      }
    });
  </script>
</body>
</html>


//tasks.html

<!DOCTYPE html>
<html>
<head>
  <title>Task Management</title>
</head>
<body>
  <h2>Manage Your Tasks</h2>

  <div>
    <input id="taskTitle" placeholder="Enter Task Title"><br>
    <input id="taskDescription" placeholder="Enter Description"><br>
    <input id="taskDueDate" type="date"><br>
    <select id="taskStatus">
      <option value="pending">Pending</option>
      <option value="in-progress">In Progress</option>
      <option value="completed">Completed</option>
    </select><br><br>
    <button onclick="addNewTask()">Add New Task</button>
  </div>

  <h3>Task List</h3>
  <ul id="taskList"></ul>

  <script>
    const API_URL = 'http://localhost:5000/api/tasks';
    const userToken = localStorage.getItem('token');

    if (!userToken) {
      alert("You need to log in first.");
      window.location.href = "login.html"; // Redirect to login page if no token found
    }

    // Fetch and display all tasks
    async function getAllTasks() {
      try {
        const response = await fetch(API_URL + '/all', {
          headers: { Authorization: 'Bearer ' + userToken }
        });
        const tasks = await response.json();

        const taskListElement = document.getElementById('taskList');
        taskListElement.innerHTML = '';

        if (tasks.length === 0) {
          taskListElement.innerHTML = '<li>No tasks found.</li>';
        } else {
          tasks.forEach(task => {
            const taskItem = document.createElement('li');
            taskItem.innerHTML = `
              <b>${task.title}</b> - ${task.status}
              <button onclick="deleteTask('${task._id}')">Delete</button>
            `;
            taskListElement.appendChild(taskItem);
          });
        }
      } catch (err) {
        console.error("Fetching tasks failed:", err);
        alert("Error fetching tasks. Please try again.");
      }
    }

    // Add a new task
    async function addNewTask() {
      const title = document.getElementById('taskTitle').value.trim();
      const description = document.getElementById('taskDescription').value.trim();
      const dueDate = document.getElementById('taskDueDate').value;
      const status = document.getElementById('taskStatus').value;

      if (!title) {
        return alert("Title is required.");
      }

      try {
        const response = await fetch(API_URL + '/create', {
          method: 'POST',
          headers: {
            'Content-Type': 'application/json',
            Authorization: 'Bearer ' + userToken
          },
          body: JSON.stringify({ title, description, dueDate, status })
        });

        const responseData = await response.json();
        alert('Task added successfully!');
        getAllTasks();
      } catch (err) {
        console.error("Adding task failed:", err);
        alert("Could not add task.");
      }
    }

    // Delete a task by ID
    async function deleteTask(taskId) {
      if (!confirm("Are you sure you want to delete this task?")) return;

      try {
        const response = await fetch(`${API_URL}/delete/${taskId}`, {
          method: 'DELETE',
          headers: { Authorization: 'Bearer ' + userToken }
        });

        const responseData = await response.json();
        alert(responseData.message);
        getAllTasks();
      } catch (err) {
        console.error("Deleting task failed:", err);
        alert("Could not delete task.");
      }
    }

    // Load tasks when the page loads
    getAllTasks();
  </script>
</body>
</html>
//task.js

const mongoose = require('mongoose');

const TaskSchema = new mongoose.Schema({
  title: { type: String, required: true },
  description: String,
  status: { type: String, enum: ['pending', 'in-progress', 'completed'], default: 'pending' },
  dueDate: Date,
  assignedTo: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }
});

module.exports = mongoose.model('Task', TaskSchema);



//user.js
const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
  name: { type: String, required: true },
  email: { type: String, required: true, unique: true },
  password: { type: String, required: true },
  createdAt: { type: Date, default: Date.now }
});

module.exports = mongoose.model('User', UserSchema);

//authMiddleware.js

const jwt = require('jsonwebtoken');

module.exports = function (req, res, next) {
  
  const token = req.header('Authorization')?.split(' ')[1];

  if (!token) return res.status(401).send('Access Denied'); 

  try {

    const verified = jwt.verify(token, process.env.JWT_SECRET);
    req.user = verified; 
    next(); 
  } catch (err) {

    res.status(400).send('Invalid Token');
  }
};
To Deploy all the design for the one report----
CD K:\AosService\PackagesLocalDirectory\Plugins\AxReportVmRoleStartupTask\
.\DeployAllReportsToSSRS.ps1 -PackageInstallLocation "K:\AosService\PackagesLocalDirectory" -ReportName DrumLabel*
 
to deploy one desighn from report----
CD K:\AosService\PackagesLocalDirectory\Plugins\AxReportVmRoleStartupTask\
.\DeployAllReportsToSSRS.ps1 -PackageInstallLocation "K:\AosService\PackagesLocalDirectory" -ReportName DrumLabel.Medium_DualLang
 
TEXT(MONTH(DATEVALUE({!f_StartDateTimeWithTimeZoneOffset}))) & "/" &
TEXT(DAY(DATEVALUE({!f_StartDateTimeWithTimeZoneOffset}))) & "/" &
TEXT(YEAR(DATEVALUE({!f_StartDateTimeWithTimeZoneOffset}))) & " " &
IF(
    VALUE(MID(TEXT({!f_StartDateTimeWithTimeZoneOffset}), 12, 2)) = 0, 
    "12:" & 
    RIGHT("00" & MID(TEXT({!f_StartDateTimeWithTimeZoneOffset}), 15, 2), 2) & 
    " AM", 
    IF(
        VALUE(MID(TEXT({!f_StartDateTimeWithTimeZoneOffset}), 12, 2)) < 12,
        TEXT(VALUE(MID(TEXT({!f_StartDateTimeWithTimeZoneOffset}), 12, 2))) & ":" & 
        RIGHT("00" & MID(TEXT({!f_StartDateTimeWithTimeZoneOffset}), 15, 2), 2) & 
        " AM",
        IF(
            VALUE(MID(TEXT({!f_StartDateTimeWithTimeZoneOffset}), 12, 2)) = 12,
            "12:" & 
            RIGHT("00" & MID(TEXT({!f_StartDateTimeWithTimeZoneOffset}), 15, 2), 2) & 
            " PM",
            TEXT(VALUE(MID(TEXT({!f_StartDateTimeWithTimeZoneOffset}), 12, 2)) - 12) & ":" & 
            RIGHT("00" & MID(TEXT({!f_StartDateTimeWithTimeZoneOffset}), 15, 2), 2) & 
            " PM"
        )
    )
)
//f_GMTOffset
24 * (DATETIMEVALUE({!$Flow.CurrentDate}) - {!Convert_Today_To_DateTime.datetimeValue})

//Convert_Today_To_DateTime is an UnofficialSF Action - ConvertDateToDatetimeFlowAction

{!dateTimeVariable} + ({!f_GMTOffset}/24)

star

Mon Apr 21 2025 05:59:18 GMT+0000 (Coordinated Universal Time) https://rebootwebsites.co.za/how-to-create-an-advanced-slider-with-card-carousel-in-elementor-wordpress-tutorial/

@websplach #javascript

star

Mon Apr 21 2025 05:59:10 GMT+0000 (Coordinated Universal Time) https://rebootwebsites.co.za/how-to-create-an-advanced-slider-with-card-carousel-in-elementor-wordpress-tutorial/

@websplach #javascript

star

Mon Apr 21 2025 05:22:43 GMT+0000 (Coordinated Universal Time)

@codejck

star

Mon Apr 21 2025 05:21:48 GMT+0000 (Coordinated Universal Time)

@codejck

star

Mon Apr 21 2025 05:20:51 GMT+0000 (Coordinated Universal Time)

@codejck

star

Mon Apr 21 2025 05:19:41 GMT+0000 (Coordinated Universal Time)

@codejck

star

Mon Apr 21 2025 05:17:36 GMT+0000 (Coordinated Universal Time)

@codejck

star

Mon Apr 21 2025 05:16:41 GMT+0000 (Coordinated Universal Time)

@codejck

star

Sun Apr 20 2025 20:41:51 GMT+0000 (Coordinated Universal Time) https://www.shellscript.sh/

@lililld03 #sh

star

Sat Apr 19 2025 19:30:26 GMT+0000 (Coordinated Universal Time)

@agent302

star

Sat Apr 19 2025 14:56:12 GMT+0000 (Coordinated Universal Time)

@vjg #python

star

Sat Apr 19 2025 09:04:01 GMT+0000 (Coordinated Universal Time) https://www.pctipp.ch/praxis/datenverwaltung/windows-fehler-datei-oder-ordner-in-benutzung-aber-durch-wen-2012564.html

@2late #windows

star

Sat Apr 19 2025 05:26:22 GMT+0000 (Coordinated Universal Time) https://www.coinsclone.com/poloniex-clone-script/

@janetbrownjb #poloniexclonescript #cryptoexchangeclone #cryptocurrencyexchangedevelopment #whitelabelcryptoexchange #cryptotradingplatform

star

Sat Apr 19 2025 01:00:36 GMT+0000 (Coordinated Universal Time) https://www.cpagrip.com/admin/dash_tools_gpostback.php

@Mido4477

star

Fri Apr 18 2025 18:29:48 GMT+0000 (Coordinated Universal Time) https://voz.vn/t/them-nut-ignore-đoi-voi-tai-khoan-mod-hoac-chan-tai-khoan-mod-tham-gia-tranh-luan.1091590/

@abcabcabc

star

Fri Apr 18 2025 04:51:45 GMT+0000 (Coordinated Universal Time)

@SrijanVerma

star

Fri Apr 18 2025 04:27:06 GMT+0000 (Coordinated Universal Time)

@Ankur

star

Thu Apr 17 2025 21:02:12 GMT+0000 (Coordinated Universal Time) https://chatgpt.com/g/g-m5lMeGifF-sql-expert-querygpt/c/68016b0a-87fc-800c-9804-fcb8c0e53665

@GurhanKaya

star

Thu Apr 17 2025 12:17:09 GMT+0000 (Coordinated Universal Time) https://ollama.com/killrkingz/brandonjessup

@killrkingz

star

Thu Apr 17 2025 11:29:32 GMT+0000 (Coordinated Universal Time) https://www.coinsclone.com/cryptocurrency-wallet-development-company/

@CharleenStewar #multicurrencywallet #cryptowallet #cryptosecurity #cryptoadoption #digitalassets

star

Thu Apr 17 2025 08:25:08 GMT+0000 (Coordinated Universal Time) https://wisewaytec.com/crypto-marketing-agency/

@snehawt15

star

Thu Apr 17 2025 00:41:25 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Wed Apr 16 2025 10:08:26 GMT+0000 (Coordinated Universal Time) https://www.shoviv.com/blog/how-to-migrate-sharepoint-site-to-another-site/

@petergrew #english

star

Wed Apr 16 2025 09:58:44 GMT+0000 (Coordinated Universal Time) https://www.coinsclone.com/best-crypto-wallets/

@CharleenStewar #bestcryptowallets #topcryptowallets #cryptocurrencywallets

star

Wed Apr 16 2025 09:24:56 GMT+0000 (Coordinated Universal Time) https://www.newassignmenthelp.co.uk

@tracyscott790

star

Wed Apr 16 2025 05:58:50 GMT+0000 (Coordinated Universal Time) https://www.addustechnologies.com/p2e-nft-game-platform-development-company

@Seraphina

star

Tue Apr 15 2025 20:06:45 GMT+0000 (Coordinated Universal Time) https://github.com/ainextgentool/Free-Instagram-Follower-Generator-Tool

@extrememiniboat ##instagramfollower ##free

star

Tue Apr 15 2025 18:15:03 GMT+0000 (Coordinated Universal Time)

@sayedhurhussain

star

Tue Apr 15 2025 10:43:01 GMT+0000 (Coordinated Universal Time) https://www.coinsclone.com/cryptocurrency-exchange-business-plan/

@CharleenStewar #cryptocurrencyexchangebusinessplan #cryptocurrencyexchange #cryptoentrepreneur #cryptolaunch #cryptocurrencybusiness

star

Tue Apr 15 2025 09:13:46 GMT+0000 (Coordinated Universal Time) https://ottinfluence.com/best-influencer-marketing-agency-in-delhi/

@ottinfluence #influencermarketing agency delhi #influencermarketing agency in delhi #influenceragency india #influencermarketing agency india

star

Tue Apr 15 2025 07:47:05 GMT+0000 (Coordinated Universal Time)

@chatgpt4cham0

star

Tue Apr 15 2025 07:35:25 GMT+0000 (Coordinated Universal Time) https://www.uniccm.com/blog/how-to-use-sin-cos-tan-and-why-its-useful-for-your-career\

@mollietalbot #onlinecourses

star

Tue Apr 15 2025 06:35:56 GMT+0000 (Coordinated Universal Time) https://www.coinsclone.com/are-clone-scripts-legal-to-use/

@janetbrownjb #areclonescriptslegal #cryptoexchangecompliance #legalcryptoplatforms #clonescriptsexplained #cryptoregulations

star

Mon Apr 14 2025 17:49:18 GMT+0000 (Coordinated Universal Time)

@Hassnain_Abbas #html

star

Mon Apr 14 2025 17:30:20 GMT+0000 (Coordinated Universal Time)

@salam123

star

Mon Apr 14 2025 17:29:04 GMT+0000 (Coordinated Universal Time) https://i.imgur.com/DoWSbG3.png

@Y@sir

star

Mon Apr 14 2025 17:19:06 GMT+0000 (Coordinated Universal Time)

@salam123

star

Mon Apr 14 2025 17:16:09 GMT+0000 (Coordinated Universal Time)

@salam123

star

Mon Apr 14 2025 17:15:37 GMT+0000 (Coordinated Universal Time)

@salam123

star

Mon Apr 14 2025 17:14:03 GMT+0000 (Coordinated Universal Time)

@salam123

star

Mon Apr 14 2025 17:10:56 GMT+0000 (Coordinated Universal Time)

@salam123

star

Mon Apr 14 2025 17:08:25 GMT+0000 (Coordinated Universal Time)

@salam123

star

Mon Apr 14 2025 08:29:49 GMT+0000 (Coordinated Universal Time) https://www.linkedin.com/pulse/deploy-ssrs-reports-using-powershell-d365-fo-shayan-arshi

@Manjunath

star

Sun Apr 13 2025 23:00:56 GMT+0000 (Coordinated Universal Time)

@dannygelf #salesforce #screnflow #formula

star

Sun Apr 13 2025 22:59:22 GMT+0000 (Coordinated Universal Time)

@dannygelf #salesforce #screnflow #formula

Save snippets that work with our extensions

Available in the Chrome Web Store Get Firefox Add-on Get VS Code extension