PIbd-23_Firsov_KA_SUBD/Hotel/HotelDatabase/Implement/HotelImplement.cs
2024-05-29 14:28:53 +04:00

103 lines
3.8 KiB
C#

using HotelAbstractions.Logic;
using HotelAbstractions.Models;
using Npgsql;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HotelDatabase.Implement
{
public class HotelImplement : IHotelLogic
{
public Hotel? Create(Hotel hotel)
{
using var con = SqlConnection.GetConnection();
con.Open();
using var cmd = new NpgsqlCommand("INSERT INTO hotel (name, address, count_star, count_room) VALUES (@Name, @Address, @Count_star, @Count_room)", con);
cmd.Parameters.AddWithValue("@Name", hotel.HotelName);
cmd.Parameters.AddWithValue("@Address", hotel.Address);
cmd.Parameters.AddWithValue("@Count_star", hotel.CountStar);
cmd.Parameters.AddWithValue("@Count_room", hotel.CountRoom);
cmd.ExecuteNonQuery();
return hotel;
}
public Hotel? CreateId(Hotel hotel)
{
using var con = SqlConnection.GetConnection();
con.Open();
using var cmd = new NpgsqlCommand("INSERT INTO hotel (hotel_id, name, address, count_star, count_room) VALUES (@Hotel_id, @Name, @Address, @Count_star, @Count_room)", con);
cmd.Parameters.AddWithValue("@Hotel_id", hotel.Id);
cmd.Parameters.AddWithValue("@Name", hotel.HotelName);
cmd.Parameters.AddWithValue("@Address", hotel.Address);
cmd.Parameters.AddWithValue("@Count_star", hotel.CountStar);
cmd.Parameters.AddWithValue("@Count_room", hotel.CountRoom);
cmd.ExecuteNonQuery();
return hotel;
}
public Hotel? Delete(int id)
{
var element = Get(id);
using var con = SqlConnection.GetConnection();
con.Open();
using var cmd = new NpgsqlCommand($"DELETE FROM hotel WHERE hotel_id = {id}", con);
cmd.ExecuteNonQuery();
return element;
}
public Hotel? Get(int id)
{
using var con = SqlConnection.GetConnection();
con.Open();
using var cmd = new NpgsqlCommand($"SELECT * FROM hotel WHERE hotel_id = {id}", con);
using var reader = cmd.ExecuteReader();
if (reader.Read())
{
return new Hotel
{
Id = reader.GetInt32(0),
HotelName = reader.GetString(1),
Address = reader.GetString(2),
CountStar = reader.GetInt32(3),
CountRoom = reader.GetInt32(4),
};
}
return null;
}
public List<Hotel> GetAll()
{
var hotels = new List<Hotel>();
using var con = SqlConnection.GetConnection();
con.Open();
using var cmd = new NpgsqlCommand("SELECT * FROM hotel order by hotel_id", con);
using var reader = cmd.ExecuteReader();
while (reader.Read())
{
hotels.Add(new Hotel
{
Id = reader.GetInt32(0),
HotelName = reader.GetString(1),
Address = reader.GetString(2),
CountStar = reader.GetInt32(3),
CountRoom = reader.GetInt32(4),
});
}
return hotels;
}
public Hotel? Update(Hotel hotel)
{
using var con = SqlConnection.GetConnection();
con.Open();
using var cmd = new NpgsqlCommand($"UPDATE hotel SET name = '{hotel.HotelName}', address = '{hotel.Address}', count_star = '{hotel.CountStar}', count_room = '{hotel.CountRoom}' WHERE hotel_id = '{hotel.Id}'", con);
cmd.ExecuteNonQuery();
var element = Get(hotel.Id);
return element;
}
}
}