From 7b35f5c3ff481ad00a2fdec046ab36f6d6ce7ec0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Borges?= Date: Mon, 11 Mar 2019 19:16:10 +0000 Subject: [PATCH 1/5] rallyTascas screen Eventos Screen --- App/app/screens/Eventos.js | 36 ++++++++++++++++++++------ App/app/screens/rallyTascas.js | 47 ++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 8 deletions(-) create mode 100644 App/app/screens/rallyTascas.js diff --git a/App/app/screens/Eventos.js b/App/app/screens/Eventos.js index 1c87c9b4..906206e7 100644 --- a/App/app/screens/Eventos.js +++ b/App/app/screens/Eventos.js @@ -22,7 +22,6 @@ const FourthRoute = () => ( ); - export default class Eventos extends React.Component { state = { index: 0, @@ -38,7 +37,24 @@ export default class Eventos extends React.Component { renderFebrada = () => { return ( - Ola mundo + + + + Ola + Local: 1 + + + + Ola + Local: 1 + + + + + Ola + Local: 1 + + ); @@ -54,9 +70,9 @@ export default class Eventos extends React.Component { render() { return ( - - - + + + {this.renderFebrada()} @@ -78,16 +94,20 @@ const styles = StyleSheet.create({ }, scroll: { - flex: 1, + flex: 1, }, cardContainer: { flex: 1, padding: 10, margin: 20, - backgroundColor: 'white', + backgroundColor: '#fff', borderRadius: 5, - height: SCREEN_WIDTH * (1/2), + elevation: 2, + height: SCREEN_HEIGHT * 0.6, + + borderWidth: 2, + color: "#000" }, scene: { 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 From e24d3c3391affab04891b4cf50e49c9ae8ffa4e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Borges?= Date: Tue, 12 Mar 2019 22:51:17 +0000 Subject: [PATCH 2/5] Screen rally Screen eventos --- App/app/Router.js | 6 ++++++ App/app/assets/rallyTascas.jpg | Bin 0 -> 8808 bytes App/app/screens/Eventos.js | 25 ++++++++++++++++--------- 3 files changed, 22 insertions(+), 9 deletions(-) create mode 100644 App/app/assets/rallyTascas.jpg diff --git a/App/app/Router.js b/App/app/Router.js index 511994d6..96cd8c93 100755 --- a/App/app/Router.js +++ b/App/app/Router.js @@ -180,6 +180,12 @@ const Stack = createStackNavigator({ ) } } + else if (navigation.state.routes[index].routeName == 'Eventos') { + return { + headerTitle: 'Eventos', + } + + } else { return { header: null diff --git a/App/app/assets/rallyTascas.jpg b/App/app/assets/rallyTascas.jpg new file mode 100644 index 0000000000000000000000000000000000000000..05b309c17f1cd2854108b212d645c292b3ae37c9 GIT binary patch literal 8808 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

I2fB*9A*1Ok zfz#mNMdyIF82jiPboj6+`r8F`xsl#LkCPe;V0e5xYKwG>(_%BHr%7hO z&ZQExDrA+ucVx(ej(TLDO?@4^Fj!c2-)}Qi4RkbinML&jIzLe*EMI^mGhs3lg+pvt2~CNJ>vmQ)D)^jrp1W+}S#rZiF^L3=@kc(rukodadcUG4?|1Tb zUcElR_De)@{-)rp>yrp*DJ!{h;q@V){hW*pM61o+w(k{92_k_!@BAJ82shol7leqvM^Y;zwt2 ( ); @@ -37,11 +39,16 @@ export default class Eventos extends React.Component { renderFebrada = () => { return ( - - - Ola - Local: 1 + @@ -71,8 +78,8 @@ export default class Eventos extends React.Component { render() { return ( - - + + {this.renderFebrada()} @@ -99,13 +106,13 @@ const styles = StyleSheet.create({ cardContainer: { flex: 1, + flexDirection: 'row', padding: 10, margin: 20, backgroundColor: '#fff', borderRadius: 5, elevation: 2, - height: SCREEN_HEIGHT * 0.6, - + height: (SCREEN_WIDTH * (1 / 2)), borderWidth: 2, color: "#000" }, From 1ccc5d6ad366fb361ebc6674b9c1a4c40c96fe25 Mon Sep 17 00:00:00 2001 From: ZMiguel Alves Date: Thu, 14 Mar 2019 16:51:48 +0000 Subject: [PATCH 3/5] Auto stash before merge of "zmiguel" and "origin/master" --- api/Data/DataContext.cs | 2 ++ api/Models/Chromos.cs | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 api/Models/Chromos.cs diff --git a/api/Data/DataContext.cs b/api/Data/DataContext.cs index e6ac56e1..4e095ae8 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 Chromos {get;set;} public DbSetLogs{get;set;} diff --git a/api/Models/Chromos.cs b/api/Models/Chromos.cs new file mode 100644 index 00000000..8f5fd8e5 --- /dev/null +++ b/api/Models/Chromos.cs @@ -0,0 +1,16 @@ +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 DescPub{get;set;} //descrição geral nao visto + public String DescVis{get;set;} //descrição visto + + } +} \ No newline at end of file From 3bedefafb7d6be831fb957844525511fdb0c68ef Mon Sep 17 00:00:00 2001 From: ZMiguel Alves Date: Thu, 14 Mar 2019 16:52:49 +0000 Subject: [PATCH 4/5] cromos dbset --- api/Data/DataContext.cs | 2 +- api/Models/{Chromos.cs => Cromos.cs} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename api/Models/{Chromos.cs => Cromos.cs} (100%) diff --git a/api/Data/DataContext.cs b/api/Data/DataContext.cs index 4e095ae8..17668f27 100755 --- a/api/Data/DataContext.cs +++ b/api/Data/DataContext.cs @@ -22,7 +22,7 @@ namespace api.Data public DbSet EventLocsVisited {get;set;} - public DbSet Chromos {get;set;} + public DbSet Chromos {get;set;} public DbSetLogs{get;set;} diff --git a/api/Models/Chromos.cs b/api/Models/Cromos.cs similarity index 100% rename from api/Models/Chromos.cs rename to api/Models/Cromos.cs From 89d8bb558500f824b8dc7264fcc3e6bae7516c6b Mon Sep 17 00:00:00 2001 From: ZMiguel Alves Date: Thu, 14 Mar 2019 18:10:59 +0000 Subject: [PATCH 5/5] Cromos e QR Scan --- api/Controllers/CromosController.cs | 55 +++++++++++++++++++++++ api/Controllers/ScanController.cs | 68 +++++++++++++++++++++++++++++ api/Data/DataContext.cs | 2 +- api/Dtos/QRToScan.cs | 16 +++++++ api/Dtos/ScanReturn.cs | 16 +++++++ api/Dtos/UserForListDto.cs | 3 -- api/Models/Cromos.cs | 12 ++--- api/Models/User.cs | 2 + 8 files changed, 165 insertions(+), 9 deletions(-) create mode 100644 api/Controllers/CromosController.cs create mode 100644 api/Controllers/ScanController.cs create mode 100644 api/Dtos/QRToScan.cs create mode 100644 api/Dtos/ScanReturn.cs 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 17668f27..fbe73eb6 100755 --- a/api/Data/DataContext.cs +++ b/api/Data/DataContext.cs @@ -22,7 +22,7 @@ namespace api.Data public DbSet EventLocsVisited {get;set;} - public DbSet Chromos {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 index 8f5fd8e5..6848e8c9 100644 --- a/api/Models/Cromos.cs +++ b/api/Models/Cromos.cs @@ -6,11 +6,13 @@ 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 DescPub{get;set;} //descrição geral nao visto - public String DescVis{get;set;} //descrição visto + 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