diff --git a/App/app/Router.js b/App/app/Router.js
index af72ca00..57660b20 100755
--- a/App/app/Router.js
+++ b/App/app/Router.js
@@ -183,6 +183,7 @@ const Stack = createStackNavigator({
return {
headerTitle: 'Eventos',
}
+
}
else {
return {
@@ -207,7 +208,6 @@ const Stack = createStackNavigator({
screen: FebradaDetail,
},
-
resetPassword:{
screen:resetPassword
}
diff --git a/App/app/assets/rallyTascas.jpg b/App/app/assets/rallyTascas.jpg
new file mode 100644
index 00000000..05b309c1
Binary files /dev/null and b/App/app/assets/rallyTascas.jpg differ
diff --git a/App/app/screens/Eventos.js b/App/app/screens/Eventos.js
index cfe0614a..276d18fb 100644
--- a/App/app/screens/Eventos.js
+++ b/App/app/screens/Eventos.js
@@ -1,11 +1,15 @@
import * as React from "react";
+
import {View, StyleSheet, Dimensions, Text, Button, ScrollView, Image, TouchableOpacity} from "react-native";
+
import {TabView, TabBar, SceneMap} from "react-native-tab-view";
+import rallyImg from '../assets/rallyTascas.jpg';
const SCREEN_HEIGHT = Dimensions.get("window").height;
const SCREEN_WIDTH = Dimensions.get("window").width;
+
const FirstRoute = () => (
);
@@ -51,7 +55,6 @@ export default class Eventos extends React.Component {
-
);
@@ -128,6 +131,7 @@ const styles = StyleSheet.create({
cardContainer: {
flex: 1,
+ flexDirection: 'row',
padding: 10,
margin: 20,
backgroundColor: '#fff',
diff --git a/App/app/screens/rallyTascas.js b/App/app/screens/rallyTascas.js
new file mode 100644
index 00000000..90f318d3
--- /dev/null
+++ b/App/app/screens/rallyTascas.js
@@ -0,0 +1,47 @@
+/*
+/*
+/*
+/*Esta página só está disponivel a 1 hora do rally..
+*/
+
+import * as React from "react";
+import {View, StyleSheet, Dimensions, Text, Button, ScrollView} from "react-native";
+import {TabView, TabBar, SceneMap} from "react-native-tab-view";
+
+import * as Actions from "../store/actions";
+import {connect} from "react-redux";
+import {bindActionCreators} from "redux";
+
+export default class rallyTascas extends React.Component {
+
+ render() {
+ return (
+
+
+
+ )
+
+
+ }
+}
+
+
+
+function mapStateToProps(state, props) {
+
+ return {
+
+ token: state.apiReducer.token,
+ user: state.apiReducer.user,
+ logged: state.apiReducer.logged,
+ events: state.apiReducer.events
+
+ }
+}
+
+function mapDispatchToProps(dispatch) {
+
+ return bindActionCreators(Actions, dispatch);
+}
+
+export default connect(mapStateToProps, mapDispatchToProps)(rallyTascas);
\ No newline at end of file
diff --git a/api/Controllers/CromosController.cs b/api/Controllers/CromosController.cs
new file mode 100644
index 00000000..29211657
--- /dev/null
+++ b/api/Controllers/CromosController.cs
@@ -0,0 +1,55 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using api.Data;
+using api.Dtos;
+using api.Models;
+using AutoMapper;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Identity;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace api.Controllers
+{
+
+ [Authorize]
+ [Route("api/[controller]")]
+ [ApiController]
+ public class CromosController : ControllerBase
+ {
+ private readonly DataContext context;
+ private readonly IMapper _mapper;
+ public CromosController(DataContext context, IMapper mapper)
+ {
+ this.context = context;
+ _mapper = mapper;
+ }
+
+ // GET api/cromos/QR
+ // GET cromos do user QR
+ [HttpGet]
+ public async Task> GetCromos(string QR)
+ {
+ var usr = await context.Users.Include(a=>a.cromos).FirstOrDefaultAsync(u=>u.QRcode == QR);
+ var allCromos = await context.Cromos.ToListAsync();
+
+ List rList = new List();
+
+ allCromos.ForEach(delegate(Cromos c){
+ usr.cromos.ForEach(delegate(int cid){
+ if(c.Id == cid){ //user tem o cromo
+ Cromos toAdd = new Cromos{Id = c.Id,Nome=c.Nome,DescMostrar=c.DescUnlocked,QRCode=c.QRCode,img=c.img};
+ rList.Add(toAdd);
+ }else{ //user NAO tem o cromo
+ Cromos toAdd = new Cromos{Id = c.Id,Nome=c.Nome,DescMostrar=c.DescLocked,QRCode=c.QRCode,img=c.img};
+ rList.Add(toAdd);
+ }
+ });
+ });
+ return rList;
+ }
+
+ }
+}
diff --git a/api/Controllers/ScanController.cs b/api/Controllers/ScanController.cs
new file mode 100644
index 00000000..6f486c70
--- /dev/null
+++ b/api/Controllers/ScanController.cs
@@ -0,0 +1,68 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using api.Data;
+using api.Dtos;
+using api.Models;
+using AutoMapper;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Identity;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace api.Controllers
+{
+
+ [Authorize]
+ [Route("api/[controller]")]
+ [ApiController]
+ public class ScanController : ControllerBase
+ {
+ private readonly DataContext context;
+ private readonly IMapper _mapper;
+ public ScanController(DataContext context, IMapper mapper)
+ {
+ this.context = context;
+ _mapper = mapper;
+ }
+
+ // PSOT api/scan
+ // POST scan de QR code
+ [HttpPost]
+ public async Task doScan(QRToScan ScanData)
+ {
+ User usr = await context.Users.Include(a=>a.cromos).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);
+
+ ScanReturn toReturn = new ScanReturn();
+
+ if(userAProcurar != null){
+ _mapper.Map(toReturn.user,userAProcurar);
+ toReturn.tipo=1;
+ return toReturn;
+ }else{
+ allCromos.ForEach(delegate(Cromos c){
+ if(c.QRCode == ScanData.ScanQR){
+ toReturn.tipo=0;
+ usr.cromos.Add(c.Id);
+ context.Users.Update(usr);
+ context.SaveChanges();
+
+ toReturn.resp = "Cromo Adicionado!";
+ }
+ });
+
+ return toReturn;
+ }
+
+ toReturn.tipo = -1;
+
+ return toReturn;
+ }
+
+ }
+}
diff --git a/api/Data/DataContext.cs b/api/Data/DataContext.cs
index e6ac56e1..fbe73eb6 100755
--- a/api/Data/DataContext.cs
+++ b/api/Data/DataContext.cs
@@ -21,6 +21,8 @@ namespace api.Data
public DbSet EventLocs {get;set;}
public DbSet EventLocsVisited {get;set;}
+
+ public DbSet Cromos {get;set;}
public DbSetLogs{get;set;}
diff --git a/api/Dtos/QRToScan.cs b/api/Dtos/QRToScan.cs
new file mode 100644
index 00000000..e9381fa0
--- /dev/null
+++ b/api/Dtos/QRToScan.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using api.Models;
+
+namespace api.Dtos
+{
+ public class QRToScan
+ {
+ [Required]
+ public string UserQR{get;set;} //QR do User que ler
+
+ [Required]
+ public string ScanQR{get;set;} //QR a analisar
+ }
+}
\ No newline at end of file
diff --git a/api/Dtos/ScanReturn.cs b/api/Dtos/ScanReturn.cs
new file mode 100644
index 00000000..cba5acef
--- /dev/null
+++ b/api/Dtos/ScanReturn.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using api.Models;
+
+namespace api.Dtos
+{
+ public class ScanReturn
+ {
+ public int tipo{get;set;} //tipo de retorno, 0 = cromo // 1 = user
+
+ public UserForListDto user{get;set;} //user
+
+ public string resp{get;set;} //reposta
+ }
+}
\ No newline at end of file
diff --git a/api/Dtos/UserForListDto.cs b/api/Dtos/UserForListDto.cs
index 538f90f4..91d0d304 100755
--- a/api/Dtos/UserForListDto.cs
+++ b/api/Dtos/UserForListDto.cs
@@ -18,8 +18,5 @@ namespace api.Dtos
public string ProfileIcon {get;set;}
public string About{get;set;}
public string PhotoUrl{get;set;}
-
-
-
}
}
\ No newline at end of file
diff --git a/api/Models/Cromos.cs b/api/Models/Cromos.cs
new file mode 100644
index 00000000..6848e8c9
--- /dev/null
+++ b/api/Models/Cromos.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+
+namespace api.Models
+
+{
+ public class Cromos
+ {
+ public int Id{get;set;} //id
+ public String QRCode{get;set;} //QR
+ public String Nome{get;set;} //Nome
+ public String DescLocked{get;set;} //descrição nao visto
+ public String DescUnlocked{get;set;}//descrição visto
+ public String DescMostrar{get;set;} //descrição a mostrar
+ public Photo img {get;set;} //imagem
+
+ }
+}
\ No newline at end of file
diff --git a/api/Models/User.cs b/api/Models/User.cs
index 56acc712..b798efb9 100755
--- a/api/Models/User.cs
+++ b/api/Models/User.cs
@@ -20,6 +20,8 @@ namespace api.Models
[ForeignKey("teamID")]
public Team team{get;set;}
+
+ public List cromos {get;set;}
}
}
\ No newline at end of file