Merge branch 'dev' into US-09-Activar-DesactivarAdministradoresdeSistema
This commit is contained in:
		
						commit
						7dc9e0304d
					
				| 
						 | 
				
			
			@ -269,6 +269,7 @@ export class AppService {
 | 
			
		|||
      hourMax: hourMax,
 | 
			
		||||
      bookable: bookable,
 | 
			
		||||
      community_id: community_id,
 | 
			
		||||
      status: '1'
 | 
			
		||||
    };
 | 
			
		||||
    return this.clientCommonAreaApp
 | 
			
		||||
      .send<string>(pattern, payload)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,16 +15,15 @@ import { faIdCardAlt } from '@fortawesome/free-solid-svg-icons';
 | 
			
		|||
import { faClipboardCheck } from '@fortawesome/free-solid-svg-icons';
 | 
			
		||||
import classNames from 'classnames';
 | 
			
		||||
import { useCookies } from "react-cookie";
 | 
			
		||||
 | 
			
		||||
import { RadioButton } from 'primereact/radiobutton';
 | 
			
		||||
 | 
			
		||||
const AreasComunes = () => {
 | 
			
		||||
 | 
			
		||||
    let emptyCommonArea = {
 | 
			
		||||
        _id: null,
 | 
			
		||||
        dni: '',
 | 
			
		||||
        name: '',
 | 
			
		||||
        hourMin: '',
 | 
			
		||||
        hourMax: '',
 | 
			
		||||
        hourMin: '00:00',
 | 
			
		||||
        hourMax: '01:00',
 | 
			
		||||
        community_id: '',
 | 
			
		||||
        bookable: '1',
 | 
			
		||||
        bookable_text: '',
 | 
			
		||||
| 
						 | 
				
			
			@ -32,6 +31,7 @@ const AreasComunes = () => {
 | 
			
		|||
        status_text: '',
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    const [commonAreaList, setCommonAreaList] = useState([]);
 | 
			
		||||
    const [commonArea, setCommonArea] = useState(emptyCommonArea);
 | 
			
		||||
    const [selectedCommonAreas, setSelectedCommonAreas] = useState(null);
 | 
			
		||||
| 
						 | 
				
			
			@ -44,6 +44,8 @@ const AreasComunes = () => {
 | 
			
		|||
 | 
			
		||||
    const [cookies, setCookie] = useCookies();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    async function getCommonAreas() {
 | 
			
		||||
        await fetch(`http://localhost:4000/commonArea/findByCommunity/${cookies.community_id}`, { method: 'GET' })
 | 
			
		||||
            .then((response) => response.json())
 | 
			
		||||
| 
						 | 
				
			
			@ -78,6 +80,74 @@ const AreasComunes = () => {
 | 
			
		|||
        getCommonAreas();
 | 
			
		||||
    }, []);
 | 
			
		||||
 | 
			
		||||
    const saveCommonArea = () => {
 | 
			
		||||
        if (
 | 
			
		||||
            commonArea.name &&
 | 
			
		||||
            commonArea.hourMin < commonArea.hourMax
 | 
			
		||||
        ) {
 | 
			
		||||
            let _common_areas = [...commonAreaList];
 | 
			
		||||
            let _common_area = { ...commonArea };
 | 
			
		||||
            _common_area.community_id = cookies.community_id;
 | 
			
		||||
 | 
			
		||||
            // console.log(houses)
 | 
			
		||||
            fetch('http://localhost:4000/commonArea/createCommonArea', {
 | 
			
		||||
                cache: 'no-cache',
 | 
			
		||||
                method: 'POST',
 | 
			
		||||
                body: JSON.stringify(_common_area),
 | 
			
		||||
                headers: {
 | 
			
		||||
                    'Content-Type': 'application/json',
 | 
			
		||||
                },
 | 
			
		||||
            })
 | 
			
		||||
                .then(function (response) {
 | 
			
		||||
                    if (response.status != 201)
 | 
			
		||||
                        console.log('Ocurrió un error con el servicio: ' + response.status);
 | 
			
		||||
                    else return response.json();
 | 
			
		||||
                })
 | 
			
		||||
                .then(function (data) {
 | 
			
		||||
                    return data.message;
 | 
			
		||||
                })
 | 
			
		||||
                .then((data) => {
 | 
			
		||||
                    if (data) {
 | 
			
		||||
                        if (data.bookable == '1') {
 | 
			
		||||
                            data.bookable_text = 'Necesaria';
 | 
			
		||||
                        } else {
 | 
			
		||||
                            data.bookable_text = 'No es necesaria';
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        if (data.status == '1') {
 | 
			
		||||
                            data.status_text = 'Activo';
 | 
			
		||||
                        } else if (data.status == '0') {
 | 
			
		||||
                            data.status_text = 'Inactivo';
 | 
			
		||||
                        } else {
 | 
			
		||||
                            data.status_text = 'Eliminado';
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    _common_areas.push(data);
 | 
			
		||||
 | 
			
		||||
                    toast.current.show({
 | 
			
		||||
                        severity: 'success',
 | 
			
		||||
                        summary: 'Registro exitoso',
 | 
			
		||||
                        detail: 'Área Común Creada',
 | 
			
		||||
                        life: 3000,
 | 
			
		||||
                    });
 | 
			
		||||
                    setCommonAreaList(_common_areas);
 | 
			
		||||
                    setCommonArea(emptyCommonArea);
 | 
			
		||||
                })
 | 
			
		||||
                .catch((err) => {
 | 
			
		||||
                    console.log('Ocurrió un error con el fetch', err);
 | 
			
		||||
                    toast.current.show({
 | 
			
		||||
                        severity: 'danger',
 | 
			
		||||
                        summary: 'Error',
 | 
			
		||||
                        detail: 'No se pudo registrar el área común',
 | 
			
		||||
                        life: 3000
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                });
 | 
			
		||||
        } else {
 | 
			
		||||
            setSubmitted(true);
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    const deleteCommonArea = () => {
 | 
			
		||||
        fetch('http://localhost:4000/commonArea/deleteCommonArea/' + commonArea._id, {
 | 
			
		||||
| 
						 | 
				
			
			@ -167,8 +237,6 @@ const AreasComunes = () => {
 | 
			
		|||
        setDeleteCommonAreasDialog(true);
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    const actionsCommonArea = (rowData) => {
 | 
			
		||||
        return (
 | 
			
		||||
            <div className="actions">
 | 
			
		||||
| 
						 | 
				
			
			@ -181,6 +249,18 @@ const AreasComunes = () => {
 | 
			
		|||
        );
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    const onBookableChange = (e) => {
 | 
			
		||||
        let _commonArea = { ...commonArea };
 | 
			
		||||
        _commonArea['bookable'] = e.value;
 | 
			
		||||
        setCommonArea(_commonArea);
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    const onInputChange = (e, name) => {
 | 
			
		||||
        const val = (e.target && e.target.value) || '';
 | 
			
		||||
        let _commonArea = { ...commonArea };
 | 
			
		||||
        _commonArea[`${name}`] = val;
 | 
			
		||||
        setCommonArea(_commonArea);
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    const deleteCommonAreaDialogFooter = (
 | 
			
		||||
        <>
 | 
			
		||||
| 
						 | 
				
			
			@ -307,6 +387,18 @@ const AreasComunes = () => {
 | 
			
		|||
        );
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    function compareTimesMinRequired(hour1, hour2) {
 | 
			
		||||
        var timeFormat1 = Number(hour1.replace(/[:]/g, ''));
 | 
			
		||||
        var timeFormat2 = Number(hour2.replace(/[:]/g, ''));
 | 
			
		||||
        if (timeFormat1 <= timeFormat2) {
 | 
			
		||||
            return true;
 | 
			
		||||
        } else {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    return (
 | 
			
		||||
        <div className="grid">
 | 
			
		||||
            <div className="col-12">
 | 
			
		||||
| 
						 | 
				
			
			@ -341,6 +433,124 @@ const AreasComunes = () => {
 | 
			
		|||
                    </Dialog>
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
            <div className="col-12">
 | 
			
		||||
                <div className="card">
 | 
			
		||||
                    <h5>Registro de área común</h5>
 | 
			
		||||
                    <div className="p-fluid formgrid grid">
 | 
			
		||||
                        <div className="field col-12 md:col-6">
 | 
			
		||||
                            <label htmlFor="name">Nombre</label>
 | 
			
		||||
                            <div className="p-0 col-12 md:col-12">
 | 
			
		||||
 | 
			
		||||
                                <div className="p-inputgroup">
 | 
			
		||||
                                    <span className="p-inputgroup-addon p-button p-icon-input-khaki">
 | 
			
		||||
                                        <i className="pi pi-home"></i>
 | 
			
		||||
                                    </span>
 | 
			
		||||
                                    <InputText id="name"
 | 
			
		||||
                                        type="text"
 | 
			
		||||
                                        onChange={(e) => onInputChange(e, 'name')}
 | 
			
		||||
                                        value={commonArea.name}
 | 
			
		||||
                                        required
 | 
			
		||||
                                        autoFocus
 | 
			
		||||
                                        className={classNames({
 | 
			
		||||
                                            'p-invalid': submitted && commonArea.name === '',
 | 
			
		||||
                                        })}
 | 
			
		||||
                                    />
 | 
			
		||||
                                </div>
 | 
			
		||||
                                {submitted && commonArea.name === '' && (
 | 
			
		||||
                                    <small className="p-invalid">Nombre es requirido.</small>
 | 
			
		||||
                                )}
 | 
			
		||||
                            </div>
 | 
			
		||||
                        </div>
 | 
			
		||||
                        <div className="field col-12 md:col-6">
 | 
			
		||||
                            <label htmlFor="hourMin">Hora apertura</label>
 | 
			
		||||
                            <div className="p-0 col-12 md:col-12">
 | 
			
		||||
                                <div className="p-inputgroup">
 | 
			
		||||
                                    <span className="p-inputgroup-addon p-button p-icon-input-khaki">
 | 
			
		||||
                                        <i className="pi pi-home"></i>
 | 
			
		||||
                                    </span>
 | 
			
		||||
                                    <InputText id="hourMin"
 | 
			
		||||
                                        type="time"
 | 
			
		||||
                                        min="00:00" max="23:59"
 | 
			
		||||
                                        step="3600000"
 | 
			
		||||
                                        onChange={(e) => onInputChange(e, 'hourMin')}
 | 
			
		||||
                                        value={commonArea.hourMin}
 | 
			
		||||
                                        required
 | 
			
		||||
                                        autoFocus
 | 
			
		||||
                                        className={classNames({
 | 
			
		||||
                                            'p-invalid': submitted && compareTimesMinRequired(commonArea.hourMax, commonArea.hourMin),
 | 
			
		||||
                                        })}
 | 
			
		||||
                                    />
 | 
			
		||||
                                </div>
 | 
			
		||||
                                {submitted && compareTimesMinRequired(commonArea.hourMax, commonArea.hourMin) && (
 | 
			
		||||
                                    <small className="p-invalid">La hora de apertura debe ser menor que la hora de cierre.</small>
 | 
			
		||||
                                )}
 | 
			
		||||
                            </div>
 | 
			
		||||
                        </div>
 | 
			
		||||
                        <div className="field col-12 md:col-6">
 | 
			
		||||
                            <label htmlFor="hourMax">Hora de cierre</label>
 | 
			
		||||
                            <div className="p-0 col-12 md:col-12">
 | 
			
		||||
                                <div className="p-inputgroup">
 | 
			
		||||
                                    <span className="p-inputgroup-addon p-button p-icon-input-khaki">
 | 
			
		||||
                                        <i className="pi pi-home"></i>
 | 
			
		||||
                                    </span>
 | 
			
		||||
                                    <InputText id="hourMax"
 | 
			
		||||
                                        type="time"
 | 
			
		||||
                                        min="00:00" max="23:59"
 | 
			
		||||
                                        step="3600000"
 | 
			
		||||
                                        onChange={(e) => onInputChange(e, 'hourMax')}
 | 
			
		||||
                                        value={commonArea.hourMax}
 | 
			
		||||
                                        required
 | 
			
		||||
                                        autoFocus
 | 
			
		||||
                                        className={classNames({
 | 
			
		||||
                                            'p-invalid': submitted && compareTimesMinRequired(commonArea.hourMax, commonArea.hourMin),
 | 
			
		||||
                                        })}
 | 
			
		||||
                                    />
 | 
			
		||||
                                </div>
 | 
			
		||||
                                {submitted && compareTimesMinRequired(commonArea.hourMax, commonArea.hourMin) && (
 | 
			
		||||
                                    <small className="p-invalid">La hora de cierre debe ser mayor que la hora de apertura</small>
 | 
			
		||||
                                )}
 | 
			
		||||
                            </div>
 | 
			
		||||
                        </div>
 | 
			
		||||
                        <div className="field col-12 md:col-6">
 | 
			
		||||
                            <label htmlFor="bookable">¿Necesita Reservación?</label>
 | 
			
		||||
                            <div className="formgrid grid align-items-end" style={{marginTop: '12px', width: '300px'}}>
 | 
			
		||||
                                <div className="field-radiobutton col-6">
 | 
			
		||||
 | 
			
		||||
                                    <RadioButton
 | 
			
		||||
                                        inputId="bookable1"
 | 
			
		||||
                                        name="bookable"
 | 
			
		||||
                                        value="1"
 | 
			
		||||
                                        onChange={onBookableChange}
 | 
			
		||||
                                        checked={commonArea.bookable === '1'}
 | 
			
		||||
                                    />
 | 
			
		||||
                                    <label htmlFor="bookable1">
 | 
			
		||||
                                        <span className="p-icon-input-khaki">
 | 
			
		||||
                                            <i className="pi pi-check status status-1"></i> Sí
 | 
			
		||||
                                        </span>
 | 
			
		||||
                                    </label>
 | 
			
		||||
                                </div>
 | 
			
		||||
                                <div className="field-radiobutton col-6">
 | 
			
		||||
                                    <RadioButton
 | 
			
		||||
                                        inputId="bookable2"
 | 
			
		||||
                                        name="bookable"
 | 
			
		||||
                                        value="0"
 | 
			
		||||
                                        onChange={onBookableChange}
 | 
			
		||||
                                        checked={commonArea.bookable === '0'}
 | 
			
		||||
                                    />
 | 
			
		||||
                                    <label htmlFor="bookable2">
 | 
			
		||||
                                        <span className="p-icon-input-khaki">
 | 
			
		||||
                                            <i className="pi pi-times status status-0"></i> No
 | 
			
		||||
                                        </span>
 | 
			
		||||
                                    </label>
 | 
			
		||||
                                </div>
 | 
			
		||||
                            </div>
 | 
			
		||||
                        </div>
 | 
			
		||||
 | 
			
		||||
                        <Button label="Registrar" onClick={saveCommonArea}></Button>
 | 
			
		||||
                    </div>
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue