QueueSys/QueueSys/SqliteDataAccess.cs
kougyoku 58006f2955 Update CustomerView class properties to match the columns being selected out of the database.
Remove 'static' from all functions under SqliteDataAccess class.
Write correct SQL Query for LoadCustomerView.
2019-10-11 21:30:25 -07:00

82 lines
3.0 KiB
C#

using Dapper;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SQLite;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace QueueSys
{
public class CustomerView
{
public string Customer { get; }
public string Status { get; }
public string TimeElapsed { get; }
}
public class EmployeeView
{
public int id { get; }
public string customer_name { get; set; }
public int num_bags { get; set; }
public string employee { get; set; }
public int status { get; set; }
}
public class SqliteDataAccess
{
public List<EmployeeView> LoadEmployeeView()
{
//A using statement protects us as a failsafe: it guarantees the connection to the
//database will be closed, even in event of an application or computer crash.
using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
{
string strQuery = "SELECT id,customer_name,num_bags,employee,status FROM active_customers;";
var output = cnn.Query<EmployeeView>(strQuery, new DynamicParameters());
return output.ToList();
}
}
public List<CustomerView> LoadCustomerView()
{
using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
{
string strQuery = "SELECT customer_name as Customer,status_lookup.status as Status,Cast ((JulianDay('now') - JulianDay(start_time)) * 24 * 60 As Integer) as TimeElapsed FROM active_customers INNER JOIN status_lookup on active_customers.status_id=status_lookup.status_id ORDER BY active_customers.status_id";
var output = cnn.Query<CustomerView>(strQuery, new DynamicParameters());
return output.ToList();
}
}
public void SaveCustomer(EmployeeView customer)
{
using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
{
string strQuery = "INSERT INTO active_customers (customer_name, num_bags, employee, status_id) VALUES (@customer_name, @num_bags, @employee, @status)";
cnn.Execute(strQuery, customer);
}
}
public void ArchiveCustomer(EmployeeView customer)
{
using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
{
string strQuery = "INSERT INTO archive(id, customer_name,num_bags,employee,status,start_time) SELECT id,customer_name,num_bags,employee,status,start_time WHERE id=@id";
cnn.Execute(strQuery, customer);
// strQuery = "DELETE FROM active_customers WHERE id=@id";
// cnn.Execute(strQuery, customer);
}
}
private static string LoadConnectionString(string id="Default")
{
return ConfigurationManager.ConnectionStrings[id].ConnectionString;
}
}
}