Add customers & compliance_authorizations tables

This commit is contained in:
goga-m 2017-08-14 17:02:47 +03:00
parent 0d3614fe73
commit ecdef92f82
3 changed files with 537 additions and 103 deletions

View file

@ -0,0 +1,32 @@
var db = require('./db')
exports.up = function(next) {
const sql =
[
'CREATE TABLE customers ( ' +
'id uuid PRIMARY KEY,' +
'phone text unique NOT NULL,' +
'phone_at timestamptz NOT NULL,' +
'id_card_number text,' +
'id_card_expiration date,' +
'id_card_data json,' +
'id_card_at timestamptz,' +
'name text,' +
'address text,' +
'manually_verified boolean,' +
'sanctions_check boolean,' +
'front_facing_cam_path text,' +
'front_facing_cam_at timestamptz,' +
'id_card_image_path text,' +
'id_card_image_at timestamptz,' +
'created timestamptz NOT NULL DEFAULT now() )',
'ALTER TABLE cash_in_txs add column customer_id uuid REFERENCES customers (id)',
'ALTER TABLE cash_out_txs add column customer_id uuid REFERENCES customers (id)'
]
db.multi(sql, next)
};
exports.down = function(next) {
next();
};

View file

@ -0,0 +1,19 @@
var db = require('./db')
exports.up = function(next) {
const sql =
["CREATE TYPE compliance_types as enum ('manual', 'sanctions', 'sanctions_override') ",
'CREATE TABLE compliance_authorizations ( ' +
'id uuid PRIMARY KEY, ' +
'customer_id uuid REFERENCES customers (id), ' +
'compliance_type compliance_types NOT NULL,' +
'authorized_at timestamptz NOT NULL,' +
'authorized_by text REFERENCES user_tokens (token) )' ]
db.multi(sql, next)
};
exports.down = function(next) {
next();
};

View file

