Executando

Api em Php

Publicado em 17 de Outubro de 2024 dias na TI e Programação

Sobre este projeto

Aberto

Api fila (pode usar framework)

preciso que crie um api, back-end e regras do negócio. (Tenho servidor na hostgator e preciso que instale e configure nesse servidor)

Regra: (Terá um token pra proteção)
Atenção: Como terá 3 tipos de plataformas [admin – profissional – cliente] e todo login será feito pelo uma única tela, a api terá que pesquisar nas 3 tabelas o e-mail, se encontrar em mais de uma tabela, retornara assim:

caso tenha cadastrado nas 3 plataformas:
{
  "plataforma_cliente": " true ",
  "plataforma_cliente_id": "10",
  "plataforma_profissional": " true ",
  "plataforma_profissional_id": "2",
  "plataforma_admin": " true ",
  "plataforma_admin_id": "1",
}

se houver mas de uma plataforma como "true" o aplicativo pegara e mostrará a opção de qual ele deseja logar usando o login por id. Se houver somente uma plataforma cadastrada como true, entrará sem aparecer a opção, isso acontecera muito com a plataforma cliente e com a do profissional.
Essa regra será mas para um profissional que queira cadastrar com uma conta de cliente por exemplo, ou Administrador quiser cadastrar como Admin, Profissional, Cliente.
1° Detalhe, será informado no aplicativo que o e-mail e senha seja a mesmo para que a regra possa funcionar.
2° Se mais plataformas, estiverem com o mesmo e-mail e senha, carregara o modelo do [.json] acima, no aplicativo e só clicar na plataforma que queira escolher, como já foi validado que o e-mail e a senha estão corretos, terá a outra formas de login, como você verá abaixo, quando existir mas de uma plataforma o login será feito pela 2 forma de login, por ID, exemplo: (Plataforma do profissional, como já foi validado que o e-mail e senha são os mesmos, usarei a segunda forma de entrar na tela principal, por id), e assim para todas as outra plataformas.

URL – [Admin] – Cadastro do Loja.
NOME - E-mail – senha – enredeço – numero – bairro – celular1 – celular2
os outros dados, serve para que o cliente passa ter acesso ao endereço, forma de contato.
OBS: Login será feito pelo E-mail e senha. Gerará o token para acesso seguro.

URL – [Admin] – Editar Perfil.
NOME - E-mail – senha – enredeço – numero – bairro – celular1 – celular2

url – [admin] – cadastro do período de trabalho da loja.
Se a loja está aberta ou fechada aos clientes, onde ao cliente após iniciar o login carregara essa informação junto com os outros dados abaixo:

Horário de funcionamento, criar os campos automáticos [Segunda a Domingo] ao cadastro do Admin, só alterar os dados depois .
[As opções são: atendendo ou fechado]

exemplo:
segunda – 08:00 ás 18:00 [atendendo]
terça      – 09:00 ás 18:00 [fechado]
quarta  – 09:00 ás 18:00 [atendendo]
etc..

Json ficara assim:

Loja Aberta
{
  "dia_semana": "Segunda-feira",
  "horario": " 08:00 ás 18:00",
  "funcionamento": "Atendendo",
},
Loja fechada
{
  "dia_semana": "Segunda-feira",
  "horario": " 08:00 ás 18:00",
  " funcionamento": " Fechado "
},

URL – [Admin] – Atualizar status da loja.
Só para ativar se a loja está aberta ou não. [Atendendo - fechado] essa informação será mostrada para o cliente. E mudara o url acima.

URL – [Admin] – 1° Login do administrado (E-mail - senha - token)
obs: ao realizar o login, mostrara a quantidade de clientes cadastrados a loja, listará todos os cliente cadastrados junto com o último dia de sua vinda, não quero a data, mas informar por dias de atraso. (Exemplo: 6 dias atrás, 20 dias atrás) [Fazer paginação por haver vários clientes]

