/* eslint-disable react-native/no-inline-styles */ import CheckBox from '@react-native-community/checkbox'; import Moment from 'moment'; import React, {useMemo} from 'react'; import {Image, Modal, ScrollView, TouchableOpacity, View} from 'react-native'; import DateTimePickerModal from 'react-native-modal-datetime-picker'; import AppText from '../../../../components/AppText'; import ButtonComponent from '../../../../components/ButtonComponent'; import SelectDropdownComponent from '../../../../components/Select'; import TextInputComponent from '../../../../components/TextInputComponent'; import config from '../../../../config'; import {IMAGES} from '../../../../values/images'; import {leavesModalStyles} from '../../style'; // const ButtonAction = React.memo( // ({ // onCloseModal, // onSubmitApproveLeaveRequest, // isRequest, // onSubmitLeaveRequest, // userInfo, // }) => { // return ( // // // Hủy // // {isRequest && ( // // Gửi yêu cầu // // )} // {userInfo?.isApprover && ( // onSubmitApproveLeaveRequest(userInfo?.leave_id)}> // Duyệt yêu cầu // // )} // // ); // }, // function areEquals(prevProps, nextProps) { // return ( // prevProps.isRequest === nextProps.isRequest || // prevProps.userInfo === nextProps.userInfo || // prevProps.onSubmitLeaveRequest === nextProps.onSubmitLeaveRequest || // prevProps.onCloseModal === nextProps.onCloseModal || // prevProps.onSubmitApproveLeaveRequest === // nextProps.onSubmitApproveLeaveRequest // ); // }, // ); const UserHeader = React.memo( ({userInfo, fullName}) => { return ( {`${fullName} - ${userInfo?.employee_code}`} {userInfo?.position} ); }, function areEqual(prevProps, nextProps) { return ( prevProps.userInfo === nextProps.userInfo || prevProps.fullName === nextProps.fullName ); }, ); const Attachments = React.memo( ({leaveRequestImage, onDeleteLeaveRequestImage, openGallery}) => { return ( Tệp đính kèm {leaveRequestImage.length > 0 && leaveRequestImage.map((item, index) => { //console.log("item", item[0].uri) return ( onDeleteLeaveRequestImage(index)} /> ); })} {leaveRequestImage.length < 3 && ( )} ); }, ); const ButtonAction = ({ onCloseModal, onSubmitApproveLeaveRequest, isRequest, onSubmitLeaveRequest, userInfo, }) => { return ( Hủy {isRequest && ( Gửi yêu cầu )} {userInfo?.isApprover && ( onSubmitApproveLeaveRequest(userInfo?.leave_id)}> Duyệt yêu cầu )} ); }; const RequestLeavesDays = props => { const { userInfo, onCloseModal, leaveCategory, directManagersList = [], openTimePicker, setOpenTimePicker, timeRequestLeave, setTimeRequestLeave, leaveRequestImage = [], openGallery, onDeleteLeaveRequestImage, leaveRequestTicket, setLeaveRequestTicket, onSubmitLeaveRequest, onSelectManagerLeaveRequest, isRequest = false, onSubmitApproveLeaveRequest, } = props; const formatLeaveCategory = useMemo(() => { leaveCategory.map(item => { return {label: item.name, value: item.name}; }); return leaveCategory.length > 0 ? leaveCategory.map(item => { return {label: item.name, value: item.name}; }) : []; }, [leaveCategory]); const fullName = useMemo(() => { return userInfo?.full_name ? userInfo?.full_name : `${userInfo?.first_name} ${ userInfo?.middle_name ? userInfo?.middle_name : '' } ${userInfo?.last_name}`; }, [userInfo]); return ( onCloseModal(null)}> Nghỉ phép mới Thông tin chung Loại nghỉ phép setLeaveRequestTicket(prev => ({ ...prev, leaveCategory: value, })) } width={200} height={30} /> Từ ngày setOpenTimePicker(state => ({ ...state, startDate: true, })) } style={leavesModalStyles.chooseTimeSection}> {Moment(timeRequestLeave.startDate).format('DD/MM/YYYY')} { setTimeRequestLeave(prev => ({...prev, startDate: time})); setOpenTimePicker(state => ({ ...state, startDate: false, })); }} onCancel={() => { setOpenTimePicker(state => ({ ...state, startDate: false, })); }} /> Giờ setOpenTimePicker(state => ({ ...state, startTime: true, })) } style={leavesModalStyles.chooseTimeSection}> {Moment(timeRequestLeave.startDate).format('HH:mm')} { setTimeRequestLeave(prev => ({...prev, startDate: time})); setOpenTimePicker(state => ({ ...state, startTime: false, })); }} onCancel={() => { setOpenTimePicker(state => ({ ...state, startTime: false, })); }} /> Đến ngày setOpenTimePicker(state => ({ ...state, finishDate: true, })) } style={leavesModalStyles.chooseTimeSection}> {Moment(timeRequestLeave.finishDate).format('DD/MM/YYYY')} { setTimeRequestLeave(prev => ({...prev, finishDate: time})); setOpenTimePicker(state => ({ ...state, finishDate: false, })); }} onCancel={() => { setOpenTimePicker(state => ({ ...state, finishDate: false, })); }} /> Giờ setOpenTimePicker(state => ({ ...state, finishTime: true, })) } style={leavesModalStyles.chooseTimeSection}> {Moment(timeRequestLeave.finishDate).format('HH:mm')} { setTimeRequestLeave(prev => ({...prev, finishDate: time})); setOpenTimePicker(state => ({ ...state, finishTime: false, })); }} onCancel={() => { setOpenTimePicker(state => ({ ...state, finishTime: false, })); }} /> {/* {`Thời gian nghỉ (*)`} {durationLeave.stringTime} */} {`Lý do(*)`} { setLeaveRequestTicket(state => ({ ...state, reason: text, })); }} noBorder /> {/* Tệp đính kèm {leaveRequestImage.length > 0 && leaveRequestImage.map((item, index) => { //console.log("item", item[0].uri) return ( onDeleteLeaveRequestImage(index)} /> ); })} {leaveRequestImage.length < 3 && ( )} */} {isRequest && directManagersList.length > 0 && ( Người duyệt {directManagersList.map((item, index) => ( {`${item.extend_user_full_name}`} onSelectManagerLeaveRequest(index, newValue) } boxType={'square'} animationDuration={0.3} lineWidth={1} key={index} tintColors={'#9E663C'} /> ))} )} ); }; export default RequestLeavesDays;