Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 24
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
MetricKey
0.00% covered (danger)
0.00%
0 / 24
0.00% covered (danger)
0.00%
0 / 2
506
0.00% covered (danger)
0.00%
0 / 1
 label
0.00% covered (danger)
0.00%
0 / 18
0.00% covered (danger)
0.00%
0 / 1
306
 category
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
30
1<?php
2
3declare(strict_types=1);
4
5namespace ImovelZapAi\Analytics\Domain\Enums;
6
7enum MetricKey: string
8{
9    case PeopleOpportunitiesCreated = 'people_opportunities_created';
10    case DealsWon = 'deals_won';
11    case VolumeNegotiated = 'volume_negotiated';
12    case VisitsCreated = 'visits_created';
13    case VisitsConfirmed = 'visits_confirmed';
14    case VisitsCompleted = 'visits_completed';
15    case SignaturesRequested = 'signatures_requested';
16    case SignaturesCompleted = 'signatures_completed';
17    case PaymentsReceivedCount = 'payments_received_count';
18    case PaymentsReceivedAmount = 'payments_received_amount';
19    case CommissionsCalculated = 'commissions_calculated';
20    case DocumentsCreated = 'documents_created';
21    case DocumentsRejected = 'documents_rejected';
22    case PortalDocumentsUploaded = 'portal_documents_uploaded';
23    case WorkflowsExecuted = 'workflows_executed';
24    case PropertiesListedStub = 'properties_listed_stub';
25
26    public function label(): string
27    {
28        return match ($this) {
29            self::PeopleOpportunitiesCreated => 'Oportunidades criadas',
30            self::DealsWon => 'Oportunidades ganhas',
31            self::VolumeNegotiated => 'Volume negociado',
32            self::VisitsCreated => 'Visitas agendadas',
33            self::VisitsConfirmed => 'Visitas confirmadas',
34            self::VisitsCompleted => 'Visitas concluídas',
35            self::SignaturesRequested => 'Assinaturas solicitadas',
36            self::SignaturesCompleted => 'Assinaturas concluídas',
37            self::PaymentsReceivedCount => 'Pagamentos recebidos',
38            self::PaymentsReceivedAmount => 'Valor recebido',
39            self::CommissionsCalculated => 'Comissões calculadas',
40            self::DocumentsCreated => 'Documentos criados',
41            self::DocumentsRejected => 'Documentos recusados',
42            self::PortalDocumentsUploaded => 'Documentos no portal',
43            self::WorkflowsExecuted => 'Automações executadas',
44            self::PropertiesListedStub => 'Imóveis ativos (estimativa)',
45        };
46    }
47
48    public function category(): string
49    {
50        return match ($this) {
51            self::PeopleOpportunitiesCreated, self::DealsWon, self::VolumeNegotiated => 'comercial',
52            self::PropertiesListedStub => 'imoveis',
53            self::PaymentsReceivedCount, self::PaymentsReceivedAmount, self::CommissionsCalculated => 'financeiro',
54            default => 'operacional',
55        };
56    }
57}