Files
Backend-Api/0_Framework/Application/UID/IUidService.cs

172 lines
4.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Permissions;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace _0_Framework.Application.UID;
#region PersonalInfoResponseDTO
/// <summary>
/// ویو مدل اطلاعات شخصی کاربر که از سرویس یو آیدی دریافت می شود
/// </summary>
/// <param name="command"></param>
/// <param name="IdentificationInformation"></param>
/// <param name="RegistrationStatus"></param>
/// <param name="ResponseContext"></param>
public record PersonalInfoResponse(
UidBasicInformation BasicInformation,
IdentificationInformation IdentificationInformation,
RegistrationStatus RegistrationStatus,
ResponseContext ResponseContext);
public class UidBasicInformation
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string FatherName { get; set; }
[JsonProperty("gender")]
public string Gender { get; set; }
public Gender GenderEnum => Gender switch
{
"GENDER_MALE" => Application.Gender.Male,
"GENDER_FEMALE" => Application.Gender.Female,
_ => Application.Gender.None
};
}
public record IdentificationInformation(string NationalId, string BirthDate, string ShenasnameSeri, string ShenasnameSerial, string ShenasnamehNumber);
public class RegistrationStatus
{
[JsonProperty("deathStatus")]
public string DeathStatus { get; set; }
public DeathStatus DeathStatusEnum => DeathStatus switch
{
"DEATH_STATUS_ALIVE" => UID.DeathStatus.Alive,
"DEATH_STATUS_DEATH" => UID.DeathStatus.Dead,
_ => throw new ArgumentOutOfRangeException()
};
};
public record ResponseContext(UidStatus Status);
public record UidStatus(int Code, string Message);
public enum DeathStatus
{
Alive,
Dead,
}
#endregion
#region PersonalInfoRequestDTO
/// <summary>
/// درخواست اطلاعات شخصی کاربر از سرویس یو آیدی
/// </summary>
public class PersonalInfoRequest
{
[JsonProperty("requestContext")]
public UidRequestContext RequestContext { get; set; }
[JsonProperty("nationalId")]
public string NationalId { get; set; }
[JsonProperty("birthDate")]
public string BirthDate { get; set; }
[JsonProperty("mobileNumber")]
public string MobileNumber { get; set; }
}
public class UidRequestContext
{
[JsonProperty("apiInfo")]
public ApiInfo ApiInfo => new ApiInfo();
};
public record ApiInfo
{
[JsonProperty("businessToken")]
public string BusinessToken => "5e03dd4e-999d-466f-92d8-7c0b1f66a8e9";
[JsonProperty("businessId")]
public string BusinessId => "98ed67ca-d441-4978-a748-e8bebce010eb";
}
#endregion
public interface IUidService
{
Task<PersonalInfoResponse> GetPersonalInfo(string nationalCode , string birthDate);
Task<MatchMobileWithNationalCodeResponse> IsMachPhoneWithNationalCode(string nationalCode , string phoneNumber);
Task<IbanInquiryResponse> IbanInquiry (string iban);
Task<AccountToIbanResponse> AccountToIban(string accountNumber, UidBanks bank);
Task<CardToNumberResponse> CardToIban(string cardNumber);
}
public class CardToNumberResponse:UidBaseResponse
{
public string Iban { get; set; }
public string CardNumber { get; set; }
}
public class AccountToIbanResponse:UidBaseResponse
{
public string Iban { get; set; }
}
public class IbanInquiryResponse:UidBaseResponse
{
public IbanInquiryAccountBasicInformation AccountBasicInformation { get; set; }
[JsonProperty("owners")]
public List<IbanInquiryOwner> Owners { get; set; }
}
public class IbanInquiryAccountBasicInformation
{
public string Iban { get; set; }
public string AccountNumber { get; set; }
public IbanInquiryBankInformation BankInformation { get; set; }
public string AccountStatus { get; set; }
}
public class IbanInquiryBankInformation
{
public string BankName { get; set; }
}
public class IbanInquiryOwner
{
[JsonProperty("firstName")]
public string FirstName { get; set; }
[JsonProperty("lastName")]
public string LastName { get; set; }
[JsonProperty("nationalIdentifier")]
public string NationalIdentifier { get; set; }
[JsonProperty("customerType")]
public string CustomerType { get; set; }
}
public class MatchMobileWithNationalCodeResponse
{
[JsonProperty("isMatched")] public bool IsMatched { get; set; }
public ResponseContext ResponseContext { get; set; }
}
public class UidBaseResponse
{
public ResponseContext ResponseContext { get; set; }
}