From 94de659246430e73c0728e36a3ad93297ba279bb Mon Sep 17 00:00:00 2001 From: goga-m Date: Thu, 28 Sep 2017 12:30:09 +0300 Subject: [PATCH] Update Customer's data --- lib/admin/admin-server.js | 12 +- lib/customers.js | 26 +- public/elm.js | 600 ++++++++++++++++++++++++++++++++------ 3 files changed, 534 insertions(+), 104 deletions(-) diff --git a/lib/admin/admin-server.js b/lib/admin/admin-server.js index 7e945065..e8d3ffe9 100644 --- a/lib/admin/admin-server.js +++ b/lib/admin/admin-server.js @@ -29,6 +29,7 @@ const server = require('./server') const transactions = require('./transactions') const customers = require('../customers') const funding = require('./funding') +const _ = require('lodash/fp') const NEVER = new Date(Date.now() + 100 * T.years) const REAUTHENTICATE_INTERVAL = T.minute @@ -184,9 +185,7 @@ app.get('/api/customer/:id', (req, res, next) => { }) /** - * Endpoint for patching customer's authorizedOverride status - * - * Possible values: blocked, verified, automatic + * Endpoint for patching customer's data * * @param {string} '/api/customer/ Url to handle * @param {object} req Request object @@ -194,11 +193,8 @@ app.get('/api/customer/:id', (req, res, next) => { * @param {function} next Callback */ app.patch('/api/customer/:id', (req, res, next) => { - if (!req.query.authorizedOverride) return res.status(400).send({Error: 'Requires authorized'}) - - return customers.patch(req.params.id, { - authorizedOverride: req.query.authorizedOverride - }) + if (!req.params.id) return res.status(400).send({Error: 'Requires id'}) + return customers.update(req.params.id, req.query) .then(r => res.send(r)) .catch(() => res.status(404).send({Error: 'Not found'})) }) diff --git a/lib/customers.js b/lib/customers.js index 1a4b78f6..24066dc8 100644 --- a/lib/customers.js +++ b/lib/customers.js @@ -5,6 +5,7 @@ const BN = require('./bn') const anonymous = require('../lib/constants').anonymousCustomer const NUM_RESULTS = 20 const camelize = require('camelize') +const Pgp = require('pg-promise')() function add (customer) { const sql = 'insert into customers (id, phone, phone_at) values ($1, $2, now()) returning *' @@ -23,24 +24,27 @@ function get (phone) { } /** - * Patch Customer - * Note: Currently patching only authorized_verified field + * Update customer record + * + * @name update + * @function * * @param {string} id Customer's id - * @param {object} values Values to patch - * @returns {object} Updated customer + * @param {object} data Fields to update + * @returns {Promise} Newly updated Customer */ -function patch (id, values) { - const sql = 'update customers set authorized_override=$2 where id=$1 returning *' - return db.oneOrNone(sql, [id, values.authorizedOverride]) +function update (id, data) { + const updateData = _.omit(['id'], _.mapKeys(_.snakeCase, data)) + const sql = Pgp.helpers.update(updateData, _.keys(updateData), 'customers') + + ' where id=$1 returning *' + return db.oneOrNone(sql, [id]) + .then(customer => customer ? format(customer) : null) } function getById (id) { const sql = 'select * from customers where id=$1' return db.oneOrNone(sql, [id]) - .then(customer => { - return (customer) ? format(customer) : null - }) + .then(customer => customer ? format(customer) : null) } function getDailyVolume (id) { @@ -104,4 +108,4 @@ function batch () { .then(_.map(format)) } -module.exports = { add, get, batch, getById, patch} +module.exports = { add, get, batch, getById, update} diff --git a/public/elm.js b/public/elm.js index 3eeaa982..5cf1d40d 100644 --- a/public/elm.js +++ b/public/elm.js @@ -31951,10 +31951,49 @@ var _user$project$BasicTypes$Editing = {ctor: 'Editing'}; var _user$project$BasicTypes$Saved = {ctor: 'Saved'}; var _user$project$BasicTypes$Saving = {ctor: 'Saving'}; -var _user$project$Common_Customer_Types$Customer = F8( - function (a, b, c, d, e, f, g, h) { - return {id: a, name: b, phone: c, phoneAt: d, created: e, status: f, authorizedOverride: g, authorizedAt: h}; - }); +var _user$project$Common_Customer_Types$Customer = function (a) { + return function (b) { + return function (c) { + return function (d) { + return function (e) { + return function (f) { + return function (g) { + return function (h) { + return function (i) { + return function (j) { + return function (k) { + return function (l) { + return function (m) { + return function (n) { + return function (o) { + return function (p) { + return function (q) { + return function (r) { + return function (s) { + return function (t) { + return function (u) { + return {id: a, name: b, phone: c, phoneAt: d, smsOverride: e, created: f, status: g, authorizedOverride: h, authorizedAt: i, idCardData: j, idCardDataOverride: k, idCardAt: l, idCardImagePath: m, idCardPhotoOverride: n, idCardImageAt: o, sanctionsCheck: p, sanctionsCheckOverride: q, sanctionsCheckAt: r, frontFacingCamPath: s, frontFacingCamOverride: t, frontFacingCamAt: u}; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; +}; var _user$project$Common_Customer_Types$Verified = {ctor: 'Verified'}; var _user$project$Common_Customer_Types$Blocked = {ctor: 'Blocked'}; var _user$project$Common_Customer_Types$Automatic = {ctor: 'Automatic'}; @@ -31976,37 +32015,89 @@ var _user$project$Common_Customer_Decoder$mapAuthorizedTypes = function (s) { var _user$project$Common_Customer_Decoder$authorizedDecoder = A2(_elm_lang$core$Json_Decode$andThen, _user$project$Common_Customer_Decoder$mapAuthorizedTypes, _elm_lang$core$Json_Decode$string); var _user$project$Common_Customer_Decoder$customerDecoder = A3( _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required, - 'authorizedAt', + 'frontFacingCamAt', _elm_lang$core$Json_Decode$nullable(_elm_community$json_extra$Json_Decode_Extra$date), A3( _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required, - 'authorizedOverride', + 'frontFacingCamOverride', _user$project$Common_Customer_Decoder$authorizedDecoder, A3( _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required, - 'status', + 'frontFacingCamPath', _elm_lang$core$Json_Decode$nullable(_elm_lang$core$Json_Decode$string), A3( _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required, - 'created', - _elm_community$json_extra$Json_Decode_Extra$date, + 'sanctionsCheckAt', + _elm_lang$core$Json_Decode$nullable(_elm_community$json_extra$Json_Decode_Extra$date), A3( _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required, - 'phoneAt', - _elm_lang$core$Json_Decode$nullable(_elm_community$json_extra$Json_Decode_Extra$date), + 'sanctionsCheckOverride', + _user$project$Common_Customer_Decoder$authorizedDecoder, A3( _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required, - 'phone', + 'sanctionsCheck', _elm_lang$core$Json_Decode$nullable(_elm_lang$core$Json_Decode$string), A3( _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required, - 'name', - _elm_lang$core$Json_Decode$nullable(_elm_lang$core$Json_Decode$string), + 'idCardImageAt', + _elm_lang$core$Json_Decode$nullable(_elm_community$json_extra$Json_Decode_Extra$date), A3( _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required, - 'id', - _elm_lang$core$Json_Decode$string, - _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$decode(_user$project$Common_Customer_Types$Customer))))))))); + 'idCardPhotoOverride', + _user$project$Common_Customer_Decoder$authorizedDecoder, + A3( + _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required, + 'idCardImagePath', + _elm_lang$core$Json_Decode$nullable(_elm_lang$core$Json_Decode$string), + A3( + _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required, + 'idCardAt', + _elm_lang$core$Json_Decode$nullable(_elm_community$json_extra$Json_Decode_Extra$date), + A3( + _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required, + 'idCardDataOverride', + _user$project$Common_Customer_Decoder$authorizedDecoder, + A3( + _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required, + 'idCardData', + _elm_lang$core$Json_Decode$nullable(_elm_lang$core$Json_Decode$string), + A3( + _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required, + 'authorizedAt', + _elm_lang$core$Json_Decode$nullable(_elm_community$json_extra$Json_Decode_Extra$date), + A3( + _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required, + 'authorizedOverride', + _user$project$Common_Customer_Decoder$authorizedDecoder, + A3( + _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required, + 'status', + _elm_lang$core$Json_Decode$nullable(_elm_lang$core$Json_Decode$string), + A3( + _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required, + 'created', + _elm_community$json_extra$Json_Decode_Extra$date, + A3( + _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required, + 'smsOverride', + _user$project$Common_Customer_Decoder$authorizedDecoder, + A3( + _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required, + 'phoneAt', + _elm_lang$core$Json_Decode$nullable(_elm_community$json_extra$Json_Decode_Extra$date), + A3( + _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required, + 'phone', + _elm_lang$core$Json_Decode$nullable(_elm_lang$core$Json_Decode$string), + A3( + _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required, + 'name', + _elm_lang$core$Json_Decode$nullable(_elm_lang$core$Json_Decode$string), + A3( + _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required, + 'id', + _elm_lang$core$Json_Decode$string, + _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$decode(_user$project$Common_Customer_Types$Customer)))))))))))))))))))))); var _user$project$Common_Customer_Decoder$customersDecoder = A2( _elm_lang$core$Json_Decode$field, 'customers', @@ -37899,12 +37990,10 @@ var _user$project$Customers_Types$Load = function (a) { return {ctor: 'Load', _0: a}; }; -var _user$project$Customer_Types$UnBlockCustomer = function (a) { - return {ctor: 'UnBlockCustomer', _0: a}; -}; -var _user$project$Customer_Types$BlockCustomer = function (a) { - return {ctor: 'BlockCustomer', _0: a}; -}; +var _user$project$Customer_Types$PatchCustomer = F3( + function (a, b, c) { + return {ctor: 'PatchCustomer', _0: a, _1: b, _2: c}; + }); var _user$project$Customer_Types$Load = function (a) { return {ctor: 'Load', _0: a}; }; @@ -37991,8 +38080,8 @@ var _user$project$Customer_Rest$getCustomer = function (id) { _lukewestby$elm_http_builder$HttpBuilder$get( A2(_elm_lang$core$Basics_ops['++'], '/api/customer/', id))))); }; -var _user$project$Customer_Rest$updateCustomer = F2( - function (id, action) { +var _user$project$Customer_Rest$patchCustomer = F3( + function (id, field, value) { return A2( _elm_lang$core$Platform_Cmd$map, _user$project$Customer_Types$Load, @@ -38009,36 +38098,32 @@ var _user$project$Customer_Rest$updateCustomer = F2( A2( _elm_lang$core$Basics_ops['++'], id, - A2(_elm_lang$core$Basics_ops['++'], '?authorizedOverride=', action))))))); + A2( + _elm_lang$core$Basics_ops['++'], + '?', + A2( + _elm_lang$core$Basics_ops['++'], + field, + A2(_elm_lang$core$Basics_ops['++'], '=', value))))))))); }); var _user$project$Customer_State$update = F2( function (msg, model) { var _p0 = msg; - switch (_p0.ctor) { - case 'Load': - return A2( - _elm_lang$core$Platform_Cmd_ops['!'], - _p0._0, - {ctor: '[]'}); - case 'UnBlockCustomer': - return A2( - _elm_lang$core$Platform_Cmd_ops['!'], - model, - { - ctor: '::', - _0: A2(_user$project$Customer_Rest$updateCustomer, _p0._0, 'verified'), - _1: {ctor: '[]'} - }); - default: - return A2( - _elm_lang$core$Platform_Cmd_ops['!'], - model, - { - ctor: '::', - _0: A2(_user$project$Customer_Rest$updateCustomer, _p0._0, 'blocked'), - _1: {ctor: '[]'} - }); + if (_p0.ctor === 'Load') { + return A2( + _elm_lang$core$Platform_Cmd_ops['!'], + _p0._0, + {ctor: '[]'}); + } else { + return A2( + _elm_lang$core$Platform_Cmd_ops['!'], + model, + { + ctor: '::', + _0: A3(_user$project$Customer_Rest$patchCustomer, _p0._0, _p0._1, _p0._2), + _1: {ctor: '[]'} + }); } }); var _user$project$Customer_State$load = function (id) { @@ -38050,28 +38135,142 @@ var _user$project$Customer_State$load = function (id) { }; var _user$project$Customer_State$init = _krisajenkins$remotedata$RemoteData$NotAsked; +var _user$project$Customer_View$authorizedToString = function (model) { + var _p0 = model; + switch (_p0.ctor) { + case 'Verified': + return 'verified'; + case 'Blocked': + return 'blocked'; + default: + return 'automatic'; + } +}; +var _user$project$Customer_View$verifyStatus = F2( + function (complianceType, fieldOverride) { + return (_elm_lang$core$Native_Utils.eq(fieldOverride, _user$project$Common_Customer_Types$Verified) || ((!_elm_lang$core$Native_Utils.eq(complianceType, _elm_lang$core$Maybe$Nothing)) && _elm_lang$core$Native_Utils.eq(fieldOverride, _user$project$Common_Customer_Types$Automatic))) ? _elm_lang$html$Html$text('Verified') : _elm_lang$html$Html$text('Unverified'); + }); +var _user$project$Customer_View$radio = F4( + function (inputName, checkedValue, value, msg) { + return A2( + _elm_lang$html$Html$label, + { + ctor: '::', + _0: _elm_lang$html$Html_Attributes$style( + { + ctor: '::', + _0: {ctor: '_Tuple2', _0: 'padding', _1: '5px'}, + _1: {ctor: '[]'} + }), + _1: {ctor: '[]'} + }, + { + ctor: '::', + _0: A2( + _elm_lang$html$Html$input, + { + ctor: '::', + _0: _elm_lang$html$Html_Attributes$checked( + _elm_lang$core$Native_Utils.eq( + _user$project$Customer_View$authorizedToString(checkedValue), + value)), + _1: { + ctor: '::', + _0: _elm_lang$html$Html_Attributes$type_('radio'), + _1: { + ctor: '::', + _0: _elm_lang$html$Html_Attributes$name(inputName), + _1: { + ctor: '::', + _0: _elm_lang$html$Html_Events$onClick(msg), + _1: {ctor: '[]'} + } + } + } + }, + {ctor: '[]'}), + _1: { + ctor: '::', + _0: _elm_lang$html$Html$text(value), + _1: {ctor: '[]'} + } + }); + }); +var _user$project$Customer_View$actions = F3( + function (id, fieldKey, checkedValue) { + return A2( + _elm_lang$html$Html$div, + {ctor: '[]'}, + { + ctor: '::', + _0: A2( + _elm_lang$html$Html$div, + {ctor: '[]'}, + { + ctor: '::', + _0: A4( + _user$project$Customer_View$radio, + fieldKey, + checkedValue, + 'automatic', + A3( + _user$project$Customer_Types$PatchCustomer, + id, + fieldKey, + _user$project$Customer_View$authorizedToString(_user$project$Common_Customer_Types$Automatic))), + _1: { + ctor: '::', + _0: A4( + _user$project$Customer_View$radio, + fieldKey, + checkedValue, + 'blocked', + A3( + _user$project$Customer_Types$PatchCustomer, + id, + fieldKey, + _user$project$Customer_View$authorizedToString(_user$project$Common_Customer_Types$Blocked))), + _1: { + ctor: '::', + _0: A4( + _user$project$Customer_View$radio, + fieldKey, + checkedValue, + 'verified', + A3( + _user$project$Customer_Types$PatchCustomer, + id, + fieldKey, + _user$project$Customer_View$authorizedToString(_user$project$Common_Customer_Types$Verified))), + _1: {ctor: '[]'} + } + } + }), + _1: {ctor: '[]'} + }); + }); var _user$project$Customer_View$maybeText = function (maybeString) { return A2(_elm_lang$core$Maybe$withDefault, '', maybeString); }; var _user$project$Customer_View$formatDate = function (date) { - var _p0 = date; - if (_p0.ctor === 'Just') { - return A2(_justinmimbs$elm_date_extra$Date_Extra$toFormattedString, 'yyyy-MM-dd HH:mm', _p0._0); + var _p1 = date; + if (_p1.ctor === 'Just') { + return A2(_justinmimbs$elm_date_extra$Date_Extra$toFormattedString, 'yyyy-MM-dd HH:mm', _p1._0); } else { return ''; } }; var _user$project$Customer_View$customerActions = F2( function (id, authorizedOverride) { - var _p1 = authorizedOverride; - switch (_p1.ctor) { + var _p2 = authorizedOverride; + switch (_p2.ctor) { case 'Blocked': return A2( _elm_lang$html$Html$button, { ctor: '::', _0: _elm_lang$html$Html_Events$onClick( - _user$project$Customer_Types$UnBlockCustomer(id)), + A3(_user$project$Customer_Types$PatchCustomer, id, 'authorizedOverride', 'verified')), _1: {ctor: '[]'} }, { @@ -38085,7 +38284,7 @@ var _user$project$Customer_View$customerActions = F2( { ctor: '::', _0: _elm_lang$html$Html_Events$onClick( - _user$project$Customer_Types$BlockCustomer(id)), + A3(_user$project$Customer_Types$PatchCustomer, id, 'authorizedOverride', 'blocked')), _1: {ctor: '[]'} }, { @@ -38099,7 +38298,7 @@ var _user$project$Customer_View$customerActions = F2( { ctor: '::', _0: _elm_lang$html$Html_Events$onClick( - _user$project$Customer_Types$UnBlockCustomer(id)), + A3(_user$project$Customer_Types$PatchCustomer, id, 'authorizedOverride', 'automatic')), _1: {ctor: '[]'} }, { @@ -38414,7 +38613,7 @@ var _user$project$Customer_View$customerView = function (customer) { {ctor: '[]'}, { ctor: '::', - _0: _elm_lang$html$Html$text('Verified/Unverified'), + _0: _elm_lang$html$Html$text('Verify Status'), _1: {ctor: '[]'} }), _1: { @@ -38434,21 +38633,10 @@ var _user$project$Customer_View$customerView = function (customer) { {ctor: '[]'}, { ctor: '::', - _0: _elm_lang$html$Html$text('User who overrode'), + _0: _elm_lang$html$Html$text('Actions'), _1: {ctor: '[]'} }), - _1: { - ctor: '::', - _0: A2( - _elm_lang$html$Html$td, - {ctor: '[]'}, - { - ctor: '::', - _0: _elm_lang$html$Html$text('Actions'), - _1: {ctor: '[]'} - }), - _1: {ctor: '[]'} - } + _1: {ctor: '[]'} } } } @@ -38494,8 +38682,7 @@ var _user$project$Customer_View$customerView = function (customer) { {ctor: '[]'}, { ctor: '::', - _0: _elm_lang$html$Html$text( - _user$project$Customer_View$maybeText(customer.phone)), + _0: A2(_user$project$Customer_View$verifyStatus, customer.phone, customer.smsOverride), _1: {ctor: '[]'} }), _1: { @@ -38506,7 +38693,59 @@ var _user$project$Customer_View$customerView = function (customer) { { ctor: '::', _0: _elm_lang$html$Html$text( - _user$project$Customer_View$maybeText(customer.phone)), + _user$project$Customer_View$authorizedToString(customer.smsOverride)), + _1: {ctor: '[]'} + }), + _1: { + ctor: '::', + _0: A2( + _elm_lang$html$Html$td, + {ctor: '[]'}, + { + ctor: '::', + _0: A3(_user$project$Customer_View$actions, customer.id, 'smsOverride', customer.smsOverride), + _1: {ctor: '[]'} + }), + _1: {ctor: '[]'} + } + } + } + } + }), + _1: { + ctor: '::', + _0: A2( + _elm_lang$html$Html$tr, + {ctor: '[]'}, + { + ctor: '::', + _0: A2( + _elm_lang$html$Html$td, + {ctor: '[]'}, + { + ctor: '::', + _0: _elm_lang$html$Html$text('ID Card Data'), + _1: {ctor: '[]'} + }), + _1: { + ctor: '::', + _0: A2( + _elm_lang$html$Html$td, + {ctor: '[]'}, + { + ctor: '::', + _0: _elm_lang$html$Html$text( + _user$project$Customer_View$formatDate(customer.idCardAt)), + _1: {ctor: '[]'} + }), + _1: { + ctor: '::', + _0: A2( + _elm_lang$html$Html$td, + {ctor: '[]'}, + { + ctor: '::', + _0: A2(_user$project$Customer_View$verifyStatus, customer.idCardData, customer.idCardDataOverride), _1: {ctor: '[]'} }), _1: { @@ -38517,7 +38756,59 @@ var _user$project$Customer_View$customerView = function (customer) { { ctor: '::', _0: _elm_lang$html$Html$text( - _user$project$Customer_View$maybeText(customer.phone)), + _user$project$Customer_View$authorizedToString(customer.idCardDataOverride)), + _1: {ctor: '[]'} + }), + _1: { + ctor: '::', + _0: A2( + _elm_lang$html$Html$td, + {ctor: '[]'}, + { + ctor: '::', + _0: A3(_user$project$Customer_View$actions, customer.id, 'idCardDataOverride', customer.idCardDataOverride), + _1: {ctor: '[]'} + }), + _1: {ctor: '[]'} + } + } + } + } + }), + _1: { + ctor: '::', + _0: A2( + _elm_lang$html$Html$tr, + {ctor: '[]'}, + { + ctor: '::', + _0: A2( + _elm_lang$html$Html$td, + {ctor: '[]'}, + { + ctor: '::', + _0: _elm_lang$html$Html$text('ID Card Photo'), + _1: {ctor: '[]'} + }), + _1: { + ctor: '::', + _0: A2( + _elm_lang$html$Html$td, + {ctor: '[]'}, + { + ctor: '::', + _0: _elm_lang$html$Html$text( + _user$project$Customer_View$formatDate(customer.idCardImageAt)), + _1: {ctor: '[]'} + }), + _1: { + ctor: '::', + _0: A2( + _elm_lang$html$Html$td, + {ctor: '[]'}, + { + ctor: '::', + _0: A2(_user$project$Customer_View$verifyStatus, customer.idCardImagePath, customer.idCardPhotoOverride), _1: {ctor: '[]'} }), _1: { @@ -38528,17 +38819,156 @@ var _user$project$Customer_View$customerView = function (customer) { { ctor: '::', _0: _elm_lang$html$Html$text( - _user$project$Customer_View$maybeText(customer.phone)), + _user$project$Customer_View$authorizedToString(customer.idCardPhotoOverride)), _1: {ctor: '[]'} }), - _1: {ctor: '[]'} + _1: { + ctor: '::', + _0: A2( + _elm_lang$html$Html$td, + {ctor: '[]'}, + { + ctor: '::', + _0: A3(_user$project$Customer_View$actions, customer.id, 'idCardPhotoOverride', customer.idCardPhotoOverride), + _1: {ctor: '[]'} + }), + _1: {ctor: '[]'} + } } } } + }), + _1: { + ctor: '::', + _0: A2( + _elm_lang$html$Html$tr, + {ctor: '[]'}, + { + ctor: '::', + _0: A2( + _elm_lang$html$Html$td, + {ctor: '[]'}, + { + ctor: '::', + _0: _elm_lang$html$Html$text('Front Facing Camera'), + _1: {ctor: '[]'} + }), + _1: { + ctor: '::', + _0: A2( + _elm_lang$html$Html$td, + {ctor: '[]'}, + { + ctor: '::', + _0: _elm_lang$html$Html$text( + _user$project$Customer_View$formatDate(customer.frontFacingCamAt)), + _1: {ctor: '[]'} + }), + _1: { + ctor: '::', + _0: A2( + _elm_lang$html$Html$td, + {ctor: '[]'}, + { + ctor: '::', + _0: A2(_user$project$Customer_View$verifyStatus, customer.frontFacingCamPath, customer.frontFacingCamOverride), + _1: {ctor: '[]'} + }), + _1: { + ctor: '::', + _0: A2( + _elm_lang$html$Html$td, + {ctor: '[]'}, + { + ctor: '::', + _0: _elm_lang$html$Html$text( + _user$project$Customer_View$authorizedToString(customer.frontFacingCamOverride)), + _1: {ctor: '[]'} + }), + _1: { + ctor: '::', + _0: A2( + _elm_lang$html$Html$td, + {ctor: '[]'}, + { + ctor: '::', + _0: A3(_user$project$Customer_View$actions, customer.id, 'frontFacingCamOverride', customer.frontFacingCamOverride), + _1: {ctor: '[]'} + }), + _1: {ctor: '[]'} + } + } + } + } + }), + _1: { + ctor: '::', + _0: A2( + _elm_lang$html$Html$tr, + {ctor: '[]'}, + { + ctor: '::', + _0: A2( + _elm_lang$html$Html$td, + {ctor: '[]'}, + { + ctor: '::', + _0: _elm_lang$html$Html$text('Sanctions Check'), + _1: {ctor: '[]'} + }), + _1: { + ctor: '::', + _0: A2( + _elm_lang$html$Html$td, + {ctor: '[]'}, + { + ctor: '::', + _0: _elm_lang$html$Html$text( + _user$project$Customer_View$formatDate(customer.sanctionsCheckAt)), + _1: {ctor: '[]'} + }), + _1: { + ctor: '::', + _0: A2( + _elm_lang$html$Html$td, + {ctor: '[]'}, + { + ctor: '::', + _0: A2(_user$project$Customer_View$verifyStatus, customer.sanctionsCheck, customer.sanctionsCheckOverride), + _1: {ctor: '[]'} + }), + _1: { + ctor: '::', + _0: A2( + _elm_lang$html$Html$td, + {ctor: '[]'}, + { + ctor: '::', + _0: _elm_lang$html$Html$text( + _user$project$Customer_View$authorizedToString(customer.sanctionsCheckOverride)), + _1: {ctor: '[]'} + }), + _1: { + ctor: '::', + _0: A2( + _elm_lang$html$Html$td, + {ctor: '[]'}, + { + ctor: '::', + _0: A3(_user$project$Customer_View$actions, customer.id, 'sanctionsCheckOverride', customer.sanctionsCheckOverride), + _1: {ctor: '[]'} + }), + _1: {ctor: '[]'} + } + } + } + } + }), + _1: {ctor: '[]'} } } - }), - _1: {ctor: '[]'} + } + } }), _1: {ctor: '[]'} } @@ -38550,8 +38980,8 @@ var _user$project$Customer_View$customerView = function (customer) { }); }; var _user$project$Customer_View$view = function (model) { - var _p2 = model; - switch (_p2.ctor) { + var _p3 = model; + switch (_p3.ctor) { case 'NotAsked': return A2( _elm_lang$html$Html$div, @@ -38573,7 +39003,7 @@ var _user$project$Customer_View$view = function (model) { { ctor: '::', _0: _elm_lang$html$Html$text( - _elm_lang$core$Basics$toString(_p2._0)), + _elm_lang$core$Basics$toString(_p3._0)), _1: {ctor: '[]'} }); default: @@ -38582,7 +39012,7 @@ var _user$project$Customer_View$view = function (model) { {ctor: '[]'}, { ctor: '::', - _0: _user$project$Customer_View$customerView(_p2._0), + _0: _user$project$Customer_View$customerView(_p3._0), _1: {ctor: '[]'} }); } @@ -41476,7 +41906,7 @@ var _user$project$Main$Model = function (a) { var Elm = {}; Elm['Main'] = Elm['Main'] || {}; if (typeof _user$project$Main$main !== 'undefined') { - _user$project$Main$main(Elm['Main'], 'Main', {"types":{"unions":{"Selectize.Status":{"args":[],"tags":{"Editing":[],"Idle":[],"Blurred":[],"Cleared":[],"Initial":[]}},"BasicTypes.SavingStatus":{"args":[],"tags":{"Saving":[],"Editing":[],"NotSaving":[],"Saved":[]}},"Dict.LeafColor":{"args":[],"tags":{"LBBlack":[],"LBlack":[]}},"Account.SavingStatus":{"args":[],"tags":{"Saving":[],"Editing":[],"NotSaving":[],"Saved":[]}},"ConfigTypes.ConfigScope":{"args":[],"tags":{"Specific":[],"Both":[],"Global":[]}},"FieldSet.Types.Msg":{"args":[],"tags":{"Input":["String","String"]}},"ConfigTypes.FieldType":{"args":[],"tags":{"FieldOnOffType":[],"FieldPercentageType":[],"FieldLanguageType":[],"FieldCryptoCurrencyType":[],"FieldDecimalType":[],"FieldIntegerType":[],"FieldFiatCurrencyType":[],"FieldStringType":[],"FieldCountryType":[],"FieldAccountType":[]}},"Customers.Types.Msg":{"args":[],"tags":{"Load":["Customers.Types.Model"]}},"Pair.Msg":{"args":[],"tags":{"SubmitName":[],"Load":["RemoteData.WebData String"],"InputName":["String"]}},"Common.Customer.Types.Authorized":{"args":[],"tags":{"Automatic":[],"Verified":[],"Blocked":[]}},"Dict.Dict":{"args":["k","v"],"tags":{"RBNode_elm_builtin":["Dict.NColor","k","v","Dict.Dict k v","Dict.Dict k v"],"RBEmpty_elm_builtin":["Dict.LeafColor"]}},"ConfigTypes.DisplayTop":{"args":[],"tags":{"DisplayTopSolo":["String"],"DisplayTopLeader":["Int","String"],"DisplayTopNone":[]}},"Customer.Types.Msg":{"args":[],"tags":{"UnBlockCustomer":["String"],"Load":["Customer.Types.Model"],"BlockCustomer":["String"]}},"Date.Date":{"args":[],"tags":{"Date":[]}},"Account.Msg":{"args":[],"tags":{"Load":["Account.Model"],"FieldSetMsg":["FieldSet.Types.Msg"],"Submit":[],"HideSaveIndication":[]}},"MaintenanceFunding.Types.Msg":{"args":[],"tags":{"Load":["MaintenanceFunding.Types.Model"],"CryptoSwitch":["String"]}},"Common.TransactionTypes.Tx":{"args":[],"tags":{"CashInTx":["Common.TransactionTypes.CashInTxRec"],"CashOutTx":["Common.TransactionTypes.CashOutTxRec"]}},"Maybe.Maybe":{"args":["a"],"tags":{"Just":["a"],"Nothing":[]}},"Transaction.Types.Msg":{"args":[],"tags":{"Load":["Transaction.Types.Model"],"HideSaveIndication":[],"Cancel":["String"]}},"RemoteData.RemoteData":{"args":["e","a"],"tags":{"NotAsked":[],"Success":["a"],"Loading":[],"Failure":["e"]}},"MaintenanceMachines.Types.Msg":{"args":[],"tags":{"Action":[],"Load":["MaintenanceMachines.Types.Model"],"InputCassette":["MaintenanceMachines.Types.Machine","MaintenanceMachines.Types.Position","String"],"Submit":["MaintenanceMachines.Types.MachineAction"],"HideSaveIndication":[]}},"ConfigTypes.Crypto":{"args":[],"tags":{"GlobalCrypto":[],"CryptoCode":["String"]}},"CoreTypes.Msg":{"args":[],"tags":{"WebSocketMsg":["String"],"ConfigMsg":["Config.Msg"],"CustomersMsg":["Customers.Types.Msg"],"TransactionsMsg":["Transactions.Msg"],"LoadAccounts":["List ( String, String )"],"NewUrl":["String"],"Interval":[],"MaintenanceMachinesMsg":["MaintenanceMachines.Types.Msg"],"LoadStatus":["StatusTypes.WebStatus"],"UrlChange":["Navigation.Location"],"TransactionMsg":["Transaction.Types.Msg"],"MaintenanceFundingMsg":["MaintenanceFunding.Types.Msg"],"CustomerMsg":["Customer.Types.Msg"],"AccountMsg":["Account.Msg"],"PairMsg":["Pair.Msg"]}},"Dict.NColor":{"args":[],"tags":{"BBlack":[],"Red":[],"NBlack":[],"Black":[]}},"FieldSet.Types.FieldValue":{"args":[],"tags":{"FieldInteger":["Int"],"FieldString":["String"],"FieldPassword":["FieldSet.Types.FieldPasswordType"]}},"ConfigTypes.Machine":{"args":[],"tags":{"MachineId":["String"],"GlobalMachine":[]}},"Config.Msg":{"args":[],"tags":{"Focus":["ConfigTypes.FieldLocator"],"BlurSelectize":["ConfigTypes.FieldLocator","Selectize.State"],"Remove":["ConfigTypes.FieldLocator","Selectize.State"],"Load":["Config.WebConfigGroup"],"Input":["ConfigTypes.FieldLocator","String"],"Blur":["ConfigTypes.FieldLocator"],"Add":["ConfigTypes.FieldLocator","String","Selectize.State"],"Submit":[],"SelectizeMsg":["ConfigTypes.FieldLocator","Selectize.State"],"FocusSelectize":["ConfigTypes.FieldLocator","Selectize.State"],"HideSaveIndication":[],"NoOp":[],"CryptoSwitch":["ConfigTypes.Crypto"]}},"Transactions.Msg":{"args":[],"tags":{"Load":["Transactions.Model"]}},"ConfigTypes.FieldValidator":{"args":[],"tags":{"FieldRequired":[],"FieldMin":["Int"],"FieldMax":["Int"]}},"MaintenanceMachines.Types.MachineAction":{"args":[],"tags":{"RebootMachine":["MaintenanceMachines.Types.Machine"],"ResetCashOutBills":["MaintenanceMachines.Types.Machine"],"UnpairMachine":["MaintenanceMachines.Types.Machine"]}},"Http.Error":{"args":[],"tags":{"BadUrl":["String"],"NetworkError":[],"Timeout":[],"BadStatus":["Http.Response String"],"BadPayload":["String","Http.Response String"]}},"ConfigTypes.FieldValue":{"args":[],"tags":{"FieldIntegerValue":["Int"],"FieldDecimalValue":["Float"],"FieldCryptoCurrencyValue":["List String"],"FieldCountryValue":["String"],"FieldFiatCurrencyValue":["String"],"FieldStringValue":["String"],"FieldOnOffValue":["Bool"],"FieldAccountValue":["String"],"FieldLanguageValue":["List String"],"FieldPercentageValue":["Float"]}},"FieldSet.Types.FieldPasswordType":{"args":[],"tags":{"PasswordEmpty":[],"PasswordHidden":[],"Password":["String"]}},"MaintenanceMachines.Types.Position":{"args":[],"tags":{"Bottom":[],"Top":[]}}},"aliases":{"ConfigTypes.ConfigSchema":{"args":[],"type":"{ code : String , display : String , cryptoScope : ConfigTypes.ConfigScope , machineScope : ConfigTypes.ConfigScope , entries : List ConfigTypes.FieldDescriptor }"},"Selectize.State":{"args":[],"type":"{ boxPosition : Int, status : Selectize.Status, string : String }"},"RemoteData.WebData":{"args":["a"],"type":"RemoteData.RemoteData Http.Error a"},"ConfigTypes.FieldLocator":{"args":[],"type":"{ fieldScope : ConfigTypes.FieldScope , code : String , fieldType : ConfigTypes.FieldType , fieldClass : Maybe.Maybe String }"},"AccountTypes.Account":{"args":[],"type":"{ code : String , display : String , fields : List FieldSet.Types.Field }"},"Http.Response":{"args":["body"],"type":"{ url : String , status : { code : Int, message : String } , headers : Dict.Dict String String , body : body }"},"StatusTypes.WebStatus":{"args":[],"type":"RemoteData.WebData StatusTypes.StatusRec"},"Common.TransactionTypes.CashOutTxRec":{"args":[],"type":"{ id : String , machineName : String , toAddress : String , cryptoAtoms : Int , cryptoCode : String , fiat : Float , fiatCode : String , status : String , dispense : Bool , notified : Bool , redeemed : Bool , phone : Maybe.Maybe String , error : Maybe.Maybe String , created : Date.Date , confirmed : Bool }"},"MaintenanceMachines.Types.Machine":{"args":[],"type":"{ deviceId : String , name : String , cashbox : Int , cassette1 : Int , cassette2 : Int , paired : Bool , cashOut : Bool }"},"ConfigTypes.ConfigData":{"args":[],"type":"{ cryptoCurrencies : List ConfigTypes.CryptoDisplay , currencies : List ConfigTypes.DisplayRec , languages : List ConfigTypes.DisplayRec , countries : List ConfigTypes.DisplayRec , accounts : List ConfigTypes.AccountRec , machines : List ConfigTypes.MachineDisplay }"},"Transaction.Types.Model":{"args":[],"type":"RemoteData.WebData Transaction.Types.SubModel"},"Account.Model":{"args":[],"type":"RemoteData.WebData Account.SubModel"},"Customer.Types.Model":{"args":[],"type":"RemoteData.WebData Common.Customer.Types.Customer"},"MaintenanceFunding.Types.Model":{"args":[],"type":"RemoteData.WebData MaintenanceFunding.Types.SubModel"},"Common.Customer.Types.Customers":{"args":[],"type":"List Common.Customer.Types.Customer"},"MaintenanceFunding.Types.CryptoDisplay":{"args":[],"type":"{ cryptoCode : String, display : String }"},"ConfigTypes.CryptoDisplay":{"args":[],"type":"{ crypto : ConfigTypes.Crypto, display : String }"},"Config.WebConfigGroup":{"args":[],"type":"RemoteData.WebData ConfigTypes.ConfigGroup"},"FieldSet.Types.Field":{"args":[],"type":"{ code : String , display : String , placeholder : String , required : Bool , value : FieldSet.Types.FieldValue , loadedValue : FieldSet.Types.FieldValue }"},"ConfigTypes.DisplayRec":{"args":[],"type":"{ code : String, display : String }"},"Transaction.Types.SubModel":{"args":[],"type":"{ status : BasicTypes.SavingStatus, tx : Common.TransactionTypes.Tx }"},"Account.SubModel":{"args":[],"type":"{ status : Account.SavingStatus, account : AccountTypes.Account }"},"MaintenanceFunding.Types.SubModel":{"args":[],"type":"{ cryptoCode : String , cryptoDisplays : List MaintenanceFunding.Types.CryptoDisplay , fundingAddress : String , fundingAddressUrl : String , confirmedBalance : String , pending : String , fiatConfirmedBalance : String , fiatPending : String , fiatCode : String }"},"Common.TransactionTypes.CashInTxRec":{"args":[],"type":"{ id : String , machineName : String , toAddress : String , cryptoAtoms : Int , cryptoCode : String , fiat : Float , fiatCode : String , txHash : Maybe.Maybe String , phone : Maybe.Maybe String , error : Maybe.Maybe String , operatorCompleted : Bool , send : Bool , sendConfirmed : Bool , expired : Bool , created : Date.Date }"},"ConfigTypes.FieldScope":{"args":[],"type":"{ crypto : ConfigTypes.Crypto, machine : ConfigTypes.Machine }"},"MaintenanceMachines.Types.Model":{"args":[],"type":"RemoteData.WebData MaintenanceMachines.Types.SubModel"},"ConfigTypes.ConfigGroup":{"args":[],"type":"{ schema : ConfigTypes.ConfigSchema , values : List ConfigTypes.Field , selectedCryptos : List String , data : ConfigTypes.ConfigData }"},"ConfigTypes.AccountRec":{"args":[],"type":"{ code : String , display : String , class : String , cryptos : Maybe.Maybe (List ConfigTypes.Crypto) }"},"ConfigTypes.Field":{"args":[],"type":"{ fieldLocator : ConfigTypes.FieldLocator , fieldValue : ConfigTypes.FieldValue , fieldEnabledIfAny : List String , fieldEnabledIfAll : List String , inScope : Bool }"},"ConfigTypes.MachineDisplay":{"args":[],"type":"{ machine : ConfigTypes.Machine, display : String }"},"Common.Customer.Types.Customer":{"args":[],"type":"{ id : String , name : Maybe.Maybe String , phone : Maybe.Maybe String , phoneAt : Maybe.Maybe Date.Date , created : Date.Date , status : Maybe.Maybe String , authorizedOverride : Common.Customer.Types.Authorized , authorizedAt : Maybe.Maybe Date.Date }"},"StatusTypes.ServerRec":{"args":[],"type":"{ up : Bool , lastPing : Maybe.Maybe String , rates : List StatusTypes.Rate , machineStatus : String , wasConfigured : Bool }"},"MaintenanceMachines.Types.SubModel":{"args":[],"type":"{ status : BasicTypes.SavingStatus , machines : MaintenanceMachines.Types.Machines }"},"StatusTypes.Rate":{"args":[],"type":"{ crypto : String, bid : Float, ask : Float }"},"Customers.Types.Model":{"args":[],"type":"RemoteData.WebData Common.Customer.Types.Customers"},"Transactions.Txs":{"args":[],"type":"List Common.TransactionTypes.Tx"},"MaintenanceMachines.Types.Machines":{"args":[],"type":"List MaintenanceMachines.Types.Machine"},"Transactions.Model":{"args":[],"type":"RemoteData.WebData Transactions.Txs"},"ConfigTypes.FieldDescriptor":{"args":[],"type":"{ code : String , cryptoScope : ConfigTypes.ConfigScope , machineScope : ConfigTypes.ConfigScope , displayTop : ConfigTypes.DisplayTop , displayBottom : String , displayCount : Maybe.Maybe Int , fieldType : ConfigTypes.FieldType , fieldValidation : List ConfigTypes.FieldValidator , fieldClass : Maybe.Maybe String , fieldEnabledIfAny : List String , fieldEnabledIfAll : List String , readOnly : Bool }"},"StatusTypes.StatusRec":{"args":[],"type":"{ server : StatusTypes.ServerRec, invalidConfigGroups : List String }"},"Navigation.Location":{"args":[],"type":"{ href : String , host : String , hostname : String , protocol : String , origin : String , port_ : String , pathname : String , search : String , hash : String , username : String , password : String }"}},"message":"CoreTypes.Msg"},"versions":{"elm":"0.18.0"}}); + _user$project$Main$main(Elm['Main'], 'Main', {"types":{"unions":{"Selectize.Status":{"args":[],"tags":{"Editing":[],"Idle":[],"Blurred":[],"Cleared":[],"Initial":[]}},"BasicTypes.SavingStatus":{"args":[],"tags":{"Saving":[],"Editing":[],"NotSaving":[],"Saved":[]}},"Dict.LeafColor":{"args":[],"tags":{"LBBlack":[],"LBlack":[]}},"Account.SavingStatus":{"args":[],"tags":{"Saving":[],"Editing":[],"NotSaving":[],"Saved":[]}},"ConfigTypes.ConfigScope":{"args":[],"tags":{"Specific":[],"Both":[],"Global":[]}},"FieldSet.Types.Msg":{"args":[],"tags":{"Input":["String","String"]}},"ConfigTypes.FieldType":{"args":[],"tags":{"FieldOnOffType":[],"FieldPercentageType":[],"FieldLanguageType":[],"FieldCryptoCurrencyType":[],"FieldDecimalType":[],"FieldIntegerType":[],"FieldFiatCurrencyType":[],"FieldStringType":[],"FieldCountryType":[],"FieldAccountType":[]}},"Customers.Types.Msg":{"args":[],"tags":{"Load":["Customers.Types.Model"]}},"Pair.Msg":{"args":[],"tags":{"SubmitName":[],"Load":["RemoteData.WebData String"],"InputName":["String"]}},"Common.Customer.Types.Authorized":{"args":[],"tags":{"Automatic":[],"Verified":[],"Blocked":[]}},"Dict.Dict":{"args":["k","v"],"tags":{"RBNode_elm_builtin":["Dict.NColor","k","v","Dict.Dict k v","Dict.Dict k v"],"RBEmpty_elm_builtin":["Dict.LeafColor"]}},"ConfigTypes.DisplayTop":{"args":[],"tags":{"DisplayTopSolo":["String"],"DisplayTopLeader":["Int","String"],"DisplayTopNone":[]}},"Customer.Types.Msg":{"args":[],"tags":{"PatchCustomer":["String","String","String"],"Load":["Customer.Types.Model"]}},"Date.Date":{"args":[],"tags":{"Date":[]}},"Account.Msg":{"args":[],"tags":{"Load":["Account.Model"],"FieldSetMsg":["FieldSet.Types.Msg"],"Submit":[],"HideSaveIndication":[]}},"MaintenanceFunding.Types.Msg":{"args":[],"tags":{"Load":["MaintenanceFunding.Types.Model"],"CryptoSwitch":["String"]}},"Common.TransactionTypes.Tx":{"args":[],"tags":{"CashInTx":["Common.TransactionTypes.CashInTxRec"],"CashOutTx":["Common.TransactionTypes.CashOutTxRec"]}},"Maybe.Maybe":{"args":["a"],"tags":{"Just":["a"],"Nothing":[]}},"Transaction.Types.Msg":{"args":[],"tags":{"Load":["Transaction.Types.Model"],"HideSaveIndication":[],"Cancel":["String"]}},"RemoteData.RemoteData":{"args":["e","a"],"tags":{"NotAsked":[],"Success":["a"],"Loading":[],"Failure":["e"]}},"MaintenanceMachines.Types.Msg":{"args":[],"tags":{"Action":[],"Load":["MaintenanceMachines.Types.Model"],"InputCassette":["MaintenanceMachines.Types.Machine","MaintenanceMachines.Types.Position","String"],"Submit":["MaintenanceMachines.Types.MachineAction"],"HideSaveIndication":[]}},"ConfigTypes.Crypto":{"args":[],"tags":{"GlobalCrypto":[],"CryptoCode":["String"]}},"CoreTypes.Msg":{"args":[],"tags":{"WebSocketMsg":["String"],"ConfigMsg":["Config.Msg"],"CustomersMsg":["Customers.Types.Msg"],"TransactionsMsg":["Transactions.Msg"],"LoadAccounts":["List ( String, String )"],"NewUrl":["String"],"Interval":[],"MaintenanceMachinesMsg":["MaintenanceMachines.Types.Msg"],"LoadStatus":["StatusTypes.WebStatus"],"UrlChange":["Navigation.Location"],"TransactionMsg":["Transaction.Types.Msg"],"MaintenanceFundingMsg":["MaintenanceFunding.Types.Msg"],"CustomerMsg":["Customer.Types.Msg"],"AccountMsg":["Account.Msg"],"PairMsg":["Pair.Msg"]}},"Dict.NColor":{"args":[],"tags":{"BBlack":[],"Red":[],"NBlack":[],"Black":[]}},"FieldSet.Types.FieldValue":{"args":[],"tags":{"FieldInteger":["Int"],"FieldString":["String"],"FieldPassword":["FieldSet.Types.FieldPasswordType"]}},"ConfigTypes.Machine":{"args":[],"tags":{"MachineId":["String"],"GlobalMachine":[]}},"Config.Msg":{"args":[],"tags":{"Focus":["ConfigTypes.FieldLocator"],"BlurSelectize":["ConfigTypes.FieldLocator","Selectize.State"],"Remove":["ConfigTypes.FieldLocator","Selectize.State"],"Load":["Config.WebConfigGroup"],"Input":["ConfigTypes.FieldLocator","String"],"Blur":["ConfigTypes.FieldLocator"],"Add":["ConfigTypes.FieldLocator","String","Selectize.State"],"Submit":[],"SelectizeMsg":["ConfigTypes.FieldLocator","Selectize.State"],"FocusSelectize":["ConfigTypes.FieldLocator","Selectize.State"],"HideSaveIndication":[],"NoOp":[],"CryptoSwitch":["ConfigTypes.Crypto"]}},"Transactions.Msg":{"args":[],"tags":{"Load":["Transactions.Model"]}},"ConfigTypes.FieldValidator":{"args":[],"tags":{"FieldRequired":[],"FieldMin":["Int"],"FieldMax":["Int"]}},"MaintenanceMachines.Types.MachineAction":{"args":[],"tags":{"RebootMachine":["MaintenanceMachines.Types.Machine"],"ResetCashOutBills":["MaintenanceMachines.Types.Machine"],"UnpairMachine":["MaintenanceMachines.Types.Machine"]}},"Http.Error":{"args":[],"tags":{"BadUrl":["String"],"NetworkError":[],"Timeout":[],"BadStatus":["Http.Response String"],"BadPayload":["String","Http.Response String"]}},"ConfigTypes.FieldValue":{"args":[],"tags":{"FieldIntegerValue":["Int"],"FieldDecimalValue":["Float"],"FieldCryptoCurrencyValue":["List String"],"FieldCountryValue":["String"],"FieldFiatCurrencyValue":["String"],"FieldStringValue":["String"],"FieldOnOffValue":["Bool"],"FieldAccountValue":["String"],"FieldLanguageValue":["List String"],"FieldPercentageValue":["Float"]}},"FieldSet.Types.FieldPasswordType":{"args":[],"tags":{"PasswordEmpty":[],"PasswordHidden":[],"Password":["String"]}},"MaintenanceMachines.Types.Position":{"args":[],"tags":{"Bottom":[],"Top":[]}}},"aliases":{"ConfigTypes.ConfigSchema":{"args":[],"type":"{ code : String , display : String , cryptoScope : ConfigTypes.ConfigScope , machineScope : ConfigTypes.ConfigScope , entries : List ConfigTypes.FieldDescriptor }"},"Selectize.State":{"args":[],"type":"{ boxPosition : Int, status : Selectize.Status, string : String }"},"RemoteData.WebData":{"args":["a"],"type":"RemoteData.RemoteData Http.Error a"},"ConfigTypes.FieldLocator":{"args":[],"type":"{ fieldScope : ConfigTypes.FieldScope , code : String , fieldType : ConfigTypes.FieldType , fieldClass : Maybe.Maybe String }"},"AccountTypes.Account":{"args":[],"type":"{ code : String , display : String , fields : List FieldSet.Types.Field }"},"Http.Response":{"args":["body"],"type":"{ url : String , status : { code : Int, message : String } , headers : Dict.Dict String String , body : body }"},"StatusTypes.WebStatus":{"args":[],"type":"RemoteData.WebData StatusTypes.StatusRec"},"Common.TransactionTypes.CashOutTxRec":{"args":[],"type":"{ id : String , machineName : String , toAddress : String , cryptoAtoms : Int , cryptoCode : String , fiat : Float , fiatCode : String , status : String , dispense : Bool , notified : Bool , redeemed : Bool , phone : Maybe.Maybe String , error : Maybe.Maybe String , created : Date.Date , confirmed : Bool }"},"MaintenanceMachines.Types.Machine":{"args":[],"type":"{ deviceId : String , name : String , cashbox : Int , cassette1 : Int , cassette2 : Int , paired : Bool , cashOut : Bool }"},"ConfigTypes.ConfigData":{"args":[],"type":"{ cryptoCurrencies : List ConfigTypes.CryptoDisplay , currencies : List ConfigTypes.DisplayRec , languages : List ConfigTypes.DisplayRec , countries : List ConfigTypes.DisplayRec , accounts : List ConfigTypes.AccountRec , machines : List ConfigTypes.MachineDisplay }"},"Transaction.Types.Model":{"args":[],"type":"RemoteData.WebData Transaction.Types.SubModel"},"Account.Model":{"args":[],"type":"RemoteData.WebData Account.SubModel"},"Customer.Types.Model":{"args":[],"type":"RemoteData.WebData Common.Customer.Types.Customer"},"MaintenanceFunding.Types.Model":{"args":[],"type":"RemoteData.WebData MaintenanceFunding.Types.SubModel"},"Common.Customer.Types.Customers":{"args":[],"type":"List Common.Customer.Types.Customer"},"MaintenanceFunding.Types.CryptoDisplay":{"args":[],"type":"{ cryptoCode : String, display : String }"},"ConfigTypes.CryptoDisplay":{"args":[],"type":"{ crypto : ConfigTypes.Crypto, display : String }"},"Config.WebConfigGroup":{"args":[],"type":"RemoteData.WebData ConfigTypes.ConfigGroup"},"FieldSet.Types.Field":{"args":[],"type":"{ code : String , display : String , placeholder : String , required : Bool , value : FieldSet.Types.FieldValue , loadedValue : FieldSet.Types.FieldValue }"},"ConfigTypes.DisplayRec":{"args":[],"type":"{ code : String, display : String }"},"Transaction.Types.SubModel":{"args":[],"type":"{ status : BasicTypes.SavingStatus, tx : Common.TransactionTypes.Tx }"},"Account.SubModel":{"args":[],"type":"{ status : Account.SavingStatus, account : AccountTypes.Account }"},"MaintenanceFunding.Types.SubModel":{"args":[],"type":"{ cryptoCode : String , cryptoDisplays : List MaintenanceFunding.Types.CryptoDisplay , fundingAddress : String , fundingAddressUrl : String , confirmedBalance : String , pending : String , fiatConfirmedBalance : String , fiatPending : String , fiatCode : String }"},"Common.TransactionTypes.CashInTxRec":{"args":[],"type":"{ id : String , machineName : String , toAddress : String , cryptoAtoms : Int , cryptoCode : String , fiat : Float , fiatCode : String , txHash : Maybe.Maybe String , phone : Maybe.Maybe String , error : Maybe.Maybe String , operatorCompleted : Bool , send : Bool , sendConfirmed : Bool , expired : Bool , created : Date.Date }"},"ConfigTypes.FieldScope":{"args":[],"type":"{ crypto : ConfigTypes.Crypto, machine : ConfigTypes.Machine }"},"MaintenanceMachines.Types.Model":{"args":[],"type":"RemoteData.WebData MaintenanceMachines.Types.SubModel"},"ConfigTypes.ConfigGroup":{"args":[],"type":"{ schema : ConfigTypes.ConfigSchema , values : List ConfigTypes.Field , selectedCryptos : List String , data : ConfigTypes.ConfigData }"},"ConfigTypes.AccountRec":{"args":[],"type":"{ code : String , display : String , class : String , cryptos : Maybe.Maybe (List ConfigTypes.Crypto) }"},"ConfigTypes.Field":{"args":[],"type":"{ fieldLocator : ConfigTypes.FieldLocator , fieldValue : ConfigTypes.FieldValue , fieldEnabledIfAny : List String , fieldEnabledIfAll : List String , inScope : Bool }"},"ConfigTypes.MachineDisplay":{"args":[],"type":"{ machine : ConfigTypes.Machine, display : String }"},"Common.Customer.Types.Customer":{"args":[],"type":"{ id : String , name : Maybe.Maybe String , phone : Maybe.Maybe String , phoneAt : Maybe.Maybe Date.Date , smsOverride : Common.Customer.Types.Authorized , created : Date.Date , status : Maybe.Maybe String , authorizedOverride : Common.Customer.Types.Authorized , authorizedAt : Maybe.Maybe Date.Date , idCardData : Maybe.Maybe String , idCardDataOverride : Common.Customer.Types.Authorized , idCardAt : Maybe.Maybe Date.Date , idCardImagePath : Maybe.Maybe String , idCardPhotoOverride : Common.Customer.Types.Authorized , idCardImageAt : Maybe.Maybe Date.Date , sanctionsCheck : Maybe.Maybe String , sanctionsCheckOverride : Common.Customer.Types.Authorized , sanctionsCheckAt : Maybe.Maybe Date.Date , frontFacingCamPath : Maybe.Maybe String , frontFacingCamOverride : Common.Customer.Types.Authorized , frontFacingCamAt : Maybe.Maybe Date.Date }"},"StatusTypes.ServerRec":{"args":[],"type":"{ up : Bool , lastPing : Maybe.Maybe String , rates : List StatusTypes.Rate , machineStatus : String , wasConfigured : Bool }"},"MaintenanceMachines.Types.SubModel":{"args":[],"type":"{ status : BasicTypes.SavingStatus , machines : MaintenanceMachines.Types.Machines }"},"StatusTypes.Rate":{"args":[],"type":"{ crypto : String, bid : Float, ask : Float }"},"Customers.Types.Model":{"args":[],"type":"RemoteData.WebData Common.Customer.Types.Customers"},"Transactions.Txs":{"args":[],"type":"List Common.TransactionTypes.Tx"},"MaintenanceMachines.Types.Machines":{"args":[],"type":"List MaintenanceMachines.Types.Machine"},"Transactions.Model":{"args":[],"type":"RemoteData.WebData Transactions.Txs"},"ConfigTypes.FieldDescriptor":{"args":[],"type":"{ code : String , cryptoScope : ConfigTypes.ConfigScope , machineScope : ConfigTypes.ConfigScope , displayTop : ConfigTypes.DisplayTop , displayBottom : String , displayCount : Maybe.Maybe Int , fieldType : ConfigTypes.FieldType , fieldValidation : List ConfigTypes.FieldValidator , fieldClass : Maybe.Maybe String , fieldEnabledIfAny : List String , fieldEnabledIfAll : List String , readOnly : Bool }"},"StatusTypes.StatusRec":{"args":[],"type":"{ server : StatusTypes.ServerRec, invalidConfigGroups : List String }"},"Navigation.Location":{"args":[],"type":"{ href : String , host : String , hostname : String , protocol : String , origin : String , port_ : String , pathname : String , search : String , hash : String , username : String , password : String }"}},"message":"CoreTypes.Msg"},"versions":{"elm":"0.18.0"}}); } if (typeof define === "function" && define['amd'])