URL – [Admin] – 2° Login do administrado (id - token) esse tipo de login será para quando houver mas plataformas.
OBS: Ao realizar o login, mostrara a quantidade de clientes cadastrados a loja, listará todos os cliente cadastrados junto com o último dia de sua vinda, não quero a data, mas informar por dias de atraso. (Exemplo: 6 dias atrás, 20 dias atrás)
[Fazer paginação por haver vários clientes]

URL – [Admin] - Cadastro do Profissional.
NOME – E-mail – senha – celular
o login será feito pelo e-mail e senha.
A foto e obs não será cadastra pelo adnim, mas sobre a foto será colocada uma foto padrão, depois o profissional alterará em seu perfil, essa foto sempre fica em miniatura conforme a regra criada na tabela conf.
[Gerará o token para acesso seguro]

URL – [Admin] - Editar período de trabalho.
Regra: Criado automaticamente o período de trabalho, os dias da semana, ao criar o cadastro do profissional na url acima, vindo preenchido tudo com 00:00 de segunda a domingo, com horários e tempo antes do começo de trabalho, poderá habilitar ou desabilitar os dias que irá trabalhar. Depois o Profissional editara seus horários etc...
SEGUNDA – [00:00] - 00:00 ás 00:00 [Trabalho = N]
TERÇA      – [00:00] - 00:00 ás 00:00 [Trabalho = N]
Etc..

URL – [Admin] - Editar os Profissionais. Usando o ID do profissional, que pegarei na url abaixo.

URL – [Admin] – Listar os Profissionais.
Ordenar por id ou nome, passar parâmetro (0) para saber que será para ordenar por id, e passar o parâmetro (1) para saber que será para ordenar por nome.

URL – [Admin] – Listar os Clientes.
Ordenar por id ou nome, passar parâmetro (0) para saber que será para ordenar por id, e passar o parâmetro (1) para saber que será para ordenar por nome.

URL – [Admin] – 1° Enviar push notifications a 1 cliente especifico. Usaremos para enviar a mensagem o ID do cliente, e a mensagem (Exemplo: Você está sumido sentimos sua falta).

URL – [Admin] – 2° Enviar push notifications a todos os clientes. Passará o id (0), a api saberá que se for id (0) e para enviar a todos, um loop todos os clientes, passando o push notifications a todos (exemplo: não abriremos no dia 01/01/2024) poderá enviar qualquer texto.

URL – [Admin] – Relatório - Período de comparecimento.
Buscar todos os clientes pelo um período de comparecimento:
Clientes que não voltarão no período de 10 dias, 30 dias, etc... Para que eu o Admin passo enviar uma mensagem.

URL – [Admin] – Relatório - Listar os clientes que mais vieram.
Vieram na loja entre data inicial e data final. Para que posamos dar um brinde ou um desconto de destaque de presença. Mostrará a quantos vezes ele veio a loja no período selecionado, foto – nome – quant. VEZES. Ordenara por Quantidade de vindas do maior ai menor.

URL – [Admin] – Relatório avaliação de um ou de todos os Profissionais.
Avaliação dada pelo cliente, carregara todos Profissionais cadastrados.
1 estrela = 0
2 estrelas = 0
3 estrelas = 3
4 estrelas = 9
5 estrelas = 20
OBS: Essa parte da avaliação não será por dia, pegara todo o período data inicial data final.

---------------------------------------------------------------------------------------------------------

URL – [Profissional] – 1° Login do Profissional (E-mail - senha - token).

URL – [Profissional] – 2° Login do Profissional (id - token). Esse tipo de login será para quando houver, mas plataformas.

URL – [Profissional] - Editar dados do cadastrar do Profissional.
NOME – E-mail – senha – foto – celular – obs

url – [profissional] – ao realizar o login.
1° Carregar lista dos clientes. Será mostrado ao Profissional os clientes que estão na fila dele, e ordenará a posição de acordo com a entrada.
2° Carregara o nome do cliente, hora que entrou na fila, a data do seu niver, quantas vezes esse cliente já veio na loja e o último dia de sua vinda, não quero a data, mas trazer por dia: (Exemplo: 6 dias atrás, 20 dias atrás), só não mostrará a parte ultimo dia de sua vinda quando for clientes avulsos.
2° Carregara a quantidade de clientes que está na fila com esse Profissional.
3° Carregara o nome do Profissional logado.
4° Carregara o dia da semana, api mandara conforme o dia da semana configurado pelo adnim.

URL – [Profissional] - Editar dias da semana. Seus horários de trabalho e se trabalha nesse dia da semana, e o tempo antes da abertura para que os clientes possam entrar na fila. Já será criado quando eu criar o usuário profissional, será criado com os dados zerados, já ficara criado de segunda a domingo só alterar os dados.

Exemplo:
SEGUNDA – [00:30] - 08:00 ás 18:00 [Trabalho = S]
TERÇA      – [01:00] - 09:00 ás 12:00 [Trabalho = N]
Etc..
Regras:
1° Se passar do horário te atendimento ao cliente não pode entrar na fila.
2° Os minutos antes do horário de abertura, quer dizer que o cliente pode entrar na fila antes da abertura.
3° O horário pode ser pausado pelo Profissional impedindo que o cliente possa entrar na fila, mesmo que ainda não tenha chegado no fim do horário do encerramento. E quando o cliente tentar entrar na fila do Profissional retornara uma mensagem que não pode entrar porque foi pausado.
4° Se o dia de da semana que o Profissional estiver marcado [Trabalho = N] não poderá entrar na fila.

URL – [Profissional] – Ativar tempo de trabalho [manha – tarde - noite].
    
URL – [Profissional] – Mudar o Status [atendendo – pausar – encerrado].
O Profissional pode usar [pausar – encerrado] para que o cliente não possa entrar na fila com ele.
Regra: Mediante a URL acima, quando o profissional chegar e clicar em iniciar trabalho a api verificara se o horário programado se esta antes das 11:00 que seria a parte da manhã a api iniciara o período da manhã e começara a regras acima, mas se passou as 11:00 ativara o período da tarde porque passou das 11:00 mas esta antes das 18:00, e assim por diante.

URL – [Profissional] – 1° Iniciar atendimento.
Iniciar o atendimento com o cliente.
Iniciará o atendimento dos que estão na fila, só mudara o status de aguardando para, em atendimento, pensei assim:
[E – Espera] - Todos recebem esse status quando entram na fila.
[A – Inicio do atendimento]
[C - Concluindo] - Ao encerrar o atendimento.
Regra: Ao confirmar a presença enviara ao próximos 3 clientes um push notifications avisando que está chegando sua vez, [Próximo recebera: Você e o próximo – Segundo recebera: tem somente mas 2 na sua frente – Terceiro recebera: Tem somente 3 na sua frente].
Após confirmar a presença, entrara em uma tabela de tempo de serviço o horário que começou, e ao clicar na url que encerra o serviço registra o tempos, e fica pronto pra chamar outro cliente que está na fila.

URL – [Profissional] – 2° Encerra atendimento.
Essa url e para quando o terminar de tender o cliente o funcionário usara para encerra o atendimento e ficara pronto para chamar outro cliente. Quem esteja com o status [A] ele finaliza o atendimento mudando o status para [C - Concluindo], e disparará os push notifications avisando se houver os ou 3 clientes abaixo. E atualizara a quantidade de quantas vezes esse cliente veio a loja e atualizara a data da sua última vinda. E atualizando e retornando a quantidade de clientes que tem na fila.

URL – [Profissional] – Cliente faltou.
O cliente não veio quando chegou sua vez, essa url e para que possa ser tirar da fila e tomar advertência.
1° OBS: Existe uma regra, o cliente poderá faltar somente 3 vezes, e cada vez que ele faltar será somado 1 falta pra ele e será mandado um push notifications avisando que ele faltou e receberá mas ou menos assim: [Você recebeu 1 advertência de 3 ao final de 3 você ficara sem poder usar a opção entrar na fila, até ser desbloqueado na loja], caso um cliente chegue nas 3 advertência ele só poderá entrar na fila até que um profissional possa liberar ele novamente, com isso será zerado as 3 vez continuando novamente a contagem.
2° OBS: Será criado uma tabela onde toda as faltas que o cliente tiver será acrescentado até inteirar 3 vezes, ai esse cliente não poderá mais usar o serviço de entrar na fila. Só poderá ser liberado pelo um profissional, abaixo tem uma url sobre isso.

URL – [Profissional] – 1° Clientes travados [ Listar ].
Poderá ser pesquisado pelo CPF do cliente ou trazer todos de uma vez. E usar a url abaixo para destravar o cliente.

URL – [Profissional] – 2° Cliente travado [ Destravar ].
Essa url e para os clientes que estão na lista negra e ouve 3 faltas na fila da loja. Será liberado usado o ID que encontrou usando a url acima quando clicar nesse e assim poderá ser liberado.

URL – [Profissional] – Avaliação do Profissional. Pesquisar por ID.
Avaliação dada pelo cliente, soma das estrelas de todos os clientes:
1 estrela = 0          ( total de todos os cliente )
2 estrelas = 5        ( total de todos os cliente )
3 estrelas = 30      ( total de todos os cliente )
4 estrelas = 100    ( total de todos os cliente )
5 estrelas = 500    ( total de todos os cliente )

E carregará os clientes que avaliaram. O Nome, o comentário (se não tiver vem em vazio), a quantidade de estrela, data da avaliação.
OBS: Listara pela última data inserida.

URL – [Profissional] – Relatório 1. Calcula tempo de Serviço.
OBS: Iniciar e ordenar pelo último registro de entrada.
Mostrara: O nome do cliente que ele atendeu o tempo que ele gastou em seu atendimento e a data do atendimento, e teria um filtro pesquisando por data do dia que ele quer trazer.
Exemplo:
Atendeu 20 Clientes
    Atendido dia 01/01/2024
    Foto - Moacir    Iniciou as 10:00 as 11:30 - tempo serviço: 00:30
    Foto - Pedro      Iniciou as 12:00 as 13:10 - tempo serviço: 01:10
    etc...

Atendeu 10 Clientes
Atendido dia 02/01/2024
    Foto - Lucar      Iniciou as 15:00 as 14:10 - tempo serviço: 01:10
    Foto - Moacir  Iniciou as 17:00 as 17:20 - tempo serviço: 00:20
    etc...

URL – [Profissional] – Relatório 2. Total por dia de atendimento.
Mostrara o dia:
Atendidos total = 150
Cancelados total = 2
Não comparecimentos total = 4

URL – [Profissional] – Fila de cliente avulso (Não cadastrado).
Ele medo e para clientes que não queira cadastrar no aplicativo, mas quer usar os serviços, ele poderá ser colocado na fila. Ele só informara: nome – profissional (lembre-se que ele possa escolher a opção de não tem preferência). Usando essa opção não dispara os push notifications quando tiver entre os 3 próximos do atendimento, mas o Profissional escolhido recebera o push notifications informando quem tem cliente.
ATENÇÃO: Quando o cliente não tiver preferência será passado o [id = 0] juntamente com o número da vaga, a api terá que encontrar o cliente disponível pegar o nome e acrescentar na frente assim: Pedro [1] que quer dizer que e a vaga 1 e assim por diante, esse acrescemos só não será colocado se a vaga for passada como [0] somente se a ver mas de uma vaga, isso se aplica com o cadastro de um cliente que está cadastrado ele colocara o nome mas o número da vaga, Calor [1] por exemplo se houver mas de uma inserção de vaga. A vaga não tem nada a ver com a posição dele na fila ok.
Se eu passar o [ClienteID = 0] no caso de cliente avulso (Sem cadastro) e para que api saiba que esse cliente não está cadastrado mesmo assim entrará na fila.
Passarei os campos: [IDCliente – NOMECliente – IDProfissinal – IDVaga – IDPerildo] para inserir. O IDCliente sempre vira como [0] isso a api saberá que esse cliente não está cadastrado no sistema e só quer usar o serviço.

