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 e445080c..49137001 100755 Binary files a/api/obj/Debug/netcoreapp2.1/api.assets.cache and b/api/obj/Debug/netcoreapp2.1/api.assets.cache differ