From 9ab9040a393f804d1c8b93606383bdc2741ad6ce Mon Sep 17 00:00:00 2001 From: fixterjake Date: Sat, 29 Mar 2025 10:53:11 -0400 Subject: [PATCH] staff page --- Memphis.API/Controllers/UsersController.cs | 72 ++++++++++++++++++++++ Memphis.Shared/Dtos/StaffDto.cs | 51 ++++++++++----- 2 files changed, 106 insertions(+), 17 deletions(-) diff --git a/Memphis.API/Controllers/UsersController.cs b/Memphis.API/Controllers/UsersController.cs index 2044c6a..a0ab95a 100644 --- a/Memphis.API/Controllers/UsersController.cs +++ b/Memphis.API/Controllers/UsersController.cs @@ -64,4 +64,76 @@ public async Task>>> GetRoster() return _sentryHub.CaptureException(ex).ReturnActionResult(); } } + + [HttpGet("Staff")] + [ProducesResponseType(typeof(Response), 200)] + [ProducesResponseType(typeof(Response), 500)] + public async Task>> GetStaff() + { + try + { + var atm = await _context.Users.Include(x => x.Roles).Where(x => x.Roles!.Any(r => r.NameShort == "ATM")).FirstOrDefaultAsync(); + var datm = await _context.Users.Include(x => x.Roles).Where(x => x.Roles!.Any(r => r.NameShort == "DATM")).FirstOrDefaultAsync(); + var ta = await _context.Users.Include(x => x.Roles).Where(x => x.Roles!.Any(r => r.NameShort == "TA")).FirstOrDefaultAsync(); + var ata = await _context.Users.Include(x => x.Roles).Where(x => x.Roles!.Any(r => r.NameShort == "ATA")).FirstOrDefaultAsync(); + var wm = await _context.Users.Include(x => x.Roles).Where(x => x.Roles!.Any(r => r.NameShort == "WM")).FirstOrDefaultAsync(); + var awm = await _context.Users.Include(x => x.Roles).Where(x => x.Roles!.Any(r => r.NameShort == "AWM")).FirstOrDefaultAsync(); + var webTeam = await _context.Users.Include(x => x.Roles).Where(x => x.Roles!.Any(r => r.NameShort == "WEB")).ToListAsync(); + var ec = await _context.Users.Include(x => x.Roles).Where(x => x.Roles!.Any(r => r.NameShort == "EC")).FirstOrDefaultAsync(); + var aec = await _context.Users.Include(x => x.Roles).Where(x => x.Roles!.Any(r => r.NameShort == "AEC")).FirstOrDefaultAsync(); + var eventsTeam = await _context.Users.Include(x => x.Roles).Where(x => x.Roles!.Any(r => r.NameShort == "EVENTS")).ToListAsync(); + var fe = await _context.Users.Include(x => x.Roles).Where(x => x.Roles!.Any(r => r.NameShort == "FE")).FirstOrDefaultAsync(); + var afe = await _context.Users.Include(x => x.Roles).Where(x => x.Roles!.Any(r => r.NameShort == "AFE")).FirstOrDefaultAsync(); + var facilitiesTeam = await _context.Users.Include(x => x.Roles).Where(x => x.Roles!.Any(r => r.NameShort == "FACILITIES")).ToListAsync(); + var socialMediaTeam = await _context.Users.Include(x => x.Roles).Where(x => x.Roles!.Any(r => r.NameShort == "SOCIAL")).ToListAsync(); + var ins = await _context.Users.Include(x => x.Roles).Where(x => x.Roles!.Any(r => r.NameShort == "INS")).ToListAsync(); + var mtr = await _context.Users.Include(x => x.Roles).Where(x => x.Roles!.Any(r => r.NameShort == "MTR")).ToListAsync(); + + return Ok(new Response + { + StatusCode = 200, + Message = "Got staff", + Data = new StaffResponseDto + { + Atm = atm != null ? $"{atm.FirstName} {atm.LastName}" : null, + AtmEmail = "atm@memphisartcc.com", + Datm = datm != null ? $"{datm.FirstName} {datm.LastName}" : null, + DatmEmail = "datm@memphisartcc.com", + Ta = ta != null ? $"{ta.FirstName} {ta.LastName}" : null, + TaEmail = "ta@memphisartcc.com", + Ata = ata != null ? $"{ata.FirstName} {ata.LastName}" : null, + AtaEmail = "ata@memphisartcc.com", + Wm = wm != null ? $"{wm.FirstName} {wm.LastName}" : null, + WmEmail = "wm@memphisartcc.com", + Awm = awm != null ? $"{awm.FirstName} {awm.LastName}" : null, + AwmEmail = "awm@memphisartcc.com", + WebTeam = webTeam.Select(x => $"{x.FirstName} {x.LastName}").ToList(), + WebTeamEmail = "web@memphisartcc.com", + Ec = ec != null ? $"{ec.FirstName} {ec.LastName}" : null, + EcEmail = "ec@memphisartcc.com", + Aec = aec != null ? $"{aec.FirstName} {aec.LastName}" : null, + AecEmail = "aec@memphisartcc.com", + EventsTeam = eventsTeam.Select(x => $"{x.FirstName} {x.LastName}").ToList(), + EventsTeamEmail = "events@memphisartcc.com", + Fe = fe != null ? $"{fe.FirstName} {fe.LastName}" : null, + FeEmail = "fe@memphisartcc.com", + Afe = afe != null ? $"{afe.FirstName} {afe.LastName}" : null, + AfeEmail = "afe@memphisartcc.com", + FacilitiesTeam = facilitiesTeam.Select(x => $"{x.FirstName} {x.LastName}").ToList(), + FacilitiesTeamEmail = "facilities@memphisartcc.com", + SocialMediaTeam = socialMediaTeam.Select(x => $"{x.FirstName} {x.LastName}").ToList(), + SocialMediaTeamEmail = "socialmedia@memphisartcc.com", + Ins = ins.Select(x => $"{x.FirstName} {x.LastName}").ToList(), + InsEmail = "instructors@memphisartcc.com", + Mtr = mtr.Select(x => $"{x.FirstName} {x.LastName}").ToList(), + MtrEmail = "mentors@memphisartcc.com", + } + }); + } + catch (Exception ex) + { + _logger.LogError("GetStaff error '{Message}'\n{StackTrace}", ex.Message, ex.StackTrace); + return _sentryHub.CaptureException(ex).ReturnActionResult(); + } + } } diff --git a/Memphis.Shared/Dtos/StaffDto.cs b/Memphis.Shared/Dtos/StaffDto.cs index 55800da..ea0bc38 100644 --- a/Memphis.Shared/Dtos/StaffDto.cs +++ b/Memphis.Shared/Dtos/StaffDto.cs @@ -1,21 +1,38 @@ namespace Memphis.Shared.Dtos; -public class StaffDto + +public class StaffResponseDto { - public RosterUserDto? ATM { get; set; } - public RosterUserDto? DATM { get; set; } - public RosterUserDto? TA { get; set; } - public RosterUserDto? ATA { get; set; } - public RosterUserDto? WM { get; set; } - public RosterUserDto? AWM { get; set; } - public RosterUserDto? WebTeam { get; set; } - public RosterUserDto? EC { get; set; } - public RosterUserDto? AEC { get; set; } - public RosterUserDto? EventsTeam { get; set; } - public RosterUserDto? FE { get; set; } - public RosterUserDto? AFE { get; set; } - public RosterUserDto? FacilitiesTeam { get; set; } - public RosterUserDto? SocialMediaTeam { get; set; } - public RosterUserDto? INS { get; set; } - public RosterUserDto? MTR { get; set; } + public string? Atm { get; set; } + public string? AtmEmail { get; set; } + public string? Datm { get; set; } + public string? DatmEmail { get; set; } + public string? Ta { get; set; } + public string? TaEmail { get; set; } + public string? Ata { get; set; } + public string? AtaEmail { get; set; } + public string? Wm { get; set; } + public string? WmEmail { get; set; } + public string? Awm { get; set; } + public string? AwmEmail { get; set; } + public IList? WebTeam { get; set; } + public string? WebTeamEmail { get; set; } + public string? Ec { get; set; } + public string? EcEmail { get; set; } + public string? Aec { get; set; } + public string? AecEmail { get; set; } + public IList? EventsTeam { get; set; } + public string? EventsTeamEmail { get; set; } + public string? Fe { get; set; } + public string? FeEmail { get; set; } + public string? Afe { get; set; } + public string? AfeEmail { get; set; } + public IList? FacilitiesTeam { get; set; } + public string? FacilitiesTeamEmail { get; set; } + public IList? SocialMediaTeam { get; set; } + public string? SocialMediaTeamEmail { get; set; } + public IList? Ins { get; set; } + public string? InsEmail { get; set; } + public IList? Mtr { get; set; } + public string? MtrEmail { get; set; } }