feat: propose team3 features. UNTESTED
This commit is contained in:
parent
463e3c3530
commit
9b7ad20d70
283
src/team3.cs
Normal file
283
src/team3.cs
Normal file
@ -0,0 +1,283 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.Data.Sqlite;
|
||||||
|
using Database.Dto;
|
||||||
|
|
||||||
|
class EditRecords
|
||||||
|
{
|
||||||
|
public static AuthorDto? EditAuthor(SqliteConnection connection, AuthorDto author)
|
||||||
|
{
|
||||||
|
using (var command = new SqliteCommand())
|
||||||
|
{
|
||||||
|
command.Connection = connection;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Check if author exists
|
||||||
|
command.CommandText = "SELECT 1 FROM Authors WHERE ID = @id;";
|
||||||
|
command.Parameters.AddWithValue("@id", author.Id);
|
||||||
|
using (var reader = command.ExecuteReader())
|
||||||
|
{
|
||||||
|
if (!reader.HasRows)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Author with ID {author.Id} does not exist.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update author
|
||||||
|
command.CommandText = @"UPDATE Authors
|
||||||
|
SET Name = @name, Surname = @surname, DateOfBirth = @dob
|
||||||
|
WHERE ID = @id;";
|
||||||
|
command.Parameters.Clear();
|
||||||
|
command.Parameters.AddWithValue("@name", author.Name);
|
||||||
|
command.Parameters.AddWithValue("@surname", author.Surname);
|
||||||
|
command.Parameters.AddWithValue("@dob", author.DateOfBirth.ToString("yyyy-MM-dd"));
|
||||||
|
command.Parameters.AddWithValue("@id", author.Id);
|
||||||
|
command.ExecuteNonQuery();
|
||||||
|
|
||||||
|
// Retrieve updated author
|
||||||
|
command.CommandText = "SELECT ID, Name, Surname, DateOfBirth FROM Authors WHERE ID = @id;";
|
||||||
|
command.Parameters.Clear();
|
||||||
|
command.Parameters.AddWithValue("@id", author.Id);
|
||||||
|
using (var reader = command.ExecuteReader())
|
||||||
|
{
|
||||||
|
if (reader.Read())
|
||||||
|
{
|
||||||
|
var updatedAuthor = new AuthorDto
|
||||||
|
{
|
||||||
|
Id = reader.GetInt32(0),
|
||||||
|
Name = reader.GetString(1),
|
||||||
|
Surname = reader.GetString(2),
|
||||||
|
DateOfBirth = DateTime.Parse(reader.GetString(3))
|
||||||
|
};
|
||||||
|
Console.WriteLine("Author updated successfully.");
|
||||||
|
return updatedAuthor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"EditAuthor failed: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Publisher? EditPublisher(SqliteConnection connection, Publisher publisher)
|
||||||
|
{
|
||||||
|
using (var command = new SqliteCommand())
|
||||||
|
{
|
||||||
|
command.Connection = connection;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Check if publisher exists
|
||||||
|
command.CommandText = "SELECT 1 FROM Publisher WHERE ID = @id;";
|
||||||
|
command.Parameters.AddWithValue("@id", publisher.Id);
|
||||||
|
using (var reader = command.ExecuteReader())
|
||||||
|
{
|
||||||
|
if (!reader.HasRows)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Publisher with ID {publisher.Id} does not exist.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update publisher
|
||||||
|
command.CommandText = @"UPDATE Publisher
|
||||||
|
SET Name = @name, State = @state
|
||||||
|
WHERE ID = @id;";
|
||||||
|
command.Parameters.Clear();
|
||||||
|
command.Parameters.AddWithValue("@name", publisher.Name);
|
||||||
|
command.Parameters.AddWithValue("@state", publisher.State);
|
||||||
|
command.Parameters.AddWithValue("@id", publisher.Id);
|
||||||
|
command.ExecuteNonQuery();
|
||||||
|
|
||||||
|
// Retrieve updated publisher
|
||||||
|
command.CommandText = "SELECT ID, Name, State FROM Publisher WHERE ID = @id;";
|
||||||
|
command.Parameters.Clear();
|
||||||
|
command.Parameters.AddWithValue("@id", publisher.Id);
|
||||||
|
using (var reader = command.ExecuteReader())
|
||||||
|
{
|
||||||
|
if (reader.Read())
|
||||||
|
{
|
||||||
|
var updatedPublisher = new Publisher
|
||||||
|
{
|
||||||
|
Id = reader.GetInt32(0),
|
||||||
|
Name = reader.GetString(1),
|
||||||
|
State = reader.GetString(2)
|
||||||
|
};
|
||||||
|
Console.WriteLine("Publisher updated successfully.");
|
||||||
|
return updatedPublisher;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"EditPublisher failed: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BookDto? EditBook(SqliteConnection connection, BookDto book)
|
||||||
|
{
|
||||||
|
using (var command = new SqliteCommand())
|
||||||
|
{
|
||||||
|
command.Connection = connection;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Check if book exists
|
||||||
|
command.CommandText = "SELECT 1 FROM Books WHERE ID = @id;";
|
||||||
|
command.Parameters.AddWithValue("@id", book.Id);
|
||||||
|
using (var reader = command.ExecuteReader())
|
||||||
|
{
|
||||||
|
if (!reader.HasRows)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Book with ID {book.Id} does not exist.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if author exists
|
||||||
|
command.CommandText = "SELECT 1 FROM Authors WHERE ID = @aid;";
|
||||||
|
command.Parameters.Clear();
|
||||||
|
command.Parameters.AddWithValue("@aid", book.Author.Id);
|
||||||
|
using (var reader = command.ExecuteReader())
|
||||||
|
{
|
||||||
|
if (!reader.HasRows)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Author with ID {book.Author.Id} does not exist.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if publisher exists
|
||||||
|
command.CommandText = "SELECT 1 FROM Publisher WHERE ID = @pid;";
|
||||||
|
command.Parameters.Clear();
|
||||||
|
command.Parameters.AddWithValue("@pid", book.Publisher.Id);
|
||||||
|
using (var reader = command.ExecuteReader())
|
||||||
|
{
|
||||||
|
if (!reader.HasRows)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Publisher with ID {book.Publisher.Id} does not exist.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update book
|
||||||
|
command.CommandText = @"UPDATE Books
|
||||||
|
SET Name = @name, AuthorID = @author, PublisherID = @publisher,
|
||||||
|
YearOfRelease = @year, Total = @total
|
||||||
|
WHERE ID = @id;";
|
||||||
|
command.Parameters.Clear();
|
||||||
|
command.Parameters.AddWithValue("@name", book.Name);
|
||||||
|
command.Parameters.AddWithValue("@author", book.Author.Id);
|
||||||
|
command.Parameters.AddWithValue("@publisher", book.Publisher.Id);
|
||||||
|
command.Parameters.AddWithValue("@year", book.YearOfRelease);
|
||||||
|
command.Parameters.AddWithValue("@total", book.Total);
|
||||||
|
command.Parameters.AddWithValue("@id", book.Id);
|
||||||
|
command.ExecuteNonQuery();
|
||||||
|
|
||||||
|
// Retrieve updated book with joins
|
||||||
|
command.CommandText = @"SELECT b.ID, b.Name, b.YearOfRelease, b.Total,
|
||||||
|
a.ID, a.Name, a.Surname, a.DateOfBirth,
|
||||||
|
p.ID, p.Name, p.State
|
||||||
|
FROM Books b
|
||||||
|
JOIN Authors a ON b.AuthorID = a.ID
|
||||||
|
JOIN Publisher p ON b.PublisherID = p.ID
|
||||||
|
WHERE b.ID = @id;";
|
||||||
|
command.Parameters.Clear();
|
||||||
|
command.Parameters.AddWithValue("@id", book.Id);
|
||||||
|
using (var reader = command.ExecuteReader())
|
||||||
|
{
|
||||||
|
if (reader.Read())
|
||||||
|
{
|
||||||
|
var updatedBook = new BookDto
|
||||||
|
{
|
||||||
|
Id = reader.GetInt32(0),
|
||||||
|
Name = reader.GetString(1),
|
||||||
|
YearOfRelease = reader.GetInt32(2),
|
||||||
|
Total = reader.GetInt32(3),
|
||||||
|
Author = new AuthorDto
|
||||||
|
{
|
||||||
|
Id = reader.GetInt32(4),
|
||||||
|
Name = reader.GetString(5),
|
||||||
|
Surname = reader.GetString(6),
|
||||||
|
DateOfBirth = DateTime.Parse(reader.GetString(7))
|
||||||
|
},
|
||||||
|
Publisher = new Publisher
|
||||||
|
{
|
||||||
|
Id = reader.GetInt32(8),
|
||||||
|
Name = reader.GetString(9),
|
||||||
|
State = reader.GetString(10)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Console.WriteLine("Book updated successfully.");
|
||||||
|
return updatedBook;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"EditBook failed: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static UserDto? EditUser(SqliteConnection connection, UserDto user)
|
||||||
|
{
|
||||||
|
using (var command = new SqliteCommand())
|
||||||
|
{
|
||||||
|
command.Connection = connection;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Check if user exists
|
||||||
|
command.CommandText = "SELECT 1 FROM Users WHERE ID = @id;";
|
||||||
|
command.Parameters.AddWithValue("@id", user.Id);
|
||||||
|
using (var reader = command.ExecuteReader())
|
||||||
|
{
|
||||||
|
if (!reader.HasRows)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"User with ID {user.Id} does not exist.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update user
|
||||||
|
command.CommandText = @"UPDATE Users
|
||||||
|
SET Name = @name, Surname = @surname
|
||||||
|
WHERE ID = @id;";
|
||||||
|
command.Parameters.Clear();
|
||||||
|
command.Parameters.AddWithValue("@name", user.Name);
|
||||||
|
command.Parameters.AddWithValue("@surname", user.Surname);
|
||||||
|
command.Parameters.AddWithValue("@id", user.Id);
|
||||||
|
command.ExecuteNonQuery();
|
||||||
|
|
||||||
|
// Retrieve updated user
|
||||||
|
command.CommandText = "SELECT ID, Name, Surname FROM Users WHERE ID = @id;";
|
||||||
|
command.Parameters.Clear();
|
||||||
|
command.Parameters.AddWithValue("@id", user.Id);
|
||||||
|
using (var reader = command.ExecuteReader())
|
||||||
|
{
|
||||||
|
if (reader.Read())
|
||||||
|
{
|
||||||
|
var updatedUser = new UserDto
|
||||||
|
{
|
||||||
|
Id = reader.GetInt32(0),
|
||||||
|
Name = reader.GetString(1),
|
||||||
|
Surname = reader.GetString(2)
|
||||||
|
};
|
||||||
|
Console.WriteLine("User updated successfully.");
|
||||||
|
return updatedUser;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"EditUser failed: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user