From 985bd37ef2de2a79645182036a29fca6373629b1 Mon Sep 17 00:00:00 2001
From: Andri Joos <andri@joos.io>
Date: Fri, 29 Nov 2024 17:19:38 +0100
Subject: [PATCH] marketplace sell

---
 .../Marketplaces/Interfaces/IPotatoMarketplace.cs |  2 +-
 Frontend/Marketplaces/PotatoMarketplaceMock.cs    | 15 +++++++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/Frontend/Marketplaces/Interfaces/IPotatoMarketplace.cs b/Frontend/Marketplaces/Interfaces/IPotatoMarketplace.cs
index b42f07e..9be9856 100644
--- a/Frontend/Marketplaces/Interfaces/IPotatoMarketplace.cs
+++ b/Frontend/Marketplaces/Interfaces/IPotatoMarketplace.cs
@@ -11,6 +11,6 @@ namespace Frontend.Marketplaces.Interfaces
         public Task<double> PotatoKgPriceInEth { get; }
         public Task<bool> Approve(Web3 approverClient, BigInteger amount);
         public Task<PotatoTransaction?> Buy(string ownerAddress);
-        // public double Sell(PotatoTransaction transaction);
+        public Task<bool> Sell(PotatoTransaction transaction, string receiverAddress);
     }
 }
diff --git a/Frontend/Marketplaces/PotatoMarketplaceMock.cs b/Frontend/Marketplaces/PotatoMarketplaceMock.cs
index 1445f45..2d2024a 100644
--- a/Frontend/Marketplaces/PotatoMarketplaceMock.cs
+++ b/Frontend/Marketplaces/PotatoMarketplaceMock.cs
@@ -69,6 +69,21 @@ public class PotatoMarketplaceMock(
         };
     }
 
+    public async Task<bool> Sell(PotatoTransaction transaction, string receiverAddress)
+    {
+        var amount = (double)await PotatoKgWeiPrice() * transaction.Weight;
+
+        var transferHandler = web3.Eth.GetContractTransactionHandler<TransferFunction>();
+        var transferFunction = new TransferFunction
+        {
+            To = receiverAddress,
+            Value = new BigInteger(amount),
+        };
+
+        var receipt = await transferHandler.SendRequestAndWaitForReceiptAsync(wethAddress, transferFunction);
+        return receipt.Status.Value == 1;
+    }
+
     private static async Task<double> EthChfPrice()
     {
         string url = "https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=CHF";
-- 
GitLab