├── .dockerignore
├── .editorconfig
├── .gitattributes
├── .github
├── CONTRIBUTING.md
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
└── PULL_REQUEST_TEMPLATE
├── .gitignore
├── .travis.yml
├── Build
├── MSBuild
│ ├── default.props
│ └── specs.props
├── appveyor.yml
├── build.cake
├── build.ps1
├── build.sh
├── clean.sh
├── docker_cloud
│ ├── new_build_num
│ └── pre_push
├── kill_all_dot_net.sh
├── tools
│ └── packages.config
└── travis_cake_image
│ └── Dockerfile
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── Codeathons
└── 20170929 Oslo
│ └── TechnicalIntro.pptx
├── Deploy
├── Compose
│ ├── config
│ │ ├── admin-event-horizons.json
│ │ ├── admin-resources.json
│ │ ├── alerts-event-horizons.json
│ │ ├── alerts-resources.json
│ │ ├── analytics-event-horizons.json
│ │ ├── analytics-resources.json
│ │ ├── apikeyToTenant.json
│ │ ├── nginx-default.conf
│ │ ├── notificationgateway-event-horizons.json
│ │ ├── notificationgateway-resources.json
│ │ ├── reporting-event-horizons.json
│ │ ├── reporting-resources.json
│ │ ├── tenant-map.json
│ │ └── tenants.json
│ └── docker-compose.yml
├── K8S
│ ├── BoundedContexts
│ │ ├── ingress.yaml
│ │ ├── pods-admin.yaml
│ │ ├── pods-notification.yaml
│ │ ├── pods-reporting.yaml
│ │ ├── pods-usermanagement.yaml
│ │ ├── services.yaml
│ │ └── tenants.yaml
│ ├── Infrastructure
│ │ ├── database.yaml
│ │ ├── ingress.yaml
│ │ └── swagger.yaml
│ └── namespaces.yaml
└── Local
│ └── ReverseProxy
│ ├── main.js
│ └── package.json
├── Documentation
├── .gitignore
├── Architecture
│ ├── Diagrams.pptx
│ ├── apis.md
│ ├── at_a_glance.md
│ ├── bounded_contexts.md
│ ├── commands.md
│ ├── containers.md
│ ├── ddd.md
│ ├── dry.md
│ ├── event_store.md
│ ├── events.md
│ ├── frontend.md
│ ├── fundamentals.md
│ ├── glossary.md
│ ├── high_cohesion.md
│ ├── identity_and_access.md
│ ├── images
│ │ ├── at_a_glance.png
│ │ ├── cqrs.png
│ │ ├── offline_syncing.png
│ │ └── top_level.png
│ ├── index.md
│ ├── inversion_of_control.md
│ ├── logging.md
│ ├── offline_sync.md
│ ├── persistence.md
│ ├── principles.md
│ └── sms_gateway.md
├── Continuous Integration
│ └── overview.md
├── Contribution
│ ├── copyright_header.md
│ ├── documentation.md
│ ├── editor.md
│ ├── images
│ │ ├── issues_add_note.png
│ │ ├── issues_backlog_new.png
│ │ ├── issues_convert_note_to_issue.png
│ │ ├── issues_converted_issue.png
│ │ ├── issues_issue_details.png
│ │ └── issues_note_to_issue_details.png
│ ├── issues.md
│ ├── product_owners.md
│ ├── runtime_exceptions.md
│ └── toc.yml
├── Deployment
│ ├── build.md
│ ├── container_registry.md
│ ├── helm.md
│ ├── release_management.md
│ └── versioning.md
├── Projects
│ ├── Admin
│ │ ├── Commands
│ │ │ ├── ChangeAreasAndDataVerifiers.md
│ │ │ ├── ChangeProjectDataOwner.md
│ │ │ ├── CreateHealthRisk.md
│ │ │ ├── CreateProject.md
│ │ │ ├── DefineHealthRisksForProject.md
│ │ │ └── SetSmsReportingStructure.md
│ │ ├── Events
│ │ │ ├── HealthRiskCreated.md
│ │ │ ├── HealthRiskUpdated.md
│ │ │ ├── ProjectAreasChanged.md
│ │ │ ├── ProjectCreated.md
│ │ │ ├── ProjectDataOwnerChanged.md
│ │ │ ├── ProjectHealthRisksChanged.md
│ │ │ └── ProjectSmsReportingStructureChanged.md
│ │ ├── Processes
│ │ │ ├── DefiningHealthRisks.md
│ │ │ └── DefiningProject.md
│ │ ├── ReadModels
│ │ │ ├── HealthRisk.md
│ │ │ └── Project.md
│ │ ├── assets
│ │ │ ├── physical-view.png
│ │ │ ├── reporting-feedback.png
│ │ │ ├── scenarios.png
│ │ │ └── system-context.png
│ │ └── index.md
│ ├── Alerts
│ │ └── index.md
│ ├── Analytics
│ │ ├── Web Mockup
│ │ │ ├── .editorconfig
│ │ │ ├── .gitattributes
│ │ │ ├── .gitignore
│ │ │ ├── 404.html
│ │ │ ├── ageandsexdistributionoverdifferenttimeframes.html
│ │ │ ├── barchartsbydistrict.html
│ │ │ ├── browserconfig.xml
│ │ │ ├── css
│ │ │ │ ├── Ageandsexdistributionoverdifferenttimeframes.css
│ │ │ │ ├── Barchartsbydistrict.css
│ │ │ │ ├── DistrictPersonreportingfunnelplotA.css
│ │ │ │ ├── DistrictPersonreportingfunnelplotB.css
│ │ │ │ ├── Epicurvebyday.css
│ │ │ │ ├── Epicurvebydaydodgedbyage.css
│ │ │ │ ├── Epicurvebyweek.css
│ │ │ │ ├── Epicurvebyweekdodgedbyage.css
│ │ │ │ ├── Mapbygeographicalarea.css
│ │ │ │ ├── Weeklyepicurvesbyagesex.css
│ │ │ │ ├── Weeklyepicurvesbygeographicalarea.css
│ │ │ │ ├── font-face.css
│ │ │ │ ├── main.css
│ │ │ │ ├── normalize.css
│ │ │ │ └── theme.css
│ │ │ ├── districtpersonreportingfunnelplota.html
│ │ │ ├── districtpersonreportingfunnelplotb.html
│ │ │ ├── epicurvebyday.html
│ │ │ ├── epicurvebydaydodgedbyage.html
│ │ │ ├── epicurvebyweek.html
│ │ │ ├── epicurvebyweekdodgedbyage.html
│ │ │ ├── favicon.ico
│ │ │ ├── humans.txt
│ │ │ ├── icon.png
│ │ │ ├── images
│ │ │ │ └── icon
│ │ │ │ │ ├── rodekors.jpg
│ │ │ │ │ └── rodekors.png
│ │ │ ├── index.html
│ │ │ ├── js
│ │ │ │ ├── Ageandsexdistributionoverdifferenttimeframes.js
│ │ │ │ ├── Barchartsbydistrict.js
│ │ │ │ ├── DistrictPersonreportingfunnelplotA.js
│ │ │ │ ├── DistrictPersonreportingfunnelplotB.js
│ │ │ │ ├── Epicurvebyday.js
│ │ │ │ ├── Epicurvebydaydodgedbyage.js
│ │ │ │ ├── Epicurvebyweek.js
│ │ │ │ ├── Epicurvebyweekdodgedbyage.js
│ │ │ │ ├── Mapbygeographicalarea.js
│ │ │ │ ├── Weeklyepicurvesbyagesex.js
│ │ │ │ ├── Weeklyepicurvesbygeographicalarea.js
│ │ │ │ ├── commonData.js
│ │ │ │ ├── custom.js
│ │ │ │ ├── fakedata
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── data
│ │ │ │ │ │ ├── casereports-2018-September-28 (1).xlsx
│ │ │ │ │ │ ├── datacollectors-2018-September-28 (1).xlsx
│ │ │ │ │ │ ├── gadm36_NOR_1_sp.rds
│ │ │ │ │ │ ├── gadm36_NOR_2_sf.rds
│ │ │ │ │ │ ├── gadm36_NOR_2_sp.rds
│ │ │ │ │ │ └── old_gadm36_NOR_1_sp.rds
│ │ │ │ │ ├── json
│ │ │ │ │ │ ├── epicurve-by-day.json
│ │ │ │ │ │ └── epicurve-by-week.json
│ │ │ │ │ ├── project.Rproj
│ │ │ │ │ ├── report.Rmd
│ │ │ │ │ ├── report.md
│ │ │ │ │ └── report_files
│ │ │ │ │ │ └── figure-markdown_strict
│ │ │ │ │ │ ├── unnamed-chunk-1-1.png
│ │ │ │ │ │ ├── unnamed-chunk-10-1.png
│ │ │ │ │ │ ├── unnamed-chunk-11-1.png
│ │ │ │ │ │ ├── unnamed-chunk-2-1.png
│ │ │ │ │ │ ├── unnamed-chunk-3-1.png
│ │ │ │ │ │ ├── unnamed-chunk-4-1.png
│ │ │ │ │ │ ├── unnamed-chunk-5-1.png
│ │ │ │ │ │ ├── unnamed-chunk-6-1.png
│ │ │ │ │ │ ├── unnamed-chunk-7-1.png
│ │ │ │ │ │ ├── unnamed-chunk-8-1.png
│ │ │ │ │ │ └── unnamed-chunk-9-1.png
│ │ │ │ ├── fakejson
│ │ │ │ │ ├── epicurve-by-day.json
│ │ │ │ │ └── epicurve-by-week.json
│ │ │ │ ├── fakejsonGlobal
│ │ │ │ │ ├── epicurve-by-day.json
│ │ │ │ │ └── epicurve-by-week.json
│ │ │ │ ├── graph1
│ │ │ │ │ ├── Epicurvebyday.js
│ │ │ │ │ └── Epicurvebyweek.js
│ │ │ │ ├── graph2
│ │ │ │ │ └── Epicurvebyday.js
│ │ │ │ ├── graph3
│ │ │ │ │ └── Epicurvebyday.js
│ │ │ │ ├── graph4
│ │ │ │ │ └── Epicurvebyday.js
│ │ │ │ ├── graph5
│ │ │ │ │ └── Epicurvebyday.js
│ │ │ │ ├── main.js
│ │ │ │ └── plugins.js
│ │ │ ├── mapbygeographicalarea.html
│ │ │ ├── mapdata.csv
│ │ │ ├── mapdata.json
│ │ │ ├── page1.html
│ │ │ ├── page1
│ │ │ │ ├── Epicurvebyweek_1.js
│ │ │ │ ├── Epicurvebyweek_2.js
│ │ │ │ ├── Epicurvebyweek_3.js
│ │ │ │ ├── Epicurvebyweek_4.js
│ │ │ │ ├── age.js
│ │ │ │ └── reports.js
│ │ │ ├── page2.html
│ │ │ ├── page4.html
│ │ │ ├── robots.txt
│ │ │ ├── site.webmanifest
│ │ │ ├── test.html
│ │ │ ├── tile-wide.png
│ │ │ ├── tile.png
│ │ │ ├── vendor
│ │ │ │ ├── animsition
│ │ │ │ │ ├── animsition.min.css
│ │ │ │ │ └── animsition.min.js
│ │ │ │ ├── bootstrap-4.1
│ │ │ │ │ ├── bootstrap.min.css
│ │ │ │ │ ├── bootstrap.min.js
│ │ │ │ │ └── popper.min.js
│ │ │ │ ├── bootstrap-progressbar
│ │ │ │ │ ├── bootstrap-progressbar-3.3.4.min.css
│ │ │ │ │ └── bootstrap-progressbar.min.js
│ │ │ │ ├── chartjs
│ │ │ │ │ └── Chart.bundle.min.js
│ │ │ │ ├── circle-progress
│ │ │ │ │ ├── circle-progress.js
│ │ │ │ │ └── circle-progress.min.js
│ │ │ │ ├── countdown
│ │ │ │ │ ├── countdowntime.js
│ │ │ │ │ ├── jquery.countdown.min.js
│ │ │ │ │ ├── moment-timezone-with-data.min.js
│ │ │ │ │ ├── moment-timezone.min.js
│ │ │ │ │ └── moment.min.js
│ │ │ │ ├── counter-up
│ │ │ │ │ ├── jquery.counterup.min.js
│ │ │ │ │ ├── jquery.waypoints.min.js
│ │ │ │ │ └── waypoints.min.js
│ │ │ │ ├── css-hamburgers
│ │ │ │ │ ├── hamburgers.css
│ │ │ │ │ └── hamburgers.min.css
│ │ │ │ ├── font-awesome-4.7
│ │ │ │ │ ├── HELP-US-OUT.txt
│ │ │ │ │ ├── css
│ │ │ │ │ │ ├── font-awesome.css
│ │ │ │ │ │ └── font-awesome.min.css
│ │ │ │ │ └── fonts
│ │ │ │ │ │ ├── FontAwesome.otf
│ │ │ │ │ │ ├── fontawesome-webfont.eot
│ │ │ │ │ │ ├── fontawesome-webfont.svg
│ │ │ │ │ │ ├── fontawesome-webfont.ttf
│ │ │ │ │ │ ├── fontawesome-webfont.woff
│ │ │ │ │ │ └── fontawesome-webfont.woff2
│ │ │ │ ├── font-awesome-5
│ │ │ │ │ ├── css
│ │ │ │ │ │ └── fontawesome-all.min.css
│ │ │ │ │ └── webfonts
│ │ │ │ │ │ ├── fa-brands-400.eot
│ │ │ │ │ │ ├── fa-brands-400.svg
│ │ │ │ │ │ ├── fa-brands-400.ttf
│ │ │ │ │ │ ├── fa-brands-400.woff
│ │ │ │ │ │ ├── fa-brands-400.woff2
│ │ │ │ │ │ ├── fa-regular-400.eot
│ │ │ │ │ │ ├── fa-regular-400.svg
│ │ │ │ │ │ ├── fa-regular-400.ttf
│ │ │ │ │ │ ├── fa-regular-400.woff
│ │ │ │ │ │ ├── fa-regular-400.woff2
│ │ │ │ │ │ ├── fa-solid-900.eot
│ │ │ │ │ │ ├── fa-solid-900.svg
│ │ │ │ │ │ ├── fa-solid-900.ttf
│ │ │ │ │ │ ├── fa-solid-900.woff
│ │ │ │ │ │ └── fa-solid-900.woff2
│ │ │ │ ├── jquery-3.2.1.min.js
│ │ │ │ ├── jquery-ui.min.js
│ │ │ │ ├── lightbox2
│ │ │ │ │ ├── dist
│ │ │ │ │ │ ├── css
│ │ │ │ │ │ │ └── lightbox.css
│ │ │ │ │ │ ├── images
│ │ │ │ │ │ │ ├── close.png
│ │ │ │ │ │ │ ├── loading.gif
│ │ │ │ │ │ │ ├── next.png
│ │ │ │ │ │ │ └── prev.png
│ │ │ │ │ │ └── js
│ │ │ │ │ │ │ ├── lightbox-plus-jquery.js
│ │ │ │ │ │ │ ├── lightbox-plus-jquery.min.js
│ │ │ │ │ │ │ ├── lightbox-plus-jquery.min.map
│ │ │ │ │ │ │ ├── lightbox.js
│ │ │ │ │ │ │ ├── lightbox.min.js
│ │ │ │ │ │ │ └── lightbox.min.map
│ │ │ │ │ └── src
│ │ │ │ │ │ ├── css
│ │ │ │ │ │ └── lightbox.css
│ │ │ │ │ │ ├── images
│ │ │ │ │ │ ├── close.png
│ │ │ │ │ │ ├── loading.gif
│ │ │ │ │ │ ├── next.png
│ │ │ │ │ │ └── prev.png
│ │ │ │ │ │ └── js
│ │ │ │ │ │ └── lightbox.js
│ │ │ │ ├── mdi-font
│ │ │ │ │ ├── css
│ │ │ │ │ │ ├── material-design-iconic-font.css
│ │ │ │ │ │ └── material-design-iconic-font.min.css
│ │ │ │ │ └── fonts
│ │ │ │ │ │ ├── Material-Design-Iconic-Font.eot
│ │ │ │ │ │ ├── Material-Design-Iconic-Font.svg
│ │ │ │ │ │ ├── Material-Design-Iconic-Font.ttf
│ │ │ │ │ │ ├── Material-Design-Iconic-Font.woff
│ │ │ │ │ │ └── Material-Design-Iconic-Font.woff2
│ │ │ │ ├── perfect-scrollbar
│ │ │ │ │ ├── perfect-scrollbar.css
│ │ │ │ │ ├── perfect-scrollbar.js
│ │ │ │ │ └── perfect-scrollbar.min.js
│ │ │ │ ├── progressbar
│ │ │ │ │ ├── progressbar.js
│ │ │ │ │ └── progressbar.min.js
│ │ │ │ ├── select2
│ │ │ │ │ ├── select2.min.css
│ │ │ │ │ └── select2.min.js
│ │ │ │ ├── slick
│ │ │ │ │ ├── ajax-loader.gif
│ │ │ │ │ ├── config.rb
│ │ │ │ │ ├── fonts
│ │ │ │ │ │ ├── slick.eot
│ │ │ │ │ │ ├── slick.svg
│ │ │ │ │ │ ├── slick.ttf
│ │ │ │ │ │ └── slick.woff
│ │ │ │ │ ├── slick-theme.css
│ │ │ │ │ ├── slick-theme.less
│ │ │ │ │ ├── slick-theme.scss
│ │ │ │ │ ├── slick.css
│ │ │ │ │ ├── slick.js
│ │ │ │ │ ├── slick.less
│ │ │ │ │ ├── slick.min.js
│ │ │ │ │ └── slick.scss
│ │ │ │ ├── smk-accordion
│ │ │ │ │ ├── accordion.css
│ │ │ │ │ ├── accordion.js
│ │ │ │ │ └── accordion.min.js
│ │ │ │ ├── sweetalert
│ │ │ │ │ └── sweetalert.min.js
│ │ │ │ ├── vector-map
│ │ │ │ │ ├── jquery.vmap.brazil.js
│ │ │ │ │ ├── jquery.vmap.europe.js
│ │ │ │ │ ├── jquery.vmap.france.js
│ │ │ │ │ ├── jquery.vmap.germany.js
│ │ │ │ │ ├── jquery.vmap.js
│ │ │ │ │ ├── jquery.vmap.min.js
│ │ │ │ │ ├── jquery.vmap.russia.js
│ │ │ │ │ ├── jquery.vmap.sampledata.js
│ │ │ │ │ ├── jquery.vmap.usa.js
│ │ │ │ │ ├── jquery.vmap.world.js
│ │ │ │ │ └── jqvmap.min.css
│ │ │ │ └── wow
│ │ │ │ │ ├── animate.css
│ │ │ │ │ └── wow.min.js
│ │ │ ├── weeklyepicurvesbyagesex.html
│ │ │ └── weeklyepicurvesbygeographicalarea.html
│ │ ├── archive.md
│ │ ├── archive
│ │ │ ├── fakedata
│ │ │ │ ├── .gitignore
│ │ │ │ ├── data
│ │ │ │ │ ├── NOR_adm1.rds
│ │ │ │ │ ├── casereports-2018-September-28 (1).xlsx
│ │ │ │ │ ├── datacollectors-2018-September-28 (1).xlsx
│ │ │ │ │ ├── gadm36_NOR_1_sp.rds
│ │ │ │ │ ├── gadm36_NOR_2_sf.rds
│ │ │ │ │ ├── gadm36_NOR_2_sp.rds
│ │ │ │ │ └── old_gadm36_NOR_1_sp.rds
│ │ │ │ ├── json
│ │ │ │ │ ├── epicurve-by-day.json
│ │ │ │ │ └── epicurve-by-week.json
│ │ │ │ ├── report.md
│ │ │ │ └── report_files
│ │ │ │ │ └── figure-markdown_strict
│ │ │ │ │ ├── unnamed-chunk-1-1.png
│ │ │ │ │ ├── unnamed-chunk-10-1.png
│ │ │ │ │ ├── unnamed-chunk-11-1.png
│ │ │ │ │ ├── unnamed-chunk-2-1.png
│ │ │ │ │ ├── unnamed-chunk-3-1.png
│ │ │ │ │ ├── unnamed-chunk-4-1.png
│ │ │ │ │ ├── unnamed-chunk-5-1.png
│ │ │ │ │ ├── unnamed-chunk-6-1.png
│ │ │ │ │ ├── unnamed-chunk-7-1.png
│ │ │ │ │ ├── unnamed-chunk-8-1.png
│ │ │ │ │ └── unnamed-chunk-9-1.png
│ │ │ └── fakejson
│ │ │ │ ├── epicurve-by-day.json
│ │ │ │ └── epicurve-by-week.json
│ │ ├── graphs.md
│ │ ├── images
│ │ │ ├── archive
│ │ │ │ └── volunteer_individ.jpg
│ │ │ ├── graphs
│ │ │ │ ├── unnamed-chunk-10-1.png
│ │ │ │ ├── unnamed-chunk-11-1.png
│ │ │ │ ├── unnamed-chunk-11-2.png
│ │ │ │ ├── unnamed-chunk-12-1.png
│ │ │ │ ├── unnamed-chunk-13-1.png
│ │ │ │ ├── unnamed-chunk-14-1.png
│ │ │ │ ├── unnamed-chunk-15-1.png
│ │ │ │ ├── unnamed-chunk-2-1.png
│ │ │ │ ├── unnamed-chunk-3-1.png
│ │ │ │ ├── unnamed-chunk-4-1.png
│ │ │ │ ├── unnamed-chunk-5-1.png
│ │ │ │ ├── unnamed-chunk-6-1.png
│ │ │ │ ├── unnamed-chunk-7-1.png
│ │ │ │ ├── unnamed-chunk-8-1.png
│ │ │ │ └── unnamed-chunk-9-1.png
│ │ │ └── index
│ │ │ │ ├── Scanned-Document-1.png
│ │ │ │ ├── Scanned-Document-2.png
│ │ │ │ ├── Scanned-Document-3.png
│ │ │ │ ├── Scanned-Document-4.png
│ │ │ │ ├── Scanned-Document-5.png
│ │ │ │ ├── unnamed-chunk-2-1.png
│ │ │ │ ├── unnamed-chunk-3-1.png
│ │ │ │ └── unnamed-chunk-4-1.png
│ │ └── index.md
│ ├── Core
│ │ ├── events.md
│ │ └── index.md
│ ├── Portal
│ │ └── index.md
│ ├── Reporting
│ │ ├── 2017-09-29 14-31 page 1.jpg
│ │ ├── Detailed_Alert_Map.jpg
│ │ ├── Detailed_Alert_Timeline.jpg
│ │ └── index.md
│ ├── Sms
│ │ ├── Architecture_Duplex.png
│ │ ├── Architecture_Incoming.png
│ │ ├── Flow_Duplex.png
│ │ ├── Flow_Incoming.png
│ │ ├── Postman_Eagle_Sample.png
│ │ ├── Postman_Sample.png
│ │ └── index.md
│ ├── User Management
│ │ └── index.md
│ ├── Volunteer Reporting
│ │ ├── Processes
│ │ │ └── ReceivingTextMessage.md
│ │ ├── data collector workflow 2017.09.30.jpg
│ │ ├── data_flow.png
│ │ ├── index.md
│ │ └── userstories
│ │ │ ├── Known Data collector sends in valid aggregate case report.md
│ │ │ └── Known Data collector sends in valid single case report.md
│ ├── actors.md
│ └── index.md
├── Requirements
│ ├── CBS Functional requirements specification.pdf
│ └── March 2017 - CBS v2 Diagrams.pdf
├── docfx.json
├── index.md
├── readme.md
└── toc.yml
├── LICENSE
├── Logs
└── FieldTest_April2018
│ └── VolunteerReporting
│ └── logs.txt
├── Meetings
├── 20170911 - Core Team - Planning
│ ├── IMG_2161.JPG
│ ├── IMG_2162.JPG
│ ├── IMG_2163.JPG
│ ├── IMG_2164.JPG
│ ├── IMG_2165.JPG
│ ├── IMG_2166.JPG
│ ├── IMG_2167.JPG
│ ├── IMG_2168.JPG
│ ├── IMG_2169.JPG
│ ├── IMG_2170.JPG
│ ├── IMG_2171.JPG
│ ├── IMG_2172.JPG
│ ├── IMG_2173.JPG
│ └── IMG_2174.JPG
├── 20170918 - Core Team sync.md
├── 20171010 - Core Team sync.md
├── 20171025 - Community standup.md
├── 20171118 - Community standup.md
├── 20180815 - Core Team sync.md
├── 20180912 - Core Team Sync
├── 20180919 - Core Team sync.md
├── 20181003 - Core Team sync.md
├── 20181017 - Core Team sync.md
├── 20181031 - Core Team sync.md
├── 20181129 - Core Team sync.md
└── 20190115 - Core Team sync.md
├── NuGet.Config
├── README.md
├── Source
├── .dockerignore
├── Admin
│ ├── Admin.sln
│ ├── Concepts
│ │ ├── Concepts.csproj
│ │ ├── HealthRisks
│ │ │ ├── CaseDefinition.cs
│ │ │ ├── HealthRiskId.cs
│ │ │ ├── HealthRiskName.cs
│ │ │ ├── HealthRiskNumber.cs
│ │ │ ├── KeyMessage.cs
│ │ │ ├── KeyMessageId.cs
│ │ │ └── Language.cs
│ │ ├── NationalSocieties
│ │ │ ├── NationalSocietyId.cs
│ │ │ └── NationalSocietyName.cs
│ │ ├── Projects
│ │ │ ├── ProjectId.cs
│ │ │ ├── ProjectName.cs
│ │ │ └── ProjectSurveillanceContext.cs
│ │ └── Users
│ │ │ └── UserId.cs
│ ├── Core
│ │ ├── .dolittle
│ │ │ ├── artifacts.json
│ │ │ ├── event-horizons.json
│ │ │ ├── resources.json
│ │ │ ├── server.json
│ │ │ ├── tenant-map.json
│ │ │ ├── tenants.json
│ │ │ └── topology.json
│ │ ├── Core.csproj
│ │ ├── Dockerfile
│ │ ├── LoggingExtensions.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── SecurityExtensions.cs
│ │ ├── Startup.cs
│ │ └── hooks
│ │ │ └── pre_push
│ ├── Dockerfile
│ ├── Domain
│ │ ├── Admin
│ │ │ ├── AddDataVerifier.cs
│ │ │ ├── AddDataVerifierInputValidator.cs
│ │ │ └── Rules.cs
│ │ ├── AutomaticReplyMessages
│ │ │ ├── Rules.cs
│ │ │ ├── UpdateReplyMessagesConfig.cs
│ │ │ └── UpdateReplyMessagesConfigInputValidator.cs
│ │ ├── Domain.csproj
│ │ ├── HealthRisks
│ │ │ ├── AddKeyMessageToHealthRisk.cs
│ │ │ ├── AddKeyMessageToHealthRiskInputInputValidator.cs
│ │ │ ├── AddProjectHealthRisk.cs
│ │ │ ├── AddProjectHealthRiskInputValidator.cs
│ │ │ ├── AddThresholdToHealthRisk.cs
│ │ │ ├── AddThresholdToHealthRiskInputValidator.cs
│ │ │ ├── AssociateHealthRiskWithProject.cs
│ │ │ ├── CreateHealthRisk.cs
│ │ │ ├── CreateHealthRiskInputValidator.cs
│ │ │ ├── DeleteHealthRisk.cs
│ │ │ ├── DeleteHealthRiskInputValidator.cs
│ │ │ ├── HealthRisk.cs
│ │ │ ├── HealthRiskCommandHandler.cs
│ │ │ ├── KeyMessagesCommandHandler.cs
│ │ │ ├── ModifyHealthRisInputValidator.cs
│ │ │ ├── ModifyHealthRisk.cs
│ │ │ ├── OverrideCaseDefinition.cs
│ │ │ ├── OverrideHealthRiskName.cs
│ │ │ ├── Rules.cs
│ │ │ ├── SetCaseDefinition.cs
│ │ │ └── SetHealthRiskName.cs
│ │ ├── NationalSocieties
│ │ │ ├── CreateNationalSociety.cs
│ │ │ ├── CreateNationalSocietyBusinessValidator.cs
│ │ │ ├── CreateNationalSocietyInputValidator.cs
│ │ │ ├── NationalSociety.cs
│ │ │ └── NationalSocietyCommandHandler.cs
│ │ ├── Projects
│ │ │ ├── CreateProject.cs
│ │ │ ├── CreateProjectInputValidator.cs
│ │ │ ├── Project.cs
│ │ │ ├── ProjectCommandHandler.cs
│ │ │ ├── Rules.cs
│ │ │ ├── UpdateProject.cs
│ │ │ ├── UpdateProjectHealthRiskThreshold.cs
│ │ │ ├── UpdateProjectHealthRiskThresholdValidator.cs
│ │ │ └── UpdateProjectValidator.cs
│ │ ├── Tests
│ │ │ ├── CreateHealthRiskTestData.cs
│ │ │ ├── CreateHealthRiskTestDataBusinessValidator.cs
│ │ │ ├── CreateHealthRiskTestDataInputValidator.cs
│ │ │ ├── CreateNationalSocietyTestData.cs
│ │ │ ├── CreateNationalSocietyTestDataBusinessValidator.cs
│ │ │ ├── CreateNationalSocietyTestDataInputValidator.cs
│ │ │ ├── CreateProjectTestData.cs
│ │ │ ├── CreateProjectTestDataBusinessValidator.cs
│ │ │ ├── CreateProjectTestDataInputValidator.cs
│ │ │ ├── CreateProjectsHealthRiskTestData.cs
│ │ │ ├── CreateProjectsHealthRiskTestDataBusinessValidator.cs
│ │ │ ├── CreateProjectsHealthRiskTestDataInputValidator.cs
│ │ │ ├── CreateUserTestData.cs
│ │ │ ├── CreateUserTestDataBusinessValidator.cs
│ │ │ ├── CreateUserTestDataInputValidator.cs
│ │ │ ├── Data
│ │ │ │ ├── HealthRiskWithKeyMessage.json
│ │ │ │ ├── HealthRisks.json
│ │ │ │ ├── NationalSocieties.json
│ │ │ │ ├── Projects.json
│ │ │ │ └── Users.json
│ │ │ └── TestDataCommandHandler.cs
│ │ └── Users
│ │ │ ├── CreateUser.cs
│ │ │ ├── CreateUserBusinessValidator.cs
│ │ │ ├── CreateUserInputValidator.cs
│ │ │ └── User.cs
│ ├── Events
│ │ ├── Admin
│ │ │ ├── DataVerifierAdded.cs
│ │ │ └── DataVerifierRemoved.cs
│ │ ├── AutomaticReplyMessages
│ │ │ ├── MessageUpdated.cs
│ │ │ └── ReplyMessageConfigUpdated.cs
│ │ ├── Events.csproj
│ │ ├── HealthRisks
│ │ │ ├── HealthRiskCaseDefinitionOverridden.cs
│ │ │ ├── HealthRiskCaseDefinitionSet.cs
│ │ │ ├── HealthRiskCreated.cs
│ │ │ ├── HealthRiskDeleted.cs
│ │ │ ├── HealthRiskModified.cs
│ │ │ ├── HealthRiskNameOverridden.cs
│ │ │ ├── HealthRiskNameSet.cs
│ │ │ ├── KeyMessageAddedToHealthRisk.cs
│ │ │ └── ThresholdAddedToHealthRIsk.cs
│ │ ├── NationalSocieties
│ │ │ └── NationalSocietyCreated.cs
│ │ ├── Projects
│ │ │ ├── ProjectCreated.cs
│ │ │ ├── ProjectDeleted.cs
│ │ │ ├── ProjectHealthRiskAdded.cs
│ │ │ ├── ProjectHealthRiskRemoved.cs
│ │ │ ├── ProjectHealthRiskThresholdUpdate.cs
│ │ │ └── ProjectUpdated.cs
│ │ └── Users
│ │ │ └── UserCreated.cs
│ ├── HealthRisks.txt
│ ├── NationalSociety.txt
│ ├── Read
│ │ ├── AutomaticReplyMessages
│ │ │ ├── AllReplyMessages.cs
│ │ │ ├── ReplyMessageById.cs
│ │ │ └── ReplyMessagesConfig.cs
│ │ ├── HealthRisks
│ │ │ ├── AllHealthRisks.cs
│ │ │ ├── HealthRisk.cs
│ │ │ ├── HealthRiskById.cs
│ │ │ ├── HealthRiskEventProcessors.cs
│ │ │ └── KeyMessageEventProcessors.cs
│ │ ├── NationalSocieties
│ │ │ ├── AllNationalSocieties.cs
│ │ │ ├── NationalSociety.cs
│ │ │ ├── NationalSocietyById.cs
│ │ │ └── NationalSocietyEventProcessors.cs
│ │ ├── Projects
│ │ │ ├── AllProjects.cs
│ │ │ ├── Project.cs
│ │ │ ├── ProjectById.cs
│ │ │ ├── ProjectEventProcessor.cs
│ │ │ ├── ProjectHealthRisk.cs
│ │ │ └── ProjectHealthRiskVersion.cs
│ │ ├── Read.csproj
│ │ └── Users
│ │ │ ├── AllUsers.cs
│ │ │ ├── User.cs
│ │ │ ├── UserById.cs
│ │ │ └── UserEventProcessor.cs
│ ├── Rules
│ │ ├── Admin
│ │ │ └── IsUserExisting.cs
│ │ ├── AutomaticReplyMessages
│ │ │ ├── IsTagValid.cs
│ │ │ └── IsTagsValid.cs
│ │ ├── HealthRisks
│ │ │ ├── IsHealthRiskExisting.cs
│ │ │ ├── IsHealthRiskUniqueWithinProject.cs
│ │ │ └── IsWithinNumberOfHealthRisksLimit.cs
│ │ ├── Projects
│ │ │ ├── IsProjectNameUnique.cs
│ │ │ └── IsUserNotVerifier.cs
│ │ └── Rules.csproj
│ ├── Web
│ │ ├── .vscode
│ │ │ ├── launch.json
│ │ │ └── settings.json
│ │ ├── Dockerfile
│ │ ├── angular.json
│ │ ├── browserslist
│ │ ├── hooks
│ │ │ └── pre_push
│ │ ├── nginx-default.conf
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── readme.md
│ │ ├── src
│ │ │ ├── app
│ │ │ │ ├── Admin
│ │ │ │ │ └── AddDataVerifier.js
│ │ │ │ ├── AutomaticReplyMessages
│ │ │ │ │ ├── AllReplyMessages.js
│ │ │ │ │ ├── ReplyMessageById.js
│ │ │ │ │ ├── ReplyMessagesConfig.js
│ │ │ │ │ └── UpdateReplyMessagesConfig.js
│ │ │ │ ├── HealthRisks
│ │ │ │ │ ├── AddKeyMessageToHealthRisk.js
│ │ │ │ │ ├── AddProjectHealthRisk.js
│ │ │ │ │ ├── AddThresholdToHealthRisk.js
│ │ │ │ │ ├── AllHealthRisks.js
│ │ │ │ │ ├── CreateHealthRisk.js
│ │ │ │ │ ├── DeleteHealthRisk.js
│ │ │ │ │ ├── HealthRisk.js
│ │ │ │ │ ├── HealthRiskById.js
│ │ │ │ │ ├── ModifyHealthRisk.js
│ │ │ │ │ ├── OverrideCaseDefinition.js
│ │ │ │ │ ├── OverrideHealthRiskName.js
│ │ │ │ │ ├── SetCaseDefinition.js
│ │ │ │ │ ├── SetHealthRiskName.js
│ │ │ │ │ ├── add-edit-healthRisk
│ │ │ │ │ │ ├── add-edit-healthRisk.component.html
│ │ │ │ │ │ ├── add-edit-healthRisk.component.scss
│ │ │ │ │ │ └── add-edit-healthRisk.component.ts
│ │ │ │ │ ├── delete-health-risk
│ │ │ │ │ │ ├── delete-healthrisk.component.html
│ │ │ │ │ │ └── delete-healthrisk.component.ts
│ │ │ │ │ ├── healthRisk-list
│ │ │ │ │ │ ├── healthRisk-list.component.html
│ │ │ │ │ │ ├── healthRisk-list.component.scss
│ │ │ │ │ │ └── healthRisk-list.component.ts
│ │ │ │ │ ├── healthRisks-routing.module.ts
│ │ │ │ │ └── healthRisks.module.ts
│ │ │ │ ├── NationalSocieties
│ │ │ │ │ ├── AllNationalSocieties.js
│ │ │ │ │ ├── CreateNationalSociety.js
│ │ │ │ │ ├── NationalSociety.js
│ │ │ │ │ └── NationalSocietyById.js
│ │ │ │ ├── Projects
│ │ │ │ │ ├── AllProjects.js
│ │ │ │ │ ├── CreateProject.js
│ │ │ │ │ ├── Project.js
│ │ │ │ │ ├── ProjectById.js
│ │ │ │ │ ├── ProjectHealthRiskVersion.js
│ │ │ │ │ ├── UpdateProject.js
│ │ │ │ │ ├── UpdateProjectHealthRiskThreshold.js
│ │ │ │ │ ├── add-project
│ │ │ │ │ │ ├── add-project.component.html
│ │ │ │ │ │ ├── add-project.component.scss
│ │ │ │ │ │ └── add-project.component.ts
│ │ │ │ │ ├── project-list
│ │ │ │ │ │ ├── project-list.component.html
│ │ │ │ │ │ ├── project-list.component.scss
│ │ │ │ │ │ └── project-list.component.ts
│ │ │ │ │ ├── projects-routing.module.ts
│ │ │ │ │ └── projects.module.ts
│ │ │ │ ├── Tests
│ │ │ │ │ ├── CreateHealthRiskTestData.js
│ │ │ │ │ ├── CreateNationalSocietyTestData.js
│ │ │ │ │ ├── CreateProjectTestData.js
│ │ │ │ │ ├── CreateProjectsHealthRiskTestData.js
│ │ │ │ │ └── CreateUserTestData.js
│ │ │ │ ├── Users
│ │ │ │ │ ├── AllUsers.js
│ │ │ │ │ ├── CreateUser.js
│ │ │ │ │ ├── User.js
│ │ │ │ │ └── UserById.js
│ │ │ │ ├── app.component.html
│ │ │ │ ├── app.component.ts
│ │ │ │ ├── app.module.ts
│ │ │ │ ├── core
│ │ │ │ │ ├── core.module.ts
│ │ │ │ │ └── module-import-guard.ts
│ │ │ │ ├── navigation
│ │ │ │ │ ├── navbar-host.component.html
│ │ │ │ │ └── navbar-host.component.ts
│ │ │ │ ├── services
│ │ │ │ │ └── app-insights-service.ts
│ │ │ │ └── shared
│ │ │ │ │ └── shared.module.ts
│ │ │ ├── assets
│ │ │ │ ├── .gitkeep
│ │ │ │ └── bootstrap
│ │ │ │ │ ├── _theme.scss
│ │ │ │ │ └── _variables.scss
│ │ │ ├── environments
│ │ │ │ ├── environment.prod.ts
│ │ │ │ ├── environment.test.ts
│ │ │ │ └── environment.ts
│ │ │ ├── index.html
│ │ │ ├── main.ts
│ │ │ ├── polyfills.ts
│ │ │ ├── styles.scss
│ │ │ ├── tsconfig.app.json
│ │ │ └── typings.d.ts
│ │ └── tsconfig.json
│ ├── bounded-context.json
│ └── readme.md
├── Alerts
│ ├── Alerts.sln
│ ├── Concepts
│ │ ├── AlertRules
│ │ │ ├── AlertRuleName.cs
│ │ │ ├── DistanceBetweenCasesInMeters.cs
│ │ │ ├── NumberOfCasesThreshold.cs
│ │ │ ├── RuleId.cs
│ │ │ └── ThresholdTimeframeInHours.cs
│ │ ├── Alerts
│ │ │ ├── AlertId.cs
│ │ │ ├── AlertNumber.cs
│ │ │ └── AlertStatus.cs
│ │ ├── CaseReports
│ │ │ ├── AgeGroup.cs
│ │ │ └── Sex.cs
│ │ ├── Concepts.csproj
│ │ ├── DataCollector
│ │ │ ├── DataCollectorId.cs
│ │ │ ├── DataCollectorIdValidator.cs
│ │ │ ├── Language.cs
│ │ │ ├── Location.cs
│ │ │ ├── PhoneNumber.cs
│ │ │ └── Sex.cs
│ │ ├── DataOwners
│ │ │ ├── DataOwnerId.cs
│ │ │ ├── Email.cs
│ │ │ └── NameOfDataOwner.cs
│ │ ├── HealthRisks
│ │ │ └── HealthRiskNumber.cs
│ │ └── Report
│ │ │ └── ReportId.cs
│ ├── Core
│ │ ├── .dolittle
│ │ │ ├── artifacts.json
│ │ │ ├── event-horizons.json
│ │ │ ├── resources.json
│ │ │ ├── server.json
│ │ │ ├── tenant-map.json
│ │ │ ├── tenants.json
│ │ │ └── topology.json
│ │ ├── Core.csproj
│ │ ├── Dockerfile
│ │ ├── LoggingExtensions.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── SecurityExtensions.cs
│ │ ├── Startup.cs
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ └── hooks
│ │ │ └── pre_push
│ ├── Dockerfile
│ ├── Domain.Specs
│ │ └── Domain.Specs.csproj
│ ├── Domain
│ │ ├── AlertRules
│ │ │ ├── AlertRule.cs
│ │ │ ├── AlertRuleCommandHandler.cs
│ │ │ ├── CreateAlertRule.cs
│ │ │ ├── CreateAlertRuleBusinessValidator.cs
│ │ │ ├── CreateAlertRuleInputValidator.cs
│ │ │ ├── DeleteAlertRule.cs
│ │ │ └── UpdateAlertRule.cs
│ │ ├── Alerts
│ │ │ ├── Alerts.cs
│ │ │ ├── CloseAlert.cs
│ │ │ ├── CloseAlertBusinessValidator.cs
│ │ │ ├── CloseAlertCommandHandler.cs
│ │ │ └── CloseAlertInputValidator.cs
│ │ ├── DataOwners
│ │ │ ├── DataOwner.cs
│ │ │ ├── RegisterDataOwner.cs
│ │ │ ├── RegisterOwnerBusinessValidator.cs
│ │ │ ├── RegisterOwnerCommandHandler.cs
│ │ │ └── RegisterOwnerInputValidator.cs
│ │ ├── Domain.csproj
│ │ └── Reports
│ │ │ ├── CaseReport.cs
│ │ │ ├── CaseReportData.cs
│ │ │ ├── CasesCommandHandler.cs
│ │ │ ├── ForcePublishNewCaseReport.cs
│ │ │ ├── ForcePublishNewCaseReportBusinessValidator.cs
│ │ │ └── ForcePublishNewCaseReportInputValidator.cs
│ ├── Events.Admin
│ │ ├── Events.Admin.csproj
│ │ └── HealthRisks
│ │ │ └── HealthRiskCreated.cs
│ ├── Events.Reporting
│ │ ├── CaseReports
│ │ │ └── CaseReportRecieved.cs
│ │ └── Events.Reporting.csproj
│ ├── Events
│ │ ├── AlertRules
│ │ │ ├── AlertRuleCreated.cs
│ │ │ ├── AlertRuleDeleted.cs
│ │ │ └── AlertRuleUpdated.cs
│ │ ├── Alerts
│ │ │ ├── AlertClosed.cs
│ │ │ ├── AlertOpened.cs
│ │ │ └── ReportAddedToAlert.cs
│ │ ├── DataCollectors
│ │ │ ├── Changing
│ │ │ │ ├── DataCollectorLocationChanged.cs
│ │ │ │ ├── DataCollectorPrefferedLanguageChanged.cs
│ │ │ │ ├── DataCollectorUserInformationChanged.cs
│ │ │ │ └── DataCollectorVillageChanged.cs
│ │ │ ├── PhoneNumber
│ │ │ │ ├── PhoneNumberAddedToDataCollector.cs
│ │ │ │ └── PhoneNumberRemovedFromDataCollector.cs
│ │ │ └── Registration
│ │ │ │ ├── DataCollectorRegistered.cs
│ │ │ │ └── DataCollectorRemoved.cs
│ │ ├── DataOwners
│ │ │ └── DataOwnerRegistered.cs
│ │ ├── Events.csproj
│ │ └── Reports
│ │ │ └── ReportRegistered.cs
│ ├── Policies.Specs
│ │ ├── Policies.Specs.csproj
│ │ └── for_AlertRules
│ │ │ ├── given
│ │ │ └── an_aggregate.cs
│ │ │ └── when_something_happens.cs
│ ├── Policies
│ │ ├── AlertRules
│ │ │ └── AlertRulesProcessor.cs
│ │ ├── Alerts
│ │ │ ├── AlertsEventProcessor.cs
│ │ │ ├── BasicMailSender.cs
│ │ │ ├── IMailSender.cs
│ │ │ └── MailSenderBinder.cs
│ │ ├── CaseReports
│ │ │ └── CaseReportsProcessor.cs
│ │ └── Policies.csproj
│ ├── README.md
│ ├── Read.Specs
│ │ └── Read.Specs.csproj
│ ├── Read
│ │ ├── AlertRules
│ │ │ ├── AlertRule.cs
│ │ │ ├── AlertRuleById.cs
│ │ │ ├── AlertRuleEventProcessor.cs
│ │ │ └── AllAlertRules.cs
│ │ ├── Alerts
│ │ │ ├── AlertEventProcesor.cs
│ │ │ ├── AlertOverview.cs
│ │ │ ├── AllAlertOverviews.cs
│ │ │ └── Open
│ │ │ │ ├── EventProcessor.cs
│ │ │ │ └── OpenAlert.cs
│ │ ├── DataCollectors
│ │ │ ├── AllDataCollectors.cs
│ │ │ ├── DataCollector.cs
│ │ │ ├── DataCollectorById.cs
│ │ │ └── DataCollectorEventProcessor.cs
│ │ ├── DataOwners
│ │ │ ├── DataOwner.cs
│ │ │ ├── DataOwnerProcessor.cs
│ │ │ └── GetDataOwner.cs
│ │ ├── Read.csproj
│ │ └── Reports
│ │ │ ├── AllReports.cs
│ │ │ ├── AvailableForRules
│ │ │ ├── AvailableReport.cs
│ │ │ └── EventProcessor.cs
│ │ │ ├── Report.cs
│ │ │ └── ReportEventProcessor.cs
│ ├── Rules.Specs
│ │ └── Rules.Specs.csproj
│ ├── Rules
│ │ └── Rules.csproj
│ ├── Web
│ │ ├── .babelrc
│ │ ├── Dockerfile
│ │ ├── Environments
│ │ │ ├── demo_api.env
│ │ │ ├── local_api.env
│ │ │ ├── mock_api.env
│ │ │ └── production.env
│ │ ├── Features
│ │ │ ├── AlertRules
│ │ │ │ ├── AlertRule.js
│ │ │ │ ├── AlertRuleById.js
│ │ │ │ ├── AllAlertRules.js
│ │ │ │ ├── CreateAlertRule.js
│ │ │ │ ├── DeleteAlertRule.js
│ │ │ │ └── UpdateAlertRule.js
│ │ │ ├── Alerts
│ │ │ │ ├── AlertOverview.js
│ │ │ │ ├── AllAlertOverviews.js
│ │ │ │ ├── CloseAlert.js
│ │ │ │ └── Open
│ │ │ │ │ └── OpenAlert.js
│ │ │ ├── DataCollectors
│ │ │ │ ├── AllDataCollectors.js
│ │ │ │ ├── DataCollector.js
│ │ │ │ └── DataCollectorById.js
│ │ │ ├── DataOwners
│ │ │ │ ├── DataOwner.js
│ │ │ │ ├── GetDataOwner.js
│ │ │ │ └── RegisterDataOwner.js
│ │ │ └── Reports
│ │ │ │ ├── AllReports.js
│ │ │ │ ├── AvailableForRules
│ │ │ │ └── AvailableReport.js
│ │ │ │ ├── ForcePublishNewCaseReport.js
│ │ │ │ └── Report.js
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── README.md
│ │ ├── assets
│ │ │ └── logo.png
│ │ ├── hooks
│ │ │ └── pre_push
│ │ ├── index.ejs
│ │ ├── jsconfig.json
│ │ ├── karma.conf.js
│ │ ├── mocking
│ │ │ ├── MockCommandCoordinator.js
│ │ │ └── MockQueryCoordinator.js
│ │ ├── nginx-default.conf
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── assets
│ │ │ │ ├── logo.png
│ │ │ │ └── main.scss
│ │ │ ├── components
│ │ │ │ ├── AddAlertRule.js
│ │ │ │ ├── AlertMenu.js
│ │ │ │ ├── AlertOverview.js
│ │ │ │ ├── AlertRule.js
│ │ │ │ ├── AlertRuleOverview.js
│ │ │ │ ├── App.js
│ │ │ │ ├── Navigation
│ │ │ │ │ ├── CBSNavigation.js
│ │ │ │ │ ├── cbs-navigation-v1.scss
│ │ │ │ │ └── cbs-navigation-v2.scss
│ │ │ │ └── RegisterDataOwner.js
│ │ │ ├── coordinators.js
│ │ │ ├── index.js
│ │ │ ├── reducer.js
│ │ │ ├── saga.js
│ │ │ └── store.js
│ │ ├── wallaby.js
│ │ ├── webpack.config.js
│ │ └── webpack.config.prod.js
│ └── bounded-context.json
├── Analytics
│ ├── .dockerignore
│ ├── Analytics.sln
│ ├── Concepts
│ │ ├── Alerts
│ │ │ ├── AlertId.cs
│ │ │ └── AlertRuleId.cs
│ │ ├── CaseReportId.cs
│ │ ├── Concepts.csproj
│ │ ├── Constants.cs
│ │ ├── DataCollectors
│ │ │ ├── DataCollectorId.cs
│ │ │ ├── DataCollectorName.cs
│ │ │ └── Sex.cs
│ │ ├── Day.cs
│ │ ├── DistrictId.cs
│ │ ├── DistrictName.cs
│ │ ├── HealthRisks
│ │ │ ├── HealthRiskId.cs
│ │ │ ├── HealthRiskName.cs
│ │ │ └── HealthRiskNumber.cs
│ │ ├── Location.cs
│ │ ├── NumberOfCasereports.cs
│ │ ├── NumberOfPeople.cs
│ │ ├── RegionId.cs
│ │ ├── RegionName.cs
│ │ ├── VillageId.cs
│ │ └── VillageName.cs
│ ├── Core
│ │ ├── .dolittle
│ │ │ ├── artifacts.json
│ │ │ ├── event-horizons.json
│ │ │ ├── resources.json
│ │ │ ├── server.json
│ │ │ ├── tenant-map.json
│ │ │ ├── tenants.json
│ │ │ └── topology.json
│ │ ├── Core.csproj
│ │ ├── LoggingExtensions.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── SecurityExtensions.cs
│ │ ├── Startup.cs
│ │ ├── appsettings.Development.json
│ │ └── appsettings.json
│ ├── Dockerfile
│ ├── Events.Admin
│ │ ├── Events.Admin.csproj
│ │ └── HealthRisks
│ │ │ ├── HealthRiskCreated.cs
│ │ │ ├── HealthRiskDeleted.cs
│ │ │ └── HealthRiskModified.cs
│ ├── Events.Alerts
│ │ ├── Alerts
│ │ │ ├── AlertOpened.cs
│ │ │ ├── AlertRuleCreated.cs
│ │ │ └── AlertRuleUpdated.cs
│ │ └── Events.Alerts.csproj
│ ├── Events.Reporting
│ │ ├── CaseReports
│ │ │ └── CaseReportReceived.cs
│ │ ├── DataCollectors
│ │ │ ├── DataCollectorBeganTraining.cs
│ │ │ ├── DataCollectorCompletedTraining.cs
│ │ │ ├── DataCollectorRegistered.cs
│ │ │ ├── DataCollectorVillageChanged.cs
│ │ │ └── LastActiveUpdated.cs
│ │ └── Events.Reporting.csproj
│ ├── Read
│ │ ├── Alerts
│ │ │ ├── Alert.cs
│ │ │ ├── AlertRule.cs
│ │ │ └── EventProcessor.cs
│ │ ├── CaseReports
│ │ │ ├── AllCaseReportsQuery.cs
│ │ │ ├── CaseReport.cs
│ │ │ ├── CaseReportEventProcessor.cs
│ │ │ ├── CaseReportsPerHealthRiskPerDay.cs
│ │ │ ├── CaseReportsPerHealthRiskPerDayQuery.cs
│ │ │ ├── CaseReportsPerRegionLast4Weeks.cs
│ │ │ ├── CaseReportsPerRegionLast4WeeksQuery.cs
│ │ │ ├── HealthRisksInRegionsLast4Weeks.cs
│ │ │ ├── RegionWithHealthRisk.cs
│ │ │ ├── TotalReports.cs
│ │ │ └── TotalReportsQuery.cs
│ │ ├── DataCollectors
│ │ │ ├── AllRegions.cs
│ │ │ ├── DataCollector.cs
│ │ │ ├── DataCollectorsQuery.cs
│ │ │ ├── District.cs
│ │ │ ├── EventProcessor.cs
│ │ │ ├── Region.cs
│ │ │ └── Village.cs
│ │ ├── HealthRisks
│ │ │ ├── AllHealthRisks.cs
│ │ │ ├── EventProcessor.cs
│ │ │ └── HealthRisk.cs
│ │ ├── Map
│ │ │ ├── CaseReportForMap.cs
│ │ │ ├── CaseReportsLast4Weeks.cs
│ │ │ ├── CaseReportsLast4WeeksQuery.cs
│ │ │ ├── CaseReportsLast7Days.cs
│ │ │ ├── CaseReportsLast7DaysQuery.cs
│ │ │ ├── CaseReportsPerHealthRisk.cs
│ │ │ └── MapProcessor.cs
│ │ ├── Overview
│ │ │ ├── Last4WeeksPerHealthRisk
│ │ │ │ ├── CaseReportsLast4WeeksForHealthRisk.cs
│ │ │ │ ├── CaseReportsLast4WeeksPerHealthRisk.cs
│ │ │ │ ├── CaseReportsLast4WeeksPerHealthRiskQuery.cs
│ │ │ │ └── EventProcessor.cs
│ │ │ └── LastWeekTotals
│ │ │ │ ├── CaseReportTotals.cs
│ │ │ │ ├── CaseReportTotalsQuery.cs
│ │ │ │ └── EventProcessor.cs
│ │ └── Read.csproj
│ ├── Web
│ │ ├── .babelrc
│ │ ├── Controllers
│ │ │ └── TestDataGeneratorController.cs
│ │ ├── DependenciesExtensions.cs
│ │ ├── Dockerfile
│ │ ├── Environments
│ │ │ ├── development.env
│ │ │ └── production.env
│ │ ├── README.md
│ │ ├── assets
│ │ │ ├── dolittle_logo_negative.svg
│ │ │ ├── dolittle_logo_positive.svg
│ │ │ ├── dolittle_symbol.svg
│ │ │ ├── images
│ │ │ │ └── rawpixel-653764-unsplash.jpg
│ │ │ └── splash.png
│ │ ├── dolittle.env
│ │ ├── index.ejs
│ │ ├── jsconfig.json
│ │ ├── karma.conf.js
│ │ ├── nginx-default.conf
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── run.js
│ │ ├── src
│ │ │ ├── Features
│ │ │ │ ├── Alerts
│ │ │ │ │ ├── Alert.js
│ │ │ │ │ └── AlertRule.js
│ │ │ │ ├── CaseReports
│ │ │ │ │ ├── AllCaseReportsQuery.js
│ │ │ │ │ ├── CaseReport.js
│ │ │ │ │ ├── CaseReportsPerHealthRiskPerDay.js
│ │ │ │ │ ├── CaseReportsPerHealthRiskPerDayQuery.js
│ │ │ │ │ ├── CaseReportsPerRegionLast4Weeks.js
│ │ │ │ │ ├── CaseReportsPerRegionLast4WeeksQuery.js
│ │ │ │ │ ├── HealthRisksInRegionsLast4Weeks.js
│ │ │ │ │ ├── HealthRisksInRegionsLast7Days.js
│ │ │ │ │ ├── RegionWithHealthRisk.js
│ │ │ │ │ ├── TotalReports.js
│ │ │ │ │ └── TotalReportsQuery.js
│ │ │ │ ├── DataCollectors
│ │ │ │ │ ├── AllRegions.js
│ │ │ │ │ ├── DataCollector.js
│ │ │ │ │ ├── DataCollectorsQuery.js
│ │ │ │ │ ├── District.js
│ │ │ │ │ ├── Region.js
│ │ │ │ │ └── Village.js
│ │ │ │ ├── HealthRisks
│ │ │ │ │ ├── AllHealthRisks.js
│ │ │ │ │ └── HealthRisk.js
│ │ │ │ ├── Map
│ │ │ │ │ ├── CaseReportsLast30Days.js
│ │ │ │ │ ├── CaseReportsLast30DaysQuery.js
│ │ │ │ │ ├── CaseReportsLast4Weeks.js
│ │ │ │ │ ├── CaseReportsLast4WeeksQuery.js
│ │ │ │ │ ├── CaseReportsLast7Days.js
│ │ │ │ │ └── CaseReportsLast7DaysQuery.js
│ │ │ │ └── Overview
│ │ │ │ │ ├── Last4WeeksPerHealthRisk
│ │ │ │ │ ├── CaseReportsLast4WeeksPerHealthRisk.js
│ │ │ │ │ └── CaseReportsLast4WeeksPerHealthRiskQuery.js
│ │ │ │ │ └── LastWeekTotals
│ │ │ │ │ ├── CaseReportTotals.js
│ │ │ │ │ └── CaseReportTotalsQuery.js
│ │ │ ├── actions
│ │ │ │ └── analysisactions.js
│ │ │ ├── assets
│ │ │ │ ├── colors.scss
│ │ │ │ ├── country-overview.scss
│ │ │ │ ├── inclusions.scss
│ │ │ │ ├── main.scss
│ │ │ │ ├── map.css
│ │ │ │ ├── react-leaflet.scss
│ │ │ │ ├── table.scss
│ │ │ │ └── vars.scss
│ │ │ ├── components
│ │ │ │ ├── CountryKeyFigures
│ │ │ │ │ └── CountryKeyFigures.js
│ │ │ │ ├── CountryOverview
│ │ │ │ │ └── CountryOverview.js
│ │ │ │ ├── Lightweight
│ │ │ │ │ └── LightweightAreaOverview.js
│ │ │ │ ├── Map.js
│ │ │ │ ├── MapOverview.js
│ │ │ │ ├── MapPieChart.js
│ │ │ │ ├── Reports
│ │ │ │ │ ├── ReportsPerHealthRiskPerDay.js
│ │ │ │ │ └── ReportsPerHealthRiskPerRegionLast4Weeks.js
│ │ │ │ ├── healthRisk
│ │ │ │ │ └── HealthRiskSelector.js
│ │ │ │ └── lastWeekTotals
│ │ │ │ │ └── LastWeekTotals.js
│ │ │ ├── exports.js
│ │ │ ├── index.js
│ │ │ ├── reducers
│ │ │ │ ├── analyticsReducer.js
│ │ │ │ └── index.js
│ │ │ └── utils
│ │ │ │ ├── dateUtils.js
│ │ │ │ ├── request.js
│ │ │ │ └── routes.js
│ │ ├── wallaby.js
│ │ └── webpack.config.js
│ └── bounded-context.json
├── Navigation
│ ├── Web.Angular
│ │ ├── nav-top-bar.component-v2.scss
│ │ ├── nav-top-bar.component.html
│ │ ├── nav-top-bar.component.scss
│ │ ├── nav-top-bar.component.ts
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ └── readme.md
│ └── Web.React
│ │ ├── .babelrc
│ │ ├── index.js
│ │ ├── lib
│ │ ├── cbs-navigation.scss
│ │ ├── colors.scss
│ │ ├── index.js
│ │ └── vars.scss
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ └── readme.md
├── NotificationGateway
│ ├── Concepts
│ │ ├── Concepts.csproj
│ │ ├── MessageId.cs
│ │ └── SMS
│ │ │ ├── Gateways
│ │ │ ├── ApiKey.cs
│ │ │ ├── MessageId.cs
│ │ │ ├── ModemNumber.cs
│ │ │ ├── Name.cs
│ │ │ ├── OID.cs
│ │ │ ├── SmsGatewayId.cs
│ │ │ └── SmsGatewayIdValidator.cs
│ │ │ ├── Message.cs
│ │ │ └── PhoneNumber.cs
│ ├── Core
│ │ ├── .dolittle
│ │ │ ├── artifacts.json
│ │ │ ├── event-horizons.json
│ │ │ ├── resources.json
│ │ │ ├── server.json
│ │ │ ├── tenant-map.json
│ │ │ ├── tenants.json
│ │ │ └── topology.json
│ │ ├── Core.csproj
│ │ ├── Dockerfile
│ │ ├── GatewayEndpoints
│ │ │ ├── GatewayEventProcessor.cs
│ │ │ ├── ITenantMapper.cs
│ │ │ ├── ReceiveMessageFromSMSGatewayFailed.cs
│ │ │ ├── SmsEagleController.cs
│ │ │ ├── SmsEagleSamples
│ │ │ │ ├── smseagle-1.sample
│ │ │ │ ├── smseagle-2.sample
│ │ │ │ └── smseagle-3.sample
│ │ │ ├── TenantMapper.cs
│ │ │ └── TenantMapperFileNotAccessible.cs
│ │ ├── LoggingExtensions.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── Security
│ │ │ ├── BypassingControllersManager.cs
│ │ │ ├── ICanBypassSecurity.cs
│ │ │ ├── ISecurityBypassingRequestManager.cs
│ │ │ └── SecurityBindings.cs
│ │ ├── SecurityExtensions.cs
│ │ ├── Startup.cs
│ │ ├── apikeyToTenant.json
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ └── hooks
│ │ │ └── pre_push
│ ├── Dockerfile
│ ├── Domain.Specs
│ │ └── Domain.Specs.csproj
│ ├── Domain
│ │ ├── Domain.csproj
│ │ └── SMS
│ │ │ ├── Gateways
│ │ │ ├── AssignPhoneNumberToSmsGateway.cs
│ │ │ ├── AssignPhoneNumberToSmsGatewayBusinessValidator.cs
│ │ │ ├── AssignPhoneNumberToSmsGatewayInputValidator.cs
│ │ │ ├── ReceiveMessageFromSMSGateway.cs
│ │ │ ├── ReceiveMessageFromSMSGatewayBusinessValidator.cs
│ │ │ ├── ReceiveMessageFromSMSGatewayInputValidator.cs
│ │ │ ├── RegisterSmsGateway.cs
│ │ │ ├── RegisterSmsGatewayBusinessValidator.cs
│ │ │ ├── RegisterSmsGatewayInputValidator.cs
│ │ │ ├── Rules.cs
│ │ │ ├── SmsGatewayAggregate.cs
│ │ │ └── SmsGatewayCommandHandlers.cs
│ │ │ ├── SimulateReceivedMessage.cs
│ │ │ ├── SimulateReceivedMessageBusinessValidator.cs
│ │ │ ├── SimulateReceivedMessageInputValidator.cs
│ │ │ ├── TextMessage.cs
│ │ │ └── TextMessageCommandHandler.cs
│ ├── Events
│ │ ├── Events.csproj
│ │ └── SMS
│ │ │ ├── Gateways
│ │ │ ├── SmsGatewayEnabled.cs
│ │ │ ├── SmsGatewayNumberAssigned.cs
│ │ │ └── SmsGatewayRegistered.cs
│ │ │ └── TextMessageReceived.cs
│ ├── NotificationGateway.sln
│ ├── Policies.Specs
│ │ └── Policies.Specs.csproj
│ ├── Policies
│ │ └── Policies.csproj
│ ├── Read.Specs
│ │ └── Read.Specs.csproj
│ ├── Read
│ │ ├── Read.csproj
│ │ └── SMS
│ │ │ ├── AllReceivedMessages.cs
│ │ │ ├── Gateways
│ │ │ ├── SmsGateway.cs
│ │ │ ├── SmsGatewayEventProcessor.cs
│ │ │ ├── SmsGatewayGetAllQuery.cs
│ │ │ └── SmsGatewayGetEnabledQuery.cs
│ │ │ ├── ReceivedMessage.cs
│ │ │ └── TextMessageEventProcessor.cs
│ ├── Rules.Specs
│ │ └── Rules.Specs.csproj
│ ├── Rules
│ │ ├── Rules.csproj
│ │ └── SMS
│ │ │ └── Gateways
│ │ │ ├── IsSmsGatewayExisting.cs
│ │ │ ├── PhoneNumberNotExists.cs
│ │ │ └── SMSGatewayMustBeEnabled.cs
│ ├── Web
│ │ ├── .babelrc
│ │ ├── Dockerfile
│ │ ├── Environments
│ │ │ ├── development.env
│ │ │ └── production.env
│ │ ├── Features
│ │ │ ├── App.js
│ │ │ ├── SMS
│ │ │ │ ├── AllReceivedMessages.js
│ │ │ │ ├── Gateways
│ │ │ │ │ ├── AssignPhoneNumberToSmsGateway.js
│ │ │ │ │ ├── Gateways.js
│ │ │ │ │ ├── ReceiveMessageFromSMSGateway.js
│ │ │ │ │ ├── RegisterSmsGateway.js
│ │ │ │ │ ├── SmsGateway.js
│ │ │ │ │ ├── SmsGatewayGetAllQuery.js
│ │ │ │ │ └── SmsGatewayGetEnabledQuery.js
│ │ │ │ ├── Messages.js
│ │ │ │ ├── ReceivedMessage.js
│ │ │ │ └── SimulateReceivedMessage.js
│ │ │ └── index.js
│ │ ├── README.md
│ │ ├── hooks
│ │ │ └── pre_push
│ │ ├── index.ejs
│ │ ├── jsconfig.json
│ │ ├── karma.conf.js
│ │ ├── nginx-default.conf
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── wallaby.js
│ │ ├── webpack.config.js
│ │ └── webpack.config.prod.js
│ └── bounded-context.json
├── Reporting
│ ├── Concepts
│ │ ├── AutomaticReplies
│ │ │ ├── AutomaticReplyKeyMessageType.cs
│ │ │ └── AutomaticReplyType.cs
│ │ ├── CaseReports
│ │ │ ├── AgeGroup.cs
│ │ │ ├── CaseReportId.cs
│ │ │ └── CaseReportIdValidator.cs
│ │ ├── Concepts.csproj
│ │ ├── DataCollectors
│ │ │ ├── DataCollectorId.cs
│ │ │ ├── DataCollectorIdValidator.cs
│ │ │ ├── DisplayName.cs
│ │ │ ├── DisplayNameValidator.cs
│ │ │ ├── District.cs
│ │ │ ├── DistrictValidator.cs
│ │ │ ├── FullName.cs
│ │ │ ├── FullNameValidator.cs
│ │ │ ├── Language.cs
│ │ │ ├── Location.cs
│ │ │ ├── PhoneNumber.cs
│ │ │ ├── PhoneNumberValidator.cs
│ │ │ ├── Region.cs
│ │ │ ├── RegionValidator.cs
│ │ │ ├── Sex.cs
│ │ │ ├── Village.cs
│ │ │ ├── YearOfBirth.cs
│ │ │ └── YearOfBirthValidator.cs
│ │ ├── DataVerifiers
│ │ │ ├── DataVerifierId.cs
│ │ │ └── DataVerifierIdValidator.cs
│ │ ├── HealthRisks
│ │ │ ├── HealthRiskId.cs
│ │ │ ├── HealthRiskIdValidator.cs
│ │ │ ├── HealthRiskName.cs
│ │ │ ├── HealthRiskNameValidator.cs
│ │ │ ├── HealthRiskReadableId.cs
│ │ │ └── HealthRiskReadableIdValidator.cs
│ │ ├── Projects
│ │ │ ├── ProjectId.cs
│ │ │ ├── ProjectIdValidator.cs
│ │ │ └── ProjectName.cs
│ │ └── Region.cs
│ ├── Core
│ │ ├── .dolittle
│ │ │ ├── artifacts.json
│ │ │ ├── event-horizons.json
│ │ │ ├── resources.json
│ │ │ ├── server.json
│ │ │ ├── tenant-map.json
│ │ │ ├── tenants.json
│ │ │ └── topology.json
│ │ ├── CaseReports
│ │ │ ├── ExportController.cs
│ │ │ ├── Formats
│ │ │ │ ├── CsvExporter.cs
│ │ │ │ └── ExcelExporter.cs
│ │ │ └── ICanExportCaseReports.cs
│ │ ├── Core.csproj
│ │ ├── Dockerfile
│ │ ├── LoggingExtensions.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── SecurityExtensions.cs
│ │ ├── Startup.cs
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ └── hooks
│ │ │ └── pre_push
│ ├── Dockerfile
│ ├── Domain.Specs
│ │ ├── Domain.Specs.csproj
│ │ ├── Management
│ │ │ └── for_data_collectors
│ │ │ │ ├── when_adding_a_phone_number
│ │ │ │ ├── and_validating_a_command_with_a_missing_data_collector_id.cs
│ │ │ │ ├── and_validating_a_command_with_a_missing_phone_number.cs
│ │ │ │ └── and_validating_a_valid_command.cs
│ │ │ │ ├── when_beginning_training
│ │ │ │ ├── and_validating_a_command_with_a_missing_data_collector_id.cs
│ │ │ │ └── given
│ │ │ │ │ └── a_command_builder.cs
│ │ │ │ ├── when_deleting_a_datacollector
│ │ │ │ ├── and_validating_a_command_with_a_missing_data_collector_id.cs
│ │ │ │ └── given
│ │ │ │ │ └── a_command_builder.cs
│ │ │ │ ├── when_ending_training
│ │ │ │ ├── and_validating_a_command_with_a_missing_data_collector_id.cs
│ │ │ │ └── given
│ │ │ │ │ └── a_command_builder.cs
│ │ │ │ ├── when_registering_a_data_collector
│ │ │ │ ├── and_validating_a_command_with_a_missing_data_collector_id.cs
│ │ │ │ ├── and_validating_a_command_with_a_missing_display_name.cs
│ │ │ │ ├── and_validating_a_command_with_a_missing_email.cs
│ │ │ │ ├── and_validating_a_command_with_a_missing_full_name.cs
│ │ │ │ ├── and_validating_a_command_with_a_missing_gps_location.cs
│ │ │ │ ├── and_validating_a_command_with_an_invalid_data_verifier_Id.cs
│ │ │ │ ├── and_validating_a_command_with_an_invalid_district.cs
│ │ │ │ ├── and_validating_a_command_with_an_invalid_email.cs
│ │ │ │ ├── and_validating_a_command_with_an_invalid_preferred_language.cs
│ │ │ │ ├── and_validating_a_command_with_an_invalid_region.cs
│ │ │ │ ├── and_validating_a_command_with_an_invalid_sex.cs
│ │ │ │ ├── and_validating_a_command_with_an_invalid_year_of_birth.cs
│ │ │ │ ├── and_validating_a_command_with_missing_phone_numbers.cs
│ │ │ │ ├── and_validating_a_command_with_no_phone_numbers.cs
│ │ │ │ ├── and_validating_a_valid_command.cs
│ │ │ │ └── given
│ │ │ │ │ └── a_command_builder.cs
│ │ │ │ ├── when_removing_a_phone_number
│ │ │ │ ├── and_validating_a_command_with_a_missing_data_collector_id.cs
│ │ │ │ ├── and_validating_a_command_with_a_missing_phone_number.cs
│ │ │ │ └── and_validating_a_valid_command.cs
│ │ │ │ └── when_updating_a_data_collector
│ │ │ │ ├── and_validating_a_command_with_a_missing_data_collector_id.cs
│ │ │ │ ├── and_validating_a_command_with_a_missing_display_name.cs
│ │ │ │ ├── and_validating_a_command_with_a_missing_email.cs
│ │ │ │ ├── and_validating_a_command_with_a_missing_full_name.cs
│ │ │ │ ├── and_validating_a_command_with_a_missing_gps_location.cs
│ │ │ │ ├── and_validating_a_command_with_an_invalid_email.cs
│ │ │ │ ├── and_validating_a_command_with_an_invalid_preferred_language.cs
│ │ │ │ ├── and_validating_a_valid_command.cs
│ │ │ │ └── given
│ │ │ │ └── a_command_builder.cs
│ │ └── ValidationResultExtensions.cs
│ ├── Domain
│ │ ├── Domain.csproj
│ │ ├── Management
│ │ │ └── DataCollectors
│ │ │ │ ├── DataCollector.cs
│ │ │ │ ├── EditInformation
│ │ │ │ ├── AddPhoneNumberToDataCollector.cs
│ │ │ │ ├── AddPhoneNumberToDataCollectorBusinessValidator.cs
│ │ │ │ ├── AddPhoneNumberToDataCollectorInputValidator.cs
│ │ │ │ ├── ChangeBaseInformation.cs
│ │ │ │ ├── ChangeBaseInformationBusinessValidator.cs
│ │ │ │ ├── ChangeBaseInformationInputValidator.cs
│ │ │ │ ├── ChangeDataVerifier.cs
│ │ │ │ ├── ChangeDataVerifierBusinessValidator.cs
│ │ │ │ ├── ChangeDataVerifierInputValidator.cs
│ │ │ │ ├── ChangeLocation.cs
│ │ │ │ ├── ChangeLocationBusinessValidator.cs
│ │ │ │ ├── ChangeLocationInputValidator.cs
│ │ │ │ ├── ChangePreferredLanguage.cs
│ │ │ │ ├── ChangePreferredLanguageBusinessValidator.cs
│ │ │ │ ├── ChangePreferredLanguageInputValidator.cs
│ │ │ │ ├── ChangeVillage.cs
│ │ │ │ ├── ChangeVillageBusinessValidator.cs
│ │ │ │ ├── ChangeVillageInputValidator.cs
│ │ │ │ ├── InformationCommandHandler.cs
│ │ │ │ ├── RemovePhoneNumberFromDataCollector.cs
│ │ │ │ ├── RemovePhoneNumberFromDataCollectorBusinessValidator.cs
│ │ │ │ └── RemovePhoneNumberFromDataCollectorInputValidator.cs
│ │ │ │ ├── Registration
│ │ │ │ ├── DeleteDataCollector.cs
│ │ │ │ ├── DeleteDataCollectorBusinessValidator.cs
│ │ │ │ ├── DeleteDataCollectorInputValidator.cs
│ │ │ │ ├── RegisterDataCollector.cs
│ │ │ │ ├── RegisterDataCollectorBusinessValidator.cs
│ │ │ │ ├── RegisterDataCollectorInputValidator.cs
│ │ │ │ └── RegistrationHandler.cs
│ │ │ │ ├── Rules.cs
│ │ │ │ └── Training
│ │ │ │ ├── BeginTraining.cs
│ │ │ │ ├── BeginTrainingBusinessValidator.cs
│ │ │ │ ├── BeginTrainingInputValidator.cs
│ │ │ │ ├── EndTraining.cs
│ │ │ │ ├── EndTrainingBusinessValidator.cs
│ │ │ │ ├── EndTrainingInputValidator.cs
│ │ │ │ └── TrainingHandler.cs
│ │ ├── Reporting
│ │ │ ├── AutomaticReplyMessages
│ │ │ │ ├── AutomaticRepliesCommandHandlers.cs
│ │ │ │ ├── AutomaticReplyDefinition.cs
│ │ │ │ ├── DefineAutomaticReplyForProject.cs
│ │ │ │ ├── DefineAutomaticReplyForProjectValidator.cs
│ │ │ │ └── DefineAutomaticReplyKeyMessageForProject.cs
│ │ │ └── CaseReports
│ │ │ │ └── CaseReporting.cs
│ │ └── TestData
│ │ │ ├── CaseReports
│ │ │ └── PopulateCaseReportTestData.cs
│ │ │ ├── Data
│ │ │ ├── CaseReportTestDataHelper.cs
│ │ │ ├── CaseReports.json
│ │ │ ├── DataCollectors.json
│ │ │ ├── HealthRiskTestDataHelper.cs
│ │ │ └── HealthRisks.json
│ │ │ ├── HealthRisks
│ │ │ └── HealthRisk.cs
│ │ │ └── TestDataCommandHandler.cs
│ ├── Events.Admin
│ │ ├── Events.Admin.csproj
│ │ └── Reporting
│ │ │ ├── DefaultReplyMessages
│ │ │ ├── DefaultAutomaticReplyDefined.cs
│ │ │ └── DefaultAutomaticReplyKeyMessageDefined.cs
│ │ │ ├── HealthRisks
│ │ │ ├── HealthRiskCreated.cs
│ │ │ ├── HealthRiskDeleted.cs
│ │ │ └── HealthRiskModified.cs
│ │ │ └── Projects
│ │ │ ├── ProjectCreated.cs
│ │ │ └── ProjectUpdated.cs
│ ├── Events.NotificationGateway
│ │ ├── Events.NotificationGateway.csproj
│ │ └── Reporting
│ │ │ └── SMS
│ │ │ └── TextMessageReceived.cs
│ ├── Events
│ │ ├── Events.csproj
│ │ ├── Management
│ │ │ ├── DataCollectors
│ │ │ │ ├── EditInformation
│ │ │ │ │ ├── DataCollectorDataVerifierChanged.cs
│ │ │ │ │ ├── DataCollectorLocationChanged.cs
│ │ │ │ │ ├── DataCollectorPrefferedLanguageChanged.cs
│ │ │ │ │ ├── DataCollectorUserInformationChanged.cs
│ │ │ │ │ ├── DataCollectorVillageChanged.cs
│ │ │ │ │ ├── LastActiveUpdated.cs
│ │ │ │ │ ├── PhoneNumberAddedToDataCollector.cs
│ │ │ │ │ └── PhoneNumberRemovedFromDataCollector.cs
│ │ │ │ ├── Registration
│ │ │ │ │ ├── DataCollectorRegistered.cs
│ │ │ │ │ └── DataCollectorRemoved.cs
│ │ │ │ └── Training
│ │ │ │ │ ├── DataCollectorBeganTraining.cs
│ │ │ │ │ └── DataCollectorCompletedTraining.cs
│ │ │ └── MessageGenerators
│ │ │ │ └── MessageGenerated.cs
│ │ └── Reporting
│ │ │ ├── AutomaticReplyMessages
│ │ │ ├── AutomaticReplyDefined.cs
│ │ │ ├── AutomaticReplyKeyMessageDefined.cs
│ │ │ ├── AutomaticReplyKeyMessageRemoved.cs
│ │ │ └── AutomaticReplyRemoved.cs
│ │ │ └── CaseReports
│ │ │ ├── CaseReportFromUnknownDataCollectorReceived.cs
│ │ │ ├── CaseReportIdentified.cs
│ │ │ ├── CaseReportReceived.cs
│ │ │ ├── InvalidReportFromUnknownDataCollectorReceived.cs
│ │ │ ├── InvalidReportReceived.cs
│ │ │ ├── InvalidTrainingReportReceived.cs
│ │ │ └── TrainingReportReceived.cs
│ ├── Policies.Specs
│ │ ├── Policies.Specs.csproj
│ │ └── Reporting
│ │ │ └── for_notifications
│ │ │ ├── given
│ │ │ └── text_message_received_events.cs
│ │ │ ├── when_parsing_a_correctly_formated_aggregated_case_report_sms
│ │ │ ├── given
│ │ │ │ └── text_message_received_events_containing_aggregated_case_reports.cs
│ │ │ ├── separated_by_hash
│ │ │ │ ├── given
│ │ │ │ │ └── text_message_received_events_containing_aggregated_case_report.cs
│ │ │ │ ├── when_it_is_a_valid_report.cs
│ │ │ │ ├── when_report_has_a_negative_health_risk.cs
│ │ │ │ ├── when_report_has_a_negative_number_of_cases_of_females_over_5.cs
│ │ │ │ ├── when_report_has_a_negative_number_of_cases_of_females_under_5.cs
│ │ │ │ ├── when_report_has_a_negative_number_of_cases_of_males_over_5.cs
│ │ │ │ ├── when_report_has_a_negative_number_of_cases_of_males_under_5.cs
│ │ │ │ ├── when_report_has_an_invalid_value_for_females_over_5.cs
│ │ │ │ ├── when_report_has_an_invalid_value_for_females_under_5.cs
│ │ │ │ ├── when_report_has_an_invalid_value_for_health_risk.cs
│ │ │ │ ├── when_report_has_an_invalid_value_for_males_over_5.cs
│ │ │ │ └── when_report_has_an_invalid_value_for_males_under_5.cs
│ │ │ ├── separated_by_star
│ │ │ │ ├── given
│ │ │ │ │ └── text_message_received_events_containing_aggregated_case_report.cs
│ │ │ │ ├── when_it_is_a_valid_report.cs
│ │ │ │ ├── when_report_has_a_negative_health_risk.cs
│ │ │ │ ├── when_report_has_a_negative_number_of_cases_of_females_over_5.cs
│ │ │ │ ├── when_report_has_a_negative_number_of_cases_of_females_under_5.cs
│ │ │ │ ├── when_report_has_a_negative_number_of_cases_of_males_over_5.cs
│ │ │ │ ├── when_report_has_a_negative_number_of_cases_of_males_under_5.cs
│ │ │ │ ├── when_report_has_an_invalid_value_for_females_over_5.cs
│ │ │ │ ├── when_report_has_an_invalid_value_for_females_under_5.cs
│ │ │ │ ├── when_report_has_an_invalid_value_for_health_risk.cs
│ │ │ │ ├── when_report_has_an_invalid_value_for_males_over_5.cs
│ │ │ │ └── when_report_has_an_invalid_value_for_males_under_5.cs
│ │ │ └── separated_by_star_and_hash
│ │ │ │ ├── given
│ │ │ │ └── text_message_received_events_containing_aggregated_case_report.cs
│ │ │ │ ├── when_it_is_a_valid_report.cs
│ │ │ │ ├── when_report_has_a_negative_health_risk.cs
│ │ │ │ ├── when_report_has_a_negative_number_of_cases_of_females_over_5.cs
│ │ │ │ ├── when_report_has_a_negative_number_of_cases_of_females_under_5.cs
│ │ │ │ ├── when_report_has_a_negative_number_of_cases_of_males_over_5.cs
│ │ │ │ ├── when_report_has_a_negative_number_of_cases_of_males_under_5.cs
│ │ │ │ ├── when_report_has_an_invalid_value_for_females_over_5.cs
│ │ │ │ ├── when_report_has_an_invalid_value_for_females_under_5.cs
│ │ │ │ ├── when_report_has_an_invalid_value_for_health_risk.cs
│ │ │ │ ├── when_report_has_an_invalid_value_for_males_over_5.cs
│ │ │ │ └── when_report_has_an_invalid_value_for_males_under_5.cs
│ │ │ └── when_parsing_a_correctly_formated_single_case_report_sms
│ │ │ ├── given
│ │ │ └── a_text_message_received_builder_for_single_case_report.cs
│ │ │ ├── separated_by_hash
│ │ │ ├── given
│ │ │ │ └── a_text_message_received_builder_for_single_case_report.cs
│ │ │ ├── when_report_has_a_negative_age_group.cs
│ │ │ ├── when_report_has_a_negative_health_risk.cs
│ │ │ ├── when_report_has_a_negative_sex.cs
│ │ │ ├── when_report_has_an_invalid_value_for_age_group.cs
│ │ │ ├── when_report_has_an_invalid_value_for_health_risk.cs
│ │ │ ├── when_report_has_an_invalid_value_for_sex.cs
│ │ │ ├── when_report_has_an_out_of_range_value_for_age_group.cs
│ │ │ ├── when_report_has_an_out_of_range_value_for_sex.cs
│ │ │ ├── when_report_is_of_a_man_over_5.cs
│ │ │ ├── when_report_is_of_a_man_under_5.cs
│ │ │ ├── when_report_is_of_a_woman_over_5.cs
│ │ │ └── when_report_is_of_a_woman_under_5.cs
│ │ │ ├── separated_by_star
│ │ │ ├── given
│ │ │ │ └── a_text_message_received_builder_for_single_case_report.cs
│ │ │ ├── when_report_has_a_negative_age_group.cs
│ │ │ ├── when_report_has_a_negative_health_risk.cs
│ │ │ ├── when_report_has_a_negative_sex.cs
│ │ │ ├── when_report_has_an_invalid_value_for_age_group.cs
│ │ │ ├── when_report_has_an_invalid_value_for_health_risk.cs
│ │ │ ├── when_report_has_an_invalid_value_for_sex.cs
│ │ │ ├── when_report_has_an_out_of_range_value_for_age_group.cs
│ │ │ ├── when_report_has_an_out_of_range_value_for_sex.cs
│ │ │ ├── when_report_is_of_a_man_over_5.cs
│ │ │ ├── when_report_is_of_a_man_under_5.cs
│ │ │ ├── when_report_is_of_a_woman_over_5.cs
│ │ │ └── when_report_is_of_a_woman_under_5.cs
│ │ │ └── separated_by_star_and_hash
│ │ │ ├── given
│ │ │ └── a_text_message_received_builder_for_single_case_report.cs
│ │ │ ├── when_report_has_a_negative_age_group.cs
│ │ │ ├── when_report_has_a_negative_health_risk.cs
│ │ │ ├── when_report_has_a_negative_sex.cs
│ │ │ ├── when_report_has_an_invalid_value_for_age_group.cs
│ │ │ ├── when_report_has_an_invalid_value_for_health_risk.cs
│ │ │ ├── when_report_has_an_invalid_value_for_sex.cs
│ │ │ ├── when_report_has_an_out_of_range_value_for_age_group.cs
│ │ │ ├── when_report_has_an_out_of_range_value_for_sex.cs
│ │ │ ├── when_report_is_of_a_man_over_5.cs
│ │ │ ├── when_report_is_of_a_man_under_5.cs
│ │ │ ├── when_report_is_of_a_woman_over_5.cs
│ │ │ └── when_report_is_of_a_woman_under_5.cs
│ ├── Policies
│ │ ├── Policies.csproj
│ │ └── Reporting
│ │ │ ├── CaseReportIdentification.cs
│ │ │ └── Notifications
│ │ │ ├── INotificationParser.cs
│ │ │ ├── NotificationFragment.cs
│ │ │ ├── NotificationParser.cs
│ │ │ ├── NotificationParsingResult.cs
│ │ │ └── NotificationProcessor.cs
│ ├── Read.Specs
│ │ └── Read.Specs.csproj
│ ├── Read
│ │ ├── Management
│ │ │ ├── DataCollectors
│ │ │ │ ├── AllDataCollectors.cs
│ │ │ │ ├── DataCollector.cs
│ │ │ │ ├── DataCollectorById.cs
│ │ │ │ └── DataCollectorEventProcessor.cs
│ │ │ └── DataVerifiers
│ │ │ │ └── DataVerifier.cs
│ │ ├── Read.csproj
│ │ └── Reporting
│ │ │ ├── AutomaticReplyMessages
│ │ │ ├── AutomaticReply.cs
│ │ │ ├── AutomaticReplyKeyMessage.cs
│ │ │ ├── AutomaticReplyProcessor.cs
│ │ │ ├── DefaultAutomaticReply.cs
│ │ │ ├── DefaultAutomaticReplyKeyMessage.cs
│ │ │ └── DefaultAutomaticReplyProcessor.cs
│ │ │ ├── CaseReports
│ │ │ ├── CaseReport.cs
│ │ │ ├── CaseReportEventProcessors.cs
│ │ │ └── CaseReportFromUnknownDataCollector.cs
│ │ │ ├── CaseReportsForListing
│ │ │ ├── AllCaseReportsForListing.cs
│ │ │ ├── CaseReportForListing.cs
│ │ │ ├── CaseReportForListingById.cs
│ │ │ ├── CaseReportForListingEventProcessor.cs
│ │ │ ├── CaseReportStatus.cs
│ │ │ └── QueryExtensions.cs
│ │ │ ├── DataCollectorNames
│ │ │ ├── AllListedDataCollector.cs
│ │ │ ├── DataCollectorEventProcessor.cs
│ │ │ ├── ListedDataCollector.cs
│ │ │ └── ListedDataCollectorById.cs
│ │ │ ├── HealthRisks
│ │ │ ├── AllHealthRisks.cs
│ │ │ ├── HealthRisk.cs
│ │ │ ├── HealthRiskById.cs
│ │ │ └── HealthRiskEventProcessor.cs
│ │ │ ├── InvalidCaseReports
│ │ │ ├── InvalidCaseReport.cs
│ │ │ ├── InvalidCaseReportEventProcessors.cs
│ │ │ └── InvalidCaseReportFromUnknownDataCollector.cs
│ │ │ ├── Projects
│ │ │ ├── Project.cs
│ │ │ └── ProjectsEventProcessor.cs
│ │ │ └── Training
│ │ │ ├── AllTrainingReports.cs
│ │ │ ├── EventProcessor.cs
│ │ │ └── TrainingReport.cs
│ ├── Reporting.code-workspace
│ ├── Reporting.sln
│ ├── Rules.Specs
│ │ └── Rules.Specs.csproj
│ ├── Rules
│ │ ├── Management
│ │ │ └── DataCollectors
│ │ │ │ ├── CantExist.cs
│ │ │ │ ├── DisplayNameMustBeUnique.cs
│ │ │ │ ├── DistrictMustBeReal.cs
│ │ │ │ ├── MustBeAllowedToChangeDisplayName.cs
│ │ │ │ ├── MustExist.cs
│ │ │ │ ├── PhoneNumberShouldBeRegistered.cs
│ │ │ │ ├── PhoneNumberShouldNotBeRegistered.cs
│ │ │ │ ├── RegionMustBeReal.cs
│ │ │ │ └── VillageMustBeReal.cs
│ │ └── Rules.csproj
│ ├── Web
│ │ ├── Dockerfile
│ │ ├── angular.json
│ │ ├── browserslist
│ │ ├── hooks
│ │ │ └── pre_push
│ │ ├── nginx-default.conf
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── readme.md
│ │ ├── src
│ │ │ ├── app
│ │ │ │ ├── Management
│ │ │ │ │ ├── DataCollectors
│ │ │ │ │ │ ├── AddPhoneNumberToDataCollector.js
│ │ │ │ │ │ ├── AllDataCollectors.js
│ │ │ │ │ │ ├── ChangeBaseInformation.js
│ │ │ │ │ │ ├── ChangeDataVerifier.js
│ │ │ │ │ │ ├── ChangeLocation.js
│ │ │ │ │ │ ├── ChangePreferredLanguage.js
│ │ │ │ │ │ ├── ChangeVillage.js
│ │ │ │ │ │ ├── DataCollector.js
│ │ │ │ │ │ ├── DataCollectorById.js
│ │ │ │ │ │ ├── DataCollectorExportService.ts
│ │ │ │ │ │ ├── DataCollectors.module.ts
│ │ │ │ │ │ ├── DataCollectors.routes.ts
│ │ │ │ │ │ ├── DeleteDataCollector.js
│ │ │ │ │ │ ├── EditInformation
│ │ │ │ │ │ │ ├── AddPhoneNumberToDataCollector.js
│ │ │ │ │ │ │ ├── ChangeBaseInformation.js
│ │ │ │ │ │ │ ├── ChangeDataVerifier.js
│ │ │ │ │ │ │ ├── ChangeLocation.js
│ │ │ │ │ │ │ ├── ChangePreferredLanguage.js
│ │ │ │ │ │ │ ├── ChangeVillage.js
│ │ │ │ │ │ │ └── RemovePhoneNumberFromDataCollector.js
│ │ │ │ │ │ ├── RegisterDataCollector.js
│ │ │ │ │ │ ├── Registration
│ │ │ │ │ │ │ ├── DeleteDataCollector.js
│ │ │ │ │ │ │ └── RegisterDataCollector.js
│ │ │ │ │ │ ├── RemovePhoneNumberFromDataCollector.js
│ │ │ │ │ │ ├── Training
│ │ │ │ │ │ │ ├── BeginTraining.js
│ │ │ │ │ │ │ └── EndTraining.js
│ │ │ │ │ │ ├── delete
│ │ │ │ │ │ │ ├── delete.html
│ │ │ │ │ │ │ └── delete.ts
│ │ │ │ │ │ ├── details
│ │ │ │ │ │ │ ├── details.html
│ │ │ │ │ │ │ ├── details.scss
│ │ │ │ │ │ │ └── details.ts
│ │ │ │ │ │ ├── edit
│ │ │ │ │ │ │ ├── edit.html
│ │ │ │ │ │ │ ├── edit.scss
│ │ │ │ │ │ │ └── edit.ts
│ │ │ │ │ │ ├── export
│ │ │ │ │ │ │ ├── export.html
│ │ │ │ │ │ │ ├── export.scss
│ │ │ │ │ │ │ └── export.ts
│ │ │ │ │ │ ├── list
│ │ │ │ │ │ │ ├── list.html
│ │ │ │ │ │ │ ├── list.scss
│ │ │ │ │ │ │ └── list.ts
│ │ │ │ │ │ └── register
│ │ │ │ │ │ │ ├── register.html
│ │ │ │ │ │ │ ├── register.scss
│ │ │ │ │ │ │ └── register.ts
│ │ │ │ │ ├── DataVerifiers
│ │ │ │ │ │ └── DataVerifier.js
│ │ │ │ │ ├── Language.ts
│ │ │ │ │ ├── Location.ts
│ │ │ │ │ ├── Sex.ts
│ │ │ │ │ └── Tests
│ │ │ │ │ │ └── CreateDataCollectorTestData.js
│ │ │ │ ├── Reporting
│ │ │ │ │ ├── AutomaticReplyMessages
│ │ │ │ │ │ ├── AutomaticReply.js
│ │ │ │ │ │ ├── AutomaticReplyKeyMessage.js
│ │ │ │ │ │ ├── DefaultAutomaticReply.js
│ │ │ │ │ │ ├── DefaultAutomaticReplyKeyMessage.js
│ │ │ │ │ │ ├── DefineAutomaticReplyForProject.js
│ │ │ │ │ │ └── DefineAutomaticReplyKeyMessageForProject.js
│ │ │ │ │ ├── CaseReports
│ │ │ │ │ │ ├── AllTrainingReports.js
│ │ │ │ │ │ ├── CaseReport.js
│ │ │ │ │ │ ├── CaseReportFromUnknownDataCollector.js
│ │ │ │ │ │ ├── TestData
│ │ │ │ │ │ │ └── PopulateCaseReportTestData.js
│ │ │ │ │ │ └── TrainingReport.js
│ │ │ │ │ ├── CaseReportsForListing
│ │ │ │ │ │ ├── AllCaseReportsForListing.js
│ │ │ │ │ │ ├── CaseReportForListing.js
│ │ │ │ │ │ ├── CaseReportForListingById.js
│ │ │ │ │ │ ├── case-report-list.component.html
│ │ │ │ │ │ ├── case-report-list.component.scss
│ │ │ │ │ │ ├── case-report-list.component.ts
│ │ │ │ │ │ ├── export
│ │ │ │ │ │ │ ├── case-report-export.component.html
│ │ │ │ │ │ │ ├── case-report-export.component.scss
│ │ │ │ │ │ │ └── case-report-export.component.ts
│ │ │ │ │ │ ├── filtering
│ │ │ │ │ │ │ └── filter.pipe.ts
│ │ │ │ │ │ ├── sort
│ │ │ │ │ │ │ ├── columns.ts
│ │ │ │ │ │ │ ├── sortable-column.component.html
│ │ │ │ │ │ │ └── sortable-column.component.ts
│ │ │ │ │ │ ├── training-report-list.component.html
│ │ │ │ │ │ └── training-report-list.component.ts
│ │ │ │ │ ├── DataCollectors
│ │ │ │ │ │ ├── AllListedDataCollectors.js
│ │ │ │ │ │ ├── ListedDataCollector.js
│ │ │ │ │ │ └── ListedDataCollectorById.js
│ │ │ │ │ ├── HealthRisks
│ │ │ │ │ │ ├── AllHealthRisks.js
│ │ │ │ │ │ ├── HealthRisk.js
│ │ │ │ │ │ ├── HealthRiskById.js
│ │ │ │ │ │ └── TestData
│ │ │ │ │ │ │ └── PopulateHealthRiskTestData.js
│ │ │ │ │ ├── InvalidCaseReports
│ │ │ │ │ │ ├── InvalidCaseReport.js
│ │ │ │ │ │ └── InvalidCaseReportFromUnknownDataCollector.js
│ │ │ │ │ ├── Projects
│ │ │ │ │ │ └── Project.js
│ │ │ │ │ ├── reporting-routing.module.ts
│ │ │ │ │ └── reporting.module.ts
│ │ │ │ ├── TestData
│ │ │ │ │ └── CaseReports
│ │ │ │ │ │ └── PopulateCaseReportTestData.js
│ │ │ │ ├── app.component.html
│ │ │ │ ├── app.component.ts
│ │ │ │ ├── app.module.ts
│ │ │ │ ├── navigation
│ │ │ │ │ ├── navbar-host.component.html
│ │ │ │ │ └── navbar-host.component.ts
│ │ │ │ ├── services
│ │ │ │ │ └── app-insights-service.ts
│ │ │ │ └── shared
│ │ │ │ │ └── shared.module.ts
│ │ │ ├── assets
│ │ │ │ ├── .gitkeep
│ │ │ │ └── bootstrap
│ │ │ │ │ ├── _theme.scss
│ │ │ │ │ └── _variables.scss
│ │ │ ├── environments
│ │ │ │ ├── environment.prod.ts
│ │ │ │ ├── environment.test.ts
│ │ │ │ └── environment.ts
│ │ │ ├── index.html
│ │ │ ├── main.ts
│ │ │ ├── polyfills.ts
│ │ │ ├── styles.scss
│ │ │ ├── tsconfig.app.json
│ │ │ └── typings.d.ts
│ │ ├── tsconfig.json
│ │ └── tslint.json
│ ├── bounded-context.json
│ └── readme.md
└── application.json
├── VERSION
├── _config.yml
└── package-lock.json
/.dockerignore:
--------------------------------------------------------------------------------
1 | # Ignore non-code folders
2 | .git
3 | Codeathons
4 | Design
5 | Documentation
6 | Logs
7 | Meetings
8 |
9 | # Ignore Node modules
10 | **/node_modules/
11 |
12 | # Ignore web binaries
13 | **/Web/dist/
14 |
15 | # Ignore C# binaries
16 | **/bin/
17 | **/obj/
18 | .dockerignore
19 | .env
20 | .git
21 | .gitignore
22 | **/.vs
23 | .vscode
24 | **/.toolstarget
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig helps create consistency for formatting of all code
2 | #
3 | # http://EditorConfig.org
4 |
5 | root = true
6 |
7 | [*]
8 | end_of_line = lf
9 | indent_style = space
10 | indent_size = 4
11 | charset = utf-8
12 |
13 | [*.yml]
14 | indent_size = 2
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text eol=lf
2 |
3 | *.jpg binary
4 | *.JPG binary
5 | *.png binary
6 | *.PNG binary
7 | *.gif binary
8 | *.GIF binary
9 | *.dll binary
10 | *.exe binary
11 | *.ttf binary
12 | *.woff binary
13 | *.woff2 binary
14 | *.eot binary
15 | *.pptx binary
16 | *.pdf binary
17 | *.PDF binary
18 |
19 | *.cs eol=lf diff=csharp
20 | *.sln text eol=crlf
--------------------------------------------------------------------------------
/.github/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: About contributing
3 | description: Referencing the contributor guide
4 | keywords: Contributing
5 | author: karolikl
6 | ---
7 |
8 | # Contributing to this project
9 |
10 | Join the world’s largest humanitarian organisation and code for good!
11 |
12 | We welcome contributions to this project whether they are bug fixes, new features or documentation. For more information, read our [Contributor Guide.](../Documentation/Contribution/contributing.md)
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE:
--------------------------------------------------------------------------------
1 |
2 | **Please check if the PR fulfills these requirements**
3 |
4 | - [ ] The code builds and tests pass (verified by our automated build checks)
5 | - [ ] Commit messages follow this format
6 | ```
7 | Summary of the changes
8 | - Detail 1
9 | - Detail 2
10 |
11 | Fixes #issuenumber
12 | ```
13 | - [ ] Tests for the changes have been added (for bug fixes / features)
14 | - [ ] Code meets the expectations our engineering guidelines. https://github.com/aspnet/Home/wiki/Engineering-guidelines.
15 |
16 | Please review the guidelines for CONTRIBUTING.md for more details.
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | sudo: required
2 |
3 | # blocklist
4 | branches:
5 | except:
6 | - ci
7 |
8 | # safelist
9 | branches:
10 | only:
11 | - master
12 |
13 | notifications:
14 | email:
15 | on_success: never # default: change
16 | on_failure: change # default: always
17 |
18 | services:
19 | - docker
20 |
21 | before_install:
22 | - docker pull redcrossredcrescent/cbs-cake-build:latest
23 |
24 | script:
25 | # - ls -al ${PWD}
26 | - docker run --rm --workdir=/workspace --volume ${PWD}:/workspace redcrossredcrescent/cbs-cake-build:latest ./build.sh
--------------------------------------------------------------------------------
/Build/clean.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | find . -type d -and \( -name "obj" -o -name "bin" \) -exec rm -r {} +
--------------------------------------------------------------------------------
/Build/kill_all_dot_net.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | ps -ef | grep -i dotnet | awk {'print $2'} | xargs kill -9
--------------------------------------------------------------------------------
/Build/tools/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Release Notes
2 |
3 |
--------------------------------------------------------------------------------
/Codeathons/20170929 Oslo/TechnicalIntro.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Codeathons/20170929 Oslo/TechnicalIntro.pptx
--------------------------------------------------------------------------------
/Deploy/Compose/config/admin-event-horizons.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/Deploy/Compose/config/alerts-event-horizons.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/Deploy/Compose/config/apikeyToTenant.json:
--------------------------------------------------------------------------------
1 | {"ThereWillBeAnApiKeyHere":"445f8ea8-1a6f-40d7-b2fc-796dba92dc44"}
--------------------------------------------------------------------------------
/Deploy/Compose/config/notificationgateway-event-horizons.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/Deploy/Compose/config/tenant-map.json:
--------------------------------------------------------------------------------
1 | {
2 | "strategy": "hostname",
3 | "fallbackToDeveloperTenant": true,
4 | "configuration": {
5 | "segments": "first"
6 | },
7 | "map": {
8 | "dev": "445f8ea8-1a6f-40d7-b2fc-796dba92dc44",
9 | "admin": "5d1cc845-8874-4cd0-b975-6242ea270b75",
10 | "country_one": "b3a3d542-dd0c-4ef2-bafe-cc5dc9de3da4",
11 | "country_two": "255c3e7c-a7ad-43aa-ad03-a5cf71bd04b2"
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Deploy/Compose/config/tenants.json:
--------------------------------------------------------------------------------
1 | {
2 | "445f8ea8-1a6f-40d7-b2fc-796dba92dc44": {},
3 | "5d1cc845-8874-4cd0-b975-6242ea270b75": {},
4 | "b3a3d542-dd0c-4ef2-bafe-cc5dc9de3da4": {},
5 | "255c3e7c-a7ad-43aa-ad03-a5cf71bd04b2": {}
6 | }
--------------------------------------------------------------------------------
/Deploy/K8S/namespaces.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | apiVersion: v1
3 | kind: Namespace
4 | metadata:
5 | name: cbs-system
6 | ---
7 | apiVersion: v1
8 | kind: Namespace
9 | metadata:
10 | name: cbs-app
11 |
--------------------------------------------------------------------------------
/Deploy/Local/ReverseProxy/main.js:
--------------------------------------------------------------------------------
1 | const app = require('express')();
2 | const proxy = require('http-proxy-middleware');
3 |
4 | // UserManagement
5 | app.use('/datacollectors', proxy({
6 | target: {
7 | host: 'localhost',
8 | port: 4202,
9 | },
10 | }));
11 |
12 | // VolunteerReporting
13 | app.use('/reporting', proxy({
14 | target: {
15 | host: 'localhost',
16 | port: 4203,
17 | },
18 | }));
19 |
20 | // Admin
21 | app.use('/', proxy({
22 | target: {
23 | host: 'localhost',
24 | port: 4201,
25 | },
26 | }));
27 |
28 | app.listen(3000);
--------------------------------------------------------------------------------
/Deploy/Local/ReverseProxy/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "reverseproxy",
3 | "version": "1.0.0",
4 | "description": "Reverse http-proxy for running all the CBS B.C. on your machine during dev.",
5 | "main": "main.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "Jakob",
10 | "license": "ISC",
11 | "dependencies": {
12 | "express": "^4.16.4",
13 | "http-proxy-middleware": "^0.19.1"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Documentation/.gitignore:
--------------------------------------------------------------------------------
1 | # docfx ignores
2 |
3 | /**/DROP/
4 | /**/TEMP/
5 | /**/packages/
6 | /**/bin/
7 | /**/obj/
8 | _site
9 |
--------------------------------------------------------------------------------
/Documentation/Architecture/Diagrams.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Architecture/Diagrams.pptx
--------------------------------------------------------------------------------
/Documentation/Architecture/frontend.md:
--------------------------------------------------------------------------------
1 | ---
2 | title:
3 | description:
4 | keywords:
5 | author:
6 | ---
7 | # Frontend
8 |
9 | ## Scaffold new Angular components
10 |
11 | (Active path: `cbs/Source/Example/Frontend`)
12 |
13 | Create new component
14 |
15 | > `ng g c folder/componentname`
16 |
17 | Creat new service
18 |
19 | > `ng g s core/services/servicename`
20 |
21 | Creat new pipe
22 |
23 | > `ng g p shared/pipes/pipename`
--------------------------------------------------------------------------------
/Documentation/Architecture/images/at_a_glance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Architecture/images/at_a_glance.png
--------------------------------------------------------------------------------
/Documentation/Architecture/images/cqrs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Architecture/images/cqrs.png
--------------------------------------------------------------------------------
/Documentation/Architecture/images/offline_syncing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Architecture/images/offline_syncing.png
--------------------------------------------------------------------------------
/Documentation/Architecture/images/top_level.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Architecture/images/top_level.png
--------------------------------------------------------------------------------
/Documentation/Architecture/logging.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: About logging
3 | description:
4 | keywords:
5 | author:
6 | ---
7 | # Logging
8 |
9 | ## C# Serilog
10 |
11 | ## LogStash
12 |
13 | ## Kibana
--------------------------------------------------------------------------------
/Documentation/Architecture/sms_gateway.md:
--------------------------------------------------------------------------------
1 | ---
2 | title:
3 | description:
4 | keywords:
5 | author:
6 | ---
7 | # SMS Gateway
--------------------------------------------------------------------------------
/Documentation/Contribution/images/issues_add_note.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Contribution/images/issues_add_note.png
--------------------------------------------------------------------------------
/Documentation/Contribution/images/issues_backlog_new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Contribution/images/issues_backlog_new.png
--------------------------------------------------------------------------------
/Documentation/Contribution/images/issues_convert_note_to_issue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Contribution/images/issues_convert_note_to_issue.png
--------------------------------------------------------------------------------
/Documentation/Contribution/images/issues_converted_issue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Contribution/images/issues_converted_issue.png
--------------------------------------------------------------------------------
/Documentation/Contribution/images/issues_issue_details.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Contribution/images/issues_issue_details.png
--------------------------------------------------------------------------------
/Documentation/Contribution/images/issues_note_to_issue_details.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Contribution/images/issues_note_to_issue_details.png
--------------------------------------------------------------------------------
/Documentation/Contribution/toc.yml:
--------------------------------------------------------------------------------
1 | - name: Contributing
2 | href: contributing.md
3 | - name: Development environment
4 | href: development_environment.md
5 | - name: Documenting
6 | href: documentation.md
7 | - name: Getting started
8 | href: getting_started.md
9 | - name: Issues
10 | href: issues.md
--------------------------------------------------------------------------------
/Documentation/Deployment/build.md:
--------------------------------------------------------------------------------
1 | ---
2 | title:
3 | description:
4 | keywords:
5 | author:
6 | ---
7 | # Build
--------------------------------------------------------------------------------
/Documentation/Deployment/container_registry.md:
--------------------------------------------------------------------------------
1 | ---
2 | title:
3 | description:
4 | keywords:
5 | author:
6 | ---
7 | # Container Registry
--------------------------------------------------------------------------------
/Documentation/Deployment/release_management.md:
--------------------------------------------------------------------------------
1 | ---
2 | title:
3 | description:
4 | keywords:
5 | author:
6 | ---
7 | # Release Management
--------------------------------------------------------------------------------
/Documentation/Projects/Admin/Events/HealthRiskCreated.md:
--------------------------------------------------------------------------------
1 | ---
2 | title:
3 | description:
4 | keywords:
5 | author: roarfred
6 | ---
7 | # Event: HealthRiskCreated
--------------------------------------------------------------------------------
/Documentation/Projects/Admin/Events/HealthRiskUpdated.md:
--------------------------------------------------------------------------------
1 | ---
2 | title:
3 | description:
4 | keywords:
5 | author: roarfred
6 | ---
7 | # Event: HealthRiskUpdated
--------------------------------------------------------------------------------
/Documentation/Projects/Admin/Events/ProjectAreasChanged.md:
--------------------------------------------------------------------------------
1 | ---
2 | title:
3 | description:
4 | keywords:
5 | author: roarfred
6 | ---
7 | # Event: ProjectAreasChanged
--------------------------------------------------------------------------------
/Documentation/Projects/Admin/Events/ProjectDataOwnerChanged.md:
--------------------------------------------------------------------------------
1 | ---
2 | title:
3 | description:
4 | keywords:
5 | author: roarfred
6 | ---
7 | # Event: ProjectDataOwnerChanged
--------------------------------------------------------------------------------
/Documentation/Projects/Admin/Events/ProjectHealthRisksChanged.md:
--------------------------------------------------------------------------------
1 | ---
2 | title:
3 | description:
4 | keywords:
5 | author: roarfred
6 | ---
7 | # Event: ProjectHealthRisksChanged
--------------------------------------------------------------------------------
/Documentation/Projects/Admin/Events/ProjectSmsReportingStructureChanged.md:
--------------------------------------------------------------------------------
1 | ---
2 | title:
3 | description:
4 | keywords:
5 | author: roarfred
6 | ---
7 | # Event: ProjectSmsReportingStructureChanged
--------------------------------------------------------------------------------
/Documentation/Projects/Admin/assets/physical-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Admin/assets/physical-view.png
--------------------------------------------------------------------------------
/Documentation/Projects/Admin/assets/reporting-feedback.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Admin/assets/reporting-feedback.png
--------------------------------------------------------------------------------
/Documentation/Projects/Admin/assets/scenarios.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Admin/assets/scenarios.png
--------------------------------------------------------------------------------
/Documentation/Projects/Admin/assets/system-context.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Admin/assets/system-context.png
--------------------------------------------------------------------------------
/Documentation/Projects/Alerts/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title:
3 | description:
4 | keywords:
5 | author: einari
6 | ---
7 | # Alerts
8 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/.editorconfig:
--------------------------------------------------------------------------------
1 | # editorconfig.org
2 |
3 | root = true
4 |
5 | [*]
6 | charset = utf-8
7 | indent_size = 2
8 | indent_style = space
9 | insert_final_newline = true
10 | trim_trailing_whitespace = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/.gitignore:
--------------------------------------------------------------------------------
1 | # Include your project-specific ignores in this file
2 | # Read about how to use .gitignore: https://help.github.com/articles/ignoring-files
3 | # Useful .gitignore templates: https://github.com/github/gitignore
4 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/css/Ageandsexdistributionoverdifferenttimeframes.css:
--------------------------------------------------------------------------------
1 | body {
2 | }
3 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/css/Barchartsbydistrict.css:
--------------------------------------------------------------------------------
1 | body {
2 | }
3 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/css/DistrictPersonreportingfunnelplotA.css:
--------------------------------------------------------------------------------
1 | body {
2 | }
3 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/css/DistrictPersonreportingfunnelplotB.css:
--------------------------------------------------------------------------------
1 | body {
2 | }
3 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/css/Epicurvebyday.css:
--------------------------------------------------------------------------------
1 | body {
2 | }
3 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/css/Epicurvebydaydodgedbyage.css:
--------------------------------------------------------------------------------
1 | body {
2 | }
3 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/css/Epicurvebyweek.css:
--------------------------------------------------------------------------------
1 | body {
2 | }
3 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/css/Epicurvebyweekdodgedbyage.css:
--------------------------------------------------------------------------------
1 | body {
2 | }
3 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/css/Mapbygeographicalarea.css:
--------------------------------------------------------------------------------
1 | body {
2 |
3 | }
4 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/css/Weeklyepicurvesbyagesex.css:
--------------------------------------------------------------------------------
1 | body {
2 | }
3 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/css/Weeklyepicurvesbygeographicalarea.css:
--------------------------------------------------------------------------------
1 | body {
2 | }
3 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/css/main.css:
--------------------------------------------------------------------------------
1 | body {
2 | background-color: gray;
3 | }
4 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/favicon.ico
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/humans.txt:
--------------------------------------------------------------------------------
1 | # humanstxt.org/
2 | # The humans responsible & technology colophon
3 |
4 | # TEAM
5 |
6 | -- --
7 |
8 | # THANKS
9 |
10 |
11 |
12 | # TECHNOLOGY COLOPHON
13 |
14 | CSS3, HTML5
15 | Apache Server Configs, jQuery, Modernizr, Normalize.css
16 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/icon.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/images/icon/rodekors.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/images/icon/rodekors.jpg
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/images/icon/rodekors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/images/icon/rodekors.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/Barchartsbydistrict.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/DistrictPersonreportingfunnelplotA.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/DistrictPersonreportingfunnelplotB.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/Epicurvebydaydodgedbyage.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/js/Epicurvebydaydodgedbyage.js
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/Weeklyepicurvesbygeographicalarea.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/fakedata/.gitignore:
--------------------------------------------------------------------------------
1 | .Rproj.user/
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/fakedata/data/casereports-2018-September-28 (1).xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/js/fakedata/data/casereports-2018-September-28 (1).xlsx
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/fakedata/data/datacollectors-2018-September-28 (1).xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/js/fakedata/data/datacollectors-2018-September-28 (1).xlsx
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/fakedata/data/gadm36_NOR_1_sp.rds:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/js/fakedata/data/gadm36_NOR_1_sp.rds
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/fakedata/data/gadm36_NOR_2_sf.rds:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/js/fakedata/data/gadm36_NOR_2_sf.rds
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/fakedata/data/gadm36_NOR_2_sp.rds:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/js/fakedata/data/gadm36_NOR_2_sp.rds
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/fakedata/data/old_gadm36_NOR_1_sp.rds:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/js/fakedata/data/old_gadm36_NOR_1_sp.rds
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/fakedata/project.Rproj:
--------------------------------------------------------------------------------
1 | Version: 1.0
2 |
3 | RestoreWorkspace: No
4 | SaveWorkspace: No
5 | AlwaysSaveHistory: No
6 |
7 | EnableCodeIndexing: Yes
8 | UseSpacesForTab: Yes
9 | NumSpacesForTab: 2
10 | Encoding: UTF-8
11 |
12 | RnwWeave: Sweave
13 | LaTeX: pdfLaTeX
14 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/fakedata/report_files/figure-markdown_strict/unnamed-chunk-1-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/js/fakedata/report_files/figure-markdown_strict/unnamed-chunk-1-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/fakedata/report_files/figure-markdown_strict/unnamed-chunk-10-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/js/fakedata/report_files/figure-markdown_strict/unnamed-chunk-10-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/fakedata/report_files/figure-markdown_strict/unnamed-chunk-11-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/js/fakedata/report_files/figure-markdown_strict/unnamed-chunk-11-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/fakedata/report_files/figure-markdown_strict/unnamed-chunk-2-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/js/fakedata/report_files/figure-markdown_strict/unnamed-chunk-2-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/fakedata/report_files/figure-markdown_strict/unnamed-chunk-3-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/js/fakedata/report_files/figure-markdown_strict/unnamed-chunk-3-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/fakedata/report_files/figure-markdown_strict/unnamed-chunk-4-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/js/fakedata/report_files/figure-markdown_strict/unnamed-chunk-4-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/fakedata/report_files/figure-markdown_strict/unnamed-chunk-5-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/js/fakedata/report_files/figure-markdown_strict/unnamed-chunk-5-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/fakedata/report_files/figure-markdown_strict/unnamed-chunk-6-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/js/fakedata/report_files/figure-markdown_strict/unnamed-chunk-6-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/fakedata/report_files/figure-markdown_strict/unnamed-chunk-7-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/js/fakedata/report_files/figure-markdown_strict/unnamed-chunk-7-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/fakedata/report_files/figure-markdown_strict/unnamed-chunk-8-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/js/fakedata/report_files/figure-markdown_strict/unnamed-chunk-8-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/js/fakedata/report_files/figure-markdown_strict/unnamed-chunk-9-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/js/fakedata/report_files/figure-markdown_strict/unnamed-chunk-9-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/mapdata.csv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/mapdata.csv
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/mapdata.json:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/mapdata.json
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/robots.txt:
--------------------------------------------------------------------------------
1 | # www.robotstxt.org/
2 |
3 | # Allow crawling of all content
4 | User-agent: *
5 | Disallow:
6 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/site.webmanifest:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "",
3 | "name": "",
4 | "icons": [{
5 | "src": "icon.png",
6 | "type": "image/png",
7 | "sizes": "192x192"
8 | }],
9 | "start_url": "/?utm_source=homescreen",
10 | "background_color": "#fafafa",
11 | "theme_color": "#fafafa"
12 | }
13 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/tile-wide.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/tile-wide.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/tile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/tile.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-4.7/HELP-US-OUT.txt:
--------------------------------------------------------------------------------
1 | I hope you love Font Awesome. If you've found it useful, please do me a favor and check out my latest project,
2 | Fort Awesome (https://fortawesome.com). It makes it easy to put the perfect icons on your website. Choose from our awesome,
3 | comprehensive icon sets or copy and paste your own.
4 |
5 | Please. Check it out.
6 |
7 | -Dave Gandy
8 |
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-4.7/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-4.7/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-4.7/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-4.7/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-4.7/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-4.7/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-4.7/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-4.7/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-4.7/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-4.7/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-brands-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-brands-400.eot
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-brands-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-brands-400.ttf
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-brands-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-brands-400.woff
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-brands-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-brands-400.woff2
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-regular-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-regular-400.eot
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-regular-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-regular-400.ttf
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-regular-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-regular-400.woff
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-regular-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-regular-400.woff2
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-solid-900.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-solid-900.eot
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-solid-900.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-solid-900.ttf
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-solid-900.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-solid-900.woff
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/font-awesome-5/webfonts/fa-solid-900.woff2
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/lightbox2/dist/images/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/lightbox2/dist/images/close.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/lightbox2/dist/images/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/lightbox2/dist/images/loading.gif
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/lightbox2/dist/images/next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/lightbox2/dist/images/next.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/lightbox2/dist/images/prev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/lightbox2/dist/images/prev.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/lightbox2/src/images/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/lightbox2/src/images/close.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/lightbox2/src/images/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/lightbox2/src/images/loading.gif
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/lightbox2/src/images/next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/lightbox2/src/images/next.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/lightbox2/src/images/prev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/lightbox2/src/images/prev.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/mdi-font/fonts/Material-Design-Iconic-Font.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/mdi-font/fonts/Material-Design-Iconic-Font.eot
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/mdi-font/fonts/Material-Design-Iconic-Font.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/mdi-font/fonts/Material-Design-Iconic-Font.ttf
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/mdi-font/fonts/Material-Design-Iconic-Font.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/mdi-font/fonts/Material-Design-Iconic-Font.woff
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/mdi-font/fonts/Material-Design-Iconic-Font.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/mdi-font/fonts/Material-Design-Iconic-Font.woff2
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/slick/ajax-loader.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/slick/ajax-loader.gif
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/slick/config.rb:
--------------------------------------------------------------------------------
1 | css_dir = "."
2 | sass_dir = "."
3 | images_dir = "."
4 | fonts_dir = "fonts"
5 | relative_assets = true
6 |
7 | output_style = :compact
8 | line_comments = false
9 |
10 | preferred_syntax = :scss
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/slick/fonts/slick.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/slick/fonts/slick.eot
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/slick/fonts/slick.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/slick/fonts/slick.ttf
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/Web Mockup/vendor/slick/fonts/slick.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/Web Mockup/vendor/slick/fonts/slick.woff
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/archive/fakedata/.gitignore:
--------------------------------------------------------------------------------
1 | .Rproj.user/
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/archive/fakedata/data/NOR_adm1.rds:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/archive/fakedata/data/NOR_adm1.rds
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/archive/fakedata/data/casereports-2018-September-28 (1).xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/archive/fakedata/data/casereports-2018-September-28 (1).xlsx
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/archive/fakedata/data/datacollectors-2018-September-28 (1).xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/archive/fakedata/data/datacollectors-2018-September-28 (1).xlsx
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/archive/fakedata/data/gadm36_NOR_1_sp.rds:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/archive/fakedata/data/gadm36_NOR_1_sp.rds
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/archive/fakedata/data/gadm36_NOR_2_sf.rds:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/archive/fakedata/data/gadm36_NOR_2_sf.rds
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/archive/fakedata/data/gadm36_NOR_2_sp.rds:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/archive/fakedata/data/gadm36_NOR_2_sp.rds
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/archive/fakedata/data/old_gadm36_NOR_1_sp.rds:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/archive/fakedata/data/old_gadm36_NOR_1_sp.rds
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/archive/fakedata/report_files/figure-markdown_strict/unnamed-chunk-1-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/archive/fakedata/report_files/figure-markdown_strict/unnamed-chunk-1-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/archive/fakedata/report_files/figure-markdown_strict/unnamed-chunk-10-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/archive/fakedata/report_files/figure-markdown_strict/unnamed-chunk-10-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/archive/fakedata/report_files/figure-markdown_strict/unnamed-chunk-11-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/archive/fakedata/report_files/figure-markdown_strict/unnamed-chunk-11-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/archive/fakedata/report_files/figure-markdown_strict/unnamed-chunk-2-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/archive/fakedata/report_files/figure-markdown_strict/unnamed-chunk-2-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/archive/fakedata/report_files/figure-markdown_strict/unnamed-chunk-3-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/archive/fakedata/report_files/figure-markdown_strict/unnamed-chunk-3-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/archive/fakedata/report_files/figure-markdown_strict/unnamed-chunk-4-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/archive/fakedata/report_files/figure-markdown_strict/unnamed-chunk-4-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/archive/fakedata/report_files/figure-markdown_strict/unnamed-chunk-5-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/archive/fakedata/report_files/figure-markdown_strict/unnamed-chunk-5-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/archive/fakedata/report_files/figure-markdown_strict/unnamed-chunk-6-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/archive/fakedata/report_files/figure-markdown_strict/unnamed-chunk-6-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/archive/fakedata/report_files/figure-markdown_strict/unnamed-chunk-7-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/archive/fakedata/report_files/figure-markdown_strict/unnamed-chunk-7-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/archive/fakedata/report_files/figure-markdown_strict/unnamed-chunk-8-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/archive/fakedata/report_files/figure-markdown_strict/unnamed-chunk-8-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/archive/fakedata/report_files/figure-markdown_strict/unnamed-chunk-9-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/archive/fakedata/report_files/figure-markdown_strict/unnamed-chunk-9-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/archive/volunteer_individ.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/archive/volunteer_individ.jpg
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-10-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-10-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-11-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-11-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-11-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-11-2.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-12-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-12-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-13-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-13-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-14-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-14-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-15-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-15-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-2-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-2-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-3-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-3-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-4-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-4-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-5-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-5-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-6-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-6-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-7-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-7-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-8-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-8-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-9-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/graphs/unnamed-chunk-9-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/index/Scanned-Document-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/index/Scanned-Document-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/index/Scanned-Document-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/index/Scanned-Document-2.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/index/Scanned-Document-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/index/Scanned-Document-3.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/index/Scanned-Document-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/index/Scanned-Document-4.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/index/Scanned-Document-5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/index/Scanned-Document-5.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/index/unnamed-chunk-2-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/index/unnamed-chunk-2-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/index/unnamed-chunk-3-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/index/unnamed-chunk-3-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Analytics/images/index/unnamed-chunk-4-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Analytics/images/index/unnamed-chunk-4-1.png
--------------------------------------------------------------------------------
/Documentation/Projects/Core/events.md:
--------------------------------------------------------------------------------
1 | ---
2 | title:
3 | description:
4 | keywords:
5 | author: einari
6 | ---
7 | # Events
8 |
9 | https://github.com/Microsoft/CSharpClient-for-Kafka
10 |
11 | https://qbox.io/blog/kafka-and-elasticsearch-a-perfect-match-1
12 |
--------------------------------------------------------------------------------
/Documentation/Projects/Portal/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: About portal
3 | description: This contains an overview portal
4 | keywords: Portal
5 | author: einari
6 | ---
7 | # Portal
8 |
9 | ## Navigation
10 |
11 | ## Login
12 |
13 | ## User profile
--------------------------------------------------------------------------------
/Documentation/Projects/Reporting/2017-09-29 14-31 page 1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Reporting/2017-09-29 14-31 page 1.jpg
--------------------------------------------------------------------------------
/Documentation/Projects/Reporting/Detailed_Alert_Map.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Reporting/Detailed_Alert_Map.jpg
--------------------------------------------------------------------------------
/Documentation/Projects/Reporting/Detailed_Alert_Timeline.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Reporting/Detailed_Alert_Timeline.jpg
--------------------------------------------------------------------------------
/Documentation/Projects/Reporting/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title:
3 | description:
4 | keywords:
5 | author: einari
6 | ---
7 | # Reporting
8 |
--------------------------------------------------------------------------------
/Documentation/Projects/Sms/Architecture_Duplex.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Sms/Architecture_Duplex.png
--------------------------------------------------------------------------------
/Documentation/Projects/Sms/Architecture_Incoming.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Sms/Architecture_Incoming.png
--------------------------------------------------------------------------------
/Documentation/Projects/Sms/Flow_Duplex.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Sms/Flow_Duplex.png
--------------------------------------------------------------------------------
/Documentation/Projects/Sms/Flow_Incoming.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Sms/Flow_Incoming.png
--------------------------------------------------------------------------------
/Documentation/Projects/Sms/Postman_Eagle_Sample.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Sms/Postman_Eagle_Sample.png
--------------------------------------------------------------------------------
/Documentation/Projects/Sms/Postman_Sample.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Sms/Postman_Sample.png
--------------------------------------------------------------------------------
/Documentation/Projects/User Management/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title:
3 | description:
4 | keywords:
5 | author: einari
6 | ---
7 | # User Management
8 |
9 | All issues for this project can be found [here](https://github.com/IFRCGo/cbs/projects/2).
10 |
11 | ## Description
12 |
13 | ## Mobile
14 |
15 | ## SMS
16 |
17 | ## Admin View
18 |
--------------------------------------------------------------------------------
/Documentation/Projects/Volunteer Reporting/data collector workflow 2017.09.30.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Volunteer Reporting/data collector workflow 2017.09.30.jpg
--------------------------------------------------------------------------------
/Documentation/Projects/Volunteer Reporting/data_flow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Projects/Volunteer Reporting/data_flow.png
--------------------------------------------------------------------------------
/Documentation/Requirements/CBS Functional requirements specification.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Requirements/CBS Functional requirements specification.pdf
--------------------------------------------------------------------------------
/Documentation/Requirements/March 2017 - CBS v2 Diagrams.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Documentation/Requirements/March 2017 - CBS v2 Diagrams.pdf
--------------------------------------------------------------------------------
/Documentation/readme.md:
--------------------------------------------------------------------------------
1 | ## How to build the documentation site
2 |
3 | 1. Download and unzip docfx https://github.com/dotnet/docfx/releases
4 | 2. Add the folder with docfx in to your environment path
5 | 3. With `\cbs\Documentation` as active folder, build and serve docs on http://localhost:8080 using
6 | `docfx --serve`
--------------------------------------------------------------------------------
/Documentation/toc.yml:
--------------------------------------------------------------------------------
1 | - name: Developer documentation
2 | href: Contribution/
3 | homepage: Contribution/getting_started.md
--------------------------------------------------------------------------------
/Meetings/20170911 - Core Team - Planning/IMG_2161.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Meetings/20170911 - Core Team - Planning/IMG_2161.JPG
--------------------------------------------------------------------------------
/Meetings/20170911 - Core Team - Planning/IMG_2162.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Meetings/20170911 - Core Team - Planning/IMG_2162.JPG
--------------------------------------------------------------------------------
/Meetings/20170911 - Core Team - Planning/IMG_2163.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Meetings/20170911 - Core Team - Planning/IMG_2163.JPG
--------------------------------------------------------------------------------
/Meetings/20170911 - Core Team - Planning/IMG_2164.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Meetings/20170911 - Core Team - Planning/IMG_2164.JPG
--------------------------------------------------------------------------------
/Meetings/20170911 - Core Team - Planning/IMG_2165.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Meetings/20170911 - Core Team - Planning/IMG_2165.JPG
--------------------------------------------------------------------------------
/Meetings/20170911 - Core Team - Planning/IMG_2166.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Meetings/20170911 - Core Team - Planning/IMG_2166.JPG
--------------------------------------------------------------------------------
/Meetings/20170911 - Core Team - Planning/IMG_2167.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Meetings/20170911 - Core Team - Planning/IMG_2167.JPG
--------------------------------------------------------------------------------
/Meetings/20170911 - Core Team - Planning/IMG_2168.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Meetings/20170911 - Core Team - Planning/IMG_2168.JPG
--------------------------------------------------------------------------------
/Meetings/20170911 - Core Team - Planning/IMG_2169.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Meetings/20170911 - Core Team - Planning/IMG_2169.JPG
--------------------------------------------------------------------------------
/Meetings/20170911 - Core Team - Planning/IMG_2170.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Meetings/20170911 - Core Team - Planning/IMG_2170.JPG
--------------------------------------------------------------------------------
/Meetings/20170911 - Core Team - Planning/IMG_2171.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Meetings/20170911 - Core Team - Planning/IMG_2171.JPG
--------------------------------------------------------------------------------
/Meetings/20170911 - Core Team - Planning/IMG_2172.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Meetings/20170911 - Core Team - Planning/IMG_2172.JPG
--------------------------------------------------------------------------------
/Meetings/20170911 - Core Team - Planning/IMG_2173.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Meetings/20170911 - Core Team - Planning/IMG_2173.JPG
--------------------------------------------------------------------------------
/Meetings/20170911 - Core Team - Planning/IMG_2174.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Meetings/20170911 - Core Team - Planning/IMG_2174.JPG
--------------------------------------------------------------------------------
/Meetings/20171025 - Community standup.md:
--------------------------------------------------------------------------------
1 | # Community Standup, 25.10.2017
2 |
3 | ## Agenda
4 |
5 | * What has happened since the last time
6 | - Volunteer Reporting
7 | - Admin
8 | - UX
9 | * Infrastructure
10 | - Changes
11 | - Azure status
12 | * Until next time
13 | - Defining MVP
14 | - Community standup
15 |
16 | ## Recording
17 |
18 | You can view the recording of the community standup [here](https://1drv.ms/v/s!Auypu7NkOVm_nbtiDbJZRhHY9EjqMA).
--------------------------------------------------------------------------------
/NuGet.Config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Source/.dockerignore:
--------------------------------------------------------------------------------
1 | # Ignore Node modules
2 | **/node_modules/
3 |
4 | # Ignore web binaries
5 | **/Web/dist/
6 |
7 | # Ignore C# binaries
8 | **/bin/
9 | **/obj/
10 | .dockerignore
11 | .env
12 | .git
13 | .gitignore
14 | **/.vs
15 | .vscode
16 | **/.toolstarget
--------------------------------------------------------------------------------
/Source/Admin/Concepts/Concepts.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | true
6 | $(NoWarn);1591
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Source/Admin/Core/.dolittle/event-horizons.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/Source/Admin/Core/.dolittle/resources.json:
--------------------------------------------------------------------------------
1 | {
2 | "445f8ea8-1a6f-40d7-b2fc-796dba92dc44": {
3 | "readModels": {
4 | "host": "mongodb://localhost:27017",
5 | "database": "cbs_admin_read_models",
6 | "useSSL": false
7 | },
8 | "eventStore": {
9 | "host": "mongodb://localhost:27017",
10 | "database": "cbs_admin_event_store",
11 | "useSSL": false
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/Source/Admin/Core/.dolittle/server.json:
--------------------------------------------------------------------------------
1 | {
2 | "interaction": {
3 | "port": 50051,
4 | "unixSocket": "/var/run/cbs.admin.interaction.server.sock"
5 | },
6 | "management": {
7 | "port": 50151,
8 | "unixSocket": "/var/run/cbs.admin.management.server.sock"
9 | }
10 | }
--------------------------------------------------------------------------------
/Source/Admin/Core/.dolittle/tenant-map.json:
--------------------------------------------------------------------------------
1 | {
2 | "strategy": "hostname",
3 | "fallbackToDeveloperTenant": true,
4 | "configuration": {
5 | "segments": "first"
6 | },
7 | "map": {
8 | "Development": "445f8ea8-1a6f-40d7-b2fc-796dba92dc44"
9 | }
10 | }
--------------------------------------------------------------------------------
/Source/Admin/Core/.dolittle/tenants.json:
--------------------------------------------------------------------------------
1 | {
2 | "445f8ea8-1a6f-40d7-b2fc-796dba92dc44": {}
3 | }
--------------------------------------------------------------------------------
/Source/Admin/Core/hooks/pre_push:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | REPO_ROOT=../../..
3 | source $REPO_ROOT/Build/docker_cloud/pre_push
4 |
--------------------------------------------------------------------------------
/Source/Admin/Domain/Admin/Rules.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Domain.Admin
4 | {
5 | public delegate bool IsUserExisting(Guid id);
6 | }
7 |
--------------------------------------------------------------------------------
/Source/Admin/Domain/HealthRisks/AssociateHealthRiskWithProject.cs:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * Copyright (c) The International Federation of Red Cross and Red Crescent Societies. All rights reserved.
3 | * Licensed under the MIT License. See LICENSE in the project root for license information.
4 | *--------------------------------------------------------------------------------------------*/
5 |
--------------------------------------------------------------------------------
/Source/Admin/Events/Events.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | true
6 | $(NoWarn);1591
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Source/Admin/Read/Read.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | true
6 | $(NoWarn);1591
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Source/Admin/Web/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | // Use IntelliSense to learn about possible attributes.
3 | // Hover to view descriptions of existing attributes.
4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5 | "version": "0.2.0",
6 | "configurations": [
7 | {
8 | "type": "chrome",
9 | "request": "launch",
10 | "name": "Launch Chrome against localhost",
11 | "url": "http://localhost:4200",
12 | "webRoot": "${workspaceFolder}"
13 | }
14 | ]
15 | }
--------------------------------------------------------------------------------
/Source/Admin/Web/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "files.exclude": {
3 | "**/.git": true,
4 | "**/.svn": true,
5 | "**/.hg": true,
6 | "**/CVS": true,
7 | "**/.DS_Store": true,
8 | "**/node_modules": true
9 | }
10 | }
--------------------------------------------------------------------------------
/Source/Admin/Web/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:11.6-slim AS build
2 | ARG mode=build-test
3 |
4 | # Install dependencies
5 | COPY ./Navigation /CBS/Source/Navigation
6 | COPY ./Admin/Web/package.json /CBS/Source/Admin/Web/package.json
7 | WORKDIR /CBS/Source/Admin/Web
8 | RUN yarn install
9 |
10 | # Build production code
11 | COPY ./Admin/Web /CBS/Source/Admin/Web
12 | WORKDIR /CBS/Source/Admin/Web
13 | RUN npm run ${mode}
14 |
15 | # Build runtime image
16 | FROM nginx:1.15-alpine
17 | COPY --from=build /CBS/Source/Admin/Web/dist /usr/share/nginx/html
18 | COPY --from=build /CBS/Source/Admin/Web/nginx-default.conf /etc/nginx/conf.d/default.conf
--------------------------------------------------------------------------------
/Source/Admin/Web/browserslist:
--------------------------------------------------------------------------------
1 | # This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
2 | # For additional information regarding the format and rule options, please see:
3 | # https://github.com/browserslist/browserslist#queries
4 |
5 | # You can see what browsers were selected by your queries by running:
6 | # npx browserslist
7 |
8 | > 0.5%
9 | last 2 versions
10 | Firefox ESR
11 | not dead
12 | not IE 9-11 # For IE 9-11 support, remove 'not'.
--------------------------------------------------------------------------------
/Source/Admin/Web/hooks/pre_push:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | REPO_ROOT=../../..
3 | source $REPO_ROOT/Build/docker_cloud/pre_push
4 |
--------------------------------------------------------------------------------
/Source/Admin/Web/nginx-default.conf:
--------------------------------------------------------------------------------
1 | server {
2 | listen 80;
3 | server_name localhost;
4 |
5 | location / {
6 | alias /usr/share/nginx/html/;
7 |
8 | # Serve all files in the normal way
9 | location ~ \.[^/]*$ {
10 | }
11 |
12 | # Everything else goes to /index.html
13 | try_files '' /admin/index.html;
14 | }
15 |
16 | error_page 500 502 503 504 /50x.html;
17 | location = /50x.html {
18 | root /usr/share/nginx/html;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Source/Admin/Web/src/app/AutomaticReplyMessages/AllReplyMessages.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Query Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Query } from '@dolittle/queries';
6 |
7 | export class AllReplyMessages extends Query
8 | {
9 | constructor() {
10 | super();
11 | this.nameOfQuery = 'AllReplyMessages';
12 | this.generatedFrom = 'Read.AutomaticReplyMessages.AllReplyMessages';
13 |
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Admin/Web/src/app/AutomaticReplyMessages/UpdateReplyMessagesConfig.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Command Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Command } from '@dolittle/commands';
6 |
7 | export class UpdateReplyMessagesConfig extends Command
8 | {
9 | constructor() {
10 | super();
11 | this.type = 'f873d1f4-8419-4383-9fc4-4c3373f579a1';
12 |
13 | this.messages = [];
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Admin/Web/src/app/HealthRisks/AllHealthRisks.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Query Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Query } from '@dolittle/queries';
6 |
7 | export class AllHealthRisks extends Query
8 | {
9 | constructor() {
10 | super();
11 | this.nameOfQuery = 'AllHealthRisks';
12 | this.generatedFrom = 'Read.HealthRisks.AllHealthRisks';
13 |
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Admin/Web/src/app/HealthRisks/DeleteHealthRisk.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Command Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Command } from '@dolittle/commands';
6 |
7 | export class DeleteHealthRisk extends Command
8 | {
9 | constructor() {
10 | super();
11 | this.type = '7f5a6601-6a27-4956-afc6-3b1f27bc5a25';
12 |
13 | this.healthRiskId = '00000000-0000-0000-0000-000000000000';
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Admin/Web/src/app/HealthRisks/SetHealthRiskName.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Command Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Command } from '@dolittle/commands';
6 |
7 | export class SetHealthRiskName extends Command
8 | {
9 | constructor() {
10 | super();
11 | this.type = '54b69ddc-5317-4b6d-9c48-dedf01904327';
12 |
13 | this.healthRisk = '00000000-0000-0000-0000-000000000000';
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Admin/Web/src/app/HealthRisks/add-edit-healthRisk/add-edit-healthRisk.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Source/Admin/Web/src/app/HealthRisks/add-edit-healthRisk/add-edit-healthRisk.component.scss
--------------------------------------------------------------------------------
/Source/Admin/Web/src/app/HealthRisks/healthRisk-list/healthRisk-list.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Source/Admin/Web/src/app/HealthRisks/healthRisk-list/healthRisk-list.component.scss
--------------------------------------------------------------------------------
/Source/Admin/Web/src/app/NationalSocieties/AllNationalSocieties.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Query Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Query } from '@dolittle/queries';
6 |
7 | export class AllNationalSocieties extends Query
8 | {
9 | constructor() {
10 | super();
11 | this.nameOfQuery = 'AllNationalSocieties';
12 | this.generatedFrom = 'Read.NationalSocieties.AllNationalSocieties';
13 |
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Admin/Web/src/app/Projects/AllProjects.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Query Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Query } from '@dolittle/queries';
6 |
7 | export class AllProjects extends Query
8 | {
9 | constructor() {
10 | super();
11 | this.nameOfQuery = 'AllProjects';
12 | this.generatedFrom = 'Read.Projects.AllProjects';
13 |
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Admin/Web/src/app/Projects/UpdateProjectHealthRiskThreshold.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Command Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Command } from '@dolittle/commands';
6 |
7 | export class UpdateProjectHealthRiskThreshold extends Command
8 | {
9 | constructor() {
10 | super();
11 | this.type = '30ebc645-9c1f-4887-89e2-34b412401fe2';
12 |
13 | this.threshold = 0;
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Admin/Web/src/app/Projects/add-project/add-project.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Source/Admin/Web/src/app/Projects/add-project/add-project.component.scss
--------------------------------------------------------------------------------
/Source/Admin/Web/src/app/Projects/project-list/project-list.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Source/Admin/Web/src/app/Projects/project-list/project-list.component.scss
--------------------------------------------------------------------------------
/Source/Admin/Web/src/app/Projects/projects.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 |
3 | import { SharedModule } from '../shared/shared.module';
4 | import { ProjectsRouting } from './projects-routing.module';
5 | import { AddProjectComponent } from './add-project/add-project.component';
6 | import { ProjectListComponent } from './project-list/project-list.component';
7 |
8 | @NgModule({
9 | imports: [
10 | ProjectsRouting,
11 | SharedModule
12 | ],
13 | declarations: [
14 | AddProjectComponent,
15 | ProjectListComponent
16 | ]
17 | })
18 |
19 | export class ProjectModule { }
20 |
--------------------------------------------------------------------------------
/Source/Admin/Web/src/app/Tests/CreateHealthRiskTestData.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Command Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Command } from '@dolittle/commands';
6 |
7 | export class CreateHealthRiskTestData extends Command
8 | {
9 | constructor() {
10 | super();
11 | this.type = '269f0087-f2a7-4fce-bfb6-5a136d614201';
12 |
13 | this.id = '00000000-0000-0000-0000-000000000000';
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Admin/Web/src/app/Tests/CreateProjectTestData.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Command Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Command } from '@dolittle/commands';
6 |
7 | export class CreateProjectTestData extends Command
8 | {
9 | constructor() {
10 | super();
11 | this.type = '5f3fb27e-08bb-4156-8323-7535bdf747e2';
12 |
13 | this.id = '00000000-0000-0000-0000-000000000000';
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Admin/Web/src/app/Tests/CreateUserTestData.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Command Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Command } from '@dolittle/commands';
6 |
7 | export class CreateUserTestData extends Command
8 | {
9 | constructor() {
10 | super();
11 | this.type = 'd344314a-8349-405c-96fb-6e39f31b42b5';
12 |
13 | this.id = '00000000-0000-0000-0000-000000000000';
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Admin/Web/src/app/Users/UserById.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Query Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Query } from '@dolittle/queries';
6 |
7 | export class UserById extends Query
8 | {
9 | constructor() {
10 | super();
11 | this.nameOfQuery = 'UserById';
12 | this.generatedFrom = 'Read.Users.UserById';
13 |
14 | this.userId = '00000000-0000-0000-0000-000000000000';
15 | }
16 | }
--------------------------------------------------------------------------------
/Source/Admin/Web/src/app/app.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'cbs-root',
5 | templateUrl: './app.component.html'
6 | })
7 | export class AppComponent {
8 | title = 'cbs';
9 | }
10 |
--------------------------------------------------------------------------------
/Source/Admin/Web/src/app/core/core.module.ts:
--------------------------------------------------------------------------------
1 | import { CommonModule } from '@angular/common';
2 | import { NgModule, Optional, SkipSelf } from '@angular/core';
3 |
4 | import { throwIfAlreadyLoaded } from './module-import-guard';
5 |
6 | @NgModule({
7 | imports: [
8 | CommonModule
9 | ],
10 | providers: [
11 | ],
12 | declarations: []
13 | })
14 |
15 | export class CoreModule {
16 | constructor(@Optional() @SkipSelf() parentModule: CoreModule) {
17 | throwIfAlreadyLoaded(parentModule, 'CoreModule');
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Source/Admin/Web/src/app/core/module-import-guard.ts:
--------------------------------------------------------------------------------
1 | export function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {
2 | if (parentModule) {
3 | throw new Error(`${moduleName} has already been loaded. Import Core modules in the AppModule only.`);
4 | }
5 | }
--------------------------------------------------------------------------------
/Source/Admin/Web/src/app/navigation/navbar-host.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Source/Admin/Web/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Source/Admin/Web/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Source/Admin/Web/src/assets/bootstrap/_theme.scss:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * Copyright (c) 2017 International Federation of Red Cross. All rights reserved.
3 | * Licensed under the MIT License. See LICENSE in the project root for license information.
4 | *--------------------------------------------------------------------------------------------*/
5 |
6 | th{
7 | color: $table-header;
8 | background-color: $table-header-bg;
9 | }
--------------------------------------------------------------------------------
/Source/Admin/Web/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true,
3 | api: '/admin',
4 | appInsightsInstrumentationKey: 'ca4137d7-10b6-4f10-a75b-5b915d96fedb'
5 | };
6 |
--------------------------------------------------------------------------------
/Source/Admin/Web/src/environments/environment.test.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | api: '/admin',
4 | appInsightsInstrumentationKey: '36bdf7e0-884f-4391-8f08-11ebd48b9023'
5 | };
6 |
--------------------------------------------------------------------------------
/Source/Admin/Web/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | // The file contents for the current environment will overwrite these during build.
2 | // The build system defaults to the dev environment which uses `environment.ts`, but if you do
3 | // `ng build --env=prod` then `environment.prod.ts` will be used instead.
4 | // The list of which env maps to which file can be found in `.angular-cli.json`.
5 |
6 | export const environment = {
7 | production: false,
8 | api: 'http://localhost:5001',
9 | appInsightsInstrumentationKey: '36bdf7e0-884f-4391-8f08-11ebd48b9023'
10 | };
11 |
--------------------------------------------------------------------------------
/Source/Admin/Web/src/styles.scss:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * Copyright (c) 2017 International Federation of Red Cross. All rights reserved.
3 | * Licensed under the MIT License. See LICENSE in the project root for license information.
4 | *--------------------------------------------------------------------------------------------*/
5 |
6 | @import 'assets/bootstrap/variables';
7 | @import '../node_modules/bootstrap-sass/assets/stylesheets/_bootstrap';
8 | @import 'assets/bootstrap/theme';
9 |
10 | html {
11 | font-size: 16px;
12 | }
13 |
--------------------------------------------------------------------------------
/Source/Admin/Web/src/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/app",
5 | "baseUrl": "./",
6 | "module": "es2015",
7 | "esModuleInterop": true,
8 | "types": []
9 | },
10 | "exclude": [
11 | "test.ts",
12 | "**/*.spec.ts"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/Source/Admin/Web/src/typings.d.ts:
--------------------------------------------------------------------------------
1 | /* SystemJS module definition */
2 | declare var module: NodeModule;
3 | interface NodeModule {
4 | id: string;
5 | }
6 |
--------------------------------------------------------------------------------
/Source/Admin/bounded-context.json:
--------------------------------------------------------------------------------
1 | {
2 | "application": "fcb9885f-8b19-192e-be61-f966ee1c1640",
3 | "boundedContext": "64b3befc-2fb6-42f9-9e4b-bcb426fffffb",
4 | "boundedContextName": "Admin",
5 | "resources": {
6 | "readModels": {
7 | "production": "MongoDB",
8 | "development": "MongoDB"
9 | },
10 | "eventStore": {
11 | "production": "MongoDB",
12 | "development": "MongoDB"
13 | }
14 | },
15 | "core": {
16 | "language": "csharp"
17 | },
18 | "interaction": []
19 | }
--------------------------------------------------------------------------------
/Source/Alerts/Concepts/Alerts/AlertId.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Text;
5 |
6 | namespace Concepts.Alerts
7 | {
8 | public class AlertId : ConceptAs
9 | {
10 | public static readonly AlertId Empty = Guid.Empty;
11 |
12 | public static implicit operator AlertId(Guid value)
13 | {
14 | return new AlertId { Value = value };
15 | }
16 | public static implicit operator AlertId(string value)
17 | {
18 | return new AlertId { Value = Guid.Parse(value) };
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Source/Alerts/Concepts/Alerts/AlertNumber.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 |
3 | namespace Concepts.Alerts
4 | {
5 | public class AlertNumber : ConceptAs
6 | {
7 | public static implicit operator AlertNumber(uint value)
8 | {
9 | return new AlertNumber { Value = value };
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/Source/Alerts/Concepts/Alerts/AlertStatus.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 |
3 | namespace Concepts.Alerts
4 | {
5 | public enum AlertStatus
6 | {
7 | Open = 0,
8 | Escalated = 1,
9 | Closed = 2,
10 | Dismissed = 3
11 | }
12 | }
--------------------------------------------------------------------------------
/Source/Alerts/Concepts/CaseReports/AgeGroup.cs:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * Copyright (c) The International Federation of Red Cross and Red Crescent Societies. All rights reserved.
3 | * Licensed under the MIT License. See LICENSE in the project root for license information.
4 | *--------------------------------------------------------------------------------------------*/
5 |
6 | namespace Concepts.CaseReports
7 | {
8 | public enum AgeGroup
9 | {
10 | NotSet = 0,
11 | AgeUnder5 = 1,
12 | Age5AndOver = 2
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Source/Alerts/Concepts/CaseReports/Sex.cs:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * Copyright (c) The International Federation of Red Cross and Red Crescent Societies. All rights reserved.
3 | * Licensed under the MIT License. See LICENSE in the project root for license information.
4 | *--------------------------------------------------------------------------------------------*/
5 |
6 | namespace Concepts.CaseReports
7 | {
8 | public enum Sex
9 | {
10 | NotSet = 0,
11 | Male = 1,
12 | Female = 2
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Source/Alerts/Concepts/Concepts.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | true
6 | $(NoWarn);1591
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Source/Alerts/Concepts/DataCollector/Language.cs:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * Copyright (c) The International Federation of Red Cross and Red Crescent Societies. All rights reserved.
3 | * Licensed under the MIT License. See LICENSE in the project root for license information.
4 | *--------------------------------------------------------------------------------------------*/
5 |
6 | namespace Concepts.DataCollector
7 | {
8 | public enum Language
9 | {
10 | English = 0,
11 | French,
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Source/Alerts/Concepts/DataCollector/Sex.cs:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * Copyright (c) The International Federation of Red Cross and Red Crescent Societies. All rights reserved.
3 | * Licensed under the MIT License. See LICENSE in the project root for license information.
4 | *--------------------------------------------------------------------------------------------*/
5 |
6 | namespace Concepts.DataCollector
7 | {
8 | public enum Sex
9 | {
10 | Male = 1,
11 | Female = 2
12 | }
13 | }
--------------------------------------------------------------------------------
/Source/Alerts/Concepts/DataOwners/Email.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 |
3 | namespace Concepts.DataOwners
4 | {
5 | public class Email : ConceptAs
6 | {
7 | public static implicit operator Email(string value)
8 | {
9 | return new Email {Value = value};
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Source/Alerts/Concepts/DataOwners/NameOfDataOwner.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 |
3 | namespace Concepts.DataOwners
4 | {
5 | public class NameOfDataOwner : ConceptAs
6 | {
7 | public static implicit operator NameOfDataOwner(string value)
8 | {
9 | return new NameOfDataOwner {Value = value};
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Source/Alerts/Core/.dolittle/event-horizons.json:
--------------------------------------------------------------------------------
1 | []
2 |
--------------------------------------------------------------------------------
/Source/Alerts/Core/.dolittle/resources.json:
--------------------------------------------------------------------------------
1 | {
2 | "445f8ea8-1a6f-40d7-b2fc-796dba92dc44": {
3 | "readModels": {
4 | "host": "mongodb://localhost:27017",
5 | "database": "read_model_database",
6 | "useSSL": false
7 | },
8 | "eventStore": {
9 | "host": "mongodb://localhost:27017",
10 | "database": "event_store",
11 | "useSSL": false
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Source/Alerts/Core/.dolittle/server.json:
--------------------------------------------------------------------------------
1 | {
2 | "interaction": {
3 | "port": 50052,
4 | "unixSocket": "/var/run/dolittle.interaction.server.sock"
5 | },
6 | "management": {
7 | "port": 50053,
8 | "unixSocket": "/var/run/dolittle.management.server.sock"
9 | }
10 | }
--------------------------------------------------------------------------------
/Source/Alerts/Core/.dolittle/tenant-map.json:
--------------------------------------------------------------------------------
1 | {
2 | "strategy": "hostname",
3 | "fallbackToDeveloperTenant": true,
4 | "configuration": {
5 | "segments": "first"
6 | },
7 | "map": {
8 | "Development": "445f8ea8-1a6f-40d7-b2fc-796dba92dc44"
9 | }
10 | }
--------------------------------------------------------------------------------
/Source/Alerts/Core/.dolittle/tenants.json:
--------------------------------------------------------------------------------
1 | {
2 | "445f8ea8-1a6f-40d7-b2fc-796dba92dc44": {}
3 | }
--------------------------------------------------------------------------------
/Source/Alerts/Core/appsettings.Development.json:
--------------------------------------------------------------------------------
1 | {
2 | "Logging": {
3 | "IncludeScopes": false,
4 | "LogLevel": {
5 | "Default": "Debug",
6 | "System": "Information",
7 | "Microsoft": "Information"
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/Source/Alerts/Core/appsettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "Logging": {
3 | "IncludeScopes": false,
4 | "LogLevel": {
5 | "Default": "Information"
6 | }
7 | }
8 | }
--------------------------------------------------------------------------------
/Source/Alerts/Core/hooks/pre_push:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | REPO_ROOT=../../..
3 | source $REPO_ROOT/Build/docker_cloud/pre_push
4 |
--------------------------------------------------------------------------------
/Source/Alerts/Domain/Alerts/CloseAlert.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Commands;
2 | using System;
3 |
4 | namespace Domain.Alerts
5 | {
6 | public class CloseAlert : ICommand
7 | {
8 | public int AlertNumber { get; set; }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Source/Alerts/Domain/Alerts/CloseAlertBusinessValidator.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Commands.Validation;
2 |
3 | namespace Domain.Alerts
4 | {
5 | public class CloseAlertBusinessValidator : CommandBusinessValidatorFor
6 | {
7 |
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Source/Alerts/Domain/Alerts/CloseAlertInputValidator.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Commands.Validation;
2 |
3 | namespace Domain.Alerts
4 | {
5 | public class CloseAlertInputValidator : CommandInputValidatorFor
6 | {
7 |
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Source/Alerts/Domain/DataOwners/DataOwner.cs:
--------------------------------------------------------------------------------
1 | using Concepts.DataOwners;
2 | using Dolittle.Domain;
3 | using Dolittle.Runtime.Events;
4 | using Events.DataOwners;
5 |
6 | namespace Domain.DataOwners
7 | {
8 | public class DataOwner : AggregateRoot
9 | {
10 | public DataOwner(EventSourceId id) : base(id)
11 | {
12 |
13 | }
14 |
15 | public void RegisterDataOwner(NameOfDataOwner name, Email email)
16 | {
17 | Apply(new DataOwnerRegistered(EventSourceId, name, email));
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Source/Alerts/Domain/DataOwners/RegisterOwnerBusinessValidator.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Commands.Validation;
2 |
3 | namespace Domain.DataOwners
4 | {
5 | public class RegisterOwnerBusinessValidator : CommandBusinessValidatorFor
6 | {
7 |
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Source/Alerts/Domain/DataOwners/RegisterOwnerInputValidator.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Commands.Validation;
2 |
3 | namespace Domain.DataOwners
4 | {
5 | public class RegisterOwnerInputValidator : CommandInputValidatorFor
6 | {
7 |
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Source/Alerts/Domain/Domain.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | true
6 | $(NoWarn);1591
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/Source/Alerts/Domain/Reports/ForcePublishNewCaseReportBusinessValidator.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Commands.Validation;
2 |
3 | namespace Domain.Reports
4 | {
5 | public class ForcePublishNewCaseReportBusinessValidator : CommandBusinessValidatorFor
6 | {
7 |
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Source/Alerts/Domain/Reports/ForcePublishNewCaseReportInputValidator.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Commands.Validation;
2 |
3 | namespace Domain.Reports
4 | {
5 | public class ForcePublishNewCaseReportInputValidator : CommandInputValidatorFor
6 | {
7 |
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Source/Alerts/Events.Admin/Events.Admin.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Source/Alerts/Events.Reporting/Events.Reporting.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Source/Alerts/Events/Alerts/AlertClosed.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Events;
2 | using System;
3 |
4 | namespace Events.Alerts
5 | {
6 | public class AlertClosed : IEvent
7 | {
8 | public AlertClosed(int alertNumber)
9 | {
10 | AlertNumber= alertNumber;
11 | }
12 |
13 | public int AlertNumber { get; }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Source/Alerts/Events/Alerts/ReportAddedToAlert.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Events;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Text;
5 |
6 | namespace Events.Alerts
7 | {
8 | public class ReportAddedToAlert : IEvent
9 | {
10 | public ReportAddedToAlert(Guid reportId, Guid alertId)
11 | {
12 | ReportId = reportId;
13 | AlertId = alertId;
14 | }
15 | public Guid ReportId { get; }
16 | public Guid AlertId { get; }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Source/Alerts/Events/DataOwners/DataOwnerRegistered.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Dolittle.Events;
3 | using Dolittle.Runtime.Events;
4 |
5 | namespace Events.DataOwners
6 | {
7 | public class DataOwnerRegistered : IEvent
8 | {
9 | public Guid Id { get; }
10 | public string Name { get; }
11 | public string Email { get; }
12 |
13 | public DataOwnerRegistered(Guid id, string name, string email)
14 | {
15 | Id = id;
16 | Name = name;
17 | Email = email;
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Source/Alerts/Events/Events.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | true
6 | $(NoWarn);1591
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Source/Alerts/Policies.Specs/for_AlertRules/given/an_aggregate.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Dolittle.Runtime.Events;
3 | using Domain.DataOwners;
4 | using Machine.Specifications;
5 |
6 | namespace Policies.Specs.for_AlertRules.given
7 | {
8 | public class an_aggregate
9 | {
10 | protected static DataOwner event_source;
11 | protected static EventSourceId event_source_id;
12 |
13 | Establish context = () =>
14 | {
15 | event_source_id = Guid.NewGuid();
16 | event_source = new DataOwner(event_source_id);
17 | };
18 | }
19 | }
--------------------------------------------------------------------------------
/Source/Alerts/Policies/Alerts/IMailSender.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace Policies.Alerts
6 | {
7 | public interface IMailSender
8 | {
9 | void Send(string emailTo, string subject, string textBody);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Source/Alerts/Policies/Alerts/MailSenderBinder.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.DependencyInversion;
2 |
3 | namespace Policies.Alerts
4 | {
5 | public class MailSenderBinder : ICanProvideBindings
6 | {
7 | public void Provide(IBindingProviderBuilder builder)
8 | {
9 | builder.Bind().To();
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Source/Alerts/README.md:
--------------------------------------------------------------------------------
1 |
2 | See Readme.md in Web folder on how to run frontend
3 |
4 | -----------
5 |
6 | Currently for triggered alert email is sent using basic SMTP sender.
7 | To make it work please set up following environment variables:
8 | export ALERT_MAILER_FROM=_from@mail.com_
9 | export ALERT_MAILER_HOST=_smtpServerHost_
10 | export ALERT_MAILER_USER=_username_
11 | export ALERT_MAILER_PASSWORD=_password_
12 | export ALERT_MAILER_PORT=_smtpPort_
13 | export ALERT_MAILER_USESSL=_useSsl_
--------------------------------------------------------------------------------
/Source/Alerts/Read/Alerts/AlertOverview.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Concepts.Alerts;
3 | using Concepts.HealthRisks;
4 | using Dolittle.ReadModels;
5 |
6 | namespace Read.Alerts
7 | {
8 | public class AlertOverview : IReadModel
9 | {
10 | public AlertNumber AlertNumber { get; set; }
11 | public HealthRiskNumber HealthRiskNumber { get; set; }
12 | public string HealthRiskName { get; set; }
13 | public int NumberOfReports { get; set; }
14 | public DateTimeOffset OpenedAt { get; set; }
15 | public AlertStatus Status { get; set; }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Source/Alerts/Read/Alerts/Open/OpenAlert.cs:
--------------------------------------------------------------------------------
1 | using Concepts.Alerts;
2 | using Concepts.HealthRisks;
3 | using Dolittle.ReadModels;
4 | using System;
5 | using System.Collections.Generic;
6 | using System.Text;
7 |
8 | namespace Read.Alerts.Open
9 | {
10 | public class OpenAlert : IReadModel
11 | {
12 | public HealthRiskNumber Id { get; set; }
13 | public AlertId AlertId { get; set; }
14 | public AlertNumber AlertNumber { get; set; }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Source/Alerts/Read/DataOwners/DataOwner.cs:
--------------------------------------------------------------------------------
1 | using Concepts.AlertRules;
2 | using Concepts.DataOwners;
3 | using Dolittle.ReadModels;
4 |
5 | namespace Read.DataOwners
6 | {
7 | public class DataOwner : IReadModel
8 | {
9 | public DataOwnerId Id { get; set; }
10 | public Email Email { get; set; }
11 | public NameOfDataOwner Name { get; set; }
12 |
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Source/Alerts/Read/DataOwners/GetDataOwner.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Linq;
3 | using Dolittle.Queries;
4 | using Dolittle.ReadModels;
5 |
6 | namespace Read.DataOwners
7 | {
8 | public class GetDataOwner : IQueryFor
9 | {
10 | readonly IReadModelRepositoryFor _repositoryForDataOwner;
11 |
12 |
13 | public GetDataOwner(IReadModelRepositoryFor repositoryForDataOwner)
14 | {
15 | _repositoryForDataOwner = repositoryForDataOwner;
16 | }
17 |
18 | public IQueryable Query => _repositoryForDataOwner.Query;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Source/Alerts/Read/Read.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | true
6 | $(NoWarn);1591
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Source/Alerts/Read/Reports/AllReports.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Linq;
3 | using Dolittle.Queries;
4 | using Dolittle.ReadModels;
5 |
6 | namespace Read.Reports
7 | {
8 | public class AllReports : IQueryFor
9 | {
10 | readonly IReadModelRepositoryFor _repositoryForReport;
11 |
12 | public AllReports(IReadModelRepositoryFor repositoryForReport)
13 | {
14 | _repositoryForReport = repositoryForReport;
15 | }
16 |
17 | public IQueryable Query => _repositoryForReport.Query;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Source/Alerts/Read/Reports/AvailableForRules/AvailableReport.cs:
--------------------------------------------------------------------------------
1 | using Concepts.Report;
2 | using Dolittle.ReadModels;
3 | using System;
4 | using System.Collections.Generic;
5 | using System.Text;
6 |
7 | namespace Read.Reports.AvailableForRules
8 | {
9 | public class AvailableReport : IReadModel
10 | {
11 | public ReportId Id { get; set; }
12 | public double Latitude { get; set; }
13 | public double Longitude { get; set; }
14 | public DateTimeOffset Timestamp { get; set; }
15 | public Guid HealthRiskId { get; set; }
16 | public int HealthRiskNumber { get; set; }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Source/Alerts/Web/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./node_modules/@dolittle/build.react/.babelrc"
3 | }
--------------------------------------------------------------------------------
/Source/Alerts/Web/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:11.6-stretch AS build
2 | ARG mode=build-test
3 |
4 | # Install dependencies
5 | COPY ./Alerts/Web/package.json /CBS/Source/Alerts/Web/package.json
6 | WORKDIR /CBS/Source/Alerts/Web
7 | RUN yarn install
8 |
9 | # Build production code
10 | COPY ./Alerts/Web /CBS/Source/Alerts/Web
11 | WORKDIR /CBS/Source/Alerts/Web
12 | RUN yarn build
13 |
14 | # Build runtime image
15 | FROM nginx:1.15-alpine
16 | COPY --from=build /CBS/Source/Alerts/Web/nginx-default.conf /etc/nginx/conf.d/default.conf
17 | COPY --from=build /CBS/Source/Alerts/Web/dist /usr/share/nginx/html
18 |
--------------------------------------------------------------------------------
/Source/Alerts/Web/Environments/demo_api.env:
--------------------------------------------------------------------------------
1 | API_BASE_URL=http://demo.cbsrc.org/alerts
2 | MOCK_COORDINATORS=false
--------------------------------------------------------------------------------
/Source/Alerts/Web/Environments/local_api.env:
--------------------------------------------------------------------------------
1 | API_BASE_URL=http://localhost:5000
2 | MOCK_COORDINATORS=false
--------------------------------------------------------------------------------
/Source/Alerts/Web/Environments/mock_api.env:
--------------------------------------------------------------------------------
1 | API_BASE_URL=/
2 | MOCK_COORDINATORS=true
--------------------------------------------------------------------------------
/Source/Alerts/Web/Environments/production.env:
--------------------------------------------------------------------------------
1 | API_BASE_URL=/alerts
2 | MOCK_COORDINATORS=false
--------------------------------------------------------------------------------
/Source/Alerts/Web/Features/AlertRules/AllAlertRules.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Query Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Query } from '@dolittle/queries';
6 |
7 | export class AllAlertRules extends Query
8 | {
9 | constructor() {
10 | super();
11 | this.nameOfQuery = 'AllAlertRules';
12 | this.generatedFrom = 'Read.AlertRules.AllAlertRules';
13 |
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Alerts/Web/Features/AlertRules/DeleteAlertRule.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Command Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Command } from '@dolittle/commands';
6 |
7 | export class DeleteAlertRule extends Command
8 | {
9 | constructor() {
10 | super();
11 | this.type = 'edb15eb4-218d-40f4-bc7f-e5764491f7d8';
12 |
13 | this.id = '00000000-0000-0000-0000-000000000000';
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Alerts/Web/Features/Alerts/AllAlertOverviews.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Query Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Query } from '@dolittle/queries';
6 |
7 | export class AllAlertOverviews extends Query
8 | {
9 | constructor() {
10 | super();
11 | this.nameOfQuery = 'AllAlertOverviews';
12 | this.generatedFrom = 'Read.Alerts.AllAlertOverviews';
13 |
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Alerts/Web/Features/Alerts/CloseAlert.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Command Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Command } from '@dolittle/commands';
6 |
7 | export class CloseAlert extends Command
8 | {
9 | constructor() {
10 | super();
11 | this.type = 'fd844bf3-5a55-47b8-b0ae-da3b64aed1ac';
12 |
13 | this.alertNumber = 0;
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Alerts/Web/Features/DataCollectors/AllDataCollectors.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Query Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Query } from '@dolittle/queries';
6 |
7 | export class AllDataCollectors extends Query
8 | {
9 | constructor() {
10 | super();
11 | this.nameOfQuery = 'AllDataCollectors';
12 | this.generatedFrom = 'Read.DataCollectors.AllDataCollectors';
13 |
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Alerts/Web/Features/DataOwners/GetDataOwner.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Query Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Query } from '@dolittle/queries';
6 |
7 | export class GetDataOwner extends Query
8 | {
9 | constructor() {
10 | super();
11 | this.nameOfQuery = 'GetDataOwner';
12 | this.generatedFrom = 'Read.DataOwners.GetDataOwner';
13 |
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Alerts/Web/Features/Reports/AllReports.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Query Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Query } from '@dolittle/queries';
6 |
7 | export class AllReports extends Query
8 | {
9 | constructor() {
10 | super();
11 | this.nameOfQuery = 'AllReports';
12 | this.generatedFrom = 'Read.Reports.AllReports';
13 |
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Alerts/Web/README.md:
--------------------------------------------------------------------------------
1 | > __Note__: There are currently some issues with dependencies while using `npm`. So for the time being, please use `yarn` instead [see here](https://yarnpkg.com/en/).
2 |
3 | # Start web project
4 | - Go to Source/Alerts/Web do "yarn install"
5 | - Then "yarn start" to build and run for local development. Mock data is used for now
6 |
7 | "yarn build" is used to build for prodction
--------------------------------------------------------------------------------
/Source/Alerts/Web/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Source/Alerts/Web/assets/logo.png
--------------------------------------------------------------------------------
/Source/Alerts/Web/hooks/pre_push:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | REPO_ROOT=../../..
3 | source $REPO_ROOT/Build/docker_cloud/pre_push
4 |
--------------------------------------------------------------------------------
/Source/Alerts/Web/index.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | <%- htmlWebpackPlugin.options.metadata.title %>
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Source/Alerts/Web/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "experimentalDecorators": true
4 | }
5 | }
--------------------------------------------------------------------------------
/Source/Alerts/Web/karma.conf.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | module.exports = require("@dolittle/build/karma.conf.js");
3 |
--------------------------------------------------------------------------------
/Source/Alerts/Web/nginx-default.conf:
--------------------------------------------------------------------------------
1 | server {
2 | listen 80;
3 | server_name localhost;
4 |
5 | location / {
6 | alias /usr/share/nginx/html/;
7 |
8 | # Serve all files in the normal way
9 | location ~ \.[^/]*$ {
10 | }
11 |
12 | # Everything else goes to /index.html
13 | try_files '' /index.html;
14 | }
15 |
16 | error_page 500 502 503 504 /50x.html;
17 | location = /50x.html {
18 | root /usr/share/nginx/html;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Source/Alerts/Web/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Source/Alerts/Web/src/assets/logo.png
--------------------------------------------------------------------------------
/Source/Alerts/Web/src/assets/main.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Main entry Sass file
3 | */
4 |
5 | .alerts {
6 | padding: 2rem;
7 |
8 | button {
9 | margin-right: 20px;
10 | }
11 | }
12 | .alert-menu {
13 | display: flex;
14 | width: 50%;
15 | margin-top: 28px;
16 | margin-left: 166px;
17 | margin-bottom: 20px;
18 | justify-content: flex-start;
19 | }
20 | .menu-button {
21 | text-decoration: none;
22 | text-align: center;
23 | font-size: 16px;
24 | color: #234361;
25 | flex: 1;
26 | }
27 |
--------------------------------------------------------------------------------
/Source/Alerts/Web/src/components/AlertRule.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Table } from 'evergreen-ui';
3 |
4 | const AlertRule = ({ rule }) => {
5 | return (
6 |
7 | {rule.alertRuleName}
8 | {rule.healthRiskId}
9 | {rule.numberOfCasesThreshold}
10 | {rule.thresholdTimeframeInHours}
11 |
12 | );
13 | };
14 |
15 | export default AlertRule;
16 |
--------------------------------------------------------------------------------
/Source/Alerts/Web/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import { Provider } from 'react-redux';
4 | import App from './components/App';
5 | import store from './store';
6 | import './assets/main.scss';
7 |
8 | ReactDOM.render(
9 |
10 |
11 | ,
12 | document.getElementById('root')
13 | );
--------------------------------------------------------------------------------
/Source/Alerts/Web/wallaby.js:
--------------------------------------------------------------------------------
1 | module.exports = require('@dolittle/build.react/wallaby.js')('Features', () => {});
--------------------------------------------------------------------------------
/Source/Alerts/Web/webpack.config.prod.js:
--------------------------------------------------------------------------------
1 | process.env.DOLITTLE_WEBPACK_BASE_URL = '/alerts/'
2 | module.exports = require('./webpack.config.js');
3 |
--------------------------------------------------------------------------------
/Source/Alerts/bounded-context.json:
--------------------------------------------------------------------------------
1 | {
2 | "application": "fcb9885f-8b19-192e-be61-f966ee1c1640",
3 | "boundedContext": "c5e3a9d7-fa1f-f106-7532-5584112f70e2",
4 | "boundedContextName": "Alerts",
5 | "resources": {
6 | "readModels": {
7 | "production": "MongoDB",
8 | "development": "MongoDB"
9 | },
10 | "eventStore": {
11 | "production": "MongoDB",
12 | "development": "MongoDB"
13 | }
14 | },
15 | "core": {
16 | "language": "csharp"
17 | },
18 | "interaction": []
19 | }
--------------------------------------------------------------------------------
/Source/Analytics/.dockerignore:
--------------------------------------------------------------------------------
1 | # Ignore Node modules
2 | **/node_modules/
3 |
4 | # Ignore web binaries
5 | **/Web/dist/
6 |
7 | # Ignore C# binaries
8 | **/bin/
9 | **/obj/
10 | .dockerignore
11 | .env
12 | .git
13 | .gitignore
14 | **/.vs
15 | .vscode
16 | **/.toolstarget
--------------------------------------------------------------------------------
/Source/Analytics/Concepts/Alerts/AlertId.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 | using System;
3 |
4 | namespace Concepts.Alerts
5 | {
6 | public class AlertId : ConceptAs
7 | {
8 | public static implicit operator AlertId(Guid value)
9 | {
10 | return new AlertId {Value = value};
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Source/Analytics/Concepts/Alerts/AlertRuleId.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 | using System;
3 |
4 | namespace Concepts.Alerts
5 | {
6 | public class AlertRuleId : ConceptAs
7 | {
8 | public static implicit operator AlertRuleId(Guid value)
9 | {
10 | return new AlertRuleId {Value = value};
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Source/Analytics/Concepts/CaseReportId.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 | using System;
3 |
4 | namespace Concepts
5 | {
6 | public class CaseReportId : ConceptAs
7 | {
8 | public static readonly CaseReportId NotSet = Guid.Empty;
9 |
10 | public static implicit operator CaseReportId (Guid value)
11 | {
12 | return new CaseReportId { Value = value };
13 | }
14 | public static implicit operator CaseReportId(string id)
15 | {
16 | return new CaseReportId { Value = Guid.Parse(id) };
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Source/Analytics/Concepts/Concepts.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | true
6 | $(NoWarn);1591
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Source/Analytics/Concepts/Constants.cs:
--------------------------------------------------------------------------------
1 | namespace Concepts
2 | {
3 | public class Constants
4 | {
5 | public static string TotalReportsID = "17ef2cc2-bb54-4a54-b5bf-b2f17a0196ca";
6 | }
7 | }
--------------------------------------------------------------------------------
/Source/Analytics/Concepts/DataCollectors/Sex.cs:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * Copyright (c) The International Federation of Red Cross and Red Crescent Societies. All rights reserved.
3 | * Licensed under the MIT License. See LICENSE in the project root for license information.
4 | *--------------------------------------------------------------------------------------------*/
5 |
6 | namespace Concepts.DataCollectors
7 | {
8 | public enum Sex
9 | {
10 | Male = 1,
11 | Female = 2
12 | }
13 | }
--------------------------------------------------------------------------------
/Source/Analytics/Concepts/DistrictId.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 | using System;
3 |
4 | namespace Concepts
5 | {
6 | public class DistrictId : ConceptAs
7 | {
8 | public static implicit operator DistrictId(Guid value)
9 | {
10 | return new DistrictId {Value = value};
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Source/Analytics/Concepts/NumberOfCasereports.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 |
3 | namespace Concepts
4 | {
5 | public class NumberOfCasereports : ConceptAs
6 | {
7 | public static implicit operator NumberOfCasereports(int value)
8 | {
9 | return new NumberOfCasereports {Value = value};
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Source/Analytics/Concepts/RegionId.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 | using System;
3 |
4 | namespace Concepts
5 | {
6 | public class RegionId : ConceptAs
7 | {
8 | public static implicit operator RegionId(Guid value)
9 | {
10 | return new RegionId {Value = value};
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Source/Analytics/Concepts/VillageId.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 | using System;
3 |
4 | namespace Concepts
5 | {
6 | public class VillageId : ConceptAs
7 | {
8 | public static implicit operator VillageId(Guid value)
9 | {
10 | return new VillageId {Value = value};
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Source/Analytics/Core/.dolittle/resources.json:
--------------------------------------------------------------------------------
1 | {
2 | "445f8ea8-1a6f-40d7-b2fc-796dba92dc44": {
3 | "readModels": {
4 | "host": "mongodb://localhost:27017",
5 | "database": "analytics_read_models",
6 | "useSSL": false
7 | },
8 | "eventStore": {
9 | "host": "mongodb://localhost:27017",
10 | "database": "analytics_event_store",
11 | "useSSL": false
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Source/Analytics/Core/.dolittle/server.json:
--------------------------------------------------------------------------------
1 | {
2 | "interaction": {
3 | "port": 50052,
4 | "unixSocket": "/var/run/cbs.analytics.interaction.server.sock"
5 | },
6 | "management": {
7 | "port": 50053,
8 | "unixSocket": "/var/run/cbs.analytics.management.server.sock"
9 | }
10 | }
--------------------------------------------------------------------------------
/Source/Analytics/Core/.dolittle/tenant-map.json:
--------------------------------------------------------------------------------
1 | {
2 | "strategy": "hostname",
3 | "fallbackToDeveloperTenant": true,
4 | "configuration": {
5 | "segments": "first"
6 | },
7 | "map": {
8 | "dev": "445f8ea8-1a6f-40d7-b2fc-796dba92dc44"
9 | }
10 | }
--------------------------------------------------------------------------------
/Source/Analytics/Core/.dolittle/tenants.json:
--------------------------------------------------------------------------------
1 | {
2 | "445f8ea8-1a6f-40d7-b2fc-796dba92dc44": {}
3 | }
--------------------------------------------------------------------------------
/Source/Analytics/Core/appsettings.Development.json:
--------------------------------------------------------------------------------
1 | {
2 | "Logging": {
3 | "IncludeScopes": false,
4 | "LogLevel": {
5 | "Default": "Debug",
6 | "System": "Information",
7 | "Microsoft": "Information"
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/Source/Analytics/Core/appsettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "Logging": {
3 | "IncludeScopes": false,
4 | "LogLevel": {
5 | "Default": "Information"
6 | }
7 | }
8 | }
--------------------------------------------------------------------------------
/Source/Analytics/Events.Admin/Events.Admin.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Source/Analytics/Events.Alerts/Events.Alerts.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Source/Analytics/Events.Reporting/Events.Reporting.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Source/Analytics/Read/CaseReports/AllCaseReportsQuery.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 | using Dolittle.Queries;
3 | using Dolittle.ReadModels;
4 |
5 | namespace Read.CaseReports
6 | {
7 | public class AllCaseReportsQuery : IQueryFor
8 | {
9 | readonly IReadModelRepositoryFor _repositoryForCaseReport;
10 |
11 | public AllCaseReportsQuery(IReadModelRepositoryFor repositoryForCaseReport)
12 | {
13 | _repositoryForCaseReport = repositoryForCaseReport;
14 | }
15 |
16 | public IQueryable Query => _repositoryForCaseReport.Query;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Source/Analytics/Read/DataCollectors/AllRegions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Linq;
3 | using Dolittle.Queries;
4 | using Dolittle.ReadModels;
5 |
6 | namespace Read.DataCollectors
7 | {
8 | public class AllRegions : IQueryFor
9 | {
10 | readonly IReadModelRepositoryFor _repositoryForRegion;
11 |
12 | public AllRegions(IReadModelRepositoryFor repositoryForRegion)
13 | {
14 | _repositoryForRegion = repositoryForRegion;
15 | }
16 |
17 | public IQueryable Query => _repositoryForRegion.Query;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Source/Analytics/Read/Map/CaseReportForMap.cs:
--------------------------------------------------------------------------------
1 | using Concepts;
2 | using Concepts.HealthRisks;
3 |
4 | namespace Read.Map
5 | {
6 | public class CaseReportForMap
7 | {
8 | public HealthRiskName HealthRiskName { get; set; }
9 | public NumberOfPeople NumberOfPeople { get; set; }
10 | public Location Location { get; set; }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Source/Analytics/Read/Map/CaseReportsLast4Weeks.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.ReadModels;
2 | using Concepts;
3 | using Concepts.HealthRisks;
4 | using System.Collections.Generic;
5 | using MongoDB.Bson.Serialization.Attributes;
6 | using MongoDB.Bson.Serialization.Options;
7 |
8 | namespace Read.Map
9 | {
10 | public class CaseReportsLast4Weeks : IReadModel
11 | {
12 | public Day Id { get; set; }
13 |
14 | [BsonDictionaryOptions(DictionaryRepresentation.ArrayOfDocuments)]
15 | public IDictionary> CaseReportsPerHealthRisk { get; set; }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Source/Analytics/Read/Map/CaseReportsLast7Days.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.ReadModels;
2 | using Concepts;
3 | using Concepts.HealthRisks;
4 | using System.Collections.Generic;
5 | using MongoDB.Bson.Serialization.Attributes;
6 | using MongoDB.Bson.Serialization.Options;
7 |
8 | namespace Read.Map
9 | {
10 | public class CaseReportsLast7Days : IReadModel
11 | {
12 | public Day Id { get; set; }
13 | [BsonDictionaryOptions(DictionaryRepresentation.ArrayOfDocuments)]
14 | public IDictionary> CaseReportsPerHealthRisk{ get; set; }
15 | }
16 | }
--------------------------------------------------------------------------------
/Source/Analytics/Read/Map/CaseReportsPerHealthRisk.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Concepts.HealthRisks;
3 |
4 | namespace Read.Map
5 | {
6 | public class CaseReportsPerHealthRisk
7 | {
8 | public HealthRiskName HealthRiskName { get; set; }
9 | public IList CaseReports { get; set; }
10 | }
11 | }
--------------------------------------------------------------------------------
/Source/Analytics/Web/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "plugins": [
3 | ["@babel/plugin-proposal-decorators", { "legacy": true }],
4 | ["@babel/plugin-proposal-class-properties", { "loose": true }],
5 | ["@babel/plugin-proposal-private-methods", { "loose": true }],
6 | "@babel/plugin-transform-async-to-generator"
7 | ],
8 | "presets": [
9 | "@babel/preset-react",
10 | [
11 | "@babel/preset-env",
12 | {
13 | "useBuiltIns":"entry",
14 | "loose": true,
15 | "exclude": [
16 | "transform-regenerator"
17 | ]
18 | }
19 | ]
20 | ]
21 | }
--------------------------------------------------------------------------------
/Source/Analytics/Web/Environments/development.env:
--------------------------------------------------------------------------------
1 | API_BASE_URL=http://localhost:4010
2 | REACT_APP_APP_INSIGHTS_INSTRUMENTATION_KEY=36bdf7e0-884f-4391-8f08-11ebd48b9023
--------------------------------------------------------------------------------
/Source/Analytics/Web/Environments/production.env:
--------------------------------------------------------------------------------
1 | API_BASE_URL=/analytics
2 | REACT_APP_APP_INSIGHTS_INSTRUMENTATION_KEY=ca4137d7-10b6-4f10-a75b-5b915d96fedb
--------------------------------------------------------------------------------
/Source/Analytics/Web/assets/images/rawpixel-653764-unsplash.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Source/Analytics/Web/assets/images/rawpixel-653764-unsplash.jpg
--------------------------------------------------------------------------------
/Source/Analytics/Web/assets/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Source/Analytics/Web/assets/splash.png
--------------------------------------------------------------------------------
/Source/Analytics/Web/dolittle.env:
--------------------------------------------------------------------------------
1 | DOLITTLE_WEB_TITLE=Analytics
2 | DOLITTLE_WEBPACK_BASE_URL=/
--------------------------------------------------------------------------------
/Source/Analytics/Web/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "experimentalDecorators": true
4 | }
5 | }
--------------------------------------------------------------------------------
/Source/Analytics/Web/karma.conf.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | module.exports = require("@dolittle/build/karma.conf.js");
3 |
--------------------------------------------------------------------------------
/Source/Analytics/Web/nginx-default.conf:
--------------------------------------------------------------------------------
1 | server {
2 | listen 80;
3 | server_name localhost;
4 |
5 | location / {
6 | alias /usr/share/nginx/html/;
7 |
8 | # Serve all files in the normal way
9 | location ~ \.[^/]*$ {
10 | }
11 |
12 | # Everything else goes to /index.html
13 | try_files '' /index.html;
14 | }
15 |
16 | error_page 500 502 503 504 /50x.html;
17 | location = /50x.html {
18 | root /usr/share/nginx/html;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Source/Analytics/Web/src/Features/CaseReports/AllCaseReportsQuery.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Query Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Query } from '@dolittle/queries';
6 |
7 | export class AllCaseReportsQuery extends Query
8 | {
9 | constructor() {
10 | super();
11 | this.nameOfQuery = 'AllCaseReportsQuery';
12 | this.generatedFrom = 'Read.CaseReports.AllCaseReportsQuery';
13 |
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Analytics/Web/src/Features/CaseReports/TotalReportsQuery.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Query Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Query } from '@dolittle/queries';
6 |
7 | export class TotalReportsQuery extends Query
8 | {
9 | constructor() {
10 | super();
11 | this.nameOfQuery = 'TotalReportsQuery';
12 | this.generatedFrom = 'Read.CaseReports.TotalReportsQuery';
13 |
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Analytics/Web/src/Features/DataCollectors/AllRegions.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Query Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Query } from '@dolittle/queries';
6 |
7 | export class AllRegions extends Query
8 | {
9 | constructor() {
10 | super();
11 | this.nameOfQuery = 'AllRegions';
12 | this.generatedFrom = 'Read.DataCollectors.AllRegions';
13 |
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Analytics/Web/src/Features/DataCollectors/DataCollectorsQuery.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Query Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Query } from '@dolittle/queries';
6 |
7 | export class DataCollectorsQuery extends Query
8 | {
9 | constructor() {
10 | super();
11 | this.nameOfQuery = 'DataCollectorsQuery';
12 | this.generatedFrom = 'Read.DataCollectors.DataCollectorsQuery';
13 |
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Analytics/Web/src/Features/HealthRisks/AllHealthRisks.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Query Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Query } from '@dolittle/queries';
6 |
7 | export class AllHealthRisks extends Query
8 | {
9 | constructor() {
10 | super();
11 | this.nameOfQuery = 'AllHealthRisks';
12 | this.generatedFrom = 'Read.HealthRisks.AllHealthRisks';
13 |
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Analytics/Web/src/actions/analysisactions.js:
--------------------------------------------------------------------------------
1 | export function updateRange(name, range) {
2 | return dispatch =>
3 | dispatch({ type: "UPDATE_RANGE", payload: range, name: name });
4 | }
5 |
--------------------------------------------------------------------------------
/Source/Analytics/Web/src/assets/colors.scss:
--------------------------------------------------------------------------------
1 | $rc-red: #ca0000;
2 | $rc-red-darker: #ab0900;
3 |
4 | $light-grey: #ece4e4;
5 | $medium-grey: #cfcdcc;
6 | $grey: #808080;
7 |
8 | $link-color: rgb(206, 23, 30);
9 | $gray-lighter: lighten(#000, 50%);
10 |
11 | $brand-primary: #234361;
12 |
--------------------------------------------------------------------------------
/Source/Analytics/Web/src/assets/inclusions.scss:
--------------------------------------------------------------------------------
1 | @import "country-overview.scss";
2 | @import "table.scss";
3 |
--------------------------------------------------------------------------------
/Source/Analytics/Web/src/assets/table.scss:
--------------------------------------------------------------------------------
1 | .tableContainer {
2 | margin-left: 0;
3 | }
4 |
5 | .table {
6 | border: 1px solid $medium-grey;
7 | margin-bottom: 50px;
8 | }
9 |
10 | .tableHead {
11 | background-color: $light-grey;
12 | }
13 |
14 | .headerText {
15 | font-family: "Lato", sans-serif;
16 | color: black !important; //these are marked as !important to override Google's MuiTable styling
17 | padding: 0.3rem !important;
18 | }
19 |
20 | .cell {
21 | font-family: "Lato", sans-serif;
22 | padding: 0 1rem !important;
23 | }
24 |
--------------------------------------------------------------------------------
/Source/Analytics/Web/src/assets/vars.scss:
--------------------------------------------------------------------------------
1 | // Main breakpoints
2 | $screen-sm: 480px;
3 | $screen-md: 768px;
4 | $screen-lg: 1100px;
5 |
6 | $screen-sm-max: $screen-sm;
7 | $screen-md-max: $screen-md;
8 | $screen-lg-max: $screen-lg;
9 |
10 | $baseFontSize: 16;
11 | $baseFontSizeSmall: 14;
12 |
13 | @mixin fontSize($size: $baseFontSize, $rootSize: 16) {
14 | $remValue: ($size / $rootSize) + rem;
15 | $pxValue: $size + px;
16 | font-size: $pxValue;
17 | font-size: $remValue;
18 | }
19 |
--------------------------------------------------------------------------------
/Source/Analytics/Web/src/exports.js:
--------------------------------------------------------------------------------
1 | /**
2 | * This is only used for defining what this module exports
3 | * If you're looking for the index, check the index.js located in the Admin/Web.Frontend root folder
4 | */
5 | import Analytics from './components/Analytics';
6 |
7 | export default Analytics;
8 |
--------------------------------------------------------------------------------
/Source/Analytics/Web/src/reducers/analyticsReducer.js:
--------------------------------------------------------------------------------
1 | const baseState = {
2 | range: {
3 | from: null,
4 | to: null
5 | }
6 | };
7 |
8 | function analytics() {
9 | return (state = baseState, action) => {
10 | switch (action.type) {
11 | case "UPDATE_RANGE": {
12 | return { ...state, range: action.payload };
13 | }
14 | default:
15 | return state;
16 | }
17 | };
18 | }
19 |
20 | export default analytics;
21 |
--------------------------------------------------------------------------------
/Source/Analytics/Web/src/reducers/index.js:
--------------------------------------------------------------------------------
1 | import { combineReducers } from "redux";
2 | import analytics from "./analyticsReducer";
3 |
4 | export default combineReducers({
5 | analytics: analytics()
6 | });
7 |
--------------------------------------------------------------------------------
/Source/Analytics/Web/src/utils/request.js:
--------------------------------------------------------------------------------
1 | export function getJson(url) {
2 | return fetch(url, { method: "GET" }).then(response => response.json());
3 | }
4 |
--------------------------------------------------------------------------------
/Source/Analytics/Web/src/utils/routes.js:
--------------------------------------------------------------------------------
1 | import Analytics from "../components/Analytics";
2 |
3 | export const routes = [
4 | {
5 | component: Analytics,
6 | path: '/analytics/',
7 | exact: false
8 | }
9 | ];
--------------------------------------------------------------------------------
/Source/Analytics/Web/wallaby.js:
--------------------------------------------------------------------------------
1 | const wallaby = require('@dolittle/build.aurelia/wallaby')
2 | module.exports = wallaby('Features');
3 |
--------------------------------------------------------------------------------
/Source/Analytics/bounded-context.json:
--------------------------------------------------------------------------------
1 | {
2 | "application": "fcb9885f-8b19-192e-be61-f966ee1c1640",
3 | "boundedContext": "f5afe568-20f2-e831-7b70-69e224b08af9",
4 | "boundedContextName": "Analytics",
5 | "resources": {
6 | "readModels": {
7 | "production": "MongoDB",
8 | "development": "MongoDB"
9 | },
10 | "eventStore": {
11 | "production": "MongoDB",
12 | "development": "MongoDB"
13 | }
14 | },
15 | "core": {
16 | "language": "csharp"
17 | },
18 | "interaction": []
19 | }
20 |
--------------------------------------------------------------------------------
/Source/Navigation/Web.Angular/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "navigation",
3 | "version": "1.0.3",
4 | "lockfileVersion": 1
5 | }
6 |
--------------------------------------------------------------------------------
/Source/Navigation/Web.Angular/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "navigation",
3 | "version": "1.0.3",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC"
11 | }
12 |
--------------------------------------------------------------------------------
/Source/Navigation/Web.React/.babelrc:
--------------------------------------------------------------------------------
1 | { "plugins": ["@babel/plugin-transform-react-jsx"] }
--------------------------------------------------------------------------------
/Source/Navigation/Web.React/lib/colors.scss:
--------------------------------------------------------------------------------
1 | $rc-red: #ca0000;
2 | $rc-red-darker: #ab0900;
3 |
4 | $light-grey: #ece4e4;
5 | $medium-grey: #cfcdcc;
6 | $grey: #808080;
7 |
8 | $link-color: rgb(206, 23, 30);
9 | $gray-lighter: lighten(#000, 50%);
10 |
11 | $brand-primary: #234361;
12 |
--------------------------------------------------------------------------------
/Source/Navigation/Web.React/lib/vars.scss:
--------------------------------------------------------------------------------
1 | // Main breakpoints
2 | $screen-sm: 480px;
3 | $screen-md: 768px;
4 | $screen-lg: 1100px;
5 |
6 | $screen-sm-max: $screen-sm;
7 | $screen-md-max: $screen-md;
8 | $screen-lg-max: $screen-lg;
9 |
10 | $baseFontSize: 16;
11 | $baseFontSizeSmall: 14;
12 |
13 | @mixin fontSize($size: $baseFontSize, $rootSize: 16) {
14 | $remValue: ($size / $rootSize) + rem;
15 | $pxValue: $size + px;
16 | font-size: $pxValue;
17 | font-size: $remValue;
18 | }
19 |
--------------------------------------------------------------------------------
/Source/Navigation/Web.React/readme.md:
--------------------------------------------------------------------------------
1 | To run:
2 | 1. In this folder, run `npm link`
3 | 2. In the web folder you want to use, run `npm link ../../Web.React` so that you create a reference back to this folder
4 |
5 | To update:
6 | Run `babel index.js lib/index.js`. The node module listens to the transpiled lib-file. As the navbar has no Webpack setup, babel must be called manually to transpile.
--------------------------------------------------------------------------------
/Source/NotificationGateway/Concepts/Concepts.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | true
6 | $(NoWarn);1591
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Concepts/MessageId.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 | using System;
3 |
4 | namespace Concepts
5 | {
6 | public class MessageId : ConceptAs
7 | {
8 | public static implicit operator MessageId(Guid value)
9 | {
10 | return new MessageId {Value = value};
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Concepts/SMS/Gateways/ApiKey.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 |
3 | namespace Concepts.SMS.Gateways
4 | {
5 | public class ApiKey : ConceptAs
6 | {
7 | public static implicit operator ApiKey(string value)
8 | {
9 | return new ApiKey {Value = value};
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Concepts/SMS/Gateways/MessageId.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 |
3 | namespace Concepts.SMS.Gateways
4 | {
5 | public class MessageId : ConceptAs
6 | {
7 | public static implicit operator MessageId(int value)
8 | {
9 | return new MessageId {Value = value};
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Concepts/SMS/Gateways/ModemNumber.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 |
3 | namespace Concepts.SMS.Gateways
4 | {
5 | public class ModemNumber : ConceptAs
6 | {
7 | public static implicit operator ModemNumber(int value)
8 | {
9 | return new ModemNumber {Value = value};
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Concepts/SMS/Gateways/Name.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 |
3 | namespace Concepts.SMS.Gateways
4 | {
5 | public class Name : ConceptAs
6 | {
7 | public static implicit operator Name(string value)
8 | {
9 | return new Name {Value = value};
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Concepts/SMS/Gateways/OID.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 |
3 | namespace Concepts.SMS.Gateways
4 | {
5 | public class OID : ConceptAs
6 | {
7 | public static implicit operator OID(string value)
8 | {
9 | return new OID {Value = value};
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Concepts/SMS/Gateways/SmsGatewayId.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 | using System;
3 |
4 | namespace Concepts.SMS.Gateways
5 | {
6 | public class SmsGatewayId : ConceptAs
7 | {
8 | public static implicit operator SmsGatewayId(Guid value)
9 | {
10 | return new SmsGatewayId {Value = value};
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Concepts/SMS/Gateways/SmsGatewayIdValidator.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Validation;
2 | using FluentValidation;
3 |
4 | namespace Concepts.SMS.Gateways
5 | {
6 | public class SmsGatewayIdValidator : InputValidator
7 | {
8 | public SmsGatewayIdValidator()
9 | {
10 | RuleFor(x => x.Value)
11 | .NotEmpty()
12 | .WithMessage("Sms Gateway Id cannot be empty");
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/NotificationGateway/Concepts/SMS/Message.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 |
3 | namespace Concepts.SMS
4 | {
5 | public class Message : ConceptAs
6 | {
7 | public static implicit operator Message(string value)
8 | {
9 | return new Message {Value = value};
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Concepts/SMS/PhoneNumber.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 |
3 | namespace Concepts.SMS
4 | {
5 | public class PhoneNumber : ConceptAs
6 | {
7 | public static implicit operator PhoneNumber(string value)
8 | {
9 | return new PhoneNumber {Value = value};
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Core/.dolittle/event-horizons.json:
--------------------------------------------------------------------------------
1 | []
2 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Core/.dolittle/resources.json:
--------------------------------------------------------------------------------
1 | {
2 | "445f8ea8-1a6f-40d7-b2fc-796dba92dc44": {
3 | "readModels": {
4 | "host": "mongodb://localhost:27017",
5 | "database": "cbs_notificationgateway_read_models",
6 | "useSSL": false
7 | },
8 | "eventStore": {
9 | "host": "mongodb://localhost:27017",
10 | "database": "cbs_notificationgateway_event_store",
11 | "useSSL": false
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Core/.dolittle/server.json:
--------------------------------------------------------------------------------
1 | {
2 | "interaction": {
3 | "port": 50060,
4 | "unixSocket": "/var/run/cbs.notifications.interaction.server.sock"
5 | },
6 | "management": {
7 | "port": 50160,
8 | "unixSocket": "/var/run/cbs.notifications.management.server.sock"
9 | }
10 | }
--------------------------------------------------------------------------------
/Source/NotificationGateway/Core/.dolittle/tenant-map.json:
--------------------------------------------------------------------------------
1 | {
2 | "strategy": "hostname",
3 | "fallbackToDeveloperTenant": true,
4 | "configuration": {
5 | "segments": "first"
6 | },
7 | "map": {
8 | "Development": "445f8ea8-1a6f-40d7-b2fc-796dba92dc44"
9 | }
10 | }
--------------------------------------------------------------------------------
/Source/NotificationGateway/Core/.dolittle/tenants.json:
--------------------------------------------------------------------------------
1 | {
2 | "445f8ea8-1a6f-40d7-b2fc-796dba92dc44": {}
3 | }
--------------------------------------------------------------------------------
/Source/NotificationGateway/Core/.dolittle/topology.json:
--------------------------------------------------------------------------------
1 | {
2 | "modules": {},
3 | "features": {
4 | "1fe47770-08ec-4642-801c-afc0ccf02fff": {
5 | "name": "SMS",
6 | "subFeatures": {
7 | "1e4338a5-859f-423c-9c4e-a975217ddbd9": {
8 | "name": "Gateways",
9 | "subFeatures": {}
10 | }
11 | }
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/Source/NotificationGateway/Core/GatewayEndpoints/ITenantMapper.cs:
--------------------------------------------------------------------------------
1 | using Concepts.SMS.Gateways;
2 | using Dolittle.Tenancy;
3 |
4 | namespace Core.GatewayEndpoints
5 | {
6 | public interface ITenantMapper
7 | {
8 | TenantId GetTenantFor(ApiKey apiKey);
9 | void SetTenantFor(ApiKey apiKey, TenantId tenantId);
10 | }
11 | }
--------------------------------------------------------------------------------
/Source/NotificationGateway/Core/GatewayEndpoints/SmsEagleSamples/smseagle-1.sample:
--------------------------------------------------------------------------------
1 | POST /notifications/smseagle/incoming HTTP/1.0
2 | Host: localhost:8080
3 | Connection: close
4 | Content-Length: 126
5 | Content-Type: application/x-www-form-urlencoded
6 |
7 | sender=123456789×tamp=20190330194502&text=This+is+an+incoming+sms&msgid=431&oid=&modemno=1&apikey=ThereWillBeAnApiKeyHere
--------------------------------------------------------------------------------
/Source/NotificationGateway/Core/GatewayEndpoints/SmsEagleSamples/smseagle-2.sample:
--------------------------------------------------------------------------------
1 | POST /notifications/smseagle/incoming HTTP/1.0
2 | Host: localhost:8080
3 | Connection: close
4 | Content-Length: 118
5 | Content-Type: application/x-www-form-urlencoded
6 |
7 | sender=%2B4787654321×tamp=20190330194610&text=Random+text&msgid=182&oid=&modemno=1&apikey=ThereWillBeAnApiKeyHere
--------------------------------------------------------------------------------
/Source/NotificationGateway/Core/GatewayEndpoints/SmsEagleSamples/smseagle-3.sample:
--------------------------------------------------------------------------------
1 | POST /notifications/smseagle/incoming HTTP/1.0
2 | Host: localhost:8080
3 | Connection: close
4 | Content-Length: 116
5 | Content-Type: application/x-www-form-urlencoded
6 |
7 | sender=%2B4787654321×tamp=20190330194655&text=1%232%233&msgid=183&oid=&modemno=1&apikey=ThereWillBeAnApiKeyHere
--------------------------------------------------------------------------------
/Source/NotificationGateway/Core/GatewayEndpoints/TenantMapperFileNotAccessible.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 |
4 | namespace Core.GatewayEndpoints
5 | {
6 | public class TenantMapperFileNotAccessible : IOException
7 | {
8 | public TenantMapperFileNotAccessible(string message) : base(message)
9 | {
10 | }
11 |
12 | public TenantMapperFileNotAccessible(string message, Exception innerException) : base(message, innerException)
13 | {
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------
/Source/NotificationGateway/Core/Security/ICanBypassSecurity.cs:
--------------------------------------------------------------------------------
1 |
2 | using Microsoft.AspNetCore.Http;
3 |
4 | namespace Core.Security
5 | {
6 | public interface ICanBypassSecurity
7 | {
8 | bool ShouldBypassSecurity(HttpContext httpContext);
9 | }
10 | }
--------------------------------------------------------------------------------
/Source/NotificationGateway/Core/Security/ISecurityBypassingRequestManager.cs:
--------------------------------------------------------------------------------
1 |
2 | using Microsoft.AspNetCore.Http;
3 |
4 | namespace Core.Security
5 | {
6 | public interface ISecurityBypassingRequestManager
7 | {
8 | bool ShouldBypassSecurity(HttpContext httpContext);
9 | }
10 | }
--------------------------------------------------------------------------------
/Source/NotificationGateway/Core/Security/SecurityBindings.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.DependencyInversion;
2 |
3 | namespace Core.Security
4 | {
5 | public class SecurityBindings : ICanProvideBindings
6 | {
7 | public void Provide(IBindingProviderBuilder builder)
8 | {
9 | builder.Bind().To();
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/Source/NotificationGateway/Core/apikeyToTenant.json:
--------------------------------------------------------------------------------
1 | {"388dd4ff-f3e8-4a67-8324-ed2bacc7955a":"445f8ea8-1a6f-40d7-b2fc-796dba92dc44"}
--------------------------------------------------------------------------------
/Source/NotificationGateway/Core/appsettings.Development.json:
--------------------------------------------------------------------------------
1 | {
2 | "Logging": {
3 | "IncludeScopes": false,
4 | "LogLevel": {
5 | "Default": "Debug",
6 | "System": "Information",
7 | "Microsoft": "Information"
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/Source/NotificationGateway/Core/appsettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "Logging": {
3 | "IncludeScopes": false,
4 | "LogLevel": {
5 | "Default": "Information"
6 | }
7 | }
8 | }
--------------------------------------------------------------------------------
/Source/NotificationGateway/Core/hooks/pre_push:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | REPO_ROOT=../../..
3 | source $REPO_ROOT/Build/docker_cloud/pre_push
4 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Domain/SMS/Gateways/AssignPhoneNumberToSmsGateway.cs:
--------------------------------------------------------------------------------
1 | using Concepts.SMS;
2 | using Concepts.SMS.Gateways;
3 | using Dolittle.Commands;
4 |
5 | namespace Domain.SMS.Gateways
6 | {
7 | public class AssignPhoneNumberToSmsGateway : ICommand
8 | {
9 | public SmsGatewayId SmsGatewayId {get; set;}
10 | public PhoneNumber PhoneNumber {get; set;}
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Domain/SMS/Gateways/ReceiveMessageFromSMSGatewayBusinessValidator.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Commands.Validation;
2 | using FluentValidation;
3 |
4 | namespace Domain.SMS.Gateways
5 | {
6 | public class ReceiveMessageFromSMSGatewayBusinessValidator : CommandBusinessValidatorFor
7 | {
8 | public ReceiveMessageFromSMSGatewayBusinessValidator(SMSGatewayMustBeEnabled beEnabled)
9 | {
10 | RuleFor(_ => _.ApiKey).Must(_ => beEnabled(_)).WithMessage("Messages from disabled gateways are not accepted");
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Domain/SMS/Gateways/ReceiveMessageFromSMSGatewayInputValidator.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Commands.Validation;
2 |
3 | namespace Domain.SMS.Gateways
4 | {
5 | public class ReceiveMessageFromSMSGatewayInputValidator : CommandInputValidatorFor
6 | {
7 |
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Domain/SMS/Gateways/RegisterSmsGateway.cs:
--------------------------------------------------------------------------------
1 | using Concepts.SMS.Gateways;
2 | using Dolittle.Commands;
3 |
4 | namespace Domain.SMS.Gateways
5 | {
6 | public class RegisterSmsGateway : ICommand
7 | {
8 | public SmsGatewayId SmsGatewayId {get; set;}
9 | public Name Name {get; set;}
10 | public ApiKey ApiKey { get; set; }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Domain/SMS/Gateways/Rules.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Concepts.SMS;
3 | using Concepts.SMS.Gateways;
4 |
5 | namespace Domain.SMS.Gateways
6 | {
7 | public delegate bool PhoneNumberNotExists(string number);
8 | public delegate bool SmsGatewayDoesNotExist(Guid id);
9 | public delegate bool SMSGatewayMustBeEnabled(ApiKey apiKey);
10 | }
--------------------------------------------------------------------------------
/Source/NotificationGateway/Domain/SMS/SimulateReceivedMessage.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Commands;
2 | using Concepts;
3 | using Concepts.SMS;
4 | using System;
5 |
6 | namespace Domain.SMS
7 | {
8 | public class SimulateReceivedMessage : ICommand
9 | {
10 | public MessageId Id { get; set; }
11 | public PhoneNumber Sender { get; set;}
12 | public Message Text { get; set; }
13 | public DateTimeOffset Received { get; set; }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Domain/SMS/SimulateReceivedMessageBusinessValidator.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Commands.Validation;
2 |
3 | namespace Domain.SMS
4 | {
5 | public class SimulateReceivedMessageBusinessValidator : CommandBusinessValidatorFor
6 | {
7 |
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Domain/SMS/SimulateReceivedMessageInputValidator.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Commands.Validation;
2 |
3 | namespace Domain.SMS
4 | {
5 | public class SimulateReceivedMessageInputValidator : CommandInputValidatorFor
6 | {
7 |
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Events/Events.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | true
6 | $(NoWarn);1591
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Events/SMS/Gateways/SmsGatewayEnabled.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Dolittle.Events;
3 |
4 | namespace Events.SMS.Gateways
5 | {
6 | public class SmsGatewayEnabled : IEvent
7 | {
8 | public SmsGatewayEnabled(Guid id, bool enabled)
9 | {
10 | Id = id;
11 | Enabled = enabled;
12 | }
13 |
14 | public Guid Id { get; }
15 | public bool Enabled { get; }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Events/SMS/Gateways/SmsGatewayNumberAssigned.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Dolittle.Events;
3 |
4 | namespace Events.SMS.Gateways
5 | {
6 | public class SmsGatewayNumberAssigned : IEvent
7 | {
8 | public Guid Id { get; }
9 | public string PhoneNumber { get; }
10 |
11 | public SmsGatewayNumberAssigned(Guid id, string phoneNumber)
12 | {
13 | this.PhoneNumber = phoneNumber;
14 | this.Id = id;
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Events/SMS/Gateways/SmsGatewayRegistered.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Dolittle.Events;
3 |
4 | namespace Events.SMS.Gateways
5 | {
6 | public class SmsGatewayRegistered : IEvent
7 | {
8 | public SmsGatewayRegistered(
9 | Guid id,
10 | string name,
11 | string apiKey)
12 | {
13 | Id = id;
14 | Name = name;
15 | ApiKey = apiKey;
16 | }
17 |
18 | public Guid Id { get; }
19 | public string Name { get; }
20 | public string ApiKey { get; }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Policies/Policies.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | true
6 | $(NoWarn);1591
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Read/Read.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | true
6 | $(NoWarn);1591
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Read/SMS/Gateways/SmsGateway.cs:
--------------------------------------------------------------------------------
1 | using Concepts.SMS.Gateways;
2 | using Dolittle.ReadModels;
3 |
4 | namespace Read.SMS.Gateways
5 | {
6 | public class SmsGateway : IReadModel
7 | {
8 | public SmsGateway(SmsGatewayId id)
9 | {
10 | Id = id;
11 | }
12 | public SmsGatewayId Id {get; set;}
13 | public string Name {get; set;}
14 | public bool Enabled {get; set;}
15 | public string PhoneNumber {get; set;}
16 | public string ApiKey {get; set;}
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Read/SMS/ReceivedMessage.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Concepts;
3 | using Concepts.SMS;
4 | using Dolittle.ReadModels;
5 |
6 | namespace Read.SMS
7 | {
8 | public class ReceivedMessage : IReadModel
9 | {
10 | public MessageId Id { get; set; }
11 | public PhoneNumber Sender { get; set;}
12 | public Message Text { get; set; }
13 | public DateTimeOffset Received { get; set; }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Web/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./node_modules/@dolittle/build.react/.babelrc"
3 | }
--------------------------------------------------------------------------------
/Source/NotificationGateway/Web/Environments/development.env:
--------------------------------------------------------------------------------
1 | API_BASE_URL=http://localhost:5010
--------------------------------------------------------------------------------
/Source/NotificationGateway/Web/Environments/production.env:
--------------------------------------------------------------------------------
1 | API_BASE_URL=/notifications
--------------------------------------------------------------------------------
/Source/NotificationGateway/Web/Features/SMS/AllReceivedMessages.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Query Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Query } from '@dolittle/queries';
6 |
7 | export class AllReceivedMessages extends Query
8 | {
9 | constructor() {
10 | super();
11 | this.nameOfQuery = 'AllReceivedMessages';
12 | this.generatedFrom = 'Read.SMS.AllReceivedMessages';
13 |
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/NotificationGateway/Web/Features/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './App';
4 |
5 | ReactDOM.render(, document.getElementById('root'));
6 |
7 | module.hot.accept();
--------------------------------------------------------------------------------
/Source/NotificationGateway/Web/README.md:
--------------------------------------------------------------------------------
1 | > __Note__: There are currently some issues with dependencies while using `npm`. So for the time being, please use `yarn` instead [see here](https://yarnpkg.com/en/).
--------------------------------------------------------------------------------
/Source/NotificationGateway/Web/hooks/pre_push:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | REPO_ROOT=../../..
3 | source $REPO_ROOT/Build/docker_cloud/pre_push
4 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Web/index.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | <%- htmlWebpackPlugin.options.metadata.title %>
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Web/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "experimentalDecorators": true
4 | }
5 | }
--------------------------------------------------------------------------------
/Source/NotificationGateway/Web/karma.conf.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | module.exports = require("@dolittle/build/karma.conf.js");
3 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Web/nginx-default.conf:
--------------------------------------------------------------------------------
1 | server {
2 | listen 80;
3 | server_name localhost;
4 |
5 | location / {
6 | alias /usr/share/nginx/html/;
7 |
8 | # Serve all files in the normal way
9 | location ~ \.[^/]*$ {
10 | }
11 |
12 | # Everything else goes to /index.html
13 | try_files '' /index.html;
14 | }
15 |
16 | error_page 500 502 503 504 /50x.html;
17 | location = /50x.html {
18 | root /usr/share/nginx/html;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/Web/wallaby.js:
--------------------------------------------------------------------------------
1 | module.exports = require('@dolittle/build.react/wallaby.js')('Features', () => {});
--------------------------------------------------------------------------------
/Source/NotificationGateway/Web/webpack.config.prod.js:
--------------------------------------------------------------------------------
1 | process.env.DOLITTLE_WEBPACK_BASE_URL = '/notifications/'
2 | module.exports = require('./webpack.config.js');
3 |
--------------------------------------------------------------------------------
/Source/NotificationGateway/bounded-context.json:
--------------------------------------------------------------------------------
1 | {
2 | "application": "fcb9885f-8b19-192e-be61-f966ee1c1640",
3 | "boundedContext": "07f31e26-809d-3e14-3a9c-edc092366924",
4 | "boundedContextName": "NotificationGateway",
5 | "resources": {
6 | "readModels": {
7 | "production": "MongoDB",
8 | "development": "MongoDB"
9 | },
10 | "eventStore": {
11 | "production": "MongoDB",
12 | "development": "MongoDB"
13 | }
14 | },
15 | "core": {
16 | "language": "csharp"
17 | },
18 | "interaction": []
19 | }
--------------------------------------------------------------------------------
/Source/Reporting/Concepts/CaseReports/AgeGroup.cs:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * Copyright (c) The International Federation of Red Cross and Red Crescent Societies. All rights reserved.
3 | * Licensed under the MIT License. See LICENSE in the project root for license information.
4 | *--------------------------------------------------------------------------------------------*/
5 |
6 | namespace Concepts.CaseReports
7 | {
8 | public enum AgeGroup
9 | {
10 | AgeUnder5 = 1,
11 | Age5AndOver = 2
12 | }
13 | }
--------------------------------------------------------------------------------
/Source/Reporting/Concepts/Concepts.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | true
6 | $(NoWarn);1591
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Source/Reporting/Concepts/DataCollectors/Language.cs:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * Copyright (c) The International Federation of Red Cross and Red Crescent Societies. All rights reserved.
3 | * Licensed under the MIT License. See LICENSE in the project root for license information.
4 | *--------------------------------------------------------------------------------------------*/
5 |
6 | namespace Concepts.DataCollectors
7 | {
8 | public enum Language
9 | {
10 | English = 0,
11 | French,
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Source/Reporting/Concepts/DataCollectors/Sex.cs:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * Copyright (c) The International Federation of Red Cross and Red Crescent Societies. All rights reserved.
3 | * Licensed under the MIT License. See LICENSE in the project root for license information.
4 | *--------------------------------------------------------------------------------------------*/
5 |
6 | namespace Concepts.DataCollectors
7 | {
8 | public enum Sex
9 | {
10 | Male = 1,
11 | Female = 2
12 | }
13 | }
--------------------------------------------------------------------------------
/Source/Reporting/Concepts/HealthRisks/HealthRiskName.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 |
3 | namespace Concepts.HealthRisks
4 | {
5 | public class HealthRiskName : ConceptAs
6 | {
7 | public static HealthRiskName NotSet = string.Empty;
8 | public static implicit operator HealthRiskName(string name) => new HealthRiskName { Value = name };
9 | }
10 | }
--------------------------------------------------------------------------------
/Source/Reporting/Concepts/Projects/ProjectName.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 |
3 | namespace Concepts.Projects
4 | {
5 | public class ProjectName : ConceptAs
6 | {
7 | public static implicit operator ProjectName(string value)
8 | {
9 | return new ProjectName { Value = value };
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/Source/Reporting/Concepts/Region.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Concepts;
2 |
3 | namespace Concepts
4 | {
5 | public class Region : ConceptAs
6 | {
7 | public static implicit operator Region(string value)
8 | {
9 | return new Region {Value = value};
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Source/Reporting/Core/.dolittle/event-horizons.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "application": "fcb9885f-8b19-192e-be61-f966ee1c1640",
4 | "boundedContext": "07f31e26-809d-3e14-3a9c-edc092366924",
5 | "url": "localhost:50060",
6 | "events": [
7 | {
8 | "id": "573d4609-fa75-4c2f-8d7c-f7cf7da3de53",
9 | "generation": 1
10 | }
11 | ]
12 | }
13 | ]
--------------------------------------------------------------------------------
/Source/Reporting/Core/.dolittle/resources.json:
--------------------------------------------------------------------------------
1 | {
2 | "445f8ea8-1a6f-40d7-b2fc-796dba92dc44": {
3 | "readModels": {
4 | "host": "mongodb://localhost:27017",
5 | "database": "cbs_reporting_read_models",
6 | "useSSL": false
7 | },
8 | "eventStore": {
9 | "host": "mongodb://localhost:27017",
10 | "database": "cbs_reporting_event_store",
11 | "useSSL": false
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Source/Reporting/Core/.dolittle/server.json:
--------------------------------------------------------------------------------
1 | {
2 | "interaction": {
3 | "port": 50053,
4 | "unixSocket": "/var/run/cbs.reporting.interaction.server.sock"
5 | },
6 | "management": {
7 | "port": 50153,
8 | "unixSocket": "/var/run/cbs.reporting.management.server.sock"
9 | }
10 | }
--------------------------------------------------------------------------------
/Source/Reporting/Core/.dolittle/tenant-map.json:
--------------------------------------------------------------------------------
1 | {
2 | "strategy": "hostname",
3 | "fallbackToDeveloperTenant": true,
4 | "configuration": {
5 | "segments": "first"
6 | },
7 | "map": {
8 | "Development": "445f8ea8-1a6f-40d7-b2fc-796dba92dc44"
9 | }
10 | }
--------------------------------------------------------------------------------
/Source/Reporting/Core/.dolittle/tenants.json:
--------------------------------------------------------------------------------
1 | {
2 | "445f8ea8-1a6f-40d7-b2fc-796dba92dc44": {}
3 | }
--------------------------------------------------------------------------------
/Source/Reporting/Core/CaseReports/ICanExportCaseReports.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using System.Threading.Tasks;
6 | using Read.Reporting.CaseReportsForListing;
7 |
8 | namespace Core.CaseReports
9 | {
10 | public interface ICanExportCaseReports
11 | {
12 | string Format { get; }
13 | string MIMEType { get; }
14 | string FileExtension { get; }
15 | void WriteReportsTo(IEnumerable reports, Stream stream);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Source/Reporting/Core/appsettings.Development.json:
--------------------------------------------------------------------------------
1 | {
2 | "Logging": {
3 | "IncludeScopes": false,
4 | "LogLevel": {
5 | "Default": "Debug",
6 | "System": "Information",
7 | "Microsoft": "Information"
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/Source/Reporting/Core/appsettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "Logging": {
3 | "IncludeScopes": false,
4 | "LogLevel": {
5 | "Default": "Information"
6 | }
7 | }
8 | }
--------------------------------------------------------------------------------
/Source/Reporting/Core/hooks/pre_push:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | REPO_ROOT=../../..
3 | source $REPO_ROOT/Build/docker_cloud/pre_push
4 |
--------------------------------------------------------------------------------
/Source/Reporting/Domain/Management/DataCollectors/Registration/DeleteDataCollector.cs:
--------------------------------------------------------------------------------
1 | using Concepts.DataCollectors;
2 | using Dolittle.Commands;
3 |
4 | namespace Domain.Management.DataCollectors.Registration
5 | {
6 | public class DeleteDataCollector : ICommand
7 | {
8 | public DataCollectorId DataCollectorId { get; set; }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Source/Reporting/Domain/TestData/CaseReports/PopulateCaseReportTestData.cs:
--------------------------------------------------------------------------------
1 | using Dolittle.Commands;
2 |
3 | namespace Domain.TestData.CaseReports
4 | {
5 | public class PopulateCaseReportTestData : ICommand
6 | {
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Source/Reporting/Domain/TestData/Data/HealthRiskTestDataHelper.cs:
--------------------------------------------------------------------------------
1 | using Concepts.HealthRisks;
2 |
3 | namespace Domain.TestData.Data
4 | {
5 | public class HealthRiskTestDataHelper
6 | {
7 | public HealthRiskId Id { get; set; }
8 | public HealthRiskReadableId ReadableId { get; set; }
9 | public HealthRiskName Name { get; set; }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Source/Reporting/Domain/TestData/Data/HealthRisks.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "Id": "9cd3c7b5-6973-45c3-a8d3-58d9eb38824c",
4 | "ReadableId": "2",
5 | "Name": "AWD"
6 | },
7 | {
8 | "Id": "E2A1AE23-F9D6-42B0-81FC-0FF15917C83B",
9 | "ReadableId": "3",
10 | "Name": "Measels"
11 | },
12 | {
13 | "Id": "82DCD6AF-49A5-4D50-AC93-A85229021EB7",
14 | "ReadableId": "6",
15 | "Name": "Bloody diarrhea"
16 | },
17 | {
18 | "Id": "B98231C8-2209-4472-87A6-46F927E6225F",
19 | "ReadableId": "4",
20 | "Name": "Ebola"
21 | }
22 | ]
--------------------------------------------------------------------------------
/Source/Reporting/Events.Admin/Events.Admin.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Source/Reporting/Events.NotificationGateway/Events.NotificationGateway.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Source/Reporting/Events/Events.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | true
6 | $(NoWarn);1591
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Source/Reporting/Reporting.code-workspace:
--------------------------------------------------------------------------------
1 | {
2 | "folders": [
3 | {
4 | "path": "."
5 | },
6 | {
7 | "path": "../Infrastructure"
8 | }
9 | ],
10 | "settings": {}
11 | }
--------------------------------------------------------------------------------
/Source/Reporting/Web/browserslist:
--------------------------------------------------------------------------------
1 | # This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
2 | # For additional information regarding the format and rule options, please see:
3 | # https://github.com/browserslist/browserslist#queries
4 |
5 | # You can see what browsers were selected by your queries by running:
6 | # npx browserslist
7 |
8 | > 0.5%
9 | last 2 versions
10 | Firefox ESR
11 | not dead
12 | not IE 9-11 # For IE 9-11 support, remove 'not'.
--------------------------------------------------------------------------------
/Source/Reporting/Web/hooks/pre_push:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | REPO_ROOT=../../..
3 | source $REPO_ROOT/Build/docker_cloud/pre_push
4 |
--------------------------------------------------------------------------------
/Source/Reporting/Web/nginx-default.conf:
--------------------------------------------------------------------------------
1 | server {
2 | listen 80;
3 | server_name localhost;
4 |
5 | location /datacollectors/ {
6 | alias /usr/share/nginx/html/;
7 |
8 | # Serve all files in the normal way
9 | location ~ \.[^/]*$ {
10 | }
11 |
12 | # Everything else goes to /index.html
13 | try_files '' /reporting/index.html;
14 | }
15 |
16 | error_page 500 502 503 504 /50x.html;
17 | location = /50x.html {
18 | root /usr/share/nginx/html;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/app/Management/DataCollectors/details/details.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Source/Reporting/Web/src/app/Management/DataCollectors/details/details.scss
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/app/Management/DataCollectors/edit/edit.scss:
--------------------------------------------------------------------------------
1 | #dataCollectorLocation {
2 | height: 300px;
3 | }
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/app/Management/DataCollectors/export/export.scss:
--------------------------------------------------------------------------------
1 | form table {
2 | border-spacing: 1em;
3 | border-collapse: separate;
4 | }
5 |
6 | form table label {
7 | font-weight: normal;
8 | margin-bottom: 0;
9 | }
10 |
11 | form table input[type=radio] {
12 | margin-left: 0.5em;
13 | }
14 |
15 | form table tr {
16 | vertical-align: top;
17 | }
18 |
19 | form table.fieldTable {
20 | border-spacing: 0;
21 | }
22 |
23 | form table.fieldTable label {
24 | margin-right: 2em;
25 | }
26 |
27 | div.actions {
28 | text-align: right;
29 | }
30 |
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/app/Management/DataCollectors/list/list.scss:
--------------------------------------------------------------------------------
1 | .header {
2 | h2 {
3 | display: inline-block;
4 | }
5 |
6 | a {
7 | float: right;
8 | display: inline-block;
9 | line-height: 63px;
10 | margin: 8px 4px;
11 | }
12 | }
13 |
14 | .alert-danger {
15 | padding: 10px;
16 | margin: 10px 0;
17 | }
18 |
19 | .action-cell {
20 | margin-right: 5px;
21 | cursor: pointer;
22 | }
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/app/Management/DataCollectors/register/register.scss:
--------------------------------------------------------------------------------
1 | agm-map {
2 | height: 300px;
3 | }
4 | .lat {
5 | margin-right: 10px;
6 | }
7 | .lng {
8 | margin-left: 10px;
9 | margin-right: 10px;
10 | }
11 | .map-container {
12 | margin-bottom: 15px;
13 | }
14 | #mapid {
15 | height: 300px;
16 | }
17 |
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/app/Management/Language.ts:
--------------------------------------------------------------------------------
1 | export enum Language {
2 | English = 0,
3 | French
4 | }
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/app/Management/Location.ts:
--------------------------------------------------------------------------------
1 | export class Location {
2 |
3 | latitude: number;
4 | longitude: number;
5 |
6 | constructor() {
7 | this.latitude = -1;
8 | this.longitude = -1;
9 | }
10 | }
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/app/Management/Sex.ts:
--------------------------------------------------------------------------------
1 | export enum Sex {
2 | Male = 1,
3 | Female = 2
4 | };
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/app/Management/Tests/CreateDataCollectorTestData.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Command Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Command } from '@dolittle/commands';
6 |
7 | export class CreateDataCollectorTestData extends Command
8 | {
9 | constructor() {
10 | super();
11 | this.type = '8d7bc6a3-c8fb-487f-84f2-c133057074d9';
12 |
13 | }
14 | }
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/app/Reporting/CaseReports/TestData/PopulateCaseReportTestData.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Command Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Command } from '@dolittle/commands';
6 |
7 | export class PopulateCaseReportTestData extends Command
8 | {
9 | constructor() {
10 | super();
11 | this.type = 'e2426d26-5715-48ec-97cf-2d64fac66643';
12 |
13 | }
14 | }
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/app/Reporting/CaseReportsForListing/export/case-report-export.component.scss:
--------------------------------------------------------------------------------
1 | form {
2 | h3 {
3 | font-size: 2rem;
4 | }
5 |
6 | .format-options {
7 | margin: 1rem 0;
8 | }
9 |
10 | label {
11 | cursor: pointer;
12 | padding: 1rem;
13 | }
14 | }
15 |
16 | div.actions {
17 | text-align: right;
18 | }
19 |
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/app/Reporting/CaseReportsForListing/sort/sortable-column.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{column.description}}
4 |
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/app/Reporting/HealthRisks/AllHealthRisks.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Query Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Query } from '@dolittle/queries';
6 |
7 | export class AllHealthRisks extends Query
8 | {
9 | constructor() {
10 | super();
11 | this.nameOfQuery = 'AllHealthRisks';
12 | this.generatedFrom = 'Read.Reporting.HealthRisks.AllHealthRisks';
13 |
14 | }
15 | }
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/app/TestData/CaseReports/PopulateCaseReportTestData.js:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------------------------
2 | * This file is an automatically generated Command Proxy
3 | *
4 | *--------------------------------------------------------------------------------------------*/
5 | import { Command } from '@dolittle/commands';
6 |
7 | export class PopulateCaseReportTestData extends Command
8 | {
9 | constructor() {
10 | super();
11 | this.type = '79c674e6-6f04-476a-8608-1ddfcde8f702';
12 |
13 | }
14 | }
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/app/app.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'cbs-root',
5 | templateUrl: './app.component.html'
6 | })
7 | export class AppComponent {
8 | title = 'cbs';
9 | }
10 |
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/app/navigation/navbar-host.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IFRCGo/cbs/d8b6d66d08ddee9401bc01d2495848409ab535fb/Source/Reporting/Web/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/assets/bootstrap/_theme.scss:
--------------------------------------------------------------------------------
1 | th{
2 | color: $table-header;
3 | background-color: $table-header-bg;
4 | }
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true,
3 | api: 'http://dev.cbsrc.org/reporting',
4 | appInsightsInstrumentationKey: 'ca4137d7-10b6-4f10-a75b-5b915d96fedb'
5 | };
6 |
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/environments/environment.test.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | api: '/reporting',
4 | appInsightsInstrumentationKey: '36bdf7e0-884f-4391-8f08-11ebd48b9023'
5 | };
6 |
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | // The file contents for the current environment will overwrite these during build.
2 | // The build system defaults to the dev environment which uses `environment.ts`, but if you do
3 | // `ng build --env=prod` then `environment.prod.ts` will be used instead.
4 | // The list of which env maps to which file can be found in `.angular-cli.json`.
5 |
6 | export const environment = {
7 | production: false,
8 | api: 'http://localhost:5003',
9 | appInsightsInstrumentationKey: '36bdf7e0-884f-4391-8f08-11ebd48b9023'
10 | };
11 |
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/styles.scss:
--------------------------------------------------------------------------------
1 | @import 'assets/bootstrap/variables';
2 | @import '../node_modules/bootstrap-sass/assets/stylesheets/_bootstrap';
3 | @import 'assets/bootstrap/theme';
4 |
5 | form { // TODO: Style the user-form with properly scoped CSS
6 | max-width: 768px;
7 | margin: 0 auto;
8 | }
9 |
10 | .form-group {
11 | select,
12 | input {
13 | background-color: #fafafa;
14 | border: 1px solid #363534;
15 | border-radius: 0 ;
16 | }
17 | }
18 |
19 | .back-button {
20 | display: block;
21 | margin: 20px 0;
22 | }
23 |
24 | html {
25 | font-size: 16px;
26 | }
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/app",
5 | "baseUrl": "./",
6 | "types": []
7 | },
8 | "exclude": [
9 | "test.ts",
10 | "**/*.spec.ts"
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/Source/Reporting/Web/src/typings.d.ts:
--------------------------------------------------------------------------------
1 | /* SystemJS module definition */
2 | declare var module: NodeModule;
3 | interface NodeModule {
4 | id: string;
5 | }
6 |
--------------------------------------------------------------------------------
/Source/Reporting/Web/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compileOnSave": false,
3 | "compilerOptions": {
4 | "importHelpers": true,
5 | "outDir": "./dist/out-tsc",
6 | "sourceMap": true,
7 | "declaration": false,
8 | "moduleResolution": "node",
9 | "emitDecoratorMetadata": true,
10 | "experimentalDecorators": true,
11 | "target": "es2015",
12 | "allowJs": true,
13 | "typeRoots": [
14 | "node_modules/@types"
15 | ],
16 | "lib": [
17 | "es2017",
18 | "dom"
19 | ],
20 | "module": "esnext",
21 | "baseUrl": "./"
22 | }
23 | }
--------------------------------------------------------------------------------
/Source/Reporting/bounded-context.json:
--------------------------------------------------------------------------------
1 | {
2 | "application": "fcb9885f-8b19-192e-be61-f966ee1c1640",
3 | "boundedContext": "da2a4710-06fa-8660-bf95-81dd95606f63",
4 | "boundedContextName": "Reporting",
5 | "resources": {
6 | "readModels": {
7 | "production": "MongoDB",
8 | "development": "MongoDB"
9 | },
10 | "eventStore": {
11 | "production": "MongoDB",
12 | "development": "MongoDB"
13 | }
14 | },
15 | "core": {
16 | "language": "csharp"
17 | },
18 | "interaction": []
19 | }
--------------------------------------------------------------------------------
/Source/application.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "fcb9885f-8b19-192e-be61-f966ee1c1640",
3 | "name": "CBS"
4 | }
5 |
--------------------------------------------------------------------------------
/VERSION:
--------------------------------------------------------------------------------
1 | 1.0
2 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-cayman
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "lockfileVersion": 1
3 | }
4 |
--------------------------------------------------------------------------------