Files
uWine/uWine.Core.Infrastructure/Repository/MariaDbContactRepository.cs
T

89 lines
3.2 KiB
C#

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;
}
}
}
}