2024-04-15 13:34:57 -05:00

313 lines
7.6 KiB
C#

#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<Signup> 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<List<Signup>> 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<Signup> 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<SignupCsv> 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<List<Signup>> 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<Signup> 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<List<Signup>> 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<Signup> 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();
}
}
}