@ -6454,6 +6454,29 @@ var _elm_community$json_extra$Json_Decode_Extra$fromResult = function (result) {
return _elm_lang$core$Json_Decode$fail(_p0._0); return _elm_lang$core$Json_Decode$fail(_p0._0);
} }
}; };
var _elm_community$json_extra$Json_Decode_Extra$parseInt = A2(
_elm_lang$core$Json_Decode$andThen,
function (_p1) {
return _elm_community$json_extra$Json_Decode_Extra$fromResult(
_elm_lang$core$String$toInt(_p1));
},
_elm_lang$core$Json_Decode$string);
var _elm_community$json_extra$Json_Decode_Extra$parseFloat = A2(
_elm_lang$core$Json_Decode$andThen,
function (_p2) {
return _elm_community$json_extra$Json_Decode_Extra$fromResult(
_elm_lang$core$String$toFloat(_p2));
},
_elm_lang$core$Json_Decode$string);
var _elm_community$json_extra$Json_Decode_Extra$doubleEncoded = function (decoder) {
return A2(
_elm_lang$core$Json_Decode$andThen,
function (_p3) {
return _elm_community$json_extra$Json_Decode_Extra$fromResult(
A2(_elm_lang$core$Json_Decode$decodeString, decoder, _p3));
},
_elm_lang$core$Json_Decode$string);
};
var _elm_community$json_extra$Json_Decode_Extra$sequenceHelp = F2( var _elm_community$json_extra$Json_Decode_Extra$sequenceHelp = F2(
function (decoders, jsonValues) { function (decoders, jsonValues) {
return (!_elm_lang$core$Native_Utils.eq( return (!_elm_lang$core$Native_Utils.eq(
@ -6476,15 +6499,33 @@ var _elm_community$json_extra$Json_Decode_Extra$sequence = function (decoders) {
_elm_community$json_extra$Json_Decode_Extra$sequenceHelp(decoders), _elm_community$json_extra$Json_Decode_Extra$sequenceHelp(decoders),
_elm_lang$core$Json_Decode$list(_elm_lang$core$Json_Decode$value)); _elm_lang$core$Json_Decode$list(_elm_lang$core$Json_Decode$value));
}; };
var _elm_community$json_extra$Json_Decode_Extra$indexedList = function (indexedDecoder) {
return A2(
_elm_lang$core$Json_Decode$andThen,
function (values) {
return _elm_community$json_extra$Json_Decode_Extra$sequence(
A2(
_elm_lang$core$List$map,
indexedDecoder,
A2(
_elm_lang$core$List$range,
0,
_elm_lang$core$List$length(values) - 1)));
},
_elm_lang$core$Json_Decode$list(_elm_lang$core$Json_Decode$value));
};
var _elm_community$json_extra$Json_Decode_Extra$optionalField = F2( var _elm_community$json_extra$Json_Decode_Extra$optionalField = F2(
function (fieldName, decoder) { function (fieldName, decoder) {
var finishDecoding = function (json) { var finishDecoding = function (json) {
var _p1 = A2( var _p4 = A2(
_elm_lang$core$Json_Decode$decodeValue, _elm_lang$core$Json_Decode$decodeValue,
A2(_elm_lang$core$Json_Decode$field, fieldName, _elm_lang$core$Json_Decode$value), A2(_elm_lang$core$Json_Decode$field, fieldName, _elm_lang$core$Json_Decode$value),
json); json);
if (_p1.ctor === 'Ok') { if (_p4.ctor === 'Ok') {
return A2(_elm_lang$core$Json_Decode$map, _elm_lang$core$Maybe$Just, decoder); return A2(
_elm_lang$core$Json_Decode$map,
_elm_lang$core$Maybe$Just,
A2(_elm_lang$core$Json_Decode$field, fieldName, decoder));
} else { } else {
return _elm_lang$core$Json_Decode$succeed(_elm_lang$core$Maybe$Nothing); return _elm_lang$core$Json_Decode$succeed(_elm_lang$core$Maybe$Nothing);
} }
@ -6494,30 +6535,27 @@ var _elm_community$json_extra$Json_Decode_Extra$optionalField = F2(
var _elm_community$json_extra$Json_Decode_Extra$withDefault = F2( var _elm_community$json_extra$Json_Decode_Extra$withDefault = F2(
function (fallback, decoder) { function (fallback, decoder) {
return A2( return A2(
_elm_lang$core$Json_Decode$andThen, _elm_lang$core$Json_Decode$map,
function (_p2) { _elm_lang$core$Maybe$withDefault(fallback),
return _elm_lang$core$Json_Decode$succeed(
A2(_elm_lang$core$Maybe$withDefault, fallback, _p2));
},
_elm_lang$core$Json_Decode$maybe(decoder)); _elm_lang$core$Json_Decode$maybe(decoder));
}); });
var _elm_community$json_extra$Json_Decode_Extra$decodeDictFromTuples = F2( var _elm_community$json_extra$Json_Decode_Extra$decodeDictFromTuples = F2(
function (keyDecoder, tuples) { function (keyDecoder, tuples) {
var _p3 = tuples; var _p5 = tuples;
if (_p3.ctor === '[]') { if (_p5.ctor === '[]') {
return _elm_lang$core$Json_Decode$succeed(_elm_lang$core$Dict$empty); return _elm_lang$core$Json_Decode$succeed(_elm_lang$core$Dict$empty);
} else { } else {
var _p4 = A2(_elm_lang$core$Json_Decode$decodeString, keyDecoder, _p3._0._0); var _p6 = A2(_elm_lang$core$Json_Decode$decodeString, keyDecoder, _p5._0._0);
if (_p4.ctor === 'Ok') { if (_p6.ctor === 'Ok') {
return A2( return A2(
_elm_lang$core$Json_Decode$andThen, _elm_lang$core$Json_Decode$andThen,
function (_p5) { function (_p7) {
return _elm_lang$core$Json_Decode$succeed( return _elm_lang$core$Json_Decode$succeed(
A3(_elm_lang$core$Dict$insert, _p4._0, _p3._0._1, _p5)); A3(_elm_lang$core$Dict$insert, _p6._0, _p5._0._1, _p7));
}, },
A2(_elm_community$json_extra$Json_Decode_Extra$decodeDictFromTuples, keyDecoder, _p3._1)); A2(_elm_community$json_extra$Json_Decode_Extra$decodeDictFromTuples, keyDecoder, _p5._1));
} else { } else {
return _elm_lang$core$Json_Decode$fail(_p4._0); return _elm_lang$core$Json_Decode$fail(_p6._0);
} }
} }
}); });
@ -6525,21 +6563,13 @@ var _elm_community$json_extra$Json_Decode_Extra$dict2 = F2(
function (keyDecoder, valueDecoder) { function (keyDecoder, valueDecoder) {
return A2( return A2(
_elm_lang$core$Json_Decode$andThen, _elm_lang$core$Json_Decode$andThen,
function (_p6) { _elm_community$json_extra$Json_Decode_Extra$decodeDictFromTuples(keyDecoder),
return A2( _elm_lang$core$Json_Decode$keyValuePairs(valueDecoder));
_elm_community$json_extra$Json_Decode_Extra$decodeDictFromTuples,
keyDecoder,
_elm_lang$core$Dict$toList(_p6));
},
_elm_lang$core$Json_Decode$dict(valueDecoder));
}); });
var _elm_community$json_extra$Json_Decode_Extra$set = function (decoder) { var _elm_community$json_extra$Json_Decode_Extra$set = function (decoder) {
return A2( return A2(
_elm_lang$core$Json_Decode$andThen, _elm_lang$core$Json_Decode$map,
function (_p7) { _elm_lang$core$Set$fromList,
return _elm_lang$core$Json_Decode$succeed(
_elm_lang$core$Set$fromList(_p7));
},
_elm_lang$core$Json_Decode$list(decoder)); _elm_lang$core$Json_Decode$list(decoder));
}; };
var _elm_community$json_extra$Json_Decode_Extra$date = A2( var _elm_community$json_extra$Json_Decode_Extra$date = A2(
@ -6557,6 +6587,185 @@ var _elm_community$json_extra$Json_Decode_Extra$andMap = _elm_lang$core$Json_Dec
var _elm_community$json_extra$Json_Decode_Extra_ops = _elm_community$json_extra$Json_Decode_Extra_ops || {}; var _elm_community$json_extra$Json_Decode_Extra_ops = _elm_community$json_extra$Json_Decode_Extra_ops || {};
_elm_community$json_extra$Json_Decode_Extra_ops['|:'] = _elm_lang$core$Basics$flip(_elm_community$json_extra$Json_Decode_Extra$andMap); _elm_community$json_extra$Json_Decode_Extra_ops['|:'] = _elm_lang$core$Basics$flip(_elm_community$json_extra$Json_Decode_Extra$andMap);
var _elm_community$maybe_extra$Maybe_Extra$foldrValues = F2(
function (item, list) {
var _p0 = item;
if (_p0.ctor === 'Nothing') {
return list;
} else {
return {ctor: '::', _0: _p0._0, _1: list};
}
});
var _elm_community$maybe_extra$Maybe_Extra$values = A2(
_elm_lang$core$List$foldr,
_elm_community$maybe_extra$Maybe_Extra$foldrValues,
{ctor: '[]'});
var _elm_community$maybe_extra$Maybe_Extra$filter = F2(
function (f, m) {
var _p1 = A2(_elm_lang$core$Maybe$map, f, m);
if ((_p1.ctor === 'Just') && (_p1._0 === true)) {
return m;
} else {
return _elm_lang$core$Maybe$Nothing;
}
});
var _elm_community$maybe_extra$Maybe_Extra$traverseArray = function (f) {
var step = F2(
function (e, acc) {
var _p2 = f(e);
if (_p2.ctor === 'Nothing') {
return _elm_lang$core$Maybe$Nothing;
} else {
return A2(
_elm_lang$core$Maybe$map,
_elm_lang$core$Array$push(_p2._0),
acc);
}
});
return A2(
_elm_lang$core$Array$foldl,
step,
_elm_lang$core$Maybe$Just(_elm_lang$core$Array$empty));
};
var _elm_community$maybe_extra$Maybe_Extra$combineArray = _elm_community$maybe_extra$Maybe_Extra$traverseArray(_elm_lang$core$Basics$identity);
var _elm_community$maybe_extra$Maybe_Extra$traverse = function (f) {
var step = F2(
function (e, acc) {
var _p3 = f(e);
if (_p3.ctor === 'Nothing') {
return _elm_lang$core$Maybe$Nothing;
} else {
return A2(
_elm_lang$core$Maybe$map,
F2(
function (x, y) {
return {ctor: '::', _0: x, _1: y};
})(_p3._0),
acc);
}
});
return A2(
_elm_lang$core$List$foldr,
step,
_elm_lang$core$Maybe$Just(
{ctor: '[]'}));
};
var _elm_community$maybe_extra$Maybe_Extra$combine = _elm_community$maybe_extra$Maybe_Extra$traverse(_elm_lang$core$Basics$identity);
var _elm_community$maybe_extra$Maybe_Extra$toArray = function (m) {
var _p4 = m;
if (_p4.ctor === 'Nothing') {
return _elm_lang$core$Array$empty;
} else {
return A2(_elm_lang$core$Array$repeat, 1, _p4._0);
}
};
var _elm_community$maybe_extra$Maybe_Extra$toList = function (m) {
var _p5 = m;
if (_p5.ctor === 'Nothing') {
return {ctor: '[]'};
} else {
return {
ctor: '::',
_0: _p5._0,
_1: {ctor: '[]'}
};
}
};
var _elm_community$maybe_extra$Maybe_Extra$orElse = F2(
function (ma, mb) {
var _p6 = mb;
if (_p6.ctor === 'Nothing') {
return ma;
} else {
return mb;
}
});
var _elm_community$maybe_extra$Maybe_Extra$orElseLazy = F2(
function (fma, mb) {
var _p7 = mb;
if (_p7.ctor === 'Nothing') {
return fma(
{ctor: '_Tuple0'});
} else {
return mb;
}
});
var _elm_community$maybe_extra$Maybe_Extra$orLazy = F2(
function (ma, fmb) {
var _p8 = ma;
if (_p8.ctor === 'Nothing') {
return fmb(
{ctor: '_Tuple0'});
} else {
return ma;
}
});
var _elm_community$maybe_extra$Maybe_Extra$or = F2(
function (ma, mb) {
var _p9 = ma;
if (_p9.ctor === 'Nothing') {
return mb;
} else {
return ma;
}
});
var _elm_community$maybe_extra$Maybe_Extra$prev = _elm_lang$core$Maybe$map2(_elm_lang$core$Basics$always);
var _elm_community$maybe_extra$Maybe_Extra$next = _elm_lang$core$Maybe$map2(
_elm_lang$core$Basics$flip(_elm_lang$core$Basics$always));
var _elm_community$maybe_extra$Maybe_Extra$andMap = _elm_lang$core$Maybe$map2(
F2(
function (x, y) {
return y(x);
}));
var _elm_community$maybe_extra$Maybe_Extra$unpack = F3(
function (d, f, m) {
var _p10 = m;
if (_p10.ctor === 'Nothing') {
return d(
{ctor: '_Tuple0'});
} else {
return f(_p10._0);
}
});
var _elm_community$maybe_extra$Maybe_Extra$unwrap = F3(
function (d, f, m) {
var _p11 = m;
if (_p11.ctor === 'Nothing') {
return d;
} else {
return f(_p11._0);
}
});
var _elm_community$maybe_extra$Maybe_Extra$isJust = function (m) {
var _p12 = m;
if (_p12.ctor === 'Nothing') {
return false;
} else {
return true;
}
};
var _elm_community$maybe_extra$Maybe_Extra$isNothing = function (m) {
var _p13 = m;
if (_p13.ctor === 'Nothing') {
return true;
} else {
return false;
}
};
var _elm_community$maybe_extra$Maybe_Extra$join = function (mx) {
var _p14 = mx;
if (_p14.ctor === 'Just') {
return _p14._0;
} else {
return _elm_lang$core$Maybe$Nothing;
}
};
var _elm_community$maybe_extra$Maybe_Extra_ops = _elm_community$maybe_extra$Maybe_Extra_ops || {};
_elm_community$maybe_extra$Maybe_Extra_ops['?'] = F2(
function (mx, x) {
return A2(_elm_lang$core$Maybe$withDefault, x, mx);
});
var _elm_lang$core$Native_Bitwise = function() { var _elm_lang$core$Native_Bitwise = function() {
return { return {
@ -21386,24 +21595,16 @@ var _pablohirafuji$elm_qrcode$QRCode_View$rectView = function (_p1) {
_elm_lang$core$Basics$toString(_p2.row * _pablohirafuji$elm_qrcode$QRCode_View$moduleSize)), _elm_lang$core$Basics$toString(_p2.row * _pablohirafuji$elm_qrcode$QRCode_View$moduleSize)),
_1: { _1: {
ctor: '::', ctor: '::',
_0: _elm_lang$svg$Svg_Attributes$rx('0'), _0: _elm_lang$svg$Svg_Attributes$width(
_elm_lang$core$Basics$toString(_pablohirafuji$elm_qrcode$QRCode_View$moduleSize)),
_1: { _1: {
ctor: '::', ctor: '::',
_0: _elm_lang$svg$Svg_Attributes$ry('0'), _0: _elm_lang$svg$Svg_Attributes$height(
_elm_lang$core$Basics$toString(_pablohirafuji$elm_qrcode$QRCode_View$moduleSize)),
_1: { _1: {
ctor: '::', ctor: '::',
_0: _elm_lang$svg$Svg_Attributes$width( _0: _elm_lang$svg$Svg_Attributes$fill('black'),
_elm_lang$core$Basics$toString(_pablohirafuji$elm_qrcode$QRCode_View$moduleSize)), _1: {ctor: '[]'}
_1: {
ctor: '::',
_0: _elm_lang$svg$Svg_Attributes$height(
_elm_lang$core$Basics$toString(_pablohirafuji$elm_qrcode$QRCode_View$moduleSize)),
_1: {
ctor: '::',
_0: _elm_lang$svg$Svg_Attributes$fill('black'),
_1: {ctor: '[]'}
}
}
} }
} }
} }
@ -26555,6 +26756,23 @@ var _tripokey$elm_fuzzy$Fuzzy$Match = F4(
}); });
var _tripokey$elm_fuzzy$Fuzzy$distance = F3( var _tripokey$elm_fuzzy$Fuzzy$distance = F3(
function (config, needle, hay) { function (config, needle, hay) {
var accumulateInsertPenalty = F2(
function (elem, result) {
var _p7 = result;
if (_p7._0.ctor === 'Just') {
return {
ctor: '_Tuple2',
_0: _elm_lang$core$Maybe$Just(elem),
_1: ((elem - 1) - _p7._0._0) + _p7._1
};
} else {
return {
ctor: '_Tuple2',
_0: _elm_lang$core$Maybe$Just(elem),
_1: _p7._1
};
}
});
var accumulate = F2( var accumulate = F2(
function (c, indexList) { function (c, indexList) {
var indexes = A2( var indexes = A2(
@ -26568,14 +26786,14 @@ var _tripokey$elm_fuzzy$Fuzzy$distance = F3(
return !A2(_elm_lang$core$List$member, e, indexList); return !A2(_elm_lang$core$List$member, e, indexList);
}, },
indexes)); indexes));
var _p7 = hayIndex; var _p8 = hayIndex;
if (_p7.ctor === 'Just') { if (_p8.ctor === 'Just') {
return A2( return A2(
_elm_lang$core$Basics_ops['++'], _elm_lang$core$Basics_ops['++'],
indexList, indexList,
{ {
ctor: '::', ctor: '::',
_0: _p7._0, _0: _p8._0,
_1: {ctor: '[]'} _1: {ctor: '[]'}
}); });
} else { } else {
@ -26585,11 +26803,17 @@ var _tripokey$elm_fuzzy$Fuzzy$distance = F3(
var accumulated = A3(_elm_lang$core$String$foldl, accumulate, _tripokey$elm_fuzzy$Fuzzy$initialModel, needle); var accumulated = A3(_elm_lang$core$String$foldl, accumulate, _tripokey$elm_fuzzy$Fuzzy$initialModel, needle);
var sorted = _tripokey$elm_fuzzy$Fuzzy$quickSort(accumulated); var sorted = _tripokey$elm_fuzzy$Fuzzy$quickSort(accumulated);
var mPenalty = _elm_lang$core$Tuple$first(sorted) * config.movePenalty; var mPenalty = _elm_lang$core$Tuple$first(sorted) * config.movePenalty;
var iPenalty = _elm_lang$core$Tuple$second(
A3(
_elm_lang$core$List$foldl,
accumulateInsertPenalty,
{ctor: '_Tuple2', _0: _elm_lang$core$Maybe$Nothing, _1: 0},
_elm_lang$core$Tuple$second(sorted))) * config.insertPenalty;
var hPenalty = (_elm_lang$core$String$length(hay) - _elm_lang$core$List$length(accumulated)) * config.addPenalty; var hPenalty = (_elm_lang$core$String$length(hay) - _elm_lang$core$List$length(accumulated)) * config.addPenalty;
var nPenalty = (_elm_lang$core$String$length(needle) - _elm_lang$core$List$length(accumulated)) * config.removePenalty; var nPenalty = (_elm_lang$core$String$length(needle) - _elm_lang$core$List$length(accumulated)) * config.removePenalty;
return A4( return A4(
_tripokey$elm_fuzzy$Fuzzy$Match, _tripokey$elm_fuzzy$Fuzzy$Match,
(mPenalty + hPenalty) + nPenalty, ((mPenalty + hPenalty) + nPenalty) + iPenalty,
0, 0,
_elm_lang$core$String$length(hay), _elm_lang$core$String$length(hay),
_elm_lang$core$Tuple$second(sorted)); _elm_lang$core$Tuple$second(sorted));
@ -26598,11 +26822,11 @@ var _tripokey$elm_fuzzy$Fuzzy$Result = F2(
function (a, b) { function (a, b) {
return {score: a, matches: b}; return {score: a, matches: b};
}); });
var _tripokey$elm_fuzzy$Fuzzy$ConfigModel = F3( var _tripokey$elm_fuzzy$Fuzzy$ConfigModel = F4(
function (a, b, c) { function (a, b, c, d) {
return {addPenalty: a, movePenalty: b, removePenalty: c}; return {addPenalty: a, movePenalty: b, removePenalty: c, insertPenalty: d};
}); });
var _tripokey$elm_fuzzy$Fuzzy$defaultConfig = A3(_tripokey$elm_fuzzy$Fuzzy$ConfigModel, 1, 100, 1000); var _tripokey$elm_fuzzy$Fuzzy$defaultConfig = A4(_tripokey$elm_fuzzy$Fuzzy$ConfigModel, 10, 1000, 10000, 1);
var _tripokey$elm_fuzzy$Fuzzy$match = F4( var _tripokey$elm_fuzzy$Fuzzy$match = F4(
function (configs, separators, needle, hay) { function (configs, separators, needle, hay) {
var initialResult = A2( var initialResult = A2(
@ -26671,80 +26895,84 @@ var _tripokey$elm_fuzzy$Fuzzy$match = F4(
}); });
var accumulateConfig = F2( var accumulateConfig = F2(
function (c, sum) { function (c, sum) {
var _p8 = c; var _p9 = c;
switch (_p8.ctor) { switch (_p9.ctor) {
case 'AddPenalty': case 'AddPenalty':
return _elm_lang$core$Native_Utils.update( return _elm_lang$core$Native_Utils.update(
sum, sum,
{addPenalty: _p8._0}); {addPenalty: _p9._0});
case 'RemovePenalty': case 'RemovePenalty':
return _elm_lang$core$Native_Utils.update( return _elm_lang$core$Native_Utils.update(
sum, sum,
{removePenalty: _p8._0}); {removePenalty: _p9._0});
case 'MovePenalty':
return _elm_lang$core$Native_Utils.update(
sum,
{movePenalty: _p9._0});
default: default:
return _elm_lang$core$Native_Utils.update( return _elm_lang$core$Native_Utils.update(
sum, sum,
{movePenalty: _p8._0}); {insertPenalty: _p9._0});
} }
}); });
var config = A3(_elm_lang$core$List$foldl, accumulateConfig, _tripokey$elm_fuzzy$Fuzzy$defaultConfig, configs); var config = A3(_elm_lang$core$List$foldl, accumulateConfig, _tripokey$elm_fuzzy$Fuzzy$defaultConfig, configs);
var minScore = F2( var minScore = F2(
function (n, _p9) { function (n, _p10) {
var _p10 = _p9; var _p11 = _p10;
var _p15 = _p10._0; var _p16 = _p11._0;
var accumulateMatch = F2( var accumulateMatch = F2(
function (e, _p11) { function (e, _p12) {
var _p12 = _p11; var _p13 = _p12;
var _p14 = _p12._1; var _p15 = _p13._1;
var _p13 = _p12._0; var _p14 = _p13._0;
var newOffset = _p14 + _elm_lang$core$String$length(e); var newOffset = _p15 + _elm_lang$core$String$length(e);
var eDistance = A3(_tripokey$elm_fuzzy$Fuzzy$distance, config, n, e); var eDistance = A3(_tripokey$elm_fuzzy$Fuzzy$distance, config, n, e);
var newMatch = (_elm_lang$core$Native_Utils.cmp(eDistance.score, _p13.score) < 0) ? _elm_lang$core$Native_Utils.update( var newMatch = (_elm_lang$core$Native_Utils.cmp(eDistance.score, _p14.score) < 0) ? _elm_lang$core$Native_Utils.update(
eDistance, eDistance,
{offset: _p14}) : _p13; {offset: _p15}) : _p14;
return {ctor: '_Tuple2', _0: newMatch, _1: newOffset}; return {ctor: '_Tuple2', _0: newMatch, _1: newOffset};
}); });
var initialPenalty = ((_elm_lang$core$String$length(n) * config.removePenalty) + (_elm_lang$core$String$length(n) * config.movePenalty)) + (_elm_lang$core$String$length(hay) * config.addPenalty); var initialPenalty = (((_elm_lang$core$String$length(n) * config.removePenalty) + (_elm_lang$core$String$length(n) * config.movePenalty)) + (_elm_lang$core$String$length(hay) * config.addPenalty)) + ((_elm_lang$core$String$length(hay) * _elm_lang$core$String$length(n)) * config.insertPenalty);
var initialMatch = A4( var initialMatch = A4(
_tripokey$elm_fuzzy$Fuzzy$Match, _tripokey$elm_fuzzy$Fuzzy$Match,
initialPenalty, initialPenalty,
_p15, _p16,
0, 0,
{ctor: '[]'}); {ctor: '[]'});
return _elm_lang$core$Tuple$first( return _elm_lang$core$Tuple$first(
A3( A3(
_elm_lang$core$List$foldl, _elm_lang$core$List$foldl,
accumulateMatch, accumulateMatch,
{ctor: '_Tuple2', _0: initialMatch, _1: _p15}, {ctor: '_Tuple2', _0: initialMatch, _1: _p16},
_p10._1)); _p11._1));
}); });
var accumulateResult = F2( var accumulateResult = F2(
function (n, _p16) { function (n, _p17) {
var _p17 = _p16; var _p18 = _p17;
var _p19 = _p17._0; var _p20 = _p18._0;
var _p18 = _p17._1; var _p19 = _p18._1;
var matchResult = A2( var matchResult = A2(
minScore, minScore,
n, n,
A3( A3(
reduceHays, reduceHays,
_elm_lang$core$List$length(needles), _elm_lang$core$List$length(needles),
_p18, _p19,
hays)); hays));
var newResult = _elm_lang$core$Native_Utils.update( var newResult = _elm_lang$core$Native_Utils.update(
_p19, _p20,
{ {
score: matchResult.score + _p19.score, score: matchResult.score + _p20.score,
matches: A2( matches: A2(
_elm_lang$core$Basics_ops['++'], _elm_lang$core$Basics_ops['++'],
_p19.matches, _p20.matches,
{ {
ctor: '::', ctor: '::',
_0: matchResult, _0: matchResult,
_1: {ctor: '[]'} _1: {ctor: '[]'}
}) })
}); });
return {ctor: '_Tuple2', _0: newResult, _1: _p18 + 1}; return {ctor: '_Tuple2', _0: newResult, _1: _p19 + 1};
}); });
return _elm_lang$core$Tuple$first( return _elm_lang$core$Tuple$first(
A3( A3(
@ -26753,6 +26981,12 @@ var _tripokey$elm_fuzzy$Fuzzy$match = F4(
{ctor: '_Tuple2', _0: initialResult, _1: 0}, {ctor: '_Tuple2', _0: initialResult, _1: 0},
needles)); needles));
}); });
var _tripokey$elm_fuzzy$Fuzzy$InsertPenalty = function (a) {
return {ctor: 'InsertPenalty', _0: a};
};
var _tripokey$elm_fuzzy$Fuzzy$insertPenalty = function (penalty) {
return _tripokey$elm_fuzzy$Fuzzy$InsertPenalty(penalty);
};
var _tripokey$elm_fuzzy$Fuzzy$MovePenalty = function (a) { var _tripokey$elm_fuzzy$Fuzzy$MovePenalty = function (a) {
return {ctor: 'MovePenalty', _0: a}; return {ctor: 'MovePenalty', _0: a};
}; };
@ -30066,8 +30300,8 @@ var _user$project$Config$updateSelectize = F3(
return _elm_lang$core$Native_Utils.crashCase( return _elm_lang$core$Native_Utils.crashCase(
'Config', 'Config',
{ {
start: {line: 1344, column: 17}, start: {line: 1393, column: 17},
end: {line: 1349, column: 56} end: {line: 1398, column: 56}
}, },
_p4)('Shouldn\'t be here'); _p4)('Shouldn\'t be here');
} }
@ -30259,8 +30493,8 @@ var _user$project$Config$isField = function (fieldValue) {
return _elm_lang$core$Native_Utils.crashCase( return _elm_lang$core$Native_Utils.crashCase(
'Config', 'Config',
{ {
start: {line: 1024, column: 5}, start: {line: 1073, column: 5},
end: {line: 1029, column: 59} end: {line: 1078, column: 59}
}, },
_p12)('Referenced field must be boolean'); _p12)('Referenced field must be boolean');
} }
@ -30545,8 +30779,8 @@ var _user$project$Config$languageSelectizeView = F6(
return _elm_lang$core$Native_Utils.crashCase( return _elm_lang$core$Native_Utils.crashCase(
'Config', 'Config',
{ {
start: {line: 533, column: 21}, start: {line: 534, column: 21},
end: {line: 538, column: 60} end: {line: 539, column: 60}
}, },
_p18)('Shouldn\'t be here'); _p18)('Shouldn\'t be here');
} }
@ -30587,8 +30821,8 @@ var _user$project$Config$cryptoCurrencySelectizeView = F6(
return _elm_lang$core$Native_Utils.crashCase( return _elm_lang$core$Native_Utils.crashCase(
'Config', 'Config',
{ {
start: {line: 487, column: 21}, start: {line: 488, column: 21},
end: {line: 492, column: 60} end: {line: 493, column: 60}
}, },
_p21)('Shouldn\'t be here'); _p21)('Shouldn\'t be here');
} }
@ -30845,8 +31079,8 @@ var _user$project$Config$fieldHolderToList = function (fieldHolder) {
return _elm_lang$core$Native_Utils.crashCase( return _elm_lang$core$Native_Utils.crashCase(
'Config', 'Config',
{ {
start: {line: 153, column: 13}, start: {line: 154, column: 13},
end: {line: 161, column: 50} end: {line: 162, column: 50}
}, },
_p29)('Not a list type'); _p29)('Not a list type');
} }
@ -31125,8 +31359,8 @@ var _user$project$Config$selectizeView = F6(
return _elm_lang$core$Native_Utils.crashCase( return _elm_lang$core$Native_Utils.crashCase(
'Config', 'Config',
{ {
start: {line: 619, column: 13}, start: {line: 620, column: 13},
end: {line: 669, column: 56} end: {line: 670, column: 56}
}, },
_p37)('Not a Selectize field'); _p37)('Not a Selectize field');
} }
@ -31528,6 +31762,154 @@ var _user$project$Config$tableView = function (model) {
} }
}); });
}; };
var _user$project$Config$complianceTableView = function (model) {
var header = A2(
_elm_lang$html$Html$tr,
{ctor: '[]'},
{
ctor: '::',
_0: A2(
_elm_lang$html$Html$th,
{ctor: '[]'},
{ctor: '[]'}),
_1: {
ctor: '::',
_0: A2(
_elm_lang$html$Html$th,
{ctor: '[]'},
{
ctor: '::',
_0: _elm_lang$html$Html$text('Active'),
_1: {ctor: '[]'}
}),
_1: {
ctor: '::',
_0: A2(
_elm_lang$html$Html$th,
{ctor: '[]'},
{
ctor: '::',
_0: _elm_lang$html$Html$text('Threshold'),
_1: {ctor: '[]'}
}),
_1: {ctor: '[]'}
}
}
});
var emptyCell = A2(
_elm_lang$html$Html$td,
{ctor: '[]'},
{
ctor: '::',
_0: _elm_lang$html$Html$text('--'),
_1: {ctor: '[]'}
});
var cryptoScoped = function (fieldInstance) {
return _elm_lang$core$Native_Utils.eq(fieldInstance.fieldLocator.fieldScope.crypto, model.crypto);
};
var instances = A2(_elm_lang$core$List$filter, cryptoScoped, model.fieldCollection.fieldInstances);
var pickField = function (code) {
return A3(
_user$project$Config$pickFieldInstance,
code,
{crypto: _user$project$ConfigTypes$GlobalCrypto, machine: _user$project$ConfigTypes$GlobalMachine},
instances);
};
var fieldCodeCellView = function (code) {
return A3(
_elm_community$maybe_extra$Maybe_Extra$unwrap,
emptyCell,
_user$project$Config$cellView(model),
pickField(code));
};
var row = F3(
function (label, activeFieldCode, thresholdFieldCode) {
return A2(
_elm_lang$html$Html$tr,
{ctor: '[]'},
{
ctor: '::',
_0: A2(
_elm_lang$html$Html$td,
{
ctor: '::',
_0: _user$project$Css_Admin$class(
{
ctor: '::',
_0: _user$project$Css_Classes$ShortCell,
_1: {ctor: '[]'}
}),
_1: {ctor: '[]'}
},
{
ctor: '::',
_0: _elm_lang$html$Html$text(label),
_1: {ctor: '[]'}
}),
_1: {
ctor: '::',
_0: fieldCodeCellView(activeFieldCode),
_1: {
ctor: '::',
_0: fieldCodeCellView(thresholdFieldCode),
_1: {ctor: '[]'}
}
}
});
});
return A2(
_elm_lang$html$Html$table,
{
ctor: '::',
_0: _user$project$Css_Admin$class(
{
ctor: '::',
_0: _user$project$Css_Classes$ConfigTable,
_1: {ctor: '[]'}
}),
_1: {ctor: '[]'}
},
{
ctor: '::',
_0: A2(
_elm_lang$html$Html$tbody,
{ctor: '[]'},
{
ctor: '::',
_0: header,
_1: {
ctor: '::',
_0: A3(row, 'SMS', 'smsVerificationActive', 'smsVerificationThreshold'),
_1: {
ctor: '::',
_0: A3(row, 'ID Card Data', 'idCardDataVerificationActive', 'idCardDataVerificationThreshold'),
_1: {
ctor: '::',
_0: A3(row, 'ID Card Photo', 'idCardPhotoVerificationActive', 'idCardPhotoVerificationThreshold'),
_1: {
ctor: '::',
_0: A3(row, 'Front Facing Camera', 'frontCameraVerificationActive', 'frontCameraVerificationThreshold'),
_1: {
ctor: '::',
_0: A3(row, 'Sanctions', 'sanctionsVerificationActive', 'sanctionsVerificationThreshold'),
_1: {
ctor: '::',
_0: A3(row, 'Cross Reference', 'crossRefVerificationActive', 'crossRefVerificationThreshold'),
_1: {
ctor: '::',
_0: A3(row, 'Hard Limit', 'hardLimitVerificationActive', 'hardLimitVerificationThreshold'),
_1: {ctor: '[]'}
}
}
}
}
}
}
}
}),
_1: {ctor: '[]'}
});
};
var _user$project$Config$Submit = {ctor: 'Submit'}; var _user$project$Config$Submit = {ctor: 'Submit'};
var _user$project$Config$view = function (model) { var _user$project$Config$view = function (model) {
var _p43 = model.webConfigGroup; var _p43 = model.webConfigGroup;
@ -31567,6 +31949,7 @@ var _user$project$Config$view = function (model) {
} }
}(); }();
var cryptos = A3(_user$project$ConfigTypes$allCryptos, _p45.data.cryptoCurrencies, _p45.schema.cryptoScope, _p45.selectedCryptos); var cryptos = A3(_user$project$ConfigTypes$allCryptos, _p45.data.cryptoCurrencies, _p45.schema.cryptoScope, _p45.selectedCryptos);
var getView = _elm_lang$core$Native_Utils.eq(_p45.schema.code, 'compliance') ? _user$project$Config$complianceTableView : _user$project$Config$tableView;
var resolvedModel = A2(_user$project$Config$toResolvedModel, model, _p45); var resolvedModel = A2(_user$project$Config$toResolvedModel, model, _p45);
var configGroupView = A2( var configGroupView = A2(
_elm_lang$html$Html$div, _elm_lang$html$Html$div,
@ -31582,7 +31965,7 @@ var _user$project$Config$view = function (model) {
}, },
{ {
ctor: '::', ctor: '::',
_0: _user$project$Config$tableView(resolvedModel), _0: getView(resolvedModel),
_1: {ctor: '[]'} _1: {ctor: '[]'}
}); });
var machines = _user$project$ConfigTypes$listMachines(resolvedModel.configGroup); var machines = _user$project$ConfigTypes$listMachines(resolvedModel.configGroup);
@ -33226,11 +33609,7 @@ var _user$project$NavBar$determineConfigCategory = function (configCode) {
_1: { _1: {
ctor: '::', ctor: '::',
_0: 'balanceAlerts', _0: 'balanceAlerts',
_1: { _1: {ctor: '[]'}
ctor: '::',
_0: 'compliance',
_1: {ctor: '[]'}
}
} }
} }
} }
@ -33244,7 +33623,11 @@ var _user$project$NavBar$determineConfigCategory = function (configCode) {
_1: { _1: {
ctor: '::', ctor: '::',
_0: 'notifications', _0: 'notifications',
_1: {ctor: '[]'} _1: {
ctor: '::',
_0: 'compliance',
_1: {ctor: '[]'}
}
} }
}) ? _elm_lang$core$Maybe$Just(_user$project$CoreTypes$GlobalSettingsCat) : _elm_lang$core$Maybe$Nothing); }) ? _elm_lang$core$Maybe$Just(_user$project$CoreTypes$GlobalSettingsCat) : _elm_lang$core$Maybe$Nothing);
}; };
@ -33615,11 +33998,7 @@ var _user$project$NavBar$view = F2(
_1: { _1: {
ctor: '::', ctor: '::',
_0: A2(configLink, 'balanceAlerts', 'Balance Alerts'), _0: A2(configLink, 'balanceAlerts', 'Balance Alerts'),
_1: { _1: {ctor: '[]'}
ctor: '::',
_0: A2(configLink, 'compliance', 'Compliance'),
_1: {ctor: '[]'}
}
} }
} }
} }
@ -33642,7 +34021,11 @@ var _user$project$NavBar$view = F2(
_1: { _1: {
ctor: '::', ctor: '::',
_0: A2(configLink, 'notifications', 'Notifications'), _0: A2(configLink, 'notifications', 'Notifications'),
_1: {ctor: '[]'} _1: {
ctor: '::',
_0: A2(configLink, 'compliance', 'Compliance'),
_1: {ctor: '[]'}
}
} }
}), }),
_1: { _1: {