Skip to content

Commit 2703250

Browse files
committed
Added manager with database information
1 parent a2aeb8f commit 2703250

16 files changed

Lines changed: 1037 additions & 1257 deletions

File tree

src/Store simulation/Assets/!ProjectFiles/Features/Infrastructure/ProjectStateMachine/States/ManagerState.cs

Lines changed: 95 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ public ManagerState(GameBootstrap initializer, IWindowService windowService, IDa
2323
private readonly IDataBaseService _dataBaseService;
2424
private readonly CompositeDisposable _disposable = new();
2525
private ManagerUI _managerUI;
26-
private Action _onCloseWindow;
2726

2827
public void OnEnter()
2928
{
@@ -44,96 +43,141 @@ private async void OpenManagerWindow()
4443
_managerUI = await _windowService.OpenAndGetComponent<ManagerUI>(WindowID.Manager);
4544

4645
_managerUI.BackButton.OnClickAsObservable()
47-
.Subscribe(_ => Initializer.StateMachine.SwitchState<GameMainMenuState>())
48-
.AddTo(_disposable);
46+
.Subscribe(_ => Initializer.StateMachine.SwitchState<GameMainMenuState>()).AddTo(_disposable);
4947

50-
_managerUI.CategoryButton.OnClickAsObservable().Subscribe(_ => OpenCategoryWindow()).AddTo(_disposable);
51-
_managerUI.CategoryProductButton.OnClickAsObservable().Subscribe(_ => OpenCategoryProduct()).AddTo(_disposable);
48+
_managerUI.CategoryButton.OnClickAsObservable().Subscribe(_ => OpenCategory()).AddTo(_disposable);
49+
_managerUI.CategoryProductButton.OnClickAsObservable().Subscribe(_ => OpenCategoryProduct())
50+
.AddTo(_disposable);
5251
_managerUI.EmployeesButton.OnClickAsObservable().Subscribe(_ => OpenEmployees()).AddTo(_disposable);
5352
_managerUI.ProductsButton.OnClickAsObservable().Subscribe(_ => OpenProducts()).AddTo(_disposable);
54-
_managerUI.ProductToPurchaseButton.OnClickAsObservable().Subscribe(_ => OpenProductToPurchase()).AddTo(_disposable);
55-
_managerUI.ProductToStockButton.OnClickAsObservable().Subscribe(_ => OpenProductToStock()).AddTo(_disposable);
53+
_managerUI.ProductToPurchaseButton.OnClickAsObservable().Subscribe(_ => OpenProductToPurchase())
54+
.AddTo(_disposable);
55+
_managerUI.ProductToStockButton.OnClickAsObservable().Subscribe(_ => OpenProductToStock())
56+
.AddTo(_disposable);
5657
_managerUI.StoreButton.OnClickAsObservable().Subscribe(_ => OpenStore()).AddTo(_disposable);
5758
_managerUI.TransactionsButton.OnClickAsObservable().Subscribe(_ => OpenTransactions()).AddTo(_disposable);
5859

5960
_windowService.Close(WindowID.Loading);
6061
}
6162

62-
private void OpenCategoryWindow()
63-
{
64-
_onCloseWindow?.Invoke();
65-
66-
var allCategories = _dataBaseService.GetAllCategories();
67-
68-
_managerUI.CategoryUI.SetActive(true);
69-
for (var i = 0; i < allCategories.Length; i++)
70-
{
71-
var category = allCategories[i];
72-
_managerUI.CategoryUI.AddItem(i + 1, category.Name);
73-
}
74-
75-
_onCloseWindow = () =>
76-
{
77-
_managerUI.CategoryUI.Clear();
78-
_managerUI.CategoryUI.SetActive(false);
79-
_onCloseWindow = null;
80-
};
81-
}
82-
8363
private void OpenCategory()
8464
{
85-
_onCloseWindow?.Invoke();
86-
87-
_onCloseWindow = () => { _onCloseWindow = null; };
65+
OpenItems(() => _dataBaseService.GetAllCategories(), item => new object[]
66+
{
67+
item.Name
68+
}
69+
);
8870
}
8971

9072
private void OpenCategoryProduct()
9173
{
92-
_onCloseWindow?.Invoke();
93-
94-
_onCloseWindow = () => { _onCloseWindow = null; };
74+
OpenItems(() => _dataBaseService.GetAllCategoryProducts(), item => new object[]
75+
{
76+
item.CategoryId,
77+
item.ProductId
78+
}
79+
);
9580
}
9681

9782
private void OpenEmployees()
9883
{
99-
_onCloseWindow?.Invoke();
100-
101-
_onCloseWindow = () => { _onCloseWindow = null; };
84+
OpenItems(() => _dataBaseService.GetAllEmployees(), item => new object[]
85+
{
86+
item.Id,
87+
item.Name,
88+
item.Position,
89+
item.Salary,
90+
item.HireDate,
91+
item.MovingSpeed,
92+
item.ServiceSpeed
93+
}
94+
);
10295
}
10396

10497
private void OpenProducts()
10598
{
106-
_onCloseWindow?.Invoke();
107-
108-
_onCloseWindow = () => { _onCloseWindow = null; };
99+
OpenItems(() => _dataBaseService.GetAllProducts(), item => new object[]
100+
{
101+
item.Id,
102+
item.Name,
103+
item.Description,
104+
item.PurchasePrice,
105+
item.SellingPrice,
106+
item.Category
107+
}
108+
);
109109
}
110110

111111
private void OpenProductToPurchase()
112112
{
113-
_onCloseWindow?.Invoke();
114-
115-
_onCloseWindow = () => { _onCloseWindow = null; };
113+
OpenItems(() => _dataBaseService.GetAllProductsToPurchase(), item => new object[]
114+
{
115+
item.ProductId,
116+
item.ProductName,
117+
item.Quantity
118+
}
119+
);
116120
}
117121

118122
private void OpenProductToStock()
119123
{
120-
_onCloseWindow?.Invoke();
121-
122-
_onCloseWindow = () => { _onCloseWindow = null; };
124+
OpenItems(() => _dataBaseService.GetAllProductToStock(), item => new object[]
125+
{
126+
item.ProductId,
127+
item.ProductName,
128+
item.Quantity
129+
}
130+
);
123131
}
124132

125133
private void OpenStore()
126134
{
127-
_onCloseWindow?.Invoke();
128-
129-
_onCloseWindow = () => { _onCloseWindow = null; };
135+
OpenItems(() => _dataBaseService.GetAllStores(), item => new object[]
136+
{
137+
item.Id,
138+
item.Name,
139+
item.Address,
140+
item.EmployeeId,
141+
item.Balance,
142+
item.TotalEarnings,
143+
item.TotalExpenses,
144+
item.TotalProductsSold,
145+
item.TotalCustomers,
146+
}
147+
);
130148
}
131149

132150
private void OpenTransactions()
133151
{
134-
_onCloseWindow?.Invoke();
152+
OpenItems(() => _dataBaseService.GetAllTransactions(), item => new object[]
153+
{
154+
item.Id,
155+
item.StoreId,
156+
item.TransactionDateTime,
157+
item.Type,
158+
item.TransactionAmount
159+
}
160+
);
161+
}
162+
163+
private void OpenItems<T>(Func<T[]> getData, Func<T, object[]> mapItem)
164+
{
165+
CloseWindow();
135166

136-
_onCloseWindow = () => { _onCloseWindow = null; };
167+
_managerUI.TableUI.SetActive(true);
168+
169+
var items = getData();
170+
171+
foreach (var arg in items)
172+
{
173+
_managerUI.TableUI.AddItem(mapItem(arg));
174+
}
175+
}
176+
177+
private void CloseWindow()
178+
{
179+
_managerUI.TableUI.Clear();
180+
_managerUI.TableUI.SetActive(false);
137181
}
138182
}
139183
}

