adminResultsPage.js 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import React, { Component } from "react";
  2. import { connect } from "react-redux";
  3. import { getEvents, getEventByTitle } from "../../actions/adminMainPageActions";
  4. import { getRegistredUsers, resultsPromiseAll } from "../../actions/adminResultsActions";
  5. import AdminHeader from "../../components/adminHeader/adminHeader";
  6. import ResultsForm from "../../components/adminResults/adminResultsForm";
  7. import ConfirmationMessage from "../../components/confirmationMessage/confirmationMessage";
  8. class AdminResultstPage extends Component {
  9. state = {
  10. confirmationMessageFlag: false
  11. };
  12. componentDidMount() {
  13. this.props.getEvents();
  14. }
  15. showConfirmationMessage = () => {
  16. this.setState({ confirmationMessageFlag: true })
  17. };
  18. closeConfirmationMessage = () => {
  19. this.setState({ confirmationMessageFlag: false })
  20. };
  21. submitHandler = values => {
  22. const results = Object.keys(values).slice(2)
  23. .map(elem => elem = {
  24. eventUser: elem,
  25. event: this.props.eventusers.find(user => user._id === elem).event[0],
  26. time: values[elem]
  27. })
  28. this.props.resultsPromiseAll(results)
  29. this.showConfirmationMessage()
  30. }
  31. onChangeTypeHandler = e => {
  32. const { value } = e.target;
  33. this.props.getEvents(value)
  34. };
  35. onChangeTitleHandler = e => {
  36. const { value } = e.target;
  37. const eventId = this.props.eventList.find(elem => elem.title === value)._id
  38. this.props.getRegistredUsers(eventId)
  39. };
  40. render() {
  41. const {
  42. eventTypes,
  43. eventList,
  44. eventusers,
  45. } = this.props
  46. return (
  47. <>
  48. <AdminHeader />
  49. <div className="results-form">
  50. <div className="results-form__content">
  51. <h2 className="results-form__form-title">RESULTS</h2>
  52. <ResultsForm
  53. eventTypes={eventTypes}
  54. eventList={eventList}
  55. submitHandler={this.submitHandler}
  56. onChangeInputTimeHandler={this.onChangeInputTimeHandler}
  57. eventusers={eventusers}
  58. onChangeTypeHandler={this.onChangeTypeHandler}
  59. onChangeTitleHandler={this.onChangeTitleHandler}
  60. />
  61. </div>
  62. {this.state.confirmationMessageFlag &&
  63. <ConfirmationMessage closeMessage={this.closeConfirmationMessage}>
  64. <div className="text">Results have beed added.</div>
  65. </ConfirmationMessage >}
  66. </div>
  67. </>
  68. );
  69. }
  70. }
  71. const mapStateToProps = state => ({
  72. eventList: state.adminMainPageReducer.eventList,
  73. eventByTitle: state.adminMainPageReducer.eventByTitle,
  74. eventTypes: state.adminMainPageReducer.eventTypes,
  75. eventusers: state.adminResultsReduser.eventusers,
  76. addPhotogalaryInitialValue: state.photogalaryReducer.addPhotogalaryInitialValue,
  77. });
  78. export default connect(
  79. mapStateToProps,
  80. { getEvents, getEventByTitle, getRegistredUsers, resultsPromiseAll }
  81. )(AdminResultstPage);