/
rumina-v
/
asp-services
Обзор
Документация
Войти
/
rumina-v
/
asp-services
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/App/Repositories/CustomerRepository.cs
73 строки
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 CustomerRepository : ICustomerRepository { private readonly IFileDatabase _fileDatabase; public CustomerRepository(IFileDatabase fileDatabase) { _fileDatabase = fileDatabase; } public IReadOnlyCollection<Customer> GetAll() { var state = _fileDatabase.GetState(); return state.Customers.ToList().AsReadOnly(); } public Customer? GetById(Guid id) { var state = _fileDatabase.GetState(); return state.Customers.FirstOrDefault(c => c.Id == id); } public Customer? GetByEmail(string email) { var state = _fileDatabase.GetState(); return state.Customers.FirstOrDefault(c => c.Email.Equals(email, StringComparison.OrdinalIgnoreCase)); } public void Add(Customer customer) { var state = _fileDatabase.GetState(); state.Customers.Add(customer); _fileDatabase.SaveState(state); } public void Update(Customer customer) { var state = _fileDatabase.GetState(); var existingCustomer = state.Customers.FirstOrDefault(c => c.Id == customer.Id); if (existingCustomer is null) { throw new InvalidOperationException("Customer not found."); } existingCustomer.FullName = customer.FullName; existingCustomer.Email = customer.Email; existingCustomer.IsActive = customer.IsActive; existingCustomer.CreatedAtUtc = customer.CreatedAtUtc; _fileDatabase.SaveState(state); } public void Delete(Guid id) { var state = _fileDatabase.GetState(); var customer = state.Customers.FirstOrDefault(c => c.Id == id); if (customer is null) { return; } state.Customers.Remove(customer); _fileDatabase.SaveState(state); } }