URL – [Profissional] – Entrar na fila pelo aplicativo do profissional.
Mesmo que o cliente não esteja com o celular, mas venha a loja ele poderá entrar na fila usando esse metodo. Esse método e para um cliente que já está cadastrado, mas não está com seu celular no momento, o Profissional poderá efetuar sua entrada na fila. Consultara pelo CPF do cliente para que possa trazer os dados dele, e escolher o Profissional (lembre-se que ele possa escolher a opção de não tem preferência).
ATENÇÃO: Quando o cliente não tiver preferência será passado o [id = 0] juntamente com o número da vaga, a api terá que encontrar o cliente disponível pegar o nome e acrescentar na frente assim: Pedro [1] que quer dizer que e a vaga 1 e assim por diante, esse acrescemos só não será colocado se a vaga for passada como [0] somente se a ver mas de uma vaga, isso se aplica com o cadastro de um cliente que está cadastrado ele colocara o nome mas o número da vaga, Calor [1] por exemplo se houver mas de uma inserção de vaga. A vaga não tem nada a ver com a posição dele na fila ok.
Passarei os campos: [IDCliente – IDProfissinal – IDVaga – IDPerildo] para inserir.

---------------------------------------------------------------------------------------------------------

URL – [Cliente] - Cadastro clientes.
NOME – E-mail – senha – celular – data niver
gerará o token para acesso seguro.

URL – [Cliente] – Consulta e-mail para alterar senha.
Irá passar e-mail cadastrado para poder confirmar se pode mudar a senha ou não. Retornara o ID – E-MAIL.

URL – [Cliente] - Alterar senha.
Irá passar id e a nova senha para poder altera.

URL – [Cliente] - Atualizar dados do cliente.
Nome – senha – celular – data niver (data terá somente dia e mês)

url – [cliente] – 1° login do cliente será feito (e-mail - senha - token).

URL – [Cliente] – 2° Login do Cliente será feito (id - token). Esse tipo de login será para quando houver mas plataformas.

URL – [Cliente] – Ao realizar o Login carregara:
1° Status se a loja está em funcionamento conforme está configurado pelo Admin.
2° Carregara os dados se tem alguma entrado na fila (id, Foto do Profissional, nome do Profissional que ira atende-lo, quantos pessoas tem na sua frente na fila, que horas o cliente entrou na fila)
3° Se não tive nada a lista volta vazia.
4° Quantidade de push notifications que seria mensagens recebidas se não houver retorna zero. Esses push notifications, ficara gravados em uma tabela onde o cliente poderá acessar e ver essas mensagens, ficara como não lidas até que ele carregue as mensagens ai mudara o status para lidas e alterará o número das mensagens não lidas.
5° Trazer o Nome do cliente.
6° Carregara a posição que o cliente está na fila.
7° Carregara endereço da loja, (ENDEREÇO – numero – bairro – celula1 – celular2)
8° número da loja que esse cliente se ligou.
OBS: Se houver dados desse cliente na fila carregara também a quantidade de estrelas do profissional para que que possa mostrar.
1 estrela
5 estrela
2 estrela
1 estrela
5 estrela

URL – [Cliente] – Atualizar a quantidade de mensagens recebidas. Esse método e para que ao sair da tela de ver as mensagens possa atualizar a quantidade de mensagens.

URL – [Cliente] – Carrega mensagens enviadas ao cliente, que seria os push notifications recebidos. Será carregado: [ assunto - data enviao - mensagem].

