COOPENOMICS  v1
Кооперативная Экономика
marketplace.hpp
См. документацию.
1#pragma once
2
3#include <optional>
4#include <set>
5#include <string>
6
7#include <eosio/crypto.hpp>
8#include <eosio/eosio.hpp>
9
10#include "../../consts.hpp"
11#include "../../domain/document_core.hpp"
12
13#define AUTH_SIGNATURE eosio::name coopname, checksum256 request_hash, document2 authorization
14
16
17namespace Marketplace {
18
19using namespace eosio;
20
21static const std::set<eosio::name> marketplace_callback_actions = {
22 "authoffs2c"_n,
23 "authoffc2r"_n,
24 "authordcont"_n,
25 "authordret"_n,
26 "declineacc"_n,
27};
28
29inline eosio::name get_valid_marketplace_action(const eosio::name &action) {
30 eosio::check(marketplace_callback_actions.contains(action), "Недопустимое имя действия marketplace");
31 return action;
32}
33
34static std::optional<request> get_request_by_hash(eosio::name coopname, checksum256 request_hash) {
35 requests_index requests(_marketplace, coopname.value);
36 auto idx = requests.get_index<"byhash"_n>();
37 auto req = idx.find(request_hash);
38
39 if (req != idx.end()) {
40 return *req;
41 }
42 return std::nullopt;
43}
44
45static std::optional<shipment> get_shipment_by_hash(eosio::name coopname, checksum256 shipment_hash) {
46 shipments_index shipments(_marketplace, coopname.value);
47 auto idx = shipments.get_index<"byhash"_n>();
48 auto ship = idx.find(shipment_hash);
49
50 if (ship != idx.end()) {
51 return *ship;
52 }
53 return std::nullopt;
54}
55
56static request get_request_by_hash_or_fail(eosio::name coopname, checksum256 request_hash,
57 const std::string &error_msg = "Заявка не найдена по хэшу") {
58 auto request_opt = get_request_by_hash(coopname, request_hash);
59 eosio::check(request_opt.has_value(), error_msg);
60 return *request_opt;
61}
62
63static shipment get_shipment_by_hash_or_fail(eosio::name coopname, checksum256 shipment_hash,
64 const std::string &error_msg = "Перевозка не найдена по хэшу") {
65 auto shipment_opt = get_shipment_by_hash(coopname, shipment_hash);
66 eosio::check(shipment_opt.has_value(), error_msg);
67 return *shipment_opt;
68}
69
70namespace DocumentNames {
71static constexpr const name RETURN_STMT = "returnstmt"_n;
72static constexpr const name CONVERT_FROM = "convertfrom"_n;
73static constexpr const name CONVERT_TO = "convertto"_n;
74static constexpr const name CONTRIB_STMT = "contribstmt"_n;
75static constexpr const name CONTRIB_AUTH = "contribauth"_n;
76static constexpr const name RETURN_AUTH = "returnauth"_n;
77static constexpr const name RECEIVE_ACT = "receiveact"_n;
78static constexpr const name RECEIVE_ACT_CONF = "receiveconf"_n;
79static constexpr const name TRANSPORT1 = "transport1"_n;
80static constexpr const name TRANSPORT2 = "transport2"_n;
81static constexpr const name TRANSPORT3 = "transport3"_n;
82static constexpr const name TRANSPORT4 = "transport4"_n;
83static constexpr const name SUPPLY_ACT = "supplyact"_n;
84static constexpr const name SUPPLY_ACT_CONF = "supplyconf"_n;
85static constexpr const name SHIPMENT_ACT = "shipmentact"_n;
86static constexpr const name DELIVERY_ACT = "deliveryact"_n;
87
88static constexpr const name SHIPMENT_SEND_ACT = "shsendact"_n;
89static constexpr const name SHIPMENT_LOADING_ACT = "shloadact"_n;
90static constexpr const name SHIPMENT_ARRIVE_ACT = "sharriveact"_n;
91static constexpr const name SHIPMENT_RECV_ACT = "shrecvact"_n;
92
93static constexpr const name WDISPUTE = "wdispute"_n;
94static constexpr const name WRETURN_AUTH = "wreturnauth"_n;
95static constexpr const name WSUPPLY_AUTH = "wsupplyauth"_n;
96static constexpr const name WRETURN_ACT = "wreturnact"_n;
97static constexpr const name WOFFER_ACT = "wofferact"_n;
98static constexpr const name WACCEPT_ACT = "wacceptact"_n;
99} // namespace DocumentNames
100
101} // namespace Marketplace
static constexpr eosio::name _marketplace
Definition: consts.hpp:155
#define AUTH_SIGNATURE
Definition: marketplace.hpp:13
void(AUTH_SIGNATURE) auth_interface
Definition: marketplace.hpp:15
static constexpr const name SHIPMENT_ARRIVE_ACT
Definition: marketplace.hpp:90
static constexpr const name SHIPMENT_ACT
Definition: marketplace.hpp:85
static constexpr const name CONTRIB_STMT
Definition: marketplace.hpp:74
static constexpr const name RETURN_STMT
Definition: marketplace.hpp:71
static constexpr const name WACCEPT_ACT
Definition: marketplace.hpp:98
static constexpr const name SHIPMENT_RECV_ACT
Definition: marketplace.hpp:91
static constexpr const name SUPPLY_ACT_CONF
Definition: marketplace.hpp:84
static constexpr const name SHIPMENT_LOADING_ACT
Definition: marketplace.hpp:89
static constexpr const name RECEIVE_ACT_CONF
Definition: marketplace.hpp:78
static constexpr const name CONVERT_FROM
Definition: marketplace.hpp:72
static constexpr const name WDISPUTE
Definition: marketplace.hpp:93
static constexpr const name SHIPMENT_SEND_ACT
Definition: marketplace.hpp:88
static constexpr const name WRETURN_ACT
Definition: marketplace.hpp:96
static constexpr const name TRANSPORT2
Definition: marketplace.hpp:80
static constexpr const name CONVERT_TO
Definition: marketplace.hpp:73
static constexpr const name TRANSPORT4
Definition: marketplace.hpp:82
static constexpr const name TRANSPORT3
Definition: marketplace.hpp:81
static constexpr const name RETURN_AUTH
Definition: marketplace.hpp:76
static constexpr const name WSUPPLY_AUTH
Definition: marketplace.hpp:95
static constexpr const name CONTRIB_AUTH
Definition: marketplace.hpp:75
static constexpr const name TRANSPORT1
Definition: marketplace.hpp:79
static constexpr const name DELIVERY_ACT
Definition: marketplace.hpp:86
static constexpr const name WRETURN_AUTH
Definition: marketplace.hpp:94
static constexpr const name SUPPLY_ACT
Definition: marketplace.hpp:83
static constexpr const name WOFFER_ACT
Definition: marketplace.hpp:97
static constexpr const name RECEIVE_ACT
Definition: marketplace.hpp:77
Definition: marketplace.hpp:17
eosio::multi_index< "shipments"_n, shipment, eosio::indexed_by<"byhash"_n, eosio::const_mem_fun< shipment, checksum256, &shipment::by_hash > >, eosio::indexed_by<"bycoop"_n, eosio::const_mem_fun< shipment, uint64_t, &shipment::by_coop > >, eosio::indexed_by<"bydriver"_n, eosio::const_mem_fun< shipment, uint64_t, &shipment::by_driver > >, eosio::indexed_by<"bysource"_n, eosio::const_mem_fun< shipment, uint64_t, &shipment::by_source > >, eosio::indexed_by<"bydest"_n, eosio::const_mem_fun< shipment, uint64_t, &shipment::by_destination > >, eosio::indexed_by<"bystatus"_n, eosio::const_mem_fun< shipment, uint64_t, &shipment::by_status > >, eosio::indexed_by<"bycreated"_n, eosio::const_mem_fun< shipment, uint64_t, &shipment::by_created > > > shipments_index
Definition: table_marketplace_shipments.hpp:53
eosio::multi_index< "requests"_n, request, eosio::indexed_by<"bycoop"_n, eosio::const_mem_fun< request, uint64_t, &request::by_coop > >, eosio::indexed_by<"bystatus"_n, eosio::const_mem_fun< request, uint64_t, &request::by_status > >, eosio::indexed_by<"bytype"_n, eosio::const_mem_fun< request, uint64_t, &request::by_type > >, eosio::indexed_by<"byhash"_n, eosio::const_mem_fun< request, checksum256, &request::by_hash > >, eosio::indexed_by<"byusername"_n, eosio::const_mem_fun< request, uint64_t, &request::by_username > >, eosio::indexed_by<"bycreated"_n, eosio::const_mem_fun< request, uint64_t, &request::by_created > >, eosio::indexed_by<"bycompleted"_n, eosio::const_mem_fun< request, uint64_t, &request::by_completed > >, eosio::indexed_by<"bydeclined"_n, eosio::const_mem_fun< request, uint64_t, &request::by_declined > >, eosio::indexed_by<"bycanceled"_n, eosio::const_mem_fun< request, uint64_t, &request::by_canceled > >, eosio::indexed_by<"bywarrantyid"_n, eosio::const_mem_fun< request, uint64_t, &request::by_warranty_id > > > requests_index
Definition: table_marketplace_requests.hpp:107
static std::optional< request > get_request_by_hash(eosio::name coopname, checksum256 request_hash)
Definition: marketplace.hpp:34
static request get_request_by_hash_or_fail(eosio::name coopname, checksum256 request_hash, const std::string &error_msg="Заявка не найдена по хэшу")
Definition: marketplace.hpp:56
static const std::set< eosio::name > marketplace_callback_actions
Definition: marketplace.hpp:21
static std::optional< shipment > get_shipment_by_hash(eosio::name coopname, checksum256 shipment_hash)
Definition: marketplace.hpp:45
eosio::name get_valid_marketplace_action(const eosio::name &action)
Definition: marketplace.hpp:29
static shipment get_shipment_by_hash_or_fail(eosio::name coopname, checksum256 shipment_hash, const std::string &error_msg="Перевозка не найдена по хэшу")
Definition: marketplace.hpp:63
Definition: eosio.msig.hpp:34
action(permission_level{ _gateway, "active"_n}, _gateway, "adduser"_n, std::make_tuple(coopname, deposit->username, to_spread, to_circulation, eosio::current_time_point(), true)).send()
Definition: table_marketplace_requests.hpp:18
Definition: table_marketplace_shipments.hpp:16