From b82bc46293cbc8d7cfe12fee0d133011470ac361 Mon Sep 17 00:00:00 2001
From: Luis Felipe Risch <lfr20@inf.ufpr.br>
Date: Tue, 23 Feb 2021 10:00:53 -0300
Subject: [PATCH] finish to fix requests and removed uncesssary imports

---
 .../Components/DataCards/ActivityCard.js      |   1 -
 .../Components/DataCards/CollectionCard.js    |   1 -
 .../DataCards/CommunityQuestionCard.js        |   1 -
 .../Components/DataCards/ComplaintsCard.js    |  70 ++++------
 .../DataCards/EducationalObjectsCard.js       |  25 ++--
 .../Components/DataCards/InstitutionsCard.js  |   3 -
 .../Components/Inputs/CreateInstitution.js    |   3 -
 .../Components/Inputs/CreateLanguage.js       |   2 -
 .../Components/Inputs/CreateQuestion.js       |  20 +--
 .../Components/Inputs/CreateRating.js         |   1 -
 .../Components/Inputs/EditCollection.js       |   1 -
 .../Components/Inputs/EditEducationalObect.js | 132 +++++++++---------
 .../Components/Inputs/EditRating.js           |   1 -
 .../Components/Inputs/EmailInputs.js          |  38 ++---
 .../Components/Inputs/IntitutionsInputs.js    |   1 -
 src/Admin/Filters.js                          |   2 -
 src/Admin/Pages/Pages/Admin.js                |   7 +-
 src/Admin/Pages/Pages/SubPages/Collections.js |   3 +-
 src/Admin/Pages/Pages/SubPages/Complaints.js  | 108 +++++++-------
 .../Pages/SubPages/EducationalObjects.js      |   4 +-
 .../Pages/Pages/SubPages/Institutions.js      |   2 +-
 src/Admin/Pages/Pages/SubPages/Questions.js   | 103 ++++++++------
 22 files changed, 252 insertions(+), 277 deletions(-)

diff --git a/src/Admin/Components/Components/DataCards/ActivityCard.js b/src/Admin/Components/Components/DataCards/ActivityCard.js
index b3661ed8..517bb9a0 100644
--- a/src/Admin/Components/Components/DataCards/ActivityCard.js
+++ b/src/Admin/Components/Components/DataCards/ActivityCard.js
@@ -29,7 +29,6 @@ import { useStyles } from "../../Styles/DataCard";
 import Grid from "@material-ui/core/Grid";
 //imports from local files
 import { GetAData } from "../../../Filters";
-import { GetSpecificData } from '../../../Services';
 import { getRequest } from '../../../../Components/HelperFunctions/getAxiosConfig';
 import { Link } from 'react-router-dom'
 import LoadingSpinner from '../../../../Components/LoadingSpinner';
diff --git a/src/Admin/Components/Components/DataCards/CollectionCard.js b/src/Admin/Components/Components/DataCards/CollectionCard.js
index 54e3d3cb..e558eb75 100644
--- a/src/Admin/Components/Components/DataCards/CollectionCard.js
+++ b/src/Admin/Components/Components/DataCards/CollectionCard.js
@@ -31,7 +31,6 @@ import Grid from '@material-ui/core/Grid';
 import EditRoundedIcon from "@material-ui/icons/EditRounded";
 //imports from local files
 import { GetAData } from "../../../Filters";
-import { GetSpecificData } from '../../../Services';
 import { Link } from 'react-router-dom'
 import LoadingSpinner from '../../../../Components/LoadingSpinner';
 import { getRequest } from '../../../../Components/HelperFunctions/getAxiosConfig';
diff --git a/src/Admin/Components/Components/DataCards/CommunityQuestionCard.js b/src/Admin/Components/Components/DataCards/CommunityQuestionCard.js
index 83d7e6d9..cf52b6ac 100644
--- a/src/Admin/Components/Components/DataCards/CommunityQuestionCard.js
+++ b/src/Admin/Components/Components/DataCards/CommunityQuestionCard.js
@@ -33,7 +33,6 @@ import EmailRoundedIcon from '@material-ui/icons/EmailRounded';
 import { GetAData } from "../../../Filters";
 import { Store } from '../../../../Store';
 import { Link } from 'react-router-dom'
-import { GetSpecificData } from "../../../Services";
 import Unauthorized from "../Unauthorized";
 import { getRequest } from '../../../../Components/HelperFunctions/getAxiosConfig'
 import LoadingSpinner from '../../../../Components/LoadingSpinner';
diff --git a/src/Admin/Components/Components/DataCards/ComplaintsCard.js b/src/Admin/Components/Components/DataCards/ComplaintsCard.js
index cbf6c800..428284cf 100644
--- a/src/Admin/Components/Components/DataCards/ComplaintsCard.js
+++ b/src/Admin/Components/Components/DataCards/ComplaintsCard.js
@@ -40,12 +40,12 @@ import DialogTitle from '@material-ui/core/DialogTitle';
 import CircularProgress from '@material-ui/core/CircularProgress';
 //imports from local files
 import { GetAData, MethodsToComplain } from "../../../Filters";
-import { GetSpecificData, HandleComplain } from "../../../Services";
 import { Link } from "react-router-dom";
 import { CardActions } from "@material-ui/core";
 import { apiDomain } from '../../../../env';
 import LoadingSpinner from '../../../../Components/LoadingSpinner';
 import SnackBar from '../../../../Components/SnackbarComponent';
+import { getRequest, postRequest } from '../../../../Components/HelperFunctions/getAxiosConfig'
 //styles
 
 const PORTAL_MEC = "https://plataformaintegrada.mec.gov.br/";
