#region using System; using System.Collections.Generic; using System.Linq; using Microsoft.AspNetCore.Mvc; using MySql.Data.MySqlClient; using website.Models.signups; #endregion namespace website.Controllers { [ApiController] [Route("[controller]")] public class SignupController : ControllerBase { [HttpGet("~/admin/signup/get")] public ActionResult get(int signupId) { MySqlConnection cnn; try { cnn = Utilities.getConnection(); } catch (MySqlException e) { Console.WriteLine(e); return StatusCode(531, null); } try { cnn.Open(); } catch (MySqlException e) { Console.WriteLine(e); return StatusCode(532, null); } MySqlCommand cmd = new("SELECT * FROM san_antonio_senior_golf.signups WHERE signupId=@signupId", cnn); cmd.Parameters.AddWithValue("@signupId", signupId); MySqlDataReader rdr = cmd.ExecuteReader(); Signup signup = null; while (rdr.Read()) signup = new Signup { signupId = rdr.GetInt32("signupId"), eventId = rdr.GetInt32("eventId"), firstName = rdr.GetString("firstName"), lastName = rdr.GetString("lastName") }; cnn.Close(); return signup == null ? StatusCode(204, null) : StatusCode(200, signup); } [HttpGet("~/admin/signup/getAll")] public ActionResult> getAll() { MySqlConnection cnn; try { cnn = Utilities.getConnection(); } catch (MySqlException e) { Console.WriteLine(e); return StatusCode(531, null); } try { cnn.Open(); } catch (MySqlException e) { Console.WriteLine(e); return StatusCode(532, null); } MySqlCommand cmd = new("SELECT * FROM san_antonio_senior_golf.signups", cnn); MySqlDataReader rdr = cmd.ExecuteReader(); List signups = new(); while (rdr.Read()) signups.Add(new Signup { signupId = rdr.GetInt32("signupId"), eventId = rdr.GetInt32("eventId"), firstName = rdr.GetString("firstName"), lastName = rdr.GetString("lastName") }); cnn.Close(); return signups.Count == 0 ? StatusCode(204, null) : StatusCode(200, signups); } [HttpGet("~/admin/signup/getAllCsv.csv")] public string getAllCsv() { MySqlConnection cnn; try { cnn = Utilities.getConnection(); } catch (MySqlException e) { Console.WriteLine(e); return null; } try { cnn.Open(); } catch (MySqlException e) { Console.WriteLine(e); return null; } MySqlCommand cmd = new( "select signupId, e.eventId, date, time, location, firstName, lastName from signups join events e on e.eventId = signups.eventId ", cnn); MySqlDataReader rdr = cmd.ExecuteReader(); List signups = new(); while (rdr.Read()) signups.Add(new SignupCsv { signupId = rdr.GetInt32("signupId"), eventId = rdr.GetInt32("eventId"), date = rdr.GetDateTime("date"), time = rdr.IsDBNull(3) ? null : rdr.GetTimeSpan("time"), location = rdr.GetString("location"), firstName = rdr.GetString("firstName"), lastName = rdr.GetString("lastName") }); cnn.Close(); string result = "signupId,eventId,date,time,location,firstName,lastName\n" + string.Join("\n", signups.Select(x => x.ToString()).ToArray()) + "\n"; return result; } [HttpGet("~/admin/signup/getForEvent")] public ActionResult> getForEvent(int eventId) { MySqlConnection cnn; try { cnn = Utilities.getConnection(); } catch (MySqlException e) { Console.WriteLine(e); return StatusCode(531, null); } try { cnn.Open(); } catch (MySqlException e) { Console.WriteLine(e); return StatusCode(532, null); } MySqlCommand cmd = new("SELECT * FROM san_antonio_senior_golf.signups WHERE eventId=@eventId", cnn); cmd.Parameters.AddWithValue("@eventId", eventId); MySqlDataReader rdr = cmd.ExecuteReader(); List signups = new(); while (rdr.Read()) signups.Add(new Signup { signupId = rdr.GetInt32("signupId"), eventId = rdr.GetInt32("eventId"), firstName = rdr.GetString("firstName"), lastName = rdr.GetString("lastName") }); cnn.Close(); return signups.Count == 0 ? StatusCode(204, null) : StatusCode(200, signups); } [HttpGet("~/admin/signup/getForPeople")] public ActionResult> getForPeople(string firstName, string lastName) { MySqlConnection cnn; try { cnn = Utilities.getConnection(); } catch (MySqlException e) { Console.WriteLine(e); return StatusCode(531, null); } try { cnn.Open(); } catch (MySqlException e) { Console.WriteLine(e); return StatusCode(532, null); } MySqlCommand cmd = new("SELECT * FROM san_antonio_senior_golf.signups WHERE firstName=@firstName AND lastName=@lastName", cnn); cmd.Parameters.AddWithValue("@firstName", firstName); cmd.Parameters.AddWithValue("@lastName", lastName); MySqlDataReader rdr = cmd.ExecuteReader(); List signups = new(); while (rdr.Read()) signups.Add(new Signup { signupId = rdr.GetInt32("signupId"), eventId = rdr.GetInt32("eventId"), firstName = rdr.GetString("firstName"), lastName = rdr.GetString("lastName") }); cnn.Close(); return signups.Count == 0 ? StatusCode(204, null) : StatusCode(200, signups); } [HttpPost("~/signup/create")] public ActionResult create([FromBody] Signup signup) { MySqlConnection cnn; try { cnn = Utilities.getConnection(); } catch (MySqlException e) { Console.WriteLine(e); return StatusCode(531); } try { cnn.Open(); } catch (MySqlException e) { Console.WriteLine(e); return StatusCode(532); } MySqlCommand cmd = new( "INSERT INTO san_antonio_senior_golf.signups (eventId, firstName, lastName)VALUES (@eventId, @firstName, @lastName);" , cnn); cmd.Parameters.AddWithValue("@eventId", signup.eventId); cmd.Parameters.AddWithValue("@firstName", signup.firstName); cmd.Parameters.AddWithValue("@lastName", signup.lastName); try { cmd.ExecuteNonQuery(); } catch (MySqlException) { return StatusCode(434); } cnn.Close(); return NoContent(); } [HttpDelete("~/signup/delete")] public ActionResult delete([FromBody] Signup signup) { MySqlConnection cnn; try { cnn = Utilities.getConnection(); } catch (MySqlException e) { Console.WriteLine(e); return StatusCode(531); } try { cnn.Open(); } catch (MySqlException e) { Console.WriteLine(e); return StatusCode(532); } MySqlCommand cmd = new( "DELETE FROM san_antonio_senior_golf.signups WHERE eventId=@eventId AND firstName=@firstName AND lastName=@lastName;" , cnn); cmd.Parameters.AddWithValue("@eventId", signup.eventId); cmd.Parameters.AddWithValue("@firstName", signup.firstName); cmd.Parameters.AddWithValue("@lastName", signup.lastName); try { cmd.ExecuteNonQuery(); } catch (MySqlException) { return BadRequest(); } cnn.Close(); return NoContent(); } [HttpDelete("~/admin/signup/delete")] public IActionResult delete(int signupId) { MySqlConnection cnn; try { cnn = Utilities.getConnection(); } catch (MySqlException e) { Console.WriteLine(e); return StatusCode(531); } try { cnn.Open(); } catch (MySqlException e) { Console.WriteLine(e); return StatusCode(532); } MySqlCommand cmd = new( "DELETE FROM san_antonio_senior_golf.signups WHERE signupId=@signupId;", cnn); cmd.Parameters.AddWithValue("@signupId", signupId); try { cmd.ExecuteNonQuery(); } catch (MySqlException) { return BadRequest(); } cnn.Close(); return NoContent(); } } }