src/Store simulation/Assets/!ProjectFiles/Features/Infrastructure/Services/DataBase/IDataBaseService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@ public interface IDataBaseService
2828
void AddProductToPurchaseById(int id, int quantity);
2929
void RemoveProductToPurchaseById(int id);
3030

31-
StoreData[] GetAllStoreData();
31+
StoreData[] GetAllStores();
3232
StoreData GetStoreData(int storeId);
3333
void UpdatedStoreData(int storeId, int balance, int totalEarnings, int totalExpenses, int totalProductsSold,
3434
int totalCustomers);
3535

3636
TransactionData[] GetAllTransactions();
3737
TransactionData GetTransactionById(int id);
38-
void AddTransaction(int storeId, TransactionData.TransactionType type, int totalPrice);
38+
void AddTransaction(int storeId, TransactionType type, int totalPrice);
3939
}
4040
}

src/Store simulation/Assets/!ProjectFiles/Features/Infrastructure/Services/DataBase/SqLiteDataBaseService.cs

Lines changed: 56 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ public void ConnectToDataBase()
1818
return;
1919
}
2020

21-
_connection = new SqliteConnection("URI=file:" + Application.streamingAssetsPath + "/data_base.db");
21+
_connection = new SqliteConnection("URI=file:"
22+
+ Application.streamingAssetsPath
23+
+ "/data_base.db"
24+
);
2225
_connection.Open();
2326
}
2427

@@ -89,10 +92,11 @@ public EmployeeData[] GetAllEmployees()
8992
return employeeData;
9093
}
9194

