Skip to content
This repository was archived by the owner on Jul 10, 2024. It is now read-only.

Commit e403c4c

Browse files
davidfowlDamianEdwards
authored andcommitted
Updated save points
1 parent 31a2a1b commit e403c4c

File tree

118 files changed

+11248
-18329
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

118 files changed

+11248
-18329
lines changed

save-points/5-User-association-and-personal-agenda/ConferencePlanner/BackEnd/BackEnd.csproj

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
1-
<Project Sdk="Microsoft.NET.Sdk.Web">
1+
<Project Sdk="Microsoft.NET.Sdk.Web">
22

33
<PropertyGroup>
4-
<TargetFramework>netcoreapp2.2</TargetFramework>
5-
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
6-
</PropertyGroup>
7-
4+
<TargetFramework>netcoreapp3.0</TargetFramework>
5+
</PropertyGroup>
86
<ItemGroup>
9-
<PackageReference Include="Microsoft.AspNetCore.App" />
10-
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
11-
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.2.1" />
12-
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.0" />
13-
<PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" />
7+
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.2.4" />
8+
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.2.4" />
9+
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.4">
10+
<PrivateAssets>all</PrivateAssets>
11+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
12+
</PackageReference>
13+
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.0.0-preview5-19264-04">
14+
<PrivateAssets>all</PrivateAssets>
15+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
16+
</PackageReference>
17+
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.0.0-rc2" />
1418
</ItemGroup>
15-
19+
1620
<ItemGroup>
1721
<ProjectReference Include="..\ConferenceDTO\ConferenceDTO.csproj" />
1822
</ItemGroup>

save-points/5-User-association-and-personal-agenda/ConferencePlanner/BackEnd/Controllers/AttendeesController.cs

Lines changed: 37 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,25 @@
77
using Microsoft.AspNetCore.Http;
88
using ConferenceDTO;
99

