-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathevent_organizer.sol
52 lines (39 loc) · 1.66 KB
/
event_organizer.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// created by Rana jay on 30-10-2023
// SPDX-License-Identifier: MIT
pragma solidity >=0.5.0 < 0.9.0;
contract EventContract{
struct Event{
address organizer;
string name;
uint date;
uint price;
uint ticketCount;
uint ticketRemain;
}
// thera are multiple events so mapping to indexes
mapping(uint=>Event) public events;
mapping(address=>mapping(uint=>uint)) public tickets;
uint public nextId;
function createEvent(string memory name,uint date,uint price,uint ticketCount) external {
require(date>block.timestamp,"You can organise for future date");
require(ticketCount>0,"You can organise event if you create more than 0 tickets");
events[nextId] = Event(msg.sender,name,date,price,ticketCount,ticketCount);
nextId++;
}
function buyTickets(uint id,uint quanitity)external payable {
require(events[id].date!=0,"This event does not exist");
require(events[id].date>block.timestamp,"ebent hase already done");
Event storage _event = events[id];
require(msg.value==(_event.price*quanitity),"Not enough ether");
require(_event.ticketRemain>=quanitity,"Not enough tickets");
_event.ticketRemain-=quanitity;
tickets[msg.sender][id] +=quanitity;
}
function sendTicket(uint id,uint quanitity,address to)external {
require(events[id].date!=0,"This event does not exist");
require(events[id].date>block.timestamp,"ebent hase already done");
require(tickets[msg.sender][id]>=quanitity,"not enough tickets");
tickets[msg.sender][id]-=quanitity;
tickets[to][id]+=quanitity;
}
}