Duffer Derek

Current Path : /var/www/api-mk-planner.bitkit.dk/httpdocs/Frontend/src/utils/
Upload File :
Current File : /var/www/api-mk-planner.bitkit.dk/httpdocs/Frontend/src/utils/DateRangeSelectionHandle.js

import React from "react"; // Make sure to import React

import {
  addDays,
  endOfDay,
  format,
  sub,
  subWeeks,
  startOfISOWeek,
} from "date-fns";
import { useDataContext } from "../hooks/useDataContext";

const DateRangeSelectionHandle = ({ selectedOption }) => {
  const { filters, dispatch } = useDataContext();
  const today = new Date(); // Define 'today' variable here
  const DAYS_IN_TWO_WEEKS = endOfDay(addDays(today, 13));
  const DAYS_IN_ONE_MONTH = endOfDay(addDays(today, 29));
  const formattedToday = today.toISOString();
  const getStartOfWeek = (date) => {
    return addDays(date, 1 - date.getDay());
  };
  
  const getEndOfWeek = (date) => {
    return addDays(date, 7 - date.getDay());
  };
  
  const setFilterPayload = (startDate, endDate) => {
    dispatch({
      type: "SET_FILTERS",
      payload: {
        ...filters,
        startDate,
        endDate,
        selectedFilter: selectedOption,
        getSelectedMonth: null,
        getSelectedYear: null,
        getSelectedWeekNumbers: null,
      },
    });
  };
  switch (selectedOption) {
    case "this_week":
      const startOfWeek = format(getStartOfWeek(today), "MMMM dd yyyy");
      const endOfWeek = format(getEndOfWeek(today), "MMMM dd yyyy");
      setFilterPayload(startOfWeek, endOfWeek);
      break;
    case "next_14_days":
      setFilterPayload(today, DAYS_IN_TWO_WEEKS);
      break;
    case "next_30_days":
      setFilterPayload(today, DAYS_IN_ONE_MONTH);
      break;
    case "last_week":
      setFilterPayload(
        getStartOfWeek(sub(new Date(), { weeks: 1 })),
        getEndOfWeek(sub(new Date(), { weeks: 1 }))
      );
      break;
    case "last_14_days":
      setFilterPayload(sub(today, { days: 14 }), sub(new Date(), { days: 1 }));
      break;
    case "last_30_days":
      setFilterPayload(sub(today, { days: 30 }), sub(new Date(), { days: 1 }));
      break;
    case "clear":
      setFilterPayload(
        startOfISOWeek(subWeeks(new Date(), 5)),
        addDays(new Date(), 90)
      );
      break;
    default:
  }
};

export default DateRangeSelectionHandle;

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists