Full Code of NHadi/Pos for AI

master a25a4fc45038 cached
901 files
11.5 MB
3.1M tokens
2598 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (12,353K chars total). Download the full file to get everything.
Repository: NHadi/Pos
Branch: master
Commit: a25a4fc45038
Files: 901
Total size: 11.5 MB

Directory structure:
gitextract_8v0gs2bh/

├── .circleci/
│   └── config.yml
├── .gitignore
├── README.md
└── src/
    ├── .dockerignore
    ├── Pos.Customer.Domain/
    │   ├── CustomerAggregate/
    │   │   ├── ICustomerRepository.cs
    │   │   └── MstCustomer.cs
    │   └── Pos.Customer.Domain.csproj
    ├── Pos.Customer.Infrastructure/
    │   ├── EventSources/
    │   │   ├── POSCustomerEventContext.cs
    │   │   └── POSCustomerEventContextSetting.cs
    │   ├── POSCustomerContext.cs
    │   ├── Pos.Customer.Infrastructure.csproj
    │   └── Repositories/
    │       └── CustomeRepository.cs
    ├── Pos.Customer.WebApi/
    │   ├── Application/
    │   │   ├── Commands/
    │   │   │   ├── CreateCustomerCommand.cs
    │   │   │   ├── CreateCustomerCommandHandler.cs
    │   │   │   ├── DeleteCustomerCommand.cs
    │   │   │   ├── DeleteCustomerCommandHandler.cs
    │   │   │   ├── UpdateCustomerCommand.cs
    │   │   │   └── UpdateCustomerCommandHandler.cs
    │   │   ├── EventHandlers/
    │   │   │   ├── CustomerCreateEventHandler.cs
    │   │   │   ├── CustomerDeleteEventHandler.cs
    │   │   │   └── CustomerUpdateEventHandler.cs
    │   │   └── Queries/
    │   │       ├── CustomerQueries.cs
    │   │       └── ICustomerQueries.cs
    │   ├── ApplicationBootsraper.cs
    │   ├── Controllers/
    │   │   ├── CustomerController.cs
    │   │   └── ValuesController.cs
    │   ├── Dockerfile
    │   ├── Dockerfile.original
    │   ├── Mapping/
    │   │   ├── CommandToEventMapperProfile.cs
    │   │   ├── DomainToCommandMapperProfile.cs
    │   │   └── EventoDomainMapperProfile.cs
    │   ├── Pos.Customer.WebApi.csproj
    │   ├── Program.cs
    │   ├── Properties/
    │   │   └── launchSettings.json
    │   ├── SeedingData/
    │   │   └── DbSeeder.cs
    │   ├── Startup.cs
    │   ├── appsettings.Development.json
    │   └── appsettings.json
    ├── Pos.Event.Contracts/
    │   ├── AppGlobalTopic.cs
    │   ├── Pos.Event.Contracts.csproj
    │   ├── customer/
    │   │   ├── CustomerCreatedEvent.cs
    │   │   ├── CustomerDeletedEvent.cs
    │   │   └── CustomerUpdatedEvent.cs
    │   ├── order/
    │   │   ├── OrderCancelledEvent.cs
    │   │   ├── OrderCreatedEvent.cs
    │   │   ├── OrderDetailCreatedEvent.cs
    │   │   ├── OrderShippedEvent.cs
    │   │   └── OrderValidatedEvent.cs
    │   └── product/
    │       ├── ProductCategoryCreatedEvent.cs
    │       ├── ProductCategoryDeletedEvent.cs
    │       ├── ProductCategoryUpdatedEvent.cs
    │       ├── ProductCreatedEvent.cs
    │       ├── ProductDeletedEvent.cs
    │       └── ProductUpdatedEvent.cs
    ├── Pos.Gateway/
    │   ├── Controllers/
    │   │   └── ValuesController.cs
    │   ├── Dockerfile
    │   ├── Pos.Gateway.csproj
    │   ├── Program.cs
    │   ├── Properties/
    │   │   └── launchSettings.json
    │   ├── Startup.cs
    │   ├── appsettings.Development.json
    │   ├── appsettings.json
    │   └── configuration.json
    ├── Pos.Gateway.Securities/
    │   ├── Application/
    │   │   ├── AuthService.cs
    │   │   └── IAuthService.cs
    │   ├── Controllers/
    │   │   └── AuthController.cs
    │   ├── Dockerfile
    │   ├── Models/
    │   │   ├── Authentication.cs
    │   │   └── SecurityToken.cs
    │   ├── Pos.Gateway.Securities.csproj
    │   ├── Program.cs
    │   ├── Properties/
    │   │   └── launchSettings.json
    │   ├── Startup.cs
    │   ├── appsettings.Development.json
    │   └── appsettings.json
    ├── Pos.Order.Domain/
    │   ├── OrderAggregate/
    │   │   ├── Contract/
    │   │   │   └── IOrderRepository.cs
    │   │   ├── MstOrder.cs
    │   │   └── OrderDetail.cs
    │   └── Pos.Order.Domain.csproj
    ├── Pos.Order.Infrastructure/
    │   ├── EventSources/
    │   │   ├── POSOrderEventContext.cs
    │   │   └── POSOrderEventContextSetting.cs
    │   ├── POSOrderContext.cs
    │   ├── Pos.Order.Infrastructure.csproj
    │   ├── Repositories/
    │   │   └── OrderRepository.cs
    │   └── efpt.config.json
    ├── Pos.Order.WebApi/
    │   ├── Application/
    │   │   ├── Commands/
    │   │   │   ├── CreateOrderCommand.cs
    │   │   │   └── CreateOrderCommandHandler.cs
    │   │   ├── DTO/
    │   │   │   ├── CreateOrderDetailRequest.cs
    │   │   │   ├── CreateOrderHeaderRequest.cs
    │   │   │   ├── DetailOrderLineItemResponse.cs
    │   │   │   └── DetailOrderResponse.cs
    │   │   ├── EventHandlers/
    │   │   │   ├── OrderCanceledEventHandler.cs
    │   │   │   ├── OrderShippedEventHandler.cs
    │   │   │   └── OrderValidatedEventHandler.cs
    │   │   └── Queries/
    │   │       ├── IOrderQueries.cs
    │   │       └── OrderQueries.cs
    │   ├── ApplicationBootsraper.cs
    │   ├── Controllers/
    │   │   ├── OrderController.cs
    │   │   └── ValuesController.cs
    │   ├── Dockerfile
    │   ├── Dockerfile.original
    │   ├── Mapping/
    │   │   ├── AllToDtoMapperProfile.cs
    │   │   ├── CommandToEventMapperProfile.cs
    │   │   ├── DomainToCommandMapperProfile.cs
    │   │   ├── DtotoAllMapperProfile.cs
    │   │   └── EventoDomainMapperProfile.cs
    │   ├── Pos.Order.WebApi.csproj
    │   ├── Program.cs
    │   ├── Properties/
    │   │   └── launchSettings.json
    │   ├── SeedingData/
    │   │   └── DbSeeder.cs
    │   ├── Startup.cs
    │   ├── appsettings.Development.json
    │   └── appsettings.json
    ├── Pos.Product.Domain/
    │   ├── Pos.Product.Domain.csproj
    │   └── ProductAggregate/
    │       ├── Contracts/
    │       │   ├── IProductCategoryRepository.cs
    │       │   └── IProductRepository.cs
    │       ├── MstProduct.cs
    │       └── ProductCategory.cs
    ├── Pos.Product.Infrastructure/
    │   ├── EventSources/
    │   │   ├── POSProductEventContext.cs
    │   │   └── POSProductEventContextSetting.cs
    │   ├── POSProductContext.cs
    │   ├── Pos.Product.Infrastructure.csproj
    │   └── Repositories/
    │       ├── ProductCategoryRepository.cs
    │       └── ProductRepository.cs
    ├── Pos.Product.WebApi/
    │   ├── Application/
    │   │   ├── Commands/
    │   │   │   ├── CreateProductCommand.cs
    │   │   │   ├── CreateProductCommandHandler.cs
    │   │   │   ├── DeleteProductCommand.cs
    │   │   │   ├── DeleteProductCommandHandler.cs
    │   │   │   ├── ProductCategories/
    │   │   │   │   ├── CreateProductCategoryCommand.cs
    │   │   │   │   ├── CreateProductCategoryCommandHandler.cs
    │   │   │   │   ├── DeleteProductCategoryCommand.cs
    │   │   │   │   ├── DeleteProductCategoryCommandHandler.cs
    │   │   │   │   ├── UpdateProductCategoryCommand.cs
    │   │   │   │   └── UpdateProductCategoryCommandHandler.cs
    │   │   │   ├── UpdateProductCommand.cs
    │   │   │   └── UpdateProductCommandHandler.cs
    │   │   ├── EventHandlers/
    │   │   │   ├── ProductCategories/
    │   │   │   │   ├── ProductCategoryCreateEventHandler.cs
    │   │   │   │   ├── ProductCategoryDeleteEventHandler.cs
    │   │   │   │   └── ProductCategoryUpdateEventHandler.cs
    │   │   │   ├── ProductCreateEventHandler.cs
    │   │   │   ├── ProductDeleteEventHandler.cs
    │   │   │   ├── ProductUpdateEventHandler.cs
    │   │   │   └── SagaPattern/
    │   │   │       └── OrderCreatedEventHandler.cs
    │   │   └── Queries/
    │   │       ├── IProductCategoryQueries.cs
    │   │       ├── IProductQueries.cs
    │   │       ├── ProductCategoryQueries.cs
    │   │       └── ProductQueries.cs
    │   ├── ApplicationBootsraper.cs
    │   ├── Controllers/
    │   │   ├── ProductCategoryController.cs
    │   │   ├── ProductController.cs
    │   │   └── ValuesController.cs
    │   ├── Dockerfile
    │   ├── Mapping/
    │   │   ├── CommandToEventMapperProfile.cs
    │   │   ├── DomainToCommandMapperProfile.cs
    │   │   └── EventToDomainMapperProfile.cs
    │   ├── Pos.Product.WebApi.csproj
    │   ├── Program.cs
    │   ├── Properties/
    │   │   └── launchSettings.json
    │   ├── SeedingData/
    │   │   └── DbSeeder.cs
    │   ├── Startup.cs
    │   ├── appsettings.Development.json
    │   └── appsettings.json
    ├── Pos.Report.Domain/
    │   ├── Class1.cs
    │   └── Pos.Report.Domain.csproj
    ├── Pos.Report.Infrastructure/
    │   ├── Class1.cs
    │   └── Pos.Report.Infrastructure.csproj
    ├── Pos.Report.WebApi/
    │   ├── Controllers/
    │   │   └── ValuesController.cs
    │   ├── Dockerfile
    │   ├── Dockerfile.original
    │   ├── Pos.Report.WebApi.csproj
    │   ├── Program.cs
    │   ├── Properties/
    │   │   └── launchSettings.json
    │   ├── Startup.cs
    │   ├── appsettings.Development.json
    │   └── appsettings.json
    ├── Pos.WebApplication/
    │   ├── ApplicationBootsraper.cs
    │   ├── Areas/
    │   │   ├── Master/
    │   │   │   ├── Controllers/
    │   │   │   │   ├── CustomerController.cs
    │   │   │   │   ├── ProductCategoryController.cs
    │   │   │   │   └── ProductController.cs
    │   │   │   └── Views/
    │   │   │       ├── Customer/
    │   │   │       │   └── Index.cshtml
    │   │   │       ├── Product/
    │   │   │       │   └── Index.cshtml
    │   │   │       └── ProductCategory/
    │   │   │           └── Index.cshtml
    │   │   ├── Order/
    │   │   │   ├── Controllers/
    │   │   │   │   └── ItemController.cs
    │   │   │   └── Views/
    │   │   │       └── Item/
    │   │   │           └── Index.cshtml
    │   │   └── Reports/
    │   │       ├── Controllers/
    │   │       │   └── TransactionController.cs
    │   │       └── Views/
    │   │           └── Transaction/
    │   │               └── Index.cshtml
    │   ├── Controllers/
    │   │   ├── AuthController.cs
    │   │   └── HomeController.cs
    │   ├── Dockerfile
    │   ├── HealthChecks/
    │   │   ├── CustomerServicesHc.cs
    │   │   ├── OrderServicesHc .cs
    │   │   ├── ProductServicesHc.cs
    │   │   └── ReportServicesHc.cs
    │   ├── Models/
    │   │   ├── ErrorViewModel.cs
    │   │   └── MenuItem.cs
    │   ├── Pos.WebApplication.csproj
    │   ├── Program.cs
    │   ├── Properties/
    │   │   └── launchSettings.json
    │   ├── Startup.cs
    │   ├── Utilities/
    │   │   ├── HttpCheck.cs
    │   │   └── IHttpCheck.cs
    │   ├── ViewComponents/
    │   │   ├── FooterViewComponent.cs
    │   │   ├── HeaderViewComponent.cs
    │   │   ├── MenuViewComponent.cs
    │   │   ├── RightSidebarViewComponent.cs
    │   │   ├── ThemeScriptsViewComponent.cs
    │   │   └── TopBarViewComponent.cs
    │   ├── Views/
    │   │   ├── Auth/
    │   │   │   └── Index.cshtml
    │   │   ├── Home/
    │   │   │   ├── Index.cshtml
    │   │   │   └── Privacy.cshtml
    │   │   ├── Shared/
    │   │   │   ├── Components/
    │   │   │   │   ├── Footer/
    │   │   │   │   │   └── Default.cshtml
    │   │   │   │   ├── Header/
    │   │   │   │   │   └── Default.cshtml
    │   │   │   │   ├── Menu/
    │   │   │   │   │   └── Default.cshtml
    │   │   │   │   ├── RightSidebar/
    │   │   │   │   │   └── Default.cshtml
    │   │   │   │   ├── ThemeScripts/
    │   │   │   │   │   └── Default.cshtml
    │   │   │   │   └── TopBar/
    │   │   │   │       └── Default.cshtml
    │   │   │   ├── Error.cshtml
    │   │   │   ├── _CookieConsentPartial.cshtml
    │   │   │   ├── _Layout.cshtml
    │   │   │   ├── _LayoutAuth.cshtml
    │   │   │   └── _ValidationScriptsPartial.cshtml
    │   │   ├── _ViewImports.cshtml
    │   │   └── _ViewStart.cshtml
    │   ├── appsettings.Development.json
    │   ├── appsettings.json
    │   ├── healthchecksdb
    │   └── wwwroot/
    │       ├── css/
    │       │   └── site.css
    │       ├── js/
    │       │   └── site.js
    │       ├── lib/
    │       │   ├── bootstrap/
    │       │   │   ├── LICENSE
    │       │   │   └── dist/
    │       │   │       ├── css/
    │       │   │       │   ├── bootstrap-grid.css
    │       │   │       │   ├── bootstrap-reboot.css
    │       │   │       │   └── bootstrap.css
    │       │   │       └── js/
    │       │   │           ├── bootstrap.bundle.js
    │       │   │           └── bootstrap.js
    │       │   ├── jquery/
    │       │   │   ├── LICENSE.txt
    │       │   │   └── dist/
    │       │   │       └── jquery.js
    │       │   ├── jquery-validation/
    │       │   │   ├── LICENSE.md
    │       │   │   └── dist/
    │       │   │       ├── additional-methods.js
    │       │   │       └── jquery.validate.js
    │       │   └── jquery-validation-unobtrusive/
    │       │       ├── LICENSE.txt
    │       │       └── jquery.validate.unobtrusive.js
    │       └── theme2-assets/
    │           ├── css/
    │           │   ├── icons.css
    │           │   └── style.css
    │           ├── fonts/
    │           │   ├── FontAwesome.otf
    │           │   └── typicons.less
    │           ├── js/
    │           │   ├── detect.js
    │           │   ├── fastclick.js
    │           │   ├── jquery.app.js
    │           │   ├── jquery.blockUI.js
    │           │   ├── jquery.core.js
    │           │   ├── jquery.nicescroll.js
    │           │   ├── jquery.slimscroll.js
    │           │   └── waves.js
    │           ├── pages/
    │           │   ├── autocomplete.js
    │           │   ├── datatables.editable.init.js
    │           │   ├── datatables.init.js
    │           │   ├── easy-pie-chart.init.js
    │           │   ├── form-validation-init.js
    │           │   ├── jquery.bs-table.js
    │           │   ├── jquery.c3-chart.init.js
    │           │   ├── jquery.chartist.init.js
    │           │   ├── jquery.chartjs.init.js
    │           │   ├── jquery.charts-sparkline.js
    │           │   ├── jquery.chat.js
    │           │   ├── jquery.codemirror.init.js
    │           │   ├── jquery.dashboard.js
    │           │   ├── jquery.dashboard_2.js
    │           │   ├── jquery.dashboard_3.js
    │           │   ├── jquery.dashboard_4.js
    │           │   ├── jquery.dashboard_crm.js
    │           │   ├── jquery.dashboard_ecommerce.js
    │           │   ├── jquery.filer.init.js
    │           │   ├── jquery.flot.init.js
    │           │   ├── jquery.footable.js
    │           │   ├── jquery.form-advanced.init.js
    │           │   ├── jquery.form-pickers.init.js
    │           │   ├── jquery.fullcalendar.js
    │           │   ├── jquery.gmaps.js
    │           │   ├── jquery.jsgrid.init.js
    │           │   ├── jquery.leads.init.js
    │           │   ├── jquery.nvd3.init.js
    │           │   ├── jquery.opportunities.init.js
    │           │   ├── jquery.peity.init.js
    │           │   ├── jquery.rickshaw.chart.init.js
    │           │   ├── jquery.sweet-alert.init.js
    │           │   ├── jquery.sweet-alert2.init.js
    │           │   ├── jquery.todo.js
    │           │   ├── jquery.tree.js
    │           │   ├── jquery.ui-sliders.js
    │           │   ├── jquery.widgets.js
    │           │   ├── jquery.wizard-init.js
    │           │   ├── jquery.xeditable.js
    │           │   ├── jvectormap.init.js
    │           │   ├── morris.init.js
    │           │   └── nestable.js
    │           ├── plugins/
    │           │   ├── autoNumeric/
    │           │   │   └── autoNumeric.js
    │           │   ├── autocomplete/
    │           │   │   ├── countries.js
    │           │   │   ├── demo.js
    │           │   │   └── jquery.mockjax.js
    │           │   ├── bootstrap-colorpicker/
    │           │   │   ├── css/
    │           │   │   │   └── bootstrap-colorpicker.css
    │           │   │   └── js/
    │           │   │       └── bootstrap-colorpicker.js
    │           │   ├── bootstrap-daterangepicker/
    │           │   │   ├── daterangepicker.css
    │           │   │   └── daterangepicker.js
    │           │   ├── bootstrap-filestyle/
    │           │   │   └── js/
    │           │   │       └── bootstrap-filestyle.js
    │           │   ├── bootstrap-markdown/
    │           │   │   └── js/
    │           │   │       └── bootstrap-markdown.js
    │           │   ├── bootstrap-maxlength/
    │           │   │   ├── bootstrap-maxlength.js
    │           │   │   └── src/
    │           │   │       └── bootstrap-maxlength.js
    │           │   ├── bootstrap-select/
    │           │   │   └── js/
    │           │   │       ├── bootstrap-select.js
    │           │   │       └── i18n/
    │           │   │           ├── defaults-ar_AR.js
    │           │   │           ├── defaults-bg_BG.js
    │           │   │           ├── defaults-cro_CRO.js
    │           │   │           ├── defaults-cs_CZ.js
    │           │   │           ├── defaults-da_DK.js
    │           │   │           ├── defaults-de_DE.js
    │           │   │           ├── defaults-en_US.js
    │           │   │           ├── defaults-es_CL.js
    │           │   │           ├── defaults-eu.js
    │           │   │           ├── defaults-fa_IR.js
    │           │   │           ├── defaults-fi_FI.js
    │           │   │           ├── defaults-fr_FR.js
    │           │   │           ├── defaults-hu_HU.js
    │           │   │           ├── defaults-id_ID.js
    │           │   │           ├── defaults-it_IT.js
    │           │   │           ├── defaults-ko_KR.js
    │           │   │           ├── defaults-lt_LT.js
    │           │   │           ├── defaults-nb_NO.js
    │           │   │           ├── defaults-nl_NL.js
    │           │   │           ├── defaults-pl_PL.js
    │           │   │           ├── defaults-pt_BR.js
    │           │   │           ├── defaults-pt_PT.js
    │           │   │           ├── defaults-ro_RO.js
    │           │   │           ├── defaults-ru_RU.js
    │           │   │           ├── defaults-sk_SK.js
    │           │   │           ├── defaults-sl_SI.js
    │           │   │           ├── defaults-sv_SE.js
    │           │   │           ├── defaults-tr_TR.js
    │           │   │           ├── defaults-ua_UA.js
    │           │   │           ├── defaults-zh_CN.js
    │           │   │           └── defaults-zh_TW.js
    │           │   ├── bootstrap-sweetalert/
    │           │   │   ├── sweet-alert.css
    │           │   │   └── sweet-alert.js
    │           │   ├── bootstrap-table/
    │           │   │   ├── css/
    │           │   │   │   └── bootstrap-table.css
    │           │   │   └── js/
    │           │   │       └── bootstrap-table.js
    │           │   ├── bootstrap-tagsinput/
    │           │   │   └── css/
    │           │   │       └── bootstrap-tagsinput.css
    │           │   ├── c3/
    │           │   │   ├── c3.css
    │           │   │   └── c3.js
    │           │   ├── codemirror/
    │           │   │   ├── css/
    │           │   │   │   ├── ambiance.css
    │           │   │   │   └── codemirror.css
    │           │   │   └── js/
    │           │   │       ├── codemirror.js
    │           │   │       ├── formatting.js
    │           │   │       ├── javascript.js
    │           │   │       └── xml.js
    │           │   ├── countdown/
    │           │   │   ├── dest/
    │           │   │   │   ├── countdown.js
    │           │   │   │   └── jquery.countdown.js
    │           │   │   └── src/
    │           │   │       ├── countdown.js
    │           │   │       └── jquery-wrapper.js
    │           │   ├── cropper/
    │           │   │   ├── cropper.css
    │           │   │   └── cropper.js
    │           │   ├── custombox/
    │           │   │   └── css/
    │           │   │       └── custombox.css
    │           │   ├── d3/
    │           │   │   └── d3.js
    │           │   ├── datatables/
    │           │   │   ├── json/
    │           │   │   │   └── scroller-demo.json
    │           │   │   └── vfs_fonts.js
    │           │   ├── doc-ready/
    │           │   │   ├── .bower.json
    │           │   │   ├── README.md
    │           │   │   ├── bower.json
    │           │   │   └── doc-ready.js
    │           │   ├── dropzone/
    │           │   │   ├── basic.css
    │           │   │   ├── dropzone-amd-module.js
    │           │   │   ├── dropzone.css
    │           │   │   ├── dropzone.js
    │           │   │   └── readme.md
    │           │   ├── eventEmitter/
    │           │   │   └── EventEmitter.js
    │           │   ├── eventie/
    │           │   │   └── eventie.js
    │           │   ├── fizzy-ui-utils/
    │           │   │   └── utils.js
    │           │   ├── flot-chart/
    │           │   │   ├── jquery.flot.crosshair.js
    │           │   │   ├── jquery.flot.pie.js
    │           │   │   ├── jquery.flot.resize.js
    │           │   │   ├── jquery.flot.selection.js
    │           │   │   ├── jquery.flot.stack.js
    │           │   │   └── jquery.flot.time.js
    │           │   ├── footable/
    │           │   │   └── css/
    │           │   │       └── footable.core.css
    │           │   ├── get-size/
    │           │   │   └── get-size.js
    │           │   ├── get-style-property/
    │           │   │   └── get-style-property.js
    │           │   ├── gmaps/
    │           │   │   ├── gmaps.js
    │           │   │   └── lib/
    │           │   │       ├── gmaps.controls.js
    │           │   │       ├── gmaps.core.js
    │           │   │       ├── gmaps.events.js
    │           │   │       ├── gmaps.geofences.js
    │           │   │       ├── gmaps.geometry.js
    │           │   │       ├── gmaps.layers.js
    │           │   │       ├── gmaps.map_types.js
    │           │   │       ├── gmaps.markers.js
    │           │   │       ├── gmaps.native_extensions.js
    │           │   │       ├── gmaps.overlays.js
    │           │   │       ├── gmaps.routes.js
    │           │   │       ├── gmaps.static.js
    │           │   │       ├── gmaps.streetview.js
    │           │   │       ├── gmaps.styles.js
    │           │   │       └── gmaps.utils.js
    │           │   ├── hopscotch/
    │           │   │   ├── css/
    │           │   │   │   └── hopscotch.css
    │           │   │   └── js/
    │           │   │       └── hopscotch.js
    │           │   ├── ion-rangeslider/
    │           │   │   ├── ion.rangeSlider.css
    │           │   │   └── ion.rangeSlider.skinFlat.css
    │           │   ├── jquery-circliful/
    │           │   │   ├── css/
    │           │   │   │   └── jquery.circliful.css
    │           │   │   └── js/
    │           │   │       └── jquery.circliful.js
    │           │   ├── jquery-datatables-editable/
    │           │   │   ├── dataTables.bootstrap.js
    │           │   │   └── jquery.dataTables.js
    │           │   ├── jquery-knob/
    │           │   │   ├── excanvas.js
    │           │   │   └── jquery.knob.js
    │           │   ├── jquery-quicksearch/
    │           │   │   └── jquery.quicksearch.js
    │           │   ├── jquery-ui/
    │           │   │   ├── external/
    │           │   │   │   └── jquery/
    │           │   │   │       └── jquery.js
    │           │   │   ├── index.html
    │           │   │   ├── jquery-ui.css
    │           │   │   ├── jquery-ui.js
    │           │   │   ├── jquery-ui.structure.css
    │           │   │   └── jquery-ui.theme.css
    │           │   ├── jquery.easy-pie-chart/
    │           │   │   ├── dist/
    │           │   │   │   ├── angular.easypiechart.js
    │           │   │   │   ├── easypiechart.js
    │           │   │   │   └── jquery.easypiechart.js
    │           │   │   └── src/
    │           │   │       ├── angular.directive.js
    │           │   │       ├── easypiechart.js
    │           │   │       ├── jquery.plugin.js
    │           │   │       └── renderer/
    │           │   │           └── canvas.js
    │           │   ├── jquery.filer/
    │           │   │   ├── assets/
    │           │   │   │   └── fonts/
    │           │   │   │       └── jquery.filer-icons/
    │           │   │   │           ├── jquery-filer-preview.html
    │           │   │   │           └── jquery-filer.css
    │           │   │   ├── css/
    │           │   │   │   ├── jquery.filer.css
    │           │   │   │   └── themes/
    │           │   │   │       └── jquery.filer-dragdropbox-theme.css
    │           │   │   ├── js/
    │           │   │   │   ├── custom.js
    │           │   │   │   └── jquery.filer.js
    │           │   │   ├── php/
    │           │   │   │   ├── class.uploader.php
    │           │   │   │   ├── readme.txt
    │           │   │   │   ├── remove_file.php
    │           │   │   │   └── upload.php
    │           │   │   └── uploads/
    │           │   │       └── header.p.php
    │           │   ├── jquery.steps/
    │           │   │   └── css/
    │           │   │       └── jquery.steps.css
    │           │   ├── jsgrid/
    │           │   │   ├── css/
    │           │   │   │   ├── jsgrid-theme.css
    │           │   │   │   └── jsgrid.css
    │           │   │   └── js/
    │           │   │       └── jsgrid.js
    │           │   ├── jstree/
    │           │   │   ├── ajax_children.json
    │           │   │   ├── ajax_roots.json
    │           │   │   ├── jstree.js
    │           │   │   ├── style.css
    │           │   │   └── themes/
    │           │   │       └── dark/
    │           │   │           └── style.css
    │           │   ├── justgage-toorshia/
    │           │   │   └── justgage.js
    │           │   ├── jvectormap/
    │           │   │   ├── gdp-data.js
    │           │   │   ├── jquery-jvectormap-2.0.2.css
    │           │   │   ├── jquery-jvectormap-asia-mill.js
    │           │   │   ├── jquery-jvectormap-au-mill.js
    │           │   │   ├── jquery-jvectormap-ca-lcc.js
    │           │   │   ├── jquery-jvectormap-de-mill.js
    │           │   │   ├── jquery-jvectormap-europe-mill-en.js
    │           │   │   ├── jquery-jvectormap-in-mill.js
    │           │   │   ├── jquery-jvectormap-uk-mill-en.js
    │           │   │   ├── jquery-jvectormap-us-aea-en.js
    │           │   │   ├── jquery-jvectormap-us-il-chicago-mill-en.js
    │           │   │   └── jquery-jvectormap-world-mill-en.js
    │           │   ├── magnific-popup/
    │           │   │   └── css/
    │           │   │       └── magnific-popup.css
    │           │   ├── masonry/
    │           │   │   ├── dist/
    │           │   │   │   └── masonry.pkgd.js
    │           │   │   ├── masonry.js
    │           │   │   └── sandbox/
    │           │   │       ├── basic.html
    │           │   │       ├── bottom-up.html
    │           │   │       ├── browserify/
    │           │   │       │   ├── index.html
    │           │   │       │   └── main.js
    │           │   │       ├── element-sizing.html
    │           │   │       ├── fit-width.html
    │           │   │       ├── fluid.html
    │           │   │       ├── jquery.html
    │           │   │       ├── require-js/
    │           │   │       │   ├── index.html
    │           │   │       │   └── main.js
    │           │   │       ├── right-to-left.html
    │           │   │       ├── sandbox.css
    │           │   │       └── stamps.html
    │           │   ├── matches-selector/
    │           │   │   └── matches-selector.js
    │           │   ├── mjolnic-bootstrap-colorpicker/
    │           │   │   └── dist/
    │           │   │       ├── css/
    │           │   │       │   └── bootstrap-colorpicker.css
    │           │   │       └── js/
    │           │   │           └── bootstrap-colorpicker.js
    │           │   ├── mocha/
    │           │   │   ├── mocha.css
    │           │   │   └── mocha.js
    │           │   ├── modal-effect/
    │           │   │   ├── css/
    │           │   │   │   └── component.css
    │           │   │   └── js/
    │           │   │       ├── classie.js
    │           │   │       └── modalEffects.js
    │           │   ├── moment/
    │           │   │   └── moment.js
    │           │   ├── morris/
    │           │   │   └── morris.css
    │           │   ├── multiselect/
    │           │   │   ├── css/
    │           │   │   │   └── multi-select.css
    │           │   │   └── js/
    │           │   │       └── jquery.multi-select.js
    │           │   ├── nestable/
    │           │   │   ├── jquery.nestable.css
    │           │   │   └── jquery.nestable.js
    │           │   ├── notifications/
    │           │   │   ├── notification.css
    │           │   │   └── notify-metro.js
    │           │   ├── notifyjs/
    │           │   │   └── js/
    │           │   │       └── notify.js
    │           │   ├── outlayer/
    │           │   │   ├── item.js
    │           │   │   └── outlayer.js
    │           │   ├── owl.carousel/
    │           │   │   ├── dist/
    │           │   │   │   ├── LICENSE
    │           │   │   │   ├── README.md
    │           │   │   │   ├── assets/
    │           │   │   │   │   ├── owl.carousel.css
    │           │   │   │   │   ├── owl.theme.default.css
    │           │   │   │   │   └── owl.theme.green.css
    │           │   │   │   └── owl.carousel.js
    │           │   │   └── src/
    │           │   │       ├── css/
    │           │   │       │   ├── owl.carousel.css
    │           │   │       │   ├── owl.theme.default.css
    │           │   │       │   └── owl.theme.green.css
    │           │   │       ├── js/
    │           │   │       │   ├── .jscsrc
    │           │   │       │   ├── .jshintrc
    │           │   │       │   ├── owl.animate.js
    │           │   │       │   ├── owl.autoheight.js
    │           │   │       │   ├── owl.autoplay.js
    │           │   │       │   ├── owl.autorefresh.js
    │           │   │       │   ├── owl.carousel.js
    │           │   │       │   ├── owl.hash.js
    │           │   │       │   ├── owl.lazyload.js
    │           │   │       │   ├── owl.navigation.js
    │           │   │       │   ├── owl.support.js
    │           │   │       │   ├── owl.support.modernizr.js
    │           │   │       │   └── owl.video.js
    │           │   │       └── scss/
    │           │   │           ├── _animate.scss
    │           │   │           ├── _autoheight.scss
    │           │   │           ├── _core.scss
    │           │   │           ├── _lazyload.scss
    │           │   │           ├── _theme.default.scss
    │           │   │           ├── _theme.green.scss
    │           │   │           ├── _theme.scss
    │           │   │           ├── _video.scss
    │           │   │           ├── owl.carousel.scss
    │           │   │           ├── owl.theme.default.scss
    │           │   │           └── owl.theme.green.scss
    │           │   ├── peity/
    │           │   │   └── jquery.peity.js
    │           │   ├── radial/
    │           │   │   └── radial.css
    │           │   ├── raphael/
    │           │   │   └── raphael-min.js
    │           │   ├── requirejs/
    │           │   │   └── require.js
    │           │   ├── rickshaw-chart/
    │           │   │   └── data/
    │           │   │       ├── data.json
    │           │   │       ├── data.jsonp
    │           │   │       ├── data2.json
    │           │   │       └── status.json
    │           │   ├── select2/
    │           │   │   ├── css/
    │           │   │   │   └── select2.css
    │           │   │   └── js/
    │           │   │       ├── i18n/
    │           │   │       │   ├── ar.js
    │           │   │       │   ├── az.js
    │           │   │       │   ├── bg.js
    │           │   │       │   ├── ca.js
    │           │   │       │   ├── cs.js
    │           │   │       │   ├── da.js
    │           │   │       │   ├── de.js
    │           │   │       │   ├── el.js
    │           │   │       │   ├── en.js
    │           │   │       │   ├── es.js
    │           │   │       │   ├── et.js
    │           │   │       │   ├── eu.js
    │           │   │       │   ├── fa.js
    │           │   │       │   ├── fi.js
    │           │   │       │   ├── fr.js
    │           │   │       │   ├── gl.js
    │           │   │       │   ├── he.js
    │           │   │       │   ├── hi.js
    │           │   │       │   ├── hr.js
    │           │   │       │   ├── hu.js
    │           │   │       │   ├── id.js
    │           │   │       │   ├── is.js
    │           │   │       │   ├── it.js
    │           │   │       │   ├── ja.js
    │           │   │       │   ├── km.js
    │           │   │       │   ├── ko.js
    │           │   │       │   ├── lt.js
    │           │   │       │   ├── lv.js
    │           │   │       │   ├── mk.js
    │           │   │       │   ├── ms.js
    │           │   │       │   ├── nb.js
    │           │   │       │   ├── nl.js
    │           │   │       │   ├── pl.js
    │           │   │       │   ├── pt-BR.js
    │           │   │       │   ├── pt.js
    │           │   │       │   ├── ro.js
    │           │   │       │   ├── ru.js
    │           │   │       │   ├── sk.js
    │           │   │       │   ├── sr-Cyrl.js
    │           │   │       │   ├── sr.js
    │           │   │       │   ├── sv.js
    │           │   │       │   ├── th.js
    │           │   │       │   ├── tr.js
    │           │   │       │   ├── uk.js
    │           │   │       │   ├── vi.js
    │           │   │       │   ├── zh-CN.js
    │           │   │       │   └── zh-TW.js
    │           │   │       ├── select2.full.js
    │           │   │       └── select2.js
    │           │   ├── smoothproducts/
    │           │   │   ├── css/
    │           │   │   │   └── smoothproducts.css
    │           │   │   └── js/
    │           │   │       └── smoothproducts.js
    │           │   ├── summernote/
    │           │   │   ├── lang/
    │           │   │   │   ├── summernote-ar-AR.js
    │           │   │   │   ├── summernote-bg-BG.js
    │           │   │   │   ├── summernote-ca-ES.js
    │           │   │   │   ├── summernote-cs-CZ.js
    │           │   │   │   ├── summernote-da-DK.js
    │           │   │   │   ├── summernote-de-DE.js
    │           │   │   │   ├── summernote-es-ES.js
    │           │   │   │   ├── summernote-es-EU.js
    │           │   │   │   ├── summernote-fa-IR.js
    │           │   │   │   ├── summernote-fi-FI.js
    │           │   │   │   ├── summernote-fr-FR.js
    │           │   │   │   ├── summernote-gl-ES.js
    │           │   │   │   ├── summernote-he-IL.js
    │           │   │   │   ├── summernote-hr-HR.js
    │           │   │   │   ├── summernote-hu-HU.js
    │           │   │   │   ├── summernote-id-ID.js
    │           │   │   │   ├── summernote-it-IT.js
    │           │   │   │   ├── summernote-ja-JP.js
    │           │   │   │   ├── summernote-ko-KR.js
    │           │   │   │   ├── summernote-lt-LT.js
    │           │   │   │   ├── summernote-lt-LV.js
    │           │   │   │   ├── summernote-nb-NO.js
    │           │   │   │   ├── summernote-nl-NL.js
    │           │   │   │   ├── summernote-pl-PL.js
    │           │   │   │   ├── summernote-pt-BR.js
    │           │   │   │   ├── summernote-pt-PT.js
    │           │   │   │   ├── summernote-ro-RO.js
    │           │   │   │   ├── summernote-ru-RU.js
    │           │   │   │   ├── summernote-sk-SK.js
    │           │   │   │   ├── summernote-sl-SI.js
    │           │   │   │   ├── summernote-sr-RS-Latin.js
    │           │   │   │   ├── summernote-sr-RS.js
    │           │   │   │   ├── summernote-sv-SE.js
    │           │   │   │   ├── summernote-th-TH.js
    │           │   │   │   ├── summernote-tr-TR.js
    │           │   │   │   ├── summernote-uk-UA.js
    │           │   │   │   ├── summernote-vi-VN.js
    │           │   │   │   ├── summernote-zh-CN.js
    │           │   │   │   └── summernote-zh-TW.js
    │           │   │   ├── plugin/
    │           │   │   │   ├── databasic/
    │           │   │   │   │   ├── summernote-ext-databasic.css
    │           │   │   │   │   └── summernote-ext-databasic.js
    │           │   │   │   ├── hello/
    │           │   │   │   │   └── summernote-ext-hello.js
    │           │   │   │   └── specialchars/
    │           │   │   │       └── summernote-ext-specialchars.js
    │           │   │   ├── summernote.css
    │           │   │   └── summernote.js
    │           │   ├── sweet-alert2/
    │           │   │   ├── sweetalert2.common.js
    │           │   │   ├── sweetalert2.css
    │           │   │   └── sweetalert2.js
    │           │   ├── tablesaw/
    │           │   │   ├── css/
    │           │   │   │   └── tablesaw.css
    │           │   │   └── js/
    │           │   │       ├── tablesaw-init.js
    │           │   │       └── tablesaw.js
    │           │   ├── timepicker/
    │           │   │   └── bootstrap-timepicker.js
    │           │   ├── tiny-editable/
    │           │   │   ├── mindmup-editabletable.js
    │           │   │   └── numeric-input-example.js
    │           │   ├── tinymce/
    │           │   │   ├── langs/
    │           │   │   │   └── readme.md
    │           │   │   ├── license.txt
    │           │   │   ├── plugins/
    │           │   │   │   ├── codesample/
    │           │   │   │   │   └── css/
    │           │   │   │   │       └── prism.css
    │           │   │   │   ├── example/
    │           │   │   │   │   └── dialog.html
    │           │   │   │   ├── media/
    │           │   │   │   │   └── moxieplayer.swf
    │           │   │   │   └── visualblocks/
    │           │   │   │       └── css/
    │           │   │   │           └── visualblocks.css
    │           │   │   └── themes/
    │           │   │       └── inlite/
    │           │   │           ├── config/
    │           │   │           │   ├── bolt/
    │           │   │           │   │   ├── atomic.js
    │           │   │           │   │   ├── bootstrap-atomic.js
    │           │   │           │   │   ├── bootstrap-browser.js
    │           │   │           │   │   ├── bootstrap-demo.js
    │           │   │           │   │   ├── bootstrap-prod.js
    │           │   │           │   │   ├── browser.js
    │           │   │           │   │   ├── demo.js
    │           │   │           │   │   └── prod.js
    │           │   │           │   └── dent/
    │           │   │           │       └── depend.js
    │           │   │           ├── scratch/
    │           │   │           │   ├── compile/
    │           │   │           │   │   ├── bootstrap.js
    │           │   │           │   │   └── theme.js
    │           │   │           │   └── inline/
    │           │   │           │       ├── theme.js
    │           │   │           │       └── theme.raw.js
    │           │   │           └── src/
    │           │   │               ├── demo/
    │           │   │               │   ├── css/
    │           │   │               │   │   └── demo.css
    │           │   │               │   ├── html/
    │           │   │               │   │   └── demo.html
    │           │   │               │   └── js/
    │           │   │               │       └── tinymce/
    │           │   │               │           └── inlite/
    │           │   │               │               └── Demo.js
    │           │   │               ├── main/
    │           │   │               │   └── js/
    │           │   │               │       └── tinymce/
    │           │   │               │           └── inlite/
    │           │   │               │               ├── Theme.js
    │           │   │               │               ├── alien/
    │           │   │               │               │   ├── Arr.js
    │           │   │               │               │   ├── Bookmark.js
    │           │   │               │               │   ├── Unlink.js
    │           │   │               │               │   └── Uuid.js
    │           │   │               │               ├── core/
    │           │   │               │               │   ├── Actions.js
    │           │   │               │               │   ├── Convert.js
    │           │   │               │               │   ├── ElementMatcher.js
    │           │   │               │               │   ├── Layout.js
    │           │   │               │               │   ├── Matcher.js
    │           │   │               │               │   ├── Measure.js
    │           │   │               │               │   ├── PredicateId.js
    │           │   │               │               │   ├── SelectionMatcher.js
    │           │   │               │               │   ├── SkinLoader.js
    │           │   │               │               │   └── UrlType.js
    │           │   │               │               ├── file/
    │           │   │               │               │   ├── Conversions.js
    │           │   │               │               │   └── Picker.js
    │           │   │               │               └── ui/
    │           │   │               │                   ├── Buttons.js
    │           │   │               │                   ├── Forms.js
    │           │   │               │                   ├── Panel.js
    │           │   │               │                   └── Toolbar.js
    │           │   │               └── test/
    │           │   │                   ├── .eslintrc
    │           │   │                   └── js/
    │           │   │                       ├── atomic/
    │           │   │                       │   ├── alien/
    │           │   │                       │   │   ├── ArrTest.js
    │           │   │                       │   │   └── UuidTest.js
    │           │   │                       │   └── core/
    │           │   │                       │       ├── ConvertTest.js
    │           │   │                       │       ├── MatcherTest.js
    │           │   │                       │       └── UrlTypeTest.js
    │           │   │                       └── browser/
    │           │   │                           ├── ThemeTest.js
    │           │   │                           ├── alien/
    │           │   │                           │   ├── BookmarkTest.js
    │           │   │                           │   └── UnlinkTest.js
    │           │   │                           ├── core/
    │           │   │                           │   ├── ActionsTest.js
    │           │   │                           │   ├── ElementMatcher.js
    │           │   │                           │   ├── LayoutTest.js
    │           │   │                           │   ├── MeasureTest.js
    │           │   │                           │   ├── PredicateIdTest.js
    │           │   │                           │   └── SelectionMatcherTest.js
    │           │   │                           └── file/
    │           │   │                               ├── ConversionsTest.js
    │           │   │                               └── SelectionMatcher.js
    │           │   ├── transitionize/
    │           │   │   ├── dist/
    │           │   │   │   └── transitionize.js
    │           │   │   ├── examples/
    │           │   │   │   ├── browserify.js
    │           │   │   │   └── example.html
    │           │   │   └── transitionize.js
    │           │   ├── waypoints/
    │           │   │   └── lib/
    │           │   │       └── shortcuts/
    │           │   │           ├── infinite.js
    │           │   │           ├── inview.js
    │           │   │           └── sticky.js
    │           │   └── x-editable/
    │           │       ├── css/
    │           │       │   └── bootstrap-editable.css
    │           │       └── js/
    │           │           └── bootstrap-editable.js
    │           └── scss/
    │               ├── _account-pages.scss
    │               ├── _alerts.scss
    │               ├── _animation.scss
    │               ├── _bootstrap-range-slider.scss
    │               ├── _bootstrap-reset.scss
    │               ├── _buttons.scss
    │               ├── _calendar.scss
    │               ├── _carousel.scss
    │               ├── _charts.scss
    │               ├── _checkbox-radio.scss
    │               ├── _common.scss
    │               ├── _contact.scss
    │               ├── _countdown.scss
    │               ├── _email.scss
    │               ├── _faq.scss
    │               ├── _form-advanced.scss
    │               ├── _form-components.scss
    │               ├── _form-wizard.scss
    │               ├── _gallery.scss
    │               ├── _helper.scss
    │               ├── _loader.scss
    │               ├── _maintenance.scss
    │               ├── _maps.scss
    │               ├── _menu.scss
    │               ├── _modals.scss
    │               ├── _nestable-list.scss
    │               ├── _notification.scss
    │               ├── _opportunities.scss
    │               ├── _pagination.scss
    │               ├── _portlets.scss
    │               ├── _pricing.scss
    │               ├── _print.scss
    │               ├── _products.scss
    │               ├── _profile.scss
    │               ├── _progressbars.scss
    │               ├── _responsive.scss
    │               ├── _search-result.scss
    │               ├── _sitemap.scss
    │               ├── _sweet-alert.scss
    │               ├── _tables.scss
    │               ├── _tabs-accordions.scss
    │               ├── _taskboard.scss
    │               ├── _timeline.scss
    │               ├── _tour.scss
    │               ├── _treeview.scss
    │               ├── _variables.scss
    │               ├── _waves.scss
    │               ├── _widgets.scss
    │               ├── _wysiwig.scss
    │               ├── icons/
    │               │   ├── css/
    │               │   │   ├── material-design-iconic-font.css
    │               │   │   ├── themify-icons.css
    │               │   │   └── typicons.css
    │               │   ├── dripicons/
    │               │   │   └── dripicons.scss
    │               │   ├── font-awesome/
    │               │   │   ├── HELP-US-OUT.txt
    │               │   │   ├── css/
    │               │   │   │   ├── font-awesome.css
    │               │   │   │   ├── mixins.css
    │               │   │   │   └── variables.css
    │               │   │   ├── fonts/
    │               │   │   │   └── FontAwesome.otf
    │               │   │   ├── less/
    │               │   │   │   ├── animated.less
    │               │   │   │   ├── bordered-pulled.less
    │               │   │   │   ├── core.less
    │               │   │   │   ├── fixed-width.less
    │               │   │   │   ├── font-awesome.less
    │               │   │   │   ├── icons.less
    │               │   │   │   ├── larger.less
    │               │   │   │   ├── list.less
    │               │   │   │   ├── mixins.less
    │               │   │   │   ├── path.less
    │               │   │   │   ├── rotated-flipped.less
    │               │   │   │   ├── screen-reader.less
    │               │   │   │   ├── stacked.less
    │               │   │   │   └── variables.less
    │               │   │   └── scss/
    │               │   │       ├── _animated.scss
    │               │   │       ├── _bordered-pulled.scss
    │               │   │       ├── _core.scss
    │               │   │       ├── _fixed-width.scss
    │               │   │       ├── _icons.scss
    │               │   │       ├── _larger.scss
    │               │   │       ├── _list.scss
    │               │   │       ├── _mixins.scss
    │               │   │       ├── _path.scss
    │               │   │       ├── _rotated-flipped.scss
    │               │   │       ├── _screen-reader.scss
    │               │   │       ├── _stacked.scss
    │               │   │       ├── _variables.scss
    │               │   │       └── font-awesome.scss
    │               │   ├── ionicons/
    │               │   │   ├── css/
    │               │   │   │   ├── _ionicons-variables.css
    │               │   │   │   └── ionicons.css
    │               │   │   ├── less/
    │               │   │   │   ├── _ionicons-animation.less
    │               │   │   │   ├── _ionicons-font.less
    │               │   │   │   ├── _ionicons-icons.less
    │               │   │   │   ├── _ionicons-variables.less
    │               │   │   │   └── ionicons.less
    │               │   │   └── scss/
    │               │   │       ├── _ionicons-animation.scss
    │               │   │       ├── _ionicons-font.scss
    │               │   │       ├── _ionicons-icons.scss
    │               │   │       ├── _ionicons-variables.scss
    │               │   │       └── ionicons.scss
    │               │   ├── material-design-iconic-font/
    │               │   │   ├── css/
    │               │   │   │   ├── material-design-iconic-font.css
    │               │   │   │   ├── mixins.css
    │               │   │   │   └── variables.css
    │               │   │   ├── material-design-iconic-font.scss
    │               │   │   └── stylesheets/
    │               │   │       └── styles.css
    │               │   ├── simple-line-icons/
    │               │   │   ├── css/
    │               │   │   │   └── simple-line-icons.css
    │               │   │   ├── less/
    │               │   │   │   └── simple-line-icons.less
    │               │   │   └── scss/
    │               │   │       └── simple-line-icons.scss
    │               │   ├── themify-icons/
    │               │   │   ├── ie7/
    │               │   │   │   ├── ie7.css
    │               │   │   │   └── ie7.js
    │               │   │   ├── themify-icons.css
    │               │   │   └── themify-icons.scss
    │               │   ├── typicons/
    │               │   │   └── typicons.scss
    │               │   └── weather-icons/
    │               │       ├── css/
    │               │       │   ├── weather-icons-core.css
    │               │       │   ├── weather-icons-variables.css
    │               │       │   ├── weather-icons-wind.css
    │               │       │   └── weather-icons.css
    │               │       ├── less/
    │               │       │   ├── css/
    │               │       │   │   ├── variables-beaufort.css
    │               │       │   │   ├── variables-day.css
    │               │       │   │   ├── variables-direction.css
    │               │       │   │   ├── variables-misc.css
    │               │       │   │   ├── variables-moon.css
    │               │       │   │   ├── variables-neutral.css
    │               │       │   │   ├── variables-night.css
    │               │       │   │   ├── variables-time.css
    │               │       │   │   └── variables-wind-names.css
    │               │       │   ├── icon-classes/
    │               │       │   │   ├── classes-beaufort.less
    │               │       │   │   ├── classes-day.less
    │               │       │   │   ├── classes-direction.less
    │               │       │   │   ├── classes-misc.less
    │               │       │   │   ├── classes-moon-aliases.less
    │               │       │   │   ├── classes-moon.less
    │               │       │   │   ├── classes-neutral.less
    │               │       │   │   ├── classes-night.less
    │               │       │   │   ├── classes-time.less
    │               │       │   │   ├── classes-wind-aliases.less
    │               │       │   │   ├── classes-wind-degrees.less
    │               │       │   │   └── classes-wind.less
    │               │       │   ├── icon-variables/
    │               │       │   │   ├── variables-beaufort.less
    │               │       │   │   ├── variables-day.less
    │               │       │   │   ├── variables-direction.less
    │               │       │   │   ├── variables-misc.less
    │               │       │   │   ├── variables-moon.less
    │               │       │   │   ├── variables-neutral.less
    │               │       │   │   ├── variables-night.less
    │               │       │   │   ├── variables-time.less
    │               │       │   │   └── variables-wind-names.less
    │               │       │   ├── mappings/
    │               │       │   │   ├── wi-forecast-io.less
    │               │       │   │   ├── wi-owm.less
    │               │       │   │   ├── wi-wmo4680.less
    │               │       │   │   └── wi-yahoo.less
    │               │       │   ├── weather-icons-classes.less
    │               │       │   ├── weather-icons-core.less
    │               │       │   ├── weather-icons-variables.less
    │               │       │   ├── weather-icons-wind.less
    │               │       │   ├── weather-icons-wind.min.less
    │               │       │   ├── weather-icons.less
    │               │       │   └── weather-icons.min.less
    │               │       └── sass/
    │               │           ├── icon-classes/
    │               │           │   ├── classes-beaufort.scss
    │               │           │   ├── classes-day.scss
    │               │           │   ├── classes-direction.scss
    │               │           │   ├── classes-misc.scss
    │               │           │   ├── classes-moon-aliases.scss
    │               │           │   ├── classes-moon.scss
    │               │           │   ├── classes-neutral.scss
    │               │           │   ├── classes-night.scss
    │               │           │   ├── classes-time.scss
    │               │           │   ├── classes-wind-aliases.scss
    │               │           │   ├── classes-wind-degrees.scss
    │               │           │   └── classes-wind.scss
    │               │           ├── icon-variables/
    │               │           │   ├── variables-beaufort.scss
    │               │           │   ├── variables-day.scss
    │               │           │   ├── variables-direction.scss
    │               │           │   ├── variables-misc.scss
    │               │           │   ├── variables-moon.scss
    │               │           │   ├── variables-neutral.scss
    │               │           │   ├── variables-night.scss
    │               │           │   ├── variables-time.scss
    │               │           │   └── variables-wind-names.scss
    │               │           ├── mappings/
    │               │           │   ├── wi-forecast-io.scss
    │               │           │   ├── wi-owm.scss
    │               │           │   ├── wi-wmo4680.scss
    │               │           │   └── wi-yahoo.scss
    │               │           ├── weather-icons-classes.scss
    │               │           ├── weather-icons-core.scss
    │               │           ├── weather-icons-variables.scss
    │               │           ├── weather-icons-wind.min.scss
    │               │           ├── weather-icons-wind.scss
    │               │           ├── weather-icons.min.scss
    │               │           └── weather-icons.scss
    │               ├── icons.scss
    │               └── style.scss
    ├── Pos.sln
    ├── docker-compose.dcproj
    ├── docker-compose.override.yml
    └── docker-compose.yml

================================================
FILE CONTENTS
================================================

================================================
FILE: .circleci/config.yml
================================================
version: 2
jobs:
  build:
    docker:
      - image: mcr.microsoft.com/dotnet/core/sdk:2.2
    steps:
      - checkout
      - run:
          name: Restore
          command: dotnet restore
          working_directory: src
      - run:
          name: Build
          command: dotnet build
          working_directory: src
      - run:
          name: Run App
          command: dotnet run
          working_directory: src  

================================================
FILE: .gitignore
================================================

#Ignore thumbnails created by Windows
Thumbs.db
#Ignore files built by Visual Studio
*.obj
*.exe
*.pdb
*.user
*.aps
*.pch
*.vspscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.cache
*.ilk
*.log
[Bb]in
[Dd]ebug*/
*.lib
*.sbr
obj/
[Rr]elease*/
_ReSharper*/
[Tt]est[Rr]esult*
.vs/
#Nuget packages folder
packages/


================================================
FILE: README.md
================================================
# POS - DDD, Reactive Microservices, CQRS Event Sourcing Powered by DERMAYON LIBRARY
Sample Application DDD Reactive Microservices with CQRS & Event Sourcing with [DERMAYON LIBRARY](https://github.com/NHadi/Dermayon). 

# Architectures
![Image of Architecture](https://github.com/NHadi/Pos/blob/master/images/architecture.png)

# Features
1. Microservices 
2. CQRS (Command Query Responsibility Segregation)
3. Event Sourcing
4. Generic Repository 
5. UnitOfWork
6. Domain Driven Design
7. Api Gateway [Ocelot](https://ocelot.readthedocs.io/en/latest/introduction/gettingstarted.html)
8. Multiple Databases type [MongoDb, SqlServer, etc]
9. Message Broker [Kafka]

# Information
![Image of DDD](https://github.com/NHadi/Pos/blob/master/images/ddd.png)

1. Domain Layer : Main of Application like Event, Repository, etc
2. Infrastructure Layer : Databases, Files, etc
3. Application Layer : WebApi, etc

# Main Architecture
![Image of mainarchitecture](https://github.com/NHadi/Pos/blob/master/images/mainarchitecture.png)

Microservices - also known as the microservice architecture - is an architectural style that structures an application as a collection of services that are

1. Highly maintainable and testable
2. Loosely coupled
3. Independently deployable
4. Organized around business capabilities
5. Owned by a small team

The microservice architecture enables the rapid, frequent and reliable delivery of large, complex applications. It also enables an organization to evolve its technology stack. [reference](https://microservices.io/)


# API Gateway
![Image of gateway](https://github.com/NHadi/Pos/blob/master/images/gateway.jpg)

The API Gateway encapsulates the internal system architecture and provides an API that is tailored to each client. It might have other responsibilities such as authentication, monitoring, load balancing, caching,

# CQRS Event Sourcing
![Image of cqrss](https://github.com/NHadi/Pos/blob/master/images/cqrss.png)

CQRS stands for Command Query Responsibility Segregation. It's a pattern that I first heard described by Greg Young. At its heart is the notion that you can use a different model to update information than the model you use to read information. For some situations, this separation can be valuable, but beware that for most systems CQRS adds risky complexity.

Benefits when to use CQRS Event Sourcing
![Image of cqrsmaterialized](https://github.com/NHadi/Pos/blob/master/images/cqrsmaterialized.png)

imagine if the system is too complex and more than 1K user hit in server, how many related tables? and how long does it take to get data? with cqrs & event sourcing we can implement materialized views, or in other words denormalized tables into one data or flat

# Reactive Services, Reactive Manifesto, and Microservices 
![Image of reactive](https://github.com/NHadi/Pos/blob/master/images/reactive.png)

The Reactive Manifesto outlines qualities of Reactive Systems based on four principles: Responsive, Resilient, Elastic and Message Driven. 

1. Responsiveness means the service should respond in a timely manner.
2. Resilience goes in line with responsiveness, the system should respond even in the face of failure.
3. Elasticity works with resilience. The ability to spin up new services and for downstream and upstream services and clients to find the new instances is vital to both the resilience of the system as well as the elasticity of the system.  
4. Message Driven: Reactive Systems rely on asynchronous message passing. This established boundaries between services (in-proc and out of proc) which allows for loose coupling (publish/subscribe or async streams or async calls), isolation (one failure does not ripple through to upstream services and clients), and improved responsive error handling.

## Get started

**Clone the repository**

**Run and Build the app**

```sh
cd Pos 
docker-compose up
```
wait for completed
![Image of step1](https://github.com/NHadi/Pos/blob/master/images/step1.png)

**List Url:Port the app**
```sh
docker container ls
```

![Image of step2](https://github.com/NHadi/Pos/blob/master/images/step2.png)

For sample we can navigate to PRODUCT SERVICES ::localhost:32771/swagger

![Image of step3](https://github.com/NHadi/Pos/blob/master/images/step3.png)

# Running in GATEWAY

Navigate to postgateway for sample ::localhost:32768/[SERVICES]/[Action]

![Image of step4](https://github.com/NHadi/Pos/blob/master/images/step4.png)

Sample Running in Gateway
http://localhost:[PosGatewayPort]/api-product/productCategory/7a3fff4b-54ca-4c21-bf04-c11aea9b7673
![Image of step5](https://github.com/NHadi/Pos/blob/master/images/step5.png)

# List of Gateway Services

1. Product Services = localhost[::]/api-product/[action]
2. Customer Services = localhost[::]/api-customer/[action]
3. Order Services = localhost[::]/api-order/[action]
4. Report Services = localhost[::]/api-report/[action]

# Check Healty All Services
![Image of step6](https://github.com/NHadi/Pos/blob/master/images/step6.png)


Keep Updates, I'will update for new best practices of technology & software design, architectural

# Thanks


















================================================
FILE: src/.dockerignore
================================================
**/.classpath
**/.dockerignore
**/.env
**/.git
**/.gitignore
**/.project
**/.settings
**/.toolstarget
**/.vs
**/.vscode
**/*.*proj.user
**/*.dbmdl
**/*.jfm
**/azds.yaml
**/bin
**/charts
**/docker-compose*
**/Dockerfile*
**/node_modules
**/npm-debug.log
**/obj
**/secrets.dev.yaml
**/values.dev.yaml
LICENSE
README.md

================================================
FILE: src/Pos.Customer.Domain/CustomerAggregate/ICustomerRepository.cs
================================================
using Dermayon.Infrastructure.Data.EFRepositories.Contracts;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Customer.Domain.CustomerAggregate
{
    public interface ICustomerRepository : IEfRepository<MstCustomer>
    {
    }
}


================================================
FILE: src/Pos.Customer.Domain/CustomerAggregate/MstCustomer.cs
================================================
using Dermayon.Common.Domain;
using System;
using System.Collections.Generic;

namespace Pos.Customer.Domain.CustomerAggregate
{
    public partial class MstCustomer : EntityBase
    {
        public string Name { get; set; }
        public string Phone { get; set; }
        public string Address { get; set; }
    }
}

================================================
FILE: src/Pos.Customer.Domain/Pos.Customer.Domain.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Compile Remove="Events\**" />
    <EmbeddedResource Remove="Events\**" />
    <None Remove="Events\**" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Dermayon.Library" Version="2.0.1" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\Pos.Event.Contracts\Pos.Event.Contracts.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: src/Pos.Customer.Infrastructure/EventSources/POSCustomerEventContext.cs
================================================
using Dermayon.Infrastructure.Data.MongoRepositories;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Customer.Infrastructure.EventSources
{
    public class POSCustomerEventContext : MongoContext
    {
        public POSCustomerEventContext(POSCustomerEventContextSetting setting) : base(setting)
        {
                
        }
    }
}


================================================
FILE: src/Pos.Customer.Infrastructure/EventSources/POSCustomerEventContextSetting.cs
================================================
using Dermayon.Infrastructure.Data.MongoRepositories;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Customer.Infrastructure.EventSources
{
    public class POSCustomerEventContextSetting : MongoDbSettings
    {
    }
}


================================================
FILE: src/Pos.Customer.Infrastructure/POSCustomerContext.cs
================================================
using Microsoft.EntityFrameworkCore;
using Pos.Customer.Domain.CustomerAggregate;

namespace Pos.Customer.Infrastructure
{
    public partial class POSCustomerContext : DbContext
    {
        public POSCustomerContext()
        {
        }

        public POSCustomerContext(DbContextOptions<POSCustomerContext> options)
            : base(options)
        {
            this.Database.EnsureCreated();
        }

        public virtual DbSet<MstCustomer> Customer { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
            }
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.HasAnnotation("ProductVersion", "2.2.0-rtm-35687");

            modelBuilder.Entity<MstCustomer>(entity =>
            {
                entity.Property(e => e.Id).HasDefaultValueSql("NEWID()");

                entity.Property(e => e.Address).HasMaxLength(255);

                entity.Property(e => e.Name)
                    .IsRequired()
                    .HasMaxLength(50);

                entity.Property(e => e.Phone).HasMaxLength(50);
            });

            OnModelCreatingPartial(modelBuilder);
        }

        partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
    }
}

================================================
FILE: src/Pos.Customer.Infrastructure/Pos.Customer.Infrastructure.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Compile Remove="DataContextFactory.cs" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\Pos.Customer.Domain\Pos.Customer.Domain.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: src/Pos.Customer.Infrastructure/Repositories/CustomeRepository.cs
================================================
using Dermayon.Infrastructure.Data.EFRepositories;
using Pos.Customer.Domain.CustomerAggregate;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Customer.Infrastructure.Repositories
{
    public class CustomeRepository : EfRepository<MstCustomer>, ICustomerRepository
    {
        private readonly POSCustomerContext _context;
        public CustomeRepository(POSCustomerContext context) : base(context)
        {
            _context = context;
        }
    }
}


================================================
FILE: src/Pos.Customer.WebApi/Application/Commands/CreateCustomerCommand.cs
================================================
using Dermayon.Common.Domain;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Customer.WebApi.Application.Commands
{
    public class CreateCustomerCommand : ICommand
    {
        public string Name { get; set; }
        public string Phone { get; set; }
        public string Address { get; set; }
    }
}


================================================
FILE: src/Pos.Customer.WebApi/Application/Commands/CreateCustomerCommandHandler.cs
================================================
using Dermayon.Common.Domain;
using Dermayon.Common.Infrastructure.Data.Contracts;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Pos.Customer.Infrastructure.EventSources;
using Pos.Event.Contracts;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace Pos.Customer.WebApi.Application.Commands
{
    public class CreateCustomerCommandHandler : ICommandHandler<CreateCustomerCommand>
    {
        private readonly IKakfaProducer _kafkaProducer;
        private readonly IEventRepository<POSCustomerEventContext, CustomerCreatedEvent> _eventSources;

        public CreateCustomerCommandHandler(IKakfaProducer kakfaProducer, IEventRepository<POSCustomerEventContext, CustomerCreatedEvent> eventSources)
        {
            _kafkaProducer = kakfaProducer;
            _eventSources = eventSources;
        }

        public async Task Handle(CreateCustomerCommand command, CancellationToken cancellationToken)
        {
            var customerCreatedEvent = new CustomerCreatedEvent
            {
                Address = command.Address,
                Name = command.Name,
                Phone = command.Phone,
                CreatedAt = DateTime.Now
            };

            // Insert event to Command Db
            await _eventSources.InserEvent(customerCreatedEvent, cancellationToken);
            
            await _kafkaProducer.Send(customerCreatedEvent, AppGlobalTopic.PosTopic);
        }
    }
}


================================================
FILE: src/Pos.Customer.WebApi/Application/Commands/DeleteCustomerCommand.cs
================================================
using Dermayon.Common.Domain;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Customer.WebApi.Application.Commands
{
    public class DeleteCustomerCommand : ICommand
    {
        public Guid CustomerId { get; set; }
    }
}


================================================
FILE: src/Pos.Customer.WebApi/Application/Commands/DeleteCustomerCommandHandler.cs
================================================
using Dermayon.Common.Domain;
using Dermayon.Common.Infrastructure.Data.Contracts;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Pos.Customer.Infrastructure.EventSources;
using Pos.Event.Contracts;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace Pos.Customer.WebApi.Application.Commands
{
    public class DeleteCustomerCommandHandler : ICommandHandler<DeleteCustomerCommand>
    {
        private readonly IKakfaProducer _kafkaProducer;
        private readonly IEventRepository<POSCustomerEventContext, CustomerDeletedEvent> _eventSources;
        public DeleteCustomerCommandHandler(IKakfaProducer kakfaProducer, 
            IEventRepository<POSCustomerEventContext, CustomerDeletedEvent> eventSources
            )
        {
            _kafkaProducer = kakfaProducer;
            _eventSources = eventSources;
        }

        public async Task Handle(DeleteCustomerCommand command, CancellationToken cancellationToken)
        {
            var DeletedEvent = new CustomerDeletedEvent
            {
                CustomerId = command.CustomerId,                
                CreatedAt = DateTime.Now
            };

            // Insert event to Command Db
            await _eventSources.InserEvent(DeletedEvent, cancellationToken);

            await _kafkaProducer.Send(DeletedEvent, AppGlobalTopic.PosTopic);
        }
    }
}


================================================
FILE: src/Pos.Customer.WebApi/Application/Commands/UpdateCustomerCommand.cs
================================================
using Dermayon.Common.Domain;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Customer.WebApi.Application.Commands
{
    public class UpdateCustomerCommand : ICommand
    {
        public Guid CustomerId { get; set; }
        public string Name { get; set; }
        public string Phone { get; set; }
        public string Address { get; set; }
    }
}


================================================
FILE: src/Pos.Customer.WebApi/Application/Commands/UpdateCustomerCommandHandler.cs
================================================
using Dermayon.Common.Domain;
using Dermayon.Common.Infrastructure.Data.Contracts;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Pos.Customer.Infrastructure.EventSources;
using Pos.Event.Contracts;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace Pos.Customer.WebApi.Application.Commands
{
    public class UpdateCustomerCommandHandler : ICommandHandler<UpdateCustomerCommand>
    {
        private readonly IKakfaProducer _kafkaProducer;
        private readonly IEventRepository<POSCustomerEventContext, CustomerUpdatedEvent> _eventSources;

        public UpdateCustomerCommandHandler(IKakfaProducer kakfaProducer, IEventRepository<POSCustomerEventContext, CustomerUpdatedEvent> eventSources)
        {
            _kafkaProducer = kakfaProducer;
            _eventSources = eventSources;
        }

        public async Task Handle(UpdateCustomerCommand command, CancellationToken cancellationToken)
        {
            var updatedEvent = new CustomerUpdatedEvent
            {
                CustomerId = command.CustomerId,
                Address = command.Address,
                Name = command.Name,
                Phone = command.Phone,
                CreatedAt = DateTime.Now
            };

            // Insert event to Command Db
            await _eventSources.InserEvent(updatedEvent, cancellationToken);

            await _kafkaProducer.Send(updatedEvent, AppGlobalTopic.PosTopic);
        }
    }
}


================================================
FILE: src/Pos.Customer.WebApi/Application/EventHandlers/CustomerCreateEventHandler.cs
================================================
using AutoMapper;
using Dermayon.Common.CrossCutting;
using Dermayon.Common.Infrastructure.EventMessaging;
using Dermayon.Infrastructure.Data.EFRepositories.Contracts;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Newtonsoft.Json.Linq;
using Pos.Customer.Domain.CustomerAggregate;
using Pos.Customer.Infrastructure;
using Pos.Event.Contracts;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace Pos.Customer.WebApi.Application.EventHandlers
{
    public class CustomerCreateEventHandler : IServiceEventHandler
    {
        private readonly IUnitOfWork<POSCustomerContext> _uow;
        private readonly IMapper _mapper;
        private readonly IKakfaProducer _producer;
        private readonly ICustomerRepository _customerRepository;

        public CustomerCreateEventHandler(IUnitOfWork<POSCustomerContext> uow,
            IMapper mapper,
            IKakfaProducer producer, 
            ICustomerRepository customerRepository)
        {
            _uow = uow;
            _mapper = mapper;
            _producer = producer;
            _customerRepository = customerRepository;
        }
        public async Task Handle(JObject jObject, ILog log, CancellationToken cancellationToken)
        {
            try
            {
                log.Info("Consume CustomerCreatedEvent");

                var dataConsomed = jObject.ToObject<CustomerCreatedEvent>();
                var data = _mapper.Map<MstCustomer>(dataConsomed);

                log.Info("Insert Customer");

                //Consume data to Read Db
                _customerRepository.Insert(data);
                await _uow.CommitAsync();
            }
            catch (Exception ex)
            {
                log.Error("Error Inserting data customer", ex);
                throw ex;
            }            
        }
    }
}


================================================
FILE: src/Pos.Customer.WebApi/Application/EventHandlers/CustomerDeleteEventHandler.cs
================================================
using AutoMapper;
using Dermayon.Common.CrossCutting;
using Dermayon.Common.Infrastructure.EventMessaging;
using Dermayon.Infrastructure.Data.EFRepositories.Contracts;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Newtonsoft.Json.Linq;
using Pos.Customer.Domain.CustomerAggregate;
using Pos.Customer.Infrastructure;
using Pos.Customer.WebApi.Application.Queries;
using Pos.Event.Contracts;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace Pos.Customer.WebApi.Application.EventHandlers
{
    public class CustomerDeleteEventHandler : IServiceEventHandler
    {
        private readonly IUnitOfWork<POSCustomerContext> _uow;
        private readonly IMapper _mapper;
        private readonly IKakfaProducer _producer;
        private readonly ICustomerRepository _customerRepository;
        private readonly ICustomerQueries _customerQueries;

        public CustomerDeleteEventHandler(IUnitOfWork<POSCustomerContext> uow,
            IMapper mapper,
            IKakfaProducer producer,
            ICustomerRepository customerRepository,
            ICustomerQueries customerQueries)
        {
            _uow = uow;
            _mapper = mapper;
            _producer = producer;
            _customerQueries = customerQueries;
            _customerRepository = customerRepository;
        }
        public async Task Handle(JObject jObject, ILog log, CancellationToken cancellationToken)
        {
            try
            {
                log.Info("Consume CustomerDeletedEvent");

                var dataConsomed = jObject.ToObject<CustomerDeletedEvent>();

                var data = await _customerQueries.GetCustomer(dataConsomed.CustomerId);

                log.Info("Delete Customer");

                //Consume data to Read Db
                _customerRepository.Delete(data);
                await _uow.CommitAsync();
            }
            catch (Exception ex)
            {
                log.Error("Error Deleteing data customer", ex);
                throw ex;
            }            
        }
    }
}


================================================
FILE: src/Pos.Customer.WebApi/Application/EventHandlers/CustomerUpdateEventHandler.cs
================================================
using AutoMapper;
using Dermayon.Common.CrossCutting;
using Dermayon.Common.Infrastructure.EventMessaging;
using Dermayon.Infrastructure.Data.EFRepositories.Contracts;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Newtonsoft.Json.Linq;
using Pos.Customer.Domain.CustomerAggregate;
using Pos.Customer.Infrastructure;
using Pos.Customer.WebApi.Application.Queries;
using Pos.Event.Contracts;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace Pos.Customer.WebApi.Application.EventHandlers
{
    public class CustomerUpdateEventHandler : IServiceEventHandler
    {
        private readonly IUnitOfWork<POSCustomerContext> _uow;
        private readonly IMapper _mapper;
        private readonly IKakfaProducer _producer;
        private readonly ICustomerRepository _customerRepository;
        private readonly ICustomerQueries _customerQueries;

        public CustomerUpdateEventHandler(IUnitOfWork<POSCustomerContext> uow,
            IMapper mapper,
            IKakfaProducer producer, 
            ICustomerRepository customerRepository,
            ICustomerQueries customerQueries)
        {
            _uow = uow;
            _mapper = mapper;
            _producer = producer;
            _customerRepository = customerRepository;
            _customerQueries = customerQueries;
        }
        public async Task Handle(JObject jObject, ILog log, CancellationToken cancellationToken)
        {
            try
            {
                log.Info("Consume CustomerUpdatedEvent");

                var dataConsomed = jObject.ToObject<CustomerUpdatedEvent>();

                var data = await _customerQueries.GetCustomer(dataConsomed.CustomerId);
                if (data != null)
                {
                    data = _mapper.Map<MstCustomer>(dataConsomed);

                    log.Info("Update Customer");
                    //Consume data to Read Db
                    _customerRepository.Update(data);
                    await _uow.CommitAsync();
                }
            }
            catch (Exception ex)
            {
                log.Error("Error Updating data customer", ex);
                throw ex;
            }            
        }
    }
}


================================================
FILE: src/Pos.Customer.WebApi/Application/Queries/CustomerQueries.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Dermayon.Common.Infrastructure.Data.Contracts;
using Dermayon.Infrastructure.Data.DapperRepositories;
using Pos.Customer.Domain.CustomerAggregate;

namespace Pos.Customer.WebApi.Application.Queries
{
    public class CustomerQueries : ICustomerQueries
    {
        private readonly IDbConectionFactory _dbConectionFactory;        

        public CustomerQueries(IDbConectionFactory dbConectionFactory)
        {
            _dbConectionFactory = dbConectionFactory;            
        }


        public async Task<MstCustomer> GetCustomer(Guid id)
        {
            try
            {
                var qry = "SELECT * FROM Customer where Id = @p_id";

                var data = await new DapperRepository<MstCustomer>(_dbConectionFactory.GetDbConnection("CUSTOMER_READ_CONNECTION"))
                    .QueryAsync(qry, new { p_id = id });

                return data.SingleOrDefault();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public async Task<IEnumerable<MstCustomer>> GetCustomer(string name)
        {
            try
            {
                var qry = "SELECT * FROM Customer where name = @p_name";

                var data = await new DapperRepository<MstCustomer>(_dbConectionFactory.GetDbConnection("CUSTOMER_READ_CONNECTION"))
                    .QueryAsync(qry, new { p_name = name });

                return data;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public async Task<IEnumerable<MstCustomer>> GetCustomers()
        {
            try
            {
                var qry = "SELECT * FROM Customer";

                var data = await new DapperRepository<MstCustomer>(_dbConectionFactory.GetDbConnection("CUSTOMER_READ_CONNECTION"))
                    .QueryAsync(qry);

                return data;

            }
            catch (Exception ex)
            {

                throw ex;
            }
        }
    }
}


================================================
FILE: src/Pos.Customer.WebApi/Application/Queries/ICustomerQueries.cs
================================================
using Pos.Customer.Domain.CustomerAggregate;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Customer.WebApi.Application.Queries
{
    public interface ICustomerQueries
    {
        Task<MstCustomer> GetCustomer(Guid id);
        Task<IEnumerable<MstCustomer>> GetCustomers();
        Task<IEnumerable<MstCustomer>> GetCustomer(string name);
    }
}


================================================
FILE: src/Pos.Customer.WebApi/ApplicationBootsraper.cs
================================================
using AutoMapper;
using Dermayon.Common.Domain;
using Dermayon.Infrastructure.EvenMessaging.Kafka;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Pos.Customer.Domain.CustomerAggregate;
using Pos.Customer.Infrastructure;
using Pos.Customer.Infrastructure.EventSources;
using Pos.Customer.Infrastructure.Repositories;
using Pos.Customer.WebApi.Application.Commands;
using Pos.Customer.WebApi.Application.EventHandlers;
using Pos.Customer.WebApi.Application.Queries;
using Pos.Customer.WebApi.Mapping;
using Pos.Event.Contracts;

namespace Pos.Customer.WebApi
{
    public static class ApplicationBootsraper
    {
        public static IServiceCollection InitBootsraper(this IServiceCollection services, IConfiguration Configuration)
        {
            //Init DermayonBootsraper
            services.InitDermayonBootsraper()
                   // Set Kafka Configuration
                   .InitKafka()
                       .Configure<KafkaEventConsumerConfiguration>(Configuration.GetSection("KafkaConsumer"))
                       .Configure<KafkaEventProducerConfiguration>(Configuration.GetSection("KafkaProducer"))
                        .RegisterKafkaConsumer<CustomerCreatedEvent, CustomerCreateEventHandler>()
                        .RegisterKafkaConsumer<CustomerUpdatedEvent, CustomerUpdateEventHandler>()
                        .RegisterKafkaConsumer<CustomerDeletedEvent, CustomerDeleteEventHandler>()                        
                   .RegisterMongo()
                   // Implement CQRS Event Sourcing => UserContextEvents [Commands]
                   .RegisterEventSources()
                       .RegisterMongoContext<POSCustomerEventContext, POSCustomerEventContextSetting>
                            (Configuration.GetSection("ConnectionStrings:CUSTOMER_COMMAND_CONNECTION")
                           .Get<POSCustomerEventContextSetting>())
                  // Implement CQRS Event Sourcing => UserContext [Query] &                    
                  .RegisterEf()
                    .AddDbContext<POSCustomerContext>(options =>
                        options.UseSqlServer(Configuration.GetConnectionString("CUSTOMER_READ_CONNECTION")))
                .AddOpenApiDocument();                       

            return services;
        }

        public static IServiceCollection InitMapperProfile(this IServiceCollection services)
        {
            var mapperConfig = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile(new CommandToEventMapperProfile());
                cfg.AddProfile(new DomainToCommandMapperProfile());
                cfg.AddProfile(new EventoDomainMapperProfile());                
            });            
            services.AddSingleton(provider => mapperConfig.CreateMapper());

            return services;
        }

        public static IServiceCollection InitAppServices(this IServiceCollection services)
        {
            #region Command
            services.AddScoped<ICustomerRepository, CustomeRepository>();
            #endregion
            #region Queries
            services.AddScoped<ICustomerQueries, CustomerQueries>();
            #endregion
            return services;
        }

        public static IServiceCollection InitEventHandlers(this IServiceCollection services)
        {
            services.AddTransient<ICommandHandler<CreateCustomerCommand>, CreateCustomerCommandHandler>();
            services.AddTransient<CustomerCreateEventHandler>();

            services.AddTransient<ICommandHandler<UpdateCustomerCommand>, UpdateCustomerCommandHandler>();
            services.AddTransient<CustomerUpdateEventHandler>();

            services.AddTransient<ICommandHandler<DeleteCustomerCommand>, DeleteCustomerCommandHandler>();
            services.AddTransient<CustomerDeleteEventHandler>();

            return services;
        }
    }
}


================================================
FILE: src/Pos.Customer.WebApi/Controllers/CustomerController.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using AutoMapper;
using Dermayon.Common.Api;
using Dermayon.Common.Domain;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Pos.Customer.WebApi.Application.Commands;
using Pos.Customer.WebApi.Application.Queries;

namespace Pos.Customer.WebApi.Controllers
{
    [Produces("application/json")]
    [Route("api/[controller]")]
    [ApiController]
    public class CustomerController : ControllerBase
    {
        private readonly IMapper _mapper;
        private readonly ICommandHandler<CreateCustomerCommand> _createCustomerCommand;
        private readonly ICommandHandler<UpdateCustomerCommand> _updateCustomerCommand;
        private readonly ICommandHandler<DeleteCustomerCommand> _deleteCustomerCommand;
        private readonly ICustomerQueries _customerQueries;
        private readonly ILogger<CustomerController> _logger;

        public CustomerController(IMapper mapper, 
            ICommandHandler<CreateCustomerCommand> createCustomerCommand,
            ICommandHandler<UpdateCustomerCommand> updateCustomerCommand,
            ICommandHandler<DeleteCustomerCommand> deleteCustomerCommand,
            ICustomerQueries customerQueries,
            ILogger<CustomerController> logger)
        {
            _mapper = mapper;
            _createCustomerCommand = createCustomerCommand;
            _updateCustomerCommand = updateCustomerCommand;
            _deleteCustomerCommand = deleteCustomerCommand;
            _customerQueries = customerQueries;
            _logger = logger;
        }

        // GET api/customer
        [HttpGet]
        public async Task<IActionResult> Get()
        {
            try
            {
                var data = await _customerQueries.GetCustomers();

                return Ok(new ApiOkResponse(data, data.Count()));
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, "Error on Get Customers");
                return BadRequest(new ApiBadRequestResponse(500, "Something Wrong"));
            }
        }

        // GET api/customer/5
        [HttpGet("{id}")]
        public async Task<IActionResult> Get(Guid id)
        {
            try
            {
                var data = await _customerQueries.GetCustomer(id);

                return Ok(new ApiOkResponse(data, data != null ? 1 : 0));
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, $"Error on Get Customer [{id}]");
                return BadRequest(new ApiBadRequestResponse(500, "Something Wrong"));
            }
        }

        // POST api/customer
        [HttpPost]
        public async Task<IActionResult> Post([FromBody] CreateCustomerCommand request)
        {
            try
            {                
                await _createCustomerCommand.Handle(request, CancellationToken.None);                
                return Ok(new ApiResponse(200));
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, $"Error on Insert Customer [Name, Phone, Address ({request.Name},{request.Phone},{request.Address})]");
                return BadRequest(new ApiBadRequestResponse(500, "Something Wrong"));
            }
        }

        // PUT api/customer
        [HttpPut]
        public async Task<IActionResult> Put([FromBody] UpdateCustomerCommand request)
        {
            try
            {
                await _updateCustomerCommand.Handle(request, CancellationToken.None);
                return Ok(new ApiResponse(200));
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, $"Error on Insert Customer [Name, Phone, Address ({request.Name},{request.Phone},{request.Address})]");
                return BadRequest(new ApiBadRequestResponse(500, "Something Wrong"));
            }
        }

        // DELETE api/customer/idCustomer
        [HttpDelete("{id}")]
        public async Task<IActionResult> Delete(Guid id)
        {
            try
            {
                var deleteCustomerCommand = new DeleteCustomerCommand { CustomerId = id };
                await _deleteCustomerCommand.Handle(deleteCustomerCommand, CancellationToken.None);
                return Ok(new ApiResponse(200));
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, $"Error on Delete Customer [{id}]");
                return BadRequest(new ApiBadRequestResponse(500, "Something Wrong"));
            }
        }
    }
}


================================================
FILE: src/Pos.Customer.WebApi/Controllers/ValuesController.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;

namespace Pos.Customer.WebApi.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        // GET api/values
        [HttpGet]
        public ActionResult<IEnumerable<string>> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/values/5
        [HttpGet("{id}")]
        public ActionResult<string> Get(int id)
        {
            return "value";
        }

        // POST api/values
        [HttpPost]
        public void Post([FromBody] string value)
        {
        }

        // PUT api/values/5
        [HttpPut("{id}")]
        public void Put(int id, [FromBody] string value)
        {
        }

        // DELETE api/values/5
        [HttpDelete("{id}")]
        public void Delete(int id)
        {
        }
    }
}


================================================
FILE: src/Pos.Customer.WebApi/Dockerfile
================================================
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /src
COPY ["Pos.Customer.WebApi/Pos.Customer.WebApi.csproj", "Pos.Customer.WebApi/"]
COPY ["Pos.Customer.Infrastructure/Pos.Customer.Infrastructure.csproj", "Pos.Customer.Infrastructure/"]
COPY ["Pos.Customer.Domain/Pos.Customer.Domain.csproj", "Pos.Customer.Domain/"]
COPY ["Pos.Event.Contracts/Pos.Event.Contracts.csproj", "Pos.Event.Contracts/"]
RUN dotnet restore "Pos.Customer.WebApi/Pos.Customer.WebApi.csproj"
COPY . .
WORKDIR "/src/Pos.Customer.WebApi"
RUN dotnet build "Pos.Customer.WebApi.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "Pos.Customer.WebApi.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Pos.Customer.WebApi.dll"]

================================================
FILE: src/Pos.Customer.WebApi/Dockerfile.original
================================================
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /src
COPY ["Pos.Customer.WebApi/Pos.Customer.WebApi.csproj", "Pos.Customer.WebApi/"]
RUN dotnet restore "Pos.Customer.WebApi/Pos.Customer.WebApi.csproj"
COPY . .
WORKDIR "/src/Pos.Customer.WebApi"
RUN dotnet build "Pos.Customer.WebApi.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "Pos.Customer.WebApi.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Pos.Customer.WebApi.dll"]

================================================
FILE: src/Pos.Customer.WebApi/Mapping/CommandToEventMapperProfile.cs
================================================
using AutoMapper;
using Pos.Customer.WebApi.Application.Commands;
using Pos.Event.Contracts;

namespace Pos.Customer.WebApi.Mapping
{
    public class CommandToEventMapperProfile : Profile
    {
        public CommandToEventMapperProfile()
        {
            CreateMap<CreateCustomerCommand, CustomerCreatedEvent>();
            CreateMap<UpdateCustomerCommand, CustomerUpdatedEvent>();

        }
    }
}


================================================
FILE: src/Pos.Customer.WebApi/Mapping/DomainToCommandMapperProfile.cs
================================================
using AutoMapper;
using Pos.Customer.Domain.CustomerAggregate;
using Pos.Customer.WebApi.Application.Commands;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Customer.WebApi.Mapping
{
    public class DomainToCommandMapperProfile : Profile
    {
        public DomainToCommandMapperProfile()
        {

            CreateMap<MstCustomer, DeleteCustomerCommand>()
                .ForMember(dest => dest.CustomerId, opt => opt.MapFrom(src => src.Id));
            
        }
    }
}


================================================
FILE: src/Pos.Customer.WebApi/Mapping/EventoDomainMapperProfile.cs
================================================
using AutoMapper;
using Pos.Customer.Domain.CustomerAggregate;
using Pos.Event.Contracts;
using System;

namespace Pos.Customer.WebApi.Mapping
{
    public class EventoDomainMapperProfile : Profile
    {
        public EventoDomainMapperProfile()
        {
            CreateMap<CustomerCreatedEvent, MstCustomer>()
                .ForMember(dest => dest.Id, opt => opt.MapFrom(src => Guid.NewGuid()));

            CreateMap<CustomerUpdatedEvent, MstCustomer>()
                .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.CustomerId));                        
        }
    }
}


================================================
FILE: src/Pos.Customer.WebApi/Pos.Customer.WebApi.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
    <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="AutoMapper" Version="9.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.9.5" />
    <PackageReference Include="NSwag.AspNetCore" Version="13.1.3" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\Pos.Customer.Domain\Pos.Customer.Domain.csproj" />
    <ProjectReference Include="..\Pos.Customer.Infrastructure\Pos.Customer.Infrastructure.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: src/Pos.Customer.WebApi/Program.cs
================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;

namespace Pos.Customer.WebApi
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>();
    }
}


================================================
FILE: src/Pos.Customer.WebApi/Properties/launchSettings.json
================================================
{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:61924",
      "sslPort": 0
    }
  },
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "api/values",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "Pos.Customer.WebApi": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "api/values",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:5000"
    },
    "Docker": {
      "commandName": "Docker",
      "launchBrowser": true,
      "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/api/values",
      "environmentVariables": {},
      "httpPort": 61925
    }
  }
}

================================================
FILE: src/Pos.Customer.WebApi/SeedingData/DbSeeder.cs
================================================
using Microsoft.Extensions.DependencyInjection;
using Pos.Customer.Domain.CustomerAggregate;
using Pos.Customer.Infrastructure;
using System;
using System.IO;
using System.Linq;

namespace Pos.Customer.WebApi.SeedingData
{
    public static class DbSeeder
    {
        public static void Up(IServiceProvider serviceProvider)
        {          
            using (var serviceScope = serviceProvider.GetRequiredService<IServiceScopeFactory>().CreateScope())
            {
                var context = serviceScope.ServiceProvider.GetService<POSCustomerContext>();

                if (!context.Customer.Any())
                {
                    for (int i = 0; i < 100; i++)
                    {
                        context.Customer.Add(new MstCustomer { Address = Path.GetRandomFileName().Replace(".", ""), Name = Path.GetRandomFileName().Replace(".", ""), Phone = Path.GetRandomFileName().Replace(".", ""), CreatedBy ="System" });                        
                    }
                    context.SaveChanges();
                }
            }
        }
    }
}


================================================
FILE: src/Pos.Customer.WebApi/Startup.cs
================================================
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Pos.Customer.WebApi.SeedingData;

namespace Pos.Customer.WebApi
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.InitBootsraper(Configuration)
                .InitAppServices()
                .InitEventHandlers()
                .InitMapperProfile();
            
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseOpenApi();
            app.UseSwaggerUi3();

            app.UseMvc();

            //Seeder
            DbSeeder.Up(app.ApplicationServices);
        }
    }
}


================================================
FILE: src/Pos.Customer.WebApi/appsettings.Development.json
================================================
{
  "ConnectionStrings": {
    "CUSTOMER_COMMAND_CONNECTION": {
      "ServerConnection": "mongodb://root:password@mongodb:27017/admin",
      "Database": "customerevents"
    },
    "CUSTOMER_READ_CONNECTION": "server=sql.data;Initial Catalog=POSCustomerProd;User ID=sa;Password=Pass@word"
  },  
  "KafkaConsumer": {
    "Server": "kafkaserver",
    "GroupId": "customer-service",
    "TimeOut": "00:00:01",
    "Topics": [
      "PosServices"
    ]
  },
  "KafkaProducer": {
    "Server": "kafkaserver",
    "MaxRetries": 2,
    "MessageTimeout": "00:00:15"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
}


================================================
FILE: src/Pos.Customer.WebApi/appsettings.json
================================================
{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*"
}


================================================
FILE: src/Pos.Event.Contracts/AppGlobalTopic.cs
================================================
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Event.Contracts
{
    public class AppGlobalTopic
    {
        public static string PosTopic = "PosServices";
    }
}


================================================
FILE: src/Pos.Event.Contracts/Pos.Event.Contracts.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Folder Include="report\" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Dermayon.Common" Version="2.0.1" />
  </ItemGroup>

</Project>


================================================
FILE: src/Pos.Event.Contracts/customer/CustomerCreatedEvent.cs
================================================
using Dermayon.Common.Events;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Event.Contracts
{
    [Event("CustomerCreated")]
    public class CustomerCreatedEvent : IEvent
    {
        public string Name { get; set; }
        public string Phone { get; set; }
        public string Address { get; set; }

        public DateTime CreatedAt { get; set; }
    }
}


================================================
FILE: src/Pos.Event.Contracts/customer/CustomerDeletedEvent.cs
================================================
using Dermayon.Common.Events;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Event.Contracts
{
    [Event("CustomerDeleted")]
    public class CustomerDeletedEvent : IEvent
    {
        public Guid CustomerId { get; set; }        
        public DateTime CreatedAt { get; set; }
    }
}


================================================
FILE: src/Pos.Event.Contracts/customer/CustomerUpdatedEvent.cs
================================================
using Dermayon.Common.Events;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Event.Contracts
{
    [Event("CustomerUpdated")]
    public class CustomerUpdatedEvent : IEvent
    {
        public Guid CustomerId { get; set; }
        public string Name { get; set; }
        public string Phone { get; set; }
        public string Address { get; set; }

        public DateTime CreatedAt { get; set; }
    }
}


================================================
FILE: src/Pos.Event.Contracts/order/OrderCancelledEvent.cs
================================================
using Dermayon.Common.Events;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Event.Contracts.order
{
    [Event("OrderCancelled")]
    public class OrderCancelledEvent : IEvent
    {
        public Guid OrderId { get; set; }
        public OrderCreatedEvent Data { get; set; }
    } 
}


================================================
FILE: src/Pos.Event.Contracts/order/OrderCreatedEvent.cs
================================================
using Dermayon.Common.Events;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Event.Contracts
{
    [Event("OrderCreated")]
    public class OrderCreatedEvent : IEvent
    {
        public OrderCreatedEvent()
        {
            OrderDetail = new List<OrderDetailDto>();
        }

        public Guid OrderId { get; set; }
        public Guid CustomerId { get; set; }
        public string Customer { get; set; }
        public DateTime? OrderDate { get; set; }
        public string OrderNumber { get; set; }
        public decimal? Amount { get; set; }
        public string Status { get; set; }
        public string ShipName { get; set; }
        public string ShipAddress { get; set; }
        public string ShipCity { get; set; }
        public string ShipPostalCode { get; set; }
        public string ShipCountry { get; set; }
        public IEnumerable<OrderDetailDto> OrderDetail { get; set; }
    }
}


================================================
FILE: src/Pos.Event.Contracts/order/OrderDetailCreatedEvent.cs
================================================
using System;

namespace Pos.Event.Contracts
{

    public class OrderDetailDto
    {
        public Guid ProductId { get; set; }        
        public int? Quantity { get; set; }
        public decimal? UnitPrice { get; set; }

        public decimal? GetSubtotal()
        {
            return UnitPrice * Quantity;
        }
    }
}

================================================
FILE: src/Pos.Event.Contracts/order/OrderShippedEvent.cs
================================================
using Dermayon.Common.Events;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Event.Contracts
{
    [Event("OrderShipped")]
    public class OrderShippedEvent : IEvent
    {
        public Guid OrderId { get; set; }
        public OrderCreatedEvent Data { get; set; }
    }
}


================================================
FILE: src/Pos.Event.Contracts/order/OrderValidatedEvent.cs
================================================
using Dermayon.Common.Events;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Event.Contracts
{
    [Event("OrderValidatedEvent")]
    public class OrderValidatedEvent : IEvent
    {
        public OrderValidatedEvent()
        {
            Data = new OrderCreatedEvent();
        }
        public string Action { get; set; }
        public Guid OrderId { get; set; }
        public bool IsValid { get; set; }
        public List<string> Messages { get; set; }
        public OrderCreatedEvent Data { get; set; }
    }
}


================================================
FILE: src/Pos.Event.Contracts/product/ProductCategoryCreatedEvent.cs
================================================
using Dermayon.Common.Events;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Event.Contracts
{
    [Event("ProductCategoryCreated")]
    public class ProductCategoryCreatedEvent : IEvent
    {
        public string Name { get; set; }
        public DateTime CreatedAt { get; set; }
    }
}


================================================
FILE: src/Pos.Event.Contracts/product/ProductCategoryDeletedEvent.cs
================================================
using Dermayon.Common.Events;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Event.Contracts
{
    [Event("ProductCategoryDeleted")]
    public class ProductCategoryDeletedEvent : IEvent
    {
        public Guid ProductCategoryId { get; set; }
        public DateTime CreatedAt { get; set; }
    }
}


================================================
FILE: src/Pos.Event.Contracts/product/ProductCategoryUpdatedEvent.cs
================================================
using Dermayon.Common.Events;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Event.Contracts
{
    [Event("ProductCategoryUpdated")]
    public class ProductCategoryUpdatedEvent : IEvent
    {
        public Guid Id { get; set; }
        public string Name { get; set; }
        public DateTime CreatedAt { get; set; }
    }
}


================================================
FILE: src/Pos.Event.Contracts/product/ProductCreatedEvent.cs
================================================
using Dermayon.Common.Events;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Event.Contracts
{
    [Event("ProductCreated")]
    public class ProductCreatedEvent : IEvent
    {
        public Guid Category { get; set; }
        public string PartNumber { get; set; }
        public string Name { get; set; }
        public int? Quantity { get; set; }
        public decimal? UnitPrice { get; set; }
        public DateTime CreatedAt { get; set; }
    }
}


================================================
FILE: src/Pos.Event.Contracts/product/ProductDeletedEvent.cs
================================================
using Dermayon.Common.Events;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Event.Contracts
{
    [Event("ProductDeleted")]
    public class ProductDeletedEvent : IEvent
    {
        public Guid ProductId { get; set; }
        public DateTime CreatedAt { get; set; }
    }
}


================================================
FILE: src/Pos.Event.Contracts/product/ProductUpdatedEvent.cs
================================================
using Dermayon.Common.Events;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Event.Contracts
{
    [Event("ProductUpdated")]
    public class ProductUpdatedEvent : IEvent
    {
        public Guid Id { get; set; }
        public Guid Category { get; set; }
        public string PartNumber { get; set; }
        public string Name { get; set; }
        public int? Quantity { get; set; }
        public decimal? UnitPrice { get; set; }
        public DateTime CreatedAt { get; set; }
    }
}


================================================
FILE: src/Pos.Gateway/Controllers/ValuesController.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;

namespace Pos.Gateway.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        // GET api/values
        [HttpGet]
        public ActionResult<IEnumerable<string>> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/values/5
        [HttpGet("{id}")]
        public ActionResult<string> Get(int id)
        {
            return "value";
        }

        // POST api/values
        [HttpPost]
        public void Post([FromBody] string value)
        {
        }

        // PUT api/values/5
        [HttpPut("{id}")]
        public void Put(int id, [FromBody] string value)
        {
        }

        // DELETE api/values/5
        [HttpDelete("{id}")]
        public void Delete(int id)
        {
        }
    }
}


================================================
FILE: src/Pos.Gateway/Dockerfile
================================================
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /src
COPY ["Pos.Gateway/Pos.Gateway.csproj", "Pos.Gateway/"]
RUN dotnet restore "Pos.Gateway/Pos.Gateway.csproj"
COPY . .
WORKDIR "/src/Pos.Gateway"
RUN dotnet build "Pos.Gateway.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "Pos.Gateway.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Pos.Gateway.dll"]

================================================
FILE: src/Pos.Gateway/Pos.Gateway.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
    <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.9.5" />
    <PackageReference Include="Ocelot" Version="13.5.2" />
  </ItemGroup>

</Project>


================================================
FILE: src/Pos.Gateway/Program.cs
================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;

namespace Pos.Gateway
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>();
    }
}


================================================
FILE: src/Pos.Gateway/Properties/launchSettings.json
================================================
{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:61984",
      "sslPort": 0
    }
  },
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "api/values",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "Pos.Gateway": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "api/values",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:5000"
    },
    "Docker": {
      "commandName": "Docker",
      "launchBrowser": true,
      "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/api/values",
      "environmentVariables": {},
      "httpPort": 61985
    }
  }
}

================================================
FILE: src/Pos.Gateway/Startup.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.IdentityModel.Tokens;
using Ocelot.DependencyInjection;
using Ocelot.Middleware;

namespace Pos.Gateway
{
    public class Startup
    {
        public Startup(IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder();
            builder.SetBasePath(env.ContentRootPath)
                   .AddJsonFile("configuration.json", optional: false, reloadOnChange: true)
                   .AddEnvironmentVariables();

            Configuration = builder.Build();
        }

        //public Startup(IConfiguration configuration)
        //{
        //    Configuration = configuration;
        //}



        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddOcelot(Configuration);

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

            var key = Encoding.ASCII.GetBytes("E546C8DF278CD5931069B522E695D4F2");

            services.AddAuthentication(x =>
            {
                x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(x =>
            {
                x.RequireHttpsMetadata = false;
                x.SaveToken = true;
                x.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey = new SymmetricSecurityKey(key),
                    ValidateIssuer = false,
                    ValidateAudience = false
                };
            });
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            app.UseAuthentication();
            app.UseOcelot().Wait();
            app.UseMvc();
        }
    }
}


================================================
FILE: src/Pos.Gateway/appsettings.Development.json
================================================
{
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
}


================================================
FILE: src/Pos.Gateway/appsettings.json
================================================
{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*"
}


================================================
FILE: src/Pos.Gateway/configuration.json
================================================
{
  "ReRoutes": [
    {
      "DownstreamPathTemplate": "/api/{everything}",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "pos.report.webapi",
          "Port": 80
        }
      ],
      "UpstreamPathTemplate": "/api-report/{everything}",
      "UpstreamHttpMethod": [ "Get", "Post", "Put", "Delete" ],
      "AuthenticationOptions": {
        //"AuthenticationProviderKey": "Bearer",
        "AllowedScopes": []
      },
      "RateLimitOptions": {
        "ClientWhitelist": [],
        "EnableRateLimiting": true,
        "Period": "1s",
        "PeriodTimespan": 1,
        "Limit": 1
      },
      "QoSOptions": {
        "ExceptionsAllowedBeforeBreaking": 2,
        "DurationOfBreak": 5000,
        "TimeoutValue": 3000
      }
    },
    {
      "DownstreamPathTemplate": "/api/{everything}",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "pos.product.webapi",
          "Port": 80
        }
      ],
      "UpstreamPathTemplate": "/api-product/{everything}",
      "UpstreamHttpMethod": [ "Get", "Post", "Put", "Delete" ],
      "AuthenticationOptions": {
        //"AuthenticationProviderKey": "Bearer",
        "AllowedScopes": []
      },
      "RateLimitOptions": {
        "ClientWhitelist": [],
        "EnableRateLimiting": true,
        "Period": "1s",
        "PeriodTimespan": 1,
        "Limit": 1
      },
      "QoSOptions": {
        "ExceptionsAllowedBeforeBreaking": 2,
        "DurationOfBreak": 5000,
        "TimeoutValue": 3000
      }
    },
    {
      "DownstreamPathTemplate": "/api/{everything}",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "pos.order.webapi",
          "Port": 80
        }
      ],
      "UpstreamPathTemplate": "/api-order/{everything}",
      "UpstreamHttpMethod": [ "Get", "Post", "Put", "Delete" ],
      "AuthenticationOptions": {
        //"AuthenticationProviderKey": "Bearer",
        "AllowedScopes": []
      },
      "RateLimitOptions": {
        "ClientWhitelist": [],
        "EnableRateLimiting": true,
        "Period": "1s",
        "PeriodTimespan": 1,
        "Limit": 1
      },
      "QoSOptions": {
        "ExceptionsAllowedBeforeBreaking": 2,
        "DurationOfBreak": 5000,
        "TimeoutValue": 3000
      }
    },
    {
      "DownstreamPathTemplate": "/api/{everything}",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "pos.customer.webapi",
          "Port": 80
        }
      ],
      "UpstreamPathTemplate": "/api-customer/{everything}",
      "UpstreamHttpMethod": [ "Get", "Post", "Put", "Delete" ],
      "AuthenticationOptions": {
        //"AuthenticationProviderKey": "Bearer",
        "AllowedScopes": []
      },
      "RateLimitOptions": {
        "ClientWhitelist": [],
        "EnableRateLimiting": true,
        "Period": "1s",
        "PeriodTimespan": 1,
        "Limit": 1
      },
      "QoSOptions": {
        "ExceptionsAllowedBeforeBreaking": 2,
        "DurationOfBreak": 5000,
        "TimeoutValue": 3000
      }
    },
    {
      "DownstreamPathTemplate": "/api/{everything}",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "pos.gateway.securities",
          "Port": 80
        }
      ],
      "UpstreamPathTemplate": "/api-authentication/{everything}",
      "UpstreamHttpMethod": [ "Get", "Post", "Put", "Delete" ],
    }
  ],
  "GlobalConfiguration": {
    "RequestIdKey": "OcRequestId",
    "AdministrationPath": "/administration"
  }
}


================================================
FILE: src/Pos.Gateway.Securities/Application/AuthService.cs
================================================
using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.Linq;
using System.Security.Claims;
using System.Text;
using System.Threading.Tasks;
using Microsoft.IdentityModel.Tokens;
using Pos.Gateway.Securities.Models;

namespace Pos.Gateway.Securities.Application
{
    public class AuthService : IAuthService
    {
        public Models.SecurityToken Authenticate(string keyAuth)
        {
            if (string.IsNullOrEmpty(keyAuth))
                return null;

            // authentication successful so generate jwt token
            var tokenHandler = new JwtSecurityTokenHandler();
            var key = Encoding.ASCII.GetBytes("E546C8DF278CD5931069B522E695D4F2");
            var tokenDescriptor = new SecurityTokenDescriptor
            {                
                Expires = DateTime.UtcNow.AddDays(7),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };
            var token = tokenHandler.CreateToken(tokenDescriptor);
            var jwtSecurityToken = tokenHandler.WriteToken(token);

            return new Models.SecurityToken() { auth_token = jwtSecurityToken };
        }
    }
}


================================================
FILE: src/Pos.Gateway.Securities/Application/IAuthService.cs
================================================
using Pos.Gateway.Securities.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Gateway.Securities.Application
{
    public interface IAuthService
    {
        SecurityToken Authenticate(string key);
    }
}


================================================
FILE: src/Pos.Gateway.Securities/Controllers/AuthController.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Pos.Gateway.Securities.Application;
using Pos.Gateway.Securities.Models;

namespace Pos.Gateway.Securities.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class AuthController : ControllerBase
    {
        private readonly IAuthService _authService;
        public AuthController(IAuthService authService)
        {
            _authService = authService;
        }

        [AllowAnonymous]
        [HttpPost("authenticate")]
        public IActionResult Authenticate([FromBody] Authentication authentication)
        {
            var token = _authService.Authenticate(authentication.Key);

            if (token == null)
                return BadRequest(new { message = "Username or password is incorrect" });

            return Ok(token);
        }
    }
}


================================================
FILE: src/Pos.Gateway.Securities/Dockerfile
================================================
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /src
COPY ["Pos.Gateway.Securities/Pos.Gateway.Securities.csproj", "Pos.Gateway.Securities/"]
RUN dotnet restore "Pos.Gateway.Securities/Pos.Gateway.Securities.csproj"
COPY . .
WORKDIR "/src/Pos.Gateway.Securities"
RUN dotnet build "Pos.Gateway.Securities.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "Pos.Gateway.Securities.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Pos.Gateway.Securities.dll"]

================================================
FILE: src/Pos.Gateway.Securities/Models/Authentication.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Gateway.Securities.Models
{
    public class Authentication
    {
        public string Key { get; set; }
    }
}


================================================
FILE: src/Pos.Gateway.Securities/Models/SecurityToken.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Gateway.Securities.Models
{
    public class SecurityToken
    {
        public string auth_token { get; set; }
    }
}


================================================
FILE: src/Pos.Gateway.Securities/Pos.Gateway.Securities.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
    <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.9.5" />
  </ItemGroup>

</Project>


================================================
FILE: src/Pos.Gateway.Securities/Program.cs
================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;

namespace Pos.Gateway.Securities
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>();
    }
}


================================================
FILE: src/Pos.Gateway.Securities/Properties/launchSettings.json
================================================
{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:63186",
      "sslPort": 0
    }
  },
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "api/values",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "Pos.Gateway.Securities": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "api/values",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:5000"
    },
    "Docker": {
      "commandName": "Docker",
      "launchBrowser": true,
      "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/api/values",
      "environmentVariables": {},
      "httpPort": 63187
    }
  }
}

================================================
FILE: src/Pos.Gateway.Securities/Startup.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Pos.Gateway.Securities.Application;

namespace Pos.Gateway.Securities
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddScoped<IAuthService, AuthService>();

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseMvc();
        }
    }
}


================================================
FILE: src/Pos.Gateway.Securities/appsettings.Development.json
================================================
{
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
}


================================================
FILE: src/Pos.Gateway.Securities/appsettings.json
================================================
{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*"
}


================================================
FILE: src/Pos.Order.Domain/OrderAggregate/Contract/IOrderRepository.cs
================================================
using Dermayon.Infrastructure.Data.EFRepositories.Contracts;
using System;
using System.Threading.Tasks;

namespace Pos.Order.Domain.OrderAggregate.Contract
{
    public interface IOrderRepository : IEfRepository<MstOrder>
    {
        Task ShippedOrder(Guid orderId);
        Task CanceledOrder(Guid orderId);
    }
}


================================================
FILE: src/Pos.Order.Domain/OrderAggregate/MstOrder.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;

namespace Pos.Order.Domain
{
    public partial class MstOrder
    {
        public MstOrder()
        {
            OrderDetail = new HashSet<OrderDetail>();
        }

        public Guid Id { get; set; }
        public Guid? CustomerId { get; set; }
        public DateTime? OrderDate { get; set; }
        public string OrderNumber { get; set; }
        public decimal? Amount { get; set; }
        public string Status { get; set; }
        public string ShipName { get; set; }
        public string ShipAddress { get; set; }
        public string ShipCity { get; set; }
        public string ShipPostalCode { get; set; }
        public string ShipCountry { get; set; }

        public virtual ICollection<OrderDetail> OrderDetail { get; set; }

        public decimal? GetTotal()
        => OrderDetail.Sum(x => x.GetSubtotal());

        public void AddLineItem(Guid product, int quantity = 1)
        {
            OrderDetail lineItem = GetLineItem(product);
            if (lineItem == null)
            {
                lineItem = new OrderDetail { ProductId = product, Quantity = quantity };
                OrderDetail.Add(lineItem);
            }
            lineItem.Quantity += quantity;
        }

        public OrderDetail GetLineItem(Guid product)
        {
            foreach (var sli in OrderDetail)
                if (sli.ProductId.Equals(product))
                    return sli;
            return null;
        }
    }
}

================================================
FILE: src/Pos.Order.Domain/OrderAggregate/OrderDetail.cs
================================================
using System;
using System.Collections.Generic;

namespace Pos.Order.Domain
{
    public partial class OrderDetail
    {        
        public Guid Id { get; set; }
        public Guid OrderId { get; set; }
        public Guid ProductId { get; set; }        
        public int? Quantity { get; set; }
        public decimal? UnitPrice { get; set; }
        public virtual MstOrder Order { get; set; }

        public decimal? GetSubtotal()
        {
            return UnitPrice * Quantity;
        }
    }
}

================================================
FILE: src/Pos.Order.Domain/Pos.Order.Domain.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Dermayon.Library" Version="2.0.1" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\Pos.Event.Contracts\Pos.Event.Contracts.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: src/Pos.Order.Infrastructure/EventSources/POSOrderEventContext.cs
================================================
using Dermayon.Infrastructure.Data.MongoRepositories;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Order.Infrastructure.EventSources
{
    public class POSOrderEventContext : MongoContext
    {
        public POSOrderEventContext(POSOrderEventContextSetting setting) : base(setting)
        {
                
        }
    }
}


================================================
FILE: src/Pos.Order.Infrastructure/EventSources/POSOrderEventContextSetting.cs
================================================
using Dermayon.Infrastructure.Data.MongoRepositories;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Order.Infrastructure.EventSources
{
    public class POSOrderEventContextSetting : MongoDbSettings
    {
    }
}


================================================
FILE: src/Pos.Order.Infrastructure/POSOrderContext.cs
================================================
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
using Pos.Order.Domain;

namespace Pos.Order.Infrastructure
{
    public partial class POSOrderContext : DbContext
    {
        public POSOrderContext()
        {
        }

        public POSOrderContext(DbContextOptions<POSOrderContext> options)
            : base(options)
        {
            this.Database.EnsureCreated();
        }

        public virtual DbSet<MstOrder> Order { get; set; }
        public virtual DbSet<OrderDetail> OrderDetail { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
            }
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.HasAnnotation("ProductVersion", "2.2.0-rtm-35687");

            modelBuilder.Entity<MstOrder>(entity =>
            {
                entity.Property(e => e.Id).HasDefaultValueSql("NEWID()");

                entity.Property(e => e.Amount).HasColumnType("decimal(18, 0)");

                entity.Property(e => e.OrderDate).HasColumnType("datetime");

                entity.Property(e => e.OrderNumber)
                    .IsRequired()
                    .HasMaxLength(50);

                entity.Property(e => e.ShipAddress)
                    .IsRequired()
                    .HasMaxLength(255);

                entity.Property(e => e.ShipCity).HasMaxLength(50);

                entity.Property(e => e.ShipCountry).HasMaxLength(50);

                entity.Property(e => e.ShipName).HasMaxLength(50);

                entity.Property(e => e.ShipPostalCode).HasMaxLength(50);

                entity.Property(e => e.Status).HasMaxLength(50);
            });

            modelBuilder.Entity<OrderDetail>(entity =>
            {
                entity.Property(e => e.Id).HasDefaultValueSql("NEWID()");

                entity.Property(e => e.UnitPrice).HasColumnType("decimal(18, 0)");
              
            });

            OnModelCreatingPartial(modelBuilder);
        }

        partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
    }
}

================================================
FILE: src/Pos.Order.Infrastructure/Pos.Order.Infrastructure.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference Include="..\Pos.Order.Domain\Pos.Order.Domain.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: src/Pos.Order.Infrastructure/Repositories/OrderRepository.cs
================================================
using Dermayon.Infrastructure.Data.EFRepositories;
using Pos.Order.Domain;
using Pos.Order.Domain.OrderAggregate.Contract;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Pos.Order.Infrastructure.Repositories
{
    public class OrderRepository : EfRepository<MstOrder>, IOrderRepository
    {
        private readonly POSOrderContext _context;        
        public OrderRepository(POSOrderContext context) : base(context)
        {
            _context = context;
        }

        public async Task CanceledOrder(Guid orderId)
        {
            var result = await GetAsync(x => x.Id == orderId);

            var data = result.SingleOrDefault();
            if (data != null)
            {
                data.Status = "Canceled";
                Update(data);
            }            
        }

        public async Task ShippedOrder(Guid orderId)
        {
            var result = await GetAsync(x => x.Id == orderId);

            var data = result.SingleOrDefault();
            if (data != null)
            {
                data.Status = "Shipped";
                Update(data);
            }
        }
    }
}


================================================
FILE: src/Pos.Order.Infrastructure/efpt.config.json
================================================
{"ContextClassName":"Entvision_OrderContext","DefaultDacpacSchema":null,"IdReplace":false,"IncludeConnectionString":false,"OutputPath":null,"ProjectRootNamespace":"Pos.Order.Infrastructure","SelectedToBeGenerated":0,"Tables":[{"HasPrimaryKey":true,"Name":"dbo.Order"},{"HasPrimaryKey":true,"Name":"dbo.OrderDetail"}],"UseDatabaseNames":false,"UseFluentApiOnly":true,"UseHandleBars":false,"UseInflector":false}

================================================
FILE: src/Pos.Order.WebApi/Application/Commands/CreateOrderCommand.cs
================================================
using Dermayon.Common.Domain;
using Pos.Event.Contracts;
using Pos.Order.Infrastructure;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Order.WebApi.Application.Commands
{
    public class CreateOrderCommand : ICommand
    {
        public CreateOrderCommand()
        {
            OrderDetail = new List<OrderDetailDto>();
        }
        public Guid OrderId { get; set; }
        public Guid? CustomerId { get; set; }
        public DateTime? OrderDate { get; set; }
        public string OrderNumber { get; set; }
        public decimal? Amount { get; set; }
        public string Status { get; set; }
        public string ShipName { get; set; }
        public string ShipAddress { get; set; }
        public string ShipCity { get; set; }
        public string ShipPostalCode { get; set; }
        public string ShipCountry { get; set; }
        public List<OrderDetailDto> OrderDetail { get; set; }     
        
        public void AddProduct(Guid product, int? quantity, decimal? unitPrice = null)
        {
            OrderDetail.Add(new OrderDetailDto { ProductId = product, Quantity = quantity, UnitPrice = unitPrice });
        }
    }  
}


================================================
FILE: src/Pos.Order.WebApi/Application/Commands/CreateOrderCommandHandler.cs
================================================
using AutoMapper;
using Dermayon.Common.Domain;
using Dermayon.Common.Infrastructure.Data.Contracts;
using Dermayon.Infrastructure.Data.EFRepositories.Contracts;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Pos.Event.Contracts;
using Pos.Order.Domain;
using Pos.Order.Domain.OrderAggregate.Contract;
using Pos.Order.Infrastructure;
using Pos.Order.Infrastructure.EventSources;
using System.Threading;
using System.Threading.Tasks;
using System;
using System.IO;

namespace Pos.Order.WebApi.Application.Commands
{
    public class CreateOrderCommandHandler : ICommandHandler<CreateOrderCommand>
    {
        private readonly IMapper _mapper;
        private readonly IKakfaProducer _kafkaProducer;
        private readonly IEventRepository<POSOrderEventContext, OrderCreatedEvent> _eventSources;
        private readonly IUnitOfWork<POSOrderContext> _uow;
        private readonly IOrderRepository _orderRepository;

        public CreateOrderCommandHandler(IMapper mapper,
            IKakfaProducer kakfaProducer, 
            IEventRepository<POSOrderEventContext, OrderCreatedEvent> eventSources,
            IUnitOfWork<POSOrderContext> uow,
            IOrderRepository orderRepository
            )
        {
            _mapper = mapper;
            _kafkaProducer = kakfaProducer;
            _eventSources = eventSources;
            _uow = uow;
            _orderRepository = orderRepository;
        }

        public async Task Handle(CreateOrderCommand command, CancellationToken cancellationToken)
        {
            var @event = _mapper.Map<OrderCreatedEvent>(command);
           
            // Insert event to Command Db
            await _eventSources.InserEvent(@event, cancellationToken);          
            await _kafkaProducer.Send(@event, AppGlobalTopic.PosTopic);

            //implement choreography saga needed
            var data = _mapper.Map<MstOrder>(@event);
            _orderRepository.Insert(data);
            await _uow.CommitAsync();
        }
    }
}


================================================
FILE: src/Pos.Order.WebApi/Application/DTO/CreateOrderDetailRequest.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Order.WebApi.Application.DTO
{
    public class CreateOrderDetailRequest
    {
        public Guid ProductId { get; set; }
        public int? Quantity { get; set; }
        public decimal? UnitPrice { get; set; }
    }
}


================================================
FILE: src/Pos.Order.WebApi/Application/DTO/CreateOrderHeaderRequest.cs
================================================
using Pos.Event.Contracts;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Order.WebApi.Application.DTO
{
    public class CreateOrderHeaderRequest
    {
        public Guid? CustomerId { get; set; }             
        public string ShipName { get; set; }
        public string ShipAddress { get; set; }
        public string ShipCity { get; set; }
        public string ShipPostalCode { get; set; }
        public string ShipCountry { get; set; }

        public List<OrderDetailDto> OrderDetail { get; set; }

        public decimal? GetTotal()
          => OrderDetail.Sum(x => x.GetSubtotal());
    }


}


================================================
FILE: src/Pos.Order.WebApi/Application/DTO/DetailOrderLineItemResponse.cs
================================================
using System;

namespace Pos.Order.WebApi.Application.DTO
{
    public class DetailOrderLineItemResponse
    {
        public Guid ProductId { get; set; }
        public int? Quantity { get; set; }
        public decimal? UnitPrice { get; set; }
    }
}

================================================
FILE: src/Pos.Order.WebApi/Application/DTO/DetailOrderResponse.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Order.WebApi.Application.DTO
{
    public class DetailOrderResponse
    {
        public Guid? CustomerId { get; set; }
        public DateTime? OrderDate { get; set; }
        public string OrderNumber { get; set; }
        public decimal? Amount { get; set; }
        public string Status { get; set; }
        public string ShipName { get; set; }
        public string ShipAddress { get; set; }
        public string ShipCity { get; set; }
        public string ShipPostalCode { get; set; }
        public string ShipCountry { get; set; }
        public List<DetailOrderLineItemResponse> OrderDetail { get; set; }
    }
}


================================================
FILE: src/Pos.Order.WebApi/Application/EventHandlers/OrderCanceledEventHandler.cs
================================================
using Dermayon.Common.CrossCutting;
using Dermayon.Common.Infrastructure.Data.Contracts;
using Dermayon.Common.Infrastructure.EventMessaging;
using Dermayon.Infrastructure.Data.EFRepositories.Contracts;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Newtonsoft.Json.Linq;
using Pos.Event.Contracts;
using Pos.Event.Contracts.order;
using Pos.Order.Domain.OrderAggregate.Contract;
using Pos.Order.Infrastructure;
using Pos.Order.Infrastructure.EventSources;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;

namespace Pos.Order.WebApi.Application.EventHandlers
{
    public class OrderCanceledEventHandler : IServiceEventHandler
    {
        private readonly IKakfaProducer _producer;
        private readonly IUnitOfWork<POSOrderContext> _uow;
        private readonly IOrderRepository _orderRepository;
        public OrderCanceledEventHandler(IKakfaProducer producer,
            IOrderRepository orderRepository,
            IUnitOfWork<POSOrderContext> uow
            )
        {
            _producer = producer;
            _orderRepository = orderRepository;
            _uow = uow;
        }

        public async Task Handle(JObject jObject, ILog log, CancellationToken cancellationToken)
        {
            try
            {
                log.Info("Consume Event");

                var dataConsomed = jObject.ToObject<OrderCancelledEvent>();

                //Consume data to Read Db
                await _orderRepository.CanceledOrder(dataConsomed.OrderId);
                await _uow.CommitAsync();
            }
            catch (Exception ex)
            {

                throw ex;
            }           
        }
    }
}


================================================
FILE: src/Pos.Order.WebApi/Application/EventHandlers/OrderShippedEventHandler.cs
================================================
using Dermayon.Common.CrossCutting;
using Dermayon.Common.Infrastructure.Data.Contracts;
using Dermayon.Common.Infrastructure.EventMessaging;
using Dermayon.Infrastructure.Data.EFRepositories.Contracts;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Newtonsoft.Json.Linq;
using Pos.Event.Contracts;
using Pos.Event.Contracts.order;
using Pos.Order.Domain.OrderAggregate.Contract;
using Pos.Order.Infrastructure;
using Pos.Order.Infrastructure.EventSources;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;

namespace Pos.Order.WebApi.Application.EventHandlers
{
    public class OrderShippedEventHandler : IServiceEventHandler
    {
        private readonly IKakfaProducer _producer;
        private readonly IUnitOfWork<POSOrderContext> _uow;
        private readonly IOrderRepository _orderRepository;
        public OrderShippedEventHandler(IKakfaProducer producer,
            IOrderRepository orderRepository,
            IUnitOfWork<POSOrderContext> uow
            )
        {
            _producer = producer;
            _orderRepository = orderRepository;
            _uow = uow;
        }

        public async Task Handle(JObject jObject, ILog log, CancellationToken cancellationToken)
        {
            try
            {
                log.Info("Consume Event");

                var dataConsomed = jObject.ToObject<OrderShippedEvent>();

                //Consume data to Read Db
                await _orderRepository.ShippedOrder(dataConsomed.OrderId);
                await _uow.CommitAsync();
            }
            catch (Exception ex)
            {

                throw ex;
            }           
        }
    }
}


================================================
FILE: src/Pos.Order.WebApi/Application/EventHandlers/OrderValidatedEventHandler.cs
================================================
using Dermayon.Common.CrossCutting;
using Dermayon.Common.Infrastructure.Data.Contracts;
using Dermayon.Common.Infrastructure.EventMessaging;
using Dermayon.Infrastructure.Data.EFRepositories.Contracts;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Newtonsoft.Json.Linq;
using Pos.Event.Contracts;
using Pos.Event.Contracts.order;
using Pos.Order.Domain.OrderAggregate.Contract;
using Pos.Order.Infrastructure;
using Pos.Order.Infrastructure.EventSources;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;

namespace Pos.Order.WebApi.Application.EventHandlers
{
    public class OrderValidatedEventHandler : IServiceEventHandler
    {
        private readonly IKakfaProducer _producer;
        private readonly IEventRepository<POSOrderEventContext, OrderShippedEvent> _shipedEventSources;
        private readonly IEventRepository<POSOrderEventContext, OrderCancelledEvent> _cancelledEventSources;
        public OrderValidatedEventHandler(IKakfaProducer producer,
            IEventRepository<POSOrderEventContext, OrderShippedEvent> shipedEventSources,
            IEventRepository<POSOrderEventContext, OrderCancelledEvent> cancelledEventSources)
        {
            _producer = producer;
            _shipedEventSources = shipedEventSources;
            _cancelledEventSources = cancelledEventSources;            
        }

        public async Task Handle(JObject jObject, ILog log, CancellationToken cancellationToken)
        {
            var orderValidated = jObject.ToObject<OrderValidatedEvent>();
            if (orderValidated.IsValid)
            {
                var orderShippedEvent = new OrderShippedEvent{ Data = orderValidated.Data, OrderId = orderValidated.OrderId};
                await _shipedEventSources.InserEvent(orderShippedEvent, cancellationToken);

                await _producer.Send(orderShippedEvent, AppGlobalTopic.PosTopic);
            }
            else
            {
                var orderCanceledEvent = new OrderCancelledEvent { Data = orderValidated.Data, OrderId = orderValidated.OrderId };
                await _cancelledEventSources.InserEvent(orderCanceledEvent, cancellationToken);

                await _producer.Send(orderCanceledEvent, AppGlobalTopic.PosTopic);
            }
        }
    }
}


================================================
FILE: src/Pos.Order.WebApi/Application/Queries/IOrderQueries.cs
================================================
using Pos.Order.Domain;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Pos.Customer.WebApi.Application.Queries
{
    public interface IOrderQueries
    {
        Task<IEnumerable<MstOrder>> GetOrders();
        Task<MstOrder> GetOrder(Guid id);
        Task<IEnumerable<MstOrder>> GetOrderByNumber(string orderNumber);        
    }
}


================================================
FILE: src/Pos.Order.WebApi/Application/Queries/OrderQueries.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Dermayon.Common.Infrastructure.Data.Contracts;
using Dermayon.Infrastructure.Data.DapperRepositories;
using Microsoft.EntityFrameworkCore;
using Pos.Order.Domain;
using Pos.Order.Domain.OrderAggregate.Contract;

namespace Pos.Customer.WebApi.Application.Queries
{
    public class OrderQueries : IOrderQueries
    {
        private readonly IDbConectionFactory _dbConectionFactory;
        private readonly IOrderRepository _orderRepository;

        public OrderQueries(IDbConectionFactory dbConectionFactory,
            IOrderRepository orderRepository)
        {
            _dbConectionFactory = dbConectionFactory;
            _orderRepository = orderRepository;
        }


        public async Task<MstOrder> GetOrder(Guid id)
        {
            var data = await _orderRepository.GetIncludeAsync(x => x.Id == id, includes: src => src.Include(x => x.OrderDetail));

            return data.SingleOrDefault();
        }

        public async Task<IEnumerable<MstOrder>> GetOrderByNumber(string orderNumber)
        {
            var data = await _orderRepository.GetIncludeAsync(x => x.OrderNumber == orderNumber, includes: src => src.Include(x => x.OrderDetail));

            return data.ToList();
        }

        public async Task<IEnumerable<MstOrder>> GetOrders()
        {
            var data = await _orderRepository.GetIncludeAsync(x => x.Status != null, includes: src => src.Include(x => x.OrderDetail));

            return data.ToList();
        }
    }
}


================================================
FILE: src/Pos.Order.WebApi/ApplicationBootsraper.cs
================================================
using AutoMapper;
using Dermayon.Common.Domain;
using Dermayon.Infrastructure.EvenMessaging.Kafka;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Pos.Order.Infrastructure;
using Pos.Order.Infrastructure.Repositories;
using Pos.Order.WebApi.Application.Commands;
using Pos.Event.Contracts;
using Pos.Order.Domain.OrderAggregate.Contract;
using Pos.Customer.WebApi.Application.Queries;
using Pos.Order.WebApi.Mapping;
using Pos.Order.WebApi.Application.EventHandlers;
using Pos.Order.Infrastructure.EventSources;
using Pos.Event.Contracts.order;

namespace Pos.Order.WebApi
{
    public static class ApplicationBootsraper
    {
        public static IServiceCollection InitBootsraper(this IServiceCollection services, IConfiguration Configuration)
        {
            //Init DermayonBootsraper
            services.InitDermayonBootsraper()
                   // Set Kafka Configuration
                   .InitKafka()
                       .Configure<KafkaEventConsumerConfiguration>(Configuration.GetSection("KafkaConsumer"))
                       .Configure<KafkaEventProducerConfiguration>(Configuration.GetSection("KafkaProducer"))
                        .RegisterKafkaConsumer<OrderShippedEvent, OrderShippedEventHandler>()
                        .RegisterKafkaConsumer<OrderCancelledEvent, OrderCanceledEventHandler>()
                        .RegisterKafkaConsumer<OrderValidatedEvent, OrderValidatedEventHandler>()
                   .RegisterMongo()
                   // Implement CQRS Event Sourcing => UserContextEvents [Commands]
                   .RegisterEventSources()
                       .RegisterMongoContext<POSOrderEventContext, POSOrderEventContextSetting>
                            (Configuration.GetSection("ConnectionStrings:ORDER_COMMAND_CONNECTION")
                           .Get<POSOrderEventContextSetting>())
                  // Implement CQRS Event Sourcing => UserContext [Query] &                    
                  .RegisterEf()
                    .AddDbContext<POSOrderContext>(options =>
                        options.UseSqlServer(Configuration.GetConnectionString("ORDER_READ_CONNECTION")))
                .AddOpenApiDocument();                       

            return services;
        }

        public static IServiceCollection InitMapperProfile(this IServiceCollection services)
        {
            var mapperConfig = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile(new CommandToEventMapperProfile());
                cfg.AddProfile(new DomainToCommandMapperProfile());
                cfg.AddProfile(new EventoDomainMapperProfile());
                cfg.AddProfile(new DtotoAllMapperProfile());
                cfg.AddProfile(new AllToDtoMapperProfile());
            });            
            services.AddSingleton(provider => mapperConfig.CreateMapper());

            return services;
        }

        public static IServiceCollection InitAppServices(this IServiceCollection services)
        {
            #region Command
            services.AddScoped<IOrderRepository, OrderRepository>();
            #endregion
            #region Queries
            services.AddScoped<IOrderQueries, OrderQueries>();
            #endregion
            return services;
        }

        public static IServiceCollection InitEventHandlers(this IServiceCollection services)
        {
            services.AddTransient<ICommandHandler<CreateOrderCommand>, CreateOrderCommandHandler>();
            services.AddTransient<OrderShippedEventHandler>();
            services.AddTransient<OrderCanceledEventHandler>();
            services.AddTransient<OrderValidatedEventHandler>();
            return services;
        }
    }
}


================================================
FILE: src/Pos.Order.WebApi/Controllers/OrderController.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using AutoMapper;
using Dermayon.Common.Api;
using Dermayon.Common.Domain;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Pos.Customer.WebApi.Application.Queries;
using Pos.Order.WebApi.Application.Commands;
using Pos.Order.WebApi.Application.DTO;

namespace Pos.Order.WebApi.Controllers
{

    [Produces("application/json")]
    [Route("api/[controller]")]
    [ApiController]
    public class OrderController : ControllerBase
    {
        private readonly IMapper _mapper;
        private readonly ICommandHandler<CreateOrderCommand> _createOrderCommand;        
        private readonly IOrderQueries _orderQueries;
        private readonly ILogger<OrderController> _logger;

        public OrderController(IMapper mapper, 
            ICommandHandler<CreateOrderCommand> createOrderCommand,
            IOrderQueries orderQueries,
            ILogger<OrderController> logger
            )
        {
            _mapper = mapper;
            _createOrderCommand = createOrderCommand;
            _orderQueries = orderQueries;
            _logger = logger;
        }

        // GET api/order
        [HttpGet]
        public async Task<IActionResult> Get()
        {
            try
            {
                var data = await _orderQueries.GetOrders();
                var response = _mapper.Map<List<DetailOrderResponse>>(data);

                return Ok(new ApiOkResponse(response, response.Count()));
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, "Error on Get Orders");
                return BadRequest(new ApiBadRequestResponse(500, "Something Wrong"));
            }
        }

        // GET api/order/id
        [HttpGet("id")]
        public async Task<IActionResult> Get(Guid id)
        {
            try
            {
                var data = await _orderQueries.GetOrder(id);
                var response = _mapper.Map<DetailOrderResponse>(data);

                return Ok(new ApiOkResponse(response, response != null ? 1 : 0));
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, "Error on Get Order");
                return BadRequest(new ApiBadRequestResponse(500, "Something Wrong"));
            }
        }

        // POST api/customer
        [HttpPost]
        public async Task<IActionResult> Post([FromBody] CreateOrderHeaderRequest request)
        {
            try
            {
                var orderCommand = new CreateOrderCommand();
                orderCommand = _mapper.Map<CreateOrderCommand>(request);                                
                orderCommand.Amount = request.GetTotal();

                await _createOrderCommand.Handle(orderCommand, CancellationToken.None);
                return Ok(new ApiResponse(200));
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, $"Error on Insert Order");
                return BadRequest(new ApiBadRequestResponse(500, "Something Wrong"));
            }
        }
    }
}


================================================
FILE: src/Pos.Order.WebApi/Controllers/ValuesController.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;

namespace Pos.Order.WebApi.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        // GET api/values
        [HttpGet]
        public ActionResult<IEnumerable<string>> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/values/5
        [HttpGet("{id}")]
        public ActionResult<string> Get(int id)
        {
            return "value";
        }

        // POST api/values
        [HttpPost]
        public void Post([FromBody] string value)
        {
        }

        // PUT api/values/5
        [HttpPut("{id}")]
        public void Put(int id, [FromBody] string value)
        {
        }

        // DELETE api/values/5
        [HttpDelete("{id}")]
        public void Delete(int id)
        {
        }
    }
}


================================================
FILE: src/Pos.Order.WebApi/Dockerfile
================================================
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /src
COPY ["Pos.Order.WebApi/Pos.Order.WebApi.csproj", "Pos.Order.WebApi/"]
COPY ["Pos.Order.Infrastructure/Pos.Order.Infrastructure.csproj", "Pos.Order.Infrastructure/"]
COPY ["Pos.Order.Domain/Pos.Order.Domain.csproj", "Pos.Order.Domain/"]
COPY ["Pos.Event.Contracts/Pos.Event.Contracts.csproj", "Pos.Event.Contracts/"]
RUN dotnet restore "Pos.Order.WebApi/Pos.Order.WebApi.csproj"
COPY . .
WORKDIR "/src/Pos.Order.WebApi"
RUN dotnet build "Pos.Order.WebApi.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "Pos.Order.WebApi.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Pos.Order.WebApi.dll"]

================================================
FILE: src/Pos.Order.WebApi/Dockerfile.original
================================================
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /src
COPY ["Pos.Order.WebApi/Pos.Order.WebApi.csproj", "Pos.Order.WebApi/"]
RUN dotnet restore "Pos.Order.WebApi/Pos.Order.WebApi.csproj"
COPY . .
WORKDIR "/src/Pos.Order.WebApi"
RUN dotnet build "Pos.Order.WebApi.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "Pos.Order.WebApi.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Pos.Order.WebApi.dll"]

================================================
FILE: src/Pos.Order.WebApi/Mapping/AllToDtoMapperProfile.cs
================================================
using AutoMapper;
using Pos.Order.Domain;
using Pos.Order.WebApi.Application.DTO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Order.WebApi.Mapping
{
    public class AllToDtoMapperProfile : Profile
    {
        public AllToDtoMapperProfile()
        {
            CreateMap<MstOrder, DetailOrderResponse>();
            CreateMap<OrderDetail, DetailOrderLineItemResponse>();


        }
    }
}


================================================
FILE: src/Pos.Order.WebApi/Mapping/CommandToEventMapperProfile.cs
================================================
using AutoMapper;
using Pos.Order.WebApi.Application.Commands;
using Pos.Event.Contracts;

namespace Pos.Order.WebApi.Mapping
{
    public class CommandToEventMapperProfile : Profile
    {
        public CommandToEventMapperProfile()
        {
            CreateMap<CreateOrderCommand, OrderCreatedEvent>();            

        }
    }
}


================================================
FILE: src/Pos.Order.WebApi/Mapping/DomainToCommandMapperProfile.cs
================================================
using AutoMapper;
using Pos.Order.Domain;
using Pos.Order.Domain.OrderAggregate;
using Pos.Order.WebApi.Application.Commands;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Order.WebApi.Mapping
{
    public class DomainToCommandMapperProfile : Profile
    {
        public DomainToCommandMapperProfile()
        {
            CreateMap<MstOrder, CreateOrderCommand>();            
        }
    }
}


================================================
FILE: src/Pos.Order.WebApi/Mapping/DtotoAllMapperProfile.cs
================================================
using AutoMapper;
using Pos.Order.Domain.OrderAggregate;
using Pos.Event.Contracts;
using System;
using Pos.Order.Domain;
using Pos.Order.WebApi.Application.Commands;
using Pos.Order.WebApi.Application.DTO;
using System.IO;

namespace Pos.Order.WebApi.Mapping
{
    public class DtotoAllMapperProfile : Profile
    {
        public DtotoAllMapperProfile()
        {
            CreateMap<OrderDetailDto, OrderDetail>();
            CreateMap<CreateOrderHeaderRequest, CreateOrderCommand>()
                .ForMember(dest => dest.OrderId, opt => opt.MapFrom(src => Guid.NewGuid()))
                .ForMember(dest => dest.OrderNumber, opt => opt.MapFrom(src => Path.GetRandomFileName().Replace(".", "")))
                .ForMember(dest => dest.Status, opt => opt.MapFrom(src => "Pending"))
                .ForMember(dest => dest.OrderDate, opt => opt.MapFrom(src => DateTime.Now));


        }
    }
}


================================================
FILE: src/Pos.Order.WebApi/Mapping/EventoDomainMapperProfile.cs
================================================
using AutoMapper;
using Pos.Order.Domain.OrderAggregate;
using Pos.Event.Contracts;
using System;
using Pos.Order.Domain;

namespace Pos.Order.WebApi.Mapping
{
    public class EventoDomainMapperProfile : Profile
    {
        public EventoDomainMapperProfile()
        {
            CreateMap<OrderCreatedEvent, MstOrder>()
                .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.OrderId));
                            
        }
    }
}


================================================
FILE: src/Pos.Order.WebApi/Pos.Order.WebApi.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
    <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="AutoMapper" Version="9.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.9.5" />
    <PackageReference Include="NSwag.AspNetCore" Version="13.1.3" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\Pos.Order.Domain\Pos.Order.Domain.csproj" />
    <ProjectReference Include="..\Pos.Order.Infrastructure\Pos.Order.Infrastructure.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: src/Pos.Order.WebApi/Program.cs
================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;

namespace Pos.Order.WebApi
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>();
    }
}


================================================
FILE: src/Pos.Order.WebApi/Properties/launchSettings.json
================================================
{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:61830",
      "sslPort": 0
    }
  },
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "api/values",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "Pos.Order.WebApi": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "api/values",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:5000"
    },
    "Docker": {
      "commandName": "Docker",
      "launchBrowser": true,
      "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/api/values",
      "environmentVariables": {},
      "httpPort": 61831
    }
  }
}

================================================
FILE: src/Pos.Order.WebApi/SeedingData/DbSeeder.cs
================================================
using Microsoft.Extensions.DependencyInjection;
using Pos.Order.Domain;
using Pos.Order.Infrastructure;
using System;
using System.IO;
using System.Linq;

namespace Pos.Order.WebApi.SeedingData
{
    public static class DbSeeder
    {
        public static void Up(IServiceProvider serviceProvider)
        {          
            using (var serviceScope = serviceProvider.GetRequiredService<IServiceScopeFactory>().CreateScope())
            {
                var context = serviceScope.ServiceProvider.GetService<POSOrderContext>();

                if (!context.Order.Any())
                {
                    for (int i = 0; i < 100; i++)
                    {
                      
                        context.Order.Add(new MstOrder { OrderDate = DateTime.Now, OrderNumber = $"O-{i}", 
                            ShipAddress= Path.GetRandomFileName().Replace(".", ""),
                            ShipCity = Path.GetRandomFileName().Replace(".", ""),
                            ShipCountry = Path.GetRandomFileName().Replace(".", ""),
                            ShipName = Path.GetRandomFileName().Replace(".", ""),
                            ShipPostalCode = Path.GetRandomFileName().Replace(".", ""),
                            Status = i % 2 == 1 ? "Delivered" : "Canceled",
                            Amount = i * 40,
                        });                        
                    }
                    context.SaveChanges();
                }
            }
        }
    }
}


================================================
FILE: src/Pos.Order.WebApi/Startup.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Pos.Order.WebApi.SeedingData;

namespace Pos.Order.WebApi
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.InitBootsraper(Configuration)
                .InitAppServices()
                .InitEventHandlers()
                .InitMapperProfile();

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseOpenApi();
            app.UseSwaggerUi3();


            app.UseMvc();

            //Seeder
            DbSeeder.Up(app.ApplicationServices);
        }
    }
}


================================================
FILE: src/Pos.Order.WebApi/appsettings.Development.json
================================================
{
  "ConnectionStrings": {
    "ORDER_COMMAND_CONNECTION": {
      "ServerConnection": "mongodb://root:password@mongodb:27017/admin",
      "Database": "orderevents"
    },
    "ORDER_READ_CONNECTION": "server=sql.data;Initial Catalog=POSOrder;User ID=sa;Password=Pass@word"
  },
  "KafkaConsumer": {
    "Server": "kafkaserver",
    "GroupId": "order-service",
    "TimeOut": "00:00:01",
    "Topics": [
      "PosServices"
    ]
  },
  "KafkaProducer": {
    "Server": "kafkaserver",
    "MaxRetries": 2,
    "MessageTimeout": "00:00:15"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
}


================================================
FILE: src/Pos.Order.WebApi/appsettings.json
================================================
{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*"
}


================================================
FILE: src/Pos.Product.Domain/Pos.Product.Domain.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Compile Remove="Events\**" />
    <EmbeddedResource Remove="Events\**" />
    <None Remove="Events\**" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="AutoMapper" Version="9.0.0" />
    <PackageReference Include="Dermayon.Library" Version="2.0.1" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\Pos.Event.Contracts\Pos.Event.Contracts.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: src/Pos.Product.Domain/ProductAggregate/Contracts/IProductCategoryRepository.cs
================================================
using Dermayon.Infrastructure.Data.EFRepositories.Contracts;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Product.Domain.ProductAggregate.Contracts
{
    public interface IProductCategoryRepository : IEfRepository<ProductCategory>
    {
    }
}


================================================
FILE: src/Pos.Product.Domain/ProductAggregate/Contracts/IProductRepository.cs
================================================
using Dermayon.Infrastructure.Data.EFRepositories.Contracts;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Product.Domain.ProductAggregate.Contracts
{
    public interface IProductRepository : IEfRepository<MstProduct>
    {
    }
}


================================================
FILE: src/Pos.Product.Domain/ProductAggregate/MstProduct.cs
================================================
using System;
using System.Collections.Generic;

namespace Pos.Product.Domain.ProductAggregate
{
    public partial class MstProduct
    {
        public Guid Id { get; set; }
        public Guid Category { get; set; }
        public string PartNumber { get; set; }
        public string Name { get; set; }
        public int? Quantity { get; set; }
        public decimal? UnitPrice { get; set; }

        public virtual ProductCategory CategoryNavigation { get; set; }
    }
}

================================================
FILE: src/Pos.Product.Domain/ProductAggregate/ProductCategory.cs
================================================
using System;
using System.Collections.Generic;

namespace Pos.Product.Domain.ProductAggregate
{
    public partial class ProductCategory
    {
        public ProductCategory()
        {
            Product = new HashSet<MstProduct>();
        }

        public Guid Id { get; set; }
        public string Name { get; set; }

        public virtual ICollection<MstProduct> Product { get; set; }
    }
}

================================================
FILE: src/Pos.Product.Infrastructure/EventSources/POSProductEventContext.cs
================================================
using Dermayon.Infrastructure.Data.MongoRepositories;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Product.Infrastructure.EventSources
{
    public class POSProductEventContext : MongoContext
    {
        public POSProductEventContext(POSProductEventContextSetting setting): base(setting)
        {

        }
    }
}


================================================
FILE: src/Pos.Product.Infrastructure/EventSources/POSProductEventContextSetting.cs
================================================
using Dermayon.Infrastructure.Data.MongoRepositories;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Product.Infrastructure.EventSources
{
    public class POSProductEventContextSetting : MongoDbSettings
    {
    }
}


================================================
FILE: src/Pos.Product.Infrastructure/POSProductContext.cs
================================================
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
using Pos.Product.Domain.ProductAggregate;

namespace Pos.Product.Infrastructure
{
    public partial class POSProductContext : DbContext
    {
        public POSProductContext()
        {
        }

        public POSProductContext(DbContextOptions<POSProductContext> options)
            : base(options)
        {
            this.Database.EnsureCreated();
        }

        public virtual DbSet<MstProduct> Product { get; set; }
        public virtual DbSet<ProductCategory> ProductCategory { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
            }
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.HasAnnotation("ProductVersion", "2.2.0-rtm-35687");

            modelBuilder.Entity<MstProduct>(entity =>
            {
                entity.Property(e => e.Id).HasDefaultValueSql("NEWID()");

                entity.Property(e => e.Name)
                    .IsRequired()
                    .HasMaxLength(50);

                entity.Property(e => e.PartNumber)
                    .IsRequired()
                    .HasMaxLength(50);

                entity.Property(e => e.UnitPrice).HasColumnType("decimal(18, 0)");

                entity.HasOne(d => d.CategoryNavigation)
                    .WithMany(p => p.Product)
                    .HasForeignKey(d => d.Category)
                    .OnDelete(DeleteBehavior.ClientSetNull)
                    .HasConstraintName("FK_Product_ProductCategory");
            });

            modelBuilder.Entity<ProductCategory>(entity =>
            {
                entity.Property(e => e.Id).HasDefaultValueSql("NEWID()");

                entity.Property(e => e.Name).HasMaxLength(50);
            });


            OnModelCreatingPartial(modelBuilder);
        }

        partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
        
    }
}

================================================
FILE: src/Pos.Product.Infrastructure/Pos.Product.Infrastructure.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference Include="..\Pos.Product.Domain\Pos.Product.Domain.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: src/Pos.Product.Infrastructure/Repositories/ProductCategoryRepository.cs
================================================
using Dermayon.Infrastructure.Data.EFRepositories;
using Pos.Product.Domain.ProductAggregate;
using Pos.Product.Domain.ProductAggregate.Contracts;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Product.Infrastructure.Repositories
{
    public class ProductCategoryRepository : EfRepository<ProductCategory>, IProductCategoryRepository
    {
        private readonly POSProductContext _context;
        public ProductCategoryRepository(POSProductContext context) : base(context)
        {
            _context = context;
        }

    }
}


================================================
FILE: src/Pos.Product.Infrastructure/Repositories/ProductRepository.cs
================================================
using Dermayon.Infrastructure.Data.EFRepositories;
using Pos.Product.Domain.ProductAggregate;
using Pos.Product.Domain.ProductAggregate.Contracts;
using System;
using System.Collections.Generic;
using System.Text;

namespace Pos.Product.Infrastructure.Repositories
{
    public class ProductRepository : EfRepository<MstProduct>, IProductRepository
    {
        private readonly POSProductContext _context;
        public ProductRepository(POSProductContext context) : base(context)
        {
            _context = context;
        }

    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/Commands/CreateProductCommand.cs
================================================
using Dermayon.Common.Domain;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Product.WebApi.Application.Commands
{
    public class CreateProductCommand : ICommand
    {
        public Guid Category { get; set; }
        public string PartNumber { get; set; }
        public string Name { get; set; }
        public int? Quantity { get; set; }
        public decimal? UnitPrice { get; set; }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/Commands/CreateProductCommandHandler.cs
================================================
using AutoMapper;
using Dermayon.Common.Domain;
using Dermayon.Common.Infrastructure.Data.Contracts;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Pos.Event.Contracts;
using Pos.Product.Infrastructure.EventSources;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace Pos.Product.WebApi.Application.Commands
{
    public class CreateProductCommandHandler : ICommandHandler<CreateProductCommand>
    {
        private readonly IMapper _mapper;
        private readonly IKakfaProducer _kafkaProducer;
        private readonly IEventRepository<POSProductEventContext, ProductCreatedEvent> _eventSources;

        public CreateProductCommandHandler(
            IMapper mapper,
            IKakfaProducer kakfaProducer, 
            IEventRepository<POSProductEventContext, ProductCreatedEvent> eventSources)
        {
            _mapper = mapper;
            _kafkaProducer = kakfaProducer;
            _eventSources = eventSources;
        }

        public async Task Handle(CreateProductCommand command, CancellationToken cancellationToken)
        {
            var createdEvent = _mapper.Map<ProductCreatedEvent>(command);
            createdEvent.CreatedAt = DateTime.Now;

            // Insert event to Command Db
            await _eventSources.InserEvent(createdEvent, cancellationToken);
            
            await _kafkaProducer.Send(createdEvent, AppGlobalTopic.PosTopic);
        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/Commands/DeleteProductCommand.cs
================================================
using Dermayon.Common.Domain;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Customer.WebApi.Application.Commands
{
    public class DeleteProductCommand : ICommand
    {
        public Guid ProductId{ get; set; }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/Commands/DeleteProductCommandHandler.cs
================================================
using Dermayon.Common.Domain;
using Dermayon.Common.Infrastructure.Data.Contracts;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Pos.Customer.WebApi.Application.Commands;
using Pos.Event.Contracts;
using Pos.Product.Infrastructure.EventSources;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace Pos.Product.WebApi.Application.Commands
{
    public class DeleteProductCommandHandler : ICommandHandler<DeleteProductCommand>
    {
        private readonly IKakfaProducer _kafkaProducer;
        private readonly IEventRepository<POSProductEventContext, ProductDeletedEvent> _eventSources;
        public DeleteProductCommandHandler(IKakfaProducer kakfaProducer, 
            IEventRepository<POSProductEventContext, ProductDeletedEvent> eventSources
            )
        {
            _kafkaProducer = kakfaProducer;
            _eventSources = eventSources;
        }

        public async Task Handle(DeleteProductCommand command, CancellationToken cancellationToken)
        {
            var DeletedEvent = new ProductDeletedEvent
            {
                ProductId = command.ProductId,                
                CreatedAt = DateTime.Now
            };

            // Insert event to Command Db
            await _eventSources.InserEvent(DeletedEvent, cancellationToken);

            await _kafkaProducer.Send(DeletedEvent, AppGlobalTopic.PosTopic);
        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/Commands/ProductCategories/CreateProductCategoryCommand.cs
================================================
using Dermayon.Common.Domain;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Product.WebApi.Application.Commands.ProductCategories
{
    public class CreateProductCategoryCommand : ICommand
    {
        public string Name { get; set; }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/Commands/ProductCategories/CreateProductCategoryCommandHandler.cs
================================================
using AutoMapper;
using Dermayon.Common.Domain;
using Dermayon.Common.Infrastructure.Data.Contracts;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Pos.Event.Contracts;
using Pos.Product.Infrastructure.EventSources;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace Pos.Product.WebApi.Application.Commands.ProductCategories
{
    public class CreateProductCategoryCommandHandler : ICommandHandler<CreateProductCategoryCommand>
    {
        private readonly IMapper _mapper;
        private readonly IKakfaProducer _kafkaProducer;
        private readonly IEventRepository<POSProductEventContext, ProductCategoryCreatedEvent> _eventSources;

        public CreateProductCategoryCommandHandler(
            IMapper mapper,
            IKakfaProducer kakfaProducer, 
            IEventRepository<POSProductEventContext, ProductCategoryCreatedEvent> eventSources)
        {
            _mapper = mapper;
            _kafkaProducer = kakfaProducer;
            _eventSources = eventSources;
        }

        public async Task Handle(CreateProductCategoryCommand command, CancellationToken cancellationToken)
        {
            var createdEvent = _mapper.Map<ProductCategoryCreatedEvent>(command);
            createdEvent.CreatedAt = DateTime.Now;

            // Insert event to Command Db
            await _eventSources.InserEvent(createdEvent, cancellationToken);
            
            await _kafkaProducer.Send(createdEvent, AppGlobalTopic.PosTopic);
        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/Commands/ProductCategories/DeleteProductCategoryCommand.cs
================================================
using Dermayon.Common.Domain;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Customer.WebApi.Application.Commands
{
    public class DeleteProductCategoryCommand : ICommand
    {
        public Guid PoductCategoryId { get; set; }        
    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/Commands/ProductCategories/DeleteProductCategoryCommandHandler.cs
================================================
using Dermayon.Common.Domain;
using Dermayon.Common.Infrastructure.Data.Contracts;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Pos.Customer.WebApi.Application.Commands;
using Pos.Event.Contracts;
using Pos.Product.Infrastructure.EventSources;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace Pos.Product.WebApi.Application.Commands
{
    public class DeleteProductCategoryCommandHandler : ICommandHandler<DeleteProductCategoryCommand>
    {
        private readonly IKakfaProducer _kafkaProducer;
        private readonly IEventRepository<POSProductEventContext, ProductCategoryDeletedEvent> _eventSources;
        public DeleteProductCategoryCommandHandler(IKakfaProducer kakfaProducer, 
            IEventRepository<POSProductEventContext, ProductCategoryDeletedEvent> eventSources
            )
        {
            _kafkaProducer = kakfaProducer;
            _eventSources = eventSources;
        }

        public async Task Handle(DeleteProductCategoryCommand command, CancellationToken cancellationToken)
        {
            var DeletedEvent = new ProductCategoryDeletedEvent
            {
                ProductCategoryId = command.PoductCategoryId,                
                CreatedAt = DateTime.Now
            };

            // Insert event to Command Db
            await _eventSources.InserEvent(DeletedEvent, cancellationToken);

            await _kafkaProducer.Send(DeletedEvent, AppGlobalTopic.PosTopic);
        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/Commands/ProductCategories/UpdateProductCategoryCommand.cs
================================================
using Dermayon.Common.Domain;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Customer.WebApi.Application.Commands
{
    public class UpdateProductCategoryCommand : ICommand
    {
        public Guid Id { get; set; }
        public string Name { get; set; }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/Commands/ProductCategories/UpdateProductCategoryCommandHandler.cs
================================================
using AutoMapper;
using Dermayon.Common.Domain;
using Dermayon.Common.Infrastructure.Data.Contracts;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Pos.Customer.WebApi.Application.Commands;
using Pos.Event.Contracts;
using Pos.Product.Infrastructure.EventSources;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace Pos.Product.WebApi.Application.Commands
{
    public class UpdateProductCategoryCommandHandler : ICommandHandler<UpdateProductCategoryCommand>
    {
        private readonly IMapper _mapper;
        private readonly IKakfaProducer _kafkaProducer;
        private readonly IEventRepository<POSProductEventContext, ProductCategoryUpdatedEvent> _eventSources;

        public UpdateProductCategoryCommandHandler(
            IMapper mapper,
            IKakfaProducer kakfaProducer, 
            IEventRepository<POSProductEventContext, ProductCategoryUpdatedEvent> eventSources)
        {
            _mapper = mapper;
            _kafkaProducer = kakfaProducer;
            _eventSources = eventSources;
        }

        public async Task Handle(UpdateProductCategoryCommand command, CancellationToken cancellationToken)
        {
            var updatedEvent = _mapper.Map<ProductCategoryUpdatedEvent>(command);
            updatedEvent.CreatedAt = DateTime.Now;

            // Insert event to Command Db
            await _eventSources.InserEvent(updatedEvent, cancellationToken);

            await _kafkaProducer.Send(updatedEvent, AppGlobalTopic.PosTopic);
        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/Commands/UpdateProductCommand.cs
================================================
using Dermayon.Common.Domain;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Product.WebApi.Application.Commands
{
    public class UpdateProductCommand : ICommand
    {
        public Guid Id { get; set; }
        public Guid Category { get; set; }
        public string PartNumber { get; set; }
        public string Name { get; set; }
        public int? Quantity { get; set; }
        public decimal? UnitPrice { get; set; }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/Commands/UpdateProductCommandHandler.cs
================================================
using AutoMapper;
using Dermayon.Common.Domain;
using Dermayon.Common.Infrastructure.Data.Contracts;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Pos.Event.Contracts;
using Pos.Product.Infrastructure.EventSources;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace Pos.Product.WebApi.Application.Commands
{
    public class UpdateProductCommandHandler : ICommandHandler<UpdateProductCommand>
    {
        private readonly IMapper _mapper;
        private readonly IKakfaProducer _kafkaProducer;
        private readonly IEventRepository<POSProductEventContext, ProductUpdatedEvent> _eventSources;

        public UpdateProductCommandHandler(
            IMapper mapper,
            IKakfaProducer kakfaProducer, 
            IEventRepository<POSProductEventContext, ProductUpdatedEvent> eventSources)
        {
            _mapper = mapper;
            _kafkaProducer = kakfaProducer;
            _eventSources = eventSources;
        }

        public async Task Handle(UpdateProductCommand command, CancellationToken cancellationToken)
        {
            var updatedEvent = _mapper.Map<ProductUpdatedEvent>(command);
            updatedEvent.CreatedAt = DateTime.Now;

            // Insert event to Command Db
            await _eventSources.InserEvent(updatedEvent, cancellationToken);

            await _kafkaProducer.Send(updatedEvent, AppGlobalTopic.PosTopic);
        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/EventHandlers/ProductCategories/ProductCategoryCreateEventHandler.cs
================================================
using AutoMapper;
using Dermayon.Common.CrossCutting;
using Dermayon.Common.Infrastructure.EventMessaging;
using Dermayon.Infrastructure.Data.EFRepositories.Contracts;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Newtonsoft.Json.Linq;
using Pos.Event.Contracts;
using Pos.Product.Domain.ProductAggregate;
using Pos.Product.Domain.ProductAggregate.Contracts;
using Pos.Product.Infrastructure;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace Pos.Product.WebApi.Application.EventHandlers
{
    public class ProductCategoryCreateEventHandler : IServiceEventHandler
    {
        private readonly IUnitOfWork<POSProductContext> _uow;
        private readonly IMapper _mapper;
        private readonly IKakfaProducer _producer;
        private readonly IProductCategoryRepository _productCategoryRepository;

        public ProductCategoryCreateEventHandler(IUnitOfWork<POSProductContext> uow,
            IMapper mapper,
            IKakfaProducer producer,
            IProductCategoryRepository productCategoryRepository)
        {
            _uow = uow;
            _mapper = mapper;
            _producer = producer;
            _productCategoryRepository = productCategoryRepository;
        }
        public async Task Handle(JObject jObject, ILog log, CancellationToken cancellationToken)
        {
            try
            {
                log.Info("Consume ProductCategoryCreatedEvent");

                var dataConsomed = jObject.ToObject<ProductCategoryCreatedEvent>();
                var data = _mapper.Map<ProductCategory>(dataConsomed);

                log.Info("Insert ProductCategory");

                //Consume data to Read Db
                _productCategoryRepository.Insert(data);
                await _uow.CommitAsync();
            }
            catch (Exception ex)
            {
                log.Error("Error Inserting data ProductCategory", ex);
                throw ex;
            }            
        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/EventHandlers/ProductCategories/ProductCategoryDeleteEventHandler.cs
================================================
using AutoMapper;
using Dermayon.Common.CrossCutting;
using Dermayon.Common.Infrastructure.EventMessaging;
using Dermayon.Infrastructure.Data.EFRepositories.Contracts;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Newtonsoft.Json.Linq;
using Pos.Event.Contracts;
using Pos.Product.Domain.ProductAggregate.Contracts;
using Pos.Product.Infrastructure;
using Pos.Product.WebApi.Application.Queries;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace Pos.Customer.WebApi.Application.EventHandlers
{
    public class ProductCategoryDeleteEventHandler : IServiceEventHandler
    {
        private readonly IUnitOfWork<POSProductContext> _uow;
        private readonly IMapper _mapper;
        private readonly IKakfaProducer _producer;
        private readonly IProductCategoryRepository _productCategoryRepository;
        private readonly IProductCategoryQueries _productCategoryQueries;

        public ProductCategoryDeleteEventHandler(IUnitOfWork<POSProductContext> uow,
            IMapper mapper,
            IKakfaProducer producer,
            IProductCategoryRepository productCategoryRepository,
            IProductCategoryQueries productCategoryQueries)
        {
            _uow = uow;
            _mapper = mapper;
            _producer = producer;
            _productCategoryQueries = productCategoryQueries;
            _productCategoryRepository = productCategoryRepository;
        }
        public async Task Handle(JObject jObject, ILog log, CancellationToken cancellationToken)
        {
            try
            {
                log.Info("Consume DeletedEvent");

                var dataConsomed = jObject.ToObject<ProductCategoryDeletedEvent>();

                var data = await _productCategoryQueries.GetData(dataConsomed.ProductCategoryId);

                log.Info("Delete Customer");

                //Consume data to Read Db
                _productCategoryRepository.Delete(data);
                await _uow.CommitAsync();
            }
            catch (Exception ex)
            {
                log.Error("Error Deleteing data customer", ex);
                throw ex;
            }            
        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/EventHandlers/ProductCategories/ProductCategoryUpdateEventHandler.cs
================================================
using AutoMapper;
using Dermayon.Common.CrossCutting;
using Dermayon.Common.Infrastructure.EventMessaging;
using Dermayon.Infrastructure.Data.EFRepositories.Contracts;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Newtonsoft.Json.Linq;
using Pos.Event.Contracts;
using Pos.Product.Domain.ProductAggregate;
using Pos.Product.Domain.ProductAggregate.Contracts;
using Pos.Product.Infrastructure;
using Pos.Product.WebApi.Application.Queries;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace Pos.Customer.WebApi.Application.EventHandlers
{
    public class ProductCategoryUpdateEventHandler : IServiceEventHandler
    {
        private readonly IUnitOfWork<POSProductContext> _uow;
        private readonly IMapper _mapper;
        private readonly IKakfaProducer _producer;
        private readonly IProductCategoryRepository _productCategoryRepository;
        private readonly IProductCategoryQueries _productCategoryQueries;

        public ProductCategoryUpdateEventHandler(IUnitOfWork<POSProductContext> uow,
            IMapper mapper,
            IKakfaProducer producer,
            IProductCategoryRepository productCategoryRepository,
            IProductCategoryQueries productCategoryQueries)
        {
            _uow = uow;
            _mapper = mapper;
            _producer = producer;
            _productCategoryRepository = productCategoryRepository;
            _productCategoryQueries = productCategoryQueries;
        }
        public async Task Handle(JObject jObject, ILog log, CancellationToken cancellationToken)
        {
            try
            {
                log.Info("Consume ProductCategoryUpdatedEvent");

                var dataConsomed = jObject.ToObject<ProductCategoryUpdatedEvent>();

                var data = await _productCategoryQueries.GetData(dataConsomed.Id);
                if (data != null)
                {
                    data = _mapper.Map<ProductCategory>(dataConsomed);

                    log.Info("Update ProductCategory");
                    //Consume data to Read Db
                    _productCategoryRepository.Update(data);
                    await _uow.CommitAsync();
                }
            }
            catch (Exception ex)
            {
                log.Error("Error Updating data ProductCategory", ex);
                throw ex;
            }            
        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/EventHandlers/ProductCreateEventHandler.cs
================================================
using AutoMapper;
using Dermayon.Common.CrossCutting;
using Dermayon.Common.Infrastructure.EventMessaging;
using Dermayon.Infrastructure.Data.EFRepositories.Contracts;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Newtonsoft.Json.Linq;
using Pos.Event.Contracts;
using Pos.Product.Domain.ProductAggregate;
using Pos.Product.Domain.ProductAggregate.Contracts;
using Pos.Product.Infrastructure;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace Pos.Product.WebApi.Application.EventHandlers
{
    public class ProductCreateEventHandler : IServiceEventHandler
    {
        private readonly IUnitOfWork<POSProductContext> _uow;
        private readonly IMapper _mapper;
        private readonly IKakfaProducer _producer;
        private readonly IProductRepository _ProductRepository;

        public ProductCreateEventHandler(IUnitOfWork<POSProductContext> uow,
            IMapper mapper,
            IKakfaProducer producer, 
            IProductRepository ProductRepository)
        {
            _uow = uow;
            _mapper = mapper;
            _producer = producer;
            _ProductRepository = ProductRepository;
        }
        public async Task Handle(JObject jObject, ILog log, CancellationToken cancellationToken)
        {
            try
            {
                log.Info("Consume ProductCreatedEvent");

                var dataConsomed = jObject.ToObject<ProductCreatedEvent>();
                var data = _mapper.Map<MstProduct>(dataConsomed);

                log.Info("Insert Product");

                //Consume data to Read Db
                _ProductRepository.Insert(data);
                await _uow.CommitAsync();
            }
            catch (Exception ex)
            {
                log.Error("Error Inserting data Product", ex);
                throw ex;
            }            
        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/EventHandlers/ProductDeleteEventHandler.cs
================================================
using AutoMapper;
using Dermayon.Common.CrossCutting;
using Dermayon.Common.Infrastructure.EventMessaging;
using Dermayon.Infrastructure.Data.EFRepositories.Contracts;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Newtonsoft.Json.Linq;
using Pos.Customer.WebApi.Application.Queries;
using Pos.Event.Contracts;
using Pos.Product.Domain.ProductAggregate.Contracts;
using Pos.Product.Infrastructure;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace Pos.Product.WebApi.Application.EventHandlers
{
    public class ProductDeleteEventHandler : IServiceEventHandler
    {
        private readonly IUnitOfWork<POSProductContext> _uow;
        private readonly IMapper _mapper;
        private readonly IKakfaProducer _producer;
        private readonly IProductRepository _ProductRepository;
        private readonly IProductQueries _ProductQueries;

        public ProductDeleteEventHandler(IUnitOfWork<POSProductContext> uow,
            IMapper mapper,
            IKakfaProducer producer,
            IProductRepository ProductRepository,
            IProductQueries ProductQueries)
        {
            _uow = uow;
            _mapper = mapper;
            _producer = producer;
            _ProductQueries = ProductQueries;
            _ProductRepository = ProductRepository;
        }
        public async Task Handle(JObject jObject, ILog log, CancellationToken cancellationToken)
        {
            try
            {
                log.Info("Consume ProductDeletedEvent");

                var dataConsomed = jObject.ToObject<ProductDeletedEvent>();

                var data = await _ProductQueries.GetProduct(dataConsomed.ProductId);

                log.Info("Delete Product");

                //Consume data to Read Db
                _ProductRepository.Delete(data);
                await _uow.CommitAsync();
            }
            catch (Exception ex)
            {
                log.Error("Error Deleteing data Product", ex);
                throw ex;
            }            
        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/EventHandlers/ProductUpdateEventHandler.cs
================================================
using AutoMapper;
using Dermayon.Common.CrossCutting;
using Dermayon.Common.Infrastructure.EventMessaging;
using Dermayon.Infrastructure.Data.EFRepositories.Contracts;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Newtonsoft.Json.Linq;
using Pos.Customer.WebApi.Application.Queries;
using Pos.Event.Contracts;
using Pos.Product.Domain.ProductAggregate;
using Pos.Product.Domain.ProductAggregate.Contracts;
using Pos.Product.Infrastructure;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace Pos.Product.WebApi.Application.EventHandlers
{
    public class ProductUpdateEventHandler : IServiceEventHandler
    {
        private readonly IUnitOfWork<POSProductContext> _uow;
        private readonly IMapper _mapper;
        private readonly IKakfaProducer _producer;
        private readonly IProductRepository _ProductRepository;
        private readonly IProductQueries _ProductQueries;

        public ProductUpdateEventHandler(IUnitOfWork<POSProductContext> uow,
            IMapper mapper,
            IKakfaProducer producer, 
            IProductRepository ProductRepository,
            IProductQueries ProductQueries)
        {
            _uow = uow;
            _mapper = mapper;
            _producer = producer;
            _ProductRepository = ProductRepository;
            _ProductQueries = ProductQueries;
        }
        public async Task Handle(JObject jObject, ILog log, CancellationToken cancellationToken)
        {
            try
            {
                log.Info("Consume ProductUpdatedEvent");

                var dataConsomed = jObject.ToObject<ProductUpdatedEvent>();

                var data = await _ProductQueries.GetProduct(dataConsomed.Id);
                if (data != null)
                {
                    data = _mapper.Map<MstProduct>(dataConsomed);

                    log.Info("Update Product");
                    //Consume data to Read Db
                    _ProductRepository.Update(data);
                    await _uow.CommitAsync();
                }
            }
            catch (Exception ex)
            {
                log.Error("Error Updating data Product", ex);
                throw ex;
            }            
        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/EventHandlers/SagaPattern/OrderCreatedEventHandler.cs
================================================
using AutoMapper;
using Dermayon.Common.CrossCutting;
using Dermayon.Common.Infrastructure.EventMessaging;
using Dermayon.Infrastructure.EvenMessaging.Kafka.Contracts;
using Newtonsoft.Json.Linq;
using Pos.Customer.WebApi.Application.Queries;
using Pos.Event.Contracts;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;

namespace Pos.Product.WebApi.Application.EventHandlers.SagaPattern
{
    public class OrderCreatedEventHandler : IServiceEventHandler
    {
        private readonly IMapper _mapper;
        private readonly IKakfaProducer _producer;
        private readonly IProductQueries _productQueries;        

        public OrderCreatedEventHandler(
            IMapper mapper,
            IKakfaProducer producer,
            IProductQueries productQueries)
        {
            _mapper = mapper;
            _producer = producer;
            _productQueries = productQueries;
        }
        public async Task Handle(JObject jObject, ILog log, CancellationToken cancellationToken)
        {
            try
            {
                bool orderIsValid = true;
                string message = null;

                log.Info("Consume OrderCreatedEvent");

                var dataConsomed = jObject.ToObject<OrderCreatedEvent>();

                var allProduct = dataConsomed.OrderDetail
                    .Select(x => x.ProductId)
                    .ToList();

                //Consume data and validate the data
                allProduct.ForEach(async item =>
                {
                    var dataIsExist = await _productQueries.GetProduct(item);
                    if (dataIsExist == null)
                        orderIsValid = false;                    
                });
                
                if (orderIsValid == false)
                {
                    message = "Product not found";
                }

                var @event = new OrderValidatedEvent { Action = "Product", Data = dataConsomed, OrderId = dataConsomed.OrderId, IsValid = orderIsValid, Messages = new List<string> { message } };
                await _producer.Send(@event, AppGlobalTopic.PosTopic);
            }
            catch (Exception ex)
            {
                log.Error("Error Validating order by product", ex);
                throw ex;
            }
        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/Queries/IProductCategoryQueries.cs
================================================
using Pos.Product.Domain.ProductAggregate;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Product.WebApi.Application.Queries
{
    public interface IProductCategoryQueries
    {
        Task<ProductCategory> GetData(Guid id);
        Task<IEnumerable<ProductCategory>> GetDatas();
        Task<IEnumerable<ProductCategory>> GetData(string name);
    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/Queries/IProductQueries.cs
================================================
using Pos.Product.Domain.ProductAggregate;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Pos.Customer.WebApi.Application.Queries
{
    public interface IProductQueries
    {
        Task<MstProduct> GetProduct(Guid id);
        Task<IEnumerable<MstProduct>> GetProductByCategory(Guid category);
        Task<IEnumerable<MstProduct>> GetProducts();
        Task<IEnumerable<MstProduct>> GetProduct(string name);
        Task<IEnumerable<MstProduct>> GetProductByPartNumber(string partNumber);
    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/Queries/ProductCategoryQueries.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Dermayon.Common.Infrastructure.Data.Contracts;
using Dermayon.Infrastructure.Data.DapperRepositories;
using Pos.Product.Domain.ProductAggregate;

namespace Pos.Product.WebApi.Application.Queries
{
    public class ProductCategoryQueries : IProductCategoryQueries
    {
        private readonly IDbConectionFactory _dbConectionFactory;

        public ProductCategoryQueries(IDbConectionFactory dbConectionFactory)
        {
            _dbConectionFactory = dbConectionFactory;
        }
        public async Task<ProductCategory> GetData(Guid id)
        {
            var qry = "SELECT * FROM ProductCategory where id = @p1";

            var data = await new DapperRepository<ProductCategory>(_dbConectionFactory.GetDbConnection("PRODUCT_READ_CONNECTION"))
                .QueryAsync(qry, new { p1 = id });

            return data.SingleOrDefault();
        }

        public async Task<IEnumerable<ProductCategory>> GetData(string name)
        {
            var qry = "SELECT * FROM ProductCategory where Name like @p1";

            var data = await new DapperRepository<ProductCategory>(_dbConectionFactory.GetDbConnection("PRODUCT_READ_CONNECTION"))
                .QueryAsync(qry, new { p1 = $"%{name}%" });

            return data;
        }

        public async Task<IEnumerable<ProductCategory>> GetDatas()
        {
            var qry = "SELECT * FROM ProductCategory";

            var data = await new DapperRepository<ProductCategory>(_dbConectionFactory.GetDbConnection("PRODUCT_READ_CONNECTION"))
                .QueryAsync(qry);

            return data;
        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Application/Queries/ProductQueries.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Dermayon.Common.Infrastructure.Data.Contracts;
using Dermayon.Infrastructure.Data.DapperRepositories;
using Pos.Product.Domain.ProductAggregate;

namespace Pos.Customer.WebApi.Application.Queries
{
    public class ProductQueries : IProductQueries
    {
        private readonly IDbConectionFactory _dbConectionFactory;

        public ProductQueries(IDbConectionFactory dbConectionFactory)
        {
            _dbConectionFactory = dbConectionFactory;
        }

        public async Task<MstProduct> GetProduct(Guid id)
        {
            var qry = "SELECT * FROM Product where id = @p1";

            var data = await new DapperRepository<MstProduct>(_dbConectionFactory.GetDbConnection("PRODUCT_READ_CONNECTION"))
                .QueryAsync(qry, new { p1 = id });

            return data.SingleOrDefault();
        }

        public async Task<IEnumerable<MstProduct>> GetProduct(string name)
        {
            var qry = "SELECT * FROM Product where Name like @p1";

            var data = await new DapperRepository<MstProduct>(_dbConectionFactory.GetDbConnection("PRODUCT_READ_CONNECTION"))
                .QueryAsync(qry, new { p1 = $"%{name}%" });

            return data;
        }

        public async Task<IEnumerable<MstProduct>> GetProductByCategory(Guid category)
        {
            var qry = "SELECT * FROM Product where Category = @p1";

            var data = await new DapperRepository<MstProduct>(_dbConectionFactory.GetDbConnection("PRODUCT_READ_CONNECTION"))
                .QueryAsync(qry, new { p1 = category });

            return data;
        }

        public async Task<IEnumerable<MstProduct>> GetProductByPartNumber(string partNumber)
        {
            var qry = "SELECT * FROM Product where PartNumber like @p1";

            var data = await new DapperRepository<MstProduct>(_dbConectionFactory.GetDbConnection("PRODUCT_READ_CONNECTION"))
                .QueryAsync(qry, new { p1 = $"%{partNumber}%" });

            return data;
        }

        public async Task<IEnumerable<MstProduct>> GetProducts()
        {
            var qry = "SELECT * FROM Product";

            var data = await new DapperRepository<MstProduct>(_dbConectionFactory.GetDbConnection("PRODUCT_READ_CONNECTION"))
                .QueryAsync(qry);

            return data;
        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/ApplicationBootsraper.cs
================================================
using AutoMapper;
using Dermayon.Common.Domain;
using Dermayon.Infrastructure.EvenMessaging.Kafka;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Pos.Product.Infrastructure;
using Pos.Product.Infrastructure.EventSources;
using Pos.Product.Infrastructure.Repositories;
using Pos.Product.WebApi.Application.Commands;
using Pos.Product.WebApi.Application.EventHandlers;
using Pos.Product.WebApi.Application.Queries;
using Pos.Product.WebApi.Mapping;
using Pos.Customer.WebApi.Application.EventHandlers;
using Pos.Customer.WebApi.Application.Commands;
using Pos.Product.WebApi.Application.Commands.ProductCategories;
using Pos.Product.Domain.ProductAggregate.Contracts;
using Pos.Customer.WebApi.Application.Queries;
using Pos.Event.Contracts;
using Pos.Product.WebApi.Application.EventHandlers.SagaPattern;

namespace Pos.Product.WebApi
{
    public static class ApplicationBootsraper
    {
        public static IServiceCollection InitBootsraper(this IServiceCollection services, IConfiguration Configuration)
        {
            //Init DermayonBootsraper
            services.InitDermayonBootsraper()
                   // Set Kafka Configuration
                   .InitKafka()
                       .Configure<KafkaEventConsumerConfiguration>(Configuration.GetSection("KafkaConsumer"))
                       .Configure<KafkaEventProducerConfiguration>(Configuration.GetSection("KafkaProducer"))
                        // Product Event
                        .RegisterKafkaConsumer<ProductCreatedEvent, ProductCreateEventHandler>()
                        .RegisterKafkaConsumer<ProductUpdatedEvent, ProductUpdateEventHandler>()
                        .RegisterKafkaConsumer<ProductDeletedEvent, ProductDeleteEventHandler>()
                        // ProductCategory Event
                        .RegisterKafkaConsumer<ProductCategoryCreatedEvent, ProductCategoryCreateEventHandler>()
                        .RegisterKafkaConsumer<ProductCategoryUpdatedEvent, ProductCategoryUpdateEventHandler>()
                        .RegisterKafkaConsumer<ProductCategoryDeletedEvent, ProductCategoryDeleteEventHandler>()
                        //implement choreography saga 
                        .RegisterKafkaConsumer<OrderCreatedEvent, OrderCreatedEventHandler>()
                   .RegisterMongo()
                   // Implement CQRS Event Sourcing =>  [Commands]
                   .RegisterEventSources()
                       .RegisterMongoContext<POSProductEventContext, POSProductEventContextSetting>
                            (Configuration.GetSection("ConnectionStrings:PRODUCT_COMMAND_CONNECTION")
                           .Get<POSProductEventContextSetting>())
                  // Implement CQRS Event Sourcing => UserContext [Query] &                    
                  .RegisterEf()
                    .AddDbContext<POSProductContext>(options =>
                        options.UseSqlServer(Configuration.GetConnectionString("PRODUCT_READ_CONNECTION")))
                .AddOpenApiDocument();                       

            return services;
        }

        public static IServiceCollection InitMapperProfile(this IServiceCollection services)
        {
            var mapperConfig = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile(new CommandToEventMapperProfile());
                cfg.AddProfile(new DomainToCommandMapperProfile());
                cfg.AddProfile(new EventToDomainMapperProfile());
                
            });            
            services.AddSingleton(provider => mapperConfig.CreateMapper());

            return services;
        }

        public static IServiceCollection InitAppServices(this IServiceCollection services)
        {
            #region Command
            services.AddScoped<IProductRepository, ProductRepository>();
            services.AddScoped<IProductCategoryRepository, ProductCategoryRepository>();
            #endregion            
            #region Queries
            services.AddScoped<IProductQueries, ProductQueries>();
            services.AddScoped<IProductCategoryQueries, ProductCategoryQueries>();
            #endregion
            return services;
        }

        public static IServiceCollection InitEventHandlers(this IServiceCollection services)
        {
            #region Product Commands
            services.AddTransient<ICommandHandler<CreateProductCommand>, CreateProductCommandHandler>();
            services.AddTransient<ProductCreateEventHandler>();

            services.AddTransient<ICommandHandler<UpdateProductCommand>, UpdateProductCommandHandler>();
            services.AddTransient<ProductUpdateEventHandler>();

            services.AddTransient<ICommandHandler<DeleteProductCommand>, DeleteProductCommandHandler>();
            services.AddTransient<ProductDeleteEventHandler>();            
            #endregion

            #region Product Category Commands
            services.AddTransient<ICommandHandler<CreateProductCategoryCommand>, CreateProductCategoryCommandHandler>();
            services.AddTransient<ProductCategoryCreateEventHandler>();

            services.AddTransient<ICommandHandler<UpdateProductCategoryCommand>, UpdateProductCategoryCommandHandler>();
            services.AddTransient<ProductCategoryUpdateEventHandler>();

            services.AddTransient<ICommandHandler<DeleteProductCategoryCommand>, DeleteProductCategoryCommandHandler>();
            services.AddTransient<ProductCategoryDeleteEventHandler>();
            #endregion

            #region saga pattern
            //implement choreography saga 
            services.AddTransient<OrderCreatedEventHandler>();
            #endregion


            return services;
        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Controllers/ProductCategoryController.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using AutoMapper;
using Dermayon.Common.Api;
using Dermayon.Common.Domain;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Pos.Customer.WebApi.Application.Commands;
using Pos.Product.WebApi.Application.Commands.ProductCategories;
using Pos.Product.WebApi.Application.Queries;

namespace Pos.Product.WebApi.Controllers
{
    [Produces("application/json")]
    [Route("api/[controller]")]
    [ApiController]
    public class ProductCategoryController : ControllerBase
    {
        private readonly IMapper _mapper;
        private readonly ICommandHandler<CreateProductCategoryCommand> _createProductCategoryCommand;
        private readonly ICommandHandler<UpdateProductCategoryCommand> _updateProductCategoryCommand;
        private readonly ICommandHandler<DeleteProductCategoryCommand> _deleteProductCategoryCommand;
        private readonly IProductCategoryQueries _productCategoryQueries;
        private readonly ILogger<ProductCategoryController> _logger;

        public ProductCategoryController(IMapper mapper,
            ICommandHandler<CreateProductCategoryCommand> createProductCategoryCommand,
            ICommandHandler<UpdateProductCategoryCommand> updateProductCategoryCommand,
            ICommandHandler<DeleteProductCategoryCommand> deleteProductCategoryCommand,
            IProductCategoryQueries productCategoryQueries,
            ILogger<ProductCategoryController> logger)
        {
            _mapper = mapper;
            _createProductCategoryCommand = createProductCategoryCommand;
            _updateProductCategoryCommand = updateProductCategoryCommand;
            _deleteProductCategoryCommand = deleteProductCategoryCommand;
            _productCategoryQueries = productCategoryQueries;
            _logger = logger;
        }
        // GET api/values
        [HttpGet]
        public async Task<IActionResult> Get()
        {
            try
            {
                var data = await _productCategoryQueries.GetDatas();

                return Ok(new ApiOkResponse(data, data.Count()));
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, "Error on Get Customers");
                return BadRequest(new ApiBadRequestResponse(500, "Something Wrong"));
            }
        }

        // GET api/values/5
        [HttpGet("{id}")]
        public async Task<IActionResult> Get(Guid id)
        {
            try
            {
                var data = await _productCategoryQueries.GetData(id);

                return Ok(new ApiOkResponse(data, data != null ? 1 : 0));
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, $"Error on Get Customer [{id}]");
                return BadRequest(new ApiBadRequestResponse(500, "Something Wrong"));
            }
        }

        // POST api/customer
        [HttpPost]
        public async Task<IActionResult> Post([FromBody] CreateProductCategoryCommand request)
        {
            try
            {
                await _createProductCategoryCommand.Handle(request, CancellationToken.None);
                return Ok(new ApiResponse(200));
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, $"Error on Insert Product Cattegory");
                return BadRequest(new ApiBadRequestResponse(500, "Something Wrong"));
            }
        }

        // PUT api/customer
        [HttpPut]
        public async Task<IActionResult> Put([FromBody] UpdateProductCategoryCommand request)
        {
            try
            {
                await _updateProductCategoryCommand.Handle(request, CancellationToken.None);
                return Ok(new ApiResponse(200));
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, $"Error on Insert ProductCategory");
                return BadRequest(new ApiBadRequestResponse(500, "Something Wrong"));
            }
        }

        // DELETE api/customer/idCustomer
        [HttpDelete("{id}")]
        public async Task<IActionResult> Delete(Guid id)
        {
            try
            {
                var deleteProductCategoryCommand = new DeleteProductCategoryCommand {  PoductCategoryId = id };
                await _deleteProductCategoryCommand.Handle(deleteProductCategoryCommand, CancellationToken.None);
                return Ok(new ApiResponse(200));
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, $"Error on Delete Product Category [{id}]");
                return BadRequest(new ApiBadRequestResponse(500, "Something Wrong"));
            }
        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Controllers/ProductController.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using AutoMapper;
using Dermayon.Common.Api;
using Dermayon.Common.Domain;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Pos.Customer.WebApi.Application.Commands;
using Pos.Customer.WebApi.Application.Queries;
using Pos.Product.WebApi.Application.Commands;

namespace Pos.Product.WebApi.Controllers
{
    [Produces("application/json")]
    [Route("api/[controller]")]
    [ApiController]
    public class ProductController : ControllerBase
    {
        private readonly IMapper _mapper;
        private readonly ICommandHandler<CreateProductCommand> _createProductCommand;
        private readonly ICommandHandler<UpdateProductCommand> _updateProductCommand;
        private readonly ICommandHandler<DeleteProductCommand> _deleteProductCommand;
        private readonly IProductQueries _productQueries;
        private readonly ILogger<ProductController> _logger;

        public ProductController(IMapper mapper,
            ICommandHandler<CreateProductCommand> createProductCommand,
            ICommandHandler<UpdateProductCommand> updateProductCommand,
            ICommandHandler<DeleteProductCommand> deleteProductCommand,
            IProductQueries productCategoryQueries,
            ILogger<ProductController> logger)
        {
            _mapper = mapper;
            _createProductCommand = createProductCommand;
            _updateProductCommand = updateProductCommand;
            _deleteProductCommand = deleteProductCommand;
            _productQueries = productCategoryQueries;
            _logger = logger;
        }
        // GET api/values
        [HttpGet]
        public async Task<IActionResult> Get()
        {
            try
            {
                var data = await _productQueries.GetProducts();

                return Ok(new ApiOkResponse(data, data.Count()));
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, "Error on Get Customers");
                return BadRequest(new ApiBadRequestResponse(500, "Something Wrong"));
            }
        }

        // GET api/values/5
        [HttpGet("{id}")]
        public async Task<IActionResult> Get(Guid id)
        {
            try
            {
                var data = await _productQueries.GetProduct(id);

                return Ok(new ApiOkResponse(data, data != null ? 1 : 0));
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, $"Error on Get Customer [{id}]");
                return BadRequest(new ApiBadRequestResponse(500, "Something Wrong"));
            }
        }

        // POST api/product
        [HttpPost]
        public async Task<IActionResult> Post([FromBody] CreateProductCommand request)
        {
            try
            {
                await _createProductCommand.Handle(request, CancellationToken.None);
                return Ok(new ApiResponse(200));
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, $"Error on Insert Product Cattegory");
                return BadRequest(new ApiBadRequestResponse(500, "Something Wrong"));
            }
        }

        // PUT api/product
        [HttpPut]
        public async Task<IActionResult> Put([FromBody] UpdateProductCommand request)
        {
            try
            {
                await _updateProductCommand.Handle(request, CancellationToken.None);
                return Ok(new ApiResponse(200));
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, $"Error on Insert Product");
                return BadRequest(new ApiBadRequestResponse(500, "Something Wrong"));
            }
        }

        // DELETE api/product/idCustomer
        [HttpDelete("{id}")]
        public async Task<IActionResult> Delete(Guid id)
        {
            try
            {
                var deleteProductCommand = new DeleteProductCommand { ProductId = id };
                await _deleteProductCommand.Handle(deleteProductCommand, CancellationToken.None);
                return Ok(new ApiResponse(200));
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, $"Error on Delete Product Category [{id}]");
                return BadRequest(new ApiBadRequestResponse(500, "Something Wrong"));
            }
        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Controllers/ValuesController.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;

namespace Pos.Product.WebApi.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        // GET api/values
        [HttpGet]
        public ActionResult<IEnumerable<string>> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/values/5
        [HttpGet("{id}")]
        public ActionResult<string> Get(int id)
        {
            return "value";
        }

        // POST api/values
        [HttpPost]
        public void Post([FromBody] string value)
        {
        }

        // PUT api/values/5
        [HttpPut("{id}")]
        public void Put(int id, [FromBody] string value)
        {
        }

        // DELETE api/values/5
        [HttpDelete("{id}")]
        public void Delete(int id)
        {
        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Dockerfile
================================================
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /src
COPY ["Pos.Product.WebApi/Pos.Product.WebApi.csproj", "Pos.Product.WebApi/"]
COPY ["Pos.Product.Domain/Pos.Product.Domain.csproj", "Pos.Product.Domain/"]
COPY ["Pos.Event.Contracts/Pos.Event.Contracts.csproj", "Pos.Event.Contracts/"]
COPY ["Pos.Product.Infrastructure/Pos.Product.Infrastructure.csproj", "Pos.Product.Infrastructure/"]
RUN dotnet restore "Pos.Product.WebApi/Pos.Product.WebApi.csproj"
COPY . .
WORKDIR "/src/Pos.Product.WebApi"
RUN dotnet build "Pos.Product.WebApi.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "Pos.Product.WebApi.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Pos.Product.WebApi.dll"]

================================================
FILE: src/Pos.Product.WebApi/Mapping/CommandToEventMapperProfile.cs
================================================
using AutoMapper;
using Pos.Customer.WebApi.Application.Commands;
using Pos.Event.Contracts;
using Pos.Product.WebApi.Application.Commands;
using Pos.Product.WebApi.Application.Commands.ProductCategories;

namespace Pos.Product.WebApi.Mapping
{
    public class CommandToEventMapperProfile : Profile
    {
        public CommandToEventMapperProfile()
        {
            CreateMap<CreateProductCommand, ProductCreatedEvent>();
            CreateMap<UpdateProductCommand, ProductUpdatedEvent>();                
            CreateMap<DeleteProductCommand, ProductDeletedEvent>();

            CreateMap<CreateProductCategoryCommand, ProductCategoryCreatedEvent>();
            CreateMap<UpdateProductCategoryCommand, ProductCategoryUpdatedEvent>();
            CreateMap<DeleteProductCategoryCommand, ProductCategoryDeletedEvent>();
        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Mapping/DomainToCommandMapperProfile.cs
================================================
using AutoMapper;
using Pos.Customer.WebApi.Application.Commands;
using Pos.Product.Domain.ProductAggregate;
using Pos.Product.WebApi.Application.Commands;
using Pos.Product.WebApi.Application.Commands.ProductCategories;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Product.WebApi.Mapping
{
    public class DomainToCommandMapperProfile : Profile
    {
        public DomainToCommandMapperProfile()
        {            
            CreateMap<MstProduct, CreateProductCommand>();
            CreateMap<MstProduct, UpdateProductCommand>();
            CreateMap<MstProduct, DeleteProductCommand>()
                .ForMember(dest => dest.ProductId, opt => opt.MapFrom(src => src.Id));

            CreateMap<ProductCategory, CreateProductCategoryCommand>();
            CreateMap<ProductCategory, UpdateProductCategoryCommand>();
            CreateMap<ProductCategory, DeleteProductCategoryCommand>()
                .ForMember(dest => dest.PoductCategoryId, opt => opt.MapFrom(src => src.Id));


        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Mapping/EventToDomainMapperProfile.cs
================================================
using AutoMapper;
using Pos.Event.Contracts;
using Pos.Product.Domain.ProductAggregate;
using System;

namespace Pos.Product.WebApi.Mapping
{
    public class EventToDomainMapperProfile : Profile
    {
        public EventToDomainMapperProfile()
        {
            CreateMap<ProductCreatedEvent, MstProduct>()
                .ForMember(dest => dest.Id, opt => opt.MapFrom(src => Guid.NewGuid()));
            CreateMap<ProductUpdatedEvent, MstProduct>();                            

            CreateMap<ProductCategoryCreatedEvent, ProductCategory>()
                .ForMember(dest => dest.Id, opt => opt.MapFrom(src => Guid.NewGuid()));
            CreateMap<ProductCategoryUpdatedEvent, ProductCategory>();            
        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Pos.Product.WebApi.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
    <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.9.5" />
    <PackageReference Include="NSwag.AspNetCore" Version="13.1.3" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\Pos.Product.Domain\Pos.Product.Domain.csproj" />
    <ProjectReference Include="..\Pos.Product.Infrastructure\Pos.Product.Infrastructure.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: src/Pos.Product.WebApi/Program.cs
================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;

namespace Pos.Product.WebApi
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>();
    }
}


================================================
FILE: src/Pos.Product.WebApi/Properties/launchSettings.json
================================================
{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:61913",
      "sslPort": 0
    }
  },
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "api/values",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "Pos.Product.WebApi": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "api/values",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:5000"
    },
    "Docker": {
      "commandName": "Docker",
      "launchBrowser": true,
      "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/api/values",
      "environmentVariables": {},
      "httpPort": 61914
    }
  }
}

================================================
FILE: src/Pos.Product.WebApi/SeedingData/DbSeeder.cs
================================================
using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json;
using Pos.Product.Domain.ProductAggregate;
using Pos.Product.Infrastructure;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Pos.Product.WebApi.SeedingData
{
    public static class DbSeeder
    {
        public static void Up(IServiceProvider serviceProvider)
        {          
            using (var serviceScope = serviceProvider.GetRequiredService<IServiceScopeFactory>().CreateScope())
            {
                var context = serviceScope.ServiceProvider.GetService<POSProductContext>();

                if (!context.ProductCategory.Any())
                {
                    context.ProductCategory.Add(new ProductCategory { Id = new Guid("009341c9-01e7-4f25-aa14-eb31dd8367ee"), Name = "Gold" });
                    context.ProductCategory.Add(new ProductCategory { Id = new Guid("57f826db-87de-4194-b30e-ca648b8733c2"), Name = "Silver" });
                    context.ProductCategory.Add(new ProductCategory { Id = new Guid("b8dbdbf9-1bb9-4505-8e58-a5b3482a759b"), Name = "Platinum" });
                    context.ProductCategory.Add(new ProductCategory { Id = new Guid("67063dc4-5d2f-42a4-b0c4-8ee406e9f9f3"), Name = "Bronze" });
                    context.SaveChanges();
                }

                if (!context.Product.Any())
                {
                    for (int i = 0; i < 100; i++)
                    {
                        context.Product.Add(new MstProduct { Category = new Guid("009341c9-01e7-4f25-aa14-eb31dd8367ee"), Name = $"Oil Gold A-{i}", PartNumber = $"G-0{i}", Quantity = i * 3, UnitPrice = i * 100});
                        context.Product.Add(new MstProduct { Category = new Guid("57f826db-87de-4194-b30e-ca648b8733c2"), Name = $"Oil Silver A-{i}", PartNumber = $"S-0{i}", Quantity = i * 3, UnitPrice = i * 100 });
                        context.Product.Add(new MstProduct { Category = new Guid("b8dbdbf9-1bb9-4505-8e58-a5b3482a759b"), Name = $"Oil Platinum A-{i}", PartNumber = $"S-0{i}", Quantity = i * 3, UnitPrice = i * 100 });
                    }
                    context.SaveChanges();
                }
            }
        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/Startup.cs
================================================
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Pos.Product.WebApi.SeedingData;

namespace Pos.Product.WebApi
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.InitBootsraper(Configuration)
                .InitAppServices()
                .InitEventHandlers()
                .InitMapperProfile();

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseOpenApi();
            app.UseSwaggerUi3();

            app.UseMvc();

            //Seeder
            DbSeeder.Up(app.ApplicationServices);

        }
    }
}


================================================
FILE: src/Pos.Product.WebApi/appsettings.Development.json
================================================
{
  "ConnectionStrings": {
    "PRODUCT_COMMAND_CONNECTION": {
      "ServerConnection": "mongodb://root:password@mongodb:27017/admin",
      "Database": "productevents"
    },
    "PRODUCT_READ_CONNECTION": "server=sql.data;Initial Catalog=POS_Product;User ID=sa;Password=Pass@word"
  },
  "KafkaConsumer": {
    "Server": "kafkaserver",
    "GroupId": "product-service",
    "TimeOut": "00:00:01",
    "Topics": [
      "PosServices"
    ]
  },
  "KafkaProducer": {
    "Server": "kafkaserver",
    "MaxRetries": 2,
    "MessageTimeout": "00:00:15"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
}


================================================
FILE: src/Pos.Product.WebApi/appsettings.json
================================================
{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*"
}


================================================
FILE: src/Pos.Report.Domain/Class1.cs
================================================
using System;

namespace Pos.Report.Domain
{
    public class Class1
    {
    }
}


================================================
FILE: src/Pos.Report.Domain/Pos.Report.Domain.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

</Project>


================================================
FILE: src/Pos.Report.Infrastructure/Class1.cs
================================================
using System;

namespace Pos.Report.Infrastructure
{
    public class Class1
    {
    }
}


================================================
FILE: src/Pos.Report.Infrastructure/Pos.Report.Infrastructure.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

</Project>


================================================
FILE: src/Pos.Report.WebApi/Controllers/ValuesController.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;

namespace Pos.Report.WebApi.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        // GET api/values
        [HttpGet]
        public ActionResult<IEnumerable<string>> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/values/5
        [HttpGet("{id}")]
        public ActionResult<string> Get(int id)
        {
            return "value";
        }

        // POST api/values
        [HttpPost]
        public void Post([FromBody] string value)
        {
        }

        // PUT api/values/5
        [HttpPut("{id}")]
        public void Put(int id, [FromBody] string value)
        {
        }

        // DELETE api/values/5
        [HttpDelete("{id}")]
        public void Delete(int id)
        {
        }
    }
}


================================================
FILE: src/Pos.Report.WebApi/Dockerfile
================================================
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /src
COPY ["Pos.Report.WebApi/Pos.Report.WebApi.csproj", "Pos.Report.WebApi/"]
COPY ["Pos.Report.Infrastructure/Pos.Report.Infrastructure.csproj", "Pos.Report.Infrastructure/"]
COPY ["Pos.Report.Domain/Pos.Report.Domain.csproj", "Pos.Report.Domain/"]
COPY ["Pos.Event.Contracts/Pos.Event.Contracts.csproj", "Pos.Event.Contracts/"]
RUN dotnet restore "Pos.Report.WebApi/Pos.Report.WebApi.csproj"
COPY . .
WORKDIR "/src/Pos.Report.WebApi"
RUN dotnet build "Pos.Report.WebApi.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "Pos.Report.WebApi.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY 
Download .txt
gitextract_8v0gs2bh/

├── .circleci/
│   └── config.yml
├── .gitignore
├── README.md
└── src/
    ├── .dockerignore
    ├── Pos.Customer.Domain/
    │   ├── CustomerAggregate/
    │   │   ├── ICustomerRepository.cs
    │   │   └── MstCustomer.cs
    │   └── Pos.Customer.Domain.csproj
    ├── Pos.Customer.Infrastructure/
    │   ├── EventSources/
    │   │   ├── POSCustomerEventContext.cs
    │   │   └── POSCustomerEventContextSetting.cs
    │   ├── POSCustomerContext.cs
    │   ├── Pos.Customer.Infrastructure.csproj
    │   └── Repositories/
    │       └── CustomeRepository.cs
    ├── Pos.Customer.WebApi/
    │   ├── Application/
    │   │   ├── Commands/
    │   │   │   ├── CreateCustomerCommand.cs
    │   │   │   ├── CreateCustomerCommandHandler.cs
    │   │   │   ├── DeleteCustomerCommand.cs
    │   │   │   ├── DeleteCustomerCommandHandler.cs
    │   │   │   ├── UpdateCustomerCommand.cs
    │   │   │   └── UpdateCustomerCommandHandler.cs
    │   │   ├── EventHandlers/
    │   │   │   ├── CustomerCreateEventHandler.cs
    │   │   │   ├── CustomerDeleteEventHandler.cs
    │   │   │   └── CustomerUpdateEventHandler.cs
    │   │   └── Queries/
    │   │       ├── CustomerQueries.cs
    │   │       └── ICustomerQueries.cs
    │   ├── ApplicationBootsraper.cs
    │   ├── Controllers/
    │   │   ├── CustomerController.cs
    │   │   └── ValuesController.cs
    │   ├── Dockerfile
    │   ├── Dockerfile.original
    │   ├── Mapping/
    │   │   ├── CommandToEventMapperProfile.cs
    │   │   ├── DomainToCommandMapperProfile.cs
    │   │   └── EventoDomainMapperProfile.cs
    │   ├── Pos.Customer.WebApi.csproj
    │   ├── Program.cs
    │   ├── Properties/
    │   │   └── launchSettings.json
    │   ├── SeedingData/
    │   │   └── DbSeeder.cs
    │   ├── Startup.cs
    │   ├── appsettings.Development.json
    │   └── appsettings.json
    ├── Pos.Event.Contracts/
    │   ├── AppGlobalTopic.cs
    │   ├── Pos.Event.Contracts.csproj
    │   ├── customer/
    │   │   ├── CustomerCreatedEvent.cs
    │   │   ├── CustomerDeletedEvent.cs
    │   │   └── CustomerUpdatedEvent.cs
    │   ├── order/
    │   │   ├── OrderCancelledEvent.cs
    │   │   ├── OrderCreatedEvent.cs
    │   │   ├── OrderDetailCreatedEvent.cs
    │   │   ├── OrderShippedEvent.cs
    │   │   └── OrderValidatedEvent.cs
    │   └── product/
    │       ├── ProductCategoryCreatedEvent.cs
    │       ├── ProductCategoryDeletedEvent.cs
    │       ├── ProductCategoryUpdatedEvent.cs
    │       ├── ProductCreatedEvent.cs
    │       ├── ProductDeletedEvent.cs
    │       └── ProductUpdatedEvent.cs
    ├── Pos.Gateway/
    │   ├── Controllers/
    │   │   └── ValuesController.cs
    │   ├── Dockerfile
    │   ├── Pos.Gateway.csproj
    │   ├── Program.cs
    │   ├── Properties/
    │   │   └── launchSettings.json
    │   ├── Startup.cs
    │   ├── appsettings.Development.json
    │   ├── appsettings.json
    │   └── configuration.json
    ├── Pos.Gateway.Securities/
    │   ├── Application/
    │   │   ├── AuthService.cs
    │   │   └── IAuthService.cs
    │   ├── Controllers/
    │   │   └── AuthController.cs
    │   ├── Dockerfile
    │   ├── Models/
    │   │   ├── Authentication.cs
    │   │   └── SecurityToken.cs
    │   ├── Pos.Gateway.Securities.csproj
    │   ├── Program.cs
    │   ├── Properties/
    │   │   └── launchSettings.json
    │   ├── Startup.cs
    │   ├── appsettings.Development.json
    │   └── appsettings.json
    ├── Pos.Order.Domain/
    │   ├── OrderAggregate/
    │   │   ├── Contract/
    │   │   │   └── IOrderRepository.cs
    │   │   ├── MstOrder.cs
    │   │   └── OrderDetail.cs
    │   └── Pos.Order.Domain.csproj
    ├── Pos.Order.Infrastructure/
    │   ├── EventSources/
    │   │   ├── POSOrderEventContext.cs
    │   │   └── POSOrderEventContextSetting.cs
    │   ├── POSOrderContext.cs
    │   ├── Pos.Order.Infrastructure.csproj
    │   ├── Repositories/
    │   │   └── OrderRepository.cs
    │   └── efpt.config.json
    ├── Pos.Order.WebApi/
    │   ├── Application/
    │   │   ├── Commands/
    │   │   │   ├── CreateOrderCommand.cs
    │   │   │   └── CreateOrderCommandHandler.cs
    │   │   ├── DTO/
    │   │   │   ├── CreateOrderDetailRequest.cs
    │   │   │   ├── CreateOrderHeaderRequest.cs
    │   │   │   ├── DetailOrderLineItemResponse.cs
    │   │   │   └── DetailOrderResponse.cs
    │   │   ├── EventHandlers/
    │   │   │   ├── OrderCanceledEventHandler.cs
    │   │   │   ├── OrderShippedEventHandler.cs
    │   │   │   └── OrderValidatedEventHandler.cs
    │   │   └── Queries/
    │   │       ├── IOrderQueries.cs
    │   │       └── OrderQueries.cs
    │   ├── ApplicationBootsraper.cs
    │   ├── Controllers/
    │   │   ├── OrderController.cs
    │   │   └── ValuesController.cs
    │   ├── Dockerfile
    │   ├── Dockerfile.original
    │   ├── Mapping/
    │   │   ├── AllToDtoMapperProfile.cs
    │   │   ├── CommandToEventMapperProfile.cs
    │   │   ├── DomainToCommandMapperProfile.cs
    │   │   ├── DtotoAllMapperProfile.cs
    │   │   └── EventoDomainMapperProfile.cs
    │   ├── Pos.Order.WebApi.csproj
    │   ├── Program.cs
    │   ├── Properties/
    │   │   └── launchSettings.json
    │   ├── SeedingData/
    │   │   └── DbSeeder.cs
    │   ├── Startup.cs
    │   ├── appsettings.Development.json
    │   └── appsettings.json
    ├── Pos.Product.Domain/
    │   ├── Pos.Product.Domain.csproj
    │   └── ProductAggregate/
    │       ├── Contracts/
    │       │   ├── IProductCategoryRepository.cs
    │       │   └── IProductRepository.cs
    │       ├── MstProduct.cs
    │       └── ProductCategory.cs
    ├── Pos.Product.Infrastructure/
    │   ├── EventSources/
    │   │   ├── POSProductEventContext.cs
    │   │   └── POSProductEventContextSetting.cs
    │   ├── POSProductContext.cs
    │   ├── Pos.Product.Infrastructure.csproj
    │   └── Repositories/
    │       ├── ProductCategoryRepository.cs
    │       └── ProductRepository.cs
    ├── Pos.Product.WebApi/
    │   ├── Application/
    │   │   ├── Commands/
    │   │   │   ├── CreateProductCommand.cs
    │   │   │   ├── CreateProductCommandHandler.cs
    │   │   │   ├── DeleteProductCommand.cs
    │   │   │   ├── DeleteProductCommandHandler.cs
    │   │   │   ├── ProductCategories/
    │   │   │   │   ├── CreateProductCategoryCommand.cs
    │   │   │   │   ├── CreateProductCategoryCommandHandler.cs
    │   │   │   │   ├── DeleteProductCategoryCommand.cs
    │   │   │   │   ├── DeleteProductCategoryCommandHandler.cs
    │   │   │   │   ├── UpdateProductCategoryCommand.cs
    │   │   │   │   └── UpdateProductCategoryCommandHandler.cs
    │   │   │   ├── UpdateProductCommand.cs
    │   │   │   └── UpdateProductCommandHandler.cs
    │   │   ├── EventHandlers/
    │   │   │   ├── ProductCategories/
    │   │   │   │   ├── ProductCategoryCreateEventHandler.cs
    │   │   │   │   ├── ProductCategoryDeleteEventHandler.cs
    │   │   │   │   └── ProductCategoryUpdateEventHandler.cs
    │   │   │   ├── ProductCreateEventHandler.cs
    │   │   │   ├── ProductDeleteEventHandler.cs
    │   │   │   ├── ProductUpdateEventHandler.cs
    │   │   │   └── SagaPattern/
    │   │   │       └── OrderCreatedEventHandler.cs
    │   │   └── Queries/
    │   │       ├── IProductCategoryQueries.cs
    │   │       ├── IProductQueries.cs
    │   │       ├── ProductCategoryQueries.cs
    │   │       └── ProductQueries.cs
    │   ├── ApplicationBootsraper.cs
    │   ├── Controllers/
    │   │   ├── ProductCategoryController.cs
    │   │   ├── ProductController.cs
    │   │   └── ValuesController.cs
    │   ├── Dockerfile
    │   ├── Mapping/
    │   │   ├── CommandToEventMapperProfile.cs
    │   │   ├── DomainToCommandMapperProfile.cs
    │   │   └── EventToDomainMapperProfile.cs
    │   ├── Pos.Product.WebApi.csproj
    │   ├── Program.cs
    │   ├── Properties/
    │   │   └── launchSettings.json
    │   ├── SeedingData/
    │   │   └── DbSeeder.cs
    │   ├── Startup.cs
    │   ├── appsettings.Development.json
    │   └── appsettings.json
    ├── Pos.Report.Domain/
    │   ├── Class1.cs
    │   └── Pos.Report.Domain.csproj
    ├── Pos.Report.Infrastructure/
    │   ├── Class1.cs
    │   └── Pos.Report.Infrastructure.csproj
    ├── Pos.Report.WebApi/
    │   ├── Controllers/
    │   │   └── ValuesController.cs
    │   ├── Dockerfile
    │   ├── Dockerfile.original
    │   ├── Pos.Report.WebApi.csproj
    │   ├── Program.cs
    │   ├── Properties/
    │   │   └── launchSettings.json
    │   ├── Startup.cs
    │   ├── appsettings.Development.json
    │   └── appsettings.json
    ├── Pos.WebApplication/
    │   ├── ApplicationBootsraper.cs
    │   ├── Areas/
    │   │   ├── Master/
    │   │   │   ├── Controllers/
    │   │   │   │   ├── CustomerController.cs
    │   │   │   │   ├── ProductCategoryController.cs
    │   │   │   │   └── ProductController.cs
    │   │   │   └── Views/
    │   │   │       ├── Customer/
    │   │   │       │   └── Index.cshtml
    │   │   │       ├── Product/
    │   │   │       │   └── Index.cshtml
    │   │   │       └── ProductCategory/
    │   │   │           └── Index.cshtml
    │   │   ├── Order/
    │   │   │   ├── Controllers/
    │   │   │   │   └── ItemController.cs
    │   │   │   └── Views/
    │   │   │       └── Item/
    │   │   │           └── Index.cshtml
    │   │   └── Reports/
    │   │       ├── Controllers/
    │   │       │   └── TransactionController.cs
    │   │       └── Views/
    │   │           └── Transaction/
    │   │               └── Index.cshtml
    │   ├── Controllers/
    │   │   ├── AuthController.cs
    │   │   └── HomeController.cs
    │   ├── Dockerfile
    │   ├── HealthChecks/
    │   │   ├── CustomerServicesHc.cs
    │   │   ├── OrderServicesHc .cs
    │   │   ├── ProductServicesHc.cs
    │   │   └── ReportServicesHc.cs
    │   ├── Models/
    │   │   ├── ErrorViewModel.cs
    │   │   └── MenuItem.cs
    │   ├── Pos.WebApplication.csproj
    │   ├── Program.cs
    │   ├── Properties/
    │   │   └── launchSettings.json
    │   ├── Startup.cs
    │   ├── Utilities/
    │   │   ├── HttpCheck.cs
    │   │   └── IHttpCheck.cs
    │   ├── ViewComponents/
    │   │   ├── FooterViewComponent.cs
    │   │   ├── HeaderViewComponent.cs
    │   │   ├── MenuViewComponent.cs
    │   │   ├── RightSidebarViewComponent.cs
    │   │   ├── ThemeScriptsViewComponent.cs
    │   │   └── TopBarViewComponent.cs
    │   ├── Views/
    │   │   ├── Auth/
    │   │   │   └── Index.cshtml
    │   │   ├── Home/
    │   │   │   ├── Index.cshtml
    │   │   │   └── Privacy.cshtml
    │   │   ├── Shared/
    │   │   │   ├── Components/
    │   │   │   │   ├── Footer/
    │   │   │   │   │   └── Default.cshtml
    │   │   │   │   ├── Header/
    │   │   │   │   │   └── Default.cshtml
    │   │   │   │   ├── Menu/
    │   │   │   │   │   └── Default.cshtml
    │   │   │   │   ├── RightSidebar/
    │   │   │   │   │   └── Default.cshtml
    │   │   │   │   ├── ThemeScripts/
    │   │   │   │   │   └── Default.cshtml
    │   │   │   │   └── TopBar/
    │   │   │   │       └── Default.cshtml
    │   │   │   ├── Error.cshtml
    │   │   │   ├── _CookieConsentPartial.cshtml
    │   │   │   ├── _Layout.cshtml
    │   │   │   ├── _LayoutAuth.cshtml
    │   │   │   └── _ValidationScriptsPartial.cshtml
    │   │   ├── _ViewImports.cshtml
    │   │   └── _ViewStart.cshtml
    │   ├── appsettings.Development.json
    │   ├── appsettings.json
    │   ├── healthchecksdb
    │   └── wwwroot/
    │       ├── css/
    │       │   └── site.css
    │       ├── js/
    │       │   └── site.js
    │       ├── lib/
    │       │   ├── bootstrap/
    │       │   │   ├── LICENSE
    │       │   │   └── dist/
    │       │   │       ├── css/
    │       │   │       │   ├── bootstrap-grid.css
    │       │   │       │   ├── bootstrap-reboot.css
    │       │   │       │   └── bootstrap.css
    │       │   │       └── js/
    │       │   │           ├── bootstrap.bundle.js
    │       │   │           └── bootstrap.js
    │       │   ├── jquery/
    │       │   │   ├── LICENSE.txt
    │       │   │   └── dist/
    │       │   │       └── jquery.js
    │       │   ├── jquery-validation/
    │       │   │   ├── LICENSE.md
    │       │   │   └── dist/
    │       │   │       ├── additional-methods.js
    │       │   │       └── jquery.validate.js
    │       │   └── jquery-validation-unobtrusive/
    │       │       ├── LICENSE.txt
    │       │       └── jquery.validate.unobtrusive.js
    │       └── theme2-assets/
    │           ├── css/
    │           │   ├── icons.css
    │           │   └── style.css
    │           ├── fonts/
    │           │   ├── FontAwesome.otf
    │           │   └── typicons.less
    │           ├── js/
    │           │   ├── detect.js
    │           │   ├── fastclick.js
    │           │   ├── jquery.app.js
    │           │   ├── jquery.blockUI.js
    │           │   ├── jquery.core.js
    │           │   ├── jquery.nicescroll.js
    │           │   ├── jquery.slimscroll.js
    │           │   └── waves.js
    │           ├── pages/
    │           │   ├── autocomplete.js
    │           │   ├── datatables.editable.init.js
    │           │   ├── datatables.init.js
    │           │   ├── easy-pie-chart.init.js
    │           │   ├── form-validation-init.js
    │           │   ├── jquery.bs-table.js
    │           │   ├── jquery.c3-chart.init.js
    │           │   ├── jquery.chartist.init.js
    │           │   ├── jquery.chartjs.init.js
    │           │   ├── jquery.charts-sparkline.js
    │           │   ├── jquery.chat.js
    │           │   ├── jquery.codemirror.init.js
    │           │   ├── jquery.dashboard.js
    │           │   ├── jquery.dashboard_2.js
    │           │   ├── jquery.dashboard_3.js
    │           │   ├── jquery.dashboard_4.js
    │           │   ├── jquery.dashboard_crm.js
    │           │   ├── jquery.dashboard_ecommerce.js
    │           │   ├── jquery.filer.init.js
    │           │   ├── jquery.flot.init.js
    │           │   ├── jquery.footable.js
    │           │   ├── jquery.form-advanced.init.js
    │           │   ├── jquery.form-pickers.init.js
    │           │   ├── jquery.fullcalendar.js
    │           │   ├── jquery.gmaps.js
    │           │   ├── jquery.jsgrid.init.js
    │           │   ├── jquery.leads.init.js
    │           │   ├── jquery.nvd3.init.js
    │           │   ├── jquery.opportunities.init.js
    │           │   ├── jquery.peity.init.js
    │           │   ├── jquery.rickshaw.chart.init.js
    │           │   ├── jquery.sweet-alert.init.js
    │           │   ├── jquery.sweet-alert2.init.js
    │           │   ├── jquery.todo.js
    │           │   ├── jquery.tree.js
    │           │   ├── jquery.ui-sliders.js
    │           │   ├── jquery.widgets.js
    │           │   ├── jquery.wizard-init.js
    │           │   ├── jquery.xeditable.js
    │           │   ├── jvectormap.init.js
    │           │   ├── morris.init.js
    │           │   └── nestable.js
    │           ├── plugins/
    │           │   ├── autoNumeric/
    │           │   │   └── autoNumeric.js
    │           │   ├── autocomplete/
    │           │   │   ├── countries.js
    │           │   │   ├── demo.js
    │           │   │   └── jquery.mockjax.js
    │           │   ├── bootstrap-colorpicker/
    │           │   │   ├── css/
    │           │   │   │   └── bootstrap-colorpicker.css
    │           │   │   └── js/
    │           │   │       └── bootstrap-colorpicker.js
    │           │   ├── bootstrap-daterangepicker/
    │           │   │   ├── daterangepicker.css
    │           │   │   └── daterangepicker.js
    │           │   ├── bootstrap-filestyle/
    │           │   │   └── js/
    │           │   │       └── bootstrap-filestyle.js
    │           │   ├── bootstrap-markdown/
    │           │   │   └── js/
    │           │   │       └── bootstrap-markdown.js
    │           │   ├── bootstrap-maxlength/
    │           │   │   ├── bootstrap-maxlength.js
    │           │   │   └── src/
    │           │   │       └── bootstrap-maxlength.js
    │           │   ├── bootstrap-select/
    │           │   │   └── js/
    │           │   │       ├── bootstrap-select.js
    │           │   │       └── i18n/
    │           │   │           ├── defaults-ar_AR.js
    │           │   │           ├── defaults-bg_BG.js
    │           │   │           ├── defaults-cro_CRO.js
    │           │   │           ├── defaults-cs_CZ.js
    │           │   │           ├── defaults-da_DK.js
    │           │   │           ├── defaults-de_DE.js
    │           │   │           ├── defaults-en_US.js
    │           │   │           ├── defaults-es_CL.js
    │           │   │           ├── defaults-eu.js
    │           │   │           ├── defaults-fa_IR.js
    │           │   │           ├── defaults-fi_FI.js
    │           │   │           ├── defaults-fr_FR.js
    │           │   │           ├── defaults-hu_HU.js
    │           │   │           ├── defaults-id_ID.js
    │           │   │           ├── defaults-it_IT.js
    │           │   │           ├── defaults-ko_KR.js
    │           │   │           ├── defaults-lt_LT.js
    │           │   │           ├── defaults-nb_NO.js
    │           │   │           ├── defaults-nl_NL.js
    │           │   │           ├── defaults-pl_PL.js
    │           │   │           ├── defaults-pt_BR.js
    │           │   │           ├── defaults-pt_PT.js
    │           │   │           ├── defaults-ro_RO.js
    │           │   │           ├── defaults-ru_RU.js
    │           │   │           ├── defaults-sk_SK.js
    │           │   │           ├── defaults-sl_SI.js
    │           │   │           ├── defaults-sv_SE.js
    │           │   │           ├── defaults-tr_TR.js
    │           │   │           ├── defaults-ua_UA.js
    │           │   │           ├── defaults-zh_CN.js
    │           │   │           └── defaults-zh_TW.js
    │           │   ├── bootstrap-sweetalert/
    │           │   │   ├── sweet-alert.css
    │           │   │   └── sweet-alert.js
    │           │   ├── bootstrap-table/
    │           │   │   ├── css/
    │           │   │   │   └── bootstrap-table.css
    │           │   │   └── js/
    │           │   │       └── bootstrap-table.js
    │           │   ├── bootstrap-tagsinput/
    │           │   │   └── css/
    │           │   │       └── bootstrap-tagsinput.css
    │           │   ├── c3/
    │           │   │   ├── c3.css
    │           │   │   └── c3.js
    │           │   ├── codemirror/
    │           │   │   ├── css/
    │           │   │   │   ├── ambiance.css
    │           │   │   │   └── codemirror.css
    │           │   │   └── js/
    │           │   │       ├── codemirror.js
    │           │   │       ├── formatting.js
    │           │   │       ├── javascript.js
    │           │   │       └── xml.js
    │           │   ├── countdown/
    │           │   │   ├── dest/
    │           │   │   │   ├── countdown.js
    │           │   │   │   └── jquery.countdown.js
    │           │   │   └── src/
    │           │   │       ├── countdown.js
    │           │   │       └── jquery-wrapper.js
    │           │   ├── cropper/
    │           │   │   ├── cropper.css
    │           │   │   └── cropper.js
    │           │   ├── custombox/
    │           │   │   └── css/
    │           │   │       └── custombox.css
    │           │   ├── d3/
    │           │   │   └── d3.js
    │           │   ├── datatables/
    │           │   │   ├── json/
    │           │   │   │   └── scroller-demo.json
    │           │   │   └── vfs_fonts.js
    │           │   ├── doc-ready/
    │           │   │   ├── .bower.json
    │           │   │   ├── README.md
    │           │   │   ├── bower.json
    │           │   │   └── doc-ready.js
    │           │   ├── dropzone/
    │           │   │   ├── basic.css
    │           │   │   ├── dropzone-amd-module.js
    │           │   │   ├── dropzone.css
    │           │   │   ├── dropzone.js
    │           │   │   └── readme.md
    │           │   ├── eventEmitter/
    │           │   │   └── EventEmitter.js
    │           │   ├── eventie/
    │           │   │   └── eventie.js
    │           │   ├── fizzy-ui-utils/
    │           │   │   └── utils.js
    │           │   ├── flot-chart/
    │           │   │   ├── jquery.flot.crosshair.js
    │           │   │   ├── jquery.flot.pie.js
    │           │   │   ├── jquery.flot.resize.js
    │           │   │   ├── jquery.flot.selection.js
    │           │   │   ├── jquery.flot.stack.js
    │           │   │   └── jquery.flot.time.js
    │           │   ├── footable/
    │           │   │   └── css/
    │           │   │       └── footable.core.css
    │           │   ├── get-size/
    │           │   │   └── get-size.js
    │           │   ├── get-style-property/
    │           │   │   └── get-style-property.js
    │           │   ├── gmaps/
    │           │   │   ├── gmaps.js
    │           │   │   └── lib/
    │           │   │       ├── gmaps.controls.js
    │           │   │       ├── gmaps.core.js
    │           │   │       ├── gmaps.events.js
    │           │   │       ├── gmaps.geofences.js
    │           │   │       ├── gmaps.geometry.js
    │           │   │       ├── gmaps.layers.js
    │           │   │       ├── gmaps.map_types.js
    │           │   │       ├── gmaps.markers.js
    │           │   │       ├── gmaps.native_extensions.js
    │           │   │       ├── gmaps.overlays.js
    │           │   │       ├── gmaps.routes.js
    │           │   │       ├── gmaps.static.js
    │           │   │       ├── gmaps.streetview.js
    │           │   │       ├── gmaps.styles.js
    │           │   │       └── gmaps.utils.js
    │           │   ├── hopscotch/
    │           │   │   ├── css/
    │           │   │   │   └── hopscotch.css
    │           │   │   └── js/
    │           │   │       └── hopscotch.js
    │           │   ├── ion-rangeslider/
    │           │   │   ├── ion.rangeSlider.css
    │           │   │   └── ion.rangeSlider.skinFlat.css
    │           │   ├── jquery-circliful/
    │           │   │   ├── css/
    │           │   │   │   └── jquery.circliful.css
    │           │   │   └── js/
    │           │   │       └── jquery.circliful.js
    │           │   ├── jquery-datatables-editable/
    │           │   │   ├── dataTables.bootstrap.js
    │           │   │   └── jquery.dataTables.js
    │           │   ├── jquery-knob/
    │           │   │   ├── excanvas.js
    │           │   │   └── jquery.knob.js
    │           │   ├── jquery-quicksearch/
    │           │   │   └── jquery.quicksearch.js
    │           │   ├── jquery-ui/
    │           │   │   ├── external/
    │           │   │   │   └── jquery/
    │           │   │   │       └── jquery.js
    │           │   │   ├── index.html
    │           │   │   ├── jquery-ui.css
    │           │   │   ├── jquery-ui.js
    │           │   │   ├── jquery-ui.structure.css
    │           │   │   └── jquery-ui.theme.css
    │           │   ├── jquery.easy-pie-chart/
    │           │   │   ├── dist/
    │           │   │   │   ├── angular.easypiechart.js
    │           │   │   │   ├── easypiechart.js
    │           │   │   │   └── jquery.easypiechart.js
    │           │   │   └── src/
    │           │   │       ├── angular.directive.js
    │           │   │       ├── easypiechart.js
    │           │   │       ├── jquery.plugin.js
    │           │   │       └── renderer/
    │           │   │           └── canvas.js
    │           │   ├── jquery.filer/
    │           │   │   ├── assets/
    │           │   │   │   └── fonts/
    │           │   │   │       └── jquery.filer-icons/
    │           │   │   │           ├── jquery-filer-preview.html
    │           │   │   │           └── jquery-filer.css
    │           │   │   ├── css/
    │           │   │   │   ├── jquery.filer.css
    │           │   │   │   └── themes/
    │           │   │   │       └── jquery.filer-dragdropbox-theme.css
    │           │   │   ├── js/
    │           │   │   │   ├── custom.js
    │           │   │   │   └── jquery.filer.js
    │           │   │   ├── php/
    │           │   │   │   ├── class.uploader.php
    │           │   │   │   ├── readme.txt
    │           │   │   │   ├── remove_file.php
    │           │   │   │   └── upload.php
    │           │   │   └── uploads/
    │           │   │       └── header.p.php
    │           │   ├── jquery.steps/
    │           │   │   └── css/
    │           │   │       └── jquery.steps.css
    │           │   ├── jsgrid/
    │           │   │   ├── css/
    │           │   │   │   ├── jsgrid-theme.css
    │           │   │   │   └── jsgrid.css
    │           │   │   └── js/
    │           │   │       └── jsgrid.js
    │           │   ├── jstree/
    │           │   │   ├── ajax_children.json
    │           │   │   ├── ajax_roots.json
    │           │   │   ├── jstree.js
    │           │   │   ├── style.css
    │           │   │   └── themes/
    │           │   │       └── dark/
    │           │   │           └── style.css
    │           │   ├── justgage-toorshia/
    │           │   │   └── justgage.js
    │           │   ├── jvectormap/
    │           │   │   ├── gdp-data.js
    │           │   │   ├── jquery-jvectormap-2.0.2.css
    │           │   │   ├── jquery-jvectormap-asia-mill.js
    │           │   │   ├── jquery-jvectormap-au-mill.js
    │           │   │   ├── jquery-jvectormap-ca-lcc.js
    │           │   │   ├── jquery-jvectormap-de-mill.js
    │           │   │   ├── jquery-jvectormap-europe-mill-en.js
    │           │   │   ├── jquery-jvectormap-in-mill.js
    │           │   │   ├── jquery-jvectormap-uk-mill-en.js
    │           │   │   ├── jquery-jvectormap-us-aea-en.js
    │           │   │   ├── jquery-jvectormap-us-il-chicago-mill-en.js
    │           │   │   └── jquery-jvectormap-world-mill-en.js
    │           │   ├── magnific-popup/
    │           │   │   └── css/
    │           │   │       └── magnific-popup.css
    │           │   ├── masonry/
    │           │   │   ├── dist/
    │           │   │   │   └── masonry.pkgd.js
    │           │   │   ├── masonry.js
    │           │   │   └── sandbox/
    │           │   │       ├── basic.html
    │           │   │       ├── bottom-up.html
    │           │   │       ├── browserify/
    │           │   │       │   ├── index.html
    │           │   │       │   └── main.js
    │           │   │       ├── element-sizing.html
    │           │   │       ├── fit-width.html
    │           │   │       ├── fluid.html
    │           │   │       ├── jquery.html
    │           │   │       ├── require-js/
    │           │   │       │   ├── index.html
    │           │   │       │   └── main.js
    │           │   │       ├── right-to-left.html
    │           │   │       ├── sandbox.css
    │           │   │       └── stamps.html
    │           │   ├── matches-selector/
    │           │   │   └── matches-selector.js
    │           │   ├── mjolnic-bootstrap-colorpicker/
    │           │   │   └── dist/
    │           │   │       ├── css/
    │           │   │       │   └── bootstrap-colorpicker.css
    │           │   │       └── js/
    │           │   │           └── bootstrap-colorpicker.js
    │           │   ├── mocha/
    │           │   │   ├── mocha.css
    │           │   │   └── mocha.js
    │           │   ├── modal-effect/
    │           │   │   ├── css/
    │           │   │   │   └── component.css
    │           │   │   └── js/
    │           │   │       ├── classie.js
    │           │   │       └── modalEffects.js
    │           │   ├── moment/
    │           │   │   └── moment.js
    │           │   ├── morris/
    │           │   │   └── morris.css
    │           │   ├── multiselect/
    │           │   │   ├── css/
    │           │   │   │   └── multi-select.css
    │           │   │   └── js/
    │           │   │       └── jquery.multi-select.js
    │           │   ├── nestable/
    │           │   │   ├── jquery.nestable.css
    │           │   │   └── jquery.nestable.js
    │           │   ├── notifications/
    │           │   │   ├── notification.css
    │           │   │   └── notify-metro.js
    │           │   ├── notifyjs/
    │           │   │   └── js/
    │           │   │       └── notify.js
    │           │   ├── outlayer/
    │           │   │   ├── item.js
    │           │   │   └── outlayer.js
    │           │   ├── owl.carousel/
    │           │   │   ├── dist/
    │           │   │   │   ├── LICENSE
    │           │   │   │   ├── README.md
    │           │   │   │   ├── assets/
    │           │   │   │   │   ├── owl.carousel.css
    │           │   │   │   │   ├── owl.theme.default.css
    │           │   │   │   │   └── owl.theme.green.css
    │           │   │   │   └── owl.carousel.js
    │           │   │   └── src/
    │           │   │       ├── css/
    │           │   │       │   ├── owl.carousel.css
    │           │   │       │   ├── owl.theme.default.css
    │           │   │       │   └── owl.theme.green.css
    │           │   │       ├── js/
    │           │   │       │   ├── .jscsrc
    │           │   │       │   ├── .jshintrc
    │           │   │       │   ├── owl.animate.js
    │           │   │       │   ├── owl.autoheight.js
    │           │   │       │   ├── owl.autoplay.js
    │           │   │       │   ├── owl.autorefresh.js
    │           │   │       │   ├── owl.carousel.js
    │           │   │       │   ├── owl.hash.js
    │           │   │       │   ├── owl.lazyload.js
    │           │   │       │   ├── owl.navigation.js
    │           │   │       │   ├── owl.support.js
    │           │   │       │   ├── owl.support.modernizr.js
    │           │   │       │   └── owl.video.js
    │           │   │       └── scss/
    │           │   │           ├── _animate.scss
    │           │   │           ├── _autoheight.scss
    │           │   │           ├── _core.scss
    │           │   │           ├── _lazyload.scss
    │           │   │           ├── _theme.default.scss
    │           │   │           ├── _theme.green.scss
    │           │   │           ├── _theme.scss
    │           │   │           ├── _video.scss
    │           │   │           ├── owl.carousel.scss
    │           │   │           ├── owl.theme.default.scss
    │           │   │           └── owl.theme.green.scss
    │           │   ├── peity/
    │           │   │   └── jquery.peity.js
    │           │   ├── radial/
    │           │   │   └── radial.css
    │           │   ├── raphael/
    │           │   │   └── raphael-min.js
    │           │   ├── requirejs/
    │           │   │   └── require.js
    │           │   ├── rickshaw-chart/
    │           │   │   └── data/
    │           │   │       ├── data.json
    │           │   │       ├── data.jsonp
    │           │   │       ├── data2.json
    │           │   │       └── status.json
    │           │   ├── select2/
    │           │   │   ├── css/
    │           │   │   │   └── select2.css
    │           │   │   └── js/
    │           │   │       ├── i18n/
    │           │   │       │   ├── ar.js
    │           │   │       │   ├── az.js
    │           │   │       │   ├── bg.js
    │           │   │       │   ├── ca.js
    │           │   │       │   ├── cs.js
    │           │   │       │   ├── da.js
    │           │   │       │   ├── de.js
    │           │   │       │   ├── el.js
    │           │   │       │   ├── en.js
    │           │   │       │   ├── es.js
    │           │   │       │   ├── et.js
    │           │   │       │   ├── eu.js
    │           │   │       │   ├── fa.js
    │           │   │       │   ├── fi.js
    │           │   │       │   ├── fr.js
    │           │   │       │   ├── gl.js
    │           │   │       │   ├── he.js
    │           │   │       │   ├── hi.js
    │           │   │       │   ├── hr.js
    │           │   │       │   ├── hu.js
    │           │   │       │   ├── id.js
    │           │   │       │   ├── is.js
    │           │   │       │   ├── it.js
    │           │   │       │   ├── ja.js
    │           │   │       │   ├── km.js
    │           │   │       │   ├── ko.js
    │           │   │       │   ├── lt.js
    │           │   │       │   ├── lv.js
    │           │   │       │   ├── mk.js
    │           │   │       │   ├── ms.js
    │           │   │       │   ├── nb.js
    │           │   │       │   ├── nl.js
    │           │   │       │   ├── pl.js
    │           │   │       │   ├── pt-BR.js
    │           │   │       │   ├── pt.js
    │           │   │       │   ├── ro.js
    │           │   │       │   ├── ru.js
    │           │   │       │   ├── sk.js
    │           │   │       │   ├── sr-Cyrl.js
    │           │   │       │   ├── sr.js
    │           │   │       │   ├── sv.js
    │           │   │       │   ├── th.js
    │           │   │       │   ├── tr.js
    │           │   │       │   ├── uk.js
    │           │   │       │   ├── vi.js
    │           │   │       │   ├── zh-CN.js
    │           │   │       │   └── zh-TW.js
    │           │   │       ├── select2.full.js
    │           │   │       └── select2.js
    │           │   ├── smoothproducts/
    │           │   │   ├── css/
    │           │   │   │   └── smoothproducts.css
    │           │   │   └── js/
    │           │   │       └── smoothproducts.js
    │           │   ├── summernote/
    │           │   │   ├── lang/
    │           │   │   │   ├── summernote-ar-AR.js
    │           │   │   │   ├── summernote-bg-BG.js
    │           │   │   │   ├── summernote-ca-ES.js
    │           │   │   │   ├── summernote-cs-CZ.js
    │           │   │   │   ├── summernote-da-DK.js
    │           │   │   │   ├── summernote-de-DE.js
    │           │   │   │   ├── summernote-es-ES.js
    │           │   │   │   ├── summernote-es-EU.js
    │           │   │   │   ├── summernote-fa-IR.js
    │           │   │   │   ├── summernote-fi-FI.js
    │           │   │   │   ├── summernote-fr-FR.js
    │           │   │   │   ├── summernote-gl-ES.js
    │           │   │   │   ├── summernote-he-IL.js
    │           │   │   │   ├── summernote-hr-HR.js
    │           │   │   │   ├── summernote-hu-HU.js
    │           │   │   │   ├── summernote-id-ID.js
    │           │   │   │   ├── summernote-it-IT.js
    │           │   │   │   ├── summernote-ja-JP.js
    │           │   │   │   ├── summernote-ko-KR.js
    │           │   │   │   ├── summernote-lt-LT.js
    │           │   │   │   ├── summernote-lt-LV.js
    │           │   │   │   ├── summernote-nb-NO.js
    │           │   │   │   ├── summernote-nl-NL.js
    │           │   │   │   ├── summernote-pl-PL.js
    │           │   │   │   ├── summernote-pt-BR.js
    │           │   │   │   ├── summernote-pt-PT.js
    │           │   │   │   ├── summernote-ro-RO.js
    │           │   │   │   ├── summernote-ru-RU.js
    │           │   │   │   ├── summernote-sk-SK.js
    │           │   │   │   ├── summernote-sl-SI.js
    │           │   │   │   ├── summernote-sr-RS-Latin.js
    │           │   │   │   ├── summernote-sr-RS.js
    │           │   │   │   ├── summernote-sv-SE.js
    │           │   │   │   ├── summernote-th-TH.js
    │           │   │   │   ├── summernote-tr-TR.js
    │           │   │   │   ├── summernote-uk-UA.js
    │           │   │   │   ├── summernote-vi-VN.js
    │           │   │   │   ├── summernote-zh-CN.js
    │           │   │   │   └── summernote-zh-TW.js
    │           │   │   ├── plugin/
    │           │   │   │   ├── databasic/
    │           │   │   │   │   ├── summernote-ext-databasic.css
    │           │   │   │   │   └── summernote-ext-databasic.js
    │           │   │   │   ├── hello/
    │           │   │   │   │   └── summernote-ext-hello.js
    │           │   │   │   └── specialchars/
    │           │   │   │       └── summernote-ext-specialchars.js
    │           │   │   ├── summernote.css
    │           │   │   └── summernote.js
    │           │   ├── sweet-alert2/
    │           │   │   ├── sweetalert2.common.js
    │           │   │   ├── sweetalert2.css
    │           │   │   └── sweetalert2.js
    │           │   ├── tablesaw/
    │           │   │   ├── css/
    │           │   │   │   └── tablesaw.css
    │           │   │   └── js/
    │           │   │       ├── tablesaw-init.js
    │           │   │       └── tablesaw.js
    │           │   ├── timepicker/
    │           │   │   └── bootstrap-timepicker.js
    │           │   ├── tiny-editable/
    │           │   │   ├── mindmup-editabletable.js
    │           │   │   └── numeric-input-example.js
    │           │   ├── tinymce/
    │           │   │   ├── langs/
    │           │   │   │   └── readme.md
    │           │   │   ├── license.txt
    │           │   │   ├── plugins/
    │           │   │   │   ├── codesample/
    │           │   │   │   │   └── css/
    │           │   │   │   │       └── prism.css
    │           │   │   │   ├── example/
    │           │   │   │   │   └── dialog.html
    │           │   │   │   ├── media/
    │           │   │   │   │   └── moxieplayer.swf
    │           │   │   │   └── visualblocks/
    │           │   │   │       └── css/
    │           │   │   │           └── visualblocks.css
    │           │   │   └── themes/
    │           │   │       └── inlite/
    │           │   │           ├── config/
    │           │   │           │   ├── bolt/
    │           │   │           │   │   ├── atomic.js
    │           │   │           │   │   ├── bootstrap-atomic.js
    │           │   │           │   │   ├── bootstrap-browser.js
    │           │   │           │   │   ├── bootstrap-demo.js
    │           │   │           │   │   ├── bootstrap-prod.js
    │           │   │           │   │   ├── browser.js
    │           │   │           │   │   ├── demo.js
    │           │   │           │   │   └── prod.js
    │           │   │           │   └── dent/
    │           │   │           │       └── depend.js
    │           │   │           ├── scratch/
    │           │   │           │   ├── compile/
    │           │   │           │   │   ├── bootstrap.js
    │           │   │           │   │   └── theme.js
    │           │   │           │   └── inline/
    │           │   │           │       ├── theme.js
    │           │   │           │       └── theme.raw.js
    │           │   │           └── src/
    │           │   │               ├── demo/
    │           │   │               │   ├── css/
    │           │   │               │   │   └── demo.css
    │           │   │               │   ├── html/
    │           │   │               │   │   └── demo.html
    │           │   │               │   └── js/
    │           │   │               │       └── tinymce/
    │           │   │               │           └── inlite/
    │           │   │               │               └── Demo.js
    │           │   │               ├── main/
    │           │   │               │   └── js/
    │           │   │               │       └── tinymce/
    │           │   │               │           └── inlite/
    │           │   │               │               ├── Theme.js
    │           │   │               │               ├── alien/
    │           │   │               │               │   ├── Arr.js
    │           │   │               │               │   ├── Bookmark.js
    │           │   │               │               │   ├── Unlink.js
    │           │   │               │               │   └── Uuid.js
    │           │   │               │               ├── core/
    │           │   │               │               │   ├── Actions.js
    │           │   │               │               │   ├── Convert.js
    │           │   │               │               │   ├── ElementMatcher.js
    │           │   │               │               │   ├── Layout.js
    │           │   │               │               │   ├── Matcher.js
    │           │   │               │               │   ├── Measure.js
    │           │   │               │               │   ├── PredicateId.js
    │           │   │               │               │   ├── SelectionMatcher.js
    │           │   │               │               │   ├── SkinLoader.js
    │           │   │               │               │   └── UrlType.js
    │           │   │               │               ├── file/
    │           │   │               │               │   ├── Conversions.js
    │           │   │               │               │   └── Picker.js
    │           │   │               │               └── ui/
    │           │   │               │                   ├── Buttons.js
    │           │   │               │                   ├── Forms.js
    │           │   │               │                   ├── Panel.js
    │           │   │               │                   └── Toolbar.js
    │           │   │               └── test/
    │           │   │                   ├── .eslintrc
    │           │   │                   └── js/
    │           │   │                       ├── atomic/
    │           │   │                       │   ├── alien/
    │           │   │                       │   │   ├── ArrTest.js
    │           │   │                       │   │   └── UuidTest.js
    │           │   │                       │   └── core/
    │           │   │                       │       ├── ConvertTest.js
    │           │   │                       │       ├── MatcherTest.js
    │           │   │                       │       └── UrlTypeTest.js
    │           │   │                       └── browser/
    │           │   │                           ├── ThemeTest.js
    │           │   │                           ├── alien/
    │           │   │                           │   ├── BookmarkTest.js
    │           │   │                           │   └── UnlinkTest.js
    │           │   │                           ├── core/
    │           │   │                           │   ├── ActionsTest.js
    │           │   │                           │   ├── ElementMatcher.js
    │           │   │                           │   ├── LayoutTest.js
    │           │   │                           │   ├── MeasureTest.js
    │           │   │                           │   ├── PredicateIdTest.js
    │           │   │                           │   └── SelectionMatcherTest.js
    │           │   │                           └── file/
    │           │   │                               ├── ConversionsTest.js
    │           │   │                               └── SelectionMatcher.js
    │           │   ├── transitionize/
    │           │   │   ├── dist/
    │           │   │   │   └── transitionize.js
    │           │   │   ├── examples/
    │           │   │   │   ├── browserify.js
    │           │   │   │   └── example.html
    │           │   │   └── transitionize.js
    │           │   ├── waypoints/
    │           │   │   └── lib/
    │           │   │       └── shortcuts/
    │           │   │           ├── infinite.js
    │           │   │           ├── inview.js
    │           │   │           └── sticky.js
    │           │   └── x-editable/
    │           │       ├── css/
    │           │       │   └── bootstrap-editable.css
    │           │       └── js/
    │           │           └── bootstrap-editable.js
    │           └── scss/
    │               ├── _account-pages.scss
    │               ├── _alerts.scss
    │               ├── _animation.scss
    │               ├── _bootstrap-range-slider.scss
    │               ├── _bootstrap-reset.scss
    │               ├── _buttons.scss
    │               ├── _calendar.scss
    │               ├── _carousel.scss
    │               ├── _charts.scss
    │               ├── _checkbox-radio.scss
    │               ├── _common.scss
    │               ├── _contact.scss
    │               ├── _countdown.scss
    │               ├── _email.scss
    │               ├── _faq.scss
    │               ├── _form-advanced.scss
    │               ├── _form-components.scss
    │               ├── _form-wizard.scss
    │               ├── _gallery.scss
    │               ├── _helper.scss
    │               ├── _loader.scss
    │               ├── _maintenance.scss
    │               ├── _maps.scss
    │               ├── _menu.scss
    │               ├── _modals.scss
    │               ├── _nestable-list.scss
    │               ├── _notification.scss
    │               ├── _opportunities.scss
    │               ├── _pagination.scss
    │               ├── _portlets.scss
    │               ├── _pricing.scss
    │               ├── _print.scss
    │               ├── _products.scss
    │               ├── _profile.scss
    │               ├── _progressbars.scss
    │               ├── _responsive.scss
    │               ├── _search-result.scss
    │               ├── _sitemap.scss
    │               ├── _sweet-alert.scss
    │               ├── _tables.scss
    │               ├── _tabs-accordions.scss
    │               ├── _taskboard.scss
    │               ├── _timeline.scss
    │               ├── _tour.scss
    │               ├── _treeview.scss
    │               ├── _variables.scss
    │               ├── _waves.scss
    │               ├── _widgets.scss
    │               ├── _wysiwig.scss
    │               ├── icons/
    │               │   ├── css/
    │               │   │   ├── material-design-iconic-font.css
    │               │   │   ├── themify-icons.css
    │               │   │   └── typicons.css
    │               │   ├── dripicons/
    │               │   │   └── dripicons.scss
    │               │   ├── font-awesome/
    │               │   │   ├── HELP-US-OUT.txt
    │               │   │   ├── css/
    │               │   │   │   ├── font-awesome.css
    │               │   │   │   ├── mixins.css
    │               │   │   │   └── variables.css
    │               │   │   ├── fonts/
    │               │   │   │   └── FontAwesome.otf
    │               │   │   ├── less/
    │               │   │   │   ├── animated.less
    │               │   │   │   ├── bordered-pulled.less
    │               │   │   │   ├── core.less
    │               │   │   │   ├── fixed-width.less
    │               │   │   │   ├── font-awesome.less
    │               │   │   │   ├── icons.less
    │               │   │   │   ├── larger.less
    │               │   │   │   ├── list.less
    │               │   │   │   ├── mixins.less
    │               │   │   │   ├── path.less
    │               │   │   │   ├── rotated-flipped.less
    │               │   │   │   ├── screen-reader.less
    │               │   │   │   ├── stacked.less
    │               │   │   │   └── variables.less
    │               │   │   └── scss/
    │               │   │       ├── _animated.scss
    │               │   │       ├── _bordered-pulled.scss
    │               │   │       ├── _core.scss
    │               │   │       ├── _fixed-width.scss
    │               │   │       ├── _icons.scss
    │               │   │       ├── _larger.scss
    │               │   │       ├── _list.scss
    │               │   │       ├── _mixins.scss
    │               │   │       ├── _path.scss
    │               │   │       ├── _rotated-flipped.scss
    │               │   │       ├── _screen-reader.scss
    │               │   │       ├── _stacked.scss
    │               │   │       ├── _variables.scss
    │               │   │       └── font-awesome.scss
    │               │   ├── ionicons/
    │               │   │   ├── css/
    │               │   │   │   ├── _ionicons-variables.css
    │               │   │   │   └── ionicons.css
    │               │   │   ├── less/
    │               │   │   │   ├── _ionicons-animation.less
    │               │   │   │   ├── _ionicons-font.less
    │               │   │   │   ├── _ionicons-icons.less
    │               │   │   │   ├── _ionicons-variables.less
    │               │   │   │   └── ionicons.less
    │               │   │   └── scss/
    │               │   │       ├── _ionicons-animation.scss
    │               │   │       ├── _ionicons-font.scss
    │               │   │       ├── _ionicons-icons.scss
    │               │   │       ├── _ionicons-variables.scss
    │               │   │       └── ionicons.scss
    │               │   ├── material-design-iconic-font/
    │               │   │   ├── css/
    │               │   │   │   ├── material-design-iconic-font.css
    │               │   │   │   ├── mixins.css
    │               │   │   │   └── variables.css
    │               │   │   ├── material-design-iconic-font.scss
    │               │   │   └── stylesheets/
    │               │   │       └── styles.css
    │               │   ├── simple-line-icons/
    │               │   │   ├── css/
    │               │   │   │   └── simple-line-icons.css
    │               │   │   ├── less/
    │               │   │   │   └── simple-line-icons.less
    │               │   │   └── scss/
    │               │   │       └── simple-line-icons.scss
    │               │   ├── themify-icons/
    │               │   │   ├── ie7/
    │               │   │   │   ├── ie7.css
    │               │   │   │   └── ie7.js
    │               │   │   ├── themify-icons.css
    │               │   │   └── themify-icons.scss
    │               │   ├── typicons/
    │               │   │   └── typicons.scss
    │               │   └── weather-icons/
    │               │       ├── css/
    │               │       │   ├── weather-icons-core.css
    │               │       │   ├── weather-icons-variables.css
    │               │       │   ├── weather-icons-wind.css
    │               │       │   └── weather-icons.css
    │               │       ├── less/
    │               │       │   ├── css/
    │               │       │   │   ├── variables-beaufort.css
    │               │       │   │   ├── variables-day.css
    │               │       │   │   ├── variables-direction.css
    │               │       │   │   ├── variables-misc.css
    │               │       │   │   ├── variables-moon.css
    │               │       │   │   ├── variables-neutral.css
    │               │       │   │   ├── variables-night.css
    │               │       │   │   ├── variables-time.css
    │               │       │   │   └── variables-wind-names.css
    │               │       │   ├── icon-classes/
    │               │       │   │   ├── classes-beaufort.less
    │               │       │   │   ├── classes-day.less
    │               │       │   │   ├── classes-direction.less
    │               │       │   │   ├── classes-misc.less
    │               │       │   │   ├── classes-moon-aliases.less
    │               │       │   │   ├── classes-moon.less
    │               │       │   │   ├── classes-neutral.less
    │               │       │   │   ├── classes-night.less
    │               │       │   │   ├── classes-time.less
    │               │       │   │   ├── classes-wind-aliases.less
    │               │       │   │   ├── classes-wind-degrees.less
    │               │       │   │   └── classes-wind.less
    │               │       │   ├── icon-variables/
    │               │       │   │   ├── variables-beaufort.less
    │               │       │   │   ├── variables-day.less
    │               │       │   │   ├── variables-direction.less
    │               │       │   │   ├── variables-misc.less
    │               │       │   │   ├── variables-moon.less
    │               │       │   │   ├── variables-neutral.less
    │               │       │   │   ├── variables-night.less
    │               │       │   │   ├── variables-time.less
    │               │       │   │   └── variables-wind-names.less
    │               │       │   ├── mappings/
    │               │       │   │   ├── wi-forecast-io.less
    │               │       │   │   ├── wi-owm.less
    │               │       │   │   ├── wi-wmo4680.less
    │               │       │   │   └── wi-yahoo.less
    │               │       │   ├── weather-icons-classes.less
    │               │       │   ├── weather-icons-core.less
    │               │       │   ├── weather-icons-variables.less
    │               │       │   ├── weather-icons-wind.less
    │               │       │   ├── weather-icons-wind.min.less
    │               │       │   ├── weather-icons.less
    │               │       │   └── weather-icons.min.less
    │               │       └── sass/
    │               │           ├── icon-classes/
    │               │           │   ├── classes-beaufort.scss
    │               │           │   ├── classes-day.scss
    │               │           │   ├── classes-direction.scss
    │               │           │   ├── classes-misc.scss
    │               │           │   ├── classes-moon-aliases.scss
    │               │           │   ├── classes-moon.scss
    │               │           │   ├── classes-neutral.scss
    │               │           │   ├── classes-night.scss
    │               │           │   ├── classes-time.scss
    │               │           │   ├── classes-wind-aliases.scss
    │               │           │   ├── classes-wind-degrees.scss
    │               │           │   └── classes-wind.scss
    │               │           ├── icon-variables/
    │               │           │   ├── variables-beaufort.scss
    │               │           │   ├── variables-day.scss
    │               │           │   ├── variables-direction.scss
    │               │           │   ├── variables-misc.scss
    │               │           │   ├── variables-moon.scss
    │               │           │   ├── variables-neutral.scss
    │               │           │   ├── variables-night.scss
    │               │           │   ├── variables-time.scss
    │               │           │   └── variables-wind-names.scss
    │               │           ├── mappings/
    │               │           │   ├── wi-forecast-io.scss
    │               │           │   ├── wi-owm.scss
    │               │           │   ├── wi-wmo4680.scss
    │               │           │   └── wi-yahoo.scss
    │               │           ├── weather-icons-classes.scss
    │               │           ├── weather-icons-core.scss
    │               │           ├── weather-icons-variables.scss
    │               │           ├── weather-icons-wind.min.scss
    │               │           ├── weather-icons-wind.scss
    │               │           ├── weather-icons.min.scss
    │               │           └── weather-icons.scss
    │               ├── icons.scss
    │               └── style.scss
    ├── Pos.sln
    ├── docker-compose.dcproj
    ├── docker-compose.override.yml
    └── docker-compose.yml
Download .txt
Showing preview only (224K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2598 symbols across 249 files)

FILE: src/Pos.Customer.Domain/CustomerAggregate/ICustomerRepository.cs
  type ICustomerRepository (line 8) | public interface ICustomerRepository : IEfRepository<MstCustomer>

FILE: src/Pos.Customer.Domain/CustomerAggregate/MstCustomer.cs
  class MstCustomer (line 7) | public partial class MstCustomer : EntityBase

FILE: src/Pos.Customer.Infrastructure/EventSources/POSCustomerEventContext.cs
  class POSCustomerEventContext (line 8) | public class POSCustomerEventContext : MongoContext
    method POSCustomerEventContext (line 10) | public POSCustomerEventContext(POSCustomerEventContextSetting setting)...

FILE: src/Pos.Customer.Infrastructure/EventSources/POSCustomerEventContextSetting.cs
  class POSCustomerEventContextSetting (line 8) | public class POSCustomerEventContextSetting : MongoDbSettings

FILE: src/Pos.Customer.Infrastructure/POSCustomerContext.cs
  class POSCustomerContext (line 6) | public partial class POSCustomerContext : DbContext
    method POSCustomerContext (line 8) | public POSCustomerContext()
    method POSCustomerContext (line 12) | public POSCustomerContext(DbContextOptions<POSCustomerContext> options)
    method OnConfiguring (line 20) | protected override void OnConfiguring(DbContextOptionsBuilder optionsB...
    method OnModelCreating (line 27) | protected override void OnModelCreating(ModelBuilder modelBuilder)
    method OnModelCreatingPartial (line 47) | partial void OnModelCreatingPartial(ModelBuilder modelBuilder);

FILE: src/Pos.Customer.Infrastructure/Repositories/CustomeRepository.cs
  class CustomeRepository (line 9) | public class CustomeRepository : EfRepository<MstCustomer>, ICustomerRep...
    method CustomeRepository (line 12) | public CustomeRepository(POSCustomerContext context) : base(context)

FILE: src/Pos.Customer.WebApi/Application/Commands/CreateCustomerCommand.cs
  class CreateCustomerCommand (line 9) | public class CreateCustomerCommand : ICommand

FILE: src/Pos.Customer.WebApi/Application/Commands/CreateCustomerCommandHandler.cs
  class CreateCustomerCommandHandler (line 12) | public class CreateCustomerCommandHandler : ICommandHandler<CreateCustom...
    method CreateCustomerCommandHandler (line 17) | public CreateCustomerCommandHandler(IKakfaProducer kakfaProducer, IEve...
    method Handle (line 23) | public async Task Handle(CreateCustomerCommand command, CancellationTo...

FILE: src/Pos.Customer.WebApi/Application/Commands/DeleteCustomerCommand.cs
  class DeleteCustomerCommand (line 10) | public class DeleteCustomerCommand : ICommand

FILE: src/Pos.Customer.WebApi/Application/Commands/DeleteCustomerCommandHandler.cs
  class DeleteCustomerCommandHandler (line 12) | public class DeleteCustomerCommandHandler : ICommandHandler<DeleteCustom...
    method DeleteCustomerCommandHandler (line 16) | public DeleteCustomerCommandHandler(IKakfaProducer kakfaProducer,
    method Handle (line 24) | public async Task Handle(DeleteCustomerCommand command, CancellationTo...

FILE: src/Pos.Customer.WebApi/Application/Commands/UpdateCustomerCommand.cs
  class UpdateCustomerCommand (line 9) | public class UpdateCustomerCommand : ICommand

FILE: src/Pos.Customer.WebApi/Application/Commands/UpdateCustomerCommandHandler.cs
  class UpdateCustomerCommandHandler (line 12) | public class UpdateCustomerCommandHandler : ICommandHandler<UpdateCustom...
    method UpdateCustomerCommandHandler (line 17) | public UpdateCustomerCommandHandler(IKakfaProducer kakfaProducer, IEve...
    method Handle (line 23) | public async Task Handle(UpdateCustomerCommand command, CancellationTo...

FILE: src/Pos.Customer.WebApi/Application/EventHandlers/CustomerCreateEventHandler.cs
  class CustomerCreateEventHandler (line 16) | public class CustomerCreateEventHandler : IServiceEventHandler
    method CustomerCreateEventHandler (line 23) | public CustomerCreateEventHandler(IUnitOfWork<POSCustomerContext> uow,
    method Handle (line 33) | public async Task Handle(JObject jObject, ILog log, CancellationToken ...

FILE: src/Pos.Customer.WebApi/Application/EventHandlers/CustomerDeleteEventHandler.cs
  class CustomerDeleteEventHandler (line 17) | public class CustomerDeleteEventHandler : IServiceEventHandler
    method CustomerDeleteEventHandler (line 25) | public CustomerDeleteEventHandler(IUnitOfWork<POSCustomerContext> uow,
    method Handle (line 37) | public async Task Handle(JObject jObject, ILog log, CancellationToken ...

FILE: src/Pos.Customer.WebApi/Application/EventHandlers/CustomerUpdateEventHandler.cs
  class CustomerUpdateEventHandler (line 17) | public class CustomerUpdateEventHandler : IServiceEventHandler
    method CustomerUpdateEventHandler (line 25) | public CustomerUpdateEventHandler(IUnitOfWork<POSCustomerContext> uow,
    method Handle (line 37) | public async Task Handle(JObject jObject, ILog log, CancellationToken ...

FILE: src/Pos.Customer.WebApi/Application/Queries/CustomerQueries.cs
  class CustomerQueries (line 11) | public class CustomerQueries : ICustomerQueries
    method CustomerQueries (line 15) | public CustomerQueries(IDbConectionFactory dbConectionFactory)
    method GetCustomer (line 21) | public async Task<MstCustomer> GetCustomer(Guid id)
    method GetCustomer (line 38) | public async Task<IEnumerable<MstCustomer>> GetCustomer(string name)
    method GetCustomers (line 55) | public async Task<IEnumerable<MstCustomer>> GetCustomers()

FILE: src/Pos.Customer.WebApi/Application/Queries/ICustomerQueries.cs
  type ICustomerQueries (line 9) | public interface ICustomerQueries
    method GetCustomer (line 11) | Task<MstCustomer> GetCustomer(Guid id);
    method GetCustomers (line 12) | Task<IEnumerable<MstCustomer>> GetCustomers();
    method GetCustomer (line 13) | Task<IEnumerable<MstCustomer>> GetCustomer(string name);

FILE: src/Pos.Customer.WebApi/ApplicationBootsraper.cs
  class ApplicationBootsraper (line 19) | public static class ApplicationBootsraper
    method InitBootsraper (line 21) | public static IServiceCollection InitBootsraper(this IServiceCollectio...
    method InitMapperProfile (line 47) | public static IServiceCollection InitMapperProfile(this IServiceCollec...
    method InitAppServices (line 60) | public static IServiceCollection InitAppServices(this IServiceCollecti...
    method InitEventHandlers (line 71) | public static IServiceCollection InitEventHandlers(this IServiceCollec...

FILE: src/Pos.Customer.WebApi/Controllers/CustomerController.cs
  class CustomerController (line 16) | [Produces("application/json")]
    method CustomerController (line 28) | public CustomerController(IMapper mapper,
    method Get (line 44) | [HttpGet]
    method Get (line 61) | [HttpGet("{id}")]
    method Post (line 78) | [HttpPost]
    method Put (line 94) | [HttpPut]
    method Delete (line 110) | [HttpDelete("{id}")]

FILE: src/Pos.Customer.WebApi/Controllers/ValuesController.cs
  class ValuesController (line 9) | [Route("api/[controller]")]
    method Get (line 14) | [HttpGet]
    method Get (line 21) | [HttpGet("{id}")]
    method Post (line 28) | [HttpPost]
    method Put (line 34) | [HttpPut("{id}")]
    method Delete (line 40) | [HttpDelete("{id}")]

FILE: src/Pos.Customer.WebApi/Mapping/CommandToEventMapperProfile.cs
  class CommandToEventMapperProfile (line 7) | public class CommandToEventMapperProfile : Profile
    method CommandToEventMapperProfile (line 9) | public CommandToEventMapperProfile()

FILE: src/Pos.Customer.WebApi/Mapping/DomainToCommandMapperProfile.cs
  class DomainToCommandMapperProfile (line 11) | public class DomainToCommandMapperProfile : Profile
    method DomainToCommandMapperProfile (line 13) | public DomainToCommandMapperProfile()

FILE: src/Pos.Customer.WebApi/Mapping/EventoDomainMapperProfile.cs
  class EventoDomainMapperProfile (line 8) | public class EventoDomainMapperProfile : Profile
    method EventoDomainMapperProfile (line 10) | public EventoDomainMapperProfile()

FILE: src/Pos.Customer.WebApi/Program.cs
  class Program (line 13) | public class Program
    method Main (line 15) | public static void Main(string[] args)
    method CreateWebHostBuilder (line 20) | public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>

FILE: src/Pos.Customer.WebApi/SeedingData/DbSeeder.cs
  class DbSeeder (line 10) | public static class DbSeeder
    method Up (line 12) | public static void Up(IServiceProvider serviceProvider)

FILE: src/Pos.Customer.WebApi/Startup.cs
  class Startup (line 10) | public class Startup
    method Startup (line 12) | public Startup(IConfiguration configuration)
    method ConfigureServices (line 20) | public void ConfigureServices(IServiceCollection services)
    method Configure (line 31) | public void Configure(IApplicationBuilder app, IHostingEnvironment env)

FILE: src/Pos.Event.Contracts/AppGlobalTopic.cs
  class AppGlobalTopic (line 7) | public class AppGlobalTopic

FILE: src/Pos.Event.Contracts/customer/CustomerCreatedEvent.cs
  class CustomerCreatedEvent (line 8) | [Event("CustomerCreated")]

FILE: src/Pos.Event.Contracts/customer/CustomerDeletedEvent.cs
  class CustomerDeletedEvent (line 8) | [Event("CustomerDeleted")]

FILE: src/Pos.Event.Contracts/customer/CustomerUpdatedEvent.cs
  class CustomerUpdatedEvent (line 8) | [Event("CustomerUpdated")]

FILE: src/Pos.Event.Contracts/order/OrderCancelledEvent.cs
  class OrderCancelledEvent (line 8) | [Event("OrderCancelled")]

FILE: src/Pos.Event.Contracts/order/OrderCreatedEvent.cs
  class OrderCreatedEvent (line 8) | [Event("OrderCreated")]
    method OrderCreatedEvent (line 11) | public OrderCreatedEvent()

FILE: src/Pos.Event.Contracts/order/OrderDetailCreatedEvent.cs
  class OrderDetailDto (line 6) | public class OrderDetailDto
    method GetSubtotal (line 12) | public decimal? GetSubtotal()

FILE: src/Pos.Event.Contracts/order/OrderShippedEvent.cs
  class OrderShippedEvent (line 8) | [Event("OrderShipped")]

FILE: src/Pos.Event.Contracts/order/OrderValidatedEvent.cs
  class OrderValidatedEvent (line 8) | [Event("OrderValidatedEvent")]
    method OrderValidatedEvent (line 11) | public OrderValidatedEvent()

FILE: src/Pos.Event.Contracts/product/ProductCategoryCreatedEvent.cs
  class ProductCategoryCreatedEvent (line 8) | [Event("ProductCategoryCreated")]

FILE: src/Pos.Event.Contracts/product/ProductCategoryDeletedEvent.cs
  class ProductCategoryDeletedEvent (line 8) | [Event("ProductCategoryDeleted")]

FILE: src/Pos.Event.Contracts/product/ProductCategoryUpdatedEvent.cs
  class ProductCategoryUpdatedEvent (line 8) | [Event("ProductCategoryUpdated")]

FILE: src/Pos.Event.Contracts/product/ProductCreatedEvent.cs
  class ProductCreatedEvent (line 8) | [Event("ProductCreated")]

FILE: src/Pos.Event.Contracts/product/ProductDeletedEvent.cs
  class ProductDeletedEvent (line 8) | [Event("ProductDeleted")]

FILE: src/Pos.Event.Contracts/product/ProductUpdatedEvent.cs
  class ProductUpdatedEvent (line 8) | [Event("ProductUpdated")]

FILE: src/Pos.Gateway.Securities/Application/AuthService.cs
  class AuthService (line 13) | public class AuthService : IAuthService
    method Authenticate (line 15) | public Models.SecurityToken Authenticate(string keyAuth)

FILE: src/Pos.Gateway.Securities/Application/IAuthService.cs
  type IAuthService (line 9) | public interface IAuthService
    method Authenticate (line 11) | SecurityToken Authenticate(string key);

FILE: src/Pos.Gateway.Securities/Controllers/AuthController.cs
  class AuthController (line 12) | [Route("api/[controller]")]
    method AuthController (line 17) | public AuthController(IAuthService authService)
    method Authenticate (line 22) | [AllowAnonymous]

FILE: src/Pos.Gateway.Securities/Models/Authentication.cs
  class Authentication (line 8) | public class Authentication

FILE: src/Pos.Gateway.Securities/Models/SecurityToken.cs
  class SecurityToken (line 8) | public class SecurityToken

FILE: src/Pos.Gateway.Securities/Program.cs
  class Program (line 13) | public class Program
    method Main (line 15) | public static void Main(string[] args)
    method CreateWebHostBuilder (line 20) | public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>

FILE: src/Pos.Gateway.Securities/Startup.cs
  class Startup (line 16) | public class Startup
    method Startup (line 18) | public Startup(IConfiguration configuration)
    method ConfigureServices (line 26) | public void ConfigureServices(IServiceCollection services)
    method Configure (line 34) | public void Configure(IApplicationBuilder app, IHostingEnvironment env)

FILE: src/Pos.Gateway/Controllers/ValuesController.cs
  class ValuesController (line 9) | [Route("api/[controller]")]
    method Get (line 14) | [HttpGet]
    method Get (line 21) | [HttpGet("{id}")]
    method Post (line 28) | [HttpPost]
    method Put (line 34) | [HttpPut("{id}")]
    method Delete (line 40) | [HttpDelete("{id}")]

FILE: src/Pos.Gateway/Program.cs
  class Program (line 13) | public class Program
    method Main (line 15) | public static void Main(string[] args)
    method CreateWebHostBuilder (line 20) | public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>

FILE: src/Pos.Gateway/Startup.cs
  class Startup (line 20) | public class Startup
    method Startup (line 22) | public Startup(IHostingEnvironment env)
    method ConfigureServices (line 42) | public void ConfigureServices(IServiceCollection services)
    method Configure (line 70) | public void Configure(IApplicationBuilder app, IHostingEnvironment env)

FILE: src/Pos.Order.Domain/OrderAggregate/Contract/IOrderRepository.cs
  type IOrderRepository (line 7) | public interface IOrderRepository : IEfRepository<MstOrder>
    method ShippedOrder (line 9) | Task ShippedOrder(Guid orderId);
    method CanceledOrder (line 10) | Task CanceledOrder(Guid orderId);

FILE: src/Pos.Order.Domain/OrderAggregate/MstOrder.cs
  class MstOrder (line 7) | public partial class MstOrder
    method MstOrder (line 9) | public MstOrder()
    method GetTotal (line 28) | public decimal? GetTotal()
    method AddLineItem (line 31) | public void AddLineItem(Guid product, int quantity = 1)
    method GetLineItem (line 42) | public OrderDetail GetLineItem(Guid product)

FILE: src/Pos.Order.Domain/OrderAggregate/OrderDetail.cs
  class OrderDetail (line 6) | public partial class OrderDetail
    method GetSubtotal (line 15) | public decimal? GetSubtotal()

FILE: src/Pos.Order.Infrastructure/EventSources/POSOrderEventContext.cs
  class POSOrderEventContext (line 8) | public class POSOrderEventContext : MongoContext
    method POSOrderEventContext (line 10) | public POSOrderEventContext(POSOrderEventContextSetting setting) : bas...

FILE: src/Pos.Order.Infrastructure/EventSources/POSOrderEventContextSetting.cs
  class POSOrderEventContextSetting (line 8) | public class POSOrderEventContextSetting : MongoDbSettings

FILE: src/Pos.Order.Infrastructure/POSOrderContext.cs
  class POSOrderContext (line 8) | public partial class POSOrderContext : DbContext
    method POSOrderContext (line 10) | public POSOrderContext()
    method POSOrderContext (line 14) | public POSOrderContext(DbContextOptions<POSOrderContext> options)
    method OnConfiguring (line 23) | protected override void OnConfiguring(DbContextOptionsBuilder optionsB...
    method OnModelCreating (line 30) | protected override void OnModelCreating(ModelBuilder modelBuilder)
    method OnModelCreatingPartial (line 72) | partial void OnModelCreatingPartial(ModelBuilder modelBuilder);

FILE: src/Pos.Order.Infrastructure/Repositories/OrderRepository.cs
  class OrderRepository (line 12) | public class OrderRepository : EfRepository<MstOrder>, IOrderRepository
    method OrderRepository (line 15) | public OrderRepository(POSOrderContext context) : base(context)
    method CanceledOrder (line 20) | public async Task CanceledOrder(Guid orderId)
    method ShippedOrder (line 32) | public async Task ShippedOrder(Guid orderId)

FILE: src/Pos.Order.WebApi/Application/Commands/CreateOrderCommand.cs
  class CreateOrderCommand (line 11) | public class CreateOrderCommand : ICommand
    method CreateOrderCommand (line 13) | public CreateOrderCommand()
    method AddProduct (line 30) | public void AddProduct(Guid product, int? quantity, decimal? unitPrice...

FILE: src/Pos.Order.WebApi/Application/Commands/CreateOrderCommandHandler.cs
  class CreateOrderCommandHandler (line 18) | public class CreateOrderCommandHandler : ICommandHandler<CreateOrderComm...
    method CreateOrderCommandHandler (line 26) | public CreateOrderCommandHandler(IMapper mapper,
    method Handle (line 40) | public async Task Handle(CreateOrderCommand command, CancellationToken...

FILE: src/Pos.Order.WebApi/Application/DTO/CreateOrderDetailRequest.cs
  class CreateOrderDetailRequest (line 8) | public class CreateOrderDetailRequest

FILE: src/Pos.Order.WebApi/Application/DTO/CreateOrderHeaderRequest.cs
  class CreateOrderHeaderRequest (line 9) | public class CreateOrderHeaderRequest
    method GetTotal (line 20) | public decimal? GetTotal()

FILE: src/Pos.Order.WebApi/Application/DTO/DetailOrderLineItemResponse.cs
  class DetailOrderLineItemResponse (line 5) | public class DetailOrderLineItemResponse

FILE: src/Pos.Order.WebApi/Application/DTO/DetailOrderResponse.cs
  class DetailOrderResponse (line 8) | public class DetailOrderResponse

FILE: src/Pos.Order.WebApi/Application/EventHandlers/OrderCanceledEventHandler.cs
  class OrderCanceledEventHandler (line 20) | public class OrderCanceledEventHandler : IServiceEventHandler
    method OrderCanceledEventHandler (line 25) | public OrderCanceledEventHandler(IKakfaProducer producer,
    method Handle (line 35) | public async Task Handle(JObject jObject, ILog log, CancellationToken ...

FILE: src/Pos.Order.WebApi/Application/EventHandlers/OrderShippedEventHandler.cs
  class OrderShippedEventHandler (line 20) | public class OrderShippedEventHandler : IServiceEventHandler
    method OrderShippedEventHandler (line 25) | public OrderShippedEventHandler(IKakfaProducer producer,
    method Handle (line 35) | public async Task Handle(JObject jObject, ILog log, CancellationToken ...

FILE: src/Pos.Order.WebApi/Application/EventHandlers/OrderValidatedEventHandler.cs
  class OrderValidatedEventHandler (line 20) | public class OrderValidatedEventHandler : IServiceEventHandler
    method OrderValidatedEventHandler (line 25) | public OrderValidatedEventHandler(IKakfaProducer producer,
    method Handle (line 34) | public async Task Handle(JObject jObject, ILog log, CancellationToken ...

FILE: src/Pos.Order.WebApi/Application/Queries/IOrderQueries.cs
  type IOrderQueries (line 8) | public interface IOrderQueries
    method GetOrders (line 10) | Task<IEnumerable<MstOrder>> GetOrders();
    method GetOrder (line 11) | Task<MstOrder> GetOrder(Guid id);
    method GetOrderByNumber (line 12) | Task<IEnumerable<MstOrder>> GetOrderByNumber(string orderNumber);

FILE: src/Pos.Order.WebApi/Application/Queries/OrderQueries.cs
  class OrderQueries (line 13) | public class OrderQueries : IOrderQueries
    method OrderQueries (line 18) | public OrderQueries(IDbConectionFactory dbConectionFactory,
    method GetOrder (line 26) | public async Task<MstOrder> GetOrder(Guid id)
    method GetOrderByNumber (line 33) | public async Task<IEnumerable<MstOrder>> GetOrderByNumber(string order...
    method GetOrders (line 40) | public async Task<IEnumerable<MstOrder>> GetOrders()

FILE: src/Pos.Order.WebApi/ApplicationBootsraper.cs
  class ApplicationBootsraper (line 20) | public static class ApplicationBootsraper
    method InitBootsraper (line 22) | public static IServiceCollection InitBootsraper(this IServiceCollectio...
    method InitMapperProfile (line 48) | public static IServiceCollection InitMapperProfile(this IServiceCollec...
    method InitAppServices (line 63) | public static IServiceCollection InitAppServices(this IServiceCollecti...
    method InitEventHandlers (line 74) | public static IServiceCollection InitEventHandlers(this IServiceCollec...

FILE: src/Pos.Order.WebApi/Controllers/OrderController.cs
  class OrderController (line 18) | [Produces("application/json")]
    method OrderController (line 28) | public OrderController(IMapper mapper,
    method Get (line 41) | [HttpGet]
    method Get (line 59) | [HttpGet("id")]
    method Post (line 77) | [HttpPost]

FILE: src/Pos.Order.WebApi/Controllers/ValuesController.cs
  class ValuesController (line 9) | [Route("api/[controller]")]
    method Get (line 14) | [HttpGet]
    method Get (line 21) | [HttpGet("{id}")]
    method Post (line 28) | [HttpPost]
    method Put (line 34) | [HttpPut("{id}")]
    method Delete (line 40) | [HttpDelete("{id}")]

FILE: src/Pos.Order.WebApi/Mapping/AllToDtoMapperProfile.cs
  class AllToDtoMapperProfile (line 11) | public class AllToDtoMapperProfile : Profile
    method AllToDtoMapperProfile (line 13) | public AllToDtoMapperProfile()

FILE: src/Pos.Order.WebApi/Mapping/CommandToEventMapperProfile.cs
  class CommandToEventMapperProfile (line 7) | public class CommandToEventMapperProfile : Profile
    method CommandToEventMapperProfile (line 9) | public CommandToEventMapperProfile()

FILE: src/Pos.Order.WebApi/Mapping/DomainToCommandMapperProfile.cs
  class DomainToCommandMapperProfile (line 12) | public class DomainToCommandMapperProfile : Profile
    method DomainToCommandMapperProfile (line 14) | public DomainToCommandMapperProfile()

FILE: src/Pos.Order.WebApi/Mapping/DtotoAllMapperProfile.cs
  class DtotoAllMapperProfile (line 12) | public class DtotoAllMapperProfile : Profile
    method DtotoAllMapperProfile (line 14) | public DtotoAllMapperProfile()

FILE: src/Pos.Order.WebApi/Mapping/EventoDomainMapperProfile.cs
  class EventoDomainMapperProfile (line 9) | public class EventoDomainMapperProfile : Profile
    method EventoDomainMapperProfile (line 11) | public EventoDomainMapperProfile()

FILE: src/Pos.Order.WebApi/Program.cs
  class Program (line 13) | public class Program
    method Main (line 15) | public static void Main(string[] args)
    method CreateWebHostBuilder (line 20) | public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>

FILE: src/Pos.Order.WebApi/SeedingData/DbSeeder.cs
  class DbSeeder (line 10) | public static class DbSeeder
    method Up (line 12) | public static void Up(IServiceProvider serviceProvider)

FILE: src/Pos.Order.WebApi/Startup.cs
  class Startup (line 16) | public class Startup
    method Startup (line 18) | public Startup(IConfiguration configuration)
    method ConfigureServices (line 26) | public void ConfigureServices(IServiceCollection services)
    method Configure (line 37) | public void Configure(IApplicationBuilder app, IHostingEnvironment env)

FILE: src/Pos.Product.Domain/ProductAggregate/Contracts/IProductCategoryRepository.cs
  type IProductCategoryRepository (line 8) | public interface IProductCategoryRepository : IEfRepository<ProductCateg...

FILE: src/Pos.Product.Domain/ProductAggregate/Contracts/IProductRepository.cs
  type IProductRepository (line 8) | public interface IProductRepository : IEfRepository<MstProduct>

FILE: src/Pos.Product.Domain/ProductAggregate/MstProduct.cs
  class MstProduct (line 6) | public partial class MstProduct

FILE: src/Pos.Product.Domain/ProductAggregate/ProductCategory.cs
  class ProductCategory (line 6) | public partial class ProductCategory
    method ProductCategory (line 8) | public ProductCategory()

FILE: src/Pos.Product.Infrastructure/EventSources/POSProductEventContext.cs
  class POSProductEventContext (line 8) | public class POSProductEventContext : MongoContext
    method POSProductEventContext (line 10) | public POSProductEventContext(POSProductEventContextSetting setting): ...

FILE: src/Pos.Product.Infrastructure/EventSources/POSProductEventContextSetting.cs
  class POSProductEventContextSetting (line 8) | public class POSProductEventContextSetting : MongoDbSettings

FILE: src/Pos.Product.Infrastructure/POSProductContext.cs
  class POSProductContext (line 8) | public partial class POSProductContext : DbContext
    method POSProductContext (line 10) | public POSProductContext()
    method POSProductContext (line 14) | public POSProductContext(DbContextOptions<POSProductContext> options)
    method OnConfiguring (line 23) | protected override void OnConfiguring(DbContextOptionsBuilder optionsB...
    method OnModelCreating (line 30) | protected override void OnModelCreating(ModelBuilder modelBuilder)
    method OnModelCreatingPartial (line 66) | partial void OnModelCreatingPartial(ModelBuilder modelBuilder);

FILE: src/Pos.Product.Infrastructure/Repositories/ProductCategoryRepository.cs
  class ProductCategoryRepository (line 10) | public class ProductCategoryRepository : EfRepository<ProductCategory>, ...
    method ProductCategoryRepository (line 13) | public ProductCategoryRepository(POSProductContext context) : base(con...

FILE: src/Pos.Product.Infrastructure/Repositories/ProductRepository.cs
  class ProductRepository (line 10) | public class ProductRepository : EfRepository<MstProduct>, IProductRepos...
    method ProductRepository (line 13) | public ProductRepository(POSProductContext context) : base(context)

FILE: src/Pos.Product.WebApi/Application/Commands/CreateProductCommand.cs
  class CreateProductCommand (line 9) | public class CreateProductCommand : ICommand

FILE: src/Pos.Product.WebApi/Application/Commands/CreateProductCommandHandler.cs
  class CreateProductCommandHandler (line 13) | public class CreateProductCommandHandler : ICommandHandler<CreateProduct...
    method CreateProductCommandHandler (line 19) | public CreateProductCommandHandler(
    method Handle (line 29) | public async Task Handle(CreateProductCommand command, CancellationTok...

FILE: src/Pos.Product.WebApi/Application/Commands/DeleteProductCommand.cs
  class DeleteProductCommand (line 10) | public class DeleteProductCommand : ICommand

FILE: src/Pos.Product.WebApi/Application/Commands/DeleteProductCommandHandler.cs
  class DeleteProductCommandHandler (line 13) | public class DeleteProductCommandHandler : ICommandHandler<DeleteProduct...
    method DeleteProductCommandHandler (line 17) | public DeleteProductCommandHandler(IKakfaProducer kakfaProducer,
    method Handle (line 25) | public async Task Handle(DeleteProductCommand command, CancellationTok...

FILE: src/Pos.Product.WebApi/Application/Commands/ProductCategories/CreateProductCategoryCommand.cs
  class CreateProductCategoryCommand (line 9) | public class CreateProductCategoryCommand : ICommand

FILE: src/Pos.Product.WebApi/Application/Commands/ProductCategories/CreateProductCategoryCommandHandler.cs
  class CreateProductCategoryCommandHandler (line 13) | public class CreateProductCategoryCommandHandler : ICommandHandler<Creat...
    method CreateProductCategoryCommandHandler (line 19) | public CreateProductCategoryCommandHandler(
    method Handle (line 29) | public async Task Handle(CreateProductCategoryCommand command, Cancell...

FILE: src/Pos.Product.WebApi/Application/Commands/ProductCategories/DeleteProductCategoryCommand.cs
  class DeleteProductCategoryCommand (line 10) | public class DeleteProductCategoryCommand : ICommand

FILE: src/Pos.Product.WebApi/Application/Commands/ProductCategories/DeleteProductCategoryCommandHandler.cs
  class DeleteProductCategoryCommandHandler (line 13) | public class DeleteProductCategoryCommandHandler : ICommandHandler<Delet...
    method DeleteProductCategoryCommandHandler (line 17) | public DeleteProductCategoryCommandHandler(IKakfaProducer kakfaProducer,
    method Handle (line 25) | public async Task Handle(DeleteProductCategoryCommand command, Cancell...

FILE: src/Pos.Product.WebApi/Application/Commands/ProductCategories/UpdateProductCategoryCommand.cs
  class UpdateProductCategoryCommand (line 9) | public class UpdateProductCategoryCommand : ICommand

FILE: src/Pos.Product.WebApi/Application/Commands/ProductCategories/UpdateProductCategoryCommandHandler.cs
  class UpdateProductCategoryCommandHandler (line 14) | public class UpdateProductCategoryCommandHandler : ICommandHandler<Updat...
    method UpdateProductCategoryCommandHandler (line 20) | public UpdateProductCategoryCommandHandler(
    method Handle (line 30) | public async Task Handle(UpdateProductCategoryCommand command, Cancell...

FILE: src/Pos.Product.WebApi/Application/Commands/UpdateProductCommand.cs
  class UpdateProductCommand (line 9) | public class UpdateProductCommand : ICommand

FILE: src/Pos.Product.WebApi/Application/Commands/UpdateProductCommandHandler.cs
  class UpdateProductCommandHandler (line 13) | public class UpdateProductCommandHandler : ICommandHandler<UpdateProduct...
    method UpdateProductCommandHandler (line 19) | public UpdateProductCommandHandler(
    method Handle (line 29) | public async Task Handle(UpdateProductCommand command, CancellationTok...

FILE: src/Pos.Product.WebApi/Application/EventHandlers/ProductCategories/ProductCategoryCreateEventHandler.cs
  class ProductCategoryCreateEventHandler (line 17) | public class ProductCategoryCreateEventHandler : IServiceEventHandler
    method ProductCategoryCreateEventHandler (line 24) | public ProductCategoryCreateEventHandler(IUnitOfWork<POSProductContext...
    method Handle (line 34) | public async Task Handle(JObject jObject, ILog log, CancellationToken ...

FILE: src/Pos.Product.WebApi/Application/EventHandlers/ProductCategories/ProductCategoryDeleteEventHandler.cs
  class ProductCategoryDeleteEventHandler (line 17) | public class ProductCategoryDeleteEventHandler : IServiceEventHandler
    method ProductCategoryDeleteEventHandler (line 25) | public ProductCategoryDeleteEventHandler(IUnitOfWork<POSProductContext...
    method Handle (line 37) | public async Task Handle(JObject jObject, ILog log, CancellationToken ...

FILE: src/Pos.Product.WebApi/Application/EventHandlers/ProductCategories/ProductCategoryUpdateEventHandler.cs
  class ProductCategoryUpdateEventHandler (line 18) | public class ProductCategoryUpdateEventHandler : IServiceEventHandler
    method ProductCategoryUpdateEventHandler (line 26) | public ProductCategoryUpdateEventHandler(IUnitOfWork<POSProductContext...
    method Handle (line 38) | public async Task Handle(JObject jObject, ILog log, CancellationToken ...

FILE: src/Pos.Product.WebApi/Application/EventHandlers/ProductCreateEventHandler.cs
  class ProductCreateEventHandler (line 17) | public class ProductCreateEventHandler : IServiceEventHandler
    method ProductCreateEventHandler (line 24) | public ProductCreateEventHandler(IUnitOfWork<POSProductContext> uow,
    method Handle (line 34) | public async Task Handle(JObject jObject, ILog log, CancellationToken ...

FILE: src/Pos.Product.WebApi/Application/EventHandlers/ProductDeleteEventHandler.cs
  class ProductDeleteEventHandler (line 17) | public class ProductDeleteEventHandler : IServiceEventHandler
    method ProductDeleteEventHandler (line 25) | public ProductDeleteEventHandler(IUnitOfWork<POSProductContext> uow,
    method Handle (line 37) | public async Task Handle(JObject jObject, ILog log, CancellationToken ...

FILE: src/Pos.Product.WebApi/Application/EventHandlers/ProductUpdateEventHandler.cs
  class ProductUpdateEventHandler (line 18) | public class ProductUpdateEventHandler : IServiceEventHandler
    method ProductUpdateEventHandler (line 26) | public ProductUpdateEventHandler(IUnitOfWork<POSProductContext> uow,
    method Handle (line 38) | public async Task Handle(JObject jObject, ILog log, CancellationToken ...

FILE: src/Pos.Product.WebApi/Application/EventHandlers/SagaPattern/OrderCreatedEventHandler.cs
  class OrderCreatedEventHandler (line 16) | public class OrderCreatedEventHandler : IServiceEventHandler
    method OrderCreatedEventHandler (line 22) | public OrderCreatedEventHandler(
    method Handle (line 31) | public async Task Handle(JObject jObject, ILog log, CancellationToken ...

FILE: src/Pos.Product.WebApi/Application/Queries/IProductCategoryQueries.cs
  type IProductCategoryQueries (line 9) | public interface IProductCategoryQueries
    method GetData (line 11) | Task<ProductCategory> GetData(Guid id);
    method GetDatas (line 12) | Task<IEnumerable<ProductCategory>> GetDatas();
    method GetData (line 13) | Task<IEnumerable<ProductCategory>> GetData(string name);

FILE: src/Pos.Product.WebApi/Application/Queries/IProductQueries.cs
  type IProductQueries (line 8) | public interface IProductQueries
    method GetProduct (line 10) | Task<MstProduct> GetProduct(Guid id);
    method GetProductByCategory (line 11) | Task<IEnumerable<MstProduct>> GetProductByCategory(Guid category);
    method GetProducts (line 12) | Task<IEnumerable<MstProduct>> GetProducts();
    method GetProduct (line 13) | Task<IEnumerable<MstProduct>> GetProduct(string name);
    method GetProductByPartNumber (line 14) | Task<IEnumerable<MstProduct>> GetProductByPartNumber(string partNumber);

FILE: src/Pos.Product.WebApi/Application/Queries/ProductCategoryQueries.cs
  class ProductCategoryQueries (line 11) | public class ProductCategoryQueries : IProductCategoryQueries
    method ProductCategoryQueries (line 15) | public ProductCategoryQueries(IDbConectionFactory dbConectionFactory)
    method GetData (line 19) | public async Task<ProductCategory> GetData(Guid id)
    method GetData (line 29) | public async Task<IEnumerable<ProductCategory>> GetData(string name)
    method GetDatas (line 39) | public async Task<IEnumerable<ProductCategory>> GetDatas()

FILE: src/Pos.Product.WebApi/Application/Queries/ProductQueries.cs
  class ProductQueries (line 11) | public class ProductQueries : IProductQueries
    method ProductQueries (line 15) | public ProductQueries(IDbConectionFactory dbConectionFactory)
    method GetProduct (line 20) | public async Task<MstProduct> GetProduct(Guid id)
    method GetProduct (line 30) | public async Task<IEnumerable<MstProduct>> GetProduct(string name)
    method GetProductByCategory (line 40) | public async Task<IEnumerable<MstProduct>> GetProductByCategory(Guid c...
    method GetProductByPartNumber (line 50) | public async Task<IEnumerable<MstProduct>> GetProductByPartNumber(stri...
    method GetProducts (line 60) | public async Task<IEnumerable<MstProduct>> GetProducts()

FILE: src/Pos.Product.WebApi/ApplicationBootsraper.cs
  class ApplicationBootsraper (line 24) | public static class ApplicationBootsraper
    method InitBootsraper (line 26) | public static IServiceCollection InitBootsraper(this IServiceCollectio...
    method InitMapperProfile (line 59) | public static IServiceCollection InitMapperProfile(this IServiceCollec...
    method InitAppServices (line 73) | public static IServiceCollection InitAppServices(this IServiceCollecti...
    method InitEventHandlers (line 86) | public static IServiceCollection InitEventHandlers(this IServiceCollec...

FILE: src/Pos.Product.WebApi/Controllers/ProductCategoryController.cs
  class ProductCategoryController (line 17) | [Produces("application/json")]
    method ProductCategoryController (line 29) | public ProductCategoryController(IMapper mapper,
    method Get (line 44) | [HttpGet]
    method Get (line 61) | [HttpGet("{id}")]
    method Post (line 78) | [HttpPost]
    method Put (line 94) | [HttpPut]
    method Delete (line 110) | [HttpDelete("{id}")]

FILE: src/Pos.Product.WebApi/Controllers/ProductController.cs
  class ProductController (line 17) | [Produces("application/json")]
    method ProductController (line 29) | public ProductController(IMapper mapper,
    method Get (line 44) | [HttpGet]
    method Get (line 61) | [HttpGet("{id}")]
    method Post (line 78) | [HttpPost]
    method Put (line 94) | [HttpPut]
    method Delete (line 110) | [HttpDelete("{id}")]

FILE: src/Pos.Product.WebApi/Controllers/ValuesController.cs
  class ValuesController (line 9) | [Route("api/[controller]")]
    method Get (line 14) | [HttpGet]
    method Get (line 21) | [HttpGet("{id}")]
    method Post (line 28) | [HttpPost]
    method Put (line 34) | [HttpPut("{id}")]
    method Delete (line 40) | [HttpDelete("{id}")]

FILE: src/Pos.Product.WebApi/Mapping/CommandToEventMapperProfile.cs
  class CommandToEventMapperProfile (line 9) | public class CommandToEventMapperProfile : Profile
    method CommandToEventMapperProfile (line 11) | public CommandToEventMapperProfile()

FILE: src/Pos.Product.WebApi/Mapping/DomainToCommandMapperProfile.cs
  class DomainToCommandMapperProfile (line 13) | public class DomainToCommandMapperProfile : Profile
    method DomainToCommandMapperProfile (line 15) | public DomainToCommandMapperProfile()

FILE: src/Pos.Product.WebApi/Mapping/EventToDomainMapperProfile.cs
  class EventToDomainMapperProfile (line 8) | public class EventToDomainMapperProfile : Profile
    method EventToDomainMapperProfile (line 10) | public EventToDomainMapperProfile()

FILE: src/Pos.Product.WebApi/Program.cs
  class Program (line 13) | public class Program
    method Main (line 15) | public static void Main(string[] args)
    method CreateWebHostBuilder (line 20) | public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>

FILE: src/Pos.Product.WebApi/SeedingData/DbSeeder.cs
  class DbSeeder (line 12) | public static class DbSeeder
    method Up (line 14) | public static void Up(IServiceProvider serviceProvider)

FILE: src/Pos.Product.WebApi/Startup.cs
  class Startup (line 10) | public class Startup
    method Startup (line 12) | public Startup(IConfiguration configuration)
    method ConfigureServices (line 20) | public void ConfigureServices(IServiceCollection services)
    method Configure (line 31) | public void Configure(IApplicationBuilder app, IHostingEnvironment env)

FILE: src/Pos.Report.Domain/Class1.cs
  class Class1 (line 5) | public class Class1

FILE: src/Pos.Report.Infrastructure/Class1.cs
  class Class1 (line 5) | public class Class1

FILE: src/Pos.Report.WebApi/Controllers/ValuesController.cs
  class ValuesController (line 9) | [Route("api/[controller]")]
    method Get (line 14) | [HttpGet]
    method Get (line 21) | [HttpGet("{id}")]
    method Post (line 28) | [HttpPost]
    method Put (line 34) | [HttpPut("{id}")]
    method Delete (line 40) | [HttpDelete("{id}")]

FILE: src/Pos.Report.WebApi/Program.cs
  class Program (line 13) | public class Program
    method Main (line 15) | public static void Main(string[] args)
    method CreateWebHostBuilder (line 20) | public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>

FILE: src/Pos.Report.WebApi/Startup.cs
  class Startup (line 15) | public class Startup
    method Startup (line 17) | public Startup(IConfiguration configuration)
    method ConfigureServices (line 25) | public void ConfigureServices(IServiceCollection services)
    method Configure (line 31) | public void Configure(IApplicationBuilder app, IHostingEnvironment env)

FILE: src/Pos.WebApplication/ApplicationBootsraper.cs
  class ApplicationBootsraper (line 12) | public static class ApplicationBootsraper
    method InitBootsraper (line 14) | public static IServiceCollection InitBootsraper(this IServiceCollectio...
    method SetHealtCheck (line 20) | public static IServiceCollection SetHealtCheck(this IServiceCollection...

FILE: src/Pos.WebApplication/Areas/Master/Controllers/CustomerController.cs
  class CustomerController (line 9) | [Area("Master")]
    method Index (line 12) | public IActionResult Index()

FILE: src/Pos.WebApplication/Areas/Master/Controllers/ProductCategoryController.cs
  class ProductCategoryController (line 9) | [Area("Master")]
    method Index (line 12) | public IActionResult Index()

FILE: src/Pos.WebApplication/Areas/Master/Controllers/ProductController.cs
  class ProductController (line 9) | [Area("Master")]
    method Index (line 12) | public IActionResult Index()

FILE: src/Pos.WebApplication/Areas/Order/Controllers/ItemController.cs
  class ItemController (line 9) | [Area("Order")]
    method Index (line 12) | public IActionResult Index()

FILE: src/Pos.WebApplication/Areas/Reports/Controllers/TransactionController.cs
  class TransactionController (line 9) | [Area("Reports")]
    method Index (line 12) | public IActionResult Index()

FILE: src/Pos.WebApplication/Controllers/AuthController.cs
  class AuthController (line 11) | public class AuthController : Controller
    method Index (line 13) | public IActionResult Index()
    method Privacy (line 18) | public IActionResult Privacy()
    method Error (line 23) | [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, No...

FILE: src/Pos.WebApplication/Controllers/HomeController.cs
  class HomeController (line 11) | public class HomeController : Controller
    method Index (line 13) | public IActionResult Index()
    method Privacy (line 18) | public IActionResult Privacy()
    method Error (line 23) | [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, No...

FILE: src/Pos.WebApplication/HealthChecks/CustomerServicesHc.cs
  class CustomerServicesHc (line 13) | public class CustomerServicesHc : IHealthCheck
    method CustomerServicesHc (line 17) | public CustomerServicesHc(IHttpCheck httpCheck, IConfiguration configu...
    method CheckHealthAsync (line 23) | public async Task<HealthCheckResult> CheckHealthAsync(

FILE: src/Pos.WebApplication/HealthChecks/OrderServicesHc .cs
  class OrderServicesHc (line 12) | public class OrderServicesHc : IHealthCheck
    method OrderServicesHc (line 16) | public OrderServicesHc(IHttpCheck httpCheck, IConfiguration configurat...
    method CheckHealthAsync (line 22) | public async Task<HealthCheckResult> CheckHealthAsync(

FILE: src/Pos.WebApplication/HealthChecks/ProductServicesHc.cs
  class ProductServicesHc (line 13) | public class ProductServicesHc : IHealthCheck
    method ProductServicesHc (line 17) | public ProductServicesHc(IHttpCheck httpCheck, IConfiguration configur...
    method CheckHealthAsync (line 23) | public async Task<HealthCheckResult> CheckHealthAsync(

FILE: src/Pos.WebApplication/HealthChecks/ReportServicesHc.cs
  class ReportServicesHc (line 13) | public class ReportServicesHc : IHealthCheck
    method ReportServicesHc (line 17) | public ReportServicesHc(IHttpCheck httpCheck, IConfiguration configura...
    method CheckHealthAsync (line 23) | public async Task<HealthCheckResult> CheckHealthAsync(

FILE: src/Pos.WebApplication/Models/ErrorViewModel.cs
  class ErrorViewModel (line 5) | public class ErrorViewModel

FILE: src/Pos.WebApplication/Models/MenuItem.cs
  class MenuItem (line 8) | public class MenuItem

FILE: src/Pos.WebApplication/Program.cs
  class Program (line 13) | public class Program
    method Main (line 15) | public static void Main(string[] args)
    method CreateWebHostBuilder (line 20) | public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>

FILE: src/Pos.WebApplication/Startup.cs
  class Startup (line 17) | public class Startup
    method Startup (line 19) | public Startup(IConfiguration configuration)
    method ConfigureServices (line 27) | public void ConfigureServices(IServiceCollection services)
    method Configure (line 45) | public void Configure(IApplicationBuilder app, IHostingEnvironment env)

FILE: src/Pos.WebApplication/Utilities/HttpCheck.cs
  class HttpCheck (line 10) | public class HttpCheck : IHttpCheck
    method CheckHealthAsync (line 12) | public async Task<HealthCheckResult> CheckHealthAsync(string url)

FILE: src/Pos.WebApplication/Utilities/IHttpCheck.cs
  type IHttpCheck (line 9) | public interface IHttpCheck
    method CheckHealthAsync (line 11) | Task<HealthCheckResult> CheckHealthAsync(string url);

FILE: src/Pos.WebApplication/ViewComponents/FooterViewComponent.cs
  class FooterViewComponent (line 9) | public class FooterViewComponent : ViewComponent
    method InvokeAsync (line 11) | public async Task<IViewComponentResult> InvokeAsync()

FILE: src/Pos.WebApplication/ViewComponents/HeaderViewComponent.cs
  class HeaderViewComponent (line 9) | public class HeaderViewComponent : ViewComponent
    method InvokeAsync (line 11) | public async Task<IViewComponentResult> InvokeAsync()

FILE: src/Pos.WebApplication/ViewComponents/MenuViewComponent.cs
  class MenuViewComponent (line 10) | public class MenuViewComponent : ViewComponent
    method MenuViewComponent (line 14) | public MenuViewComponent()
    method InvokeAsync (line 34) | public async Task<IViewComponentResult> InvokeAsync()

FILE: src/Pos.WebApplication/ViewComponents/RightSidebarViewComponent.cs
  class RightSidebarViewComponent (line 9) | public class RightSidebarViewComponent : ViewComponent
    method InvokeAsync (line 11) | public async Task<IViewComponentResult> InvokeAsync()

FILE: src/Pos.WebApplication/ViewComponents/ThemeScriptsViewComponent.cs
  class ThemeScriptsViewComponent (line 9) | public class ThemeScriptsViewComponent : ViewComponent
    method InvokeAsync (line 11) | public async Task<IViewComponentResult> InvokeAsync()

FILE: src/Pos.WebApplication/ViewComponents/TopBarViewComponent.cs
  class TopBarViewComponent (line 9) | public class TopBarViewComponent : ViewComponent
    method InvokeAsync (line 11) | public async Task<IViewComponentResult> InvokeAsync()

FILE: src/Pos.WebApplication/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js
  function _defineProperties (line 14) | function _defineProperties(target, props) {
  function _createClass (line 24) | function _createClass(Constructor, protoProps, staticProps) {
  function _defineProperty (line 30) | function _defineProperty(obj, key, value) {
  function _objectSpread (line 45) | function _objectSpread(target) {
  function _inheritsLoose (line 64) | function _inheritsLoose(subClass, superClass) {
  function toType (line 86) | function toType(obj) {
  function getSpecialTransitionEndEvent (line 90) | function getSpecialTransitionEndEvent() {
  function transitionEndEmulator (line 104) | function transitionEndEmulator(duration) {
  function setTransitionEndSupport (line 119) | function setTransitionEndSupport() {
  function Alert (line 260) | function Alert(element) {
  function Button (line 428) | function Button(element) {
  function Carousel (line 635) | function Carousel(element, config) {
  function Collapse (line 1195) | function Collapse(element, config) {
  function microtaskDebounce (line 1539) | function microtaskDebounce(fn) {
  function taskDebounce (line 1553) | function taskDebounce(fn) {
  function isFunction (line 1586) | function isFunction(functionToCheck) {
  function getStyleComputedProperty (line 1598) | function getStyleComputedProperty(element, property) {
  function getParentNode (line 1615) | function getParentNode(element) {
  function getScrollParent (line 1629) | function getScrollParent(element) {
  function isIE (line 1667) | function isIE(version) {
  function getOffsetParent (line 1684) | function getOffsetParent(element) {
  function isOffsetContainer (line 1713) | function isOffsetContainer(element) {
  function getRoot (line 1729) | function getRoot(node) {
  function findCommonOffsetParent (line 1745) | function findCommonOffsetParent(element1, element2) {
  function getScroll (line 1789) | function getScroll(element) {
  function includeScroll (line 1813) | function includeScroll(rect, element) {
  function getBordersSize (line 1836) | function getBordersSize(styles, axis) {
  function getSize (line 1843) | function getSize(axis, body, html, computedStyle) {
  function getWindowSizes (line 1847) | function getWindowSizes(document) {
  function defineProperties (line 1865) | function defineProperties(target, props) {
  function getClientRect (line 1922) | function getClientRect(offsets) {
  function getBoundingClientRect (line 1936) | function getBoundingClientRect(element) {
  function getOffsetRectRelativeToArbitraryNode (line 1985) | function getOffsetRectRelativeToArbitraryNode(children, parent) {
  function getViewportOffsetRectRelativeToArtbitraryNode (line 2037) | function getViewportOffsetRectRelativeToArtbitraryNode(element) {
  function isFixed (line 2066) | function isFixed(element) {
  function getFixedPositionOffsetParent (line 2089) | function getFixedPositionOffsetParent(element) {
  function getBoundaries (line 2112) | function getBoundaries(popper, reference, padding, boundariesElement) {
  function getArea (line 2166) | function getArea(_ref) {
  function computeAutoPlacement (line 2182) | function computeAutoPlacement(placement, refRect, popper, reference, bou...
  function getReferenceOffsets (line 2243) | function getReferenceOffsets(state, popper, reference) {
  function getOuterSizes (line 2257) | function getOuterSizes(element) {
  function getOppositePlacement (line 2276) | function getOppositePlacement(placement) {
  function getPopperOffsets (line 2293) | function getPopperOffsets(popper, referenceOffsets, placement) {
  function find (line 2331) | function find(arr, check) {
  function findIndex (line 2350) | function findIndex(arr, prop, value) {
  function runModifiers (line 2375) | function runModifiers(modifiers, data, ends) {
  function update (line 2405) | function update() {
  function isModifierEnabled (line 2457) | function isModifierEnabled(modifiers, modifierName) {
  function getSupportedPropertyName (line 2472) | function getSupportedPropertyName(property) {
  function destroy (line 2491) | function destroy() {
  function getWindow (line 2521) | function getWindow(element) {
  function attachToScrollParents (line 2526) | function attachToScrollParents(scrollParent, event, callback, scrollPare...
  function setupEventListeners (line 2543) | function setupEventListeners(reference, options, state, updateBound) {
  function enableEventListeners (line 2563) | function enableEventListeners() {
  function removeEventListeners (line 2575) | function removeEventListeners(reference, state) {
  function disableEventListeners (line 2599) | function disableEventListeners() {
  function isNumeric (line 2613) | function isNumeric(n) {
  function setStyles (line 2625) | function setStyles(element, styles) {
  function setAttributes (line 2644) | function setAttributes(element, attributes) {
  function applyStyle (line 2664) | function applyStyle(data) {
  function applyStyleOnLoad (line 2693) | function applyStyleOnLoad(reference, popper, options, modifierOptions, s...
  function getRoundedOffsets (line 2730) | function getRoundedOffsets(data, shouldRound) {
  function computeStyle (line 2769) | function computeStyle(data, options) {
  function isModifierRequired (line 2870) | function isModifierRequired(modifiers, requestingName, requestedName) {
  function arrow (line 2895) | function arrow(data, options) {
  function getOppositeVariation (line 2977) | function getOppositeVariation(variation) {
  function clockwise (line 3032) | function clockwise(placement) {
  function flip (line 3053) | function flip(data, options) {
  function keepTogether (line 3143) | function keepTogether(data) {
  function toValue (line 3177) | function toValue(str, measurement, popperOffsets, referenceOffsets) {
  function parseOffset (line 3229) | function parseOffset(offset, popperOffsets, referenceOffsets, basePlacem...
  function offset (line 3305) | function offset(data, _ref) {
  function preventOverflow (line 3346) | function preventOverflow(data, options) {
  function shift (line 3417) | function shift(data) {
  function hide (line 3450) | function hide(data) {
  function inner (line 3488) | function inner(data) {
  function Popper (line 3939) | function Popper(reference, popper) {
  function Dropdown (line 4169) | function Dropdown(element, config) {
  function Modal (line 4674) | function Modal(element, config) {
  function allowedAttribute (line 5247) | function allowedAttribute(attr, allowedAttributeList) {
  function sanitizeHtml (line 5271) | function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
  function Tooltip (line 5408) | function Tooltip(element, config) {
  function Popover (line 6086) | function Popover() {
  function ScrollSpy (line 6273) | function ScrollSpy(element, config) {
  function Tab (line 6568) | function Tab(element) {
  function Toast (line 6805) | function Toast(element, config) {

FILE: src/Pos.WebApplication/wwwroot/lib/bootstrap/dist/js/bootstrap.js
  function _defineProperties (line 15) | function _defineProperties(target, props) {
  function _createClass (line 25) | function _createClass(Constructor, protoProps, staticProps) {
  function _defineProperty (line 31) | function _defineProperty(obj, key, value) {
  function _objectSpread (line 46) | function _objectSpread(target) {
  function _inheritsLoose (line 65) | function _inheritsLoose(subClass, superClass) {
  function toType (line 87) | function toType(obj) {
  function getSpecialTransitionEndEvent (line 91) | function getSpecialTransitionEndEvent() {
  function transitionEndEmulator (line 105) | function transitionEndEmulator(duration) {
  function setTransitionEndSupport (line 120) | function setTransitionEndSupport() {
  function Alert (line 261) | function Alert(element) {
  function Button (line 429) | function Button(element) {
  function Carousel (line 636) | function Carousel(element, config) {
  function Collapse (line 1196) | function Collapse(element, config) {
  function Dropdown (line 1591) | function Dropdown(element, config) {
  function Modal (line 2096) | function Modal(element, config) {
  function allowedAttribute (line 2669) | function allowedAttribute(attr, allowedAttributeList) {
  function sanitizeHtml (line 2693) | function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
  function Tooltip (line 2830) | function Tooltip(element, config) {
  function Popover (line 3508) | function Popover() {
  function ScrollSpy (line 3695) | function ScrollSpy(element, config) {
  function Tab (line 3990) | function Tab(element) {
  function Toast (line 4227) | function Toast(element, config) {

FILE: src/Pos.WebApplication/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js
  function setValidationValues (line 25) | function setValidationValues(options, ruleName, value) {
  function splitAndTrim (line 32) | function splitAndTrim(value) {
  function escapeAttributeValue (line 36) | function escapeAttributeValue(value) {
  function getModelPrefix (line 41) | function getModelPrefix(fieldName) {
  function appendModelPrefix (line 45) | function appendModelPrefix(value, prefix) {
  function onError (line 52) | function onError(error, inputElement) {  // 'this' is the form element
  function onErrors (line 69) | function onErrors(event, validator) {  // 'this' is the form element
  function onSuccess (line 83) | function onSuccess(error) {  // 'this' is the form element
  function onReset (line 99) | function onReset(event) {  // 'this' is the form element
  function validationInfo (line 124) | function validationInfo(form) {

FILE: src/Pos.WebApplication/wwwroot/lib/jquery-validation/dist/additional-methods.js
  function stripHtml (line 21) | function stripHtml( value ) {
  function isOdd (line 212) | function isOdd( n ) {

FILE: src/Pos.WebApplication/wwwroot/lib/jquery-validation/dist/jquery.validate.js
  function handle (line 70) | function handle() {
  function delegate (line 411) | function delegate( event ) {

FILE: src/Pos.WebApplication/wwwroot/lib/jquery/dist/jquery.js
  function DOMEval (line 97) | function DOMEval( code, doc, node ) {
  function toType (line 115) | function toType( obj ) {
  function isArrayLike (line 483) | function isArrayLike( obj ) {
  function Sizzle (line 715) | function Sizzle( selector, context, results, seed ) {
  function createCache (line 854) | function createCache() {
  function markFunction (line 872) | function markFunction( fn ) {
  function assert (line 881) | function assert( fn ) {
  function addHandle (line 903) | function addHandle( attrs, handler ) {
  function siblingCheck (line 918) | function siblingCheck( a, b ) {
  function createInputPseudo (line 944) | function createInputPseudo( type ) {
  function createButtonPseudo (line 955) | function createButtonPseudo( type ) {
  function createDisabledPseudo (line 966) | function createDisabledPseudo( disabled ) {
  function createPositionalPseudo (line 1022) | function createPositionalPseudo( fn ) {
  function testContext (line 1045) | function testContext( context ) {
  function setFilters (line 2127) | function setFilters() {}
  function toSelector (line 2198) | function toSelector( tokens ) {
  function addCombinator (line 2208) | function addCombinator( matcher, combinator, base ) {
  function elementMatcher (line 2272) | function elementMatcher( matchers ) {
  function multipleContexts (line 2286) | function multipleContexts( selector, contexts, results ) {
  function condense (line 2295) | function condense( unmatched, map, filter, context, xml ) {
  function setMatcher (line 2316) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
  function matcherFromTokens (line 2409) | function matcherFromTokens( tokens ) {
  function matcherFromGroupMatchers (line 2467) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
  function nodeName (line 2803) | function nodeName( elem, name ) {
  function winnow (line 2813) | function winnow( elements, qualifier, not ) {
  function sibling (line 3108) | function sibling( cur, dir ) {
  function createOptions (line 3195) | function createOptions( options ) {
  function Identity (line 3420) | function Identity( v ) {
  function Thrower (line 3423) | function Thrower( ex ) {
  function adoptValue (line 3427) | function adoptValue( value, resolve, reject, noValue ) {
  function resolve (line 3520) | function resolve( depth, deferred, handler, special ) {
  function completed (line 3885) | function completed() {
  function fcamelCase (line 3980) | function fcamelCase( all, letter ) {
  function camelCase (line 3987) | function camelCase( string ) {
  function Data (line 4004) | function Data() {
  function getData (line 4173) | function getData( data ) {
  function dataAttr (line 4198) | function dataAttr( elem, key, data ) {
  function adjustCSS (line 4511) | function adjustCSS( elem, prop, valueParts, tween ) {
  function getDefaultDisplay (line 4578) | function getDefaultDisplay( elem ) {
  function showHide (line 4601) | function showHide( elements, show ) {
  function getAll (line 4702) | function getAll( context, tag ) {
  function setGlobalEval (line 4727) | function setGlobalEval( elems, refElements ) {
  function buildFragment (line 4743) | function buildFragment( elems, context, scripts, selection, ignored ) {
  function returnTrue (line 4866) | function returnTrue() {
  function returnFalse (line 4870) | function returnFalse() {
  function safeActiveElement (line 4876) | function safeActiveElement() {
  function on (line 4882) | function on( elem, types, selector, data, fn, one ) {
  function manipulationTarget (line 5610) | function manipulationTarget( elem, content ) {
  function disableScript (line 5621) | function disableScript( elem ) {
  function restoreScript (line 5625) | function restoreScript( elem ) {
  function cloneCopyEvent (line 5635) | function cloneCopyEvent( src, dest ) {
  function fixInput (line 5670) | function fixInput( src, dest ) {
  function domManip (line 5683) | function domManip( collection, args, callback, ignored ) {
  function remove (line 5773) | function remove( elem, selector, keepData ) {
  function computeStyleTests (line 6066) | function computeStyleTests() {
  function roundPixelMeasures (line 6108) | function roundPixelMeasures( measure ) {
  function curCSS (line 6153) | function curCSS( elem, name, computed ) {
  function addGetHookIf (line 6206) | function addGetHookIf( conditionFn, hookFn ) {
  function vendorPropName (line 6243) | function vendorPropName( name ) {
  function finalPropName (line 6264) | function finalPropName( name ) {
  function setPositiveNumber (line 6272) | function setPositiveNumber( elem, value, subtract ) {
  function boxModelAdjustment (line 6284) | function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, ...
  function getWidthOrHeight (line 6349) | function getWidthOrHeight( elem, dimension, extra ) {
  function Tween (line 6682) | function Tween( elem, options, prop, end, easing ) {
  function schedule (line 6805) | function schedule() {
  function createFxNow (line 6818) | function createFxNow() {
  function genFx (line 6826) | function genFx( type, includeWidth ) {
  function createTween (line 6846) | function createTween( value, prop, animation ) {
  function defaultPrefilter (line 6860) | function defaultPrefilter( elem, props, opts ) {
  function propFilter (line 7032) | function propFilter( props, specialEasing ) {
  function Animation (line 7069) | function Animation( elem, properties, options ) {
  function stripAndCollapse (line 7784) | function stripAndCollapse( value ) {
  function getClass (line 7790) | function getClass( elem ) {
  function classesToArray (line 7794) | function classesToArray( value ) {
  function buildParams (line 8416) | function buildParams( prefix, obj, traditional, add ) {
  function addToPrefiltersOrTransports (line 8566) | function addToPrefiltersOrTransports( structure ) {
  function inspectPrefiltersOrTransports (line 8600) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
  function ajaxExtend (line 8629) | function ajaxExtend( target, src ) {
  function ajaxHandleResponses (line 8649) | function ajaxHandleResponses( s, jqXHR, responses ) {
  function ajaxConvert (line 8707) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
  function done (line 9220) | function done( status, nativeStatusText, responses, headers ) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/js/fastclick.js
  function FastClick (line 23) | function FastClick(layer, options) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/js/jquery.app.js
  function executeFunctionByName (line 206) | function executeFunctionByName(functionName, context /*, args */) {
  function resizeitems (line 262) | function resizeitems(){
  function initscrolls (line 270) | function initscrolls(){
  function toggle_slimscroll (line 287) | function toggle_slimscroll(item){

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/js/jquery.blockUI.js
  function setup (line 19) | function setup($) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/js/jquery.nicescroll.js
  function k (line 9) | function k(){var d=b.win;if("zIndex"in d)return d.zIndex();for(;0<d.leng...
  function l (line 9) | function l(d,c,f){c=d.css(c);d=parseFloat(c);return isNaN(d)?(d=u[c]||0,...
  function q (line 9) | function q(d,c,f,g){b._bind(d,c,function(b){b=b?b:window.event;var g={or...
  function t (line 10) | function t(d,c,f){var g,e;0==d.deltaMode?(g=-Math.floor(d.deltaX*(b.opt....
  function e (line 93) | function e(){if(b.cancelAnimationFrame)return!0;b.scrollrunning=!0;if(p=...

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/js/jquery.slimscroll.js
  function _onWheel (line 318) | function _onWheel(e)
  function scrollContent (line 340) | function scrollContent(y, isWheel, isJump)
  function attachWheel (line 389) | function attachWheel(target)
  function getBarHeight (line 402) | function getBarHeight()
  function showBar (line 413) | function showBar()
  function hideBar (line 448) | function hideBar()

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/js/waves.js
  function isWindow (line 10) | function isWindow(obj) {
  function getWindow (line 14) | function getWindow(elem) {
  function offset (line 18) | function offset(elem) {
  function convertStyle (line 35) | function convertStyle(obj) {
  function getWavesEffectElement (line 246) | function getWavesEffectElement(e) {
  function showEffect (line 271) | function showEffect(e) {
  function t (line 338) | function t(e){var t=e.length,r=$.type(e);return"function"===r||$.isWindo...
  function n (line 338) | function n(e,r){var a=r||[];return null!=e&&(t(Object(e))?!function(e,t)...
  function e (line 338) | function e(){for(var e=this.offsetParent||document;e&&"html"===!e.nodeTy...
  function n (line 338) | function n(e){for(var t=-1,r=e?e.length:0,a=[];++t<r;){var n=e[t];n&&a.p...
  function o (line 338) | function o(e){return g.isWrapped(e)?e=[].slice.call(e):g.isNode(e)&&(e=[...
  function i (line 338) | function i(e){var t=$.data(e,"velocity");return null===t?a:t}
  function s (line 338) | function s(e){return function(t){return Math.round(t*e)*(1/e)}}
  function l (line 338) | function l(e,r,a,n){function o(e,t){return 1-3*t+3*e}function i(e,t){ret...
  function u (line 338) | function u(e,t){var r=e;return g.isString(e)?v.Easings[e]||(r=!1):r=g.is...
  function c (line 338) | function c(e){if(e){var t=(new Date).getTime(),r=v.State.calls.length;r>...
  function p (line 338) | function p(e,t){if(!v.State.calls[e])return!1;for(var r=v.State.calls[e]...
  function e (line 338) | function e(e){return-e.tension*e.x-e.friction*e.v}
  function t (line 338) | function t(t,r,a){var n={x:t.x+a.dx*r,v:t.v+a.dv*r,tension:t.tension,fri...
  function r (line 338) | function r(r,a){var n={dx:r.v,dv:e(r)},o=t(r,.5*a,n),i=t(r,.5*a,o),s=t(r...
  function s (line 338) | function s(e,r){function n(){u&&x.setPropertyValue(e,"display","none")}v...
  function t (line 338) | function t(t){return parseFloat(x.getPropertyValue(e,t))}
  function e (line 338) | function e(){return l?T.promise||null:f}
  function n (line 338) | function n(){function e(e){function p(e,t){var r=a,i=a,s=a;return g.isAr...
  function k (line 339) | function k(a,b,c){return setTimeout(q(a,c),b)}
  function l (line 339) | function l(a,b,c){return Array.isArray(a)?(m(a,c[b],c),!0):!1}
  function m (line 339) | function m(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.lengt...
  function n (line 339) | function n(a,b,c){for(var e=Object.keys(b),f=0;f<e.length;)(!c||c&&a[e[f...
  function o (line 339) | function o(a,b){return n(a,b,!0)}
  function p (line 339) | function p(a,b,c){var e,d=b.prototype;e=a.prototype=Object.create(d),e.c...
  function q (line 339) | function q(a,b){return function(){return a.apply(b,arguments)}}
  function r (line 339) | function r(a,b){return typeof a==g?a.apply(b?b[0]||d:d,b):a}
  function s (line 339) | function s(a,b){return a===d?b:a}
  function t (line 339) | function t(a,b,c){m(x(b),function(b){a.addEventListener(b,c,!1)})}
  function u (line 339) | function u(a,b,c){m(x(b),function(b){a.removeEventListener(b,c,!1)})}
  function v (line 339) | function v(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1}
  function w (line 339) | function w(a,b){return a.indexOf(b)>-1}
  function x (line 339) | function x(a){return a.trim().split(/\s+/g)}
  function y (line 339) | function y(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;d<a.l...
  function z (line 339) | function z(a){return Array.prototype.slice.call(a,0)}
  function A (line 339) | function A(a,b,c){for(var d=[],e=[],f=0;f<a.length;){var g=b?a[f][b]:a[f...
  function B (line 339) | function B(a,b){for(var c,f,g=b[0].toUpperCase()+b.slice(1),h=0;h<e.leng...
  function D (line 339) | function D(){return C++}
  function E (line 339) | function E(a){var b=a.ownerDocument;return b.defaultView||b.parentWindow}
  function ab (line 339) | function ab(a,b){var c=this;this.manager=a,this.callback=b,this.element=...
  function bb (line 339) | function bb(a){var b,c=a.options.inputClass;return b=c?c:H?wb:I?Eb:G?Gb:...
  function cb (line 339) | function cb(a,b,c){var d=c.pointers.length,e=c.changedPointers.length,f=...
  function db (line 339) | function db(a,b){var c=a.session,d=b.pointers,e=d.length;c.firstInput||(...
  function eb (line 339) | function eb(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=...
  function fb (line 339) | function fb(a,b){var f,g,h,j,c=a.lastInterval||b,e=b.timeStamp-c.timeSta...
  function gb (line 339) | function gb(a){for(var b=[],c=0;c<a.pointers.length;)b[c]={clientX:h(a.p...
  function hb (line 339) | function hb(a){var b=a.length;if(1===b)return{x:h(a[0].clientX),y:h(a[0]...
  function ib (line 339) | function ib(a,b,c){return{x:b/a||0,y:c/a||0}}
  function jb (line 339) | function jb(a,b){return a===b?S:i(a)>=i(b)?a>0?T:U:b>0?V:W}
  function kb (line 339) | function kb(a,b,c){c||(c=$);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];retu...
  function lb (line 339) | function lb(a,b,c){c||(c=$);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];retu...
  function mb (line 339) | function mb(a,b){return lb(b[1],b[0],_)-lb(a[1],a[0],_)}
  function nb (line 339) | function nb(a,b){return kb(b[0],b[1],_)/kb(a[0],a[1],_)}
  function rb (line 339) | function rb(){this.evEl=pb,this.evWin=qb,this.allow=!0,this.pressed=!1,a...
  function wb (line 339) | function wb(){this.evEl=ub,this.evWin=vb,ab.apply(this,arguments),this.s...
  function Ab (line 339) | function Ab(){this.evTarget=yb,this.evWin=zb,this.started=!1,ab.apply(th...
  function Bb (line 339) | function Bb(a,b){var c=z(a.touches),d=z(a.changedTouches);return b&(Q|R)...
  function Eb (line 339) | function Eb(){this.evTarget=Db,this.targetIds={},ab.apply(this,arguments)}
  function Fb (line 339) | function Fb(a,b){var c=z(a.touches),d=this.targetIds;if(b&(O|P)&&1===c.l...
  function Gb (line 339) | function Gb(){ab.apply(this,arguments);var a=q(this.handler,this);this.t...
  function Pb (line 339) | function Pb(a,b){this.manager=a,this.set(b)}
  function Qb (line 339) | function Qb(a){if(w(a,Mb))return Mb;var b=w(a,Nb),c=w(a,Ob);return b&&c?...
  function Yb (line 339) | function Yb(a){this.id=D(),this.manager=null,this.options=o(a||{},this.d...
  function Zb (line 339) | function Zb(a){return a&Wb?"cancel":a&Ub?"end":a&Tb?"move":a&Sb?"start":""}
  function $b (line 339) | function $b(a){return a==W?"down":a==V?"up":a==T?"left":a==U?"right":""}
  function _b (line 339) | function _b(a,b){var c=b.manager;return c?c.get(a):a}
  function ac (line 339) | function ac(){Yb.apply(this,arguments)}
  function bc (line 339) | function bc(){ac.apply(this,arguments),this.pX=null,this.pY=null}
  function cc (line 339) | function cc(){ac.apply(this,arguments)}
  function dc (line 339) | function dc(){Yb.apply(this,arguments),this._timer=null,this._input=null}
  function ec (line 339) | function ec(){ac.apply(this,arguments)}
  function fc (line 339) | function fc(){ac.apply(this,arguments)}
  function gc (line 339) | function gc(){Yb.apply(this,arguments),this.pTime=!1,this.pCenter=!1,thi...
  function hc (line 339) | function hc(a,b){return b=b||{},b.recognizers=s(b.recognizers,hc.default...
  function kc (line 339) | function kc(a,b){b=b||{},this.options=o(b,hc.defaults),this.options.inpu...
  function lc (line 339) | function lc(a,b){var c=a.element;m(a.options.cssProps,function(a,d){c.st...
  function mc (line 339) | function mc(a,c){var d=b.createEvent("Event");d.initEvent(a,!0,!0),d.ges...
  function d (line 339) | function d(d){b.manager.emit(b.options.event+(d?Zb(c):""),a)}
  function hammerify (line 348) | function hammerify(el, options) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/pages/jquery.bs-table.js
  function invoiceFormatter (line 41) | function invoiceFormatter(value, row) {
  function nameFormatter (line 47) | function nameFormatter(value, row) {
  function dateFormatter (line 53) | function dateFormatter(value, row) {
  function statusFormatter (line 61) | function statusFormatter(value, row) {
  function priceSorter (line 79) | function priceSorter(a, b) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/pages/jquery.chartjs.init.js
  function generateChart (line 24) | function generateChart(){

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/pages/jquery.flot.init.js
  function showTooltip (line 18) | function showTooltip(x, y, contents) {
  function updatePlot (line 354) | function updatePlot() {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/pages/jquery.nvd3.init.js
  function sinAndCos (line 11) | function sinAndCos() {
  function randomData (line 124) | function randomData(groups, points) {
  function exampleData (line 257) | function exampleData() {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/autoNumeric/autoNumeric.js
  function getElementSelection (line 45) | function getElementSelection(that) {
  function setElementSelection (line 65) | function setElementSelection(that, start, end) {
  function runCallbacks (line 85) | function runCallbacks($this, settings) {
  function convertKeyToNumber (line 106) | function convertKeyToNumber(settings, key) {
  function autoCode (line 116) | function autoCode($this, settings) {
  function autoStrip (line 162) | function autoStrip(s, settings, strip_zero) {
  function negativeBracket (line 201) | function negativeBracket(s, settings) {
  function checkValue (line 218) | function checkValue(value, settings) {
  function fixNumber (line 250) | function fixNumber(s, aDec, aNeg) {
  function presentNumber (line 266) | function presentNumber(s, aDec, aNeg) {
  function checkEmpty (line 279) | function checkEmpty(iv, settings, signOnEmpty) {
  function autoGroup (line 295) | function autoGroup(iv, settings) {
  function autoRound (line 348) | function autoRound(iv, settings) { /** value to string */
  function truncateDecimal (line 467) | function truncateDecimal(s, settings, paste) {
  function autoCheck (line 492) | function autoCheck(s, settings) {
  function AutoNumericHolder (line 503) | function AutoNumericHolder(that, settings) {
  function autoGet (line 865) | function autoGet(obj) {
  function getHolder (line 879) | function getHolder($that, settings, update) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/autocomplete/jquery.mockjax.js
  function parseXML (line 23) | function parseXML(xml) {
  function trigger (line 53) | function trigger(s, type, args) {
  function isMockDataEqual (line 60) | function isMockDataEqual( mock, live ) {
  function isDefaultSetting (line 91) | function isDefaultSetting(handler, property) {
  function getMockForRequest (line 96) | function getMockForRequest( handler, requestSettings ) {
  function _xhrSend (line 137) | function _xhrSend(mockHandler, requestSettings, origSettings) {
  function xhr (line 227) | function xhr(mockHandler, requestSettings, origSettings, origHandler) {
  function processJsonpMock (line 277) | function processJsonpMock( requestSettings, mockHandler, origSettings ) {
  function processJsonpUrl (line 311) | function processJsonpUrl( requestSettings ) {
  function processJsonpRequest (line 323) | function processJsonpRequest( requestSettings, mockHandler, origSettings...
  function createJsonpCallback (line 361) | function createJsonpCallback( requestSettings, mockHandler, origSettings...
  function jsonpSuccess (line 392) | function jsonpSuccess(requestSettings, callbackContext, mockHandler) {
  function jsonpComplete (line 405) | function jsonpComplete(requestSettings, callbackContext) {
  function handleAjax (line 424) | function handleAjax( url, origSettings ) {
  function copyUrlParameters (line 500) | function copyUrlParameters(mockHandler, origSettings) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/bootstrap-maxlength/bootstrap-maxlength.js
  function inputLength (line 59) | function inputLength(input) {
  function truncateChars (line 86) | function truncateChars(input, maxlength) {
  function utf8Length (line 107) | function utf8Length(string) {
  function charsLeftThreshold (line 132) | function charsLeftThreshold(input, thereshold, maxlength) {
  function remainingChars (line 147) | function remainingChars(input, maxlength) {
  function showRemaining (line 157) | function showRemaining(currentInput, indicator) {
  function hideRemaining (line 169) | function hideRemaining(currentInput, indicator) {
  function updateMaxLengthHTML (line 183) | function updateMaxLengthHTML(currentInputText, maxLengthThisInput, typed...
  function manageRemainingVisibility (line 223) | function manageRemainingVisibility(remaining, currentInput, maxLengthCur...
  function getPosition (line 256) | function getPosition(currentInput) {
  function place (line 273) | function place(currentInput, maxLengthIndicator) {
  function placeWithCSS (line 352) | function placeWithCSS(placement, maxLengthIndicator) {
  function getMaxLength (line 387) | function getMaxLength(currentInput) {
  function firstInit (line 412) | function firstInit() {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/bootstrap-maxlength/src/bootstrap-maxlength.js
  function inputLength (line 59) | function inputLength(input) {
  function truncateChars (line 86) | function truncateChars(input, maxlength) {
  function utf8Length (line 107) | function utf8Length(string) {
  function charsLeftThreshold (line 132) | function charsLeftThreshold(input, thereshold, maxlength) {
  function remainingChars (line 147) | function remainingChars(input, maxlength) {
  function showRemaining (line 157) | function showRemaining(currentInput, indicator) {
  function hideRemaining (line 169) | function hideRemaining(currentInput, indicator) {
  function updateMaxLengthHTML (line 183) | function updateMaxLengthHTML(currentInputText, maxLengthThisInput, typed...
  function manageRemainingVisibility (line 223) | function manageRemainingVisibility(remaining, currentInput, maxLengthCur...
  function getPosition (line 256) | function getPosition(currentInput) {
  function place (line 273) | function place(currentInput, maxLengthIndicator) {
  function placeWithCSS (line 352) | function placeWithCSS(placement, maxLengthIndicator) {
  function getMaxLength (line 387) | function getMaxLength(currentInput) {
  function firstInit (line 412) | function firstInit() {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/bootstrap-select/js/bootstrap-select.js
  function normalizeToBase (line 215) | function normalizeToBase(text) {
  function htmlEscape (line 238) | function htmlEscape(html) {
  function Plugin (line 1660) | function Plugin(option, event) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/bootstrap-sweetalert/sweet-alert.js
  function handleKeyDown (line 334) | function handleKeyDown(e) {
  function handleOnBlur (line 395) | function handleOnBlur(e) {
  function setParameters (line 465) | function setParameters(params) {
  function colorLuminance (line 607) | function colorLuminance(hex, lum) {
  function extend (line 626) | function extend(a, b){
  function hexToRgb (line 636) | function hexToRgb(hex) {
  function setFocusStyle (line 642) | function setFocusStyle($button, bgColor) {
  function openModal (line 652) | function openModal() {
  function closeModal (line 675) | function closeModal() {
  function fixVerticalPosition (line 715) | function fixVerticalPosition() {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/c3/c3.js
  function API (line 12) | function API(owner) {
  function inherit (line 16) | function inherit(base, derived) {
  function Chart (line 31) | function Chart(config) {
  function ChartInternal (line 47) | function ChartInternal(api) {
  function callResizeFunctions (line 938) | function callResizeFunctions() {
  function find (line 1221) | function find() {
  function mouseout (line 2456) | function mouseout() {
  function isWithinRegions (line 2877) | function isWithinRegions(x, regions) {
  function generateM (line 2907) | function generateM(points) {
  function getTextBox (line 3950) | function getTextBox(textElement, id) {
  function updatePositions (line 3957) | function updatePositions(textElement, id, index) {
  function Axis (line 4148) | function Axis(owner) {
  function c3_axis (line 6680) | function c3_axis(d3, params) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/codemirror/js/codemirror.js
  function CodeMirror (line 62) | function CodeMirror(place, options) {
  function Display (line 137) | function Display(place, doc, input) {
  function loadMode (line 239) | function loadMode(cm) {
  function resetModeState (line 244) | function resetModeState(cm) {
  function wrappingChanged (line 255) | function wrappingChanged(cm) {
  function estimateHeight (line 273) | function estimateHeight(cm) {
  function estimateLineHeights (line 291) | function estimateLineHeights(cm) {
  function themeChanged (line 299) | function themeChanged(cm) {
  function guttersChanged (line 305) | function guttersChanged(cm) {
  function updateGutters (line 313) | function updateGutters(cm) {
  function updateGutterSpace (line 328) | function updateGutterSpace(cm) {
  function lineLength (line 336) | function lineLength(line) {
  function findMaxLine (line 355) | function findMaxLine(cm) {
  function setGuttersForLineNumbers (line 371) | function setGuttersForLineNumbers(options) {
  function measureForScrollbars (line 385) | function measureForScrollbars(cm) {
  function NativeScrollbars (line 401) | function NativeScrollbars(place, scroll, cm) {
  function maybeDisable (line 473) | function maybeDisable() {
  function NullScrollbars (line 494) | function NullScrollbars() {}
  function initScrollbars (line 505) | function initScrollbars(cm) {
  function updateScrollbars (line 527) | function updateScrollbars(cm, measure) {
  function updateScrollbarsInner (line 541) | function updateScrollbarsInner(cm, measure) {
  function visibleLines (line 564) | function visibleLines(display, doc, viewport) {
  function alignHorizontally (line 589) | function alignHorizontally(cm) {
  function maybeUpdateLineNumberWidth (line 608) | function maybeUpdateLineNumberWidth(cm) {
  function lineNumberFor (line 626) | function lineNumberFor(options, i) {
  function compensateForHScroll (line 633) | function compensateForHScroll(display) {
  function DisplayUpdate (line 639) | function DisplayUpdate(cm, viewport, force) {
  function maybeClipScrollbars (line 663) | function maybeClipScrollbars(cm) {
  function updateDisplayIfNeeded (line 677) | function updateDisplayIfNeeded(cm, update) {
  function postUpdateDisplay (line 749) | function postUpdateDisplay(cm, update) {
  function updateDisplaySimple (line 778) | function updateDisplaySimple(cm, viewport) {
  function setDocumentHeight (line 791) | function setDocumentHeight(cm, measure) {
  function updateHeightsInViewport (line 799) | function updateHeightsInViewport(cm) {
  function updateWidgetHeight (line 826) | function updateWidgetHeight(line) {
  function getDimensions (line 833) | function getDimensions(cm) {
  function patchDisplay (line 851) | function patchDisplay(cm, updateNumbersFrom, dims) {
  function updateLineForChanges (line 896) | function updateLineForChanges(cm, lineView, lineN, dims) {
  function ensureLineWrapped (line 909) | function ensureLineWrapped(lineView) {
  function updateLineBackground (line 920) | function updateLineBackground(lineView) {
  function getLineContent (line 934) | function getLineContent(cm, lineView) {
  function updateLineText (line 947) | function updateLineText(cm, lineView) {
  function updateLineClasses (line 962) | function updateLineClasses(lineView) {
  function updateLineGutter (line 972) | function updateLineGutter(cm, lineView, lineN, dims) {
  function updateLineWidgets (line 1012) | function updateLineWidgets(cm, lineView, dims) {
  function buildLineElement (line 1023) | function buildLineElement(cm, lineView, lineN, dims) {
  function insertLineWidgets (line 1037) | function insertLineWidgets(cm, lineView, dims) {
  function insertLineWidgetsFor (line 1043) | function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {
  function positionLineWidget (line 1059) | function positionLineWidget(widget, node, lineView, dims) {
  function copyPos (line 1089) | function copyPos(x) {return Pos(x.line, x.ch);}
  function maxPos (line 1090) | function maxPos(a, b) { return cmp(a, b) < 0 ? b : a; }
  function minPos (line 1091) | function minPos(a, b) { return cmp(a, b) < 0 ? a : b; }
  function ensureFocus (line 1095) | function ensureFocus(cm) {
  function applyTextInput (line 1104) | function applyTextInput(cm, inserted, deleted, sel, origin) {
  function handlePaste (line 1151) | function handlePaste(e, cm) {
  function triggerElectric (line 1161) | function triggerElectric(cm, inserted) {
  function copyableRanges (line 1185) | function copyableRanges(cm) {
  function disableBrowserMagic (line 1196) | function disableBrowserMagic(field) {
  function TextareaInput (line 1204) | function TextareaInput(cm) {
  function hiddenTextarea (line 1223) | function hiddenTextarea() {
  function prepareCopyCut (line 1264) | function prepareCopyCut(e) {
  function p (line 1405) | function p() {
  function prepareSelectAllHack (line 1509) | function prepareSelectAllHack() {
  function rehide (line 1522) | function rehide() {
  function ContentEditableInput (line 1566) | function ContentEditableInput(cm) {
  function onCopyCut (line 1623) | function onCopyCut(e) {
  function poll (line 1756) | function poll() {
  function posToDOM (line 1876) | function posToDOM(cm, pos) {
  function badPos (line 1892) | function badPos(pos, bad) { if (bad) pos.bad = true; return pos; }
  function domToPos (line 1894) | function domToPos(cm, node, offset) {
  function locateNodeInLineView (line 1913) | function locateNodeInLineView(lineView, node, offset) {
  function domTextBetween (line 1968) | function domTextBetween(cm, from, to, fromLine, toLine) {
  function Selection (line 2018) | function Selection(ranges, primIndex) {
  function Range (line 2055) | function Range(anchor, head) {
  function normalizeSelection (line 2070) | function normalizeSelection(ranges, primIndex) {
  function simpleSelection (line 2086) | function simpleSelection(anchor, head) {
  function clipLine (line 2092) | function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.fi...
  function clipPos (line 2093) | function clipPos(doc, pos) {
  function clipToLen (line 2099) | function clipToLen(pos, linelen) {
  function isLine (line 2105) | function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.si...
  function clipPosArray (line 2106) | function clipPosArray(doc, array) {
  function extendRange (line 2121) | function extendRange(doc, range, head, other) {
  function extendSelection (line 2140) | function extendSelection(doc, head, other, options) {
  function extendSelections (line 2146) | function extendSelections(doc, heads, options) {
  function replaceOneSelection (line 2154) | function replaceOneSelection(doc, i, range, options) {
  function setSimpleSelection (line 2161) | function setSimpleSelection(doc, anchor, head, options) {
  function filterSelectionChange (line 2167) | function filterSelectionChange(doc, sel, options) {
  function setSelectionReplaceHistory (line 2184) | function setSelectionReplaceHistory(doc, sel, options) {
  function setSelection (line 2195) | function setSelection(doc, sel, options) {
  function setSelectionNoUndo (line 2200) | function setSelectionNoUndo(doc, sel, options) {
  function setSelectionInner (line 2212) | function setSelectionInner(doc, sel) {
  function reCheckSelection (line 2226) | function reCheckSelection(doc) {
  function skipAtomicInSelection (line 2232) | function skipAtomicInSelection(doc, sel, bias, mayClear) {
  function skipAtomicInner (line 2247) | function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {
  function skipAtomic (line 2280) | function skipAtomic(doc, pos, oldPos, bias, mayClear) {
  function movePos (line 2293) | function movePos(doc, pos, dir, line) {
  function updateSelection (line 2307) | function updateSelection(cm) {
  function prepareSelection (line 2311) | function prepareSelection(cm, primary) {
  function drawSelectionCursor (line 2330) | function drawSelectionCursor(cm, head, output) {
  function drawSelectionRange (line 2349) | function drawSelectionRange(cm, range, output) {
  function restartBlink (line 2424) | function restartBlink(cm) {
  function startWorker (line 2440) | function startWorker(cm, time) {
  function highlightWorker (line 2445) | function highlightWorker(cm) {
  function findStartLine (line 2488) | function findStartLine(cm, n, precise) {
  function getStateBefore (line 2504) | function getStateBefore(cm, n, precise) {
  function paddingTop (line 2522) | function paddingTop(display) {return display.lineSpace.offsetTop;}
  function paddingVert (line 2523) | function paddingVert(display) {return display.mover.offsetHeight - displ...
  function paddingH (line 2524) | function paddingH(display) {
  function scrollGap (line 2533) | function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth; }
  function displayWidth (line 2534) | function displayWidth(cm) {
  function displayHeight (line 2537) | function displayHeight(cm) {
  function ensureLineHeights (line 2545) | function ensureLineHeights(cm, lineView, rect) {
  function mapFromLineView (line 2566) | function mapFromLineView(lineView, line, lineN) {
  function updateExternalMeasurement (line 2579) | function updateExternalMeasurement(cm, line) {
  function measureChar (line 2592) | function measureChar(cm, line, ch, bias) {
  function findViewForLine (line 2597) | function findViewForLine(cm, lineN) {
  function prepareMeasureForLine (line 2610) | function prepareMeasureForLine(cm, line) {
  function measureCharPrepared (line 2632) | function measureCharPrepared(cm, prepared, ch, bias, varHeight) {
  function nodeAndOffsetInLineMap (line 2654) | function nodeAndOffsetInLineMap(map, ch, bias) {
  function getUsefulRect (line 2691) | function getUsefulRect(rects, bias) {
  function measureCharInner (line 2701) | function measureCharInner(cm, prepared, ch, bias) {
  function maybeUpdateRectForZooming (line 2753) | function maybeUpdateRectForZooming(measure, rect) {
  function clearLineMeasurementCacheFor (line 2763) | function clearLineMeasurementCacheFor(lineView) {
  function clearLineMeasurementCache (line 2772) | function clearLineMeasurementCache(cm) {
  function clearCaches (line 2779) | function clearCaches(cm) {
  function pageScrollX (line 2786) | function pageScrollX() { return window.pageXOffset || (document.document...
  function pageScrollY (line 2787) | function pageScrollY() { return window.pageYOffset || (document.document...
  function intoCoordSystem (line 2793) | function intoCoordSystem(cm, lineObj, rect, context) {
  function fromCoordSystem (line 2815) | function fromCoordSystem(cm, coords, context) {
  function charCoords (line 2832) | function charCoords(cm, pos, context, lineObj, bias) {
  function cursorCoords (line 2840) | function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHei...
  function estimateCoords (line 2872) | function estimateCoords(cm, pos) {
  function PosWithInfo (line 2886) | function PosWithInfo(line, ch, outside, xRel) {
  function coordsChar (line 2895) | function coordsChar(cm, x, y) {
  function coordsCharInner (line 2916) | function coordsCharInner(cm, lineObj, lineNo, x, y) {
  function textHeight (line 2971) | function textHeight(display) {
  function charWidth (line 2991) | function charWidth(display) {
  function startOperation (line 3013) | function startOperation(cm) {
  function fireCallbacksForOps (line 3041) | function fireCallbacksForOps(group) {
  function endOperation (line 3058) | function endOperation(cm) {
  function endOperations (line 3073) | function endOperations(group) {
  function endOperation_R1 (line 3087) | function endOperation_R1(op) {
  function endOperation_W1 (line 3100) | function endOperation_W1(op) {
  function endOperation_R2 (line 3104) | function endOperation_R2(op) {
  function endOperation_W2 (line 3125) | function endOperation_W2(op) {
  function endOperation_finish (line 3150) | function endOperation_finish(op) {
  function runInOp (line 3197) | function runInOp(cm, f) {
  function operation (line 3204) | function operation(cm, f) {
  function methodOp (line 3214) | function methodOp(f) {
  function docMethodOp (line 3222) | function docMethodOp(f) {
  function LineView (line 3237) | function LineView(doc, line, lineN) {
  function buildViewArray (line 3249) | function buildViewArray(cm, from, to) {
  function regChange (line 3265) | function regChange(cm, from, to, lendiff) {
  function regLineChange (line 3330) | function regLineChange(cm, line, type) {
  function resetView (line 3344) | function resetView(cm) {
  function findViewIndex (line 3352) | function findViewIndex(cm, n) {
  function viewCuttingPoint (line 3363) | function viewCuttingPoint(cm, oldN, newN, dir) {
  function adjustView (line 3389) | function adjustView(cm, from, to) {
  function countDirtyView (line 3410) | function countDirtyView(cm) {
  function registerEventHandlers (line 3422) | function registerEventHandlers(cm) {
  function dragDropChanged (line 3528) | function dragDropChanged(cm, value, old) {
  function onResize (line 3542) | function onResize(cm) {
  function eventInWidget (line 3555) | function eventInWidget(display, e) {
  function posFromMouse (line 3568) | function posFromMouse(cm, e, liberal, forRect) {
  function onMouseDown (line 3589) | function onMouseDown(e) {
  function leftButtonDown (line 3631) | function leftButtonDown(cm, e, start) {
  function leftButtonStartDrag (line 3658) | function leftButtonStartDrag(cm, e, start, modifier) {
  function leftButtonSelect (line 3687) | function leftButtonSelect(cm, e, start, type, addNew) {
  function gutterEvent (line 3833) | function gutterEvent(cm, e, type, prevent) {
  function clickInGutter (line 3856) | function clickInGutter(cm, e) {
  function onDrop (line 3864) | function onDrop(e) {
  function onDragStart (line 3923) | function onDragStart(cm, e) {
  function onDragOver (line 3946) | function onDragOver(cm, e) {
  function clearDragCursor (line 3958) | function clearDragCursor(cm) {
  function setScrollTop (line 3969) | function setScrollTop(cm, val) {
  function setScrollLeft (line 3980) | function setScrollLeft(cm, val, isScroller) {
  function onScrollWheel (line 4024) | function onScrollWheel(cm, e) {
  function doHandleBinding (line 4102) | function doHandleBinding(cm, bound, dropShift) {
  function lookupKeyForEditor (line 4122) | function lookupKeyForEditor(cm, name, handle) {
  function dispatchKey (line 4132) | function dispatchKey(cm, name, e, handle) {
  function handleKeyBinding (line 4164) | function handleKeyBinding(cm, e) {
  function handleCharBinding (line 4183) | function handleCharBinding(cm, e, ch) {
  function onKeyDown (line 4189) | function onKeyDown(e) {
  function showCrossHair (line 4210) | function showCrossHair(cm) {
  function onKeyUp (line 4225) | function onKeyUp(e) {
  function onKeyPress (line 4230) | function onKeyPress(e) {
  function delayBlurEvent (line 4243) | function delayBlurEvent(cm) {
  function onFocus (line 4253) | function onFocus(cm) {
  function onBlur (line 4272) | function onBlur(cm) {
  function onContextMenu (line 4289) | function onContextMenu(cm, e) {
  function contextMenuInGutter (line 4295) | function contextMenuInGutter(cm, e) {
  function adjustForChange (line 4312) | function adjustForChange(pos, change) {
  function computeSelAfterChange (line 4321) | function computeSelAfterChange(doc, change) {
  function offsetPos (line 4331) | function offsetPos(pos, old, nw) {
  function computeReplacedSel (line 4340) | function computeReplacedSel(doc, changes, hint) {
  function filterChange (line 4360) | function filterChange(doc, change, update) {
  function makeChange (line 4384) | function makeChange(doc, change, ignoreReadOnly) {
  function makeChangeInner (line 4406) | function makeChangeInner(doc, change) {
  function makeChangeFromHistory (line 4424) | function makeChangeFromHistory(doc, type, allowSelectionOnly) {
  function shiftDoc (line 4490) | function shiftDoc(doc, distance) {
  function makeChangeSingleDoc (line 4506) | function makeChangeSingleDoc(doc, change, selAfter, spans) {
  function makeChangeSingleDocInEditor (line 4539) | function makeChangeSingleDocInEditor(cm, change, spans) {
  function replaceRange (line 4598) | function replaceRange(doc, code, from, to, origin) {
  function maybeScrollWindow (line 4609) | function maybeScrollWindow(cm, coords) {
  function scrollPosIntoView (line 4629) | function scrollPosIntoView(cm, pos, end, margin) {
  function scrollIntoView (line 4653) | function scrollIntoView(cm, x1, y1, x2, y2) {
  function calculateScrollPos (line 4663) | function calculateScrollPos(cm, x1, y1, x2, y2) {
  function addToScrollPos (line 4693) | function addToScrollPos(cm, left, top) {
  function ensureCursorVisible (line 4703) | function ensureCursorVisible(cm) {
  function resolveScrollToPos (line 4717) | function resolveScrollToPos(cm) {
  function indentLine (line 4737) | function indentLine(cm, n, how, aggressive) {
  function changeLine (line 4799) | function changeLine(doc, handle, changeType, op) {
  function deleteNearSelection (line 4810) | function deleteNearSelection(cm, compute) {
  function findPosH (line 4842) | function findPosH(doc, pos, dir, unit, visually) {
  function findPosV (line 4894) | function findPosV(cm, pos, dir, unit) {
  function interpret (line 5315) | function interpret(val) {
  function option (line 5371) | function option(name, deflt, handle, notOnInit) {
  function normalizeKeyName (line 5838) | function normalizeKeyName(name) {
  function getKeyMap (line 5924) | function getKeyMap(val) {
  function save (line 5945) | function save() {textarea.value = cm.getValue();}
  function markText (line 6195) | function markText(doc, from, to, options, type) {
  function markTextShared (line 6288) | function markTextShared(doc, from, to, options, type) {
  function findSharedMarkers (line 6303) | function findSharedMarkers(doc) {
  function copySharedMarkers (line 6308) | function copySharedMarkers(doc, markers) {
  function detachSharedMarkers (line 6320) | function detachSharedMarkers(markers) {
  function MarkedSpan (line 6336) | function MarkedSpan(marker, from, to) {
  function getMarkedSpanFor (line 6342) | function getMarkedSpanFor(spans, marker) {
  function removeMarkedSpan (line 6350) | function removeMarkedSpan(spans, span) {
  function addMarkedSpan (line 6356) | function addMarkedSpan(line, span) {
  function markedSpansBefore (line 6365) | function markedSpansBefore(old, startCh, isInsert) {
  function markedSpansAfter (line 6376) | function markedSpansAfter(old, endCh, isInsert) {
  function stretchSpansOverChange (line 6395) | function stretchSpansOverChange(doc, change) {
  function clearEmptySpans (line 6457) | function clearEmptySpans(spans) {
  function mergeOldSpans (line 6471) | function mergeOldSpans(doc, change) {
  function removeReadOnlyRanges (line 6494) | function removeReadOnlyRanges(doc, from, to) {
  function detachMarkedSpans (line 6523) | function detachMarkedSpans(line) {
  function attachMarkedSpans (line 6530) | function attachMarkedSpans(line, spans) {
  function extraLeft (line 6539) | function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0; }
  function extraRight (line 6540) | function extraRight(marker) { return marker.inclusiveRight ? 1 : 0; }
  function compareCollapsedMarkers (line 6545) | function compareCollapsedMarkers(a, b) {
  function collapsedSpanAtSide (line 6558) | function collapsedSpanAtSide(line, start) {
  function collapsedSpanAtStart (line 6568) | function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, t...
  function collapsedSpanAtEnd (line 6569) | function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, fal...
  function conflictingCollapsedRange (line 6574) | function conflictingCollapsedRange(doc, lineNo, from, to, marker) {
  function visualLine (line 6594) | function visualLine(line) {
  function visualLineContinued (line 6603) | function visualLineContinued(line) {
  function visualLineNo (line 6614) | function visualLineNo(doc, lineN) {
  function visualLineEndNo (line 6621) | function visualLineEndNo(doc, lineN) {
  function lineIsHidden (line 6633) | function lineIsHidden(doc, line) {
  function lineIsHiddenInner (line 6644) | function lineIsHiddenInner(doc, line, span) {
  function adjustScrollWhenAboveVisible (line 6672) | function adjustScrollWhenAboveVisible(cm, line, diff) {
  function widgetHeight (line 6701) | function widgetHeight(widget) {
  function addLineWidget (line 6716) | function addLineWidget(doc, handle, node, options) {
  function updateLine (line 6751) | function updateLine(line, text, markedSpans, estimateHeight) {
  function cleanUpLine (line 6763) | function cleanUpLine(line) {
  function extractLineClasses (line 6768) | function extractLineClasses(type, output) {
  function callBlankLine (line 6782) | function callBlankLine(mode, state) {
  function readToken (line 6789) | function readToken(mode, stream, state, inner) {
  function takeToken (line 6799) | function takeToken(cm, pos, precise, asArray) {
  function runMode (line 6821) | function runMode(cm, text, mode, state, f, lineClasses, forceToEnd) {
  function highlightLine (line 6862) | function highlightLine(cm, line, state, forceToEnd) {
  function getLineStyles (line 6900) | function getLineStyles(cm, line, updateFrontier) {
  function processLine (line 6916) | function processLine(cm, text, state, startAt) {
  function interpretTokenStyle (line 6931) | function interpretTokenStyle(style, options) {
  function buildLineContent (line 6943) | function buildLineContent(cm, lineView) {
  function defaultSpecialCharPlaceholder (line 7001) | function defaultSpecialCharPlaceholder(ch) {
  function buildToken (line 7010) | function buildToken(builder, text, style, startStyle, endStyle, title, c...
  function splitSpaces (line 7069) | function splitSpaces(text, trailingBefore) {
  function buildTokenBadBidi (line 7084) | function buildTokenBadBidi(inner, order) {
  function buildCollapsedSpan (line 7103) | function buildCollapsedSpan(builder, size, marker, ignoreWidget) {
  function insertLineContent (line 7121) | function insertLineContent(line, builder, styles) {
  function isWholeLineUpdate (line 7194) | function isWholeLineUpdate(doc, change) {
  function updateDoc (line 7200) | function updateDoc(doc, change, markedSpans, estimateHeight) {
  function LeafChunk (line 7263) | function LeafChunk(lines) {
  function BranchChunk (line 7303) | function BranchChunk(children) {
  function linkedDocs (line 7776) | function linkedDocs(doc, f, sharedHistOnly) {
  function attachDoc (line 7791) | function attachDoc(cm, doc) {
  function getLine (line 7805) | function getLine(doc, n) {
  function getBetween (line 7820) | function getBetween(doc, start, end) {
  function getLines (line 7832) | function getLines(doc, from, to) {
  function updateLineHeight (line 7840) | function updateLineHeight(line, height) {
  function lineNo (line 7847) | function lineNo(line) {
  function lineAtHeight (line 7861) | function lineAtHeight(chunk, h) {
  function heightAtLine (line 7882) | function heightAtLine(lineObj) {
  function getOrder (line 7904) | function getOrder(line) {
  function History (line 7912) | function History(startGen) {
  function historyChangeFromChange (line 7929) | function historyChangeFromChange(doc, change) {
  function clearSelectionEvents (line 7938) | function clearSelectionEvents(array) {
  function lastChangeEvent (line 7948) | function lastChangeEvent(hist, force) {
  function addChangeToHistory (line 7963) | function addChangeToHistory(doc, change, selAfter, opId) {
  function selectionEventCanBeMerged (line 8005) | function selectionEventCanBeMerged(doc, origin, prev, sel) {
  function addSelectionToHistory (line 8018) | function addSelectionToHistory(doc, sel, opId, options) {
  function pushSelectionToHistory (line 8040) | function pushSelectionToHistory(sel, dest) {
  function attachLocalSpans (line 8047) | function attachLocalSpans(doc, change, from, to) {
  function removeClearedSpans (line 8058) | function removeClearedSpans(spans) {
  function getOldSpans (line 8068) | function getOldSpans(doc, change) {
  function copyHistoryArray (line 8078) | function copyHistoryArray(events, newGroup, instantiateSel) {
  function rebaseHistSelSingle (line 8103) | function rebaseHistSelSingle(pos, from, to, diff) {
  function rebaseHistArray (line 8119) | function rebaseHistArray(array, from, to, diff) {
  function rebaseHist (line 8147) | function rebaseHist(hist, change) {
  function e_defaultPrevented (line 8166) | function e_defaultPrevented(e) {
  function e_target (line 8171) | function e_target(e) {return e.target || e.srcElement;}
  function e_button (line 8172) | function e_button(e) {
  function getHandlers (line 8201) | function getHandlers(emitter, type, copy) {
  function signalLater (line 8235) | function signalLater(emitter, type /*, values...*/) {
  function fireOrphanDelayed (line 8252) | function fireOrphanDelayed() {
  function signalDOMEvent (line 8261) | function signalDOMEvent(cm, e, override) {
  function signalCursorActivity (line 8268) | function signalCursorActivity(cm) {
  function hasHandler (line 8276) | function hasHandler(emitter, type) {
  function eventMixin (line 8282) | function eventMixin(ctor) {
  function Delayed (line 8299) | function Delayed() {this.id = null;}
  function spaceStr (line 8339) | function spaceStr(n) {
  function lst (line 8345) | function lst(arr) { return arr[arr.length-1]; }
  function indexOf (line 8353) | function indexOf(array, elt) {
  function map (line 8358) | function map(array, f) {
  function nothing (line 8364) | function nothing() {}
  function createObj (line 8366) | function createObj(base, props) {
  function copyObj (line 8378) | function copyObj(obj, target, overwrite) {
  function bind (line 8386) | function bind(f) {
  function isWordChar (line 8396) | function isWordChar(ch, helper) {
  function isEmpty (line 8402) | function isEmpty(obj) {
  function isExtendingChar (line 8413) | function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendi...
  function elt (line 8417) | function elt(tag, content, className, style) {
  function removeChildren (line 8443) | function removeChildren(e) {
  function removeChildrenAndAdd (line 8449) | function removeChildrenAndAdd(parent, e) {
  function activeElt (line 8464) | function activeElt() {
  function classTest (line 8477) | function classTest(cls) { return new RegExp("(^|\\s)" + cls + "(?:$|\\s)...
  function joinClasses (line 8490) | function joinClasses(a, b) {
  function forEachCodeMirror (line 8503) | function forEachCodeMirror(f) {
  function ensureGlobalHandlers (line 8513) | function ensureGlobalHandlers() {
  function registerGlobalHandlers (line 8518) | function registerGlobalHandlers() {
  function zeroWidthElement (line 8545) | function zeroWidthElement(measure) {
  function hasBadBidiRects (line 8560) | function hasBadBidiRects(measure) {
  function hasBadZoomedRects (line 8608) | function hasBadZoomedRects(measure) {
  function iterateBidiSections (line 8639) | function iterateBidiSections(order, from, to, f) {
  function bidiLeft (line 8652) | function bidiLeft(part) { return part.level % 2 ? part.to : part.from; }
  function bidiRight (line 8653) | function bidiRight(part) { return part.level % 2 ? part.from : part.to; }
  function lineLeft (line 8655) | function lineLeft(line) { var order = getOrder(line); return order ? bid...
  function lineRight (line 8656) | function lineRight(line) {
  function lineStart (line 8662) | function lineStart(cm, lineN) {
  function lineEnd (line 8670) | function lineEnd(cm, lineN) {
  function lineStartSmart (line 8680) | function lineStartSmart(cm, pos) {
  function compareBidiLevel (line 8692) | function compareBidiLevel(order, a, b) {
  function getBidiPartAt (line 8699) | function getBidiPartAt(order, pos) {
  function moveInLine (line 8719) | function moveInLine(line, pos, dir, byUnit) {
  function moveVisually (line 8731) | function moveVisually(line, start, dir, byUnit) {
  function moveLogically (line 8754) | function moveLogically(line, start, dir, byUnit) {
  function charType (line 8788) | function charType(code) {
  function BidiSpan (line 8803) | function BidiSpan(level, from, to) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/codemirror/js/formatting.js
  function newline (line 77) | function newline() {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/codemirror/js/javascript.js
  function kw (line 13) | function kw(type) {return {type: type, style: "keyword"};}
  function readRegexp (line 59) | function readRegexp(stream) {
  function ret (line 74) | function ret(tp, style, cont) {
  function tokenBase (line 78) | function tokenBase(stream, state) {
  function tokenString (line 130) | function tokenString(quote) {
  function tokenComment (line 146) | function tokenComment(stream, state) {
  function tokenQuasi (line 158) | function tokenQuasi(stream, state) {
  function findFatArrow (line 178) | function findFatArrow(stream, state) {
  function JSLexical (line 206) | function JSLexical(indented, column, type, align, prev, info) {
  function inScope (line 215) | function inScope(state, varname) {
  function parseJS (line 224) | function parseJS(state, style, type, content, stream) {
  function pass (line 248) | function pass() {
  function cont (line 251) | function cont() {
  function register (line 255) | function register(varname) {
  function pushcontext (line 276) | function pushcontext() {
  function popcontext (line 280) | function popcontext() {
  function pushlex (line 284) | function pushlex(type, info) {
  function poplex (line 293) | function poplex() {
  function expect (line 303) | function expect(wanted) {
  function statement (line 311) | function statement(type, value) {
  function expression (line 333) | function expression(type) {
  function expressionNoComma (line 336) | function expressionNoComma(type) {
  function expressionInner (line 339) | function expressionInner(type, noComma) {
  function maybeexpression (line 356) | function maybeexpression(type) {
  function maybeexpressionNoComma (line 360) | function maybeexpressionNoComma(type) {
  function maybeoperatorComma (line 365) | function maybeoperatorComma(type, value) {
  function maybeoperatorNoComma (line 369) | function maybeoperatorNoComma(type, value, noComma) {
  function quasi (line 384) | function quasi(value) {
  function continueQuasi (line 388) | function continueQuasi(type) {
  function arrowBody (line 395) | function arrowBody(type) {
  function arrowBodyNoComma (line 400) | function arrowBodyNoComma(type) {
  function maybelabel (line 405) | function maybelabel(type) {
  function property (line 409) | function property(type) {
  function objprop (line 412) | function objprop(type, value) {
  function getterSetter (line 423) | function getterSetter(type) {
  function afterprop (line 428) | function afterprop(type) {
  function commasep (line 432) | function commasep(what, end) {
  function contCommasep (line 447) | function contCommasep(what, end, info) {
  function block (line 452) | function block(type) {
  function maybetype (line 456) | function maybetype(type) {
  function typedef (line 459) | function typedef(type) {
  function vardef (line 462) | function vardef() {
  function pattern (line 465) | function pattern(type, value) {
  function proppattern (line 470) | function proppattern(type, value) {
  function maybeAssign (line 478) | function maybeAssign(_type, value) {
  function vardefCont (line 481) | function vardefCont(type) {
  function maybeelse (line 484) | function maybeelse(type, value) {
  function forspec (line 487) | function forspec(type) {
  function forspec1 (line 490) | function forspec1(type) {
  function formaybeinof (line 496) | function formaybeinof(_type, value) {
  function forspec2 (line 500) | function forspec2(type, value) {
  function forspec3 (line 505) | function forspec3(type) {
  function functiondef (line 508) | function functiondef(type, value) {
  function funarg (line 513) | function funarg(type) {
  function className (line 517) | function className(type, value) {
  function classNameAfter (line 520) | function classNameAfter(_type, value) {
  function objlit (line 523) | function objlit(type) {
  function afterModule (line 526) | function afterModule(type, value) {
  function afterExport (line 530) | function afterExport(_type, value) {
  function afterImport (line 535) | function afterImport(type) {
  function importSpec (line 539) | function importSpec(type, value) {
  function maybeFrom (line 544) | function maybeFrom(_type, value) {
  function arrayLiteral (line 547) | function arrayLiteral(type) {
  function maybeArrayComprehension (line 551) | function maybeArrayComprehension(type) {
  function comprehension (line 556) | function comprehension(type) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/codemirror/js/xml.js
  function inText (line 51) | function inText(stream, state) {
  function inTag (line 103) | function inTag(stream, state) {
  function inAttribute (line 128) | function inAttribute(quote) {
  function inBlock (line 142) | function inBlock(style, terminator) {
  function doctype (line 154) | function doctype(depth) {
  function Context (line 175) | function Context(state, tagName, startOfLine) {
  function popContext (line 183) | function popContext(state) {
  function maybePopContext (line 186) | function maybePopContext(state, nextTagName) {
  function baseState (line 201) | function baseState(type, stream, state) {
  function closeState (line 223) | function closeState(type, _stream, state) {
  function closeStateErr (line 231) | function closeStateErr(type, stream, state) {
  function attrState (line 236) | function attrState(type, _stream, state) {
  function attrEqState (line 255) | function attrEqState(type, stream, state) {
  function attrValueState (line 260) | function attrValueState(type, stream, state) {
  function attrContinuedState (line 266) | function attrContinuedState(type, stream, state) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/countdown/dest/countdown.js
  function s (line 1) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/countdown/dest/jquery.countdown.js
  function s (line 1) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/cropper/cropper.js
  function isNumber (line 95) | function isNumber(n) {
  function isUndefined (line 99) | function isUndefined(n) {
  function toArray (line 103) | function toArray(obj, offset) {
  function proxy (line 115) | function proxy(fn, context) {
  function isCrossOriginURL (line 123) | function isCrossOriginURL(url) {
  function addTimestamp (line 133) | function addTimestamp(url) {
  function getImageData (line 139) | function getImageData(image) {
  function getTransform (line 159) | function getTransform(options) {
  function getRotatedSizes (line 176) | function getRotatedSizes(data, reverse) {
  function getSourceCanvas (line 201) | function getSourceCanvas(image, data) {
  function Cropper (line 267) | function Cropper(element, options) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/d3/d3.js
  function d3_ascending (line 36) | function d3_ascending(a, b) {
  function d3_number (line 99) | function d3_number(x) {
  function d3_numeric (line 102) | function d3_numeric(x) {
  function d3_bisector (line 136) | function d3_bisector(compare) {
  function d3_zipLength (line 197) | function d3_zipLength(d) {
  function d3_range_integerScale (line 249) | function d3_range_integerScale(x) {
  function d3_class (line 254) | function d3_class(ctor, properties) {
  function d3_Map (line 276) | function d3_Map() {
  function d3_map_escape (line 309) | function d3_map_escape(key) {
  function d3_map_unescape (line 312) | function d3_map_unescape(key) {
  function d3_map_has (line 315) | function d3_map_has(key) {
  function d3_map_remove (line 318) | function d3_map_remove(key) {
  function d3_map_keys (line 321) | function d3_map_keys() {
  function d3_map_size (line 326) | function d3_map_size() {
  function d3_map_empty (line 331) | function d3_map_empty() {
  function map (line 337) | function map(mapType, array, depth) {
  function entries (line 361) | function entries(map, depth) {
  function d3_Set (line 403) | function d3_Set() {
  function d3_rebind (line 426) | function d3_rebind(target, source, method) {
  function d3_vendorSymbol (line 432) | function d3_vendorSymbol(object, name) {
  function d3_noop (line 441) | function d3_noop() {}
  function d3_dispatch (line 447) | function d3_dispatch() {}
  function d3_dispatch_event (line 462) | function d3_dispatch_event(dispatch) {
  function d3_eventPreventDefault (line 485) | function d3_eventPreventDefault() {
  function d3_eventSource (line 488) | function d3_eventSource() {
  function d3_eventDispatch (line 493) | function d3_eventDispatch(target) {
  function d3_selection (line 519) | function d3_selection(groups) {
  function d3_selection_selector (line 558) | function d3_selection_selector(selector) {
  function d3_selection_selectorAll (line 576) | function d3_selection_selectorAll(selector) {
  function d3_selection_attr (line 614) | function d3_selection_attr(name, value) {
  function d3_collapse (line 638) | function d3_collapse(s) {
  function d3_selection_classedRe (line 658) | function d3_selection_classedRe(name) {
  function d3_selection_classes (line 661) | function d3_selection_classes(name) {
  function d3_selection_classed (line 664) | function d3_selection_classed(name, value) {
  function d3_selection_classedName (line 677) | function d3_selection_classedName(name) {
  function d3_selection_style (line 703) | function d3_selection_style(name, value, priority) {
  function d3_selection_property (line 724) | function d3_selection_property(name, value) {
  function d3_selection_creator (line 763) | function d3_selection_creator(name) {
  function d3_selectionRemove (line 780) | function d3_selectionRemove() {
  function bind (line 795) | function bind(group, groupData) {
  function d3_selection_dataNode (line 863) | function d3_selection_dataNode(data) {
  function d3_selection_filter (line 885) | function d3_selection_filter(selector) {
  function d3_selection_sortComparator (line 906) | function d3_selection_sortComparator(comparator) {
  function d3_selection_each (line 917) | function d3_selection_each(groups, callback) {
  function d3_selection_enter (line 949) | function d3_selection_enter(selection) {
  function d3_selection_enterInsertBefore (line 982) | function d3_selection_enterInsertBefore(enter) {
  function d3_selection_interrupt (line 1015) | function d3_selection_interrupt(that) {
  function d3_selection_on (line 1043) | function d3_selection_on(type, listener, capture) {
  function d3_selection_onListener (line 1080) | function d3_selection_onListener(listener, argumentz) {
  function d3_selection_onFilter (line 1092) | function d3_selection_onFilter(listener, argumentz) {
  function d3_event_dragSuppress (line 1102) | function d3_event_dragSuppress() {
  function d3_mousePoint (line 1127) | function d3_mousePoint(container, e) {
  function drag (line 1163) | function drag() {
  function dragstart (line 1166) | function dragstart(id, position, subject, move, end) {
  function d3_behavior_dragTouchId (line 1210) | function d3_behavior_dragTouchId() {
  function d3_behavior_dragTouchSubject (line 1213) | function d3_behavior_dragTouchSubject() {
  function d3_behavior_dragMouseSubject (line 1216) | function d3_behavior_dragMouseSubject() {
  function d3_sgn (line 1228) | function d3_sgn(x) {
  function d3_cross2d (line 1231) | function d3_cross2d(a, b, c) {
  function d3_acos (line 1234) | function d3_acos(x) {
  function d3_asin (line 1237) | function d3_asin(x) {
  function d3_sinh (line 1240) | function d3_sinh(x) {
  function d3_cosh (line 1243) | function d3_cosh(x) {
  function d3_tanh (line 1246) | function d3_tanh(x) {
  function d3_haversin (line 1249) | function d3_haversin(x) {
  function interpolate (line 1256) | function interpolate(t) {
  function zoom (line 1273) | function zoom(g) {
  function location (line 1373) | function location(p) {
  function point (line 1376) | function point(l) {
  function scaleTo (line 1379) | function scaleTo(s) {
  function translateTo (line 1382) | function translateTo(p, l) {
  function zoomTo (line 1387) | function zoomTo(that, p, l, k) {
  function rescale (line 1399) | function rescale() {
  function zoomstarted (line 1407) | function zoomstarted(dispatch) {
  function zoomed (line 1412) | function zoomed(dispatch) {
  function zoomended (line 1420) | function zoomended(dispatch) {
  function mousedowned (line 1426) | function mousedowned() {
  function touchstarted (line 1441) | function touchstarted() {
  function mousewheeled (line 1511) | function mousewheeled() {
  function dblclicked (line 1524) | function dblclicked() {
  function d3_color (line 1539) | function d3_color() {}
  function d3_hsl (line 1544) | function d3_hsl(h, s, l) {
  function d3_hsl_rgb (line 1559) | function d3_hsl_rgb(h, s, l) {
  function d3_hcl (line 1579) | function d3_hcl(h, c, l) {
  function d3_hcl_lab (line 1592) | function d3_hcl_lab(h, c, l) {
  function d3_lab (line 1598) | function d3_lab(l, a, b) {
  function d3_lab_rgb (line 1613) | function d3_lab_rgb(l, a, b) {
  function d3_lab_hcl (line 1620) | function d3_lab_hcl(l, a, b) {
  function d3_lab_xyz (line 1623) | function d3_lab_xyz(x) {
  function d3_xyz_lab (line 1626) | function d3_xyz_lab(x) {
  function d3_xyz_rgb (line 1629) | function d3_xyz_rgb(r) {
  function d3_rgb (line 1633) | function d3_rgb(r, g, b) {
  function d3_rgbNumber (line 1636) | function d3_rgbNumber(value) {
  function d3_rgbString (line 1639) | function d3_rgbString(value) {
  function d3_rgb_hex (line 1662) | function d3_rgb_hex(v) {
  function d3_rgb_parse (line 1665) | function d3_rgb_parse(format, rgb, hsl) {
  function d3_rgb_hsl (line 1699) | function d3_rgb_hsl(r, g, b) {
  function d3_rgb_lab (line 1711) | function d3_rgb_lab(r, g, b) {
  function d3_rgb_xyz (line 1718) | function d3_rgb_xyz(r) {
  function d3_rgb_parseNumber (line 1721) | function d3_rgb_parseNumber(c) {
  function d3_functor (line 1877) | function d3_functor(v) {
  function d3_identity (line 1883) | function d3_identity(d) {
  function d3_xhrType (line 1887) | function d3_xhrType(response) {
  function d3_xhr (line 1894) | function d3_xhr(url, mimeType, response, callback) {
  function d3_xhr_fixCallback (line 1969) | function d3_xhr_fixCallback(callback) {
  function d3_xhrHasResponse (line 1974) | function d3_xhrHasResponse(request) {
  function dsv (line 1980) | function dsv(url, row, callback) {
  function response (line 1988) | function response(request) {
  function typedResponse (line 1991) | function typedResponse(f) {
  function token (line 2010) | function token() {
  function formatRow (line 2072) | function formatRow(row) {
  function formatValue (line 2075) | function formatValue(text) {
  function d3_timer_step (line 2103) | function d3_timer_step() {
  function d3_timer_mark (line 2120) | function d3_timer_mark() {
  function d3_timer_sweep (line 2129) | function d3_timer_sweep() {
  function d3_format_precision (line 2142) | function d3_format_precision(x, p) {
  function d3_formatPrefix (line 2159) | function d3_formatPrefix(d, i) {
  function d3_locale_numberFormat (line 2170) | function d3_locale_numberFormat(locale) {
  function d3_format_typeDefault (line 2291) | function d3_format_typeDefault(x) {
  function d3_date_utc (line 2295) | function d3_date_utc() {
  function d3_time_interval (line 2361) | function d3_time_interval(local, step, number) {
  function d3_time_interval_utc (line 2409) | function d3_time_interval_utc(method) {
  function d3_locale_timeFormat (line 2469) | function d3_locale_timeFormat(locale) {
  function d3_time_formatPad (line 2689) | function d3_time_formatPad(value, fill, width) {
  function d3_time_formatRe (line 2693) | function d3_time_formatRe(names) {
  function d3_time_formatLookup (line 2696) | function d3_time_formatLookup(names) {
  function d3_time_parseWeekdayNumber (line 2701) | function d3_time_parseWeekdayNumber(date, string, i) {
  function d3_time_parseWeekNumberSunday (line 2706) | function d3_time_parseWeekNumberSunday(date, string, i) {
  function d3_time_parseWeekNumberMonday (line 2711) | function d3_time_parseWeekNumberMonday(date, string, i) {
  function d3_time_parseFullYear (line 2716) | function d3_time_parseFullYear(date, string, i) {
  function d3_time_parseYear (line 2721) | function d3_time_parseYear(date, string, i) {
  function d3_time_parseZone (line 2726) | function d3_time_parseZone(date, string, i) {
  function d3_time_expandYear (line 2730) | function d3_time_expandYear(d) {
  function d3_time_parseMonthNumber (line 2733) | function d3_time_parseMonthNumber(date, string, i) {
  function d3_time_parseDay (line 2738) | function d3_time_parseDay(date, string, i) {
  function d3_time_parseDayOfYear (line 2743) | function d3_time_parseDayOfYear(date, string, i) {
  function d3_time_parseHour24 (line 2748) | function d3_time_parseHour24(date, string, i) {
  function d3_time_parseMinutes (line 2753) | function d3_time_parseMinutes(date, string, i) {
  function d3_time_parseSeconds (line 2758) | function d3_time_parseSeconds(date, string, i) {
  function d3_time_parseMilliseconds (line 2763) | function d3_time_parseMilliseconds(date, string, i) {
  function d3_time_zone (line 2768) | function d3_time_zone(d) {
  function d3_time_parseLiteralPercent (line 2772) | function d3_time_parseLiteralPercent(date, string, i) {
  function d3_time_formatMulti (line 2777) | function d3_time_formatMulti(formats) {
  function d3_adder (line 2808) | function d3_adder() {}
  function d3_adderSum (line 2825) | function d3_adderSum(a, b, o) {
  function d3_geo_streamGeometry (line 2836) | function d3_geo_streamGeometry(geometry, listener) {
  function d3_geo_streamLine (line 2881) | function d3_geo_streamLine(coordinates, listener, closed) {
  function d3_geo_streamPolygon (line 2887) | function d3_geo_streamPolygon(coordinates, listener) {
  function d3_geo_areaRingStart (line 2916) | function d3_geo_areaRingStart() {
  function d3_geo_cartesian (line 2934) | function d3_geo_cartesian(spherical) {
  function d3_geo_cartesianDot (line 2938) | function d3_geo_cartesianDot(a, b) {
  function d3_geo_cartesianCross (line 2941) | function d3_geo_cartesianCross(a, b) {
  function d3_geo_cartesianAdd (line 2944) | function d3_geo_cartesianAdd(a, b) {
  function d3_geo_cartesianScale (line 2949) | function d3_geo_cartesianScale(vector, k) {
  function d3_geo_cartesianNormalize (line 2952) | function d3_geo_cartesianNormalize(d) {
  function d3_geo_spherical (line 2958) | function d3_geo_spherical(cartesian) {
  function d3_geo_sphericalEqual (line 2961) | function d3_geo_sphericalEqual(a, b) {
  function point (line 2986) | function point(λ, φ) {
  function linePoint (line 2991) | function linePoint(λ, φ) {
  function lineStart (line 3031) | function lineStart() {
  function lineEnd (line 3034) | function lineEnd() {
  function ringPoint (line 3039) | function ringPoint(λ, φ) {
  function ringStart (line 3047) | function ringStart() {
  function ringEnd (line 3050) | function ringEnd() {
  function angle (line 3057) | function angle(λ0, λ1) {
  function compareRanges (line 3060) | function compareRanges(a, b) {
  function withinRange (line 3063) | function withinRange(x, range) {
  function d3_geo_centroidPoint (line 3117) | function d3_geo_centroidPoint(λ, φ) {
  function d3_geo_centroidPointXYZ (line 3122) | function d3_geo_centroidPointXYZ(x, y, z) {
  function d3_geo_centroidLineStart (line 3128) | function d3_geo_centroidLineStart() {
  function d3_geo_centroidLineEnd (line 3149) | function d3_geo_centroidLineEnd() {
  function d3_geo_centroidRingStart (line 3152) | function d3_geo_centroidRingStart() {
  function d3_geo_compose (line 3182) | function d3_geo_compose(a, b) {
  function d3_true (line 3191) | function d3_true() {
  function d3_geo_clipPolygon (line 3194) | function d3_geo_clipPolygon(segments, compare, clipStartInside, interpol...
  function d3_geo_clipPolygonLinkCircular (line 3253) | function d3_geo_clipPolygonLinkCircular(array) {
  function d3_geo_clipPolygonIntersection (line 3264) | function d3_geo_clipPolygonIntersection(point, points, other, entry) {
  function d3_geo_clip (line 3272) | function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {
  function d3_geo_clipSegmentLength1 (line 3364) | function d3_geo_clipSegmentLength1(segment) {
  function d3_geo_clipBufferListener (line 3367) | function d3_geo_clipBufferListener() {
  function d3_geo_clipSort (line 3388) | function d3_geo_clipSort(a, b) {
  function d3_geo_clipAntimeridianLine (line 3392) | function d3_geo_clipAntimeridianLine(listener) {
  function d3_geo_clipAntimeridianIntersect (line 3431) | function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {
  function d3_geo_clipAntimeridianInterpolate (line 3435) | function d3_geo_clipAntimeridianInterpolate(from, to, direction, listene...
  function d3_geo_pointInPolygon (line 3458) | function d3_geo_pointInPolygon(point, polygon) {
  function d3_geo_clipCircle (line 3487) | function d3_geo_clipCircle(radius) {
  function d3_geom_clipLine (line 3583) | function d3_geom_clipLine(x0, y0, x1, y1) {
  function d3_geo_clipExtent (line 3655) | function d3_geo_clipExtent(x0, y0, x1, y1) {
  function d3_geo_conic (line 3789) | function d3_geo_conic(projectAt) {
  function d3_geo_conicEqualArea (line 3797) | function d3_geo_conicEqualArea(φ0, φ1) {
  function albersUsa (line 3824) | function albersUsa(coordinates) {
  function d3_geo_pathAreaRingStart (line 3906) | function d3_geo_pathAreaRingStart() {
  function d3_geo_pathBoundsPoint (line 3928) | function d3_geo_pathBoundsPoint(x, y) {
  function d3_geo_pathBuffer (line 3934) | function d3_geo_pathBuffer() {
  function d3_geo_pathBufferCircle (line 3979) | function d3_geo_pathBufferCircle(radius) {
  function d3_geo_pathCentroidPoint (line 3995) | function d3_geo_pathCentroidPoint(x, y) {
  function d3_geo_pathCentroidLineStart (line 4000) | function d3_geo_pathCentroidLineStart() {
  function d3_geo_pathCentroidLineEnd (line 4014) | function d3_geo_pathCentroidLineEnd() {
  function d3_geo_pathCentroidRingStart (line 4017) | function d3_geo_pathCentroidRingStart() {
  function d3_geo_pathContext (line 4038) | function d3_geo_pathContext(context) {
  function d3_geo_resample (line 4078) | function d3_geo_resample(project) {
  function path (line 4158) | function path(object) {
  function reset (line 4197) | function reset() {
  function d3_geo_pathProjectStream (line 4203) | function d3_geo_pathProjectStream(project) {
  function d3_geo_transform (line 4220) | function d3_geo_transform(stream) {
  function d3_geo_transformPoint (line 4243) | function d3_geo_transformPoint(stream, point) {
  function d3_geo_projection (line 4265) | function d3_geo_projection(project) {
  function d3_geo_projectionMutator (line 4270) | function d3_geo_projectionMutator(projectAt) {
  function d3_geo_projectionRadians (line 4342) | function d3_geo_projectionRadians(stream) {
  function d3_geo_equirectangular (line 4347) | function d3_geo_equirectangular(λ, φ) {
  function forward (line 4355) | function forward(coordinates) {
  function d3_geo_identityRotation (line 4365) | function d3_geo_identityRotation(λ, φ) {
  function d3_geo_rotation (line 4369) | function d3_geo_rotation(δλ, δφ, δγ) {
  function d3_geo_forwardRotationλ (line 4372) | function d3_geo_forwardRotationλ(δλ) {
  function d3_geo_rotationλ (line 4377) | function d3_geo_rotationλ(δλ) {
  function d3_geo_rotationφγ (line 4382) | function d3_geo_rotationφγ(δφ, δγ) {
  function circle (line 4396) | function circle() {
  function d3_geo_circleInterpolate (line 4426) | function d3_geo_circleInterpolate(radius, precision) {
  function d3_geo_circleAngle (line 4443) | function d3_geo_circleAngle(cr, point) {
  function graticule (line 4456) | function graticule() {
  function lines (line 4462) | function lines() {
  function d3_geo_graticuleX (line 4528) | function d3_geo_graticuleX(y0, y1, dy) {
  function d3_geo_graticuleY (line 4536) | function d3_geo_graticuleY(x0, x1, dx) {
  function d3_source (line 4544) | function d3_source(d) {
  function d3_target (line 4547) | function d3_target(d) {
  function greatArc (line 4552) | function greatArc() {
  function d3_geo_interpolate (line 4579) | function d3_geo_interpolate(x0, y0, x1, y1) {
  function d3_geo_lengthLineStart (line 4604) | function d3_geo_lengthLineStart() {
  function d3_geo_azimuthal (line 4619) | function d3_geo_azimuthal(scale, angle) {
  function d3_geo_conicConformal (line 4645) | function d3_geo_conicConformal(φ0, φ1) {
  function d3_geo_conicEquidistant (line 4668) | function d3_geo_conicEquidistant(φ0, φ1) {
  function d3_geo_mercator (line 4690) | function d3_geo_mercator(λ, φ) {
  function d3_geo_mercatorProjection (line 4696) | function d3_geo_mercatorProjection(project) {
  function d3_geo_transverseMercator (line 4737) | function d3_geo_transverseMercator(λ, φ) {
  function d3_geom_pointX (line 4755) | function d3_geom_pointX(d) {
  function d3_geom_pointY (line 4758) | function d3_geom_pointY(d) {
  function hull (line 4764) | function hull(data) {
  function d3_geom_hullUpper (line 4786) | function d3_geom_hullUpper(points) {
  function d3_geom_hullOrder (line 4794) | function d3_geom_hullOrder(a, b) {
  function d3_geom_polygonInside (line 4848) | function d3_geom_polygonInside(p, a, b) {
  function d3_geom_polygonIntersect (line 4851) | function d3_geom_polygonIntersect(c, d, a, b) {
  function d3_geom_polygonClosed (line 4855) | function d3_geom_polygonClosed(coordinates) {
  function d3_geom_voronoiBeach (line 4860) | function d3_geom_voronoiBeach() {
  function d3_geom_voronoiCreateBeach (line 4864) | function d3_geom_voronoiCreateBeach(site) {
  function d3_geom_voronoiDetachBeach (line 4869) | function d3_geom_voronoiDetachBeach(beach) {
  function d3_geom_voronoiRemoveBeach (line 4875) | function d3_geom_voronoiRemoveBeach(beach) {
  function d3_geom_voronoiAddBeach (line 4911) | function d3_geom_voronoiAddBeach(site) {
  function d3_geom_voronoiLeftBreakPoint (line 4965) | function d3_geom_voronoiLeftBreakPoint(arc, directrix) {
  function d3_geom_voronoiRightBreakPoint (line 4977) | function d3_geom_voronoiRightBreakPoint(arc, directrix) {
  function d3_geom_voronoiCell (line 4983) | function d3_geom_voronoiCell(site) {
  function d3_geom_voronoiCloseCells (line 4996) | function d3_geom_voronoiCloseCells(extent) {
  function d3_geom_voronoiHalfEdgeOrder (line 5026) | function d3_geom_voronoiHalfEdgeOrder(a, b) {
  function d3_geom_voronoiCircle (line 5029) | function d3_geom_voronoiCircle() {
  function d3_geom_voronoiAttachCircle (line 5033) | function d3_geom_voronoiAttachCircle(arc) {
  function d3_geom_voronoiDetachCircle (line 5066) | function d3_geom_voronoiDetachCircle(arc) {
  function d3_geom_voronoiClipEdges (line 5076) | function d3_geom_voronoiClipEdges(extent) {
  function d3_geom_voronoiConnectEdge (line 5086) | function d3_geom_voronoiConnectEdge(edge, extent) {
  function d3_geom_voronoiEdge (line 5160) | function d3_geom_voronoiEdge(lSite, rSite) {
  function d3_geom_voronoiCreateEdge (line 5165) | function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {
  function d3_geom_voronoiCreateBorderEdge (line 5174) | function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {
  function d3_geom_voronoiSetEdgeEnd (line 5181) | function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {
  function d3_geom_voronoiHalfEdge (line 5192) | function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {
  function d3_geom_voronoiRedBlackTree (line 5206) | function d3_geom_voronoiRedBlackTree() {
  function d3_geom_voronoiRedBlackNode (line 5209) | function d3_geom_voronoiRedBlackNode(node) {
  function d3_geom_voronoiRedBlackRotateLeft (line 5372) | function d3_geom_voronoiRedBlackRotateLeft(tree, node) {
  function d3_geom_voronoiRedBlackRotateRight (line 5385) | function d3_geom_voronoiRedBlackRotateRight(tree, node) {
  function d3_geom_voronoiRedBlackFirst (line 5398) | function d3_geom_voronoiRedBlackFirst(node) {
  function d3_geom_voronoi (line 5402) | function d3_geom_voronoi(sites, bbox) {
  function d3_geom_voronoiVertexOrder (line 5431) | function d3_geom_voronoiVertexOrder(a, b) {
  function voronoi (line 5437) | function voronoi(data) {
  function sites (line 5448) | function sites(data) {
  function d3_geom_voronoiTriangleArea (line 5501) | function d3_geom_voronoiTriangleArea(a, b, c) {
  function quadtree (line 5519) | function quadtree(data) {
  function d3_geom_quadtreeCompatX (line 5614) | function d3_geom_quadtreeCompatX(d) {
  function d3_geom_quadtreeCompatY (line 5617) | function d3_geom_quadtreeCompatY(d) {
  function d3_geom_quadtreeNode (line 5620) | function d3_geom_quadtreeNode() {
  function d3_geom_quadtreeVisit (line 5629) | function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {
  function d3_geom_quadtreeFind (line 5638) | function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {
  function d3_interpolateRgb (line 5675) | function d3_interpolateRgb(a, b) {
  function d3_interpolateObject (line 5684) | function d3_interpolateObject(a, b) {
  function d3_interpolateNumber (line 5704) | function d3_interpolateNumber(a, b) {
  function d3_interpolateString (line 5711) | function d3_interpolateString(a, b) {
  function d3_interpolate (line 5745) | function d3_interpolate(a, b) {
  function d3_interpolateArray (line 5755) | function d3_interpolateArray(a, b) {
  function d3_ease_clamp (line 5806) | function d3_ease_clamp(f) {
  function d3_ease_reverse (line 5811) | function d3_ease_reverse(f) {
  function d3_ease_reflect (line 5816) | function d3_ease_reflect(f) {
  function d3_ease_quad (line 5821) | function d3_ease_quad(t) {
  function d3_ease_cubic (line 5824) | function d3_ease_cubic(t) {
  function d3_ease_cubicInOut (line 5827) | function d3_ease_cubicInOut(t) {
  function d3_ease_poly (line 5833) | function d3_ease_poly(e) {
  function d3_ease_sin (line 5838) | function d3_ease_sin(t) {
  function d3_ease_exp (line 5841) | function d3_ease_exp(t) {
  function d3_ease_circle (line 5844) | function d3_ease_circle(t) {
  function d3_ease_elastic (line 5847) | function d3_ease_elastic(a, p) {
  function d3_ease_back (line 5855) | function d3_ease_back(s) {
  function d3_ease_bounce (line 5861) | function d3_ease_bounce(t) {
  function d3_interpolateHcl (line 5865) | function d3_interpolateHcl(a, b) {
  function d3_interpolateHsl (line 5876) | function d3_interpolateHsl(a, b) {
  function d3_interpolateLab (line 5887) | function d3_interpolateLab(a, b) {
  function d3_interpolateRound (line 5896) | function d3_interpolateRound(a, b) {
  function d3_transform (line 5912) | function d3_transform(m) {
  function d3_transformDot (line 5928) | function d3_transformDot(a, b) {
  function d3_transformNormalize (line 5931) | function d3_transformNormalize(a) {
  function d3_transformCombine (line 5939) | function d3_transformCombine(a, b, k) {
  function d3_interpolateTransform (line 5953) | function d3_interpolateTransform(a, b) {
  function d3_uninterpolateNumber (line 6005) | function d3_uninterpolateNumber(a, b) {
  function d3_uninterpolateClamp (line 6011) | function d3_uninterpolateClamp(a, b) {
  function d3_layout_bundlePath (line 6025) | function d3_layout_bundlePath(link) {
  function d3_layout_bundleAncestors (line 6038) | function d3_layout_bundleAncestors(node) {
  function d3_layout_bundleLeastCommonAncestor (line 6048) | function d3_layout_bundleLeastCommonAncestor(a, b) {
  function relayout (line 6060) | function relayout() {
  function resort (line 6126) | function resort() {
  function repulse (line 6173) | function repulse(node) {
  function position (line 6345) | function position(dimension, size) {
  function dragmove (line 6374) | function dragmove(d) {
  function d3_layout_forceDragstart (line 6380) | function d3_layout_forceDragstart(d) {
  function d3_layout_forceDragend (line 6383) | function d3_layout_forceDragend(d) {
  function d3_layout_forceMouseover (line 6386) | function d3_layout_forceMouseover(d) {
  function d3_layout_forceMouseout (line 6390) | function d3_layout_forceMouseout(d) {
  function d3_layout_forceAccumulate (line 6393) | function d3_layout_forceAccumulate(quad, alpha, charges) {
  function hierarchy (line 6423) | function hierarchy(root) {
  function d3_layout_hierarchyRebind (line 6479) | function d3_layout_hierarchyRebind(object, hierarchy) {
  function d3_layout_hierarchyVisitBefore (line 6485) | function d3_layout_hierarchyVisitBefore(node, callback) {
  function d3_layout_hierarchyVisitAfter (line 6495) | function d3_layout_hierarchyVisitAfter(node, callback) {
  function d3_layout_hierarchyChildren (line 6508) | function d3_layout_hierarchyChildren(d) {
  function d3_layout_hierarchyValue (line 6511) | function d3_layout_hierarchyValue(d) {
  function d3_layout_hierarchySort (line 6514) | function d3_layout_hierarchySort(a, b) {
  function d3_layout_hierarchyLinks (line 6517) | function d3_layout_hierarchyLinks(nodes) {
  function position (line 6529) | function position(node, x, dx, dy) {
  function depth (line 6544) | function depth(node) {
  function partition (line 6552) | function partition(d, i) {
  function pie (line 6566) | function pie(data) {
  function stack (line 6616) | function stack(data, index) {
  function d3_layout_stackX (line 6671) | function d3_layout_stackX(d) {
  function d3_layout_stackY (line 6674) | function d3_layout_stackY(d) {
  function d3_layout_stackOut (line 6677) | function d3_layout_stackOut(d, y0, y) {
  function d3_layout_stackOrderDefault (line 6744) | function d3_layout_stackOrderDefault(data) {
  function d3_layout_stackOffsetZero (line 6747) | function d3_layout_stackOffsetZero(data) {
  function d3_layout_stackMaxIndex (line 6752) | function d3_layout_stackMaxIndex(array) {
  function d3_layout_stackReduceSum (line 6762) | function d3_layout_stackReduceSum(d) {
  function d3_layout_stackSum (line 6765) | function d3_layout_stackSum(p, d) {
  function histogram (line 6770) | function histogram(data, i) {
  function d3_layout_histogramBinSturges (line 6814) | function d3_layout_histogramBinSturges(range, values) {
  function d3_layout_histogramBinFixed (line 6817) | function d3_layout_histogramBinFixed(range, n) {
  function d3_layout_histogramRange (line 6822) | function d3_layout_histogramRange(values) {
  function pack (line 6827) | function pack(d, i) {
  function d3_layout_packSort (line 6866) | function d3_layout_packSort(a, b) {
  function d3_layout_packInsert (line 6869) | function d3_layout_packInsert(a, b) {
  function d3_layout_packSplice (line 6876) | function d3_layout_packSplice(a, b) {
  function d3_layout_packIntersects (line 6880) | function d3_layout_packIntersects(a, b) {
  function d3_layout_packSiblings (line 6884) | function d3_layout_packSiblings(node) {
  function d3_layout_packLink (line 6948) | function d3_layout_packLink(node) {
  function d3_layout_packUnlink (line 6951) | function d3_layout_packUnlink(node) {
  function d3_layout_packTransform (line 6955) | function d3_layout_packTransform(node, x, y, k) {
  function d3_layout_packPlace (line 6965) | function d3_layout_packPlace(a, b, c) {
  function tree (line 6981) | function tree(d, i) {
  function wrapTree (line 7000) | function wrapTree(root0) {
  function firstWalk (line 7024) | function firstWalk(v) {
  function secondWalk (line 7040) | function secondWalk(v) {
  function apportion (line 7044) | function apportion(v, w, ancestor) {
  function sizeNode (line 7074) | function sizeNode(node) {
  function d3_layout_treeSeparation (line 7095) | function d3_layout_treeSeparation(a, b) {
  function d3_layout_treeLeft (line 7098) | function d3_layout_treeLeft(v) {
  function d3_layout_treeRight (line 7102) | function d3_layout_treeRight(v) {
  function d3_layout_treeMove (line 7106) | function d3_layout_treeMove(wm, wp, shift) {
  function d3_layout_treeShift (line 7114) | function d3_layout_treeShift(v) {
  function d3_layout_treeAncestor (line 7123) | function d3_layout_treeAncestor(vim, v, ancestor) {
  function cluster (line 7128) | function cluster(d, i) {
  function d3_layout_clusterY (line 7168) | function d3_layout_clusterY(children) {
  function d3_layout_clusterX (line 7173) | function d3_layout_clusterX(children) {
  function d3_layout_clusterLeft (line 7178) | function d3_layout_clusterLeft(node) {
  function d3_layout_clusterRight (line 7182) | function d3_layout_clusterRight(node) {
  function scale (line 7188) | function scale(children, k) {
  function squarify (line 7195) | function squarify(node) {
  function stickify (line 7222) | function stickify(node) {
  function worst (line 7239) | function worst(row, u) {
  function position (line 7250) | function position(row, u, rect, flush) {
  function treemap (line 7280) | function treemap(d) {
  function padFunction (line 7299) | function padFunction(node) {
  function padConstant (line 7303) | function padConstant(node) {
  function d3_layout_treemapPadNull (line 7334) | function d3_layout_treemapPadNull(node) {
  function d3_layout_treemapPad (line 7342) | function d3_layout_treemapPad(node, padding) {
  function d3_scaleExtent (line 7394) | function d3_scaleExtent(domain) {
  function d3_scaleRange (line 7398) | function d3_scaleRange(scale) {
  function d3_scale_bilinear (line 7401) | function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {
  function d3_scale_nice (line 7407) | function d3_scale_nice(domain, nice) {
  function d3_scale_niceStep (line 7417) | function d3_scale_niceStep(step) {
  function d3_scale_polylinear (line 7431) | function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {
  function d3_scale_linear (line 7449) | function d3_scale_linear(domain, range, interpolate, clamp) {
  function d3_scale_linearRebind (line 7501) | function d3_scale_linearRebind(scale, linear) {
  function d3_scale_linearNice (line 7504) | function d3_scale_linearNice(domain, m) {
  function d3_scale_linearTickRange (line 7507) | function d3_scale_linearTickRange(domain, m) {
  function d3_scale_linearTicks (line 7516) | function d3_scale_linearTicks(domain, m) {
  function d3_scale_linearTickFormat (line 7519) | function d3_scale_linearTickFormat(domain, m, format) {
  function d3_scale_linearPrecision (line 7547) | function d3_scale_linearPrecision(value) {
  function d3_scale_linearFormatPrecision (line 7550) | function d3_scale_linearFormatPrecision(type, range) {
  function d3_scale_log (line 7557) | function d3_scale_log(linear, base, positive, domain) {
  function d3_scale_pow (line 7629) | function d3_scale_pow(linear, exponent, domain) {
  function d3_scale_powPow (line 7663) | function d3_scale_powPow(e) {
  function d3_scale_ordinal (line 7677) | function d3_scale_ordinal(domain, ranger) {
  function d3_scale_quantile (line 7785) | function d3_scale_quantile(domain, range) {
  function d3_scale_quantize (line 7821) | function d3_scale_quantize(x0, x1, range) {
  function d3_scale_threshold (line 7855) | function d3_scale_threshold(domain, range) {
  function d3_scale_identity (line 7881) | function d3_scale_identity(domain) {
  function d3_zero (line 7903) | function d3_zero() {
  function arc (line 7908) | function arc() {
  function circleSegment (line 7981) | function circleSegment(r1, cw) {
  function d3_svg_arcInnerRadius (line 8026) | function d3_svg_arcInnerRadius(d) {
  function d3_svg_arcOuterRadius (line 8029) | function d3_svg_arcOuterRadius(d) {
  function d3_svg_arcStartAngle (line 8032) | function d3_svg_arcStartAngle(d) {
  function d3_svg_arcEndAngle (line 8035) | function d3_svg_arcEndAngle(d) {
  function d3_svg_arcPadAngle (line 8038) | function d3_svg_arcPadAngle(d) {
  function d3_svg_arcSweep (line 8041) | function d3_svg_arcSweep(x0, y0, x1, y1) {
  function d3_svg_arcCornerTangents (line 8044) | function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {
  function d3_svg_line (line 8049) | function d3_svg_line(projection) {
  function d3_svg_lineLinear (line 8116) | function d3_svg_lineLinear(points) {
  function d3_svg_lineLinearClosed (line 8119) | function d3_svg_lineLinearClosed(points) {
  function d3_svg_lineStep (line 8122) | function d3_svg_lineStep(points) {
  function d3_svg_lineStepBefore (line 8128) | function d3_svg_lineStepBefore(points) {
  function d3_svg_lineStepAfter (line 8133) | function d3_svg_lineStepAfter(points) {
  function d3_svg_lineCardinalOpen (line 8138) | function d3_svg_lineCardinalOpen(points, tension) {
  function d3_svg_lineCardinalClosed (line 8141) | function d3_svg_lineCardinalClosed(points, tension) {
  function d3_svg_lineCardinal (line 8145) | function d3_svg_lineCardinal(points, tension) {
  function d3_svg_lineHermite (line 8148) | function d3_svg_lineHermite(points, tangents) {
  function d3_svg_lineCardinalTangents (line 8175) | function d3_svg_lineCardinalTangents(points, tension) {
  function d3_svg_lineBasis (line 8185) | function d3_svg_lineBasis(points) {
  function d3_svg_lineBasisOpen (line 8201) | function d3_svg_lineBasisOpen(points) {
  function d3_svg_lineBasisClosed (line 8221) | function d3_svg_lineBasisClosed(points) {
  function d3_svg_lineBundle (line 8240) | function d3_svg_lineBundle(points, tension) {
  function d3_svg_lineDot4 (line 8253) | function d3_svg_lineDot4(a, b) {
  function d3_svg_lineBasisBezier (line 8257) | function d3_svg_lineBasisBezier(path, x, y) {
  function d3_svg_lineSlope (line 8260) | function d3_svg_lineSlope(p0, p1) {
  function d3_svg_lineFiniteDifferences (line 8263) | function d3_svg_lineFiniteDifferences(points) {
  function d3_svg_lineMonotoneTangents (line 8271) | function d3_svg_lineMonotoneTangents(points) {
  function d3_svg_lineMonotone (line 8295) | function d3_svg_lineMonotone(points) {
  function d3_svg_lineRadial (line 8304) | function d3_svg_lineRadial(points) {
  function d3_svg_area (line 8315) | function d3_svg_area(projection) {
  function chord (line 8405) | function chord(d, i) {
  function subgroup (line 8409) | function subgroup(self, f, d, i) {
  function equals (line 8419) | function equals(a, b) {
  function arc (line 8422) | function arc(r, p, a) {
  function curve (line 8425) | function curve(r0, p0, r1, p1) {
  function d3_svg_chordRadius (line 8455) | function d3_svg_chordRadius(d) {
  function diagonal (line 8460) | function diagonal(d, i) {
  function d3_svg_diagonalProjection (line 8488) | function d3_svg_diagonalProjection(d) {
  function d3_svg_diagonalRadialProjection (line 8498) | function d3_svg_diagonalRadialProjection(projection) {
  function symbol (line 8506) | function symbol(d, i) {
  function d3_svg_symbolSize (line 8521) | function d3_svg_symbolSize() {
  function d3_svg_symbolType (line 8524) | function d3_svg_symbolType() {
  function d3_svg_symbolCircle (line 8527) | function d3_svg_symbolCircle(size) {
  function d3_transition (line 8556) | function d3_transition(groups, namespace, id) {
  function d3_transition_tween (line 8628) | function d3_transition_tween(groups, name, value, tween) {
  function attrNull (line 8642) | function attrNull() {
  function attrNullNS (line 8645) | function attrNullNS() {
  function attrTween (line 8648) | function attrTween(b) {
  function attrTweenNS (line 8656) | function attrTweenNS(b) {
  function attrTween (line 8668) | function attrTween(d, i) {
  function attrTweenNS (line 8674) | function attrTweenNS(d, i) {
  function styleNull (line 8692) | function styleNull() {
  function styleString (line 8695) | function styleString(b) {
  function styleTween (line 8707) | function styleTween(d, i) {
  function d3_transition_text (line 8718) | function d3_transition_text(b) {
  function d3_transitionNamespace (line 8795) | function d3_transitionNamespace(name) {
  function d3_transitionNode (line 8798) | function d3_transitionNode(node, i, namespace, id, inherit) {
  function axis (line 8853) | function axis(g) {
  function d3_svg_axisX (line 8948) | function d3_svg_axisX(selection, x0, x1) {
  function d3_svg_axisY (line 8954) | function d3_svg_axisY(selection, y0, y1) {
  function brush (line 8962) | function brush(g) {
  function redraw (line 9048) | function redraw(g) {
  function redrawX (line 9053) | function redrawX(g) {
  function redrawY (line 9057) | function redrawY(g) {
  function brushstart (line 9061) | function brushstart() {
  function d3_time_formatIsoNative (line 9254) | function d3_time_formatIsoNative(date) {
  function d3_time_scale (line 9301) | function d3_time_scale(linear, methods, format) {
  function d3_time_scaleDate (line 9351) | function d3_time_scaleDate(t) {
  function d3_json (line 9410) | function d3_json(request) {
  function d3_html (line 9416) | function d3_html(request) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/doc-ready/doc-ready.js
  function docReady (line 18) | function docReady( fn ) {
  function onReady (line 36) | function onReady( event ) {
  function trigger (line 46) | function trigger() {
  function defineDocReady (line 55) | function defineDocReady( eventie ) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/dropzone/dropzone-amd-module.js
  function ctor (line 44) | function ctor() { this.constructor = child; }
  function Emitter (line 49) | function Emitter() {}
  function Dropzone (line 418) | function Dropzone(element, options) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/dropzone/dropzone.js
  function ctor (line 32) | function ctor() { this.constructor = child; }
  function Emitter (line 37) | function Emitter() {}
  function Dropzone (line 406) | function Dropzone(element, options) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/eventEmitter/EventEmitter.js
  function EventEmitter (line 17) | function EventEmitter() {}
  function indexOfListener (line 32) | function indexOfListener(listeners, listener) {
  function alias (line 50) | function alias(name) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/eventie/eventie.js
  function getIEEvent (line 20) | function getIEEvent( obj ) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/fizzy-ui-utils/utils.js
  function setText (line 125) | function setText( elem, text ) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/flot-chart/jquery.flot.crosshair.js
  function init (line 70) | function init(plot) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/flot-chart/jquery.flot.pie.js
  function init (line 68) | function init(plot) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/flot-chart/jquery.flot.resize.js
  function a (line 22) | function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s....
  function h (line 22) | function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$...
  function init (line 27) | function init(plot) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/flot-chart/jquery.flot.selection.js
  function init (line 82) | function init(plot) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/flot-chart/jquery.flot.stack.js
  function init (line 43) | function init(plot) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/flot-chart/jquery.flot.time.js
  function floorInBase (line 24) | function floorInBase(n, base) {
  function formatDate (line 31) | function formatDate(d, fmt, monthNames, dayNames) {
  function makeUtcWrapper (line 111) | function makeUtcWrapper(d) {
  function dateGenerator (line 145) | function dateGenerator(ts, opts) {
  function init (line 197) | function init(plot) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/get-size/get-size.js
  function getStyleSize (line 17) | function getStyleSize( value ) {
  function noop (line 24) | function noop() {}
  function getZeroSize (line 48) | function getZeroSize() {
  function defineGetSize (line 66) | function defineGetSize( getStyleProperty ) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/get-style-property/get-style-property.js
  function getStyleProperty (line 18) | function getStyleProperty( propName ) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/gmaps/gmaps.js
  function parseColor (line 1837) | function parseColor(color, opacity) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/gmaps/lib/gmaps.static.js
  function parseColor (line 186) | function parseColor(color, opacity) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/hopscotch/js/hopscotch.js
  function findMatchRecur (line 1014) | function findMatchRecur(el){
  function showBubble (line 1781) | function showBubble() {
  function print (line 2470) | function print() { __p += __j.call(arguments, '') }
  function optEscape (line 2474) | function optEscape(str, unsafe){

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/jquery-circliful/js/jquery.circliful.js
  function addCircleText (line 163) | function addCircleText(obj, cssClass, lineHeight) {
  function addInfoText (line 181) | function addInfoText(obj, factor) {
  function checkDataAttributes (line 195) | function checkDataAttributes(obj) {
  function animate (line 213) | function animate(current) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/jquery-datatables-editable/jquery.dataTables.js
  function _fnHungarianMap (line 328) | function _fnHungarianMap ( o )
  function _fnCamelToHungarian (line 366) | function _fnCamelToHungarian ( src, user, force )
  function _fnLanguageCompat (line 405) | function _fnLanguageCompat( lang )
  function _fnCompatOpts (line 457) | function _fnCompatOpts ( init )
  function _fnCompatCols (line 490) | function _fnCompatCols ( init )
  function _fnBrowserDetect (line 510) | function _fnBrowserDetect( settings )
  function _fnReduce (line 564) | function _fnReduce ( that, fn, init, start, end, inc )
  function _fnAddColumn (line 598) | function _fnAddColumn( oSettings, nTh )
  function _fnColumnOptions (line 630) | function _fnColumnOptions( oSettings, iCol, oOptions )
  function _fnAdjustColumnSizing (line 757) | function _fnAdjustColumnSizing ( settings )
  function _fnVisibleToColumnIndex (line 789) | function _fnVisibleToColumnIndex( oSettings, iMatch )
  function _fnColumnIndexToVisible (line 807) | function _fnColumnIndexToVisible( oSettings, iMatch )
  function _fnVisbleColumns (line 822) | function _fnVisbleColumns( oSettings )
  function _fnGetColumns (line 836) | function _fnGetColumns( oSettings, sParam )
  function _fnColumnTypes (line 855) | function _fnColumnTypes ( settings )
  function _fnApplyColumnDefs (line 926) | function _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )
  function _fnAddData (line 1006) | function _fnAddData ( oSettings, aDataIn, nTr, anTds )
  function _fnAddTr (line 1054) | function _fnAddTr( settings, trs )
  function _fnNodeToDataIndex (line 1077) | function _fnNodeToDataIndex( oSettings, n )
  function _fnNodeToColumnIndex (line 1091) | function _fnNodeToColumnIndex( oSettings, iRow, n )
  function _fnGetCellData (line 1106) | function _fnGetCellData( settings, rowIdx, colIdx, type )
  function _fnSetCellData (line 1153) | function _fnSetCellData( settings, rowIdx, colIdx, val )
  function _fnSplitObjNotation (line 1175) | function _fnSplitObjNotation( str )
  function _fnGetObjectDataFn (line 1190) | function _fnGetObjectDataFn( mSource )
  function _fnSetObjectDataFn (line 1313) | function _fnSetObjectDataFn( mSource )
  function _fnGetDataMaster (line 1422) | function _fnGetDataMaster ( settings )
  function _fnClearTable (line 1433) | function _fnClearTable( settings )
  function _fnDeleteIndex (line 1448) | function _fnDeleteIndex( a, iTarget, splice )
  function _fnInvalidate (line 1487) | function _fnInvalidate( settings, rowIdx, src, colIdx )
  function _fnGetRowElements (line 1565) | function _fnGetRowElements( settings, row, colIdx, d )
  function _fnCreateTr (line 1659) | function _fnCreateTr ( oSettings, iRow, nTrIn, anTds )
  function _fnRowAttributes (line 1736) | function _fnRowAttributes( row )
  function _fnBuildHead (line 1774) | function _fnBuildHead( oSettings )
  function _fnDrawHead (line 1860) | function _fnDrawHead( oSettings, aoSource, bIncludeHidden )
  function _fnDraw (line 1958) | function _fnDraw( oSettings )
  function _fnReDraw (line 2099) | function _fnReDraw( settings, holdPosition )
  function _fnAddOptionsHtml (line 2137) | function _fnAddOptionsHtml ( oSettings )
  function _fnDetectHeader (line 2292) | function _fnDetectHeader ( aLayout, nThead )
  function _fnGetUniqueThs (line 2367) | function _fnGetUniqueThs ( oSettings, nHeader, aLayout )
  function _fnBuildAjax (line 2404) | function _fnBuildAjax( oSettings, data, fn )
  function _fnAjaxUpdate (line 2537) | function _fnAjaxUpdate( settings )
  function _fnAjaxParameters (line 2568) | function _fnAjaxParameters( settings )
  function _fnAjaxUpdateDraw (line 2676) | function _fnAjaxUpdateDraw ( settings, json )
  function _fnAjaxDataSrc (line 2726) | function _fnAjaxDataSrc ( oSettings, json )
  function _fnFeatureHtmlFilter (line 2749) | function _fnFeatureHtmlFilter ( settings )
  function _fnFilterComplete (line 2837) | function _fnFilterComplete ( oSettings, oInput, iForce )
  function _fnFilterCustom (line 2890) | function _fnFilterCustom( settings )
  function _fnFilterColumn (line 2927) | function _fnFilterColumn ( settings, searchStr, colIdx, regex, smart, ca...
  function _fnFilter (line 2957) | function _fnFilter( settings, input, force, regex, smart, caseInsensitive )
  function _fnFilterCreateSearch (line 3009) | function _fnFilterCreateSearch( search, regex, smart, caseInsensitive )
  function _fnEscapeRegex (line 3045) | function _fnEscapeRegex ( sVal )
  function _fnFilterData (line 3056) | function _fnFilterData ( settings )
  function _fnSearchToCamel (line 3129) | function _fnSearchToCamel ( obj )
  function _fnSearchToHung (line 3148) | function _fnSearchToHung ( obj )
  function _fnFeatureHtmlInfo (line 3164) | function _fnFeatureHtmlInfo ( settings )
  function _fnUpdateInfo (line 3198) | function _fnUpdateInfo ( settings )
  function _fnInfoMacros (line 3236) | function _fnInfoMacros ( settings, str )
  function _fnInitialise (line 3263) | function _fnInitialise ( settings )
  function _fnInitComplete (line 3344) | function _fnInitComplete ( settings, json )
  function _fnLengthChange (line 3358) | function _fnLengthChange ( settings, val )
  function _fnFeatureHtmlLength (line 3376) | function _fnFeatureHtmlLength ( settings )
  function _fnFeatureHtmlPaginate (line 3437) | function _fnFeatureHtmlPaginate ( settings )
  function _fnPageChange (line 3498) | function _fnPageChange ( settings, action, redraw )
  function _fnFeatureHtmlProcessing (line 3571) | function _fnFeatureHtmlProcessing ( settings )
  function _fnProcessingDisplay (line 3588) | function _fnProcessingDisplay ( settings, show )
  function _fnFeatureHtmlTable (line 3603) | function _fnFeatureHtmlTable ( settings )
  function _fnScrollDraw (line 3767) | function _fnScrollDraw ( settings )
  function _fnApplyToChildren (line 4057) | function _fnApplyToChildren( fn, an1, an2 )
  function _fnCalculateColumnWidths (line 4096) | function _fnCalculateColumnWidths ( oSettings )
  function _fnThrottle (line 4284) | function _fnThrottle( fn, freq ) {
  function _fnConvertToWidth (line 4319) | function _fnConvertToWidth ( width, parent )
  function _fnScrollingWidthAdjust (line 4343) | function _fnScrollingWidthAdjust ( settings, n )
  function _fnGetWidestNode (line 4364) | function _fnGetWidestNode( settings, colIdx )
  function _fnGetMaxLenString (line 4385) | function _fnGetMaxLenString( settings, colIdx )
  function _fnStringToCss (line 4409) | function _fnStringToCss( s )
  function _fnScrollBarWidth (line 4433) | function _fnScrollBarWidth ()
  function _fnSortFlatten (line 4463) | function _fnSortFlatten ( settings )
  function _fnSort (line 4535) | function _fnSort ( oSettings )
  function _fnSortAria (line 4661) | function _fnSortAria ( settings )
  function _fnSortListener (line 4716) | function _fnSortListener ( settings, colIdx, append, callback )
  function _fnSortAttachListener (line 4800) | function _fnSortAttachListener ( settings, attachTo, colIdx, callback )
  function _fnSortingClasses (line 4838) | function _fnSortingClasses( settings )
  function _fnSortData (line 4871) | function _fnSortData( settings, idx )
  function _fnSaveState (line 4914) | function _fnSaveState ( settings )
  function _fnLoadState (line 4949) | function _fnLoadState ( settings, oInit )
  function _fnSettingsFromNode (line 5036) | function _fnSettingsFromNode ( table )
  function _fnLog (line 5055) | function _fnLog( settings, level, msg, tn )
  function _fnMap (line 5096) | function _fnMap( ret, src, name, mappedName )
  function _fnExtend (line 5138) | function _fnExtend( out, extender, breakRefs )
  function _fnBindAction (line 5174) | function _fnBindAction( n, oData, fn )
  function _fnCallbackReg (line 5203) | function _fnCallbackReg( oSettings, sStore, fn, sName )
  function _fnCallbackFire (line 5229) | function _fnCallbackFire( settings, callbackArr, eventName, args )
  function _fnLengthOverflow (line 5251) | function _fnLengthOverflow ( settings )
  function _fnRenderer (line 5276) | function _fnRenderer( settings, type )
  function _fnDataSource (line 5305) | function _fnDataSource ( settings )
  function _numbers (line 14146) | function _numbers ( page, pages ) {
  function _addNumericSort (line 14427) | function _addNumericSort ( decimalPlace ) {
  function _fnExternApiFunc (line 14650) | function _fnExternApiFunc (fn)

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/jquery-knob/excanvas.js
  function getContext (line 56) | function getContext() {
  function bind (line 79) | function bind(f, obj, var_args) {
  function onPropertyChange (line 171) | function onPropertyChange(e) {
  function onResize (line 186) | function onResize(e) {
  function createMatrixIdentity (line 204) | function createMatrixIdentity() {
  function matrixMultiply (line 212) | function matrixMultiply(m1, m2) {
  function copyState (line 229) | function copyState(o1, o2) {
  function processStyle (line 246) | function processStyle(styleString) {
  function processLineCap (line 270) | function processLineCap(lineCap) {
  function CanvasRenderingContext2D_ (line 288) | function CanvasRenderingContext2D_(surfaceElement) {
  function bezierCurveTo (line 355) | function bezierCurveTo(self, cp1, cp2, p) {
  function matrixIsFinite (line 800) | function matrixIsFinite(m) {
  function setM (line 811) | function setM(ctx, m, updateLineScale) {
  function CanvasGradient_ (line 896) | function CanvasGradient_(aType) {
  function CanvasPattern_ (line 914) | function CanvasPattern_() {}

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/jquery-ui/external/jquery/jquery.js
  function isArraylike (line 983) | function isArraylike( obj ) {
  function Sizzle (line 1183) | function Sizzle( selector, context, results, seed ) {
  function createCache (line 1298) | function createCache() {
  function markFunction (line 1316) | function markFunction( fn ) {
  function assert (line 1325) | function assert( fn ) {
  function addHandle (line 1347) | function addHandle( attrs, handler ) {
  function siblingCheck (line 1362) | function siblingCheck( a, b ) {
  function createInputPseudo (line 1389) | function createInputPseudo( type ) {
  function createButtonPseudo (line 1400) | function createButtonPseudo( type ) {
  function createPositionalPseudo (line 1411) | function createPositionalPseudo( fn ) {
  function setFilters (line 2394) | function setFilters() {}
  function tokenize (line 2398) | function tokenize( selector, parseOnly ) {
  function toSelector (line 2465) | function toSelector( tokens ) {
  function addCombinator (line 2475) | function addCombinator( matcher, combinator, base ) {
  function elementMatcher (line 2525) | function elementMatcher( matchers ) {
  function condense (line 2539) | function condense( unmatched, map, filter, context, xml ) {
  function setMatcher (line 2560) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
  function matcherFromTokens (line 2653) | function matcherFromTokens( tokens ) {
  function matcherFromGroupMatchers (line 2708) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
  function multipleContexts (line 2836) | function multipleContexts( selector, contexts, results ) {
  function select (line 2845) | function select( selector, context, results, seed ) {
  function createOptions (line 2985) | function createOptions( options ) {
  function internalData (line 3568) | function internalData( elem, name, data, pvt /* Internal Use Only */ ){
  function internalRemoveData (line 3657) | function internalRemoveData( elem, name, pvt ) {
  function dataAttr (line 3854) | function dataAttr( elem, key, data ) {
  function isEmptyDataObject (line 3886) | function isEmptyDataObject( obj ) {
  function returnTrue (line 4712) | function returnTrue() {
  function returnFalse (line 4716) | function returnFalse() {
  function safeActiveElement (line 4720) | function safeActiveElement() {
  function sibling (line 5838) | function sibling( cur, dir ) {
  function winnow (line 5956) | function winnow( elements, qualifier, not ) {
  function createSafeFragment (line 5984) | function createSafeFragment( document ) {
  function manipulationTarget (line 6298) | function manipulationTarget( elem, content ) {
  function disableScript (line 6308) | function disableScript( elem ) {
  function restoreScript (line 6312) | function restoreScript( elem ) {
  function setGlobalEval (line 6323) | function setGlobalEval( elems, refElements ) {
  function cloneCopyEvent (line 6331) | function cloneCopyEvent( src, dest ) {
  function fixCloneNodeIssues (line 6359) | function fixCloneNodeIssues( src, dest ) {
  function getAll (line 6452) | function getAll( context, tag ) {
  function fixDefaultChecked (line 6475) | function fixDefaultChecked( elem ) {
  function vendorPropName (line 6817) | function vendorPropName( style, name ) {
  function isHidden (line 6839) | function isHidden( elem, el ) {
  function showHide (line 6846) | function showHide( elements, show ) {
  function setPositiveNumber (line 7175) | function setPositiveNumber( elem, value, subtract ) {
  function augmentWidthOrHeight (line 7183) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
  function getWidthOrHeight (line 7222) | function getWidthOrHeight( elem, name, extra ) {
  function css_defaultDisplay (line 7266) | function css_defaultDisplay( nodeName ) {
  function actualDisplay (line 7298) | function actualDisplay( name, doc ) {
  function buildParams (line 7527) | function buildParams( prefix, obj, traditional, add ) {
  function addToPrefiltersOrTransports (line 7642) | function addToPrefiltersOrTransports( structure ) {
  function inspectPrefiltersOrTransports (line 7674) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
  function ajaxExtend (line 7701) | function ajaxExtend( target, src ) {
  function done (line 8149) | function done( status, nativeStatusText, responses, headers ) {
  function ajaxHandleResponses (line 8296) | function ajaxHandleResponses( s, jqXHR, responses ) {
  function ajaxConvert (line 8351) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
  function createStandardXHR (line 8619) | function createStandardXHR() {
  function createActiveXHR (line 8625) | function createActiveXHR() {
  function createFxNow (line 8871) | function createFxNow() {
  function createTween (line 8878) | function createTween( value, prop, animation ) {
  function Animation (line 8892) | function Animation( elem, properties, options ) {
  function propFilter (line 8996) | function propFilter( props, specialEasing ) {
  function defaultPrefilter (line 9063) | function defaultPrefilter( elem, props, opts ) {
  function Tween (line 9188) | function Tween( elem, options, prop, end, easing ) {
  function genFx (line 9412) | function genFx( type, includeWidth ) {
  function getWindow (line 9708) | function getWindow( elem ) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/jquery-ui/jquery-ui.js
  function focusable (line 94) | function focusable( element, isTabIndexNotNaN ) {
  function visible (line 115) | function visible( element ) {
  function reduce (line 157) | function reduce( elem, size, border, margin ) {
  function handlerProxy (line 716) | function handlerProxy() {
  function handlerProxy (line 758) | function handlerProxy() {
  function getOffsets (line 1071) | function getOffsets( offsets, width, height ) {
  function parseCss (line 1078) | function parseCss( element, property ) {
  function getDimensions (line 1082) | function getDimensions( elem ) {
  function datepicker_getZindex (line 3784) | function datepicker_getZindex( elem ) {
  function Datepicker (line 3811) | function Datepicker() {
  function datepicker_bindHover (line 5754) | function datepicker_bindHover(dpDiv) {
  function datepicker_handleMouseover (line 5768) | function datepicker_handleMouseover() {
  function datepicker_extendRemove (line 5782) | function datepicker_extendRemove(target, props) {
  function checkFocus (line 8386) | function checkFocus() {
  function filteredUi (line 8570) | function filteredUi( ui ) {
  function filteredUi (line 8617) | function filteredUi( ui ) {
  function isOverAxis (line 9161) | function isOverAxis( x, reference, size ) {
  function clamp (line 9517) | function clamp( value, prop, allowEmpty ) {
  function stringParse (line 9543) | function stringParse( string ) {
  function hue2rgb (line 9793) | function hue2rgb( p, q, h ) {
  function getElementStyles (line 10059) | function getElementStyles( elem ) {
  function styleDifference (line 10086) | function styleDifference( oldStyle, newStyle ) {
  function _normalizeArguments (line 10406) | function _normalizeArguments( effect, options, speed, callback ) {
  function standardAnimationOption (line 10458) | function standardAnimationOption( option ) {
  function run (line 10503) | function run( next ) {
  function childComplete (line 10983) | function childComplete() {
  function animComplete (line 11032) | function animComplete() {
  function addItems (line 14129) | function addItems() {
  function delayEvent (line 14710) | function delayEvent( type, instance, container ) {
  function spinner_modifier (line 14799) | function spinner_modifier( fn ) {
  function checkFocus (line 14923) | function checkFocus() {
  function constrain (line 15517) | function constrain() {
  function complete (line 15893) | function complete() {
  function show (line 15898) | function show() {
  function position (line 16428) | function position( event ) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/jquery.filer/php/class.uploader.php
  class Uploader (line 13) | class Uploader {
    method __construct (line 61) | public function __construct(){
    method upload (line 75) | public function upload($field, $options = null){
    method initialize (line 90) | private function initialize($field, $options){
    method setOptions (line 124) | private function setOptions($options){
    method validate (line 135) | private function validate($file = null){
    method prepareFiles (line 191) | private function prepareFiles(){
    method uploadFile (line 256) | private function uploadFile($source, $destination){
    method removeFiles (line 270) | private function removeFiles(){
    method downloadFile (line 293) | private function downloadFile($source, $destination, $info = false){
    method generateFileName (line 329) | private function generateFileName($conf, $file){
    method isJson (line 372) | function isJson($string) {
    method isURL (line 383) | private function isURL($url){
    method formatSize (line 393) | private function formatSize($bytes){
    method _onCheck (line 407) | private function _onCheck(){
    method _onSuccess (line 412) | private function _onSuccess(){
    method _onError (line 417) | private function _onError(){
    method _onUpload (line 422) | private function _onUpload(){
    method _onComplete (line 427) | private function _onComplete(){
    method _onRemove (line 432) | private function _onRemove(){

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/jquery.filer/php/upload.php
  function onFilesRemoveCallback (line 32) | function onFilesRemoveCallback($removed_files){

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/jsgrid/js/jsgrid.js
  function Grid (line 59) | function Grid(element, config) {
  function LoadIndicator (line 1475) | function LoadIndicator(config) {
  function DirectLoadingStrategy (line 1558) | function DirectLoadingStrategy(grid) {
  function PageLoadingStrategy (line 1619) | function PageLoadingStrategy(grid) {
  function Validation (line 1718) | function Validation(config) {
  function Field (line 1854) | function Field(config) {
  function TextField (line 1929) | function TextField(config) {
  function NumberField (line 1999) | function NumberField(config) {
  function TextAreaField (line 2035) | function TextAreaField(config) {
  function SelectField (line 2072) | function SelectField(config) {
  function CheckboxField (line 2192) | function CheckboxField(config) {
  function ControlField (line 2290) | function ControlField(config) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/justgage-toorshia/justgage.js
  function getColor (line 906) | function getColor(val, pct, col, noGradient, custSec) {
  function setDy (line 959) | function setDy(elem, fontSize, txtYpos) {
  function getRandomInt (line 966) | function getRandomInt (min, max) {
  function cutHex (line 971) | function cutHex(str) {
  function humanFriendlyNumber (line 976) | function humanFriendlyNumber( n, d ) {
  function formatNumber (line 992) | function formatNumber(x) {
  function getStyle (line 999) | function getStyle(oElm, strCssRule){
  function onCreateElementNsReady (line 1014) | function onCreateElementNsReady(func) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/masonry/dist/masonry.pkgd.js
  function noop (line 23) | function noop() {}
  function defineBridget (line 27) | function defineBridget( $ ) {
  function getIEEvent (line 168) | function getIEEvent( obj ) {
  function EventEmitter (line 248) | function EventEmitter() {}
  function indexOfListener (line 263) | function indexOfListener(listeners, listener) {
  function alias (line 281) | function alias(name) {
  function getStyleProperty (line 722) | function getStyleProperty( propName ) {
  function getStyleSize (line 777) | function getStyleSize( value ) {
  function noop (line 784) | function noop() {}
  function getZeroSize (line 808) | function getZeroSize() {
  function defineGetSize (line 826) | function defineGetSize( getStyleProperty ) {
  function docReady (line 1029) | function docReady( fn ) {
  function onReady (line 1047) | function onReady( event ) {
  function trigger (line 1057) | function trigger() {
  function defineDocReady (line 1066) | function defineDocReady( eventie ) {
  function match (line 1129) | function match( elem, selector ) {
  function checkParent (line 1135) | function checkParent( elem ) {
  function query (line 1148) | function query( elem, selector ) {
  function matchChild (line 1166) | function matchChild( elem, selector ) {
  function setText (line 1325) | function setText( elem, text ) {
  function isEmptyObj (line 1527) | function isEmptyObj( obj ) {
  function Item (line 1572) | function Item( element, layout ) {
  function toDashedAll (line 1830) | function toDashedAll( str ) {
  function Outlayer (line 2126) | function Outlayer( element, options ) {
  function onComplete (line 2474) | function onComplete() {
  function tick (line 2485) | function tick() {
  function delayed (line 2697) | function delayed() {
  function Layout (line 2933) | function Layout() {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/matches-selector/matches-selector.js
  function match (line 37) | function match( elem, selector ) {
  function checkParent (line 43) | function checkParent( elem ) {
  function query (line 56) | function query( elem, selector ) {
  function matchChild (line 74) | function matchChild( elem, selector ) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/mocha/mocha.js
  function require (line 5) | function require(p){
  function clonePath (line 78) | function clonePath(path) {
  function removeEmpty (line 81) | function removeEmpty(array) {
  function escapeHTML (line 90) | function escapeHTML(s) {
  function contextLines (line 254) | function contextLines(lines) {
  function eofNL (line 257) | function eofNL(curRange, i, current) {
  function isArray (line 429) | function isArray(obj) {
  function EventEmitter (line 439) | function EventEmitter(){}
  function on (line 474) | function on () {
  function Progress (line 617) | function Progress() {
  function Context (line 766) | function Context(){}
  function Hook (line 847) | function Hook(title, fn) {
  function F (line 856) | function F(){}
  function visit (line 1054) | function visit(obj) {
  function image (line 1406) | function image(name) {
  function Mocha (line 1428) | function Mocha(options) {
  function parse (line 1775) | function parse(str) {
  function shortFormat (line 1814) | function shortFormat(ms) {
  function longFormat (line 1830) | function longFormat(ms) {
  function plural (line 1842) | function plural(ms, n, name) {
  function Base (line 2070) | function Base(runner) {
  function pad (line 2178) | function pad(str, len) {
  function inlineDiff (line 2192) | function inlineDiff(err, escape) {
  function unifiedDiff (line 2226) | function unifiedDiff(err, escape) {
  function errorDiff (line 2258) | function errorDiff(err, type, escape) {
  function escapeInvisibles (line 2275) | function escapeInvisibles(line) {
  function colorLines (line 2290) | function colorLines(name, str) {
  function stringify (line 2304) | function stringify(obj) {
  function canonicalize (line 2316) | function canonicalize(obj, stack) {
  function sameType (line 2352) | function sameType(a, b) {
  function Doc (line 2383) | function Doc(runner) {
  function Dot (line 2443) | function Dot(runner) {
  function F (line 2483) | function F(){}
  function HTMLCov (line 2512) | function HTMLCov(runner) {
  function coverageClass (line 2536) | function coverageClass(n) {
  function HTML (line 2589) | function HTML(runner, root) {
  function error (line 2749) | function error(msg) {
  function fragment (line 2757) | function fragment(html) {
  function hideSuitesWithout (line 2777) | function hideSuitesWithout(classname) {
  function unhide (line 2789) | function unhide() {
  function text (line 2800) | function text(el, str) {
  function on (line 2812) | function on(el, event, fn) {
  function JSONCov (line 2866) | function JSONCov(runner, output) {
  function map (line 2909) | function map(cov) {
  function coverage (line 2948) | function coverage(filename, data) {
  function clean (line 2991) | function clean(test) {
  function List (line 3023) | function List(runner) {
  function clean (line 3056) | function clean(test) {
  function JSONReporter (line 3088) | function JSONReporter(runner) {
  function clean (line 3129) | function clean(test) {
  function Landing (line 3179) | function Landing(runner) {
  function F (line 3235) | function F(){}
  function List (line 3265) | function List(runner) {
  function F (line 3306) | function F(){}
  function Markdown (line 3335) | function Markdown(runner) {
  function Min (line 3429) | function Min(runner) {
  function F (line 3446) | function F(){}
  function NyanCat (line 3475) | function NyanCat(runner) {
  function draw (line 3539) | function draw(color, n) {
  function write (line 3706) | function write(string) {
  function F (line 3714) | function F(){}
  function Progress (line 3752) | function Progress(runner, options) {
  function F (line 3808) | function F(){}
  function Spec (line 3839) | function Spec(runner) {
  function F (line 3899) | function F(){}
  function TAP (line 3930) | function TAP(runner) {
  function title (line 3978) | function title(test) {
  function XUnit (line 4017) | function XUnit(runner) {
  function F (line 4055) | function F(){}
  function test (line 4065) | function test(test) {
  function tag (line 4087) | function tag(name, attrs, close, content) {
  function cdata (line 4105) | function cdata(str) {
  function Runnable (line 4151) | function Runnable(title, fn) {
  function F (line 4165) | function F(){}
  function multiple (line 4297) | function multiple(err) {
  function done (line 4304) | function done(err) {
  function Runner (line 4397) | function Runner(suite) {
  function F (line 4423) | function F(){}
  function next (line 4595) | function next(i) {
  function next (line 4644) | function next(suite) {
  function hookErr (line 4745) | function hookErr(err, errSuite, after) {
  function next (line 4769) | function next(err, errSuite) {
  function next (line 4843) | function next(errSuite) {
  function done (line 4864) | function done(errSuite) {
  function uncaught (line 4917) | function uncaught(err){
  function filterLeaks (line 4963) | function filterLeaks(ok, globals) {
  function extraGlobals (line 4995) | function extraGlobals() {
  function Suite (line 5064) | function Suite(title, ctx) {
  function F (line 5084) | function F(){}
  function Test (line 5341) | function Test(title, fn) {
  function F (line 5351) | function F(){}
  function ignored (line 5520) | function ignored(path){
  function highlight (line 5634) | function highlight(js) {
  function timeslice (line 5730) | function timeslice() {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/modal-effect/js/classie.js
  function classReg (line 20) | function classReg( className ) {
  function toggleClass (line 53) | function toggleClass( elem, c ) {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/modal-effect/js/modalEffects.js
  function init (line 13) | function init() {

FILE: src/Pos.WebApplication/wwwroot/theme2-assets/plugins/moment/moment.js
  function utils_hooks__hooks (line 15) | function utils_hooks__hooks () {
  function setHookCallback (line 21) | function setHookCallback (callback) {
  function isArray (line 25) | function isArray(input) {
  function isObject (line 29) | function isObject(input) {
  function isObjectEmpty (line 33) | function isObjectEmpty(obj) {
  function isDate (line 42) | function isDate(input) {
  function map (line 46) | function map(arr, fn) {
  function hasOwnProp (line 54) | function hasOwnProp(a, b) {
  function extend (line 58) | function extend(a, b) {
  function create_utc__createUTC (line 76) | function create_utc__createUTC (input, format, locale, strict) {
  function defaultParsingFlags (line 80) | function defaultParsingFlags() {
  function getParsingFlags (line 98) | function getParsingFlags(m) {
  function valid__isValid (line 123) | function valid__isValid(m) {
  function valid__createInvalid (line 149) | function valid__createInvalid (flags) {
  function isUndefined (line 161) | function isUndefined(input) {
  function copyConfig (line 169) | function copyConfig(to, from) {
  function Moment (line 219) | function Moment(config) {
  function isMoment (line 231) | function isMoment (obj) {
  function absFloor (line 235) | function absFloor (number) {
  function toInt (line 244) | function toInt(argumentForCoercion) {
  function compareArrays (line 256) | function compareArrays(array1, array2, dontConvert) {
  function warn (line 270) | function warn(msg) {
  function deprecate (line 277) | function deprecate(msg, fn) {
  function deprecateSimple (line 294) | function deprecateSimple(name, msg) {
  function isFunction (line 307) | function isFunction(input) {
  function locale_set__set (line 311) | function locale_set__set (config) {
  function mergeConfigs (line 327) | function mergeConfigs(parentConfig, childConfig) {
  function Locale (line 353) | function Locale(config) {
  function locale_calendar__calendar (line 384) | function locale_calendar__calendar (key, mom, now) {
  function longDateFormat (line 398) | function longDateFormat (key) {
  function invalidDate (line 415) | function invalidDate () {
  function ordinal (line 422) | function ordinal (number) {
  function relative__relativeTime (line 442) | function relative__relativeTime (number, withoutSuffix, string, isFuture) {
  function pastFuture (line 449) | function pastFuture (diff, output) {
  function addUnitAlias (line 456) | function addUnitAlias (unit, shorthand) {
  function normalizeUnits (line 461) | function normalizeUnits(units) {
  function normalizeObjectUnits (line 465) | function normalizeObjectUnits(inputObject) {
  function addUnitPriority (line 484) | function addUnitPriority(unit, priority) {
  function getPrioritizedUnits (line 488) | function getPrioritizedUnits(unitsObj) {
  function makeGetSet (line 499) | function makeGetSet (unit, keepTime) {
  function get_set__get (line 511) | function get_set__get (mom, unit) {
  function get_set__set (line 516) | function get_set__set (mom, unit, value) {
  function stringGet (line 524) | function stringGet (units) {
  function stringSet (line 533) | function stringSet (units, value) {
  function zeroFill (line 549) | function zeroFill(number, targetLength, forceSign) {
  function addFormatToken (line 569) | function addFormatToken (token, padded, ordinal, callback) {
  function removeFormattingTokens (line 591) | function removeFormattingTokens(input) {
  function makeFormatFunction (line 598) | function makeFormatFunction(format) {
  function formatMoment (line 619) | function formatMoment(m, format) {
  function expandFormat (line 630) | function expandFormat(format, locale) {
  function addRegexToken (line 674) | function addRegexToken (token, regex, strictRegex) {
  function getParseRegexForToken (line 680) | function getParseRegexForToken (token, config) {
  function unescapeFormat (line 689) | function unescapeFormat(s) {
  function regexEscape (line 695) | function regexEscape(s) {
  function addParseToken (line 701) | function addParseToken (token, callback) {
  function addWeekParseToken (line 716) | function addWeekParseToken (token, callback) {
  function addTimeToArrayFromToken (line 723) | function addTimeToArrayFromToken(token, input, config) {
  function daysInMonth (line 756) | function daysInMonth(year, month) {
  function localeMonths (line 811) | function localeMonths (m, format) {
  function localeMonthsShort (line 817) | function localeMonthsShort (m, format) {
  function units_month__handleStrictParse (line 822) | function units_month__handleStrictParse(monthName, format, strict) {
  function localeMonthsParse (line 863) | function localeMonthsParse (monthName, format, strict) {
  function setMonth (line 903) | function setMonth (mom, value) {
  function getSetMonth (line 928) | function getSetMonth (value) {
  function getDaysInMonth (line 938) | function getDaysInMonth () {
  function monthsShortRegex (line 943) | function monthsShortRegex (isStrict) {
  function monthsRegex (line 963) | function monthsRegex (isStrict) {
  function computeMonthsParse (line 982) | function computeMonthsParse () {
  function daysInYear (line 1060) | function daysInYear(year) {
  function isLeapYear (line 1064) | function isLeapYear(year) {
  function getIsLeapYear (line 1078) | function getIsLeapYear () {
  function createDate (line 1082) | function createDate (y, m, d, h, M, s, ms) {
  function createUTCDate (line 1094) | function createUTCDate (y) {
  function firstWeekOffset (line 1105) | function firstWeekOffset(year, dow, doy) {
  function dayOfYearFromWeeks (line 1115) | function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
  function weekOfYear (line 1138) | function weekOfYear(mom, dow, doy) {
  function weeksInYear (line 1160) | function weeksInYear(year, dow, doy) {
  function localeWeek (line 1196) | function localeWeek (mom) {
  function localeFirstDayOfWeek (line 1205) | function localeFirstDayOfWeek () {
  function localeFirstDayOfYear (line 1209) | function localeFirstDayOfYear () {
  function getSetWeek (line 1215) | function getSetWeek (input) {
  function getSetISOWeek (line 1220) | function getSetISOWeek (input) {
  function parseWeekday (line 1286) | function parseWeekday(input, locale) {
  function parseIsoWeekday (line 1303) | function parseIsoWeekday(input, locale) {
  function localeWeekdays (line 1313) | function localeWeekdays (m, format) {
  function localeWeekdaysShort (line 1319) | function localeWeekdaysShort (m) {
  function localeWeekdaysMin (line 1324) | function localeWeekdaysMin (m) {
  function day_of_week__handleStrictParse (line 1328) | function day_of_week__handleStrictParse(weekdayName, format, strict) {
  function localeWeekdaysParse (line 1392) | function localeWeekdaysParse (weekdayName, format, strict) {
  function getSetDayOfWeek (line 1434) | function getSetDayOfWeek (input) {
  function getSetLocaleDayOfWeek (line 1447) | function getSetLocaleDayOfWeek (input) {
  function getSetISODayOfWeek (line 1455) | function getSetISODayOfWeek (input) {
  function weekdaysRegex (line 1473) | function weekdaysRegex (isStrict) {
  function weekdaysShortRegex (line 1493) | function weekdaysShortRegex (isStrict) {
  function weekdaysMinRegex (line 1513) | function weekdaysMinRegex (isStrict) {
  function computeWeekdaysParse (line 1533) | function computeWeekdaysParse () {
  function hFormat (line 1576) | function hFormat() {
  function kFormat (line 1580) | function kFormat() {
  function meridiem (line 1606) | function meridiem (token, lowercase) {
  function matchMeridiem (line 1624) | function matchMeridiem (isStrict, locale) {
  function localeIsPM (line 1678) | function localeIsPM (input) {
  function localeMeridiem (line 1685) | function localeMeridiem (hours, minutes, isLower) {
  function normalizeLocale (line 1726) | function normalizeLocale(key) {
  function chooseLocale (line 1733) | function chooseLocale(names) {
  function loadLocale (line 1757) | function loadLocale(name) {
  function locale_locales__getSetGlobalLocale (line 1776) | function locale_locales__getSetGlobalLocale (key, values) {
  function defineLocale (line 1795) | function defineLocale (name, config) {
  function updateLocale (line 1828) | function updateLocale(name, config) {
  function locale_locales__getLocale (line 1856) | function locale_locales__getLocale (key) {
  function locale_locales__listLocales (line 1879) | function locale_locales__listLocales() {
  function checkOverflow (line 1883) | function checkOverflow (m) {
  function configFromISO (line 1951) | function configFromISO(config) {
  function configFromString (line 2004) | function configFromString(config) {
  function defaults (line 2030) | function defaults(a, b, c) {
  function currentDateArray (line 2040) | function currentDateArray(config) {
  function configFromArray (line 2053) | function configFromArray (config) {
  function dayOfYearFromWeekInfo (line 2115) | function dayOfYearFromWeekInfo(config) {
  function configFromStringAndFormat (line 2172) | function configFromStringAndFormat(config) {
  function meridiemFixWrap (line 2241) | function meridiemFixWrap (locale, hour, meridiem) {
  function configFromStringAndArray (line 2267) | function configFromStringAndArray(config) {
  function configFromObject (line 2311) | function configFromObject(config) {
  function createFromConfig (line 2324) | function createFromConfig (config) {
  function prepareConfig (line 2335) | function prepareConfig (config) {
  function configFromInput (line 2368) | function configFromInput(config) {
  function createLocalOrUTC (line 2391) | function createLocalOrUTC (input, format, locale, strict, isUTC) {
  function local__createLocal (line 2415) | function local__createLocal (input, format, locale, strict) {
  function pickBy (line 2448) | function pickBy(fn, moments) {
  function min (line 2466) | function min () {
  function max (line 2472) | function max () {
  function Duration (line 2482) | function Duration (duration) {
  function isDuration (line 2517) | function isDuration (obj) {
  function offset (line 2523) | function offset (token, separator) {
  function offsetFromString (line 2554) | function offsetFromString(matcher, string) {
  function cloneWithOffset (line 2564) | function cloneWithOffset(input, model) {
  function getDateOffset (line 2578) | function getDateOffset (m) {
  function getSetOffset (line 2602) | function getSetOffset (input, keepLocalTime) {
  function getSetZone (line 2637) | function getSetZone (input, keepLocalTime) {
  function setOffsetToUTC (line 2651) | function setOffsetToUTC (keepLocalTime) {
  function setOffsetToLocal (line 2655) | function setOffsetToLocal (keepLocalTime) {
  function setOffsetToParsedOffset (line 2667) | function setOffsetToParsedOffset () {
  function hasAlignedHourOffset (line 2676) | function hasAlignedHourOffset (input) {
  function isDaylightSavingTime (line 2685) | function isDaylightSavingTime () {
  function isDaylightSavingTimeShifted (line 2692) | function isDaylightSavingTimeShifted () {
  function isLocal (line 2713) | function isLocal () {
  function isUtcOffset (line 2717) | function isUtcOffset () {
  function isUtc (line 2721) | function isUtc () {
  function create__createDuration (line 2733) | function create__createDuration (input, key) {
  function parseIso (line 2796) | function parseIso (inp, sign) {
  function positiveMomentsDifference (line 2805) | function positiveMomentsDifference(base, other) {
  function momentsDifference (line 2819) | function momentsDifference(base, other) {
  function absRound (line 2837) | function absRound (number) {
  function createAdder (line 2846) | function createAdder(direction, name) {
  function add_subtract__addSubtract (line 2863) | function add_subtract__addSubtract (mom, duration, isAdding, updateOffse...
  function getCalendarFormat (line 2892) | function getCalendarFormat(myMoment, now) {
  function moment_calendar__calendar (line 2902) | function moment_calendar__calendar (time, formats) {
  function clone (line 2914) | function clone () {
  function isAfter (line 2918) | function isAfter (input, units) {
  function isBefore (line 2931) | function isBefore (input, units) {
  function isBetween (line 2944) | function isBetween (from, to, units, inclusivity) {
  function isSame (line 2950) | function isSame (input, units) {
  function isSameOrAfter (line 2965) | function isSameOrAfter (input, units) {
  function isSameOrBefore (line 2969) | function isSameOrBefore (input, units) {
  function diff (line 2973) | function diff (input, units, asFloat) {
  function monthDiff (line 3011) | function monthDiff (a, b) {
  function toString (line 3035) | function toString () {
  function moment_format__toISOString (line 3039) | function moment_format__toISOString () {
  function format (line 3053) | function format (inputString) {
  function from (line 3061) | function from (time, withoutSuffix) {
  function fromNow (line 3071) | function fromNow (withoutSuffix) {
  function to (line 3075) | function to (time, withoutSuffix) {
  function toNow (line 3085) | function toNow (withoutSuffix) {
  function locale (line 3092) | function locale (key) {
  function localeData (line 3117) | function localeData () {
  function startOf (line 3121) 
Copy disabled (too large) Download .json
Condensed preview — 901 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (12,921K chars).
[
  {
    "path": ".circleci/config.yml",
    "chars": 424,
    "preview": "version: 2\njobs:\n  build:\n    docker:\n      - image: mcr.microsoft.com/dotnet/core/sdk:2.2\n    steps:\n      - checkout\n "
  },
  {
    "path": ".gitignore",
    "chars": 311,
    "preview": "\n#Ignore thumbnails created by Windows\nThumbs.db\n#Ignore files built by Visual Studio\n*.obj\n*.exe\n*.pdb\n*.user\n*.aps\n*.p"
  },
  {
    "path": "README.md",
    "chars": 5126,
    "preview": "# POS - DDD, Reactive Microservices, CQRS Event Sourcing Powered by DERMAYON LIBRARY\nSample Application DDD Reactive Mic"
  },
  {
    "path": "src/.dockerignore",
    "chars": 316,
    "preview": "**/.classpath\n**/.dockerignore\n**/.env\n**/.git\n**/.gitignore\n**/.project\n**/.settings\n**/.toolstarget\n**/.vs\n**/.vscode\n"
  },
  {
    "path": "src/Pos.Customer.Domain/CustomerAggregate/ICustomerRepository.cs",
    "chars": 264,
    "preview": "using Dermayon.Infrastructure.Data.EFRepositories.Contracts;\nusing System;\nusing System.Collections.Generic;\nusing Syst"
  },
  {
    "path": "src/Pos.Customer.Domain/CustomerAggregate/MstCustomer.cs",
    "chars": 320,
    "preview": "using Dermayon.Common.Domain;\nusing System;\nusing System.Collections.Generic;\n\nnamespace Pos.Customer.Domain.CustomerAg"
  },
  {
    "path": "src/Pos.Customer.Domain/Pos.Customer.Domain.csproj",
    "chars": 491,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>netcoreapp2.2</TargetFramework>\n  </PropertyGr"
  },
  {
    "path": "src/Pos.Customer.Infrastructure/EventSources/POSCustomerEventContext.cs",
    "chars": 378,
    "preview": "using Dermayon.Infrastructure.Data.MongoRepositories;\nusing System;\nusing System.Collections.Generic;\nusing System.Text"
  },
  {
    "path": "src/Pos.Customer.Infrastructure/EventSources/POSCustomerEventContextSetting.cs",
    "chars": 256,
    "preview": "using Dermayon.Infrastructure.Data.MongoRepositories;\nusing System;\nusing System.Collections.Generic;\nusing System.Text"
  },
  {
    "path": "src/Pos.Customer.Infrastructure/POSCustomerContext.cs",
    "chars": 1377,
    "preview": "using Microsoft.EntityFrameworkCore;\nusing Pos.Customer.Domain.CustomerAggregate;\n\nnamespace Pos.Customer.Infrastructur"
  },
  {
    "path": "src/Pos.Customer.Infrastructure/Pos.Customer.Infrastructure.csproj",
    "chars": 329,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>netcoreapp2.2</TargetFramework>\n  </PropertyGr"
  },
  {
    "path": "src/Pos.Customer.Infrastructure/Repositories/CustomeRepository.cs",
    "chars": 499,
    "preview": "using Dermayon.Infrastructure.Data.EFRepositories;\nusing Pos.Customer.Domain.CustomerAggregate;\nusing System;\nusing Sys"
  },
  {
    "path": "src/Pos.Customer.WebApi/Application/Commands/CreateCustomerCommand.cs",
    "chars": 373,
    "preview": "using Dermayon.Common.Domain;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading"
  },
  {
    "path": "src/Pos.Customer.WebApi/Application/Commands/CreateCustomerCommandHandler.cs",
    "chars": 1464,
    "preview": "using Dermayon.Common.Domain;\nusing Dermayon.Common.Infrastructure.Data.Contracts;\nusing Dermayon.Infrastructure.EvenMe"
  },
  {
    "path": "src/Pos.Customer.WebApi/Application/Commands/DeleteCustomerCommand.cs",
    "chars": 336,
    "preview": "using Dermayon.Common.Domain;\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel.DataAnnotatio"
  },
  {
    "path": "src/Pos.Customer.WebApi/Application/Commands/DeleteCustomerCommandHandler.cs",
    "chars": 1399,
    "preview": "using Dermayon.Common.Domain;\nusing Dermayon.Common.Infrastructure.Data.Contracts;\nusing Dermayon.Infrastructure.EvenMe"
  },
  {
    "path": "src/Pos.Customer.WebApi/Application/Commands/UpdateCustomerCommand.cs",
    "chars": 418,
    "preview": "using Dermayon.Common.Domain;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading"
  },
  {
    "path": "src/Pos.Customer.WebApi/Application/Commands/UpdateCustomerCommandHandler.cs",
    "chars": 1477,
    "preview": "using Dermayon.Common.Domain;\nusing Dermayon.Common.Infrastructure.Data.Contracts;\nusing Dermayon.Infrastructure.EvenMe"
  },
  {
    "path": "src/Pos.Customer.WebApi/Application/EventHandlers/CustomerCreateEventHandler.cs",
    "chars": 1863,
    "preview": "using AutoMapper;\nusing Dermayon.Common.CrossCutting;\nusing Dermayon.Common.Infrastructure.EventMessaging;\nusing Dermay"
  },
  {
    "path": "src/Pos.Customer.WebApi/Application/EventHandlers/CustomerDeleteEventHandler.cs",
    "chars": 2085,
    "preview": "using AutoMapper;\nusing Dermayon.Common.CrossCutting;\nusing Dermayon.Common.Infrastructure.EventMessaging;\nusing Dermay"
  },
  {
    "path": "src/Pos.Customer.WebApi/Application/EventHandlers/CustomerUpdateEventHandler.cs",
    "chars": 2237,
    "preview": "using AutoMapper;\nusing Dermayon.Common.CrossCutting;\nusing Dermayon.Common.Infrastructure.EventMessaging;\nusing Dermay"
  },
  {
    "path": "src/Pos.Customer.WebApi/Application/Queries/CustomerQueries.cs",
    "chars": 2122,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Dermayon.Common."
  },
  {
    "path": "src/Pos.Customer.WebApi/Application/Queries/ICustomerQueries.cs",
    "chars": 416,
    "preview": "using Pos.Customer.Domain.CustomerAggregate;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing S"
  },
  {
    "path": "src/Pos.Customer.WebApi/ApplicationBootsraper.cs",
    "chars": 3966,
    "preview": "using AutoMapper;\nusing Dermayon.Common.Domain;\nusing Dermayon.Infrastructure.EvenMessaging.Kafka;\nusing Microsoft.Enti"
  },
  {
    "path": "src/Pos.Customer.WebApi/Controllers/CustomerController.cs",
    "chars": 4646,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading;\nusing System.Threading.Tasks"
  },
  {
    "path": "src/Pos.Customer.WebApi/Controllers/ValuesController.cs",
    "chars": 983,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Microsoft.AspNet"
  },
  {
    "path": "src/Pos.Customer.WebApi/Dockerfile",
    "chars": 905,
    "preview": "FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base\nWORKDIR /app\nEXPOSE 80\n\nFROM mcr.microsoft.com/dotnet"
  },
  {
    "path": "src/Pos.Customer.WebApi/Dockerfile.original",
    "chars": 641,
    "preview": "FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base\nWORKDIR /app\nEXPOSE 80\n\nFROM mcr.microsoft.com/dotnet"
  },
  {
    "path": "src/Pos.Customer.WebApi/Mapping/CommandToEventMapperProfile.cs",
    "chars": 410,
    "preview": "using AutoMapper;\nusing Pos.Customer.WebApi.Application.Commands;\nusing Pos.Event.Contracts;\n\nnamespace Pos.Customer.We"
  },
  {
    "path": "src/Pos.Customer.WebApi/Mapping/DomainToCommandMapperProfile.cs",
    "chars": 548,
    "preview": "using AutoMapper;\nusing Pos.Customer.Domain.CustomerAggregate;\nusing Pos.Customer.WebApi.Application.Commands;\nusing Sy"
  },
  {
    "path": "src/Pos.Customer.WebApi/Mapping/EventoDomainMapperProfile.cs",
    "chars": 595,
    "preview": "using AutoMapper;\nusing Pos.Customer.Domain.CustomerAggregate;\nusing Pos.Event.Contracts;\nusing System;\n\nnamespace Pos."
  },
  {
    "path": "src/Pos.Customer.WebApi/Pos.Customer.WebApi.csproj",
    "chars": 990,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n\n  <PropertyGroup>\n    <TargetFramework>netcoreapp2.2</TargetFramework>\n    <AspNe"
  },
  {
    "path": "src/Pos.Customer.WebApi/Program.cs",
    "chars": 615,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing"
  },
  {
    "path": "src/Pos.Customer.WebApi/Properties/launchSettings.json",
    "chars": 971,
    "preview": "{\n  \"iisSettings\": {\n    \"windowsAuthentication\": false,\n    \"anonymousAuthentication\": true,\n    \"iisExpress\": {\n      "
  },
  {
    "path": "src/Pos.Customer.WebApi/SeedingData/DbSeeder.cs",
    "chars": 1082,
    "preview": "using Microsoft.Extensions.DependencyInjection;\nusing Pos.Customer.Domain.CustomerAggregate;\nusing Pos.Customer.Infrast"
  },
  {
    "path": "src/Pos.Customer.WebApi/Startup.cs",
    "chars": 1413,
    "preview": "using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.AspNetCore.Mvc;\nusing Microsoft"
  },
  {
    "path": "src/Pos.Customer.WebApi/appsettings.Development.json",
    "chars": 701,
    "preview": "{\n  \"ConnectionStrings\": {\n    \"CUSTOMER_COMMAND_CONNECTION\": {\n      \"ServerConnection\": \"mongodb://root:password@mongo"
  },
  {
    "path": "src/Pos.Customer.WebApi/appsettings.json",
    "chars": 97,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Warning\"\n    }\n  },\n  \"AllowedHosts\": \"*\"\n}\n"
  },
  {
    "path": "src/Pos.Event.Contracts/AppGlobalTopic.cs",
    "chars": 202,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace Pos.Event.Contracts\n{\n    public class Ap"
  },
  {
    "path": "src/Pos.Event.Contracts/Pos.Event.Contracts.csproj",
    "chars": 297,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>netcoreapp2.2</TargetFramework>\n  </PropertyGr"
  },
  {
    "path": "src/Pos.Event.Contracts/customer/CustomerCreatedEvent.cs",
    "chars": 399,
    "preview": "using Dermayon.Common.Events;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace Pos.Event.C"
  },
  {
    "path": "src/Pos.Event.Contracts/customer/CustomerDeletedEvent.cs",
    "chars": 324,
    "preview": "using Dermayon.Common.Events;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace Pos.Event.C"
  },
  {
    "path": "src/Pos.Event.Contracts/customer/CustomerUpdatedEvent.cs",
    "chars": 444,
    "preview": "using Dermayon.Common.Events;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace Pos.Event.C"
  },
  {
    "path": "src/Pos.Event.Contracts/order/OrderCancelledEvent.cs",
    "chars": 322,
    "preview": "using Dermayon.Common.Events;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace Pos.Event.C"
  },
  {
    "path": "src/Pos.Event.Contracts/order/OrderCreatedEvent.cs",
    "chars": 950,
    "preview": "using Dermayon.Common.Events;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace Pos.Event.C"
  },
  {
    "path": "src/Pos.Event.Contracts/order/OrderDetailCreatedEvent.cs",
    "chars": 337,
    "preview": "using System;\n\nnamespace Pos.Event.Contracts\n{\n\n    public class OrderDetailDto\n    {\n        public Guid ProductId { g"
  },
  {
    "path": "src/Pos.Event.Contracts/order/OrderShippedEvent.cs",
    "chars": 311,
    "preview": "using Dermayon.Common.Events;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace Pos.Event.C"
  },
  {
    "path": "src/Pos.Event.Contracts/order/OrderValidatedEvent.cs",
    "chars": 557,
    "preview": "using Dermayon.Common.Events;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace Pos.Event.C"
  },
  {
    "path": "src/Pos.Event.Contracts/product/ProductCategoryCreatedEvent.cs",
    "chars": 326,
    "preview": "using Dermayon.Common.Events;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace Pos.Event.C"
  },
  {
    "path": "src/Pos.Event.Contracts/product/ProductCategoryDeletedEvent.cs",
    "chars": 337,
    "preview": "using Dermayon.Common.Events;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace Pos.Event.C"
  },
  {
    "path": "src/Pos.Event.Contracts/product/ProductCategoryUpdatedEvent.cs",
    "chars": 363,
    "preview": "using Dermayon.Common.Events;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace Pos.Event.C"
  },
  {
    "path": "src/Pos.Event.Contracts/product/ProductCreatedEvent.cs",
    "chars": 491,
    "preview": "using Dermayon.Common.Events;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace Pos.Event.C"
  },
  {
    "path": "src/Pos.Event.Contracts/product/ProductDeletedEvent.cs",
    "chars": 313,
    "preview": "using Dermayon.Common.Events;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace Pos.Event.C"
  },
  {
    "path": "src/Pos.Event.Contracts/product/ProductUpdatedEvent.cs",
    "chars": 528,
    "preview": "using Dermayon.Common.Events;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace Pos.Event.C"
  },
  {
    "path": "src/Pos.Gateway/Controllers/ValuesController.cs",
    "chars": 975,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Microsoft.AspNet"
  },
  {
    "path": "src/Pos.Gateway/Dockerfile",
    "chars": 569,
    "preview": "FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base\nWORKDIR /app\nEXPOSE 80\n\nFROM mcr.microsoft.com/dotnet"
  },
  {
    "path": "src/Pos.Gateway/Pos.Gateway.csproj",
    "chars": 702,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n\n  <PropertyGroup>\n    <TargetFramework>netcoreapp2.2</TargetFramework>\n    <AspNe"
  },
  {
    "path": "src/Pos.Gateway/Program.cs",
    "chars": 607,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing"
  },
  {
    "path": "src/Pos.Gateway/Properties/launchSettings.json",
    "chars": 963,
    "preview": "{\n  \"iisSettings\": {\n    \"windowsAuthentication\": false,\n    \"anonymousAuthentication\": true,\n    \"iisExpress\": {\n      "
  },
  {
    "path": "src/Pos.Gateway/Startup.cs",
    "chars": 2683,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
  },
  {
    "path": "src/Pos.Gateway/appsettings.Development.json",
    "chars": 137,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Debug\",\n      \"System\": \"Information\",\n      \"Microsoft\": \"Informat"
  },
  {
    "path": "src/Pos.Gateway/appsettings.json",
    "chars": 97,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Warning\"\n    }\n  },\n  \"AllowedHosts\": \"*\"\n}\n"
  },
  {
    "path": "src/Pos.Gateway/configuration.json",
    "chars": 3608,
    "preview": "{\n  \"ReRoutes\": [\n    {\n      \"DownstreamPathTemplate\": \"/api/{everything}\",\n      \"DownstreamScheme\": \"http\",\n      \"Do"
  },
  {
    "path": "src/Pos.Gateway.Securities/Application/AuthService.cs",
    "chars": 1245,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IdentityModel.Tokens.Jwt;\nusing System.Linq;\nusing System."
  },
  {
    "path": "src/Pos.Gateway.Securities/Application/IAuthService.cs",
    "chars": 279,
    "preview": "using Pos.Gateway.Securities.Models;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Th"
  },
  {
    "path": "src/Pos.Gateway.Securities/Controllers/AuthController.cs",
    "chars": 971,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Microsoft.AspNet"
  },
  {
    "path": "src/Pos.Gateway.Securities/Dockerfile",
    "chars": 668,
    "preview": "FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base\nWORKDIR /app\nEXPOSE 80\n\nFROM mcr.microsoft.com/dotnet"
  },
  {
    "path": "src/Pos.Gateway.Securities/Models/Authentication.cs",
    "chars": 227,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\n\nnamespace Pos.Gateway"
  },
  {
    "path": "src/Pos.Gateway.Securities/Models/SecurityToken.cs",
    "chars": 233,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\n\nnamespace Pos.Gateway"
  },
  {
    "path": "src/Pos.Gateway.Securities/Pos.Gateway.Securities.csproj",
    "chars": 643,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n\n  <PropertyGroup>\n    <TargetFramework>netcoreapp2.2</TargetFramework>\n    <AspNe"
  },
  {
    "path": "src/Pos.Gateway.Securities/Program.cs",
    "chars": 618,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing"
  },
  {
    "path": "src/Pos.Gateway.Securities/Properties/launchSettings.json",
    "chars": 974,
    "preview": "{\n  \"iisSettings\": {\n    \"windowsAuthentication\": false,\n    \"anonymousAuthentication\": true,\n    \"iisExpress\": {\n      "
  },
  {
    "path": "src/Pos.Gateway.Securities/Startup.cs",
    "chars": 1340,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Microsoft.AspNet"
  },
  {
    "path": "src/Pos.Gateway.Securities/appsettings.Development.json",
    "chars": 137,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Debug\",\n      \"System\": \"Information\",\n      \"Microsoft\": \"Informat"
  },
  {
    "path": "src/Pos.Gateway.Securities/appsettings.json",
    "chars": 97,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Warning\"\n    }\n  },\n  \"AllowedHosts\": \"*\"\n}\n"
  },
  {
    "path": "src/Pos.Order.Domain/OrderAggregate/Contract/IOrderRepository.cs",
    "chars": 321,
    "preview": "using Dermayon.Infrastructure.Data.EFRepositories.Contracts;\nusing System;\nusing System.Threading.Tasks;\n\nnamespace Pos"
  },
  {
    "path": "src/Pos.Order.Domain/OrderAggregate/MstOrder.cs",
    "chars": 1518,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace Pos.Order.Domain\n{\n    public partial cla"
  },
  {
    "path": "src/Pos.Order.Domain/OrderAggregate/OrderDetail.cs",
    "chars": 511,
    "preview": "using System;\nusing System.Collections.Generic;\n\nnamespace Pos.Order.Domain\n{\n    public partial class OrderDetail\n    "
  },
  {
    "path": "src/Pos.Order.Domain/Pos.Order.Domain.csproj",
    "chars": 351,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>netcoreapp2.2</TargetFramework>\n  </PropertyG"
  },
  {
    "path": "src/Pos.Order.Infrastructure/EventSources/POSOrderEventContext.cs",
    "chars": 366,
    "preview": "using Dermayon.Infrastructure.Data.MongoRepositories;\nusing System;\nusing System.Collections.Generic;\nusing System.Text"
  },
  {
    "path": "src/Pos.Order.Infrastructure/EventSources/POSOrderEventContextSetting.cs",
    "chars": 250,
    "preview": "using Dermayon.Infrastructure.Data.MongoRepositories;\nusing System;\nusing System.Collections.Generic;\nusing System.Text"
  },
  {
    "path": "src/Pos.Order.Infrastructure/POSOrderContext.cs",
    "chars": 2226,
    "preview": "using System;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing Pos.Order.Domain"
  },
  {
    "path": "src/Pos.Order.Infrastructure/Pos.Order.Infrastructure.csproj",
    "chars": 246,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>netcoreapp2.2</TargetFramework>\n  </PropertyGr"
  },
  {
    "path": "src/Pos.Order.Infrastructure/Repositories/OrderRepository.cs",
    "chars": 1210,
    "preview": "using Dermayon.Infrastructure.Data.EFRepositories;\nusing Pos.Order.Domain;\nusing Pos.Order.Domain.OrderAggregate.Contra"
  },
  {
    "path": "src/Pos.Order.Infrastructure/efpt.config.json",
    "chars": 410,
    "preview": "{\"ContextClassName\":\"Entvision_OrderContext\",\"DefaultDacpacSchema\":null,\"IdReplace\":false,\"IncludeConnectionString\":fal"
  },
  {
    "path": "src/Pos.Order.WebApi/Application/Commands/CreateOrderCommand.cs",
    "chars": 1221,
    "preview": "using Dermayon.Common.Domain;\nusing Pos.Event.Contracts;\nusing Pos.Order.Infrastructure;\nusing System;\nusing System.Col"
  },
  {
    "path": "src/Pos.Order.WebApi/Application/Commands/CreateOrderCommandHandler.cs",
    "chars": 2022,
    "preview": "using AutoMapper;\nusing Dermayon.Common.Domain;\nusing Dermayon.Common.Infrastructure.Data.Contracts;\nusing Dermayon.Inf"
  },
  {
    "path": "src/Pos.Order.WebApi/Application/DTO/CreateOrderDetailRequest.cs",
    "chars": 335,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\n\nnamespace Pos.Order.W"
  },
  {
    "path": "src/Pos.Order.WebApi/Application/DTO/CreateOrderHeaderRequest.cs",
    "chars": 676,
    "preview": "using Pos.Event.Contracts;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Ta"
  },
  {
    "path": "src/Pos.Order.WebApi/Application/DTO/DetailOrderLineItemResponse.cs",
    "chars": 254,
    "preview": "using System;\n\nnamespace Pos.Order.WebApi.Application.DTO\n{\n    public class DetailOrderLineItemResponse\n    {\n        "
  },
  {
    "path": "src/Pos.Order.WebApi/Application/DTO/DetailOrderResponse.cs",
    "chars": 738,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\n\nnamespace Pos.Order.W"
  },
  {
    "path": "src/Pos.Order.WebApi/Application/EventHandlers/OrderCanceledEventHandler.cs",
    "chars": 1745,
    "preview": "using Dermayon.Common.CrossCutting;\nusing Dermayon.Common.Infrastructure.Data.Contracts;\nusing Dermayon.Common.Infrastr"
  },
  {
    "path": "src/Pos.Order.WebApi/Application/EventHandlers/OrderShippedEventHandler.cs",
    "chars": 1740,
    "preview": "using Dermayon.Common.CrossCutting;\nusing Dermayon.Common.Infrastructure.Data.Contracts;\nusing Dermayon.Common.Infrastr"
  },
  {
    "path": "src/Pos.Order.WebApi/Application/EventHandlers/OrderValidatedEventHandler.cs",
    "chars": 2349,
    "preview": "using Dermayon.Common.CrossCutting;\nusing Dermayon.Common.Infrastructure.Data.Contracts;\nusing Dermayon.Common.Infrastr"
  },
  {
    "path": "src/Pos.Order.WebApi/Application/Queries/IOrderQueries.cs",
    "chars": 378,
    "preview": "using Pos.Order.Domain;\nusing System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\nnamespace Pos.Cu"
  },
  {
    "path": "src/Pos.Order.WebApi/Application/Queries/OrderQueries.cs",
    "chars": 1584,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Dermayon.Common."
  },
  {
    "path": "src/Pos.Order.WebApi/ApplicationBootsraper.cs",
    "chars": 3800,
    "preview": "using AutoMapper;\nusing Dermayon.Common.Domain;\nusing Dermayon.Infrastructure.EvenMessaging.Kafka;\nusing Microsoft.Enti"
  },
  {
    "path": "src/Pos.Order.WebApi/Controllers/OrderController.cs",
    "chars": 3181,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading;\nusing System.Threading.Tasks"
  },
  {
    "path": "src/Pos.Order.WebApi/Controllers/ValuesController.cs",
    "chars": 980,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Microsoft.AspNet"
  },
  {
    "path": "src/Pos.Order.WebApi/Dockerfile",
    "chars": 860,
    "preview": "FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base\nWORKDIR /app\nEXPOSE 80\n\nFROM mcr.microsoft.com/dotnet"
  },
  {
    "path": "src/Pos.Order.WebApi/Dockerfile.original",
    "chars": 614,
    "preview": "FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base\nWORKDIR /app\nEXPOSE 80\n\nFROM mcr.microsoft.com/dotnet"
  },
  {
    "path": "src/Pos.Order.WebApi/Mapping/AllToDtoMapperProfile.cs",
    "chars": 465,
    "preview": "using AutoMapper;\nusing Pos.Order.Domain;\nusing Pos.Order.WebApi.Application.DTO;\nusing System;\nusing System.Collection"
  },
  {
    "path": "src/Pos.Order.WebApi/Mapping/CommandToEventMapperProfile.cs",
    "chars": 340,
    "preview": "using AutoMapper;\nusing Pos.Order.WebApi.Application.Commands;\nusing Pos.Event.Contracts;\n\nnamespace Pos.Order.WebApi.M"
  },
  {
    "path": "src/Pos.Order.WebApi/Mapping/DomainToCommandMapperProfile.cs",
    "chars": 465,
    "preview": "using AutoMapper;\nusing Pos.Order.Domain;\nusing Pos.Order.Domain.OrderAggregate;\nusing Pos.Order.WebApi.Application.Com"
  },
  {
    "path": "src/Pos.Order.WebApi/Mapping/DtotoAllMapperProfile.cs",
    "chars": 905,
    "preview": "using AutoMapper;\nusing Pos.Order.Domain.OrderAggregate;\nusing Pos.Event.Contracts;\nusing System;\nusing Pos.Order.Domai"
  },
  {
    "path": "src/Pos.Order.WebApi/Mapping/EventoDomainMapperProfile.cs",
    "chars": 458,
    "preview": "using AutoMapper;\nusing Pos.Order.Domain.OrderAggregate;\nusing Pos.Event.Contracts;\nusing System;\nusing Pos.Order.Domai"
  },
  {
    "path": "src/Pos.Order.WebApi/Pos.Order.WebApi.csproj",
    "chars": 978,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n\n  <PropertyGroup>\n    <TargetFramework>netcoreapp2.2</TargetFramework>\n    <AspNe"
  },
  {
    "path": "src/Pos.Order.WebApi/Program.cs",
    "chars": 612,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing"
  },
  {
    "path": "src/Pos.Order.WebApi/Properties/launchSettings.json",
    "chars": 968,
    "preview": "{\n  \"iisSettings\": {\n    \"windowsAuthentication\": false,\n    \"anonymousAuthentication\": true,\n    \"iisExpress\": {\n      "
  },
  {
    "path": "src/Pos.Order.WebApi/SeedingData/DbSeeder.cs",
    "chars": 1509,
    "preview": "using Microsoft.Extensions.DependencyInjection;\nusing Pos.Order.Domain;\nusing Pos.Order.Infrastructure;\nusing System;\nu"
  },
  {
    "path": "src/Pos.Order.WebApi/Startup.cs",
    "chars": 1565,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Microsoft.AspNet"
  },
  {
    "path": "src/Pos.Order.WebApi/appsettings.Development.json",
    "chars": 680,
    "preview": "{\n  \"ConnectionStrings\": {\n    \"ORDER_COMMAND_CONNECTION\": {\n      \"ServerConnection\": \"mongodb://root:password@mongodb:"
  },
  {
    "path": "src/Pos.Order.WebApi/appsettings.json",
    "chars": 97,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Warning\"\n    }\n  },\n  \"AllowedHosts\": \"*\"\n}\n"
  },
  {
    "path": "src/Pos.Product.Domain/Pos.Product.Domain.csproj",
    "chars": 553,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>netcoreapp2.2</TargetFramework>\n  </PropertyGr"
  },
  {
    "path": "src/Pos.Product.Domain/ProductAggregate/Contracts/IProductCategoryRepository.cs",
    "chars": 283,
    "preview": "using Dermayon.Infrastructure.Data.EFRepositories.Contracts;\nusing System;\nusing System.Collections.Generic;\nusing Syst"
  },
  {
    "path": "src/Pos.Product.Domain/ProductAggregate/Contracts/IProductRepository.cs",
    "chars": 270,
    "preview": "using Dermayon.Infrastructure.Data.EFRepositories.Contracts;\nusing System;\nusing System.Collections.Generic;\nusing Syst"
  },
  {
    "path": "src/Pos.Product.Domain/ProductAggregate/MstProduct.cs",
    "chars": 479,
    "preview": "using System;\nusing System.Collections.Generic;\n\nnamespace Pos.Product.Domain.ProductAggregate\n{\n    public partial cla"
  },
  {
    "path": "src/Pos.Product.Domain/ProductAggregate/ProductCategory.cs",
    "chars": 403,
    "preview": "using System;\nusing System.Collections.Generic;\n\nnamespace Pos.Product.Domain.ProductAggregate\n{\n    public partial cla"
  },
  {
    "path": "src/Pos.Product.Infrastructure/EventSources/POSProductEventContext.cs",
    "chars": 357,
    "preview": "using Dermayon.Infrastructure.Data.MongoRepositories;\nusing System;\nusing System.Collections.Generic;\nusing System.Text"
  },
  {
    "path": "src/Pos.Product.Infrastructure/EventSources/POSProductEventContextSetting.cs",
    "chars": 254,
    "preview": "using Dermayon.Infrastructure.Data.MongoRepositories;\nusing System;\nusing System.Collections.Generic;\nusing System.Text"
  },
  {
    "path": "src/Pos.Product.Infrastructure/POSProductContext.cs",
    "chars": 2103,
    "preview": "using System;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata;\nusing Pos.Product.Doma"
  },
  {
    "path": "src/Pos.Product.Infrastructure/Pos.Product.Infrastructure.csproj",
    "chars": 250,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>netcoreapp2.2</TargetFramework>\n  </PropertyGr"
  },
  {
    "path": "src/Pos.Product.Infrastructure/Repositories/ProductCategoryRepository.cs",
    "chars": 575,
    "preview": "using Dermayon.Infrastructure.Data.EFRepositories;\nusing Pos.Product.Domain.ProductAggregate;\nusing Pos.Product.Domain."
  },
  {
    "path": "src/Pos.Product.Infrastructure/Repositories/ProductRepository.cs",
    "chars": 546,
    "preview": "using Dermayon.Infrastructure.Data.EFRepositories;\nusing Pos.Product.Domain.ProductAggregate;\nusing Pos.Product.Domain."
  },
  {
    "path": "src/Pos.Product.WebApi/Application/Commands/CreateProductCommand.cs",
    "chars": 466,
    "preview": "using Dermayon.Common.Domain;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading"
  },
  {
    "path": "src/Pos.Product.WebApi/Application/Commands/CreateProductCommandHandler.cs",
    "chars": 1454,
    "preview": "using AutoMapper;\nusing Dermayon.Common.Domain;\nusing Dermayon.Common.Infrastructure.Data.Contracts;\nusing Dermayon.Inf"
  },
  {
    "path": "src/Pos.Product.WebApi/Application/Commands/DeleteProductCommand.cs",
    "chars": 333,
    "preview": "using Dermayon.Common.Domain;\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel.DataAnnotatio"
  },
  {
    "path": "src/Pos.Product.WebApi/Application/Commands/DeleteProductCommandHandler.cs",
    "chars": 1434,
    "preview": "using Dermayon.Common.Domain;\nusing Dermayon.Common.Infrastructure.Data.Contracts;\nusing Dermayon.Infrastructure.EvenMe"
  },
  {
    "path": "src/Pos.Product.WebApi/Application/Commands/ProductCategories/CreateProductCategoryCommand.cs",
    "chars": 311,
    "preview": "using Dermayon.Common.Domain;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading"
  },
  {
    "path": "src/Pos.Product.WebApi/Application/Commands/ProductCategories/CreateProductCategoryCommandHandler.cs",
    "chars": 1528,
    "preview": "using AutoMapper;\nusing Dermayon.Common.Domain;\nusing Dermayon.Common.Infrastructure.Data.Contracts;\nusing Dermayon.Inf"
  },
  {
    "path": "src/Pos.Product.WebApi/Application/Commands/ProductCategories/DeleteProductCategoryCommand.cs",
    "chars": 357,
    "preview": "using Dermayon.Common.Domain;\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel.DataAnnotatio"
  },
  {
    "path": "src/Pos.Product.WebApi/Application/Commands/ProductCategories/DeleteProductCategoryCommandHandler.cs",
    "chars": 1505,
    "preview": "using Dermayon.Common.Domain;\nusing Dermayon.Common.Infrastructure.Data.Contracts;\nusing Dermayon.Infrastructure.EvenMe"
  },
  {
    "path": "src/Pos.Product.WebApi/Application/Commands/ProductCategories/UpdateProductCategoryCommand.cs",
    "chars": 331,
    "preview": "using Dermayon.Common.Domain;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading"
  },
  {
    "path": "src/Pos.Product.WebApi/Application/Commands/ProductCategories/UpdateProductCategoryCommandHandler.cs",
    "chars": 1546,
    "preview": "using AutoMapper;\nusing Dermayon.Common.Domain;\nusing Dermayon.Common.Infrastructure.Data.Contracts;\nusing Dermayon.Inf"
  },
  {
    "path": "src/Pos.Product.WebApi/Application/Commands/UpdateProductCommand.cs",
    "chars": 503,
    "preview": "using Dermayon.Common.Domain;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading"
  },
  {
    "path": "src/Pos.Product.WebApi/Application/Commands/UpdateProductCommandHandler.cs",
    "chars": 1442,
    "preview": "using AutoMapper;\nusing Dermayon.Common.Domain;\nusing Dermayon.Common.Infrastructure.Data.Contracts;\nusing Dermayon.Inf"
  },
  {
    "path": "src/Pos.Product.WebApi/Application/EventHandlers/ProductCategories/ProductCategoryCreateEventHandler.cs",
    "chars": 2004,
    "preview": "using AutoMapper;\nusing Dermayon.Common.CrossCutting;\nusing Dermayon.Common.Infrastructure.EventMessaging;\nusing Dermay"
  },
  {
    "path": "src/Pos.Product.WebApi/Application/EventHandlers/ProductCategories/ProductCategoryDeleteEventHandler.cs",
    "chars": 2203,
    "preview": "using AutoMapper;\nusing Dermayon.Common.CrossCutting;\nusing Dermayon.Common.Infrastructure.EventMessaging;\nusing Dermay"
  },
  {
    "path": "src/Pos.Product.WebApi/Application/EventHandlers/ProductCategories/ProductCategoryUpdateEventHandler.cs",
    "chars": 2415,
    "preview": "using AutoMapper;\nusing Dermayon.Common.CrossCutting;\nusing Dermayon.Common.Infrastructure.EventMessaging;\nusing Dermay"
  },
  {
    "path": "src/Pos.Product.WebApi/Application/EventHandlers/ProductCreateEventHandler.cs",
    "chars": 1896,
    "preview": "using AutoMapper;\nusing Dermayon.Common.CrossCutting;\nusing Dermayon.Common.Infrastructure.EventMessaging;\nusing Dermay"
  },
  {
    "path": "src/Pos.Product.WebApi/Application/EventHandlers/ProductDeleteEventHandler.cs",
    "chars": 2067,
    "preview": "using AutoMapper;\nusing Dermayon.Common.CrossCutting;\nusing Dermayon.Common.Infrastructure.EventMessaging;\nusing Dermay"
  },
  {
    "path": "src/Pos.Product.WebApi/Application/EventHandlers/ProductUpdateEventHandler.cs",
    "chars": 2254,
    "preview": "using AutoMapper;\nusing Dermayon.Common.CrossCutting;\nusing Dermayon.Common.Infrastructure.EventMessaging;\nusing Dermay"
  },
  {
    "path": "src/Pos.Product.WebApi/Application/EventHandlers/SagaPattern/OrderCreatedEventHandler.cs",
    "chars": 2389,
    "preview": "using AutoMapper;\nusing Dermayon.Common.CrossCutting;\nusing Dermayon.Common.Infrastructure.EventMessaging;\nusing Dermay"
  },
  {
    "path": "src/Pos.Product.WebApi/Application/Queries/IProductCategoryQueries.cs",
    "chars": 420,
    "preview": "using Pos.Product.Domain.ProductAggregate;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Sys"
  },
  {
    "path": "src/Pos.Product.WebApi/Application/Queries/IProductQueries.cs",
    "chars": 544,
    "preview": "using Pos.Product.Domain.ProductAggregate;\nusing System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks"
  },
  {
    "path": "src/Pos.Product.WebApi/Application/Queries/ProductCategoryQueries.cs",
    "chars": 1703,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Dermayon.Common."
  },
  {
    "path": "src/Pos.Product.WebApi/Application/Queries/ProductQueries.cs",
    "chars": 2428,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Dermayon.Common."
  },
  {
    "path": "src/Pos.Product.WebApi/ApplicationBootsraper.cs",
    "chars": 5829,
    "preview": "using AutoMapper;\nusing Dermayon.Common.Domain;\nusing Dermayon.Infrastructure.EvenMessaging.Kafka;\nusing Microsoft.Enti"
  },
  {
    "path": "src/Pos.Product.WebApi/Controllers/ProductCategoryController.cs",
    "chars": 4812,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading;\nusing System.Threading.Tasks"
  },
  {
    "path": "src/Pos.Product.WebApi/Controllers/ProductController.cs",
    "chars": 4494,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading;\nusing System.Threading.Tasks"
  },
  {
    "path": "src/Pos.Product.WebApi/Controllers/ValuesController.cs",
    "chars": 982,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Microsoft.AspNet"
  },
  {
    "path": "src/Pos.Product.WebApi/Dockerfile",
    "chars": 890,
    "preview": "FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base\nWORKDIR /app\nEXPOSE 80\n\nFROM mcr.microsoft.com/dotnet"
  },
  {
    "path": "src/Pos.Product.WebApi/Mapping/CommandToEventMapperProfile.cs",
    "chars": 853,
    "preview": "using AutoMapper;\nusing Pos.Customer.WebApi.Application.Commands;\nusing Pos.Event.Contracts;\nusing Pos.Product.WebApi.A"
  },
  {
    "path": "src/Pos.Product.WebApi/Mapping/DomainToCommandMapperProfile.cs",
    "chars": 1082,
    "preview": "using AutoMapper;\nusing Pos.Customer.WebApi.Application.Commands;\nusing Pos.Product.Domain.ProductAggregate;\nusing Pos."
  },
  {
    "path": "src/Pos.Product.WebApi/Mapping/EventToDomainMapperProfile.cs",
    "chars": 748,
    "preview": "using AutoMapper;\nusing Pos.Event.Contracts;\nusing Pos.Product.Domain.ProductAggregate;\nusing System;\n\nnamespace Pos.Pr"
  },
  {
    "path": "src/Pos.Product.WebApi/Pos.Product.WebApi.csproj",
    "chars": 924,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n\n  <PropertyGroup>\n    <TargetFramework>netcoreapp2.2</TargetFramework>\n    <AspNe"
  },
  {
    "path": "src/Pos.Product.WebApi/Program.cs",
    "chars": 614,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing"
  },
  {
    "path": "src/Pos.Product.WebApi/Properties/launchSettings.json",
    "chars": 970,
    "preview": "{\n  \"iisSettings\": {\n    \"windowsAuthentication\": false,\n    \"anonymousAuthentication\": true,\n    \"iisExpress\": {\n      "
  },
  {
    "path": "src/Pos.Product.WebApi/SeedingData/DbSeeder.cs",
    "chars": 2240,
    "preview": "using Microsoft.Extensions.DependencyInjection;\nusing Newtonsoft.Json;\nusing Pos.Product.Domain.ProductAggregate;\nusing"
  },
  {
    "path": "src/Pos.Product.WebApi/Startup.cs",
    "chars": 1400,
    "preview": "using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.AspNetCore.Mvc;\nusing Microsoft"
  },
  {
    "path": "src/Pos.Product.WebApi/appsettings.Development.json",
    "chars": 691,
    "preview": "{\n  \"ConnectionStrings\": {\n    \"PRODUCT_COMMAND_CONNECTION\": {\n      \"ServerConnection\": \"mongodb://root:password@mongod"
  },
  {
    "path": "src/Pos.Product.WebApi/appsettings.json",
    "chars": 97,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Warning\"\n    }\n  },\n  \"AllowedHosts\": \"*\"\n}\n"
  },
  {
    "path": "src/Pos.Report.Domain/Class1.cs",
    "chars": 84,
    "preview": "using System;\n\nnamespace Pos.Report.Domain\n{\n    public class Class1\n    {\n    }\n}\n"
  },
  {
    "path": "src/Pos.Report.Domain/Pos.Report.Domain.csproj",
    "chars": 137,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>netcoreapp2.2</TargetFramework>\n  </PropertyGr"
  },
  {
    "path": "src/Pos.Report.Infrastructure/Class1.cs",
    "chars": 92,
    "preview": "using System;\n\nnamespace Pos.Report.Infrastructure\n{\n    public class Class1\n    {\n    }\n}\n"
  },
  {
    "path": "src/Pos.Report.Infrastructure/Pos.Report.Infrastructure.csproj",
    "chars": 137,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>netcoreapp2.2</TargetFramework>\n  </PropertyGr"
  },
  {
    "path": "src/Pos.Report.WebApi/Controllers/ValuesController.cs",
    "chars": 981,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Microsoft.AspNet"
  },
  {
    "path": "src/Pos.Report.WebApi/Dockerfile",
    "chars": 875,
    "preview": "FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base\nWORKDIR /app\nEXPOSE 80\n\nFROM mcr.microsoft.com/dotnet"
  },
  {
    "path": "src/Pos.Report.WebApi/Dockerfile.original",
    "chars": 623,
    "preview": "FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base\nWORKDIR /app\nEXPOSE 80\n\nFROM mcr.microsoft.com/dotnet"
  },
  {
    "path": "src/Pos.Report.WebApi/Pos.Report.WebApi.csproj",
    "chars": 936,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n\n  <PropertyGroup>\n    <TargetFramework>netcoreapp2.2</TargetFramework>\n    <AspNe"
  },
  {
    "path": "src/Pos.Report.WebApi/Program.cs",
    "chars": 613,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing"
  },
  {
    "path": "src/Pos.Report.WebApi/Properties/launchSettings.json",
    "chars": 969,
    "preview": "{\n  \"iisSettings\": {\n    \"windowsAuthentication\": false,\n    \"anonymousAuthentication\": true,\n    \"iisExpress\": {\n      "
  },
  {
    "path": "src/Pos.Report.WebApi/Startup.cs",
    "chars": 1231,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Microsoft.AspNet"
  },
  {
    "path": "src/Pos.Report.WebApi/appsettings.Development.json",
    "chars": 137,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Debug\",\n      \"System\": \"Information\",\n      \"Microsoft\": \"Informat"
  },
  {
    "path": "src/Pos.Report.WebApi/appsettings.json",
    "chars": 97,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Warning\"\n    }\n  },\n  \"AllowedHosts\": \"*\"\n}\n"
  },
  {
    "path": "src/Pos.WebApplication/ApplicationBootsraper.cs",
    "chars": 1067,
    "preview": "using Microsoft.Extensions.Configuration;\nusing Microsoft.Extensions.DependencyInjection;\nusing Pos.WebApplication.Heal"
  },
  {
    "path": "src/Pos.WebApplication/Areas/Master/Controllers/CustomerController.cs",
    "chars": 355,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Microsoft.AspNet"
  },
  {
    "path": "src/Pos.WebApplication/Areas/Master/Controllers/ProductCategoryController.cs",
    "chars": 362,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Microsoft.AspNet"
  },
  {
    "path": "src/Pos.WebApplication/Areas/Master/Controllers/ProductController.cs",
    "chars": 354,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Microsoft.AspNet"
  },
  {
    "path": "src/Pos.WebApplication/Areas/Master/Views/Customer/Index.cshtml",
    "chars": 7394,
    "preview": "\n@{\n    ViewData[\"Title\"] = \"Customer\";\n    Layout = \"~/Views/Shared/_Layout.cshtml\";\n}\n\n@section Styles{\n    <!--Morri"
  },
  {
    "path": "src/Pos.WebApplication/Areas/Master/Views/Product/Index.cshtml",
    "chars": 7277,
    "preview": "\n@{\n    ViewData[\"Title\"] = \"Product\";\n    Layout = \"~/Views/Shared/_Layout.cshtml\";\n}\n\n@section Styles{        \n    <l"
  },
  {
    "path": "src/Pos.WebApplication/Areas/Master/Views/ProductCategory/Index.cshtml",
    "chars": 7394,
    "preview": "\n@{\n    ViewData[\"Title\"] = \"Customer\";\n    Layout = \"~/Views/Shared/_Layout.cshtml\";\n}\n\n@section Styles{\n    <!--Morri"
  },
  {
    "path": "src/Pos.WebApplication/Areas/Order/Controllers/ItemController.cs",
    "chars": 350,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Microsoft.AspNet"
  },
  {
    "path": "src/Pos.WebApplication/Areas/Order/Views/Item/Index.cshtml",
    "chars": 17459,
    "preview": "\n@{\n    ViewData[\"Title\"] = \"Customer\";\n    Layout = \"~/Views/Shared/_Layout.cshtml\";\n}\n\n@section Styles{\n    <!--Morri"
  },
  {
    "path": "src/Pos.WebApplication/Areas/Reports/Controllers/TransactionController.cs",
    "chars": 359,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Microsoft.AspNet"
  },
  {
    "path": "src/Pos.WebApplication/Areas/Reports/Views/Transaction/Index.cshtml",
    "chars": 16505,
    "preview": "\n@{\n    ViewData[\"Title\"] = \"Customer\";\n    Layout = \"~/Views/Shared/_Layout.cshtml\";\n}\n\n@section Styles{\n    <!--Morri"
  },
  {
    "path": "src/Pos.WebApplication/Controllers/AuthController.cs",
    "chars": 727,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Threading.Tas"
  },
  {
    "path": "src/Pos.WebApplication/Controllers/HomeController.cs",
    "chars": 727,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Threading.Tas"
  },
  {
    "path": "src/Pos.WebApplication/Dockerfile",
    "chars": 632,
    "preview": "FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base\nWORKDIR /app\nEXPOSE 80\n\nFROM mcr.microsoft.com/dotnet"
  },
  {
    "path": "src/Pos.WebApplication/HealthChecks/CustomerServicesHc.cs",
    "chars": 967,
    "preview": "using Microsoft.Extensions.Configuration;\nusing Microsoft.Extensions.Diagnostics.HealthChecks;\nusing Microsoft.Identity"
  },
  {
    "path": "src/Pos.WebApplication/HealthChecks/OrderServicesHc .cs",
    "chars": 917,
    "preview": "using Microsoft.Extensions.Configuration;\nusing Microsoft.Extensions.Diagnostics.HealthChecks;\nusing Pos.WebApplication"
  },
  {
    "path": "src/Pos.WebApplication/HealthChecks/ProductServicesHc.cs",
    "chars": 964,
    "preview": "using Microsoft.Extensions.Configuration;\nusing Microsoft.Extensions.Diagnostics.HealthChecks;\nusing Microsoft.Identity"
  },
  {
    "path": "src/Pos.WebApplication/HealthChecks/ReportServicesHc.cs",
    "chars": 961,
    "preview": "using Microsoft.Extensions.Configuration;\nusing Microsoft.Extensions.Diagnostics.HealthChecks;\nusing Microsoft.Identity"
  },
  {
    "path": "src/Pos.WebApplication/Models/ErrorViewModel.cs",
    "chars": 216,
    "preview": "using System;\n\nnamespace Pos.WebApplication.Models\n{\n    public class ErrorViewModel\n    {\n        public string Request"
  },
  {
    "path": "src/Pos.WebApplication/Models/MenuItem.cs",
    "chars": 471,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\n\nnamespace Pos.WebAppl"
  },
  {
    "path": "src/Pos.WebApplication/Pos.WebApplication.csproj",
    "chars": 1115,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n\n  <PropertyGroup>\n    <TargetFramework>netcoreapp2.2</TargetFramework>\n    <AspN"
  },
  {
    "path": "src/Pos.WebApplication/Program.cs",
    "chars": 614,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing"
  },
  {
    "path": "src/Pos.WebApplication/Properties/launchSettings.json",
    "chars": 829,
    "preview": "{\n  \"iisSettings\": {\n    \"windowsAuthentication\": false,\n    \"anonymousAuthentication\": true,\n    \"iisExpress\": {\n      "
  },
  {
    "path": "src/Pos.WebApplication/Startup.cs",
    "chars": 2714,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing HealthChecks.UI."
  },
  {
    "path": "src/Pos.WebApplication/Utilities/HttpCheck.cs",
    "chars": 942,
    "preview": "using Microsoft.Extensions.Diagnostics.HealthChecks;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;"
  }
]

// ... and 701 more files (download for full content)

About this extraction

This page contains the full source code of the NHadi/Pos GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 901 files (11.5 MB), approximately 3.1M tokens, and a symbol index with 2598 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!