/
rumina-v
/
asp-services
Обзор
Документация
Войти
/
rumina-v
/
asp-services
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/App/Repositories/OrderRepository.cs
76 строк
2 KB
Viktoria Rumina
Add solution files
04 июн 2026, 12:13
04 июн 2026, 12:13
0d8ce54
Код
Авторство
О чём код?
using App.Abstractions.Repositories; using App.Abstractions.Storage; using App.Entities; namespace App.Repositories; public class OrderRepository : IOrderRepository { private readonly IFileDatabase _fileDatabase; public OrderRepository(IFileDatabase fileDatabase) { _fileDatabase = fileDatabase; } public IReadOnlyCollection<Order> GetAll() { var state = _fileDatabase.GetState(); return state.Orders.ToList().AsReadOnly(); } public Order? GetById(Guid id) { var state = _fileDatabase.GetState(); return state.Orders.FirstOrDefault(o => o.Id == id); } public IReadOnlyCollection<Order> GetByCustomerId(Guid customerId) { var state = _fileDatabase.GetState(); return state.Orders .Where(o => o.CustomerId == customerId) .ToList() .AsReadOnly(); } public void Add(Order order) { var state = _fileDatabase.GetState(); state.Orders.Add(order); _fileDatabase.SaveState(state); } public void Update(Order order) { var state = _fileDatabase.GetState(); var existingOrder = state.Orders.FirstOrDefault(o => o.Id == order.Id); if (existingOrder is null) { throw new InvalidOperationException("Order not found."); } existingOrder.CustomerId = order.CustomerId; existingOrder.ProductIds = order.ProductIds; existingOrder.TotalAmount = order.TotalAmount; existingOrder.Status = order.Status; existingOrder.CreatedAtUtc = order.CreatedAtUtc; _fileDatabase.SaveState(state); } public void Delete(Guid id) { var state = _fileDatabase.GetState(); var order = state.Orders.FirstOrDefault(o => o.Id == id); if (order is null) { return; } state.Orders.Remove(order); _fileDatabase.SaveState(state); } }