Merge remote-tracking branch 'origin/master' into zmiguel
|
@ -102,8 +102,8 @@ android {
|
|||
applicationId "pt.enei"
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode 3
|
||||
versionName "3"
|
||||
versionCode 5
|
||||
versionName "5"
|
||||
ndk {
|
||||
abiFilters "armeabi-v7a", "x86"
|
||||
}
|
||||
|
|
|
@ -45,6 +45,9 @@ import teamDetail from './screens/teamDetail';
|
|||
|
||||
import event from './screens/event';
|
||||
|
||||
import map from './screens/map'
|
||||
|
||||
|
||||
const navigationOptions = ({navigation}) => ({
|
||||
headerLeft: <HeaderBackButton onPress={() => navigation.goBack(null)}/>,
|
||||
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': {
|
||||
screen: Jogo,
|
||||
|
@ -88,7 +100,7 @@ const AppStack = createBottomTabNavigator(
|
|||
},
|
||||
|
||||
|
||||
Eventos: {
|
||||
Atividades: {
|
||||
screen: Eventos,
|
||||
|
||||
navigationOptions: {
|
||||
|
@ -98,7 +110,7 @@ const AppStack = createBottomTabNavigator(
|
|||
)
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
Home: {
|
||||
screen: Home,
|
||||
navigationOptions: {
|
||||
|
@ -150,10 +162,16 @@ const Stack = createStackNavigator({
|
|||
|
||||
if (navigation.state.routes[index].routeName == 'Jogo') {
|
||||
return {
|
||||
header: (<View style={{backgroundColor:'#CC1A17', padding:15}}>
|
||||
<Text style={{textAlign:'center', alignSelf:'center', color:'white', fontSize:20, fontWeight:'bold'}}>Jogo do ENEI'19</Text>
|
||||
</View>)
|
||||
|
||||
headerTitle: (<Text style={{
|
||||
textAlign:'center',
|
||||
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 {
|
||||
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>
|
||||
<Text style={styles.description}>{item.description}</Text>
|
||||
<Text style={styles.description} numberOfLines={8}>{item.description}</Text>
|
||||
</View>
|
||||
</View>
|
||||
</TouchableOpacity>
|
||||
|
@ -313,7 +313,7 @@ class Calendar extends React.Component {
|
|||
}}
|
||||
style={{ backgroundColor: "#F2F2F2" }}
|
||||
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>
|
||||
|
@ -355,7 +355,8 @@ const styles = StyleSheet.create({
|
|||
description: {
|
||||
padding: 10,
|
||||
paddingLeft: 0,
|
||||
paddingTop: 0
|
||||
paddingTop: 0,
|
||||
textAlign:"justify"
|
||||
},
|
||||
title: {
|
||||
color: "#212121",
|
||||
|
|
|
@ -132,9 +132,8 @@ const styles = StyleSheet.create({
|
|||
cardHours: {
|
||||
textAlign: "center",
|
||||
color: "white",
|
||||
margin: 10
|
||||
|
||||
// width:'20%'
|
||||
margin: 10,
|
||||
width:'45%'
|
||||
},
|
||||
|
||||
cardDesc: {
|
||||
|
|
|
@ -85,11 +85,11 @@ class Home extends Component {
|
|||
//enei.pt/api/Users/getProfileImage/ZV4ZWJXTVV
|
||||
https: axios
|
||||
.get(`https://enei.pt/api/Users/getProfileImage/${qr}`)
|
||||
.then(function(response) {
|
||||
.then(function (response) {
|
||||
// handle success
|
||||
return response.data;
|
||||
})
|
||||
.catch(function(error) {
|
||||
.catch(function (error) {
|
||||
// handle error
|
||||
console.log(error);
|
||||
});
|
||||
|
@ -103,7 +103,7 @@ class Home extends Component {
|
|||
this.props.getEvents(this.props.user, this.props.token);
|
||||
this._getImage();
|
||||
}
|
||||
componentWillUnmount() {}
|
||||
componentWillUnmount() { }
|
||||
|
||||
bClick() {
|
||||
//this.props.logoutUser();
|
||||
|
@ -163,7 +163,10 @@ class Home extends Component {
|
|||
};
|
||||
_creatTeam = () => {
|
||||
var tipo;
|
||||
if (this.state.switch) tipo = 1;
|
||||
if (this.state.switch==true) {
|
||||
tipo = 1;
|
||||
|
||||
}
|
||||
else {
|
||||
tipo = 3;
|
||||
}
|
||||
|
@ -238,20 +241,20 @@ class Home extends Component {
|
|||
>
|
||||
<View style={styles.homeHeader}>
|
||||
<View style={styles.userImageContainer}>
|
||||
{this.props.user.Avatar != null && <Image
|
||||
{this.props.user.Avatar != null && <Image
|
||||
style={styles.userImage}
|
||||
source={{
|
||||
uri: this.props.user.Avatar
|
||||
}}
|
||||
/>
|
||||
}{ this.props.user.Avatar==null &&
|
||||
<Image
|
||||
style={styles.userImage}
|
||||
source={require('../assets/logo_black.jpg')}
|
||||
/>}
|
||||
}{this.props.user.Avatar == null &&
|
||||
<Image
|
||||
style={styles.userImage}
|
||||
source={require('../assets/logo_black.jpg')}
|
||||
/>}
|
||||
</View>
|
||||
{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 && (
|
||||
<Text style={styles.userTextSub}>
|
||||
|
@ -266,11 +269,11 @@ class Home extends Component {
|
|||
flexDirection: "row",
|
||||
alignItems: "center",
|
||||
alignContent: "center",
|
||||
alignSelf:'center'
|
||||
alignSelf: 'center'
|
||||
}}
|
||||
>
|
||||
<Text
|
||||
style={{ textAlign: "right", fontSize: 12, paddingTop:10 , marginRight:5}}
|
||||
style={{ textAlign: "right", fontSize: 12, paddingTop: 10, marginRight: 5 }}
|
||||
>
|
||||
Arrasta o ecrã para atualizar
|
||||
</Text>
|
||||
|
@ -349,12 +352,12 @@ class Home extends Component {
|
|||
</Text>
|
||||
</View>
|
||||
<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
|
||||
formar uma equipa (4 a 6) elementos.
|
||||
</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
|
||||
remover outros elementos.
|
||||
|
@ -428,9 +431,9 @@ class Home extends Component {
|
|||
</View>
|
||||
</View>
|
||||
<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
|
||||
ENEI
|
||||
</Text>
|
||||
|
@ -471,6 +474,7 @@ class Home extends Component {
|
|||
fontWeight: "bold",
|
||||
marginBottom: 0
|
||||
}}
|
||||
numberOfLines={1}
|
||||
>
|
||||
{this.props.team.nome}
|
||||
</Text>
|
||||
|
@ -563,7 +567,7 @@ class Home extends Component {
|
|||
<IconFA name="user" size={40} />
|
||||
</View>
|
||||
<View style={styles.userT}>
|
||||
<Text style={styles.userName}>
|
||||
<Text style={styles.userName} numberOfLines={1}>
|
||||
{item.fullName}
|
||||
</Text>
|
||||
<Text>{item.qRcode}</Text>
|
||||
|
@ -571,15 +575,15 @@ class Home extends Component {
|
|||
|
||||
{this.props.user.Code ==
|
||||
this.props.team.cap.qRcode && (
|
||||
<TouchableOpacity
|
||||
style={styles.userRemove}
|
||||
onPress={() => this._rm(item.qRcode)}
|
||||
>
|
||||
<Text style={{ fontWeight: "bold" }}>
|
||||
remover
|
||||
<TouchableOpacity
|
||||
style={styles.userRemove}
|
||||
onPress={() => this._rm(item.qRcode)}
|
||||
>
|
||||
<Text style={{ fontWeight: "bold" }}>
|
||||
remover
|
||||
</Text>
|
||||
</TouchableOpacity>
|
||||
)}
|
||||
</TouchableOpacity>
|
||||
)}
|
||||
</View>
|
||||
)}
|
||||
<Divider style={{ backgroundColor: "black" }} />
|
||||
|
@ -588,9 +592,11 @@ class Home extends Component {
|
|||
/>
|
||||
</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>
|
||||
</View>
|
||||
|
||||
{(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>
|
||||
}
|
||||
{!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>
|
||||
|
|
|
@ -146,7 +146,7 @@ class Jogo extends React.Component {
|
|||
</Text>
|
||||
</View>
|
||||
<View style={{ width: "100%", marginTop: 10 }}>
|
||||
<TouchableOpacity onPress={()=>this.handleClick(this.state.cromo.websitecromo)} >
|
||||
<TouchableOpacity onPress={()=>this.handleClick(this.state.cromo.websiteCromo)} >
|
||||
<Text
|
||||
style={{
|
||||
textAlign: "center",
|
||||
|
@ -270,10 +270,10 @@ class Jogo extends React.Component {
|
|||
{this.props.cromos!= undefined &&
|
||||
<ProgressBarAnimated
|
||||
width={barWidth * 0.7}
|
||||
value={this.props.cromos.pontuacao*100/256}
|
||||
value={this.props.cromos.pontuacao*100/1024}
|
||||
backgroundColorOnComplete="#CC2A17"
|
||||
/>}
|
||||
<Text style={{ fontWeight: "bold" }}>256</Text>
|
||||
<Text style={{ fontWeight: "bold" }}>1024</Text>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
|
@ -316,7 +316,7 @@ class Jogo extends React.Component {
|
|||
</View>
|
||||
</TouchableOpacity>
|
||||
)}
|
||||
numColumns={4} // Número de colunas
|
||||
numColumns={5} // Número de colunas
|
||||
/>}
|
||||
</View>
|
||||
</ScrollView>
|
||||
|
@ -333,7 +333,8 @@ const styles = StyleSheet.create({
|
|||
marginTop: -25,
|
||||
marginLeft: 10,
|
||||
fontWeight: "bold",
|
||||
color: "#CC1A17"
|
||||
color: "#CC1A17",
|
||||
// backgroundColor:"#cc1a17",
|
||||
},
|
||||
|
||||
cromosContainer: {
|
||||
|
@ -418,9 +419,11 @@ const styles = StyleSheet.create({
|
|||
marginTop: 156
|
||||
},
|
||||
number: {
|
||||
marginTop: -18,
|
||||
marginLeft: 103,
|
||||
textAlign: "center"
|
||||
marginTop: -13,
|
||||
marginLeft: 100,
|
||||
textAlign: "center",
|
||||
|
||||
color:'#cc1a17'
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -35,8 +35,13 @@ import {RkButton,
|
|||
|
||||
this.setState({code:e.data});
|
||||
this.props.scanQrCode({UserQR:this.props.user.Code, ScanQR: e.data},this.props.internalToken);
|
||||
|
||||
|
||||
|
||||
setTimeout(()=> {
|
||||
if(this.scanner!=null)
|
||||
this.scanner.reactivate()
|
||||
},
|
||||
2000
|
||||
)
|
||||
};
|
||||
|
||||
state = {
|
||||
|
@ -79,7 +84,7 @@ import {RkButton,
|
|||
showMarker={true}
|
||||
|
||||
cameraStyle={{ height: SCREEN_HEIGHT }}
|
||||
|
||||
|
||||
fadeIn={true}
|
||||
|
||||
|
||||
|
|
|
@ -168,7 +168,7 @@ class calendarDetail extends React.Component {
|
|||
<FitImage
|
||||
source={{
|
||||
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 }}
|
||||
/>
|
||||
|
@ -183,7 +183,7 @@ class calendarDetail extends React.Component {
|
|||
>
|
||||
{item.Name}
|
||||
</Text>
|
||||
<Text style={{ marginLeft: 10 }}>
|
||||
<Text style={{ marginLeft: 10 , textAlign:'justify'}}>
|
||||
{item.MoreInfo}
|
||||
</Text>
|
||||
<TouchableOpacity>
|
||||
|
@ -207,7 +207,7 @@ class calendarDetail extends React.Component {
|
|||
>
|
||||
Descrição do orador:
|
||||
</Text>
|
||||
<Text style={{ margin: 10 }}>{item.Description}</Text>
|
||||
<Text style={{ margin: 10, textAlign:"justify" }}>{item.Description}</Text>
|
||||
</View>
|
||||
</View>
|
||||
)}
|
||||
|
@ -223,7 +223,7 @@ class calendarDetail extends React.Component {
|
|||
</Text>
|
||||
<Divider style={{ backgroundColor: "#000" }} />
|
||||
<View style={{ marginTop: 10 }}>
|
||||
<Text>{this.props.sessionDetail.Description}</Text>
|
||||
<Text style={{textAlign:'justify'}}>{this.props.sessionDetail.Description}</Text>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
|
|
|
@ -311,7 +311,7 @@ class choosePath extends React.Component {
|
|||
<ScrollView style={styles.page}>
|
||||
{this._findPath("IA") && (
|
||||
<LinearGradient
|
||||
colors={["#D95856", "#CC1A17"]}
|
||||
colors={["#F54B10", "#F54B10"]}
|
||||
style={styles.linearGradient}
|
||||
>
|
||||
<Text
|
||||
|
@ -341,7 +341,7 @@ class choosePath extends React.Component {
|
|||
)}
|
||||
{this._findPath("NET") && (
|
||||
<LinearGradient
|
||||
colors={["#4D76B3", "#055CA0"]}
|
||||
colors={["#214198", "#214198"]}
|
||||
style={styles.linearGradient}
|
||||
>
|
||||
<Text
|
||||
|
@ -370,7 +370,7 @@ class choosePath extends React.Component {
|
|||
)}
|
||||
{this._findPath("WEB") && (
|
||||
<LinearGradient
|
||||
colors={["#FDC657", "#FBB81B"]}
|
||||
colors={["#3A1484", "#3A1484"]}
|
||||
style={styles.linearGradient}
|
||||
>
|
||||
<Text
|
||||
|
@ -399,7 +399,7 @@ class choosePath extends React.Component {
|
|||
)}
|
||||
{this._findPath("IOT") && (
|
||||
<LinearGradient
|
||||
colors={["#69447F", "#4B266A"]}
|
||||
colors={["#EC174A", "#EC174A"]}
|
||||
style={styles.linearGradient}
|
||||
>
|
||||
<Text
|
||||
|
@ -432,7 +432,7 @@ class choosePath extends React.Component {
|
|||
)}
|
||||
{this._findPath("DS") && (
|
||||
<LinearGradient
|
||||
colors={["#F28C59", "#ED6B33"]}
|
||||
colors={["#DC160D", "#DC160D"]}
|
||||
style={styles.linearGradient}
|
||||
>
|
||||
<Text
|
||||
|
@ -474,7 +474,7 @@ class choosePath extends React.Component {
|
|||
)}
|
||||
{this._findPath("MOB") && (
|
||||
<LinearGradient
|
||||
colors={["#559159", "#0B7D3C"]}
|
||||
colors={["#971384", "#971384"]}
|
||||
style={styles.linearGradient}
|
||||
>
|
||||
<Text
|
||||
|
@ -531,11 +531,11 @@ class choosePath extends React.Component {
|
|||
}}
|
||||
>
|
||||
<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="Web development" value="14" />
|
||||
<Picker.Item label="Mobile development" value="11" />
|
||||
<Picker.Item label="Internet of things" value="12" />
|
||||
<Picker.Item label="Web Development" value="14" />
|
||||
<Picker.Item label="Mobile Development" value="11" />
|
||||
<Picker.Item label="Internet of Things" value="12" />
|
||||
</Picker>
|
||||
</View>
|
||||
<View style={{ width: SCREEN_WIDTH }}>
|
||||
|
@ -825,8 +825,10 @@ class choosePath extends React.Component {
|
|||
<Text
|
||||
style={{
|
||||
fontSize: 15,
|
||||
fontWeight: "bold"
|
||||
fontWeight: "bold",
|
||||
maxWidth:150
|
||||
}}
|
||||
|
||||
>
|
||||
{item[index].Name}
|
||||
</Text>
|
||||
|
@ -881,7 +883,8 @@ class choosePath extends React.Component {
|
|||
style={{
|
||||
fontSize: 15,
|
||||
fontWeight: "bold",
|
||||
marginLeft: 5
|
||||
marginLeft: 5,
|
||||
maxWidth:150
|
||||
}}
|
||||
>
|
||||
{item[index].Name}
|
||||
|
@ -890,7 +893,8 @@ class choosePath extends React.Component {
|
|||
<Text
|
||||
style={{
|
||||
marginTop: 10,
|
||||
marginBottom: 5
|
||||
marginBottom: 5,
|
||||
marginLeft:25
|
||||
}}
|
||||
>
|
||||
{item[index].MaxAttendees -
|
||||
|
@ -908,6 +912,7 @@ class choosePath extends React.Component {
|
|||
}
|
||||
unfilledColor={"white"}
|
||||
width={150}
|
||||
style={{marginLeft:25}}
|
||||
/>
|
||||
)}
|
||||
</View>
|
||||
|
|
|
@ -147,6 +147,7 @@ class event extends React.Component {
|
|||
marginBottom: 10,
|
||||
fontSize: 20,
|
||||
color: "#CC1A17"
|
||||
|
||||
}}
|
||||
>
|
||||
{info.nome}
|
||||
|
|
|
@ -81,14 +81,16 @@ class eventDetail extends React.Component {
|
|||
alignSelf: "center"
|
||||
}}
|
||||
>
|
||||
<View style={styles.leftRow}>
|
||||
<View>
|
||||
<Text
|
||||
style={{
|
||||
margin: 10,
|
||||
marginTop: 0,
|
||||
marginBottom: 10,
|
||||
fontSize: 20,
|
||||
color: "#CC1A17"
|
||||
color: "#CC1A17",
|
||||
|
||||
width:'100%'
|
||||
}}
|
||||
>
|
||||
{info.location.nome}
|
||||
|
@ -110,7 +112,7 @@ class eventDetail extends React.Component {
|
|||
</Text>
|
||||
<Divider style={{ backgroundColor: "#000" }} />
|
||||
<View style={{ marginTop: 10 }}>
|
||||
<Text>{info.location.desc}</Text>
|
||||
<Text style={{textAlign:'justify'}}>{info.location.desc}</Text>
|
||||
</View>
|
||||
<Text
|
||||
style={{
|
||||
|
@ -124,7 +126,7 @@ class eventDetail extends React.Component {
|
|||
</Text>
|
||||
<Divider style={{ backgroundColor: "#000" }} />
|
||||
<View style={{ marginTop: 10 }}>
|
||||
<Text>{info.location.desafio}</Text>
|
||||
<Text style={{textAlign:"justify"}}>{info.location.desafio}</Text>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
|
@ -171,7 +173,7 @@ class eventDetail extends React.Component {
|
|||
</Text>
|
||||
<Divider style={{ backgroundColor: "#000" }} />
|
||||
<View style={{ marginTop: 10 }}>
|
||||
<Text>{info.desc}</Text>
|
||||
<Text style={{textAlign:'justify'}}>{info.desc}</Text>
|
||||
</View>
|
||||
<Text
|
||||
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}
|
||||
</Text>
|
||||
<Text style={{ fontSize: 12, padding: 15 }}>
|
||||
<Text style={{ fontSize: 12, padding: 15 }} numberOfLines={5}>
|
||||
{item.location.desc}
|
||||
</Text>
|
||||
</View>
|
||||
|
|
|
@ -68,7 +68,7 @@ export function scanQrCode(data, tokenInternal) {
|
|||
})
|
||||
.catch(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 => {
|
||||
console.log(p);
|
||||
Alert.alert("ERRO!", "erro a obter os eventos");
|
||||
Alert.alert("ERRO!", "Erro a obter os cromos.");
|
||||
});
|
||||
|
||||
dispatch({
|
||||
|
@ -864,32 +864,32 @@ function getCareerPath(sessions) {
|
|||
for (let key in sessions) {
|
||||
if (sessions[key].Name == "IA") {
|
||||
careerPath = "Artificial Intelligence";
|
||||
careerColor = "#CC1A17";
|
||||
careerColor = "#F54B10";
|
||||
code = "IA";
|
||||
}
|
||||
if (sessions[key].Name == "IOT") {
|
||||
careerPath = "Internet of things";
|
||||
careerColor = "#4B266A";
|
||||
careerPath = "Internet of Things";
|
||||
careerColor = "#EC174A";
|
||||
code = "IOT";
|
||||
}
|
||||
if (sessions[key].Name == "WEB") {
|
||||
careerPath = "Web development";
|
||||
careerColor = "#FBB81B";
|
||||
careerPath = "Web Development";
|
||||
careerColor = "#3A1484";
|
||||
code = "WEB";
|
||||
}
|
||||
if (sessions[key].Name == "NET") {
|
||||
careerPath = "Networking and Security";
|
||||
careerColor = "#055CA0";
|
||||
careerColor = "#214198";
|
||||
code = "NET";
|
||||
}
|
||||
if (sessions[key].Name == "MOB") {
|
||||
careerPath = "Mobile Development";
|
||||
careerColor = "#0B7D3C";
|
||||
careerColor = "#971384";
|
||||
code = "MOB";
|
||||
}
|
||||
if (sessions[key].Name == "DS") {
|
||||
careerPath = "Data Science";
|
||||
careerColor = "#ED6B33";
|
||||
careerColor = "#DC160D";
|
||||
code = "DS";
|
||||
}
|
||||
}
|
||||
|
@ -1401,7 +1401,8 @@ function getE(user, careerPath, token) {
|
|||
name: user.Sessions[key].Name,
|
||||
Enrolled: user.Sessions[key].Enrolled,
|
||||
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 = [],
|
||||
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({
|
||||
Id: 48,
|
||||
time: "21:00",
|
||||
description:
|
||||
"Festarola do evento",
|
||||
"Para começar o primeiro dia em grande, temos reservado para ti a maior festa",
|
||||
name: "Festarola",
|
||||
Enrolled: 700,
|
||||
MaxAttendees: 300,
|
||||
|
@ -1653,7 +1554,7 @@ function getE(user, careerPath, token) {
|
|||
Enrolled: result["12"][key].Enrolled,
|
||||
MaxAttendees: result["12"][key].MaxAttendees,
|
||||
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,
|
||||
MaxAttendees: result["13"][key].MaxAttendees,
|
||||
day: result["13"][key].day,
|
||||
place: ""
|
||||
place: result["13"][key].LocalRoom
|
||||
});
|
||||
}
|
||||
for (let key in result["14"]) {
|
||||
|
@ -1682,7 +1583,7 @@ function getE(user, careerPath, token) {
|
|||
Enrolled: result["14"][key].Enrolled,
|
||||
MaxAttendees: result["14"][key].MaxAttendees,
|
||||
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,
|
||||
MaxAttendees: result["15"][key].MaxAttendees,
|
||||
day: result["15"][key].day,
|
||||
place: ""
|
||||
place: result["15"][key].LocalRoom
|
||||
});
|
||||
}
|
||||
a = _.sortBy(a, function (o) {
|
||||
|
@ -1938,7 +1839,7 @@ export function getUserInfo(token) {
|
|||
axios.defaults.baseURL = "https://api.enei.pt";
|
||||
|
||||
axios
|
||||
.get(`api / EventLocsVisited / t / ${v.data.id}`)
|
||||
.get(`/api/EventLocsVisited/t/${v.data.id}`)
|
||||
.then(c => {
|
||||
|
||||
console.log("sucesso!");
|
||||
|
|
|
@ -15,13 +15,13 @@
|
|||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.1</string>
|
||||
<string>1.3</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>12</string>
|
||||
<string>15</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string></string>
|
||||
<string>public.app-category.utilities</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
|
@ -50,7 +50,7 @@
|
|||
<key>NSLocationWhenInUseUsageDescription</key>
|
||||
<string>Not used, just added this key because i used react-native and needed this keys for approval.</string>
|
||||
<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>
|
||||
<string>Not used, just added this key because i used react-native and needed this keys for approval.</string>
|
||||
<key>NSPhotoLibraryAddUsageDescription</key>
|
||||
|
|
|
@ -7961,7 +7961,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
|
||||
"react-native-image-overlay": {
|
||||
"version": "0.1.2",
|
||||
"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"
|
||||
}
|
||||
},
|
||||
|
||||
"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": {
|
||||
"version": "4.5.5",
|
||||
"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-fit-image": "^1.5.4",
|
||||
"react-native-gesture-handler": "^1.0.15",
|
||||
|
||||
"react-native-image-overlay": "^0.1.2",
|
||||
|
||||
"react-native-image-zoom-viewer": "^2.2.25",
|
||||
"react-native-ionicons": "^4.5.5",
|
||||
"react-native-linear-gradient": "^2.5.3",
|
||||
"react-native-loader": "^1.2.1",
|
||||
|
|
|
@ -25,7 +25,7 @@ namespace api.Controllers
|
|||
|
||||
public class AuthController : ControllerBase
|
||||
{
|
||||
private readonly DataContext context;
|
||||
private readonly DataContext context;
|
||||
private readonly IConfiguration config;
|
||||
public UserManager<User> _userManager { get; }
|
||||
public SignInManager<User> _signInManager { get; }
|
||||
|
@ -34,19 +34,19 @@ namespace api.Controllers
|
|||
private readonly RoleManager<Role> _roleManager;
|
||||
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;
|
||||
_repo = repo;
|
||||
this.clientFactory = clientFactory;
|
||||
this.config = config;
|
||||
_userManager = UserManager;
|
||||
_signInManager = SignInManager;
|
||||
this.context = context;
|
||||
|
||||
this.context = context;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
[HttpPost("register")]
|
||||
public async Task<IActionResult> Register(UserForRegisterDto userToRegister)
|
||||
|
@ -54,7 +54,7 @@ namespace api.Controllers
|
|||
var userToCreate = _mapper.Map<User>(userToRegister);
|
||||
|
||||
var result = await _userManager.CreateAsync(userToCreate, userToRegister.password);
|
||||
|
||||
|
||||
if (result.Succeeded)
|
||||
{
|
||||
return StatusCode(201);
|
||||
|
@ -62,6 +62,9 @@ namespace api.Controllers
|
|||
return BadRequest(result.Errors);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
[HttpPost("login")]
|
||||
public async Task<IActionResult> Login(UserForLoginDto UserForLoginDto)
|
||||
{
|
||||
|
@ -87,44 +90,48 @@ namespace api.Controllers
|
|||
}
|
||||
|
||||
[HttpPost("loginQR")]
|
||||
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);
|
||||
|
||||
public async Task<IActionResult> loginQr(loginQr a)
|
||||
{
|
||||
|
||||
var response = await client.GetStringAsync(url);
|
||||
var u = await _userManager.FindByNameAsync(a.QRcode);
|
||||
|
||||
// Console.WriteLine(response);
|
||||
|
||||
//var resource = JObject.Parse(response);
|
||||
var appUser = await _userManager.Users.FirstOrDefaultAsync(SU => SU.NormalizedUserName == a.QRcode.ToUpper());
|
||||
|
||||
|
||||
return Ok(new
|
||||
using (var client = new HttpClient())
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
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);
|
||||
|
||||
foreach(var role in roles) {
|
||||
claims.Add(new Claim(ClaimTypes.Role,role));
|
||||
foreach (var role in roles)
|
||||
{
|
||||
claims.Add(new Claim(ClaimTypes.Role, role));
|
||||
}
|
||||
|
||||
//obtem a key na app settings
|
||||
|
@ -151,7 +159,7 @@ namespace api.Controllers
|
|||
//criamos um token
|
||||
var tokenDescriptor = new SecurityTokenDescriptor
|
||||
{
|
||||
Subject = new ClaimsIdentity(claims),
|
||||
Subject = new ClaimsIdentity(claims),
|
||||
//data de expiração (atual + 24 horas)
|
||||
Expires = DateTime.Now.AddDays(30),
|
||||
|
||||
|
|
|
@ -49,10 +49,20 @@ namespace api.Controllers
|
|||
|
||||
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 };
|
||||
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;
|
||||
_mapper = mapper;
|
||||
}
|
||||
|
||||
|
||||
// PSOT api/scan
|
||||
// POST scan de QR code
|
||||
[HttpPost]
|
||||
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 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();
|
||||
_mapper.Map(userAProcurar,ru);
|
||||
_mapper.Map(userAProcurar, ru);
|
||||
toReturn.user = ru;
|
||||
toReturn.tipo=1;
|
||||
toReturn.tipo = 1;
|
||||
return Ok(toReturn);
|
||||
}else{
|
||||
allCromos.ForEach(delegate(Cromos c){
|
||||
if(c.QRCode == ScanData.ScanQR){
|
||||
string[] cromosArr = usr.cromos.Split(",").ToArray();
|
||||
int[] cromosIntArr = Array.ConvertAll(cromosArr,Int32.Parse);
|
||||
|
||||
for(var i =0;i<cromosIntArr.Length;i++){
|
||||
if(cromosIntArr[i] == c.Id){ //cromos ja existe no user
|
||||
crExist = true;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
bool repetido = false;
|
||||
|
||||
allCromos.ForEach(delegate (Cromos c)
|
||||
{
|
||||
|
||||
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){
|
||||
toReturn.tipo=-1; //tipo erro
|
||||
toReturn.resp = "Cromo já existente!";
|
||||
}else{
|
||||
toReturn.tipo=0;
|
||||
if (!repetido)
|
||||
{
|
||||
usr.cromos = usr.cromos + "," + c.Id;
|
||||
context.Users.Update(usr);
|
||||
context.SaveChanges();
|
||||
|
||||
toReturn.resp = "Cromo Adicionado!";
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
if (repetido)
|
||||
{
|
||||
return Unauthorized();
|
||||
}
|
||||
return Ok(toReturn);
|
||||
}
|
||||
|
||||
//return toReturn;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -104,12 +104,12 @@ namespace api.Controllers
|
|||
|
||||
if (allTeams[i].Id == rUsr.team.Id)
|
||||
{
|
||||
|
||||
rTeam.ativa= allTeams[i].pagamento;
|
||||
|
||||
rTeam.ativa = allTeams[i].pagamento;
|
||||
_mapper.Map(allTeams[i], rTeam);
|
||||
|
||||
var usr = await context.Users.FirstOrDefaultAsync(a => a.QRcode == allTeams[i].CapQR);
|
||||
|
||||
|
||||
var users = await context.Users.ToListAsync();
|
||||
|
||||
List<UserForListDto> usersToReturn = new List<UserForListDto>();
|
||||
|
@ -133,12 +133,17 @@ namespace api.Controllers
|
|||
_mapper.Map(usr, uT);
|
||||
|
||||
rTeam.Membros = usersToReturn;
|
||||
|
||||
rTeam.Cap = uT;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if(rTeam.Id==0 && rTeam.NMembros==0){
|
||||
return NotFound();
|
||||
}
|
||||
return Ok(rTeam);
|
||||
|
||||
}
|
||||
|
||||
// POST api/teams/add
|
||||
|
@ -184,7 +189,7 @@ namespace api.Controllers
|
|||
|
||||
Team tEdit = await context.Teams.FirstOrDefaultAsync(t => t.Id == MemberToAdd.id);
|
||||
|
||||
if (newMember.team == null)
|
||||
if (newMember.team == null && tEdit.NMembros<6)
|
||||
{
|
||||
|
||||
tEdit.NMembros++;
|
||||
|
@ -215,6 +220,11 @@ namespace api.Controllers
|
|||
|
||||
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)
|
||||
{
|
||||
tEdit.Nome = NameChange.nome;
|
||||
|
@ -238,7 +248,7 @@ namespace api.Controllers
|
|||
|
||||
User cap = await context.Users.FirstOrDefaultAsync(u => u.QRcode == DeleteData.UserQR);
|
||||
|
||||
|
||||
|
||||
if (tEdit != null && cap.QRcode == tEdit.CapQR)
|
||||
{
|
||||
context.Teams.Remove(tEdit);
|
||||
|
@ -251,7 +261,7 @@ namespace api.Controllers
|
|||
{
|
||||
return StatusCode(403);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// POST api/teams/remove/member
|
||||
|
@ -268,12 +278,12 @@ namespace api.Controllers
|
|||
User rmMember = await context.Users.FirstOrDefaultAsync(u => u.QRcode == MemberToRemove.UserToRemoveQR);
|
||||
|
||||
Console.WriteLine(rmMember.QRcode);
|
||||
|
||||
|
||||
//encontra a equipa de onde quer remover o user
|
||||
Team tEdit = await context.Teams.FirstOrDefaultAsync(t => t.Id == MemberToRemove.TeamID);
|
||||
|
||||
|
||||
Console.WriteLine(tEdit.Nome);
|
||||
|
||||
|
||||
var id = 0;
|
||||
|
||||
if (rmMember.QRcode == tEdit.CapQR)
|
||||
|
|
|
@ -87,25 +87,62 @@ namespace api.Controllers
|
|||
}
|
||||
|
||||
|
||||
|
||||
[Authorize(Policy = "RequireAdminRole")]
|
||||
|
||||
//[Authorize(Policy = "RequireAdminRole")]
|
||||
[AllowAnonymous]
|
||||
[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);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
else
|
||||
{
|
||||
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}")]
|
||||
|
|
|
@ -7,6 +7,7 @@ using Microsoft.EntityFrameworkCore;
|
|||
using api.Dtos;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using api.Models;
|
||||
using System.Net.Http;
|
||||
|
||||
namespace api.Controllers
|
||||
{
|
||||
|
@ -19,22 +20,90 @@ namespace api.Controllers
|
|||
|
||||
public mvcController(DataContext context, UserManager<User> userManager)
|
||||
{
|
||||
_context = context;
|
||||
_context = context;
|
||||
_userManager = userManager;
|
||||
}
|
||||
|
||||
|
||||
[HttpGet("")]
|
||||
[HttpGet("/jogoenei")]
|
||||
[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");
|
||||
}
|
||||
|
||||
|
||||
|
||||
[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 Microsoft.EntityFrameworkCore;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace api.Data
|
||||
{
|
||||
|
@ -25,9 +26,11 @@ namespace api.Data
|
|||
|
||||
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>();
|
||||
|
||||
|
|
|
@ -8,13 +8,13 @@ namespace api.Data
|
|||
|
||||
public interface IUsersRepository
|
||||
{
|
||||
void Add<T>(T enity) where T: class;
|
||||
void Delete<T>(T entity) where T: class;
|
||||
void Add<T>(T enity) where T : class;
|
||||
void Delete<T>(T entity) where T : class;
|
||||
Task<bool> SaveAll();
|
||||
Task<IEnumerable<User>> GetUsers();
|
||||
Task<User> GetUser(int id);
|
||||
Task<User> changeProfileImage(profileImage a);
|
||||
|
||||
Task<User> GetUser(string QR);
|
||||
|
||||
Task<string> getProfileImageAsync(string qrCode);
|
||||
}
|
||||
|
|
|
@ -65,6 +65,11 @@ namespace api.Data
|
|||
|
||||
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()
|
||||
{
|
||||
|
|
|
@ -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 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="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="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>
|
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 |