Advertisement
Guest User

Untitled

a guest
Aug 25th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.83 KB | None | 0 0
  1. import React, {Component} from 'react';
  2. import { CustomComponent } from 'components';
  3. import { BackHandler } from 'react-native';
  4. import { Actions } from 'react-native-router-flux';
  5. import template from './register-template';
  6. import validations from './register-validations';
  7. import loaderHandler from 'react-native-busy-indicator/LoaderHandler';
  8.  
  9. export default class RegisterController extends CustomComponent {
  10. constructor(args) {
  11. super(args);
  12.  
  13. this.setBackButton();
  14. this.setForm();
  15. }
  16.  
  17. __backHandler() {
  18. try {
  19. const index = this.refs.swiper.state.index + 1;
  20.  
  21. if (index === 1) {
  22. this.removeBackHandler();
  23. } else {
  24. this.goBack();
  25. }
  26. } catch (e) {
  27. this.removeBackHandler();
  28. return false;
  29. }
  30.  
  31. return true;
  32. }
  33.  
  34. removeBackHandler() {
  35. BackHandler.removeEventListener('hardwareBackPress', this.__backHandler);
  36. Actions.pop();
  37. }
  38.  
  39. setBackButton() {
  40. this.__backHandler = this.__backHandler.bind(this);
  41. BackHandler.addEventListener('hardwareBackPress', this.__backHandler);
  42. }
  43.  
  44. setForm() {
  45. this.validations = validations(this.i18);
  46.  
  47. this.options = {
  48. green: [{
  49. label: 'Just Cheap',
  50. value: 'Indifferent'
  51. }, {
  52. label: 'Standard green',
  53. value: 'Standard_green'
  54. }, {
  55. label: 'Truly green & sustainable',
  56. value: 'Truly_green'
  57. }],
  58. flex: [{
  59. label: 'Just Cheap',
  60. value: 'Cheap'
  61. }, {
  62. label: 'Average length (<6m)',
  63. value: 'Standard'
  64. }, {
  65. label: 'Flexible (<1m)',
  66. value: 'Flexible'
  67. }],
  68. service: [{
  69. label: 'Just Cheap',
  70. value: 'Cheap'
  71. }, {
  72. label: 'Solid avarage',
  73. value: 'Standard'
  74. }, {
  75. label: 'Top service',
  76. value: 'Quality'
  77. }]
  78. }
  79.  
  80. this.state = {
  81. zip: '',
  82. select_kwh_est: '',
  83. select_number_people: '',
  84. select_green: this.options.green[1],
  85. select_flex: this.options.flex[1],
  86. select_service: this.options.service[1],
  87. current_supplier: '',
  88. select_current_tarif: '',
  89. email: '',
  90. select_password: '',
  91. button: this.i18.t('register.next'),
  92. viewPeople: false,
  93. modalClose: false,
  94. confirm: false,
  95. confirmSecond: false
  96. };
  97.  
  98. }
  99.  
  100. goBack() {
  101. const index = this.refs.swiper.state.index + 1;
  102. const nextText = this.i18.t('register.next');
  103.  
  104. if (this.state.button !== nextText) {
  105. this.setState({ button : nextText });
  106. }
  107.  
  108. if (index === 1) {
  109. this.removeBackHandler();
  110. } else {
  111. this.refs.swiper.scrollBy(-1);
  112. }
  113. }
  114.  
  115. nextPage() {
  116. const index = this.refs.swiper.state.index + 1;
  117. const formPromise = this.refs['registerForm' + index].submit(this);
  118.  
  119. return formPromise.then(() => {
  120. if (index === 4) {
  121. this.setState({ button : this.i18.t('register.last')});
  122. }
  123.  
  124. if (index !== 5) this.refs.swiper.scrollBy(1);
  125. else this.register();
  126. });
  127. }
  128.  
  129. loginForm(field, value) {
  130. if (field === 'email') this.setState({ email: value});
  131. else this.setState({ select_password: value});
  132. }
  133.  
  134. register() {
  135. loaderHandler.showLoader(this.i18.t('login.connecting'));
  136.  
  137. const user = {
  138. email: this.state.email.trim().toLowerCase(),
  139. select_password: this.state.select_password,
  140. current_supplier: this.state.current_supplier,
  141. select_current_tarif: this.state.select_current_tarif,
  142. select_green: this.state.select_green.value,
  143. select_flex: this.state.select_flex.value,
  144. select_service: this.state.select_service.value,
  145. zip: this.state.zip,
  146. select_kwh_est: this.state.select_kwh_est,
  147. select_number_people: this.state.select_number_people
  148. };
  149.  
  150. return this.services.User.register(user)
  151. .then((response) => {
  152. loaderHandler.hideLoader();
  153. alert('user created');
  154. return Actions.pop();
  155. })
  156. .catch((error) => {
  157. alert('error saving');
  158. loaderHandler.hideLoader();
  159. });
  160. }
  161.  
  162. render() {
  163. return template(this);
  164. }
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement