Sistema web para simular o custo da ligação telefônica dos clientes da empresa ScupTel.
Os clientes da ScupTel deverão informar o tempo de duração da ligação, o DDD de origem e de destino da ligação. O resultado será um comparativo entre os planos do produto "Fale Mais".
A documentação do desafio pode ser encontrada em ShowMeTheCode-Backend.pdf.
Backend: http://45.55.67.91
Frontend: http://104.131.182.79
- PHP 5.5.9
- Silex 2
- Composer
- PHPUnit
- Apache 2
$ composer install
$ php app/console project:setup www-data
OBS: www-data é o usuário do apache na distribuição ubuntu linux, use outro usuário caso necessário.
$ phpunit
36 tests, 87 assertions.
Após a execução da suíte de testes (phpunit), um relatório em HTML será gerado em: "build/coverage/index.html"
Exemplo de requisição:
- POST http://localhost/price-simulator
- Accept: application/json
- Content-Type: application/json
{
"fromAreaCode": 11,
"toAreaCode": 17,
"timeInMinutes": 200
}
Exemplo de resposta:
- 200 OK
{
"falemais-30": 317.9,
"falemais-60": 261.8,
"falemais-120": 149.6,
"no-plan": 340
}
Exemplo de requisição:
- GET http://localhost/plans
- Accept: application/json
- Content-Type: application/json
Exemplo de resposta:
- 200 OK
{
"data": [
{
"id": "falemais-30",
"name": "FaleMais 30",
"timeInMinutes": 30,
"additionalMinuteRate": 0.1
},
{
"id": "falemais-60",
"name": "FaleMais 60",
"timeInMinutes": 60,
"additionalMinuteRate": 0.1
},
{
"id": "falemais-120",
"name": "FaleMais 120",
"timeInMinutes": 120,
"additionalMinuteRate": 0.1
}
],
"total": 3
}
Exemplo de requisição:
- GET http://localhost/area-codes
- Accept: application/json
- Content-Type: application/json
Exemplo de resposta:
- 200 OK
{
"data": [
{
"code": 11,
"name": "São Paulo"
},
{
"code": 16,
"name": "Ribeirão Preto"
},
{
"code": 17,
"name": "Mirassol"
},
{
"code": 18,
"name": "Tupi Paulista"
}
],
"total": 4
}
Exemplo de requisição:
- GET http://localhost/prices
- Accept: application/json
- Content-Type: application/json
Exemplo de resposta:
- 200 OK
{
"data": [
{
"origin": {
"code": 11,
"name": "São Paulo"
},
"destiny": {
"code": 16,
"name": "Ribeirão Preto"
},
"price": 1.9
},
{
"origin": {
"code": 16,
"name": "Ribeirão Preto"
},
"destiny": {
"code": 11,
"name": "São Paulo"
},
"price": 2.9
},
{
"origin": {
"code": 11,
"name": "São Paulo"
},
"destiny": {
"code": 17,
"name": "Mirassol"
},
"price": 1.7
},
{
"origin": {
"code": 17,
"name": "Mirassol"
},
"destiny": {
"code": 11,
"name": "São Paulo"
},
"price": 2.7
},
{
"origin": {
"code": 11,
"name": "São Paulo"
},
"destiny": {
"code": 18,
"name": "Tupi Paulista"
},
"price": 0.9
},
{
"origin": {
"code": 18,
"name": "Tupi Paulista"
},
"destiny": {
"code": 11,
"name": "São Paulo"
},
"price": 1.9
}
],
"total": 6
}