Ejemplo n.º 1
0
        public async Task <InvoiceEntity> UpdateInvoiceMetadata(string invoiceId, string storeId, JObject metadata)
        {
            using (var context = _ContextFactory.CreateContext())
            {
                var invoiceData = await GetInvoiceRaw(invoiceId);

                if (invoiceData == null || (storeId != null &&
                                            !invoiceData.StoreDataId.Equals(storeId,
                                                                            StringComparison.InvariantCultureIgnoreCase)))
                {
                    return(null);
                }
                var blob = invoiceData.GetBlob(_Networks);
                blob.Metadata    = InvoiceMetadata.FromJObject(metadata);
                invoiceData.Blob = ToBytes(blob);
                await context.SaveChangesAsync().ConfigureAwait(false);

                return(ToEntity(invoiceData));
            }
        }
Ejemplo n.º 2
0
        public async Task <InvoiceEntity> UpdateInvoiceMetadata(string invoiceId, string storeId, JObject metadata)
        {
            using var context = _applicationDbContextFactory.CreateContext();
            var invoiceData = await GetInvoiceRaw(invoiceId, context);

            if (invoiceData == null || (storeId != null &&
                                        !invoiceData.StoreDataId.Equals(storeId,
                                                                        StringComparison.InvariantCultureIgnoreCase)))
            {
                return(null);
            }
            var blob = invoiceData.GetBlob(_btcPayNetworkProvider);

            var newMetadata = InvoiceMetadata.FromJObject(metadata);
            var oldOrderId  = blob.Metadata.OrderId;
            var newOrderId  = newMetadata.OrderId;

            if (newOrderId != oldOrderId)
            {
                // OrderId is saved in 2 places: (1) the invoice table and (2) in the metadata field. We are updating both for consistency.
                invoiceData.OrderId = newOrderId;

                if (oldOrderId != null && (newOrderId is null || !newOrderId.Equals(oldOrderId, StringComparison.InvariantCulture)))
                {
                    RemoveFromTextSearch(context, invoiceData, oldOrderId);
                }
                if (newOrderId != null)
                {
                    AddToTextSearch(context, invoiceData, new[] { newOrderId });
                }
            }

            blob.Metadata    = newMetadata;
            invoiceData.Blob = ToBytes(blob);
            await context.SaveChangesAsync().ConfigureAwait(false);

            return(ToEntity(invoiceData));
        }