Cromos e QR Scan

zmiguel
José Valdiviesso 3 years ago
parent 3bedefafb7
commit 89d8bb5585
  1. 55
      api/Controllers/CromosController.cs
  2. 68
      api/Controllers/ScanController.cs
  3. 2
      api/Data/DataContext.cs
  4. 16
      api/Dtos/QRToScan.cs
  5. 16
      api/Dtos/ScanReturn.cs
  6. 3
      api/Dtos/UserForListDto.cs
  7. 12
      api/Models/Cromos.cs
  8. 2
      api/Models/User.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<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<Cromos> Chromos {get;set;}
public DbSet<Cromos> Cromos {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 About{get;set;}
public string PhotoUrl{get;set;}
}
}

@ -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
}
}

@ -20,6 +20,8 @@ namespace api.Models
[ForeignKey("teamID")]
public Team team{get;set;}
public List<int> cromos {get;set;}
}
}
Loading…
Cancel
Save