From 8a29811dbf83d268284932f7cba817d34fd5dbbe Mon Sep 17 00:00:00 2001
From: "HATEC\\SPVDEV001" <tri.susilo@altama.co.id>
Date: Tue, 18 Apr 2023 13:20:40 +0700
Subject: form merchant

---
 src/lib/form/components/Merchant.jsx | 262 +++++++++++++++++++++++++++++++++++
 1 file changed, 262 insertions(+)
 create mode 100644 src/lib/form/components/Merchant.jsx

(limited to 'src/lib/form/components/Merchant.jsx')

diff --git a/src/lib/form/components/Merchant.jsx b/src/lib/form/components/Merchant.jsx
new file mode 100644
index 00000000..bed45bf9
--- /dev/null
+++ b/src/lib/form/components/Merchant.jsx
@@ -0,0 +1,262 @@
+import HookFormSelect from '@/core/components/elements/Select/HookFormSelect'
+import cityApi from '@/lib/address/api/cityApi'
+import { yupResolver } from '@hookform/resolvers/yup'
+import React, { useEffect, useRef, useState } from 'react'
+import ReCAPTCHA from 'react-google-recaptcha'
+import { Controller, useForm } from 'react-hook-form'
+import { toast } from 'react-hot-toast'
+import * as Yup from 'yup'
+import createLeadsApi from '../api/createLeadsApi'
+
+const CreateMerchant = () => {
+  const {
+    register,
+    handleSubmit,
+    formState: { errors },
+    control,
+    reset
+  } = useForm({
+    resolver: yupResolver(validationSchema),
+    defaultValues
+  })
+  const list_unit = [
+    {
+      value: 'Manufacturing',
+      label: 'Manufacturing'
+    },
+    {
+      value: 'Hospitality',
+      label: 'Hospitality'
+    },
+    {
+      value: 'Automotive',
+      label: 'Automotive'
+    },
+    {
+      value: 'Retail',
+      label: 'Retail'
+    },
+    {
+      value: 'Maining',
+      label: 'Maining'
+    },
+    {
+      value: 'Lain - Lain',
+      label: 'Lain - Lain'
+    }
+  ]
+  const [cities, setCities] = useState([])
+  const [company_unit, setCompany_unit] = useState(list_unit)
+
+  const recaptchaRef = useRef(null)
+
+  useEffect(() => {
+    const loadCities = async () => {
+      let dataCities = await cityApi()
+      dataCities = dataCities.map((city) => ({ value: city.id, label: city.name }))
+      setCities(dataCities)
+    }
+    loadCities()
+  }, [])
+
+  const onSubmitHandler = async (values) => {
+    const recaptchaValue = recaptchaRef.current.getValue()
+    if (!recaptchaValue) {
+      toast.error('Catcha harus diisi')
+      return
+    }
+    const data = {
+      ...values,
+      name: 'Form Merchant - ' + values.company,
+      contact_name: values.cp,
+      email_from: values.email,
+      phone: values.phone,
+      description:
+        'Nama Perusahaan : ' +
+        values.company +
+        ' \r\n  Alamat  : ' +
+        values.address +
+        ' \r\n  Kota  : ' +
+        values.city +
+        ' \r\n  Unit Perusahaan  : ' +
+        values.company_unit +
+        ' \r\n  Telepon: ' +
+        values.phone +
+        ' \r\n  Email  : ' +
+        values.email +
+        ' \r\n  Website : ' +
+        values.website +
+        ' \r\n No Hp : ' +
+        values.mobile +
+        'Keterangan  : ' +
+        values.description
+    }
+    const create_leads = await createLeadsApi({ data })
+    if (create_leads) {
+      toast.success('Berhasil menambahkan data')
+      reset()
+      recaptchaRef.current.reset()
+    }
+  }
+  return (
+    <div className='container mx-auto p-4 md:p-0 my-0 md:my-10'>
+      <h1 className='text-h-sm md:text-title-sm font-semibold mb-6'>Form Merchant</h1>
+      <div className='w-full  p-4 bg-white border border-gray_r-6 rounded'>
+        <div
+          class='flex items-center bg-blue-100 border border-blue-400 text-blue-500 font-bold px-4 py-3 mb-4'
+          role='alert'
+        >
+          <p>
+            Penjualan online adalah hal yang HARUS dilakukan mulai sekarang. Perubahan dalam banyak
+            industri dan pola pembelian. Gabung dengan platform kami dan mulai penjualan lansung di
+            ribuan perusahaan d seluruh Indonesia.{' '}
+          </p>
+        </div>
+        <form onSubmit={handleSubmit(onSubmitHandler)}>
+          <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'>
+            <div>
+              <label className='form-label mb-2'>Nama Perusahan *</label>
+              <input
+                {...register('company')}
+                placeholder='PT.Indoteknik'
+                type='text'
+                className='form-input'
+              />
+              <div className='text-caption-2 text-danger-500 mt-1'>{errors.company?.message}</div>
+            </div>
+          </div>
+          <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'>
+            <div>
+              <label className='form-label mb-2'>Alamat*</label>
+              <input
+                {...register('address')}
+                placeholder='jl. Bandengan no.31 '
+                type='text'
+                className='form-input'
+              />
+              <div className='text-caption-2 text-danger-500 mt-1'>{errors.address?.message}</div>
+            </div>
+          </div>
+          <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'>
+            <div>
+              <label className='form-label mb-2'>No. Telp *</label>
+              <input
+                {...register('phone')}
+                placeholder='021-XXXX'
+                type='text'
+                className='form-input'
+              />
+              <div className='text-caption-2 text-danger-500 mt-1'>{errors.phone?.message}</div>
+            </div>
+          </div>
+          <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'>
+            <div>
+              <label className='form-label mb-2'>Kota*</label>
+              <Controller
+                name='city'
+                control={control}
+                render={(props) => <HookFormSelect {...props} options={cities} />}
+              />
+              <div className='text-caption-2 text-danger-500 mt-1'>{errors.city?.message}</div>
+            </div>
+          </div>
+          <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'>
+            <div>
+              <label className='form-label mb-2'>Unit Perusahaan*</label>
+              <Controller
+                name='company_unit'
+                control={control}
+                render={(props) => <HookFormSelect {...props} options={company_unit} />}
+              />
+              <div className='text-caption-2 text-danger-500 mt-1'>{errors.company_unit?.message}</div>
+            </div>
+          </div>
+          <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'>
+            <div>
+              <label className='form-label mb-2'>Website *</label>
+              <input
+                {...register('website')}
+                placeholder='https://indoteknik.com'
+                type='text'
+                className='form-input'
+              />
+              <div className='text-caption-2 text-danger-500 mt-1'>{errors.website?.message}</div>
+            </div>
+          </div>
+          <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'>
+            <div>
+              <label className='form-label mb-2'>Contact Person*</label>
+              <input
+                {...register('cp')}
+                placeholder='Jhone doe'
+                type='text'
+                className='form-input'
+              />
+              <div className='text-caption-2 text-danger-500 mt-1'>{errors.cp?.message}</div>
+            </div>
+          </div>
+          <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'>
+            <div>
+              <label className='form-label mb-2'>No HP *</label>
+              <input
+                {...register('mobile')}
+                placeholder='628XXXXXXX'
+                type='text'
+                className='form-input'
+              />
+              <div className='text-caption-2 text-danger-500 mt-1'>{errors.mobile?.message}</div>
+            </div>
+          </div>
+          <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'>
+            <div>
+              <label className='form-label mb-2'>Alamat Email *</label>
+              <input
+                {...register('email')}
+                placeholder='contoh@email.com'
+                type='email'
+                className='form-input'
+              />
+              <div className='text-caption-2 text-danger-500 mt-1'>{errors.email?.message}</div>
+            </div>
+          </div>
+          <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'>
+            <div>
+              <ReCAPTCHA ref={recaptchaRef} sitekey={process.env.NEXT_PUBLIC_RECAPTCHA_GOOGLE} />
+            </div>
+          </div>
+          <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'>
+            <div>
+              <button type='submit' className='btn-yellow w-full md:w-fit mt-6 ml-0 md:ml-auto'>
+                Simpan
+              </button>
+            </div>
+          </div>
+        </form>
+      </div>
+    </div>
+  )
+}
+const validationSchema = Yup.object().shape({
+  company: Yup.string().required('Harus di-isi'),
+  email: Yup.string().email('Format harus seperti contoh@email.com').required('Harus di-isi'),
+  phone: Yup.string().required('Harus di-isi'),
+  cp: Yup.string().required('Harus di-isi'),
+  city: Yup.string().required('Harus di-isi'),
+  company_unit: Yup.string().required('Harus di-isi'),
+  address: Yup.string().required('Harus di-isi'),
+  website: Yup.string().required('Harus di-isi'),
+  mobile: Yup.string().required('Harus di-isi')
+})
+const defaultValues = {
+  company: '',
+  email: '',
+  phone: '',
+  city: '',
+  company_unit: '',
+  cp: '',
+  address: '',
+  website: '',
+  mobile: ''
+}
+
+export default CreateMerchant
-- 
cgit v1.2.3


From 0786d6d7060bf95238172f1cba080f06e09aee33 Mon Sep 17 00:00:00 2001
From: "HATEC\\SPVDEV001" <tri.susilo@altama.co.id>
Date: Tue, 18 Apr 2023 13:39:55 +0700
Subject: typo module

---
 src/lib/form/components/Merchant.jsx | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'src/lib/form/components/Merchant.jsx')

diff --git a/src/lib/form/components/Merchant.jsx b/src/lib/form/components/Merchant.jsx
index bed45bf9..beb50f50 100644
--- a/src/lib/form/components/Merchant.jsx
+++ b/src/lib/form/components/Merchant.jsx
@@ -6,7 +6,7 @@ import ReCAPTCHA from 'react-google-recaptcha'
 import { Controller, useForm } from 'react-hook-form'
 import { toast } from 'react-hot-toast'
 import * as Yup from 'yup'
-import createLeadsApi from '../api/createLeadsApi'
+import createLeadApi from '../api/createLeadApi'
 
 const CreateMerchant = () => {
   const {
@@ -91,7 +91,7 @@ const CreateMerchant = () => {
         'Keterangan  : ' +
         values.description
     }
-    const create_leads = await createLeadsApi({ data })
+    const create_leads = await createLeadApi({ data })
     if (create_leads) {
       toast.success('Berhasil menambahkan data')
       reset()
-- 
cgit v1.2.3

