menambah validasi saat input corporate
This commit is contained in:
@@ -77,6 +77,7 @@ class CorporateController extends Controller
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
|
||||
$request->validate([
|
||||
'code' => 'required|regex:/^[a-zA-Z0-9]+$/',
|
||||
'name' => 'required',
|
||||
@@ -90,7 +91,6 @@ class CorporateController extends Controller
|
||||
'policy_stop_service_percentage' => 'required_with:policy_code',
|
||||
'policy_stop_service_net' => 'required_with:policy_code',
|
||||
]);
|
||||
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
$corporate_data = $request->all();
|
||||
@@ -98,7 +98,6 @@ class CorporateController extends Controller
|
||||
|
||||
$newCorporate = Corporate::create($request->all());
|
||||
if ($request->has('policy_code') && !empty($request->policy_code)) {
|
||||
// dd($request->policy_code, 'fuck you');
|
||||
$newCorporate->policies()->create([
|
||||
'code' => $request->policy_code ?? NULL,
|
||||
'total_premi' => $request->policy_total_premi ?? NULL,
|
||||
@@ -521,4 +520,5 @@ class CorporateController extends Controller
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -91,7 +91,8 @@ class DivisionController extends Controller
|
||||
$request->validate([
|
||||
'code' => [
|
||||
'required',
|
||||
Rule::unique('corporate_plans')->where('corporate_id', $corporate_id)->ignore($corporatePlan->id)
|
||||
// Rule::unique('corporate_plans')->where('corporate_id', $corporate_id)->ignore($corporatePlan->id)
|
||||
Rule::unique('corporate_divisions')->where('corporate_id', $corporate_id)
|
||||
],
|
||||
'name' => 'required'
|
||||
]);
|
||||
|
||||
@@ -63,6 +63,7 @@ class Plan extends Model
|
||||
"currency",
|
||||
"max_surgery_reinstatement_days",
|
||||
"max_surgery_periode_days",
|
||||
"active",
|
||||
];
|
||||
|
||||
protected $hidden = [
|
||||
|
||||
@@ -64,12 +64,12 @@ export default function CorporatePlanForm({ isEdit, currentCorporatePlan }: Prop
|
||||
const onSubmit = async (data: any) => {
|
||||
if (!isEdit) {
|
||||
await axios
|
||||
.post('/corporate/' + corporate_id + '/divisions', data)
|
||||
.post('/corporates/' + corporate_id + '/divisions', data)
|
||||
.then((res) => {
|
||||
enqueueSnackbar('Division created successfully', { variant: 'success' });
|
||||
})
|
||||
.then((res) => {
|
||||
navigate('/corporate/' + corporate_id + '/divisions', { replace: true });
|
||||
navigate('/corporates/' + corporate_id + '/divisions', { replace: true });
|
||||
})
|
||||
.catch(({ response }) => {
|
||||
if (response.status === 422) {
|
||||
@@ -84,12 +84,12 @@ export default function CorporatePlanForm({ isEdit, currentCorporatePlan }: Prop
|
||||
});
|
||||
} else {
|
||||
await axios
|
||||
.put('/corporate/' + corporate_id + '/divisions/' + currentCorporatePlan?.id , data)
|
||||
.put('/corporates/' + corporate_id + '/divisions/' + currentCorporatePlan?.id , data)
|
||||
.then((res) => {
|
||||
enqueueSnackbar('Division updated successfully', { variant: 'success' });
|
||||
})
|
||||
.then((res) => {
|
||||
navigate('/corporate/' + corporate_id + '/divisions/' , { replace: true });
|
||||
navigate('/corporates/' + corporate_id + '/divisions/' , { replace: true });
|
||||
})
|
||||
.catch(({ response }) => {
|
||||
enqueueSnackbar('Update Failed : '+ response.data.message, { variant: 'error' });
|
||||
|
||||
@@ -43,6 +43,7 @@ import axios from '../../utils/axios';
|
||||
import { fCurrency } from '../../utils/formatNumber';
|
||||
import RHFAutocomplete from '../../components/hook-form/RHFAutocomplete';
|
||||
import UploadImage from '../../components/UploadImage';
|
||||
import { fPostFormat } from '@/utils/formatTime';
|
||||
|
||||
const LabelStyle = styled(Typography)(({ theme }) => ({
|
||||
...theme.typography.subtitle2,
|
||||
@@ -70,15 +71,82 @@ export default function CorporateForm({ isEdit, currentCorporate }: Props) {
|
||||
|
||||
const NewCorporateSchema = Yup.object().shape({
|
||||
name: Yup.string().required('Name is required'),
|
||||
code: Yup.string().required('Corporate Code is required'),
|
||||
code: Yup.string().required('Corporate Code is required').test(
|
||||
'unique-code',
|
||||
'Code must be unique',
|
||||
async function (value) {
|
||||
const existingCodes = await getExistingCodes();
|
||||
return !existingCodes.includes(value);
|
||||
}
|
||||
),
|
||||
active: Yup.boolean().required('Corporate Status is required'),
|
||||
type: Yup.string().required('Type is required'),
|
||||
welcome_message: Yup.string().required('Welcome Message is required'),
|
||||
help_text: Yup.string().required('Help Text is required'),
|
||||
// policy_code: Yup.string().required('Policy Code is required'),
|
||||
policy_start: Yup.date().required('Start Date is required'),
|
||||
policy_end: Yup.date().required('End Date is required').min(Yup.ref('policy_start'), "end date can't be before start date"),
|
||||
policy_total_premi: Yup.number().required('Deposit Initial Fund is required').min(0),
|
||||
// linking_rules: Yup.string().required('Link Rules is required'),
|
||||
policy_minimal_deposit_percentage:
|
||||
Yup.number()
|
||||
.typeError("Please enter a valid number")
|
||||
.required('Percentage Deposit is required')
|
||||
.min(0, "Minimum atleast 0")
|
||||
.max(100, "Allowed maximum is 100"),
|
||||
policy_minimal_alert_percentage:
|
||||
Yup.number()
|
||||
.typeError("Please enter a valid number")
|
||||
.required('Percentage Alert is required')
|
||||
.min(0, "Minimum atleast 0")
|
||||
.max(100, "Allowed maximum is 100"),
|
||||
policy_stop_service_percentage:
|
||||
Yup.number()
|
||||
.typeError("Please enter a valid number")
|
||||
.min(0, "Minimum atleast 0")
|
||||
.required('Percentage Stop is required')
|
||||
.test("max", "Total should not exceed 100 %", function(value) {
|
||||
const { policy_minimal_alert_percentage } = this.parent;
|
||||
const { policy_minimal_deposit_percentage } = this.parent;
|
||||
return value == 100 - policy_minimal_alert_percentage- policy_minimal_deposit_percentage;
|
||||
}),
|
||||
parent_id: Yup.string().when('type', {
|
||||
is: 'subcorporate',
|
||||
then: Yup.string().required('Corporate is required because type is Sub Corporate'),
|
||||
}),
|
||||
});
|
||||
|
||||
async function getExistingCodes() {
|
||||
// axios
|
||||
// .get('/corporates/create')
|
||||
// .then((res) => {
|
||||
// setCorporateGroups(res.data.corporate_groups);
|
||||
// })
|
||||
// .catch((err) => {
|
||||
// enqueueSnackbar('Opps, failed to get Corporate Group List', { variant: 'error' });
|
||||
// });
|
||||
|
||||
try {
|
||||
let response = await axios.get('/corporates'); // get data all corporate
|
||||
let codeCurrent = ""
|
||||
if (isEdit){
|
||||
let responseCodeCurrent = await axios.get(`/corporates/${currentCorporate?.id}/edit`); // get data current corporate
|
||||
codeCurrent = responseCodeCurrent.data.code; // get data code corporate current
|
||||
}
|
||||
let existingCodes = response.data.data.map(item => item.code); // get data code corporate all
|
||||
|
||||
existingCodes.filter(function(value) {
|
||||
return value !== codeCurrent; // Menghapus elemen yang bernilai 3
|
||||
});
|
||||
|
||||
console.log(existingCodes)
|
||||
return existingCodes;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
enqueueSnackbar('Failed to fetch existing codes', { variant: 'error' });
|
||||
}
|
||||
}
|
||||
|
||||
const defaultValues = useMemo(
|
||||
() => ({
|
||||
code: currentCorporate?.code || '',
|
||||
@@ -149,7 +217,7 @@ export default function CorporateForm({ isEdit, currentCorporate }: Props) {
|
||||
const [file, setFile] = useState(null);
|
||||
const [save, setSave] = useState(null);
|
||||
|
||||
console.log('save', save);
|
||||
// console.log('save', save);
|
||||
|
||||
const onSubmit = async (data: FormValuesProps) => {
|
||||
try {
|
||||
@@ -170,11 +238,12 @@ export default function CorporateForm({ isEdit, currentCorporate }: Props) {
|
||||
formData.append('policy_minimal_alert_net', data.policy_minimal_alert_net);
|
||||
formData.append('policy_stop_service_percentage', data.policy_stop_service_percentage);
|
||||
formData.append('policy_stop_service_net', data.policy_stop_service_net);
|
||||
formData.append('policy_start', data.policy_start);
|
||||
formData.append('policy_end', data.policy_end);
|
||||
formData.append('policy_start', fPostFormat(data.policy_start));
|
||||
formData.append('policy_end', fPostFormat(data.policy_end));
|
||||
formData.append('linking_rules', data.linking_rules);
|
||||
|
||||
console.log('MOTHERFUCKER', data.linking_rules)
|
||||
|
||||
// console.log('MOTHERFUCKER', data.linking_rules)
|
||||
|
||||
if (!isEdit) {
|
||||
const response = await axios.post('/corporates', formData);
|
||||
@@ -184,7 +253,7 @@ export default function CorporateForm({ isEdit, currentCorporate }: Props) {
|
||||
}
|
||||
reset();
|
||||
enqueueSnackbar(
|
||||
!isEdit ? 'Corporate Created Successfully!' : 'Corporate Udpated Successfully!',
|
||||
!isEdit ? 'Corporate Created Successfully!' : 'Corporate Updated Successfully!',
|
||||
{ variant: 'success' }
|
||||
);
|
||||
navigate('/corporates');
|
||||
|
||||
Reference in New Issue
Block a user