Commit fd87d8e4 authored by Odair M.'s avatar Odair M.

.

Página junção turma e horário

Colocando coluna nas tabelas para mostrar se uma turma ou horário foi juntado

Arrumando junção de horários

atualiza tipo de dado da coluna juncao para booleano
parent b9f4f1ad
......@@ -143,6 +143,7 @@ switch (role) {
case 'admin':
list_options = [
{"icon":locationIcon,"text":"Gerenciamento de Turmas", "link":"/gerenciaturma" },
{"icon":locationIcon,"text":"Juntar Turmas e Horários", "link":"/juntarturma" },
{"icon":locationIcon,"text":"Enviar planilha", "link":"/upload" },
{"icon":locationIcon,"text":"Gerenciamento de Disciplinas", "link":"/gerenciadisciplina" },
{"icon":locationIcon,"text":"Gerenciamento de Reservas", "link":"/gerenciareserva" },
......@@ -186,6 +187,7 @@ switch (role) {
break;
case "secretario_dpto":
list_options = [
{"icon":locationIcon,"text":"Juntar Turmas e Horários", "link":"/juntarturma" },
{"icon":locationIcon,"text":"Gerenciamento de Disciplinas", "link":"/gerenciadisciplina" },
{"icon":locationIcon,"text":"Gerenciamento de Reservas", "link":"/gerenciareserva" },
{"icon":locationIcon,"text":"Equivalências", "link":"/equivalencias" },
......
......@@ -46,10 +46,12 @@ export function Login(props) {
};
return (
<form onSubmit={handleSignIn}>
<Grid container direction="column" justify="space-around" alignItems="center" spacing={2}>
<Grid item >
<h5>{error}</h5>
<Field type="email" label="Email" func={(evt) => setEmail(evt.target.value)} />
<Grid container direction="column" justify="space-around" alignItems="center" spacing={2}>
<Grid item alignItems="flex-end">
<h5>{error}</h5>
</Grid>
<Grid item>
<Field type="email" label="Email" func={(evt) => setEmail(evt.target.value)} />
</Grid>
<Grid item>
<Field type="password" label="Senha" func={(evt) => setPassword(evt.target.value)} />
......
......@@ -108,16 +108,15 @@ export function HeaderEnsalamento(props) {
}
const {message_active,setMessageActive} = React.useContext(MessageActive)
const {message,setMessage} = React.useContext(Messages);
async function handleDelete() {
async function handleEnsalar() {
try {
const response_t = api.delete("/semestres/deletesemestre",{params: {"semestreId":ensalamento_select.semestre}});
setMessage("Requisição de remoção do semestre: "+ensalamento_select.semestre+" agendada com sucesso, pode demorar alguns minutos para ser totalmente removido")
const response_t = api.post("/ensalamentos/ensalar")
setMessage("Requisição de ensalamento feito com sucesso. Pode demorar alguns minutos para todos os semestres serem ensalados ")
setMessageActive(true)
} catch (e) {
setMessage("erro ao tentar remover semestre: "+e)
setMessage("erro ao tentar ensalar: "+e)
setMessageActive(true)
/* handle error */
}
setChange(!change);
}
......@@ -130,12 +129,11 @@ export function HeaderEnsalamento(props) {
<Grid item xs={6} md={6} align="right">
<Grid container justify="flex-end" direction={"row"} spacing={1}>
<Grid item align="left">
<AlertDialog title={"Confirmação de remoção de semestre"}
<AlertDialog title={"Confirmação de ensalar semestres"}
initial_button_style={{color:"#676767", fontSize:"12px"}}
initial_icon={<DeleteOutline style={{color:"#676767", fontSize:"12px"}}/>}
initial_button_title={"Excluir"}
handle_accept={handleDelete}
description={"Você realmente deseja remover este semestre? está operação vai remover todas as turmas e horarios associado ao semestre e não é possível desfazer. " } />
initial_button_title={"Ensalar"}
handle_accept={handleEnsalar}
description={"Você realmente deseja ensalar todos os semestres? " } />
</Grid>
</Grid>
</Grid>
......@@ -329,12 +327,12 @@ export function Ensalamento(props) {
},[change])
return (
<Grid container justify="flex-end" direction="column">
<Grid container justify="flex-end" spacing={6} direction="column">
<div>
<Grid item sm={11} >
<Grid item >
<HeaderEnsalamento nome_curso="Ensalamentos"></HeaderEnsalamento>
</Grid>
<Grid item xs={12} md={12} sm={11}>
<Grid item >
<ListEnsalamento ensalamentos={ensalamentos} />
</Grid>
</div>
......@@ -360,19 +358,13 @@ export function GerenciarEnsalador (props) {
<Change.Provider value={{change,setChange}}>
<div className={classes._body}>
<Grid container spacing={4} justify="space-between" >
<Grid item xs={12} sm={6}>
<Grid item>
<Typography style={{color:"#707070"}} className={classes.header} >Gerenciar Ensalamentos</Typography>
</Grid>
</Grid>
<Grid container direction="row" justify="space-between" spacing={4} >
<Grid item xs={8} md={8} lg={9} sm={7}>
<Grid container direction="column" justify="flex-start" spacing={4} >
<Grid item >
<Grid item >
<Ensalamento />
</Grid>
</Grid>
</Grid>
</Grid>
</Grid>
</div>
</Change.Provider>
</EnsalamentoSelect.Provider>
......
......@@ -208,6 +208,7 @@ function HorarioTable(props) {
const classes = useStyles();
const [data, setData] = useState([]);
const [ver,setVer] = useState(false)
console.log("salas",props.salas)
const header_list = [
{ field: 'Id', title: "Id", filtering: false, hidden: true},
{ field: 'dia', title: "Dia da semana", lookup: {2:"Segunda feira", 3:"Terça feira", 4:"Quarta feira", 5:"Quinta feira",6:"Sexta feira", 7:"Sábado", 1:"Domingo"}},
......@@ -219,6 +220,8 @@ function HorarioTable(props) {
];
var horarios_list = []
useEffect(() => {
for(let i = 0; i < horarios.length;i++){
var horario_inicial = new Date()
var h = horarios[i].horario_inicial.split(":")
......@@ -229,13 +232,27 @@ function HorarioTable(props) {
horario_final.setHours(_h[0],_h[1],0,0)
horarios_list.push(createHorariosList(i,horarios[i].dia,horario_inicial,horario_final,horarios[i].salaCode,horarios[i].livre,horarios[i].id));
}
if(horarios.length === horarios_list.length && !ver && horarios.length !== 0 ){
setVer(true)
// if(horarios.length === horarios_list.length && !ver && horarios.length !== 0 ){
// setVer(true)
setData(horarios_list)
}
if( horarios_list.length !== data.length){
setVer(false)
}
},[props.turmas]);
// for(let i = 0; i < horarios.length;i++){
// var horario_inicial = new Date()
// var h = horarios[i].horario_inicial.split(":")
// horario_inicial.setHours(h[0],h[1],0,0)
// var horario_final = new Date()
// var _h = horarios[i].horario_final.split(":")
// horario_final.setHours(_h[0],_h[1],0,0)
// horarios_list.push(createHorariosList(i,horarios[i].dia,horario_inicial,horario_final,horarios[i].salaCode,horarios[i].livre,horarios[i].id));
// }
// // if(horarios.length === horarios_list.length && !ver && horarios.length !== 0 ){
// // setVer(true)
// setData(horarios_list)
//}
// if( horarios_list.length !== data.length){
// setVer(false)
// }
return (
<MaterialTable title={"Horarios"} columns={header_list} data={data.filter(horario => horario.id).sort(compareId)}
options={{filtering: true,selection: false,exportButton: true,emptyRowsWhenPaging:false,pageSizeOptions:[5,10,20,50,100],addRowPosition:'first',sorting:false,draggable:false}}
......@@ -289,7 +306,7 @@ function HorarioTable(props) {
var horario_final = new Date( newData.horario_final)
newData.horario_final = horario_final.toLocaleTimeString()
const result = api.post(`turmas/${turma.id}/horarios`,newData);
setData(data => [...data.filter(item => item.id !== newData.id),newData])
setData(data => [...data,newData]);
}
resolve();
},1000);
......@@ -341,8 +358,8 @@ function TurmaTable( props) {
{ field: 'cursos', title: "Cursos",
editComponent: props => (
<MultipleSelect
index={"codigo"}
value_index={"nome"}
index={"nome"}
value_index={"codigo"}
array={_cursos}
value={props.value}
onChange={e => props.onChange(e)}
......@@ -372,10 +389,9 @@ function TurmaTable( props) {
var turmas_list = []
for(let i = 0; i < turmas.length;i++){
console.log(turmas[i])
var cursos = ( turmas[i].cursos)? turmas[i].cursos.map( ( curso)=>{return curso.codigo}) : []
var cursos = ( turmas[i].cursos)? turmas[i].cursos.map( ( curso)=>{return curso.nome}) : []
cursos = cursos.join(", ")
var professores = ( turmas[i].professores)? turmas[i].professores.map( ( professor)=>{return professor.codigo}) : []
var professores = ( turmas[i].professores)? turmas[i].professores.map( ( professor)=>{return professor.nome}) : []
professores = professores.join(", ")
turmas_list.push(createTurmasList(i,turmas[i].codigo,cursos,professores,turmas[i].vagas,turmas[i].data_inicio,turmas[i].data_fim,turmas[i].semestre,turmas[i],turmas[i].id));
}
......@@ -437,11 +453,7 @@ function TurmaTable( props) {
newData.departamentoCod = departamentoCod
newData.cursosCod = newData.cursos.split(", ")
newData.professoresCod = newData.professores.split(", ")
api.put("turmas/create_turma",{turma: newData}).then(( r)=>{
newData.id = r.data.status.id
if(!newData.turmas)
newData.turmas = {"id":r.data.status.id}
});
api.put("turmas/create_turma",{turma: newData})
setData(data => [...data.filter(item => item.id !== newData.id),newData])
}
resolve();
......
This diff is collapsed.
......@@ -3,6 +3,7 @@ import { BrowserRouter, Route, Switch, Redirect } from "react-router-dom";
import { isAuthenticated } from "./services/auth";
import {Upload} from './pages/ensalamento.jsx';
import {GerenciarTurma} from './pages/gerenciarturma.jsx';
import {JuntarTurmaHorario} from './pages/juntarturma.jsx';
import {GerenciarDisciplina} from './pages/gerenciardisciplina.jsx';
import {GerenciarReserva} from './pages/gerenciarreserva.jsx';
import {Equivalencias} from './pages/equivalencias.jsx';
......@@ -45,6 +46,7 @@ const Routes = () => (
<PrivateRoute path="/upload" component={()=> <Upload/>} />
<PrivateRoute path="/gerenciaensalador" component={()=> <GerenciarEnsalador/>} />
<PrivateRoute path="/gerenciaturma" component={()=><GerenciarTurma/>} />
<PrivateRoute path="/juntarturma" component={()=><JuntarTurmaHorario/>} />
<PrivateRoute path="/gerenciadepartamento" component={()=><GerenciarDepartamento/>} />
<PrivateRoute path="/gerenciausuarios" component={()=><GerenciarUsuarios/>} />
<PrivateRoute path="/gerenciasetores" component={()=><GerenciarSetores/>} />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment