From 100e8a9468414e8bd82197d1a306fd4ead944be8 Mon Sep 17 00:00:00 2001
From: Shay Patel
{event.location}
- ${event.ticketPrice} FLR + ${event.ticketPrice}
Host: {event.eventHost}
diff --git a/contracts/EventManager.sol b/contracts/EventManager.sol index 7c0894e..b19b5ba 100644 --- a/contracts/EventManager.sol +++ b/contracts/EventManager.sol @@ -24,9 +24,9 @@ contract EventManager { string name; string description; string location; - uint256 capacity; - uint256 ticketsSold; - uint256 ticketPrice; // in USD cents + uint64 capacity; + uint64 ticketsSold; + uint64 ticketPrice; // in USD cents uint256 eventStartDate; uint256 eventEndDate; string[] images; // array of image URLs @@ -92,7 +92,7 @@ contract EventManager { return centsToFlare(events[_eventId].ticketPrice); } - function createEvent(string memory _name, string memory _description, string memory _location, uint256 _capacity, uint256 _ticketPrice, uint256 _eventStartDate, uint256 _eventEndDate, string[] memory _images) public returns (uint256 _eventId) { + function createEvent(string memory _name, string memory _description, string memory _location, uint64 _capacity, uint64 _ticketPrice, uint256 _eventStartDate, uint256 _eventEndDate, string[] memory _images) public returns (uint256 _eventId) { events[eventCounter] = Event(_name, _description, _location, _capacity, 0, _ticketPrice, _eventStartDate, _eventEndDate, _images, new uint256[](0), payable(msg.sender)); eventCounter++; emit EventCreated(eventCounter - 1, _name, _eventStartDate); diff --git a/contracts/EventManagerABI.json b/contracts/EventManagerABI.json index 73e85db..d22a78d 100644 --- a/contracts/EventManagerABI.json +++ b/contracts/EventManagerABI.json @@ -1,524 +1,524 @@ [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "_ticketId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "bool", - "name": "_allowed", - "type": "bool" - } - ], - "name": "approveTicket", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_eventId", - "type": "uint256" - } - ], - "name": "buyTicket", - "outputs": [ - { - "internalType": "uint256", - "name": "_ticketId", - "type": "uint256" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "_name", - "type": "string" - }, - { - "internalType": "string", - "name": "_description", - "type": "string" - }, - { - "internalType": "string", - "name": "_location", - "type": "string" - }, - { - "internalType": "uint256", - "name": "_capacity", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_ticketPrice", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_eventStartDate", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_eventEndDate", - "type": "uint256" - }, - { - "internalType": "string[]", - "name": "_images", - "type": "string[]" - } - ], - "name": "createEvent", - "outputs": [ - { - "internalType": "uint256", - "name": "_eventId", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "eventId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "eventStartDate", - "type": "uint256" - } - ], - "name": "EventCreated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "ticketId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "eventId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "buyer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "price", - "type": "uint256" - } - ], - "name": "TicketPurchased", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "ticketId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "trustee", - "type": "address" - } - ], - "name": "TicketTransferApproved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "ticketId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "to", - "type": "address" - } - ], - "name": "TicketTransferred", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_ticketId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - } - ], - "name": "transferTicket", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_ticketId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - } - ], - "name": "transferTicketFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_cents", - "type": "uint256" - } - ], - "name": "centsToFlare", - "outputs": [ - { - "internalType": "uint256", - "name": "_flr", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "eventCounter", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "events", - "outputs": [ - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "string", - "name": "description", - "type": "string" - }, - { - "internalType": "string", - "name": "location", - "type": "string" - }, - { - "internalType": "uint256", - "name": "capacity", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "ticketsSold", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "ticketPrice", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "eventStartDate", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "eventEndDate", - "type": "uint256" - }, - { - "internalType": "address payable", - "name": "eventHost", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "feedIds", - "outputs": [ - { - "internalType": "bytes21", - "name": "", - "type": "bytes21" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_eventId", - "type": "uint256" - } - ], - "name": "getEventImages", - "outputs": [ - { - "internalType": "string[]", - "name": "", - "type": "string[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_eventId", - "type": "uint256" - } - ], - "name": "getEventPriceFlare", - "outputs": [ - { - "internalType": "uint256", - "name": "_flr", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_eventId", - "type": "uint256" - } - ], - "name": "getEventTickets", - "outputs": [ - { - "internalType": "uint256[]", - "name": "", - "type": "uint256[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getFlareFeed", - "outputs": [ - { - "internalType": "uint256", - "name": "_feedValue", - "type": "uint256" - }, - { - "internalType": "int8", - "name": "_decimals", - "type": "int8" - }, - { - "internalType": "uint64", - "name": "_timestamp", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getFtsoV2CurrentFeedValues", - "outputs": [ - { - "internalType": "uint256[]", - "name": "_feedValues", - "type": "uint256[]" - }, - { - "internalType": "int8[]", - "name": "_decimals", - "type": "int8[]" - }, - { - "internalType": "uint64", - "name": "_timestamp", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "ticketCounter", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "tickets", - "outputs": [ - { - "internalType": "address", - "name": "holder", - "type": "address" - }, - { - "internalType": "uint256", - "name": "boughtTime", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "eventId", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "userTickets", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } -] + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "eventId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "eventStartDate", + "type": "uint256" + } + ], + "name": "EventCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "ticketId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "eventId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "buyer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "price", + "type": "uint256" + } + ], + "name": "TicketPurchased", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "ticketId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "trustee", + "type": "address" + } + ], + "name": "TicketTransferApproved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "ticketId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "TicketTransferred", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_ticketId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "bool", + "name": "_allowed", + "type": "bool" + } + ], + "name": "approveTicket", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_eventId", + "type": "uint256" + } + ], + "name": "buyTicket", + "outputs": [ + { + "internalType": "uint256", + "name": "_ticketId", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_cents", + "type": "uint256" + } + ], + "name": "centsToFlare", + "outputs": [ + { + "internalType": "uint256", + "name": "_flr", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_description", + "type": "string" + }, + { + "internalType": "string", + "name": "_location", + "type": "string" + }, + { + "internalType": "uint64", + "name": "_capacity", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "_ticketPrice", + "type": "uint64" + }, + { + "internalType": "uint256", + "name": "_eventStartDate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_eventEndDate", + "type": "uint256" + }, + { + "internalType": "string[]", + "name": "_images", + "type": "string[]" + } + ], + "name": "createEvent", + "outputs": [ + { + "internalType": "uint256", + "name": "_eventId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "eventCounter", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "events", + "outputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "string", + "name": "location", + "type": "string" + }, + { + "internalType": "uint64", + "name": "capacity", + "type": "uint64" + }, + { + "internalType": "uint256", + "name": "ticketsSold", + "type": "uint256" + }, + { + "internalType": "uint64", + "name": "ticketPrice", + "type": "uint64" + }, + { + "internalType": "uint256", + "name": "eventStartDate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "eventEndDate", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "eventHost", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "feedIds", + "outputs": [ + { + "internalType": "bytes21", + "name": "", + "type": "bytes21" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_eventId", + "type": "uint256" + } + ], + "name": "getEventImages", + "outputs": [ + { + "internalType": "string[]", + "name": "", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_eventId", + "type": "uint256" + } + ], + "name": "getEventPriceFlare", + "outputs": [ + { + "internalType": "uint256", + "name": "_flr", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_eventId", + "type": "uint256" + } + ], + "name": "getEventTickets", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getFlareFeed", + "outputs": [ + { + "internalType": "uint256", + "name": "_feedValue", + "type": "uint256" + }, + { + "internalType": "int8", + "name": "_decimals", + "type": "int8" + }, + { + "internalType": "uint64", + "name": "_timestamp", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getFtsoV2CurrentFeedValues", + "outputs": [ + { + "internalType": "uint256[]", + "name": "_feedValues", + "type": "uint256[]" + }, + { + "internalType": "int8[]", + "name": "_decimals", + "type": "int8[]" + }, + { + "internalType": "uint64", + "name": "_timestamp", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ticketCounter", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "tickets", + "outputs": [ + { + "internalType": "address", + "name": "holder", + "type": "address" + }, + { + "internalType": "uint256", + "name": "boughtTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "eventId", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_ticketId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "transferTicket", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_ticketId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "transferTicketFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "userTickets", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/lib/fetchEvents.ts b/lib/fetchEvents.ts new file mode 100644 index 0000000..bc9e03f --- /dev/null +++ b/lib/fetchEvents.ts @@ -0,0 +1,53 @@ +import { ethers } from "ethers"; +import { getContract } from "./ethers"; + +interface Event { + eventId: number; + name: string; + description: string; + location: string; + capacity: number; + ticketsSold: number; + ticketPrice: number; + eventStartDate: number; + eventEndDate: number; + images: string[]; + eventHost: string; +} + +export const fetchEvents: () => Promise