merchant onboarding process completed
This commit is contained in:
165
Singer_Hexdive/Services/MerchantService.cs
Normal file
165
Singer_Hexdive/Services/MerchantService.cs
Normal file
@ -0,0 +1,165 @@
|
||||
using System.Text.Json;
|
||||
using Singer_Hexdive.Enums;
|
||||
using Singer_Hexdive.Interfaces.RepositoryInterfaces;
|
||||
using Singer_Hexdive.Interfaces.ServiceInterfaces;
|
||||
using Singer_Hexdive.Models;
|
||||
using Singer_Hexdive.Validations;
|
||||
|
||||
namespace Singer_Hexdive.Services
|
||||
{
|
||||
public class MerchantService : BaseMerchantService
|
||||
{
|
||||
private readonly IMerchantRepository _merchantRepository;
|
||||
|
||||
public MerchantService(IMerchantRepository merchantRepository)
|
||||
{
|
||||
_merchantRepository = merchantRepository;
|
||||
}
|
||||
|
||||
//-------------------------------------------Merchant_Onboarding_Start----------------------------------//
|
||||
public override async Task<object> GetM_PersonalDetails(object payload)
|
||||
{
|
||||
var data = DeserializePayload(payload);
|
||||
int merchantId = FieldValidators.EnsureNotLessZero(data["MerchantId"].GetInt32(), "MerchantId");
|
||||
var result = await _merchantRepository.GetM_PersonalDetailsAsync(merchantId);
|
||||
return result;
|
||||
}
|
||||
public override async Task<object> PostM_PersonalDetails(object payload)
|
||||
{
|
||||
var data = DeserializePayload(payload);
|
||||
int approveStatus = await _merchantRepository.CheckApprovedStatus(data["MechantId"].GetInt32(), "MerchantPersonalDetail");
|
||||
if (approveStatus == 2)
|
||||
{
|
||||
var merchantPersonalDetail = new MerchantPersonalDetail
|
||||
{
|
||||
MerchantName = FieldValidators.EnsureNotNullOrEmpty(data["MerchantName"].GetString(), "MerchantName"),
|
||||
FK_IdType = FieldValidators.EnsureNotLessZero(data["FK_IdType"].GetInt32(), "FK_IdType"),
|
||||
M_IdNumber = FieldValidators.EnsureNotNullOrEmpty(data["M_IdNumber"].GetString(), "M_IdNumber"),
|
||||
M_Email = FieldValidators.EnsureValidEmail(data["M_Email"].GetString(), "M_Email"),
|
||||
M_Mobile_Primary = FieldValidators.IsValidPhoneNumber(data["M_Mobile_Primary"].GetString(), "M_Mobile_Primary"),
|
||||
M_Mobile_Secondary = FieldValidators.IsValidPhoneNumber(data["M_Mobile_Secondary"].GetString(), "M_Mobile_Secondary"),
|
||||
M_Address = FieldValidators.EnsureNotNullOrEmpty(data["M_Address"].GetString(), "M_Address"),
|
||||
M_City = FieldValidators.EnsureNotNullOrEmpty(data["M_City"].GetString(), "M_City"),
|
||||
M_PostalCode = FieldValidators.EnsureNotLessZero(data["M_PostalCode"].GetInt32(), "M_PostalCode"),
|
||||
OnboardDate = data["OnboardDate"].GetDateTime(),
|
||||
};
|
||||
var result = await _merchantRepository.PostM_PersonalDetailsAsync(merchantPersonalDetail);
|
||||
return result;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new InvalidOperationException("Merchant is not approved for onboarding.");
|
||||
}
|
||||
}
|
||||
|
||||
public override async Task<object> GetM_BusinessDetails(object payload)
|
||||
{
|
||||
var data = DeserializePayload(payload);
|
||||
int merchantId = FieldValidators.EnsureNotLessZero(data["MerchantId"].GetInt32(), "MerchantId");
|
||||
var result = await _merchantRepository.GetM_PersonalDetailsAsync(merchantId);
|
||||
return result;
|
||||
}
|
||||
|
||||
public override async Task<object> PostM_BusinessDetails(object payload)
|
||||
{
|
||||
var data = DeserializePayload(payload);
|
||||
int approveStatus = await _merchantRepository.CheckApprovedStatus(data["MechantId"].GetInt32(), "MerchantBusinessDetail");
|
||||
if (approveStatus == 2)
|
||||
{
|
||||
var merchantBusinessDetail = new MerchantBusinessDetail
|
||||
{
|
||||
FK_MechantId = FieldValidators.EnsureNotLessZero(data["MechantId"].GetInt32(), "MechantId"),
|
||||
BusinessName = FieldValidators.EnsureNotNullOrEmpty(data["BusinessName"].GetString(), "BusinessName"),
|
||||
BusinessDoingName = FieldValidators.EnsureNotNullOrEmpty(data["BusinessDoingName"].GetString(), "BusinessDoingName"),
|
||||
BusinessRegNum = FieldValidators.EnsureNotNullOrEmpty(data["BusinessRegNum"].GetString(), "BusinessRegNum"),
|
||||
BusinessIncomeTaxNum = FieldValidators.EnsureNotNullOrEmpty(data["BusinessIncomeTaxNum"].GetString(), "BusinessIncomeTaxNum"),
|
||||
BusinessRegDate = data["BusinessRegDate"].GetDateTime(),
|
||||
BusinessIncomeDate = data["BusinessIncomeDate"].GetDateTime(),
|
||||
BusinessAddress = FieldValidators.EnsureNotNullOrEmpty(data["BusinessAddress"].GetString(), "BusinessAddress"),
|
||||
BusinessCity = FieldValidators.EnsureNotNullOrEmpty(data["BusinessCity"].GetString(), "BusinessCity"),
|
||||
PostalCode = FieldValidators.EnsureNotLessZero(data["PostalCode"].GetInt32(), "PostalCode"),
|
||||
};
|
||||
var result = (MerchantBusinessDetail)await _merchantRepository.PostM_BusinessDetailsAsync(merchantBusinessDetail);
|
||||
|
||||
|
||||
if (data["ShareHolders"].ValueKind == JsonValueKind.Array)
|
||||
{
|
||||
foreach (var shareHolder in data["ShareHolders"].EnumerateArray())
|
||||
{
|
||||
var shareHolderDetail = new MerchantShareHolders
|
||||
{
|
||||
FK_MBusinessId = result.Id,
|
||||
S_FullName = FieldValidators.EnsureNotNullOrEmpty(shareHolder.GetProperty("S_FullName").GetString(), "S_FullName"),
|
||||
S_IdNumber = FieldValidators.EnsureNotNullOrEmpty(shareHolder.GetProperty("S_IdNumber").GetString(), "S_IdNumber"),
|
||||
S_MobileNumber = FieldValidators.IsValidPhoneNumber(shareHolder.GetProperty("S_MobileNumber").GetString(), "S_MobileNumber"),
|
||||
S_Address = FieldValidators.EnsureNotNullOrEmpty(shareHolder.GetProperty("S_Address").GetString(), "S_Address"),
|
||||
S_SharePercentage = shareHolder.GetProperty("S_SharePercentage").GetDecimal(),
|
||||
Bithday = shareHolder.GetProperty("Bithday").GetDateTime(),
|
||||
};
|
||||
await _merchantRepository.PostM_ShareHolderDetailsAsync(shareHolderDetail);
|
||||
}
|
||||
}
|
||||
|
||||
if (data["Directors"].ValueKind == JsonValueKind.Array)
|
||||
{
|
||||
foreach (var directors in data["Directors"].EnumerateArray())
|
||||
{
|
||||
var DirectorsDetail = new MerchantDirectors
|
||||
{
|
||||
FK_MBusinessId = result.Id,
|
||||
D_FullName = FieldValidators.EnsureNotNullOrEmpty(directors.GetProperty("D_FullName").GetString(), "D_FullName"),
|
||||
D_IdNumber = FieldValidators.EnsureNotNullOrEmpty(directors.GetProperty("D_IdNumber").GetString(), "D_IdNumber"),
|
||||
D_MobileNumber = FieldValidators.IsValidPhoneNumber(directors.GetProperty("D_MobileNumber").GetString(), "D_MobileNumber"),
|
||||
D_Address = FieldValidators.EnsureNotNullOrEmpty(directors.GetProperty("D_Address").GetString(), "D_Address"),
|
||||
Birthday = directors.GetProperty("D_Bithday").GetDateTime(),
|
||||
};
|
||||
await _merchantRepository.PostM_DiretorDetailsAsync(DirectorsDetail);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new InvalidOperationException("Merchant is not approved for onboarding.");
|
||||
}
|
||||
}
|
||||
|
||||
public override async Task<object> GetM_BankDetails(object payload)
|
||||
{
|
||||
var data = DeserializePayload(payload);
|
||||
int merchantId = FieldValidators.EnsureNotLessZero(data["MerchantId"].GetInt32(), "MerchantId");
|
||||
var result = await _merchantRepository.GetM_BankDetailsAsync(merchantId);
|
||||
return result;
|
||||
}
|
||||
|
||||
public override async Task<object> PostM_BankDetails(object payload)
|
||||
{
|
||||
var data = DeserializePayload(payload);
|
||||
int approveStatus = await _merchantRepository.CheckApprovedStatus(data["MechantId"].GetInt32(), "MerchantBankDetail");
|
||||
if (approveStatus == 2)
|
||||
{
|
||||
var merchantBankDetails = new MerchantBankDetails
|
||||
{
|
||||
FK_MId = FieldValidators.EnsureNotLessZero(data["MechantId"].GetInt32(), "MechantId"),
|
||||
CurrencyCode = FieldValidators.EnsureNotNullOrEmpty(data["CurrencyCode"].GetString(), "CurrencyCode"),
|
||||
BankAccountTypes = (BankAccountTypes)FieldValidators.EnsureNotLessZero(data["BankAccountTypes"].GetInt32(), "BankAccountTypes"),
|
||||
M_BankName = FieldValidators.EnsureNotNullOrEmpty(data["M_BankName"].GetString(), "M_BankName"),
|
||||
M_BankBranchName = FieldValidators.EnsureNotNullOrEmpty(data["M_BankBranchName"].GetString(), "M_BankBranchName"),
|
||||
M_BankAccNum = FieldValidators.EnsureNotLessZero(data["M_BankAccNum"].GetInt32(), "M_BankAccNum"),
|
||||
M_BankAccHolderName = FieldValidators.EnsureNotNullOrEmpty(data["M_BankAccHolderName"].GetString(), "M_BankAccHolderName"),
|
||||
M_BankHolderIdNum = FieldValidators.EnsureNotNullOrEmpty(data["M_BankHolderIdNum"].GetString(), "M_BankHolderIdNum"),
|
||||
M_PhoneNum = FieldValidators.IsValidPhoneNumber(data["M_PhoneNum"].GetString(), "M_PhoneNum")
|
||||
};
|
||||
var result = await _merchantRepository.PostM_BankDetailsAsync(merchantBankDetails);
|
||||
return result;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new InvalidOperationException("Merchant is not approved for onboarding.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------Merchant_Onboarding_End----------------------------------//
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user