pragma solidity 0.7.4; pragma experimental ABIEncoderV2; contract SmartContract { uint number0 = 100; uint number1 = 111; uint number2 = 222; uint number3 = 333; uint number4 = 444; uint number5 = 555; uint number6 = 666; string category0 = "A"; string category1 = "B"; string category2 = "C"; string category3 = "A"; string category4 = "B"; string category5 = "C"; string category6 = "A"; struct Driver{ string FullNameDriver; uint exp; uint RoadAccident ; uint DriverBalance; uint NumberFine; } struct Auto { string category; uint marketplace; uint old; } struct CertificDrive{ uint number; string TimeEnd; string category; } address public BankAddress = 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2; address public InsuranceCompanyAddress = 0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db; address public DriverAddressIvanov = 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4; address public DriverAddressSemenov = 0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB; address public DriverAddressPetrov = 0x617F2E2fD72FD9D5503197092aC168c91465E7f2; address public DriverAddressRomanov = 0x17F6AD8Ef982297579C203069C1DbfFE4348c372; address public DriverAddressDmitriev = 0x5c6B0f7Bf3E7ce046039Bd8FABdfD3f9F5021678; uint public countFine = 0; CertificDrive [] Certific; mapping(address=>CertificDrive) private Certif; mapping(address=>Auto) private nAuto; function PayFine()public payable{ } function BalanceDriverIvanov()public{ msg.sender.transfer(address(DriverAddressIvanov).balance); } function BalanceDriverSemenov()public{ msg.sender.transfer(address(DriverAddressSemenov).balance); } function BalanceDriverPetrov()public{ msg.sender.transfer(address(DriverAddressPetrov).balance); } function BalanceDriverRomanov()public{ msg.sender.transfer(address(DriverAddressRomanov).balance); } function BalanceDriverDmitriev()public{ msg.sender.transfer(address(DriverAddressDmitriev).balance); } function PayInsurance () public payable{ } function GetInsurance () public payable { } function GetBalanceBank () public payable { } function GetInsuranceBalance () public payable { } function GetBalanceDriver () public payable { } function regDriver(string memory FullNameDriver,uint exp, uint RoadAccident, uint NumberFine )public view { Driver memory newDriver; newDriver.FullNameDriver = FullNameDriver; newDriver.exp = exp; newDriver.RoadAccident = RoadAccident; } function Registration(uint number, string memory TimeEnd, string memory category)public { address sender = msg.sender; CertificDrive memory newCertif; newCertif.number = number; newCertif.TimeEnd = TimeEnd; newCertif.category = category; DpsCheck(newCertif,number,category); } function DpsCheck(CertificDrive memory newCertif,uint number,string memory category)private { if(number == number0 && keccak256(abi.encodePacked(category)) == keccak256(abi.encodePacked(category0)) || number == number1 && keccak256(abi.encodePacked(category)) == keccak256(abi.encodePacked(category1)) || number == number2 && keccak256(abi.encodePacked(category)) == keccak256(abi.encodePacked(category2)) || number == number3 && keccak256(abi.encodePacked(category)) == keccak256(abi.encodePacked(category3)) || number == number4 && keccak256(abi.encodePacked(category)) == keccak256(abi.encodePacked(category4)) || number == number5 && keccak256(abi.encodePacked(category)) == keccak256(abi.encodePacked(category5)) || number == number6 && keccak256(abi.encodePacked(category)) == keccak256(abi.encodePacked(category6))){ address sender = msg.sender; Certif[sender] = newCertif; } else { number = 0; } } function regAuto(string memory category,uint marketplace,uint old)public { address sender = msg.sender; Auto memory newAuto; newAuto.category = category; newAuto.marketplace = marketplace; newAuto.old = old; DpsCheck1(newAuto,category); } function DpsCheck1(Auto memory newAuto,string memory category)private { if(keccak256(abi.encodePacked(category)) == keccak256(abi.encodePacked(category0)) ||keccak256(abi.encodePacked(category)) == keccak256(abi.encodePacked(category1)) ||keccak256(abi.encodePacked(category)) == keccak256(abi.encodePacked(category2)) ||keccak256(abi.encodePacked(category)) == keccak256(abi.encodePacked(category3)) ||keccak256(abi.encodePacked(category)) == keccak256(abi.encodePacked(category4)) ||keccak256(abi.encodePacked(category)) == keccak256(abi.encodePacked(category5)) ||keccak256(abi.encodePacked(category)) == keccak256(abi.encodePacked(category6))){ address sender = msg.sender; nAuto[sender] = newAuto; } } function RenewalOfDrivingLicense(string memory TimeEnd,uint countFine, uint NumberFine) public { NumberFine = countFine; if (countFine == 0) { address sender = msg.sender; CertificDrive memory newCertif; newCertif.TimeEnd = TimeEnd; } } }