Browse Source

some changes

Funky Warrior 5 năm trước cách đây
mục cha
commit
dafa10ce76

+ 37 - 15
src/actions/appointment.js

@@ -1,5 +1,7 @@
 import * as types from "../actionsTypes/actionsTypes";
 
+import axios from 'axios'
+
 const URL = "https://api-clinics.herokuapp.com/api/v1/";
 
 export const setAppointmentShedule = payload => ({
@@ -69,18 +71,38 @@ const postOrdersFail = payload => ({
 
 // -----------------------------------------------------------------------------------------------------------------
 
-export const postOrders = (payload) => dispatch => {
-    dispatch(postOrdersRequest());
-    return fetch(`${URL}orders`, {
-        method: "POST",
-        credentials:"include",
-        headers: {
-            'Content-Type': 'application/json'
-        },
-        body: JSON.stringify(payload)
-    })
-        .then(res => res.json())
-        .then(res => dispatch(postOrdersSuccess(res)))
-        .then(dispatch(clearAppointment()))
-        .catch(err => dispatch(postOrdersFail(err)));
-};
+// export const postOrders = (payload) => dispatch => {
+//     dispatch(postOrdersRequest());
+//     return fetch(`${URL}orders`, {
+//         method: "POST",
+//         credentials:"include",
+//         headers: {
+//             'Content-Type': 'application/json'
+//         },
+//         body: JSON.stringify(payload)
+//     })
+//         .then(res => res.json())
+//         .then(res => dispatch(postOrdersSuccess(res)))
+//         .then(dispatch(clearAppointment()))
+//         .catch(err => dispatch(postOrdersFail(err)));
+// };
+export const postOrders = payload => {
+    return async dispatch => {
+        dispatch(postOrdersRequest());
+        try {
+            const { data } = await axios({
+                method:'POST',
+                url:`${URL}orders`,
+                data: payload  
+            });
+            dispatch(postOrdersSuccess(data))
+            dispatch(clearAppointment());
+            console.log('post',data)
+
+           
+            
+        } catch (error){
+            dispatch(postOrdersFail(error));
+        }
+    }
+}

+ 95 - 0
src/actions/user.js

@@ -0,0 +1,95 @@
+import * as types from "../actionsTypes/actionsTypes";
+
+const URL = "https://api-clinics.herokuapp.com/api/v1/users/";
+
+
+export const changeFindUserInput = payload => ({
+    type:types.CHANGE_INPUT_VALUE_FIND_USER,
+    payload
+})
+
+
+
+const findUserRequest = payload => ({
+    type: types.FIND_USER_REQUEST,
+    payload
+});
+
+const findUserRequestSuccess = payload => ({
+    type: types.FIND_USER_REQUEST_SUCCESS,
+    payload
+});
+
+const findUserRequestFail = payload => ({
+    type: types.FIND_USER_REQUEST_FAIL,
+    payload
+});
+
+export const findUser = (payload) => dispatch => {
+    console.log(payload)
+    dispatch(findUserRequest());
+    return fetch(`${URL}`+payload,{
+        credentials:"include"
+    })
+        .then(res => res.json())
+        .then(res => {
+            dispatch(findUserRequestSuccess(res)) 
+            console.log(res)
+        })
+        .catch(err => dispatch(findUserRequestFail(err)));
+};
+
+
+
+const deleteUserRequest = payload => ({
+    type: types.DELETE_DOCTORS_REQUEST,
+    payload
+});
+
+const deleteUserRequestSuccess = payload => ({
+    type: types.DELETE_DOCTORS_REQUEST_SUCCESS,
+    payload
+});
+
+const deleteUserRequestFail = payload => ({
+    type: types.DELETE_DOCTORS_REQUEST_FAIL,
+    payload
+});
+
+export const deleteUser = (payload) => dispatch => {
+    dispatch(deleteUserRequest());
+    return fetch(`${URL}${payload}`, {
+        method: "DELETE",
+        credentials: "include"
+    })
+        .then(res => res.json())
+        .then(res => dispatch(deleteUserRequestSuccess(res)))
+        .catch(err => dispatch(deleteUserRequestFail(err)));
+};
+
+
+const putUserRequest = payload => ({
+    type: types.DELETE_DOCTORS_REQUEST,
+    payload
+});
+
+const putUserRequestSuccess = payload => ({
+    type: types.DELETE_DOCTORS_REQUEST_SUCCESS,
+    payload
+});
+
+const putUserRequestFail = payload => ({
+    type: types.DELETE_DOCTORS_REQUEST_FAIL,
+    payload
+});
+
+export const putUser = (payload) => dispatch => {
+    dispatch(deleteUserRequest());
+    return fetch(`${URL}${payload}`, {
+        method: "DELETE",
+        credentials: "include"
+    })
+        .then(res => res.json())
+        .then(res => dispatch(deleteUserRequestSuccess(res)))
+        .catch(err => dispatch(deleteUserRequestFail(err)));
+};

+ 13 - 0
src/actionsTypes/actionsTypes.js

@@ -1,3 +1,8 @@
+export const FIND_USER_REQUEST = "FIND_USER_REQUEST";
+export const FIND_USER_REQUEST_SUCCESS = "FIND_USER_REQUEST_SUCCESS";
+export const FIND_USER_REQUEST_FAIL = "FIND_USER_REQUEST_FAIL";
+export const CHANGE_INPUT_VALUE_FIND_USER = "CHANGE_INPUT_VALUE_FIND_USER";
+
 export const GET_DOCTORS_REQUEST = "GET_DOCTORS_REQUEST";
 export const GET_DOCTORS_REQUEST_SUCCESS = "GET_DOCTORS_REQUEST_SUCCESS";
 export const GET_DOCTORS_REQUEST_FAIL = "GET_DOCTORS_REQUEST_FAIL";
@@ -51,6 +56,10 @@ export const PUT_DOCTORS_REQUEST = "PUT_DOCTORS_REQUEST";
 export const PUT_DOCTORS_REQUEST_SUCCESS = "PUT_DOCTORS_REQUEST_SUCCESS";
 export const PUT_DOCTORS_REQUEST_FAIL = "PUT_DOCTORS_REQUEST_FAIL";
 
+export const PUT_USER_REQUEST = "PUT_USER_REQUEST";
+export const PUT_USER_REQUEST_SUCCESS = "PUT_USER_REQUEST_SUCCESS";
+export const PUT_USER_REQUEST_FAIL = "PUT_USER_REQUEST_FAIL";
+
 export const PUT_SERVICES_REQUEST = "PUT_DOCTORS_REQUEST";
 export const PUT_SERVICES_REQUEST_SUCCESS = "PUT_DOCTORS_REQUEST_SUCCESS";
 export const PUT_SERVICES_REQUEST_FAIL = "PUT_DOCTORS_REQUEST_FAIL";
@@ -63,6 +72,10 @@ export const DELETE_SERVICES_REQUEST = "DELETE_DOCTORS_REQUEST";
 export const DELETE_SERVICES_REQUEST_SUCCESS = "DELETE_DOCTORS_REQUEST_SUCCESS";
 export const DELETE_SERVICES_REQUEST_FAIL = "DELETE_DOCTORS_REQUEST_FAIL";
 
+export const DELETE_USER_REQUEST = "DELETE_USER_REQUEST";
+export const DELETE_USER_REQUEST_SUCCESS = "DELETE_USER_REQUEST_SUCCESS";
+export const DELETE_USER_REQUEST_FAIL = "DELETE_USER_REQUEST_FAIL";
+
 export const CHANGE_SHEDULE_DOCTOR= "CHANGE_SHEDULE_DOCTOR";
 
 export const CHANGE_INPUT_VALUE_DOCTOR_FORM= "CHANGE_INPUT_VALUE_DOCTOR_FORM";

+ 31 - 3
src/components/Admin/Admin.js

@@ -18,7 +18,14 @@ import {
     changeSpecialityArray
 } from "../../actions/actions";
 
+import {
+    changeFindUserInput,
+    findUser,
+    deleteUser
+} from "../../actions/user"
+
 import Shedule from './Shedule'
+import Tempp from './tempp'
 import ChangeServicesDoctors from './ChangeServices-Doctors'
 
 
@@ -48,7 +55,12 @@ export class Admin extends React.Component {
             deleteServices,
             postServices,
             changeSpecialityArray,
-            specialityArray
+            specialityArray,
+            user,
+            findUserInput,
+            changeFindUserInput,
+            findUser,
+            deleteUser
         } = this.props;
 
         return (
@@ -58,6 +70,7 @@ export class Admin extends React.Component {
                         <Link to='/admin/change-shedule' className = "btn link admin">Расписание</Link>
                         <Link to='/admin/change-doctors' className = "btn link admin">Сотрудники</Link>
                         <Link to='/admin/change-services' className = "btn link admin">Сервисы</Link>
+                        <Link to='/admin/change-user' className = "btn link admin">Пользователи</Link>
                     </div>
                     <Switch>
                         <Route path='/admin/change-shedule' render={() => <Shedule
@@ -89,6 +102,13 @@ export class Admin extends React.Component {
                             deleteItem={deleteServices}
                             changeInputValues={changeInputValueServiceForm}
                         />} />
+                        <Route path='/admin/change-user' render={() => <Tempp
+                            user={user}
+                            findUserInput={findUserInput}
+                            changeFindUserInput={changeFindUserInput}
+                            findUser={findUser}
+                            deleteUser={deleteUser}
+                        />} />
                     </Switch>
                 </div>
             </div>
@@ -106,7 +126,9 @@ const mapStateToProps = state => {
         changeServiceId:state.app.changeServiceId,
         specialityArray:state.app.specialityArray,
         services: state.services.services,
-        categories: state.services.categories
+        categories: state.services.categories,
+        user:state.user.user,
+        findUserInput:state.user.findUserInput
     }
 };
 
@@ -123,7 +145,13 @@ const mapDispatchToProps = {
     postServices,
     putServices,
     deleteServices,
-    changeSpecialityArray
+    changeSpecialityArray,
+    putServices,
+    deleteServices,
+    changeSpecialityArray,
+    changeFindUserInput,
+    findUser,
+    deleteUser
 };
 
 export default connect (mapStateToProps,mapDispatchToProps)(Admin)

+ 42 - 0
src/components/Admin/tempp.js

@@ -0,0 +1,42 @@
+import React from 'react';
+
+export default class Tempp extends React.Component {
+
+changeUserInput = (e) => {
+    this.props.changeFindUserInput(e.target.value)
+}
+
+findUser = () => {
+    this.props.findUser(this.props.findUserInput.includes('@') ? '?email='+this.props.findUserInput : this.props.findUserInput)
+}
+
+    render(){
+        const {
+            user,
+            findUserInput,
+            changeFindUserInput,
+            findUser,
+            deleteUser
+        } = this.props
+        console.log(this.props)
+        return (
+           <div>
+                <input type='text' onChange={this.changeUserInput}></input>
+                {findUserInput && 
+                    <button onClick={this.findUser}>Find User</button>
+                }
+                {user && 
+                    <div>
+                        <p>{user.firstName}</p>
+                        <p>{user.lastName}</p>
+                        <p>{user.email}</p>
+                        <p>{user.role}</p>
+                        <p>{user.doctor}</p>
+                        <p>{user.createdAt}</p>
+                        <p>{user._id}</p>
+                    </div>
+                }
+           </div>
+        );
+    }
+};

+ 11 - 2
src/components/appointment/Appointment.js

@@ -53,7 +53,15 @@ export class Appoint extends React.Component {
     };
 
     postOrder = () => {
-        this.props.postOrders(this.props.appointment.appointment)
+        console.log(this.props.appointment)
+        this.props.postOrders({
+            shedule: this.props.appointment.sheduleId,
+            time: this.props.appointment.time,
+            doctor: this.props.appointment.doctorId,
+            spec: this.props.appointment.specId,
+            comment: this.props.appointment.comment,
+            user: this.props.user
+        })
     };
 
 
@@ -152,7 +160,8 @@ const mapStateToProps = state => {
         appointment: state.appointment.appointment,
         timeArray: state.appointment.timeArray,
         doctors: state.app.doctors,
-        services: state.services.services
+        services: state.services.services,
+        user:state.auth.user
     };
 };
 

+ 3 - 1
src/reducers/index.js

@@ -5,6 +5,7 @@ import {calendarReducer} from "./calendar"
 import auth from './auth';
 import {appointmentReducer} from "./appointment";
 import {servicesReducer} from "./services";
+import {userReducer} from "./user";
 
 
 
@@ -13,5 +14,6 @@ export default combineReducers({
     auth,
     calendar:calendarReducer,
     appointment:appointmentReducer,
-    services:servicesReducer
+    services:servicesReducer,
+    user:userReducer
 })

+ 72 - 0
src/reducers/user.js

@@ -0,0 +1,72 @@
+import * as types from '../actionsTypes/actionsTypes'
+
+const defaultState = {
+    user:null,
+    findUserInput:'',
+    isFetching: false,
+    error:null
+};
+
+export const userReducer = (state = defaultState, action) => {
+    switch(action.type){
+
+        case types.FIND_USER_REQUEST : {
+            return {
+                ...state,
+                isFetching: true
+            };
+        }
+
+        case types.FIND_USER_REQUEST_SUCCESS : {
+            return {
+                ...state,
+                user:state.findUserInput.includes('@') ? action.payload.users[0] : action.payload.user,
+                isFetching: false
+            };
+        }
+
+        case types.FIND_USER_REQUEST_FAIL : {
+            return {
+                ...state,
+                error:action.payload,
+                isFetching: false
+            }
+        }
+
+        case types.CHANGE_INPUT_VALUE_FIND_USER : {
+            return {
+                ...state,
+                findUserInput:action.payload
+            };
+        }
+
+
+         case types.DELETE_USER_REQUEST : {
+            return {
+                ...state,
+                isFetching: true
+            };
+        }
+
+        case types.DELETE_USER_REQUEST_SUCCESS : {
+            return {
+                ...state,
+                services:action.payload,
+                isFetching: false
+            };
+        }
+
+        case types.DELETE_USER_REQUEST_FAIL : {
+            return {
+                ...state,
+                error:action.payload,
+                isFetching: false
+            }
+        }
+
+       
+
+        default:
+            return state
+    }
+};