Skip to content
This repository has been archived by the owner on Apr 28, 2024. It is now read-only.

Commit

Permalink
Merge pull request #387 from mupi/feature/class-plan-pdflinks
Browse files Browse the repository at this point in the history
Feature/class plan pdflinks
  • Loading branch information
GlauciaSchnoeller authored Feb 13, 2020
2 parents ed28175 + f5bb8ff commit fcf88e6
Show file tree
Hide file tree
Showing 65 changed files with 4,003 additions and 365 deletions.
14 changes: 14 additions & 0 deletions src/App.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ import {
ObjectBasePageContainer,
PublicDocumentPageContainer,
TopicBasePageContainer,
CreateClassPlanPageContainer,
EditClassPlanPageContainer,
ViewClassPlanPageContainer,
ManageClassPlansPageContainer,
} from 'containers';

import NotFoundPage from 'pages/NotFoundPage/NotFoundPage';
Expand Down Expand Up @@ -75,6 +79,8 @@ import {
faTags,
faCircle,
faTimes,
faLink,
faFilePdf,
} from '@fortawesome/free-solid-svg-icons';

import { ToastContainer } from 'react-toastify';
Expand All @@ -94,6 +100,8 @@ library.add(faEnvelope, faKey, faFileWord, faThumbtack, faPlus, faMinus, faFile,
faPlusCircle, faBookmark,
faCircle,
faTimes,
faLink,
faFilePdf,
fab);

