You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

318 lines
9.0 KiB

import { toast } from "react-toastify";
import { BookAction } from "../actions-type";
const initialState = {
loading: false,
error: null,
list: [],
info: null,
searchResult: [],
filterResult: [],
subjects: [],
levels: [],
sortFilters: ["مرتب سازی", "محبوب ترین", "جدیدترین"],
mockLessons: [
{
id: 0,
title:
"درس اول : چگونه با نیاندیشن آینده خود و اطرافیانمان را نابود کنیم؟ ",
duration: 256,
active: true,
files: [
{
type: "video",
name: "مقدمه ای جالب و قابل تامل مترجم کتاب",
duration: "1:40:00",
view: true,
download: true,
},
{
type: "video",
name: "مقدمه ای جالب و قابل تامل مترجم کتاب",
duration: "1:40:00",
view: true,
download: true,
},
{
type: "video",
name: "مقدمه ای جالب و قابل تامل مترجم کتاب",
duration: "1:40:00",
view: true,
download: false,
},
{
type: "video",
name: "مقدمه ای جالب و قابل تامل مترجم کتاب",
duration: "1:40:00",
view: false,
download: false,
},
{
type: "document",
name: "مقدمه ای جالب و قابل تامل مترجم کتاب",
duration: "1:40:00",
view: false,
download: false,
},
],
},
{
id: 1,
title:
"درس اول : چگونه با نیاندیشن آینده خود و اطرافیانمان را نابود کنیم؟ ",
duration: 256,
active: false,
files: [
{
type: "video",
name: "مقدمه ای جالب و قابل تامل مترجم کتاب",
duration: "1:40:00",
view: true,
download: true,
},
{
type: "video",
name: "مقدمه ای جالب و قابل تامل مترجم کتاب",
duration: "1:40:00",
view: true,
download: true,
},
{
type: "video",
name: "مقدمه ای جالب و قابل تامل مترجم کتاب",
duration: "1:40:00",
view: true,
download: false,
},
{
type: "video",
name: "مقدمه ای جالب و قابل تامل مترجم کتاب",
duration: "1:40:00",
view: false,
download: false,
},
{
type: "video",
name: "مقدمه ای جالب و قابل تامل مترجم کتاب",
duration: "1:40:00",
view: false,
download: false,
},
],
},
{
id: 2,
title:
"درس اول : چگونه با نیاندیشن آینده خود و اطرافیانمان را نابود کنیم؟ ",
duration: 256,
active: false,
files: [
{
type: "video",
name: "مقدمه ای جالب و قابل تامل مترجم کتاب",
duration: "1:40:00",
view: true,
download: true,
},
{
type: "video",
name: "مقدمه ای جالب و قابل تامل مترجم کتاب",
duration: "1:40:00",
view: true,
download: true,
},
{
type: "video",
name: "مقدمه ای جالب و قابل تامل مترجم کتاب",
duration: "1:40:00",
view: true,
download: false,
},
{
type: "video",
name: "مقدمه ای جالب و قابل تامل مترجم کتاب",
duration: "1:40:00",
view: false,
download: false,
},
{
type: "video",
name: "مقدمه ای جالب و قابل تامل مترجم کتاب",
duration: "1:40:00",
view: false,
download: false,
},
],
},
{
id: 3,
title:
"درس اول : چگونه با نیاندیشن آینده خود و اطرافیانمان را نابود کنیم؟ ",
duration: 256,
active: false,
files: [
{
type: "video",
name: "مقدمه ای جالب و قابل تامل مترجم کتاب",
duration: "1:40:00",
view: true,
download: true,
},
{
type: "video",
name: "مقدمه ای جالب و قابل تامل مترجم کتاب",
duration: "1:40:00",
view: true,
download: true,
},
{
type: "video",
name: "مقدمه ای جالب و قابل تامل مترجم کتاب",
duration: "1:40:00",
view: true,
download: false,
},
{
type: "video",
name: "مقدمه ای جالب و قابل تامل مترجم کتاب",
duration: "1:40:00",
view: false,
download: false,
},
{
type: "video",
name: "مقدمه ای جالب و قابل تامل مترجم کتاب",
duration: "1:40:00",
view: false,
download: false,
},
],
},
],
};
const grades = [
"پیش دبستان",
"اول",
"دوم",
"سوم",
"چهارم",
"پنجم",
"ششم",
"هفتم",
"هشتم",
"نهم",
"دهم",
"یازدهم",
"دوازدهم",
];
export default function book(state = initialState, action: BookAction) {
let { type, data } = action;
switch (type) {
case "book/list":
let itemsSubject = (Array.isArray(data) ? data : []).map(
(item, index) => item.name
);
if (window.innerWidth < 1000) {
itemsSubject.unshift("نام کتاب");
}
let itemsLevel = (Array.isArray(data) ? data : [])
.map((item) => item.gradeId * 1)
.sort((a, b) => a - b)
.map((e) => grades[e]);
if (window.innerWidth < 1000) {
itemsLevel.unshift("پایه تحصیلی");
}
return {
...state,
loading: false,
list: data,
subjects: Array.from(new Set(itemsSubject)),
levels: Array.from(new Set(itemsLevel)),
filterResult: data,
error: null,
};
case "book/info":
return { ...state, loading: false, info: data, error: null };
case "book/lesson/active":
return {
...state,
loading: false,
error: null,
mockLessons: state.mockLessons.map((item) =>
item.id === data
? { ...item, active: !item.active }
: { ...item, active: false }
),
};
// case "book/update":
// return { ...state, loading: false, error: null };
// case "book/add":
// return { ...state, loading: false, error: null };
// case "book/delete":
// return { ...state, loading: false, error: null };
// case "book/search":
// return { ...state };
// case "book/filter":
// const realList = state.list;
// const level = data.level;
// const subject = data.subject;
// const sort = data.sort;
// const search = data.search;
// if (level.length > 0 || subject.length > 0 || sort || search) {
// localStorage.setItem("filter", "ON");
// }
// let finalSort;
// let byLevelFilter = [];
// if (level.length > 0) {
// level.map((item1) => {
// for (let i = 0; i < realList.length; i++) {
// if (grades[realList[i].gradeId] === item1) {
// byLevelFilter.push(realList[i]);
// }
// }
// });
// } else {
// byLevelFilter = realList;
// }
// let bySubjectFilter = [];
// if (subject.length > 0) {
// subject.map((item1) => {
// for (let i = 0; i < byLevelFilter.length; i++) {
// if (byLevelFilter[i].name === item1) {
// bySubjectFilter.push(byLevelFilter[i]);
// }
// }
// });
// } else {
// bySubjectFilter = byLevelFilter;
// }
// const bySearchFilter = search
// ? bySubjectFilter.filter((item1) => item1.name.indexOf(search) !== -1)
// : bySubjectFilter;
// if (sort === "گران ترین") {
// finalSort = bySearchFilter.sort((item1, item2) => {
// return item1.product[0].price - item2.product[0].price;
// });
// } else {
// finalSort = bySearchFilter;
// }
// return {
// ...state,
// loading: false,
// error: null,
// filterResult: finalSort,
// };
case "book/loading":
return { ...state, loading: true };
case "book/error":
toast.error(data.message);
return { ...state, loading: false, error: data.message };
default:
return state;
}
}