creazione primi repository e interfacce

This commit is contained in:
Riccardo Usardi committed 2025-07-04 19:12:25 +02:00
1 parent b7983dae8e
commit 0a6744e8b0
19 files changed
+644 -39

No files matched your search

@@ -1,4 +1,5 @@
using Microsoft.Extensions.Configuration;
using MySqlConnector;
using uWine.Core.Domain.Entities;
using uWine.Core.Domain.Repositories;
@@ -15,8 +16,7 @@ namespace uWine.Core.Infrastructure.Repository
using (var connection = Connection())
{
connection.Open();
var command = connection.CreateCommand();
command.CommandText = $@"INSERT INTO t_addresses (
var query = $@"INSERT INTO t_addresses (
country,
postal_code,
county,
@@ -39,6 +39,8 @@ namespace uWine.Core.Infrastructure.Repository
@longitude,
@active
)";
using var command = new MySqlCommand(query, connection); //connection.CreateCommand();
command.Parameters.AddWithValue("@country", address.Country);
command.Parameters.AddWithValue("@postal_code", address.PostalCode);
command.Parameters.AddWithValue("@county", address.County);
@@ -58,11 +60,12 @@ namespace uWine.Core.Infrastructure.Repository
var addresses = new List<Address>();
using (var connection = Connection())
{
connection.Open();
var command = connection.CreateCommand();
command.CommandText = $@"SELECT a.* FROM t_addresses a
connection.Open();
var query = $@"SELECT a.* FROM t_addresses a
JOIN t_owners_addresses oa ON a.id = oa.address_id
WHERE oa.owner_id = @OwnerId";
using var command = new MySqlCommand(query, connection);
command.Parameters.AddWithValue("@OwnerId", OwnerId);
using (var reader = command.ExecuteReader())
{
@@ -0,0 +1,88 @@
using Microsoft.Extensions.Configuration;
using MySqlConnector;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using uWine.Core.Domain.Entities;
using uWine.Core.Domain.Repositories;
namespace uWine.Core.Infrastructure.Repository
{
public class MariaDbContactRepository : MariaDbServerRepository, IContactRepository
{
public MariaDbContactRepository(IConfiguration configuration) : base(configuration)
{
}
public void InsertOwnerContact(Contact contact, int ownerId)
{
using (var connection = Connection())
{
connection.Open();
var cmd = new MySqlCommand("sp_insert_owner_contact", connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@OwnerId", ownerId);
cmd.Parameters.AddWithValue("@ContactTypeId", contact.ContactType.Id);
cmd.Parameters.AddWithValue("@Contact", contact.Value);
cmd.Parameters.AddWithValue("@Priority", contact.Priority);
cmd.Parameters.AddWithValue("@Note", contact.Notes);
}
}
public ContactType GetContactType(int contactTypeId)
{
using (var connection = Connection())
{
connection.Open();
var cmd = new MySqlCommand("SELECT * FROM t_contact_type WHERE id = @id", connection);
cmd.Parameters.AddWithValue("@id", contactTypeId);
using (var reader = cmd.ExecuteReader())
{
if (reader.Read())
{
return ContactType.FromRecord(reader);
}
}
}
return new ContactType();
}
public void InsertContactType(ContactType contactType)
{
using (var connection = Connection())
{
connection.Open();
using var cmd = new MySqlCommand("INSERT INTO t_contact_types(type, description) VALUES (@type, @description)", connection);
cmd.Parameters.AddWithValue("@type", contactType.Type);
cmd.Parameters.AddWithValue("@description", contactType.Description);
cmd.ExecuteNonQuery();
}
}
public List<Contact> OwnerContacts(int ownerId)
{
var contacts = new List<Contact>();
using (var connection = Connection())
{
connection.Open();
using var cmd = new MySqlCommand("sp_get_owner_contacts", connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@OwnerId", ownerId);
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
var contact = Contact.FromRecord(reader);
contact.ContactType = GetContactType(reader.GetInt32("contact_type_id"));
contacts.Add(contact);
}
}
return contacts;
}
}
}
}
@@ -0,0 +1,90 @@
using Microsoft.Extensions.Configuration;
using MySqlConnector;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using uWine.Core.Domain.Entities;
using uWine.Core.Domain.Repositories;
namespace uWine.Core.Infrastructure.Repository
{
public class MariaDbVineyardRepository : MariaDbServerRepository, IVineyardRepository
{
public MariaDbVineyardRepository(IConfiguration configuration) : base(configuration)
{
}
public void Insert(Vineyard vineyard, int ownerId)
{
using (var connection = Connection())
{
connection.Open();
var command = new MySqlCommand(@$"INSERT INTO t_vineyard (
name,
location,
hectares,
latitude,
longitude
) VALUES (
@name,
@location,
@hectares,
@latitude,
@longitude
); LAST_INSERT_ID();", connection);
command.Parameters.AddWithValue("@name", vineyard.Name);
command.Parameters.AddWithValue("@location", vineyard.Location);
command.Parameters.AddWithValue("@hectares", vineyard.Hectares);
command.Parameters.AddWithValue("@latitude", vineyard.Latitude);
command.Parameters.AddWithValue("@longitude", vineyard.Longitude);
using (var reader = command.ExecuteReader())
{
if (reader.Read())
{
vineyard.Id = reader.GetInt32(0);
}
}
var command2 = new MySqlCommand("INSERT INTO t_owners_vineyards (owner_id, vineyard_id) VALUES (@ownerId, @vineyardId)", connection);
command2.Parameters.AddWithValue("@ownerId", ownerId);
command2.Parameters.AddWithValue("@vineyardId", vineyard.Id);
command2.ExecuteNonQuery();
}
}
public List<Vineyard> GetOwnerVineyards(int ownerId)
{
var vineyards = new List<Vineyard>();
using (var connection = Connection())
{
connection.Open();
var command = new MySqlCommand("SELECT v.id, v.name, v.location, v.hectares, v.latitude, v.longitude " +
"FROM t_vineyard v " +
"JOIN t_owners_vineyards ov ON v.id = ov.vineyard_id " +
"WHERE ov.owner_id = @ownerId", connection);
command.Parameters.AddWithValue("@ownerId", ownerId);
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
var vineyard = new Vineyard
{
Id = reader.GetInt32(0),
Name = reader.GetString(1),
Location = reader.GetString(2),
Hectares = reader.GetDouble(3),
Latitude = reader.GetDouble(4),
Longitude = reader.GetDouble(5)
};
vineyards.Add(vineyard);
}
}
}
return vineyards;
}
}
}
@@ -0,0 +1,117 @@
using Microsoft.Extensions.Configuration;
using MySqlConnector;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using uWine.Core.Domain.Entities;
using uWine.Core.Domain.Repositories;
namespace uWine.Core.Infrastructure.Repository
{
public class MariadbOwnerRepository : MariaDbServerRepository, IOwnerRepository
{
public MariadbOwnerRepository(IConfiguration configuration) : base(configuration)
{
}
public void Insert(Owner owner)
{
using (var connection = Connection())
{
connection.Open();
var cmd = new MySqlCommand($@"INSERT INTO t_owners (
first_name,
last_name,
company_name,
note
) VALUES (
@firstName,
@lastName,
@companyName,
@note )", connection);
cmd.Parameters.AddWithValue("@firstName", owner.Name);
cmd.Parameters.AddWithValue("@lastName", owner.Surname);
cmd.Parameters.AddWithValue("@companyName", owner.CompanyName);
cmd.Parameters.AddWithValue("@note", owner.Note);
cmd.ExecuteNonQuery();
}
}
public void AddAddress(int ownerId, Address address)
{
using (var connection = Connection())
{
connection.Open();
using var cmd = new MySqlCommand($@"INSERT INTO t_addresses (
owner_id,
country,
postal_code,
county,
province,
city,
street,
house_number,
latitude,
longitude,
active
) VALUES (
@ownerId,
@country,
@postal_code,
@county,
@province,
@city,
@street,
@house_number,
@latitude,
@longitude,
@active ); LAST_INSERT_ID();", connection);
cmd.Parameters.AddWithValue("@ownerId", ownerId);
cmd.Parameters.AddWithValue("@country", address.Country);
cmd.Parameters.AddWithValue("@postal_code", address.PostalCode);
cmd.Parameters.AddWithValue("@county", address.County);
cmd.Parameters.AddWithValue("@province", address.Province);
cmd.Parameters.AddWithValue("@city", address.City);
cmd.Parameters.AddWithValue("@street", address.Street);
cmd.Parameters.AddWithValue("@house_number", address.HouseNumber);
cmd.Parameters.AddWithValue("@latitude", address.Latitude);
cmd.Parameters.AddWithValue("@longitude", address.Longitude);
cmd.Parameters.AddWithValue("@active", address.Active ? 1 : 0);
using (var reader = cmd.ExecuteReader())
{
if (reader.Read())
{
address.Id = reader.GetInt32(0);
}
}
using var cmd2 = new MySqlCommand("INSERT INTO t_owners_addresses (owner_id, address_id) VALUES (@ownerId, @addressId)", connection);
cmd2.Parameters.AddWithValue("@ownerId", ownerId);
cmd2.Parameters.AddWithValue("@addressId", address.Id);
cmd2.ExecuteNonQuery();
}
}
public Owner Simple(int ownerId)
{
using (var connection = Connection())
{
connection.Open();
using var cmd = new MySqlCommand("SELECT * FROM t_owners WHERE id = @id", connection);
cmd.Parameters.AddWithValue("@id", ownerId);
using (var reader = cmd.ExecuteReader())
{
if (reader.Read())
{
var owner = Owner.FromRecord(reader);
}
}
}
return new Owner();
}
}
}