Classes display correctly, still need to work on lectures:
This commit is contained in:
		@@ -1,14 +1,12 @@
 | 
			
		||||
import React, { useState, createContext, useEffect } from 'react';
 | 
			
		||||
import { Course, Group, Basket } from '../types';
 | 
			
		||||
import { Course, Group, Basket, GroupType } from '../types';
 | 
			
		||||
import axios from 'axios';
 | 
			
		||||
 | 
			
		||||
interface CourseContext {
 | 
			
		||||
  courses: Array<Course>;
 | 
			
		||||
  choosenCourses: Array<Course>;
 | 
			
		||||
  choosenGroups: Array<Group>;
 | 
			
		||||
  basket: Array<Basket>;
 | 
			
		||||
  addToBasket: (courses: Basket) => void;
 | 
			
		||||
  addChoosenGroup: (group: Group, id: number) => void;
 | 
			
		||||
  addGroup: (group: Group, id: number) => void;
 | 
			
		||||
}
 | 
			
		||||
export const coursesContext = createContext<CourseContext | null>(null);
 | 
			
		||||
 | 
			
		||||
@@ -20,47 +18,28 @@ export const CoursesProvider = ({ children }: CoursesProviderProps) => {
 | 
			
		||||
  //fetch courses with groups
 | 
			
		||||
  const [courses, setCourses] = useState<Array<Course>>([]);
 | 
			
		||||
  const [basket, setBasket] = useState<Array<Basket>>([]);
 | 
			
		||||
  //with groups
 | 
			
		||||
  const [choosenCourses, setChoosenCourses] = useState<Array<Course>>([]);
 | 
			
		||||
  const [choosenGroups, setChoosenGroups] = useState<Array<Group>>([]);
 | 
			
		||||
 | 
			
		||||
  const addToBasket = (course: Basket) => setBasket([...basket, course]);
 | 
			
		||||
 | 
			
		||||
  useEffect(() => {
 | 
			
		||||
    console.log('BASKET');
 | 
			
		||||
    console.log(basket);
 | 
			
		||||
  }, [basket]);
 | 
			
		||||
 | 
			
		||||
  const addChoosenGroup = (choosenGroup: Group, id: number) => {
 | 
			
		||||
    //move to utilities
 | 
			
		||||
    //change type to group type from api
 | 
			
		||||
    function hasChoosenGroupType(type: string) {
 | 
			
		||||
      const res = choosenCourse.groups!.find((group) => group.type === type);
 | 
			
		||||
      console.log(`res is: ${JSON.stringify(res)}`);
 | 
			
		||||
      return !!res;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const choosenCourse = choosenCourses.find((cc) => cc.id === id)!;
 | 
			
		||||
  //immutability
 | 
			
		||||
 | 
			
		||||
  const addGroup = (choosenGroup: Group, id: number) => {
 | 
			
		||||
    const basketCourse = basket.filter((course) => course.id === id)[0];
 | 
			
		||||
    const type = choosenGroup.type;
 | 
			
		||||
    console.log(`group type is: ${type}`);
 | 
			
		||||
    if (hasChoosenGroupType(type)) {
 | 
			
		||||
      const group = choosenCourse.groups!.find((group) => group.type === type);
 | 
			
		||||
      console.log(`group is: ${JSON.stringify(group)}`);
 | 
			
		||||
      console.log(choosenCourse.groups);
 | 
			
		||||
      if (group) {
 | 
			
		||||
        group.type = type;
 | 
			
		||||
      }
 | 
			
		||||
      setChoosenGroups([...choosenGroups, choosenGroup]);
 | 
			
		||||
    } else {
 | 
			
		||||
      console.log('pierwsza grupa/wykłąd');
 | 
			
		||||
      //może być złe
 | 
			
		||||
      choosenCourse.groups!.push(choosenGroup);
 | 
			
		||||
      // setChoosenCourses(course => course.id === choosenCourse.id)
 | 
			
		||||
      setChoosenGroups([...choosenGroups, choosenGroup]);
 | 
			
		||||
    if (type === GroupType.CLASS) {
 | 
			
		||||
      setBasket(
 | 
			
		||||
        basket.map((basket) => (basket.id === basketCourse.id ? { ...basket, classes: choosenGroup } : basket)),
 | 
			
		||||
      );
 | 
			
		||||
    } else if (type === GroupType.LECTURE) {
 | 
			
		||||
      setBasket(
 | 
			
		||||
        basket.map((basket) => (basket.id === basketCourse.id ? { ...basket, lecture: choosenGroup } : basket)),
 | 
			
		||||
      );
 | 
			
		||||
    }
 | 
			
		||||
    console.log(`choosen courses after changing group: ${JSON.stringify(choosenCourses)}`);
 | 
			
		||||
 | 
			
		||||
    console.log(choosenCourse);
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  useEffect(() => {
 | 
			
		||||
@@ -79,8 +58,6 @@ export const CoursesProvider = ({ children }: CoursesProviderProps) => {
 | 
			
		||||
  }, []);
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
    <coursesContext.Provider value={{ courses, choosenGroups, choosenCourses, basket, addToBasket, addChoosenGroup }}>
 | 
			
		||||
      {children}
 | 
			
		||||
    </coursesContext.Provider>
 | 
			
		||||
    <coursesContext.Provider value={{ courses, basket, addToBasket, addGroup }}>{children}</coursesContext.Provider>
 | 
			
		||||
  );
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
export enum Types {
 | 
			
		||||
  addToBasket = 'ADD_CHOOSEN_COURSE',
 | 
			
		||||
  removeChoosenCourse = 'REMOVE_CHOOSEN_COURSE',
 | 
			
		||||
  addChoosenGroup = 'ADD_CHOOSEN_GROUP',
 | 
			
		||||
  addGroup = 'ADD_CHOOSEN_GROUP',
 | 
			
		||||
  removeChoosenGroup = 'REMOVE_CHOOSEN_GROUP',
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -21,7 +21,7 @@ export enum Types {
 | 
			
		||||
 | 
			
		||||
// export const choosenGroupsReducer = (state, action) => {
 | 
			
		||||
//   switch (action.type) {
 | 
			
		||||
//     case Types.addChoosenGroup:
 | 
			
		||||
//     case Types.addGroup:
 | 
			
		||||
//       return add;
 | 
			
		||||
//   }
 | 
			
		||||
// };
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user