source: phonelux-frontend/src/components/UserFavouriteOffersComponent/UserFavouriteOffersComponent.js@ d66b8eb

Last change on this file since d66b8eb was d66b8eb, checked in by Marko <Marko@…>, 22 months ago

Component for editing offers added

  • Property mode set to 100644
File size: 3.7 KB
Line 
1import axios from 'axios'
2import React, { Component } from 'react'
3import UserContext from '../../context/UserContext'
4import HeaderComponent from '../HeaderComponent/HeaderComponent'
5import "./UserFavouriteOffersComponent.css"
6import StarIcon from '@mui/icons-material/Star';
7import PhoneOfferComponent from '../PhoneOfferComponent/PhoneOfferComponent'
8import CheaperOffersComponent from '../CheaperOffersComponent/CheaperOffersComponent'
9import { wait } from '@testing-library/user-event/dist/utils'
10
11export class UserFavouriteOffersComponent extends Component {
12 constructor(props) {
13 super(props)
14
15 this.state = {
16 userFavouriteOffers: [],
17 openModal : false,
18 cheaperOffers: [],
19 openedOfferPrice: 0,
20 }
21 }
22
23 componentDidMount(){
24 if(!localStorage.getItem('token')){
25 window.location.href = "/"
26 }
27
28 this.getFavouriteOffersForLoggedUser()
29 }
30
31 getFavouriteOffersForLoggedUser = () => {
32 var config = {
33 method: 'get',
34 url: '/user/'+window.location.href.split('/')[4]+'/favouriteoffers',
35 headers: {
36 'Authorization': 'Bearer '+localStorage.getItem('token')
37 }
38 };
39
40 axios(config)
41 .then(response => {
42 this.setState({
43 userFavouriteOffers: response.data
44 })
45 })
46 .catch(error => {
47 console.log(error)
48 })
49 }
50
51 handleClose = () =>{
52 this.setState({
53 openModal: false
54 })
55 }
56
57 handleOpen = (cheaperOffersToShow,offer_price) =>{
58 this.setState({
59 openModal: true,
60 cheaperOffers: cheaperOffersToShow,
61 openedOfferPrice: offer_price
62 })
63 }
64
65 render() {
66 // console.log(this.context)
67
68 return (
69 <div className='user-favourite-offers-main'>
70 <HeaderComponent/>
71 <div className='user-favourite-offers-header'>
72 <StarIcon style={{fontSize: '50px', marginTop: '20px', marginRight: '10px'}}/>
73 <h1 className='user-favourite-offers-header-text'>
74 Омилени понуди
75 </h1>
76 <StarIcon style={{fontSize: '50px', marginTop: '20px', marginLeft: '10px'}}/>
77 </div>
78
79 {(() => {
80 if(this.state.userFavouriteOffers.length != 0){
81 return <table cellPadding={20} className='phone-with-offers-table'>
82 <thead className='phone-with-offers-table-head'>
83 <tr>
84 <th>Продавница</th>
85 <th>Име на понуда</th>
86 <th>Цена</th>
87 <th></th>
88 </tr>
89 </thead>
90 <tbody>
91 {
92 this.state.userFavouriteOffers.map((offer,idx) => <PhoneOfferComponent key={idx} id={offer.id}
93 is_validated={offer.is_validated} offer_shop={offer.offer_shop} offer_name={offer.offer_name}
94 price={offer.price} offer_url={offer.offer_url} handleOpen={this.handleOpen}
95 loggedUserFavouriteOffers={this.state.userFavouriteOffers}
96 getFavouriteOffersForLoggedUser={this.getFavouriteOffersForLoggedUser}
97 />)
98 }
99 </tbody>
100 </table>
101 }
102 else{
103 return <h1 className='no-offers-saved-message'>Нема зачувано понуди</h1>
104 }
105
106 })()}
107
108 <CheaperOffersComponent
109 cheaperOffers={this.state.cheaperOffers}
110 openModal={this.state.openModal}
111 handleClose={this.handleClose}
112 openedOfferPrice={this.state.openedOfferPrice}/>
113 </div>
114
115 )
116 }
117}
118
119UserFavouriteOffersComponent.contextType = UserContext
120export default UserFavouriteOffersComponent
Note: See TracBrowser for help on using the repository browser.