Merge branch 'staging'
This commit is contained in:
@@ -9,6 +9,7 @@ use Illuminate\Http\Request;
|
|||||||
use Illuminate\Routing\Controller;
|
use Illuminate\Routing\Controller;
|
||||||
use Modules\Client\Transformers\ClaimReport\MemberResources as ClaimReportMemberResources;
|
use Modules\Client\Transformers\ClaimReport\MemberResources as ClaimReportMemberResources;
|
||||||
use Modules\Client\Transformers\Dashboard\MemberResources as DashboardMemberResources;
|
use Modules\Client\Transformers\Dashboard\MemberResources as DashboardMemberResources;
|
||||||
|
use Modules\Client\Transformers\Dashboard\MemberAlarmCenterResources as DashboardMemberAlarmResources;
|
||||||
|
|
||||||
class CorporateMemberController extends Controller
|
class CorporateMemberController extends Controller
|
||||||
{
|
{
|
||||||
@@ -29,6 +30,9 @@ class CorporateMemberController extends Controller
|
|||||||
case 'claim-submit':
|
case 'claim-submit':
|
||||||
$members = $this->corporateMemberService->getAllMemberClaimReports($corporate_id, $request);
|
$members = $this->corporateMemberService->getAllMemberClaimReports($corporate_id, $request);
|
||||||
return response()->json(Helper::paginateResources(ClaimReportMemberResources::collection($members)));
|
return response()->json(Helper::paginateResources(ClaimReportMemberResources::collection($members)));
|
||||||
|
case 'alarm-center':
|
||||||
|
$members = $this->corporateMemberService->getAllMemberAlarmCenter($corporate_id, $request);
|
||||||
|
return response()->json(Helper::paginateResources(DashboardMemberAlarmResources::collection($members)));
|
||||||
default:
|
default:
|
||||||
$members = $this->corporateMemberService->getAllMemberDashboards($corporate_id, $request);
|
$members = $this->corporateMemberService->getAllMemberDashboards($corporate_id, $request);
|
||||||
return response()->json(Helper::paginateResources(DashboardMemberResources::collection($members)));
|
return response()->json(Helper::paginateResources(DashboardMemberResources::collection($members)));
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
namespace Modules\Client\Transformers\Dashboard;
|
||||||
|
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
|
class MemberAlarmCenterResources extends JsonResource
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Transform the resource into an array.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request $request
|
||||||
|
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
|
||||||
|
*/
|
||||||
|
public function toArray($request)
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'id' => $this->id,
|
||||||
|
'memberId' => $this->member_id,
|
||||||
|
'fullName' => $this->full_name,
|
||||||
|
'service' => $this->service_code,
|
||||||
|
'start_date' => $this->start_date,
|
||||||
|
'end_date' => $this->end_date,
|
||||||
|
'status' => $this->active,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -77,6 +77,7 @@ class CorporateController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
|
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'code' => 'required|regex:/^[a-zA-Z0-9]+$/',
|
'code' => 'required|regex:/^[a-zA-Z0-9]+$/',
|
||||||
'name' => 'required',
|
'name' => 'required',
|
||||||
@@ -90,7 +91,6 @@ class CorporateController extends Controller
|
|||||||
'policy_stop_service_percentage' => 'required_with:policy_code',
|
'policy_stop_service_percentage' => 'required_with:policy_code',
|
||||||
'policy_stop_service_net' => 'required_with:policy_code',
|
'policy_stop_service_net' => 'required_with:policy_code',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
DB::beginTransaction();
|
DB::beginTransaction();
|
||||||
$corporate_data = $request->all();
|
$corporate_data = $request->all();
|
||||||
@@ -98,7 +98,6 @@ class CorporateController extends Controller
|
|||||||
|
|
||||||
$newCorporate = Corporate::create($request->all());
|
$newCorporate = Corporate::create($request->all());
|
||||||
if ($request->has('policy_code') && !empty($request->policy_code)) {
|
if ($request->has('policy_code') && !empty($request->policy_code)) {
|
||||||
// dd($request->policy_code, 'fuck you');
|
|
||||||
$newCorporate->policies()->create([
|
$newCorporate->policies()->create([
|
||||||
'code' => $request->policy_code ?? NULL,
|
'code' => $request->policy_code ?? NULL,
|
||||||
'total_premi' => $request->policy_total_premi ?? NULL,
|
'total_premi' => $request->policy_total_premi ?? NULL,
|
||||||
@@ -521,4 +520,5 @@ class CorporateController extends Controller
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,7 +91,8 @@ class DivisionController extends Controller
|
|||||||
$request->validate([
|
$request->validate([
|
||||||
'code' => [
|
'code' => [
|
||||||
'required',
|
'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'
|
'name' => 'required'
|
||||||
]);
|
]);
|
||||||
|
|||||||
@@ -39,11 +39,10 @@ class CorporateService
|
|||||||
try {
|
try {
|
||||||
$plan_data = $row;
|
$plan_data = $row;
|
||||||
$plan_data["corporate_id"] = $corporate->id;
|
$plan_data["corporate_id"] = $corporate->id;
|
||||||
|
|
||||||
$this->validatePlanRow($plan_data);
|
$this->validatePlanRow($plan_data);
|
||||||
|
|
||||||
$plan = $corporate->plans()->updateOrCreate([
|
$plan = $corporate->plans()->updateOrCreate([
|
||||||
'service_code' => $plan_data['service_code'],
|
'corporate_plan_id' => $plan_data['corporate_plan_id'],
|
||||||
|
// 'active' => 0,
|
||||||
], $plan_data);
|
], $plan_data);
|
||||||
|
|
||||||
return $plan;
|
return $plan;
|
||||||
|
|||||||
@@ -46,4 +46,20 @@ class MemberBuilder extends Builder
|
|||||||
'right' => $this->rightJoin('claim_requests', 'members.id', '=', 'claim_requests.member_id')
|
'right' => $this->rightJoin('claim_requests', 'members.id', '=', 'claim_requests.member_id')
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function joinMemberPlans(string $value = 'join'): static
|
||||||
|
{
|
||||||
|
return match ($value) {
|
||||||
|
'join' => $this->join('member_plans', 'members.id', '=', 'member_plans.member_id'),
|
||||||
|
'left' => $this->leftJoin('member_plans', 'members.id', '=', 'member_plans.member_id'),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public function joinPlans(string $value = 'join'): static
|
||||||
|
{
|
||||||
|
return match ($value) {
|
||||||
|
'join' => $this->join('plans', 'member_plans.plan_id', '=', 'plans.id'),
|
||||||
|
'left' => $this->leftJoin('plans', 'member_plans.plan_id', '=', 'plans.id'),
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -191,8 +191,7 @@ class MembershipController extends Controller
|
|||||||
'corporate_id' => 'required'
|
'corporate_id' => 'required'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$corporate = Corporate::findOrFail($request->corporate_id);
|
$corporate = Corporate::findOrFail($request->corporate_id);
|
||||||
|
|
||||||
// Make Validation from Linking Rules
|
// Make Validation from Linking Rules
|
||||||
$linkingRulesArr = $corporate->linking_rules->toArray();
|
$linkingRulesArr = $corporate->linking_rules->toArray();
|
||||||
$validationRules = [];
|
$validationRules = [];
|
||||||
@@ -245,9 +244,9 @@ class MembershipController extends Controller
|
|||||||
])
|
])
|
||||||
|
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
if ($member) {
|
if ($member) {
|
||||||
return Helper::responseJson(data: MemberResource::make($member), message: 'Data Member ditemukan!');
|
$message = $member->currentPolicy->corporate->welcome_message;
|
||||||
|
return Helper::responseJson(data: MemberResource::make($member), message: $message);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Helper::responseJson(data: [], message: 'Member Tidak ditemukan', statusCode: 404, status: 'error');
|
return Helper::responseJson(data: [], message: 'Member Tidak ditemukan', statusCode: 404, status: 'error');
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ class Kernel extends HttpKernel
|
|||||||
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
|
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
|
||||||
\App\Http\Middleware\VerifyCsrfToken::class,
|
\App\Http\Middleware\VerifyCsrfToken::class,
|
||||||
\Illuminate\Routing\Middleware\SubstituteBindings::class,
|
\Illuminate\Routing\Middleware\SubstituteBindings::class,
|
||||||
|
\Fruitcake\Cors\HandleCors::class,
|
||||||
],
|
],
|
||||||
|
|
||||||
'api' => [
|
'api' => [
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ class MemberResource extends JsonResource
|
|||||||
'corporate' => [
|
'corporate' => [
|
||||||
'code' => $this->currentPolicy?->corporate->code ?? null,
|
'code' => $this->currentPolicy?->corporate->code ?? null,
|
||||||
'name' => $this->currentPolicy?->corporate->name,
|
'name' => $this->currentPolicy?->corporate->name,
|
||||||
'welcome_message' => $this->currentPolicy?->corporate?->welcome_message,
|
'welcome_message' => $this->currentPolicy?->corporate->welcome_message,
|
||||||
'help_text' => $this->currentPolicy?->corporate?->help_text,
|
'help_text' => $this->currentPolicy?->corporate?->help_text,
|
||||||
'avatar_url' => $this->currentpolicy?->corporate?->avatar_url
|
'avatar_url' => $this->currentpolicy?->corporate?->avatar_url
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ class Plan extends Model
|
|||||||
"currency",
|
"currency",
|
||||||
"max_surgery_reinstatement_days",
|
"max_surgery_reinstatement_days",
|
||||||
"max_surgery_periode_days",
|
"max_surgery_periode_days",
|
||||||
|
"active",
|
||||||
];
|
];
|
||||||
|
|
||||||
protected $hidden = [
|
protected $hidden = [
|
||||||
|
|||||||
@@ -82,4 +82,42 @@ class CorporateMemberService
|
|||||||
->select(['members.id', 'members.person_id', 'members.member_id', 'members.name', 'corporate_divisions.name AS division_name', 'members.active', 'claim_requests.id', 'claim_requests.member_id', 'claim_requests.submission_date'])
|
->select(['members.id', 'members.person_id', 'members.member_id', 'members.name', 'corporate_divisions.name AS division_name', 'members.active', 'claim_requests.id', 'claim_requests.member_id', 'claim_requests.submission_date'])
|
||||||
->paginate($limit);
|
->paginate($limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getAllMemberAlarmCenter(int $corporateId, Request $request)
|
||||||
|
{
|
||||||
|
$limit = $request->has('perPage') ? $request->input('perPage') : 10;
|
||||||
|
|
||||||
|
return Member::query()
|
||||||
|
->joinCorporateEmployees('left')
|
||||||
|
->joinMemberPlans('left')
|
||||||
|
->joinPlans('left')
|
||||||
|
->with(['currentPlan', 'person'])
|
||||||
|
->where('corporate_employees.corporate_id', $corporateId)
|
||||||
|
->when($request->input('search'), function (Builder $query, $search) {
|
||||||
|
$query->where(function (Builder $query) use ($search) {
|
||||||
|
$query->orWhere('members.member_id', 'like', "%" . $search . "%")
|
||||||
|
->orWhere('members.name', 'like', "%" . $search . "%");
|
||||||
|
});
|
||||||
|
})
|
||||||
|
->when($request->input('division'), function (Builder $query, $value) {
|
||||||
|
$query->where('corporate_employees.division_id', $value);
|
||||||
|
})
|
||||||
|
->when($request->has('orderBy'), function (Builder $query) use ($request) {
|
||||||
|
$orderBy = match ($request->input('orderBy')) {
|
||||||
|
'memberId' => 'member_id',
|
||||||
|
'fullName' => 'name',
|
||||||
|
'status' => 'active',
|
||||||
|
'start_date' => 'member_plans.start',
|
||||||
|
'end_date' => 'member_plans.end',
|
||||||
|
'service' => 'plans.service_code',
|
||||||
|
|
||||||
|
default => ''
|
||||||
|
};
|
||||||
|
|
||||||
|
$query->getQuery()->orderBy($orderBy, $request->order);
|
||||||
|
})
|
||||||
|
->select(['members.id', 'members.person_id', 'members.member_id', 'members.name', 'member_plans.start AS start_date', 'member_plans.end AS end_date', 'plans.active', 'plans.service_code'])
|
||||||
|
->selectRaw("(select sum(`claims`.`total_claim`) from `claims` where `members`.`id` = `claims`.`member_id` AND `claims`.`deleted_at` IS NULL) AS `claims_sum_total_claim`")
|
||||||
|
->paginate($limit);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
"barryvdh/laravel-snappy": "^1.0",
|
"barryvdh/laravel-snappy": "^1.0",
|
||||||
"box/spout": "^3.3",
|
"box/spout": "^3.3",
|
||||||
"duitkupg/duitku-php": "dev-master",
|
"duitkupg/duitku-php": "dev-master",
|
||||||
|
"fruitcake/laravel-cors": "^3.0",
|
||||||
"guzzlehttp/guzzle": "^7.2",
|
"guzzlehttp/guzzle": "^7.2",
|
||||||
"h4cc/wkhtmltopdf-amd64": "0.12.x",
|
"h4cc/wkhtmltopdf-amd64": "0.12.x",
|
||||||
"laravel/framework": "^9.11",
|
"laravel/framework": "^9.11",
|
||||||
|
|||||||
82
composer.lock
generated
82
composer.lock
generated
@@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "3173df7bfbfeeb8f05d3670505b69a05",
|
"content-hash": "f81882bbe6fbd0202d58351a9dbf3340",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "barryvdh/laravel-snappy",
|
"name": "barryvdh/laravel-snappy",
|
||||||
@@ -768,6 +768,86 @@
|
|||||||
},
|
},
|
||||||
"time": "2022-09-18T07:06:19+00:00"
|
"time": "2022-09-18T07:06:19+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "fruitcake/laravel-cors",
|
||||||
|
"version": "v3.0.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/fruitcake/laravel-cors.git",
|
||||||
|
"reference": "7c036ec08972d8d5d9db637e772af6887828faf5"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/7c036ec08972d8d5d9db637e772af6887828faf5",
|
||||||
|
"reference": "7c036ec08972d8d5d9db637e772af6887828faf5",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"fruitcake/php-cors": "^1.2",
|
||||||
|
"illuminate/contracts": "^6|^7|^8|^9",
|
||||||
|
"illuminate/support": "^6|^7|^8|^9",
|
||||||
|
"php": "^7.4|^8.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"laravel/framework": "^6|^7.24|^8",
|
||||||
|
"orchestra/testbench-dusk": "^4|^5|^6|^7",
|
||||||
|
"phpunit/phpunit": "^9",
|
||||||
|
"squizlabs/php_codesniffer": "^3.5"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "3.0-dev"
|
||||||
|
},
|
||||||
|
"laravel": {
|
||||||
|
"providers": [
|
||||||
|
"Fruitcake\\Cors\\CorsServiceProvider"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Fruitcake\\Cors\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Fruitcake",
|
||||||
|
"homepage": "https://fruitcake.nl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Barry vd. Heuvel",
|
||||||
|
"email": "barryvdh@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application",
|
||||||
|
"keywords": [
|
||||||
|
"api",
|
||||||
|
"cors",
|
||||||
|
"crossdomain",
|
||||||
|
"laravel"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/fruitcake/laravel-cors/issues",
|
||||||
|
"source": "https://github.com/fruitcake/laravel-cors/tree/v3.0.0"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://fruitcake.nl",
|
||||||
|
"type": "custom"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/barryvdh",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"abandoned": true,
|
||||||
|
"time": "2022-02-23T14:53:22+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "fruitcake/php-cors",
|
"name": "fruitcake/php-cors",
|
||||||
"version": "v1.2.0",
|
"version": "v1.2.0",
|
||||||
|
|||||||
@@ -95,9 +95,10 @@ export default function CardPolicy(props: CardPolicyProps) {
|
|||||||
const [dialogTitle, setDialogTitle] = useState('');
|
const [dialogTitle, setDialogTitle] = useState('');
|
||||||
const [isDialog, setIsDialog] = useState('');
|
const [isDialog, setIsDialog] = useState('');
|
||||||
|
|
||||||
const { limit, topUpLimit } = props.data;
|
const { limit, topUpLimit } = props.data || {};
|
||||||
|
if (!limit || !topUpLimit) {
|
||||||
console.log(limit);
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
const clickHandler = (isDialog: string) => {
|
const clickHandler = (isDialog: string) => {
|
||||||
switch (isDialog) {
|
switch (isDialog) {
|
||||||
|
|||||||
@@ -64,12 +64,12 @@ export default function CorporatePlanForm({ isEdit, currentCorporatePlan }: Prop
|
|||||||
const onSubmit = async (data: any) => {
|
const onSubmit = async (data: any) => {
|
||||||
if (!isEdit) {
|
if (!isEdit) {
|
||||||
await axios
|
await axios
|
||||||
.post('/corporate/' + corporate_id + '/divisions', data)
|
.post('/corporates/' + corporate_id + '/divisions', data)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
enqueueSnackbar('Division created successfully', { variant: 'success' });
|
enqueueSnackbar('Division created successfully', { variant: 'success' });
|
||||||
})
|
})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
navigate('/corporate/' + corporate_id + '/divisions', { replace: true });
|
navigate('/corporates/' + corporate_id + '/divisions', { replace: true });
|
||||||
})
|
})
|
||||||
.catch(({ response }) => {
|
.catch(({ response }) => {
|
||||||
if (response.status === 422) {
|
if (response.status === 422) {
|
||||||
@@ -84,12 +84,12 @@ export default function CorporatePlanForm({ isEdit, currentCorporatePlan }: Prop
|
|||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
await axios
|
await axios
|
||||||
.put('/corporate/' + corporate_id + '/divisions/' + currentCorporatePlan?.id , data)
|
.put('/corporates/' + corporate_id + '/divisions/' + currentCorporatePlan?.id , data)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
enqueueSnackbar('Division updated successfully', { variant: 'success' });
|
enqueueSnackbar('Division updated successfully', { variant: 'success' });
|
||||||
})
|
})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
navigate('/corporate/' + corporate_id + '/divisions/' , { replace: true });
|
navigate('/corporates/' + corporate_id + '/divisions/' , { replace: true });
|
||||||
})
|
})
|
||||||
.catch(({ response }) => {
|
.catch(({ response }) => {
|
||||||
enqueueSnackbar('Update Failed : '+ response.data.message, { variant: 'error' });
|
enqueueSnackbar('Update Failed : '+ response.data.message, { variant: 'error' });
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ import axios from '../../utils/axios';
|
|||||||
import { fCurrency } from '../../utils/formatNumber';
|
import { fCurrency } from '../../utils/formatNumber';
|
||||||
import RHFAutocomplete from '../../components/hook-form/RHFAutocomplete';
|
import RHFAutocomplete from '../../components/hook-form/RHFAutocomplete';
|
||||||
import UploadImage from '../../components/UploadImage';
|
import UploadImage from '../../components/UploadImage';
|
||||||
|
import { fPostFormat } from '@/utils/formatTime';
|
||||||
|
|
||||||
const LabelStyle = styled(Typography)(({ theme }) => ({
|
const LabelStyle = styled(Typography)(({ theme }) => ({
|
||||||
...theme.typography.subtitle2,
|
...theme.typography.subtitle2,
|
||||||
@@ -70,15 +71,78 @@ export default function CorporateForm({ isEdit, currentCorporate }: Props) {
|
|||||||
|
|
||||||
const NewCorporateSchema = Yup.object().shape({
|
const NewCorporateSchema = Yup.object().shape({
|
||||||
name: Yup.string().required('Name is required'),
|
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'),
|
active: Yup.boolean().required('Corporate Status is required'),
|
||||||
type: Yup.string().required('Type 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', {
|
parent_id: Yup.string().when('type', {
|
||||||
is: 'subcorporate',
|
is: 'subcorporate',
|
||||||
then: Yup.string().required('Corporate is required because type is Sub Corporate'),
|
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
|
||||||
|
|
||||||
|
var filteredArray = existingCodes.filter(e => e != codeCurrent)
|
||||||
|
return filteredArray;
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
enqueueSnackbar('Failed to fetch existing codes', { variant: 'error' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const defaultValues = useMemo(
|
const defaultValues = useMemo(
|
||||||
() => ({
|
() => ({
|
||||||
code: currentCorporate?.code || '',
|
code: currentCorporate?.code || '',
|
||||||
@@ -149,7 +213,7 @@ export default function CorporateForm({ isEdit, currentCorporate }: Props) {
|
|||||||
const [file, setFile] = useState(null);
|
const [file, setFile] = useState(null);
|
||||||
const [save, setSave] = useState(null);
|
const [save, setSave] = useState(null);
|
||||||
|
|
||||||
console.log('save', save);
|
// console.log('save', save);
|
||||||
|
|
||||||
const onSubmit = async (data: FormValuesProps) => {
|
const onSubmit = async (data: FormValuesProps) => {
|
||||||
try {
|
try {
|
||||||
@@ -170,11 +234,12 @@ export default function CorporateForm({ isEdit, currentCorporate }: Props) {
|
|||||||
formData.append('policy_minimal_alert_net', data.policy_minimal_alert_net);
|
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_percentage', data.policy_stop_service_percentage);
|
||||||
formData.append('policy_stop_service_net', data.policy_stop_service_net);
|
formData.append('policy_stop_service_net', data.policy_stop_service_net);
|
||||||
formData.append('policy_start', data.policy_start);
|
formData.append('policy_start', fPostFormat(data.policy_start));
|
||||||
formData.append('policy_end', data.policy_end);
|
formData.append('policy_end', fPostFormat(data.policy_end));
|
||||||
formData.append('linking_rules', data.linking_rules);
|
formData.append('linking_rules', data.linking_rules);
|
||||||
|
|
||||||
console.log('MOTHERFUCKER', data.linking_rules)
|
|
||||||
|
// console.log('MOTHERFUCKER', data.linking_rules)
|
||||||
|
|
||||||
if (!isEdit) {
|
if (!isEdit) {
|
||||||
const response = await axios.post('/corporates', formData);
|
const response = await axios.post('/corporates', formData);
|
||||||
@@ -184,7 +249,7 @@ export default function CorporateForm({ isEdit, currentCorporate }: Props) {
|
|||||||
}
|
}
|
||||||
reset();
|
reset();
|
||||||
enqueueSnackbar(
|
enqueueSnackbar(
|
||||||
!isEdit ? 'Corporate Created Successfully!' : 'Corporate Udpated Successfully!',
|
!isEdit ? 'Corporate Created Successfully!' : 'Corporate Updated Successfully!',
|
||||||
{ variant: 'success' }
|
{ variant: 'success' }
|
||||||
);
|
);
|
||||||
navigate('/corporates');
|
navigate('/corporates');
|
||||||
|
|||||||
Reference in New Issue
Block a user