Projekt

Obecné

Profil

Stáhnout (3.28 KB) Statistiky
| Větev: | Tag: | Revize:
1 c46ffe2f plundrichov
import React, { useEffect } from 'react';
2
import './App.css';
3 9f045397 plundrichov
import * as api_fetch from './api'
4 c46ffe2f plundrichov
5
function UpcomingRequests(props) {
6
7
  useEffect( () => {
8
    getData();
9
  }, []);
10
11
  // get requests from server
12
  const getData = async () => {
13 9f045397 plundrichov
   
14
    api_fetch.loadAdminRequests().then((data) => {
15
      props.setUser(data.map(request => {
16 c46ffe2f plundrichov
      
17 9f045397 plundrichov
        const a = request.date;
18
        const b = [a.slice(0, 4), "-", a.slice(5, 7), "-", a.slice(8, 10)].join('');
19
  
20
        return (
21
          {
22
            title: request.firstName + ' ' + request.lastName,
23
            id: request.id,
24
            type: request.type,
25
            start: b,
26
            end: null,
27
            status: request.status
28
        })
29
      }))
30
    }).catch(reason => {
31
      alert(reason)
32
    });
33 c46ffe2f plundrichov
}
34
35 9f045397 plundrichov
36
37 c46ffe2f plundrichov
  // send accepted request to server
38
  const acceptRequest = async (user) => {
39
40 9f045397 plundrichov
    const acceptedRequests = {
41
      id: user.id,
42
      status: 'ACCEPTED',
43
    }
44
    
45
    api_fetch.sendAcceptedRequest(acceptedRequests).then((data) => {
46
      
47 c46ffe2f plundrichov
    const userProps = {
48 9f045397 plundrichov
          title: user.title,
49
          id: 0,
50
          type: user.type, 
51
          start: user.start
52
      }
53
      //concat new request to current ones
54
          props.setRequest((acceptedRequest) => acceptedRequest.concat(userProps))
55
      //request accept button
56
          props.setUser((pendingRequest) => pendingRequest.filter((item) => item !== user));
57
    }).catch(response => {
58
      alert(response)
59
    })
60 c46ffe2f plundrichov
  }
61
62 9f045397 plundrichov
 
63 c46ffe2f plundrichov
64
  //send rejected request to server
65
  const declineRequest = async (user) => {
66
67 9f045397 plundrichov
    const rejectedRequest = {
68
      id: user.id,
69
      status: 'REJECTED',
70 c46ffe2f plundrichov
    }
71 9f045397 plundrichov
72
    api_fetch.sendRejectedRequest(rejectedRequest).then((data) => {
73
      //request cancel button
74
      props.setUser((acceptedRequest) => acceptedRequest.filter((item) => item !== user))
75
    }).catch(reason => {
76
      alert(reason)
77
    });
78 c46ffe2f plundrichov
  }
79
80
  return (
81
    <div className="offs-request column">
82
      <h3>New Requests</h3>
83
      <div className="underline-1"></div>
84
      <div className="offs-items column">
85
        <div className="offs-item row">
86
          <table>
87
            <tbody>
88
              <tr>
89
                <th>Name</th>
90
                <th>Type</th>
91
                <th>Date</th>    
92
              </tr>
93
              {props.userRequest.map(user => (
94
              <tr>
95
                <td>{user.title}</td>
96
                <td>{user.type}</td>    
97
                <td>{user.end ? user.start + " - " + user.end : user.start}</td>
98
                <div className="offs-btn row">
99
                  <button onClick={() => acceptRequest(user)} type="submit" className="btn btn-submit">Accept</button>
100
                  <button onClick={() => declineRequest(user)} type="submit" className="btn btn-cancel">Decline</button>     
101
              </div>
102
              </tr>
103
              ))}
104
            </tbody>
105
          </table>
106
        </div>
107
      </div>
108
    </div>
109
    )
110
  }
111
112
export default UpcomingRequests;
113
114
     
115
116
117
        // return (shouldRemoveThisItem === true) ? false : true;
118
        //})
119
      //)
120
      // props.setUser((pendingRequest) => pendingRequest.filter(
121
        
122
      //   function(item) {
123
      //   const shouldRemoveThisItem = item === user;
124
        
125
      //   if (shouldRemoveThisItem === true) {
126
      //     return false;
127
      //   } else {
128
      //     return true;
129
      //   }})
130
      // )