- Crear el archivo .env (colocar toas las envs que hay en el archivo .env.example)
- Primero se debe levantar el environment
- Aca corren migraciones y seeders si no hay nada en la DB (LA DB ya es una que esta en un cluster, se suminstrara la URI para observas los registros)
./start-environment.sh upb
- Y para tumbar el ambiente ejecute
./start-environment.sh down
Importante: Los seeders tendran fechas en las campañas viejas, esto para primero validar y ver que se realiza la validaicon de ACTIVACION de campaña
Si se quiere ya realizar el proceso, hay que actualizar la campaña, con fechas actuales
Ejemplo: Datos actuales (ir al cURL de actualización)
{
"startDate": "2024-09-15",
"endDate": "2024-09-30",
"bonusType": "double",
"bonusValue": 2.00
}
Acumular puntos
- POST /api/rewards
curl --location 'http://localhost:8888/api/rewards' \
--header 'Content-Type: application/json' \
--data '{
"userId": "79f1ed5d-fb02-480f-8430-caabf42ce630",
"branchId": "51968d08-9018-4a5c-94e6-9c7181359ef7",
"purchaseAmount": 20000
}'
Redimir puntos
- POST /api/rewards/redeem
curl --location 'http://localhost:8888/api/rewards/redeem' \
--header 'Content-Type: application/json' \
--data '{
"userId": "79f1ed5d-fb02-480f-8430-caabf42ce630",
"branchId": "51968d08-9018-4a5c-94e6-9c7181359ef7",
"rewardType": "points",
"rewardValue": 10000
}'
- GET /api/campaigns
curl --location 'http://localhost:8888/api/campaigns'
Obtener las campañas de una sucursal
- GET /api/campaigns?branchId={id}
curl --location 'http://localhost:8888/api/campaigns?branchId=51968d08-9018-4a5c-94e6-9c7181359ef7'
- PUT /api/campaigns/:campaignId
curl --location --request PUT 'http://localhost:8888/api/campaigns/bdbc9716-217b-427e-80d0-a1e5f09bd3c4' \
--header 'Content-Type: application/json' \
--data '{
"startDate": "2024-09-15",
"endDate": "2024-09-30",
"bonusType": "double",
"bonusValue": 2.00
}'
- Para correr las pruebas unitarias solo se debe ejecutar
make test
Esto correra los test, y la covertura y generara una ruta local para ver las coverturas
Aca se encuentran los endpoints de loyalty
sequenceDiagram
participant User
participant API
participant RewardsService
participant CampaignsRepository
participant RewardsRepository
participant PurchasesRepository
User->>+API: Request Accumulate Reward (userId, branchId, purchaseAmount)
API->>+RewardsService: AccumulateReward(data)
RewardsService->>+CampaignsRepository: FindOneByBranchId(branchId)
CampaignsRepository-->>-RewardsService: Return campaign details (if active)
alt Campaign Active
RewardsService->>RewardsService: Calculate reward based on campaign
else No Campaign
RewardsService->>RewardsService: Calculate reward based on default rule
end
RewardsService->>+RewardsRepository: CreateRewards(newRewardData)
RewardsRepository-->>-RewardsService: Reward created
RewardsService->>+PurchasesRepository: CreatePurchase(newPurchaseData)
PurchasesRepository-->>-RewardsService: Purchase created
RewardsService-->>-API: Return RewardsAccumulateResponse
API-->>-User: Send response (reward earned, campaign applied)
sequenceDiagram
participant User
participant API
participant CampaignService
participant CampaignRepository
User->>+API: Request Get Campaigns (branchId: optional)
API->>+CampaignService: GetCampaigns(branchId)
alt BranchId provided
CampaignService->>+CampaignRepository: FindCampaignsByBranchId(branchId)
CampaignRepository-->>-CampaignService: Return campaigns for branchId
else No BranchId provided
CampaignService->>+CampaignRepository: FindAllCampaigns()
CampaignRepository-->>-CampaignService: Return all campaigns
end
CampaignService-->>-API: Return campaigns (filtered by branchId or all)
API-->>-User: Send campaigns to user