public async Task <IActionResult> Activate([FromServices] RemoteBillingService billing, [FromServices] Provider provider, [FromBody] ActivateByCodeRequest request) { using (var rep = new Repository <ActivationCode>(provider)) { var code = await rep.Get(x => x.Number == request.Number && x.Code == request.Code).SingleOrDefaultAsync(); if (code == null) { return(Ok(ApiResponse.Failed(ApiErrorCode.ResourceNotFound, "Активационная карта с указанными данными не найдена"))); } if (code.Activated.HasValue) { return(Ok(ApiResponse.Failed(ApiErrorCode.ResourceNotFound, "Активационная карта с указанными данными уже активирована"))); } var packetId = await billing.AddPacketAsync(code.PacketType.Code, User.Identity.Name); code.Activated = DateTime.Now; code.PacketId = packetId; await rep.UpdateAsync(code); await rep.CommitAsync(); return(Ok(ApiResponse.Success(new ActivateByCodeResponse() { PacketName = code.PacketType.Name }))); } }
public async Task <IActionResult> Complete( [FromServices] QazKomAckquiringService qazKom, [FromServices] RemoteBillingService billing, [FromQuery] string orderId, string response) { Log.Information("{EventId} query with {orderId}, {response}", "QAZKOM", orderId, response); var transaction = await qazKom.TryUpdateTransactionByOrderIdAsync(orderId); await billing.AddPacketAsync(transaction.ProductCode, transaction.Employee); await qazKom.CompleteTransaction(transaction); Log.Information("{EventId} transaction completed {orderId}", "QAZKOM", orderId); return(Ok(0)); }