Cromos e QR Scan
This commit is contained in:
parent
3bedefafb7
commit
89d8bb5585
|
@ -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<List<Cromos>> GetCromos(string QR)
|
||||||
|
{
|
||||||
|
var usr = await context.Users.Include(a=>a.cromos).FirstOrDefaultAsync(u=>u.QRcode == QR);
|
||||||
|
var allCromos = await context.Cromos.ToListAsync();
|
||||||
|
|
||||||
|
List<Cromos> rList = new List<Cromos>();
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -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<ScanReturn> 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -22,7 +22,7 @@ namespace api.Data
|
||||||
|
|
||||||
public DbSet<EventLocVisited> EventLocsVisited {get;set;}
|
public DbSet<EventLocVisited> EventLocsVisited {get;set;}
|
||||||
|
|
||||||
public DbSet<Cromos> Chromos {get;set;}
|
public DbSet<Cromos> Cromos {get;set;}
|
||||||
|
|
||||||
public DbSet<Log>Logs{get;set;}
|
public DbSet<Log>Logs{get;set;}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
|
@ -18,8 +18,5 @@ namespace api.Dtos
|
||||||
public string ProfileIcon {get;set;}
|
public string ProfileIcon {get;set;}
|
||||||
public string About{get;set;}
|
public string About{get;set;}
|
||||||
public string PhotoUrl{get;set;}
|
public string PhotoUrl{get;set;}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -6,11 +6,13 @@ namespace api.Models
|
||||||
{
|
{
|
||||||
public class Cromos
|
public class Cromos
|
||||||
{
|
{
|
||||||
public int Id{get;set;} //id
|
public int Id{get;set;} //id
|
||||||
public String QRCode{get;set;} //QR
|
public String QRCode{get;set;} //QR
|
||||||
public String Nome{get;set;} //Nome
|
public String Nome{get;set;} //Nome
|
||||||
public String DescPub{get;set;} //descrição geral nao visto
|
public String DescLocked{get;set;} //descrição nao visto
|
||||||
public String DescVis{get;set;} //descrição visto
|
public String DescUnlocked{get;set;}//descrição visto
|
||||||
|
public String DescMostrar{get;set;} //descrição a mostrar
|
||||||
|
public Photo img {get;set;} //imagem
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -21,5 +21,7 @@ namespace api.Models
|
||||||
[ForeignKey("teamID")]
|
[ForeignKey("teamID")]
|
||||||
public Team team{get;set;}
|
public Team team{get;set;}
|
||||||
|
|
||||||
|
public List<int> cromos {get;set;}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue