このリポジトリは2023-09-09にアーカイブされています。 ファイルの閲覧とクローンは可能ですが、プッシュ、イシューの作成、プルリクエストはできません。
kikikan/backend/resources/js/parent/child/add.jsx

161 行
6.6 KiB
React
Raw 通常表示 履歴

2021-12-30 13:57:05 +09:00
import React, { useState } from 'react';
2021-11-17 19:32:05 +09:00
import { LoadingButton } from '@material-ui/lab';
2021-11-16 02:31:44 +09:00
import Alert from '../../component/alert';
2021-12-31 12:33:35 +09:00
import Notification from '../../component/notification';
2022-01-08 17:35:52 +09:00
import PageLoader from '../../component/page_loader';
2021-11-24 16:42:56 +09:00
import copy from 'clipboard-copy';
2021-11-16 02:31:44 +09:00
2021-10-01 17:45:39 +09:00
2021-10-31 12:26:19 +09:00
const ParentChildAdd = () => {
2021-11-17 19:32:05 +09:00
const [notice, setNotice] = useState(localStorage.getItem('notice'));
2021-12-31 13:00:10 +09:00
const father_id = localStorage.getItem('kiki_acc_id');
2021-10-09 01:16:45 +09:00
const [identity, setIdentity] = useState('');
2021-10-05 00:35:47 +09:00
2021-11-17 19:32:05 +09:00
const [_success, setSuccess] = useState('');
const [_400error, set400Error] = useState('');
2021-12-19 09:01:41 +09:00
const [_401error, set401Error] = useState('');
2021-11-17 19:32:05 +09:00
const [_422errors, set422Errors] = useState({identity: ''});
const [submit, setSubmit] = useState(false);
2022-01-08 17:35:52 +09:00
const [is_check_relation, setIsCheckRelation] = useState(false);
2021-11-17 19:32:05 +09:00
2021-12-30 13:57:05 +09:00
const handleSubmit = async (e) => {
2021-11-17 19:32:05 +09:00
e.preventDefault();
2021-11-17 19:47:05 +09:00
set422Errors({identity: ''});
2021-12-19 19:20:07 +09:00
set401Error('');
2021-10-05 00:35:47 +09:00
const formdata = new FormData();
2021-10-09 01:16:45 +09:00
formdata.append('identity', identity);
2021-11-17 19:32:05 +09:00
formdata.append('father_id', father_id);
setSubmit(true);
2021-12-30 13:57:05 +09:00
await axios.post('/api/fathers/relations/register', formdata)
.then(response => {
setSubmit(false);
setNotice(response.data.notice);
switch(response.data.status_code){
case 200: setSuccess(response.data.success_messages); break;
case 400: set400Error(response.data.error_messages); break;
case 401: set401Error(response.data.error_messages); set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
});
2021-11-17 19:32:05 +09:00
}
2022-01-08 17:27:33 +09:00
const copyInviteURL = async () => {
2022-01-08 17:35:52 +09:00
setIsCheckRelation(true);
set401Error('');
const inviteText = document.getElementById('inviteurl').value;
2022-01-09 11:12:51 +09:00
await axios.get('/api/fathers/relations/check')
2022-01-08 17:27:33 +09:00
.then(response=>{
setNotice(response.data.notice);
2022-01-08 17:35:52 +09:00
setIsCheckRelation(false);
2022-01-08 17:27:33 +09:00
switch(response.data.status_code){
case 200: {
2022-01-13 20:40:56 +09:00
copy(inviteText)
.then(()=>{
2022-01-13 20:24:13 +09:00
setSuccess('招待用URLをコピーしました。');
2022-01-13 20:40:56 +09:00
})
.catch(err=>{
set400Error(err)
});
2022-01-08 17:27:33 +09:00
break;
}
case 400: set400Error(response.data.error_messages); break;
case 401: set401Error(response.data.error_messages); set400Error(response.data.error_messages); break;
}
})
2021-10-05 00:35:47 +09:00
}
2022-01-09 08:18:36 +09:00
const copyLineText = async () => {
const inviteUrl = document.getElementById('inviteurl_html').value;
2021-12-29 06:34:39 +09:00
const siteUrl = document.getElementById('siteurl').value;
2021-12-30 10:39:37 +09:00
const lineText = `「KIKI」の招待が届いています。%0Aまずは以下より仮登録を行ってください。%0A%0A※スマホ本体を最新の状態にアップデートしてからURLをクリックしてください。%0A%0A${inviteUrl}%0A%0A▼公式サイトはこちら%0A${siteUrl}`;
2022-01-09 07:31:41 +09:00
setIsCheckRelation(true);
set401Error('');
2022-01-09 11:12:51 +09:00
await axios.get('/api/fathers/relations/check')
2022-01-09 07:31:41 +09:00
.then(response=>{
setNotice(response.data.notice);
setIsCheckRelation(false);
switch(response.data.status_code){
case 200: {
window.location.href = 'http://line.me/R/msg/text/?'+lineText;
break;
}
case 400: set400Error(response.data.error_messages); break;
case 401: set401Error(response.data.error_messages); set400Error(response.data.error_messages); break;
}
})
2021-11-17 19:32:05 +09:00
}
2022-01-04 04:22:15 +09:00
const contactMailText = 'mailto:56@zotman.jp?subject=KIKIメンバー追加について&body='+
'名前%3A%0A電話番号%3A%0AログインID%3A%0Aログインパスワード%3A%0A追加したいメンバー数%3A%0A「その他お問合せ内容」'
2021-10-01 17:45:39 +09:00
return (
<div className="l-content">
<div className="l-content-w560">
<div className="l-content__ttl">
<div className="l-content__ttl__left">
<h2>子追加</h2>
</div>
2021-11-17 19:32:05 +09:00
<Notification notice={notice}/>
</div>
2022-01-08 17:35:52 +09:00
{
is_check_relation && <PageLoader/>
}
<div className="l-content-wrap">
<section className="edit-container">
<div className="edit-wrap">
<div className="edit-content">
2021-12-19 09:01:41 +09:00
{
_401error &&
<span className="mb-40-px l-alert__text--error ft-18 ft-md-16 ">
追加する場合は<a href={contactMailText} target='_blank' style={{ color:'#4CA6FF', textDecoration:'initial !important' }}>こちらよりお問い合わせ</a>お願いします
2021-12-24 22:01:34 +09:00
</span>
2021-12-19 09:01:41 +09:00
}
2021-11-17 19:32:05 +09:00
<form className="edit-form" onSubmit={handleSubmit}>
<div className="edit-set">
2021-11-17 19:32:05 +09:00
<label className="control-label" htmlFor="identify">追加する子のIDを入力</label>
2021-12-24 22:01:34 +09:00
<input type="text"
2021-11-17 19:32:05 +09:00
name="identity"
2021-12-24 22:01:34 +09:00
id="identity"
value={identity}
onChange={e=>setIdentity(e.target.value)}
2021-11-17 19:32:05 +09:00
className={`input-default input-title input-h60 input-w480 ${ _422errors.identity && 'is-invalid c-input__target'} `} />
{
_422errors.identity &&
<span className="l-alert__text--error ft-16 ft-md-14">
{_422errors.identity}
2021-12-24 22:01:34 +09:00
</span>
2021-11-17 19:32:05 +09:00
}
2021-10-01 17:45:39 +09:00
</div>
2021-12-24 22:01:34 +09:00
<LoadingButton
2021-11-17 19:32:05 +09:00
type="submit" fullWidth
loading={submit}
className="btn-edit btn-default btn-h75 bg-yellow rounded-20"
style={{marginTop:'50px'}}>
2021-11-25 21:29:01 +09:00
<span className={`ft-18 ft-xs-16 font-weight-bold ${!submit && 'text-black'}`}>追加</span>
2021-11-17 19:32:05 +09:00
</LoadingButton>
</form>
2021-11-17 19:32:05 +09:00
<div style={{color:"#49A3FC",display:"flex", justifyContent:"center", alignItems:"center", paddingTop:40}} >
<a onClick={copyInviteURL}>招待用URLをコピーする</a>
2021-10-09 01:16:45 +09:00
</div>
2021-11-17 19:32:05 +09:00
<div style={{color:"#49A3FC",display:"flex", justifyContent:"center", alignItems:"center", paddingTop:20}}>
2022-01-09 07:31:41 +09:00
<a onClick={copyLineText}>招待用URLをLINEで送信</a>
2021-10-09 01:16:45 +09:00
</div>
2021-10-01 17:45:39 +09:00
</div>
</div>
</section>
2021-10-01 17:45:39 +09:00
</div>
</div>
2021-11-17 19:32:05 +09:00
{ _success && <Alert type="success" hide={()=>setSuccess('')}>{_success}</Alert> }
{ _400error && <Alert type="fail" hide={()=>set400Error('')}>{_400error}</Alert> }
</div>
2021-10-01 17:45:39 +09:00
)
}
2021-10-31 12:26:19 +09:00
export default ParentChildAdd;