From 03c25e4ac34b98655c234e104464f20f4fb7fe76 Mon Sep 17 00:00:00 2001 From: Manish Kumar Date: Wed, 6 Nov 2024 03:19:37 +0300 Subject: [PATCH] UpdatedDB --- ...erDto.cs => AuthConsumerUserRequestDto.cs} | 13 +- .../Dtos/Requests/PACIMobileIdRequest.cs | 19 + .../Dtos/Responses/AuthTokens.cs | 12 +- .../Dtos/Responses/PACIMobileIdResponse.cs | 14 + .../Enums/CustomerRegistrationStatuses.cs | 13 + .../Enums/CustomerStatuses.cs | 10 + .../Enums/MidRequestStatuses.cs | 17 + .../Enums/MidRequestTypes.cs | 8 + .../Duc.Splitt.Common/Enums/OtpPurposes.cs | 10 + .../Enums/ResponseStatusCode.cs | 12 +- .../Enums/{Language - Copy.cs => Roles.cs} | 2 +- .../IConsumerOtpRequestRepository.cs | 1 + .../ICustomerRegistrationRequestRepository.cs | 4 +- .../Repositories/ICustomerRepository.cs | 2 +- .../Services/IAuthConsumerService.cs | 12 - .../Services/IAuthCustomerService.cs | 15 + .../IMIDServiceAuthenticationService.cs | 14 + .../Duc.Splitt.Core/Duc.Splitt.Core.csproj | 4 +- .../Controllers/AuthController.cs | 14 +- .../Controllers/PACIController.cs | 57 + .../Duc.Splitt.CustomerApi.csproj | 1 + .../Extensions/ServiceExtensions.cs | 7 +- .../Duc.Splitt.CustomerApi/appsettings.json | 73 +- Duc.Splitt/Duc.Splitt.CustomerApi/nlog.config | 42 +- .../DataAccess/Context/SplittAppContext.cs | 3 +- .../Models/CustomerRegistrationRequest.cs | 6 +- .../DataAccess/Models/MidRequestLog.cs | 3 - .../DataAccess/Models/PaymentInstallment.cs | 2 +- .../.config/dotnet-tools.json | 12 + .../CustomHeaderSwaggerAttribute.cs | 57 + .../ValidateAnonymousClientAttribute.cs | 51 + .../ValidateSecureClientAttribute.cs | 55 + .../ActionFilters/ValidationFilter.cs | 50 + .../Controllers/BaseAnonymous.cs | 14 + .../Controllers/BaseAuth.cs | 17 + .../Controllers/CallBackController.cs | 60 + .../Duc.Splitt.MIDCallbackAPI.csproj | 76 + .../Extensions/ServiceExtensions.cs | 289 +++ .../Helper/IUtilsService.cs | 14 + .../Helper/MapperProfile.cs | 16 + .../Helper/UtilsService.cs | 52 + .../Duc.Splitt.MIDCallbackAPI/Program.cs | 26 + .../Properties/launchSettings.json | 13 + .../appsettings.json | 47 + .../appsettings.staging.json | 91 + .../Duc.Splitt.MIDCallbackAPI/nlog.config | 59 + .../Duc.Splitt.MIDCallbackAPI/web.config | 36 + .../Assests/images/Amenities/CarWash.png | Bin 0 -> 4392 bytes .../Assests/images/Amenities/PrayerRoom.png | Bin 0 -> 3252 bytes .../Assests/images/Amenities/RestRoom.png | Bin 0 -> 6997 bytes .../Assests/images/Amenities/Restaurant.png | Bin 0 -> 5735 bytes .../Assests/images/Amenities/TyreChange.png | Bin 0 -> 6622 bytes .../Assests/images/ChargingStation/1.png | Bin 0 -> 11355 bytes .../Assests/images/ChargingStation/10.png | Bin 0 -> 50968 bytes .../Assests/images/ChargingStation/11.png | Bin 0 -> 50968 bytes .../Assests/images/ChargingStation/2.png | Bin 0 -> 10844 bytes .../Assests/images/ChargingStation/3.png | Bin 0 -> 11516 bytes .../Assests/images/ChargingStation/4.png | Bin 0 -> 7458 bytes .../Assests/images/ChargingStation/5.png | Bin 0 -> 10587 bytes .../Assests/images/ChargingStation/6.png | Bin 0 -> 9877 bytes .../Assests/images/ChargingStation/7.png | Bin 0 -> 35938 bytes .../Assests/images/ChargingStation/8.png | Bin 0 -> 50968 bytes .../Assests/images/ChargingStation/9.png | Bin 0 -> 50968 bytes .../Assests/images/Socket/AC Type-1.png | Bin 0 -> 13027 bytes .../Assests/images/Socket/AC Type-2.png | Bin 0 -> 13007 bytes .../wwwroot/Assests/images/Socket/CCS2.png | Bin 0 -> 8013 bytes .../wwwroot/Assests/images/Socket/CHAdeMO.png | Bin 0 -> 19096 bytes .../images/Socket/Tesla Supercharger.png | Bin 0 -> 6670 bytes .../CallbackResponse.cs | 104 + .../MIDWrapper/ConnectedService.json | 17 + .../MIDWrapper/Reference.cs | 2281 +++++++++++++++++ .../Duc.Splitt.MIDIntegrationService.csproj | 21 + .../Extensions/ServiceExtensions.cs | 2 +- .../Duc.Splitt.MerchantApi/appsettings.json | 73 +- .../CustomerRegistrationRequestRepository.cs | 24 +- .../CustomerRepository.cs | 2 +- .../OtpRequestRepository.cs | 14 +- .../AuthBackOfficeService.cs | 2 +- .../Duc.Splitt.Service/AuthConsumerService.cs | 181 -- .../Duc.Splitt.Service/AuthCustomerService.cs | 295 +++ .../Duc.Splitt.Service/AuthMerchantService.cs | 2 +- .../Duc.Splitt.Service.csproj | 1 + .../MIDServiceAuthenticationService.cs | 173 ++ .../Duc.Splitt.Service/MerchantService.cs | 1 - Duc.Splitt/Duc.Splitt.Service/OrderService.cs | 11 +- Duc.Splitt/Duc.Splitt.sln | 12 + 86 files changed, 4319 insertions(+), 322 deletions(-) rename Duc.Splitt/Duc.Splitt.Common/Dtos/Requests/{AuthConsumerUserDto.cs => AuthConsumerUserRequestDto.cs} (71%) create mode 100644 Duc.Splitt/Duc.Splitt.Common/Dtos/Requests/PACIMobileIdRequest.cs create mode 100644 Duc.Splitt/Duc.Splitt.Common/Dtos/Responses/PACIMobileIdResponse.cs create mode 100644 Duc.Splitt/Duc.Splitt.Common/Enums/CustomerRegistrationStatuses.cs create mode 100644 Duc.Splitt/Duc.Splitt.Common/Enums/CustomerStatuses.cs create mode 100644 Duc.Splitt/Duc.Splitt.Common/Enums/MidRequestStatuses.cs create mode 100644 Duc.Splitt/Duc.Splitt.Common/Enums/MidRequestTypes.cs create mode 100644 Duc.Splitt/Duc.Splitt.Common/Enums/OtpPurposes.cs rename Duc.Splitt/Duc.Splitt.Common/Enums/{Language - Copy.cs => Roles.cs} (88%) delete mode 100644 Duc.Splitt/Duc.Splitt.Core/Contracts/Services/IAuthConsumerService.cs create mode 100644 Duc.Splitt/Duc.Splitt.Core/Contracts/Services/IAuthCustomerService.cs create mode 100644 Duc.Splitt/Duc.Splitt.Core/Contracts/Services/IMIDServiceAuthenticationService.cs create mode 100644 Duc.Splitt/Duc.Splitt.CustomerApi/Controllers/PACIController.cs create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/.config/dotnet-tools.json create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/ActionFilters/CustomHeaderSwaggerAttribute.cs create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/ActionFilters/ValidateAnonymousClientAttribute.cs create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/ActionFilters/ValidateSecureClientAttribute.cs create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/ActionFilters/ValidationFilter.cs create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Controllers/BaseAnonymous.cs create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Controllers/BaseAuth.cs create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Controllers/CallBackController.cs create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Duc.Splitt.MIDCallbackAPI.csproj create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Extensions/ServiceExtensions.cs create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Helper/IUtilsService.cs create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Helper/MapperProfile.cs create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Helper/UtilsService.cs create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Program.cs create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Properties/launchSettings.json create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/appsettings.json create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/appsettings.staging.json create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/nlog.config create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/web.config create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Amenities/CarWash.png create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Amenities/PrayerRoom.png create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Amenities/RestRoom.png create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Amenities/Restaurant.png create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Amenities/TyreChange.png create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/1.png create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/10.png create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/11.png create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/2.png create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/3.png create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/4.png create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/5.png create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/6.png create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/7.png create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/8.png create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/9.png create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Socket/AC Type-1.png create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Socket/AC Type-2.png create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Socket/CCS2.png create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Socket/CHAdeMO.png create mode 100644 Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Socket/Tesla Supercharger.png create mode 100644 Duc.Splitt/Duc.Splitt.MIDIntegrationService/CallbackResponse.cs create mode 100644 Duc.Splitt/Duc.Splitt.MIDIntegrationService/Connected Services/MIDWrapper/ConnectedService.json create mode 100644 Duc.Splitt/Duc.Splitt.MIDIntegrationService/Connected Services/MIDWrapper/Reference.cs create mode 100644 Duc.Splitt/Duc.Splitt.MIDIntegrationService/Duc.Splitt.MIDIntegrationService.csproj delete mode 100644 Duc.Splitt/Duc.Splitt.Service/AuthConsumerService.cs create mode 100644 Duc.Splitt/Duc.Splitt.Service/AuthCustomerService.cs create mode 100644 Duc.Splitt/Duc.Splitt.Service/MIDServiceAuthenticationService.cs diff --git a/Duc.Splitt/Duc.Splitt.Common/Dtos/Requests/AuthConsumerUserDto.cs b/Duc.Splitt/Duc.Splitt.Common/Dtos/Requests/AuthConsumerUserRequestDto.cs similarity index 71% rename from Duc.Splitt/Duc.Splitt.Common/Dtos/Requests/AuthConsumerUserDto.cs rename to Duc.Splitt/Duc.Splitt.Common/Dtos/Requests/AuthConsumerUserRequestDto.cs index 069ca37..c8ca502 100644 --- a/Duc.Splitt/Duc.Splitt.Common/Dtos/Requests/AuthConsumerUserDto.cs +++ b/Duc.Splitt/Duc.Splitt.Common/Dtos/Requests/AuthConsumerUserRequestDto.cs @@ -2,7 +2,7 @@ namespace Duc.Splitt.Common.Dtos.Requests { - public class AuthConsumerUserDto + public class AuthConsumerUserRequestDto { public class RegisterDto { @@ -11,6 +11,17 @@ public class RegisterDto public string MobileNo { get; set; } = null!; } + + public class CustomerRegistrationRequestDto + { + public string CivilId { get; set; } = null!; + public Guid OtpRequestId { get; set; } + } + public class CheckMIdRequestStatusDto + { + public Guid CustomerRegistrationRequestId { get; set; } + public int? CustomerRegistrationRequestStatusId { get; set; } + } public class VerifyOtpDto { public string MobileNo { get; set; } = null!; diff --git a/Duc.Splitt/Duc.Splitt.Common/Dtos/Requests/PACIMobileIdRequest.cs b/Duc.Splitt/Duc.Splitt.Common/Dtos/Requests/PACIMobileIdRequest.cs new file mode 100644 index 0000000..2d8f7fd --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.Common/Dtos/Requests/PACIMobileIdRequest.cs @@ -0,0 +1,19 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel; + +namespace Duc.Splitt.Common.Dtos.Requests +{ + public class PACIMobileIdRequest + { + public class MobileAuthPNRequestDto + { + [Description("User Identifier to be sent to MID (For MID, this should be Civil ID) ")] + [Required] + public string CivilId { get; set; } = null!; + + [Required] + public Guid CustomerRegistrationRequestId { get; set; } + } + + } +} diff --git a/Duc.Splitt/Duc.Splitt.Common/Dtos/Responses/AuthTokens.cs b/Duc.Splitt/Duc.Splitt.Common/Dtos/Responses/AuthTokens.cs index 064e5d0..05c5559 100644 --- a/Duc.Splitt/Duc.Splitt.Common/Dtos/Responses/AuthTokens.cs +++ b/Duc.Splitt/Duc.Splitt.Common/Dtos/Responses/AuthTokens.cs @@ -3,7 +3,17 @@ public class AuthTokens { public string Token { get; set; } = null!; - public string? RefreshToken { get; set; } + public string? RefreshToken { get; set; } public DateTime? RefreshTokenExpiryTime { get; set; } } + public class VerifyOtpResponse + { + public bool IsNewCustomer { get; set; } + public Guid OtpRequestId { get; set; } + public AuthTokens? AuthTokens { get; set; } + } + public class CustomerRegistrationResponseDto + { + public Guid CustomerRegistrationRequestId { get; set; } + } } diff --git a/Duc.Splitt/Duc.Splitt.Common/Dtos/Responses/PACIMobileIdResponse.cs b/Duc.Splitt/Duc.Splitt.Common/Dtos/Responses/PACIMobileIdResponse.cs new file mode 100644 index 0000000..d718d7d --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.Common/Dtos/Responses/PACIMobileIdResponse.cs @@ -0,0 +1,14 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel; + +namespace Duc.Splitt.Common.Dtos.Responses +{ + public class PACIMobileIdResponse + { + + public class MobileAuthPNResponseDto + { + public string? DSPRefNo { get; set; } + } + } +} diff --git a/Duc.Splitt/Duc.Splitt.Common/Enums/CustomerRegistrationStatuses.cs b/Duc.Splitt/Duc.Splitt.Common/Enums/CustomerRegistrationStatuses.cs new file mode 100644 index 0000000..99d11f7 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.Common/Enums/CustomerRegistrationStatuses.cs @@ -0,0 +1,13 @@ +namespace Duc.Splitt.Common.Enums +{ + public enum CustomerRegistrationStatuses + { + + OtpPending = 1, + OtpVerifed = 2, + PACIPending = 3, + PACIVerifed = 4, + PaciVerifiedComplete = 5 + } + +} diff --git a/Duc.Splitt/Duc.Splitt.Common/Enums/CustomerStatuses.cs b/Duc.Splitt/Duc.Splitt.Common/Enums/CustomerStatuses.cs new file mode 100644 index 0000000..12f89e1 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.Common/Enums/CustomerStatuses.cs @@ -0,0 +1,10 @@ +namespace Duc.Splitt.Common.Enums +{ + public enum CustomerStatuses + { + + Registration = 1, + Login = 2 + } + +} diff --git a/Duc.Splitt/Duc.Splitt.Common/Enums/MidRequestStatuses.cs b/Duc.Splitt/Duc.Splitt.Common/Enums/MidRequestStatuses.cs new file mode 100644 index 0000000..e62783b --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.Common/Enums/MidRequestStatuses.cs @@ -0,0 +1,17 @@ +namespace Duc.Splitt.Common.Enums +{ + public enum MidRequestStatuses + { + + Initiate = 1, + InitiateSucess = 2, + CallBackReceived = 3, + CallBackProcessSucess = 4, + CallBackProcessFail = 5, + Reject = 6, + CallBackReceivedDataIssue = 7, + MIDIssue = 8, + Exception = 9 + } + +} diff --git a/Duc.Splitt/Duc.Splitt.Common/Enums/MidRequestTypes.cs b/Duc.Splitt/Duc.Splitt.Common/Enums/MidRequestTypes.cs new file mode 100644 index 0000000..5b71939 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.Common/Enums/MidRequestTypes.cs @@ -0,0 +1,8 @@ +namespace Duc.Splitt.Common.Enums +{ + public enum MidRequestTypes + { + AuthenticationPN = 1 + } + +} diff --git a/Duc.Splitt/Duc.Splitt.Common/Enums/OtpPurposes.cs b/Duc.Splitt/Duc.Splitt.Common/Enums/OtpPurposes.cs new file mode 100644 index 0000000..456b465 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.Common/Enums/OtpPurposes.cs @@ -0,0 +1,10 @@ +namespace Duc.Splitt.Common.Enums +{ + public enum OtpPurposes + { + + Registration = 1, + Login = 2 + } + +} diff --git a/Duc.Splitt/Duc.Splitt.Common/Enums/ResponseStatusCode.cs b/Duc.Splitt/Duc.Splitt.Common/Enums/ResponseStatusCode.cs index c616a06..0e79180 100644 --- a/Duc.Splitt/Duc.Splitt.Common/Enums/ResponseStatusCode.cs +++ b/Duc.Splitt/Duc.Splitt.Common/Enums/ResponseStatusCode.cs @@ -55,8 +55,14 @@ public enum ResponseStatusCode StratRemoteTransactionCustomMessage = 6010, OTPExpired = 6233, - OTPMaxAttempts = 6234, - AlreadyUsed = 6235, - EmailNotSent=6236 + OTPVerifyLimitExceeded = 6234, + OTPAlreadyUsed = 6235, + OTPRequestLimitExceeded = 5003, + OTPRequestNotFound = 6233, + OTPVerificationNotCompleted = 6233, + EmailNotSent = 6236, + MIDAPIIssue = 5001, + InvalidPACIData = 5002, + } } diff --git a/Duc.Splitt/Duc.Splitt.Common/Enums/Language - Copy.cs b/Duc.Splitt/Duc.Splitt.Common/Enums/Roles.cs similarity index 88% rename from Duc.Splitt/Duc.Splitt.Common/Enums/Language - Copy.cs rename to Duc.Splitt/Duc.Splitt.Common/Enums/Roles.cs index e043363..926e991 100644 --- a/Duc.Splitt/Duc.Splitt.Common/Enums/Language - Copy.cs +++ b/Duc.Splitt/Duc.Splitt.Common/Enums/Roles.cs @@ -1,6 +1,6 @@ namespace Duc.Splitt.Common.Enums { - public enum UserTypes + public enum Roles { Anonymous = 1, diff --git a/Duc.Splitt/Duc.Splitt.Core/Contracts/Repositories/IConsumerOtpRequestRepository.cs b/Duc.Splitt/Duc.Splitt.Core/Contracts/Repositories/IConsumerOtpRequestRepository.cs index ebaaba7..fc9b656 100644 --- a/Duc.Splitt/Duc.Splitt.Core/Contracts/Repositories/IConsumerOtpRequestRepository.cs +++ b/Duc.Splitt/Duc.Splitt.Core/Contracts/Repositories/IConsumerOtpRequestRepository.cs @@ -5,5 +5,6 @@ namespace Duc.Splitt.Core.Contracts.Repositories public interface IOtpRequestRepository : IRepository { Task GetLatestOtpRequestByMobileNo(string mobileNo); + Task GetOtpRequestById(Guid Id); } } diff --git a/Duc.Splitt/Duc.Splitt.Core/Contracts/Repositories/ICustomerRegistrationRequestRepository.cs b/Duc.Splitt/Duc.Splitt.Core/Contracts/Repositories/ICustomerRegistrationRequestRepository.cs index 96eceb5..2834f1a 100644 --- a/Duc.Splitt/Duc.Splitt.Core/Contracts/Repositories/ICustomerRegistrationRequestRepository.cs +++ b/Duc.Splitt/Duc.Splitt.Core/Contracts/Repositories/ICustomerRegistrationRequestRepository.cs @@ -5,7 +5,9 @@ namespace Duc.Splitt.Core.Contracts.Repositories { public interface ICustomerRegistrationRequestRepository : IRepository { - + Task CustomerRegistrationRequestWithin15Min(string civilId); + Task CustomerRegistrationRequestById(Guid id); + Task CustomerRegistrationRequestStatusId(Guid id); } } diff --git a/Duc.Splitt/Duc.Splitt.Core/Contracts/Repositories/ICustomerRepository.cs b/Duc.Splitt/Duc.Splitt.Core/Contracts/Repositories/ICustomerRepository.cs index fde220f..a6898b9 100644 --- a/Duc.Splitt/Duc.Splitt.Core/Contracts/Repositories/ICustomerRepository.cs +++ b/Duc.Splitt/Duc.Splitt.Core/Contracts/Repositories/ICustomerRepository.cs @@ -4,6 +4,6 @@ namespace Duc.Splitt.Core.Contracts.Repositories { public interface ICustomerRepository : IRepository { - Task GetConsumerUserByMobileNo(string mobileNo); + Task GetCustomerByMobileNo(string mobileNo); } } diff --git a/Duc.Splitt/Duc.Splitt.Core/Contracts/Services/IAuthConsumerService.cs b/Duc.Splitt/Duc.Splitt.Core/Contracts/Services/IAuthConsumerService.cs deleted file mode 100644 index 47b0f36..0000000 --- a/Duc.Splitt/Duc.Splitt.Core/Contracts/Services/IAuthConsumerService.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Duc.Splitt.Common.Dtos.Responses; -using static Duc.Splitt.Common.Dtos.Requests.AuthConsumerUserDto; - -namespace Duc.Splitt.Core.Contracts.Services -{ - public interface IAuthConsumerService - { - - Task> RequestConsumerUserOTP(RequestHeader requestHeader, RegisterDto request); - Task> VerifyConsumerUserOTP(RequestHeader requestHeader,VerifyOtpDto request); - } -} diff --git a/Duc.Splitt/Duc.Splitt.Core/Contracts/Services/IAuthCustomerService.cs b/Duc.Splitt/Duc.Splitt.Core/Contracts/Services/IAuthCustomerService.cs new file mode 100644 index 0000000..d8df03d --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.Core/Contracts/Services/IAuthCustomerService.cs @@ -0,0 +1,15 @@ +using Duc.Splitt.Common.Dtos.Responses; +using System.Threading.Tasks; +using static Duc.Splitt.Common.Dtos.Requests.AuthConsumerUserRequestDto; + +namespace Duc.Splitt.Core.Contracts.Services +{ + public interface IAuthCustomerService + { + + Task> RequestOTP(RequestHeader requestHeader, RegisterDto request); + Task> VerifyOTP(RequestHeader requestHeader, VerifyOtpDto request); + Task> CustomerRegistrationRequest(RequestHeader requestHeader, CustomerRegistrationRequestDto request); + Task> CheckMidStatus(RequestHeader requestHeader, CheckMIdRequestStatusDto request); + } +} diff --git a/Duc.Splitt/Duc.Splitt.Core/Contracts/Services/IMIDServiceAuthenticationService.cs b/Duc.Splitt/Duc.Splitt.Core/Contracts/Services/IMIDServiceAuthenticationService.cs new file mode 100644 index 0000000..31bb522 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.Core/Contracts/Services/IMIDServiceAuthenticationService.cs @@ -0,0 +1,14 @@ +using Duc.Splitt.Common.Dtos.Responses; +using Duc.Splitt.MIDIntegrationService; +using static Duc.Splitt.Common.Dtos.Requests.PACIMobileIdRequest; +using static Duc.Splitt.Common.Dtos.Responses.PACIMobileIdResponse; + +namespace Duc.Splitt.Core.Contracts.Services +{ + public interface IMIDServiceAuthenticationService + { + + Task> InitiateAuthRequestPN(RequestHeader requestHeader, MobileAuthPNRequestDto requestDto); + Task> CallBackPN(CallbackResponse PACIcallback); + } +} diff --git a/Duc.Splitt/Duc.Splitt.Core/Duc.Splitt.Core.csproj b/Duc.Splitt/Duc.Splitt.Core/Duc.Splitt.Core.csproj index 28a6ac2..abfc9ee 100644 --- a/Duc.Splitt/Duc.Splitt.Core/Duc.Splitt.Core.csproj +++ b/Duc.Splitt/Duc.Splitt.Core/Duc.Splitt.Core.csproj @@ -60,10 +60,11 @@ - + + @@ -76,6 +77,7 @@ + diff --git a/Duc.Splitt/Duc.Splitt.CustomerApi/Controllers/AuthController.cs b/Duc.Splitt/Duc.Splitt.CustomerApi/Controllers/AuthController.cs index 7b38bae..b518a6c 100644 --- a/Duc.Splitt/Duc.Splitt.CustomerApi/Controllers/AuthController.cs +++ b/Duc.Splitt/Duc.Splitt.CustomerApi/Controllers/AuthController.cs @@ -12,11 +12,11 @@ namespace Duc.Splitt.CustomerApi.Controllers public class AuthController : BaseAnonymous { - private readonly IAuthConsumerService _authConsumerService; + private readonly IAuthCustomerService _authConsumerService; private readonly ILoggerService _logger; private IUtilsService _utilsService; private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); - public AuthController(ILookupService lookupService, ILoggerService logger, IUtilsService utilsService, IAuthConsumerService authConsumerService) + public AuthController(ILookupService lookupService, ILoggerService logger, IUtilsService utilsService, IAuthCustomerService authConsumerService) { _logger = logger; @@ -25,7 +25,7 @@ public AuthController(ILookupService lookupService, ILoggerService logger, IUtil } [HttpPost] - public async Task> RequestConsumerUserOTP(AuthConsumerUserDto.RegisterDto requestDto) + public async Task> RequestConsumerUserOTP(AuthConsumerUserRequestDto.RegisterDto requestDto) { ResponseDto response = new ResponseDto { @@ -40,7 +40,7 @@ public AuthController(ILookupService lookupService, ILoggerService logger, IUtil response.Code = ResponseStatusCode.InvalidToken; return response; } - var result = await _authConsumerService.RequestConsumerUserOTP(validateRequest, requestDto); + var result = await _authConsumerService.RequestOTP(validateRequest, requestDto); return result; } catch (Exception ex) @@ -54,9 +54,9 @@ public AuthController(ILookupService lookupService, ILoggerService logger, IUtil } [HttpPost] - public async Task> VerifyConsumerUserOTP(AuthConsumerUserDto.VerifyOtpDto requestDto) + public async Task> VerifyConsumerUserOTP(AuthConsumerUserRequestDto.VerifyOtpDto requestDto) { - ResponseDto response = new ResponseDto + ResponseDto response = new ResponseDto { Code = ResponseStatusCode.NoDataFound }; @@ -69,7 +69,7 @@ public AuthController(ILookupService lookupService, ILoggerService logger, IUtil response.Code = ResponseStatusCode.InvalidToken; return response; } - var obj = await _authConsumerService.VerifyConsumerUserOTP(validateRequest, requestDto); + var obj = await _authConsumerService.VerifyOTP(validateRequest, requestDto); return obj; } catch (Exception ex) diff --git a/Duc.Splitt/Duc.Splitt.CustomerApi/Controllers/PACIController.cs b/Duc.Splitt/Duc.Splitt.CustomerApi/Controllers/PACIController.cs new file mode 100644 index 0000000..f9d5090 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.CustomerApi/Controllers/PACIController.cs @@ -0,0 +1,57 @@ +using Duc.Splitt.Common.Dtos.Responses; +using Duc.Splitt.Common.Enums; +using Duc.Splitt.Core.Contracts.Services; +using Duc.Splitt.CustomerApi.Helper; +using Duc.Splitt.Logger; +using Microsoft.AspNetCore.Mvc; +using static Duc.Splitt.Common.Dtos.Requests.PACIMobileIdRequest; +using static Duc.Splitt.Common.Dtos.Responses.PACIMobileIdResponse; + +namespace Duc.Splitt.CustomerApi.Controllers +{ + + public class PACIController : BaseAnonymous + { + private readonly IMIDServiceAuthenticationService _mIDServiceAuthentication; + private readonly ILoggerService _logger; + private IUtilsService _utilsService; + private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); + public PACIController(IMIDServiceAuthenticationService mIDServiceAuthentication, ILoggerService logger, IUtilsService utilsService) + { + _mIDServiceAuthentication = mIDServiceAuthentication; + _logger = logger; + _utilsService = utilsService; + } + + + [HttpPost()] + public async Task> InitiateAuthRequestPN(MobileAuthPNRequestDto requestDto) + { + ResponseDto response = new ResponseDto + { + Code = ResponseStatusCode.NoDataFound + }; + try + { + var validateRequest = await _utilsService.ValidateRequest(this.Request, null); + if (validateRequest == null) + { + response.Code = ResponseStatusCode.InvalidToken; + return response; + } + var obj = await _mIDServiceAuthentication.InitiateAuthRequestPN(validateRequest, requestDto); + return obj; + } + catch (Exception ex) + { + _logger.LogError(ex); + response.Code = ResponseStatusCode.ServerError; + response.Errors = _logger.ConvertExceptionToStringList(ex); + return response; + } + } + + } +} + + diff --git a/Duc.Splitt/Duc.Splitt.CustomerApi/Duc.Splitt.CustomerApi.csproj b/Duc.Splitt/Duc.Splitt.CustomerApi/Duc.Splitt.CustomerApi.csproj index fd6b55d..24be041 100644 --- a/Duc.Splitt/Duc.Splitt.CustomerApi/Duc.Splitt.CustomerApi.csproj +++ b/Duc.Splitt/Duc.Splitt.CustomerApi/Duc.Splitt.CustomerApi.csproj @@ -46,6 +46,7 @@ + diff --git a/Duc.Splitt/Duc.Splitt.CustomerApi/Extensions/ServiceExtensions.cs b/Duc.Splitt/Duc.Splitt.CustomerApi/Extensions/ServiceExtensions.cs index b385df0..e9efcdc 100644 --- a/Duc.Splitt/Duc.Splitt.CustomerApi/Extensions/ServiceExtensions.cs +++ b/Duc.Splitt/Duc.Splitt.CustomerApi/Extensions/ServiceExtensions.cs @@ -1,8 +1,8 @@ using Duc.Splitt.Common.Helpers; -using Duc.Splitt.CustomerApi.ActionFilters; -using Duc.Splitt.CustomerApi.Helper; using Duc.Splitt.Core.Contracts.Repositories; using Duc.Splitt.Core.Contracts.Services; +using Duc.Splitt.CustomerApi.ActionFilters; +using Duc.Splitt.CustomerApi.Helper; using Duc.Splitt.Data.Dapper; using Duc.Splitt.Data.DataAccess.Context; using Duc.Splitt.Identity; @@ -260,9 +260,10 @@ public static void ConfigureBusinessLogicServices(this WebApplicationBuilder bui builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.AddTransient(); - builder.Services.AddTransient(); + builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.AddTransient(); + builder.Services.AddTransient(); } public static void ConfigureLocalization(this WebApplicationBuilder builder) { diff --git a/Duc.Splitt/Duc.Splitt.CustomerApi/appsettings.json b/Duc.Splitt/Duc.Splitt.CustomerApi/appsettings.json index c6ef45b..ca91e54 100644 --- a/Duc.Splitt/Duc.Splitt.CustomerApi/appsettings.json +++ b/Duc.Splitt/Duc.Splitt.CustomerApi/appsettings.json @@ -1,36 +1,47 @@ { - "Logging": { - "LogLevel": { - "Default": "Trace", - "Microsoft": "Information" - } - }, - "ConnectionStrings": { - "DbConnectionStringSplitt": "Data Source=172.20.4.145;Initial Catalog=SplittDB;User ID=sa;Password=P@ssw0rd;Encrypt=False;Trust Server Certificate=False;" - }, + "Logging": { + "LogLevel": { + "Default": "Trace", + "Microsoft": "Information" + } + }, + "ConnectionStrings": { + "DbConnectionStringSplitt": "Data Source=172.20.4.145;Initial Catalog=SplittDB;User ID=sa;Password=P@ssw0rd;Encrypt=False;Trust Server Certificate=False;" + }, + "AnonymousUserID": "FD4A59C5-0714-42B0-9E79-8A7984EA5545", + "RateLimiterOptions": { + "Secure_PermitLimit": 50, + "Secure_Window_InSec": 10, + "Public_PermitLimit": 50, + "Public_Window_InSec": 10 + }, + "Jwt": { + "Key": "vgZlqAf+4JQb+X7hxN4QJlktI5Q9BF+oZBh9Gj+gFKEU5lZa9qYcH++NC8dCsW3XSRjxZbiF20p7gA== ", + "Issuer": "YourIssuer", + "Audience": "YourAudience", + "ExpireMinutes": 30, + "MerchantVerify": "https://mpwpayment.diyarme.com/splittMPortal" + }, + "MIDServiceAppSettings": { + "Username": "venus\\a.varghese", + "Password": "P@ssw0rd", + "MIDAssuranceLevel_AUTH": 20, + "SignatureProfileName": "MID", + "AuthenticationReasonAr": "Civil ID Verification", + "AuthenticationReasonEn": "Civil ID Verification", + "AuthServiceDescriptionAR": "SPLITT Need to Verify Civil ID Information", + "AuthServiceDescriptionEN": "SPLITT Need to Verify Civil ID Information", + "SPCallbackURLPN": "http://172.20.4.28:8080/api/MobileAuthCallBack/CallBackPN", + "AuthServiceURL": "https://dspmobileservice.diyarme.com:8151/MIDAuth/MIDSDKWrapper.MIDWrapper.svc" + }, + "AllowSwagger": true, + "AllowAnyOrigin": true, - "AnonymousUserID": "FD4A59C5-0714-42B0-9E79-8A7984EA5545", - "RateLimiterOptions": { - "Secure_PermitLimit": 50, - "Secure_Window_InSec": 10, - "Public_PermitLimit": 50, - "Public_Window_InSec": 10 - }, - "Jwt": { - "Key": "vgZlqAf+4JQb+X7hxN4QJlktI5Q9BF+oZBh9Gj+gFKEU5lZa9qYcH++NC8dCsW3XSRjxZbiF20p7gA== ", - "Issuer": "YourIssuer", - "Audience": "YourAudience", - "ExpireMinutes": 30, - "MerchantVerify": "https://mpwpayment.diyarme.com/splittMPortal" - }, - "AllowSwagger": true, - "AllowAnyOrigin": true, + "AllowedOriginUrls": [ + "https://XX.XX.net" + ], - "AllowedOriginUrls": [ - "https://XX.XX.net" - ], + "RequestLogExcludedApis": [ - "RequestLogExcludedApis": [ - - ] + ] } diff --git a/Duc.Splitt/Duc.Splitt.CustomerApi/nlog.config b/Duc.Splitt/Duc.Splitt.CustomerApi/nlog.config index 4d76536..81a4c8a 100644 --- a/Duc.Splitt/Duc.Splitt.CustomerApi/nlog.config +++ b/Duc.Splitt/Duc.Splitt.CustomerApi/nlog.config @@ -4,19 +4,19 @@ autoReload="true" internalLogLevel="Info" internalLogFile="C:\SplittLog\ConsumerApi\Internal\Internal.log"> - - - - + + + + - - - + - + - + - - - - - - - - - - + + + + + + + + + + \ No newline at end of file diff --git a/Duc.Splitt/Duc.Splitt.Data/DataAccess/Context/SplittAppContext.cs b/Duc.Splitt/Duc.Splitt.Data/DataAccess/Context/SplittAppContext.cs index 168f12e..3e05e9a 100644 --- a/Duc.Splitt/Duc.Splitt.Data/DataAccess/Context/SplittAppContext.cs +++ b/Duc.Splitt/Duc.Splitt.Data/DataAccess/Context/SplittAppContext.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using Duc.Splitt.Data.DataAccess.Models; using Microsoft.EntityFrameworkCore; @@ -25,7 +25,6 @@ public SplittAppContext(DbContextOptions options) public virtual DbSet AspNetUsers { get; set; } public virtual DbSet BackOfficeUser { get; set; } - //::DBSet Definitions:: public virtual DbSet Customer { get; set; } diff --git a/Duc.Splitt/Duc.Splitt.Data/DataAccess/Models/CustomerRegistrationRequest.cs b/Duc.Splitt/Duc.Splitt.Data/DataAccess/Models/CustomerRegistrationRequest.cs index bc44573..f716c90 100644 --- a/Duc.Splitt/Duc.Splitt.Data/DataAccess/Models/CustomerRegistrationRequest.cs +++ b/Duc.Splitt/Duc.Splitt.Data/DataAccess/Models/CustomerRegistrationRequest.cs @@ -24,8 +24,6 @@ public partial class CustomerRegistrationRequest [Column("PACINumberofAttempts")] public int? PacinumberofAttempts { get; set; } - public int MaxRetryLimit { get; set; } - [Column("PACIVerifiedOn", TypeName = "datetime")] public DateTime? PaciverifiedOn { get; set; } @@ -38,14 +36,14 @@ public partial class CustomerRegistrationRequest [Column(TypeName = "datetime")] public DateTime CreatedOn { get; set; } - public byte CreatedAt { get; set; } + public int CreatedAt { get; set; } public Guid? ModifiedBy { get; set; } [Column(TypeName = "datetime")] public DateTime? ModifiedOn { get; set; } - public byte? ModifiedAt { get; set; } + public int? ModifiedAt { get; set; } [InverseProperty("CustomerRegistrationRequest")] public virtual ICollection Customer { get; set; } = new List(); diff --git a/Duc.Splitt/Duc.Splitt.Data/DataAccess/Models/MidRequestLog.cs b/Duc.Splitt/Duc.Splitt.Data/DataAccess/Models/MidRequestLog.cs index f4e1192..ac2c8fa 100644 --- a/Duc.Splitt/Duc.Splitt.Data/DataAccess/Models/MidRequestLog.cs +++ b/Duc.Splitt/Duc.Splitt.Data/DataAccess/Models/MidRequestLog.cs @@ -17,9 +17,6 @@ public partial class MidRequestLog [StringLength(50)] public string DsprefId { get; set; } = null!; - [StringLength(50)] - public string? RequestIdentifier { get; set; } - public int MidRequestStatusId { get; set; } [Column("MIDPayloadRequest")] diff --git a/Duc.Splitt/Duc.Splitt.Data/DataAccess/Models/PaymentInstallment.cs b/Duc.Splitt/Duc.Splitt.Data/DataAccess/Models/PaymentInstallment.cs index f0fa694..28c772d 100644 --- a/Duc.Splitt/Duc.Splitt.Data/DataAccess/Models/PaymentInstallment.cs +++ b/Duc.Splitt/Duc.Splitt.Data/DataAccess/Models/PaymentInstallment.cs @@ -21,7 +21,7 @@ public partial class PaymentInstallment [Unicode(false)] public string DueAmount { get; set; } = null!; - public int? PaymentDate { get; set; } + public int? DueDate { get; set; } [Column("ERPReferenceNumber")] [StringLength(15)] diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/.config/dotnet-tools.json b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/.config/dotnet-tools.json new file mode 100644 index 0000000..3aca474 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/.config/dotnet-tools.json @@ -0,0 +1,12 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "dotnet-ef": { + "version": "7.0.4", + "commands": [ + "dotnet-ef" + ] + } + } +} \ No newline at end of file diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/ActionFilters/CustomHeaderSwaggerAttribute.cs b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/ActionFilters/CustomHeaderSwaggerAttribute.cs new file mode 100644 index 0000000..51364cc --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/ActionFilters/CustomHeaderSwaggerAttribute.cs @@ -0,0 +1,57 @@ +using Duc.Splitt.Common.Helpers; +using Microsoft.OpenApi.Models; +using Swashbuckle.AspNetCore.SwaggerGen; + +namespace Duc.Splitt.MIDCallbackAPI.ActionFilters +{ + public class CustomHeaderSwaggerAttribute : IOperationFilter + { + public void Apply(OpenApiOperation operation, OperationFilterContext context) + { + if (operation == null) + { + throw new ArgumentNullException("Invalid operation"); + } + operation.Parameters.Add(new OpenApiParameter + { + In = ParameterLocation.Header, + Name = "Accept-Language", + Description = $"Input as the langaue here: examples like => {Constant.LanguageEnText}, {Constant.LanguageArText}", + Schema = new OpenApiSchema + { + Type = "String" + } + }); + operation.Parameters.Add(new OpenApiParameter + { + In = ParameterLocation.Header, + Name = "PlatformTypeId", + Description = $"Input as the Device Type Id (MerchantPortal=1),(IOS=1),(Android=2)", + Schema = new OpenApiSchema + { + Type = "int" + } + }); + operation.Parameters.Add(new OpenApiParameter + { + In = ParameterLocation.Header, + Name = "DeviceIdentifier", + Description = $"Input as the IP / Device Id", + Schema = new OpenApiSchema + { + Type = "String" + } + }); + operation.Parameters.Add(new OpenApiParameter + { + In = ParameterLocation.Header, + Name = "SessionIdentifier", + Description = $"Input as the SessionIdentifier /DeviceToken", + Schema = new OpenApiSchema + { + Type = "String" + } + }); + } + } +} diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/ActionFilters/ValidateAnonymousClientAttribute.cs b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/ActionFilters/ValidateAnonymousClientAttribute.cs new file mode 100644 index 0000000..4098a63 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/ActionFilters/ValidateAnonymousClientAttribute.cs @@ -0,0 +1,51 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Filters; +using System.Net; + +namespace Duc.Splitt.MIDCallbackAPI.ActionFilters +{ + public sealed class ValidateAnonymousClientAttribute : ActionFilterAttribute + { + + public override void OnActionExecuting(ActionExecutingContext context) + { + base.OnActionExecuting(context); + if (!IsValidRequest(context.HttpContext.Request)) + { + context.Result = new ContentResult + { + Content = "Invalid Client Request" + }; + context.HttpContext.Response.StatusCode = (int)HttpStatusCode.ExpectationFailed; + } + } + private static bool IsValidRequest(HttpRequest request) + { + if (request.Headers == null) + { + return false; + } + + else if (!request.Headers.ContainsKey("Accept-Language") && string.IsNullOrWhiteSpace(request.Headers["Accept-Language"])) + { + return false; + } + if (!request.Headers.ContainsKey("DeviceIdentifier") && string.IsNullOrWhiteSpace(request.Headers["DeviceIdentifier"])) + { + return false; + } + else if (!request.Headers.ContainsKey("SessionIdentifier") && string.IsNullOrWhiteSpace(request.Headers["SessionIdentifier"])) + { + return false; + } + else if (!request.Headers.ContainsKey("PlatformTypeId") && string.IsNullOrWhiteSpace(request.Headers["PlatformTypeId"])) + { + return false; + } + else + { + return true; + } + } + } +} diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/ActionFilters/ValidateSecureClientAttribute.cs b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/ActionFilters/ValidateSecureClientAttribute.cs new file mode 100644 index 0000000..af35ec7 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/ActionFilters/ValidateSecureClientAttribute.cs @@ -0,0 +1,55 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Filters; +using System.Net; + +namespace Duc.Splitt.MIDCallbackAPI.ActionFilters +{ + public sealed class ValidateSecureClientAttribute : ActionFilterAttribute + { + + public override void OnActionExecuting(ActionExecutingContext context) + { + base.OnActionExecuting(context); + if (!IsValidRequest(context.HttpContext.Request)) + { + context.Result = new ContentResult + { + Content = "Invalid Client Request" + }; + context.HttpContext.Response.StatusCode = (int)HttpStatusCode.ExpectationFailed; + } + } + private static bool IsValidRequest(HttpRequest request) + { + if (request.Headers == null) + { + return false; + } + else if (!request.Headers.ContainsKey("Authorization")) + { + return false; + } + + else if (!request.Headers.ContainsKey("Accept-Language") && string.IsNullOrWhiteSpace(request.Headers["Accept-Language"])) + { + return false; + } + if (!request.Headers.ContainsKey("DeviceIdentifier") && string.IsNullOrWhiteSpace(request.Headers["DeviceIdentifier"])) + { + return false; + } + else if (!request.Headers.ContainsKey("SessionIdentifier") && string.IsNullOrWhiteSpace(request.Headers["SessionIdentifier"])) + { + return false; + } + else if (!request.Headers.ContainsKey("PlatformTypeId") && string.IsNullOrWhiteSpace(request.Headers["PlatformTypeId"])) + { + return false; + } + else + { + return true; + } + } + } +} diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/ActionFilters/ValidationFilter.cs b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/ActionFilters/ValidationFilter.cs new file mode 100644 index 0000000..d34a5a9 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/ActionFilters/ValidationFilter.cs @@ -0,0 +1,50 @@ +using Duc.Splitt.Common.Dtos.Responses; +using Duc.Splitt.Common.Enums; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Filters; + +namespace Duc.Splitt.MIDCallbackAPI.ActionFilters +{ + public class ValidationFilter : IAsyncActionFilter + { + public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) + { + if (context != null && context.ModelState != null && !context.ModelState.IsValid) + { + var errorsInModelState = context.ModelState.Where(x => x.Value != null && + x.Value.Errors != null && x.Value.Errors.Count > 0).ToDictionary(kvp => kvp.Key, kvp => kvp.Value.Errors.Select(x => x.ErrorMessage)).ToArray(); + var errorResponse = new ErrorDtos(); + if (errorsInModelState != null && errorsInModelState.Count() > 0) + { + foreach (var error in errorsInModelState) + { + if (error.Value != null && error.Value.Count() > 0) + { + foreach (var subError in error.Value) + { + var errorModel = new ErrorModel + { + PropertyName = error.Key, + Message = subError, + Code = ResponseStatusCode.BadRequest + }; + + if (subError.Contains("409")) + { + errorModel.Message = subError.Replace("409", ""); + errorModel.Code = ResponseStatusCode.Conflict; + } + errorResponse.Errors.Add(errorModel); + } + } + } + } + context.Result = new BadRequestObjectResult(errorResponse); + return; + } + + await next(); + + } + } +} diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Controllers/BaseAnonymous.cs b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Controllers/BaseAnonymous.cs new file mode 100644 index 0000000..fd21c79 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Controllers/BaseAnonymous.cs @@ -0,0 +1,14 @@ +using Duc.Splitt.MIDCallbackAPI.ActionFilters; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.RateLimiting; + +namespace Duc.Splitt.MIDCallbackAPI.Controllers +{ + [Route("api/[controller]/[action]")] + [ApiController] + [EnableRateLimiting("Public")] + [ValidateAnonymousClientAttribute] + public class BaseAnonymous : ControllerBase + { + } +} diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Controllers/BaseAuth.cs b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Controllers/BaseAuth.cs new file mode 100644 index 0000000..241aa11 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Controllers/BaseAuth.cs @@ -0,0 +1,17 @@ +using Duc.Splitt.MIDCallbackAPI.ActionFilters; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.RateLimiting; + +namespace Duc.Splitt.MIDCallbackAPI.Controllers +{ + + [Route("api/[controller]/[action]")] + [ApiController] + [Authorize] + [ValidateSecureClientAttribute] + [EnableRateLimiting("Secure")] + public class BaseAuth : ControllerBase + { + } +} diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Controllers/CallBackController.cs b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Controllers/CallBackController.cs new file mode 100644 index 0000000..d39ba72 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Controllers/CallBackController.cs @@ -0,0 +1,60 @@ +using Duc.Splitt.Common.Dtos.Requests; +using Duc.Splitt.Common.Dtos.Responses; +using Duc.Splitt.Common.Enums; +using Duc.Splitt.Core.Contracts.Services; +using Duc.Splitt.MIDCallbackAPI.Helper; +using Duc.Splitt.Logger; +using Microsoft.AspNetCore.Mvc; + +namespace Duc.Splitt.MIDCallbackAPI.Controllers +{ + + public class CallBackController : BaseAnonymous + { + private readonly IAuthCustomerService _authConsumerService; + private readonly ILoggerService _logger; + private IUtilsService _utilsService; + private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); + public CallBackController(ILookupService lookupService, ILoggerService logger, IUtilsService utilsService, IAuthCustomerService authConsumerService) + { + + _logger = logger; + _utilsService = utilsService; + _authConsumerService = authConsumerService; + } + + [HttpPost] + public async Task> RequestConsumerUserOTP(AuthConsumerUserRequestDto.RegisterDto requestDto) + { + ResponseDto response = new ResponseDto + { + Code = ResponseStatusCode.NoDataFound + }; + + try + { + var validateRequest = await _utilsService.ValidateRequest(this.Request, null); + if (validateRequest == null) + { + response.Code = ResponseStatusCode.InvalidToken; + return response; + } + var result = await _authConsumerService.RequestOTP(validateRequest, requestDto); + return result; + } + catch (Exception ex) + { + _logger.LogError(ex); + response.Code = ResponseStatusCode.ServerError; + response.Errors = _logger.ConvertExceptionToStringList(ex); + return response; + } + + } + + + + } +} + + diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Duc.Splitt.MIDCallbackAPI.csproj b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Duc.Splitt.MIDCallbackAPI.csproj new file mode 100644 index 0000000..24be041 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Duc.Splitt.MIDCallbackAPI.csproj @@ -0,0 +1,76 @@ + + + + net8.0 + enable + enable + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + + + + + + + + Always + + + + + + Always + + + + + + Always + + + + + + + + diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Extensions/ServiceExtensions.cs b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Extensions/ServiceExtensions.cs new file mode 100644 index 0000000..3f6b4c3 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Extensions/ServiceExtensions.cs @@ -0,0 +1,289 @@ +using Duc.Splitt.Common.Helpers; +using Duc.Splitt.Core.Contracts.Repositories; +using Duc.Splitt.Core.Contracts.Services; +using Duc.Splitt.Data.Dapper; +using Duc.Splitt.Data.DataAccess.Context; +using Duc.Splitt.Identity; +using Duc.Splitt.Logger; +using Duc.Splitt.MIDCallbackAPI.ActionFilters; +using Duc.Splitt.MIDCallbackAPI.Helper; +using Duc.Splitt.Repository; +using Duc.Splitt.Service; +using Microsoft.AspNetCore.DataProtection; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Localization; +using Microsoft.AspNetCore.RateLimiting; +using Microsoft.EntityFrameworkCore; +using Microsoft.OpenApi.Models; +using System.Globalization; +using System.Threading.RateLimiting; + +namespace Duc.Splitt.MIDCallbackAPI.Extensions +{ + public static class ServiceExtensions + { + + public static void ApplyServiceExtensions(this WebApplicationBuilder builder) + { + + builder.ApplyServiceConfiguration(); + builder.ApplyAppConfiguration(); + } + private static void ApplyServiceConfiguration(this WebApplicationBuilder builder) + { + builder.Services.AddAutoMapper(typeof(ObjectMapperAr)); + builder.Services.AddAutoMapper(typeof(ObjectMapperEn)); + // builder.Services.AddControllersWithViews(); + // builder.Services.AddRazorPages(); + builder.Services.AddControllers(); + + builder.Services.AddScoped(); + builder.Services.AddScoped(); + builder.ConfigureSwagger(); + builder.ConfigureCors(); + builder.ConfigureSqlDbContext(); + builder.ConfigureLoggerService(); + builder.ConfigureUnitOfWork(); + builder.ConfigureBusinessLogicServices(); + builder.ConfigureLocalization(); + builder.ConfigureAppSettingsValue(); + builder.ConfigureAuthentication(); + //builder.ConfigureSignalR(); + builder.ConfigureRateLimiter(); + builder.Services.Configure(hostOptions => + { + hostOptions.BackgroundServiceExceptionBehavior = + BackgroundServiceExceptionBehavior.Ignore; + }); + } + + private static void ApplyAppConfiguration(this WebApplicationBuilder builder) + { + var app = builder.Build(); + app.UseRateLimiter(); + app.UseStaticFiles(); + var allowSwagger = builder.Configuration.GetValue("AllowSwagger"); + if (allowSwagger) + { + app.UseSwagger(); + app.UseSwaggerUI(); + } + app.UseMiddleware(); + app.UseHttpsRedirection(); + app.UseAuthentication(); + app.UseAuthorization(); + //app.MapRazorPages(); + + + app.MapControllerRoute( + name: "default", + pattern: "{controller=home}/{action=Index}/{id?}"); + + var supportedCultures = new[] + { + new CultureInfo( Constant.LanguageEnText), + new CultureInfo(Constant.LanguageArText) + }; + + app.UseRequestLocalization(new RequestLocalizationOptions + { + DefaultRequestCulture = new RequestCulture(Constant.LanguageEnText, Constant.LanguageArText), + SupportedCultures = supportedCultures, + SupportedUICultures = supportedCultures + }); + // app.UseRouting(); + app.Run(); + + } + #region Services + + + + public static void ConfigureAuthentication(this WebApplicationBuilder builder) + { + builder.Services.AddDbContext(options => + options.UseSqlServer(builder.Configuration.GetConnectionString("DbConnectionStringSplitt"), + b => b.MigrationsAssembly("Duc.Splitt.Identity"))); + + builder.Services.AddIdentity(options => + { + options.User.RequireUniqueEmail = false; + options.SignIn.RequireConfirmedPhoneNumber = true; + + }) + .AddEntityFrameworkStores() + .AddDefaultTokenProviders(); + builder.Services.AddDataProtection() + .PersistKeysToDbContext() + .SetApplicationName("SplittApplication"); + + + } + public static void ConfigureSqlDbContext(this WebApplicationBuilder builder) + { + builder.Services.AddDbContext( + options => + options.UseSqlServer(builder.Configuration.GetConnectionString("DbConnectionStringSplitt")), + ServiceLifetime.Transient); + } + + private static void ConfigureCors(this WebApplicationBuilder builder) + { + ConfigurationManager configuration = builder.Configuration; + var allowAnyOrigin = configuration.GetValue("AllowAnyOrigin"); + var getStr = configuration.GetSection("AllowedOriginUrls").Get(); + if (allowAnyOrigin) + { + builder.Services.AddCors(options => + { + options.AddDefaultPolicy(builder => builder.AllowAnyOrigin() + .AllowAnyMethod() + .AllowAnyHeader()); + + }); + } + else if (getStr != null) + { + builder.Services.AddCors(options => + { + + options.AddDefaultPolicy(builder => + { + builder.WithOrigins(getStr) + .AllowAnyHeader() + .AllowAnyMethod() + .SetIsOriginAllowed((x) => true) + .AllowCredentials(); + }); + + }); + } + + } + static string GetUserEndPoint(HttpContext context) => + $"User {context.User.Identity?.Name ?? "Anonymous"} endpoint:{context.Request.Path}" + + $" {context.Connection.RemoteIpAddress}"; + private static void ConfigureRateLimiter(this WebApplicationBuilder builder) + { + ConfigurationManager configuration = builder.Configuration; + var Secure_PermitLimit = configuration.GetValue("RateLimiterOptions:Secure_PermitLimit"); + var Secure_Window = configuration.GetValue("RateLimiterOptions:Secure_Window_InSec"); + var Public_PermitLimit = configuration.GetValue("RateLimiterOptions:Public_PermitLimit"); + var Public_Window = configuration.GetValue("RateLimiterOptions:Public_Window_InSec"); + + builder.Services.AddRateLimiter(options => + { + options.OnRejected = async (context, token) => + { + context.HttpContext.Response.StatusCode = StatusCodes.Status429TooManyRequests; + string rejectMessage = ""; + if (context.Lease.TryGetMetadata(MetadataName.RetryAfter, out var retryAfter))// Noncompliant + { + rejectMessage = "Too many requests. Please try again later. "; + await context.HttpContext.Response.WriteAsync(rejectMessage, cancellationToken: token); + } + else + { + rejectMessage = "Too many requests. Please try again later. "; + await context.HttpContext.Response.WriteAsync(rejectMessage, cancellationToken: token); + } + context.HttpContext.RequestServices.GetService()? + .CreateLogger("Microsoft.AspNetCore.RateLimitingMiddleware").LogWarning(rejectMessage); + }; + options.AddFixedWindowLimiter("Secure", options => + { + options.AutoReplenishment = true; + options.PermitLimit = Secure_PermitLimit; + ; + + options.Window = TimeSpan.FromSeconds(Secure_Window); + }); + options.AddFixedWindowLimiter("Public", options => + { + options.AutoReplenishment = true; + options.PermitLimit = Public_PermitLimit; + + options.Window = TimeSpan.FromSeconds(Public_Window); + }); + }); + } + private static void ConfigureSwagger(this WebApplicationBuilder builder) + { + ConfigurationManager configuration = builder.Configuration; + var allowSwagger = configuration.GetValue("AllowSwagger"); + if (allowSwagger) + { + builder.Services.AddEndpointsApiExplorer(); + builder.Services.AddSwaggerGen(s => + { + s.SwaggerDoc("v1", new OpenApiInfo { Title = "Splitt Consumer API", Version = "v1", }); + s.OperationFilter(); + s.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme + { + Name = "Authorization", + Type = SecuritySchemeType.ApiKey, + Scheme = "Bearer", + BearerFormat = "JWT", + In = ParameterLocation.Header, + Description = "JWT Authorization header using the Bearer scheme." + }); + + s.AddSecurityRequirement(new OpenApiSecurityRequirement + { + { new OpenApiSecurityScheme + { + Reference = new OpenApiReference + { + Type = ReferenceType.SecurityScheme, + Id = "Bearer" + } + }, + new string[] {} + } + }); + + }); + } + } + public static void ConfigureLoggerService(this WebApplicationBuilder builder) + { + builder.Services.AddSingleton(); + } + public static void ConfigureUnitOfWork(this WebApplicationBuilder builder) + { + builder.Services.AddScoped(); + builder.Services.AddTransient(); + } + public static void ConfigureBusinessLogicServices(this WebApplicationBuilder builder) + { + + builder.Services.AddTransient(); + builder.Services.AddTransient(); + builder.Services.AddTransient(); + builder.Services.AddTransient(); + builder.Services.AddTransient(); + builder.Services.AddTransient(); + builder.Services.AddTransient(); + } + public static void ConfigureLocalization(this WebApplicationBuilder builder) + { + builder.Services.AddLocalization(options => options.ResourcesPath = "Resources"); + + builder.Services.AddLocalization(); + } + public static void ConfigureAppSettingsValue(this WebApplicationBuilder builder) + { + + builder.WebHost.UseSetting(WebHostDefaults.ContentRootKey, Directory.GetCurrentDirectory()); + ConfigurationManager config = builder.Configuration; + var contentRootTemplate = $"{builder.Environment.WebRootPath}\\Template"; + Utilities.AnonymousUserID = builder.Configuration.GetValue("AnonymousUserID"); + + } + public static void ConfigureSignalR(this WebApplicationBuilder builder) + { + //builder.Services.AddSignalR(); + } + #endregion + } +} diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Helper/IUtilsService.cs b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Helper/IUtilsService.cs new file mode 100644 index 0000000..8b8d48b --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Helper/IUtilsService.cs @@ -0,0 +1,14 @@ +using Duc.Splitt.Common.Dtos.Responses; +using System.Security.Claims; + +namespace Duc.Splitt.MIDCallbackAPI.Helper +{ + + public interface IUtilsService + { + Task ValidateRequest(HttpRequest request, ClaimsPrincipal? user); + } + + +} + diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Helper/MapperProfile.cs b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Helper/MapperProfile.cs new file mode 100644 index 0000000..a6d3573 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Helper/MapperProfile.cs @@ -0,0 +1,16 @@ + +using AutoMapper; + +namespace Duc.Splitt.MIDCallbackAPI.Helper +{ + public class MapperProfile : Profile + { + public MapperProfile() + { + + + } + } + + +} diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Helper/UtilsService.cs b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Helper/UtilsService.cs new file mode 100644 index 0000000..ab9d015 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Helper/UtilsService.cs @@ -0,0 +1,52 @@ +using Duc.Splitt.Common.Dtos.Responses; +using Duc.Splitt.Common.Enums; +using Duc.Splitt.Common.Helpers; +using Duc.Splitt.Data.Dapper; +using System.Security.Claims; + +namespace Duc.Splitt.MIDCallbackAPI.Helper +{ + public class UtilsService : IUtilsService + { + private readonly IDapperDBConnection _dapperDBConnection; + + + public UtilsService(IDapperDBConnection dapperDBConnection) + { + _dapperDBConnection = dapperDBConnection; + } + public async Task ValidateRequest(HttpRequest request, ClaimsPrincipal? user) + { + RequestHeader requestHeader = new RequestHeader(); + if (request != null) + { + if (request.Headers["accept-language"].Count > 0 && !string.IsNullOrWhiteSpace(request.Headers["accept-language"])) + { + requestHeader.IsArabic = request.Headers["accept-language"].ToString().ToLower().Equals(Constant.LanguageArText.ToLower()) ? true : false; + } + if (request.Headers.ContainsKey("DeviceId") && !string.IsNullOrWhiteSpace(request.Headers["DeviceId"])) + { + requestHeader.DeviceId = Convert.ToString(request.Headers["DeviceId"]); + } + if (request.Headers.ContainsKey("DeviceToken") && !string.IsNullOrWhiteSpace(request.Headers["DeviceToken"])) + { + requestHeader.DeviceToken = Convert.ToString(request.Headers["DeviceToken"]); + } + if (request.Headers.ContainsKey("DeviceTypeId") && !string.IsNullOrWhiteSpace(request.Headers["DeviceTypeId"])) + { + requestHeader.DeviceTypeId = (DeviceTypes)Enum.Parse(typeof(DeviceTypes), Convert.ToString(request.Headers["DeviceTypeId"])); + } + //if (request.Headers.ContainsKey("TokenId") && !string.IsNullOrWhiteSpace(request.Headers["TokenId"])) + //{ + // requestHeader.TokenId = Convert.ToString(request.Headers["TokenId"]); + //} + requestHeader.LocationId = Locations.MerchantPortal; + + + } + return requestHeader; + } + } + +} + diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Program.cs b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Program.cs new file mode 100644 index 0000000..092e358 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Program.cs @@ -0,0 +1,26 @@ +using Duc.Splitt.MIDCallbackAPI.Extensions; +using NLog; +using NLog.Web; + + +var logger = NLog.LogManager.Setup().LoadConfigurationFromFile("nlog.config").GetCurrentClassLogger(); + +try +{ + var builder = WebApplication.CreateBuilder(args); + builder.Host.UseContentRoot(Directory.GetCurrentDirectory()); + logger.Debug("Application Starting Up"); + builder.Logging.ClearProviders(); + builder.Logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace); + builder.Host.UseNLog(); + ServiceExtensions.ApplyServiceExtensions(builder); +} +catch (Exception exception) +{ + logger.Error(exception, "Stopped program because of exception"); + throw; +} +finally +{ + NLog.LogManager.Shutdown(); +} diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Properties/launchSettings.json b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Properties/launchSettings.json new file mode 100644 index 0000000..4a67758 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/Properties/launchSettings.json @@ -0,0 +1,13 @@ +{ + "profiles": { + "Duc.Splitt.CustomerApi": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50063;http://localhost:50065", + "launchUrl": "swagger" + } + } +} \ No newline at end of file diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/appsettings.json b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/appsettings.json new file mode 100644 index 0000000..35331c8 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/appsettings.json @@ -0,0 +1,47 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Trace", + "Microsoft": "Information" + } + }, + "ConnectionStrings": { + "DbConnectionStringSplitt": "Data Source=172.20.4.145;Initial Catalog=SplittDB;User ID=sa;Password=P@ssw0rd;Encrypt=False;Trust Server Certificate=False;" + }, + "AnonymousUserID": "FD4A59C5-0714-42B0-9E79-8A7984EA5545", + "RateLimiterOptions": { + "Secure_PermitLimit": 50, + "Secure_Window_InSec": 10, + "Public_PermitLimit": 50, + "Public_Window_InSec": 10 + }, + "Jwt": { + "Key": "vgZlqAf+4JQb+X7hxN4QJlktI5Q9BF+oZBh9Gj+gFKEU5lZa9qYcH++NC8dCsW3XSRjxZbiF20p7gA== ", + "Issuer": "YourIssuer", + "Audience": "YourAudience", + "ExpireMinutes": 30, + "MerchantVerify": "https://mpwpayment.diyarme.com/splittMPortal" + }, + "MIDServiceAppSettings": { + "Username": "venus\\a.varghese", + "Password": "P@ssw0rd", + "MIDAssuranceLevel_AUTH": 20, + "SignatureProfileName": "MID", + "AuthenticationReasonAr": "Civil ID Verification", + "AuthenticationReasonEn": "Civil ID Verification", + "AuthServiceDescriptionAR": "SPLITT Need to Verify Civil ID Information", + "AuthServiceDescriptionEN": "SPLITT Need to Verify Civil ID Information", + "SPCallbackURLPN": "http://172.20.4.28:8080/api/MobileAuthCallBack/CallBackPN", + "AuthServiceURL": "http://172.20.4.28:8080/api/MobileAuthCallBack/CallBackPN" + }, + "AllowSwagger": true, + "AllowAnyOrigin": true, + + "AllowedOriginUrls": [ + "https://XX.XX.net" + ], + + "RequestLogExcludedApis": [ + + ] +} diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/appsettings.staging.json b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/appsettings.staging.json new file mode 100644 index 0000000..e6bdd60 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/appsettings.staging.json @@ -0,0 +1,91 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Trace", + "Microsoft": "Information" + } + }, + "ConnectionStrings": { + "DbConnectionStringConsumerApp": "Data Source=tcp:ev-centralapp-prod-sqlserver.database.windows.net,1433;Initial Catalog=TasmuSmartEV-Prod;User ID=sqladmin;Password=$q1@dm!n@468;Encrypt=False;Trust Server Certificate=False;" + }, + "Logger": { + "DbConnectionStringLogger": "Data Source=tcp:ev-centralapp-prod-sqlserver.database.windows.net,1433;Initial Catalog=TasmuSmartEVLog-Prod;User ID=sqladmin;Password=$q1@dm!n@468;Encrypt=false;TrustServerCertificate=false;", + "StoredProcedureName_log1": "[dbo].[ConsumerAppLogsAdd]", + "StoredProcedureName_log2": "[dbo].[ConsumerAppLogsAddException]" + }, + "RateLimiterOptions": { + "Secure_PermitLimit": 50, + "Secure_Window_InSec": 10, + "Public_PermitLimit": 5, + "Public_Window_InSec": 10 + }, + "AzureAdB2C": { + "Instance": "https://tasmucpb2cprod.b2clogin.com", + "ClientId": "b6e1dc29-5800-4d05-864e-a165fad7c53f", + "Domain": "tasmucpb2cprod.onmicrosoft.com", + "SignUpSignInPolicyId": "B2C_1A_SIGNUP_SIGNIN_EV_PRD", + "CallbackPath": "/signin-oidc", + "ClientSecret": "lSG8Q~QNzV7yzxgnTpok_ycx8AEo4t4KyMVVmarI" + }, + "AzureAdB2C1": { + "Instance": "https://tasmucpb2cprod.b2clogin.com", + "ClientId": "b6e1dc29-5800-4d05-864e-a165fad7c53f", + "Domain": "tasmucpb2cprod.onmicrosoft.com", + "SignUpSignInPolicyId": "B2C_1A_SIGNUP_SIGNIN_EV_PRD", + "CallbackPath": "/signin-oidc", + "ClientSecret": "lSG8Q~QNzV7yzxgnTpok_ycx8AEo4t4KyMVVmarI" + }, + "NoticationAPI": { + "APIBaseURL": "https://ev-messaging-service-stg.azurewebsites.net", + "APICallTimeOutInSec": 60, + "APICallTimeOutInMin": 0, + "RemoteStartTransaction": "/api/ControlMessage/RemoteStartTransaction", + "RemoteStopTransaction": "/api/ControlMessage/RemoteStopTransaction", + "IntegrationJWTSecret": "ByYM000OLlMQG6VVVp1OH7Xzyr7gHuw1qvUC5dcGt3SNM", + "Issuer": "https://consumerapp-api-stg.azurewebsites.net" + }, + "PaymentAPI": { + "APIBaseURL": "https://tasmupaymentstg.azurewebsites.net", + "APICallTimeOutInSec": 30, + "APICallTimeOutInMin": 0, + "InitiatePaymentRequest": "/api/InitiatePayment/InitiatePaymentRequest", + "GetPaymentRequest": "/api/Payment/GetRequest", + + "Authenticate": "/api/Users/Authenticate", + "UserId": "BE4441EB-B76C-4C29-85AD-420918AA01F3", + "Password": "6684840A-33DE-4A4B-B06A-BE51234F59E4E21BFA81-CB9E-4ACF-BBD2-302E4413A6C0", + "PaymentSucessPageURL": "https://evmobilitystg.km.qa/MobileCallbackPayment", + "IsByPassPayment": false, + "ByPassInitiatePageURL": "https://evmobilitystg.km.qa/pay?PaymentRequest=", + "ByPassCallBackResposeURL": "https://evmobilitystg.km.qa/paymentresponse" + + }, + "ContactUsAPI": { + "APIBaseURL": "https://tasmupaymentstg.azurewebsites.net", + "APICallTimeOutInSec": 30, + "APICallTimeOutInMin": 0, + "SubmitContactUs": "/api/Support/SubmitContactUs", + "Authenticate": "/api/Users/Authenticate", + "UserId": "BE4441EB-B76C-4C29-85AD-420918AA01F3", + "Password": "6684840A-33DE-4A4B-B06A-BE51234F59E4E21BFA81-CB9E-4ACF-BBD2-302E4413A6C0" + }, + "NoticationSignalRAPI": { + + "APIBaseURL": "https://centralprocesssignalr-stg.azurewebsites.net", + "MessageHub": "/api", + "ReConnectDelayInSec": 5, + "WithAutomaticReconnectDelayInSec": 5 + + }, + "TemplateName": { + "PaymentRecepit": "paymentrecepit.pdf", + "TransactionReceipt": "transactionreceipt.pdf" + }, + "AllowSwagger": true, + "AllowAnyOrigin": true, + "IsTestAPI": false, + "AllowedOriginUrls": [], + "RequestLogExcludedApis": [ + "/api/Cpo/SearchCpo" + ] +} diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/nlog.config b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/nlog.config new file mode 100644 index 0000000..81a4c8a --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/nlog.config @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/web.config b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/web.config new file mode 100644 index 0000000..25a2279 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/web.config @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Amenities/CarWash.png b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Amenities/CarWash.png new file mode 100644 index 0000000000000000000000000000000000000000..fa3bbe3b5c523f964a9654ac3b0c9c0429377268 GIT binary patch literal 4392 zcmV+@5!ddCP)0{{R38_gF{0000UP)t-s?(XgY z00960|M>X$Y;0_djEo{8B1A+)v$M0*)YKfw_yhm|5XDJEK~#9!?48SZ+r|}#As}h$ zogkASxf=m|06PfmandDe**@8ojMb#OQnl%NNu@Q@T}aoCybI|jw*T7_ARcpP2C~F? z05}J8e2xVV2KWrk^LOu^(d=Dv{Cgj--&|ZgJrC29C(Ag!crnM4WzA+Y%gp|mqEqzT z-CO2X^3GSU_9Q#3M;8~@?>-r}uW8zj`LAYmlJ#7VpuaXNmD*?r?aZnLZLW9FgNiYm z$4Ij$RfBHrpv}sqt=6j^^jPax5BgF&svdMlTU8Ibtxc*2-OxrgbPb&kUBNottY+^~ z!G8Kg8&nVaN^`3?VG0(N>pW~t-&AhCWNVeHAC|p?*56iaHXTA6_HVDMgZ%8Z9YXJ@ zZU5t&r{~M%tNDCh${Mlb3I&@V-UXqy6hiOP&<4pF2JsL3Y|R+%)9o%n*WY&TR2IK9 z5)3lMH*0!)?GOF1P;z(tjJsVzXq)Fz@uguHI3x)z;*t$5{zVmoj{ipSzl*pWkkXs5 zCu`!LRYTX%HFSBPohm{@nZB9K1xgK#zNhA8rH6KB)Fka&yX4ReX48C#$_>p_*(|-( z(A^xR!Y?y)jxyLpC5CqL7EFd%Xrc4zTvOS!yo&%M*Hm^@Ug&(a>ZHWbxnlQmiJ^0C zA)P8hw`=Gcx|-0FDmKJT1-rcb5%IFbT3!|B9-5zTCn+y<-Z*AFHOjAmY6_t%BK1nYtf6b@8oGwA zp-T=e!3!Z7&80nABJ|IG6`*}^=`~OVpa<{arMZPS2Yv~m7qAjfBJ)sovwj`@D#``@ zwuSIZl$ga+=+RFhb*Z2~m=HSDZ2|~w{&PoNCg=|)0X>Q0m2l|Y>hXDiN(8-QhR`T= zo4}#Xrf!!8I%I~>k^6+@;LwrPyit-bZP>q<6!avHXCt9g>Vl!|*q7PDpiwM`A#7An z9L@C-K=11Y0UbNnSOGR(rta}U;n2YssW#(exsyy=N^bTr521pg^&YU=$GHe|yP~1Z zmj$b)4yN7dNiOC=o!#u=8apa<5r7NQ+awp0smJNfc)&zUFA^HqD^h5L+v1X&!L5Hs z1wsQkdY$BUal-`@+R}@I?vd7@C>L1f#>vfH(gCC>=oJ}(66J!(s$({EvoL66vc4Vy zF-pncPKM(Z2Hj;sJAERijR`$12%5AiU&h%)rC~##6a_tEa@f#TbnG*sI|V@pGxoz@`Tjnah!u=mB5CZm3WE07&_wgJ*k9T#2-;;s4``Q7Mx8DT^a&gK zy?AJjc`aEzF4=TCv)05*2IY$Y(ua3^(?X+HOQR@gIJmSN z#vC;5kZqz@Zx;ov~bp;5Xh#bI(}q(1x?`CMpWrctC7Xu+QzWV{Cyd*_B_ISc7KxT0G6g=ceNz^^e5< zGpzy@CjAdgzg=u@WCdB-V1g}j3Y5jtPi<}S+yy3ZWH%e$EL+wV2(AAKTZw16X-Clt z@UliP)2NFSAnh+hkG2=DX%kHJ{nrRetnTC8zy4bfik5oqlnc-OGOQub)(%lNuzf8k zg|DeY2c#N-bMKSRyg4@Xm(q2@2<)Kt_o$(3=o*^y(yt)2@hd6~w86^lt?8Tf$9h?y z1CNzEIblH0Iu7Geuhl~b?wpa^O&3zw&Aw@_efs8b`KT5;a2FOMceHo%fH%9DVFs7Q4Ei>*#I z-S3F8C31rmZhFbeMl#JyQU}|wb04Z&1O)Le9&18T=mF6nE4yFNt_cswcun?D4Rpe6 zPGN2=NVcf5vn+xOdsHH-JyZd$r@N&PdfZn~MNi9mxS5=Wj)XJG(0UeAb_H@%Iblka z?coYd_NYGYz91Lcz~bO8LGFeyH`Ch9kBAN3+De9YFwyY@*O)y#bQzT0;Ct7kkHQU$ zO}Ws)@3;*Phu)BG5oy^GrZ-{GxVZWwk_c@8MYMx;y&kSE!m?nSpzKjc3~^fuG!)En zy9tf}6`6eR$H1X~uDSK)%1Cd?@q^n|uIYb;k5%rLNFJWB>NVYtc+n22G8(^#%77TcPU*!^WdyLndEu1SB+ zq%8c8uJfR$vQ*PSj&}_4tKR#i*i1*8%k;@BhTE2eMSyWiIL)Nc6Na&#Z4;0CHjN7A zKam7Yx`$=ZglT_>m32*4KB{t(}vRHC}Y=g)}3(T8|C_BK97s7MXhXuY==s2SGc|hhS z0`PY>T{dY6Yac$@aP|+=WlOz=?Ok7Q8M$uwty|wYtg_)g>(;Z^q<7HnVd&%adnJ|t zo1JU_@%mlhu**ic4yUJ;Fvlxgf3ocxb~}iV!zmlI>dP9shOVJ&=n|X;RlB&=&^2@o zT|?Kg5R zJ{5G3xT6w!Bdf{lh0tA5&>dSH^pPm&hC*mjRXU9yPyp=+W6pN}kPh7w z2YsRn+Bg#j-BzZWPQ*c5j;ck#OdNC)N+liI708?f_(+Eyh=e{yYM?hFp&N>zMe^Nayg$<-6e41lLif4d%x9h z)ao23{VD$2|MX^&>n-o;cyy%A0qZOa8CxI~8ni>}@J)hegv+~BXg4Ru z_O8$qq9sa&9x#?lhd`eaK@2jX;aJA8b#0G`HIoWG;@t}%zC=VzlnFg#1#uoEB97o( zQ6{v@idi`bdIP60GNA|b>h3^j*rH`Z!*)33alLd+=8noTpg~Oxc%b2IQL1VR+aZ^O z%Y?PrfQ&@|v5yKD^ciapa|zIJdyh+>3%bj)a!G(D+aVXU$Fg$CfL_4pUp}WT@UTD{ zG$NECKIj$0$|V7sjN#;iK4r8-@z7*D6nUguM;0{PRba~Nh=`cGZU~1aqklQQCl|E6 zSv)i)d2m8+Nby4kbeEi$azgiMd$Vw8XkEVVb3^y2?L8zwugLWwC$vLvtRNhkmL7TC zm>1MUPq=F8Q6Gk9K23F@S5g)M1F8ygLc_r-vT_NBKB6{j;e>|Mf`%062{l*Xg+|n# zF~Xr~-y>dVIK)mRK)bY;7dP~ZR3t=0_v!f!FEkvk!ZB7f^okz8c%k9Mz;eVxFR0Fg zAKD|GCNPn%vt}F!YKMS;G$vp4xImL(c?5`@^A~?HQ9) zYO&CSTif%WZSLfM{O^L?6HOqrvESN-_5xZy*?amtdK5YSMCsy&^e9YWf#q_}aHF*T zc1w5aTTOz0F%_ksY+;Llx2Cf6A4d@M*QUZWMna%HmCUBK6#~6c3Vj>zpwC0A{m`*% z121%6HFO8@Lr+vghllv`LeIIW~ha^_IH;)F)(p)a|iJ@wG{{R%=Kb3=cl9=d~g zp?hV7{@i@Js~)<|y$Glz^q_{mRchAIm4WWp&}yKK8d??fSq)u7=R+UW(1M`v zL_&HK4c$(1$zzcYO54Oc%9RSePI3(adPpaIQLvE+-Oh4#eyx3-z33aU&_`5_j&r#M zkp}jnU?dG1oQe+5ojF8j#NEmJ(x8FoK6m|?;xBTgL0^Gf-sJ&&(Lxq9j7I4RsM6Vs zRAbR_&mr;?x>Fd8S|RH5OE26utJ!+g4VQ*iGgdO!Z6u0Smhj}vbTg}#I@ z>PcF;sDc*yrJFLLMOF{|OOv6FrpP)ykOWPHI&yY-`(1&O7vV~lSm-s#17fauCrsPCkXy0P7C5GkcWOG$3vLz*odjL$R1EdOEirk~ z19{LLY?}#g;o8!3b{P;1Z3S5_Z|yMu-`=_Ov<(CS*m21<&Wr3o;>^tAjdpWdtrUM5W!E#a^Jx5@hNgdR@Ig2F zlPynh>m~e2z;rrirIY%nxBX7B8sG&zRA!0?wM*XEmh_qyt;`isIM&zUgC_kTr#lB} z1kAg7FS7g%{+-AH`6qwa=A7o$LPP6^#QD)Nov&9Mo!tOuAvrYraL^8#6?)G>8-i{- zXa`-X2*?j;=*UJ%M^%*cB6a&cLXpwYVh1)t$2LOyUE|POc<4jp&;vYl%`|h9AoJ7s znb#+PR;gL$<;$JCRXW75_VJ4(F<2Shib9b<*Ny5-C364YTvi4XgRiLa#_RHjDdrQ( zWOwMb*c*;+PxQ!`%k>UhR8|1mi~gdr0i$1BG;HynUXJ@m1oToF`k<3EtB)3CJMl&y11c38=>WcjgofIqiL7>?@_Z6df!Iq9Vcmv zC4KFn*91D)wNcU)gI-Rb-Uan(R6#WVn%fBAfIf84z;w?+zY5)SlIDO;ZIrZwUK?o0 zN3D?1ckclm(nGf#GzavjL!-Mv0s72<6gplZJZgoAKc5sDh_6Anu!?{H z1X^fak4&&lXgYwBM+yzp+Zmuc=XCXmD^h4Zvt39ubgD-n&_ZkF8VFig?dxU*EwrYS zB^@+$q${Sh(DU(EdA((HH>gw#Z6o!XYS-gQc?DXJj(RDG7DH>4NVhjF) iYnRVo=`lf9W%?iUuks(%ddubj0000 literal 0 HcmV?d00001 diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Amenities/PrayerRoom.png b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Amenities/PrayerRoom.png new file mode 100644 index 0000000000000000000000000000000000000000..6cd65bcad3f6a8868cb659b3f2061d1aeb3cb1d1 GIT binary patch literal 3252 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 U^Q*`r`3kY2c(TlRau19D1OA}~z5oCK literal 0 HcmV?d00001 diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Amenities/Restaurant.png b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Amenities/Restaurant.png new file mode 100644 index 0000000000000000000000000000000000000000..2580b3b10117d57f3d1b4eb8baf1682db3b6fa57 GIT binary patch literal 5735 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 literal 0 HcmV?d00001 diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Amenities/TyreChange.png b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Amenities/TyreChange.png new file mode 100644 index 0000000000000000000000000000000000000000..f6f4a8a54a2b10f2a11ac35f28e2a365cc1b7bf2 GIT binary patch literal 6622 zcmV<486oD0P))YP}P zx8maBk&%($;NYgFro_a=G&D43W@gID%ATH{Y;0_2&`eBBh=_+PmG)Xfw^VI(TpLYQ?%2HaYj%>&s!EN`zNftQo^(WKptR)&{KYu(oH@ zf57Y^*0#hBrqIC?Isn#o#SXU60SX-)sRPt?aPJ-L1|5K1IUnO60{;;BhrmAs_=Idq zc@Ii?4@!9tMsgdnwkLD|!b4Vd2S@1OR(EhU9TdaU%}3F}u!Qf#khA#6EaBT&0&;Q( zVd+>LxON>tyAH0{!IC;Wn2#YYXK8h|U2NJ8R_)cP?I7&7+gd9la9cW6^RZrnK%s-x z6ais)BEQiiP@a#9LH$GE9|A^wmivH57g(+Z3GwmKCd|jz^vtn@HjvJo28Wb(K8DMP zjS^;Uz}gOLd#nxQhtwU&k2{X%I?x*K$D95RPgBctJv!Z62ak1jgg1EAZxA~? z7@pYS!F*H_QJF{E+SO^^JFo-DO{b&5=XSBfVHCwtPH`0W@W@B8X8G20q5vC=>aAeh`wsLX2f{1kP>mT5(PT_8_^(LC0L)LZ zYASw+;=^&CkO%1^yUT?1U*x|@f3S^EsN@>~T8gB%6J5@}rpO0ym=n3O=rcMdaVcg20}CDA0@# zLr3>98^{A%rBxvh3;`KM161C?}4PDpZ0gp<)Qx8IrO zcp>j7AI7|Gh<5-m8GJpKj;SzASca7^n!dcK40L=`1ng5;0>Eeu zvks0u`&Ke|B?>+CF-V=vhU*^XWe`tZfxtsPVE4+KHVFG!XLq;?>rS785XNiH6U?b0 z$yVXg{6jwAG2#+5YdeazoBCw{!lmufM@(mc}6RT(L*wKeQk;q8gi&H>2m zgmBlI35pZ7Eykmz9}AD*Pwa%^?orBwa9IA*!I^b{T`U0tCpi=8{+yLr3O2xdNX1}Y zUY}^nI)LMoY%rr>;xGhK2~V_#?}5O&%%+jYIyjT^A6gOq&JZvqjWV2p7a>sWA?kq%uWn!klq{2@&frM$zagGG>uew5?Nd^K3V0|J($yca@YTqYnR=6WLe-jnj6f*{ zbEHsy;$dz*9va$JfCbV$<45~!a-LsHi8&g_9fcMks1+qLusCT}x zT(B*z5sZUg7$X$>yWLktJ0pk@jU_5ulB1J-bkThfQ+t5d5D8~o~ zAwt38^ElchDGlDrPiPld>9{{zO->>8A9Eahw8~ef<)t#aF)|J0zMNkp63nfGGuP;ZyP1UR}SWq67 zdy2vi6F*;!z)++Ag;xT>J(@1bg9U13Sdc|R z^o=`@24{_}>1K`l0|a!OBT?>8gSiXfUHG(`dbO>)vVQy6|$d0gCgbWAe@nsGvV;431DO22&pGPwGTmL{x0DW+$Wx#U!sjr%vGw z59T8zzwqHbvXnxVZYYr-h1WR)-qW#MVK0FGPcN=zS%{~mwTdd2N-w@R(i>V>O65Z* zM_{i%4oe`Q({XHhEO=0iu3M6=>rXU^zu$6lRH5?ELD&tgNRV5z*V~1&@;2%+1p= z0)Igmjm;WKdSX^z-3$wG=)^bn>x5BX=7);;+*ou?&B%kNPTZq^L1=X6Xqx#nmx`hN z@t*;JKrrhb0sFtR0w_@ky44GS#(ej-gyt>u0y!e}7J1r4`xbQ$L?uyAXO? zB@fsSb+?yMK&7q)k+RA`cqoxp^AjGEbte%Lzd*g-dCJzaJwBd_i7L2f-8sOsQn4J` z^d5w%Mx1SK7XmoG7BC1F-67CTs95KOqp<@8(FQuxLi$^{Zij%hZ@g|IL^>zzC!oaC zf!P<$jZ`vf!UuFoXr2^7^&S)_t~^*XT?*O@Qaz&2w$sT2?&U2vK|C_~a<;8JSd4s3 z2v_$HhIgHKOiVej=?%!=avtbe08VGeSwH0)+MC^(0b>Q`vr;jrRZ`=x2_^iydtm;7 z!Z3`{Y2+~8?Tqgb@brx55KypzXM={Gr{L4$!*kF1d~s}ym;=e&-yp!)tB-(=4@mLU zMwA?0Z7iX&);ujoFyP{NIRtcD-^0m+Xcz6wCTL4qI9OfM*E5`Uf5BQiI5Xz1(uha_u@I|9svTuz=1*sT5X7+K!aRrdPlKO^qKH; z&=3G}81hf5I;rz#LK^U#^3BN>LEFr0EdpdaQYl=7j4_Vke6=)KJx*nbN@m@rarbe! z+YUCVIj-v&zyH9&$%Z$tu-yb#n!PyU7!gkJIG(T&al_h=5HS2`CMLD<6b9Gv;BZP~ z=ocS2;#KKbl~PusE;LSupVh3tPXYDyPnv5OEG>@)1i9)!^nB7}7Jx^<;e`Wl85WuV zCyid9NPQD2`X=vDx@K6uH#u?b;eNX5&qwole>|QhLwjgLa4WrbtQ$vDK;X(hCQK@H z)GQP^PXt8!wt9hDA`;#cFZyJr=Bycwz|c z)1g#c!~pGPc`T&{0Xde8w1=xkkwhW_%iD%lS8*Qn z&a_MrKMvx#`+yVb?1T+c>uGILd_9iFNt&D584ILsI2>Qr->5}JW0}I#x}P~!1u$3| zC(jti-{u{-M*f0^4ij35nn-%P#r1Q&S`CiJ_4;SBJ>eL|&7%l46eaM^Z>s7)gtWR{ zo)^IV>CLU>HCUm7Xdq$G>xI2u5YQmPPF2TvEFd74M-fLs*D<#ugvXW$q_4J&%fzg7 zH;(J9^s6+cG3ng5rC;40iPY5{6NfXMa?}X=Fi)Ok@;K47IMw1 zYT+P(7v|5)szVY_at(lH`CGO0`qOa47`eqmMSG8(yrh%ucFvC z3u>;$VrtOM5ANlHVyYuIkD__U7!tOl1q2lJF>;DG(1N#Z;IxY)>ZaIEmlO_)2$*N> z5VI^bE)-$A9RlyS4g75h0sRp1j+*kg3P}Wsb{Q7cR+3jx>=l{1TsiUn=oH%KC}R}8 z6?mLsk5z8N#bhEuXb=oProF=1XjF7CI?FM#&P%R`5Xg!ZtAfIjpW z?TL=g0SeBob4=1s3UPKv;Q*9uQCf>3VFVD4`FUux&b)p%$q;|t5a1_*R(KEA%Z+0G_#1n=`+FC6hpXg;7d<{o^SH8&z7Bei$dI3*oe&9Fwb0T74 zk*Vtq=O`uf;i^IJ=n6+jqiQ@43NZXR;axVo8v;O^98U|%=E@WIHMGb(uFyR?rJ(jw zql%u0fZkdb(G*O+i!lZ*5m3i0bxjz3j_Mj_v(hAjXyY6-%QUMiZaT- zK{@@_kIUfLfhM>zK9UXz?ABHa{*>gwEEt)vM0w^daTD z)+XGG!|mLrRbH|)r)hpSj$nZgXlkeVODZtsSpsqC2&s3son9;O=lkO!y4M`7J@{UX zPAgi@GQYyk^Cpc|k8ov*d4Z<7OoqQDPr3OTh^LxM^Qz?mz55gmTxZxHY=gSKVRo@w zv{-Fy>h!R0&L4ZxLgXO&k?=7+wN*Rw73HT{ywS-6909dVSm8j9mP1w!E8ScsJL)56 z1!u|!Q+Crez4F!H(yOi|elrf**kJtZ{ujQX9kqtcB%+%cEi3%nSSqd(iv4)R4Ysal zC!5jbd|jRl@};9V=9k>|d}FuRt_Sn+5I95(xm69z5diC!iA!iBARu2baG$fAf5Xg) z-WY-E(=a|Hd58PO0cn!#_sNh@nhsNXEwu2uLTzl*oVN?BGw4y|2?(gg7PjuK{7+fw zkoiLx<`RVl|!MvWK9I@5&~AUYAl#mkPQ}-)nL@`kH_>(-0#Qp%W=IuA=F%k ze)PI%n6EOJE{oqPt40FuPPJeSsxmC})%hN?LTOwym4sgMoXJJm)eXN>o)8<*2k;2=App$OqgVEH@csdlh z81tXBy2Iiv%aI5ad<;d+BVP}+?TOM1%iM2sx1IVXm%pI8(EI*Wn2>O;gTlRQJ+B&p zOj}c28`RM?j?D>w*FA=CR-Utq#&5(5@$`A{hXb~>TitEf%`Jvai5mGDEI%CW z<^lqcXvIbNSawF+JFn}1iVlh8##H1`NQ7fNNL+eT5CG}?P`18h?t+#Gydsn+9?&#3~IH26lx3Hk2P z=mpF*^XEl-S;Pk$#Ain#ooFmN7#iMrP1nxhPh(3l%aO_A8J~4f@?XT@i5s6O0^Zjj zLV&Xj!ECIJ{OVc?k53{1O>g^WafNWArDL`Ou_nWQWgdr|6brqT+-leZo@Sj7po%^yAl$gaFOWvWf$m9*Od= zURCqSS3(Vm=;od?SLj#8LyVTTxc>R}be@$*@}hn%GAyL4Boj&6?2tk{Dsq6FL3z3> zFzXSz+~(6#DlRxc`nz8$O4o~z`ORQu1T6TBNEU3(P7yH8%P$n>BO?8J2vklc&J&ic znQ|}t_OxTOc%{J0!D*} z^QkWr-g@vc0XRJxPZcL5n?GKUfpB4I)zz5L)?bOMq0mT_U$muETtdKNb@`InGHitc z4x;FEoSMbp(8|j}A)GW)5it7f=59MZ0@?WBc(82b6sHd6=(L_^QCJEdt-Bu8GLH>J zqtNI(-P~;_$f;|yJU!Swh&;qv`KXp7>bx8H=3S=0qQ&6*J zwHV=~i>K0tMCEPvqGU5$u?j@YV;=T;y^s@gr3W8dTAt8$a}wWBD*%i9zoeFKg5$5f zS;`yK&PNeJp}AmPbs`ix&{}*Bg*=&VMzhQDcpOlgT}Jc%ILXr6f##BI?U_>w^Mlr7 z-2_L*NF3gCciXkRV*Xy0i?tyvMw8azH=;}^c5tSP%B>Kfk69jL*3FI2tq`bv>vwYm zNP8Y=LJ|ECq0fy4y1n!I?GT{D8|_f>@L`eb;bJf~v&-n4AW&Z~P@D)2t_|W7YI^2a zLOZ``iPHEdAV+X^|96BU!evK^qaNO)n$-<%{&^>IO*oycf3DZbdeBekEL}|o#UpAf z59q#)Hp#v5x2dx@O%}8dsyjS!x1Cu>CN#|km0D}<&j;+|DF*c$Qt>|o{%;WYZ}NdI z4ymepPOEMK`jrlfTS!}W0F@mI!~3tw1L9iKDy`4mZTHqPVW~d4jzRq&OU3^X_&o$F z_2~!p0SSQ`>b}*~K2Su!Rv;h`?~#2VH^R_*7GgWMsnB+AQ=x6QX$PUL@8Hzw0G{t4 c4bSub2MikpE$`ApB>(^b07*qoM6N<$f+Jvwy#N3J literal 0 HcmV?d00001 diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/1.png b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/1.png new file mode 100644 index 0000000000000000000000000000000000000000..cf6185e885f1f66a998604ba827fad96e33da796 GIT binary patch literal 11355 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 C*X#)Z literal 0 HcmV?d00001 diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/10.png b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/10.png new file mode 100644 index 0000000000000000000000000000000000000000..7b30cdcd2695f9af56796901c4eb98e792126dd4 GIT binary patch literal 50968 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

IYOnl{JgaxtF!i$T9jEai#1P%EK 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 Ae*gdg literal 0 HcmV?d00001 diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/11.png b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/11.png new file mode 100644 index 0000000000000000000000000000000000000000..7b30cdcd2695f9af56796901c4eb98e792126dd4 GIT binary patch literal 50968 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

IYOnl{JgaxtF!i$T9jEai#1P%EK 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 Ae*gdg literal 0 HcmV?d00001 diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/2.png b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/2.png new file mode 100644 index 0000000000000000000000000000000000000000..69bef363537c1466c269d0a291123dcfd78f2d35 GIT binary patch literal 10844 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 I40vDue-oG1nE(I) literal 0 HcmV?d00001 diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/4.png b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/4.png new file mode 100644 index 0000000000000000000000000000000000000000..ef0765d02fe03f5581b8ef986930c880375d0493 GIT binary patch literal 7458 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 C4Z_s` literal 0 HcmV?d00001 diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/5.png b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/5.png new file mode 100644 index 0000000000000000000000000000000000000000..d0a60af94fa5232855ff87e48536c5325a1e1179 GIT binary patch literal 10587 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 PCn|5ud_fEAap`{m^c3uU literal 0 HcmV?d00001 diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/6.png b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/6.png new file mode 100644 index 0000000000000000000000000000000000000000..143892d44436e6cd9bfb5bd5567c0966dc43e343 GIT binary patch literal 9877 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

IYOnl{JgaxtF!i$T9jEai#1P%EK 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 Ae*gdg literal 0 HcmV?d00001 diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/9.png b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/ChargingStation/9.png new file mode 100644 index 0000000000000000000000000000000000000000..7b30cdcd2695f9af56796901c4eb98e792126dd4 GIT binary patch literal 50968 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

IYOnl{JgaxtF!i$T9jEai#1P%EK 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 Ae*gdg literal 0 HcmV?d00001 diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Socket/AC Type-1.png b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Socket/AC Type-1.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6f47dd221b6431356f1d18b18f9e32a2fa4ab0 GIT binary patch literal 13027 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 literal 0 HcmV?d00001 diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Socket/AC Type-2.png b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Socket/AC Type-2.png new file mode 100644 index 0000000000000000000000000000000000000000..3cc5d4974808052722898ae4c7408d004bf626a1 GIT binary patch literal 13007 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 literal 0 HcmV?d00001 diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Socket/CHAdeMO.png b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Socket/CHAdeMO.png new file mode 100644 index 0000000000000000000000000000000000000000..acb7d551dd19eaf0895d9a0ee9e33d4fd83f234c GIT binary patch literal 19096 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 Y3qMF9s3-m|lK=n!07*qoM6N<$g5P6H_y7O^ literal 0 HcmV?d00001 diff --git a/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Socket/Tesla Supercharger.png b/Duc.Splitt/Duc.Splitt.MIDCallbackAPI/wwwroot/Assests/images/Socket/Tesla Supercharger.png new file mode 100644 index 0000000000000000000000000000000000000000..581330ac43b74117700be6cbea0e7cce2f8c1edf GIT binary patch literal 6670 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 R#_(MZfwsDV+A9?s^#9>wwrv0a literal 0 HcmV?d00001 diff --git a/Duc.Splitt/Duc.Splitt.MIDIntegrationService/CallbackResponse.cs b/Duc.Splitt/Duc.Splitt.MIDIntegrationService/CallbackResponse.cs new file mode 100644 index 0000000..bf62d04 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDIntegrationService/CallbackResponse.cs @@ -0,0 +1,104 @@ +namespace Duc.Splitt.MIDIntegrationService +{ + public class CallbackResponse + { + public MIDAuthSignResponse MIDAuthSignResponse { get; set; } + } + public class MIDAuthSignResponse + { + public RequestDetails RequestDetails { get; set; } + public ResultDetails ResultDetails { get; set; } + public PersonalData PersonalData { get; set; } + } + + public class RequestDetails + { + public string RequestID { get; set; } + public RequestType RequestType { get; set; } + public string ServiceProviderId { get; set; } + public string AdditionalData { get; set; } + public string Challenge { get; set; } + public string CivilNo { get; set; } + } + public class ResultDetails + { + public string ResultCode { get; set; } + public string UserAction { get; set; } + + public string UserCivilNo { get; set; } + public string UserCertificate { get; set; } + public byte[] SigningData { get; set; } + public string SignatureData { get; set; } + public string HashAlgorithm { get; set; } + public SigningDatatype SigningDatatype { get; set; } + public DateTime TransactionDate { get; set; } + } + public class PersonalData + { + public string CivilID { get; set; } + public string FullNameAr { get; set; } + public string FullNameEn { get; set; } + public DateTime BirthDate { get; set; } + public string Gender { get; set; } + public string EmailAddress { get; set; } + public string MobileNumber { get; set; } + public string NationalityEn { get; set; } + public string NationalityAr { get; set; } + public byte[] NationalityFlag { get; set; } + public string BloodGroup { get; set; } + public string Photo { get; set; } + + public string PassportNumber { get; set; } + + public string CardSerial { get; set; } + public string CardExpiryDate { get; set; } + // public GovIdData GovData { get; set; } + // public BusinessIdData BusinessData { get; set; } + public Address Address { get; set; } + + + } + + public class GovIdData + { + public DateTime CivilIdExpiryDate { get; set; } + public string MOIReference { get; set; } + public string SponsorName { get; set; } + } + + public class BusinessIdData + { + public string OrganizationNameAr { get; set; } + public string OrganizationNameEn { get; set; } + public string OrganizationUnitNameAr { get; set; } + public string OrganizationUnitNameEn { get; set; } + public string JobTitleAr { get; set; } + public string JobTitleEn { get; set; } + } + + public class Address + { + public string Governerate { get; set; } + public string Area { get; set; } + public string PaciBuildingNumber { get; set; } + public string BuildingType { get; set; } + public string FloorNumber { get; set; } + public string BuildingNumber { get; set; } + public string BlockNumber { get; set; } + public string UnitNumber { get; set; } + public string StreetName { get; set; } + public string UnitType { get; set; } + + } + public enum RequestType + { + Authentication = 1, + Signing = 2 + } + + public enum SigningDatatype + { + PKCS7 = 1, + PKCS1 = 2 + } +} diff --git a/Duc.Splitt/Duc.Splitt.MIDIntegrationService/Connected Services/MIDWrapper/ConnectedService.json b/Duc.Splitt/Duc.Splitt.MIDIntegrationService/Connected Services/MIDWrapper/ConnectedService.json new file mode 100644 index 0000000..d99b099 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDIntegrationService/Connected Services/MIDWrapper/ConnectedService.json @@ -0,0 +1,17 @@ +{ + "ExtendedData": { + "inputs": [ + "https://dspmobileservice.diyarme.com:8151/MIDAuth/MIDSDKWrapper.MIDWrapper.svc" + ], + "collectionTypes": [ + "System.Array", + "System.Collections.Generic.Dictionary`2" + ], + "namespaceMappings": [ + "*, MIDWrapper" + ], + "sync": true, + "targetFramework": "net8.0", + "typeReuseMode": "All" + } +} \ No newline at end of file diff --git a/Duc.Splitt/Duc.Splitt.MIDIntegrationService/Connected Services/MIDWrapper/Reference.cs b/Duc.Splitt/Duc.Splitt.MIDIntegrationService/Connected Services/MIDWrapper/Reference.cs new file mode 100644 index 0000000..8d09ead --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDIntegrationService/Connected Services/MIDWrapper/Reference.cs @@ -0,0 +1,2281 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace MIDWrapper +{ + using System.Runtime.Serialization; + + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="AuthenticateRequest", Namespace="http://schemas.datacontract.org/2004/07/GeneralContract.Entites")] + public partial class AuthenticateRequest : object + { + + private string AdditionalDataField; + + private string AuthenticationReasonArField; + + private string AuthenticationReasonEnField; + + private string ChallengeField; + + private string PersonCivilNoField; + + private string RefIdField; + + private bool RequestUserDetailsField; + + private string SPCallbackURLField; + + private string ServiceDescriptionARField; + + private string ServiceDescriptionENField; + + [System.Runtime.Serialization.DataMemberAttribute()] + public string AdditionalData + { + get + { + return this.AdditionalDataField; + } + set + { + this.AdditionalDataField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string AuthenticationReasonAr + { + get + { + return this.AuthenticationReasonArField; + } + set + { + this.AuthenticationReasonArField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string AuthenticationReasonEn + { + get + { + return this.AuthenticationReasonEnField; + } + set + { + this.AuthenticationReasonEnField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string Challenge + { + get + { + return this.ChallengeField; + } + set + { + this.ChallengeField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string PersonCivilNo + { + get + { + return this.PersonCivilNoField; + } + set + { + this.PersonCivilNoField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string RefId + { + get + { + return this.RefIdField; + } + set + { + this.RefIdField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public bool RequestUserDetails + { + get + { + return this.RequestUserDetailsField; + } + set + { + this.RequestUserDetailsField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string SPCallbackURL + { + get + { + return this.SPCallbackURLField; + } + set + { + this.SPCallbackURLField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string ServiceDescriptionAR + { + get + { + return this.ServiceDescriptionARField; + } + set + { + this.ServiceDescriptionARField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string ServiceDescriptionEN + { + get + { + return this.ServiceDescriptionENField; + } + set + { + this.ServiceDescriptionENField = value; + } + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="MIDAuthSignClientResponseOfAuthenticationQRDataOmWmLNjX", Namespace="http://schemas.datacontract.org/2004/07/MIDAuthSignContract.Entities")] + public partial class MIDAuthSignClientResponseOfAuthenticationQRDataOmWmLNjX : object + { + + private MIDWrapper.AuthenticationQRData DataField; + + private MIDWrapper.CuError ErrorField; + + [System.Runtime.Serialization.DataMemberAttribute()] + public MIDWrapper.AuthenticationQRData Data + { + get + { + return this.DataField; + } + set + { + this.DataField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public MIDWrapper.CuError Error + { + get + { + return this.ErrorField; + } + set + { + this.ErrorField = value; + } + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="AuthenticationQRData", Namespace="http://schemas.datacontract.org/2004/07/MIDAuthSignContract.Entities")] + public partial class AuthenticationQRData : object + { + + private string QRCodeField; + + private string QRCodeImageField; + + [System.Runtime.Serialization.DataMemberAttribute()] + public string QRCode + { + get + { + return this.QRCodeField; + } + set + { + this.QRCodeField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string QRCodeImage + { + get + { + return this.QRCodeImageField; + } + set + { + this.QRCodeImageField = value; + } + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="CuError", Namespace="http://schemas.datacontract.org/2004/07/MIDAuthSignContract.Entities")] + public partial class CuError : object + { + + private int CodeField; + + private string MessageField; + + [System.Runtime.Serialization.DataMemberAttribute()] + public int Code + { + get + { + return this.CodeField; + } + set + { + this.CodeField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string Message + { + get + { + return this.MessageField; + } + set + { + this.MessageField = value; + } + } + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="MIDAssuranceLevel", Namespace="http://schemas.datacontract.org/2004/07/GeneralContract.Enums")] + public enum MIDAssuranceLevel : int + { + + [System.Runtime.Serialization.EnumMemberAttribute()] + Medium = 20, + + [System.Runtime.Serialization.EnumMemberAttribute()] + High = 30, + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="MIDAuthSignClientResponseOfstring", Namespace="http://schemas.datacontract.org/2004/07/MIDAuthSignContract.Entities")] + public partial class MIDAuthSignClientResponseOfstring : object + { + + private string DataField; + + private MIDWrapper.CuError ErrorField; + + [System.Runtime.Serialization.DataMemberAttribute()] + public string Data + { + get + { + return this.DataField; + } + set + { + this.DataField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public MIDWrapper.CuError Error + { + get + { + return this.ErrorField; + } + set + { + this.ErrorField = value; + } + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="MIDAuthSignClientResponseOfPersonalDataOmWmLNjX", Namespace="http://schemas.datacontract.org/2004/07/MIDAuthSignContract.Entities")] + public partial class MIDAuthSignClientResponseOfPersonalDataOmWmLNjX : object + { + + private MIDWrapper.PersonalData DataField; + + private MIDWrapper.CuError ErrorField; + + [System.Runtime.Serialization.DataMemberAttribute()] + public MIDWrapper.PersonalData Data + { + get + { + return this.DataField; + } + set + { + this.DataField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public MIDWrapper.CuError Error + { + get + { + return this.ErrorField; + } + set + { + this.ErrorField = value; + } + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="PersonalData", Namespace="http://schemas.datacontract.org/2004/07/MIDAuthSignContract.Entities")] + public partial class PersonalData : object + { + + private MIDWrapper.Address AddressField; + + private System.DateTime BirthDateField; + + private string BloodGroupField; + + private System.DateTime CardExpiryDateField; + + private string CivilIDField; + + private string EmailAddressField; + + private string FullNameArField; + + private string FullNameEnField; + + private string GenderField; + + private MIDWrapper.GovIdData GovDataField; + + private string MobileNumberField; + + private string NationalityArField; + + private string NationalityEnField; + + private byte[] NationalityFlagField; + + private string PhotoField; + + [System.Runtime.Serialization.DataMemberAttribute()] + public MIDWrapper.Address Address + { + get + { + return this.AddressField; + } + set + { + this.AddressField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public System.DateTime BirthDate + { + get + { + return this.BirthDateField; + } + set + { + this.BirthDateField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string BloodGroup + { + get + { + return this.BloodGroupField; + } + set + { + this.BloodGroupField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public System.DateTime CardExpiryDate + { + get + { + return this.CardExpiryDateField; + } + set + { + this.CardExpiryDateField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string CivilID + { + get + { + return this.CivilIDField; + } + set + { + this.CivilIDField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string EmailAddress + { + get + { + return this.EmailAddressField; + } + set + { + this.EmailAddressField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string FullNameAr + { + get + { + return this.FullNameArField; + } + set + { + this.FullNameArField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string FullNameEn + { + get + { + return this.FullNameEnField; + } + set + { + this.FullNameEnField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string Gender + { + get + { + return this.GenderField; + } + set + { + this.GenderField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public MIDWrapper.GovIdData GovData + { + get + { + return this.GovDataField; + } + set + { + this.GovDataField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string MobileNumber + { + get + { + return this.MobileNumberField; + } + set + { + this.MobileNumberField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string NationalityAr + { + get + { + return this.NationalityArField; + } + set + { + this.NationalityArField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string NationalityEn + { + get + { + return this.NationalityEnField; + } + set + { + this.NationalityEnField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public byte[] NationalityFlag + { + get + { + return this.NationalityFlagField; + } + set + { + this.NationalityFlagField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string Photo + { + get + { + return this.PhotoField; + } + set + { + this.PhotoField = value; + } + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="Address", Namespace="http://schemas.datacontract.org/2004/07/MIDAuthSignContract.Entities")] + public partial class Address : object + { + + private string AreaField; + + private string BlockNumberField; + + private string BuildingNumberField; + + private string BuildingTypeField; + + private string FloorNumberField; + + private string PaciBuildingNumberField; + + private string StreetNameField; + + private string UnitNumberField; + + private string UnitTypeField; + + [System.Runtime.Serialization.DataMemberAttribute()] + public string Area + { + get + { + return this.AreaField; + } + set + { + this.AreaField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string BlockNumber + { + get + { + return this.BlockNumberField; + } + set + { + this.BlockNumberField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string BuildingNumber + { + get + { + return this.BuildingNumberField; + } + set + { + this.BuildingNumberField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string BuildingType + { + get + { + return this.BuildingTypeField; + } + set + { + this.BuildingTypeField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string FloorNumber + { + get + { + return this.FloorNumberField; + } + set + { + this.FloorNumberField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string PaciBuildingNumber + { + get + { + return this.PaciBuildingNumberField; + } + set + { + this.PaciBuildingNumberField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string StreetName + { + get + { + return this.StreetNameField; + } + set + { + this.StreetNameField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string UnitNumber + { + get + { + return this.UnitNumberField; + } + set + { + this.UnitNumberField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string UnitType + { + get + { + return this.UnitTypeField; + } + set + { + this.UnitTypeField = value; + } + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="GovIdData", Namespace="http://schemas.datacontract.org/2004/07/MIDAuthSignContract.Entities")] + public partial class GovIdData : object + { + + private string MOIReferenceField; + + private string SponsorNameField; + + [System.Runtime.Serialization.DataMemberAttribute()] + public string MOIReference + { + get + { + return this.MOIReferenceField; + } + set + { + this.MOIReferenceField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string SponsorName + { + get + { + return this.SponsorNameField; + } + set + { + this.SponsorNameField = value; + } + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="MIDAuthSignClientResponseOfRequestStatusExBvhZr4Id", Namespace="http://schemas.datacontract.org/2004/07/MIDAuthSignContract.Entities")] + public partial class MIDAuthSignClientResponseOfRequestStatusExBvhZr4Id : object + { + + private MIDWrapper.RequestStatusEx DataField; + + private MIDWrapper.CuError ErrorField; + + [System.Runtime.Serialization.DataMemberAttribute()] + public MIDWrapper.RequestStatusEx Data + { + get + { + return this.DataField; + } + set + { + this.DataField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public MIDWrapper.CuError Error + { + get + { + return this.ErrorField; + } + set + { + this.ErrorField = value; + } + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="RequestStatusEx", Namespace="http://schemas.datacontract.org/2004/07/GeneralContract.Entites")] + public partial class RequestStatusEx : object + { + + private string CallBackExField; + + private MIDWrapper.CallBackRespone CallBackResponeField; + + private string CivilNoField; + + private System.Nullable HTTPStatusField; + + private string RefIdField; + + private string RequestIdField; + + private string RequestStatusField; + + private System.Nullable RequestStatusIdField; + + private string ResultCodeField; + + private System.Nullable ResultCodeIdField; + + private string UserActionField; + + private System.Nullable UserActionIdField; + + [System.Runtime.Serialization.DataMemberAttribute()] + public string CallBackEx + { + get + { + return this.CallBackExField; + } + set + { + this.CallBackExField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public MIDWrapper.CallBackRespone CallBackRespone + { + get + { + return this.CallBackResponeField; + } + set + { + this.CallBackResponeField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string CivilNo + { + get + { + return this.CivilNoField; + } + set + { + this.CivilNoField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public System.Nullable HTTPStatus + { + get + { + return this.HTTPStatusField; + } + set + { + this.HTTPStatusField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string RefId + { + get + { + return this.RefIdField; + } + set + { + this.RefIdField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string RequestId + { + get + { + return this.RequestIdField; + } + set + { + this.RequestIdField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string RequestStatus + { + get + { + return this.RequestStatusField; + } + set + { + this.RequestStatusField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public System.Nullable RequestStatusId + { + get + { + return this.RequestStatusIdField; + } + set + { + this.RequestStatusIdField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string ResultCode + { + get + { + return this.ResultCodeField; + } + set + { + this.ResultCodeField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public System.Nullable ResultCodeId + { + get + { + return this.ResultCodeIdField; + } + set + { + this.ResultCodeIdField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string UserAction + { + get + { + return this.UserActionField; + } + set + { + this.UserActionField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public System.Nullable UserActionId + { + get + { + return this.UserActionIdField; + } + set + { + this.UserActionIdField = value; + } + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="CallBackRespone", Namespace="http://schemas.datacontract.org/2004/07/GeneralContract.Entites")] + public partial class CallBackRespone : object + { + + private MIDWrapper.MidAuthSignResponse MIDAuthSignResponseField; + + [System.Runtime.Serialization.DataMemberAttribute()] + public MIDWrapper.MidAuthSignResponse MIDAuthSignResponse + { + get + { + return this.MIDAuthSignResponseField; + } + set + { + this.MIDAuthSignResponseField = value; + } + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="MidAuthSignResponse", Namespace="http://schemas.datacontract.org/2004/07/GeneralContract.Entites")] + public partial class MidAuthSignResponse : object + { + + private MIDWrapper.PersonalData1 PersonalDataField; + + private MIDWrapper.RequestDetails RequestDetailsField; + + private MIDWrapper.ResultDetails ResultDetailsField; + + private MIDWrapper.Signature SignatureField; + + [System.Runtime.Serialization.DataMemberAttribute()] + public MIDWrapper.PersonalData1 PersonalData + { + get + { + return this.PersonalDataField; + } + set + { + this.PersonalDataField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public MIDWrapper.RequestDetails RequestDetails + { + get + { + return this.RequestDetailsField; + } + set + { + this.RequestDetailsField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public MIDWrapper.ResultDetails ResultDetails + { + get + { + return this.ResultDetailsField; + } + set + { + this.ResultDetailsField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public MIDWrapper.Signature Signature + { + get + { + return this.SignatureField; + } + set + { + this.SignatureField = value; + } + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="PersonalData", Namespace="http://schemas.datacontract.org/2004/07/GeneralContract.Entites")] + public partial class PersonalData1 : object + { + + private MIDWrapper.Address1 AddressField; + + private System.Nullable BirthDateField; + + private string BloodGroupField; + + private System.Nullable CardExpiryDateField; + + private string CivilIdField; + + private string DocumentNumberField; + + private string EmailAddressField; + + private string FullNameArField; + + private string FullNameEnField; + + private string GenderField; + + private MIDWrapper.GovData GovDataField; + + private string MobileNumberField; + + private string NationalityArField; + + private string NationalityEnField; + + private string PassportNumberField; + + private string PhotoField; + + private string ProfessionDetailsField; + + private string ResidencyTypeField; + + [System.Runtime.Serialization.DataMemberAttribute()] + public MIDWrapper.Address1 Address + { + get + { + return this.AddressField; + } + set + { + this.AddressField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public System.Nullable BirthDate + { + get + { + return this.BirthDateField; + } + set + { + this.BirthDateField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string BloodGroup + { + get + { + return this.BloodGroupField; + } + set + { + this.BloodGroupField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public System.Nullable CardExpiryDate + { + get + { + return this.CardExpiryDateField; + } + set + { + this.CardExpiryDateField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string CivilId + { + get + { + return this.CivilIdField; + } + set + { + this.CivilIdField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string DocumentNumber + { + get + { + return this.DocumentNumberField; + } + set + { + this.DocumentNumberField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string EmailAddress + { + get + { + return this.EmailAddressField; + } + set + { + this.EmailAddressField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string FullNameAr + { + get + { + return this.FullNameArField; + } + set + { + this.FullNameArField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string FullNameEn + { + get + { + return this.FullNameEnField; + } + set + { + this.FullNameEnField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string Gender + { + get + { + return this.GenderField; + } + set + { + this.GenderField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public MIDWrapper.GovData GovData + { + get + { + return this.GovDataField; + } + set + { + this.GovDataField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string MobileNumber + { + get + { + return this.MobileNumberField; + } + set + { + this.MobileNumberField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string NationalityAr + { + get + { + return this.NationalityArField; + } + set + { + this.NationalityArField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string NationalityEn + { + get + { + return this.NationalityEnField; + } + set + { + this.NationalityEnField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string PassportNumber + { + get + { + return this.PassportNumberField; + } + set + { + this.PassportNumberField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string Photo + { + get + { + return this.PhotoField; + } + set + { + this.PhotoField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string ProfessionDetails + { + get + { + return this.ProfessionDetailsField; + } + set + { + this.ProfessionDetailsField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string ResidencyType + { + get + { + return this.ResidencyTypeField; + } + set + { + this.ResidencyTypeField = value; + } + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="RequestDetails", Namespace="http://schemas.datacontract.org/2004/07/GeneralContract.Entites")] + public partial class RequestDetails : object + { + + private string AdditionalDataField; + + private string ChallengeField; + + private string CivilNoField; + + private string RequestIDField; + + private string RequestTypeField; + + private string ServiceProviderIdField; + + [System.Runtime.Serialization.DataMemberAttribute()] + public string AdditionalData + { + get + { + return this.AdditionalDataField; + } + set + { + this.AdditionalDataField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string Challenge + { + get + { + return this.ChallengeField; + } + set + { + this.ChallengeField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string CivilNo + { + get + { + return this.CivilNoField; + } + set + { + this.CivilNoField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string RequestID + { + get + { + return this.RequestIDField; + } + set + { + this.RequestIDField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string RequestType + { + get + { + return this.RequestTypeField; + } + set + { + this.RequestTypeField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string ServiceProviderId + { + get + { + return this.ServiceProviderIdField; + } + set + { + this.ServiceProviderIdField = value; + } + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="ResultDetails", Namespace="http://schemas.datacontract.org/2004/07/GeneralContract.Entites")] + public partial class ResultDetails : object + { + + private string HashAlgorithmField; + + private string ResultCodeField; + + private string SignatureDataField; + + private string SigningDatatypeField; + + private System.Nullable TransactionDateField; + + private string UserActionField; + + private string UserCertificateField; + + private string UserCivilNoField; + + [System.Runtime.Serialization.DataMemberAttribute()] + public string HashAlgorithm + { + get + { + return this.HashAlgorithmField; + } + set + { + this.HashAlgorithmField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string ResultCode + { + get + { + return this.ResultCodeField; + } + set + { + this.ResultCodeField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string SignatureData + { + get + { + return this.SignatureDataField; + } + set + { + this.SignatureDataField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string SigningDatatype + { + get + { + return this.SigningDatatypeField; + } + set + { + this.SigningDatatypeField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public System.Nullable TransactionDate + { + get + { + return this.TransactionDateField; + } + set + { + this.TransactionDateField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string UserAction + { + get + { + return this.UserActionField; + } + set + { + this.UserActionField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string UserCertificate + { + get + { + return this.UserCertificateField; + } + set + { + this.UserCertificateField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string UserCivilNo + { + get + { + return this.UserCivilNoField; + } + set + { + this.UserCivilNoField = value; + } + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="Signature", Namespace="http://schemas.datacontract.org/2004/07/GeneralContract.Entites")] + public partial class Signature : object + { + + private string SignatureDataField; + + private string SigningCertificateField; + + [System.Runtime.Serialization.DataMemberAttribute()] + public string SignatureData + { + get + { + return this.SignatureDataField; + } + set + { + this.SignatureDataField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string SigningCertificate + { + get + { + return this.SigningCertificateField; + } + set + { + this.SigningCertificateField = value; + } + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="Address", Namespace="http://schemas.datacontract.org/2004/07/GeneralContract.Entites")] + public partial class Address1 : object + { + + private string AreaField; + + private string BlockNumberField; + + private string BuildingNumberField; + + private string BuildingTypeField; + + private string FloorNumberField; + + private string GovernerateField; + + private string PaciBuildingNumberField; + + private string StreetNameField; + + private string UnitNumberField; + + private string UnitTypeField; + + [System.Runtime.Serialization.DataMemberAttribute()] + public string Area + { + get + { + return this.AreaField; + } + set + { + this.AreaField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string BlockNumber + { + get + { + return this.BlockNumberField; + } + set + { + this.BlockNumberField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string BuildingNumber + { + get + { + return this.BuildingNumberField; + } + set + { + this.BuildingNumberField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string BuildingType + { + get + { + return this.BuildingTypeField; + } + set + { + this.BuildingTypeField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string FloorNumber + { + get + { + return this.FloorNumberField; + } + set + { + this.FloorNumberField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string Governerate + { + get + { + return this.GovernerateField; + } + set + { + this.GovernerateField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string PaciBuildingNumber + { + get + { + return this.PaciBuildingNumberField; + } + set + { + this.PaciBuildingNumberField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string StreetName + { + get + { + return this.StreetNameField; + } + set + { + this.StreetNameField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string UnitNumber + { + get + { + return this.UnitNumberField; + } + set + { + this.UnitNumberField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string UnitType + { + get + { + return this.UnitTypeField; + } + set + { + this.UnitTypeField = value; + } + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="GovData", Namespace="http://schemas.datacontract.org/2004/07/GeneralContract.Entites")] + public partial class GovData : object + { + + private System.Nullable CivilIdExpiryDateField; + + private string MoiReferenceField; + + private string SponsorNameField; + + [System.Runtime.Serialization.DataMemberAttribute()] + public System.Nullable CivilIdExpiryDate + { + get + { + return this.CivilIdExpiryDateField; + } + set + { + this.CivilIdExpiryDateField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string MoiReference + { + get + { + return this.MoiReferenceField; + } + set + { + this.MoiReferenceField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string SponsorName + { + get + { + return this.SponsorNameField; + } + set + { + this.SponsorNameField = value; + } + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="MIDAuthSignClientResponseOfHasMobileIdResponseOmWmLNjX", Namespace="http://schemas.datacontract.org/2004/07/MIDAuthSignContract.Entities")] + public partial class MIDAuthSignClientResponseOfHasMobileIdResponseOmWmLNjX : object + { + + private MIDWrapper.HasMobileIdResponse DataField; + + private MIDWrapper.CuError ErrorField; + + [System.Runtime.Serialization.DataMemberAttribute()] + public MIDWrapper.HasMobileIdResponse Data + { + get + { + return this.DataField; + } + set + { + this.DataField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public MIDWrapper.CuError Error + { + get + { + return this.ErrorField; + } + set + { + this.ErrorField = value; + } + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="HasMobileIdResponse", Namespace="http://schemas.datacontract.org/2004/07/MIDAuthSignContract.Entities")] + public partial class HasMobileIdResponse : object + { + + private string CivilNoField; + + private bool HasMobileIdField; + + private string StatusField; + + private string VerificationLevelField; + + [System.Runtime.Serialization.DataMemberAttribute()] + public string CivilNo + { + get + { + return this.CivilNoField; + } + set + { + this.CivilNoField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public bool HasMobileId + { + get + { + return this.HasMobileIdField; + } + set + { + this.HasMobileIdField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string Status + { + get + { + return this.StatusField; + } + set + { + this.StatusField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string VerificationLevel + { + get + { + return this.VerificationLevelField; + } + set + { + this.VerificationLevelField = value; + } + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.Runtime.Serialization.DataContractAttribute(Name="MIDNotificationRequest", Namespace="http://schemas.datacontract.org/2004/07/GeneralContract.Entites")] + public partial class MIDNotificationRequest : object + { + + private string NotificationMessageArField; + + private string NotificationMessageEnField; + + private string NotificationSubjectArField; + + private string NotificationSubjectEnField; + + private string PersonCivilNoField; + + private string RefIdField; + + [System.Runtime.Serialization.DataMemberAttribute()] + public string NotificationMessageAr + { + get + { + return this.NotificationMessageArField; + } + set + { + this.NotificationMessageArField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string NotificationMessageEn + { + get + { + return this.NotificationMessageEnField; + } + set + { + this.NotificationMessageEnField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string NotificationSubjectAr + { + get + { + return this.NotificationSubjectArField; + } + set + { + this.NotificationSubjectArField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string NotificationSubjectEn + { + get + { + return this.NotificationSubjectEnField; + } + set + { + this.NotificationSubjectEnField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string PersonCivilNo + { + get + { + return this.PersonCivilNoField; + } + set + { + this.PersonCivilNoField = value; + } + } + + [System.Runtime.Serialization.DataMemberAttribute()] + public string RefId + { + get + { + return this.RefIdField; + } + set + { + this.RefIdField = value; + } + } + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + [System.ServiceModel.ServiceContractAttribute(ConfigurationName="MIDWrapper.IMIDWrapper")] + public interface IMIDWrapper + { + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IMIDWrapper/InitiateAuthRequestQR", ReplyAction="http://tempuri.org/IMIDWrapper/InitiateAuthRequestQRResponse")] + [System.ServiceModel.FaultContractAttribute(typeof(MIDWrapper.CuError), Action="http://tempuri.org/IMIDWrapper/InitiateAuthRequestQRCuErrorFault", Name="CuError", Namespace="http://schemas.datacontract.org/2004/07/MIDAuthSignContract.Entities")] + MIDWrapper.MIDAuthSignClientResponseOfAuthenticationQRDataOmWmLNjX InitiateAuthRequestQR(MIDWrapper.AuthenticateRequest authRequestData); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IMIDWrapper/InitiateAuthRequestQR", ReplyAction="http://tempuri.org/IMIDWrapper/InitiateAuthRequestQRResponse")] + System.Threading.Tasks.Task InitiateAuthRequestQRAsync(MIDWrapper.AuthenticateRequest authRequestData); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IMIDWrapper/InitiateAuthRequestQRWithAssuranceLevel", ReplyAction="http://tempuri.org/IMIDWrapper/InitiateAuthRequestQRWithAssuranceLevelResponse")] + [System.ServiceModel.FaultContractAttribute(typeof(MIDWrapper.CuError), Action="http://tempuri.org/IMIDWrapper/InitiateAuthRequestQRWithAssuranceLevelCuErrorFaul" + + "t", Name="CuError", Namespace="http://schemas.datacontract.org/2004/07/MIDAuthSignContract.Entities")] + MIDWrapper.MIDAuthSignClientResponseOfAuthenticationQRDataOmWmLNjX InitiateAuthRequestQRWithAssuranceLevel(MIDWrapper.AuthenticateRequest authRequestData, MIDWrapper.MIDAssuranceLevel assuranceLevel); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IMIDWrapper/InitiateAuthRequestQRWithAssuranceLevel", ReplyAction="http://tempuri.org/IMIDWrapper/InitiateAuthRequestQRWithAssuranceLevelResponse")] + System.Threading.Tasks.Task InitiateAuthRequestQRWithAssuranceLevelAsync(MIDWrapper.AuthenticateRequest authRequestData, MIDWrapper.MIDAssuranceLevel assuranceLevel); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IMIDWrapper/InitiateAuthRequestPN", ReplyAction="http://tempuri.org/IMIDWrapper/InitiateAuthRequestPNResponse")] + [System.ServiceModel.FaultContractAttribute(typeof(MIDWrapper.CuError), Action="http://tempuri.org/IMIDWrapper/InitiateAuthRequestPNCuErrorFault", Name="CuError", Namespace="http://schemas.datacontract.org/2004/07/MIDAuthSignContract.Entities")] + MIDWrapper.MIDAuthSignClientResponseOfstring InitiateAuthRequestPN(MIDWrapper.AuthenticateRequest authRequestData); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IMIDWrapper/InitiateAuthRequestPN", ReplyAction="http://tempuri.org/IMIDWrapper/InitiateAuthRequestPNResponse")] + System.Threading.Tasks.Task InitiateAuthRequestPNAsync(MIDWrapper.AuthenticateRequest authRequestData); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IMIDWrapper/InitiateAuthRequestPNWithAssuranceLevel", ReplyAction="http://tempuri.org/IMIDWrapper/InitiateAuthRequestPNWithAssuranceLevelResponse")] + [System.ServiceModel.FaultContractAttribute(typeof(MIDWrapper.CuError), Action="http://tempuri.org/IMIDWrapper/InitiateAuthRequestPNWithAssuranceLevelCuErrorFaul" + + "t", Name="CuError", Namespace="http://schemas.datacontract.org/2004/07/MIDAuthSignContract.Entities")] + MIDWrapper.MIDAuthSignClientResponseOfstring InitiateAuthRequestPNWithAssuranceLevel(MIDWrapper.AuthenticateRequest authRequestData, MIDWrapper.MIDAssuranceLevel assuranceLevel); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IMIDWrapper/InitiateAuthRequestPNWithAssuranceLevel", ReplyAction="http://tempuri.org/IMIDWrapper/InitiateAuthRequestPNWithAssuranceLevelResponse")] + System.Threading.Tasks.Task InitiateAuthRequestPNWithAssuranceLevelAsync(MIDWrapper.AuthenticateRequest authRequestData, MIDWrapper.MIDAssuranceLevel assuranceLevel); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IMIDWrapper/VerifyMobileIdentityQR", ReplyAction="http://tempuri.org/IMIDWrapper/VerifyMobileIdentityQRResponse")] + [System.ServiceModel.FaultContractAttribute(typeof(MIDWrapper.CuError), Action="http://tempuri.org/IMIDWrapper/VerifyMobileIdentityQRCuErrorFault", Name="CuError", Namespace="http://schemas.datacontract.org/2004/07/MIDAuthSignContract.Entities")] + MIDWrapper.MIDAuthSignClientResponseOfPersonalDataOmWmLNjX VerifyMobileIdentityQR(string qrCode, string refId); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IMIDWrapper/VerifyMobileIdentityQR", ReplyAction="http://tempuri.org/IMIDWrapper/VerifyMobileIdentityQRResponse")] + System.Threading.Tasks.Task VerifyMobileIdentityQRAsync(string qrCode, string refId); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IMIDWrapper/GetRequestStatus", ReplyAction="http://tempuri.org/IMIDWrapper/GetRequestStatusResponse")] + [System.ServiceModel.FaultContractAttribute(typeof(MIDWrapper.CuError), Action="http://tempuri.org/IMIDWrapper/GetRequestStatusCuErrorFault", Name="CuError", Namespace="http://schemas.datacontract.org/2004/07/MIDAuthSignContract.Entities")] + MIDWrapper.MIDAuthSignClientResponseOfRequestStatusExBvhZr4Id GetRequestStatus(string requestId, string refId); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IMIDWrapper/GetRequestStatus", ReplyAction="http://tempuri.org/IMIDWrapper/GetRequestStatusResponse")] + System.Threading.Tasks.Task GetRequestStatusAsync(string requestId, string refId); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IMIDWrapper/HasMobileIdentity", ReplyAction="http://tempuri.org/IMIDWrapper/HasMobileIdentityResponse")] + [System.ServiceModel.FaultContractAttribute(typeof(MIDWrapper.CuError), Action="http://tempuri.org/IMIDWrapper/HasMobileIdentityCuErrorFault", Name="CuError", Namespace="http://schemas.datacontract.org/2004/07/MIDAuthSignContract.Entities")] + MIDWrapper.MIDAuthSignClientResponseOfHasMobileIdResponseOmWmLNjX HasMobileIdentity(string civilNo, string refId); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IMIDWrapper/HasMobileIdentity", ReplyAction="http://tempuri.org/IMIDWrapper/HasMobileIdentityResponse")] + System.Threading.Tasks.Task HasMobileIdentityAsync(string civilNo, string refId); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IMIDWrapper/NotifyPerson", ReplyAction="http://tempuri.org/IMIDWrapper/NotifyPersonResponse")] + [System.ServiceModel.FaultContractAttribute(typeof(MIDWrapper.CuError), Action="http://tempuri.org/IMIDWrapper/NotifyPersonCuErrorFault", Name="CuError", Namespace="http://schemas.datacontract.org/2004/07/MIDAuthSignContract.Entities")] + MIDWrapper.MIDAuthSignClientResponseOfstring NotifyPerson(MIDWrapper.MIDNotificationRequest request); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IMIDWrapper/NotifyPerson", ReplyAction="http://tempuri.org/IMIDWrapper/NotifyPersonResponse")] + System.Threading.Tasks.Task NotifyPersonAsync(MIDWrapper.MIDNotificationRequest request); + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + public interface IMIDWrapperChannel : MIDWrapper.IMIDWrapper, System.ServiceModel.IClientChannel + { + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")] + public partial class MIDWrapperClient : System.ServiceModel.ClientBase, MIDWrapper.IMIDWrapper + { + + ///

+ /// Implement this partial method to configure the service endpoint. + /// + /// The endpoint to configure + /// The client credentials + static partial void ConfigureEndpoint(System.ServiceModel.Description.ServiceEndpoint serviceEndpoint, System.ServiceModel.Description.ClientCredentials clientCredentials); + + public MIDWrapperClient() : + base(MIDWrapperClient.GetDefaultBinding(), MIDWrapperClient.GetDefaultEndpointAddress()) + { + this.Endpoint.Name = EndpointConfiguration.BasicHttpsBinding_IMIDWrapper.ToString(); + ConfigureEndpoint(this.Endpoint, this.ClientCredentials); + } + + public MIDWrapperClient(EndpointConfiguration endpointConfiguration) : + base(MIDWrapperClient.GetBindingForEndpoint(endpointConfiguration), MIDWrapperClient.GetEndpointAddress(endpointConfiguration)) + { + this.Endpoint.Name = endpointConfiguration.ToString(); + ConfigureEndpoint(this.Endpoint, this.ClientCredentials); + } + + public MIDWrapperClient(EndpointConfiguration endpointConfiguration, string remoteAddress) : + base(MIDWrapperClient.GetBindingForEndpoint(endpointConfiguration), new System.ServiceModel.EndpointAddress(remoteAddress)) + { + this.Endpoint.Name = endpointConfiguration.ToString(); + ConfigureEndpoint(this.Endpoint, this.ClientCredentials); + } + + public MIDWrapperClient(EndpointConfiguration endpointConfiguration, System.ServiceModel.EndpointAddress remoteAddress) : + base(MIDWrapperClient.GetBindingForEndpoint(endpointConfiguration), remoteAddress) + { + this.Endpoint.Name = endpointConfiguration.ToString(); + ConfigureEndpoint(this.Endpoint, this.ClientCredentials); + } + + public MIDWrapperClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : + base(binding, remoteAddress) + { + } + + public MIDWrapper.MIDAuthSignClientResponseOfAuthenticationQRDataOmWmLNjX InitiateAuthRequestQR(MIDWrapper.AuthenticateRequest authRequestData) + { + return base.Channel.InitiateAuthRequestQR(authRequestData); + } + + public System.Threading.Tasks.Task InitiateAuthRequestQRAsync(MIDWrapper.AuthenticateRequest authRequestData) + { + return base.Channel.InitiateAuthRequestQRAsync(authRequestData); + } + + public MIDWrapper.MIDAuthSignClientResponseOfAuthenticationQRDataOmWmLNjX InitiateAuthRequestQRWithAssuranceLevel(MIDWrapper.AuthenticateRequest authRequestData, MIDWrapper.MIDAssuranceLevel assuranceLevel) + { + return base.Channel.InitiateAuthRequestQRWithAssuranceLevel(authRequestData, assuranceLevel); + } + + public System.Threading.Tasks.Task InitiateAuthRequestQRWithAssuranceLevelAsync(MIDWrapper.AuthenticateRequest authRequestData, MIDWrapper.MIDAssuranceLevel assuranceLevel) + { + return base.Channel.InitiateAuthRequestQRWithAssuranceLevelAsync(authRequestData, assuranceLevel); + } + + public MIDWrapper.MIDAuthSignClientResponseOfstring InitiateAuthRequestPN(MIDWrapper.AuthenticateRequest authRequestData) + { + return base.Channel.InitiateAuthRequestPN(authRequestData); + } + + public System.Threading.Tasks.Task InitiateAuthRequestPNAsync(MIDWrapper.AuthenticateRequest authRequestData) + { + return base.Channel.InitiateAuthRequestPNAsync(authRequestData); + } + + public MIDWrapper.MIDAuthSignClientResponseOfstring InitiateAuthRequestPNWithAssuranceLevel(MIDWrapper.AuthenticateRequest authRequestData, MIDWrapper.MIDAssuranceLevel assuranceLevel) + { + return base.Channel.InitiateAuthRequestPNWithAssuranceLevel(authRequestData, assuranceLevel); + } + + public System.Threading.Tasks.Task InitiateAuthRequestPNWithAssuranceLevelAsync(MIDWrapper.AuthenticateRequest authRequestData, MIDWrapper.MIDAssuranceLevel assuranceLevel) + { + return base.Channel.InitiateAuthRequestPNWithAssuranceLevelAsync(authRequestData, assuranceLevel); + } + + public MIDWrapper.MIDAuthSignClientResponseOfPersonalDataOmWmLNjX VerifyMobileIdentityQR(string qrCode, string refId) + { + return base.Channel.VerifyMobileIdentityQR(qrCode, refId); + } + + public System.Threading.Tasks.Task VerifyMobileIdentityQRAsync(string qrCode, string refId) + { + return base.Channel.VerifyMobileIdentityQRAsync(qrCode, refId); + } + + public MIDWrapper.MIDAuthSignClientResponseOfRequestStatusExBvhZr4Id GetRequestStatus(string requestId, string refId) + { + return base.Channel.GetRequestStatus(requestId, refId); + } + + public System.Threading.Tasks.Task GetRequestStatusAsync(string requestId, string refId) + { + return base.Channel.GetRequestStatusAsync(requestId, refId); + } + + public MIDWrapper.MIDAuthSignClientResponseOfHasMobileIdResponseOmWmLNjX HasMobileIdentity(string civilNo, string refId) + { + return base.Channel.HasMobileIdentity(civilNo, refId); + } + + public System.Threading.Tasks.Task HasMobileIdentityAsync(string civilNo, string refId) + { + return base.Channel.HasMobileIdentityAsync(civilNo, refId); + } + + public MIDWrapper.MIDAuthSignClientResponseOfstring NotifyPerson(MIDWrapper.MIDNotificationRequest request) + { + return base.Channel.NotifyPerson(request); + } + + public System.Threading.Tasks.Task NotifyPersonAsync(MIDWrapper.MIDNotificationRequest request) + { + return base.Channel.NotifyPersonAsync(request); + } + + public virtual System.Threading.Tasks.Task OpenAsync() + { + return System.Threading.Tasks.Task.Factory.FromAsync(((System.ServiceModel.ICommunicationObject)(this)).BeginOpen(null, null), new System.Action(((System.ServiceModel.ICommunicationObject)(this)).EndOpen)); + } + + private static System.ServiceModel.Channels.Binding GetBindingForEndpoint(EndpointConfiguration endpointConfiguration) + { + if ((endpointConfiguration == EndpointConfiguration.BasicHttpsBinding_IMIDWrapper)) + { + System.ServiceModel.BasicHttpBinding result = new System.ServiceModel.BasicHttpBinding(); + result.MaxBufferSize = int.MaxValue; + result.ReaderQuotas = System.Xml.XmlDictionaryReaderQuotas.Max; + result.MaxReceivedMessageSize = int.MaxValue; + result.MessageEncoding = System.ServiceModel.WSMessageEncoding.Mtom; + result.AllowCookies = true; + result.Security.Mode = System.ServiceModel.BasicHttpSecurityMode.Transport; + return result; + } + throw new System.InvalidOperationException(string.Format("Could not find endpoint with name \'{0}\'.", endpointConfiguration)); + } + + private static System.ServiceModel.EndpointAddress GetEndpointAddress(EndpointConfiguration endpointConfiguration) + { + if ((endpointConfiguration == EndpointConfiguration.BasicHttpsBinding_IMIDWrapper)) + { + return new System.ServiceModel.EndpointAddress("https://dsp-webapp01.venus.com:8151/MIDAuth/MIDSDKWrapper.MIDWrapper.svc"); + } + throw new System.InvalidOperationException(string.Format("Could not find endpoint with name \'{0}\'.", endpointConfiguration)); + } + + private static System.ServiceModel.Channels.Binding GetDefaultBinding() + { + return MIDWrapperClient.GetBindingForEndpoint(EndpointConfiguration.BasicHttpsBinding_IMIDWrapper); + } + + private static System.ServiceModel.EndpointAddress GetDefaultEndpointAddress() + { + return MIDWrapperClient.GetEndpointAddress(EndpointConfiguration.BasicHttpsBinding_IMIDWrapper); + } + + public enum EndpointConfiguration + { + + BasicHttpsBinding_IMIDWrapper, + } + } +} diff --git a/Duc.Splitt/Duc.Splitt.MIDIntegrationService/Duc.Splitt.MIDIntegrationService.csproj b/Duc.Splitt/Duc.Splitt.MIDIntegrationService/Duc.Splitt.MIDIntegrationService.csproj new file mode 100644 index 0000000..59d73ab --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.MIDIntegrationService/Duc.Splitt.MIDIntegrationService.csproj @@ -0,0 +1,21 @@ + + + + net8.0 + enable + enable + + + + + + + + + + + + + + + diff --git a/Duc.Splitt/Duc.Splitt.MerchantApi/Extensions/ServiceExtensions.cs b/Duc.Splitt/Duc.Splitt.MerchantApi/Extensions/ServiceExtensions.cs index 76ae2b3..a6be5cc 100644 --- a/Duc.Splitt/Duc.Splitt.MerchantApi/Extensions/ServiceExtensions.cs +++ b/Duc.Splitt/Duc.Splitt.MerchantApi/Extensions/ServiceExtensions.cs @@ -294,7 +294,7 @@ public static void ConfigureBusinessLogicServices(this WebApplicationBuilder bui builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.AddTransient(); - builder.Services.AddTransient(); + builder.Services.AddTransient(); builder.Services.AddTransient(); } public static void ConfigureLocalization(this WebApplicationBuilder builder) diff --git a/Duc.Splitt/Duc.Splitt.MerchantApi/appsettings.json b/Duc.Splitt/Duc.Splitt.MerchantApi/appsettings.json index c6ef45b..ec95d68 100644 --- a/Duc.Splitt/Duc.Splitt.MerchantApi/appsettings.json +++ b/Duc.Splitt/Duc.Splitt.MerchantApi/appsettings.json @@ -1,36 +1,49 @@ { - "Logging": { - "LogLevel": { - "Default": "Trace", - "Microsoft": "Information" - } - }, - "ConnectionStrings": { - "DbConnectionStringSplitt": "Data Source=172.20.4.145;Initial Catalog=SplittDB;User ID=sa;Password=P@ssw0rd;Encrypt=False;Trust Server Certificate=False;" - }, + "Logging": { + "LogLevel": { + "Default": "Trace", + "Microsoft": "Information" + } + }, + "ConnectionStrings": { + "DbConnectionStringSplitt": "Data Source=172.20.4.145;Initial Catalog=SplittDB;User ID=sa;Password=P@ssw0rd;Encrypt=False;Trust Server Certificate=False;" + }, - "AnonymousUserID": "FD4A59C5-0714-42B0-9E79-8A7984EA5545", - "RateLimiterOptions": { - "Secure_PermitLimit": 50, - "Secure_Window_InSec": 10, - "Public_PermitLimit": 50, - "Public_Window_InSec": 10 - }, - "Jwt": { - "Key": "vgZlqAf+4JQb+X7hxN4QJlktI5Q9BF+oZBh9Gj+gFKEU5lZa9qYcH++NC8dCsW3XSRjxZbiF20p7gA== ", - "Issuer": "YourIssuer", - "Audience": "YourAudience", - "ExpireMinutes": 30, - "MerchantVerify": "https://mpwpayment.diyarme.com/splittMPortal" - }, - "AllowSwagger": true, - "AllowAnyOrigin": true, + "AnonymousUserID": "FD4A59C5-0714-42B0-9E79-8A7984EA5545", + "RateLimiterOptions": { + "Secure_PermitLimit": 50, + "Secure_Window_InSec": 10, + "Public_PermitLimit": 50, + "Public_Window_InSec": 10 + }, + "MIDServiceAppSettings": { + "Username": "venus\\a.varghese", + "Password": "P@ssw0rd", + "MIDAssuranceLevel_AUTH": 20, + "SignatureProfileName": "MID", + "AuthenticationReasonAr": "Civil ID Verification", + "AuthenticationReasonEn": "Civil ID Verification", + "AuthServiceDescriptionAR": "SPLITT Need to Verify Civil ID Information", + "AuthServiceDescriptionEN": "SPLITT Need to Verify Civil ID Information", + "SPCallbackURLPN": "http://172.20.4.28:8080/api/MobileAuthCallBack/CallBackPN", + "AuthServiceURL": "http://172.20.4.28:8080/api/MobileAuthCallBack/CallBackPN" + }, + "Jwt": { + "Key": "vgZlqAf+4JQb+X7hxN4QJlktI5Q9BF+oZBh9Gj+gFKEU5lZa9qYcH++NC8dCsW3XSRjxZbiF20p7gA==", + "Issuer": "YourIssuer", + "Audience": "YourAudience", + "ExpireMinutes": 30, + "MerchantVerify": "https://mpwpayment.diyarme.com/splittMPortal" + }, - "AllowedOriginUrls": [ - "https://XX.XX.net" - ], + "AllowSwagger": true, + "AllowAnyOrigin": true, - "RequestLogExcludedApis": [ + "AllowedOriginUrls": [ + "https://XX.XX.net" + ], - ] + "RequestLogExcludedApis": [ + + ] } diff --git a/Duc.Splitt/Duc.Splitt.Respository/CustomerRegistrationRequestRepository.cs b/Duc.Splitt/Duc.Splitt.Respository/CustomerRegistrationRequestRepository.cs index 3aebfcb..b528dee 100644 --- a/Duc.Splitt/Duc.Splitt.Respository/CustomerRegistrationRequestRepository.cs +++ b/Duc.Splitt/Duc.Splitt.Respository/CustomerRegistrationRequestRepository.cs @@ -3,10 +3,11 @@ using Duc.Splitt.Data.DataAccess.Context; using Duc.Splitt.Data.DataAccess.Models; using Duc.Splitt.Repository; +using Microsoft.EntityFrameworkCore; namespace Duc.Splitt.Respository.Repository { - public class CustomerRegistrationRequestRepository : Repository, ICustomerRegistrationRequestRepository + public class CustomerRegistrationRequestRepository : Repository, ICustomerRegistrationRequestRepository { protected readonly SplittAppContext _context; @@ -14,7 +15,28 @@ public CustomerRegistrationRequestRepository(SplittAppContext context) : base(co { _context = context; } + public async Task CustomerRegistrationRequestWithin15Min(string civilId) + { + var fiveMinutesAgo = DateTime.UtcNow.AddMinutes(-15);//ToDo + + var obj = _context.CustomerRegistrationRequest.Where(t => t.CivilId == civilId && t.CreatedOn >= fiveMinutesAgo).OrderByDescending(t => t.CreatedOn).CountAsync(); + return await obj; + + } + public async Task CustomerRegistrationRequestById(Guid id) + { + var obj = await _context.CustomerRegistrationRequest.Include(t => t.MidRequestLog).Where(t => t.Id == id).FirstOrDefaultAsync(); + return obj; + + } + public async Task CustomerRegistrationRequestStatusId(Guid id) + { + var obj = await _context.CustomerRegistrationRequest.FirstOrDefaultAsync(); + return obj?.CustomerRegistrationStatusId; + + + } } } diff --git a/Duc.Splitt/Duc.Splitt.Respository/CustomerRepository.cs b/Duc.Splitt/Duc.Splitt.Respository/CustomerRepository.cs index 25f351a..b32141c 100644 --- a/Duc.Splitt/Duc.Splitt.Respository/CustomerRepository.cs +++ b/Duc.Splitt/Duc.Splitt.Respository/CustomerRepository.cs @@ -14,7 +14,7 @@ public CustomerRepository(SplittAppContext context) : base(context) { _context = context; } - public async Task GetConsumerUserByMobileNo(string mobileNo) + public async Task GetCustomerByMobileNo(string mobileNo) { var obj = await _context.Customer.Include(t => t.User).Where(t => t.MobileNo == mobileNo).FirstOrDefaultAsync(); diff --git a/Duc.Splitt/Duc.Splitt.Respository/OtpRequestRepository.cs b/Duc.Splitt/Duc.Splitt.Respository/OtpRequestRepository.cs index aca084b..f894bdf 100644 --- a/Duc.Splitt/Duc.Splitt.Respository/OtpRequestRepository.cs +++ b/Duc.Splitt/Duc.Splitt.Respository/OtpRequestRepository.cs @@ -17,8 +17,18 @@ public OtpRequestRepository(SplittAppContext context) : base(context) public async Task GetLatestOtpRequestByMobileNo(string mobileNo) { - var obj = await _context.OtpRequest.Where(t => t.MobileNo == mobileNo).OrderByDescending(t => t.CreatedOn).FirstOrDefaultAsync(); - return obj; + var fiveMinutesAgo = DateTime.UtcNow.AddMinutes(-10);//ToDo + var otpRequests = await _context.OtpRequest + .Where(t => t.MobileNo == mobileNo && t.CreatedOn >= fiveMinutesAgo) + .OrderByDescending(t => t.CreatedOn).FirstOrDefaultAsync(); + return otpRequests; + } + + public async Task GetOtpRequestById(Guid Id) + { + var fiveMinutesAgo = DateTime.UtcNow.AddMinutes(-10);//ToDo + var otpRequests = await _context.OtpRequest.FirstAsync(t => t.Id == Id); + return otpRequests; } } } diff --git a/Duc.Splitt/Duc.Splitt.Service/AuthBackOfficeService.cs b/Duc.Splitt/Duc.Splitt.Service/AuthBackOfficeService.cs index f0ad6b5..54cff38 100644 --- a/Duc.Splitt/Duc.Splitt.Service/AuthBackOfficeService.cs +++ b/Duc.Splitt/Duc.Splitt.Service/AuthBackOfficeService.cs @@ -140,7 +140,7 @@ public AuthBackOfficeService(IUnitOfWork unitOfWork, IDapperDBConnection dapperD User = new User { LoginId = merchant.BusinessEmail, - UserTypeId = (int)UserTypes.Consumer, + UserTypeId = (int)Roles.Consumer, IsActive = true, CreatedAt = (byte)requestHeader.LocationId, CreatedOn = DateTime.Now, diff --git a/Duc.Splitt/Duc.Splitt.Service/AuthConsumerService.cs b/Duc.Splitt/Duc.Splitt.Service/AuthConsumerService.cs deleted file mode 100644 index 6c14471..0000000 --- a/Duc.Splitt/Duc.Splitt.Service/AuthConsumerService.cs +++ /dev/null @@ -1,181 +0,0 @@ -using Azure.Core; -using Duc.Splitt.Common.Dtos.Requests; -using Duc.Splitt.Common.Dtos.Responses; -using Duc.Splitt.Common.Enums; -using Duc.Splitt.Common.Helpers; -using Duc.Splitt.Core.Contracts.Repositories; -using Duc.Splitt.Core.Contracts.Services; -using Duc.Splitt.Data.Dapper; -using Duc.Splitt.Data.DataAccess.Models; -using Duc.Splitt.Identity; -using Microsoft.AspNetCore.Identity; -using Microsoft.Extensions.Configuration; -using Microsoft.IdentityModel.Tokens; -using System.Data; -using System.Data.SqlTypes; -using System.IdentityModel.Tokens.Jwt; -using System.Security.Claims; -using System.Text; -using static Duc.Splitt.Common.Dtos.Requests.AuthConsumerUserDto; -using static Duc.Splitt.Common.Dtos.Responses.MerchantDto; - -namespace Duc.Splitt.Service -{ - public class AuthConsumerService : IAuthConsumerService - { - private readonly IUnitOfWork _unitOfWork; - private readonly IDapperDBConnection _dapperDBConnection; - private readonly UserManager _userManager; - private readonly RoleManager _roleManager; - private readonly IConfiguration _configuration; - private readonly IUtilitiesService _UtilitiesService; - - public AuthConsumerService(IUnitOfWork unitOfWork, IDapperDBConnection dapperDBConnection, UserManager userManager, RoleManager roleManager, IConfiguration configuration, IUtilitiesService utilitiesService) - { - _unitOfWork = unitOfWork; - _dapperDBConnection = dapperDBConnection; - _userManager = userManager; - _roleManager = roleManager; - _configuration = configuration; - _UtilitiesService = utilitiesService; - } - - public async Task> RequestConsumerUserOTP(RequestHeader requestHeader, RegisterDto request) - { - // Generate OTP and send SMS - var otp = _UtilitiesService.GenerateOtp(); - _unitOfWork.OtpRequests.AddAsync(new OtpRequest - { - MobileNo = request.MobileNo, - Otp = otp, - NumberofAttempts = 1, - CreatedAt = (byte)requestHeader.LocationId, - CreatedOn = DateTime.Now, - CreatedBy = Utilities.AnonymousUserID,//ToDo - }); - - await _unitOfWork.CompleteAsync(); - // Send SMS - return new ResponseDto - { - Message = otp, - Code = ResponseStatusCode.Success, - Data = true, - - }; - - } - - public async Task> VerifyConsumerUserOTP(RequestHeader requestHeader, VerifyOtpDto request) - { - ResponseDto response = new ResponseDto - { - Code = ResponseStatusCode.NoDataFound - }; - var otpRequest = await _unitOfWork.OtpRequests.GetLatestOtpRequestByMobileNo(request.MobileNo); - if (otpRequest == null) - { - return response; // No OTP exists for this mobile number - } - if (otpRequest.IsUsed.HasValue && otpRequest.IsUsed == true) - { - otpRequest.Status = "Already Used"; - await _unitOfWork.CompleteAsync(); - response.Code = ResponseStatusCode.AlreadyUsed; - return response; - } - if (otpRequest.ExpiredOn < DateTime.Now) - { - otpRequest.Status = "Expired"; - await _unitOfWork.CompleteAsync(); - response.Code = ResponseStatusCode.OTPExpired; - return response; - } - // Check if maximum attempts have been reached - int maxAttempts = 3; // Define your max attempt limit - if (otpRequest.NumberofAttempts >= maxAttempts) - { - otpRequest.Status = "Exceeded max attempts"; - await _unitOfWork.CompleteAsync(); - response.Code = ResponseStatusCode.OTPMaxAttempts; - return response; - } - if (otpRequest != null && otpRequest.Otp == request.Otp) - { - otpRequest.Status = "Used"; - otpRequest.IsUsed = true; - - // OTP is valid, log the user in - var user = await _userManager.FindByNameAsync(request.MobileNo); - if (user == null) - { - SplittIdentityUser splittIdentityUser = new SplittIdentityUser - { - SecurityStamp = Guid.NewGuid().ToString(), - PhoneNumber = request.MobileNo, - UserName = request.MobileNo, - PhoneNumberConfirmed = true, - }; - var result = await _userManager.CreateAsync(splittIdentityUser); - if (!result.Succeeded) - { - return new ResponseDto - { - Code = ResponseStatusCode.ServerError, - Message = $"User Creation failed", - Errors = _UtilitiesService.GetErrorMessages(result) - }; - - } - } - - var consumerUser = await _unitOfWork.Customers.GetConsumerUserByMobileNo(request.MobileNo); - if (consumerUser == null) - { - consumerUser = new Customer - { - MobileNo = request.MobileNo, - CreatedAt = (byte)requestHeader.LocationId, - CreatedOn = DateTime.Now, - CreatedBy = Utilities.AnonymousUserID, - User = new User - { - LoginId = request.MobileNo, - UserTypeId = (int)UserTypes.Consumer, - IsActive = true, - CreatedAt = (byte)requestHeader.LocationId, - CreatedOn = DateTime.Now, - CreatedBy = Utilities.AnonymousUserID, - } - }; - _unitOfWork.Customers.AddAsync(consumerUser); - } - await _unitOfWork.CompleteAsync(); - var token = _UtilitiesService.GenerateJwtToken(user); - return new ResponseDto - { - Code = ResponseStatusCode.Success, - Data = new AuthTokens { Token = token } - }; - } - else - { - otpRequest.NumberofAttempts += 1; // Increment attempt count - otpRequest.Status = "Failed"; - return new ResponseDto - { - Code = ResponseStatusCode.Conflict, - Message = "Invalid OTP", - Errors = new List { $"{request.MobileNo} - OTP is not valid" } - }; - } - - } - - - - - } - -} - diff --git a/Duc.Splitt/Duc.Splitt.Service/AuthCustomerService.cs b/Duc.Splitt/Duc.Splitt.Service/AuthCustomerService.cs new file mode 100644 index 0000000..6948189 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.Service/AuthCustomerService.cs @@ -0,0 +1,295 @@ +using Duc.Splitt.Common.Dtos.Responses; +using Duc.Splitt.Common.Enums; +using Duc.Splitt.Common.Helpers; +using Duc.Splitt.Core.Contracts.Repositories; +using Duc.Splitt.Core.Contracts.Services; +using Duc.Splitt.Data.Dapper; +using Duc.Splitt.Data.DataAccess.Models; +using Duc.Splitt.Identity; +using Duc.Splitt.Logger; +using Microsoft.AspNetCore.Identity; +using Microsoft.Extensions.Configuration; +using Newtonsoft.Json.Linq; +using static Duc.Splitt.Common.Dtos.Requests.AuthConsumerUserRequestDto; +using static Duc.Splitt.Common.Dtos.Requests.PACIMobileIdRequest; +using static Duc.Splitt.Common.Dtos.Responses.PACIMobileIdResponse; + +namespace Duc.Splitt.Service +{ + public class AuthCustomerService : IAuthCustomerService + { + private readonly IUnitOfWork _unitOfWork; + private readonly IDapperDBConnection _dapperDBConnection; + private readonly UserManager _userManager; + private readonly RoleManager _roleManager; + private readonly IConfiguration _configuration; + private readonly IUtilitiesService _UtilitiesService; + private readonly ILoggerService _logger; + + private readonly IMIDServiceAuthenticationService _midServiceAuthenticationService; + public AuthCustomerService(IUnitOfWork unitOfWork, IDapperDBConnection dapperDBConnection, UserManager userManager, RoleManager roleManager, IConfiguration configuration, IUtilitiesService utilitiesService, IMIDServiceAuthenticationService mIDServiceAuthenticationService, ILoggerService logger) + { + _unitOfWork = unitOfWork; + _dapperDBConnection = dapperDBConnection; + _userManager = userManager; + _roleManager = roleManager; + _configuration = configuration; + _UtilitiesService = utilitiesService; + _midServiceAuthenticationService = mIDServiceAuthenticationService; + _logger = logger; + } + + public async Task> RequestOTP(RequestHeader requestHeader, RegisterDto request) + { + var resposne = new ResponseDto + { + Code = ResponseStatusCode.NoDataFound, + Data = true, + }; + var fiveMinutesAgo = DateTime.UtcNow.AddMinutes(-5); + var otpCount = await _unitOfWork.OtpRequests + .FindAsync(t => t.MobileNo == request.MobileNo && t.CreatedOn >= fiveMinutesAgo); + if (otpCount != null && otpCount.Count() > 5) + { + resposne.Code = ResponseStatusCode.OTPRequestLimitExceeded; + resposne.Data = null; + resposne.Errors = new List { $"otpCount={otpCount} Requst reached Limit" }; + } + + var customer = await _unitOfWork.Customers.GetCustomerByMobileNo(request.MobileNo); + var user = await _userManager.FindByNameAsync(request.MobileNo); + bool IsRegistredUser = customer != null && user != null ? true : false; + var otp = _UtilitiesService.GenerateOtp(); + _unitOfWork.OtpRequests.AddAsync(new OtpRequest + { + MobileNo = request.MobileNo, + Otp = otp, + OtpPurposeId = IsRegistredUser ? (int)OtpPurposes.Login : (int)OtpPurposes.Registration, + CreatedAt = (byte)requestHeader.LocationId, + CreatedOn = DateTime.Now, + CreatedBy = Utilities.AnonymousUserID,//ToDo + ExpiredOn = DateTime.Now.AddMinutes(5),// toDO + + }); + await _unitOfWork.CompleteAsync(); + // Send SMS + return new ResponseDto + { + Message = otp, + Code = ResponseStatusCode.Success, + Data = true, + }; + } + + public async Task> VerifyOTP(RequestHeader requestHeader, VerifyOtpDto request) + { + ResponseDto response = new ResponseDto + { + Code = ResponseStatusCode.NoDataFound + }; + var otpRequest = await _unitOfWork.OtpRequests.GetLatestOtpRequestByMobileNo(request.MobileNo); + if (otpRequest == null) + { + return response; // No OTP exists for this mobile number + } + var customer = await _unitOfWork.Customers.GetCustomerByMobileNo(request.MobileNo); + var user = await _userManager.FindByNameAsync(request.MobileNo); + bool IsRegistredUser = customer != null && user != null ? true : false; + if (otpRequest.IsUsed.HasValue && otpRequest.IsUsed == true) + { + otpRequest.Status = "Already Used"; + await _unitOfWork.CompleteAsync(); + response.Code = ResponseStatusCode.OTPAlreadyUsed; + return response; + } + if (otpRequest.ExpiredOn < DateTime.Now) + { + otpRequest.Status = "Expired"; + await _unitOfWork.CompleteAsync(); + response.Code = ResponseStatusCode.OTPExpired; + return response; + } + int maxAttempts = 3; // toDo + if (otpRequest.NumberofAttempts >= maxAttempts) + { + otpRequest.Status = "Exceeded max attempts"; + await _unitOfWork.CompleteAsync(); + response.Code = ResponseStatusCode.OTPVerifyLimitExceeded; + return response; + } + if (otpRequest != null && otpRequest.Otp == request.Otp) + { + otpRequest.NumberofAttempts = otpRequest.NumberofAttempts.HasValue ? otpRequest.NumberofAttempts + 1 : 1; + otpRequest.Status = "Used"; + otpRequest.IsUsed = true; + otpRequest.VerifiedOn = DateTime.Now; + if (IsRegistredUser) + { + var token = _UtilitiesService.GenerateJwtToken(user); + return new ResponseDto + { + Code = ResponseStatusCode.Success, + Data = new VerifyOtpResponse { OtpRequestId = otpRequest.Id, IsNewCustomer = false, AuthTokens = new AuthTokens { Token = token } }, + }; + } + else + { + return new ResponseDto + { + Data = new VerifyOtpResponse { OtpRequestId = otpRequest.Id, IsNewCustomer = true }, + Code = ResponseStatusCode.Success, + }; + } + + + } + else + { + otpRequest.NumberofAttempts = otpRequest.NumberofAttempts.HasValue ? otpRequest.NumberofAttempts + 1 : 1;// Increment attempt count + otpRequest.Status = "Failed"; + return new ResponseDto + { + Code = ResponseStatusCode.Conflict, + Message = "Invalid OTP", + Errors = new List { $"{request.MobileNo} - OTP is not valid" } + }; + } + + } + + public async Task> CustomerRegistrationRequest(RequestHeader requestHeader, CustomerRegistrationRequestDto request) + { + ResponseDto response = new ResponseDto + { + Code = ResponseStatusCode.NoDataFound + }; + var otpRequest = await _unitOfWork.OtpRequests.GetOtpRequestById(request.OtpRequestId); + if (otpRequest == null) + { + response.Code = ResponseStatusCode.OTPRequestNotFound; + return response; + } + if (otpRequest.VerifiedOn == null) + { + response.Code = ResponseStatusCode.OTPVerificationNotCompleted; + return response; + } + var savedCustomerRegistrationRequestsCount = await _unitOfWork.CustomerRegistrationRequests.CustomerRegistrationRequestWithin15Min(request.CivilId); + if (savedCustomerRegistrationRequestsCount != null && savedCustomerRegistrationRequestsCount > 3) + { + response.Code = ResponseStatusCode.OTPRequestLimitExceeded; + response.Data = null; + response.Errors = new List { $"Count={savedCustomerRegistrationRequestsCount} Requst reached Limit" }; + } + + var customerRegistrationRequestId = Guid.NewGuid(); + CustomerRegistrationRequest customerRegistrationRequest = new CustomerRegistrationRequest + { + CivilId = request.CivilId, + CustomerRegistrationStatusId = (int)CustomerRegistrationStatuses.PACIPending, + MobileNo = otpRequest.MobileNo, + OtpRequestId = otpRequest.Id, + CreatedOn = DateTime.Now, + CreatedBy = Utilities.AnonymousUserID,//ToDo + CreatedAt = (byte)requestHeader.LocationId, + Id = customerRegistrationRequestId, + }; + _unitOfWork.CustomerRegistrationRequests.AddAsync(customerRegistrationRequest); + await _unitOfWork.CompleteAsync(); + var savedCustomerRegistrationRequests = await _unitOfWork.CustomerRegistrationRequests.GetAsync(customerRegistrationRequestId); + MobileAuthPNRequestDto mobileAuthPNRequestDto = new MobileAuthPNRequestDto + { + CivilId = request.CivilId, + CustomerRegistrationRequestId = customerRegistrationRequestId + }; + ResponseDto paciresponse = new ResponseDto(); + try + { + paciresponse = await _midServiceAuthenticationService.InitiateAuthRequestPN(requestHeader, mobileAuthPNRequestDto); + if (paciresponse != null && paciresponse.Data != null && !string.IsNullOrEmpty(paciresponse.Data.DSPRefNo)) + { + MidRequestLog midRequestLog = new MidRequestLog + { + CustomerRegistrationRequestId = customerRegistrationRequestId, + DsprefId = paciresponse.Data.DSPRefNo, + MidpayloadRequest = _logger.ToJson(mobileAuthPNRequestDto), + MidpayloadResponse = _logger.ToJson(paciresponse), + MidRequestStatusId = (int)MidRequestStatuses.InitiateSucess, + MidRequestTypeId = (int)MidRequestTypes.AuthenticationPN, + }; + _unitOfWork.MidRequestLogs.AddAsync(midRequestLog); + savedCustomerRegistrationRequests.PacinumberofAttempts = savedCustomerRegistrationRequests.PacinumberofAttempts.HasValue ? savedCustomerRegistrationRequests.PacinumberofAttempts + 1 : 1; + await _unitOfWork.CompleteAsync(); + return new ResponseDto + { + Code = ResponseStatusCode.Success, + Data = new CustomerRegistrationResponseDto { CustomerRegistrationRequestId = savedCustomerRegistrationRequests.Id } + }; + } + else + { + MidRequestLog midRequestLog = new MidRequestLog + { + CustomerRegistrationRequestId = customerRegistrationRequestId, + MidpayloadRequest = _logger.ToJson(mobileAuthPNRequestDto), + MidpayloadResponse = _logger.ToJson(paciresponse), + MidRequestStatusId = (int)MidRequestStatuses.MIDIssue, + MidRequestTypeId = (int)MidRequestTypes.AuthenticationPN, + }; + _unitOfWork.MidRequestLogs.AddAsync(midRequestLog); + savedCustomerRegistrationRequests.PacinumberofAttempts = savedCustomerRegistrationRequests.PacinumberofAttempts.HasValue ? savedCustomerRegistrationRequests.PacinumberofAttempts + 1 : 1; + await _unitOfWork.CompleteAsync(); + return new ResponseDto + { + Code = ResponseStatusCode.Success, + Data = new CustomerRegistrationResponseDto { CustomerRegistrationRequestId = savedCustomerRegistrationRequests.Id } + }; + } + } + catch (Exception ex) + { + MidRequestLog midRequestLog = new MidRequestLog + { + CustomerRegistrationRequestId = customerRegistrationRequestId, + DsprefId = "", + MidpayloadRequest = _logger.ToJson(mobileAuthPNRequestDto), + MidpayloadResponse = _logger.ToJson(_logger.ConvertExceptionToStringList(ex)), + MidRequestStatusId = (int)MidRequestStatuses.MIDIssue, + MidRequestTypeId = (int)MidRequestTypes.AuthenticationPN, + }; + _unitOfWork.MidRequestLogs.AddAsync(midRequestLog); + savedCustomerRegistrationRequests.PacinumberofAttempts = savedCustomerRegistrationRequests.PacinumberofAttempts.HasValue ? savedCustomerRegistrationRequests.PacinumberofAttempts + 1 : 1; + await _unitOfWork.CompleteAsync(); + return new ResponseDto + { + Code = ResponseStatusCode.Success, + Data = new CustomerRegistrationResponseDto { CustomerRegistrationRequestId = savedCustomerRegistrationRequests.Id } + }; + } + + } + + public async Task> CheckMidStatus(RequestHeader requestHeader, CheckMIdRequestStatusDto request) + { + ResponseDto response = new ResponseDto + { + Code = ResponseStatusCode.NoDataFound + }; + var customerRegistrationRequestStatusId = await _unitOfWork.CustomerRegistrationRequests.CustomerRegistrationRequestStatusId(request.CustomerRegistrationRequestId); + if (customerRegistrationRequestStatusId == null) + { + response.Code = ResponseStatusCode.NoDataFound; + return response; + } + else + { + response.Code = ResponseStatusCode.NoDataFound; + response.Data = new CheckMIdRequestStatusDto { CustomerRegistrationRequestId = request.CustomerRegistrationRequestId, CustomerRegistrationRequestStatusId = customerRegistrationRequestStatusId }; + return response; + } + } + + } +} + + diff --git a/Duc.Splitt/Duc.Splitt.Service/AuthMerchantService.cs b/Duc.Splitt/Duc.Splitt.Service/AuthMerchantService.cs index 1b9466b..2121bcc 100644 --- a/Duc.Splitt/Duc.Splitt.Service/AuthMerchantService.cs +++ b/Duc.Splitt/Duc.Splitt.Service/AuthMerchantService.cs @@ -151,7 +151,7 @@ public AuthMerchantService(IUnitOfWork unitOfWork, IDapperDBConnection dapperDBC var userMerchant = new User { LoginId = user.Email, - UserTypeId = (int)UserTypes.MerchantOwner, + UserTypeId = (int)Roles.MerchantOwner, IsActive = true, CreatedAt = (byte)requestHeader.LocationId, CreatedOn = DateTime.Now, diff --git a/Duc.Splitt/Duc.Splitt.Service/Duc.Splitt.Service.csproj b/Duc.Splitt/Duc.Splitt.Service/Duc.Splitt.Service.csproj index f6e9be7..c55c30f 100644 --- a/Duc.Splitt/Duc.Splitt.Service/Duc.Splitt.Service.csproj +++ b/Duc.Splitt/Duc.Splitt.Service/Duc.Splitt.Service.csproj @@ -63,6 +63,7 @@ + diff --git a/Duc.Splitt/Duc.Splitt.Service/MIDServiceAuthenticationService.cs b/Duc.Splitt/Duc.Splitt.Service/MIDServiceAuthenticationService.cs new file mode 100644 index 0000000..03cf720 --- /dev/null +++ b/Duc.Splitt/Duc.Splitt.Service/MIDServiceAuthenticationService.cs @@ -0,0 +1,173 @@ + +using Duc.Splitt.Common.Dtos.Responses; +using Duc.Splitt.Common.Enums; +using Duc.Splitt.Core.Contracts.Repositories; +using Duc.Splitt.Core.Contracts.Services; +using Duc.Splitt.Data.Dapper; +using Duc.Splitt.Data.DataAccess.Models; +using Duc.Splitt.Logger; +using Duc.Splitt.MIDIntegrationService; +using Microsoft.Extensions.Configuration; +using System.ServiceModel; +using static Duc.Splitt.Common.Dtos.Requests.PACIMobileIdRequest; +using static Duc.Splitt.Common.Dtos.Responses.PACIMobileIdResponse; + +namespace Duc.Splitt.Service +{ + public class MIDServiceAuthenticationService : IMIDServiceAuthenticationService + { + private readonly IConfiguration _configuration; + private readonly ILoggerService _logger; + private readonly IUnitOfWork _unitOfWork; + private readonly IDapperDBConnection _dapperDBConnection; + private readonly string username = ""; + private readonly string password = ""; + private readonly string mIDAssuranceLevel_AUTH = ""; + private readonly string signatureProfileName = ""; + private readonly string authenticationReasonAr = ""; + private readonly string authenticationReasonEn = ""; + private readonly string authServiceDescriptionAR = ""; + private readonly string authServiceDescriptionEN = ""; + private readonly string sPCallbackURLPN = ""; + private readonly string authServiceURL = ""; + public MIDServiceAuthenticationService(IConfiguration configuration, IUnitOfWork unitOfWork, IDapperDBConnection dapperDBConnection, ILoggerService logger) + { + _configuration = configuration; + _logger = logger; + _unitOfWork = unitOfWork; + _dapperDBConnection = dapperDBConnection; + username = _configuration["MIDServiceAppSettings:Username"] ?? ""; + password = _configuration["MIDServiceAppSettings:Password"] ?? ""; + mIDAssuranceLevel_AUTH = _configuration["MIDServiceAppSettings:MIDAssuranceLevel_AUTH"] ?? ""; + signatureProfileName = _configuration["MIDServiceAppSettings:SignatureProfileName"] ?? ""; + authenticationReasonAr = _configuration["MIDServiceAppSettings:AuthenticationReasonAr"] ?? ""; + authenticationReasonEn = _configuration["MIDServiceAppSettings:AuthenticationReasonEn"] ?? ""; + authServiceDescriptionAR = _configuration["MIDServiceAppSettings:AuthServiceDescriptionAR"] ?? ""; + authServiceDescriptionEN = _configuration["MIDServiceAppSettings:AuthServiceDescriptionEN"] ?? ""; + sPCallbackURLPN = _configuration["MIDServiceAppSettings:SPCallbackURLPN"] ?? ""; + authServiceURL = _configuration["MIDServiceAppSettings:AuthServiceURL"] ?? ""; + } + public async Task> InitiateAuthRequestPN(RequestHeader requestHeader, MobileAuthPNRequestDto requestDto) + { + ResponseDto response = new ResponseDto + { + Code = ResponseStatusCode.NoDataFound + }; + _logger.LogInfo($"requestDto:{requestDto}"); + string dynamicUrl = authServiceURL; + var endpointAddress = new EndpointAddress(dynamicUrl); + var binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly); + binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic; + var client = new MIDWrapper.MIDWrapperClient(binding, endpointAddress); + client.ChannelFactory.Credentials.UserName.UserName = username; + client.ChannelFactory.Credentials.UserName.Password = password; + try + { + string refID = Guid.NewGuid().ToString(); + MIDWrapper.AuthenticateRequest auth = new MIDWrapper.AuthenticateRequest(); + auth.PersonCivilNo = requestDto.CivilId; + auth.AuthenticationReasonAr = authenticationReasonAr; + auth.AuthenticationReasonEn = authenticationReasonEn; + auth.ServiceDescriptionAR = authServiceDescriptionAR; + auth.ServiceDescriptionEN = authServiceDescriptionEN; + auth.SPCallbackURL = sPCallbackURLPN; + auth.RefId = requestDto.CustomerRegistrationRequestId.ToString(); + auth.Challenge = ""; + auth.RequestUserDetails = true; + _logger.LogInfo($"RequestDto:{auth}"); + MIDWrapper.MIDAssuranceLevel mIDAssuranceLevel = MIDWrapper.MIDAssuranceLevel.High; + if (mIDAssuranceLevel_AUTH == "20") + { + mIDAssuranceLevel = MIDWrapper.MIDAssuranceLevel.Medium; + } + _logger.LogInfo($"mIDAssuranceLevel:{mIDAssuranceLevel}"); + + var resposnePACI = await client.InitiateAuthRequestPNAsync(auth); + client.Close(); + _logger.LogInfo($"resposne:{resposnePACI}"); + if (resposnePACI != null && !string.IsNullOrEmpty(resposnePACI.Data)) + { + response.Data = new MobileAuthPNResponseDto { DSPRefNo = resposnePACI?.Data }; + response.Code = ResponseStatusCode.Success; + return response; + } + else + { + string errorCode = resposnePACI != null && resposnePACI.Error != null && resposnePACI.Error?.Code > 0 ? resposnePACI.Error.Code.ToString() : ""; + string errorMessage = resposnePACI != null && resposnePACI.Error != null && !string.IsNullOrEmpty(resposnePACI.Error.Message) ? Convert.ToString(resposnePACI.Error.Message) : ""; + response.Code = ResponseStatusCode.MIDAPIIssue; + response.Errors = new List { $"errorCode:{errorCode}, errorMessage:{errorMessage}" }; + _logger.LogInfo($"resposne:{resposnePACI}"); + return response; + } + } + catch + { + client.Abort(); + throw; + } + } + + public async Task> CallBackPN(CallbackResponse PACIcallback) + { + ResponseDto response = new ResponseDto + { + Code = ResponseStatusCode.NoDataFound + }; + if (PACIcallback != null && PACIcallback.MIDAuthSignResponse != null && PACIcallback.MIDAuthSignResponse.RequestDetails != null) + + { + + if (PACIcallback.MIDAuthSignResponse.PersonalData != null + && Convert.ToInt32(PACIcallback.MIDAuthSignResponse.ResultDetails.ResultCode) == (int)ResultCode.Authenticated + && Convert.ToInt32(PACIcallback.MIDAuthSignResponse.ResultDetails.UserAction) == (int)UserAction.AuthenticateAccept) + { + response.Code = ResponseStatusCode.Success; + response.Errors = new List { }; + return response; + } + else if (Convert.ToInt32(PACIcallback.MIDAuthSignResponse.ResultDetails.UserAction) == (int)UserAction.Decline) + { + MidRequestLog log = new MidRequestLog { }; + _unitOfWork.MidRequestLogs.AddAsync(log); + await _unitOfWork.CompleteAsync(); + response.Code = ResponseStatusCode.Success; + response.Errors = new List { }; + return response; + } + else + { + response.Code = ResponseStatusCode.InvalidPACIData; + response.Errors = new List { }; + return response; + } + } + else + { + response.Code = ResponseStatusCode.InvalidPACIData; + response.Errors = new List { }; + return response; + } + + } + public interface IMIDServiceAuthenticationService + { + Task> InitiateAuthRequestPN(RequestHeader requestHeader, MobileAuthPNRequestDto requestDto); + } + + } + public enum ResultCode + { + Authenticated = 1, + UserCertificateRevoked = 2, + FailedToVerify = 3, + Declined = 4, + CertificateExpired = 5 + } + public enum UserAction + { + AuthenticateAccept = 1, + Decline = 2, + + } +} diff --git a/Duc.Splitt/Duc.Splitt.Service/MerchantService.cs b/Duc.Splitt/Duc.Splitt.Service/MerchantService.cs index d0213b3..c7c3075 100644 --- a/Duc.Splitt/Duc.Splitt.Service/MerchantService.cs +++ b/Duc.Splitt/Duc.Splitt.Service/MerchantService.cs @@ -10,7 +10,6 @@ using Duc.Splitt.Identity; using Microsoft.AspNetCore.Identity; using System.Data; -using static Duc.Splitt.Common.Dtos.Requests.AuthMerchantUserDto; using static Duc.Splitt.Common.Dtos.Requests.MerchantRequestDto; using static Duc.Splitt.Common.Dtos.Responses.MerchantDto; diff --git a/Duc.Splitt/Duc.Splitt.Service/OrderService.cs b/Duc.Splitt/Duc.Splitt.Service/OrderService.cs index 9a153e4..15b46a7 100644 --- a/Duc.Splitt/Duc.Splitt.Service/OrderService.cs +++ b/Duc.Splitt/Duc.Splitt.Service/OrderService.cs @@ -1,19 +1,10 @@ -using Dapper; -using Duc.Splitt.Common.Dtos.Responses; +using Duc.Splitt.Common.Dtos.Responses; using Duc.Splitt.Common.Enums; -using Duc.Splitt.Common.Helpers; using Duc.Splitt.Core.Contracts.Repositories; using Duc.Splitt.Core.Contracts.Services; -using Duc.Splitt.Core.Helper; using Duc.Splitt.Data.Dapper; using Duc.Splitt.Data.DataAccess.Models; -using Duc.Splitt.Identity; -using Microsoft.AspNetCore.Identity; -using System.Data; -using static Duc.Splitt.Common.Dtos.Requests.AuthMerchantUserDto; -using static Duc.Splitt.Common.Dtos.Requests.MerchantRequestDto; using static Duc.Splitt.Common.Dtos.Requests.OrderRequestDto; -using static Duc.Splitt.Common.Dtos.Responses.MerchantDto; using static Duc.Splitt.Common.Dtos.Responses.OrderResponseDto; namespace Duc.Splitt.Service diff --git a/Duc.Splitt/Duc.Splitt.sln b/Duc.Splitt/Duc.Splitt.sln index 76ee064..65ff656 100644 --- a/Duc.Splitt/Duc.Splitt.sln +++ b/Duc.Splitt/Duc.Splitt.sln @@ -23,6 +23,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Duc.Splitt.BackOfficeApi", EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Duc.Splitt.CustomerApi", "Duc.Splitt.CustomerApi\Duc.Splitt.CustomerApi.csproj", "{9F5DD92F-BFA4-4D84-90F7-7368BADF19CA}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Duc.Splitt.MIDIntegrationService", "Duc.Splitt.MIDIntegrationService\Duc.Splitt.MIDIntegrationService.csproj", "{8D1991C2-8F5B-48F8-B827-3E9EC0D868AE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Duc.Splitt.MIDCallbackAPI", "Duc.Splitt.MIDCallbackAPI\Duc.Splitt.MIDCallbackAPI.csproj", "{A644ED0B-5F9A-41F8-B3F1-55AC1245B2EC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -69,6 +73,14 @@ Global {9F5DD92F-BFA4-4D84-90F7-7368BADF19CA}.Debug|Any CPU.Build.0 = Debug|Any CPU {9F5DD92F-BFA4-4D84-90F7-7368BADF19CA}.Release|Any CPU.ActiveCfg = Release|Any CPU {9F5DD92F-BFA4-4D84-90F7-7368BADF19CA}.Release|Any CPU.Build.0 = Release|Any CPU + {8D1991C2-8F5B-48F8-B827-3E9EC0D868AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8D1991C2-8F5B-48F8-B827-3E9EC0D868AE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8D1991C2-8F5B-48F8-B827-3E9EC0D868AE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8D1991C2-8F5B-48F8-B827-3E9EC0D868AE}.Release|Any CPU.Build.0 = Release|Any CPU + {A644ED0B-5F9A-41F8-B3F1-55AC1245B2EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A644ED0B-5F9A-41F8-B3F1-55AC1245B2EC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A644ED0B-5F9A-41F8-B3F1-55AC1245B2EC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A644ED0B-5F9A-41F8-B3F1-55AC1245B2EC}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE