added email icon and realized handler for send bill by email

This commit is contained in:
aleksandr-raw 2024-04-22 18:09:41 +04:00
parent 1a586dc5dc
commit bcfe5bea32
2 changed files with 142 additions and 24 deletions

@ -1,9 +1,18 @@
import { Box, IconButton, Typography, useMediaQuery, useTheme } from "@mui/material" import {
Box,
IconButton,
Typography,
useMediaQuery,
useTheme
} from "@mui/material"
import CustomAccordion from "@components/CustomAccordion" import CustomAccordion from "@components/CustomAccordion"
import File from "@components/icons/File" import File from "@components/icons/File"
import { getDeclension } from "@utils/declension" import {getDeclension} from "@utils/declension"
import { enqueueSnackbar } from "notistack" import {enqueueSnackbar} from "notistack"
import { addTariffToCart } from "@root/stores/user" import {addTariffToCart} from "@root/stores/user"
import ForwardToInboxOutlinedIcon
from "@mui/icons-material/ForwardToInboxOutlined";
import {makeRequest} from "@frontend/kitui";
export type History = { export type History = {
title: string; title: string;
@ -50,6 +59,18 @@ export default function AccordionWrapper({ content, last, first, createdAt, onCl
} }
} }
async function sendBillByEmail(tariffId: string) {
try {
await makeRequest({
url: process.env.REACT_APP_DOMAIN + `/customer/sendReport/${tariffId}`,
method: "POST",
});
enqueueSnackbar("Акт будет отправлен на почту, указанную при регистрации");
} catch (e) {
enqueueSnackbar("Извините, произошла ошибка");
}
}
return ( return (
<Box <Box
sx={{ sx={{
@ -64,7 +85,7 @@ export default function AccordionWrapper({ content, last, first, createdAt, onCl
<Typography <Typography
key={valuesByKey.id} key={valuesByKey.id}
> >
{e[1].Value} - {e[5].Value} {getDeclension(Number(e[5].Value), e[7].Value.toString())} {e[1].Value} - {e[5].Value} {getDeclension(Number(e[5].Value), e[7].Value.toString())}
</Typography>) </Typography>)
)} )}
header={ header={
@ -144,7 +165,7 @@ export default function AccordionWrapper({ content, last, first, createdAt, onCl
}} }}
title={`>Способ оплаты: ${valuesByKey.payMethod}</Typography>}`} title={`>Способ оплаты: ${valuesByKey.payMethod}</Typography>}`}
> >
{valuesByKey.payMethod && <Typography {valuesByKey.payMethod && <Typography
sx={{ sx={{
maxWidth: "300px", maxWidth: "300px",
width: "300px", width: "300px",
@ -178,9 +199,28 @@ export default function AccordionWrapper({ content, last, first, createdAt, onCl
</Box> </Box>
{!isMobile && {!isMobile &&
<> <>
{/* <IconButton onClick={onClickMail}> <IconButton
<EmailIcon fontSize={"large"}/> onClick={(e) => {
</IconButton> */} e.stopPropagation();
sendBillByEmail(valuesByKey.id);
}}
sx={{
ml: "20px",
bgcolor: "#EEE4FC",
stroke: "#7E2AEA",
borderRadius: 2,
"&:hover": {
bgcolor: "#7E2AEA",
stroke: "white",
},
"&:active": {
bgcolor: "black",
stroke: "white",
}
}}
>
<ForwardToInboxOutlinedIcon fontSize={"medium"} sx={{ opacity: 0.7 }}/>
</IconButton>
<IconButton <IconButton
title="Добавить в корзину тариф" title="Добавить в корзину тариф"
onClick={(e) => { onClick={(e) => {
@ -211,9 +251,28 @@ export default function AccordionWrapper({ content, last, first, createdAt, onCl
</Box> </Box>
{isMobile && {isMobile &&
<> <>
{/* <IconButton onClick={onClickMail}> <IconButton
<EmailIcon fontSize={"large"}/> onClick={(e) => {
</IconButton> */} e.stopPropagation();
sendBillByEmail(valuesByKey.id);
}}
sx={{
m: "0 10px",
bgcolor: "#EEE4FC",
stroke: "#7E2AEA",
borderRadius: 2,
"&:hover": {
bgcolor: "#7E2AEA",
stroke: "white",
},
"&:active": {
bgcolor: "black",
stroke: "white",
}
}}
>
<ForwardToInboxOutlinedIcon fontSize={"medium"} sx={{ opacity: 0.7 }}/>
</IconButton>
<IconButton <IconButton
title="Добавить в корзину тариф" title="Добавить в корзину тариф"
onClick={(e) => { onClick={(e) => {

@ -1,11 +1,19 @@
import { Box, IconButton, Typography, useMediaQuery, useTheme } from "@mui/material"; import {
Box,
IconButton,
Typography,
useMediaQuery,
useTheme
} from "@mui/material";
import CustomAccordion from "@components/CustomAccordion"; import CustomAccordion from "@components/CustomAccordion";
import File from "@components/icons/File"; import File from "@components/icons/File";
import { getDeclension } from "@utils/declension"; import {getDeclension} from "@utils/declension";
import { enqueueSnackbar } from "notistack"; import {enqueueSnackbar} from "notistack";
import { addTariffToCart } from "@root/stores/user"; import {addTariffToCart} from "@root/stores/user";
import { Tariff } from "@frontend/kitui"; import {makeRequest, Tariff} from "@frontend/kitui";
import { currencyFormatter } from "@root/utils/currencyFormatter"; import {currencyFormatter} from "@root/utils/currencyFormatter";
import ForwardToInboxOutlinedIcon
from "@mui/icons-material/ForwardToInboxOutlined";
export type History = { export type History = {
title: string; title: string;
@ -40,6 +48,19 @@ export default function AccordionWrapper2({ tariff, price, last, first, createdA
} }
} }
async function sendBillByEmail(tariffId: string) {
try {
await makeRequest({
url: process.env.REACT_APP_DOMAIN + `/customer/sendReport/${tariffId}`,
method: "POST",
});
enqueueSnackbar("Акт будет отправлен на почту, указанную при регистрации");
} catch (e) {
enqueueSnackbar("Извините, произошла ошибка");
}
}
return ( return (
<Box <Box
sx={{ sx={{
@ -163,9 +184,28 @@ export default function AccordionWrapper2({ tariff, price, last, first, createdA
</Box> </Box>
{!isMobile && {!isMobile &&
<> <>
{/* <IconButton onClick={onClickMail}> <IconButton
<EmailIcon fontSize={"large"}/> onClick={(e) => {
</IconButton> */} e.stopPropagation();
sendBillByEmail(tariff._id);
}}
sx={{
ml: "20px",
bgcolor: "#EEE4FC",
stroke: "#7E2AEA",
borderRadius: 2,
"&:hover": {
bgcolor: "#7E2AEA",
stroke: "white",
},
"&:active": {
bgcolor: "black",
stroke: "white",
}
}}
>
<ForwardToInboxOutlinedIcon fontSize={"medium"} sx={{ opacity: 0.7 }}/>
</IconButton>
<IconButton <IconButton
title="Добавить в корзину тариф" title="Добавить в корзину тариф"
onClick={(e) => { onClick={(e) => {
@ -196,9 +236,28 @@ export default function AccordionWrapper2({ tariff, price, last, first, createdA
</Box> </Box>
{isMobile && {isMobile &&
<> <>
{/* <IconButton onClick={onClickMail}> <IconButton
<EmailIcon fontSize={"large"}/> onClick={(e) => {
</IconButton> */} e.stopPropagation();
sendBillByEmail(tariff._id);
}}
sx={{
m: "0 10px",
bgcolor: "#EEE4FC",
stroke: "#7E2AEA",
borderRadius: 2,
"&:hover": {
bgcolor: "#7E2AEA",
stroke: "white",
},
"&:active": {
bgcolor: "black",
stroke: "white",
}
}}
>
<ForwardToInboxOutlinedIcon fontSize={"medium"} sx={{ opacity: 0.7 }}/>
</IconButton>
<IconButton <IconButton
title="Добавить в корзину тариф" title="Добавить в корзину тариф"
onClick={(e) => { onClick={(e) => {