Skip to content

Commit f96e3b0

Browse files
committed
Added a new Generic Repository
1 parent 284fb79 commit f96e3b0

File tree

14 files changed

+155
-6
lines changed

14 files changed

+155
-6
lines changed

POS.Domain/Abstract/IEstablishmentRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace POS.Domain.Abstract
66
{
7-
public interface IEstablishmentRepository : IDisposable
7+
public interface IEstablishmentRepository : IGenericRepository<Establishment>
88
{
99
#region Public Properties
1010

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using System;
2+
using System.Linq;
3+
using System.Linq.Expressions;
4+
5+
namespace POS.Domain.Abstract
6+
{
7+
public interface IGenericRepository<T> : IDisposable where T : class
8+
{
9+
IQueryable<T> GetAll();
10+
IQueryable<T> FindBy(Expression<Func<T, bool>> predicate);
11+
void Add(T entity);
12+
void Delete(T entity);
13+
void Edit(T entity);
14+
void Save();
15+
}
16+
}

POS.Domain/ApplicationService/CartApplicationService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ private Order ProcessTheOrder(Cart cart, ShippingDetails shippingDetails)
4848
catch (Exception)
4949
{
5050
// TODO: Add HttpException handling in place of Exception below
51-
throw new Exception("Erorr building list of roder details -> cart.Lines was probably null.");
51+
throw new Exception("Erorr building list of oder details -> cart.Lines was probably null.");
5252
}
5353

5454
var firstCartLineProduct = cart.Lines.FirstOrDefault();

POS.Domain/Model/Order.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ public class Order
1313

1414
public virtual Establishment Establishment { get; set; }
1515

16+
public decimal ServerTip { get; set; }
17+
1618
public decimal TotalCost { get; set; }
1719

1820
public Promo Promo { get; set; }
@@ -23,9 +25,15 @@ public class Order
2325

2426
public string CustomerName { get; set; }
2527

28+
public int ServerId { get; set; }
29+
30+
public virtual User Server { get; set; }
31+
2632
public Order()
2733
{
2834
TotalCost = 0;
35+
ServerId = 2;
36+
ServerTip = (decimal) 1.00;
2937
}
3038
}
3139

POS.Domain/POS.Domain.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
<ItemGroup>
5858
<Compile Include="Abstract\ICartApplicationService.cs" />
5959
<Compile Include="Abstract\IEstablishmentRepository.cs" />
60+
<Compile Include="Abstract\IGenericRepository.cs" />
6061
<Compile Include="Abstract\IOrderProcessor.cs" />
6162
<Compile Include="Abstract\IProductRepository.cs" />
6263
<Compile Include="Abstract\IRepository.cs" />

POS.Infrastructure/EfDbContextInitializer.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,13 @@ public class EfDbContextInitializer : DropCreateDatabaseIfModelChanges<EfDbConte
1212
protected override void Seed(EfDbContext context)
1313
{
1414
WebSecurity.Register("Admin", "pas5word", "[email protected]", true, "Demo", "Demo");
15+
WebSecurity.Register("Server1", "pas5word", "[email protected]", true, "Eleanor", "Rigsby");
16+
WebSecurity.Register("Server2", "pas5word", "[email protected]", true, "Pattie", "Boyd");
17+
WebSecurity.Register("Server3", "pas5word", "[email protected]", true, "Rosanna", "Arquette");
1518
Roles.CreateRole("Admin");
19+
Roles.CreateRole("Server");
1620
Roles.AddUserToRole("Demo", "Admin");
21+
Roles.AddUsersToRole(new[] {"Server1", "Server2", "Server3"}, "Server");
1722

1823
var parentCategories = new List<ParentCategory>
1924
{
@@ -90,21 +95,21 @@ protected override void Seed(EfDbContext context)
9095
new OrderDetail { OrderId = 1, Quantity = 1, ProductName = "Tennis Racket", UnitPrice = 47, LineItemPromoId = 1},
9196
new OrderDetail { OrderId = 1, Quantity = 3, ProductName = "Tennis Ball", UnitPrice = 6}
9297
},
93-
EstablishmentId = 1, TotalCost = (decimal) 62.5, SalesTax = (decimal) 5.15625, CustomerName = "Albert", TimeProcessed = DateTime.Now.AddHours(-3.00)},
98+
EstablishmentId = 1, TotalCost = (decimal) 62.5, SalesTax = (decimal) 5.15625, CustomerName = "Albert", ServerId = 2, ServerTip = (decimal) 1.50, TimeProcessed = DateTime.Now.AddHours(-3.00)},
9499

