import { utc, duration, ISO_8601 } from "moment"; import React, { Component } from "react"; import { connect } from "react-redux"; import { Redirect } from "react-router-dom"; import { Button, Container, Header, Label, List, Loader, Message, TextArea, Form } from "semantic-ui-react"; import { setClearPShiftState, setFormShiftChart } from "../../../actions/pShift/reducer.actions"; import { getPShiftRequest, updatePShiftRequest } from "../../../actions/pShift/saga.actions"; import Error from "../../Shared/Error"; import { getEmployerFromPrice, getWorkTypeFromPrice, getPriceFromPrice } from "./ProviderShiftsShared"; class ProviderShift extends Component { handleChangePShiftApproval = (uuid, approved) => { return () => { this.props.dispatch( updatePShiftRequest({ uuid, approved, action: "", chart: null, single: true }) ); }; }; handleCheckInPShift = () => { const { pShiftRequestSuccess } = this.props; this.props.dispatch( updatePShiftRequest({ uuid: pShiftRequestSuccess.uuid, approved: true, action: "checkin", chart: null, single: true }) ); }; handleChangeChart = event => { this.props.dispatch(setFormShiftChart(event.target.value)); }; handleCheckOutPShift = () => { const { pShiftRequestSuccess, chart } = this.props; this.props.dispatch( updatePShiftRequest({ uuid: pShiftRequestSuccess.uuid, approved: true, action: "checkout", chart, single: true }) ); }; render() { const { isSendingPShiftRequest, pShiftRequestError, pShiftRequestSuccess, selfUser, chart } = this.props; if (!selfUser.provider) { return ; } return ( ); } } const ProviderShiftFormView = ({ isSendingPShiftRequest, pShiftRequestError, shift, chart, user, handleChangeChart, handleChangePShiftApproval, handleCheckInPShift, handleCheckOutPShift }) => { const employer = getEmployerFromPrice(shift.price, user) || {}; const client = employer.client || {}; const workType = getWorkTypeFromPrice(shift.price, user) || {}; const price = getPriceFromPrice(shift.price, user) || {}; const checkedIn = !!shift.actual_start && utc(shift.actual_start, ISO_8601); const checkedOut = !!shift.actual_end && utc(shift.actual_end, ISO_8601); const min = duration( utc(shift.set_end, ISO_8601) - utc(shift.set_start, ISO_8601), "milliseconds" ).as("minutes"); let displayDuration = duration(min, "minutes").humanize(); if (min % 60) { displayDuration = duration(Math.floor(min / 60), "hours").humanize(); displayDuration += ` and ${duration(min % 60, "minutes").humanize()}`; } const approved = !!shift.approved; const rejected = !shift.approved && shift.approved !== null; const pending = shift.approved === null; return (
Shift Details