Skip to content

Commit 166d40a

Browse files
authored
Merge pull request #88 from AplaProject/AA-695
Aa 695
2 parents 39add6e + 4fe72f1 commit 166d40a

58 files changed

Lines changed: 2023 additions & 2 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

basic.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -968,7 +968,7 @@
968968
{
969969
"Name": "TokensSend",
970970
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
971-
"Value": "contract TokensSend {\n data {\n Amount money\n Recipient string\n Comment string \"optional\"\n }\n\n func getPermission() {\n var array_permissions array result i int prevContract string\n array_permissions = [\"@1TokensSend\", \"@1TsKeyApprove\", \"@1TsTransferSeller\"]\n\n prevContract = $stack[0]\n if Len($stack) > 2 {\n prevContract = $stack[Len($stack) - 2]\n }\n while i < Len(array_permissions) {\n var contract_name string\n contract_name = array_permissions[i]\n if contract_name==prevContract {\n result = 1\n }\n i = i + 1\n }\n\n if result == 0 {\n warning LangRes(\"@1tokens_transfer_cannot_be_made\", \"en\")\n }\n }\n\n conditions {\n getPermission()\n\n $recipient_id = AddressToId($Recipient)\n if $recipient_id == 0 {\n warning Sprintf(LangRes(\"@1recipient_x_invalid\", \"en\"), $Recipient)\n }\n }\n\n action {\n @1TokensTransfer(\"Amount,SenderId,RecipientId,Comment,Ecosystem\", $Amount, $key_id, $recipient_id, $Comment, $ecosystem_id)\n }\n}",
971+
"Value": "contract TokensSend {\n data {\n Amount money\n Recipient string\n Comment string \"optional\"\n }\n\n func getPermission() {\n var array_permissions array result i int prevContract string\n array_permissions = [\"@1TokensSend\", \"@1TsKeyApprove\", \"@1TsTransferSeller\", \"@1CreditingSignAccept\"]\n\n prevContract = $stack[0]\n if Len($stack) > 2 {\n prevContract = $stack[Len($stack) - 2]\n }\n while i < Len(array_permissions) {\n var contract_name string\n contract_name = array_permissions[i]\n if contract_name==prevContract {\n result = 1\n }\n i = i + 1\n }\n\n if result == 0 {\n warning LangRes(\"@1tokens_transfer_cannot_be_made\", \"en\")\n }\n }\n\n conditions {\n getPermission()\n\n $recipient_id = AddressToId($Recipient)\n if $recipient_id == 0 {\n warning Sprintf(LangRes(\"@1recipient_x_invalid\", \"en\"), $Recipient)\n }\n }\n\n action {\n @1TokensTransfer(\"Amount,SenderId,RecipientId,Comment,Ecosystem\", $Amount, $key_id, $recipient_id, $Comment, $ecosystem_id)\n }\n}",
972972
"Type": "contracts"
973973
},
974974
{

ecosystem_apps/сrediting.json

Lines changed: 302 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
0
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
0
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
0
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
0
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1 day, 7 days, 30 days
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
{
2+
"name": "Сrediting",
3+
"conditions": "ContractConditions(\"AdminCondition\")",
4+
"blocks": null,
5+
"contracts": [
6+
{
7+
"Name": "CreditingAdd",
8+
"Conditions": "ContractConditions(\"AdminCondition\")"
9+
},
10+
{
11+
"Name": "CreditingBid",
12+
"Conditions": "ContractConditions(\"AdminCondition\")"
13+
},
14+
{
15+
"Name": "CreditingBlock",
16+
"Conditions": "ContractConditions(\"AdminCondition\")"
17+
},
18+
{
19+
"Name": "CreditingDel",
20+
"Conditions": "ContractConditions(\"AdminCondition\")"
21+
},
22+
{
23+
"Name": "CreditingSettings",
24+
"Conditions": "ContractConditions(\"AdminCondition\")"
25+
},
26+
{
27+
"Name": "CreditingSignAccept",
28+
"Conditions": "ContractConditions(\"AdminCondition\")"
29+
},
30+
{
31+
"Name": "CreditingSignReject",
32+
"Conditions": "ContractConditions(\"AdminCondition\")"
33+
},
34+
{
35+
"Name": "CreditingStatusUpdate",
36+
"Conditions": "ContractConditions(\"AdminCondition\")"
37+
},
38+
{
39+
"Name": "CreditingSubscribe",
40+
"Conditions": "ContractConditions(\"AdminCondition\")"
41+
}
42+
],
43+
"menus": [
44+
{
45+
"Name": "admin_menu",
46+
"Conditions": "ContractConditions(\"AdminCondition\")"
47+
},
48+
{
49+
"Name": "default_menu",
50+
"Conditions": "ContractConditions(\"AdminCondition\")"
51+
}
52+
],
53+
"pages": [
54+
{
55+
"Name": "crediting_add",
56+
"Conditions": "ContractConditions(\"AdminCondition\")",
57+
"Menu": "default_menu"
58+
},
59+
{
60+
"Name": "crediting_filter",
61+
"Conditions": "ContractConditions(\"AdminCondition\")",
62+
"Menu": "default_menu"
63+
},
64+
{
65+
"Name": "crediting_history",
66+
"Conditions": "ContractConditions(\"AdminCondition\")",
67+
"Menu": "default_menu"
68+
},
69+
{
70+
"Name": "crediting_list",
71+
"Conditions": "ContractConditions(\"AdminCondition\")",
72+
"Menu": "default_menu"
73+
},
74+
{
75+
"Name": "crediting_settings",
76+
"Conditions": "ContractConditions(\"AdminCondition\")",
77+
"Menu": "admin_menu"
78+
},
79+
{
80+
"Name": "crediting_view",
81+
"Conditions": "ContractConditions(\"AdminCondition\")",
82+
"Menu": "default_menu"
83+
}
84+
],
85+
"tables": [
86+
{
87+
"Name": "crediting_requests",
88+
"Conditions": "ContractAccess(\"@1EditTable\")",
89+
"Permissions": "{\"read\": \"true\", \"insert\": \"ContractAccess(\\\"CreditingAdd\\\")\", \"update\": \"true\", \"new_column\": \"ContractConditions(\\\"@1AdminCondition\\\")\"}"
90+
},
91+
{
92+
"Name": "crediting_offers",
93+
"Conditions": "ContractAccess(\"@1EditTable\")",
94+
"Permissions": "{\"read\": \"true\", \"insert\": \"ContractAccess(\\\"CreditingBid\\\")\", \"update\": \"false\", \"new_column\": \"ContractConditions(\\\"@1AdminCondition\\\")\"}"
95+
},
96+
{
97+
"Name": "crediting_subs",
98+
"Conditions": "ContractAccess(\"@1EditTable\")",
99+
"Permissions": "{\"read\": \"true\", \"insert\": \"ContractAccess(\\\"CreditingSubscribe\\\")\", \"update\": \"ContractAccess(\\\"CreditingSubscribe\\\")\", \"new_column\": \"ContractConditions(\\\"@1AdminCondition\\\")\"}"
100+
}
101+
],
102+
"parameters": [
103+
{
104+
"Name": "crediting_admin_role",
105+
"Conditions": "ContractConditions(\"AdminCondition\")"
106+
},
107+
{
108+
"Name": "crediting_borrower_role",
109+
"Conditions": "ContractConditions(\"AdminCondition\")"
110+
},
111+
{
112+
"Name": "crediting_commission_wallet",
113+
"Conditions": "ContractConditions(\"AdminCondition\")"
114+
},
115+
{
116+
"Name": "crediting_creditor_role",
117+
"Conditions": "ContractConditions(\"AdminCondition\")"
118+
},
119+
{
120+
"Name": "type_term",
121+
"Conditions": "ContractConditions(\"AdminCondition\")"
122+
}
123+
]
124+
}
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
contract CreditingAdd {
2+
data {
3+
Id int "optional"
4+
Amount money
5+
Term string
6+
StartDate string
7+
StartTime string
8+
EndDate string
9+
EndTime string
10+
Description string "optional"
11+
}
12+
13+
func trimZeroTime(s string) string {
14+
if Contains(s, "T00:00:00Z") {
15+
s = Replace(s, "T00:00:00Z", "")
16+
}
17+
return s
18+
}
19+
20+
func dateAddTime(d, t string) string {
21+
var dt string
22+
if Size(t) == 5 {
23+
dt = Sprintf("%v %v:00", trimZeroTime(d), t)
24+
}
25+
return dt
26+
}
27+
28+
func fixDatetimes() {
29+
$date_started = UnixDateTime(dateAddTime($StartDate, $StartTime))
30+
$date_ended = UnixDateTime(dateAddTime($EndDate, $EndTime))
31+
32+
if $date_started == 0 || $date_ended == 0 { // invalid datetimes
33+
var errs array
34+
if Size($StartDate) < 10 {
35+
errs = Append(errs, "starting date")
36+
}
37+
if Size($StartTime) < 5 {
38+
errs = Append(errs, "starting time")
39+
}
40+
if Size($EndDate) < 10 {
41+
errs = Append(errs, "ending date")
42+
}
43+
if Size($EndTime) < 5 {
44+
errs = Append(errs, "ending time")
45+
}
46+
warning Sprintf(LangRes("сrediting_creation_error", "en"), Join(errs, ", "))
47+
}
48+
if $date_started < $block_time {
49+
warning LangRes("@1starting_date_invalid", "en")
50+
}
51+
if $date_started >= $date_ended {
52+
warning LangRes("@1ending_date_invalid", "en")
53+
}
54+
}
55+
56+
conditions {
57+
// check_access
58+
$app = DBFind("@1applications").Where({"ecosystem": $ecosystem_id, "name": "Сrediting"}).One("id")
59+
$check_access = AppParam(Int($app), "crediting_borrower_role", $ecosystem_id)
60+
var rids array
61+
rids = JSONDecode("["+$check_access+"]")
62+
if !DBFind("@1roles_participants").Where({"ecosystem": $ecosystem_id, "role->id": {"$in": rids}, "member->member_id": $key_id, "deleted": 0}).Row() {
63+
warning LangRes("@1access_denied", "en")
64+
}
65+
66+
var request map borrower string status int
67+
request = DBFind("crediting_requests").Where({"id": $Id}).Row()
68+
borrower = request["borrower"]
69+
status = Int(request["status"])
70+
71+
//check status
72+
if status != 0 {
73+
warning LangRes("@1access_denied", "en")
74+
}
75+
76+
//check borrower
77+
if Int($Id) > 0 {
78+
if AddressToId(borrower) != $key_id {
79+
warning LangRes("@1access_denied", "en")
80+
}
81+
}
82+
83+
//check amount
84+
if $Amount == 0 {
85+
warning LangRes("@1amount_zero", "en")
86+
}
87+
if $Amount < 0 {
88+
warning LangRes("@1amount_less_zero", "en")
89+
}
90+
91+
//check date
92+
fixDatetimes()
93+
}
94+
95+
action {
96+
var m map
97+
if Int($Id) == 0 {
98+
m["borrower"] = IdToAddress($key_id)
99+
m["status"] = 0
100+
m["deleted"] = 0
101+
m["date_created"] = $block_time
102+
}
103+
104+
m["amount"] = $Amount
105+
m["term"] = $Term
106+
m["date_started"] = $date_started
107+
m["date_ended"] = $date_ended
108+
m["description"] = $Description
109+
110+
if Int($Id) == 0 {
111+
DBInsert("crediting_requests", m)
112+
} else {
113+
DBUpdate("crediting_requests", Int($Id), m)
114+
}
115+
}
116+
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
contract CreditingBid {
2+
data {
3+
RequestId int
4+
Rate int
5+
}
6+
7+
func closeMyNotes() {
8+
var notes array i int
9+
notes = DBFind("@1notifications").Where({"closed": 0, "ecosystem": $ecosystem_id, "recipient->member_id": $key_id, "page_name": "crediting_view", "page_params->crediting_id": $RequestId})
10+
while i < Len(notes){
11+
var note map
12+
note = notes[i]
13+
@1NotificationsClose("NotificId", Int(note["id"]))
14+
i = i + 1
15+
}
16+
}
17+
18+
func sendNotesNewBid() {
19+
var i int subs_arr array
20+
$KeyId = IdToAddress($key_id)
21+
subs_arr = DBFind("crediting_subs").Columns("creditor").Limit(10000).Where({"creditor": {"$neq": $KeyId}, "request_id": $RequestId, "deleted": 0})
22+
while i < Len(subs_arr) {
23+
var sub_map memberId int
24+
sub_map = subs_arr[i]
25+
memberId = AddressToId(sub_map["creditor"])
26+
27+
var header body string params map
28+
header = "New bid on auction №" + Str($RequestId)
29+
body = "Check auction for information"
30+
params["crediting_id"] = $RequestId
31+
params["optional"] = 1
32+
@1NotificationsSend("MemberId,Sender,Icon,Header,Body,Page,Params", memberId, 1, "fa-fire", header, body, "crediting_view", params)
33+
i = i + 1
34+
}
35+
}
36+
37+
conditions {
38+
// check_access
39+
$app = DBFind("@1applications").Where({"ecosystem": $ecosystem_id, "name": "Сrediting"}).One("id")
40+
$check_access = AppParam(Int($app), "crediting_creditor_role", $ecosystem_id)
41+
var rids array
42+
rids = JSONDecode("["+$check_access+"]")
43+
if !DBFind("@1roles_participants").Where({"ecosystem": $ecosystem_id, "role->id": {"$in": rids}, "member->member_id": $key_id, "deleted": 0}).Row() {
44+
warning LangRes("@1access_denied", "en")
45+
}
46+
47+
var request map status int
48+
request = DBFind("crediting_requests").Where({"id": $RequestId}).Row()
49+
status = Int(request["status"])
50+
51+
//check status
52+
if status != 1 {
53+
warning LangRes("@1access_denied", "en")
54+
}
55+
}
56+
57+
action {
58+
closeMyNotes()
59+
sendNotesNewBid()
60+
61+
var m map
62+
m["creditor"] = IdToAddress($key_id)
63+
m["date_created"] = $block_time
64+
m["rate"] = $Rate
65+
m["request_id"] = $RequestId
66+
DBInsert("crediting_offers", m)
67+
}
68+
}

0 commit comments

Comments
 (0)