95100
new Order { OrderDetails = new List<OrderDetail>()
96101
{
97102
new OrderDetail { OrderId = 2, Quantity = 2, ProductName = "Basketball", UnitPrice = 14},
98103
new OrderDetail { OrderId = 2, Quantity = 1, ProductName = "Tennis Racket", UnitPrice = 47},
99104
new OrderDetail { OrderId = 2, Quantity = 3, ProductName = "Tennis Ball", UnitPrice = 6},
100105
},
101-
EstablishmentId = 1, TotalCost = 93, SalesTax = (decimal) 7.6725, CustomerName = "Henry", TimeProcessed = DateTime.Now},
106+
EstablishmentId = 1, TotalCost = 93, SalesTax = (decimal) 7.6725, CustomerName = "Henry", ServerId = 3, ServerTip = (decimal) 2.25, TimeProcessed = DateTime.Now},
102107

103108
new Order { OrderDetails = new List<OrderDetail>()
104109
{
105110
new OrderDetail { OrderId = 3, Quantity = 1, ProductName = "Basketball", UnitPrice = 14}
106111
},
107-
EstablishmentId = 1, TotalCost = 14, SalesTax = (decimal) 1.155, CustomerName = "Thomas", TimeProcessed = DateTime.Now},
112+
EstablishmentId = 1, TotalCost = 14, SalesTax = (decimal) 1.155, CustomerName = "Thomas", ServerId = 4, ServerTip = (decimal) 3.76, TimeProcessed = DateTime.Now.AddHours(-0.50)},
108113
};
109114
orders.ForEach(s => context.Orders.Add(s));
110115

POS.Infrastructure/EfEstablishmentRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
namespace POS.Infrastructure
88
{
9-
public class EfEstablishmentRepository : IEstablishmentRepository
9+
public class EfEstablishmentRepository : GenericRepository<EfDbContext, Establishment>, IEstablishmentRepository
1010
{
1111
#region Fields
1212

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
using System;
2+
using System.Data.Entity;
3+
using System.Linq;
4+
using POS.Domain.Abstract;
5+
6+
namespace POS.Infrastructure
7+
{
8+
public abstract class GenericRepository<C, T> : IGenericRepository<T>
9+
where T : class
10+
where C : DbContext, new()
11+
{
12+
13+
private C _entities = new C();
14+
public C Context
15+
{
16+
17+
get { return _entities; }
18+
set { _entities = value; }
19+
}
20+
21+
public virtual IQueryable<T> GetAll()
22+
{
23+
24+
IQueryable<T> query = _entities.Set<T>();
25+
return query;
26+
}
27+
28+
public IQueryable<T> FindBy(System.Linq.Expressions.Expression<Func<T, bool>> predicate)
29+
{
30+
31+
IQueryable<T> query = _entities.Set<T>().Where(predicate);
32+
return query;
33+
}
34+
35+
public virtual void Add(T entity)
36+
{
37+
_entities.Set<T>().Add(entity);
38+
}
39+
40+
public virtual void Delete(T entity)
41+
{
42+
_entities.Set<T>().Remove(entity);
43+
}
44+
45+
public virtual void Edit(T entity)
46+
{
47+
_entities.Entry(entity).State = System.Data.EntityState.Modified;
48+
}
49+
50+
public virtual void Save()
51+
{
52+
_entities.SaveChanges();
53+
}
54+
55+
private bool _disposed;
56+
57+
public void Dispose()
58+
{
59+
Dispose(true);
60+
GC.SuppressFinalize(this);
61+
}
62+
63+
protected virtual void Dispose(bool disposing)
64+
{
65+
if (!_disposed)
66+
{
67+
if (disposing)
68+
{
69+
Context.Dispose();
70+
}
71+
}
72+
_disposed = true;
73+
}
74+
}
75+
}

POS.Infrastructure/POS.Infrastructure.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
<Compile Include="EfOrderRepository.cs" />
5454
<Compile Include="EfProductRepository.cs" />
5555
<Compile Include="EFRepository.cs" />
56+
<Compile Include="GenericRepository.cs" />
5657
<Compile Include="Membership\CodeFirstMembershipProvider.cs" />
5758
<Compile Include="Membership\CodeFirstRoleProvider.cs" />
5859
<Compile Include="Membership\Crypto.cs" />

POS/App_Data/pos.ldf

0 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)