10-
namespace BackEnd
10+
namespace BackEnd.Controllers
1111
{
1212
[Route("/api/[controller]")]
1313
[ApiController]
1414
public class AttendeesController : ControllerBase
1515
{
16-
private readonly ApplicationDbContext _db;
16+
private readonly ApplicationDbContext _context;
1717

18-
public AttendeesController(ApplicationDbContext db)
18+
public AttendeesController(ApplicationDbContext context)
1919
{
20-
_db = db;
20+
_context = context;
2121
}
2222

23-
[HttpGet("{id}")]
24-
public async Task<ActionResult<AttendeeResponse>> Get(string id)
23+
[HttpGet("{username}")]
24+
public async Task<ActionResult<AttendeeResponse>> Get(string username)
2525
{
26-
var attendee = await _db.Attendees.Include(a => a.SessionsAttendees)
26+
var attendee = await _context.Attendees.Include(a => a.SessionsAttendees)
2727
.ThenInclude(sa => sa.Session)
28-
.SingleOrDefaultAsync(a => a.UserName == id);
28+
.SingleOrDefaultAsync(a => a.UserName == username);
2929

3030
if (attendee == null)
3131
{
@@ -37,13 +37,26 @@ public async Task<ActionResult<AttendeeResponse>> Get(string id)
3737
return result;
3838
}
3939

40+
[HttpGet("{username}/sessions")]
41+
public async Task<ActionResult<List<SessionResponse>>> GetSessions(string username)
42+
{
43+
var sessions = await _context.Sessions.AsNoTracking()
44+
.Include(s => s.Track)
45+
.Include(s => s.SessionSpeakers)
46+
.ThenInclude(ss => ss.Speaker)
47+
.Where(s => s.SessionAttendees.Any(sa => sa.Attendee.UserName == username))
48+
.Select(m => m.MapSessionResponse())
49+
.ToListAsync();
50+
return sessions;
51+
}
52+
4053
[HttpPost]
4154
[ProducesResponseType(StatusCodes.Status201Created)]
4255
[ProducesResponseType(StatusCodes.Status409Conflict)]
4356
public async Task<ActionResult<AttendeeResponse>> Post(ConferenceDTO.Attendee input)
4457
{
4558
// Check if the attendee already exists
46-
var existingAttendee = await _db.Attendees
59+
var existingAttendee = await _context.Attendees
4760
.Where(a => a.UserName == input.UserName)
4861
.FirstOrDefaultAsync();
4962

@@ -60,33 +73,31 @@ public async Task<ActionResult<AttendeeResponse>> Post(ConferenceDTO.Attendee in
6073
EmailAddress = input.EmailAddress
6174
};
6275

63-
_db.Attendees.Add(attendee);
64-
await _db.SaveChangesAsync();
76+
_context.Attendees.Add(attendee);
77+
await _context.SaveChangesAsync();
6578

6679
var result = attendee.MapAttendeeResponse();
6780

68-
return CreatedAtAction(nameof(Get), new { id = result.UserName }, result);
81+
return CreatedAtAction(nameof(Get), new { username = result.UserName }, result);
6982
}
7083

71-
[HttpPost("{username}/session/{sessionId:int}")]
84+
[HttpPost("{username}/session/{sessionId}")]
7285
[ProducesResponseType(StatusCodes.Status200OK)]
7386
[ProducesResponseType(StatusCodes.Status400BadRequest)]
7487
[ProducesResponseType(StatusCodes.Status404NotFound)]
7588
[ProducesDefaultResponseType]
7689
public async Task<ActionResult<AttendeeResponse>> AddSession(string username, int sessionId)
7790
{
78-
var attendee = await _db.Attendees.Include(a => a.SessionsAttendees)
91+
var attendee = await _context.Attendees.Include(a => a.SessionsAttendees)
7992
.ThenInclude(sa => sa.Session)
80-
.Include(a => a.ConferenceAttendees)
81-
.ThenInclude(ca => ca.Conference)
8293
.SingleOrDefaultAsync(a => a.UserName == username);
8394

8495
if (attendee == null)
8596
{
8697
return NotFound();
8798
}
8899

89-
var session = await _db.Sessions.FindAsync(sessionId);
100+
var session = await _context.Sessions.FindAsync(sessionId);
90101

91102
if (session == null)
92103
{
@@ -95,45 +106,45 @@ public async Task<ActionResult<AttendeeResponse>> AddSession(string username, in
95106

96107
attendee.SessionsAttendees.Add(new SessionAttendee
97108
{
98-
AttendeeID = attendee.ID,
99-
SessionID = sessionId
109+
AttendeeId = attendee.Id,
110+
SessionId = sessionId
100111
});
101112

102-
await _db.SaveChangesAsync();
113+
await _context.SaveChangesAsync();
103114

104115
var result = attendee.MapAttendeeResponse();
105116

106117
return result;
107118
}
108119

109-
[HttpDelete("{username}/session/{sessionId:int}")]
120+
[HttpDelete("{username}/session/{sessionId}")]
110121
[ProducesResponseType(StatusCodes.Status204NoContent)]
111122
[ProducesResponseType(StatusCodes.Status400BadRequest)]
112123
[ProducesResponseType(StatusCodes.Status404NotFound)]
113124
[ProducesDefaultResponseType]
114125
public async Task<IActionResult> RemoveSession(string username, int sessionId)
115126
{
116-
var attendee = await _db.Attendees.Include(a => a.SessionsAttendees)
127+
var attendee = await _context.Attendees.Include(a => a.SessionsAttendees)
117128
.SingleOrDefaultAsync(a => a.UserName == username);
118129

119130
if (attendee == null)
120131
{
121132
return NotFound();
122133
}
123134

124-
var session = await _db.Sessions.FindAsync(sessionId);
135+
var session = await _context.Sessions.FindAsync(sessionId);
125136

126137
if (session == null)
127138
{
128139
return BadRequest();
129140
}
130141

131-
var sessionAttendee = attendee.SessionsAttendees.FirstOrDefault(sa => sa.SessionID == sessionId);
142+
var sessionAttendee = attendee.SessionsAttendees.FirstOrDefault(sa => sa.SessionId == sessionId);
132143
attendee.SessionsAttendees.Remove(sessionAttendee);
133144

134-
await _db.SaveChangesAsync();
145+
await _context.SaveChangesAsync();
135146

136147
return NoContent();
137148
}
138149
}
139-
}
150+
}

save-points/5-User-association-and-personal-agenda/ConferencePlanner/BackEnd/Controllers/ConferencesController.cs

Lines changed: 0 additions & 146 deletions
This file was deleted.

0 commit comments

Comments
 (0)