```sequence
Title: Actualise age CRON (Every day a 2a.m)
Lambda->MongoDb(Leads): Get all lead where dob is not null
MongoDb(Leads)->Lambda: List
Lambda->Lambda: Calculate actual age
Lambda->MongoDb(Leads): Update age if different
```
---
```sequence
Title: Add carrier CRON (Every day a 2a.m)
Lambda->MongoDb(Piles): Get leads where mccmnc is not null and does not have operator
MongoDb(Piles)->Lambda: List
Lambda-->MongoDb(Mccmnc): Get operator with mccmnc value
MongoDb(Mccmnc)-->Lambda: Operator
Lambda->MongoDb(Piles): Add operator
Lambda->MongoDb(Leads): Add operator
```
---
```sequence
Title: Add end time drop CRON (Every minute)
Lambda->MongoDb(Drops): Get drops not finish
MongoDb(Drops)->Lambda: List
Lambda-->MongoDb(Piles): Get total sms not send
MongoDb(Piles)-->Lambda: Total
Lambda->MongoDb(Drops): Add actual timestamp when total not send is null
```
---
```sequence
Title: Transmite receive (Every minute)
Lambda->MongoDb(Piles): Get leads where sms is send and receiveTransmite value = false
Lambda->MongoDb(Campaigns): Get campaign used for sending
MongoDb(Campaigns)->Lambda: campaign
Lambda->MongoDb(Drops): Get drops used for sending
MongoDb(Drops)->Lambda: drop
Lambda->MongoDb(Leads): Update campaigns list received
Lambda->MongoDb(Leads): Update drops list received
```
---
```sequence
Title: Refresh content list (every minute)
Lambda->MongoDb(Lists): Get all lists
Lambda->MongoDb(Countries): Get all countries
Lambda-->Filter: Create filter per lists and countries
Filter-->Lambda: Json filter
Lambda->MongoDb(Lists): Update total leads matching
```
---
```sequence
Title: Remove imported file (every day at 2 a.m)
Lambda->MongoDb(FileLeads): Remove all files not imported
```
---
```sequence
Title: Import leads with CSV / XLSX file (every minute)
Lambda->MongoDb(FileLeads): Get one file not imported
MongoDb(FileLeads)->Lambda: file
Lambda-->AWS(S3): Get file
AWS(S3)-->Lambda: file, read and created lead object
Lambda->MongoDb(Leads): Save lead
```
---
```sequence
Title: Test domain (every day between 1 a.m and 5 a.m)
Lambda->MongoDb(AllDomain): Get domain not tested
MongoDb(AllDomain)->Lambda: List
Lambda-->MongoDb(Domain): Add domain available
```
---
```sequence
Title: Send sms (every minute)
Lambda(Mother)->SQS: Create 2000 packages with 50 awaiting sms inside
SQS->Lambda(Daughter): Send multiple request
Lambda(Daughter)-->Provider: Send sms request to provider
Provider-->Lambda(Daughter): message_id
Lambda(Daughter)->MongoDb(Piles): Save message_id
```
---
```sequence
Title: AI Optimization (every minute)
Lambda->MongoDb(Drops): Get drops not ended and AI activated
MongoDb(Drops)->Lambda: List
Lambda-->MongoDb(Piles): Activate the next batch if the conditions entered are met
```
---
```sequence
Title: Update statistique (every minute)
Lambda->MongoDb(DropStats): Get all dropstats
MongoDb(DropStats)->Lambda: List
Lambda->Lambda: Calculate stat
Lambda->MongoDb(DropStats): Update stat
```
---
```sequence
Title: Add Receive Sms Campain And Drop (every minute)
Lambda->MongoDb(Piles): Get all piles elem not traited
MongoDb(Piles)->Lambda: List
Lambda->MongoDb(Leads): Get all leads associated
MongoDb(Leads)->Lambda: List
Lambda->Lambda: Update list
Lambda-->MongoDb(Leads): Update campain and drops list receive
Lambda-->MongoDb(Piles): update transmite value
```
---
```sequence
Title: Hosting
Domains->66.29.142.199: Unsubscribe
66.29.142.199->SmsGenius: Number to unsubscribe
Domains-->66.29.142.199: Landing
66.29.142.199-->SmsGenius: Clic Log
66.29.142.199-->Landing Page: Redirect to landing page
Landing Page-->SmsGenius: Conversion Log
```
Liste des services AWS utilisés :
- Route 53 for domain management
- Certificate Manager for domain certificate management
- VPC for private network
- EC2 for creating VPS
- Amazon DocumentDB for MongoDB database
- S3 for storing country photos and uploaded files
- Lambda for cron tasks
- EventBridge for triggering cron tasks
- AWS Auto Scaling for scaling plan and automatic VPS provisioning
- AWS Firewall Manager for firewall creation and management
- CloudWatch for logs
- AWS Budgets for budget management
- Support for support
- SQS for managing SMS sending queues
- IAM for permission management
- EventBridge for cron job scheduling