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 OwnerContacts(int ownerId) { var contacts = new List(); 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; } } } }