fitst commit
This commit is contained in:
80
screens/profile/lib/ProfileDataContext.tsx
Normal file
80
screens/profile/lib/ProfileDataContext.tsx
Normal file
@@ -0,0 +1,80 @@
|
||||
import createContextHook from '@nkzw/create-context-hook';
|
||||
import { useState } from 'react';
|
||||
import { Announcement, Bonus, Employee, ProductService } from './type';
|
||||
|
||||
export const [ProfileDataProvider, useProfileData] = createContextHook(() => {
|
||||
const [employees, setEmployees] = useState<Employee[]>([
|
||||
{
|
||||
id: '1',
|
||||
firstName: 'Aziz',
|
||||
lastName: 'Rahimov',
|
||||
phoneNumber: '+998901234567',
|
||||
addedAt: new Date().toISOString(),
|
||||
},
|
||||
]);
|
||||
|
||||
const [announcements] = useState<Announcement[]>([
|
||||
{
|
||||
id: '1',
|
||||
name: "Yangi loyiha bo'yicha hamkorlik",
|
||||
companyTypes: ['IT', 'Qurilish'],
|
||||
totalAmount: 5000000,
|
||||
paymentStatus: 'paid',
|
||||
createdAt: new Date().toISOString(),
|
||||
},
|
||||
]);
|
||||
|
||||
const [bonuses] = useState<Bonus[]>([
|
||||
{
|
||||
id: '1',
|
||||
title: 'Yillik bonus',
|
||||
description: "Yil davomida ko'rsatilgan yuqori natijalarga oid bonus",
|
||||
percentage: 15,
|
||||
bonusAmount: 3000000,
|
||||
createdAt: new Date().toISOString(),
|
||||
},
|
||||
]);
|
||||
|
||||
const [productServices, setProductServices] = useState<ProductService[]>([]);
|
||||
|
||||
const addEmployee = (employee: Omit<Employee, 'id' | 'addedAt'>) => {
|
||||
setEmployees((prev) => [
|
||||
...prev,
|
||||
{
|
||||
...employee,
|
||||
id: Date.now().toString(),
|
||||
addedAt: new Date().toISOString(),
|
||||
},
|
||||
]);
|
||||
};
|
||||
|
||||
const removeEmployee = (id: string) => {
|
||||
setEmployees((prev) => prev.filter((e) => e.id !== id));
|
||||
};
|
||||
|
||||
const updateEmployee = (id: string, data: Partial<Employee>) => {
|
||||
setEmployees((prev) => prev.map((e) => (e.id === id ? { ...e, ...data } : e)));
|
||||
};
|
||||
|
||||
const addProductService = (service: Omit<ProductService, 'id' | 'createdAt'>) => {
|
||||
setProductServices((prev) => [
|
||||
...prev,
|
||||
{
|
||||
...service,
|
||||
id: Date.now().toString(),
|
||||
createdAt: new Date().toISOString(),
|
||||
},
|
||||
]);
|
||||
};
|
||||
|
||||
return {
|
||||
employees,
|
||||
addEmployee,
|
||||
removeEmployee,
|
||||
updateEmployee,
|
||||
announcements,
|
||||
bonuses,
|
||||
productServices,
|
||||
addProductService,
|
||||
};
|
||||
});
|
||||
Reference in New Issue
Block a user