Compare commits

...

5 Commits

  1. 28
      TinyPOS/TinyPosDBGen/Program.cs
  2. 12
      TinyPOS/TinyPosEntity/Entity/Product.cs
  3. 7
      TinyPOS/TinyPosEntity/Entity/ProductType.cs
  4. 3
      TinyPOS/TinyPosEntity/Entity/Transaction.cs
  5. 4
      TinyPOS/TinyPosEntity/Entity/TransactionItem.cs
  6. 1
      TinyPOS/TinyPosEntity/EntityContext.cs
  7. 98
      TinyPOS/TinyPosEntity/EntityController.cs
  8. 136
      TinyPOS/TinyPosEntity/Service/ProductService.cs
  9. 108
      TinyPOS/TinyPosEntity/Service/ProductTypeService.cs
  10. 61
      TinyPOS/TinyPosEntity/Service/TransactionItemService.cs
  11. 59
      TinyPOS/TinyPosEntity/Service/TransactionService.cs
  12. 12
      TinyPOS/TinyPosEntity/TinyPosEntity.csproj

@ -5,6 +5,8 @@ using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Data.SqlClient; using System.Data.SqlClient;
using TinyPosEntity; using TinyPosEntity;
using TinyPosEntity.Entity;
using TinyPosEntity.Service;
namespace TinyPosDBGen namespace TinyPosDBGen
{ {
@ -14,9 +16,13 @@ namespace TinyPosDBGen
{ {
string source = "localhost"; string source = "localhost";
string catalog = "TestDB"; string catalog = "TestDB";
string userId = "sa"; string userId = "app_client";
string userPassword = ""; string userPassword = "";
Console.WriteLine("데이터베이스를 초기화합니다.");
Console.WriteLine("(※※※ 경고: 기존 데이터베이스 데이터는 모두 삭제됩니다. ※※※)");
Console.WriteLine();
InputValue("서버 이름", ref source); InputValue("서버 이름", ref source);
InputValue("데이터베이스 이름", ref catalog); InputValue("데이터베이스 이름", ref catalog);
InputValue("인증 사용자 계정", ref userId); InputValue("인증 사용자 계정", ref userId);
@ -26,14 +32,30 @@ namespace TinyPosDBGen
Console.WriteLine(); Console.WriteLine();
Console.WriteLine("데이터베이스를 초기화 합니다."); Console.WriteLine("데이터베이스를 초기화 합니다.");
Console.WriteLine("");
Console.WriteLine("처리중...");
EntityController.ConnectionString = connString; EntityController.ConnectionString = connString;
EntityController.GetInstance().Initialize(); EntityController.Instance.InitializeDatabase();
Console.WriteLine("초기화가 완료되었습니다."); Console.WriteLine("초기화가 완료되었습니다.");
Console.WriteLine("----------------------------------");
List<ProductType> productTypeList = ProductTypeService.Instance.FindAll();
if (productTypeList != null && productTypeList.Count > 0)
{
Console.WriteLine("등록된 제품타입");
Console.WriteLine(); Console.WriteLine();
Console.WriteLine("id\t|\tname");
foreach (ProductType pt in productTypeList)
{
Console.WriteLine(string.Format("{0}\t|\t{1}", pt.ProductTypeId, pt.Name));
}
}
Console.WriteLine("----------------------------------");
Console.WriteLine("종료를 위해 아무키나 누르세요."); Console.WriteLine("종료를 위해 아무키나 누르세요.");
Console.ReadLine(); Console.ReadKey();
//Student student = new Student() //Student student = new Student()
//{ //{
// StudentName = "테스트용", // StudentName = "테스트용",

@ -1,17 +1,25 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TinyPosEntity namespace TinyPosEntity.Entity
{ {
public class Product public class Product
{ {
public int ProductId { get; set; } public int ProductId { get; set; }
[MaxLength(450)]
[Index(IsUnique = true)]
public string Barcode { get; set; }
public ProductType ProductType { get; set; } public ProductType ProductType { get; set; }
public string Name { get; set; } public string Name { get; set; }
public int Price { get; set; } public int Price { get; set; }
public string Barcode { get; set; }
} }
} }

@ -1,14 +1,19 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TinyPosEntity namespace TinyPosEntity.Entity
{ {
public class ProductType public class ProductType
{ {
public int ProductTypeId { get; set; } public int ProductTypeId { get; set; }
[MaxLength(450)]
[Index(IsUnique = true)]
public string Name { get; set; } public string Name { get; set; }
} }
} }

@ -4,11 +4,12 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TinyPosEntity namespace TinyPosEntity.Entity
{ {
public class Transaction public class Transaction
{ {
public string TransactionId { get; set; } public string TransactionId { get; set; }
public DateTime Timestamp { get; set; } public DateTime Timestamp { get; set; }
} }
} }

@ -4,12 +4,14 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TinyPosEntity namespace TinyPosEntity.Entity
{ {
public class TransactionItem public class TransactionItem
{ {
public string TransactionItemId { get; set; } public string TransactionItemId { get; set; }
public Transaction Transaction { get; set; } public Transaction Transaction { get; set; }
public Product Product { get; set; } public Product Product { get; set; }
} }
} }

@ -4,6 +4,7 @@ using System.Data.Entity;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using TinyPosEntity.Entity;
namespace TinyPosEntity namespace TinyPosEntity
{ {

@ -4,6 +4,8 @@ using System.Data.Entity;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using TinyPosEntity.Entity;
using TinyPosEntity.Service;
namespace TinyPosEntity namespace TinyPosEntity
{ {
@ -12,24 +14,23 @@ namespace TinyPosEntity
public static string ConnectionString { get; set; } public static string ConnectionString { get; set; }
private static EntityController instance; private static EntityController instance;
public static EntityController Instance { get { Init(); return instance; } }
private EntityController(string connectionString) private EntityController(string connectionString)
{ {
EntityContext.ConnectionString = connectionString; EntityContext.ConnectionString = connectionString;
} }
public static EntityController GetInstance() private static void Init()
{ {
if (string.IsNullOrEmpty(ConnectionString)) if (string.IsNullOrEmpty(ConnectionString))
throw new Exception("ConnectionString 값이 필요합니다."); throw new Exception("ConnectionString 값이 필요합니다.");
if (instance == null) if (instance == null)
instance = new EntityController(ConnectionString); instance = new EntityController(ConnectionString);
return instance;
} }
public void Initialize() public void InitializeDatabase()
{ {
Database.SetInitializer<EntityContext>(new EntityInitializer()); Database.SetInitializer<EntityContext>(new EntityInitializer());
@ -38,94 +39,21 @@ namespace TinyPosEntity
context.Database.CreateIfNotExists(); context.Database.CreateIfNotExists();
} }
ProductTypeService.Instance.Create(GetDefaultProductTypes());
AddProductType(GetDefaultProductTypes());
} }
private List<ProductType> GetDefaultProductTypes() private List<ProductType> GetDefaultProductTypes()
{ {
List<ProductType> productTypeList = new List<ProductType>(); List<ProductType> productTypeList = new List<ProductType>();
productTypeList.Add(new ProductType() productTypeList.Add(new ProductType() { Name = "담배" });
{ productTypeList.Add(new ProductType() { Name = "주류" });
Name = "담배" productTypeList.Add(new ProductType() { Name = "음료" });
}); productTypeList.Add(new ProductType() { Name = "과자" });
productTypeList.Add(new ProductType() productTypeList.Add(new ProductType() { Name = "식료품" });
{ productTypeList.Add(new ProductType() { Name = "잡화" });
Name = "주류" productTypeList.Add(new ProductType() { Name = "기타" });
});
productTypeList.Add(new ProductType()
{
Name = "음료"
});
productTypeList.Add(new ProductType()
{
Name = "생필품"
});
productTypeList.Add(new ProductType()
{
Name = "과자"
});
productTypeList.Add(new ProductType()
{
Name = "기타"
});
return productTypeList; return productTypeList;
} }
public void AddProductType(ProductType type)
{
using (EntityContext context = new EntityContext())
{
context.ProductTypes.Add(type);
context.SaveChanges();
}
}
public void AddProductType(List<ProductType> types)
{
using (EntityContext context = new EntityContext())
{
foreach (ProductType type in types)
{
context.ProductTypes.Add(type);
}
context.SaveChanges();
}
}
//public void AddStudent(Student student)
//{
// using (EntityContext context = new EntityContext())
// {
// context.Students.Add(student);
// context.SaveChanges();
// }
//}
//public List<Student> FindStudent(string name)
//{
// List<Student> result = null;
// using (EntityContext context = new EntityContext())
// {
// var student = from s in context.Students
// where s.StudentName.Equals(name)
// select s;
// if (student.Count() > 0)
// result = student.ToList();
// }
// return result;
//}
//public void RemoveStudent(Student student)
//{
// using (EntityContext context = new EntityContext())
// {
// context.Database.ExecuteSqlCommand("DELETE FROM dbo.Students WHERE StudentName = {0}", student.StudentName);
// }
//}
} }
} }

@ -0,0 +1,136 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TinyPosEntity.Entity;
namespace TinyPosEntity.Service
{
public class ProductService
{
static ProductService instance;
public static ProductService Instance { get { Init(); return instance; } }
private static void Init()
{
if (instance == null)
instance = new ProductService();
}
public void Create(Product targetObject)
{
using (EntityContext context = new EntityContext())
{
context.Products.Add(targetObject);
context.SaveChanges();
}
}
public void Create(List<Product> targetObject)
{
using (EntityContext context = new EntityContext())
{
foreach (Product type in targetObject)
{
context.Products.Add(type);
}
context.SaveChanges();
}
}
public Product Find(Product targetObject)
{
using (EntityContext context = new EntityContext())
{
var qry = from p in context.Products
where p.Name.Equals(targetObject.Barcode)
select p;
if (qry.Count() < 1)
return null;
return qry.ToArray()[0];
}
}
public Product Find(string barcode)
{
using (EntityContext context = new EntityContext())
{
var qry = from p in context.Products
where p.Name.Equals(barcode)
select p;
if (qry.Count() < 1)
return null;
return qry.ToArray()[0];
}
}
public List<Product> Find(List<TransactionItem> transactionItemList)
{
var subQry = from ti in transactionItemList
select ti.Product.ProductId;
List<int> productIdList = subQry.ToList();
if (productIdList == null || productIdList.Count < 1)
return null;
using (EntityContext context = new EntityContext())
{
var qry = from p in context.Products
where productIdList.Contains(p.ProductId)
orderby p.ProductId ascending
select p;
if (qry.Count() < 1)
return null;
return qry.ToList();
}
}
public List<Product> Find(DateTime fromDateTime, DateTime toDateTime)
{
using (EntityContext context = new EntityContext())
{
var qry = from p in context.Products
join ti in context.TransactionItems
on p equals ti.Product
join t in context.Transactions
on ti.Transaction equals t
where (t.Timestamp >= fromDateTime && t.Timestamp <= toDateTime)
orderby p.ProductId ascending
select p;
if (qry.Count() < 1)
return null;
return qry.ToList();
}
}
public void Remove(Product targetObject)
{
using (EntityContext context = new EntityContext())
{
context.Database.ExecuteSqlCommand(
"DELETE FROM dbo.Products WHERE ProductId = {0}",
targetObject.ProductId);
}
}
public void Remove(string barcode)
{
using (EntityContext context = new EntityContext())
{
context.Database.ExecuteSqlCommand(
"DELETE FROM dbo.Products WHERE Barcode = {0}",
barcode);
}
}
}
}

@ -0,0 +1,108 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TinyPosEntity.Entity;
namespace TinyPosEntity.Service
{
public class ProductTypeService
{
static ProductTypeService instance;
public static ProductTypeService Instance { get { Init(); return instance; } }
private static void Init()
{
if (instance == null)
instance = new ProductTypeService();
}
public void Create(ProductType targetObject)
{
using (EntityContext context = new EntityContext())
{
context.ProductTypes.Add(targetObject);
context.SaveChanges();
}
}
public void Create(List<ProductType> targetObject)
{
using (EntityContext context = new EntityContext())
{
foreach (ProductType type in targetObject)
{
context.ProductTypes.Add(type);
}
context.SaveChanges();
}
}
public List<ProductType> FindAll()
{
using (EntityContext context = new EntityContext())
{
var qry = from pt in context.ProductTypes
orderby pt.ProductTypeId ascending
select pt;
if (qry.Count() < 1)
return null;
return qry.ToList();
}
}
public ProductType Find(ProductType targetObject)
{
using (EntityContext context = new EntityContext())
{
var qry = from pt in context.ProductTypes
where pt.Name.Equals(targetObject.Name)
select pt;
if (qry.Count() < 1)
return null;
return qry.ToArray()[0];
}
}
public ProductType Find(string name)
{
using (EntityContext context = new EntityContext())
{
var qry = from pt in context.ProductTypes
where pt.Name.Equals(name)
select pt;
if (qry.Count() < 1)
return null;
return qry.ToArray()[0];
}
}
public void Remove(ProductType targetObject)
{
using (EntityContext context = new EntityContext())
{
context.Database.ExecuteSqlCommand(
"DELETE FROM dbo.Students WHERE ProductTypeId = {0}",
targetObject.ProductTypeId);
}
}
public void Remove(string name)
{
using (EntityContext context = new EntityContext())
{
context.Database.ExecuteSqlCommand(
"DELETE FROM dbo.Students WHERE Name = {0}",
name);
}
}
}
}

@ -0,0 +1,61 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TinyPosEntity.Entity;
namespace TinyPosEntity.Service
{
public class TransactionItemService
{
static TransactionItemService instance;
public static TransactionItemService Instance { get { Init(); return instance; } }
private static void Init()
{
if (instance == null)
instance = new TransactionItemService();
}
public void Create(TransactionItem targetObject)
{
using (EntityContext context = new EntityContext())
{
context.TransactionItems.Add(targetObject);
context.SaveChanges();
}
}
public void Create(List<TransactionItem> targetObject)
{
using (EntityContext context = new EntityContext())
{
foreach (TransactionItem type in targetObject)
{
context.TransactionItems.Add(type);
}
context.SaveChanges();
}
}
public List<TransactionItem> Find(DateTime fromDateTime, DateTime toDateTime)
{
using (EntityContext context = new EntityContext())
{
var qry = from ti in context.TransactionItems
join t in context.Transactions
on ti.Transaction equals t
where (t.Timestamp >= fromDateTime && t.Timestamp <= toDateTime)
orderby t.Timestamp descending
select ti;
if (qry.Count() < 1)
return null;
return qry.ToList();
}
}
}
}

@ -0,0 +1,59 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TinyPosEntity.Entity;
namespace TinyPosEntity.Service
{
public class TransactionService
{
static TransactionService instance;
public static TransactionService Instance { get { Init(); return instance; } }
private static void Init()
{
if (instance == null)
instance = new TransactionService();
}
public void Create(Transaction targetObject)
{
using (EntityContext context = new EntityContext())
{
context.Transactions.Add(targetObject);
context.SaveChanges();
}
}
public void Create(List<Transaction> targetObject)
{
using (EntityContext context = new EntityContext())
{
foreach (Transaction type in targetObject)
{
context.Transactions.Add(type);
}
context.SaveChanges();
}
}
public List<Transaction> Find(DateTime fromDateTime, DateTime toDateTime)
{
using (EntityContext context = new EntityContext())
{
var qry = from t in context.Transactions
where (t.Timestamp >= fromDateTime && t.Timestamp <= toDateTime)
orderby t.Timestamp descending
select t;
if (qry.Count() < 1)
return null;
return qry.ToList();
}
}
}
}

@ -53,21 +53,25 @@
<ItemGroup> <ItemGroup>
<Compile Include="EntityContext.cs" /> <Compile Include="EntityContext.cs" />
<Compile Include="EntityController.cs" /> <Compile Include="EntityController.cs" />
<Compile Include="Product.cs" /> <Compile Include="Entity\Product.cs" />
<Compile Include="ProductType.cs" /> <Compile Include="Entity\ProductType.cs" />
<Compile Include="Properties\Settings.Designer.cs"> <Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen> <AutoGen>True</AutoGen>
<DesignTimeSharedInput>True</DesignTimeSharedInput> <DesignTimeSharedInput>True</DesignTimeSharedInput>
<DependentUpon>Settings.settings</DependentUpon> <DependentUpon>Settings.settings</DependentUpon>
</Compile> </Compile>
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Service\ProductService.cs" />
<Compile Include="Service\ProductTypeService.cs" />
<Compile Include="Service\TransactionItemService.cs" />
<Compile Include="Service\TransactionService.cs" />
<Compile Include="TestDatabaseDataSet.Designer.cs"> <Compile Include="TestDatabaseDataSet.Designer.cs">
<AutoGen>True</AutoGen> <AutoGen>True</AutoGen>
<DesignTime>True</DesignTime> <DesignTime>True</DesignTime>
<DependentUpon>TestDatabaseDataSet.xsd</DependentUpon> <DependentUpon>TestDatabaseDataSet.xsd</DependentUpon>
</Compile> </Compile>
<Compile Include="Transaction.cs" /> <Compile Include="Entity\Transaction.cs" />
<Compile Include="TransactionItem.cs" /> <Compile Include="Entity\TransactionItem.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="App.config" /> <None Include="App.config" />

Loading…
Cancel
Save