Brak opisu

UpdateSemYear.js 3.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. import axios from "axios";
  2. import React, { useState, useEffect } from "react";
  3. import { StatusBar, StyleSheet, Text, View, Button, Alert } from "react-native";
  4. import * as SecureStore from 'expo-secure-store';
  5. import Modal from 'react-native-modal';
  6. import {Picker} from '@react-native-community/picker';
  7. const UpdateSemYear = () => {
  8. const [year, setYear] = useState('1')
  9. const [semester, setSemester] = useState('1')
  10. const [modalVisible, setModalVisible] = useState(false)
  11. const updateSemesterAndYear = async()=>{
  12. const token = await SecureStore.getItemAsync('token')
  13. let id = await SecureStore.getItemAsync('id')
  14. let user_id = parseInt(id)
  15. let response = await axios({
  16. method: 'PATCH',
  17. url: 'http://481cb6e289f9.ngrok.io/api/update_year_and_semester',
  18. headers: {
  19. 'content-type': 'application/json',
  20. Authorization: `Token ${token}`
  21. },
  22. data: {
  23. user_id: user_id,
  24. year: year,
  25. semester: semester
  26. }
  27. })
  28. console.log(response.data)
  29. getSemesterAndYear()
  30. toggle()
  31. }
  32. const getSemesterAndYear = async ()=>{
  33. const token = await SecureStore.getItemAsync('token')
  34. let id = await SecureStore.getItemAsync('id')
  35. let user_id = parseInt(id)
  36. let response = await axios({
  37. method: 'POST',
  38. url: 'http://481cb6e289f9.ngrok.io/api/get_year_and_semester',
  39. headers: {
  40. 'content-type': 'application/json',
  41. Authorization: `Token ${token}`
  42. },
  43. data: {
  44. user_id: user_id,
  45. }
  46. })
  47. setYear(response.data.msg.year)
  48. setSemester(response.data.msg.semestre)
  49. }
  50. const toggle = ()=>{
  51. setModalVisible(!modalVisible)
  52. }
  53. useEffect(()=>{
  54. getSemesterAndYear()
  55. },[])
  56. console.log(year)
  57. return (
  58. <View style={{flex: 1, padding: 10}}>
  59. <Text style={styles.title}>Your current year is {year} and current semester is {semester}</Text>
  60. <Button title="Change Year and Semester" onPress={toggle}/>
  61. <Modal
  62. isVisible={modalVisible}
  63. >
  64. <View style={styles.modalItem}>
  65. <Text>Year</Text>
  66. <Picker
  67. selectedValue={year}
  68. style={{ width: 50}}
  69. onValueChange={(itemValue, itemIndex) => setYear(itemValue) }>
  70. <Picker.Item label="1" value="1" />
  71. <Picker.Item label="2" value="2" />
  72. <Picker.Item label="3" value="3" />
  73. <Picker.Item label="4" value="4" />
  74. <Picker.Item label="5" value="5" />
  75. <Picker.Item label="6" value="6" />
  76. </Picker>
  77. </View>
  78. <View style={styles.modalItem}>
  79. <Text>Semester</Text>
  80. <Picker
  81. selectedValue={semester}
  82. style={{ width: 50}}
  83. onValueChange={(itemValue, itemIndex) => setSemester(itemValue) }>
  84. <Picker.Item label="1" value="1" />
  85. <Picker.Item label="2" value="2" />
  86. </Picker>
  87. </View>
  88. <Button title="Submit" onPress={updateSemesterAndYear}/>
  89. <Button title="Close" onPress={toggle}/>
  90. </Modal>
  91. </View>
  92. );
  93. };
  94. const styles = StyleSheet.create({
  95. container: {
  96. flex: 1,
  97. marginTop: StatusBar.currentHeight || 0,
  98. },
  99. item: {
  100. padding: 10,
  101. marginVertical: 8,
  102. marginHorizontal: 16,
  103. },
  104. title: {
  105. fontSize: 15,
  106. fontWeight: 'bold'
  107. },
  108. searchBar: {
  109. height: 40,
  110. borderColor: '#000',
  111. borderWidth: 1
  112. },
  113. modalItem: {
  114. // width: '30%', // is 30% of container width
  115. margin: 8, // 300
  116. backgroundColor: 'white'
  117. }
  118. });
  119. export default UpdateSemYear;