Projekt

Obecné

Profil

Stáhnout (3.28 KB) Statistiky
| Větev: | Tag: | Revize:
1
import React, { useEffect } from 'react';
2
import './App.css';
3
import * as api_fetch from './api'
4

    
5
function UpcomingRequests(props) {
6

    
7
  useEffect( () => {
8
    getData();
9
  }, []);
10

    
11
  // get requests from server
12
  const getData = async () => {
13
   
14
    api_fetch.loadAdminRequests().then((data) => {
15
      props.setUser(data.map(request => {
16
      
17
        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
}
34

    
35

    
36

    
37
  // send accepted request to server
38
  const acceptRequest = async (user) => {
39

    
40
    const acceptedRequests = {
41
      id: user.id,
42
      status: 'ACCEPTED',
43
    }
44
    
45
    api_fetch.sendAcceptedRequest(acceptedRequests).then((data) => {
46
      
47
    const userProps = {
48
          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
  }
61

    
62
 
63

    
64
  //send rejected request to server
65
  const declineRequest = async (user) => {
66

    
67
    const rejectedRequest = {
68
      id: user.id,
69
      status: 'REJECTED',
70
    }
71

    
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
  }
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
      // )
(11-11/17)