|
@@ -0,0 +1,160 @@
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+}
|