diff --git a/std-3/1_CalculatorUsingLib/CalculateDummy.sol b/std-3/1_CalculatorUsingLib/CalculateDummy.sol new file mode 100644 index 0000000..02f6671 --- /dev/null +++ b/std-3/1_CalculatorUsingLib/CalculateDummy.sol @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.11; +import "./CalculatorLibrary.sol"; +contract Math{ + address public lib ; + constructor(){ + lib=address(CalculatorLibrary);//it gives the address of Calculator Library + } + + uint public sum= CalculatorLibrary.add(2,3); + uint public sub = CalculatorLibrary.sub(3,5); + uint public mul= CalculatorLibrary.mul(10,20); + uint public div = CalculatorLibrary.div(20,10); + uint public max= CalculatorLibrary.max(34,67); + uint public min = CalculatorLibrary.min(12,45); + uint public mod = CalculatorLibrary.mod(10,20); + +} \ No newline at end of file diff --git a/std-3/1_CalculatorUsingLib/CalculatorLibrary.sol b/std-3/1_CalculatorUsingLib/CalculatorLibrary.sol new file mode 100644 index 0000000..e6326e2 --- /dev/null +++ b/std-3/1_CalculatorUsingLib/CalculatorLibrary.sol @@ -0,0 +1,40 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity >=0.7.0 <0.9.0; + +// We have to implement this functions in our library +// add(uint256 a, uint256 b) → uint256 +// sub(uint256 a, uint256 b) → uint256 +// mul(uint256 a, uint256 b) → uint256 +// div(uint256 a, uint256 b) → uint256 + + +// @Library Is Deployed On Polygon Testnet Address :- "0x84903e57A043d28B5e476dB3cF6F5D9193AF5000"; + +library MathLibrary { + //For Addition + function add(uint256 num1, uint256 num2) external pure returns (uint256) { + return num1 + num2; + } + + // For Substraction + function sub(uint256 num1, uint256 num2) external pure returns (uint256) { + require(num1 - num2 < 0); + return num1 - num2; + } + + //For Multiplication + function mul(uint256 num1, uint256 num2) external pure returns (uint256) { + return num1 * num2; + } + + //For Division + function div(uint256 num1, uint256 num2) external pure returns (uint256) { + require(num1 == 0 || num2 == 0); + // if(num1==0 || num2==0){ + // revert("Undefined");// To Tackle Undefined Error + // } + return num1 / num2; + } + + +} diff --git a/std-5/Tinder.sol b/std-5/Tinder.sol new file mode 100644 index 0000000..2a8b46a --- /dev/null +++ b/std-5/Tinder.sol @@ -0,0 +1,117 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.11; +pragma experimental ABIEncoderV2; +contract DTinder{ + //1. Register User + //2. Matching: swipe right / left + //3. Messaging: send messages to matches + //After Reading All contracts and working on all contracts in std-0 ,std-1,std-2,std-3,std-4 + //This is tinder application based on solidity + enum Gender { + MALE,FEMALE,OTHER + } + enum SwipeStatus{ + UNKNOWN, + LIKE, + DISLIKE + } + struct User{ + string name ; + string city; + Gender gender; + uint age; + string picUrl; + } + + struct SwipeSession{ + uint start; + uint count; + } + + mapping(address=>User) private users; + mapping(bytes32=>mapping(uint=>address[])) private userIdsByCity; + mapping(address=>mapping(address=>SwipeStatus)) private swipes; + mapping(address=>SwipeSession) private swipeSessions; + + event NewMatch(address indexed from ,address indexed to,uint date); + + event NewMessage(address indexed from ,address indexed to , string content,uint date); + // Registering user + function register(string calldata _name,string calldata _city,Gender _gender,uint _age ,string calldata _url) external { + require(users[msg.sender].age==0,"User is Already exist"); + require(!_isEmptyString(_name),"Please enter name "); + require(!_isEmptyString(_city),"Please enter City "); + require(_age>17,"You are not above 17"); + require(!_isEmptyString(_url),"Please enter Pic url "); + users[msg.sender]=User(_name,_city,_gender,_age,_url); + userIdsByCity[keccak256(abi.encodePacked(_city))][uint(_gender)].push(msg.sender); + + } + // Get matchable users for user + function getMatchableUsers() view external userExist(msg.sender) returns(User[] memory){ + User storage user = users[msg.sender]; + uint oppositeGender= user.gender==Gender.MALE ? 1: 0; + address[] storage userIds= userIdsByCity[keccak256(abi.encodePacked(user.city))][oppositeGender]; + uint matchableUsersCount; + + for(uint i=0;i