added frontent authentication,backend ticket service, frontend ticket creation

This commit is contained in:
QkoSad
2022-12-10 11:15:53 +02:00
parent 8fd0b86492
commit 885cdfa7fe
34 changed files with 31084 additions and 1 deletions
@@ -0,0 +1,87 @@
import { createSlice, createAsyncThunk } from "@reduxjs/toolkit";
import ticketService from "./ticketService";
const initialState = {
tickets: [],
ticket: {},
isError: false,
isSuccess: false,
isLoading: false,
message: "",
};
export const ticketSlice = createSlice({
name: "ticket",
initialState,
reducers: {
reset: (state) => initialState,
},
extraReducers: (builder) => {
builder
.addCase(createTicket.pending, (state) => {
state.isLoading = true;
})
.addCase(createTicket.fulfilled, (state) => {
state.isLoading = false;
state.isSuccess = true;
})
.addCase(createTicket.rejected, (state, action) => {
state.isLoading = false;
state.isError = true;
state.message = action.payload;
})
.addCase(getTickets.pending, (state) => {
state.isLoading = true;
})
.addCase(getTickets.fulfilled, (state, action) => {
state.isLoading = false;
state.isSuccess = true;
state.tickets = action.payload;
})
.addCase(getTickets.rejected, (state, action) => {
state.isLoading = false;
state.isError = true;
state.message = action.payload;
});
},
});
export const getTickets = createAsyncThunk(
"tickets/getAll",
async (_, thunkAPI) => {
try {
const token = thunkAPI.getState().auth.user.token;
return await ticketService.getTickets(token);
} catch (error) {
const message =
(error.response &&
error.response.data &&
error.response.data.message) ||
error.message ||
error.toString();
return thunkAPI.rejectWithValue(message);
}
}
);
export const createTicket = createAsyncThunk(
"tickets/create",
async (ticketData, thunkAPI) => {
try {
const token = thunkAPI.getState().auth.user.token;
return await ticketService(ticketData, token);
} catch (error) {
const message =
(error.response &&
error.response.data &&
error.response.data.message) ||
error.message ||
error.toString();
return thunkAPI.rejectWithValue(message);
}
}
);
export const { reset } = ticketSlice.actions;
export default ticketSlice.reducer;