@@ -103,26 +103,18 @@ const CollectionCard = ({ match }) => {
         setScroll(scrollType);
 
         if (!complainedObject) {
-            let headers = {
-                "Accept": "application/json",
-                "Content-Type": "application/json; charset=utf-8",
-                "access-token": sessionStorage.getItem("@portalmec/accessToken"),
-                "client": sessionStorage.getItem("@portalmec/clientToken"),
-                "uid": sessionStorage.getItem("@portalmec/uid"),
-                'If-None-Match': null
-            };
-
-            GetSpecificData(GetAData("learning_objects", item.complainable_id), headers).then(
-                (res) => {
-                    if (res.state) {
-                        HandleContentModal(res.data);
-                        setComplainedObject(res.data)
-                    } else {
-                        HandleContentModal();
-                    }
+            getRequest(
+                GetAData("learning_objects", item.complainable_id),
+                (data, header) => {
+                    HandleContentModal(data);
+                    setComplainedObject(data)
+                    setLoadingObject(false);            
+                },
+                (error) => {
+                    HandleContentModal();
                     setLoadingObject(false);
                 }
-            );
+            )
         } else {
             HandleContentModal(complainedObject);
             setLoadingObject(false);
@@ -271,7 +263,6 @@ const CollectionCard = ({ match }) => {
     }
 
     const HandleContentModal = (data) => {
-        const status = item.state;
         const ok = data ? true : false;
 
         if (ok) {
@@ -406,13 +397,16 @@ const CollectionCard = ({ match }) => {
     }
 
     const HandleComplainSubmmit = async (method) => {
-        HandleComplain(MethodsToComplain("complaints", match.params.id, method)).then((res) => {
-            if (res) {
+        postRequest(
+            MethodsToComplain("complaints", match.params.id, method),
+            {},
+            (data) => {
                 HandleSnack('Alteração feito com sucesso', true, 'success', '#228B22')
-            } else {
+            },
+            (error) => {
                 HandleSnack('Ocorreu algum erro', true, 'warning', '#FA8072')
             }
-        })
+        )
     }
 
     // Handle snack infos
@@ -426,25 +420,17 @@ const CollectionCard = ({ match }) => {
     }
 
     useEffect(() => {
-        let headers = {
-            Accept: "application/json",
-            "Content-Type": "application/json; charset=utf-8",
-            "access-token": sessionStorage.getItem("@portalmec/accessToken"),
-            client: sessionStorage.getItem("@portalmec/clientToken"),
-            uid: sessionStorage.getItem("@portalmec/uid"),
-        };
-
-        GetSpecificData(GetAData("complaints", match.params.id), headers).then(
-            (res) => {
-                if (res.state) {
-                    setItem(res.data)
-                    setIsLoaded(true);
-                    setError(false);
-                } else {
-                    setError(true);
-                }
+        getRequest(
+            GetAData("complaints", match.params.id),
+            (data, header) => {
+                setItem(data)
+                setIsLoaded(true);
+                setError(false);
+            },
+            (error) => {
+                setError(true);
             }
-        );
+        )   
     }, []);
 
     if (error) {
diff --git a/src/Admin/Components/Components/DataCards/EducationalObjectsCard.js b/src/Admin/Components/Components/DataCards/EducationalObjectsCard.js
index 3cd89ced..de37dc84 100644
--- a/src/Admin/Components/Components/DataCards/EducationalObjectsCard.js
+++ b/src/Admin/Components/Components/DataCards/EducationalObjectsCard.js
@@ -32,13 +32,12 @@ import { useStyles } from "../../Styles/DataCard";
 //imports from local files
 import { GetAData } from "../../../Filters";
 import { Link } from "react-router-dom";
-import { GetSpecificData } from "../../../Services";
 import { apiUrl, apiDomain } from "../../../../env";
 import { Grid } from "@material-ui/core";
 import LoadingSpinner from '../../../../Components/LoadingSpinner';
+import { getRequest } from '../../../../Components/HelperFunctions/getAxiosConfig'
 
 const CommunityQuestions = ({ match }) => {
-    console.log(match);
     const classes = useStyles();
 
     const [error, setError] = useState(null); //Necessary to consult the API, catch errors
@@ -53,18 +52,18 @@ const CommunityQuestions = ({ match }) => {
     };
 
     useEffect(() => {
-        GetSpecificData(GetAData("learning_objects", match.params.id)).then(
-            (res) => {
-                if (res.state) {
-                    setItem(res.data);
-                    setIsLoaded(true);
-                    setError(false);
-                } else {
-                    setIsLoaded(true);
-                    setError(true);
-                }
+        getRequest(
+            GetAData("learning_objects", match.params.id),
+            (data, header) => {
+                setItem(data);
+                setIsLoaded(true);
+                setError(false);
+            },
+            (error) => {
+                setIsLoaded(true);
+                setError(true);
             }
-        );
+        )
     }, []);
 
     if (error) {
diff --git a/src/Admin/Components/Components/DataCards/InstitutionsCard.js b/src/Admin/Components/Components/DataCards/InstitutionsCard.js
index 58eb2da9..1c2e1b7d 100644
--- a/src/Admin/Components/Components/DataCards/InstitutionsCard.js
+++ b/src/Admin/Components/Components/DataCards/InstitutionsCard.js
@@ -37,9 +37,6 @@ import { Link } from 'react-router-dom';
 import LoadingSpinner from '../../../../Components/LoadingSpinner';
 
 const InstitutionCard = ({ match }) => {
-    console.log(match);
-
-    const { state, dispatch } = useContext(Store);
     const classes = useStyles();
 
     const [error, setError] = useState(null); //Necessary to consult the API, catch errors
diff --git a/src/Admin/Components/Components/Inputs/CreateInstitution.js b/src/Admin/Components/Components/Inputs/CreateInstitution.js
index 1e01b54e..303b403a 100644
--- a/src/Admin/Components/Components/Inputs/CreateInstitution.js
+++ b/src/Admin/Components/Components/Inputs/CreateInstitution.js
@@ -26,13 +26,10 @@ import CircularProgress from '@material-ui/core/CircularProgress';
 import AddRoundedIcon from '@material-ui/icons/AddRounded';
 import ListRoundedIcon from '@material-ui/icons/ListRounded';
 //imports local files
-import { apiUrl } from '../../../../env';
 import SnackBar from '../../../../Components/SnackbarComponent';
 import { Store } from '../../../../Store';
 import { postRequest } from '../../../../Components/HelperFunctions/getAxiosConfig'
 import Unauthorized from '../Unauthorized';
-//imports services 
-import { Create } from '../../../Services';
 //router
 import { Link } from 'react-router-dom';
 
diff --git a/src/Admin/Components/Components/Inputs/CreateLanguage.js b/src/Admin/Components/Components/Inputs/CreateLanguage.js
index 9ccbf4cd..95a59063 100644
--- a/src/Admin/Components/Components/Inputs/CreateLanguage.js
+++ b/src/Admin/Components/Components/Inputs/CreateLanguage.js
@@ -29,8 +29,6 @@ import ListRoundedIcon from '@material-ui/icons/ListRounded';
 import SnackBar from '../../../../Components/SnackbarComponent';
 import { Store } from '../../../../Store';
 import { postRequest } from '../../../../Components/HelperFunctions/getAxiosConfig'
-//imports services 
-import { Create } from '../../../Services';
 //router
 import { Link } from 'react-router-dom';
 import Unauthorized from '../Unauthorized';
diff --git a/src/Admin/Components/Components/Inputs/CreateQuestion.js b/src/Admin/Components/Components/Inputs/CreateQuestion.js
index 6a4a6640..70714f7f 100644
--- a/src/Admin/Components/Components/Inputs/CreateQuestion.js
+++ b/src/Admin/Components/Components/Inputs/CreateQuestion.js
@@ -27,12 +27,10 @@ import AddRoundedIcon from '@material-ui/icons/AddRounded';
 import MenuItem from "@material-ui/core/MenuItem";
 import ListRoundedIcon from '@material-ui/icons/ListRounded';
 //imports local files
-import { apiUrl } from '../../../../env';
 import { Store } from '../../../../Store';
+import { postRequest } from '../../../../Components/HelperFunctions/getAxiosConfig'
 import Unauthorized from '../Unauthorized';
 import SnackBar from '../../../../Components/SnackbarComponent';
-//imports services 
-import { Create } from '../../../Services';
 //router
 import { Link } from 'react-router-dom';
 
@@ -109,21 +107,25 @@ const CreateQuestion = (props) => {
     async function onSubmit() {
         setIsLoading(true)
         if (!isEmpty(status) && !isEmpty(description)) {
-            const api = apiUrl + '/questions'
+            const api = '/questions'
             const body = {
                 "question": {
                     'status': status,
                     'description': description,
                 }
             }
-            Create(api, body).then(res => {
-                if (res) {
+            postRequest(
+                api,
+                body,
+                (data) => {
                     HandleSnack('A pergunta foi criada com sucesso', true, 'success', '#228B22')
-                } else {
+                    setIsLoading(false)
+                },
+                (error) => {
                     HandleSnack('Ocorreu algum erro', true, 'warning', '#FA8072')
+                    setIsLoading(false)
                 }
-                setIsLoading(false)
-            })
+            )
         } else {
             HandleSnack('Você precisa preencher algumas informações obrigatórias', true, 'warning', '#FFC125')
             if (isEmpty(status)) {
diff --git a/src/Admin/Components/Components/Inputs/CreateRating.js b/src/Admin/Components/Components/Inputs/CreateRating.js
index 857f32ec..58c2bca1 100644
--- a/src/Admin/Components/Components/Inputs/CreateRating.js
+++ b/src/Admin/Components/Components/Inputs/CreateRating.js
@@ -26,7 +26,6 @@ import CircularProgress from '@material-ui/core/CircularProgress';
 import AddRoundedIcon from '@material-ui/icons/AddRounded';
 import ListRoundedIcon from '@material-ui/icons/ListRounded';
 //imports local files
-import { apiUrl } from '../../../../env';
 import { Store } from '../../../../Store';
 import SnackBar from '../../../../Components/SnackbarComponent';
 //imports services 
diff --git a/src/Admin/Components/Components/Inputs/EditCollection.js b/src/Admin/Components/Components/Inputs/EditCollection.js
index ca2e54b2..04cf45c7 100644
--- a/src/Admin/Components/Components/Inputs/EditCollection.js
+++ b/src/Admin/Components/Components/Inputs/EditCollection.js
@@ -32,7 +32,6 @@ import Unauthorized from '../Unauthorized';
 import { getRequest, postRequest } from '../../../../Components/HelperFunctions/getAxiosConfig'
 import { Store } from '../../../../Store';
 import LoadingSpinner from '../../../../Components/LoadingSpinner';
-//imports services 
 import { EditFilter, GetAData } from '../../../Filters';
 //routers
 import { Link } from 'react-router-dom';
diff --git a/src/Admin/Components/Components/Inputs/EditEducationalObect.js b/src/Admin/Components/Components/Inputs/EditEducationalObect.js
index 28d3ae4f..ceae8f64 100644
--- a/src/Admin/Components/Components/Inputs/EditEducationalObect.js
+++ b/src/Admin/Components/Components/Inputs/EditEducationalObect.js
@@ -18,7 +18,7 @@ along with Plataforma Integrada MEC.  If not, see <http://www.gnu.org/licenses/>
 
 import React, { useState, useEffect, useRef, useContext } from "react";
 import PropTypes from "prop-types";
-import SwipeableViews from "react-swipeable-views"; 
+import SwipeableViews from "react-swipeable-views";
 import moment from 'moment';
 //imports material ui components
 import { Typography, TextField, Button, Grid } from "@material-ui/core";
@@ -41,8 +41,7 @@ import SnackBar from "../../../../Components/SnackbarComponent";
 import { Store } from '../../../../Store';
 import Unauthorized from '../Unauthorized';
 import LoadingSpinner from '../../../../Components/LoadingSpinner';
-//imports services
-import { Edit, GetFullList, GetSpecificData} from "../../../Services";
+import { getRequest, postRequest, putRequest } from '../../../../Components/HelperFunctions/getAxiosConfig'
 import { EditFilter, GetAData, Url } from "../../../Filters";
 //routers
 import { Link } from "react-router-dom";
@@ -181,36 +180,38 @@ const EditEducationalObject = ({ match }) => {
     const onChangeObjectHandler = async (e) => {
         currObjTypePage = 0;
         currObjTypeFilter = e.target.value;
-        GetFullList(
+        getRequest(
             Url(
                 "object_types",
                 `"name" : "${currObjTypeFilter}"`,
                 currObjTypePage,
                 "DESC"
-            )
-        ).then((res) => {
-            if (res.state) {
-                if(res.data.length === 0) HandleSnack("Não há nenhum tipo de objeto educacional com esse nome", true, "warning", "#FFC125"); 
-                setListOfObjectTypes([...res.data]);
-            } else {
+            ),
+            (data, header) => {
+                if (data.length === 0)
+                    HandleSnack("Não há nenhum tipo de objeto educacional com esse nome", true, "warning", "#FFC125");
+                setListOfObjectTypes([...data]);
+            },
+            (error) => {
                 HandleSnack("Erro ao pegar os dados", true, "warning", "#FA8072");
             }
-        });
+        )
     };
 
     const OnChangeLanguageHandler = async (e) => {
         currLanPage = 0;
         currLanFilter = e.target.value;
-        GetFullList(
-            Url("languages", `"name" : "${currLanFilter}"`, currLanPage, "DESC")
-        ).then((res) => {
-            if (res.state) {
-                if(res.data.length === 0) HandleSnack("Não há nenhuma linguagem com esse nome", true, "warning", "#FFC125"); 
-                setListOfLanguages([...res.data]);
-            } else {
+        getRequest(
+            Url("languages", `"name" : "${currLanFilter}"`, currLanPage, "DESC"),
+            (data, header) => {
+                if (data.length === 0)
+                    HandleSnack("Não há nenhuma linguagem com esse nome", true, "warning", "#FFC125");
+                setListOfLanguages([...data]);
+            },
+            (error) => {
                 HandleSnack("Erro ao pegar os dados", true, "warning", "#FA8072");
             }
-        });
+        )
     };
 
     const HandleLanguageScroll = async (e) => {
@@ -218,12 +219,11 @@ const EditEducationalObject = ({ match }) => {
             e.target.scrollHeight - e.target.scrollTop === e.target.clientHeight;
         if (bottom) {
             currLanPage++;
-            GetFullList(
-                Url("languages", `"name" : "${currLanFilter}"`, currLanPage, "DESC")
-            ).then((res) => {
-                if (res.state) {
-                    if (res.data.length >= 1) {
-                        const currData = listOfLanguages.concat(res.data);
+            getRequest(
+                Url("languages", `"name" : "${currLanFilter}"`, currLanPage, "DESC"),
+                (data, header) => {
+                    if (data.length >= 1) {
+                        const currData = listOfLanguages.concat(data);
                         setListOfLanguages(currData);
                     } else {
                         HandleSnack(
@@ -233,7 +233,8 @@ const EditEducationalObject = ({ match }) => {
                             "#FFC125"
                         );
                     }
-                } else {
+                },
+                (error) => {
                     HandleSnack(
                         "Erro ao carregar as linguagens",
                         true,
@@ -241,7 +242,7 @@ const EditEducationalObject = ({ match }) => {
                         "#FA8072"
                     );
                 }
-            });
+            )
         }
     };
 
@@ -250,12 +251,11 @@ const EditEducationalObject = ({ match }) => {
             e.target.scrollHeight - e.target.scrollTop === e.target.clientHeight;
         if (bottom) {
             currObjTypePage++;
-            GetFullList(
-                Url("languages", `"name" : "${currObjTypeFilter}"`, currObjTypePage, "DESC")
-            ).then((res) => {
-                if (res.state) {
-                    if (res.data.length >= 1) {
-                        const currData = listOfLanguages.concat(res.data);
+            getRequest(
+                Url("languages", `"name" : "${currObjTypeFilter}"`, currObjTypePage, "DESC"),
+                (data, header) => {
+                    if (data.length >= 1) {
+                        const currData = listOfLanguages.concat(data);
                         setListOfObjectTypes(currData);
                     } else {
                         HandleSnack(
@@ -265,7 +265,8 @@ const EditEducationalObject = ({ match }) => {
                             "#FFC125"
                         );
                     }
-                } else {
+                },
+                (error) => {
                     HandleSnack(
                         "Erro ao carregar os objetos educacionais",
                         true,
@@ -273,7 +274,7 @@ const EditEducationalObject = ({ match }) => {
                         "#FA8072"
                     );
                 }
-            });
+            )
         }
     };
 
@@ -287,9 +288,9 @@ const EditEducationalObject = ({ match }) => {
         setLanguagesID(currSelectedLanguages);
     };
 
-    const HandleObjectTypePressed = (id, name) => { 
+    const HandleObjectTypePressed = (id, name) => {
         setObjectTypeID(id);
-        setObjectTypeName(name); 
+        setObjectTypeName(name);
     };
 
     //Verify if the string is empty
@@ -374,38 +375,41 @@ const EditEducationalObject = ({ match }) => {
 
     //handle submit
     const onSubmit = async () => {
-        console.log(languagesID);
         setIsLoading(true);
         if (
             !isEmpty(name) &&
             !isEmpty(owner) &&
             !isEmpty(author) &&
-            !isEmpty(languagesID)&&
+            !isEmpty(languagesID) &&
             !isEmpty(objectTypeID)
         ) {
             const api = EditFilter("learning_objects", id);
             const body = {
-                learning_object: {
-                    author: author,
-                    name: name,
-                    description: description,
-                    object_type_id: objectTypeID,
-                    language_ids: languagesID,
+                "learning_object": {
+                    "author": author,
+                    "name": name,
+                    "description": description,
+                    "object_type_id": objectTypeID,
+                    "language_ids": languagesID,
                 },
             };
-            Edit(api, body).then((res) => {
-                if (res) {
+            putRequest(
+                api,
+                body,
+                (data, header) => {
                     HandleSnack(
                         "O objeto educacional foi alterada com sucesso",
                         true,
                         "success",
                         "#228B22"
                     );
-                } else {
+                    setIsLoading(false);
+                },
+                (error) => {
                     HandleSnack("Ocorreu algum erro", true, "warning", "#FA8072");
+                    setIsLoading(false);
                 }
-                setIsLoading(false);
-            });
+            )
         } else {
             HandleSnack(
                 "Você precisa preencher algumas informações obrigatórias",
@@ -500,7 +504,7 @@ const EditEducationalObject = ({ match }) => {
             default: true,
             type: "text",
         },
-    ]; 
+    ];
 
     const CheckUserPermission = () => {
         let canUserEdit = false;
@@ -520,23 +524,23 @@ const EditEducationalObject = ({ match }) => {
 
 
     useEffect(() => {
-        GetSpecificData(GetAData("learning_objects", match.params.id))
-            .then((res) => {
-                if(res.state){
-                    SaveData(res.data);
-                    setIsLoaded(true);
-                }
-                else{
-                    setError(true);
-                }
-            });
+        getRequest(
+            GetAData("learning_objects", match.params.id),
+            (data, header) => {
+                SaveData(data);
+                setIsLoaded(true);
+            },
+            (error) => {
+                setError(true);
+            }
+        )
     }, []);
 
     if (error) {
         return <div> Houve um erro... </div>;
     } else if (!isLoaded) {
-        return <LoadingSpinner text="Carregando..."/>
-    } else if(CheckUserPermission()){
+        return <LoadingSpinner text="Carregando..." />
+    } else if (CheckUserPermission()) {
         return (
             <Card variant="outlined">
                 <SnackBar
@@ -729,7 +733,7 @@ const EditEducationalObject = ({ match }) => {
                 </CardAction>
             </Card>
         );
-    } else return <Unauthorized/>
+    } else return <Unauthorized />
 };
 
 export default EditEducationalObject;
diff --git a/src/Admin/Components/Components/Inputs/EditRating.js b/src/Admin/Components/Components/Inputs/EditRating.js
index de22687e..d9467ebe 100644
--- a/src/Admin/Components/Components/Inputs/EditRating.js
+++ b/src/Admin/Components/Components/Inputs/EditRating.js
@@ -30,7 +30,6 @@ import SnackBar from '../../../../Components/SnackbarComponent';
 import { Store } from '../../../../Store';
 import LoadingSpinner from '../../../../Components/LoadingSpinner';
 //imports services 
-import { Edit } from '../../../Services';
 import { getRequest, putRequest } from '../../../../Components/HelperFunctions/getAxiosConfig'
 import { EditFilter, GetAData } from '../../../Filters';
 //routers
diff --git a/src/Admin/Components/Components/Inputs/EmailInputs.js b/src/Admin/Components/Components/Inputs/EmailInputs.js
index f3105743..53073aa5 100644
--- a/src/Admin/Components/Components/Inputs/EmailInputs.js
+++ b/src/Admin/Components/Components/Inputs/EmailInputs.js
@@ -31,8 +31,7 @@ import Paper from "@material-ui/core/Paper";
 import IconButton from "@material-ui/core/IconButton";
 //imports from local files
 import SnackBar from "../../../../Components/SnackbarComponent";
-import { SendEmail } from "../../../Services";
-import { apiUrl } from "../../../../env";
+import { postRequest } from '../../../../Components/HelperFunctions/getAxiosConfig'
 //Jodit
 // import JoditEditor from "jodit-react";
 
@@ -297,30 +296,35 @@ const EmailInputs = (props) => {
             !isEmpty(subject) &&
             (!isEmpty(emailsAdress) || !isEmpty(rolesArr) || sendToAll)
         ) {
-            const api = `${apiUrl}/email`;
+            const api = `/email`;
             const body = {
-                email: {
-                    all_users: sendToAll,
-                    subject: subject,
-                    body: message,
-                    emails: emailsAdress,
-                    roles: rolesArr,
+                "email": {
+                    "all_users": sendToAll,
+                    "subject": subject,
+                    "body": message,
+                    "emails": emailsAdress,
+                    "roles": rolesArr,
                 },
             };
-            SendEmail(api, body).then((res) => {
-                if (res) {
+            postRequest(
+                api,
+                body,
+                (data, header) => {
                     HandleSnack(
                         "O email foi enviado com sucesso",
                         true,
                         "success",
                         "#228B22"
                     );
-                } else {
+                    setIsSending(false);
+                    CleanFields();
+                },
+                (error) => {
                     HandleSnack("Ocorreu algum erro", true, "warning", "#FA8072");
+                    setIsSending(false);
+                    CleanFields();
                 }
-                setIsSending(false);
-                CleanFields();
-            });
+            )
         } else {
             HandleSnack(
                 "Você precisa preencher algumas informações obrigatórias",
@@ -482,7 +486,7 @@ const EmailInputs = (props) => {
                     onChange={SubjectHandler}
                     variant="outlined"
                 />
-            </form> 
+            </form>
 
             <div style={{ height: "1em" }} />
 
@@ -497,7 +501,7 @@ const EmailInputs = (props) => {
                 /> */}
             </div>
 
-            <div style={{fontSize : 14}}>
+            <div style={{ fontSize: 14 }}>
                 * Se você deseja enviar foto da sua máquina, é preciso <a href="mailto:name@email.com">Clicar aqui</a>
             </div>
 
diff --git a/src/Admin/Components/Components/Inputs/IntitutionsInputs.js b/src/Admin/Components/Components/Inputs/IntitutionsInputs.js
index 0c3c9618..17d85fcc 100644
--- a/src/Admin/Components/Components/Inputs/IntitutionsInputs.js
+++ b/src/Admin/Components/Components/Inputs/IntitutionsInputs.js
@@ -32,7 +32,6 @@ import SnackBar from '../../../../Components/SnackbarComponent';
 import { Store } from '../../../../Store';
 import LoadingSpinner from '../../../../Components/LoadingSpinner';
 //imports services 
-import { Edit } from '../../../Services';
 import { putRequest, getRequest } from '../../../../Components/HelperFunctions/getAxiosConfig'
 import { EditFilter, GetAData } from '../../../Filters';
 //Routers
diff --git a/src/Admin/Filters.js b/src/Admin/Filters.js
index 72adb6b8..a36451c6 100644
--- a/src/Admin/Filters.js
+++ b/src/Admin/Filters.js
@@ -16,8 +16,6 @@ GNU Affero General Public License for more details.
 You should have received a copy of the GNU Affero General Public License
 along with Plataforma Integrada MEC.  If not, see <http://www.gnu.org/licenses/>.*/
 
-import { apiUrl } from '../env';
-
 export function Url(type, filter, page , sort) {
     const api = `/${type}?filter={${filter}}&page=${page}&range=[0,9]&results_per_page=10&sort=["id","${sort}"]`
     return (api)
diff --git a/src/Admin/Pages/Pages/Admin.js b/src/Admin/Pages/Pages/Admin.js
index 607dd85d..b9fde3e5 100644
--- a/src/Admin/Pages/Pages/Admin.js
+++ b/src/Admin/Pages/Pages/Admin.js
@@ -33,7 +33,6 @@ import { BrowserRouter, Switch, Route, Link } from 'react-router-dom';
 //imports from local files
 import { TabsItens } from '../AdminLabelTabs/LabelTabs';
 import { Store } from '../../../Store';
-import Unauthorized from '../../Components/Components/Unauthorized';
 import Welcome from '../../Components/Components/Welcome';
 import NoteVariables from './SubPages/NoteVariables';
 import Institution from './SubPages/Institutions';
@@ -72,7 +71,6 @@ import EducationalObjectEdit from '../../Components/Components/Inputs/EditEducat
 
 import Complaints from './SubPages/Complaints';
 import ComplaintCard from '../../Components/Components/DataCards/ComplaintsCard';
-import { match } from 'assert';
 
 const useStyles = makeStyles({
     list: {
@@ -93,7 +91,6 @@ const fab = {
 }
 
 export default function Admin() {
-    const { state, dispatch } = useContext(Store);
     const classes = useStyles();
 
     //State of the Drawer
@@ -101,8 +98,6 @@ export default function Admin() {
         left: false
     });
 
-    const [IndexIcon, setIndexIcon] = useState(0);
-
     {/**************** Controlls the state of the Drawer ****************/ }
     const toggleDrawer = (anchor, open) => (event) => {
         if (event.type === 'keydown' && (event.key === 'Tab' || event.key === 'Shift')) {
@@ -125,7 +120,7 @@ export default function Admin() {
             <List>
                 {TabsItens.map((text, index) => (
                     <Link to={text.href} key={text.label} style={{ color: "black" }}>
-                        <ListItem button key={text.label} onClick={() => setIndexIcon(index)}>
+                        <ListItem button key={text.label}>
                             <IconButton>
                                 <DisplayIcon i={index} />
                             </IconButton>
diff --git a/src/Admin/Pages/Pages/SubPages/Collections.js b/src/Admin/Pages/Pages/SubPages/Collections.js
index 4288091f..bca301e6 100644
--- a/src/Admin/Pages/Pages/SubPages/Collections.js
+++ b/src/Admin/Pages/Pages/SubPages/Collections.js
@@ -21,8 +21,7 @@ import moment from 'moment';
 //imports from local files
 import TableData from "../../../Components/Components/Table";
 import SnackBar from "../../../../Components/SnackbarComponent";
-import { Url, EditFilter, DeleteFilter } from "../../../Filters";
-import { GetFullList, Delete } from "../../../Services";
+import { Url, DeleteFilter } from "../../../Filters";
 import AlertDialog from "../../../Components/Components/AlertDialog";
 import LoadingSpinner from '../../../../Components/LoadingSpinner';
 //imports from material ui
diff --git a/src/Admin/Pages/Pages/SubPages/Complaints.js b/src/Admin/Pages/Pages/SubPages/Complaints.js
index 8b4ad0c7..7c35b1c0 100644
--- a/src/Admin/Pages/Pages/SubPages/Complaints.js
+++ b/src/Admin/Pages/Pages/SubPages/Complaints.js
@@ -22,9 +22,9 @@ import moment from "moment";
 import TableData from "../../../Components/Components/Table";
 import SnackBar from "../../../../Components/SnackbarComponent";
 import { Url } from "../../../Filters";
-import { GetFullList } from "../../../Services";
 import { Store } from '../../../../Store';
 import LoadingSpinner from '../../../../Components/LoadingSpinner';
+import { getRequest } from '../../../../Components/HelperFunctions/getAxiosConfig'
 //imports from material ui
 import { withStyles } from "@material-ui/core/styles";
 import TableBody from "@material-ui/core/TableBody";
@@ -143,18 +143,10 @@ const Complaints = () => {
     //handle load more items
     const LoadMoreItens = async (api) => {
         setIsLoadingMoreItems(true);
-        const headers = {
-            Accept: "application/json",
-            "Content-Type": "application/json; charset=utf-8",
-            "access-token": sessionStorage.getItem("@portalmec/accessToken"),
-            client: sessionStorage.getItem("@portalmec/clientToken"),
-            uid: sessionStorage.getItem("@portalmec/uid"),
-            "If-None-Match": null,
-        };
-
-        GetFullList(api, headers).then((res) => {
-            if (res.state) {
-                const arrData = [...res.data];
+        getRequest(
+            api,
+            (data, header) => {
+                const arrData = [...data];
                 if (arrData.length === 0) {
                     HandleSnack(
                         "Não há mais dados para serem carregados",
@@ -168,41 +160,38 @@ const Complaints = () => {
                     const arrResult = arrItems.concat(arrData);
                     setItems(arrResult.concat(ADD_ONE_LENGHT));
                 }
-            } else {
+                setIsLoadingMoreItems(false);
+            },
+            (error) => {
                 HandleSnack("Erro ao carregar os dados", true, "warning", "#FA8072");
+                setIsLoadingMoreItems(false);
             }
-            setIsLoadingMoreItems(false);
-        });
+        )
     };
 
     // handle update list data
     const UpdateHandler = async (api) => {
         setIsUpdating(true);
-        const headers = {
-            Accept: "application/json",
-            "Content-Type": "application/json; charset=utf-8",
-            "access-token": sessionStorage.getItem("@portalmec/accessToken"),
-            client: sessionStorage.getItem("@portalmec/clientToken"),
-            uid: sessionStorage.getItem("@portalmec/uid"),
-            "If-None-Match": null,
-        };
-
-        GetFullList(api, headers).then((res) => {
-            console.log(res);
-            if (res.state) {
+        getRequest(
+            api,
+            (data, header) => {
                 HandleSnack(
                     "A lista de dados foi atualizada",
                     true,
                     "success",
                     "#228B22"
                 );
-                const arrData = [...res.data];
+                const arrData = [...data];
                 setItems(arrData.concat(ADD_ONE_LENGHT));
-            } else {
+                setIsUpdating(false);
+
+            },
+            (error) => {
                 HandleSnack("Erro ao carregar os dados", true, "warning", "#FA8072");
+                setIsUpdating(false);
+
             }
-            setIsUpdating(false);
-        });
+        )
     };
 
     const handleChange = (e, type) => {
@@ -215,39 +204,38 @@ const Complaints = () => {
         currPage = 0;
         currIdFilter = id;
         currTypeFilter = type;
-        GetFullList(
-            Url("complaints", `"${currTypeFilter}" : "${currIdFilter}"`, `${currPage}`, "DESC")
-        ).then((res) => {
-            if (res.state) {
-                const arrData = [...res.data];
+        getRequest(
+            Url("complaints", `"${currTypeFilter}" : "${currIdFilter}"`, `${currPage}`, "DESC"),
+            (data, header) => {
+                const arrData = [...data];
                 setItems(arrData.concat(ADD_ONE_LENGHT));
                 HandleSnack("Filtro aplicado com sucesso", true, "success", "#228B22");
                 setIsLoaded(true);
-            } else {
+            },
+            (error) => {
                 HandleSnack("Erro ao carregar os dados", true, "warning", "#FA8072");
                 setIsLoaded(true);
             }
-        });
+        )
     };
 
     const DescriptionHandler = (e) => {
         currPage = 0;
         currTypeFilter = "description";
         currIdFilter = e.target.value;
-
-        GetFullList(
-            Url("complaints", `"${currTypeFilter}" : "${currIdFilter}"`, `${currPage}`, "DESC")
-        ).then((res) => {
-            if (res.state) {
-                const arrData = [...res.data];
+        getRequest(
+            Url("complaints", `"${currTypeFilter}" : "${currIdFilter}"`, `${currPage}`, "DESC"),
+            (data, header) => {
+                const arrData = [...data];
                 setItems(arrData.concat(ADD_ONE_LENGHT));
                 HandleSnack("Filtro aplicado com sucesso", true, "success", "#228B22");
                 setIsLoaded(true);
-            } else {
+            },
+            (error) => {
                 HandleSnack("Erro ao carregar os dados", true, "warning", "#FA8072");
                 setIsLoaded(true);
             }
-        });
+        )
     }
 
     const convertToLink = (type, id) => {
@@ -319,20 +307,20 @@ const Complaints = () => {
 
     //getting data from server
     useEffect(() => {
-        GetFullList(Url("complaints", "", `${currPage}`, "DESC")).then(
-            (res) => {
-                if (res.state) {
-                    const arrData = [...res.data];
-                    setItems(arrData.concat(ADD_ONE_LENGHT));
-                    setIsLoaded(true);
-                    setError(false);
-                } else {
-                    HandleSnack("Erro ao carregar os dados", true, "warning", "#FA8072");
-                    setIsLoaded(true);
-                    setError(true);
-                }
+        getRequest(
+            Url("complaints", "", `${currPage}`, "DESC"),
+            (data, header) => {
+                const arrData = [...data];
+                setItems(arrData.concat(ADD_ONE_LENGHT));
+                setIsLoaded(true);
+                setError(false);
+            },
+            (error) => {
+                HandleSnack("Erro ao carregar os dados", true, "warning", "#FA8072");
+                setIsLoaded(true);
+                setError(true);
             }
-        );
+        )
     }, []);
 
     if (error) {
diff --git a/src/Admin/Pages/Pages/SubPages/EducationalObjects.js b/src/Admin/Pages/Pages/SubPages/EducationalObjects.js
index 2b7f577b..fca838bc 100644
--- a/src/Admin/Pages/Pages/SubPages/EducationalObjects.js
+++ b/src/Admin/Pages/Pages/SubPages/EducationalObjects.js
@@ -43,9 +43,9 @@ import { Typography, CircularProgress } from "@material-ui/core";
 import Popover from "@material-ui/core/Popover";
 import TextField from "@material-ui/core/TextField";
 // services
-import { getRequest, putRequest, deleteRequest } from '../../../../Components/HelperFunctions/getAxiosConfig'
+import { getRequest, deleteRequest } from '../../../../Components/HelperFunctions/getAxiosConfig'
 //Filters
-import { Url, EditFilter, DeleteFilter } from "../../../Filters";
+import { Url, DeleteFilter } from "../../../Filters";
 //router 
 import { Link } from 'react-router-dom';
 
diff --git a/src/Admin/Pages/Pages/SubPages/Institutions.js b/src/Admin/Pages/Pages/SubPages/Institutions.js
index 516c9e62..99dd5540 100644
--- a/src/Admin/Pages/Pages/SubPages/Institutions.js
+++ b/src/Admin/Pages/Pages/SubPages/Institutions.js
@@ -44,7 +44,7 @@ import TextField from "@material-ui/core/TextField";
 // services
 import { getRequest, deleteRequest } from '../../../../Components/HelperFunctions/getAxiosConfig'
 //Filters
-import { Url, GetOneOfAllUrl, EditFilter, DeleteFilter } from "../../../Filters";
+import { Url, GetOneOfAllUrl, DeleteFilter } from "../../../Filters";
 //router 
 import { Link } from 'react-router-dom';
 
diff --git a/src/Admin/Pages/Pages/SubPages/Questions.js b/src/Admin/Pages/Pages/SubPages/Questions.js
index 08fcdd01..43fe07bb 100644
--- a/src/Admin/Pages/Pages/SubPages/Questions.js
+++ b/src/Admin/Pages/Pages/SubPages/Questions.js
@@ -25,7 +25,7 @@ import Unauthorized from '../../../Components/Components/Unauthorized';
 import { Url, EditFilter } from '../../../Filters';
 import { Store } from '../../../../Store';
 import LoadingSpinner from '../../../../Components/LoadingSpinner';
-import { GetFullList, Edit } from '../../../Services';
+import { getRequest, putRequest } from '../../../../Components/HelperFunctions/getAxiosConfig'
 //imports from material ui 
 import { withStyles } from '@material-ui/core/styles';
 import TableBody from '@material-ui/core/TableBody';
@@ -111,9 +111,10 @@ const Questions = () => {
     //handle load more items
     const LoadMoreItens = async (api) => {
         setIsLoadingMoreItems(true)
-        GetFullList(api).then(res => {
-            if (res.state) {
-                const arrData = [...res.data]
+        getRequest(
+            api,
+            (data, header) => {
+                const arrData = [...data]
                 if (arrData.length === 0) {
                     HandleSnack('Não há mais dados para serem carregados', true, 'warning', '#FFC125')
                 } else {
@@ -122,50 +123,58 @@ const Questions = () => {
                     const arrResult = arrItems.concat(arrData)
                     setItems(arrResult.concat(ADD_ONE_LENGHT))
                 }
-
-            } else {
+                setIsLoadingMoreItems(false)
+            },
+            (error) => {
                 HandleSnack('Erro ao carregar os dados', true, 'warning', '#FA8072')
+                setIsLoadingMoreItems(false)
             }
-            setIsLoadingMoreItems(false)
-        })
+        )
     }
 
     // handle update list data
     const UpdateHandler = async (api) => {
         setIsUpdating(true)
-        GetFullList(api).then(res => {
-            if (res.state) {
+        getRequest(
+            api,
+            (data, header) => {
                 HandleSnack('A lista de dados foi atualizada', true, 'success', '#228B22')
-                const arrData = [...res.data]
+                const arrData = [...data]
                 setItems(arrData.concat(ADD_ONE_LENGHT))
-            } else {
+                setIsUpdating(false)
+            },
+            (error) => {
                 HandleSnack('Erro ao carregar os dados', true, 'warning', '#FA8072')
+                setIsUpdating(false)
             }
-            setIsUpdating(false)
-        })
+        )
     }
 
     const InvertList = async () => {
         transformListToAsc = !transformListToAsc
         currPage = 0
         if (transformListToAsc) {
-            GetFullList(Url('questions', '', `${currPage}`, 'ASC')).then(res => {
-                if (res.state) {
-                    const arrData = [...res.data]
+            getRequest(
+                Url('questions', '', `${currPage}`, 'ASC'),
+                (data, header) => {
+                    const arrData = [...data]
                     setItems(arrData.concat(ADD_ONE_LENGHT))
-                } else {
+                },
+                () => {
                     HandleSnack('Erro ao carregar os dados', true, 'warning', '#FA8072')
                 }
-            })
+            )
         } else {
-            GetFullList(Url('questions', '', `${currPage}`, 'DESC')).then(res => {
-                if (res.state) {
-                    const arrData = [...res.data]
+            getRequest(
+                Url('questions', '', `${currPage}`, 'DESC'),
+                (data, header) => {
+                    const arrData = [...data]
                     setItems(arrData.concat(ADD_ONE_LENGHT))
-                } else {
+                },
+                (error) => {
                     HandleSnack('Erro ao carregar os dados', true, 'warning', '#FA8072')
                 }
-            })
+            )
         }
     }
 
@@ -178,16 +187,19 @@ const Questions = () => {
                     "description": description,
                     "status": "inactive"
                 }
-            }
-            Edit(EditFilter('questions', id), body).then(res => {
-                if (res) {
+            }      
+            putRequest(
+                EditFilter('questions', id),
+                body,
+                (data) => {
                     currPage = 0
                     transformListToAsc = false
                     UpdateHandler(Url('questions', '', `${currPage}`, 'DESC'))
-                } else {
+                },
+                (error) => {
                     HandleSnack('Erro ao carregar os dados', true, 'warning', '#FA8072')
                 }
-            })
+            )
         } else {
             const body = {
                 "question": {
@@ -195,17 +207,19 @@ const Questions = () => {
                     "status": "active"
                 }
             }
-            Edit(EditFilter('questions', id), body).then(res => {
-                if (res) {
+            putRequest(
+                EditFilter('questions', id),
+                body,
+                (data) => {
                     currPage = 0
                     transformListToAsc = false
                     UpdateHandler(Url('questions', '', `${currPage}`, 'DESC'))
-                } else {
+                },
+                (error) => {
                     HandleSnack('Erro ao carregar os dados', true, 'warning', '#FA8072')
                 }
-            })
+            )
         }
-
     }
 
     const DisplayDate = (date) => {
@@ -217,15 +231,16 @@ const Questions = () => {
 
     //getting data from server
     useEffect(() => {
-        GetFullList(Url('questions', '', `${currPage}`, 'DESC'))
-            .then(
-                (result) => {
-                    if (result.state) {
-                        setIsLoaded(true);
-                        setItems(result.data.concat(ADD_ONE_LENGHT));
-                    } else setError(true)
-                },
-            )
+        getRequest(
+            Url('questions', '', `${currPage}`, 'DESC'),
+            (data, header) => {
+                setIsLoaded(true);
+                setItems(data.concat(ADD_ONE_LENGHT));
+            },
+            (error) => {
+                setError(true)
+            }
+        )
     }, []);
 
 
@@ -342,7 +357,7 @@ const Questions = () => {
                                                 <Grid container direction='row'>
                                                     <Grid item>
                                                         <CheckCircleRoundedIcon style={{ fill: '#3CB371' }} />
-                                                  
+
                                                         <Switch
                                                             checked={true}
                                                             onChange={() => handleChange(index, row.status)}
-- 
GitLab