From 633960e7db621977a02f27c754b9b3f5e2c81fb0 Mon Sep 17 00:00:00 2001 From: ZMiguel Alves Date: Thu, 7 Mar 2019 17:33:15 +0000 Subject: [PATCH] Rev. 1 Teams e Eventos --- api/Controllers/EventLocsController.cs | 17 +++++ api/Controllers/EventLocsVisitedController.cs | 39 +++++++++++ api/Controllers/EventsController.cs | 17 +++++ api/Controllers/TeamsController.cs | 62 ++++++++++++++++++ api/Data/EventLocsRepository.cs | 11 +++- api/Data/IEventLocsRepository.cs | 2 +- api/Dtos/EventForAdd.cs | 16 +++++ api/Dtos/EventLocAdd.cs | 28 ++++++++ api/Dtos/EventLocVisitedAdd.cs | 20 ++++++ api/Dtos/TeamChangeName.cs | 21 ++++++ api/Dtos/TeamDelete.cs | 17 +++++ api/Dtos/TeamRemoveMember.cs | 20 ++++++ api/obj/Debug/netcoreapp2.1/api.assets.cache | Bin 133820 -> 130703 bytes 13 files changed, 267 insertions(+), 3 deletions(-) create mode 100644 api/Dtos/EventForAdd.cs create mode 100644 api/Dtos/EventLocAdd.cs create mode 100644 api/Dtos/EventLocVisitedAdd.cs create mode 100644 api/Dtos/TeamChangeName.cs create mode 100644 api/Dtos/TeamDelete.cs create mode 100644 api/Dtos/TeamRemoveMember.cs diff --git a/api/Controllers/EventLocsController.cs b/api/Controllers/EventLocsController.cs index 57d5052c..fa3345e8 100644 --- a/api/Controllers/EventLocsController.cs +++ b/api/Controllers/EventLocsController.cs @@ -57,5 +57,22 @@ namespace api.Controllers var Teams = await _repo.GetEventLocEvent(id); return Ok(Teams); } + + // POST api/eventLocs/add + // add new event + [HttpPost("add")] + public async Task AddEventLoc(EventLocAdd EventLocData) + { + EventLoc EAdd = new EventLoc{EventId = EventLocData.EventId, Lat = EventLocData.Lat, Long = EventLocData.Long, Nome = EventLocData.Nome, Desc = EventLocData.Desc, Img = EventLocData.Img}; + await context.EventLocs.AddAsync(EAdd); + + var result = context.SaveChanges(); + + if (result == 1) + { + return StatusCode(201); + } + return BadRequest(); + } } } diff --git a/api/Controllers/EventLocsVisitedController.cs b/api/Controllers/EventLocsVisitedController.cs index 5c20c04a..236b6c3f 100644 --- a/api/Controllers/EventLocsVisitedController.cs +++ b/api/Controllers/EventLocsVisitedController.cs @@ -60,5 +60,44 @@ namespace api.Controllers return Ok(Locs); } + + // POST api/eventLocsVisited/add + // add new event + [HttpPost("add")] + public async Task AddEventLoc(EventLocVisitedAdd EventLocVisitedData) + { + + List uTeam = await context.Teams.Include(t=>t.Membros).ToListAsync(); + EventLoc Loc = await context.EventLocs.FirstOrDefaultAsync(a=>a.Id == EventLocVisitedData.EventLocID); + + Team TeamToEdit = new Team(); + + uTeam.ForEach(delegate (Team t){ + if(t.EventId == Loc.EventId){ + t.Membros.ForEach(delegate (User u){ + if(u.QRcode == EventLocVisitedData.USerQR){ + TeamToEdit = t; + } + }); + } + }); + + TeamToEdit.Pontos += EventLocVisitedData.pontos; + + EventLocVisited toAdd = new EventLocVisited{Team = TeamToEdit,Location = Loc, timestamp = DateTime.Now}; + + await context.EventLocsVisited.AddAsync(toAdd); + + context.Teams.Update(TeamToEdit); + + var result = context.SaveChanges(); + + if (result >= 1) + { + return StatusCode(201); + } + return BadRequest(); + } + } } diff --git a/api/Controllers/EventsController.cs b/api/Controllers/EventsController.cs index 7383d0db..36a8458f 100644 --- a/api/Controllers/EventsController.cs +++ b/api/Controllers/EventsController.cs @@ -46,5 +46,22 @@ namespace api.Controllers var Event = await _repo.GetEvent(id); return Ok(Event); } + + // POST api/events/add + // add new event + [HttpPost("add")] + public async Task AddEvent(EventForAdd EventData) + { + Event EAdd = new Event{Nome = EventData.Nome,Desc = EventData.Desc}; + await context.Events.AddAsync(EAdd); + + var result = context.SaveChanges(); + + if (result == 1) + { + return StatusCode(201); + } + return BadRequest(); + } } } diff --git a/api/Controllers/TeamsController.cs b/api/Controllers/TeamsController.cs index 2f85886d..4aa50c2c 100644 --- a/api/Controllers/TeamsController.cs +++ b/api/Controllers/TeamsController.cs @@ -106,5 +106,67 @@ namespace api.Controllers return StatusCode(201); } + + // POST api/teams/ChangeName + // create team + [HttpPost("changename")] + public async Task ChangeName(TeamChangeName NameChange) + { + + Team tEdit = await context.Teams.Include(t=>t.Cap).FirstOrDefaultAsync(t=>t.Id == NameChange.TeamID); + + User cap = await context.Users.FirstOrDefaultAsync(u=>u.QRcode == NameChange.UserQR); + + if(cap == tEdit.Cap){ + tEdit.Nome = NameChange.nome; + } + + context.Update(tEdit); + + var result = context.SaveChanges(); + + return StatusCode(201); + + } + + // POST api/teams/delete + // create team + [HttpPost("delete")] + public async Task DeleteTeam(TeamDelete DeleteData) + { + + Team tEdit = await context.Teams.Include(t=>t.Cap).FirstOrDefaultAsync(t=>t.Id == DeleteData.TeamID); + + User cap = await context.Users.FirstOrDefaultAsync(u=>u.QRcode == DeleteData.UserQR); + + if(cap == tEdit.Cap){ + context.Remove(tEdit); + var result = context.SaveChanges(); + return StatusCode(201); + }else{ + return StatusCode(403); + } + } + + // POST api/teams/remove/member + // remove member + [HttpPost("remove/member")] + public async Task RemoveTeamMember(TeamRemoveMEmber MemberToRemove) + { + + User rmMember = await context.Users.FirstOrDefaultAsync(u=>u.QRcode == MemberToRemove.UserToRemoveQR); + + Team tEdit = await context.Teams.Include(t=>t.Membros).FirstOrDefaultAsync(t=>t.Id == MemberToRemove.TeamID); + + tEdit.NMembros--; + tEdit.Membros.Remove(rmMember); + + context.Update(tEdit); + + var result = context.SaveChanges(); + + return StatusCode(201); + + } } } diff --git a/api/Data/EventLocsRepository.cs b/api/Data/EventLocsRepository.cs index 629cc7d3..c4b22884 100644 --- a/api/Data/EventLocsRepository.cs +++ b/api/Data/EventLocsRepository.cs @@ -23,9 +23,16 @@ namespace api.Data return rEventLocs; } - public async Task GetEventLocEvent(int id) + public async Task> GetEventLocEvent(int id) { - var rEventLocs = await _context.EventLocs.FirstOrDefaultAsync(e=>e.EventId == id); + List eLocs = await _context.EventLocs.ToListAsync(); + List rEventLocs = new List(); + + eLocs.ForEach(delegate (EventLoc e){ + if(e.EventId == id){ + rEventLocs.Add(e); + } + }); return rEventLocs; } diff --git a/api/Data/IEventLocsRepository.cs b/api/Data/IEventLocsRepository.cs index b73877d5..d8b60e05 100644 --- a/api/Data/IEventLocsRepository.cs +++ b/api/Data/IEventLocsRepository.cs @@ -9,7 +9,7 @@ namespace api.Data Task> GetEventLocs(); Task GetEventLoc(int id); - Task GetEventLocEvent(int id); + Task> GetEventLocEvent(int id); } diff --git a/api/Dtos/EventForAdd.cs b/api/Dtos/EventForAdd.cs new file mode 100644 index 00000000..8c23d5f9 --- /dev/null +++ b/api/Dtos/EventForAdd.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using api.Models; + +namespace api.Dtos +{ + public class EventForAdd + { + [Required] + public string Nome{get;set;} //equipa id + + [Required] + public string Desc{get;set;} //novo membro + } +} \ No newline at end of file diff --git a/api/Dtos/EventLocAdd.cs b/api/Dtos/EventLocAdd.cs new file mode 100644 index 00000000..1a1b1163 --- /dev/null +++ b/api/Dtos/EventLocAdd.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using api.Models; + +namespace api.Dtos +{ + public class EventLocAdd + { + [Required] + public int EventId{get;set;} //Event ID + + [Required] + public float Lat{get;set;} //latitude + + [Required] + public float Long{get;set;} //longitude + + [Required] + public String Nome{get;set;} //Nome da localização + + [Required] + public String Desc{get;set;} //Descrição + + + public Photo Img{get;set;} //Foto da localização + } +} \ No newline at end of file diff --git a/api/Dtos/EventLocVisitedAdd.cs b/api/Dtos/EventLocVisitedAdd.cs new file mode 100644 index 00000000..87edbdc9 --- /dev/null +++ b/api/Dtos/EventLocVisitedAdd.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using api.Models; + +namespace api.Dtos +{ + public class EventLocVisitedAdd + { + [Required] + public String USerQR{get;set;} //User ID + + [Required] + public int EventLocID{get;set;} //Loc id + + [Required] + public int pontos{get;set;} //Pontos a adicionar + + } +} \ No newline at end of file diff --git a/api/Dtos/TeamChangeName.cs b/api/Dtos/TeamChangeName.cs new file mode 100644 index 00000000..33f5174a --- /dev/null +++ b/api/Dtos/TeamChangeName.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using api.Models; + +namespace api.Dtos +{ + public class TeamChangeName + { + [Required] + public int TeamID{get;set;} //teamid + + [Required] + public string nome{get;set;} //novo nome + + + [Required] + public string UserQR{get;set;} //user qr + + } +} \ No newline at end of file diff --git a/api/Dtos/TeamDelete.cs b/api/Dtos/TeamDelete.cs new file mode 100644 index 00000000..578d665d --- /dev/null +++ b/api/Dtos/TeamDelete.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using api.Models; + +namespace api.Dtos +{ + public class TeamDelete + { + [Required] + public int TeamID{get;set;} //teamid + + [Required] + public string UserQR{get;set;} //user qr + + } +} \ No newline at end of file diff --git a/api/Dtos/TeamRemoveMember.cs b/api/Dtos/TeamRemoveMember.cs new file mode 100644 index 00000000..dca243db --- /dev/null +++ b/api/Dtos/TeamRemoveMember.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using api.Models; + +namespace api.Dtos +{ + public class TeamRemoveMEmber + { + [Required] + public int TeamID{get;set;} //teamid + + [Required] + public string UserQR{get;set;} //user qr + + [Required] + public string UserToRemoveQR{get;set;} //user qr + + } +} \ No newline at end of file diff --git a/api/obj/Debug/netcoreapp2.1/api.assets.cache b/api/obj/Debug/netcoreapp2.1/api.assets.cache index e445080c4a5d97600d8c6fc8c69d2dc856b3c451..49137001effbd5c8397b707dcd3afba682fbd7a9 100755 GIT binary patch delta 3227 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 OzQ2$NU+6HYUGytSyc;M0