address.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. const router = require('express').Router()
  2. const Address = require('../models/address')
  3. const User = require('../models/user')
  4. const virifyToken = require('../middlewares/verify-token')
  5. const axios = require('axios')
  6. router.post('/address', virifyToken, async (req, res) => {
  7. try {
  8. let address = new Address()
  9. address.user = req.decoded._id
  10. address.country = req.body.country
  11. address.fullName = req.body.fullName
  12. address.streetAddress = req.body.streetAddress
  13. address.city = req.body.city
  14. address.state = req.body.state
  15. address.zipCode = req.body.zipCode
  16. address.phoneNumber = req.body.phoneNumber
  17. address.deliverInstructions = req.body.deliverInstructions
  18. address.securityCode = req.body.securityCode
  19. await address.save()
  20. res.json({
  21. success: true,
  22. message: 'Success added an address'
  23. })
  24. } catch (err) {
  25. res.status(500).json({
  26. success: false,
  27. message: err.message
  28. })
  29. }
  30. })
  31. router.get('/address', virifyToken, async (req, res) => {
  32. try {
  33. let addresses = await Address.find({ user: req.decoded._id })
  34. res.json({
  35. success: true,
  36. addresses
  37. })
  38. } catch (err) {
  39. res.status(500).json({
  40. success: false,
  41. message: err.message
  42. })
  43. }
  44. })
  45. router.get('/countries', async (req, res) => {
  46. try {
  47. let response = await axios.get('https://restcountries.eu/rest/v2/all')
  48. res.json(response.data)
  49. } catch (err) {
  50. res.status(500).json({
  51. success: false,
  52. message: err.message
  53. })
  54. }
  55. })
  56. router.get('/address/:id', virifyToken, async (req, res) => {
  57. try {
  58. let address = await Address.findOne({ _id: req.params.id })
  59. res.json({
  60. success: true,
  61. address,
  62. })
  63. } catch (err) {
  64. res.status(500).json({
  65. success: fail,
  66. message: err.message
  67. })
  68. }
  69. })
  70. router.put('/address/:id', virifyToken, async (req, res) => {
  71. try {
  72. let foundAddress = await Address.findOne({ user: req.decoded._id, _id: req.params.id })
  73. if (foundAddress) {
  74. if (req.body.country) foundAddress.country = req.body.country
  75. if (req.body.fullName) foundAddress.fullName = req.body.fullName
  76. if (req.body.streetAddress) foundAddress.streetAddress = req.body.streetAddress
  77. if (req.body.city) foundAddress.city = req.body.city
  78. if (req.body.state) foundAddress.state = req.body.state
  79. if (req.body.zipCode) foundAddress.zipCode = req.body.zipCode
  80. if (req.body.phoneNumber) foundAddress.phoneNumber = req.body.phoneNumber
  81. if (req.body.deliverInstructions) foundAddress.deliverInstructions = req.body.deliverInstructions
  82. if (req.body.securityCode) foundAddress.securityCode = req.body.securityCode
  83. }
  84. await foundAddress.save()
  85. res.json({
  86. success: true,
  87. message: 'success updatea address'
  88. })
  89. } catch (err) {
  90. res.status(500).json({
  91. success: false,
  92. message: err.message
  93. })
  94. }
  95. })
  96. router.delete('/address/:id', virifyToken, async (req, res) => {
  97. try {
  98. let deleteAddress = await Address.remove({
  99. user: req.decoded._id,
  100. _id: req.params.id
  101. })
  102. if (deleteAddress) {
  103. res.json({
  104. success: true,
  105. message: 'Addres has been delete'
  106. })
  107. }
  108. } catch (err) {
  109. res.status(500).json({
  110. success: false,
  111. message: err.message
  112. })
  113. }
  114. })
  115. router.put('/address/set/default', virifyToken, async (req, res) => {
  116. try {
  117. const updatedAddressUser = await User.findOneAndUpdate(
  118. { _id: req.decoded._id },
  119. { $set: { address: req.body.id }}
  120. )
  121. if (updatedAddressUser) {
  122. res.json({
  123. success: true,
  124. message: 'Successfully set this address a default'
  125. })
  126. }
  127. } catch (err) {
  128. console.log(err)
  129. res.status(500).json({
  130. success: false,
  131. message: err.message
  132. })
  133. }
  134. })
  135. module.exports = router