92-
public StoreData[] GetAllStoreData()
95+
public StoreData[] GetAllStores()
9396
{
94-
var query = "SELECT id, name, address, employee_id, balance, total_earnings, total_expenses, total_products_sold, total_customers " +
95-
"FROM Store";
97+
var query =
98+
"SELECT id, name, address, employee_id, balance, total_earnings, total_expenses, total_products_sold, total_customers " +
99+
"FROM Store";
96100

97101
var dataTable = ExecuteQuery(query);
98102

@@ -153,12 +157,48 @@ public void UpdatedStoreData(int storeId, int balance, int totalEarnings, int to
153157

154158
public TransactionData[] GetAllTransactions()
155159
{
156-
throw new NotImplementedException();
160+
var query = "SELECT id, store_id, transaction_datetime, transaction_type, transaction_amount " +
161+
"FROM Transactions";
162+
163+
var dataTable = ExecuteQuery(query);
164+
165+
var transactionData = new TransactionData[dataTable.Rows.Count];
166+
167+
for (var i = 0; i < dataTable.Rows.Count; i++)
168+
{
169+
transactionData[i] = new TransactionData
170+
{
171+
Id = Convert.ToInt32(dataTable.Rows[i]["id"]),
172+
StoreId = Convert.ToInt32(dataTable.Rows[i]["store_id"]),
173+
TransactionDateTime = Convert.ToDateTime(dataTable.Rows[i]["transaction_datetime"]),
174+
Type = (TransactionType)Enum.Parse(typeof(TransactionType),
175+
dataTable.Rows[i]["transaction_type"].ToString()),
176+
TransactionAmount = Convert.ToInt32(dataTable.Rows[i]["transaction_amount"])
177+
};
178+
}
179+
180+
return transactionData;
157181
}
158182

159183
public TransactionData GetTransactionById(int id)
160184
{
161-
throw new NotImplementedException();
185+
var query = "SELECT id, store_id, transaction_datetime, transaction_type, transaction_amount " +
186+
"FROM Transactions " +
187+
$"WHERE id = {id}";
188+
189+
var dataTable = ExecuteQuery(query);
190+
191+
var transactionData = new TransactionData
192+
{
193+
Id = Convert.ToInt32(dataTable.Rows[0]["id"]),
194+
StoreId = Convert.ToInt32(dataTable.Rows[0]["store_id"]),
195+
TransactionDateTime = Convert.ToDateTime(dataTable.Rows[0]["transaction_datetime"]),
196+
Type = (TransactionType)Enum.Parse(typeof(TransactionType),
197+
dataTable.Rows[0]["transaction_type"].ToString()),
198+
TransactionAmount = Convert.ToInt32(dataTable.Rows[0]["transaction_amount"])
199+
};
200+
201+
return transactionData;
162202
}
163203

164204
public EmployeeData GetEmployeeByStoreId(int storeId)
@@ -390,7 +430,7 @@ public void RemoveProductToPurchaseById(int id)
390430
ExecuteNonQuery(query);
391431
}
392432

393-
public void AddTransaction(int storeId, TransactionData.TransactionType type, int totalPrice)
433+
public void AddTransaction(int storeId, TransactionType type, int totalPrice)
394434
{
395435
var query =
396436
"INSERT INTO Transactions (store_id, transaction_datetime, transaction_type, transaction_amount) " +
@@ -415,8 +455,15 @@ private DataTable ExecuteQuery(string query)
415455

416456
var dataTable = new DataTable();
417457

418-
dataTable.Load(reader);
419-
458+
try
459+
{
460+
dataTable.Load(reader);
461+
}
462+
catch (Exception e)
463+
{
464+
Debug.LogError(e);
465+
}
466+
420467
return dataTable;
421468
}
422469

src/Store simulation/Assets/!ProjectFiles/Features/Infrastructure/Services/DataBase/TransactionData.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ public struct TransactionData
1010
public TransactionType Type;
1111
public int TransactionAmount;
1212

13-
public enum TransactionType
14-
{
15-
purchase,
16-
sale
17-
}
13+
}
14+
15+
public enum TransactionType
16+
{
17+
purchase,
18+
sale
1819
}
1920
}

src/Store simulation/Assets/!ProjectFiles/Features/Infrastructure/Services/Market/MarketService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public void OrderProducts()
106106
}
107107
}
108108

109-
_dataBaseService.AddTransaction(1, TransactionData.TransactionType.purchase, price);
109+
_dataBaseService.AddTransaction(1, TransactionType.purchase, price);
110110

111111
MarketData.spent.Value += price;
112112
MarketData.balance.Value -= price;
@@ -127,7 +127,7 @@ public void PurchaseByBuyer((int id, int count)[] cart)
127127

128128
MarketData.buyerCount.Value++;
129129

130-
_dataBaseService.AddTransaction(1, TransactionData.TransactionType.sale, totalPrice);
130+
_dataBaseService.AddTransaction(1, TransactionType.sale, totalPrice);
131131

132132
UpdateStoreData();
133133
}

0 commit comments

Comments
 (0)