Skip to content

Instantly share code, notes, and snippets.

Last active November 17, 2022 20:32
What would you like to do?
pragma solidity ^0.6.0;
contract HotelRoom {
enum Statuses { Vacant, Occupied }
Statuses currentStatus;
address payable public owner;
event Occupy(address _occupant, uint _value);
constructor() public {
owner = msg.sender;
currentStatus = Statuses.Vacant;
modifier onlyWhileVacant {
require(currentStatus == Statuses.Vacant, "Currently occupied.");
modifier costs(uint _amount) {
require(msg.value >= _amount, "Not enough Ether provided.");
receive() external payable onlyWhileVacant costs(2 ether) {
currentStatus = Statuses.Occupied;
emit Occupy(msg.sender, msg.value);
Copy link

@neeleshwark17 thanks for the tip

Copy link


Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment