using Microsoft.eShopOnContainers.Services.Ordering.Infrastructure; using Ordering.Domain.Exceptions; using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; namespace Microsoft.eShopOnContainers.Services.Ordering.Infrastructure.Idempotency { public class RequestManager : IRequestManager { private readonly OrderingContext _context; public RequestManager(OrderingContext ctx) { _context = ctx; } public async Task ExistAsync(Guid id) { var request = await _context.FindAsync(id); return request != null; } public async Task CreateRequestForCommandAsync(Guid id) { var exists = await ExistAsync(id); var request = exists ? throw new OrderingDomainException($"Request with {id} already exists") : new ClientRequest() { Id = id, Name = typeof(T).Name, Time = DateTime.UtcNow }; _context.Add(request); await _context.SaveChangesAsync(); } } }