class App extends Component {
Expand Down Expand Up @@ -154,6 +162,12 @@ class App extends Component {
<Route path="/nossos-planos" component={PricingPageHome} />
<Route path="/terms-use" component={TermsUsePageHome} />
<Route path="/topic-base/:page(\d+)" component={TopicBasePageContainer} />
<Route path="/create-classplan" component={CreateClassPlanPageContainer} />
<Route path="/edit-classplan/:id" component={EditClassPlanPageContainer} />
<Route path="/view-classplan/:id" component={ViewClassPlanPageContainer} />

<Route path="/class-plans/:page(\d+)" component={ManageClassPlansPageContainer} />

<Redirect from="/" to="/question-base/1" />
</Switch>
)
Expand Down
2 changes: 2 additions & 0 deletions src/ModalRoot.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ const MODAL_TYPES = {
createDocument: modalTypes.createDocument,
searchObjectModal: modalTypes.searchObjectModal,
createMyQuestionLabelModal: modalTypes.createMyQuestionLabelModal,
searchDocumentModal: modalTypes.searchDocumentModal,
};

const mapStateToProps = state => ({
Expand All @@ -38,6 +39,7 @@ const ModalContainer = (props) => {

if (modalType === 'document') modalClassName = 'modal-dialog modal-lg';
if (modalType === 'searchObjectModal') modalClassName = 'modal-dialog modal-xl modal-fixed';
if (modalType === 'searchDocumentModal') modalClassName = 'modal-dialog modal-xl modal-fixed';

const SpecifiedModal = MODAL_TYPES[modalType];

Expand Down
3 changes: 2 additions & 1 deletion src/Store.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import thunkMiddleware from 'redux-thunk';
import { connectRouter, routerMiddleware } from 'connected-react-router';
import {
login, menu, register, forgotPassword, profileEdit, question, filter, filterObject, session,
document, modal, header, topic, learningObject, suggestion, label,
document, modal, header, topic, learningObject, suggestion, label, classPlan,
} from 'reducers';

import { gtmMetaReducer, gtmMiddleware } from 'helpers/googletagmanager';
Expand Down Expand Up @@ -33,6 +33,7 @@ const appReducer = combineReducers({
gtmMetaReducer,
suggestion,
label,
classPlan,
});

const middlewares = [];
Expand Down
257 changes: 257 additions & 0 deletions src/actions/classPlanAction.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,257 @@
import {
classPlanService,
} from 'services';
import { toast } from 'react-toastify';
import { initialize } from 'redux-form';

import { history } from 'helpers';

const optionsSuccess = {
className: 'alert__ma-toast--success',
type: 'success',
};

// Load

export const FETCH_CLASS_PLAN = 'FETCH_CLASS_PLAN';
export const FETCH_CLASS_PLAN_SUCCESS = 'FETCH_CLASS_PLAN_SUCCESS';
export const FETCH_CLASS_PLAN_FAILURE = 'FETCH_CLASS_PLAN_FAILURE';

export const LIST_MY_CLASS_PLANS = 'LIST_MY_CLASS_PLANS';
export const LIST_MY_CLASS_PLANS_SUCCESS = 'LIST_MY_CLASS_PLANS_SUCCESS';
export const LIST_MY_CLASS_PLANS_FAILURE = 'LIST_MY_CLASS_PLANS_FAILURE';

export const CREATE_CLASS_PLAN = 'CREATE_CLASS_PLAN';
export const CREATE_CLASS_PLAN_SUCCESS = 'CREATE_CLASS_PLAN_SUCCESS';
export const CREATE_CLASS_PLAN_FAILURE = 'CREATE_CLASS_PLAN_FAILURE';

export const UPDATE_CLASS_PLAN = 'UPDATE_CLASS_PLAN';
export const UPDATE_CLASS_PLAN_SUCCESS = 'UPDATE_CLASS_PLAN_SUCCESS';
export const UPDATE_CLASS_PLAN_FAILURE = 'UPDATE_CLASS_PLAN_FAILURE';

export const DELETE_CLASS_PLAN = 'DELETE_CLASS_PLAN';
export const DELETE_CLASS_PLAN_SUCCESS = 'DELETE_CLASS_PLAN_SUCCESS';
export const DELETE_CLASS_PLAN_FAILURE = 'DELETE_CLASS_PLAN_FAILURE';

export const ADD_SELECTED_OBJECT_CLASS_PLAN = 'ADD_SELECTED_OBJECT_CLASS_PLAN';
export const REMOVE_SELECTED_OBJECT_CLASS_PLAN = 'REMOVE_SELECTED_OBJECT_CLASS_PLAN';
export const RESET_SELECTED_OBJECTLIST_CLASS_PLAN = 'RESET_SELECTED_OBJECTLIST_CLASS_PLAN';

export const ADD_SELECTED_DOCUMENT_CLASS_PLAN = 'ADD_SELECTED_DOCUMENT_CLASS_PLAN';
export const REMOVE_SELECTED_DOCUMENT_CLASS_PLAN = 'REMOVE_SELECTED_DOCUMENT_CLASS_PLAN';
export const RESET_SELECTED_DOCUMENTLIST_CLASS_PLAN = 'RESET_SELECTED_DOCUMENTLIST_CLASS_PLAN';

export const fetchClassPlan = (id) => {
function requestClassPlan() { return { type: FETCH_CLASS_PLAN }; }
function fetchClassPlanSuccess(activeClassPlan) { return { type: FETCH_CLASS_PLAN_SUCCESS, activeClassPlan }; }
function fetchClassPlanFailure(error) { return { type: FETCH_CLASS_PLAN_FAILURE, error }; }
return (dispatch) => {
dispatch(requestClassPlan(id));
return classPlanService.fetchClassPlan(id)
.then(
(activeClassPlan) => {
// initialize My Question Edit Page for owner's question
dispatch(initialize('edit-classplan', {
name: activeClassPlan.name,
disciplines: activeClassPlan.disciplines,
topics: activeClassPlan.topics,
teachingLevels: activeClassPlan.teaching_levels,
teachingYears: activeClassPlan.teaching_years,
duration: activeClassPlan.duration,
description: activeClassPlan.description,
pdf: activeClassPlan.pdf,
links: activeClassPlan.links,
comment: activeClassPlan.comment,
}));

dispatch(fetchClassPlanSuccess(activeClassPlan));
},
(error) => {
dispatch(fetchClassPlanFailure(error));
// history.push('/class-plans/1');
},
);
};
};


// List all class plans
export const listMyClassPlans = (page, orderField, order) => {
function requestMyListClassPlans() {
return {
type: LIST_MY_CLASS_PLANS,
page,
orderField,
order,
};
}

function fetchListMyClassPlansSuccess(classPlans) {
return {
type: LIST_MY_CLASS_PLANS_SUCCESS,
classPlans,
};
}

function fetchListMyClassPlansFailure(error) {
return {
type: LIST_MY_CLASS_PLANS_FAILURE,
error,
};
}
return (dispatch) => {
dispatch(requestMyListClassPlans(page, orderField, order));
return classPlanService.listMyClassPlans(page, orderField, order)
.then(
(classPlans) => {
dispatch(fetchListMyClassPlansSuccess(classPlans));
},
(error) => {
dispatch(fetchListMyClassPlansFailure(error));
},
);
};
};

// Create a new class plan
export const createClassPlan = (props) => {
function createNewClassPlan() {
return {
type: CREATE_CLASS_PLAN,
};
}

function createClassPlanSuccess(newClassPlan) {
return {
type: CREATE_CLASS_PLAN_SUCCESS,
newClassPlan,
};
}

function createClassPlanFailure(error) {
return {
type: CREATE_CLASS_PLAN_FAILURE,
error,
};
}
return (dispatch) => {
dispatch(createNewClassPlan(props));
return classPlanService.createClassPlan(props).then(
(newClassPlan) => {
dispatch(createClassPlanSuccess(newClassPlan));
history.push(`/view-classplan/${newClassPlan.id}`);
toast.success('Plano de aula criado com sucesso', optionsSuccess);
},
(error) => {
// toast.error('Ocorreu um erro com sua solicitação', optionsError);
dispatch(createClassPlanFailure(error));
},
);
};
};


// Function: Update a class plan
export const updateClassPlan = (props) => {
function updateActiveClassPlan() {
return {
type: UPDATE_CLASS_PLAN,
};
}

function updateClassPlanSuccess(activeClassPlan) {
return {
type: UPDATE_CLASS_PLAN_SUCCESS,
activeClassPlan,
};
}

function updateClassPlanFailure(error) {
return {
type: UPDATE_CLASS_PLAN_FAILURE,
error,
};
}
return (dispatch) => {
dispatch(updateActiveClassPlan(props));
return classPlanService.updateClassPlan(props).then(
(activeClassPlan) => {
toast.success('Plano de aula atualizado com sucesso', optionsSuccess);
dispatch(updateClassPlanSuccess(activeClassPlan));
},
(error) => {
dispatch(updateClassPlanFailure(error));
},
);
};
};


// delete a class plan
export const deleteClassPlan = (idClassPlan, isRedirect = false) => {
function deleteSelectedClassPlan() {
return {
type: DELETE_CLASS_PLAN,
};
}

function deleteClassPlanSuccess(idClassPlanRemoved) {
return {
type: DELETE_CLASS_PLAN_SUCCESS,
idClassPlanRemoved,
};
}

function deleteClassPlanFailure(error) {
return {
type: DELETE_CLASS_PLAN_FAILURE,
error,
};
}
return (dispatch) => {
dispatch(deleteSelectedClassPlan(idClassPlan));
return classPlanService.deleteClassPlan(idClassPlan)
.then(
(idClassPlanRemoved) => {
dispatch(deleteClassPlanSuccess(idClassPlanRemoved));
if (isRedirect) {
history.push('/class-plans/1');
}
},
(error) => {
dispatch(deleteClassPlanFailure(error));
},
);
};
};

// Add Selected Object to Class Plan
export const addSelectedObjectToClassPlan = selectedObject => ({
type: ADD_SELECTED_OBJECT_CLASS_PLAN, selectedObject,
});

// Remove Selected Object to Class Plan
export const removeSelectedObjectToClassPlan = idObject => ({
type: REMOVE_SELECTED_OBJECT_CLASS_PLAN, idObject,
});

// Reset Selected Object list before starting create/update class plan
export const resetSelectedObjects = () => ({
type: RESET_SELECTED_OBJECTLIST_CLASS_PLAN,
});


// Add Selected Document to Class Plan
export const addSelectedDocumentToClassPlan = selectedDocument => ({
type: ADD_SELECTED_DOCUMENT_CLASS_PLAN, selectedDocument,
});

// Remove Selected Document From Class Plan
export const removeSelectedDocumentFromClassPlan = idDocument => ({
type: REMOVE_SELECTED_DOCUMENT_CLASS_PLAN, idDocument,
});

// Reset Selected Document list before starting create/update class plan
export const resetSelectedDocuments = () => ({
type: RESET_SELECTED_DOCUMENTLIST_CLASS_PLAN,
});
36 changes: 36 additions & 0 deletions src/actions/documentAction.js
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,12 @@ export const GET_NUMBER_DOCX_DOWNLOADED = 'GET_NUMBER_DOCX_DOWNLOADED';
export const GET_NUMBER_DOCX_DOWNLOADED_SUCCESS = 'GET_NUMBER_DOCX_DOWNLOADED_SUCCESS';
export const GET_NUMBER_DOCX_DOWNLOADED_FAILURE = 'GET_NUMBER_DOCX_DOWNLOADED_FAILURE';

// List document from modal
export const LIST_MY_DOCUMENTS_MODAL = 'LIST_MY_DOCUMENTS_MODAL';
export const LIST_MY_DOCUMENTS_MODAL_SUCCESS = 'LIST_MY_DOCUMENTS_MODAL_SUCCESS';
export const LIST_MY_DOCUMENTS_MODAL_FAILURE = 'LIST_MY_DOCUMENTS_MODAL_FAILURE';
export const SET_CURRENT_PAGE_MODAL = 'SET_CURRENT_PAGE_MODAL';

const optionsError = {
className: 'alert__ma-toast--error',
type: 'error',
Expand Down Expand Up @@ -228,6 +234,36 @@ export const listMyDocuments = (page, orderField, order) => {
};
};


// List documents - Modal
export const listMyDocumentsModal = (currentPageModal) => {
function requestDocumentsModal() { return { type: LIST_MY_DOCUMENTS_MODAL, currentPageModal }; }
function requestDocumentsModalSuccess(documentPageModal) { return { type: LIST_MY_DOCUMENTS_MODAL_SUCCESS, documentPageModal }; }
function requestDocumentsModalFailure(error) { return { type: LIST_MY_DOCUMENTS_MODAL_FAILURE, error }; }
return (dispatch) => {
dispatch(requestDocumentsModal());
return documentService.listMyDocumentsCardsModal(currentPageModal).then(
(documentPageModal) => {
dispatch(requestDocumentsModalSuccess(documentPageModal));
/* dispatch(initialize('learningObjectSearchModal', {
searchTextObject: filterObject.searchTextObjectModal,
})); */
}, (error) => {
dispatch(requestDocumentsModalFailure(error));
/* dispatch(initialize('learningObjectSearchModal', {
searchTextObject: filterObject.searchTextObjectModal,
})); */
},
);
};
};

// Set page for search objects in modal
export const setCurrentPageModal = currentPageModal => ({
type: SET_CURRENT_PAGE_MODAL, currentPageModal,
});


// Shown in Top Menu - Only 5 documents
export const listMyLastDocuments = (page, orderField, order) => (dispatch) => {
const success = myLastDocumentsList => (
Expand Down
Loading

0 comments on commit fcf88e6

Please sign in to comment.