URL – [Cliente] - Entrar na fila.
Todos recebem esse status quando entram na fila [E – Espera] aguardando o atendimento.
Regra: Ao confirmar a entrada na fila, o Profissional selecionado recebera um push notifications com o nome do cliente que entrou na fila, terá também uma opção caso o cliente não tenha preferência de um Profissional o código será [0] para saber que e a opção que não tem preferência, a api selecionara o Profissional que tem menos clientes na fila e mandara o push notifications para esse profissional avisando que tem um cliente que entrou na fila.
1° OBS: Se o status ATENDIMENTO do profissional  estiver [ Pausado - Encerrado], mesmo que o cliente escolha a opção NÃO tenho preferencia não escolhera esses profissionais.
2° OBS: O cliente pode ao mesmo tempo inserir mas de uma vaga na fila, assim passará o número da vaga na frente do nome do cliente na hora de inserir.
Toda entrada na fila com o profissional especifico, contara 1 entra para ele, até atingir o valor que foi configurado pelo profissional. [Atender_primeira_parte = 10] e [atender_segunda_parte = 20] ao atingir o valor configurado o status do profissional entrara automaticamente em [Pausado]. Podendo a ver a mudança manual pelo próprio profissional.
ATENÇÃO: Quando o cliente não tiver preferência será passado o [id = 0] juntamente com o número da vaga, a api terá que encontrar o cliente disponível pegar o nome e acrescentar na frente assim: Pedro [1] que quer dizer que e a vaga 1 e assim por diante, esse acrescemos só não será colocado se a vaga for passada como [0] somente se a ver mas de uma vaga, isso se aplica com o cadastro de um cliente que está cadastrado ele colocara o nome mas o número da vaga, Calor [1] por exemplo se houver mas de uma inserção de vaga. A vaga não tem nada a ver com a posição dele na fila ok.
Passarei os campos: [IDCliente – IDProfissinal – IDVaga – IDPerildo] para inserir.

URL – [Cliente] - Carregar os Profissionais cadastrados, mostrará [id - nome - foto -  quantidade na fila, atendimento ], terá também a opção de, não tenho preferência do profissional. A opção quantidade na fila e para mostrar a quantas pessoas que já tem na fila com esse profissional até o momento. O ATENDIMENTO mostrará se o profissional está [ Atendendo (de manhã, tarde, noite) – Encerrado – Pausado ]. Terá um campo onde será cadastrado se o profissional atende, a descrição dos serviços que faz [Crianças e adultos] [Cabelo, unha] [Escova cabelo, progressiva, prancha] etc.....
OBS: Carregara a quantidade de estrelas do profissional selecionado para que que possa mostrar.

URL – [Cliente] - Sair da fila. Ao fazer isso dispara novamente um push notifications avisando da atualização das posições, caso esse cliente esteja entre os 3 próximos a serem atendidos, se não tiver entre os 3 não dispara o push notifications, só atualiza para os outros clientes a posição atual que ele está.

URL – [Cliente] - Passar a vez na fila. O cliente usara esse método, caso ele esteja para ser atendido, mas não chegara atempo, e não queria sair da fila. Só pode passar uma de cada vez, mesmo que ele clique várias vezes, só passara uma posição por vez.
Regra: O cliente só pode usar esse método se houver outro cliente depois dele, e dispara o push notifications atualizando aos outros clientes, porque ouve uma mudança da fila, se não houver cliente depois dele, ele será informado que não pode ser passado sua vez porque não tem ninguém depois dele. OBS: O cliente pode passar sua vez quantas vezes ele quiser, esse método o cliente pode passar sua posição uma de cada vez.

URL – [Cliente] – Avaliar o profissional. O cliente poderá no avaliar o Profissional, de 1 até 5 estrelas e deixar uma mensagem. Isso sairá no relatório para o Profissional ver.
OBS: O cliente só poderá avaliar quando houver sido confirmado pelo profissional a confirmação do seu comparecimento, isso quer dizer que ele foi entendido, a api carregara os serviços confirmados e carregara: [ID – ID_BARBEIRO - NOME_BARBEIRO - FOTO_BARBEIRO – DATA_ENTRENDIMENTO ]e clicando encima desse serviço poderá avalizar o serviço feito pelo profissional.
OBS: Quando o profissional usar a opção de [Cliente não compareceu] não mostrará para ele avaliar. E quando ele confirmar sua avaliação mudara o status para não carregar, mas esse serviço, porque ele pode avaliar somente uma vez.

Categoria TI e Programação
Subcategoria Programação
Qual é o alcance do projeto? Alteração média
Isso é um projeto ou uma posição de trabalho? Um projeto
Tenho, atualmente Eu tenho uma ideia geral
Disponibilidade requerida Conforme necessário
Integrações de API Outros (Outras APIs)
Funções necessárias Desenvolvedor

Prazo de Entrega: Não estabelecido

Habilidades necessárias