Загрузка данных
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Windows;
namespace FarmManagementWPF.Data
{
public class FarmContext
{
private string _connectionString = "Server=(localdb)\\MSSQLLocalDB;Database=FarmManagementDB;Trusted_Connection=True;";
private SqlConnection GetConnection()
{
return new SqlConnection(_connectionString);
}
public List<Animal> GetAllAnimals()
{
var list = new List<Animal>();
using (var conn = GetConnection())
{
conn.Open();
var cmd = new SqlCommand("SELECT * FROM Animals ORDER BY AnimalNumber", conn);
using (var r = cmd.ExecuteReader())
{
while (r.Read())
{
list.Add(new Animal
{
AnimalId = r.GetGuid(0),
AnimalNumber = r.GetString(1),
AnimalType = r.GetString(2),
Breed = r.IsDBNull(3) ? "" : r.GetString(3),
BirthDate = r.IsDBNull(4) ? null : (DateTime?)r.GetDateTime(4),
Weight = r.IsDBNull(5) ? null : (decimal?)r.GetDecimal(5)
});
}
}
}
return list;
}
public void AddAnimal(Animal a)
{
using (var conn = GetConnection())
{
conn.Open();
var cmd = new SqlCommand("INSERT INTO Animals (AnimalId, AnimalNumber, AnimalType, Breed, BirthDate, Weight) VALUES (@id, @num, @type, @breed, @date, @weight)", conn);
cmd.Parameters.AddWithValue("@id", a.AnimalId);
cmd.Parameters.AddWithValue("@num", a.AnimalNumber);
cmd.Parameters.AddWithValue("@type", a.AnimalType);
cmd.Parameters.AddWithValue("@breed", string.IsNullOrEmpty(a.Breed) ? DBNull.Value : (object)a.Breed);
cmd.Parameters.AddWithValue("@date", a.BirthDate == null ? DBNull.Value : (object)a.BirthDate);
cmd.Parameters.AddWithValue("@weight", a.Weight == null ? DBNull.Value : (object)a.Weight);
cmd.ExecuteNonQuery();
}
}
public void UpdateAnimal(Animal a)
{
using (var conn = GetConnection())
{
conn.Open();
var cmd = new SqlCommand("UPDATE Animals SET AnimalNumber=@num, AnimalType=@type, Breed=@breed, BirthDate=@date, Weight=@weight WHERE AnimalId=@id", conn);
cmd.Parameters.AddWithValue("@id", a.AnimalId);
cmd.Parameters.AddWithValue("@num", a.AnimalNumber);
cmd.Parameters.AddWithValue("@type", a.AnimalType);
cmd.Parameters.AddWithValue("@breed", string.IsNullOrEmpty(a.Breed) ? DBNull.Value : (object)a.Breed);
cmd.Parameters.AddWithValue("@date", a.BirthDate == null ? DBNull.Value : (object)a.BirthDate);
cmd.Parameters.AddWithValue("@weight", a.Weight == null ? DBNull.Value : (object)a.Weight);
cmd.ExecuteNonQuery();
}
}
public void DeleteAnimal(Guid id)
{
using (var conn = GetConnection())
{
conn.Open();
var cmd = new SqlCommand("DELETE FROM Animals WHERE AnimalId = @id", conn);
cmd.Parameters.AddWithValue("@id", id);
cmd.ExecuteNonQuery();
}
}
public List<Animal> GetSimpleAnimals()
{
var list = new List<Animal>();
using (var conn = GetConnection())
{
conn.Open();
var cmd = new SqlCommand("SELECT AnimalId, AnimalNumber FROM Animals ORDER BY AnimalNumber", conn);
using (var r = cmd.ExecuteReader())
{
while (r.Read())
{
list.Add(new Animal { AnimalId = r.GetGuid(0), AnimalNumber = r.GetString(1) });
}
}
}
return list;
}
public List<Supplier> GetAllSuppliers()
{
var list = new List<Supplier>();
using (var conn = GetConnection())
{
conn.Open();
var cmd = new SqlCommand("SELECT * FROM Suppliers ORDER BY Name", conn);
using (var r = cmd.ExecuteReader())
{
while (r.Read())
{
list.Add(new Supplier
{
SupplierId = r.GetGuid(0),
Name = r.GetString(1),
Phone = r.IsDBNull(2) ? "" : r.GetString(2)
});
}
}
}
return list;
}
public void AddSupplier(Supplier s)
{
using (var conn = GetConnection())
{
conn.Open();
var cmd = new SqlCommand("INSERT INTO Suppliers (SupplierId, Name, Phone) VALUES (@id, @name, @phone)", conn);
cmd.Parameters.AddWithValue("@id", s.SupplierId);
cmd.Parameters.AddWithValue("@name", s.Name);
cmd.Parameters.AddWithValue("@phone", string.IsNullOrEmpty(s.Phone) ? DBNull.Value : (object)s.Phone);
cmd.ExecuteNonQuery();
}
}
public void UpdateSupplier(Supplier s)
{
using (var conn = GetConnection())
{
conn.Open();
var cmd = new SqlCommand("UPDATE Suppliers SET Name=@name, Phone=@phone WHERE SupplierId=@id", conn);
cmd.Parameters.AddWithValue("@id", s.SupplierId);
cmd.Parameters.AddWithValue("@name", s.Name);
cmd.Parameters.AddWithValue("@phone", string.IsNullOrEmpty(s.Phone) ? DBNull.Value : (object)s.Phone);
cmd.ExecuteNonQuery();
}
}
public void DeleteSupplier(Guid id)
{
using (var conn = GetConnection())
{
conn.Open();
var cmd = new SqlCommand("DELETE FROM Suppliers WHERE SupplierId = @id", conn);
cmd.Parameters.AddWithValue("@id", id);
cmd.ExecuteNonQuery();
}
}
public User GetUserByLogin(string login)
{
using (var conn = GetConnection())
{
conn.Open();
var cmd = new SqlCommand("SELECT * FROM Users WHERE Login = @login", conn);
cmd.Parameters.AddWithValue("@login", login);
using (var r = cmd.ExecuteReader())
{
if (r.Read())
{
return new User
{
UserId = r.GetGuid(0),
FullName = r.GetString(1),
Login = r.GetString(2),
PasswordHash = r.GetString(3)
};
}
}
}
return null;
}
public void AddUser(User u)
{
using (var conn = GetConnection())
{
conn.Open();
var cmd = new SqlCommand("INSERT INTO Users (UserId, FullName, Login, PasswordHash) VALUES (@id, @name, @login, @pass)", conn);
cmd.Parameters.AddWithValue("@id", u.UserId);
cmd.Parameters.AddWithValue("@name", u.FullName);
cmd.Parameters.AddWithValue("@login", u.Login);
cmd.Parameters.AddWithValue("@pass", u.PasswordHash);
cmd.ExecuteNonQuery();
}
}
public List<VeterinaryCheck> GetAllVeterinaryChecks()
{
var list = new List<VeterinaryCheck>();
using (var conn = GetConnection())
{
conn.Open();
var cmd = new SqlCommand(@"SELECT v.*, a.AnimalNumber, u.FullName FROM VeterinaryChecks v
JOIN Animals a ON v.AnimalId = a.AnimalId
JOIN Users u ON v.UserId = u.UserId
ORDER BY v.CheckDate DESC", conn);
using (var r = cmd.ExecuteReader())
{
while (r.Read())
{
list.Add(new VeterinaryCheck
{
CheckId = r.GetGuid(0),
AnimalId = r.GetGuid(1),
UserId = r.GetGuid(2),
CheckDate = r.GetDateTime(3),
Diagnosis = r.IsDBNull(4) ? "" : r.GetString(4),
AnimalNumber = r.GetString(5),
UserName = r.GetString(6)
});
}
}
}
return list;
}
public void AddVeterinaryCheck(VeterinaryCheck c)
{
using (var conn = GetConnection())
{
conn.Open();
var cmd = new SqlCommand("INSERT INTO VeterinaryChecks (CheckId, AnimalId, UserId, CheckDate, Diagnosis) VALUES (@id, @aid, @uid, @date, @diag)", conn);
cmd.Parameters.AddWithValue("@id", c.CheckId);
cmd.Parameters.AddWithValue("@aid", c.AnimalId);
cmd.Parameters.AddWithValue("@uid", c.UserId);
cmd.Parameters.AddWithValue("@date", c.CheckDate);
cmd.Parameters.AddWithValue("@diag", string.IsNullOrEmpty(c.Diagnosis) ? DBNull.Value : (object)c.Diagnosis);
cmd.ExecuteNonQuery();
}
}
public void UpdateVeterinaryCheck(VeterinaryCheck c)
{
using (var conn = GetConnection())
{
conn.Open();
var cmd = new SqlCommand("UPDATE VeterinaryChecks SET AnimalId=@aid, UserId=@uid, CheckDate=@date, Diagnosis=@diag WHERE CheckId=@id", conn);
cmd.Parameters.AddWithValue("@id", c.CheckId);
cmd.Parameters.AddWithValue("@aid", c.AnimalId);
cmd.Parameters.AddWithValue("@uid", c.UserId);
cmd.Parameters.AddWithValue("@date", c.CheckDate);
cmd.Parameters.AddWithValue("@diag", string.IsNullOrEmpty(c.Diagnosis) ? DBNull.Value : (object)c.Diagnosis);
cmd.ExecuteNonQuery();
}
}
public void DeleteVeterinaryCheck(Guid id)
{
using (var conn = GetConnection())
{
conn.Open();
var cmd = new SqlCommand("DELETE FROM VeterinaryChecks WHERE CheckId = @id", conn);
cmd.Parameters.AddWithValue("@id", id);
cmd.ExecuteNonQuery();
}
}
}
public class Animal
{
public Guid AnimalId { get; set; } = Guid.NewGuid();
public string AnimalNumber { get; set; } = "";
public string AnimalType { get; set; } = "";
public string Breed { get; set; } = "";
public DateTime? BirthDate { get; set; }
public decimal? Weight { get; set; }
}
public class Supplier
{
public Guid SupplierId { get; set; } = Guid.NewGuid();
public string Name { get; set; } = "";
public string Phone { get; set; } = "";
}
public class User
{
public Guid UserId { get; set; } = Guid.NewGuid();
public string FullName { get; set; } = "";
public string Login { get; set; } = "";
public string PasswordHash { get; set; } = "";
}
public class VeterinaryCheck
{
public Guid CheckId { get; set; } = Guid.NewGuid();
public Guid AnimalId { get; set; }
public Guid UserId { get; set; }
public DateTime CheckDate { get; set; }
public string Diagnosis { get; set; } = "";
public string AnimalNumber { get; set; } = "";
public string UserName { get; set; } = "";
}
}