Merge remote-tracking branch 'origin/master' into zmiguel
|
@ -102,8 +102,8 @@ android {
|
||||||
applicationId "pt.enei"
|
applicationId "pt.enei"
|
||||||
minSdkVersion rootProject.ext.minSdkVersion
|
minSdkVersion rootProject.ext.minSdkVersion
|
||||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||||
versionCode 3
|
versionCode 5
|
||||||
versionName "3"
|
versionName "5"
|
||||||
ndk {
|
ndk {
|
||||||
abiFilters "armeabi-v7a", "x86"
|
abiFilters "armeabi-v7a", "x86"
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,6 +45,9 @@ import teamDetail from './screens/teamDetail';
|
||||||
|
|
||||||
import event from './screens/event';
|
import event from './screens/event';
|
||||||
|
|
||||||
|
import map from './screens/map'
|
||||||
|
|
||||||
|
|
||||||
const navigationOptions = ({navigation}) => ({
|
const navigationOptions = ({navigation}) => ({
|
||||||
headerLeft: <HeaderBackButton onPress={() => navigation.goBack(null)}/>,
|
headerLeft: <HeaderBackButton onPress={() => navigation.goBack(null)}/>,
|
||||||
headerStyle: {backgroundColor: 'transparent', zIndex: 100 },
|
headerStyle: {backgroundColor: 'transparent', zIndex: 100 },
|
||||||
|
@ -64,6 +67,15 @@ const AppStack = createBottomTabNavigator(
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
Mapa:{
|
||||||
|
screen: map,
|
||||||
|
navigationOptions: {
|
||||||
|
|
||||||
|
tabBarIcon: ({tintColor}) => (
|
||||||
|
<IconF name="map" color={tintColor} size={25}/>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
'Jogo': {
|
'Jogo': {
|
||||||
screen: Jogo,
|
screen: Jogo,
|
||||||
|
@ -88,7 +100,7 @@ const AppStack = createBottomTabNavigator(
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
Eventos: {
|
Atividades: {
|
||||||
screen: Eventos,
|
screen: Eventos,
|
||||||
|
|
||||||
navigationOptions: {
|
navigationOptions: {
|
||||||
|
@ -98,7 +110,7 @@ const AppStack = createBottomTabNavigator(
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
Home: {
|
Home: {
|
||||||
screen: Home,
|
screen: Home,
|
||||||
navigationOptions: {
|
navigationOptions: {
|
||||||
|
@ -150,10 +162,16 @@ const Stack = createStackNavigator({
|
||||||
|
|
||||||
if (navigation.state.routes[index].routeName == 'Jogo') {
|
if (navigation.state.routes[index].routeName == 'Jogo') {
|
||||||
return {
|
return {
|
||||||
header: (<View style={{backgroundColor:'#CC1A17', padding:15}}>
|
headerTitle: (<Text style={{
|
||||||
<Text style={{textAlign:'center', alignSelf:'center', color:'white', fontSize:20, fontWeight:'bold'}}>Jogo do ENEI'19</Text>
|
textAlign:'center',
|
||||||
</View>)
|
color:'#CC1A17',
|
||||||
|
width:'100%',
|
||||||
|
fontWeight:'bold',
|
||||||
|
fontSize:25,
|
||||||
|
|
||||||
|
|
||||||
|
}}>Jogo do ENEI'19</Text>)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -195,9 +213,15 @@ const Stack = createStackNavigator({
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (navigation.state.routes[index].routeName == 'Eventos') {
|
else if (navigation.state.routes[index].routeName == 'Atividades') {
|
||||||
return {
|
return {
|
||||||
headerTitle: 'Eventos',
|
headerTitle: 'Atividade',
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (navigation.state.routes[index].routeName == 'Mapa') {
|
||||||
|
return {
|
||||||
|
headerTitle: 'Mapa do Evento',
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,7 +72,7 @@ class Calendar extends React.Component {
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
<View>
|
<View>
|
||||||
<Text style={styles.description}>{item.description}</Text>
|
<Text style={styles.description} numberOfLines={8}>{item.description}</Text>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
|
@ -313,7 +313,7 @@ class Calendar extends React.Component {
|
||||||
}}
|
}}
|
||||||
style={{ backgroundColor: "#F2F2F2" }}
|
style={{ backgroundColor: "#F2F2F2" }}
|
||||||
indicatorStyle={{ backgroundColor: "pink"}}
|
indicatorStyle={{ backgroundColor: "pink"}}
|
||||||
/><View style={{ alignContent:'center', alignItems:'center', backgroundColor:'transparent',position: 'absolute',marginTop:SCREEN_HEIGHT*0.75,marginLeft:10}}><Button onPress={this._refresh} title="Refresh" color="#CC1A17"
|
/><View style={{ alignContent:'center', alignItems:'center', backgroundColor:'transparent',position: 'absolute',marginTop:SCREEN_HEIGHT*0.72,marginLeft:10}}><Button onPress={this._refresh} title="Refresh" color="#CC1A17"
|
||||||
/></View>
|
/></View>
|
||||||
|
|
||||||
</View>
|
</View>
|
||||||
|
@ -355,7 +355,8 @@ const styles = StyleSheet.create({
|
||||||
description: {
|
description: {
|
||||||
padding: 10,
|
padding: 10,
|
||||||
paddingLeft: 0,
|
paddingLeft: 0,
|
||||||
paddingTop: 0
|
paddingTop: 0,
|
||||||
|
textAlign:"justify"
|
||||||
},
|
},
|
||||||
title: {
|
title: {
|
||||||
color: "#212121",
|
color: "#212121",
|
||||||
|
|
|
@ -132,9 +132,8 @@ const styles = StyleSheet.create({
|
||||||
cardHours: {
|
cardHours: {
|
||||||
textAlign: "center",
|
textAlign: "center",
|
||||||
color: "white",
|
color: "white",
|
||||||
margin: 10
|
margin: 10,
|
||||||
|
width:'45%'
|
||||||
// width:'20%'
|
|
||||||
},
|
},
|
||||||
|
|
||||||
cardDesc: {
|
cardDesc: {
|
||||||
|
|
|
@ -85,11 +85,11 @@ class Home extends Component {
|
||||||
//enei.pt/api/Users/getProfileImage/ZV4ZWJXTVV
|
//enei.pt/api/Users/getProfileImage/ZV4ZWJXTVV
|
||||||
https: axios
|
https: axios
|
||||||
.get(`https://enei.pt/api/Users/getProfileImage/${qr}`)
|
.get(`https://enei.pt/api/Users/getProfileImage/${qr}`)
|
||||||
.then(function(response) {
|
.then(function (response) {
|
||||||
// handle success
|
// handle success
|
||||||
return response.data;
|
return response.data;
|
||||||
})
|
})
|
||||||
.catch(function(error) {
|
.catch(function (error) {
|
||||||
// handle error
|
// handle error
|
||||||
console.log(error);
|
console.log(error);
|
||||||
});
|
});
|
||||||
|
@ -103,7 +103,7 @@ class Home extends Component {
|
||||||
this.props.getEvents(this.props.user, this.props.token);
|
this.props.getEvents(this.props.user, this.props.token);
|
||||||
this._getImage();
|
this._getImage();
|
||||||
}
|
}
|
||||||
componentWillUnmount() {}
|
componentWillUnmount() { }
|
||||||
|
|
||||||
bClick() {
|
bClick() {
|
||||||
//this.props.logoutUser();
|
//this.props.logoutUser();
|
||||||
|
@ -163,7 +163,10 @@ class Home extends Component {
|
||||||
};
|
};
|
||||||
_creatTeam = () => {
|
_creatTeam = () => {
|
||||||
var tipo;
|
var tipo;
|
||||||
if (this.state.switch) tipo = 1;
|
if (this.state.switch==true) {
|
||||||
|
tipo = 1;
|
||||||
|
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
tipo = 3;
|
tipo = 3;
|
||||||
}
|
}
|
||||||
|
@ -238,20 +241,20 @@ class Home extends Component {
|
||||||
>
|
>
|
||||||
<View style={styles.homeHeader}>
|
<View style={styles.homeHeader}>
|
||||||
<View style={styles.userImageContainer}>
|
<View style={styles.userImageContainer}>
|
||||||
{this.props.user.Avatar != null && <Image
|
{this.props.user.Avatar != null && <Image
|
||||||
style={styles.userImage}
|
style={styles.userImage}
|
||||||
source={{
|
source={{
|
||||||
uri: this.props.user.Avatar
|
uri: this.props.user.Avatar
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
}{ this.props.user.Avatar==null &&
|
}{this.props.user.Avatar == null &&
|
||||||
<Image
|
<Image
|
||||||
style={styles.userImage}
|
style={styles.userImage}
|
||||||
source={require('../assets/logo_black.jpg')}
|
source={require('../assets/logo_black.jpg')}
|
||||||
/>}
|
/>}
|
||||||
</View>
|
</View>
|
||||||
{this.props.user != undefined && (
|
{this.props.user != undefined && (
|
||||||
<Text style={styles.userText}>{this.props.user.Name}</Text>
|
<Text style={styles.userText} numberOfLines={1}>{this.props.user.Name}</Text>
|
||||||
)}
|
)}
|
||||||
{this.props.user != undefined && (
|
{this.props.user != undefined && (
|
||||||
<Text style={styles.userTextSub}>
|
<Text style={styles.userTextSub}>
|
||||||
|
@ -266,11 +269,11 @@ class Home extends Component {
|
||||||
flexDirection: "row",
|
flexDirection: "row",
|
||||||
alignItems: "center",
|
alignItems: "center",
|
||||||
alignContent: "center",
|
alignContent: "center",
|
||||||
alignSelf:'center'
|
alignSelf: 'center'
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Text
|
<Text
|
||||||
style={{ textAlign: "right", fontSize: 12, paddingTop:10 , marginRight:5}}
|
style={{ textAlign: "right", fontSize: 12, paddingTop: 10, marginRight: 5 }}
|
||||||
>
|
>
|
||||||
Arrasta o ecrã para atualizar
|
Arrasta o ecrã para atualizar
|
||||||
</Text>
|
</Text>
|
||||||
|
@ -349,12 +352,12 @@ class Home extends Component {
|
||||||
</Text>
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
<View style={{ margin: 10 }}>
|
<View style={{ margin: 10 }}>
|
||||||
<Text style={{ fontSize: 12, textAlign: "center" }}>
|
<Text style={{ fontSize: 13, textAlign: "center" }}>
|
||||||
Para participares no ENEI caching ou no Rally Tascas deves
|
Para participares no ENEI caching ou no Rally Tascas deves
|
||||||
formar uma equipa (4 a 6) elementos.
|
formar uma equipa (4 a 6) elementos.
|
||||||
</Text>
|
</Text>
|
||||||
<Text
|
<Text
|
||||||
style={{ fontSize: 12, textAlign: "center", margin: 5 }}
|
style={{ fontSize: 13, textAlign: "center", margin: 5 }}
|
||||||
>
|
>
|
||||||
Ao criares a equipa, ficas como capitão. Podes adicionar e
|
Ao criares a equipa, ficas como capitão. Podes adicionar e
|
||||||
remover outros elementos.
|
remover outros elementos.
|
||||||
|
@ -428,9 +431,9 @@ class Home extends Component {
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
<Text
|
<Text
|
||||||
style={{ fontSize: 12, textAlign: "center", margin: 5 }}
|
style={{ fontSize: 13, textAlign: "center", margin: 5 }}
|
||||||
>
|
>
|
||||||
A incrição no Rally tem custo de 5€ por elemento. A equipa
|
A inscrição no Rally tem custo de 5€ por elemento. A equipa
|
||||||
apenas fica ativa quando efectuar o pagamento na banca no
|
apenas fica ativa quando efectuar o pagamento na banca no
|
||||||
ENEI
|
ENEI
|
||||||
</Text>
|
</Text>
|
||||||
|
@ -471,6 +474,7 @@ class Home extends Component {
|
||||||
fontWeight: "bold",
|
fontWeight: "bold",
|
||||||
marginBottom: 0
|
marginBottom: 0
|
||||||
}}
|
}}
|
||||||
|
numberOfLines={1}
|
||||||
>
|
>
|
||||||
{this.props.team.nome}
|
{this.props.team.nome}
|
||||||
</Text>
|
</Text>
|
||||||
|
@ -563,7 +567,7 @@ class Home extends Component {
|
||||||
<IconFA name="user" size={40} />
|
<IconFA name="user" size={40} />
|
||||||
</View>
|
</View>
|
||||||
<View style={styles.userT}>
|
<View style={styles.userT}>
|
||||||
<Text style={styles.userName}>
|
<Text style={styles.userName} numberOfLines={1}>
|
||||||
{item.fullName}
|
{item.fullName}
|
||||||
</Text>
|
</Text>
|
||||||
<Text>{item.qRcode}</Text>
|
<Text>{item.qRcode}</Text>
|
||||||
|
@ -571,15 +575,15 @@ class Home extends Component {
|
||||||
|
|
||||||
{this.props.user.Code ==
|
{this.props.user.Code ==
|
||||||
this.props.team.cap.qRcode && (
|
this.props.team.cap.qRcode && (
|
||||||
<TouchableOpacity
|
<TouchableOpacity
|
||||||
style={styles.userRemove}
|
style={styles.userRemove}
|
||||||
onPress={() => this._rm(item.qRcode)}
|
onPress={() => this._rm(item.qRcode)}
|
||||||
>
|
>
|
||||||
<Text style={{ fontWeight: "bold" }}>
|
<Text style={{ fontWeight: "bold" }}>
|
||||||
remover
|
remover
|
||||||
</Text>
|
</Text>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
)}
|
)}
|
||||||
</View>
|
</View>
|
||||||
)}
|
)}
|
||||||
<Divider style={{ backgroundColor: "black" }} />
|
<Divider style={{ backgroundColor: "black" }} />
|
||||||
|
@ -588,9 +592,11 @@ class Home extends Component {
|
||||||
/>
|
/>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
<TouchableOpacity onPress={() => navigate("teamDetail")} style={{backgroundColor:'orange'}}><Text style={{color:'white', fontSize:17, fontWeight:'bold', margin:10, textAlign:'center'}}>Ver o progresso da equipa </Text></TouchableOpacity>
|
{(this.props.team.ativa || this.props.team.eventId==3 ) && <TouchableOpacity onPress={() => navigate("teamDetail")} style={{ backgroundColor: 'green' }}><Text style={{ color: 'white', fontSize: 17, fontWeight: 'bold', margin: 10, textAlign: 'center' }}>Ver o progresso da equipa </Text></TouchableOpacity>
|
||||||
</View>
|
}
|
||||||
|
{!this.props.team.ativa && this.props.team.eventId==1 &&<TouchableOpacity onPress={() => navigate("teamDetail")} style={{ backgroundColor: 'orange' }}><Text style={{ color: 'white', fontSize: 17, fontWeight: 'bold', margin: 10, textAlign: 'center' }}>Deves efectuar o pagamento</Text></TouchableOpacity>
|
||||||
|
}</View>
|
||||||
|
|
||||||
</View>
|
</View>
|
||||||
)}
|
)}
|
||||||
</View>
|
</View>
|
||||||
|
|
|
@ -146,7 +146,7 @@ class Jogo extends React.Component {
|
||||||
</Text>
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
<View style={{ width: "100%", marginTop: 10 }}>
|
<View style={{ width: "100%", marginTop: 10 }}>
|
||||||
<TouchableOpacity onPress={()=>this.handleClick(this.state.cromo.websitecromo)} >
|
<TouchableOpacity onPress={()=>this.handleClick(this.state.cromo.websiteCromo)} >
|
||||||
<Text
|
<Text
|
||||||
style={{
|
style={{
|
||||||
textAlign: "center",
|
textAlign: "center",
|
||||||
|
@ -270,10 +270,10 @@ class Jogo extends React.Component {
|
||||||
{this.props.cromos!= undefined &&
|
{this.props.cromos!= undefined &&
|
||||||
<ProgressBarAnimated
|
<ProgressBarAnimated
|
||||||
width={barWidth * 0.7}
|
width={barWidth * 0.7}
|
||||||
value={this.props.cromos.pontuacao*100/256}
|
value={this.props.cromos.pontuacao*100/1024}
|
||||||
backgroundColorOnComplete="#CC2A17"
|
backgroundColorOnComplete="#CC2A17"
|
||||||
/>}
|
/>}
|
||||||
<Text style={{ fontWeight: "bold" }}>256</Text>
|
<Text style={{ fontWeight: "bold" }}>1024</Text>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
|
@ -316,7 +316,7 @@ class Jogo extends React.Component {
|
||||||
</View>
|
</View>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
)}
|
)}
|
||||||
numColumns={4} // Número de colunas
|
numColumns={5} // Número de colunas
|
||||||
/>}
|
/>}
|
||||||
</View>
|
</View>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
@ -333,7 +333,8 @@ const styles = StyleSheet.create({
|
||||||
marginTop: -25,
|
marginTop: -25,
|
||||||
marginLeft: 10,
|
marginLeft: 10,
|
||||||
fontWeight: "bold",
|
fontWeight: "bold",
|
||||||
color: "#CC1A17"
|
color: "#CC1A17",
|
||||||
|
// backgroundColor:"#cc1a17",
|
||||||
},
|
},
|
||||||
|
|
||||||
cromosContainer: {
|
cromosContainer: {
|
||||||
|
@ -418,9 +419,11 @@ const styles = StyleSheet.create({
|
||||||
marginTop: 156
|
marginTop: 156
|
||||||
},
|
},
|
||||||
number: {
|
number: {
|
||||||
marginTop: -18,
|
marginTop: -13,
|
||||||
marginLeft: 103,
|
marginLeft: 100,
|
||||||
textAlign: "center"
|
textAlign: "center",
|
||||||
|
|
||||||
|
color:'#cc1a17'
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -35,8 +35,13 @@ import {RkButton,
|
||||||
|
|
||||||
this.setState({code:e.data});
|
this.setState({code:e.data});
|
||||||
this.props.scanQrCode({UserQR:this.props.user.Code, ScanQR: e.data},this.props.internalToken);
|
this.props.scanQrCode({UserQR:this.props.user.Code, ScanQR: e.data},this.props.internalToken);
|
||||||
|
|
||||||
|
setTimeout(()=> {
|
||||||
|
if(this.scanner!=null)
|
||||||
|
this.scanner.reactivate()
|
||||||
|
},
|
||||||
|
2000
|
||||||
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
state = {
|
state = {
|
||||||
|
@ -79,7 +84,7 @@ import {RkButton,
|
||||||
showMarker={true}
|
showMarker={true}
|
||||||
|
|
||||||
cameraStyle={{ height: SCREEN_HEIGHT }}
|
cameraStyle={{ height: SCREEN_HEIGHT }}
|
||||||
|
|
||||||
fadeIn={true}
|
fadeIn={true}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -168,7 +168,7 @@ class calendarDetail extends React.Component {
|
||||||
<FitImage
|
<FitImage
|
||||||
source={{
|
source={{
|
||||||
uri:
|
uri:
|
||||||
"https://tickets.enei.pt/adminpoint/Content/Images/Uploads/Speakers/ffb043cb-3073-421c-a070-5d273b50fc23.jpeg"
|
`https://tickets.enei.pt/adminpoint/Content/Images/Uploads/Speakers/${item.Photo}`
|
||||||
}}
|
}}
|
||||||
style={{ padding: 5 }}
|
style={{ padding: 5 }}
|
||||||
/>
|
/>
|
||||||
|
@ -183,7 +183,7 @@ class calendarDetail extends React.Component {
|
||||||
>
|
>
|
||||||
{item.Name}
|
{item.Name}
|
||||||
</Text>
|
</Text>
|
||||||
<Text style={{ marginLeft: 10 }}>
|
<Text style={{ marginLeft: 10 , textAlign:'justify'}}>
|
||||||
{item.MoreInfo}
|
{item.MoreInfo}
|
||||||
</Text>
|
</Text>
|
||||||
<TouchableOpacity>
|
<TouchableOpacity>
|
||||||
|
@ -207,7 +207,7 @@ class calendarDetail extends React.Component {
|
||||||
>
|
>
|
||||||
Descrição do orador:
|
Descrição do orador:
|
||||||
</Text>
|
</Text>
|
||||||
<Text style={{ margin: 10 }}>{item.Description}</Text>
|
<Text style={{ margin: 10, textAlign:"justify" }}>{item.Description}</Text>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
)}
|
)}
|
||||||
|
@ -223,7 +223,7 @@ class calendarDetail extends React.Component {
|
||||||
</Text>
|
</Text>
|
||||||
<Divider style={{ backgroundColor: "#000" }} />
|
<Divider style={{ backgroundColor: "#000" }} />
|
||||||
<View style={{ marginTop: 10 }}>
|
<View style={{ marginTop: 10 }}>
|
||||||
<Text>{this.props.sessionDetail.Description}</Text>
|
<Text style={{textAlign:'justify'}}>{this.props.sessionDetail.Description}</Text>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
|
|
|
@ -311,7 +311,7 @@ class choosePath extends React.Component {
|
||||||
<ScrollView style={styles.page}>
|
<ScrollView style={styles.page}>
|
||||||
{this._findPath("IA") && (
|
{this._findPath("IA") && (
|
||||||
<LinearGradient
|
<LinearGradient
|
||||||
colors={["#D95856", "#CC1A17"]}
|
colors={["#F54B10", "#F54B10"]}
|
||||||
style={styles.linearGradient}
|
style={styles.linearGradient}
|
||||||
>
|
>
|
||||||
<Text
|
<Text
|
||||||
|
@ -341,7 +341,7 @@ class choosePath extends React.Component {
|
||||||
)}
|
)}
|
||||||
{this._findPath("NET") && (
|
{this._findPath("NET") && (
|
||||||
<LinearGradient
|
<LinearGradient
|
||||||
colors={["#4D76B3", "#055CA0"]}
|
colors={["#214198", "#214198"]}
|
||||||
style={styles.linearGradient}
|
style={styles.linearGradient}
|
||||||
>
|
>
|
||||||
<Text
|
<Text
|
||||||
|
@ -370,7 +370,7 @@ class choosePath extends React.Component {
|
||||||
)}
|
)}
|
||||||
{this._findPath("WEB") && (
|
{this._findPath("WEB") && (
|
||||||
<LinearGradient
|
<LinearGradient
|
||||||
colors={["#FDC657", "#FBB81B"]}
|
colors={["#3A1484", "#3A1484"]}
|
||||||
style={styles.linearGradient}
|
style={styles.linearGradient}
|
||||||
>
|
>
|
||||||
<Text
|
<Text
|
||||||
|
@ -399,7 +399,7 @@ class choosePath extends React.Component {
|
||||||
)}
|
)}
|
||||||
{this._findPath("IOT") && (
|
{this._findPath("IOT") && (
|
||||||
<LinearGradient
|
<LinearGradient
|
||||||
colors={["#69447F", "#4B266A"]}
|
colors={["#EC174A", "#EC174A"]}
|
||||||
style={styles.linearGradient}
|
style={styles.linearGradient}
|
||||||
>
|
>
|
||||||
<Text
|
<Text
|
||||||
|
@ -432,7 +432,7 @@ class choosePath extends React.Component {
|
||||||
)}
|
)}
|
||||||
{this._findPath("DS") && (
|
{this._findPath("DS") && (
|
||||||
<LinearGradient
|
<LinearGradient
|
||||||
colors={["#F28C59", "#ED6B33"]}
|
colors={["#DC160D", "#DC160D"]}
|
||||||
style={styles.linearGradient}
|
style={styles.linearGradient}
|
||||||
>
|
>
|
||||||
<Text
|
<Text
|
||||||
|
@ -474,7 +474,7 @@ class choosePath extends React.Component {
|
||||||
)}
|
)}
|
||||||
{this._findPath("MOB") && (
|
{this._findPath("MOB") && (
|
||||||
<LinearGradient
|
<LinearGradient
|
||||||
colors={["#559159", "#0B7D3C"]}
|
colors={["#971384", "#971384"]}
|
||||||
style={styles.linearGradient}
|
style={styles.linearGradient}
|
||||||
>
|
>
|
||||||
<Text
|
<Text
|
||||||
|
@ -531,11 +531,11 @@ class choosePath extends React.Component {
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Picker.Item label="Artificial Intelligence" value="9" />
|
<Picker.Item label="Artificial Intelligence" value="9" />
|
||||||
<Picker.Item label="Networking and Securiy" value="10" />
|
<Picker.Item label="Networking and Security" value="10" />
|
||||||
<Picker.Item label="Data Science" value="15" />
|
<Picker.Item label="Data Science" value="15" />
|
||||||
<Picker.Item label="Web development" value="14" />
|
<Picker.Item label="Web Development" value="14" />
|
||||||
<Picker.Item label="Mobile development" value="11" />
|
<Picker.Item label="Mobile Development" value="11" />
|
||||||
<Picker.Item label="Internet of things" value="12" />
|
<Picker.Item label="Internet of Things" value="12" />
|
||||||
</Picker>
|
</Picker>
|
||||||
</View>
|
</View>
|
||||||
<View style={{ width: SCREEN_WIDTH }}>
|
<View style={{ width: SCREEN_WIDTH }}>
|
||||||
|
@ -825,8 +825,10 @@ class choosePath extends React.Component {
|
||||||
<Text
|
<Text
|
||||||
style={{
|
style={{
|
||||||
fontSize: 15,
|
fontSize: 15,
|
||||||
fontWeight: "bold"
|
fontWeight: "bold",
|
||||||
|
maxWidth:150
|
||||||
}}
|
}}
|
||||||
|
|
||||||
>
|
>
|
||||||
{item[index].Name}
|
{item[index].Name}
|
||||||
</Text>
|
</Text>
|
||||||
|
@ -881,7 +883,8 @@ class choosePath extends React.Component {
|
||||||
style={{
|
style={{
|
||||||
fontSize: 15,
|
fontSize: 15,
|
||||||
fontWeight: "bold",
|
fontWeight: "bold",
|
||||||
marginLeft: 5
|
marginLeft: 5,
|
||||||
|
maxWidth:150
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{item[index].Name}
|
{item[index].Name}
|
||||||
|
@ -890,7 +893,8 @@ class choosePath extends React.Component {
|
||||||
<Text
|
<Text
|
||||||
style={{
|
style={{
|
||||||
marginTop: 10,
|
marginTop: 10,
|
||||||
marginBottom: 5
|
marginBottom: 5,
|
||||||
|
marginLeft:25
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{item[index].MaxAttendees -
|
{item[index].MaxAttendees -
|
||||||
|
@ -908,6 +912,7 @@ class choosePath extends React.Component {
|
||||||
}
|
}
|
||||||
unfilledColor={"white"}
|
unfilledColor={"white"}
|
||||||
width={150}
|
width={150}
|
||||||
|
style={{marginLeft:25}}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</View>
|
</View>
|
||||||
|
|
|
@ -147,6 +147,7 @@ class event extends React.Component {
|
||||||
marginBottom: 10,
|
marginBottom: 10,
|
||||||
fontSize: 20,
|
fontSize: 20,
|
||||||
color: "#CC1A17"
|
color: "#CC1A17"
|
||||||
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{info.nome}
|
{info.nome}
|
||||||
|
|
|
@ -81,14 +81,16 @@ class eventDetail extends React.Component {
|
||||||
alignSelf: "center"
|
alignSelf: "center"
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<View style={styles.leftRow}>
|
<View>
|
||||||
<Text
|
<Text
|
||||||
style={{
|
style={{
|
||||||
margin: 10,
|
margin: 10,
|
||||||
marginTop: 0,
|
marginTop: 0,
|
||||||
marginBottom: 10,
|
marginBottom: 10,
|
||||||
fontSize: 20,
|
fontSize: 20,
|
||||||
color: "#CC1A17"
|
color: "#CC1A17",
|
||||||
|
|
||||||
|
width:'100%'
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{info.location.nome}
|
{info.location.nome}
|
||||||
|
@ -110,7 +112,7 @@ class eventDetail extends React.Component {
|
||||||
</Text>
|
</Text>
|
||||||
<Divider style={{ backgroundColor: "#000" }} />
|
<Divider style={{ backgroundColor: "#000" }} />
|
||||||
<View style={{ marginTop: 10 }}>
|
<View style={{ marginTop: 10 }}>
|
||||||
<Text>{info.location.desc}</Text>
|
<Text style={{textAlign:'justify'}}>{info.location.desc}</Text>
|
||||||
</View>
|
</View>
|
||||||
<Text
|
<Text
|
||||||
style={{
|
style={{
|
||||||
|
@ -124,7 +126,7 @@ class eventDetail extends React.Component {
|
||||||
</Text>
|
</Text>
|
||||||
<Divider style={{ backgroundColor: "#000" }} />
|
<Divider style={{ backgroundColor: "#000" }} />
|
||||||
<View style={{ marginTop: 10 }}>
|
<View style={{ marginTop: 10 }}>
|
||||||
<Text>{info.location.desafio}</Text>
|
<Text style={{textAlign:"justify"}}>{info.location.desafio}</Text>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
|
@ -171,7 +173,7 @@ class eventDetail extends React.Component {
|
||||||
</Text>
|
</Text>
|
||||||
<Divider style={{ backgroundColor: "#000" }} />
|
<Divider style={{ backgroundColor: "#000" }} />
|
||||||
<View style={{ marginTop: 10 }}>
|
<View style={{ marginTop: 10 }}>
|
||||||
<Text>{info.desc}</Text>
|
<Text style={{textAlign:'justify'}}>{info.desc}</Text>
|
||||||
</View>
|
</View>
|
||||||
<Text
|
<Text
|
||||||
style={{
|
style={{
|
||||||
|
|
|
@ -0,0 +1,89 @@
|
||||||
|
import * as React from "react";
|
||||||
|
|
||||||
|
import {
|
||||||
|
View,
|
||||||
|
StyleSheet,
|
||||||
|
Dimensions,
|
||||||
|
Text,
|
||||||
|
Button,
|
||||||
|
ScrollView,
|
||||||
|
Image,
|
||||||
|
TouchableOpacity,
|
||||||
|
FlatList,
|
||||||
|
ActivityIndicator,
|
||||||
|
Modal
|
||||||
|
} from "react-native";
|
||||||
|
import IconFA from "react-native-vector-icons/FontAwesome5";
|
||||||
|
import { TabView, TabBar, SceneMap } from "react-native-tab-view";
|
||||||
|
|
||||||
|
import rallyImg from "../assets/rallyTascas.jpg";
|
||||||
|
|
||||||
|
import { connect } from "react-redux";
|
||||||
|
|
||||||
|
import { bindActionCreators } from "redux";
|
||||||
|
|
||||||
|
import * as Actions from "../store/actions"; //Import your actionss
|
||||||
|
const SCREEN_HEIGHT = Dimensions.get("window").height;
|
||||||
|
const SCREEN_WIDTH = Dimensions.get("window").width;
|
||||||
|
|
||||||
|
import ImageViewer from 'react-native-image-zoom-viewer';
|
||||||
|
import PTRView from "react-native-pull-to-refresh";
|
||||||
|
|
||||||
|
const images = [{
|
||||||
|
url: 'https://enei.pt/imgs/mapa.png'
|
||||||
|
},]
|
||||||
|
|
||||||
|
class map extends React.Component {
|
||||||
|
_update = () => {
|
||||||
|
this.props.getAllEvents(this.props.internalToken);
|
||||||
|
this.props.getEventLocsVisited(
|
||||||
|
this.props.team.id,
|
||||||
|
this.props.internalToken
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const { navigate } = this.props.navigation;
|
||||||
|
return (
|
||||||
|
|
||||||
|
<ImageViewer imageUrls={images}/>
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
function mapStateToProps(state, props) {
|
||||||
|
return {
|
||||||
|
token: state.apiReducer.token,
|
||||||
|
user: state.apiReducer.user,
|
||||||
|
logged: state.apiReducer.logged,
|
||||||
|
userDetails: state.apiReducer.userDetails,
|
||||||
|
onHold: state.apiReducer.onHold,
|
||||||
|
bilhete: state.apiReducer.bilhete,
|
||||||
|
alimentacao: state.apiReducer.alimentacao,
|
||||||
|
alojamento: state.apiReducer.alojamento,
|
||||||
|
acesso: state.apiReducer.acesso,
|
||||||
|
team: state.apiReducer.team,
|
||||||
|
internalToken: state.apiReducer.internalToken,
|
||||||
|
eventsInternal: state.apiReducer.eventsInternal
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function mapDispatchToProps(dispatch) {
|
||||||
|
return bindActionCreators(Actions, dispatch);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default connect(
|
||||||
|
mapStateToProps,
|
||||||
|
mapDispatchToProps
|
||||||
|
)(map);
|
|
@ -210,7 +210,7 @@ class teamDetail extends React.Component {
|
||||||
>
|
>
|
||||||
{item.location.nome}
|
{item.location.nome}
|
||||||
</Text>
|
</Text>
|
||||||
<Text style={{ fontSize: 12, padding: 15 }}>
|
<Text style={{ fontSize: 12, padding: 15 }} numberOfLines={5}>
|
||||||
{item.location.desc}
|
{item.location.desc}
|
||||||
</Text>
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
|
|
|
@ -68,7 +68,7 @@ export function scanQrCode(data, tokenInternal) {
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
console.log(err);
|
console.log(err);
|
||||||
Alert.alert("ERRO!", "Existiu um no scan do QRCode");
|
Alert.alert("ERRO!", "Existiu um erro no scan do QRCode\nOu esse QR code não existe ou já tens o cromo conquistado.");
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -160,7 +160,7 @@ export function getCromos(user, tokenInternal) {
|
||||||
})
|
})
|
||||||
.catch(p => {
|
.catch(p => {
|
||||||
console.log(p);
|
console.log(p);
|
||||||
Alert.alert("ERRO!", "erro a obter os eventos");
|
Alert.alert("ERRO!", "Erro a obter os cromos.");
|
||||||
});
|
});
|
||||||
|
|
||||||
dispatch({
|
dispatch({
|
||||||
|
@ -864,32 +864,32 @@ function getCareerPath(sessions) {
|
||||||
for (let key in sessions) {
|
for (let key in sessions) {
|
||||||
if (sessions[key].Name == "IA") {
|
if (sessions[key].Name == "IA") {
|
||||||
careerPath = "Artificial Intelligence";
|
careerPath = "Artificial Intelligence";
|
||||||
careerColor = "#CC1A17";
|
careerColor = "#F54B10";
|
||||||
code = "IA";
|
code = "IA";
|
||||||
}
|
}
|
||||||
if (sessions[key].Name == "IOT") {
|
if (sessions[key].Name == "IOT") {
|
||||||
careerPath = "Internet of things";
|
careerPath = "Internet of Things";
|
||||||
careerColor = "#4B266A";
|
careerColor = "#EC174A";
|
||||||
code = "IOT";
|
code = "IOT";
|
||||||
}
|
}
|
||||||
if (sessions[key].Name == "WEB") {
|
if (sessions[key].Name == "WEB") {
|
||||||
careerPath = "Web development";
|
careerPath = "Web Development";
|
||||||
careerColor = "#FBB81B";
|
careerColor = "#3A1484";
|
||||||
code = "WEB";
|
code = "WEB";
|
||||||
}
|
}
|
||||||
if (sessions[key].Name == "NET") {
|
if (sessions[key].Name == "NET") {
|
||||||
careerPath = "Networking and Security";
|
careerPath = "Networking and Security";
|
||||||
careerColor = "#055CA0";
|
careerColor = "#214198";
|
||||||
code = "NET";
|
code = "NET";
|
||||||
}
|
}
|
||||||
if (sessions[key].Name == "MOB") {
|
if (sessions[key].Name == "MOB") {
|
||||||
careerPath = "Mobile Development";
|
careerPath = "Mobile Development";
|
||||||
careerColor = "#0B7D3C";
|
careerColor = "#971384";
|
||||||
code = "MOB";
|
code = "MOB";
|
||||||
}
|
}
|
||||||
if (sessions[key].Name == "DS") {
|
if (sessions[key].Name == "DS") {
|
||||||
careerPath = "Data Science";
|
careerPath = "Data Science";
|
||||||
careerColor = "#ED6B33";
|
careerColor = "#DC160D";
|
||||||
code = "DS";
|
code = "DS";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1401,7 +1401,8 @@ function getE(user, careerPath, token) {
|
||||||
name: user.Sessions[key].Name,
|
name: user.Sessions[key].Name,
|
||||||
Enrolled: user.Sessions[key].Enrolled,
|
Enrolled: user.Sessions[key].Enrolled,
|
||||||
MaxAttendees: user.Sessions[key].MaxAttendees,
|
MaxAttendees: user.Sessions[key].MaxAttendees,
|
||||||
day: moment(user.Sessions[key].SessionStart).format("DD")
|
day: moment(user.Sessions[key].SessionStart).format("DD"),
|
||||||
|
LocalRoom: user.Sessions[key].LocalRoom
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1412,163 +1413,63 @@ function getE(user, careerPath, token) {
|
||||||
c = [],
|
c = [],
|
||||||
d = [];
|
d = [];
|
||||||
|
|
||||||
//MEU DEUS QUE É ISTO???
|
|
||||||
if (careerPath != undefined && careerPath.code == "IA" || careerPath.code == "WEB") {
|
|
||||||
b.push({
|
|
||||||
Id: 22,
|
|
||||||
time: "13:30",
|
|
||||||
description: "Almoço para os career path's de IA e WEB",
|
|
||||||
day: "13",
|
|
||||||
name: "Almoço",
|
|
||||||
place: "Cantina do ISEC"
|
|
||||||
})
|
|
||||||
c.push({
|
|
||||||
Id: 22,
|
|
||||||
time: "13:30",
|
|
||||||
description: "Almoço para os career path's de IA e WEB",
|
|
||||||
day: "14",
|
|
||||||
name: "Almoço",
|
|
||||||
place: "Cantina do ISEC"
|
|
||||||
})
|
|
||||||
d.push({
|
|
||||||
Id: 22,
|
|
||||||
time: "13:30",
|
|
||||||
description: "Almoço para os career path's de IA e WEB",
|
|
||||||
day: "15",
|
|
||||||
name: "Almoço",
|
|
||||||
place: "Cantina do ISEC"
|
|
||||||
})
|
|
||||||
a.push({
|
|
||||||
Id: 22,
|
|
||||||
time: "19:00",
|
|
||||||
description: "Jantar para os career path's de IA e WEB",
|
|
||||||
day: "12",
|
|
||||||
name: "Jantar",
|
|
||||||
place: "Cantina do ISEC"
|
|
||||||
});
|
|
||||||
b.push({
|
|
||||||
Id: 22,
|
|
||||||
time: "19:00",
|
|
||||||
description: "Jantar para os career path's de IA e WEB",
|
|
||||||
day: "13",
|
|
||||||
name: "Jantar",
|
|
||||||
place: "Cantina do ISEC"
|
|
||||||
});
|
|
||||||
c.push({
|
|
||||||
Id: 22,
|
|
||||||
time: "19:00",
|
|
||||||
description: "Jantar para os career path's de IA e WEB",
|
|
||||||
day: "14",
|
|
||||||
name: "Jantar",
|
|
||||||
place: "Cantina do ISEC"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (careerPath != undefined && careerPath.code == "IOT" || careerPath.code == "NET") {
|
|
||||||
b.push({
|
|
||||||
Id: 22,
|
|
||||||
time: "12:15",
|
|
||||||
description: "Almoço para os career path's de IOT e NET",
|
|
||||||
day: "13",
|
|
||||||
name: "Almoço",
|
|
||||||
place: "Cantina do ISEC"
|
|
||||||
})
|
|
||||||
c.push({
|
|
||||||
Id: 22,
|
|
||||||
time: "12:15",
|
|
||||||
description: "Almoço para os career path's de IOT e NET",
|
|
||||||
day: "14",
|
|
||||||
name: "Almoço",
|
|
||||||
place: "Cantina do ISEC"
|
|
||||||
})
|
|
||||||
d.push({
|
|
||||||
Id: 22,
|
|
||||||
time: "12:15",
|
|
||||||
description: "Almoço para os career path's de IOT e NET",
|
|
||||||
day: "15",
|
|
||||||
name: "Almoço",
|
|
||||||
place: "Cantina do ISEC"
|
|
||||||
})
|
|
||||||
a.push({
|
|
||||||
Id: 22,
|
|
||||||
time: "19:30",
|
|
||||||
description: "Jantar para os career path's de IOT e NET ",
|
|
||||||
day: "12",
|
|
||||||
name: "Jantar",
|
|
||||||
place: "Cantina do ISEC"
|
|
||||||
});
|
|
||||||
b.push({
|
|
||||||
Id: 22,
|
|
||||||
time: "19:30",
|
|
||||||
description: "Jantar para os career path's de IOT e NET",
|
|
||||||
day: "13",
|
|
||||||
name: "Jantar",
|
|
||||||
place: "Cantina do ISEC"
|
|
||||||
});
|
|
||||||
c.push({
|
|
||||||
Id: 22,
|
|
||||||
time: "19:30",
|
|
||||||
description: "Jantar para os career path de IOT e NET",
|
|
||||||
day: "14",
|
|
||||||
name: "Jantar",
|
|
||||||
place: "Cantina do ISEC"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (careerPath != undefined && careerPath.code == "DS" || careerPath.code == "MOB") {
|
|
||||||
b.push({
|
|
||||||
Id: 22,
|
|
||||||
time: "12:45",
|
|
||||||
description: "Almoço para os career paths de DS e MOB ",
|
|
||||||
day: "13",
|
|
||||||
name: "Jantar",
|
|
||||||
place: "Cantina do ISEC"
|
|
||||||
});
|
|
||||||
c.push({
|
|
||||||
Id: 22,
|
|
||||||
time: "12:45",
|
|
||||||
description: "Almoço para os career paths de DS e MOB ",
|
|
||||||
day: "13",
|
|
||||||
name: "Jantar",
|
|
||||||
place: "Cantina do ISEC"
|
|
||||||
});
|
|
||||||
d.push({
|
|
||||||
Id: 22,
|
|
||||||
time: "12:45",
|
|
||||||
description: "Almoço para os career paths de DS e MOB ",
|
|
||||||
day: "13",
|
|
||||||
name: "Jantar",
|
|
||||||
place: "Cantina do ISEC"
|
|
||||||
});
|
|
||||||
a.push({
|
|
||||||
Id: 22,
|
|
||||||
time: "20:00",
|
|
||||||
description: "Jantar para os career paths de DS e MOB ",
|
|
||||||
day: "12",
|
|
||||||
name: "Jantar",
|
|
||||||
place: "Cantina do ISEC"
|
|
||||||
});
|
|
||||||
b.push({
|
|
||||||
Id: 22,
|
|
||||||
time: "20:00",
|
|
||||||
description: "Jantar para os career paths de DS e MOB ",
|
|
||||||
day: "13",
|
|
||||||
name: "Jantar",
|
|
||||||
place: "Cantina do ISEC"
|
|
||||||
});
|
|
||||||
c.push({
|
|
||||||
Id: 22,
|
|
||||||
time: "20:00",
|
|
||||||
description: "Jantar para os career paths de DS e MOB ",
|
|
||||||
day: "14",
|
|
||||||
name: "Jantar",
|
|
||||||
place: "Cantina do ISEC"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
b.push({
|
||||||
|
Id: 22,
|
||||||
|
time: "12:15",
|
||||||
|
description: "Poderás escolher entre carne, peixe ou prato vegetariano e ainda tens uma sopa e sobremesa",
|
||||||
|
day: "13",
|
||||||
|
name: "Almoço.",
|
||||||
|
place: "Cantina do ISEC"
|
||||||
|
})
|
||||||
|
c.push({
|
||||||
|
Id: 23,
|
||||||
|
time: "12:15",
|
||||||
|
description: "Poderás escolher entre carne, peixe ou prato vegetariano e ainda tens uma sopa e sobremesa.",
|
||||||
|
day: "14",
|
||||||
|
name: "Almoço",
|
||||||
|
place: "Cantina do ISEC"
|
||||||
|
})
|
||||||
|
d.push({
|
||||||
|
Id: 24,
|
||||||
|
time: "12:15",
|
||||||
|
description: "Poderás escolher entre carne, peixe ou prato vegetariano e ainda tens uma sopa e sobremesa.",
|
||||||
|
day: "15",
|
||||||
|
name: "Almoço",
|
||||||
|
place: "Cantina do ISEC"
|
||||||
|
})
|
||||||
|
a.push({
|
||||||
|
Id: 35,
|
||||||
|
time: "19:00",
|
||||||
|
description: "Foi um longo dia e estás cheio de fome, dirigi-te à nossa cantina para usufruires do jantar. Poderás escolher entre carne, peixe ou prato vegetariano e ainda tens uma sopa e sobremesa. ",
|
||||||
|
day: "12",
|
||||||
|
name: "Jantar",
|
||||||
|
place: "Cantina do ISEC"
|
||||||
|
});
|
||||||
|
b.push({
|
||||||
|
Id: 36,
|
||||||
|
time: "19:00",
|
||||||
|
description: "Foi um longo dia e estás cheio de fome, dirigi-te à nossa cantina para usufruires do jantar. Poderás escolher entre carne, peixe ou prato vegetariano e ainda tens uma sopa e sobremesa.",
|
||||||
|
day: "13",
|
||||||
|
name: "Jantar",
|
||||||
|
place: "Cantina do ISEC"
|
||||||
|
});
|
||||||
|
c.push({
|
||||||
|
Id: 37,
|
||||||
|
time: "19:00",
|
||||||
|
description: "Foi um longo dia e estás cheio de fome, dirigi-te à nossa cantina para usufruires do jantar. Poderás escolher entre carne, peixe ou prato vegetariano e ainda tens uma sopa e sobremesa. ",
|
||||||
|
day: "14",
|
||||||
|
name: "Jantar",
|
||||||
|
place: "Cantina do ISEC"
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
a.push({
|
a.push({
|
||||||
Id: 48,
|
Id: 48,
|
||||||
time: "21:00",
|
time: "21:00",
|
||||||
description:
|
description:
|
||||||
"Festarola do evento",
|
"Para começar o primeiro dia em grande, temos reservado para ti a maior festa",
|
||||||
name: "Festarola",
|
name: "Festarola",
|
||||||
Enrolled: 700,
|
Enrolled: 700,
|
||||||
MaxAttendees: 300,
|
MaxAttendees: 300,
|
||||||
|
@ -1653,7 +1554,7 @@ function getE(user, careerPath, token) {
|
||||||
Enrolled: result["12"][key].Enrolled,
|
Enrolled: result["12"][key].Enrolled,
|
||||||
MaxAttendees: result["12"][key].MaxAttendees,
|
MaxAttendees: result["12"][key].MaxAttendees,
|
||||||
day: result["12"][key].day,
|
day: result["12"][key].day,
|
||||||
place: ""
|
place: result["12"][key].LocalRoom
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1668,7 +1569,7 @@ function getE(user, careerPath, token) {
|
||||||
Enrolled: result["13"][key].Enrolled,
|
Enrolled: result["13"][key].Enrolled,
|
||||||
MaxAttendees: result["13"][key].MaxAttendees,
|
MaxAttendees: result["13"][key].MaxAttendees,
|
||||||
day: result["13"][key].day,
|
day: result["13"][key].day,
|
||||||
place: ""
|
place: result["13"][key].LocalRoom
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
for (let key in result["14"]) {
|
for (let key in result["14"]) {
|
||||||
|
@ -1682,7 +1583,7 @@ function getE(user, careerPath, token) {
|
||||||
Enrolled: result["14"][key].Enrolled,
|
Enrolled: result["14"][key].Enrolled,
|
||||||
MaxAttendees: result["14"][key].MaxAttendees,
|
MaxAttendees: result["14"][key].MaxAttendees,
|
||||||
day: result["14"][key].day,
|
day: result["14"][key].day,
|
||||||
place: ""
|
place: result["14"][key].LocalRoom
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1697,7 +1598,7 @@ function getE(user, careerPath, token) {
|
||||||
Enrolled: result["15"][key].Enrolled,
|
Enrolled: result["15"][key].Enrolled,
|
||||||
MaxAttendees: result["15"][key].MaxAttendees,
|
MaxAttendees: result["15"][key].MaxAttendees,
|
||||||
day: result["15"][key].day,
|
day: result["15"][key].day,
|
||||||
place: ""
|
place: result["15"][key].LocalRoom
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
a = _.sortBy(a, function (o) {
|
a = _.sortBy(a, function (o) {
|
||||||
|
@ -1938,7 +1839,7 @@ export function getUserInfo(token) {
|
||||||
axios.defaults.baseURL = "https://api.enei.pt";
|
axios.defaults.baseURL = "https://api.enei.pt";
|
||||||
|
|
||||||
axios
|
axios
|
||||||
.get(`api / EventLocsVisited / t / ${v.data.id}`)
|
.get(`/api/EventLocsVisited/t/${v.data.id}`)
|
||||||
.then(c => {
|
.then(c => {
|
||||||
|
|
||||||
console.log("sucesso!");
|
console.log("sucesso!");
|
||||||
|
|
|
@ -15,13 +15,13 @@
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.1</string>
|
<string>1.3</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>12</string>
|
<string>15</string>
|
||||||
<key>LSApplicationCategoryType</key>
|
<key>LSApplicationCategoryType</key>
|
||||||
<string></string>
|
<string>public.app-category.utilities</string>
|
||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>NSAppTransportSecurity</key>
|
<key>NSAppTransportSecurity</key>
|
||||||
|
@ -50,7 +50,7 @@
|
||||||
<key>NSLocationWhenInUseUsageDescription</key>
|
<key>NSLocationWhenInUseUsageDescription</key>
|
||||||
<string>Not used, just added this key because i used react-native and needed this keys for approval.</string>
|
<string>Not used, just added this key because i used react-native and needed this keys for approval.</string>
|
||||||
<key>NSMicrophoneUsageDescription</key>
|
<key>NSMicrophoneUsageDescription</key>
|
||||||
<string>Not used, just added this key because i used react-native and needed this keys for approval.</string>
|
<string>Not really used, but the module asks for it when openning the camera.</string>
|
||||||
<key>NSMotionUsageDescription</key>
|
<key>NSMotionUsageDescription</key>
|
||||||
<string>Not used, just added this key because i used react-native and needed this keys for approval.</string>
|
<string>Not used, just added this key because i used react-native and needed this keys for approval.</string>
|
||||||
<key>NSPhotoLibraryAddUsageDescription</key>
|
<key>NSPhotoLibraryAddUsageDescription</key>
|
||||||
|
|
|
@ -7961,7 +7961,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"react-native-image-overlay": {
|
"react-native-image-overlay": {
|
||||||
"version": "0.1.2",
|
"version": "0.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/react-native-image-overlay/-/react-native-image-overlay-0.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/react-native-image-overlay/-/react-native-image-overlay-0.1.2.tgz",
|
||||||
|
@ -7970,7 +7969,19 @@
|
||||||
"prop-types": "^15.6.1"
|
"prop-types": "^15.6.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"react-native-image-pan-zoom": {
|
||||||
|
"version": "2.1.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/react-native-image-pan-zoom/-/react-native-image-pan-zoom-2.1.11.tgz",
|
||||||
|
"integrity": "sha512-ZCisGUFpPchHXsjT7ZI0anlSLPgcTmjRKXqpVnPu3RDWFXfKjuL4zpY57DX4Y8YgGZCpbf9fApN7KjVYody2Mw=="
|
||||||
|
},
|
||||||
|
"react-native-image-zoom-viewer": {
|
||||||
|
"version": "2.2.25",
|
||||||
|
"resolved": "https://registry.npmjs.org/react-native-image-zoom-viewer/-/react-native-image-zoom-viewer-2.2.25.tgz",
|
||||||
|
"integrity": "sha512-/w3GsUD9F5c6ZE+3GC1UmE0I9yCAfTf/5Jjz5bDCvIQFp2MoMod3BQzRnZ1PjZbCq6a90eZ5rnB2Zvm1rFOgeQ==",
|
||||||
|
"requires": {
|
||||||
|
"react-native-image-pan-zoom": "^2.1.9"
|
||||||
|
}
|
||||||
|
},
|
||||||
"react-native-ionicons": {
|
"react-native-ionicons": {
|
||||||
"version": "4.5.5",
|
"version": "4.5.5",
|
||||||
"resolved": "https://registry.npmjs.org/react-native-ionicons/-/react-native-ionicons-4.5.5.tgz",
|
"resolved": "https://registry.npmjs.org/react-native-ionicons/-/react-native-ionicons-4.5.5.tgz",
|
||||||
|
|
|
@ -27,9 +27,8 @@
|
||||||
"react-native-elements": "^1.0.0",
|
"react-native-elements": "^1.0.0",
|
||||||
"react-native-fit-image": "^1.5.4",
|
"react-native-fit-image": "^1.5.4",
|
||||||
"react-native-gesture-handler": "^1.0.15",
|
"react-native-gesture-handler": "^1.0.15",
|
||||||
|
|
||||||
"react-native-image-overlay": "^0.1.2",
|
"react-native-image-overlay": "^0.1.2",
|
||||||
|
"react-native-image-zoom-viewer": "^2.2.25",
|
||||||
"react-native-ionicons": "^4.5.5",
|
"react-native-ionicons": "^4.5.5",
|
||||||
"react-native-linear-gradient": "^2.5.3",
|
"react-native-linear-gradient": "^2.5.3",
|
||||||
"react-native-loader": "^1.2.1",
|
"react-native-loader": "^1.2.1",
|
||||||
|
|
|
@ -25,7 +25,7 @@ namespace api.Controllers
|
||||||
|
|
||||||
public class AuthController : ControllerBase
|
public class AuthController : ControllerBase
|
||||||
{
|
{
|
||||||
private readonly DataContext context;
|
private readonly DataContext context;
|
||||||
private readonly IConfiguration config;
|
private readonly IConfiguration config;
|
||||||
public UserManager<User> _userManager { get; }
|
public UserManager<User> _userManager { get; }
|
||||||
public SignInManager<User> _signInManager { get; }
|
public SignInManager<User> _signInManager { get; }
|
||||||
|
@ -34,19 +34,19 @@ namespace api.Controllers
|
||||||
private readonly RoleManager<Role> _roleManager;
|
private readonly RoleManager<Role> _roleManager;
|
||||||
private readonly System.Net.Http.IHttpClientFactory clientFactory;
|
private readonly System.Net.Http.IHttpClientFactory clientFactory;
|
||||||
|
|
||||||
public AuthController(DataContext context,IConfiguration config, UserManager<User> UserManager, SignInManager<User> SignInManager, IMapper mapper, RoleManager<Role> roleManager, IUsersRepository repo, System.Net.Http.IHttpClientFactory clientFactory)
|
public AuthController(DataContext context, IConfiguration config, UserManager<User> UserManager, SignInManager<User> SignInManager, IMapper mapper, RoleManager<Role> roleManager, IUsersRepository repo, System.Net.Http.IHttpClientFactory clientFactory)
|
||||||
{
|
{
|
||||||
_mapper = mapper;
|
_mapper = mapper;
|
||||||
_roleManager = roleManager;
|
_roleManager = roleManager;
|
||||||
_repo = repo;
|
_repo = repo;
|
||||||
this.clientFactory = clientFactory;
|
this.clientFactory = clientFactory;
|
||||||
this.config = config;
|
this.config = config;
|
||||||
_userManager = UserManager;
|
_userManager = UserManager;
|
||||||
_signInManager = SignInManager;
|
_signInManager = SignInManager;
|
||||||
this.context = context;
|
this.context = context;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[HttpPost("register")]
|
[HttpPost("register")]
|
||||||
public async Task<IActionResult> Register(UserForRegisterDto userToRegister)
|
public async Task<IActionResult> Register(UserForRegisterDto userToRegister)
|
||||||
|
@ -54,7 +54,7 @@ namespace api.Controllers
|
||||||
var userToCreate = _mapper.Map<User>(userToRegister);
|
var userToCreate = _mapper.Map<User>(userToRegister);
|
||||||
|
|
||||||
var result = await _userManager.CreateAsync(userToCreate, userToRegister.password);
|
var result = await _userManager.CreateAsync(userToCreate, userToRegister.password);
|
||||||
|
|
||||||
if (result.Succeeded)
|
if (result.Succeeded)
|
||||||
{
|
{
|
||||||
return StatusCode(201);
|
return StatusCode(201);
|
||||||
|
@ -62,6 +62,9 @@ namespace api.Controllers
|
||||||
return BadRequest(result.Errors);
|
return BadRequest(result.Errors);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[HttpPost("login")]
|
[HttpPost("login")]
|
||||||
public async Task<IActionResult> Login(UserForLoginDto UserForLoginDto)
|
public async Task<IActionResult> Login(UserForLoginDto UserForLoginDto)
|
||||||
{
|
{
|
||||||
|
@ -87,44 +90,48 @@ namespace api.Controllers
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("loginQR")]
|
[HttpPost("loginQR")]
|
||||||
public async Task<IActionResult> loginQr(loginQr a){
|
public async Task<IActionResult> loginQr(loginQr a)
|
||||||
|
{
|
||||||
var u = await _userManager.FindByNameAsync(a.QRcode);
|
|
||||||
|
|
||||||
using (var client = new HttpClient())
|
|
||||||
{
|
|
||||||
try{
|
|
||||||
|
|
||||||
var url = "https://tickets.enei.pt/internal/api/Attendee/Detail";
|
|
||||||
|
|
||||||
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + a.token);
|
|
||||||
|
|
||||||
|
|
||||||
var response = await client.GetStringAsync(url);
|
var u = await _userManager.FindByNameAsync(a.QRcode);
|
||||||
|
|
||||||
// Console.WriteLine(response);
|
using (var client = new HttpClient())
|
||||||
|
{
|
||||||
//var resource = JObject.Parse(response);
|
try
|
||||||
var appUser = await _userManager.Users.FirstOrDefaultAsync(SU => SU.NormalizedUserName == a.QRcode.ToUpper());
|
|
||||||
|
|
||||||
|
|
||||||
return Ok(new
|
|
||||||
{
|
{
|
||||||
|
|
||||||
token = GenerateJwtToken(appUser).Result
|
var url = "https://tickets.enei.pt/internal/api/Attendee/Detail";
|
||||||
});
|
|
||||||
|
|
||||||
}catch(Exception e){
|
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + a.token);
|
||||||
|
|
||||||
Console.WriteLine(e);
|
|
||||||
|
|
||||||
return Unauthorized();
|
var response = await client.GetStringAsync(url);
|
||||||
|
|
||||||
}
|
// Console.WriteLine(response);
|
||||||
|
|
||||||
|
//var resource = JObject.Parse(response);
|
||||||
|
var appUser = await _userManager.Users.FirstOrDefaultAsync(SU => SU.NormalizedUserName == a.QRcode.ToUpper());
|
||||||
|
|
||||||
|
|
||||||
|
return Ok(new
|
||||||
|
{
|
||||||
|
|
||||||
|
token = GenerateJwtToken(appUser).Result
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
return Unauthorized();
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
|
||||||
|
Console.WriteLine(e);
|
||||||
|
|
||||||
|
return Unauthorized();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
return Unauthorized();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -138,8 +145,9 @@ namespace api.Controllers
|
||||||
|
|
||||||
var roles = await _userManager.GetRolesAsync(user);
|
var roles = await _userManager.GetRolesAsync(user);
|
||||||
|
|
||||||
foreach(var role in roles) {
|
foreach (var role in roles)
|
||||||
claims.Add(new Claim(ClaimTypes.Role,role));
|
{
|
||||||
|
claims.Add(new Claim(ClaimTypes.Role, role));
|
||||||
}
|
}
|
||||||
|
|
||||||
//obtem a key na app settings
|
//obtem a key na app settings
|
||||||
|
@ -151,7 +159,7 @@ namespace api.Controllers
|
||||||
//criamos um token
|
//criamos um token
|
||||||
var tokenDescriptor = new SecurityTokenDescriptor
|
var tokenDescriptor = new SecurityTokenDescriptor
|
||||||
{
|
{
|
||||||
Subject = new ClaimsIdentity(claims),
|
Subject = new ClaimsIdentity(claims),
|
||||||
//data de expiração (atual + 24 horas)
|
//data de expiração (atual + 24 horas)
|
||||||
Expires = DateTime.Now.AddDays(30),
|
Expires = DateTime.Now.AddDays(30),
|
||||||
|
|
||||||
|
|
|
@ -49,10 +49,20 @@ namespace api.Controllers
|
||||||
|
|
||||||
if (Int32.Parse(usrCromos[i]) == c.Id)
|
if (Int32.Parse(usrCromos[i]) == c.Id)
|
||||||
{
|
{
|
||||||
soma += c.pontos;
|
|
||||||
Cromos toAdd = new Cromos { Id = c.Id, Nome = c.Nome, DescMostrar = c.DescUnlocked, QRCode = c.QRCode, img = c.img, unlocked = true, websiteCromo = c.websiteCromo, pontos = c.pontos, logo = c.logo };
|
Cromos toAdd = new Cromos { Id = c.Id, Nome = c.Nome, DescMostrar = c.DescUnlocked, QRCode = c.QRCode, img = c.img, unlocked = true, websiteCromo = c.websiteCromo, pontos = c.pontos, logo = c.logo };
|
||||||
rList.Add(toAdd);
|
|
||||||
found = true;
|
var d = rList.Find(x => x.Id == c.Id);
|
||||||
|
|
||||||
|
if (d != null)
|
||||||
|
continue;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
soma += c.pontos;
|
||||||
|
rList.Add(toAdd);
|
||||||
|
found = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,57 +26,70 @@ namespace api.Controllers
|
||||||
this.context = context;
|
this.context = context;
|
||||||
_mapper = mapper;
|
_mapper = mapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
// PSOT api/scan
|
// PSOT api/scan
|
||||||
// POST scan de QR code
|
// POST scan de QR code
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<IActionResult> doScan(QRToScan ScanData)
|
public async Task<IActionResult> doScan(QRToScan ScanData)
|
||||||
{
|
{
|
||||||
Boolean crExist = false;
|
User usr = await context.Users.FirstOrDefaultAsync(b => b.QRcode == ScanData.UserQR);
|
||||||
User usr = await context.Users.FirstOrDefaultAsync(b=>b.QRcode == ScanData.UserQR);
|
|
||||||
var allUsers = await context.Users.ToListAsync();
|
var allUsers = await context.Users.ToListAsync();
|
||||||
var allCromos = await context.Cromos.ToListAsync();
|
var allCromos = await context.Cromos.ToListAsync();
|
||||||
|
|
||||||
var userAProcurar = await context.Users.FirstOrDefaultAsync(c=>c.QRcode == ScanData.ScanQR);
|
var userAProcurar = await context.Users.FirstOrDefaultAsync(c => c.QRcode == ScanData.ScanQR);
|
||||||
|
|
||||||
ScanReturn toReturn = new ScanReturn{tipo = -1};
|
ScanReturn toReturn = new ScanReturn { tipo = -1 };
|
||||||
|
|
||||||
|
if (userAProcurar != null)
|
||||||
|
{
|
||||||
|
|
||||||
if(userAProcurar != null){
|
|
||||||
UserForListDto ru = new UserForListDto();
|
UserForListDto ru = new UserForListDto();
|
||||||
_mapper.Map(userAProcurar,ru);
|
_mapper.Map(userAProcurar, ru);
|
||||||
toReturn.user = ru;
|
toReturn.user = ru;
|
||||||
toReturn.tipo=1;
|
toReturn.tipo = 1;
|
||||||
return Ok(toReturn);
|
return Ok(toReturn);
|
||||||
}else{
|
|
||||||
allCromos.ForEach(delegate(Cromos c){
|
}
|
||||||
if(c.QRCode == ScanData.ScanQR){
|
else
|
||||||
string[] cromosArr = usr.cromos.Split(",").ToArray();
|
{
|
||||||
int[] cromosIntArr = Array.ConvertAll(cromosArr,Int32.Parse);
|
bool repetido = false;
|
||||||
|
|
||||||
for(var i =0;i<cromosIntArr.Length;i++){
|
allCromos.ForEach(delegate (Cromos c)
|
||||||
if(cromosIntArr[i] == c.Id){ //cromos ja existe no user
|
{
|
||||||
crExist = true;
|
|
||||||
|
if (c.QRCode == ScanData.ScanQR)
|
||||||
|
{
|
||||||
|
toReturn.tipo = 0;
|
||||||
|
|
||||||
|
string[] usrCromos = usr.cromos.Substring(1).Split(",");
|
||||||
|
|
||||||
|
foreach (string cromo in usrCromos)
|
||||||
|
{
|
||||||
|
Console.WriteLine("cromo: "+cromo);
|
||||||
|
if (c.Id == Int32.Parse(cromo))
|
||||||
|
{
|
||||||
|
repetido = true;
|
||||||
|
Console.WriteLine("cromo repetido");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(crExist){
|
if (!repetido)
|
||||||
toReturn.tipo=-1; //tipo erro
|
{
|
||||||
toReturn.resp = "Cromo já existente!";
|
|
||||||
}else{
|
|
||||||
toReturn.tipo=0;
|
|
||||||
usr.cromos = usr.cromos + "," + c.Id;
|
usr.cromos = usr.cromos + "," + c.Id;
|
||||||
context.Users.Update(usr);
|
context.Users.Update(usr);
|
||||||
context.SaveChanges();
|
context.SaveChanges();
|
||||||
|
|
||||||
toReturn.resp = "Cromo Adicionado!";
|
toReturn.resp = "Cromo Adicionado!";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (repetido)
|
||||||
|
{
|
||||||
|
return Unauthorized();
|
||||||
|
}
|
||||||
return Ok(toReturn);
|
return Ok(toReturn);
|
||||||
}
|
}
|
||||||
|
|
||||||
//return toReturn;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,12 +104,12 @@ namespace api.Controllers
|
||||||
|
|
||||||
if (allTeams[i].Id == rUsr.team.Id)
|
if (allTeams[i].Id == rUsr.team.Id)
|
||||||
{
|
{
|
||||||
|
|
||||||
rTeam.ativa= allTeams[i].pagamento;
|
rTeam.ativa = allTeams[i].pagamento;
|
||||||
_mapper.Map(allTeams[i], rTeam);
|
_mapper.Map(allTeams[i], rTeam);
|
||||||
|
|
||||||
var usr = await context.Users.FirstOrDefaultAsync(a => a.QRcode == allTeams[i].CapQR);
|
var usr = await context.Users.FirstOrDefaultAsync(a => a.QRcode == allTeams[i].CapQR);
|
||||||
|
|
||||||
var users = await context.Users.ToListAsync();
|
var users = await context.Users.ToListAsync();
|
||||||
|
|
||||||
List<UserForListDto> usersToReturn = new List<UserForListDto>();
|
List<UserForListDto> usersToReturn = new List<UserForListDto>();
|
||||||
|
@ -133,12 +133,17 @@ namespace api.Controllers
|
||||||
_mapper.Map(usr, uT);
|
_mapper.Map(usr, uT);
|
||||||
|
|
||||||
rTeam.Membros = usersToReturn;
|
rTeam.Membros = usersToReturn;
|
||||||
|
|
||||||
rTeam.Cap = uT;
|
rTeam.Cap = uT;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(rTeam.Id==0 && rTeam.NMembros==0){
|
||||||
|
return NotFound();
|
||||||
|
}
|
||||||
return Ok(rTeam);
|
return Ok(rTeam);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// POST api/teams/add
|
// POST api/teams/add
|
||||||
|
@ -184,7 +189,7 @@ namespace api.Controllers
|
||||||
|
|
||||||
Team tEdit = await context.Teams.FirstOrDefaultAsync(t => t.Id == MemberToAdd.id);
|
Team tEdit = await context.Teams.FirstOrDefaultAsync(t => t.Id == MemberToAdd.id);
|
||||||
|
|
||||||
if (newMember.team == null)
|
if (newMember.team == null && tEdit.NMembros<6)
|
||||||
{
|
{
|
||||||
|
|
||||||
tEdit.NMembros++;
|
tEdit.NMembros++;
|
||||||
|
@ -215,6 +220,11 @@ namespace api.Controllers
|
||||||
|
|
||||||
User cap = await context.Users.FirstOrDefaultAsync(u => u.QRcode == NameChange.UserQR);
|
User cap = await context.Users.FirstOrDefaultAsync(u => u.QRcode == NameChange.UserQR);
|
||||||
|
|
||||||
|
Team findTeam = await context.Teams.FirstOrDefaultAsync(n=>n.Nome == NameChange.nome);
|
||||||
|
|
||||||
|
if(findTeam!= null){
|
||||||
|
return Unauthorized();
|
||||||
|
}
|
||||||
if (cap.QRcode == tEdit.CapQR)
|
if (cap.QRcode == tEdit.CapQR)
|
||||||
{
|
{
|
||||||
tEdit.Nome = NameChange.nome;
|
tEdit.Nome = NameChange.nome;
|
||||||
|
@ -238,7 +248,7 @@ namespace api.Controllers
|
||||||
|
|
||||||
User cap = await context.Users.FirstOrDefaultAsync(u => u.QRcode == DeleteData.UserQR);
|
User cap = await context.Users.FirstOrDefaultAsync(u => u.QRcode == DeleteData.UserQR);
|
||||||
|
|
||||||
|
|
||||||
if (tEdit != null && cap.QRcode == tEdit.CapQR)
|
if (tEdit != null && cap.QRcode == tEdit.CapQR)
|
||||||
{
|
{
|
||||||
context.Teams.Remove(tEdit);
|
context.Teams.Remove(tEdit);
|
||||||
|
@ -251,7 +261,7 @@ namespace api.Controllers
|
||||||
{
|
{
|
||||||
return StatusCode(403);
|
return StatusCode(403);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// POST api/teams/remove/member
|
// POST api/teams/remove/member
|
||||||
|
@ -268,12 +278,12 @@ namespace api.Controllers
|
||||||
User rmMember = await context.Users.FirstOrDefaultAsync(u => u.QRcode == MemberToRemove.UserToRemoveQR);
|
User rmMember = await context.Users.FirstOrDefaultAsync(u => u.QRcode == MemberToRemove.UserToRemoveQR);
|
||||||
|
|
||||||
Console.WriteLine(rmMember.QRcode);
|
Console.WriteLine(rmMember.QRcode);
|
||||||
|
|
||||||
//encontra a equipa de onde quer remover o user
|
//encontra a equipa de onde quer remover o user
|
||||||
Team tEdit = await context.Teams.FirstOrDefaultAsync(t => t.Id == MemberToRemove.TeamID);
|
Team tEdit = await context.Teams.FirstOrDefaultAsync(t => t.Id == MemberToRemove.TeamID);
|
||||||
|
|
||||||
Console.WriteLine(tEdit.Nome);
|
Console.WriteLine(tEdit.Nome);
|
||||||
|
|
||||||
var id = 0;
|
var id = 0;
|
||||||
|
|
||||||
if (rmMember.QRcode == tEdit.CapQR)
|
if (rmMember.QRcode == tEdit.CapQR)
|
||||||
|
|
|
@ -87,25 +87,62 @@ namespace api.Controllers
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[Authorize(Policy = "RequireAdminRole")]
|
//[Authorize(Policy = "RequireAdminRole")]
|
||||||
|
[AllowAnonymous]
|
||||||
[HttpPost("updateAll")]
|
[HttpPost("updateAll")]
|
||||||
public async Task<IActionResult> UpdateUsers(updateUsersDTO[] req)
|
public async Task<IActionResult> UpdateUsers([FromBody] updateUsersDTO[] req)
|
||||||
{
|
{
|
||||||
try
|
foreach (updateUsersDTO u in req)
|
||||||
{
|
{
|
||||||
foreach (var user in req)
|
|
||||||
|
User a = await _repo.GetUser(u.barcode);
|
||||||
|
|
||||||
|
if (a != null)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Console.Write(a.QRcode + "existe \n");
|
||||||
}
|
}
|
||||||
|
|
||||||
return Ok(req);
|
else
|
||||||
}
|
{
|
||||||
catch (Exception e)
|
UserForRegisterDto b = new UserForRegisterDto();
|
||||||
{
|
|
||||||
|
b.fullname = u.name;
|
||||||
|
b.qrcode = u.barcode;
|
||||||
|
b.email= u.email;
|
||||||
|
b.username= u.barcode;
|
||||||
|
b.password = "ENEI$2019MEgAPASSWORD" ;
|
||||||
|
|
||||||
|
var userToCreate = _mapper.Map<User>(b);
|
||||||
|
|
||||||
|
var result = await _userManager.CreateAsync(userToCreate, b.password);
|
||||||
|
|
||||||
|
if (result.Succeeded)
|
||||||
|
{
|
||||||
|
Console.WriteLine("adicionado com sucesso");
|
||||||
|
//return StatusCode(201);
|
||||||
|
}
|
||||||
|
|
||||||
|
//return BadRequest(result.Errors);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Console.Write( _repo.GetUser(u.barcode));
|
||||||
|
|
||||||
|
//Console.Write(u.name);
|
||||||
|
//findUserByQR
|
||||||
|
//se tiver sido encontrado, atualiza
|
||||||
|
//senão adiciona
|
||||||
|
//
|
||||||
|
|
||||||
}
|
}
|
||||||
return Ok();
|
|
||||||
|
// var userFromRepo = await _repo.GetUser(id);
|
||||||
|
|
||||||
|
return Ok(req);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPut("{id}")]
|
[HttpPut("{id}")]
|
||||||
|
|
|
@ -7,6 +7,7 @@ using Microsoft.EntityFrameworkCore;
|
||||||
using api.Dtos;
|
using api.Dtos;
|
||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
using api.Models;
|
using api.Models;
|
||||||
|
using System.Net.Http;
|
||||||
|
|
||||||
namespace api.Controllers
|
namespace api.Controllers
|
||||||
{
|
{
|
||||||
|
@ -19,22 +20,90 @@ namespace api.Controllers
|
||||||
|
|
||||||
public mvcController(DataContext context, UserManager<User> userManager)
|
public mvcController(DataContext context, UserManager<User> userManager)
|
||||||
{
|
{
|
||||||
_context = context;
|
_context = context;
|
||||||
_userManager = userManager;
|
_userManager = userManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpGet("/jogoenei")]
|
||||||
[HttpGet("")]
|
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
public IActionResult landingPage() {
|
|
||||||
|
public IActionResult jogoENEI()
|
||||||
|
{
|
||||||
|
return View("Views/Landing/jogo.cshtml");
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet("/level1ctf")]
|
||||||
|
[AllowAnonymous]
|
||||||
|
public IActionResult level1()
|
||||||
|
{
|
||||||
|
return View("Views/Landing/1stpage.cshtml");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[AllowAnonymous]
|
||||||
|
[HttpGet("")]
|
||||||
|
public IActionResult landingPage()
|
||||||
|
{
|
||||||
|
|
||||||
return View("Views/Landing/index.cshtml");
|
return View("Views/Landing/index.cshtml");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[AllowAnonymous]
|
||||||
|
|
||||||
|
[HttpGet("/reset/{user}")]
|
||||||
|
public async Task<IActionResult> resetPassword(string user)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
using (var client = new HttpClient())
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var url = "https://tickets.enei.pt/internal/api/User/ResetPassword?code=" + user;
|
||||||
|
|
||||||
|
// client.DefaultRequestHeaders.Add("Authorization", "Bearer " + a.token);
|
||||||
|
var response = await client.GetStringAsync(url);
|
||||||
|
|
||||||
|
return View("Views/Landing/resetPage.cshtml");
|
||||||
|
}
|
||||||
|
catch (HttpRequestException a)
|
||||||
|
{
|
||||||
|
|
||||||
|
return View("Views/Landing/resetError.cshtml");
|
||||||
|
// return NotFound(a);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
[HttpGet("/app")]
|
||||||
|
[AllowAnonymous]
|
||||||
|
public IActionResult appPage()
|
||||||
|
{
|
||||||
|
|
||||||
|
return View("Views/Landing/app.cshtml");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[HttpGet("/ctf")]
|
||||||
|
[AllowAnonymous]
|
||||||
|
public IActionResult ctfPage()
|
||||||
|
{
|
||||||
|
|
||||||
|
return View("Views/Landing/ctf.cshtml");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[AllowAnonymous]
|
||||||
|
[Route("{*url}", Order = 999)]
|
||||||
|
public IActionResult CatchAll()
|
||||||
|
{
|
||||||
|
Response.StatusCode = 404;
|
||||||
|
return View("Views/Landing/notFound.cshtml");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -4,6 +4,7 @@ using api.Models;
|
||||||
using api.Data;
|
using api.Data;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace api.Data
|
namespace api.Data
|
||||||
{
|
{
|
||||||
|
@ -25,9 +26,11 @@ namespace api.Data
|
||||||
|
|
||||||
public async Task<List<EventLocVisited>> GetEventLocsVisitedTeam(int id)
|
public async Task<List<EventLocVisited>> GetEventLocsVisitedTeam(int id)
|
||||||
{
|
{
|
||||||
List<EventLoc> allPlaces = await _context.EventLocs.ToListAsync();
|
Team t= await _context.Teams.FirstOrDefaultAsync(team=>team.Id== id);
|
||||||
|
|
||||||
List<EventLocVisited> allLocs = await _context.EventLocsVisited.Include(e => e.Team).Include(e => e.Location).ToListAsync();
|
List<EventLoc> allPlaces = await _context.EventLocs.Where(a=>a.EventId== t.EventId ).ToListAsync();
|
||||||
|
|
||||||
|
List<EventLocVisited> allLocs = await _context.EventLocsVisited.Where(Team=>Team.Id== id).Include(e => e.Team).Include(e => e.Location).ToListAsync();
|
||||||
|
|
||||||
List<EventLocVisited> rList = new List<EventLocVisited>();
|
List<EventLocVisited> rList = new List<EventLocVisited>();
|
||||||
|
|
||||||
|
|
|
@ -8,13 +8,13 @@ namespace api.Data
|
||||||
|
|
||||||
public interface IUsersRepository
|
public interface IUsersRepository
|
||||||
{
|
{
|
||||||
void Add<T>(T enity) where T: class;
|
void Add<T>(T enity) where T : class;
|
||||||
void Delete<T>(T entity) where T: class;
|
void Delete<T>(T entity) where T : class;
|
||||||
Task<bool> SaveAll();
|
Task<bool> SaveAll();
|
||||||
Task<IEnumerable<User>> GetUsers();
|
Task<IEnumerable<User>> GetUsers();
|
||||||
Task<User> GetUser(int id);
|
Task<User> GetUser(int id);
|
||||||
Task<User> changeProfileImage(profileImage a);
|
Task<User> changeProfileImage(profileImage a);
|
||||||
|
Task<User> GetUser(string QR);
|
||||||
|
|
||||||
Task<string> getProfileImageAsync(string qrCode);
|
Task<string> getProfileImageAsync(string qrCode);
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,6 +65,11 @@ namespace api.Data
|
||||||
|
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
public async Task<User> GetUser(string QR){
|
||||||
|
|
||||||
|
var user = await _context.Users.FirstOrDefaultAsync(u=>u.QRcode == QR);
|
||||||
|
return user;
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<IEnumerable<User>> GetUsers()
|
public async Task<IEnumerable<User>> GetUsers()
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
namespace api.Dtos
|
||||||
|
{
|
||||||
|
public class reset
|
||||||
|
{
|
||||||
|
public string email { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,6 +4,6 @@ namespace api.Dtos
|
||||||
{
|
{
|
||||||
public class updateJSONdto
|
public class updateJSONdto
|
||||||
{
|
{
|
||||||
public List<updateUsersDTO> users{get;set;}
|
public updateUsersDTO[] users{get;set;}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,177 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="pt" xml:lang="pt">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
|
||||||
|
Password = "CTF_SacaFácil"
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<header id="main-menu">
|
||||||
|
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<header class="bg-gradient">
|
||||||
|
<div class="container-app">
|
||||||
|
<div class="header-app">
|
||||||
|
<h1>Aplicação ENEI 2019</h1>
|
||||||
|
<h3>Esta aplicação vai-te acompanhar durante todo o evento, melhorando drásticamente a interação com as
|
||||||
|
empresas e atividades.</h3>
|
||||||
|
</div>
|
||||||
|
<div class="image-holder-app">
|
||||||
|
|
||||||
|
<img src="imgs/header.png" alt="phone" class="img-fluid">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="container features-app ">
|
||||||
|
|
||||||
|
<h3 class="subtitle">descobre as </h3>
|
||||||
|
<h1>Páginas da aplicação</h1>
|
||||||
|
|
||||||
|
<button class="tablink" onclick="openPage('Home', this, 'white')" id="defaultOpen">Home</button>
|
||||||
|
<button class="tablink" onclick="openPage('teams', this, 'white')">Equipas</button>
|
||||||
|
<button class="tablink" onclick="openPage('events', this, 'white')">Eventos</button>
|
||||||
|
<button class="tablink" onclick="openPage('game', this, 'white')">Jogo do ENEI</button>
|
||||||
|
<button class="tablink" onclick="openPage('calendar', this, 'white')">Calendário</button>
|
||||||
|
<button class="tablink" onclick="openPage('sign', this, 'white')">Inscrições </button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="download-app">
|
||||||
|
<div class="left">
|
||||||
|
<h1>Faz já o download da aplicação</h1>
|
||||||
|
<h3>Aplicação disponível nas típicas lojas de aplicações.</h3>
|
||||||
|
|
||||||
|
<div class="buttons">
|
||||||
|
<a href="https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=1457702417&mt=8">
|
||||||
|
<div class="button-app">
|
||||||
|
<div class="button-logo">
|
||||||
|
<i class="fab fa-apple"></i>
|
||||||
|
</div>
|
||||||
|
<div class="button-text">
|
||||||
|
<h3>Available on the</h3>
|
||||||
|
<h2>App Store</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<a href="https://play.google.com/store/apps/details?id=pt.enei">
|
||||||
|
<div class="button-app">
|
||||||
|
<div class="button-logo">
|
||||||
|
<i class="fab fa-google-play"></i>
|
||||||
|
</div>
|
||||||
|
<div class="button-text">
|
||||||
|
<h3>Available on the</h3>
|
||||||
|
<h2>Play Store</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
if (checkpass.substring(split*5, split*6) == 'zhpu') {
|
||||||
|
if (checkpass.substring(split*4, split*5) == 'guvf_') {
|
||||||
|
if (checkpass.substring(split*3, split*4) == 'pnzr_') {
|
||||||
|
if (checkpass.substring(split*2, split*3) == 'h_') {
|
||||||
|
if (checkpass.substring(split, split*2) == 'Shaal_') {
|
||||||
|
|
||||||
|
alert("You got the 2º flag upside-down!")
|
||||||
|
|
||||||
|
<!-- faqs section -->
|
||||||
|
<section id="faqs">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-5">
|
||||||
|
<div class="pre-h1">Perguntas Frequentes</div>
|
||||||
|
<h1>Faq</h1>
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<ul id="accordion">
|
||||||
|
<li>
|
||||||
|
<a href="#" title="O que é o ENEI?" rel="nofollow" class="toggle">O que é o ENEI?</a>
|
||||||
|
<div class="content-accordion">
|
||||||
|
<p>O Encontro Nacional de Estudantes de Informática (ENEI) é um evento que pretende
|
||||||
|
oferecer aos estudantes de todo o país um evento que promove a aprendizagem, a troca
|
||||||
|
de
|
||||||
|
ideias e o convívio, enquanto tenta criar fortes ligações com o mundo empresarial.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>Esta versão do evento também incluirá os tradicionais momentos de diversão noturnos
|
||||||
|
que
|
||||||
|
muito apelam a todos os participantes das antigas edições e são uma excelente via de
|
||||||
|
networking e transferência de conhecimento!</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#" title="Onde me posso inscrever?" rel="nofollow" class="toggle">Onde me posso
|
||||||
|
inscrever?</a>
|
||||||
|
<div class="content-accordion">
|
||||||
|
<p>Podes adquirir o teu bilhete <a href="https://tickets.enei.pt" title="Aqui">AQUI</a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#" title="Quando é que o programa vai estar disponível?" rel="nofollow"
|
||||||
|
class="toggle">Quando é que o programa vai estar disponível?</a>
|
||||||
|
<div class="content-accordion">
|
||||||
|
<p>O programa vai sendo lançado nas próximas semanas de forma iterativa.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#" title="Quem pode participar no evento?" rel="nofollow" class="toggle">Quem pode
|
||||||
|
participar no evento?</a>
|
||||||
|
<div class="content-accordion">
|
||||||
|
<p>Podem participar no ENEI'19 todos os estudantes do Ensino Superior ou Secundário.</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#" title="Tenho acesso a todas as sessões?" rel="nofollow" class="toggle">Tenho
|
||||||
|
acesso a todas as sessões?</a>
|
||||||
|
<div class="content-accordion">
|
||||||
|
<p>Não, as palestras e workshops necessitam de inscrições visto que têm lugares
|
||||||
|
limitados.</p>
|
||||||
|
<p>Brevemente poderás te inscrever na aplicação móvel do ENEI'19!</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- footer -->
|
||||||
|
<footer>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-4 col-xs-6">
|
||||||
|
<p>© 2019 ENEI . Todos os direitos reservados</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-8 col-xs-6">
|
||||||
|
<ul id="social-network">
|
||||||
|
<li><a href="https://www.facebook.com/ENEIConf/" title="Facebook" target="_blank"
|
||||||
|
class="icon-facebook"></a></li>
|
||||||
|
<li><a href="https://www.instagram.com/eneiconf/" title="Instagram" target="_blank"
|
||||||
|
class="icon-instagram"></a></li>
|
||||||
|
<li><a href="https://www.linkedin.com/company/enei/" title="Linkedin" target="_blank"
|
||||||
|
class="icon-linkedin"></a></li>
|
||||||
|
<li><a href="mailto:geral@enei.pt" title="Email" target="_blank" class="icon-email"></a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
@ -0,0 +1,386 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="pt" xml:lang="pt">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
|
<meta content="width=device-width, initial-scale=1, user-scalable=0" name="viewport">
|
||||||
|
<meta content="width" name="MobileOptimized">
|
||||||
|
<meta content="true" name="HandheldFriendly">
|
||||||
|
<!-- Place favicon.ico in the root directory -->
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
|
||||||
|
<link rel="manifest" href="site.webmanifest">
|
||||||
|
<link rel="mask-icon" href="safari-pinned-tab.svg" color="#5bbad5">
|
||||||
|
<meta name="msapplication-TileColor" content="#da532c">
|
||||||
|
<meta name="theme-color" content="#ffffff">
|
||||||
|
<title>ENEI'19</title>
|
||||||
|
<meta name="description"
|
||||||
|
content="Página do Encontro Nacional de Estudantes de Informática 2019, no Instituto Superior de Engenharia de Coimbra (ISEC) a realizar-se entre 12 e 15 de abril de 2019. O ENEI pretende oferecer aos estudantes de todo o país um evento que promove a aprendizagem, a troca de ideias e o convívio, enquanto tenta criar fortes ligações com o mundo empresarial.">
|
||||||
|
<meta property="og:locale" content="pt_PT" />
|
||||||
|
<meta property="og:title" content="ENEI'19" />
|
||||||
|
<meta property="og:description"
|
||||||
|
content="Página do Encontro Nacional de Estudantes de Informática 2019, no Instituto Superior de Engenharia de Coimbra (ISEC) a realizar-se entre 12 e 15 de abril de 2019. O ENEI pretende oferecer aos estudantes de todo o país um evento que promove a aprendizagem, a troca de ideias e o convívio, enquanto tenta criar fortes ligações com o mundo empresarial." />
|
||||||
|
<meta property="og:site_name" content="ENEI'19" />
|
||||||
|
<meta property="og:url" content="http://www.enei.pt/" />
|
||||||
|
<meta property="og:image" content="http://www.enei.pt/imgs/share-image.jpg" />
|
||||||
|
<meta property="og:type" content="Website" />
|
||||||
|
<link rel="canonical" href="http://www.enei.pt/" />
|
||||||
|
<link href="bootstrap-grid.css" rel="stylesheet" type="text/css" />
|
||||||
|
<link href="main.css" rel="stylesheet" type="text/css" />
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Bai+Jamjuree:400,600,700" rel="stylesheet">
|
||||||
|
<link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css"
|
||||||
|
integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="overlay"></div>
|
||||||
|
<header id="main-menu">
|
||||||
|
<nav>
|
||||||
|
<a href="#" title="Abrir menu" rel="nofollow" id="open-menu-mobile">Menu</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://enei.pt/#enei" title="Enei">Enei</a></li>
|
||||||
|
<li><a href="https://enei.pt/#calendar">Programa</a></li>
|
||||||
|
<li><a href="https://enei.pt/#precos" title="Preços">Preços</a></li>
|
||||||
|
<li><a href="https://enei.pt/app" title="Preços">App</a></li>
|
||||||
|
<li><a href="https://enei.pt/ctf" title="CTF">CTF</li>
|
||||||
|
<li><a href="https://enei.pt/#sponsors" title="Sponsors">Sponsors</a></li>
|
||||||
|
<li><a href="https://enei.pt/#faqs" title="Faq's">Faq's</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<header class="bg-gradient">
|
||||||
|
<div class="container-app">
|
||||||
|
<div class="header-app">
|
||||||
|
<h1>Aplicação ENEI 2019</h1>
|
||||||
|
<h3>Esta aplicação vai-te acompanhar durante todo o evento, melhorando drásticamente a interação com as
|
||||||
|
empresas e atividades.</h3>
|
||||||
|
</div>
|
||||||
|
<div class="image-holder-app">
|
||||||
|
|
||||||
|
<img src="imgs/header.png" alt="phone" class="img-fluid">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="section darker-bg">
|
||||||
|
|
||||||
|
<div class="section-title">
|
||||||
|
<h3>conhece as</h3>
|
||||||
|
<h2>principais funcionalidades</h2>
|
||||||
|
</div>
|
||||||
|
<div class="card-features">
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<h3 class="card-title">
|
||||||
|
Página Inicial e de Perfil
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<p class="card-text">Acede às tuas informações pessoais! Verifica também o que inclui o teu bilhete: o dias de acesso, alimentação e alojamento.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<h3 class="card-title">
|
||||||
|
Inscrições em palestras
|
||||||
|
</h3>
|
||||||
|
<p class="card-text">Através da aplicação é ainda possível fazer inscrições nas palestras e workshops
|
||||||
|
</p>
|
||||||
|
<p class="card-text">À medida que vão saindo confirmações, as inscrições ficarão disponíveis na APP</p>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<h3 class="card-title">
|
||||||
|
Calendário
|
||||||
|
</h3>
|
||||||
|
<p class="card-text">Acompanha todas as palestras e os seus detalhes através da app.</p>
|
||||||
|
<p class="card-text">Possui ainda a localização da palestra no campus.</p>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<h3 class="card-title">
|
||||||
|
Criar equipas
|
||||||
|
</h3>
|
||||||
|
<p class="card-text">Faz um simples scan e adiciona os teus amigos à tua equipa!!</p>
|
||||||
|
<p class="card-text">Caso sejas o capitão da equipa, podes ainda alterar o nome e remover elementos.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="login-app">
|
||||||
|
|
||||||
|
<img src="imgs/p.png" alt="phone" class="img-fluid">
|
||||||
|
<div class="container-login">
|
||||||
|
<h1>Como usar a APP?</h1>
|
||||||
|
<div class="text-login">
|
||||||
|
<p>Para utilizares a app deves possuir um bilhete.</p>
|
||||||
|
<p>No momento de compra do bilhete recebeste um email com o bilhete, esse bilhete possuí um QR code.
|
||||||
|
</p>
|
||||||
|
<p>O login na app é feito usando esse QR code</p>
|
||||||
|
<p>Para obteres a password, deves efectuar reset através da APP, ou preenchendo o campo a baixo.</p>
|
||||||
|
|
||||||
|
|
||||||
|
<input id="email-input" type="email" name="email" placeholder="Introduz o teu email">
|
||||||
|
|
||||||
|
<button class="button-default" onclick="resetPassword()">Reset Password</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="container features-app ">
|
||||||
|
|
||||||
|
<h3 class="subtitle">descobre as </h3>
|
||||||
|
<h1>Páginas da aplicação</h1>
|
||||||
|
|
||||||
|
|
||||||
|
<button class="tablink" onclick="openPage('Home', this, 'white')" id="defaultOpen">Home</button>
|
||||||
|
<button class="tablink" onclick="openPage('teams', this, 'white')">Equipas</button>
|
||||||
|
<button class="tablink" onclick="openPage('events', this, 'white')">Eventos</button>
|
||||||
|
<button class="tablink" onclick="openPage('game', this, 'white')">Jogo do ENEI</button>
|
||||||
|
<button class="tablink" onclick="openPage('calendar', this, 'white')">Calendário</button>
|
||||||
|
<button class="tablink" onclick="openPage('sign', this, 'white')">Inscrições </button>
|
||||||
|
|
||||||
|
<div id="Home" class="tabcontent">
|
||||||
|
|
||||||
|
<div class="tabDetails">
|
||||||
|
|
||||||
|
<div class="tabText">
|
||||||
|
<h2>Home</h2>
|
||||||
|
|
||||||
|
<p>Nesta página podes encontrar as tua informações pessoais. </p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="teams" class="tabcontent">
|
||||||
|
<div class="tabText">
|
||||||
|
<h2>Equipas</h2>
|
||||||
|
|
||||||
|
<p>Encontra todos os detalhes da tua equipa. Podes criar, editar e eliminar equipas para o ENEI Caching e Rally Tascas.</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="events" class="tabcontent">
|
||||||
|
<div class="tabText">
|
||||||
|
<h2>Eventos</h2>
|
||||||
|
|
||||||
|
<p>Nesta página podes encontrar todas as informações sobre as atividades que ocorrem no evento!</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="game" class="tabcontent">
|
||||||
|
<div class="tabText">
|
||||||
|
<h2>Jogo do ENEI</h2>
|
||||||
|
|
||||||
|
<p>Colecciona todos cromos do evento! Participa em todas as atividades de forma a aumentar a tua probabilidade de ganhar um prémio.</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="calendar" class="tabcontent">
|
||||||
|
<div class="tabText">
|
||||||
|
<h2>Calendário</h2>
|
||||||
|
|
||||||
|
<p>Nesta página podes encontrar as tua informações relativas ao calendário </p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="sign" class="tabcontent">
|
||||||
|
<div class="tabText">
|
||||||
|
<h2>Inscrições</h2>
|
||||||
|
|
||||||
|
<p>Nesta página podes efectuar as incrições em palestras </p>
|
||||||
|
<p>Neste momento existe um bug no IOS, deves esperar pela aprovação da Apple para obter a nova versão.</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="download-app">
|
||||||
|
<div class="left">
|
||||||
|
|
||||||
|
<h1>Faz já o download da aplicação</h1>
|
||||||
|
|
||||||
|
<h3>A versão de IOS possuí alguns bugs que já foram corrigidos, estamos a aguardar a revisão por parte da Apple</h3>
|
||||||
|
<h3>Existe uma versão mais antiga disponível para download. Deves atualizar assim que possível</h3>
|
||||||
|
|
||||||
|
<div class="buttons">
|
||||||
|
<a href="https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=1457702417&mt=8">
|
||||||
|
<div class="button-app">
|
||||||
|
<div class="button-logo">
|
||||||
|
<i class="fab fa-apple"></i>
|
||||||
|
</div>
|
||||||
|
<div class="button-text">
|
||||||
|
<h3>Available on the</h3>
|
||||||
|
<h2>App Store</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<a href="https://play.google.com/store/apps/details?id=pt.enei">
|
||||||
|
<div class="button-app">
|
||||||
|
<div class="button-logo">
|
||||||
|
<i class="fab fa-google-play"></i>
|
||||||
|
</div>
|
||||||
|
<div class="button-text">
|
||||||
|
<h3>Available on the</h3>
|
||||||
|
<h2>Play Store</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- faqs section -->
|
||||||
|
<section id="faqs">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-5">
|
||||||
|
<div class="pre-h1">Perguntas Frequentes</div>
|
||||||
|
<h1>Faq</h1>
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<ul id="accordion">
|
||||||
|
|
||||||
|
<h3>Fica atento</h3>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- footer -->
|
||||||
|
<footer>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-4 col-xs-6">
|
||||||
|
<p>© 2019 ENEI . Todos os direitos reservados</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-8 col-xs-6">
|
||||||
|
<ul id="social-network">
|
||||||
|
<li><a href="https://www.facebook.com/ENEIConf/" title="Facebook" target="_blank" class="icon-facebook"></a></li>
|
||||||
|
<li><a href="https://www.instagram.com/eneiconf/" title="Instagram" target="_blank" class="icon-instagram"></a></li>
|
||||||
|
<li><a href="https://www.linkedin.com/company/enei/" title="Linkedin" target="_blank" class="icon-linkedin"></a></li>
|
||||||
|
<li><a href="mailto:geral@enei.pt" title="Email" target="_blank" class="icon-email"></a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Scripts -->
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
|
||||||
|
<script type="text/javascript" src="js/scripts.js"></script>
|
||||||
|
|
||||||
|
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||||
|
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-130588243-1"></script>
|
||||||
|
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
|
||||||
|
|
||||||
|
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
|
||||||
|
<script>
|
||||||
|
resetPassword = () => {
|
||||||
|
|
||||||
|
var input = document.getElementById("email-input");
|
||||||
|
|
||||||
|
if (input != " ") {
|
||||||
|
|
||||||
|
console.log(input.value);
|
||||||
|
|
||||||
|
axios({
|
||||||
|
url: `https://tickets.enei.pt/internal/api/User/RecoverPassword?input=${input.value}&type=0`,
|
||||||
|
method: 'get',
|
||||||
|
|
||||||
|
}).then(a => {
|
||||||
|
console.log(a);
|
||||||
|
Swal.fire(
|
||||||
|
'Sucesso!',
|
||||||
|
'Foi enviado para o teu email um pedido de recuperação. Pode demorar demorar alguns minutos...',
|
||||||
|
'success'
|
||||||
|
)
|
||||||
|
}).catch(err => {
|
||||||
|
if (err.response.status === 500) {
|
||||||
|
Swal.fire(
|
||||||
|
'Utilizador não existe!',
|
||||||
|
'Verifica se o email é válido, caso o erro continue contacta a comissão organizadora',
|
||||||
|
'error'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Swal.fire(
|
||||||
|
'Erro!',
|
||||||
|
'Aconteceu algum erro com o teu pedido...',
|
||||||
|
'error'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
Swal.fire(
|
||||||
|
'Erro!',
|
||||||
|
'Deves preencher o campo de email.',
|
||||||
|
'warning'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@8"></script>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/promise-polyfill"></script>
|
||||||
|
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||||
|
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-130588243-1"></script>
|
||||||
|
<script>
|
||||||
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
function gtag() { dataLayer.push(arguments); }
|
||||||
|
gtag('js', new Date());
|
||||||
|
gtag('config', 'UA-130588243-1');
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
AOS.init();
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
|
@ -0,0 +1,398 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="pt" xml:lang="pt">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
|
<meta content="width=device-width, initial-scale=1, user-scalable=0" name="viewport">
|
||||||
|
<meta content="width" name="MobileOptimized">
|
||||||
|
<meta content="true" name="HandheldFriendly">
|
||||||
|
<!-- Place favicon.ico in the root directory -->
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
|
||||||
|
<link rel="manifest" href="site.webmanifest">
|
||||||
|
<link rel="mask-icon" href="safari-pinned-tab.svg" color="#5bbad5">
|
||||||
|
<meta name="msapplication-TileColor" content="#da532c">
|
||||||
|
<meta name="theme-color" content="#ffffff">
|
||||||
|
<title>ENEI'19</title>
|
||||||
|
<meta name="description"
|
||||||
|
content="Página do Encontro Nacional de Estudantes de Informática 2019, no Instituto Superior de Engenharia de Coimbra (ISEC) a realizar-se entre 12 e 15 de abril de 2019. O ENEI pretende oferecer aos estudantes de todo o país um evento que promove a aprendizagem, a troca de ideias e o convívio, enquanto tenta criar fortes ligações com o mundo empresarial.">
|
||||||
|
<meta property="og:locale" content="pt_PT" />
|
||||||
|
<meta property="og:title" content="ENEI'19" />
|
||||||
|
<meta property="og:description"
|
||||||
|
content="Página do Encontro Nacional de Estudantes de Informática 2019, no Instituto Superior de Engenharia de Coimbra (ISEC) a realizar-se entre 12 e 15 de abril de 2019. O ENEI pretende oferecer aos estudantes de todo o país um evento que promove a aprendizagem, a troca de ideias e o convívio, enquanto tenta criar fortes ligações com o mundo empresarial." />
|
||||||
|
<meta property="og:site_name" content="ENEI'19" />
|
||||||
|
<meta property="og:url" content="http://www.enei.pt/" />
|
||||||
|
<meta property="og:image" content="http://www.enei.pt/imgs/share-image.jpg" />
|
||||||
|
<meta property="og:type" content="Website" />
|
||||||
|
<link rel="canonical" href="http://www.enei.pt/" />
|
||||||
|
<link href="bootstrap-grid.css" rel="stylesheet" type="text/css" />
|
||||||
|
<link href="main.css" rel="stylesheet" type="text/css" />
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Bai+Jamjuree:400,600,700" rel="stylesheet">
|
||||||
|
<link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css"
|
||||||
|
integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<header id="main-menu">
|
||||||
|
<nav>
|
||||||
|
<a href="#" title="Abrir menu" rel="nofollow" id="open-menu-mobile">Menu</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#enei" title="Enei">Enei</a></li>
|
||||||
|
<li class="unavailable">Oradores</li>
|
||||||
|
<li class="unavailable">Programa</li>
|
||||||
|
<li><a href="#precos" title="Preços">Preços</a></li>
|
||||||
|
<li class="unavailable">App</li>
|
||||||
|
<!-- <li><a href="#ctf" title="Faq's">CTF</li> -->
|
||||||
|
<li><a href="#sponsors" title="Sponsors">Sponsors</a></li>
|
||||||
|
<li><a href="#faqs" title="Faq's">Faq's</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<header class="bg-gradient">
|
||||||
|
<div class="container-app">
|
||||||
|
<div class="header-app">
|
||||||
|
<h1>Aplicação ENEI 2019</h1>
|
||||||
|
<h3>Esta aplicação vai-te acompanhar durante todo o evento, melhorando drásticamente a interação com as
|
||||||
|
empresas e atividades.</h3>
|
||||||
|
</div>
|
||||||
|
<div class="image-holder-app">
|
||||||
|
|
||||||
|
<img src="imgs/header.png" alt="phone" class="img-fluid">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="section darker-bg">
|
||||||
|
|
||||||
|
<div class="section-title">
|
||||||
|
<h3>conhece as</h3>
|
||||||
|
<h2>principais funcionalidades</h2>
|
||||||
|
</div>
|
||||||
|
<div class="card-features">
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<h3 class="card-title">
|
||||||
|
Jogo do ENEI
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<p class="card-text">Nesta página podes encontrar as tuas informações pessoais, o que tens direito com o
|
||||||
|
teu bilhete, e ainda as tuas equipas</p>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<h3 class="card-title">
|
||||||
|
Inscrições em palestras
|
||||||
|
</h3>
|
||||||
|
<p class="card-text">Através da aplicação é ainda possível fazer inscrições nas palestras e workshops
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<h3 class="card-title">
|
||||||
|
Calendário
|
||||||
|
</h3>
|
||||||
|
<p class="card-text">Acompanha todas as palestras e os seus detalhes através da app.</p>
|
||||||
|
<p class="card-text">Possui ainda a localização da palestra no campus.</p>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<h3 class="card-title">
|
||||||
|
Criar equipas
|
||||||
|
</h3>
|
||||||
|
<p class="card-text">Faz um simples scan e adiciona os teus amigos à tua equipa!!</p>
|
||||||
|
<p class="card-text">Caso sejas o capitão da equipa, podes ainda alterar o nome e remover elementos.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="login-app">
|
||||||
|
|
||||||
|
<img src="imgs/p.png" alt="phone" class="img-fluid">
|
||||||
|
<div class="container-login">
|
||||||
|
<h1>Como usar a APP?</h1>
|
||||||
|
<div class="text-login">
|
||||||
|
<p>Para utilizares a app deves possuir um bilhete.</p>
|
||||||
|
<p>No momento de compra do bilhete recebeste um email com o bilhete, esse bilhete possuí um QR code.
|
||||||
|
</p>
|
||||||
|
<p>O login na app é feito usando esse QR code</p>
|
||||||
|
<p>Para obteres a password, deves efectuar reset através da APP, ou preenchendo o campo a baixo.</p>
|
||||||
|
<form>
|
||||||
|
|
||||||
|
<input type="email" placeholder="Introduz o teu email">
|
||||||
|
<input type="button" data-bind="click: buy" value="RESET PASSWORD">
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="container features-app ">
|
||||||
|
|
||||||
|
<h3 class="subtitle">descobre as </h3>
|
||||||
|
<h1>Páginas da aplicação</h1>
|
||||||
|
|
||||||
|
|
||||||
|
<button class="tablink" onclick="openPage('Home', this, 'white')" id="defaultOpen">Home</button>
|
||||||
|
<button class="tablink" onclick="openPage('teams', this, 'white')">Equipas</button>
|
||||||
|
<button class="tablink" onclick="openPage('events', this, 'white')">Eventos</button>
|
||||||
|
<button class="tablink" onclick="openPage('game', this, 'white')">Jogo do ENEI</button>
|
||||||
|
<button class="tablink" onclick="openPage('calendar', this, 'white')">Calendário</button>
|
||||||
|
<button class="tablink" onclick="openPage('sign', this, 'white')">Inscrições </button>
|
||||||
|
|
||||||
|
<div id="Home" class="tabcontent">
|
||||||
|
|
||||||
|
<div class="tabDetails">
|
||||||
|
<img src="imgs/home.png" alt="phone">
|
||||||
|
<div class="tabText">
|
||||||
|
<h2>Home</h2>
|
||||||
|
<h3>Página inicial e de perfil.</h3>
|
||||||
|
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer rutrum, urna eu pellentesque
|
||||||
|
pretium, nisi nisi fermentum enim, et sagittis dolor nulla vel sapien. Vestibulum sit amet
|
||||||
|
mattis ante. Ut placerat dui eu nulla congue tincidunt ac a nibh. Mauris accumsan pulvinar lorem
|
||||||
|
placerat volutpat. Praesent quis facilisis elit. Sed condimentum neque quis ex porttitor.</p>
|
||||||
|
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer rutrum, urna eu pellentesque
|
||||||
|
pretium, nisi nisi fermentum enim, et sagittis dolor nulla vel sapien. Vestibulum sit amet
|
||||||
|
mattis ante. Ut placerat dui eu nulla congue tincidunt ac a nibh. Mauris accumsan pulvinar lorem
|
||||||
|
placerat volutpat. Praesent quis facilisis elit. Sed condimentum neque quis ex porttitor,</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="teams" class="tabcontent">
|
||||||
|
<h3>Equipas</h3>
|
||||||
|
<p>equipas!</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="events" class="tabcontent">
|
||||||
|
<h3>Eventos</h3>
|
||||||
|
<p>Eventos.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="game" class="tabcontent">
|
||||||
|
<h3>Jogo do enei</h3>
|
||||||
|
<p>Jogo.</p>
|
||||||
|
</div>
|
||||||
|
<div id="calendar" class="tabcontent">
|
||||||
|
<h3>Calendário</h3>
|
||||||
|
<p>calendar.</p>
|
||||||
|
</div>
|
||||||
|
<div id="sign" class="tabcontent">
|
||||||
|
<h3>Inscrições</h3>
|
||||||
|
<p>Inscrições</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="download-app">
|
||||||
|
<div class="left">
|
||||||
|
<h1>Faz já o download da aplicação</h1>
|
||||||
|
<h3>Aplicação disponível nas típicas lojas de aplicações.</h3>
|
||||||
|
|
||||||
|
<div class="buttons">
|
||||||
|
<a href="#">
|
||||||
|
<div class="button-app">
|
||||||
|
<div class="button-logo">
|
||||||
|
<i class="fab fa-apple"></i>
|
||||||
|
</div>
|
||||||
|
<div class="button-text">
|
||||||
|
<h3>Available on the</h3>
|
||||||
|
<h2>App Store</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<a href="#">
|
||||||
|
<div class="button-app">
|
||||||
|
<div class="button-logo">
|
||||||
|
<i class="fab fa-google-play"></i>
|
||||||
|
</div>
|
||||||
|
<div class="button-text">
|
||||||
|
<h3>Available on the</h3>
|
||||||
|
<h2>Play Store</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- faqs section -->
|
||||||
|
<section id="faqs">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-5">
|
||||||
|
<div class="pre-h1">Perguntas Frequentes</div>
|
||||||
|
<h1>Faq</h1>
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<ul id="accordion">
|
||||||
|
<li>
|
||||||
|
<a href="#" title="O que é o ENEI?" rel="nofollow" class="toggle">O que é o ENEI?</a>
|
||||||
|
<div class="content-accordion">
|
||||||
|
<p>O Encontro Nacional de Estudantes de Informática (ENEI) é um evento que pretende
|
||||||
|
oferecer aos estudantes de todo o país um evento que promove a aprendizagem, a troca
|
||||||
|
de
|
||||||
|
ideias e o convívio, enquanto tenta criar fortes ligações com o mundo empresarial.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>Esta versão do evento também incluirá os tradicionais momentos de diversão noturnos
|
||||||
|
que
|
||||||
|
muito apelam a todos os participantes das antigas edições e são uma excelente via de
|
||||||
|
networking e transferência de conhecimento!</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#" title="Onde me posso inscrever?" rel="nofollow" class="toggle">Onde me posso
|
||||||
|
inscrever?</a>
|
||||||
|
<div class="content-accordion">
|
||||||
|
<p>Podes adquirir o teu bilhete <a href="https://tickets.enei.pt" title="Aqui">AQUI</a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#" title="Quando é que o programa vai estar disponível?" rel="nofollow"
|
||||||
|
class="toggle">Quando é que o programa vai estar disponível?</a>
|
||||||
|
<div class="content-accordion">
|
||||||
|
<p>O programa vai sendo lançado nas próximas semanas de forma iterativa.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#" title="Quem pode participar no evento?" rel="nofollow" class="toggle">Quem pode
|
||||||
|
participar no evento?</a>
|
||||||
|
<div class="content-accordion">
|
||||||
|
<p>Podem participar no ENEI'19 todos os estudantes do Ensino Superior ou Secundário.</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#" title="Tenho acesso a todas as sessões?" rel="nofollow" class="toggle">Tenho
|
||||||
|
acesso a todas as sessões?</a>
|
||||||
|
<div class="content-accordion">
|
||||||
|
<p>Não, as palestras e workshops necessitam de inscrições visto que têm lugares
|
||||||
|
limitados.</p>
|
||||||
|
<p>Brevemente poderás te inscrever na aplicação móvel do ENEI'19!</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<ul id="accordion">
|
||||||
|
<li>
|
||||||
|
<a href="#" title="O que é o ENEI?" rel="nofollow" class="toggle">O que é o ENEI?</a>
|
||||||
|
<div class="content-accordion">
|
||||||
|
<p>O Encontro Nacional de Estudantes de Informática (ENEI) é um evento que pretende
|
||||||
|
oferecer aos estudantes de todo o país um evento que promove a aprendizagem, a troca
|
||||||
|
de
|
||||||
|
ideias e o convívio, enquanto tenta criar fortes ligações com o mundo empresarial.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>Esta versão do evento também incluirá os tradicionais momentos de diversão noturnos
|
||||||
|
que
|
||||||
|
muito apelam a todos os participantes das antigas edições e são uma excelente via de
|
||||||
|
networking e transferência de conhecimento!</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#" title="Onde me posso inscrever?" rel="nofollow" class="toggle">Onde me posso
|
||||||
|
inscrever?</a>
|
||||||
|
<div class="content-accordion">
|
||||||
|
<p>Podes adquirir o teu bilhete <a href="https://tickets.enei.pt" title="Aqui">AQUI</a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#" title="Quando é que o programa vai estar disponível?" rel="nofollow"
|
||||||
|
class="toggle">Quando é que o programa vai estar disponível?</a>
|
||||||
|
<div class="content-accordion">
|
||||||
|
<p>O programa vai sendo lançado nas próximas semanas de forma iterativa.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#" title="Quem pode participar no evento?" rel="nofollow" class="toggle">Quem pode
|
||||||
|
participar no evento?</a>
|
||||||
|
<div class="content-accordion">
|
||||||
|
<p>Podem participar no ENEI'19 todos os estudantes do Ensino Superior ou Secundário.</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#" title="Tenho acesso a todas as sessões?" rel="nofollow" class="toggle">Tenho
|
||||||
|
acesso a todas as sessões?</a>
|
||||||
|
<div class="content-accordion">
|
||||||
|
<p>Não, as palestras e workshops necessitam de inscrições visto que têm lugares
|
||||||
|
limitados.</p>
|
||||||
|
<p>Brevemente poderás te inscrever na aplicação móvel do ENEI'19!</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- social network section -->
|
||||||
|
<aside id="social-network">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-8 col-lg-offset-2">
|
||||||
|
<h2>Segue-nos</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://www.facebook.com/ENEIConf/" title="Facebook" target="_blank"
|
||||||
|
class="icon-facebook"></a></li>
|
||||||
|
<li><a href="https://www.instagram.com/eneiconf/" title="Instagram" target="_blank"
|
||||||
|
class="icon-instagram"></a></li>
|
||||||
|
<li><a href="https://www.linkedin.com/company/enei/" title="Linkedin" target="_blank"
|
||||||
|
class="icon-linkedin"></a></li>
|
||||||
|
<li><a href="mailto:geral@enei.pt" title="Email" target="_blank" class="icon-email"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
<!-- footer -->
|
||||||
|
<footer>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<p>© 2019 ENEI . Todos os direitos reservados</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<!-- Scripts -->
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
|
||||||
|
<script type="text/javascript" src="js/scripts.js"></script>
|
||||||
|
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
|
||||||
|
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||||
|
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-130588243-1"></script>
|
||||||
|
<script>
|
||||||
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
function gtag() { dataLayer.push(arguments); }
|
||||||
|
gtag('js', new Date());
|
||||||
|
gtag('config', 'UA-130588243-1');
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
AOS.init();
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
|
@ -0,0 +1,606 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="pt" xml:lang="pt">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
|
<meta content="width=device-width, initial-scale=1, user-scalable=0" name="viewport">
|
||||||
|
<meta content="width" name="MobileOptimized">
|
||||||
|
<meta content="true" name="HandheldFriendly">
|
||||||
|
<!-- Place favicon.ico in the root directory -->
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
|
||||||
|
<link rel="manifest" href="site.webmanifest">
|
||||||
|
<link rel="mask-icon" href="safari-pinned-tab.svg" color="#5bbad5">
|
||||||
|
<meta name="msapplication-TileColor" content="#da532c">
|
||||||
|
<meta name="theme-color" content="#ffffff">
|
||||||
|
<title>Career Path - Inteligência Artificial</title>
|
||||||
|
<meta name="description"
|
||||||
|
content="Página do Encontro Nacional de Estudantes de Informática 2019, no Instituto Superior de Engenharia de Coimbra (ISEC) a realizar-se entre 12 e 15 de abril de 2019. O ENEI pretende oferecer aos estudantes de todo o país um evento que promove a aprendizagem, a troca de ideias e o convívio, enquanto tenta criar fortes ligações com o mundo empresarial.">
|
||||||
|
<meta property="og:locale" content="pt_PT" />
|
||||||
|
<meta property="og:title" content="Career Path - Inteligência Artificial" />
|
||||||
|
<meta property="og:description"
|
||||||
|
content="Página do Encontro Nacional de Estudantes de Informática 2019, no Instituto Superior de Engenharia de Coimbra (ISEC) a realizar-se entre 12 e 15 de abril de 2019. O ENEI pretende oferecer aos estudantes de todo o país um evento que promove a aprendizagem, a troca de ideias e o convívio, enquanto tenta criar fortes ligações com o mundo empresarial." />
|
||||||
|
<meta property="og:site_name" content="Career Path - Inteligência Artificial" />
|
||||||
|
<meta property="og:url" content="http://www.enei.pt/cp-inteligencia-artificial.html" />
|
||||||
|
<meta property="og:image" content="http://www.enei.pt/imgs/share-image.jpg" />
|
||||||
|
<meta property="og:type" content="Website" />
|
||||||
|
<link rel="canonical" href="http://www.enei.pt/cp-inteligencia-artificial.html" />
|
||||||
|
<link href="bootstrap-grid.css" rel="stylesheet" type="text/css" />
|
||||||
|
<link href="main.css" rel="stylesheet" type="text/css" />
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Bai+Jamjuree:400,600,700" rel="stylesheet">
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="career-path ai-color">
|
||||||
|
<header id="main-menu">
|
||||||
|
<nav>
|
||||||
|
<a href="#" title="Abrir menu" rel="nofollow" id="open-menu-mobile">Menu</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#enei" title="Enei">Sobre</a></li>
|
||||||
|
<li><a href="#calendar" title="Calendário">Calendário</a></li>
|
||||||
|
<li><a href="#speakers" title="Speakers">Speakers</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
<!-- apresentation section -->
|
||||||
|
<div id="apresentation">
|
||||||
|
<div class="career-apresentation">
|
||||||
|
<div class="career-name">Inteligência Artificial <span>Powered by:</span></div>
|
||||||
|
<img src="imgs/blip-sponsor.png" alt="Blip Image">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- enei section -->
|
||||||
|
<section id="enei">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-7 col-sm-7">
|
||||||
|
<div class="pre-h1">Career Path</div>
|
||||||
|
<h1>Inteligência Artificial</h1>
|
||||||
|
<hr>
|
||||||
|
<p>O Encontro Nacional de Estudantes de Informática é um dos maiores eventos na área da tecnologia
|
||||||
|
em
|
||||||
|
Portugal
|
||||||
|
reunindo estudantes de informática de todas as faculdades do país.</p>
|
||||||
|
<p>Reconhecido pela sua qualidade e variedade de temas e atividades, tem como prioridade o contacto
|
||||||
|
entre
|
||||||
|
participantes e empresas, bem como a socialização, o convívio e a troca de experiências e
|
||||||
|
conhecimentos
|
||||||
|
entre os presentes.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- calendario section -->
|
||||||
|
<section id="calendar" class="grey">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-6 col-lg-offset-3">
|
||||||
|
<h1>Calendário</h1>
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<div id="calendar-container">
|
||||||
|
<div id="event-days-list">
|
||||||
|
<button class="selected" data-eventDay="12">12 <span>Abril</span> </button>
|
||||||
|
<button data-eventDay="13">13 <span>Abril</span></button>
|
||||||
|
<button data-eventDay="14">14 <span>Abril</span></button>
|
||||||
|
<button data-eventDay="15">15 <span>Abril</span></button>
|
||||||
|
</div>
|
||||||
|
<div class="day-night-filter">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="half-day">Diurno</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="half-day">Noturno</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="content-container">
|
||||||
|
<section class="content visible" data-eventContent="12">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="row event-data">
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="event-time"></span>8:00 - 10:00
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-8 event-details">
|
||||||
|
<h2>Palestra sobre a fome em África</h2>
|
||||||
|
<h3>Pedro Duarte</h3>
|
||||||
|
<div class="event-location"><span class="icon-company"></span>Microsoft
|
||||||
|
Corporation</div>
|
||||||
|
<div class="event-location"><span class="icon-location"></span>Edíficio
|
||||||
|
Gerais (G1)</div>
|
||||||
|
<button class="event-description"><span
|
||||||
|
class="arrow">➔</span>Descrição</button>
|
||||||
|
<h2>Palestra sobre a fome em África</h2>
|
||||||
|
<h3>Pedro Duarte</h3>
|
||||||
|
<div class="event-location"><span class="icon-company"></span>Microsoft
|
||||||
|
Corporation</div>
|
||||||
|
<div class="event-location"><span class="icon-location"></span>Edíficio
|
||||||
|
Gerais (G1)</div> <button class="event-description"><span
|
||||||
|
class="arrow">➔</span>Descrição</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row event-data">
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="event-time"></span>8:00 - 10:00
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-8 event-details">
|
||||||
|
<h2>Palestra sobre a fome em África</h2>
|
||||||
|
<h3>Pedro Duarte</h3>
|
||||||
|
<div class="event-location"><span class="icon-company"></span>Microsoft
|
||||||
|
Corporation</div>
|
||||||
|
<div class="event-location"><span class="icon-location"></span>Edíficio
|
||||||
|
Gerais (G1)</div> <button class="event-description"><span
|
||||||
|
class="arrow">➔</span>Descrição</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="row event-data">
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="event-time"></span>18:00 - 19:00
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-8 event-details">
|
||||||
|
<h2>Palestra sobre a fome em África</h2>
|
||||||
|
<h3>Pedro Duarte</h3>
|
||||||
|
<div class="event-location"><span class="icon-company"></span>Microsoft
|
||||||
|
Corporation</div>
|
||||||
|
<div class="event-location"><span class="icon-location"></span>Edíficio
|
||||||
|
Gerais (G1)</div> <button class="event-description"><span
|
||||||
|
class="arrow">➔</span>Descrição</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<div class="content" data-eventContent="13">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-6">Conteudo para dia (13 de Abril)</div>
|
||||||
|
<div class="col-lg-6">Conteudo para noite (13 de Abril)</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- career path section -->
|
||||||
|
<section id="career-path">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-6 col-lg-offset-3 col-sm-6 col-sm-offset-3 col-xs-10 col-xs-offset-1">
|
||||||
|
<h1>career Path</h1>
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-2 ai">
|
||||||
|
<a href="cp-inteligencia-artificial.html" title="Carrer Path X" class="career-path-links">
|
||||||
|
<h2>Inteligência Artificial</h2>
|
||||||
|
<span class="separator"></span>
|
||||||
|
<span class="powered-by">Powered by:</span>
|
||||||
|
<img src="imgs/blip-sponsor.png" alt="Blip Image">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-2 web">
|
||||||
|
<a href="#" title="Carrer Path X" class="career-path-links">
|
||||||
|
<h2>Web Development</h2>
|
||||||
|
<span class="separator"></span>
|
||||||
|
<span class="powered-by">Powered by:</span>
|
||||||
|
<img src="imgs/blip-sponsor.png" alt="Blip Image">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-2 ai">
|
||||||
|
<a href="#" title="Carrer Path X" class="career-path-links">
|
||||||
|
<h2>Inteligência Artificial</h2>
|
||||||
|
<span class="separator"></span>
|
||||||
|
<span class="powered-by">Powered by:</span>
|
||||||
|
<img src="imgs/blip-sponsor.png" alt="Blip Image">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-2 web">
|
||||||
|
<a href="#" title="Carrer Path X" class="career-path-links">
|
||||||
|
<h2>Web Development</h2>
|
||||||
|
<span class="separator"></span>
|
||||||
|
<span class="powered-by">Powered by:</span>
|
||||||
|
<img src="imgs/blip-sponsor.png" alt="Blip Image">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-2 ai">
|
||||||
|
<a href="#" title="Carrer Path X" class="career-path-links">
|
||||||
|
<h2>Inteligência Artificial</h2>
|
||||||
|
<span class="separator"></span>
|
||||||
|
<span class="powered-by">Powered by:</span>
|
||||||
|
<img src="imgs/blip-sponsor.png" alt="Blip Image">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-2 web">
|
||||||
|
<a href="#" title="Carrer Path X" class="career-path-links">
|
||||||
|
<h2>Web Development</h2>
|
||||||
|
<span class="separator"></span>
|
||||||
|
<span class="powered-by">Powered by:</span>
|
||||||
|
<img src="imgs/blip-sponsor.png" alt="Blip Image">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- programa geral -->
|
||||||
|
<section id="calendar" class="grey">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-6 col-lg-offset-3">
|
||||||
|
<h1>Programa Geral</h1>
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<div id="calendar-container">
|
||||||
|
<div id="event-days-list">
|
||||||
|
<button class="selected" data-eventDay="12">12 <span>Abril</span> </button>
|
||||||
|
<button data-eventDay="13">13 <span>Abril</span></button>
|
||||||
|
<button data-eventDay="14">14 <span>Abril</span></button>
|
||||||
|
<button data-eventDay="15">15 <span>Abril</span></button>
|
||||||
|
</div>
|
||||||
|
<div class="day-night-filter">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="half-day">Diurno</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="half-day">Noturno</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="content-container">
|
||||||
|
<section class="content visible" data-eventContent="12">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="row event-data">
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="event-time"></span>8:00 - 10:00
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-8 event-details">
|
||||||
|
<h2>Palestra sobre a fome em África</h2>
|
||||||
|
<h3>Pedro Duarte</h3>
|
||||||
|
<div class="event-location"><span class="icon-company"></span>Microsoft
|
||||||
|
Corporation</div>
|
||||||
|
<a href="#" target="_blank" class="event-location"><span
|
||||||
|
class="icon-linkedin_speaker"></span>Linkedin</a>
|
||||||
|
<div class="event-location"><span class="icon-location"></span>Edíficio
|
||||||
|
Gerais (G1)</div>
|
||||||
|
<button class="event-description"><span
|
||||||
|
class="arrow">➔</span>Descrição</button>
|
||||||
|
<h2>Palestra sobre a fome em África</h2>
|
||||||
|
<h3>Pedro Duarte</h3>
|
||||||
|
<div class="event-location"><span class="icon-company"></span>Microsoft
|
||||||
|
Corporation</div>
|
||||||
|
<div class="event-location"><span class="icon-location"></span>Edíficio
|
||||||
|
Gerais (G1)</div> <button class="event-description"><span
|
||||||
|
class="arrow">➔</span>Descrição</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row event-data">
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="event-time"></span>8:00 - 10:00
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-8 event-details">
|
||||||
|
<h2>Palestra sobre a fome em África</h2>
|
||||||
|
<h3>Pedro Duarte</h3>
|
||||||
|
<div class="event-location"><span class="icon-company"></span>Microsoft
|
||||||
|
Corporation</div>
|
||||||
|
<a href="#" target="_blank" class="event-location"><span
|
||||||
|
class="icon-linkedin_speaker"></span>Linkedin</a>
|
||||||
|
<div class="event-location"><span class="icon-location"></span>Edíficio
|
||||||
|
Gerais (G1)</div> <button class="event-description"><span
|
||||||
|
class="arrow">➔</span>Descrição</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="row event-data">
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="event-time"></span>18:00 - 19:00
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-8 event-details">
|
||||||
|
<h2>Palestra sobre a fome em África</h2>
|
||||||
|
<h3>Pedro Duarte</h3>
|
||||||
|
<div class="event-location"><span class="icon-company"></span>Microsoft
|
||||||
|
Corporation</div>
|
||||||
|
<a href="#" target="_blank" class="event-location"><span
|
||||||
|
class="icon-linkedin_speaker"></span>Linkedin</a>
|
||||||
|
<div class="event-location"><span class="icon-location"></span>Edíficio
|
||||||
|
Gerais (G1)</div> <button class="event-description"><span
|
||||||
|
class="arrow">➔</span>Descrição</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section class="content" data-eventContent="13">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="row event-data">
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="event-time"></span>8:00 - 10:00
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-8 event-details">
|
||||||
|
<h2>Palestra sobre a fome em África</h2>
|
||||||
|
<h3>Pedro Duarte</h3>
|
||||||
|
<div class="event-location"><span class="icon-company"></span>Microsoft
|
||||||
|
Corporation</div>
|
||||||
|
<a href="#" target="_blank" class="event-location"><span
|
||||||
|
class="icon-linkedin_speaker"></span>Linkedin</a>
|
||||||
|
<div class="event-location"><span class="icon-location"></span>Edíficio
|
||||||
|
Gerais (G1)</div>
|
||||||
|
<button class="event-description"><span
|
||||||
|
class="arrow">➔</span>Descrição</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="row event-data">
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="event-time"></span>18:00 - 19:00
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-8 event-details">
|
||||||
|
<h2>Palestra sobre a fome em África</h2>
|
||||||
|
<h3>Pedro Duarte</h3>
|
||||||
|
<div class="event-location"><span class="icon-company"></span>Microsoft
|
||||||
|
Corporation</div>
|
||||||
|
<div class="event-location"><span class="icon-location"></span>Edíficio
|
||||||
|
Gerais (G1)</div> <button class="event-description"><span
|
||||||
|
class="arrow">➔</span>Descrição</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section class="content" data-eventContent="14">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="row event-data">
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="event-time"></span>9:00 - 10:00
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-8 event-details">
|
||||||
|
<h2>Palestra sobre a fome em África</h2>
|
||||||
|
<h3>Pedro Duarte</h3>
|
||||||
|
<div class="event-location"><span class="icon-company"></span>Microsoft
|
||||||
|
Corporation</div>
|
||||||
|
<div class="event-location"><span class="icon-location"></span>Edíficio
|
||||||
|
Gerais (G1)</div>
|
||||||
|
<button class="event-description"><span
|
||||||
|
class="arrow">➔</span>Descrição</button>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="row event-data">
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="event-time"></span>19:00 - 19:00
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-8 event-details">
|
||||||
|
<h2>Palestra sobre a fome em África</h2>
|
||||||
|
<h3>Pedro Duarte</h3>
|
||||||
|
<div class="event-location"><span class="icon-company"></span>Microsoft
|
||||||
|
Corporation</div>
|
||||||
|
<div class="event-location"><span class="icon-location"></span>Edíficio
|
||||||
|
Gerais (G1)</div> <button class="event-description"><span
|
||||||
|
class="arrow">➔</span>Descrição</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section class="content" data-eventContent="15">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="row event-data">
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="event-time"></span>10:00 - 11:00
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-8 event-details">
|
||||||
|
<h2>Palestra sobre a fome em África</h2>
|
||||||
|
<h3>Pedro Duarte</h3>
|
||||||
|
<div class="event-location"><span class="icon-company"></span>Microsoft
|
||||||
|
Corporation</div>
|
||||||
|
<div class="event-location"><span class="icon-location"></span>Edíficio
|
||||||
|
Gerais (G1)</div>
|
||||||
|
<button class="event-description"><span
|
||||||
|
class="arrow">➔</span>Descrição</button>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="row event-data">
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="event-time"></span>20:00 - 19:00
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-8 event-details">
|
||||||
|
<h2>Palestra sobre a fome em África</h2>
|
||||||
|
<h3>Pedro Duarte</h3>
|
||||||
|
<div class="event-location"><span class="icon-company"></span>Microsoft
|
||||||
|
Corporation</div>
|
||||||
|
<div class="event-location"><span class="icon-location"></span>Edíficio
|
||||||
|
Gerais (G1)</div> <button class="event-description"><span
|
||||||
|
class="arrow">➔</span>Descrição</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- oradores section -->
|
||||||
|
<section id="speakers">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-6 col-lg-offset-3 col-sm-12 col-sm-offset-0 col-xs-10 col-xs-offset-1">
|
||||||
|
<h1>Speakers</h1>
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-3">
|
||||||
|
<a href="https://www.linkedin.com/in/pedroazeredoduarte/" title="Pedro Duarte" target="_blank"
|
||||||
|
class="speaker-button">
|
||||||
|
<div class="speaker-image">
|
||||||
|
<img src="imgs/speakers-image/pedro-duarte.jpg" alt="Pedro Duarte">
|
||||||
|
<img src="imgs/speakers-company/microsoft.png" alt="Microsoft" class="company-image">
|
||||||
|
</div>
|
||||||
|
<h2 class="speaker-name">Pedro Duarte</h2>
|
||||||
|
<div class="speaker-company">Microsoft Corporation</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-3">
|
||||||
|
<a href="https://www.linkedin.com/in/pedroazeredoduarte/" title="Pedro Duarte" target="_blank"
|
||||||
|
class="speaker-button">
|
||||||
|
<div class="speaker-image">
|
||||||
|
<img src="imgs/speakers-image/pedro-duarte.jpg" alt="Pedro Duarte">
|
||||||
|
<img src="imgs/speakers-company/microsoft.png" alt="Microsoft" class="company-image">
|
||||||
|
</div>
|
||||||
|
<h2 class="speaker-name">Pedro Duarte</h2>
|
||||||
|
<div class="speaker-company">Microsoft Corporation</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-3">
|
||||||
|
<a href="https://www.linkedin.com/in/pedroazeredoduarte/" title="Pedro Duarte" target="_blank"
|
||||||
|
class="speaker-button">
|
||||||
|
<div class="speaker-image">
|
||||||
|
<img src="imgs/speakers-image/pedro-duarte.jpg" alt="Pedro Duarte">
|
||||||
|
<img src="imgs/speakers-company/microsoft.png" alt="Microsoft" class="company-image">
|
||||||
|
</div>
|
||||||
|
<h2 class="speaker-name">Pedro Duarte</h2>
|
||||||
|
<div class="speaker-company">Microsoft Corporation</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-3">
|
||||||
|
<a href="https://www.linkedin.com/in/pedroazeredoduarte/" title="Pedro Duarte" target="_blank"
|
||||||
|
class="speaker-button">
|
||||||
|
<div class="speaker-image">
|
||||||
|
<img src="imgs/speakers-image/pedro-duarte.jpg" alt="Pedro Duarte">
|
||||||
|
<img src="imgs/speakers-company/microsoft.png" alt="Microsoft" class="company-image">
|
||||||
|
</div>
|
||||||
|
<h2 class="speaker-name">Pedro Duarte</h2>
|
||||||
|
<div class="speaker-company">Microsoft Corporation</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-3">
|
||||||
|
<a href="https://www.linkedin.com/in/pedroazeredoduarte/" title="Pedro Duarte" target="_blank"
|
||||||
|
class="speaker-button">
|
||||||
|
<div class="speaker-image">
|
||||||
|
<img src="imgs/speakers-image/pedro-duarte.jpg" alt="Pedro Duarte">
|
||||||
|
<img src="imgs/speakers-company/microsoft.png" alt="Microsoft" class="company-image">
|
||||||
|
</div>
|
||||||
|
<h2 class="speaker-name">Pedro Duarte</h2>
|
||||||
|
<div class="speaker-company">Microsoft Corporation</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-3">
|
||||||
|
<a href="https://www.linkedin.com/in/pedroazeredoduarte/" title="Pedro Duarte" target="_blank"
|
||||||
|
class="speaker-button">
|
||||||
|
<div class="speaker-image">
|
||||||
|
<img src="imgs/speakers-image/pedro-duarte.jpg" alt="Pedro Duarte">
|
||||||
|
<img src="imgs/speakers-company/microsoft.png" alt="Microsoft" class="company-image">
|
||||||
|
</div>
|
||||||
|
<h2 class="speaker-name">Pedro Duarte</h2>
|
||||||
|
<div class="speaker-company">Microsoft Corporation</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- social network section -->
|
||||||
|
<aside id="social-network">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-8 col-lg-offset-2">
|
||||||
|
<h2>Segue-nos</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://www.facebook.com/ENEIConf/" title="Facebook" target="_blank"
|
||||||
|
class="icon-facebook"></a></li>
|
||||||
|
<li><a href="https://www.instagram.com/eneiconf/" title="Instagram" target="_blank"
|
||||||
|
class="icon-instagram"></a></li>
|
||||||
|
<li><a href="https://www.linkedin.com/company/enei/" title="Linkedin" target="_blank"
|
||||||
|
class="icon-linkedin"></a></li>
|
||||||
|
<li><a href="mailto:geral@enei.pt" title="Email" target="_blank" class="icon-email"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
<!-- footer -->
|
||||||
|
<footer>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<p>© 2019 ENEI . Todos os direitos reservados</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<!-- Scripts -->
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
|
||||||
|
<script type="text/javascript" src="js/scripts.js"></script>
|
||||||
|
|
||||||
|
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||||
|
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-130588243-1"></script>
|
||||||
|
<script>
|
||||||
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
function gtag() { dataLayer.push(arguments); }
|
||||||
|
gtag('js', new Date());
|
||||||
|
gtag('config', 'UA-130588243-1');
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
|
@ -0,0 +1,12 @@
|
||||||
|
/**
|
||||||
|
* Owl Carousel v2.2.1
|
||||||
|
* Copyright 2013-2017 David Deutsch
|
||||||
|
* Licensed under ()
|
||||||
|
*/
|
||||||
|
.owl-carousel,.owl-carousel .owl-item{-webkit-tap-highlight-color:transparent;position:relative}.owl-carousel{display:none;width:100%;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y;-moz-backface-visibility:hidden}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0,0,0)}.owl-carousel .owl-item,.owl-carousel .owl-wrapper{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0)}.owl-carousel .owl-item{min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-touch-callout:none}.owl-carousel .owl-item img{display:block;width:100%}.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{display:none}.no-js .owl-carousel,.owl-carousel.owl-loaded{display:block}.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{cursor:pointer;cursor:hand;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel.owl-refresh .owl-item{visibility:hidden}.owl-carousel.owl-drag .owl-item{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.owl-carousel .animated{animation-duration:1s;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{animation-name:fadeOut}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{transition:height .5s ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .4s ease}.owl-carousel .owl-item img.owl-lazy{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;transition:transform .1s ease}.owl-carousel .owl-video-play-icon:hover{-ms-transform:scale(1.3,1.3);transform:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;background-size:contain;transition:opacity .4s ease}.owl-carousel .owl-video-frame{position:relative;z-index:1;height:100%;width:100%}
|
||||||
|
/**
|
||||||
|
* Owl Carousel v2.2.1
|
||||||
|
* Copyright 2013-2017 David Deutsch
|
||||||
|
* Licensed under ()
|
||||||
|
*/
|
||||||
|
.owl-theme .owl-dots,.owl-theme .owl-nav{text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-nav{margin-top:10px}.owl-theme .owl-nav [class*=owl-]{color:#FFF;font-size:14px;margin:5px;padding:4px 7px;background:#D6D6D6;display:inline-block;cursor:pointer;border-radius:3px}.owl-theme .owl-nav [class*=owl-]:hover{background:#869791;color:#FFF;text-decoration:none}.owl-theme .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-nav.disabled+.owl-dots{margin-top:10px}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:5px 7px;background:#D6D6D6;display:block;-webkit-backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#869791}
|
|
@ -0,0 +1,345 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="pt" xml:lang="pt">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
|
<meta content="width=device-width, initial-scale=1, user-scalable=0" name="viewport">
|
||||||
|
<meta content="width" name="MobileOptimized">
|
||||||
|
<meta content="true" name="HandheldFriendly">
|
||||||
|
<!-- Place favicon.ico in the root directory -->
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
|
||||||
|
<link rel="manifest" href="site.webmanifest">
|
||||||
|
<link rel="mask-icon" href="safari-pinned-tab.svg" color="#5bbad5">
|
||||||
|
<meta name="msapplication-TileColor" content="#da532c">
|
||||||
|
<meta name="theme-color" content="#ffffff">
|
||||||
|
<title>ENEI'19</title>
|
||||||
|
<meta name="description"
|
||||||
|
content="Página do Encontro Nacional de Estudantes de Informática 2019, no Instituto Superior de Engenharia de Coimbra (ISEC) a realizar-se entre 12 e 15 de abril de 2019. O ENEI pretende oferecer aos estudantes de todo o país um evento que promove a aprendizagem, a troca de ideias e o convívio, enquanto tenta criar fortes ligações com o mundo empresarial.">
|
||||||
|
<meta property="og:locale" content="pt_PT" />
|
||||||
|
<meta property="og:title" content="ENEI'19" />
|
||||||
|
<meta property="og:description"
|
||||||
|
content="Página do Encontro Nacional de Estudantes de Informática 2019, no Instituto Superior de Engenharia de Coimbra (ISEC) a realizar-se entre 12 e 15 de abril de 2019. O ENEI pretende oferecer aos estudantes de todo o país um evento que promove a aprendizagem, a troca de ideias e o convívio, enquanto tenta criar fortes ligações com o mundo empresarial." />
|
||||||
|
<meta property="og:site_name" content="ENEI'19" />
|
||||||
|
<meta property="og:url" content="http://www.enei.pt/" />
|
||||||
|
<meta property="og:image" content="http://www.enei.pt/imgs/share-image.jpg" />
|
||||||
|
<meta property="og:type" content="Website" />
|
||||||
|
<link rel="canonical" href="http://www.enei.pt/" />
|
||||||
|
<link href="bootstrap-grid.css" rel="stylesheet" type="text/css" />
|
||||||
|
<link href="main.css" rel="stylesheet" type="text/css" />
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Bai+Jamjuree:400,600,700" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
|
||||||
|
integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
|
||||||
|
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"
|
||||||
|
integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
|
||||||
|
crossorigin="anonymous"></script>
|
||||||
|
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css"
|
||||||
|
integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="overlay"></div>
|
||||||
|
<header id="main-menu">
|
||||||
|
<nav>
|
||||||
|
<a href="#" title="Abrir menu" rel="nofollow" id="open-menu-mobile">Menu</a>
|
||||||
|
<ul style="margin-bottom: 0;">
|
||||||
|
<li><a href="https://enei.pt/#enei" title="Enei">Enei</a></li>
|
||||||
|
<li><a href="https://enei.pt/#calendar">Programa</a></li>
|
||||||
|
<li><a href="https://enei.pt/#precos" title="Preços">Preços</a></li>
|
||||||
|
<li><a href="https://enei.pt/app" title="Preços">App</a></li>
|
||||||
|
<li><a href="https://enei.pt/ctf" title="CTF">CTF</li>
|
||||||
|
<li><a href="https://enei.pt/#sponsors" title="Sponsors">Sponsors</a></li>
|
||||||
|
<li><a href="https://enei.pt/#faqs" title="Faq's">Faq's</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="ctf-header">
|
||||||
|
<div class="ctf-top10">
|
||||||
|
<h1 class="top-title">Melhores classificados CTF </h1>
|
||||||
|
<center><h3>Revelados em breve</h3></center>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h3 class="about-top">Estas pontuações refletem o somatório das pontuações dos níveis cumpridos.</h3>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="ctf-explain">
|
||||||
|
<div>
|
||||||
|
<h3>O que é o capture the flag?</h3>
|
||||||
|
<p>
|
||||||
|
O Capture The Flag é um concurso que vamos realizar diretamente relacionado com o jogo do ENEI, e com os
|
||||||
|
respetivos prémios espetaculares que temos a oferecer (Nintendo Switch, entre outros).
|
||||||
|
Este jogo é uma mistura de temas altamente relacionados com Informática, temas como WEB, CRYPTO,
|
||||||
|
REVERSE_ENGINEERING, e uma mistura de tantos outros. Todos os níveis têm o mesmo objetivo: Encontrar uma
|
||||||
|
frase (string) que por norma se encontra escondida.
|
||||||
|
|
||||||
|
Qualquer um pode participar no jogo (desde que já detenha um bilhete) apenas com um simples scan a este
|
||||||
|
QR code.
|
||||||
|
No fim de encontrares a string, deves gerar um QR code com ela e pronto, o nível está completo!
|
||||||
|
Basta então fazeres um scan a esse QR e obteres todos os pontos que mereces.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div> <img src="imgs/flag.png" alt="app">
|
||||||
|
</div>
|
||||||
|
<div class="ctf-prizes">
|
||||||
|
<h3>O que posso ganhar ao realizar estes desafios?</h3>
|
||||||
|
<h5>O CTF vale cerca de 50% dos pontos do jogo do ENEI.</h5>
|
||||||
|
<div class="prizes-container">
|
||||||
|
<div class="prize">
|
||||||
|
<div class="prize-logo"><i class="fab fa-nintendo-switch"></i></div>
|
||||||
|
<h4>Nitendo Switch</h4>
|
||||||
|
</div>
|
||||||
|
<div class="prize">
|
||||||
|
<div class="prize-logo"><i class="fas fa-volume-up"></i></div>
|
||||||
|
<h4>Coluna Bluetooth Xiaomi</h4>
|
||||||
|
</div>
|
||||||
|
<div class="prize">
|
||||||
|
<div class="prize-logo"><i class="fas fa-headphones"></i></i></div>
|
||||||
|
<h4>Auscultadores AKG K518</h4>
|
||||||
|
</div>
|
||||||
|
<div class="prize">
|
||||||
|
<div class="prize-logo"><i class="fas fa-battery-full"></i></div>
|
||||||
|
<h4>Power Bank Xiaomi Mi 5000</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="ctf-levels">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="level1-ctf level">
|
||||||
|
<h3>Web</h3>
|
||||||
|
<div class="sub-container">
|
||||||
|
<div class="sub-level">
|
||||||
|
<h4>1 - WHATSTHEPASSWORD<i>(31 pontos)</i></h4>
|
||||||
|
<p>Começa esta jornada, com um desafio fácil relacionado com WEB. Talvez desta forma fiques motivado
|
||||||
|
a continuar!</p>
|
||||||
|
<a href="https://enei.pt/1.html">
|
||||||
|
<div class="btn-dwn-ctf">
|
||||||
|
<h3>Visitar</h3> <i class="fas fa-link"></i>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="sub-level">
|
||||||
|
<h4>2 - ROT13 <i>(37 pontos)</i></h4>
|
||||||
|
<p> De forma a provares melhor o significado deste concurso, deixamos-te um desafio WEB com alguma
|
||||||
|
análise.</p>
|
||||||
|
<a href="https://enei.pt/1.html">
|
||||||
|
<div class="btn-dwn-ctf">
|
||||||
|
<h3>Visitar</h3> <i class="fas fa-link"></i>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="level2-ctf level">
|
||||||
|
<h3>Analyse</h3>
|
||||||
|
<div class="sub-container">
|
||||||
|
<div class="sub-level">
|
||||||
|
<h4>3 - BURRO <i>(41 pontos)</i></h4>
|
||||||
|
<p>Com este desafio pomos à prova a tua análise de ficheiros e até pode ser que te rias a completar
|
||||||
|
o 3º de muita diversão.</p>
|
||||||
|
<a href="https://enei.pt/ctf/Burro.zip">
|
||||||
|
<div class="btn-dwn-ctf">
|
||||||
|
<h3>Download</h3> <i class="fas fa-file-download"></i>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="sub-level">
|
||||||
|
<h4>4 - WHOAMI <i>(43 pontos)</i></h4>
|
||||||
|
<p> Vamos lá continuar a desenvolver esse raciocínio, mas desta vez com um pouco de pacotes à
|
||||||
|
mistura. É uma confusão!! </p>
|
||||||
|
<a href="https://enei.pt/ctf/WHOAMI.zip">
|
||||||
|
<div class="btn-dwn-ctf">
|
||||||
|
<h3>Download</h3> <i class="fas fa-file-download"></i>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="level3-ctf level">
|
||||||
|
<h3>Reverse Engineering </h3>
|
||||||
|
<div class="sub-container">
|
||||||
|
<div class="sub-level">
|
||||||
|
<h4>5 - REVERSEENGINEERING <i>(47 pontos)</i></h4>
|
||||||
|
<p> Daqui em diante a dificuldade começa a mudar de direção, vais acompanhar? Fica aqui um desafio
|
||||||
|
de reverse_engineering, nada de muito complicado (para ti).</p>
|
||||||
|
<a href="https://enei.pt/ctf/Try_Me.zip">
|
||||||
|
<div class="btn-dwn-ctf">
|
||||||
|
<h3>Download</h3> <i class="fas fa-file-download"></i>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="sub-level">
|
||||||
|
<h4>6 -OLD <i>(59 pontos)</i></h4>
|
||||||
|
<p>Prova o cerne destes desafios, explorando, analisando e percebendo como descobrir a flag
|
||||||
|
escondida, o típico desafio crypto.</p>
|
||||||
|
<a href="https://enei.pt/ctf/OLD.zip">
|
||||||
|
<div class="btn-dwn-ctf">
|
||||||
|
<h3>Download</h3> <i class="fas fa-file-download"></i>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="level4-ctf level">
|
||||||
|
<h3> Crypto</h3>
|
||||||
|
<div class="sub-container">
|
||||||
|
<div class="sub-level">
|
||||||
|
<h4>7 - ASM_IS_LIFE <i>(61 pontos)</i></h4>
|
||||||
|
<p> Deixamos aqui um desafio destruidor de sonhos, é verdade.. Estás pronto para um bocadinho de
|
||||||
|
assembly? </p>
|
||||||
|
<a href="https://enei.pt/ctf/ASM_IS_LIFE.zip">
|
||||||
|
<div class="btn-dwn-ctf">
|
||||||
|
<h3>Download</h3> <i class="fas fa-file-download"></i>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="sub-level">
|
||||||
|
<h4>8 - OLD2 <i>(89 pontos)</i></h4>
|
||||||
|
<p>Aqui fica a continuação do desafio nº 6, se ainda não o completas-te, não faz sentido continuares
|
||||||
|
este. Se já o fizes-te, então estás pronto para experimentar esta aventura que teve início em
|
||||||
|
2002 (DosBox). </p>
|
||||||
|
<a href="https://enei.pt/ctf/OLD2.zip">
|
||||||
|
<div class="btn-dwn-ctf">
|
||||||
|
<h3>Download</h3> <i class="fas fa-file-download"></i>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="level5-ctf level">
|
||||||
|
<h3>Engineering</h3>
|
||||||
|
<div class="sub-container">
|
||||||
|
<div class="sub-level">
|
||||||
|
<h4>9 - ZIPZIPZIPZIP <i>(101 pontos)</i></h4>
|
||||||
|
<p>(WARNING) Não aconselhado a pessoas sensíveis, este nível irá exigir de ti algum tempo,
|
||||||
|
raciocínio e conhecimento. Descobre a flag neste desafio propício a dares em louco. (SPOILER
|
||||||
|
ALERT) </p>
|
||||||
|
<a href="https://enei.pt/ctf/ZIPZIPZIPZIP.zip">
|
||||||
|
<div class="btn-dwn-ctf">
|
||||||
|
<h3>Download</h3> <i class="fas fa-file-download"></i>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="sub-level">
|
||||||
|
<h4>10 - THE_END <i>(109 pontos)</i></h4>
|
||||||
|
<p> (WARNING) Nem preciso de comentar... Um nível como este não requer descrições. Boa Sorte! </p>
|
||||||
|
<a href="https://enei.pt/ctf/THEEND.zip">
|
||||||
|
<div class="btn-dwn-ctf">
|
||||||
|
<h3>Download</h3> <i class="fas fa-file-download"></i>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="explain-qr">
|
||||||
|
<img src="imgs/QRstart.png" alt="app">
|
||||||
|
<div class="explain">
|
||||||
|
<h3>Como registar progresso no CTF?</h3>
|
||||||
|
<p>Depois de obter a flag (string) do nível, deves gerar um QR code com a mesma.</p>
|
||||||
|
<p>Em seguida, deves usar a App para ler este QR code.</p>
|
||||||
|
<p>Caso seja válida, a flag irá dar-te acesso ao cromo que representa o nível.</p>
|
||||||
|
<p>Para testar podes usar este QR code (free points).</p>
|
||||||
|
<p>Boa sorte, a equipa do ENEI'19</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- faqs section -->
|
||||||
|
<section id="faqs">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-5">
|
||||||
|
<div class="pre-h1">Perguntas Frequentes</div>
|
||||||
|
<h1>Faqs</h1>
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-10">
|
||||||
|
<ul id="accordion">
|
||||||
|
<li>
|
||||||
|
<a href="#" title="Como posso participar?" rel="nofollow" class="toggle">Como posso
|
||||||
|
participar?</a>
|
||||||
|
<div class="content-accordion">
|
||||||
|
<p> Tal como o descrito acima, basta efetuares a compra do bilhete e fazeres scan do QR
|
||||||
|
code da página do CTF.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>Deves então prosseguir à descoberta das frases escondidas em cada desafio, e
|
||||||
|
procederes à geração de um QR code com essa string.</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#" title="Quando posso começar?" rel="nofollow" class="toggle">Quando posso
|
||||||
|
começar?
|
||||||
|
inscrever?</a>
|
||||||
|
<div class="content-accordion">
|
||||||
|
<p> O concurso irá iniciar no domingo (dia 7) às 14:30 horas e terminar no sábado (dia
|
||||||
|
13) às 00:00 horas.</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#" title="O que tenho eu a ganhar?" rel="nofollow" class="toggle">O que tenho eu a
|
||||||
|
ganhar?</a>
|
||||||
|
<div class="content-accordion">
|
||||||
|
<p>Com a realização do concurso não só irás evoluir as tuas competências gerais
|
||||||
|
relacionadas com Informática e Raciocínio Mental, como estás sujeito a ganhar
|
||||||
|
prémios fenomenais.</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-4 col-xs-6">
|
||||||
|
<p>© 2019 ENEI . Todos os direitos reservados</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-8 col-xs-6">
|
||||||
|
<ul id="social-network">
|
||||||
|
<li><a href="https://www.facebook.com/ENEIConf/" title="Facebook" target="_blank"
|
||||||
|
class="icon-facebook"></a></li>
|
||||||
|
<li><a href="https://www.instagram.com/eneiconf/" title="Instagram" target="_blank"
|
||||||
|
class="icon-instagram"></a></li>
|
||||||
|
<li><a href="https://www.linkedin.com/company/enei/" title="Linkedin" target="_blank"
|
||||||
|
class="icon-linkedin"></a></li>
|
||||||
|
<li><a href="mailto:geral@enei.pt" title="Email" target="_blank" class="icon-email"></a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Scripts -->
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
|
||||||
|
<script type="text/javascript" src="js/scripts.js"></script>
|
||||||
|
|
||||||
|
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||||
|
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-130588243-1"></script>
|
||||||
|
<script>
|
||||||
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
function gtag() { dataLayer.push(arguments); }
|
||||||
|
gtag('js', new Date());
|
||||||
|
gtag('config', 'UA-130588243-1');
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
|
@ -14,4 +14,9 @@
|
||||||
<glyph unicode="" glyph-name="linkedin" horiz-adv-x="1027" d="M941.133 960h-855.306c-47.353 0-85.827-38.474-85.827-85.827v-855.306c0-47.353 38.474-85.827 85.827-85.827h855.306c47.353 0 85.827 38.474 85.827 85.827v855.306c0 47.353-38.474 85.827-85.827 85.827zM941.133 18.867h-855.306v855.306h855.306v-855.306zM248.601 548.624c-8.879 8.879-14.798 20.717-14.798 35.514s5.919 26.636 14.798 35.514c8.879 8.879 20.717 14.798 38.474 14.798s26.636-5.919 38.474-14.798c8.879-8.879 14.798-20.717 14.798-35.514s-5.919-26.636-14.798-38.474c-8.879-8.879-23.676-14.798-38.474-14.798-17.757 2.96-29.595 8.879-38.474 17.757zM242.682 474.636h82.867v-361.064h-82.867v361.064zM751.723 439.121c26.636-26.636 41.434-65.11 41.434-118.382v-207.168h-82.867v195.329c0 32.555-8.879 56.231-23.676 71.029s-35.514 23.676-65.11 23.676c-29.595 0-56.231-8.879-73.988-26.636s-26.636-44.393-26.636-79.908v-183.491h-82.867v361.064h79.908v-47.353c14.798 17.757 32.555 29.595 53.272 38.474s44.393 11.838 71.029 11.838c44.393 0 82.867-11.838 109.503-38.474z" />
|
<glyph unicode="" glyph-name="linkedin" horiz-adv-x="1027" d="M941.133 960h-855.306c-47.353 0-85.827-38.474-85.827-85.827v-855.306c0-47.353 38.474-85.827 85.827-85.827h855.306c47.353 0 85.827 38.474 85.827 85.827v855.306c0 47.353-38.474 85.827-85.827 85.827zM941.133 18.867h-855.306v855.306h855.306v-855.306zM248.601 548.624c-8.879 8.879-14.798 20.717-14.798 35.514s5.919 26.636 14.798 35.514c8.879 8.879 20.717 14.798 38.474 14.798s26.636-5.919 38.474-14.798c8.879-8.879 14.798-20.717 14.798-35.514s-5.919-26.636-14.798-38.474c-8.879-8.879-23.676-14.798-38.474-14.798-17.757 2.96-29.595 8.879-38.474 17.757zM242.682 474.636h82.867v-361.064h-82.867v361.064zM751.723 439.121c26.636-26.636 41.434-65.11 41.434-118.382v-207.168h-82.867v195.329c0 32.555-8.879 56.231-23.676 71.029s-35.514 23.676-65.11 23.676c-29.595 0-56.231-8.879-73.988-26.636s-26.636-44.393-26.636-79.908v-183.491h-82.867v361.064h79.908v-47.353c14.798 17.757 32.555 29.595 53.272 38.474s44.393 11.838 71.029 11.838c44.393 0 82.867-11.838 109.503-38.474z" />
|
||||||
<glyph unicode="" glyph-name="plus" d="M992 576h-352v352c0 17.664-14.304 32-32 32h-192c-17.696 0-32-14.336-32-32v-352h-352c-17.696 0-32-14.336-32-32v-192c0-17.696 14.304-32 32-32h352v-352c0-17.696 14.304-32 32-32h192c17.696 0 32 14.304 32 32v352h352c17.696 0 32 14.304 32 32v192c0 17.664-14.304 32-32 32z" />
|
<glyph unicode="" glyph-name="plus" d="M992 576h-352v352c0 17.664-14.304 32-32 32h-192c-17.696 0-32-14.336-32-32v-352h-352c-17.696 0-32-14.336-32-32v-192c0-17.696 14.304-32 32-32h352v-352c0-17.696 14.304-32 32-32h192c17.696 0 32 14.304 32 32v352h352c17.696 0 32 14.304 32 32v192c0 17.664-14.304 32-32 32z" />
|
||||||
<glyph unicode="" glyph-name="less" d="M32 576h960c17.696 0 32-14.336 32-32v-192c0-17.696-14.304-32-32-32h-960c-17.664 0-32 14.304-32 32v192c0 17.664 14.336 32 32 32z" />
|
<glyph unicode="" glyph-name="less" d="M32 576h960c17.696 0 32-14.336 32-32v-192c0-17.696-14.304-32-32-32h-960c-17.664 0-32 14.304-32 32v192c0 17.664 14.336 32 32 32z" />
|
||||||
|
<glyph unicode="" glyph-name="clock" d="M576 512v192h-128v-320h256v128zM512 960c-282.75 0-512-229.25-512-512s229.25-512 512-512 512 229.25 512 512-229.25 512-512 512zM512 64c-212.062 0-384 171.938-384 384s171.938 384 384 384 384-171.938 384-384-171.938-384-384-384z" />
|
||||||
|
<glyph unicode="" glyph-name="location" d="M512 960c-212.062 0-384-171.938-384-384s384-640 384-640 384 427.938 384 640-171.938 384-384 384zM512 320c-141.376 0-256 114.624-256 256s114.624 256 256 256 256-114.624 256-256-114.624-256-256-256zM512 704c-70.688 0-128-57.312-128-128s57.312-128 128-128 128 57.312 128 128-57.312 128-128 128z" />
|
||||||
|
<glyph unicode="" glyph-name="company" d="M716.8 704h102.4v-716.8h-614.4v716.8h102.4v51.2c0 56.554 45.846 102.4 102.4 102.4v0h204.8c56.554 0 102.4-45.846 102.4-102.4v0-51.2zM870.4 704h51.2c56.554 0 102.4-45.846 102.4-102.4v0-512c0-56.554-45.846-102.4-102.4-102.4v0h-51.2v716.8zM153.6 704v-716.8h-51.2c-56.554 0-102.4 45.846-102.4 102.4v0 512c0 56.32 46.080 102.4 102.4 102.4h51.2zM409.6 755.2v-51.2h204.8v51.2h-204.8z" />
|
||||||
|
<glyph unicode="" glyph-name="linkedin_speaker" d="M928 960h-832c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM384 128h-128v448h128v-448zM320 640c-35.4 0-64 28.6-64 64s28.6 64 64 64c35.4 0 64-28.6 64-64s-28.6-64-64-64zM832 128h-128v256c0 35.4-28.6 64-64 64s-64-28.6-64-64v-256h-128v448h128v-79.4c26.4 36.2 66.8 79.4 112 79.4 79.6 0 144-71.6 144-160v-288z" />
|
||||||
|
<glyph unicode="" glyph-name="linkedin1" d="M928 960h-832c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM384 128h-128v448h128v-448zM320 640c-35.4 0-64 28.6-64 64s28.6 64 64 64c35.4 0 64-28.6 64-64s-28.6-64-64-64zM832 128h-128v256c0 35.4-28.6 64-64 64s-64-28.6-64-64v-256h-128v448h128v-79.4c26.4 36.2 66.8 79.4 112 79.4 79.6 0 144-71.6 144-160v-288z" />
|
||||||
</font></defs></svg>
|
</font></defs></svg>
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 6.1 KiB |
After Width: | Height: | Size: 229 KiB |
After Width: | Height: | Size: 353 B |
After Width: | Height: | Size: 9.0 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 1.5 MiB |
Before Width: | Height: | Size: 6.7 KiB |
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 290 KiB |
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 117 KiB |
After Width: | Height: | Size: 319 KiB |
After Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 117 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 151 KiB |
After Width: | Height: | Size: 344 KiB |
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 117 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 83 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 271 KiB |
After Width: | Height: | Size: 326 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 957 B |
After Width: | Height: | Size: 367 KiB |
After Width: | Height: | Size: 88 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 4.5 KiB |