-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathVehicle.sol
132 lines (111 loc) · 3.14 KB
/
Vehicle.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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
pragma solidity ^0.4.17;
contract VehicleFactory {
address[] public deployedVehicles;
mapping(string => bool) private registrationLog;
function createVehicle(string regNumber) public {
require(!registrationLog[regNumber]);
address newVehicle = new Vehicle(regNumber, msg.sender);
registrationLog[regNumber] = true;
deployedVehicles.push(newVehicle);
}
function getDeployedVehicles() public view returns(address[]) {
return deployedVehicles;
}
}
contract Vehicle {
struct Ownership {
string Owner;
string Address;
string NIC;
string Email;
string Telephone;
string Date;
}
struct ChassisN {
string chassis;
string date;
}
struct Engine {
string engine;
string date;
}
struct Colours {
string colour;
string date;
}
Ownership[] public ownerships;
ChassisN[] public chassisNumbers;
Engine[] public engineNumbers;
Colours[] public colours;
string public owner;
string public nic;
string public Raddress;
string public engine;
string public chassis;
string public colour;
string public provincialCouncil;
address public manager;
string public registrationNumber;
string public email;
string public telephone;
string public date;
modifier restricted() {
require(msg.sender == manager);
_;
}
function Vehicle(string regNumber, address vehicleCreator) public {
manager = vehicleCreator;
registrationNumber = regNumber;
}
function setAll(string Owner, string Address, string NIC, string Email, string Telephone, string Date, string province, string chassisN, string engineN, string colourN) public restricted {
createOwner(Owner,Address,NIC,Email,Telephone,Date);
setProvincialCouncil(province);
setengineNumber(engineN,Date);
setColour(colourN,Date);
setchassisNumber(chassisN,Date);
}
function createOwner(string Owner, string Address, string NIC, string Email, string Telephone, string Date) public restricted {
owner = Owner;
nic = NIC;
Raddress = Address;
email = Email;
telephone = Telephone;
date = Date;
Ownership memory newOwner = Ownership({
Owner: Owner,
Address: Address,
NIC: NIC,
Email: Email,
Telephone: Telephone,
Date: Date
});
ownerships.push(newOwner);
}
function setProvincialCouncil(string province) public restricted {
provincialCouncil = province;
}
function setchassisNumber(string chassisN, string date) public restricted {
chassis = chassisN;
ChassisN memory newChassis = ChassisN({
chassis: chassisN,
date: date
});
chassisNumbers.push(newChassis);
}
function setengineNumber(string engineN, string date) public restricted {
engine = engineN;
Engine memory newEngine = Engine({
engine: engineN,
date: date
});
engineNumbers.push(newEngine);
}
function setColour(string colourN, string date) public restricted {
colour = colourN;
Colours memory newColour = Colours({
colour: colourN,
date: date
});
colours.push(newColour);
}
}