Hex Artifact Content
Not logged in

Artifact f94e43d9aa9e4eb15ed44a37e47b298438b60bbc:


0000: 27 75 73 65 20 73 74 72 69 63 74 27 0a 0a 6d 6f  'use strict'..mo
0010: 64 75 6c 65 2e 65 78 70 6f 72 74 73 20 3d 20 53  dule.exports = S
0020: 65 74 74 6c 65 6d 65 6e 74 4d 65 74 68 6f 64 46  ettlementMethodF
0030: 61 63 74 6f 72 79 0a 0a 63 6f 6e 73 74 20 5f 20  actory..const _ 
0040: 3d 20 72 65 71 75 69 72 65 28 27 6c 6f 64 61 73  = require('lodas
0050: 68 27 29 0a 63 6f 6e 73 74 20 4d 6f 64 65 6c 20  h').const Model 
0060: 3d 20 72 65 71 75 69 72 65 28 27 66 69 76 65 2d  = require('five-
0070: 62 65 6c 6c 73 2d 73 68 61 72 65 64 27 29 2e 4d  bells-shared').M
0080: 6f 64 65 6c 0a 63 6f 6e 73 74 20 50 65 72 73 69  odel.const Persi
0090: 73 74 65 6e 74 4d 6f 64 65 6c 4d 69 78 69 6e 20  stentModelMixin 
00a0: 3d 20 72 65 71 75 69 72 65 28 27 66 69 76 65 2d  = require('five-
00b0: 62 65 6c 6c 73 2d 73 68 61 72 65 64 27 29 2e 50  bells-shared').P
00c0: 65 72 73 69 73 74 65 6e 74 4d 6f 64 65 6c 4d 69  ersistentModelMi
00d0: 78 69 6e 0a 63 6f 6e 73 74 20 44 61 74 61 62 61  xin.const Databa
00e0: 73 65 20 3d 20 72 65 71 75 69 72 65 28 27 2e 2e  se = require('..
00f0: 2f 6c 69 62 2f 64 62 27 29 0a 63 6f 6e 73 74 20  /lib/db').const 
0100: 56 61 6c 69 64 61 74 6f 72 20 3d 20 72 65 71 75  Validator = requ
0110: 69 72 65 28 27 66 69 76 65 2d 62 65 6c 6c 73 2d  ire('five-bells-
0120: 73 68 61 72 65 64 2f 6c 69 62 2f 76 61 6c 69 64  shared/lib/valid
0130: 61 74 6f 72 27 29 0a 63 6f 6e 73 74 20 53 65 71  ator').const Seq
0140: 75 65 6c 69 7a 65 20 3d 20 72 65 71 75 69 72 65  uelize = require
0150: 28 27 73 65 71 75 65 6c 69 7a 65 27 29 0a 63 6f  ('sequelize').co
0160: 6e 73 74 20 43 6f 6e 66 69 67 20 3d 20 72 65 71  nst Config = req
0170: 75 69 72 65 28 27 2e 2e 2f 6c 69 62 2f 63 6f 6e  uire('../lib/con
0180: 66 69 67 27 29 0a 0a 66 75 6e 63 74 69 6f 6e 20  fig')..function 
0190: 53 65 74 74 6c 65 6d 65 6e 74 4d 65 74 68 6f 64  SettlementMethod
01a0: 46 61 63 74 6f 72 79 20 28 64 65 70 73 29 20 7b  Factory (deps) {
01b0: 0a 20 20 63 6f 6e 73 74 20 73 65 71 75 65 6c 69  .  const sequeli
01c0: 7a 65 20 3d 20 64 65 70 73 28 44 61 74 61 62 61  ze = deps(Databa
01d0: 73 65 29 0a 20 20 63 6f 6e 73 74 20 76 61 6c 69  se).  const vali
01e0: 64 61 74 6f 72 20 3d 20 64 65 70 73 28 56 61 6c  dator = deps(Val
01f0: 69 64 61 74 6f 72 29 0a 20 20 63 6f 6e 73 74 20  idator).  const 
0200: 63 6f 6e 66 69 67 20 3d 20 64 65 70 73 28 43 6f  config = deps(Co
0210: 6e 66 69 67 29 0a 0a 20 20 63 6c 61 73 73 20 53  nfig)..  class S
0220: 65 74 74 6c 65 6d 65 6e 74 4d 65 74 68 6f 64 20  ettlementMethod 
0230: 65 78 74 65 6e 64 73 20 4d 6f 64 65 6c 20 7b 0a  extends Model {.
0240: 20 20 20 20 73 74 61 74 69 63 20 63 6f 6e 76 65      static conve
0250: 72 74 46 72 6f 6d 45 78 74 65 72 6e 61 6c 20 28  rtFromExternal (
0260: 64 61 74 61 29 20 7b 0a 20 20 20 20 20 20 72 65  data) {.      re
0270: 74 75 72 6e 20 64 61 74 61 0a 20 20 20 20 7d 0a  turn data.    }.
0280: 0a 20 20 20 20 73 74 61 74 69 63 20 63 6f 6e 76  .    static conv
0290: 65 72 74 54 6f 45 78 74 65 72 6e 61 6c 20 28 64  ertToExternal (d
02a0: 61 74 61 29 20 7b 0a 20 20 20 20 20 20 64 65 6c  ata) {.      del
02b0: 65 74 65 20 64 61 74 61 2e 70 61 73 73 77 6f 72  ete data.passwor
02c0: 64 0a 20 20 20 20 20 20 64 65 6c 65 74 65 20 64  d.      delete d
02d0: 61 74 61 2e 63 72 65 61 74 65 64 5f 61 74 0a 20  ata.created_at. 
02e0: 20 20 20 20 20 64 65 6c 65 74 65 20 64 61 74 61       delete data
02f0: 2e 75 70 64 61 74 65 64 5f 61 74 0a 0a 20 20 20  .updated_at..   
0300: 20 20 20 72 65 74 75 72 6e 20 64 61 74 61 0a 20     return data. 
0310: 20 20 20 7d 0a 0a 20 20 20 20 73 74 61 74 69 63     }..    static
0320: 20 63 6f 6e 76 65 72 74 46 72 6f 6d 50 65 72 73   convertFromPers
0330: 69 73 74 65 6e 74 20 28 64 61 74 61 29 20 7b 0a  istent (data) {.
0340: 20 20 20 20 20 20 64 61 74 61 20 3d 20 5f 2e 6f        data = _.o
0350: 6d 69 74 28 64 61 74 61 2c 20 5f 2e 69 73 4e 75  mit(data, _.isNu
0360: 6c 6c 29 0a 20 20 20 20 20 20 64 61 74 61 2e 6c  ll).      data.l
0370: 6f 67 6f 55 72 6c 20 3d 20 64 61 74 61 2e 6c 6f  ogoUrl = data.lo
0380: 67 6f 20 26 26 20 60 2f 61 70 69 2f 24 7b 64 61  go && `/api/${da
0390: 74 61 2e 6c 6f 67 6f 7d 60 0a 0a 20 20 20 20 20  ta.logo}`..     
03a0: 20 69 66 20 28 64 61 74 61 2e 74 79 70 65 20 3d   if (data.type =
03b0: 3d 3d 20 27 70 61 79 70 61 6c 27 29 20 7b 0a 20  == 'paypal') {. 
03c0: 20 20 20 20 20 20 20 64 61 74 61 2e 6c 6f 67 6f         data.logo
03d0: 55 72 6c 20 3d 20 63 6f 6e 66 69 67 2e 64 61 74  Url = config.dat
03e0: 61 2e 67 65 74 28 27 63 6c 69 65 6e 74 5f 68 6f  a.get('client_ho
03f0: 73 74 27 29 20 2b 20 27 2f 70 61 79 70 61 6c 2e  st') + '/paypal.
0400: 70 6e 67 27 0a 20 20 20 20 20 20 7d 0a 0a 20 20  png'.      }..  
0410: 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 61 0a      return data.
0420: 20 20 20 20 7d 0a 0a 20 20 20 20 73 74 61 74 69      }..    stati
0430: 63 20 63 6f 6e 76 65 72 74 54 6f 50 65 72 73 69  c convertToPersi
0440: 73 74 65 6e 74 20 28 64 61 74 61 29 20 7b 0a 20  stent (data) {. 
0450: 20 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 61       return data
0460: 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 20 20 53 65  .    }.  }..  Se
0470: 74 74 6c 65 6d 65 6e 74 4d 65 74 68 6f 64 2e 76  ttlementMethod.v
0480: 61 6c 69 64 61 74 65 45 78 74 65 72 6e 61 6c 20  alidateExternal 
0490: 3d 20 76 61 6c 69 64 61 74 6f 72 2e 63 72 65 61  = validator.crea
04a0: 74 65 28 27 53 65 74 74 6c 65 6d 65 6e 74 4d 65  te('SettlementMe
04b0: 74 68 6f 64 27 29 0a 0a 20 20 50 65 72 73 69 73  thod')..  Persis
04c0: 74 65 6e 74 4d 6f 64 65 6c 4d 69 78 69 6e 28 53  tentModelMixin(S
04d0: 65 74 74 6c 65 6d 65 6e 74 4d 65 74 68 6f 64 2c  ettlementMethod,
04e0: 20 73 65 71 75 65 6c 69 7a 65 2c 20 7b 0a 20 20   sequelize, {.  
04f0: 20 20 69 64 3a 20 7b 0a 20 20 20 20 20 20 74 79    id: {.      ty
0500: 70 65 3a 20 53 65 71 75 65 6c 69 7a 65 2e 55 55  pe: Sequelize.UU
0510: 49 44 2c 0a 20 20 20 20 20 20 70 72 69 6d 61 72  ID,.      primar
0520: 79 4b 65 79 3a 20 74 72 75 65 2c 0a 20 20 20 20  yKey: true,.    
0530: 20 20 64 65 66 61 75 6c 74 56 61 6c 75 65 3a 20    defaultValue: 
0540: 53 65 71 75 65 6c 69 7a 65 2e 55 55 49 44 56 34  Sequelize.UUIDV4
0550: 0a 20 20 20 20 7d 2c 0a 20 20 20 20 74 79 70 65  .    },.    type
0560: 3a 20 53 65 71 75 65 6c 69 7a 65 2e 53 54 52 49  : Sequelize.STRI
0570: 4e 47 2c 0a 20 20 20 20 6e 61 6d 65 3a 20 53 65  NG,.    name: Se
0580: 71 75 65 6c 69 7a 65 2e 53 54 52 49 4e 47 2c 0a  quelize.STRING,.
0590: 20 20 20 20 6c 6f 67 6f 3a 20 53 65 71 75 65 6c      logo: Sequel
05a0: 69 7a 65 2e 53 54 52 49 4e 47 2c 0a 20 20 20 20  ize.STRING,.    
05b0: 64 65 73 63 72 69 70 74 69 6f 6e 3a 20 53 65 71  description: Seq
05c0: 75 65 6c 69 7a 65 2e 53 54 52 49 4e 47 2c 0a 20  uelize.STRING,. 
05d0: 20 20 20 75 72 69 3a 20 53 65 71 75 65 6c 69 7a     uri: Sequeliz
05e0: 65 2e 53 54 52 49 4e 47 2c 0a 20 20 20 20 65 6e  e.STRING,.    en
05f0: 61 62 6c 65 64 3a 20 53 65 71 75 65 6c 69 7a 65  abled: Sequelize
0600: 2e 42 4f 4f 4c 45 41 4e 2c 0a 20 20 20 20 6f 70  .BOOLEAN,.    op
0610: 74 69 6f 6e 73 3a 20 53 65 71 75 65 6c 69 7a 65  tions: Sequelize
0620: 2e 4a 53 4f 4e 0a 20 20 7d 29 0a 0a 20 20 72 65  .JSON.  })..  re
0630: 74 75 72 6e 20 53 65 74 74 6c 65 6d 65 6e 74 4d  turn SettlementM
0640: 65 74 68 6f 64 0a 7d 0a                          ethod.}.