JavaScript
import { PrismaClient } from '@prisma/client'import { withIronSessionApiRoute } from "iron-session/next";import { sessionCookie } from '../../lib/session';export default withIronSessionApiRoute( async function handler(req, res) {const prisma = new PrismaClient()const user = req.session.userconst attendanceShe设置签到 API 路由此路由处理我们对 localhost 的 API POST 请求:
3000/API/sign-publications 。该路由接受 POST 请求,而 attanceSheetId 和 action 用于登录和退出 attancesheet 。
打开/page/api/sign-around. js 文件并添加下面的代码片段 。
JavaScript
import { PrismaClient } from '@prisma/client'import { withIronSessionApiRoute } from "iron-session/next";import { parseBody } from '../../lib/parseBody';import { sessionCookie } from '../../lib/session';export default withIronSessionApiRoute( async function handler(req, res) {const prisma = new PrismaClient()const {attendanceSheetId, action} = parseBody(req.body)const user = req.session.userconst attendance = await prisma.attendance.findMany({where: {userId: user.id,attendanceSheetId: attendanceSheetId}})//check if atendance have been createdif (attendance.length === 0) {const attendance = await prisma.attendance.create({data: {userId: user.id,attendanceSheetId: attendanceSheetId,signIn: true,signOut: false,signOutTime: new Date()},})return res.json({status: "success", data: attendance});} else if (action === "sign-out") {await prisma.attendance.updateMany({where: {userId: user.id,attendanceSheetId: attendanceSheetId},data: {signOut: true,signOutTime: new Date()},})return res.json({status: "success", data: { ...attendance[0], signOut: true, signOutTime: new Date()}});}res.json({status: "success", data: attendance});}, sessionCookie())创建出勤页面此服务器端呈现的页面显示了登录用户的所有出勤表 。打开
/page/dashboard/attance.js 文件并添加下面的代码片段 。
JavaScript
import { withIronSessionSsr } from "iron-session/next";import Head from 'next/head'import { PrismaClient } from '@prisma/client'import SideBar from '../../components/SideBar'import styles from '../../styles/Home.module.css'import dashboard from '../../styles/Dashboard.module.css'import { sessionCookie } from "../../lib/session";export default function Page(props) {const data = https://www.isolves.com/it/cxkf/bk/2022-07-12/JSON.parse(props.attendanceSheet)return (创建出勤单页这个服务器端呈现的页面显示了所有的考勤表以及在该考勤表上签名的员工 。打开 {data.map(data =>{const {id, createdAt, attendance } = datareturn ( Attendance Id Date Sign In Time Sign Out Time )})}{id} {createdAt} { attendance.length === 0 ?(<>You did not Sign In You did not Sign Out >):(<>{attendance[0]?.signInTime} {attendance[0]?.signOut ? attendance[0]?.signOutTime : "You did not Sign Out"} >)}
/page/dashboard/attance.js 文件并添加下面的代码片段 。
JavaScript
import { withIronSessionSsr } from "iron-session/next";import Head from 'next/head'import { PrismaClient } from '@prisma/client'import SideBar from '../../components/SideBar'import styles from '../../styles/Home.module.css'import dashboard from '../../styles/Dashboard.module.css'import { sessionCookie } from "../../lib/session";export default function Page(props) {const data = https://www.isolves.com/it/cxkf/bk/2022-07-12/JSON.parse(props.attendanceSheet)return ( Attendance Id
推荐阅读
{data?.map(data => {const {id, createdAt, attendance } = datareturn (<>
