creazione primi repository e interfacce
This commit is contained in:
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user